Upload via GUI (7543 Dateien)
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://json-schema.org/draft/2020-12/meta/content",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/content": true
|
||||||
|
},
|
||||||
|
"$dynamicAnchor": "meta",
|
||||||
|
|
||||||
|
"title": "Content vocabulary meta-schema",
|
||||||
|
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"contentEncoding": {"type": "string"},
|
||||||
|
"contentMediaType": {"type": "string"},
|
||||||
|
"contentSchema": {"$dynamicRef": "#meta"}
|
||||||
|
}
|
||||||
|
}
|
||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://json-schema.org/draft/2020-12/meta/core",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/core": true
|
||||||
|
},
|
||||||
|
"$dynamicAnchor": "meta",
|
||||||
|
|
||||||
|
"title": "Core vocabulary meta-schema",
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"$id": {
|
||||||
|
"$ref": "#/$defs/uriReferenceString",
|
||||||
|
"$comment": "Non-empty fragments not allowed.",
|
||||||
|
"pattern": "^[^#]*#?$"
|
||||||
|
},
|
||||||
|
"$schema": {"$ref": "#/$defs/uriString"},
|
||||||
|
"$ref": {"$ref": "#/$defs/uriReferenceString"},
|
||||||
|
"$anchor": {"$ref": "#/$defs/anchorString"},
|
||||||
|
"$dynamicRef": {"$ref": "#/$defs/uriReferenceString"},
|
||||||
|
"$dynamicAnchor": {"$ref": "#/$defs/anchorString"},
|
||||||
|
"$vocabulary": {
|
||||||
|
"type": "object",
|
||||||
|
"propertyNames": {"$ref": "#/$defs/uriString"},
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$comment": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"$defs": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$dynamicRef": "#meta"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$defs": {
|
||||||
|
"anchorString": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^[A-Za-z_][-A-Za-z0-9._]*$"
|
||||||
|
},
|
||||||
|
"uriString": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri"
|
||||||
|
},
|
||||||
|
"uriReferenceString": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri-reference"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://json-schema.org/draft/2020-12/meta/format-annotation",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true
|
||||||
|
},
|
||||||
|
"$dynamicAnchor": "meta",
|
||||||
|
|
||||||
|
"title": "Format vocabulary meta-schema for annotation results",
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"format": {"type": "string"}
|
||||||
|
}
|
||||||
|
}
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://json-schema.org/draft/2020-12/meta/meta-data",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/meta-data": true
|
||||||
|
},
|
||||||
|
"$dynamicAnchor": "meta",
|
||||||
|
|
||||||
|
"title": "Meta-data vocabulary meta-schema",
|
||||||
|
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default": true,
|
||||||
|
"deprecated": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"readOnly": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"writeOnly": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"examples": {
|
||||||
|
"type": "array",
|
||||||
|
"items": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://json-schema.org/draft/2020-12/meta/unevaluated",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true
|
||||||
|
},
|
||||||
|
"$dynamicAnchor": "meta",
|
||||||
|
|
||||||
|
"title": "Unevaluated applicator vocabulary meta-schema",
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"unevaluatedItems": {"$dynamicRef": "#meta"},
|
||||||
|
"unevaluatedProperties": {"$dynamicRef": "#meta"}
|
||||||
|
}
|
||||||
|
}
|
||||||
+90
@@ -0,0 +1,90 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://json-schema.org/draft/2020-12/meta/validation",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/validation": true
|
||||||
|
},
|
||||||
|
"$dynamicAnchor": "meta",
|
||||||
|
|
||||||
|
"title": "Validation vocabulary meta-schema",
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"anyOf": [
|
||||||
|
{"$ref": "#/$defs/simpleTypes"},
|
||||||
|
{
|
||||||
|
"type": "array",
|
||||||
|
"items": {"$ref": "#/$defs/simpleTypes"},
|
||||||
|
"minItems": 1,
|
||||||
|
"uniqueItems": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"const": true,
|
||||||
|
"enum": {
|
||||||
|
"type": "array",
|
||||||
|
"items": true
|
||||||
|
},
|
||||||
|
"multipleOf": {
|
||||||
|
"type": "number",
|
||||||
|
"exclusiveMinimum": 0
|
||||||
|
},
|
||||||
|
"maximum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"exclusiveMaximum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"minimum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"exclusiveMinimum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"maxLength": {"$ref": "#/$defs/nonNegativeInteger"},
|
||||||
|
"minLength": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
|
||||||
|
"pattern": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "regex"
|
||||||
|
},
|
||||||
|
"maxItems": {"$ref": "#/$defs/nonNegativeInteger"},
|
||||||
|
"minItems": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
|
||||||
|
"uniqueItems": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"maxContains": {"$ref": "#/$defs/nonNegativeInteger"},
|
||||||
|
"minContains": {
|
||||||
|
"$ref": "#/$defs/nonNegativeInteger",
|
||||||
|
"default": 1
|
||||||
|
},
|
||||||
|
"maxProperties": {"$ref": "#/$defs/nonNegativeInteger"},
|
||||||
|
"minProperties": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
|
||||||
|
"required": {"$ref": "#/$defs/stringArray"},
|
||||||
|
"dependentRequired": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"$ref": "#/$defs/stringArray"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$defs": {
|
||||||
|
"nonNegativeInteger": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
|
"nonNegativeIntegerDefault0": {
|
||||||
|
"$ref": "#/$defs/nonNegativeInteger",
|
||||||
|
"default": 0
|
||||||
|
},
|
||||||
|
"simpleTypes": {
|
||||||
|
"enum": ["array", "boolean", "integer", "null", "number", "object", "string"]
|
||||||
|
},
|
||||||
|
"stringArray": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {"type": "string"},
|
||||||
|
"uniqueItems": true,
|
||||||
|
"default": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/core": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/applicator": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/validation": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/meta-data": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/content": true
|
||||||
|
},
|
||||||
|
"$dynamicAnchor": "meta",
|
||||||
|
|
||||||
|
"title": "Core and Validation specifications meta-schema",
|
||||||
|
"allOf": [
|
||||||
|
{"$ref": "meta/core"},
|
||||||
|
{"$ref": "meta/applicator"},
|
||||||
|
{"$ref": "meta/unevaluated"},
|
||||||
|
{"$ref": "meta/validation"},
|
||||||
|
{"$ref": "meta/meta-data"},
|
||||||
|
{"$ref": "meta/format-annotation"},
|
||||||
|
{"$ref": "meta/content"}
|
||||||
|
],
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
|
||||||
|
"properties": {
|
||||||
|
"definitions": {
|
||||||
|
"$comment": "\"definitions\" has been replaced by \"$defs\".",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$dynamicRef": "#meta"},
|
||||||
|
"deprecated": true,
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"anyOf": [{"$dynamicRef": "#meta"}, {"$ref": "meta/validation#/$defs/stringArray"}]
|
||||||
|
},
|
||||||
|
"deprecated": true,
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"$recursiveAnchor": {
|
||||||
|
"$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
|
||||||
|
"$ref": "meta/core#/$defs/anchorString",
|
||||||
|
"deprecated": true
|
||||||
|
},
|
||||||
|
"$recursiveRef": {
|
||||||
|
"$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
|
||||||
|
"$ref": "meta/core#/$defs/uriReferenceString",
|
||||||
|
"deprecated": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+137
@@ -0,0 +1,137 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-06/schema#",
|
||||||
|
"$id": "http://json-schema.org/draft-06/schema#",
|
||||||
|
"title": "Core schema meta-schema",
|
||||||
|
"definitions": {
|
||||||
|
"schemaArray": {
|
||||||
|
"type": "array",
|
||||||
|
"minItems": 1,
|
||||||
|
"items": {"$ref": "#"}
|
||||||
|
},
|
||||||
|
"nonNegativeInteger": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
|
"nonNegativeIntegerDefault0": {
|
||||||
|
"allOf": [{"$ref": "#/definitions/nonNegativeInteger"}, {"default": 0}]
|
||||||
|
},
|
||||||
|
"simpleTypes": {
|
||||||
|
"enum": ["array", "boolean", "integer", "null", "number", "object", "string"]
|
||||||
|
},
|
||||||
|
"stringArray": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {"type": "string"},
|
||||||
|
"uniqueItems": true,
|
||||||
|
"default": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"$id": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri-reference"
|
||||||
|
},
|
||||||
|
"$schema": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri"
|
||||||
|
},
|
||||||
|
"$ref": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri-reference"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default": {},
|
||||||
|
"examples": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {}
|
||||||
|
},
|
||||||
|
"multipleOf": {
|
||||||
|
"type": "number",
|
||||||
|
"exclusiveMinimum": 0
|
||||||
|
},
|
||||||
|
"maximum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"exclusiveMaximum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"minimum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"exclusiveMinimum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"maxLength": {"$ref": "#/definitions/nonNegativeInteger"},
|
||||||
|
"minLength": {"$ref": "#/definitions/nonNegativeIntegerDefault0"},
|
||||||
|
"pattern": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "regex"
|
||||||
|
},
|
||||||
|
"additionalItems": {"$ref": "#"},
|
||||||
|
"items": {
|
||||||
|
"anyOf": [{"$ref": "#"}, {"$ref": "#/definitions/schemaArray"}],
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"maxItems": {"$ref": "#/definitions/nonNegativeInteger"},
|
||||||
|
"minItems": {"$ref": "#/definitions/nonNegativeIntegerDefault0"},
|
||||||
|
"uniqueItems": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"contains": {"$ref": "#"},
|
||||||
|
"maxProperties": {"$ref": "#/definitions/nonNegativeInteger"},
|
||||||
|
"minProperties": {"$ref": "#/definitions/nonNegativeIntegerDefault0"},
|
||||||
|
"required": {"$ref": "#/definitions/stringArray"},
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"definitions": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"patternProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"anyOf": [{"$ref": "#"}, {"$ref": "#/definitions/stringArray"}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"propertyNames": {"$ref": "#"},
|
||||||
|
"const": {},
|
||||||
|
"enum": {
|
||||||
|
"type": "array",
|
||||||
|
"minItems": 1,
|
||||||
|
"uniqueItems": true
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"anyOf": [
|
||||||
|
{"$ref": "#/definitions/simpleTypes"},
|
||||||
|
{
|
||||||
|
"type": "array",
|
||||||
|
"items": {"$ref": "#/definitions/simpleTypes"},
|
||||||
|
"minItems": 1,
|
||||||
|
"uniqueItems": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"format": {"type": "string"},
|
||||||
|
"allOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"anyOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"oneOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"not": {"$ref": "#"}
|
||||||
|
},
|
||||||
|
"default": {}
|
||||||
|
}
|
||||||
+151
@@ -0,0 +1,151 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"$id": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "Core schema meta-schema",
|
||||||
|
"definitions": {
|
||||||
|
"schemaArray": {
|
||||||
|
"type": "array",
|
||||||
|
"minItems": 1,
|
||||||
|
"items": {"$ref": "#"}
|
||||||
|
},
|
||||||
|
"nonNegativeInteger": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
|
"nonNegativeIntegerDefault0": {
|
||||||
|
"allOf": [{"$ref": "#/definitions/nonNegativeInteger"}, {"default": 0}]
|
||||||
|
},
|
||||||
|
"simpleTypes": {
|
||||||
|
"enum": ["array", "boolean", "integer", "null", "number", "object", "string"]
|
||||||
|
},
|
||||||
|
"stringArray": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {"type": "string"},
|
||||||
|
"uniqueItems": true,
|
||||||
|
"default": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": ["object", "boolean"],
|
||||||
|
"properties": {
|
||||||
|
"$id": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri-reference"
|
||||||
|
},
|
||||||
|
"$schema": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri"
|
||||||
|
},
|
||||||
|
"$ref": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri-reference"
|
||||||
|
},
|
||||||
|
"$comment": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default": true,
|
||||||
|
"readOnly": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"examples": {
|
||||||
|
"type": "array",
|
||||||
|
"items": true
|
||||||
|
},
|
||||||
|
"multipleOf": {
|
||||||
|
"type": "number",
|
||||||
|
"exclusiveMinimum": 0
|
||||||
|
},
|
||||||
|
"maximum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"exclusiveMaximum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"minimum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"exclusiveMinimum": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"maxLength": {"$ref": "#/definitions/nonNegativeInteger"},
|
||||||
|
"minLength": {"$ref": "#/definitions/nonNegativeIntegerDefault0"},
|
||||||
|
"pattern": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "regex"
|
||||||
|
},
|
||||||
|
"additionalItems": {"$ref": "#"},
|
||||||
|
"items": {
|
||||||
|
"anyOf": [{"$ref": "#"}, {"$ref": "#/definitions/schemaArray"}],
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"maxItems": {"$ref": "#/definitions/nonNegativeInteger"},
|
||||||
|
"minItems": {"$ref": "#/definitions/nonNegativeIntegerDefault0"},
|
||||||
|
"uniqueItems": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"contains": {"$ref": "#"},
|
||||||
|
"maxProperties": {"$ref": "#/definitions/nonNegativeInteger"},
|
||||||
|
"minProperties": {"$ref": "#/definitions/nonNegativeIntegerDefault0"},
|
||||||
|
"required": {"$ref": "#/definitions/stringArray"},
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"definitions": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"patternProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"propertyNames": {"format": "regex"},
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"anyOf": [{"$ref": "#"}, {"$ref": "#/definitions/stringArray"}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"propertyNames": {"$ref": "#"},
|
||||||
|
"const": true,
|
||||||
|
"enum": {
|
||||||
|
"type": "array",
|
||||||
|
"items": true,
|
||||||
|
"minItems": 1,
|
||||||
|
"uniqueItems": true
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"anyOf": [
|
||||||
|
{"$ref": "#/definitions/simpleTypes"},
|
||||||
|
{
|
||||||
|
"type": "array",
|
||||||
|
"items": {"$ref": "#/definitions/simpleTypes"},
|
||||||
|
"minItems": 1,
|
||||||
|
"uniqueItems": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"format": {"type": "string"},
|
||||||
|
"contentMediaType": {"type": "string"},
|
||||||
|
"contentEncoding": {"type": "string"},
|
||||||
|
"if": {"$ref": "#"},
|
||||||
|
"then": {"$ref": "#"},
|
||||||
|
"else": {"$ref": "#"},
|
||||||
|
"allOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"anyOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"oneOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"not": {"$ref": "#"}
|
||||||
|
},
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
+88
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/json-schema-secure.json#",
|
||||||
|
"title": "Meta-schema for the security assessment of JSON Schemas",
|
||||||
|
"description": "If a JSON AnySchema fails validation against this meta-schema, it may be unsafe to validate untrusted data",
|
||||||
|
"definitions": {
|
||||||
|
"schemaArray": {
|
||||||
|
"type": "array",
|
||||||
|
"minItems": 1,
|
||||||
|
"items": {"$ref": "#"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"patternProperties": {
|
||||||
|
"description": "prevent slow validation of large property names",
|
||||||
|
"required": ["propertyNames"],
|
||||||
|
"properties": {
|
||||||
|
"propertyNames": {
|
||||||
|
"required": ["maxLength"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uniqueItems": {
|
||||||
|
"description": "prevent slow validation of large non-scalar arrays",
|
||||||
|
"if": {
|
||||||
|
"properties": {
|
||||||
|
"uniqueItems": {"const": true},
|
||||||
|
"items": {
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"enum": ["object", "array"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array",
|
||||||
|
"contains": {"enum": ["object", "array"]}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"then": {
|
||||||
|
"required": ["maxItems"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": {
|
||||||
|
"description": "prevent slow pattern matching of large strings",
|
||||||
|
"required": ["maxLength"]
|
||||||
|
},
|
||||||
|
"format": {
|
||||||
|
"description": "prevent slow format validation of large strings",
|
||||||
|
"required": ["maxLength"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"additionalItems": {"$ref": "#"},
|
||||||
|
"additionalProperties": {"$ref": "#"},
|
||||||
|
"dependencies": {
|
||||||
|
"additionalProperties": {
|
||||||
|
"anyOf": [{"type": "array"}, {"$ref": "#"}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"items": {
|
||||||
|
"anyOf": [{"$ref": "#"}, {"$ref": "#/definitions/schemaArray"}]
|
||||||
|
},
|
||||||
|
"definitions": {
|
||||||
|
"additionalProperties": {"$ref": "#"}
|
||||||
|
},
|
||||||
|
"patternProperties": {
|
||||||
|
"additionalProperties": {"$ref": "#"}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"additionalProperties": {"$ref": "#"}
|
||||||
|
},
|
||||||
|
"if": {"$ref": "#"},
|
||||||
|
"then": {"$ref": "#"},
|
||||||
|
"else": {"$ref": "#"},
|
||||||
|
"allOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"anyOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"oneOf": {"$ref": "#/definitions/schemaArray"},
|
||||||
|
"not": {"$ref": "#"},
|
||||||
|
"contains": {"$ref": "#"},
|
||||||
|
"propertyNames": {"$ref": "#"}
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
import { SchemaObject } from "../types";
|
||||||
|
declare const jtdMetaSchema: SchemaObject;
|
||||||
|
export default jtdMetaSchema;
|
||||||
+118
@@ -0,0 +1,118 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const shared = (root) => {
|
||||||
|
const sch = {
|
||||||
|
nullable: { type: "boolean" },
|
||||||
|
metadata: {
|
||||||
|
optionalProperties: {
|
||||||
|
union: { elements: { ref: "schema" } },
|
||||||
|
},
|
||||||
|
additionalProperties: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
if (root)
|
||||||
|
sch.definitions = { values: { ref: "schema" } };
|
||||||
|
return sch;
|
||||||
|
};
|
||||||
|
const emptyForm = (root) => ({
|
||||||
|
optionalProperties: shared(root),
|
||||||
|
});
|
||||||
|
const refForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
ref: { type: "string" },
|
||||||
|
},
|
||||||
|
optionalProperties: shared(root),
|
||||||
|
});
|
||||||
|
const typeForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
type: {
|
||||||
|
enum: [
|
||||||
|
"boolean",
|
||||||
|
"timestamp",
|
||||||
|
"string",
|
||||||
|
"float32",
|
||||||
|
"float64",
|
||||||
|
"int8",
|
||||||
|
"uint8",
|
||||||
|
"int16",
|
||||||
|
"uint16",
|
||||||
|
"int32",
|
||||||
|
"uint32",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
optionalProperties: shared(root),
|
||||||
|
});
|
||||||
|
const enumForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
enum: { elements: { type: "string" } },
|
||||||
|
},
|
||||||
|
optionalProperties: shared(root),
|
||||||
|
});
|
||||||
|
const elementsForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
elements: { ref: "schema" },
|
||||||
|
},
|
||||||
|
optionalProperties: shared(root),
|
||||||
|
});
|
||||||
|
const propertiesForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
properties: { values: { ref: "schema" } },
|
||||||
|
},
|
||||||
|
optionalProperties: {
|
||||||
|
optionalProperties: { values: { ref: "schema" } },
|
||||||
|
additionalProperties: { type: "boolean" },
|
||||||
|
...shared(root),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const optionalPropertiesForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
optionalProperties: { values: { ref: "schema" } },
|
||||||
|
},
|
||||||
|
optionalProperties: {
|
||||||
|
additionalProperties: { type: "boolean" },
|
||||||
|
...shared(root),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const discriminatorForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
discriminator: { type: "string" },
|
||||||
|
mapping: {
|
||||||
|
values: {
|
||||||
|
metadata: {
|
||||||
|
union: [propertiesForm(false), optionalPropertiesForm(false)],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
optionalProperties: shared(root),
|
||||||
|
});
|
||||||
|
const valuesForm = (root) => ({
|
||||||
|
properties: {
|
||||||
|
values: { ref: "schema" },
|
||||||
|
},
|
||||||
|
optionalProperties: shared(root),
|
||||||
|
});
|
||||||
|
const schema = (root) => ({
|
||||||
|
metadata: {
|
||||||
|
union: [
|
||||||
|
emptyForm,
|
||||||
|
refForm,
|
||||||
|
typeForm,
|
||||||
|
enumForm,
|
||||||
|
elementsForm,
|
||||||
|
propertiesForm,
|
||||||
|
optionalPropertiesForm,
|
||||||
|
discriminatorForm,
|
||||||
|
valuesForm,
|
||||||
|
].map((s) => s(root)),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const jtdMetaSchema = {
|
||||||
|
definitions: {
|
||||||
|
schema: schema(false),
|
||||||
|
},
|
||||||
|
...schema(true),
|
||||||
|
};
|
||||||
|
exports.default = jtdMetaSchema;
|
||||||
|
//# sourceMappingURL=jtd-schema.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"jtd-schema.js","sourceRoot":"","sources":["../../lib/refs/jtd-schema.ts"],"names":[],"mappings":";;AAIA,MAAM,MAAM,GAAe,CAAC,IAAI,EAAE,EAAE;IAClC,MAAM,GAAG,GAAiB;QACxB,QAAQ,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;QAC3B,QAAQ,EAAE;YACR,kBAAkB,EAAE;gBAClB,KAAK,EAAE,EAAC,QAAQ,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC,EAAC;aACnC;YACD,oBAAoB,EAAE,IAAI;SAC3B;KACF,CAAA;IACD,IAAI,IAAI;QAAE,GAAG,CAAC,WAAW,GAAG,EAAC,MAAM,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC,EAAC,CAAA;IACrD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,SAAS,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,UAAU,EAAE;QACV,GAAG,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;KACtB;IACD,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,SAAS;gBACT,WAAW;gBACX,QAAQ;gBACR,SAAS;gBACT,SAAS;gBACT,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,QAAQ;gBACR,OAAO;gBACP,QAAQ;aACT;SACF;KACF;IACD,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,UAAU,EAAE;QACV,IAAI,EAAE,EAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;KACnC;IACD,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,YAAY,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1C,UAAU,EAAE;QACV,QAAQ,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC;KAC1B;IACD,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,cAAc,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5C,UAAU,EAAE;QACV,UAAU,EAAE,EAAC,MAAM,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC,EAAC;KACtC;IACD,kBAAkB,EAAE;QAClB,kBAAkB,EAAE,EAAC,MAAM,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC,EAAC;QAC7C,oBAAoB,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;QACvC,GAAG,MAAM,CAAC,IAAI,CAAC;KAChB;CACF,CAAC,CAAA;AAEF,MAAM,sBAAsB,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpD,UAAU,EAAE;QACV,kBAAkB,EAAE,EAAC,MAAM,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC,EAAC;KAC9C;IACD,kBAAkB,EAAE;QAClB,oBAAoB,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;QACvC,GAAG,MAAM,CAAC,IAAI,CAAC;KAChB;CACF,CAAC,CAAA;AAEF,MAAM,iBAAiB,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/C,UAAU,EAAE;QACV,aAAa,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;QAC/B,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,QAAQ,EAAE;oBACR,KAAK,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;iBAC9D;aACF;SACF;KACF;IACD,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,UAAU,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,UAAU,EAAE;QACV,MAAM,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC;KACxB;IACD,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,SAAS;YACT,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,YAAY;YACZ,cAAc;YACd,sBAAsB;YACtB,iBAAiB;YACjB,UAAU;SACX,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KACtB;CACF,CAAC,CAAA;AAEF,MAAM,aAAa,GAAiB;IAClC,WAAW,EAAE;QACX,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;KACtB;IACD,GAAG,MAAM,CAAC,IAAI,CAAC;CAChB,CAAA;AAED,kBAAe,aAAa,CAAA"}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
import * as equal from "fast-deep-equal";
|
||||||
|
type Equal = typeof equal & {
|
||||||
|
code: string;
|
||||||
|
};
|
||||||
|
declare const _default: Equal;
|
||||||
|
export default _default;
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
// https://github.com/ajv-validator/ajv/issues/889
|
||||||
|
const equal = require("fast-deep-equal");
|
||||||
|
equal.code = 'require("ajv/dist/runtime/equal").default';
|
||||||
|
exports.default = equal;
|
||||||
|
//# sourceMappingURL=equal.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"equal.js","sourceRoot":"","sources":["../../lib/runtime/equal.ts"],"names":[],"mappings":";;AAAA,kDAAkD;AAClD,yCAAwC;AAGtC,KAAe,CAAC,IAAI,GAAG,2CAA2C,CAAA;AAEpE,kBAAe,KAAc,CAAA"}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
export declare function parseJson(s: string, pos: number): unknown;
|
||||||
|
export declare namespace parseJson {
|
||||||
|
var message: string | undefined;
|
||||||
|
var position: number;
|
||||||
|
var code: string;
|
||||||
|
}
|
||||||
|
export declare function parseJsonNumber(s: string, pos: number, maxDigits?: number): number | undefined;
|
||||||
|
export declare namespace parseJsonNumber {
|
||||||
|
var message: string | undefined;
|
||||||
|
var position: number;
|
||||||
|
var code: string;
|
||||||
|
}
|
||||||
|
export declare function parseJsonString(s: string, pos: number): string | undefined;
|
||||||
|
export declare namespace parseJsonString {
|
||||||
|
var message: string | undefined;
|
||||||
|
var position: number;
|
||||||
|
var code: string;
|
||||||
|
}
|
||||||
+185
@@ -0,0 +1,185 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.parseJsonString = exports.parseJsonNumber = exports.parseJson = void 0;
|
||||||
|
const rxParseJson = /position\s(\d+)(?: \(line \d+ column \d+\))?$/;
|
||||||
|
function parseJson(s, pos) {
|
||||||
|
let endPos;
|
||||||
|
parseJson.message = undefined;
|
||||||
|
let matches;
|
||||||
|
if (pos)
|
||||||
|
s = s.slice(pos);
|
||||||
|
try {
|
||||||
|
parseJson.position = pos + s.length;
|
||||||
|
return JSON.parse(s);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
matches = rxParseJson.exec(e.message);
|
||||||
|
if (!matches) {
|
||||||
|
parseJson.message = "unexpected end";
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
endPos = +matches[1];
|
||||||
|
const c = s[endPos];
|
||||||
|
s = s.slice(0, endPos);
|
||||||
|
parseJson.position = pos + endPos;
|
||||||
|
try {
|
||||||
|
return JSON.parse(s);
|
||||||
|
}
|
||||||
|
catch (e1) {
|
||||||
|
parseJson.message = `unexpected token ${c}`;
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.parseJson = parseJson;
|
||||||
|
parseJson.message = undefined;
|
||||||
|
parseJson.position = 0;
|
||||||
|
parseJson.code = 'require("ajv/dist/runtime/parseJson").parseJson';
|
||||||
|
function parseJsonNumber(s, pos, maxDigits) {
|
||||||
|
let numStr = "";
|
||||||
|
let c;
|
||||||
|
parseJsonNumber.message = undefined;
|
||||||
|
if (s[pos] === "-") {
|
||||||
|
numStr += "-";
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
if (s[pos] === "0") {
|
||||||
|
numStr += "0";
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!parseDigits(maxDigits)) {
|
||||||
|
errorMessage();
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (maxDigits) {
|
||||||
|
parseJsonNumber.position = pos;
|
||||||
|
return +numStr;
|
||||||
|
}
|
||||||
|
if (s[pos] === ".") {
|
||||||
|
numStr += ".";
|
||||||
|
pos++;
|
||||||
|
if (!parseDigits()) {
|
||||||
|
errorMessage();
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (((c = s[pos]), c === "e" || c === "E")) {
|
||||||
|
numStr += "e";
|
||||||
|
pos++;
|
||||||
|
if (((c = s[pos]), c === "+" || c === "-")) {
|
||||||
|
numStr += c;
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
if (!parseDigits()) {
|
||||||
|
errorMessage();
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parseJsonNumber.position = pos;
|
||||||
|
return +numStr;
|
||||||
|
function parseDigits(maxLen) {
|
||||||
|
let digit = false;
|
||||||
|
while (((c = s[pos]), c >= "0" && c <= "9" && (maxLen === undefined || maxLen-- > 0))) {
|
||||||
|
digit = true;
|
||||||
|
numStr += c;
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
return digit;
|
||||||
|
}
|
||||||
|
function errorMessage() {
|
||||||
|
parseJsonNumber.position = pos;
|
||||||
|
parseJsonNumber.message = pos < s.length ? `unexpected token ${s[pos]}` : "unexpected end";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.parseJsonNumber = parseJsonNumber;
|
||||||
|
parseJsonNumber.message = undefined;
|
||||||
|
parseJsonNumber.position = 0;
|
||||||
|
parseJsonNumber.code = 'require("ajv/dist/runtime/parseJson").parseJsonNumber';
|
||||||
|
const escapedChars = {
|
||||||
|
b: "\b",
|
||||||
|
f: "\f",
|
||||||
|
n: "\n",
|
||||||
|
r: "\r",
|
||||||
|
t: "\t",
|
||||||
|
'"': '"',
|
||||||
|
"/": "/",
|
||||||
|
"\\": "\\",
|
||||||
|
};
|
||||||
|
const CODE_A = "a".charCodeAt(0);
|
||||||
|
const CODE_0 = "0".charCodeAt(0);
|
||||||
|
function parseJsonString(s, pos) {
|
||||||
|
let str = "";
|
||||||
|
let c;
|
||||||
|
parseJsonString.message = undefined;
|
||||||
|
// eslint-disable-next-line no-constant-condition, @typescript-eslint/no-unnecessary-condition
|
||||||
|
while (true) {
|
||||||
|
c = s[pos++];
|
||||||
|
if (c === '"')
|
||||||
|
break;
|
||||||
|
if (c === "\\") {
|
||||||
|
c = s[pos];
|
||||||
|
if (c in escapedChars) {
|
||||||
|
str += escapedChars[c];
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
else if (c === "u") {
|
||||||
|
pos++;
|
||||||
|
let count = 4;
|
||||||
|
let code = 0;
|
||||||
|
while (count--) {
|
||||||
|
code <<= 4;
|
||||||
|
c = s[pos];
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||||
|
if (c === undefined) {
|
||||||
|
errorMessage("unexpected end");
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
c = c.toLowerCase();
|
||||||
|
if (c >= "a" && c <= "f") {
|
||||||
|
code += c.charCodeAt(0) - CODE_A + 10;
|
||||||
|
}
|
||||||
|
else if (c >= "0" && c <= "9") {
|
||||||
|
code += c.charCodeAt(0) - CODE_0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
errorMessage(`unexpected token ${c}`);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
str += String.fromCharCode(code);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
errorMessage(`unexpected token ${c}`);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||||
|
}
|
||||||
|
else if (c === undefined) {
|
||||||
|
errorMessage("unexpected end");
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (c.charCodeAt(0) >= 0x20) {
|
||||||
|
str += c;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
errorMessage(`unexpected token ${c}`);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parseJsonString.position = pos;
|
||||||
|
return str;
|
||||||
|
function errorMessage(msg) {
|
||||||
|
parseJsonString.position = pos;
|
||||||
|
parseJsonString.message = msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.parseJsonString = parseJsonString;
|
||||||
|
parseJsonString.message = undefined;
|
||||||
|
parseJsonString.position = 0;
|
||||||
|
parseJsonString.code = 'require("ajv/dist/runtime/parseJson").parseJsonString';
|
||||||
|
//# sourceMappingURL=parseJson.js.map
|
||||||
+1
File diff suppressed because one or more lines are too long
+5
@@ -0,0 +1,5 @@
|
|||||||
|
declare function quote(s: string): string;
|
||||||
|
declare namespace quote {
|
||||||
|
var code: string;
|
||||||
|
}
|
||||||
|
export default quote;
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const rxEscapable =
|
||||||
|
// eslint-disable-next-line no-control-regex, no-misleading-character-class
|
||||||
|
/[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
||||||
|
const escaped = {
|
||||||
|
"\b": "\\b",
|
||||||
|
"\t": "\\t",
|
||||||
|
"\n": "\\n",
|
||||||
|
"\f": "\\f",
|
||||||
|
"\r": "\\r",
|
||||||
|
'"': '\\"',
|
||||||
|
"\\": "\\\\",
|
||||||
|
};
|
||||||
|
function quote(s) {
|
||||||
|
rxEscapable.lastIndex = 0;
|
||||||
|
return ('"' +
|
||||||
|
(rxEscapable.test(s)
|
||||||
|
? s.replace(rxEscapable, (a) => {
|
||||||
|
const c = escaped[a];
|
||||||
|
return typeof c === "string"
|
||||||
|
? c
|
||||||
|
: "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
|
||||||
|
})
|
||||||
|
: s) +
|
||||||
|
'"');
|
||||||
|
}
|
||||||
|
exports.default = quote;
|
||||||
|
quote.code = 'require("ajv/dist/runtime/quote").default';
|
||||||
|
//# sourceMappingURL=quote.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../../lib/runtime/quote.ts"],"names":[],"mappings":";;AAAA,MAAM,WAAW;AACf,2EAA2E;AAC3E,iIAAiI,CAAA;AAEnI,MAAM,OAAO,GAA6B;IACxC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACb,CAAA;AAED,SAAwB,KAAK,CAAC,CAAS;IACrC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAA;IACzB,OAAO,CACL,GAAG;QACH,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;gBACpB,OAAO,OAAO,CAAC,KAAK,QAAQ;oBAC1B,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC;QACN,GAAG,CACJ,CAAA;AACH,CAAC;AAdD,wBAcC;AAED,KAAK,CAAC,IAAI,GAAG,2CAA2C,CAAA"}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
import * as re2 from "re2";
|
||||||
|
type Re2 = typeof re2 & {
|
||||||
|
code: string;
|
||||||
|
};
|
||||||
|
declare const _default: Re2;
|
||||||
|
export default _default;
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const re2 = require("re2");
|
||||||
|
re2.code = 'require("ajv/dist/runtime/re2").default';
|
||||||
|
exports.default = re2;
|
||||||
|
//# sourceMappingURL=re2.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"re2.js","sourceRoot":"","sources":["../../lib/runtime/re2.ts"],"names":[],"mappings":";;AAAA,2BAA0B;AAGxB,GAAW,CAAC,IAAI,GAAG,yCAAyC,CAAA;AAE9D,kBAAe,GAAU,CAAA"}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
declare function validTimestamp(str: string, allowDate: boolean): boolean;
|
||||||
|
declare namespace validTimestamp {
|
||||||
|
var code: string;
|
||||||
|
}
|
||||||
|
export default validTimestamp;
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const DT_SEPARATOR = /t|\s/i;
|
||||||
|
const DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
|
||||||
|
const TIME = /^(\d\d):(\d\d):(\d\d)(?:\.\d+)?(?:z|([+-]\d\d)(?::?(\d\d))?)$/i;
|
||||||
|
const DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
||||||
|
function validTimestamp(str, allowDate) {
|
||||||
|
// http://tools.ietf.org/html/rfc3339#section-5.6
|
||||||
|
const dt = str.split(DT_SEPARATOR);
|
||||||
|
return ((dt.length === 2 && validDate(dt[0]) && validTime(dt[1])) ||
|
||||||
|
(allowDate && dt.length === 1 && validDate(dt[0])));
|
||||||
|
}
|
||||||
|
exports.default = validTimestamp;
|
||||||
|
function validDate(str) {
|
||||||
|
const matches = DATE.exec(str);
|
||||||
|
if (!matches)
|
||||||
|
return false;
|
||||||
|
const y = +matches[1];
|
||||||
|
const m = +matches[2];
|
||||||
|
const d = +matches[3];
|
||||||
|
return (m >= 1 &&
|
||||||
|
m <= 12 &&
|
||||||
|
d >= 1 &&
|
||||||
|
(d <= DAYS[m] ||
|
||||||
|
// leap year: https://tools.ietf.org/html/rfc3339#appendix-C
|
||||||
|
(m === 2 && d === 29 && (y % 100 === 0 ? y % 400 === 0 : y % 4 === 0))));
|
||||||
|
}
|
||||||
|
function validTime(str) {
|
||||||
|
const matches = TIME.exec(str);
|
||||||
|
if (!matches)
|
||||||
|
return false;
|
||||||
|
const hr = +matches[1];
|
||||||
|
const min = +matches[2];
|
||||||
|
const sec = +matches[3];
|
||||||
|
const tzH = +(matches[4] || 0);
|
||||||
|
const tzM = +(matches[5] || 0);
|
||||||
|
return ((hr <= 23 && min <= 59 && sec <= 59) ||
|
||||||
|
// leap second
|
||||||
|
(hr - tzH === 23 && min - tzM === 59 && sec === 60));
|
||||||
|
}
|
||||||
|
validTimestamp.code = 'require("ajv/dist/runtime/timestamp").default';
|
||||||
|
//# sourceMappingURL=timestamp.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../lib/runtime/timestamp.ts"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,OAAO,CAAA;AAC5B,MAAM,IAAI,GAAG,4BAA4B,CAAA;AACzC,MAAM,IAAI,GAAG,gEAAgE,CAAA;AAC7E,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAEhE,SAAwB,cAAc,CAAC,GAAW,EAAE,SAAkB;IACpE,iDAAiD;IACjD,MAAM,EAAE,GAAa,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAC5C,OAAO,CACL,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,SAAS,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACnD,CAAA;AACH,CAAC;AAPD,iCAOC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,OAAO,GAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,OAAO,CACL,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,EAAE;QACP,CAAC,IAAI,CAAC;QACN,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACX,4DAA4D;YAC5D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,OAAO,GAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,EAAE,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,MAAM,GAAG,GAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,OAAO,CACL,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;QACpC,cAAc;QACd,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,CACpD,CAAA;AACH,CAAC;AAED,cAAc,CAAC,IAAI,GAAG,+CAA+C,CAAA"}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
declare function ucs2length(str: string): number;
|
||||||
|
declare namespace ucs2length {
|
||||||
|
var code: string;
|
||||||
|
}
|
||||||
|
export default ucs2length;
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
// https://mathiasbynens.be/notes/javascript-encoding
|
||||||
|
// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode
|
||||||
|
function ucs2length(str) {
|
||||||
|
const len = str.length;
|
||||||
|
let length = 0;
|
||||||
|
let pos = 0;
|
||||||
|
let value;
|
||||||
|
while (pos < len) {
|
||||||
|
length++;
|
||||||
|
value = str.charCodeAt(pos++);
|
||||||
|
if (value >= 0xd800 && value <= 0xdbff && pos < len) {
|
||||||
|
// high surrogate, and there is a next character
|
||||||
|
value = str.charCodeAt(pos);
|
||||||
|
if ((value & 0xfc00) === 0xdc00)
|
||||||
|
pos++; // low surrogate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
exports.default = ucs2length;
|
||||||
|
ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default';
|
||||||
|
//# sourceMappingURL=ucs2length.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"ucs2length.js","sourceRoot":"","sources":["../../lib/runtime/ucs2length.ts"],"names":[],"mappings":";;AAAA,qDAAqD;AACrD,iEAAiE;AACjE,SAAwB,UAAU,CAAC,GAAW;IAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;IACtB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,KAAa,CAAA;IACjB,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,MAAM,EAAE,CAAA;QACR,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7B,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACpD,gDAAgD;YAChD,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,MAAM;gBAAE,GAAG,EAAE,CAAA,CAAC,gBAAgB;QACzD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAfD,6BAeC;AAED,UAAU,CAAC,IAAI,GAAG,gDAAgD,CAAA"}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
import * as uri from "fast-uri";
|
||||||
|
type URI = typeof uri & {
|
||||||
|
code: string;
|
||||||
|
};
|
||||||
|
declare const _default: URI;
|
||||||
|
export default _default;
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const uri = require("fast-uri");
|
||||||
|
uri.code = 'require("ajv/dist/runtime/uri").default';
|
||||||
|
exports.default = uri;
|
||||||
|
//# sourceMappingURL=uri.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../lib/runtime/uri.ts"],"names":[],"mappings":";;AAAA,gCAA+B;AAG7B,GAAW,CAAC,IAAI,GAAG,yCAAyC,CAAA;AAE9D,kBAAe,GAAU,CAAA"}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
import type { ErrorObject } from "../types";
|
||||||
|
export default class ValidationError extends Error {
|
||||||
|
readonly errors: Partial<ErrorObject>[];
|
||||||
|
readonly ajv: true;
|
||||||
|
readonly validation: true;
|
||||||
|
constructor(errors: Partial<ErrorObject>[]);
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
class ValidationError extends Error {
|
||||||
|
constructor(errors) {
|
||||||
|
super("validation failed");
|
||||||
|
this.errors = errors;
|
||||||
|
this.ajv = this.validation = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.default = ValidationError;
|
||||||
|
//# sourceMappingURL=validation_error.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"validation_error.js","sourceRoot":"","sources":["../../lib/runtime/validation_error.ts"],"names":[],"mappings":";;AAEA,MAAqB,eAAgB,SAAQ,KAAK;IAKhD,YAAY,MAA8B;QACxC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACnC,CAAC;CACF;AAVD,kCAUC"}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
import type AjvCore from "../core";
|
||||||
|
import type { AnyValidateFunction } from "../types";
|
||||||
|
declare function standaloneCode(ajv: AjvCore, refsOrFunc?: {
|
||||||
|
[K in string]?: string;
|
||||||
|
} | AnyValidateFunction): string;
|
||||||
|
export default standaloneCode;
|
||||||
+90
@@ -0,0 +1,90 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const scope_1 = require("../compile/codegen/scope");
|
||||||
|
const code_1 = require("../compile/codegen/code");
|
||||||
|
function standaloneCode(ajv, refsOrFunc) {
|
||||||
|
if (!ajv.opts.code.source) {
|
||||||
|
throw new Error("moduleCode: ajv instance must have code.source option");
|
||||||
|
}
|
||||||
|
const { _n } = ajv.scope.opts;
|
||||||
|
return typeof refsOrFunc == "function"
|
||||||
|
? funcExportCode(refsOrFunc.source)
|
||||||
|
: refsOrFunc !== undefined
|
||||||
|
? multiExportsCode(refsOrFunc, getValidate)
|
||||||
|
: multiExportsCode(ajv.schemas, (sch) => sch.meta ? undefined : ajv.compile(sch.schema));
|
||||||
|
function getValidate(id) {
|
||||||
|
const v = ajv.getSchema(id);
|
||||||
|
if (!v)
|
||||||
|
throw new Error(`moduleCode: no schema with id ${id}`);
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
function funcExportCode(source) {
|
||||||
|
const usedValues = {};
|
||||||
|
const n = source === null || source === void 0 ? void 0 : source.validateName;
|
||||||
|
const vCode = validateCode(usedValues, source);
|
||||||
|
if (ajv.opts.code.esm) {
|
||||||
|
// Always do named export as `validate` rather than the variable `n` which is `validateXX` for known export value
|
||||||
|
return `"use strict";${_n}export const validate = ${n};${_n}export default ${n};${_n}${vCode}`;
|
||||||
|
}
|
||||||
|
return `"use strict";${_n}module.exports = ${n};${_n}module.exports.default = ${n};${_n}${vCode}`;
|
||||||
|
}
|
||||||
|
function multiExportsCode(schemas, getValidateFunc) {
|
||||||
|
var _a;
|
||||||
|
const usedValues = {};
|
||||||
|
let code = (0, code_1._) `"use strict";`;
|
||||||
|
for (const name in schemas) {
|
||||||
|
const v = getValidateFunc(schemas[name]);
|
||||||
|
if (v) {
|
||||||
|
const vCode = validateCode(usedValues, v.source);
|
||||||
|
const exportSyntax = ajv.opts.code.esm
|
||||||
|
? (0, code_1._) `export const ${(0, code_1.getEsmExportName)(name)}`
|
||||||
|
: (0, code_1._) `exports${(0, code_1.getProperty)(name)}`;
|
||||||
|
code = (0, code_1._) `${code}${_n}${exportSyntax} = ${(_a = v.source) === null || _a === void 0 ? void 0 : _a.validateName};${_n}${vCode}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return `${code}`;
|
||||||
|
}
|
||||||
|
function validateCode(usedValues, s) {
|
||||||
|
if (!s)
|
||||||
|
throw new Error('moduleCode: function does not have "source" property');
|
||||||
|
if (usedState(s.validateName) === scope_1.UsedValueState.Completed)
|
||||||
|
return code_1.nil;
|
||||||
|
setUsedState(s.validateName, scope_1.UsedValueState.Started);
|
||||||
|
const scopeCode = ajv.scope.scopeCode(s.scopeValues, usedValues, refValidateCode);
|
||||||
|
const code = new code_1._Code(`${scopeCode}${_n}${s.validateCode}`);
|
||||||
|
return s.evaluated ? (0, code_1._) `${code}${s.validateName}.evaluated = ${s.evaluated};${_n}` : code;
|
||||||
|
function refValidateCode(n) {
|
||||||
|
var _a;
|
||||||
|
const vRef = (_a = n.value) === null || _a === void 0 ? void 0 : _a.ref;
|
||||||
|
if (n.prefix === "validate" && typeof vRef == "function") {
|
||||||
|
const v = vRef;
|
||||||
|
return validateCode(usedValues, v.source);
|
||||||
|
}
|
||||||
|
else if ((n.prefix === "root" || n.prefix === "wrapper") && typeof vRef == "object") {
|
||||||
|
const { validate, validateName } = vRef;
|
||||||
|
if (!validateName)
|
||||||
|
throw new Error("ajv internal error");
|
||||||
|
const def = ajv.opts.code.es5 ? scope_1.varKinds.var : scope_1.varKinds.const;
|
||||||
|
const wrapper = (0, code_1._) `${def} ${n} = {validate: ${validateName}};`;
|
||||||
|
if (usedState(validateName) === scope_1.UsedValueState.Started)
|
||||||
|
return wrapper;
|
||||||
|
const vCode = validateCode(usedValues, validate === null || validate === void 0 ? void 0 : validate.source);
|
||||||
|
return (0, code_1._) `${wrapper}${_n}${vCode}`;
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
function usedState(name) {
|
||||||
|
var _a;
|
||||||
|
return (_a = usedValues[name.prefix]) === null || _a === void 0 ? void 0 : _a.get(name);
|
||||||
|
}
|
||||||
|
function setUsedState(name, state) {
|
||||||
|
const { prefix } = name;
|
||||||
|
const names = (usedValues[prefix] = usedValues[prefix] || new Map());
|
||||||
|
names.set(name, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module.exports = exports = standaloneCode;
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.default = standaloneCode;
|
||||||
|
//# sourceMappingURL=index.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/standalone/index.ts"],"names":[],"mappings":"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"}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
import Ajv, { AnySchema, AnyValidateFunction, ErrorObject } from "../core";
|
||||||
|
export default class AjvPack {
|
||||||
|
readonly ajv: Ajv;
|
||||||
|
errors?: ErrorObject[] | null;
|
||||||
|
constructor(ajv: Ajv);
|
||||||
|
validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>;
|
||||||
|
compile<T = unknown>(schema: AnySchema, meta?: boolean): AnyValidateFunction<T>;
|
||||||
|
getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined;
|
||||||
|
private getStandalone;
|
||||||
|
addSchema(...args: Parameters<typeof Ajv.prototype.addSchema>): AjvPack;
|
||||||
|
addKeyword(...args: Parameters<typeof Ajv.prototype.addKeyword>): AjvPack;
|
||||||
|
}
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const core_1 = require("../core");
|
||||||
|
const _1 = require(".");
|
||||||
|
const requireFromString = require("require-from-string");
|
||||||
|
class AjvPack {
|
||||||
|
constructor(ajv) {
|
||||||
|
this.ajv = ajv;
|
||||||
|
}
|
||||||
|
validate(schemaKeyRef, data) {
|
||||||
|
return core_1.default.prototype.validate.call(this, schemaKeyRef, data);
|
||||||
|
}
|
||||||
|
compile(schema, meta) {
|
||||||
|
return this.getStandalone(this.ajv.compile(schema, meta));
|
||||||
|
}
|
||||||
|
getSchema(keyRef) {
|
||||||
|
const v = this.ajv.getSchema(keyRef);
|
||||||
|
if (!v)
|
||||||
|
return undefined;
|
||||||
|
return this.getStandalone(v);
|
||||||
|
}
|
||||||
|
getStandalone(v) {
|
||||||
|
return requireFromString((0, _1.default)(this.ajv, v));
|
||||||
|
}
|
||||||
|
addSchema(...args) {
|
||||||
|
this.ajv.addSchema.call(this.ajv, ...args);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
addKeyword(...args) {
|
||||||
|
this.ajv.addKeyword.call(this.ajv, ...args);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.default = AjvPack;
|
||||||
|
//# sourceMappingURL=instance.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"instance.js","sourceRoot":"","sources":["../../lib/standalone/instance.ts"],"names":[],"mappings":";;AAAA,kCAAwE;AACxE,wBAA8B;AAC9B,yDAAwD;AAExD,MAAqB,OAAO;IAE1B,YAAqB,GAAQ;QAAR,QAAG,GAAH,GAAG,CAAK;IAAG,CAAC;IAEjC,QAAQ,CAAC,YAAgC,EAAE,IAAa;QACtD,OAAO,cAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,CAAc,MAAiB,EAAE,IAAc;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,SAAS,CAAc,MAAc;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAI,MAAM,CAAC,CAAA;QACvC,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAA;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;IAEO,aAAa,CAAc,CAAyB;QAC1D,OAAO,iBAAiB,CAAC,IAAA,UAAc,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAA2B,CAAA;IACjF,CAAC;IAED,SAAS,CAAC,GAAG,IAAgD;QAC3D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,GAAG,IAAiD;QAC7D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA/BD,0BA+BC"}
|
||||||
+183
@@ -0,0 +1,183 @@
|
|||||||
|
import { URIComponent } from "fast-uri";
|
||||||
|
import type { CodeGen, Code, Name, ScopeValueSets, ValueScopeName } from "../compile/codegen";
|
||||||
|
import type { SchemaEnv, SchemaCxt, SchemaObjCxt } from "../compile";
|
||||||
|
import type { JSONType } from "../compile/rules";
|
||||||
|
import type { KeywordCxt } from "../compile/validate";
|
||||||
|
import type Ajv from "../core";
|
||||||
|
interface _SchemaObject {
|
||||||
|
id?: string;
|
||||||
|
$id?: string;
|
||||||
|
$schema?: string;
|
||||||
|
[x: string]: any;
|
||||||
|
}
|
||||||
|
export interface SchemaObject extends _SchemaObject {
|
||||||
|
id?: string;
|
||||||
|
$id?: string;
|
||||||
|
$schema?: string;
|
||||||
|
$async?: false;
|
||||||
|
[x: string]: any;
|
||||||
|
}
|
||||||
|
export interface AsyncSchema extends _SchemaObject {
|
||||||
|
$async: true;
|
||||||
|
}
|
||||||
|
export type AnySchemaObject = SchemaObject | AsyncSchema;
|
||||||
|
export type Schema = SchemaObject | boolean;
|
||||||
|
export type AnySchema = Schema | AsyncSchema;
|
||||||
|
export type SchemaMap = {
|
||||||
|
[Key in string]?: AnySchema;
|
||||||
|
};
|
||||||
|
export interface SourceCode {
|
||||||
|
validateName: ValueScopeName;
|
||||||
|
validateCode: string;
|
||||||
|
scopeValues: ScopeValueSets;
|
||||||
|
evaluated?: Code;
|
||||||
|
}
|
||||||
|
export interface DataValidationCxt<T extends string | number = string | number> {
|
||||||
|
instancePath: string;
|
||||||
|
parentData: {
|
||||||
|
[K in T]: any;
|
||||||
|
};
|
||||||
|
parentDataProperty: T;
|
||||||
|
rootData: Record<string, any> | any[];
|
||||||
|
dynamicAnchors: {
|
||||||
|
[Ref in string]?: ValidateFunction;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface ValidateFunction<T = unknown> {
|
||||||
|
(this: Ajv | any, data: any, dataCxt?: DataValidationCxt): data is T;
|
||||||
|
errors?: null | ErrorObject[];
|
||||||
|
evaluated?: Evaluated;
|
||||||
|
schema: AnySchema;
|
||||||
|
schemaEnv: SchemaEnv;
|
||||||
|
source?: SourceCode;
|
||||||
|
}
|
||||||
|
export interface JTDParser<T = unknown> {
|
||||||
|
(json: string): T | undefined;
|
||||||
|
message?: string;
|
||||||
|
position?: number;
|
||||||
|
}
|
||||||
|
export type EvaluatedProperties = {
|
||||||
|
[K in string]?: true;
|
||||||
|
} | true;
|
||||||
|
export type EvaluatedItems = number | true;
|
||||||
|
export interface Evaluated {
|
||||||
|
props?: EvaluatedProperties;
|
||||||
|
items?: EvaluatedItems;
|
||||||
|
dynamicProps: boolean;
|
||||||
|
dynamicItems: boolean;
|
||||||
|
}
|
||||||
|
export interface AsyncValidateFunction<T = unknown> extends ValidateFunction<T> {
|
||||||
|
(...args: Parameters<ValidateFunction<T>>): Promise<T>;
|
||||||
|
$async: true;
|
||||||
|
}
|
||||||
|
export type AnyValidateFunction<T = any> = ValidateFunction<T> | AsyncValidateFunction<T>;
|
||||||
|
export interface ErrorObject<K extends string = string, P = Record<string, any>, S = unknown> {
|
||||||
|
keyword: K;
|
||||||
|
instancePath: string;
|
||||||
|
schemaPath: string;
|
||||||
|
params: P;
|
||||||
|
propertyName?: string;
|
||||||
|
message?: string;
|
||||||
|
schema?: S;
|
||||||
|
parentSchema?: AnySchemaObject;
|
||||||
|
data?: unknown;
|
||||||
|
}
|
||||||
|
export type ErrorNoParams<K extends string, S = unknown> = ErrorObject<K, Record<string, never>, S>;
|
||||||
|
interface _KeywordDef {
|
||||||
|
keyword: string | string[];
|
||||||
|
type?: JSONType | JSONType[];
|
||||||
|
schemaType?: JSONType | JSONType[];
|
||||||
|
allowUndefined?: boolean;
|
||||||
|
$data?: boolean;
|
||||||
|
implements?: string[];
|
||||||
|
before?: string;
|
||||||
|
post?: boolean;
|
||||||
|
metaSchema?: AnySchemaObject;
|
||||||
|
validateSchema?: AnyValidateFunction;
|
||||||
|
dependencies?: string[];
|
||||||
|
error?: KeywordErrorDefinition;
|
||||||
|
$dataError?: KeywordErrorDefinition;
|
||||||
|
}
|
||||||
|
export interface CodeKeywordDefinition extends _KeywordDef {
|
||||||
|
code: (cxt: KeywordCxt, ruleType?: string) => void;
|
||||||
|
trackErrors?: boolean;
|
||||||
|
}
|
||||||
|
export type MacroKeywordFunc = (schema: any, parentSchema: AnySchemaObject, it: SchemaCxt) => AnySchema;
|
||||||
|
export type CompileKeywordFunc = (schema: any, parentSchema: AnySchemaObject, it: SchemaObjCxt) => DataValidateFunction;
|
||||||
|
export interface DataValidateFunction {
|
||||||
|
(...args: Parameters<ValidateFunction>): boolean | Promise<any>;
|
||||||
|
errors?: Partial<ErrorObject>[];
|
||||||
|
}
|
||||||
|
export interface SchemaValidateFunction {
|
||||||
|
(schema: any, data: any, parentSchema?: AnySchemaObject, dataCxt?: DataValidationCxt): boolean | Promise<any>;
|
||||||
|
errors?: Partial<ErrorObject>[];
|
||||||
|
}
|
||||||
|
export interface FuncKeywordDefinition extends _KeywordDef {
|
||||||
|
validate?: SchemaValidateFunction | DataValidateFunction;
|
||||||
|
compile?: CompileKeywordFunc;
|
||||||
|
schema?: boolean;
|
||||||
|
modifying?: boolean;
|
||||||
|
async?: boolean;
|
||||||
|
valid?: boolean;
|
||||||
|
errors?: boolean | "full";
|
||||||
|
}
|
||||||
|
export interface MacroKeywordDefinition extends FuncKeywordDefinition {
|
||||||
|
macro: MacroKeywordFunc;
|
||||||
|
}
|
||||||
|
export type KeywordDefinition = CodeKeywordDefinition | FuncKeywordDefinition | MacroKeywordDefinition;
|
||||||
|
export type AddedKeywordDefinition = KeywordDefinition & {
|
||||||
|
type: JSONType[];
|
||||||
|
schemaType: JSONType[];
|
||||||
|
};
|
||||||
|
export interface KeywordErrorDefinition {
|
||||||
|
message: string | Code | ((cxt: KeywordErrorCxt) => string | Code);
|
||||||
|
params?: Code | ((cxt: KeywordErrorCxt) => Code);
|
||||||
|
}
|
||||||
|
export type Vocabulary = (KeywordDefinition | string)[];
|
||||||
|
export interface KeywordErrorCxt {
|
||||||
|
gen: CodeGen;
|
||||||
|
keyword: string;
|
||||||
|
data: Name;
|
||||||
|
$data?: string | false;
|
||||||
|
schema: any;
|
||||||
|
parentSchema?: AnySchemaObject;
|
||||||
|
schemaCode: Code | number | boolean;
|
||||||
|
schemaValue: Code | number | boolean;
|
||||||
|
schemaType?: JSONType[];
|
||||||
|
errsCount?: Name;
|
||||||
|
params: KeywordCxtParams;
|
||||||
|
it: SchemaCxt;
|
||||||
|
}
|
||||||
|
export type KeywordCxtParams = {
|
||||||
|
[P in string]?: Code | string | number;
|
||||||
|
};
|
||||||
|
export type FormatValidator<T extends string | number> = (data: T) => boolean;
|
||||||
|
export type FormatCompare<T extends string | number> = (data1: T, data2: T) => number | undefined;
|
||||||
|
export type AsyncFormatValidator<T extends string | number> = (data: T) => Promise<boolean>;
|
||||||
|
export interface FormatDefinition<T extends string | number> {
|
||||||
|
type?: T extends string ? "string" | undefined : "number";
|
||||||
|
validate: FormatValidator<T> | (T extends string ? string | RegExp : never);
|
||||||
|
async?: false | undefined;
|
||||||
|
compare?: FormatCompare<T>;
|
||||||
|
}
|
||||||
|
export interface AsyncFormatDefinition<T extends string | number> {
|
||||||
|
type?: T extends string ? "string" | undefined : "number";
|
||||||
|
validate: AsyncFormatValidator<T>;
|
||||||
|
async: true;
|
||||||
|
compare?: FormatCompare<T>;
|
||||||
|
}
|
||||||
|
export type AddedFormat = true | RegExp | FormatValidator<string> | FormatDefinition<string> | FormatDefinition<number> | AsyncFormatDefinition<string> | AsyncFormatDefinition<number>;
|
||||||
|
export type Format = AddedFormat | string;
|
||||||
|
export interface RegExpEngine {
|
||||||
|
(pattern: string, u: string): RegExpLike;
|
||||||
|
code: string;
|
||||||
|
}
|
||||||
|
export interface RegExpLike {
|
||||||
|
test: (s: string) => boolean;
|
||||||
|
}
|
||||||
|
export interface UriResolver {
|
||||||
|
parse(uri: string): URIComponent;
|
||||||
|
resolve(base: string, path: string): string;
|
||||||
|
serialize(component: URIComponent): string;
|
||||||
|
}
|
||||||
|
export {};
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=index.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/types/index.ts"],"names":[],"mappings":""}
|
||||||
+125
@@ -0,0 +1,125 @@
|
|||||||
|
type StrictNullChecksWrapper<Name extends string, Type> = undefined extends null ? `strictNullChecks must be true in tsconfig to use ${Name}` : Type;
|
||||||
|
type UnionToIntersection<U> = (U extends any ? (_: U) => void : never) extends (_: infer I) => void ? I : never;
|
||||||
|
export type SomeJSONSchema = UncheckedJSONSchemaType<Known, true>;
|
||||||
|
type UncheckedPartialSchema<T> = Partial<UncheckedJSONSchemaType<T, true>>;
|
||||||
|
export type PartialSchema<T> = StrictNullChecksWrapper<"PartialSchema", UncheckedPartialSchema<T>>;
|
||||||
|
type JSONType<T extends string, IsPartial extends boolean> = IsPartial extends true ? T | undefined : T;
|
||||||
|
interface NumberKeywords {
|
||||||
|
minimum?: number;
|
||||||
|
maximum?: number;
|
||||||
|
exclusiveMinimum?: number;
|
||||||
|
exclusiveMaximum?: number;
|
||||||
|
multipleOf?: number;
|
||||||
|
format?: string;
|
||||||
|
}
|
||||||
|
interface StringKeywords {
|
||||||
|
minLength?: number;
|
||||||
|
maxLength?: number;
|
||||||
|
pattern?: string;
|
||||||
|
format?: string;
|
||||||
|
}
|
||||||
|
type UncheckedJSONSchemaType<T, IsPartial extends boolean> = (// these two unions allow arbitrary unions of types
|
||||||
|
{
|
||||||
|
anyOf: readonly UncheckedJSONSchemaType<T, IsPartial>[];
|
||||||
|
} | {
|
||||||
|
oneOf: readonly UncheckedJSONSchemaType<T, IsPartial>[];
|
||||||
|
} | ({
|
||||||
|
type: readonly (T extends number ? JSONType<"number" | "integer", IsPartial> : T extends string ? JSONType<"string", IsPartial> : T extends boolean ? JSONType<"boolean", IsPartial> : never)[];
|
||||||
|
} & UnionToIntersection<T extends number ? NumberKeywords : T extends string ? StringKeywords : T extends boolean ? {} : never>) | ((T extends number ? {
|
||||||
|
type: JSONType<"number" | "integer", IsPartial>;
|
||||||
|
} & NumberKeywords : T extends string ? {
|
||||||
|
type: JSONType<"string", IsPartial>;
|
||||||
|
} & StringKeywords : T extends boolean ? {
|
||||||
|
type: JSONType<"boolean", IsPartial>;
|
||||||
|
} : T extends readonly [any, ...any[]] ? {
|
||||||
|
type: JSONType<"array", IsPartial>;
|
||||||
|
items: {
|
||||||
|
readonly [K in keyof T]-?: UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>;
|
||||||
|
} & {
|
||||||
|
length: T["length"];
|
||||||
|
};
|
||||||
|
minItems: T["length"];
|
||||||
|
} & ({
|
||||||
|
maxItems: T["length"];
|
||||||
|
} | {
|
||||||
|
additionalItems: false;
|
||||||
|
}) : T extends readonly any[] ? {
|
||||||
|
type: JSONType<"array", IsPartial>;
|
||||||
|
items: UncheckedJSONSchemaType<T[0], false>;
|
||||||
|
contains?: UncheckedPartialSchema<T[0]>;
|
||||||
|
minItems?: number;
|
||||||
|
maxItems?: number;
|
||||||
|
minContains?: number;
|
||||||
|
maxContains?: number;
|
||||||
|
uniqueItems?: true;
|
||||||
|
additionalItems?: never;
|
||||||
|
} : T extends Record<string, any> ? {
|
||||||
|
type: JSONType<"object", IsPartial>;
|
||||||
|
additionalProperties?: boolean | UncheckedJSONSchemaType<T[string], false>;
|
||||||
|
unevaluatedProperties?: boolean | UncheckedJSONSchemaType<T[string], false>;
|
||||||
|
properties?: IsPartial extends true ? Partial<UncheckedPropertiesSchema<T>> : UncheckedPropertiesSchema<T>;
|
||||||
|
patternProperties?: Record<string, UncheckedJSONSchemaType<T[string], false>>;
|
||||||
|
propertyNames?: Omit<UncheckedJSONSchemaType<string, false>, "type"> & {
|
||||||
|
type?: "string";
|
||||||
|
};
|
||||||
|
dependencies?: {
|
||||||
|
[K in keyof T]?: readonly (keyof T)[] | UncheckedPartialSchema<T>;
|
||||||
|
};
|
||||||
|
dependentRequired?: {
|
||||||
|
[K in keyof T]?: readonly (keyof T)[];
|
||||||
|
};
|
||||||
|
dependentSchemas?: {
|
||||||
|
[K in keyof T]?: UncheckedPartialSchema<T>;
|
||||||
|
};
|
||||||
|
minProperties?: number;
|
||||||
|
maxProperties?: number;
|
||||||
|
} & (IsPartial extends true ? {
|
||||||
|
required: readonly (keyof T)[];
|
||||||
|
} : [UncheckedRequiredMembers<T>] extends [never] ? {
|
||||||
|
required?: readonly UncheckedRequiredMembers<T>[];
|
||||||
|
} : {
|
||||||
|
required: readonly UncheckedRequiredMembers<T>[];
|
||||||
|
}) : T extends null ? {
|
||||||
|
type: JSONType<"null", IsPartial>;
|
||||||
|
nullable: true;
|
||||||
|
} : never) & {
|
||||||
|
allOf?: readonly UncheckedPartialSchema<T>[];
|
||||||
|
anyOf?: readonly UncheckedPartialSchema<T>[];
|
||||||
|
oneOf?: readonly UncheckedPartialSchema<T>[];
|
||||||
|
if?: UncheckedPartialSchema<T>;
|
||||||
|
then?: UncheckedPartialSchema<T>;
|
||||||
|
else?: UncheckedPartialSchema<T>;
|
||||||
|
not?: UncheckedPartialSchema<T>;
|
||||||
|
})) & {
|
||||||
|
[keyword: string]: any;
|
||||||
|
$id?: string;
|
||||||
|
$ref?: string;
|
||||||
|
$defs?: Record<string, UncheckedJSONSchemaType<Known, true>>;
|
||||||
|
definitions?: Record<string, UncheckedJSONSchemaType<Known, true>>;
|
||||||
|
};
|
||||||
|
export type JSONSchemaType<T> = StrictNullChecksWrapper<"JSONSchemaType", UncheckedJSONSchemaType<T, false>>;
|
||||||
|
type Known = {
|
||||||
|
[key: string]: Known;
|
||||||
|
} | [Known, ...Known[]] | Known[] | number | string | boolean | null;
|
||||||
|
type UncheckedPropertiesSchema<T> = {
|
||||||
|
[K in keyof T]-?: (UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>) | {
|
||||||
|
$ref: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
export type PropertiesSchema<T> = StrictNullChecksWrapper<"PropertiesSchema", UncheckedPropertiesSchema<T>>;
|
||||||
|
type UncheckedRequiredMembers<T> = {
|
||||||
|
[K in keyof T]-?: undefined extends T[K] ? never : K;
|
||||||
|
}[keyof T];
|
||||||
|
export type RequiredMembers<T> = StrictNullChecksWrapper<"RequiredMembers", UncheckedRequiredMembers<T>>;
|
||||||
|
type Nullable<T> = undefined extends T ? {
|
||||||
|
nullable: true;
|
||||||
|
const?: null;
|
||||||
|
enum?: readonly (T | null)[];
|
||||||
|
default?: T | null;
|
||||||
|
} : {
|
||||||
|
nullable?: false;
|
||||||
|
const?: T;
|
||||||
|
enum?: readonly T[];
|
||||||
|
default?: T;
|
||||||
|
};
|
||||||
|
export {};
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=json-schema.js.map
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../lib/types/json-schema.ts"],"names":[],"mappings":""}
|
||||||
+174
@@ -0,0 +1,174 @@
|
|||||||
|
/** numeric strings */
|
||||||
|
type NumberType = "float32" | "float64" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32";
|
||||||
|
/** string strings */
|
||||||
|
type StringType = "string" | "timestamp";
|
||||||
|
/** Generic JTD Schema without inference of the represented type */
|
||||||
|
export type SomeJTDSchemaType = (// ref
|
||||||
|
{
|
||||||
|
ref: string;
|
||||||
|
} | {
|
||||||
|
type: NumberType | StringType | "boolean";
|
||||||
|
} | {
|
||||||
|
enum: string[];
|
||||||
|
} | {
|
||||||
|
elements: SomeJTDSchemaType;
|
||||||
|
} | {
|
||||||
|
values: SomeJTDSchemaType;
|
||||||
|
} | {
|
||||||
|
properties: Record<string, SomeJTDSchemaType>;
|
||||||
|
optionalProperties?: Record<string, SomeJTDSchemaType>;
|
||||||
|
additionalProperties?: boolean;
|
||||||
|
} | {
|
||||||
|
properties?: Record<string, SomeJTDSchemaType>;
|
||||||
|
optionalProperties: Record<string, SomeJTDSchemaType>;
|
||||||
|
additionalProperties?: boolean;
|
||||||
|
} | {
|
||||||
|
discriminator: string;
|
||||||
|
mapping: Record<string, SomeJTDSchemaType>;
|
||||||
|
} | {}) & {
|
||||||
|
nullable?: boolean;
|
||||||
|
metadata?: Record<string, unknown>;
|
||||||
|
definitions?: Record<string, SomeJTDSchemaType>;
|
||||||
|
};
|
||||||
|
/** required keys of an object, not undefined */
|
||||||
|
type RequiredKeys<T> = {
|
||||||
|
[K in keyof T]-?: undefined extends T[K] ? never : K;
|
||||||
|
}[keyof T];
|
||||||
|
/** optional or undifined-able keys of an object */
|
||||||
|
type OptionalKeys<T> = {
|
||||||
|
[K in keyof T]-?: undefined extends T[K] ? K : never;
|
||||||
|
}[keyof T];
|
||||||
|
/** type is true if T is a union type */
|
||||||
|
type IsUnion_<T, U extends T = T> = false extends (T extends unknown ? ([U] extends [T] ? false : true) : never) ? false : true;
|
||||||
|
type IsUnion<T> = IsUnion_<T>;
|
||||||
|
/** type is true if T is identically E */
|
||||||
|
type TypeEquality<T, E> = [T] extends [E] ? ([E] extends [T] ? true : false) : false;
|
||||||
|
/** type is true if T or null is identically E or null*/
|
||||||
|
type NullTypeEquality<T, E> = TypeEquality<T | null, E | null>;
|
||||||
|
/** gets only the string literals of a type or null if a type isn't a string literal */
|
||||||
|
type EnumString<T> = [T] extends [never] ? null : T extends string ? string extends T ? null : T : null;
|
||||||
|
/** true if type is a union of string literals */
|
||||||
|
type IsEnum<T> = null extends EnumString<T> ? false : true;
|
||||||
|
/** true only if all types are array types (not tuples) */
|
||||||
|
type IsElements<T> = false extends IsUnion<T> ? [T] extends [readonly unknown[]] ? undefined extends T[0.5] ? false : true : false : false;
|
||||||
|
/** true if the the type is a values type */
|
||||||
|
type IsValues<T> = false extends IsUnion<T> ? TypeEquality<keyof T, string> : false;
|
||||||
|
/** true if type is a properties type and Union is false, or type is a discriminator type and Union is true */
|
||||||
|
type IsRecord<T, Union extends boolean> = Union extends IsUnion<T> ? null extends EnumString<keyof T> ? false : true : false;
|
||||||
|
/** true if type represents an empty record */
|
||||||
|
type IsEmptyRecord<T> = [T] extends [Record<string, never>] ? [T] extends [never] ? false : true : false;
|
||||||
|
/** actual schema */
|
||||||
|
export type JTDSchemaType<T, D extends Record<string, unknown> = Record<string, never>> = (// refs - where null wasn't specified, must match exactly
|
||||||
|
(null extends EnumString<keyof D> ? never : ({
|
||||||
|
[K in keyof D]: [T] extends [D[K]] ? {
|
||||||
|
ref: K;
|
||||||
|
} : never;
|
||||||
|
}[keyof D] & {
|
||||||
|
nullable?: false;
|
||||||
|
}) | (null extends T ? {
|
||||||
|
[K in keyof D]: [Exclude<T, null>] extends [Exclude<D[K], null>] ? {
|
||||||
|
ref: K;
|
||||||
|
} : never;
|
||||||
|
}[keyof D] & {
|
||||||
|
nullable: true;
|
||||||
|
} : never)) | (unknown extends T ? {
|
||||||
|
nullable?: boolean;
|
||||||
|
} : never) | ((true extends NullTypeEquality<T, number> ? {
|
||||||
|
type: NumberType;
|
||||||
|
} : true extends NullTypeEquality<T, boolean> ? {
|
||||||
|
type: "boolean";
|
||||||
|
} : true extends NullTypeEquality<T, string> ? {
|
||||||
|
type: StringType;
|
||||||
|
} : true extends NullTypeEquality<T, Date> ? {
|
||||||
|
type: "timestamp";
|
||||||
|
} : true extends IsEnum<Exclude<T, null>> ? {
|
||||||
|
enum: EnumString<Exclude<T, null>>[];
|
||||||
|
} : true extends IsElements<Exclude<T, null>> ? T extends readonly (infer E)[] ? {
|
||||||
|
elements: JTDSchemaType<E, D>;
|
||||||
|
} : never : true extends IsEmptyRecord<Exclude<T, null>> ? {
|
||||||
|
properties: Record<string, never>;
|
||||||
|
optionalProperties?: Record<string, never>;
|
||||||
|
} | {
|
||||||
|
optionalProperties: Record<string, never>;
|
||||||
|
} : true extends IsValues<Exclude<T, null>> ? T extends Record<string, infer V> ? {
|
||||||
|
values: JTDSchemaType<V, D>;
|
||||||
|
} : never : true extends IsRecord<Exclude<T, null>, false> ? ([RequiredKeys<Exclude<T, null>>] extends [never] ? {
|
||||||
|
properties?: Record<string, never>;
|
||||||
|
} : {
|
||||||
|
properties: {
|
||||||
|
[K in RequiredKeys<T>]: JTDSchemaType<T[K], D>;
|
||||||
|
};
|
||||||
|
}) & ([OptionalKeys<Exclude<T, null>>] extends [never] ? {
|
||||||
|
optionalProperties?: Record<string, never>;
|
||||||
|
} : {
|
||||||
|
optionalProperties: {
|
||||||
|
[K in OptionalKeys<T>]: JTDSchemaType<Exclude<T[K], undefined>, D>;
|
||||||
|
};
|
||||||
|
}) & {
|
||||||
|
additionalProperties?: boolean;
|
||||||
|
} : true extends IsRecord<Exclude<T, null>, true> ? {
|
||||||
|
[K in keyof Exclude<T, null>]-?: Exclude<T, null>[K] extends string ? {
|
||||||
|
discriminator: K;
|
||||||
|
mapping: {
|
||||||
|
[M in Exclude<T, null>[K]]: JTDSchemaType<Omit<T extends Record<K, M> ? T : never, K>, D>;
|
||||||
|
};
|
||||||
|
} : never;
|
||||||
|
}[keyof Exclude<T, null>] : never) & (null extends T ? {
|
||||||
|
nullable: true;
|
||||||
|
} : {
|
||||||
|
nullable?: false;
|
||||||
|
}))) & {
|
||||||
|
metadata?: Record<string, unknown>;
|
||||||
|
definitions?: {
|
||||||
|
[K in keyof D]: JTDSchemaType<D[K], D>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
type JTDDataDef<S, D extends Record<string, unknown>> = // ref
|
||||||
|
(S extends {
|
||||||
|
ref: string;
|
||||||
|
} ? D extends {
|
||||||
|
[K in S["ref"]]: infer V;
|
||||||
|
} ? JTDDataDef<V, D> : never : S extends {
|
||||||
|
type: NumberType;
|
||||||
|
} ? number : S extends {
|
||||||
|
type: "boolean";
|
||||||
|
} ? boolean : S extends {
|
||||||
|
type: "string";
|
||||||
|
} ? string : S extends {
|
||||||
|
type: "timestamp";
|
||||||
|
} ? string | Date : S extends {
|
||||||
|
enum: readonly (infer E)[];
|
||||||
|
} ? string extends E ? never : [E] extends [string] ? E : never : S extends {
|
||||||
|
elements: infer E;
|
||||||
|
} ? JTDDataDef<E, D>[] : S extends {
|
||||||
|
properties: Record<string, unknown>;
|
||||||
|
optionalProperties?: Record<string, unknown>;
|
||||||
|
additionalProperties?: boolean;
|
||||||
|
} ? {
|
||||||
|
-readonly [K in keyof S["properties"]]-?: JTDDataDef<S["properties"][K], D>;
|
||||||
|
} & {
|
||||||
|
-readonly [K in keyof S["optionalProperties"]]+?: JTDDataDef<S["optionalProperties"][K], D>;
|
||||||
|
} & ([S["additionalProperties"]] extends [true] ? Record<string, unknown> : unknown) : S extends {
|
||||||
|
properties?: Record<string, unknown>;
|
||||||
|
optionalProperties: Record<string, unknown>;
|
||||||
|
additionalProperties?: boolean;
|
||||||
|
} ? {
|
||||||
|
-readonly [K in keyof S["properties"]]-?: JTDDataDef<S["properties"][K], D>;
|
||||||
|
} & {
|
||||||
|
-readonly [K in keyof S["optionalProperties"]]+?: JTDDataDef<S["optionalProperties"][K], D>;
|
||||||
|
} & ([S["additionalProperties"]] extends [true] ? Record<string, unknown> : unknown) : S extends {
|
||||||
|
values: infer V;
|
||||||
|
} ? Record<string, JTDDataDef<V, D>> : S extends {
|
||||||
|
discriminator: infer M;
|
||||||
|
mapping: Record<string, unknown>;
|
||||||
|
} ? [M] extends [string] ? {
|
||||||
|
[K in keyof S["mapping"]]: JTDDataDef<S["mapping"][K], D> & {
|
||||||
|
[KM in M]: K;
|
||||||
|
};
|
||||||
|
}[keyof S["mapping"]] : never : unknown) | (S extends {
|
||||||
|
nullable: true;
|
||||||
|
} ? null : never);
|
||||||
|
export type JTDDataType<S> = S extends {
|
||||||
|
definitions: Record<string, unknown>;
|
||||||
|
} ? JTDDataDef<S, S["definitions"]> : JTDDataDef<S, Record<string, never>>;
|
||||||
|
export {};
|
||||||
Reference in New Issue
Block a user