Project files
This commit is contained in:
21
receipeServer/frontend_old/node_modules/ajv-formats/LICENSE
generated
vendored
Normal file
21
receipeServer/frontend_old/node_modules/ajv-formats/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Evgeny Poberezkin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
123
receipeServer/frontend_old/node_modules/ajv-formats/README.md
generated
vendored
Normal file
123
receipeServer/frontend_old/node_modules/ajv-formats/README.md
generated
vendored
Normal file
@@ -0,0 +1,123 @@
|
||||
# ajv-formats
|
||||
|
||||
JSON Schema formats for Ajv
|
||||
|
||||
[](https://travis-ci.org/ajv-validator/ajv-formats)
|
||||
[](https://www.npmjs.com/package/ajv-formats)
|
||||
[](https://gitter.im/ajv-validator/ajv)
|
||||
[](https://github.com/sponsors/epoberezkin)
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
// ESM/TypeScript import
|
||||
import Ajv from "ajv"
|
||||
import addFormats from "ajv-formats"
|
||||
// Node.js require:
|
||||
const Ajv = require("ajv")
|
||||
const addFormats = require("ajv-formats")
|
||||
|
||||
const ajv = new Ajv()
|
||||
addFormats(ajv)
|
||||
```
|
||||
|
||||
## Formats
|
||||
|
||||
The package defines these formats:
|
||||
|
||||
- _date_: full-date according to [RFC3339](http://tools.ietf.org/html/rfc3339#section-5.6).
|
||||
- _time_: time with optional time-zone.
|
||||
- _date-time_: date-time from the same source (time-zone is mandatory).
|
||||
- _duration_: duration from [RFC3339](https://tools.ietf.org/html/rfc3339#appendix-A)
|
||||
- _uri_: full URI.
|
||||
- _uri-reference_: URI reference, including full and relative URIs.
|
||||
- _uri-template_: URI template according to [RFC6570](https://tools.ietf.org/html/rfc6570)
|
||||
- _url_ (deprecated): [URL record](https://url.spec.whatwg.org/#concept-url).
|
||||
- _email_: email address.
|
||||
- _hostname_: host name according to [RFC1034](http://tools.ietf.org/html/rfc1034#section-3.5).
|
||||
- _ipv4_: IP address v4.
|
||||
- _ipv6_: IP address v6.
|
||||
- _regex_: tests whether a string is a valid regular expression by passing it to RegExp constructor.
|
||||
- _uuid_: Universally Unique IDentifier according to [RFC4122](http://tools.ietf.org/html/rfc4122).
|
||||
- _json-pointer_: JSON-pointer according to [RFC6901](https://tools.ietf.org/html/rfc6901).
|
||||
- _relative-json-pointer_: relative JSON-pointer according to [this draft](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00).
|
||||
- _byte_: base64 encoded data according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types)
|
||||
- _int32_: signed 32 bits integer according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types)
|
||||
- _int64_: signed 64 bits according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types)
|
||||
- _float_: float according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types)
|
||||
- _double_: double according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types)
|
||||
- _password_: password string according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types)
|
||||
- _binary_: binary string according to the [openApi 3.0.0 specification](https://spec.openapis.org/oas/v3.0.0#data-types)
|
||||
|
||||
See regular expressions used for format validation and the sources that were used in [formats.ts](https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts).
|
||||
|
||||
**Please note**: JSON Schema draft-07 also defines formats `iri`, `iri-reference`, `idn-hostname` and `idn-email` for URLs, hostnames and emails with international characters. These formats are available in [ajv-formats-draft2019](https://github.com/luzlab/ajv-formats-draft2019) plugin.
|
||||
|
||||
## Keywords to compare values: `formatMaximum` / `formatMinimum` and `formatExclusiveMaximum` / `formatExclusiveMinimum`
|
||||
|
||||
These keywords allow to define minimum/maximum constraints when the format keyword defines ordering (`compare` function in format definition).
|
||||
|
||||
These keywords are added to ajv instance when ajv-formats is used without options or with option `keywords: true`.
|
||||
|
||||
These keywords apply only to strings. If the data is not a string, the validation succeeds.
|
||||
|
||||
The value of keywords `formatMaximum`/`formatMinimum` and `formatExclusiveMaximum`/`formatExclusiveMinimum` should be a string or [\$data reference](https://github.com/ajv-validator/ajv/blob/master/docs/validation.md#data-reference). This value is the maximum (minimum) allowed value for the data to be valid as determined by `format` keyword. If `format` keyword is not present schema compilation will throw exception.
|
||||
|
||||
When these keyword are added, they also add comparison functions to formats `"date"`, `"time"` and `"date-time"`. User-defined formats also can have comparison functions. See [addFormat](https://github.com/ajv-validator/ajv/blob/master/docs/api.md#api-addformat) method.
|
||||
|
||||
```javascript
|
||||
require("ajv-formats")(ajv)
|
||||
|
||||
const schema = {
|
||||
type: "string",
|
||||
format: "date",
|
||||
formatMinimum: "2016-02-06",
|
||||
formatExclusiveMaximum: "2016-12-27",
|
||||
}
|
||||
|
||||
const validDataList = ["2016-02-06", "2016-12-26"]
|
||||
|
||||
const invalidDataList = ["2016-02-05", "2016-12-27", "abc"]
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
Options can be passed via the second parameter. Options value can be
|
||||
|
||||
1. The list of format names that will be added to ajv instance:
|
||||
|
||||
```javascript
|
||||
addFormats(ajv, ["date", "time"])
|
||||
```
|
||||
|
||||
**Please note**: when ajv encounters an undefined format it throws exception (unless ajv instance was configured with `strict: false` option). To allow specific undefined formats they have to be passed to ajv instance via `formats` option with `true` value:
|
||||
|
||||
```javascript
|
||||
const ajv = new Ajv((formats: {date: true, time: true})) // to ignore "date" and "time" formats in schemas.
|
||||
```
|
||||
|
||||
2. Format validation mode (default is `"full"`) with optional list of format names and `keywords` option to add additional format comparison keywords:
|
||||
|
||||
```javascript
|
||||
addFormats(ajv, {mode: "fast"})
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```javascript
|
||||
addFormats(ajv, {mode: "fast", formats: ["date", "time"], keywords: true})
|
||||
```
|
||||
|
||||
In `"fast"` mode the following formats are simplified: `"date"`, `"time"`, `"date-time"`, `"uri"`, `"uri-reference"`, `"email"`. For example `"date"`, `"time"` and `"date-time"` do not validate ranges in `"fast"` mode, only string structure, and other formats have simplified regular expressions.
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
npm install
|
||||
git submodule update --init
|
||||
npm test
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/ajv-validator/ajv-formats/blob/master/LICENSE)
|
||||
23
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/.runkit_example.js
generated
vendored
Normal file
23
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/.runkit_example.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
const Ajv = require("ajv")
|
||||
const ajv = new Ajv({allErrors: true})
|
||||
|
||||
const schema = {
|
||||
type: "object",
|
||||
properties: {
|
||||
foo: {type: "string"},
|
||||
bar: {type: "number", maximum: 3},
|
||||
},
|
||||
required: ["foo", "bar"],
|
||||
additionalProperties: false,
|
||||
}
|
||||
|
||||
const validate = ajv.compile(schema)
|
||||
|
||||
test({foo: "abc", bar: 2})
|
||||
test({foo: 2, bar: 4})
|
||||
|
||||
function test(data) {
|
||||
const valid = validate(data)
|
||||
if (valid) console.log("Valid!")
|
||||
else console.log("Invalid: " + ajv.errorsText(validate.errors))
|
||||
}
|
||||
22
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/LICENSE
generated
vendored
Normal file
22
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015-2021 Evgeny Poberezkin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
193
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/README.md
generated
vendored
Normal file
193
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/README.md
generated
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
<img align="right" alt="Ajv logo" width="160" src="https://ajv.js.org/img/ajv.svg">
|
||||
|
||||
|
||||
|
||||
# Ajv JSON schema validator
|
||||
|
||||
The fastest JSON validator for Node.js and browser.
|
||||
|
||||
Supports JSON Schema draft-04/06/07/2019-09/2020-12 ([draft-04 support](https://ajv.js.org/json-schema.html#draft-04) requires ajv-draft-04 package) and JSON Type Definition [RFC8927](https://datatracker.ietf.org/doc/rfc8927/).
|
||||
|
||||
[](https://github.com/ajv-validator/ajv/actions?query=workflow%3Abuild)
|
||||
[](https://www.npmjs.com/package/ajv)
|
||||
[](https://www.npmjs.com/package/ajv)
|
||||
[](https://coveralls.io/github/ajv-validator/ajv?branch=master)
|
||||
[](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2Fap4lMFzfXF8Hzmh-Vz0WNxp_1jKiOa-h%23MCowBQYDK2VuAyEAcdefddRvDfI8iAuBpztm_J3qFucj8MDZoVs_2EcMTzU%3D)
|
||||
[](https://gitter.im/ajv-validator/ajv)
|
||||
[](https://github.com/sponsors/epoberezkin)
|
||||
|
||||
## Ajv sponsors
|
||||
|
||||
[<img src="https://ajv.js.org/img/mozilla.svg" width="45%" alt="Mozilla">](https://www.mozilla.org)<img src="https://ajv.js.org/img/gap.svg" width="9%">[<img src="https://ajv.js.org/img/reserved.svg" width="45%">](https://opencollective.com/ajv)
|
||||
|
||||
[<img src="https://ajv.js.org/img/microsoft.png" width="31%" alt="Microsoft">](https://opensource.microsoft.com)<img src="https://ajv.js.org/img/gap.svg" width="3%">[<img src="https://ajv.js.org/img/reserved.svg" width="31%">](https://opencollective.com/ajv)<img src="https://ajv.js.org/img/gap.svg" width="3%">[<img src="https://ajv.js.org/img/reserved.svg" width="31%">](https://opencollective.com/ajv)
|
||||
|
||||
[<img src="https://ajv.js.org/img/retool.svg" width="22.5%" alt="Retool">](https://retool.com/?utm_source=sponsor&utm_campaign=ajv)<img src="https://ajv.js.org/img/gap.svg" width="3%">[<img src="https://ajv.js.org/img/tidelift.svg" width="22.5%" alt="Tidelift">](https://tidelift.com/subscription/pkg/npm-ajv?utm_source=npm-ajv&utm_medium=referral&utm_campaign=enterprise)<img src="https://ajv.js.org/img/gap.svg" width="3%">[<img src="https://ajv.js.org/img/simplex.svg" width="22.5%" alt="SimpleX">](https://github.com/simplex-chat/simplex-chat)<img src="https://ajv.js.org/img/gap.svg" width="3%">[<img src="https://ajv.js.org/img/reserved.svg" width="22.5%">](https://opencollective.com/ajv)
|
||||
|
||||
## Contributing
|
||||
|
||||
More than 100 people contributed to Ajv, and we would love to have you join the development. We welcome implementing new features that will benefit many users and ideas to improve our documentation.
|
||||
|
||||
Please review [Contributing guidelines](./CONTRIBUTING.md) and [Code components](https://ajv.js.org/components.html).
|
||||
|
||||
## Documentation
|
||||
|
||||
All documentation is available on the [Ajv website](https://ajv.js.org).
|
||||
|
||||
Some useful site links:
|
||||
- [Getting started](https://ajv.js.org/guide/getting-started.html)
|
||||
- [JSON Schema vs JSON Type Definition](https://ajv.js.org/guide/schema-language.html)
|
||||
- [API reference](https://ajv.js.org/api.html)
|
||||
- [Strict mode](https://ajv.js.org/strict-mode.html)
|
||||
- [Standalone validation code](https://ajv.js.org/standalone.html)
|
||||
- [Security considerations](https://ajv.js.org/security.html)
|
||||
- [Command line interface](https://ajv.js.org/packages/ajv-cli.html)
|
||||
- [Frequently Asked Questions](https://ajv.js.org/faq.html)
|
||||
|
||||
## <a name="sponsors"></a>Please [sponsor Ajv development](https://github.com/sponsors/epoberezkin)
|
||||
|
||||
Since I asked to support Ajv development 40 people and 6 organizations contributed via GitHub and OpenCollective - this support helped receiving the MOSS grant!
|
||||
|
||||
Your continuing support is very important - the funds will be used to develop and maintain Ajv once the next major version is released.
|
||||
|
||||
Please sponsor Ajv via:
|
||||
|
||||
- [GitHub sponsors page](https://github.com/sponsors/epoberezkin) (GitHub will match it)
|
||||
- [Ajv Open Collective️](https://opencollective.com/ajv)
|
||||
|
||||
Thank you.
|
||||
|
||||
#### Open Collective sponsors
|
||||
|
||||
<a href="https://opencollective.com/ajv"><img src="https://opencollective.com/ajv/individuals.svg?width=890"></a>
|
||||
|
||||
<a href="https://opencollective.com/ajv/organization/0/website"><img src="https://opencollective.com/ajv/organization/0/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/1/website"><img src="https://opencollective.com/ajv/organization/1/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/2/website"><img src="https://opencollective.com/ajv/organization/2/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/3/website"><img src="https://opencollective.com/ajv/organization/3/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/4/website"><img src="https://opencollective.com/ajv/organization/4/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/5/website"><img src="https://opencollective.com/ajv/organization/5/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/6/website"><img src="https://opencollective.com/ajv/organization/6/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/7/website"><img src="https://opencollective.com/ajv/organization/7/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/8/website"><img src="https://opencollective.com/ajv/organization/8/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/9/website"><img src="https://opencollective.com/ajv/organization/9/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/10/website"><img src="https://opencollective.com/ajv/organization/10/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ajv/organization/11/website"><img src="https://opencollective.com/ajv/organization/11/avatar.svg"></a>
|
||||
|
||||
## Performance
|
||||
|
||||
Ajv generates code to turn JSON Schemas into super-fast validation functions that are efficient for v8 optimization.
|
||||
|
||||
Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks:
|
||||
|
||||
- [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark) - 50% faster than the second place
|
||||
- [jsck benchmark](https://github.com/pandastrike/jsck#benchmarks) - 20-190% faster
|
||||
- [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html)
|
||||
- [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html)
|
||||
|
||||
Performance of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark):
|
||||
|
||||
[](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance)
|
||||
|
||||
## Features
|
||||
|
||||
- Ajv implements JSON Schema [draft-06/07/2019-09/2020-12](http://json-schema.org/) standards (draft-04 is supported in v6):
|
||||
- all validation keywords (see [JSON Schema validation keywords](https://ajv.js.org/json-schema.html))
|
||||
- [OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md) extensions:
|
||||
- NEW: keyword [discriminator](https://ajv.js.org/json-schema.html#discriminator).
|
||||
- keyword [nullable](https://ajv.js.org/json-schema.html#nullable).
|
||||
- full support of remote references (remote schemas have to be added with `addSchema` or compiled to be available)
|
||||
- support of recursive references between schemas
|
||||
- correct string lengths for strings with unicode pairs
|
||||
- JSON Schema [formats](https://ajv.js.org/guide/formats.html) (with [ajv-formats](https://github.com/ajv-validator/ajv-formats) plugin).
|
||||
- [validates schemas against meta-schema](https://ajv.js.org/api.html#api-validateschema)
|
||||
- NEW: supports [JSON Type Definition](https://datatracker.ietf.org/doc/rfc8927/):
|
||||
- all keywords (see [JSON Type Definition schema forms](https://ajv.js.org/json-type-definition.html))
|
||||
- meta-schema for JTD schemas
|
||||
- "union" keyword and user-defined keywords (can be used inside "metadata" member of the schema)
|
||||
- supports [browsers](https://ajv.js.org/guide/environments.html#browsers) and Node.js 10.x - current
|
||||
- [asynchronous loading](https://ajv.js.org/guide/managing-schemas.html#asynchronous-schema-loading) of referenced schemas during compilation
|
||||
- "All errors" validation mode with [option allErrors](https://ajv.js.org/options.html#allerrors)
|
||||
- [error messages with parameters](https://ajv.js.org/api.html#validation-errors) describing error reasons to allow error message generation
|
||||
- i18n error messages support with [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) package
|
||||
- [removing-additional-properties](https://ajv.js.org/guide/modifying-data.html#removing-additional-properties)
|
||||
- [assigning defaults](https://ajv.js.org/guide/modifying-data.html#assigning-defaults) to missing properties and items
|
||||
- [coercing data](https://ajv.js.org/guide/modifying-data.html#coercing-data-types) to the types specified in `type` keywords
|
||||
- [user-defined keywords](https://ajv.js.org/guide/user-keywords.html)
|
||||
- additional extension keywords with [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package
|
||||
- [\$data reference](https://ajv.js.org/guide/combining-schemas.html#data-reference) to use values from the validated data as values for the schema keywords
|
||||
- [asynchronous validation](https://ajv.js.org/guide/async-validation.html) of user-defined formats and keywords
|
||||
|
||||
## Install
|
||||
|
||||
To install version 8:
|
||||
|
||||
```
|
||||
npm install ajv
|
||||
```
|
||||
|
||||
## <a name="usage"></a>Getting started
|
||||
|
||||
Try it in the Node.js REPL: https://runkit.com/npm/ajv
|
||||
|
||||
In JavaScript:
|
||||
|
||||
```javascript
|
||||
// or ESM/TypeScript import
|
||||
import Ajv from "ajv"
|
||||
// Node.js require:
|
||||
const Ajv = require("ajv")
|
||||
|
||||
const ajv = new Ajv() // options can be passed, e.g. {allErrors: true}
|
||||
|
||||
const schema = {
|
||||
type: "object",
|
||||
properties: {
|
||||
foo: {type: "integer"},
|
||||
bar: {type: "string"}
|
||||
},
|
||||
required: ["foo"],
|
||||
additionalProperties: false,
|
||||
}
|
||||
|
||||
const data = {
|
||||
foo: 1,
|
||||
bar: "abc"
|
||||
}
|
||||
|
||||
const validate = ajv.compile(schema)
|
||||
const valid = validate(data)
|
||||
if (!valid) console.log(validate.errors)
|
||||
```
|
||||
|
||||
Learn how to use Ajv and see more examples in the [Guide: getting started](https://ajv.js.org/guide/getting-started.html)
|
||||
|
||||
## Changes history
|
||||
|
||||
See [https://github.com/ajv-validator/ajv/releases](https://github.com/ajv-validator/ajv/releases)
|
||||
|
||||
**Please note**: [Changes in version 8.0.0](https://github.com/ajv-validator/ajv/releases/tag/v8.0.0)
|
||||
|
||||
[Version 7.0.0](https://github.com/ajv-validator/ajv/releases/tag/v7.0.0)
|
||||
|
||||
[Version 6.0.0](https://github.com/ajv-validator/ajv/releases/tag/v6.0.0).
|
||||
|
||||
## Code of conduct
|
||||
|
||||
Please review and follow the [Code of conduct](./CODE_OF_CONDUCT.md).
|
||||
|
||||
Please report any unacceptable behaviour to ajv.validator@gmail.com - it will be reviewed by the project team.
|
||||
|
||||
## Security contact
|
||||
|
||||
To report a security vulnerability, please use the
|
||||
[Tidelift security contact](https://tidelift.com/security).
|
||||
Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.
|
||||
|
||||
## Open-source software support
|
||||
|
||||
Ajv is a part of [Tidelift subscription](https://tidelift.com/subscription/pkg/npm-ajv?utm_source=npm-ajv&utm_medium=referral&utm_campaign=readme) - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers.
|
||||
|
||||
## License
|
||||
|
||||
[MIT](./LICENSE)
|
||||
126
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/package.json
generated
vendored
Normal file
126
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/ajv/package.json
generated
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"name": "ajv",
|
||||
"version": "8.11.0",
|
||||
"description": "Another JSON Schema Validator",
|
||||
"main": "dist/ajv.js",
|
||||
"types": "dist/ajv.d.ts",
|
||||
"files": [
|
||||
"lib/",
|
||||
"dist/",
|
||||
".runkit_example.js"
|
||||
],
|
||||
"scripts": {
|
||||
"eslint": "eslint \"lib/**/*.ts\" \"spec/**/*.*s\" --ignore-pattern spec/JSON-Schema-Test-Suite",
|
||||
"prettier:write": "prettier --write \"./**/*.{json,yaml,js,ts}\"",
|
||||
"prettier:check": "prettier --list-different \"./**/*.{json,yaml,js,ts}\"",
|
||||
"test-spec": "cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register \"spec/**/*.spec.{ts,js}\" -R dot",
|
||||
"test-codegen": "nyc cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register 'spec/codegen.spec.ts' -R spec",
|
||||
"test-debug": "npm run test-spec -- --inspect-brk",
|
||||
"test-cov": "nyc npm run test-spec",
|
||||
"rollup": "rm -rf bundle && rollup -c",
|
||||
"bundle": "rm -rf bundle && node ./scripts/bundle.js ajv ajv7 ajv7 && node ./scripts/bundle.js 2019 ajv2019 ajv2019 && node ./scripts/bundle.js 2020 ajv2020 ajv2020 && node ./scripts/bundle.js jtd ajvJTD ajvJTD",
|
||||
"build": "rm -rf dist && tsc && cp -r lib/refs dist && rm dist/refs/json-schema-2019-09/index.ts && rm dist/refs/json-schema-2020-12/index.ts && rm dist/refs/jtd-schema.ts",
|
||||
"json-tests": "rm -rf spec/_json/*.js && node scripts/jsontests",
|
||||
"test-karma": "karma start",
|
||||
"test-browser": "rm -rf .browser && npm run bundle && scripts/prepare-tests && karma start",
|
||||
"test-all": "npm run test-cov && if-node-version 12 npm run test-browser",
|
||||
"test": "npm run json-tests && npm run prettier:check && npm run eslint && npm link && npm link --legacy-peer-deps ajv && npm run test-cov",
|
||||
"test-ci": "AJV_FULL_TEST=true npm test",
|
||||
"prepublish": "npm run build",
|
||||
"benchmark": "npm i && npm run build && npm link && cd ./benchmark && npm link --legacy-peer-deps ajv && npm i && node ./jtd",
|
||||
"docs:dev": "./scripts/prepare-site && vuepress dev docs",
|
||||
"docs:build": "./scripts/prepare-site && vuepress build docs"
|
||||
},
|
||||
"nyc": {
|
||||
"exclude": [
|
||||
"**/spec/**",
|
||||
"node_modules"
|
||||
],
|
||||
"reporter": [
|
||||
"lcov",
|
||||
"text-summary"
|
||||
]
|
||||
},
|
||||
"repository": "ajv-validator/ajv",
|
||||
"keywords": [
|
||||
"JSON",
|
||||
"schema",
|
||||
"validator",
|
||||
"validation",
|
||||
"jsonschema",
|
||||
"json-schema",
|
||||
"json-schema-validator",
|
||||
"json-schema-validation"
|
||||
],
|
||||
"author": "Evgeny Poberezkin",
|
||||
"license": "MIT",
|
||||
"bugs": "https://github.com/ajv-validator/ajv/issues",
|
||||
"homepage": "https://ajv.js.org",
|
||||
"runkitExampleFilename": ".runkit_example.js",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"uri-js": "^4.2.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ajv-validator/config": "^0.3.0",
|
||||
"@rollup/plugin-commonjs": "^21.0.0",
|
||||
"@rollup/plugin-json": "^4.1.0",
|
||||
"@rollup/plugin-node-resolve": "^13.0.0",
|
||||
"@rollup/plugin-typescript": "^8.2.1",
|
||||
"@types/chai": "^4.2.12",
|
||||
"@types/mocha": "^9.0.0",
|
||||
"@types/node": "^17.0.0",
|
||||
"@types/require-from-string": "^1.2.0",
|
||||
"@typescript-eslint/eslint-plugin": "^3.8.0",
|
||||
"@typescript-eslint/parser": "^3.8.0",
|
||||
"ajv-formats": "^3.0.0-rc.0",
|
||||
"browserify": "^17.0.0",
|
||||
"chai": "^4.0.1",
|
||||
"cross-env": "^7.0.2",
|
||||
"dayjs": "^1.10.4",
|
||||
"dayjs-plugin-utc": "^0.1.2",
|
||||
"eslint": "^7.8.1",
|
||||
"eslint-config-prettier": "^7.0.0",
|
||||
"fast-uri": "^1.0.0",
|
||||
"glob": "^7.0.0",
|
||||
"husky": "^7.0.1",
|
||||
"if-node-version": "^1.0.0",
|
||||
"jimp": "^0.16.1",
|
||||
"js-beautify": "^1.7.3",
|
||||
"json-schema-test": "^2.0.0",
|
||||
"karma": "^6.0.0",
|
||||
"karma-chrome-launcher": "^3.0.0",
|
||||
"karma-mocha": "^2.0.0",
|
||||
"lint-staged": "^12.1.1",
|
||||
"mocha": "^9.0.2",
|
||||
"module-from-string": "^3.1.3",
|
||||
"node-fetch": "^3.0.0",
|
||||
"nyc": "^15.0.0",
|
||||
"prettier": "^2.3.1",
|
||||
"re2": "^1.16.0",
|
||||
"rollup": "^2.44.0",
|
||||
"rollup-plugin-terser": "^7.0.2",
|
||||
"ts-node": "^10.0.0",
|
||||
"tsify": "^5.0.2",
|
||||
"typescript": "^4.2.0"
|
||||
},
|
||||
"collective": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/ajv"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
},
|
||||
"prettier": "@ajv-validator/config/prettierrc.json",
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged && npm test"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{json,yaml,js,ts}": "prettier --write"
|
||||
}
|
||||
}
|
||||
27
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.eslintrc.yml
generated
vendored
Normal file
27
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.eslintrc.yml
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
extends: eslint:recommended
|
||||
env:
|
||||
node: true
|
||||
browser: true
|
||||
rules:
|
||||
block-scoped-var: 2
|
||||
complexity: [2, 15]
|
||||
curly: [2, multi-or-nest, consistent]
|
||||
dot-location: [2, property]
|
||||
dot-notation: 2
|
||||
indent: [2, 2, SwitchCase: 1]
|
||||
linebreak-style: [2, unix]
|
||||
new-cap: 2
|
||||
no-console: [2, allow: [warn, error]]
|
||||
no-else-return: 2
|
||||
no-eq-null: 2
|
||||
no-fallthrough: 2
|
||||
no-invalid-this: 2
|
||||
no-return-assign: 2
|
||||
no-shadow: 1
|
||||
no-trailing-spaces: 2
|
||||
no-use-before-define: [2, nofunc]
|
||||
quotes: [2, single, avoid-escape]
|
||||
semi: [2, always]
|
||||
strict: [2, global]
|
||||
valid-jsdoc: [2, requireReturn: false]
|
||||
no-control-regex: 0
|
||||
2
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.github/FUNDING.yml
generated
vendored
Normal file
2
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.github/FUNDING.yml
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
github: epoberezkin
|
||||
tidelift: "npm/json-schema-traverse"
|
||||
28
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.github/workflows/build.yml
generated
vendored
Normal file
28
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.github/workflows/build.yml
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
name: build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: ["*"]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [10.x, 12.x, 14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- run: npm install
|
||||
- run: npm test
|
||||
- name: Coveralls
|
||||
uses: coverallsapp/github-action@master
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
27
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.github/workflows/publish.yml
generated
vendored
Normal file
27
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/.github/workflows/publish.yml
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
name: publish
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
publish-npm:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 14
|
||||
registry-url: https://registry.npmjs.org/
|
||||
- run: npm install
|
||||
- run: npm test
|
||||
- name: Publish beta version to npm
|
||||
if: "github.event.release.prerelease"
|
||||
run: npm publish --tag beta
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
- name: Publish to npm
|
||||
if: "!github.event.release.prerelease"
|
||||
run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
21
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/LICENSE
generated
vendored
Normal file
21
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Evgeny Poberezkin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
95
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/README.md
generated
vendored
Normal file
95
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/README.md
generated
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
# json-schema-traverse
|
||||
Traverse JSON Schema passing each schema object to callback
|
||||
|
||||
[](https://github.com/epoberezkin/json-schema-traverse/actions?query=workflow%3Abuild)
|
||||
[](https://www.npmjs.com/package/json-schema-traverse)
|
||||
[](https://coveralls.io/github/epoberezkin/json-schema-traverse?branch=master)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
npm install json-schema-traverse
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
const traverse = require('json-schema-traverse');
|
||||
const schema = {
|
||||
properties: {
|
||||
foo: {type: 'string'},
|
||||
bar: {type: 'integer'}
|
||||
}
|
||||
};
|
||||
|
||||
traverse(schema, {cb});
|
||||
// cb is called 3 times with:
|
||||
// 1. root schema
|
||||
// 2. {type: 'string'}
|
||||
// 3. {type: 'integer'}
|
||||
|
||||
// Or:
|
||||
|
||||
traverse(schema, {cb: {pre, post}});
|
||||
// pre is called 3 times with:
|
||||
// 1. root schema
|
||||
// 2. {type: 'string'}
|
||||
// 3. {type: 'integer'}
|
||||
//
|
||||
// post is called 3 times with:
|
||||
// 1. {type: 'string'}
|
||||
// 2. {type: 'integer'}
|
||||
// 3. root schema
|
||||
|
||||
```
|
||||
|
||||
Callback function `cb` is called for each schema object (not including draft-06 boolean schemas), including the root schema, in pre-order traversal. Schema references ($ref) are not resolved, they are passed as is. Alternatively, you can pass a `{pre, post}` object as `cb`, and then `pre` will be called before traversing child elements, and `post` will be called after all child elements have been traversed.
|
||||
|
||||
Callback is passed these parameters:
|
||||
|
||||
- _schema_: the current schema object
|
||||
- _JSON pointer_: from the root schema to the current schema object
|
||||
- _root schema_: the schema passed to `traverse` object
|
||||
- _parent JSON pointer_: from the root schema to the parent schema object (see below)
|
||||
- _parent keyword_: the keyword inside which this schema appears (e.g. `properties`, `anyOf`, etc.)
|
||||
- _parent schema_: not necessarily parent object/array; in the example above the parent schema for `{type: 'string'}` is the root schema
|
||||
- _index/property_: index or property name in the array/object containing multiple schemas; in the example above for `{type: 'string'}` the property name is `'foo'`
|
||||
|
||||
|
||||
## Traverse objects in all unknown keywords
|
||||
|
||||
```javascript
|
||||
const traverse = require('json-schema-traverse');
|
||||
const schema = {
|
||||
mySchema: {
|
||||
minimum: 1,
|
||||
maximum: 2
|
||||
}
|
||||
};
|
||||
|
||||
traverse(schema, {allKeys: true, cb});
|
||||
// cb is called 2 times with:
|
||||
// 1. root schema
|
||||
// 2. mySchema
|
||||
```
|
||||
|
||||
Without option `allKeys: true` callback will be called only with root schema.
|
||||
|
||||
|
||||
## Enterprise support
|
||||
|
||||
json-schema-traverse package is a part of [Tidelift enterprise subscription](https://tidelift.com/subscription/pkg/npm-json-schema-traverse?utm_source=npm-json-schema-traverse&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.
|
||||
|
||||
|
||||
## Security contact
|
||||
|
||||
To report a security vulnerability, please use the
|
||||
[Tidelift security contact](https://tidelift.com/security).
|
||||
Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/epoberezkin/json-schema-traverse/blob/master/LICENSE)
|
||||
40
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/index.d.ts
generated
vendored
Normal file
40
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
declare function traverse(
|
||||
schema: traverse.SchemaObject,
|
||||
opts: traverse.Options,
|
||||
cb?: traverse.Callback
|
||||
): void;
|
||||
|
||||
declare function traverse(
|
||||
schema: traverse.SchemaObject,
|
||||
cb: traverse.Callback
|
||||
): void;
|
||||
|
||||
declare namespace traverse {
|
||||
interface SchemaObject {
|
||||
$id?: string;
|
||||
$schema?: string;
|
||||
[x: string]: any;
|
||||
}
|
||||
|
||||
type Callback = (
|
||||
schema: SchemaObject,
|
||||
jsonPtr: string,
|
||||
rootSchema: SchemaObject,
|
||||
parentJsonPtr?: string,
|
||||
parentKeyword?: string,
|
||||
parentSchema?: SchemaObject,
|
||||
keyIndex?: string | number
|
||||
) => void;
|
||||
|
||||
interface Options {
|
||||
allKeys?: boolean;
|
||||
cb?:
|
||||
| Callback
|
||||
| {
|
||||
pre?: Callback;
|
||||
post?: Callback;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export = traverse;
|
||||
93
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/index.js
generated
vendored
Normal file
93
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/index.js
generated
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
'use strict';
|
||||
|
||||
var traverse = module.exports = function (schema, opts, cb) {
|
||||
// Legacy support for v0.3.1 and earlier.
|
||||
if (typeof opts == 'function') {
|
||||
cb = opts;
|
||||
opts = {};
|
||||
}
|
||||
|
||||
cb = opts.cb || cb;
|
||||
var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};
|
||||
var post = cb.post || function() {};
|
||||
|
||||
_traverse(opts, pre, post, schema, '', schema);
|
||||
};
|
||||
|
||||
|
||||
traverse.keywords = {
|
||||
additionalItems: true,
|
||||
items: true,
|
||||
contains: true,
|
||||
additionalProperties: true,
|
||||
propertyNames: true,
|
||||
not: true,
|
||||
if: true,
|
||||
then: true,
|
||||
else: true
|
||||
};
|
||||
|
||||
traverse.arrayKeywords = {
|
||||
items: true,
|
||||
allOf: true,
|
||||
anyOf: true,
|
||||
oneOf: true
|
||||
};
|
||||
|
||||
traverse.propsKeywords = {
|
||||
$defs: true,
|
||||
definitions: true,
|
||||
properties: true,
|
||||
patternProperties: true,
|
||||
dependencies: true
|
||||
};
|
||||
|
||||
traverse.skipKeywords = {
|
||||
default: true,
|
||||
enum: true,
|
||||
const: true,
|
||||
required: true,
|
||||
maximum: true,
|
||||
minimum: true,
|
||||
exclusiveMaximum: true,
|
||||
exclusiveMinimum: true,
|
||||
multipleOf: true,
|
||||
maxLength: true,
|
||||
minLength: true,
|
||||
pattern: true,
|
||||
format: true,
|
||||
maxItems: true,
|
||||
minItems: true,
|
||||
uniqueItems: true,
|
||||
maxProperties: true,
|
||||
minProperties: true
|
||||
};
|
||||
|
||||
|
||||
function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
|
||||
if (schema && typeof schema == 'object' && !Array.isArray(schema)) {
|
||||
pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
|
||||
for (var key in schema) {
|
||||
var sch = schema[key];
|
||||
if (Array.isArray(sch)) {
|
||||
if (key in traverse.arrayKeywords) {
|
||||
for (var i=0; i<sch.length; i++)
|
||||
_traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);
|
||||
}
|
||||
} else if (key in traverse.propsKeywords) {
|
||||
if (sch && typeof sch == 'object') {
|
||||
for (var prop in sch)
|
||||
_traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
|
||||
}
|
||||
} else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {
|
||||
_traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);
|
||||
}
|
||||
}
|
||||
post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function escapeJsonPtr(str) {
|
||||
return str.replace(/~/g, '~0').replace(/\//g, '~1');
|
||||
}
|
||||
43
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/package.json
generated
vendored
Normal file
43
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/package.json
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "json-schema-traverse",
|
||||
"version": "1.0.0",
|
||||
"description": "Traverse JSON Schema passing each schema object to callback",
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"scripts": {
|
||||
"eslint": "eslint index.js spec",
|
||||
"test-spec": "mocha spec -R spec",
|
||||
"test": "npm run eslint && nyc npm run test-spec"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
|
||||
},
|
||||
"keywords": [
|
||||
"JSON-Schema",
|
||||
"traverse",
|
||||
"iterate"
|
||||
],
|
||||
"author": "Evgeny Poberezkin",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/epoberezkin/json-schema-traverse/issues"
|
||||
},
|
||||
"homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
|
||||
"devDependencies": {
|
||||
"eslint": "^7.3.1",
|
||||
"mocha": "^8.0.1",
|
||||
"nyc": "^15.0.0",
|
||||
"pre-commit": "^1.2.2"
|
||||
},
|
||||
"nyc": {
|
||||
"exclude": [
|
||||
"**/spec/**",
|
||||
"node_modules"
|
||||
],
|
||||
"reporter": [
|
||||
"lcov",
|
||||
"text-summary"
|
||||
]
|
||||
}
|
||||
}
|
||||
6
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/spec/.eslintrc.yml
generated
vendored
Normal file
6
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/spec/.eslintrc.yml
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
parserOptions:
|
||||
ecmaVersion: 6
|
||||
globals:
|
||||
beforeEach: false
|
||||
describe: false
|
||||
it: false
|
||||
125
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/spec/fixtures/schema.js
generated
vendored
Normal file
125
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/spec/fixtures/schema.js
generated
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
'use strict';
|
||||
|
||||
var schema = {
|
||||
additionalItems: subschema('additionalItems'),
|
||||
items: subschema('items'),
|
||||
contains: subschema('contains'),
|
||||
additionalProperties: subschema('additionalProperties'),
|
||||
propertyNames: subschema('propertyNames'),
|
||||
not: subschema('not'),
|
||||
allOf: [
|
||||
subschema('allOf_0'),
|
||||
subschema('allOf_1'),
|
||||
{
|
||||
items: [
|
||||
subschema('items_0'),
|
||||
subschema('items_1'),
|
||||
]
|
||||
}
|
||||
],
|
||||
anyOf: [
|
||||
subschema('anyOf_0'),
|
||||
subschema('anyOf_1'),
|
||||
],
|
||||
oneOf: [
|
||||
subschema('oneOf_0'),
|
||||
subschema('oneOf_1'),
|
||||
],
|
||||
definitions: {
|
||||
foo: subschema('definitions_foo'),
|
||||
bar: subschema('definitions_bar'),
|
||||
},
|
||||
properties: {
|
||||
foo: subschema('properties_foo'),
|
||||
bar: subschema('properties_bar'),
|
||||
},
|
||||
patternProperties: {
|
||||
foo: subschema('patternProperties_foo'),
|
||||
bar: subschema('patternProperties_bar'),
|
||||
},
|
||||
dependencies: {
|
||||
foo: subschema('dependencies_foo'),
|
||||
bar: subschema('dependencies_bar'),
|
||||
},
|
||||
required: ['foo', 'bar']
|
||||
};
|
||||
|
||||
|
||||
function subschema(keyword) {
|
||||
var sch = {
|
||||
properties: {},
|
||||
additionalProperties: false,
|
||||
additionalItems: false,
|
||||
anyOf: [
|
||||
{format: 'email'},
|
||||
{format: 'hostname'}
|
||||
]
|
||||
};
|
||||
sch.properties['foo_' + keyword] = {title: 'foo'};
|
||||
sch.properties['bar_' + keyword] = {title: 'bar'};
|
||||
return sch;
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
schema: schema,
|
||||
|
||||
// schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
|
||||
expectedCalls: [[schema, '', schema, undefined, undefined, undefined, undefined]]
|
||||
.concat(expectedCalls('additionalItems'))
|
||||
.concat(expectedCalls('items'))
|
||||
.concat(expectedCalls('contains'))
|
||||
.concat(expectedCalls('additionalProperties'))
|
||||
.concat(expectedCalls('propertyNames'))
|
||||
.concat(expectedCalls('not'))
|
||||
.concat(expectedCallsChild('allOf', 0))
|
||||
.concat(expectedCallsChild('allOf', 1))
|
||||
.concat([
|
||||
[schema.allOf[2], '/allOf/2', schema, '', 'allOf', schema, 2],
|
||||
[schema.allOf[2].items[0], '/allOf/2/items/0', schema, '/allOf/2', 'items', schema.allOf[2], 0],
|
||||
[schema.allOf[2].items[0].properties.foo_items_0, '/allOf/2/items/0/properties/foo_items_0', schema, '/allOf/2/items/0', 'properties', schema.allOf[2].items[0], 'foo_items_0'],
|
||||
[schema.allOf[2].items[0].properties.bar_items_0, '/allOf/2/items/0/properties/bar_items_0', schema, '/allOf/2/items/0', 'properties', schema.allOf[2].items[0], 'bar_items_0'],
|
||||
[schema.allOf[2].items[0].anyOf[0], '/allOf/2/items/0/anyOf/0', schema, '/allOf/2/items/0', 'anyOf', schema.allOf[2].items[0], 0],
|
||||
[schema.allOf[2].items[0].anyOf[1], '/allOf/2/items/0/anyOf/1', schema, '/allOf/2/items/0', 'anyOf', schema.allOf[2].items[0], 1],
|
||||
|
||||
[schema.allOf[2].items[1], '/allOf/2/items/1', schema, '/allOf/2', 'items', schema.allOf[2], 1],
|
||||
[schema.allOf[2].items[1].properties.foo_items_1, '/allOf/2/items/1/properties/foo_items_1', schema, '/allOf/2/items/1', 'properties', schema.allOf[2].items[1], 'foo_items_1'],
|
||||
[schema.allOf[2].items[1].properties.bar_items_1, '/allOf/2/items/1/properties/bar_items_1', schema, '/allOf/2/items/1', 'properties', schema.allOf[2].items[1], 'bar_items_1'],
|
||||
[schema.allOf[2].items[1].anyOf[0], '/allOf/2/items/1/anyOf/0', schema, '/allOf/2/items/1', 'anyOf', schema.allOf[2].items[1], 0],
|
||||
[schema.allOf[2].items[1].anyOf[1], '/allOf/2/items/1/anyOf/1', schema, '/allOf/2/items/1', 'anyOf', schema.allOf[2].items[1], 1]
|
||||
])
|
||||
.concat(expectedCallsChild('anyOf', 0))
|
||||
.concat(expectedCallsChild('anyOf', 1))
|
||||
.concat(expectedCallsChild('oneOf', 0))
|
||||
.concat(expectedCallsChild('oneOf', 1))
|
||||
.concat(expectedCallsChild('definitions', 'foo'))
|
||||
.concat(expectedCallsChild('definitions', 'bar'))
|
||||
.concat(expectedCallsChild('properties', 'foo'))
|
||||
.concat(expectedCallsChild('properties', 'bar'))
|
||||
.concat(expectedCallsChild('patternProperties', 'foo'))
|
||||
.concat(expectedCallsChild('patternProperties', 'bar'))
|
||||
.concat(expectedCallsChild('dependencies', 'foo'))
|
||||
.concat(expectedCallsChild('dependencies', 'bar'))
|
||||
};
|
||||
|
||||
|
||||
function expectedCalls(keyword) {
|
||||
return [
|
||||
[schema[keyword], `/${keyword}`, schema, '', keyword, schema, undefined],
|
||||
[schema[keyword].properties[`foo_${keyword}`], `/${keyword}/properties/foo_${keyword}`, schema, `/${keyword}`, 'properties', schema[keyword], `foo_${keyword}`],
|
||||
[schema[keyword].properties[`bar_${keyword}`], `/${keyword}/properties/bar_${keyword}`, schema, `/${keyword}`, 'properties', schema[keyword], `bar_${keyword}`],
|
||||
[schema[keyword].anyOf[0], `/${keyword}/anyOf/0`, schema, `/${keyword}`, 'anyOf', schema[keyword], 0],
|
||||
[schema[keyword].anyOf[1], `/${keyword}/anyOf/1`, schema, `/${keyword}`, 'anyOf', schema[keyword], 1]
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
function expectedCallsChild(keyword, i) {
|
||||
return [
|
||||
[schema[keyword][i], `/${keyword}/${i}`, schema, '', keyword, schema, i],
|
||||
[schema[keyword][i].properties[`foo_${keyword}_${i}`], `/${keyword}/${i}/properties/foo_${keyword}_${i}`, schema, `/${keyword}/${i}`, 'properties', schema[keyword][i], `foo_${keyword}_${i}`],
|
||||
[schema[keyword][i].properties[`bar_${keyword}_${i}`], `/${keyword}/${i}/properties/bar_${keyword}_${i}`, schema, `/${keyword}/${i}`, 'properties', schema[keyword][i], `bar_${keyword}_${i}`],
|
||||
[schema[keyword][i].anyOf[0], `/${keyword}/${i}/anyOf/0`, schema, `/${keyword}/${i}`, 'anyOf', schema[keyword][i], 0],
|
||||
[schema[keyword][i].anyOf[1], `/${keyword}/${i}/anyOf/1`, schema, `/${keyword}/${i}`, 'anyOf', schema[keyword][i], 1]
|
||||
];
|
||||
}
|
||||
171
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/spec/index.spec.js
generated
vendored
Normal file
171
receipeServer/frontend_old/node_modules/ajv-formats/node_modules/json-schema-traverse/spec/index.spec.js
generated
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
'use strict';
|
||||
|
||||
var traverse = require('../index');
|
||||
var assert = require('assert');
|
||||
|
||||
describe('json-schema-traverse', function() {
|
||||
var calls;
|
||||
|
||||
beforeEach(function() {
|
||||
calls = [];
|
||||
});
|
||||
|
||||
it('should traverse all keywords containing schemas recursively', function() {
|
||||
var schema = require('./fixtures/schema').schema;
|
||||
var expectedCalls = require('./fixtures/schema').expectedCalls;
|
||||
|
||||
traverse(schema, {cb: callback});
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
|
||||
describe('Legacy v0.3.1 API', function() {
|
||||
it('should traverse all keywords containing schemas recursively', function() {
|
||||
var schema = require('./fixtures/schema').schema;
|
||||
var expectedCalls = require('./fixtures/schema').expectedCalls;
|
||||
|
||||
traverse(schema, callback);
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
|
||||
it('should work when an options object is provided', function() {
|
||||
// schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
|
||||
var schema = require('./fixtures/schema').schema;
|
||||
var expectedCalls = require('./fixtures/schema').expectedCalls;
|
||||
|
||||
traverse(schema, {}, callback);
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
describe('allKeys option', function() {
|
||||
var schema = {
|
||||
someObject: {
|
||||
minimum: 1,
|
||||
maximum: 2
|
||||
}
|
||||
};
|
||||
|
||||
it('should traverse objects with allKeys: true option', function() {
|
||||
// schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
|
||||
var expectedCalls = [
|
||||
[schema, '', schema, undefined, undefined, undefined, undefined],
|
||||
[schema.someObject, '/someObject', schema, '', 'someObject', schema, undefined]
|
||||
];
|
||||
|
||||
traverse(schema, {allKeys: true, cb: callback});
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
|
||||
|
||||
it('should NOT traverse objects with allKeys: false option', function() {
|
||||
// schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
|
||||
var expectedCalls = [
|
||||
[schema, '', schema, undefined, undefined, undefined, undefined]
|
||||
];
|
||||
|
||||
traverse(schema, {allKeys: false, cb: callback});
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
|
||||
|
||||
it('should NOT traverse objects without allKeys option', function() {
|
||||
// schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
|
||||
var expectedCalls = [
|
||||
[schema, '', schema, undefined, undefined, undefined, undefined]
|
||||
];
|
||||
|
||||
traverse(schema, {cb: callback});
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
|
||||
|
||||
it('should NOT travers objects in standard keywords which value is not a schema', function() {
|
||||
var schema2 = {
|
||||
const: {foo: 'bar'},
|
||||
enum: ['a', 'b'],
|
||||
required: ['foo'],
|
||||
another: {
|
||||
|
||||
},
|
||||
patternProperties: {}, // will not traverse - no properties
|
||||
dependencies: true, // will not traverse - invalid
|
||||
properties: {
|
||||
smaller: {
|
||||
type: 'number'
|
||||
},
|
||||
larger: {
|
||||
type: 'number',
|
||||
minimum: {$data: '1/smaller'}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
|
||||
var expectedCalls = [
|
||||
[schema2, '', schema2, undefined, undefined, undefined, undefined],
|
||||
[schema2.another, '/another', schema2, '', 'another', schema2, undefined],
|
||||
[schema2.properties.smaller, '/properties/smaller', schema2, '', 'properties', schema2, 'smaller'],
|
||||
[schema2.properties.larger, '/properties/larger', schema2, '', 'properties', schema2, 'larger'],
|
||||
];
|
||||
|
||||
traverse(schema2, {allKeys: true, cb: callback});
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
});
|
||||
|
||||
describe('pre and post', function() {
|
||||
var schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
name: {type: 'string'},
|
||||
age: {type: 'number'}
|
||||
}
|
||||
};
|
||||
|
||||
it('should traverse schema in pre-order', function() {
|
||||
traverse(schema, {cb: {pre}});
|
||||
var expectedCalls = [
|
||||
['pre', schema, '', schema, undefined, undefined, undefined, undefined],
|
||||
['pre', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
|
||||
['pre', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
|
||||
];
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
|
||||
it('should traverse schema in post-order', function() {
|
||||
traverse(schema, {cb: {post}});
|
||||
var expectedCalls = [
|
||||
['post', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
|
||||
['post', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
|
||||
['post', schema, '', schema, undefined, undefined, undefined, undefined],
|
||||
];
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
|
||||
it('should traverse schema in pre- and post-order at the same time', function() {
|
||||
traverse(schema, {cb: {pre, post}});
|
||||
var expectedCalls = [
|
||||
['pre', schema, '', schema, undefined, undefined, undefined, undefined],
|
||||
['pre', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
|
||||
['post', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
|
||||
['pre', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
|
||||
['post', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
|
||||
['post', schema, '', schema, undefined, undefined, undefined, undefined],
|
||||
];
|
||||
assert.deepStrictEqual(calls, expectedCalls);
|
||||
});
|
||||
});
|
||||
|
||||
function callback() {
|
||||
calls.push(Array.prototype.slice.call(arguments));
|
||||
}
|
||||
|
||||
function pre() {
|
||||
calls.push(['pre'].concat(Array.prototype.slice.call(arguments)));
|
||||
}
|
||||
|
||||
function post() {
|
||||
calls.push(['post'].concat(Array.prototype.slice.call(arguments)));
|
||||
}
|
||||
});
|
||||
74
receipeServer/frontend_old/node_modules/ajv-formats/package.json
generated
vendored
Normal file
74
receipeServer/frontend_old/node_modules/ajv-formats/package.json
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"name": "ajv-formats",
|
||||
"version": "2.1.1",
|
||||
"description": "Format validation for Ajv v7+",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
"files": [
|
||||
"src/",
|
||||
"dist/"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"prettier:write": "prettier --write \"./**/*.{md,json,yaml,js,ts}\"",
|
||||
"prettier:check": "prettier --list-different \"./**/*.{md,json,yaml,js,ts}\"",
|
||||
"eslint": "eslint --ext .ts ./src/**/*",
|
||||
"test-spec": "jest",
|
||||
"test-cov": "jest --coverage",
|
||||
"test": "npm run prettier:check && npm run build && npm run eslint && npm run test-cov",
|
||||
"ci-test": "npm run test"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/ajv-validator/ajv-formats.git"
|
||||
},
|
||||
"keywords": [
|
||||
"Ajv",
|
||||
"JSON-Schema",
|
||||
"format",
|
||||
"validation"
|
||||
],
|
||||
"author": "Evgeny Poberezkin",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/ajv-validator/ajv-formats/issues"
|
||||
},
|
||||
"homepage": "https://github.com/ajv-validator/ajv-formats#readme",
|
||||
"dependencies": {
|
||||
"ajv": "^8.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ajv": "^8.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"ajv": {
|
||||
"optional": true
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ajv-validator/config": "^0.3.0",
|
||||
"@types/jest": "^26.0.5",
|
||||
"@types/node": "^14.10.1",
|
||||
"@typescript-eslint/eslint-plugin": "^3.7.0",
|
||||
"@typescript-eslint/parser": "^3.7.0",
|
||||
"ajv": "^8.0.0",
|
||||
"eslint": "^7.5.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"husky": "^4.2.5",
|
||||
"jest": "^26.1.0",
|
||||
"json-schema-test": "^2.0.0",
|
||||
"lint-staged": "^10.2.11",
|
||||
"prettier": "^2.3.2",
|
||||
"ts-jest": "^26.1.3",
|
||||
"typescript": "^4.0.0"
|
||||
},
|
||||
"prettier": "@ajv-validator/config/prettierrc.json",
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged && npm test"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{md,json,yaml,js,ts}": "prettier --write"
|
||||
}
|
||||
}
|
||||
232
receipeServer/frontend_old/node_modules/ajv-formats/src/formats.ts
generated
vendored
Normal file
232
receipeServer/frontend_old/node_modules/ajv-formats/src/formats.ts
generated
vendored
Normal file
@@ -0,0 +1,232 @@
|
||||
import type {Format, FormatDefinition} from "ajv"
|
||||
import type {FormatValidator, FormatCompare} from "ajv/dist/types"
|
||||
|
||||
export type FormatMode = "fast" | "full"
|
||||
|
||||
export type FormatName =
|
||||
| "date"
|
||||
| "time"
|
||||
| "date-time"
|
||||
| "duration"
|
||||
| "uri"
|
||||
| "uri-reference"
|
||||
| "uri-template"
|
||||
| "url"
|
||||
| "email"
|
||||
| "hostname"
|
||||
| "ipv4"
|
||||
| "ipv6"
|
||||
| "regex"
|
||||
| "uuid"
|
||||
| "json-pointer"
|
||||
| "json-pointer-uri-fragment"
|
||||
| "relative-json-pointer"
|
||||
| "byte"
|
||||
| "int32"
|
||||
| "int64"
|
||||
| "float"
|
||||
| "double"
|
||||
| "password"
|
||||
| "binary"
|
||||
|
||||
export type DefinedFormats = {
|
||||
[key in FormatName]: Format
|
||||
}
|
||||
|
||||
function fmtDef(
|
||||
validate: RegExp | FormatValidator<string>,
|
||||
compare: FormatCompare<string>
|
||||
): FormatDefinition<string> {
|
||||
return {validate, compare}
|
||||
}
|
||||
|
||||
export const fullFormats: DefinedFormats = {
|
||||
// date: http://tools.ietf.org/html/rfc3339#section-5.6
|
||||
date: fmtDef(date, compareDate),
|
||||
// date-time: http://tools.ietf.org/html/rfc3339#section-5.6
|
||||
time: fmtDef(time, compareTime),
|
||||
"date-time": fmtDef(date_time, compareDateTime),
|
||||
// duration: https://tools.ietf.org/html/rfc3339#appendix-A
|
||||
duration: /^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,
|
||||
uri,
|
||||
"uri-reference":
|
||||
/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,
|
||||
// uri-template: https://tools.ietf.org/html/rfc6570
|
||||
"uri-template":
|
||||
/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,
|
||||
// For the source: https://gist.github.com/dperini/729294
|
||||
// For test cases: https://mathiasbynens.be/demo/url-regex
|
||||
url: /^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,
|
||||
email:
|
||||
/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
|
||||
hostname:
|
||||
/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,
|
||||
// optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
|
||||
ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
|
||||
ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,
|
||||
regex,
|
||||
// uuid: http://tools.ietf.org/html/rfc4122
|
||||
uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,
|
||||
// JSON-pointer: https://tools.ietf.org/html/rfc6901
|
||||
// uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A
|
||||
"json-pointer": /^(?:\/(?:[^~/]|~0|~1)*)*$/,
|
||||
"json-pointer-uri-fragment": /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,
|
||||
// relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00
|
||||
"relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,
|
||||
// the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types
|
||||
// byte: https://github.com/miguelmota/is-base64
|
||||
byte,
|
||||
// signed 32 bit integer
|
||||
int32: {type: "number", validate: validateInt32},
|
||||
// signed 64 bit integer
|
||||
int64: {type: "number", validate: validateInt64},
|
||||
// C-type float
|
||||
float: {type: "number", validate: validateNumber},
|
||||
// C-type double
|
||||
double: {type: "number", validate: validateNumber},
|
||||
// hint to the UI to hide input strings
|
||||
password: true,
|
||||
// unchecked string payload
|
||||
binary: true,
|
||||
}
|
||||
|
||||
export const fastFormats: DefinedFormats = {
|
||||
...fullFormats,
|
||||
date: fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/, compareDate),
|
||||
time: fmtDef(
|
||||
/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,
|
||||
compareTime
|
||||
),
|
||||
"date-time": fmtDef(
|
||||
/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,
|
||||
compareDateTime
|
||||
),
|
||||
// uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
|
||||
uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,
|
||||
"uri-reference": /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
|
||||
// email (sources from jsen validator):
|
||||
// http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
|
||||
// http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')
|
||||
email:
|
||||
/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,
|
||||
}
|
||||
|
||||
export const formatNames = Object.keys(fullFormats) as FormatName[]
|
||||
|
||||
function isLeapYear(year: number): boolean {
|
||||
// https://tools.ietf.org/html/rfc3339#appendix-C
|
||||
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)
|
||||
}
|
||||
|
||||
const DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/
|
||||
const DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
||||
|
||||
function date(str: string): boolean {
|
||||
// full-date from http://tools.ietf.org/html/rfc3339#section-5.6
|
||||
const matches: string[] | null = DATE.exec(str)
|
||||
if (!matches) return false
|
||||
const year: number = +matches[1]
|
||||
const month: number = +matches[2]
|
||||
const day: number = +matches[3]
|
||||
return (
|
||||
month >= 1 &&
|
||||
month <= 12 &&
|
||||
day >= 1 &&
|
||||
day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])
|
||||
)
|
||||
}
|
||||
|
||||
function compareDate(d1: string, d2: string): number | undefined {
|
||||
if (!(d1 && d2)) return undefined
|
||||
if (d1 > d2) return 1
|
||||
if (d1 < d2) return -1
|
||||
return 0
|
||||
}
|
||||
|
||||
const TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i
|
||||
|
||||
function time(str: string, withTimeZone?: boolean): boolean {
|
||||
const matches: string[] | null = TIME.exec(str)
|
||||
if (!matches) return false
|
||||
|
||||
const hour: number = +matches[1]
|
||||
const minute: number = +matches[2]
|
||||
const second: number = +matches[3]
|
||||
const timeZone: string = matches[5]
|
||||
return (
|
||||
((hour <= 23 && minute <= 59 && second <= 59) ||
|
||||
(hour === 23 && minute === 59 && second === 60)) &&
|
||||
(!withTimeZone || timeZone !== "")
|
||||
)
|
||||
}
|
||||
|
||||
function compareTime(t1: string, t2: string): number | undefined {
|
||||
if (!(t1 && t2)) return undefined
|
||||
const a1 = TIME.exec(t1)
|
||||
const a2 = TIME.exec(t2)
|
||||
if (!(a1 && a2)) return undefined
|
||||
t1 = a1[1] + a1[2] + a1[3] + (a1[4] || "")
|
||||
t2 = a2[1] + a2[2] + a2[3] + (a2[4] || "")
|
||||
if (t1 > t2) return 1
|
||||
if (t1 < t2) return -1
|
||||
return 0
|
||||
}
|
||||
|
||||
const DATE_TIME_SEPARATOR = /t|\s/i
|
||||
function date_time(str: string): boolean {
|
||||
// http://tools.ietf.org/html/rfc3339#section-5.6
|
||||
const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)
|
||||
return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1], true)
|
||||
}
|
||||
|
||||
function compareDateTime(dt1: string, dt2: string): number | undefined {
|
||||
if (!(dt1 && dt2)) return undefined
|
||||
const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)
|
||||
const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)
|
||||
const res = compareDate(d1, d2)
|
||||
if (res === undefined) return undefined
|
||||
return res || compareTime(t1, t2)
|
||||
}
|
||||
|
||||
const NOT_URI_FRAGMENT = /\/|:/
|
||||
const URI =
|
||||
/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i
|
||||
|
||||
function uri(str: string): boolean {
|
||||
// http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
|
||||
return NOT_URI_FRAGMENT.test(str) && URI.test(str)
|
||||
}
|
||||
|
||||
const BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm
|
||||
|
||||
function byte(str: string): boolean {
|
||||
BYTE.lastIndex = 0
|
||||
return BYTE.test(str)
|
||||
}
|
||||
|
||||
const MIN_INT32 = -(2 ** 31)
|
||||
const MAX_INT32 = 2 ** 31 - 1
|
||||
|
||||
function validateInt32(value: number): boolean {
|
||||
return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32
|
||||
}
|
||||
|
||||
function validateInt64(value: number): boolean {
|
||||
// JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64
|
||||
return Number.isInteger(value)
|
||||
}
|
||||
|
||||
function validateNumber(): boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
const Z_ANCHOR = /[^\\]\\Z/
|
||||
function regex(str: string): boolean {
|
||||
if (Z_ANCHOR.test(str)) return false
|
||||
try {
|
||||
new RegExp(str)
|
||||
return true
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
62
receipeServer/frontend_old/node_modules/ajv-formats/src/index.ts
generated
vendored
Normal file
62
receipeServer/frontend_old/node_modules/ajv-formats/src/index.ts
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
import {
|
||||
DefinedFormats,
|
||||
FormatMode,
|
||||
FormatName,
|
||||
formatNames,
|
||||
fastFormats,
|
||||
fullFormats,
|
||||
} from "./formats"
|
||||
import formatLimit from "./limit"
|
||||
import type Ajv from "ajv"
|
||||
import type {Plugin, Format} from "ajv"
|
||||
import {_, Name} from "ajv/dist/compile/codegen"
|
||||
|
||||
export {FormatMode, FormatName} from "./formats"
|
||||
export {LimitFormatError} from "./limit"
|
||||
export interface FormatOptions {
|
||||
mode?: FormatMode
|
||||
formats?: FormatName[]
|
||||
keywords?: boolean
|
||||
}
|
||||
|
||||
export type FormatsPluginOptions = FormatName[] | FormatOptions
|
||||
|
||||
export interface FormatsPlugin extends Plugin<FormatsPluginOptions> {
|
||||
get: (format: FormatName, mode?: FormatMode) => Format
|
||||
}
|
||||
|
||||
const fullName = new Name("fullFormats")
|
||||
const fastName = new Name("fastFormats")
|
||||
|
||||
const formatsPlugin: FormatsPlugin = (
|
||||
ajv: Ajv,
|
||||
opts: FormatsPluginOptions = {keywords: true}
|
||||
): Ajv => {
|
||||
if (Array.isArray(opts)) {
|
||||
addFormats(ajv, opts, fullFormats, fullName)
|
||||
return ajv
|
||||
}
|
||||
const [formats, exportName] =
|
||||
opts.mode === "fast" ? [fastFormats, fastName] : [fullFormats, fullName]
|
||||
const list = opts.formats || formatNames
|
||||
addFormats(ajv, list, formats, exportName)
|
||||
if (opts.keywords) formatLimit(ajv)
|
||||
return ajv
|
||||
}
|
||||
|
||||
formatsPlugin.get = (name: FormatName, mode: FormatMode = "full"): Format => {
|
||||
const formats = mode === "fast" ? fastFormats : fullFormats
|
||||
const f = formats[name]
|
||||
if (!f) throw new Error(`Unknown format "${name}"`)
|
||||
return f
|
||||
}
|
||||
|
||||
function addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {
|
||||
ajv.opts.code.formats ??= _`require("ajv-formats/dist/formats").${exportName}`
|
||||
for (const f of list) ajv.addFormat(f, fs[f])
|
||||
}
|
||||
|
||||
module.exports = exports = formatsPlugin
|
||||
Object.defineProperty(exports, "__esModule", {value: true})
|
||||
|
||||
export default formatsPlugin
|
||||
99
receipeServer/frontend_old/node_modules/ajv-formats/src/limit.ts
generated
vendored
Normal file
99
receipeServer/frontend_old/node_modules/ajv-formats/src/limit.ts
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
import type Ajv from "ajv"
|
||||
import type {
|
||||
Plugin,
|
||||
CodeKeywordDefinition,
|
||||
KeywordErrorDefinition,
|
||||
Code,
|
||||
Name,
|
||||
ErrorObject,
|
||||
} from "ajv"
|
||||
import type {AddedFormat} from "ajv/dist/types"
|
||||
import type {Rule} from "ajv/dist/compile/rules"
|
||||
import {KeywordCxt} from "ajv"
|
||||
import {_, str, or, getProperty, operators} from "ajv/dist/compile/codegen"
|
||||
|
||||
type Kwd = "formatMaximum" | "formatMinimum" | "formatExclusiveMaximum" | "formatExclusiveMinimum"
|
||||
|
||||
type Comparison = "<=" | ">=" | "<" | ">"
|
||||
|
||||
const ops = operators
|
||||
|
||||
const KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {
|
||||
formatMaximum: {okStr: "<=", ok: ops.LTE, fail: ops.GT},
|
||||
formatMinimum: {okStr: ">=", ok: ops.GTE, fail: ops.LT},
|
||||
formatExclusiveMaximum: {okStr: "<", ok: ops.LT, fail: ops.GTE},
|
||||
formatExclusiveMinimum: {okStr: ">", ok: ops.GT, fail: ops.LTE},
|
||||
}
|
||||
|
||||
export type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>
|
||||
|
||||
const error: KeywordErrorDefinition = {
|
||||
message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,
|
||||
params: ({keyword, schemaCode}) =>
|
||||
_`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,
|
||||
}
|
||||
|
||||
export const formatLimitDefinition: CodeKeywordDefinition = {
|
||||
keyword: Object.keys(KWDs),
|
||||
type: "string",
|
||||
schemaType: "string",
|
||||
$data: true,
|
||||
error,
|
||||
code(cxt) {
|
||||
const {gen, data, schemaCode, keyword, it} = cxt
|
||||
const {opts, self} = it
|
||||
if (!opts.validateFormats) return
|
||||
|
||||
const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, "format")
|
||||
if (fCxt.$data) validate$DataFormat()
|
||||
else validateFormat()
|
||||
|
||||
function validate$DataFormat(): void {
|
||||
const fmts = gen.scopeValue("formats", {
|
||||
ref: self.formats,
|
||||
code: opts.code.formats,
|
||||
})
|
||||
const fmt = gen.const("fmt", _`${fmts}[${fCxt.schemaCode}]`)
|
||||
cxt.fail$data(
|
||||
or(
|
||||
_`typeof ${fmt} != "object"`,
|
||||
_`${fmt} instanceof RegExp`,
|
||||
_`typeof ${fmt}.compare != "function"`,
|
||||
compareCode(fmt)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
function validateFormat(): void {
|
||||
const format = fCxt.schema as string
|
||||
const fmtDef: AddedFormat | undefined = self.formats[format]
|
||||
if (!fmtDef || fmtDef === true) return
|
||||
if (
|
||||
typeof fmtDef != "object" ||
|
||||
fmtDef instanceof RegExp ||
|
||||
typeof fmtDef.compare != "function"
|
||||
) {
|
||||
throw new Error(`"${keyword}": format "${format}" does not define "compare" function`)
|
||||
}
|
||||
const fmt = gen.scopeValue("formats", {
|
||||
key: format,
|
||||
ref: fmtDef,
|
||||
code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,
|
||||
})
|
||||
|
||||
cxt.fail$data(compareCode(fmt))
|
||||
}
|
||||
|
||||
function compareCode(fmt: Name): Code {
|
||||
return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`
|
||||
}
|
||||
},
|
||||
dependencies: ["format"],
|
||||
}
|
||||
|
||||
const formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {
|
||||
ajv.addKeyword(formatLimitDefinition)
|
||||
return ajv
|
||||
}
|
||||
|
||||
export default formatLimitPlugin
|
||||
Reference in New Issue
Block a user