@nikovirtala/projen-constructs 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +3 -2
- package/lib/components/typedoc.js +1 -1
- package/lib/components/vitest.js +1 -1
- package/lib/project-generator.js +1 -1
- package/lib/projects/awscdk-construct-library.generated.js +1 -1
- package/lib/projects/awscdk-typescript-app.generated.js +1 -1
- package/lib/projects/jsii.generated.js +1 -1
- package/lib/projects/typescript.generated.js +1 -1
- package/node_modules/@jsii/spec/LICENSE +202 -0
- package/node_modules/@jsii/spec/NOTICE +2 -0
- package/node_modules/@jsii/spec/README.md +13 -0
- package/node_modules/@jsii/spec/jest.config.mjs +9 -0
- package/node_modules/@jsii/spec/lib/assembly-utils.d.ts +59 -0
- package/node_modules/@jsii/spec/lib/assembly-utils.js +158 -0
- package/node_modules/@jsii/spec/lib/assembly.d.ts +920 -0
- package/node_modules/@jsii/spec/lib/assembly.js +203 -0
- package/node_modules/@jsii/spec/lib/configuration.d.ts +147 -0
- package/node_modules/@jsii/spec/lib/configuration.js +3 -0
- package/node_modules/@jsii/spec/lib/index.d.ts +7 -0
- package/node_modules/@jsii/spec/lib/index.js +23 -0
- package/node_modules/@jsii/spec/lib/name-tree.d.ts +60 -0
- package/node_modules/@jsii/spec/lib/name-tree.js +84 -0
- package/node_modules/@jsii/spec/lib/redirect.d.ts +33 -0
- package/node_modules/@jsii/spec/lib/redirect.js +46 -0
- package/node_modules/@jsii/spec/lib/validate-assembly.d.ts +4 -0
- package/node_modules/@jsii/spec/lib/validate-assembly.js +29 -0
- package/node_modules/@jsii/spec/package.json +41 -0
- package/node_modules/@jsii/spec/schema/assembly-redirect.schema.json +29 -0
- package/node_modules/@jsii/spec/schema/jsii-spec.schema.json +1110 -0
- package/node_modules/@mrgrain/jsii-struct-builder/LICENSE +202 -0
- package/node_modules/@mrgrain/jsii-struct-builder/README.md +387 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/index.d.ts +1 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/index.js +18 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/struct.d.ts +144 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/struct.js +163 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/index.d.ts +3 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/index.js +20 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/private/assembly.d.ts +2 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/private/assembly.js +76 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/private/index.d.ts +2 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/private/index.js +19 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/private/utils.d.ts +2 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/private/utils.js +14 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/index.d.ts +2 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/index.js +19 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/projen-struct.d.ts +90 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/projen-struct.js +112 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/ts-interface.d.ts +15 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/ts-interface.js +18 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/index.d.ts +1 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/index.js +18 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/typescript.d.ts +53 -0
- package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/typescript.js +194 -0
- package/node_modules/@mrgrain/jsii-struct-builder/package.json +116 -0
- package/node_modules/ajv/.runkit_example.js +23 -0
- package/node_modules/ajv/LICENSE +22 -0
- package/node_modules/ajv/README.md +207 -0
- package/node_modules/ajv/dist/2019.d.ts +19 -0
- package/node_modules/ajv/dist/2019.js +61 -0
- package/node_modules/ajv/dist/2019.js.map +1 -0
- package/node_modules/ajv/dist/2020.d.ts +19 -0
- package/node_modules/ajv/dist/2020.js +55 -0
- package/node_modules/ajv/dist/2020.js.map +1 -0
- package/node_modules/ajv/dist/ajv.d.ts +18 -0
- package/node_modules/ajv/dist/ajv.js +50 -0
- package/node_modules/ajv/dist/ajv.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
- package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
- package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
- package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
- package/node_modules/ajv/dist/compile/errors.js +123 -0
- package/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/node_modules/ajv/dist/compile/index.d.ts +80 -0
- package/node_modules/ajv/dist/compile/index.js +242 -0
- package/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js +229 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
- package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
- package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
- package/node_modules/ajv/dist/compile/names.d.ts +20 -0
- package/node_modules/ajv/dist/compile/names.js +28 -0
- package/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
- package/node_modules/ajv/dist/compile/ref_error.js +12 -0
- package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
- package/node_modules/ajv/dist/compile/resolve.js +155 -0
- package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
- package/node_modules/ajv/dist/compile/rules.js +26 -0
- package/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/node_modules/ajv/dist/compile/util.d.ts +40 -0
- package/node_modules/ajv/dist/compile/util.js +178 -0
- package/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
- package/node_modules/ajv/dist/compile/validate/index.js +520 -0
- package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/node_modules/ajv/dist/core.d.ts +173 -0
- package/node_modules/ajv/dist/core.js +618 -0
- package/node_modules/ajv/dist/core.js.map +1 -0
- package/node_modules/ajv/dist/jtd.d.ts +47 -0
- package/node_modules/ajv/dist/jtd.js +72 -0
- package/node_modules/ajv/dist/jtd.js.map +1 -0
- package/node_modules/ajv/dist/refs/data.json +13 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/equal.js +7 -0
- package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
- package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
- package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
- package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/quote.js +30 -0
- package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
- package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/re2.js +6 -0
- package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
- package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
- package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
- package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/uri.js +6 -0
- package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
- package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
- package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
- package/node_modules/ajv/dist/standalone/index.js +90 -0
- package/node_modules/ajv/dist/standalone/index.js.map +1 -0
- package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
- package/node_modules/ajv/dist/standalone/instance.js +35 -0
- package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
- package/node_modules/ajv/dist/types/index.d.ts +183 -0
- package/node_modules/ajv/dist/types/index.js +3 -0
- package/node_modules/ajv/dist/types/index.js.map +1 -0
- package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
- package/node_modules/ajv/dist/types/json-schema.js +3 -0
- package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
- package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
- package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
- package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
- package/node_modules/ajv/dist/vocabularies/code.js +131 -0
- package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
- package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/next.js +8 -0
- package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/node_modules/ajv/lib/2019.ts +81 -0
- package/node_modules/ajv/lib/2020.ts +75 -0
- package/node_modules/ajv/lib/ajv.ts +70 -0
- package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
- package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
- package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
- package/node_modules/ajv/lib/compile/errors.ts +184 -0
- package/node_modules/ajv/lib/compile/index.ts +324 -0
- package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
- package/node_modules/ajv/lib/compile/jtd/serialize.ts +266 -0
- package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
- package/node_modules/ajv/lib/compile/names.ts +27 -0
- package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
- package/node_modules/ajv/lib/compile/resolve.ts +149 -0
- package/node_modules/ajv/lib/compile/rules.ts +50 -0
- package/node_modules/ajv/lib/compile/util.ts +213 -0
- package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
- package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
- package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
- package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
- package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
- package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
- package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
- package/node_modules/ajv/lib/core.ts +891 -0
- package/node_modules/ajv/lib/jtd.ts +132 -0
- package/node_modules/ajv/lib/refs/data.json +13 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
- package/node_modules/ajv/lib/runtime/equal.ts +7 -0
- package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
- package/node_modules/ajv/lib/runtime/quote.ts +31 -0
- package/node_modules/ajv/lib/runtime/re2.ts +6 -0
- package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
- package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
- package/node_modules/ajv/lib/runtime/uri.ts +6 -0
- package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
- package/node_modules/ajv/lib/standalone/index.ts +100 -0
- package/node_modules/ajv/lib/standalone/instance.ts +36 -0
- package/node_modules/ajv/lib/types/index.ts +244 -0
- package/node_modules/ajv/lib/types/json-schema.ts +187 -0
- package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
- package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
- package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
- package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
- package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
- package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
- package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
- package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
- package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
- package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
- package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
- package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
- package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
- package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
- package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
- package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
- package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
- package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
- package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
- package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
- package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
- package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
- package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
- package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
- package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
- package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
- package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
- package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
- package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
- package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
- package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +28 -0
- package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
- package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
- package/node_modules/ajv/package.json +126 -0
- package/node_modules/fast-deep-equal/LICENSE +21 -0
- package/node_modules/fast-deep-equal/README.md +96 -0
- package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/index.js +72 -0
- package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/react.js +79 -0
- package/node_modules/fast-deep-equal/index.d.ts +4 -0
- package/node_modules/fast-deep-equal/index.js +46 -0
- package/node_modules/fast-deep-equal/package.json +61 -0
- package/node_modules/fast-deep-equal/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/react.js +53 -0
- package/node_modules/fast-uri/.gitattributes +2 -0
- package/node_modules/fast-uri/.github/.stale.yml +21 -0
- package/node_modules/fast-uri/.github/dependabot.yml +13 -0
- package/node_modules/fast-uri/.github/tests_checker.yml +8 -0
- package/node_modules/fast-uri/.github/workflows/ci.yml +101 -0
- package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
- package/node_modules/fast-uri/LICENSE +32 -0
- package/node_modules/fast-uri/README.md +143 -0
- package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
- package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
- package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
- package/node_modules/fast-uri/benchmark/package.json +17 -0
- package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
- package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
- package/node_modules/fast-uri/eslint.config.js +6 -0
- package/node_modules/fast-uri/index.js +340 -0
- package/node_modules/fast-uri/lib/schemes.js +267 -0
- package/node_modules/fast-uri/lib/utils.js +336 -0
- package/node_modules/fast-uri/package.json +69 -0
- package/node_modules/fast-uri/test/ajv.test.js +43 -0
- package/node_modules/fast-uri/test/equal.test.js +108 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
- package/node_modules/fast-uri/test/parse.test.js +318 -0
- package/node_modules/fast-uri/test/resolve.test.js +78 -0
- package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
- package/node_modules/fast-uri/test/serialize.test.js +151 -0
- package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
- package/node_modules/fast-uri/test/uri-js.test.js +912 -0
- package/node_modules/fast-uri/test/util.test.js +38 -0
- package/node_modules/fast-uri/tsconfig.json +9 -0
- package/node_modules/fast-uri/types/index.d.ts +60 -0
- package/node_modules/fast-uri/types/index.test-d.ts +17 -0
- package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
- package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
- package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
- package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
- package/node_modules/json-schema-traverse/LICENSE +21 -0
- package/node_modules/json-schema-traverse/README.md +95 -0
- package/node_modules/json-schema-traverse/index.d.ts +40 -0
- package/node_modules/json-schema-traverse/index.js +93 -0
- package/node_modules/json-schema-traverse/package.json +43 -0
- package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
- package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
- package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
- package/node_modules/require-from-string/index.js +34 -0
- package/node_modules/require-from-string/license +21 -0
- package/node_modules/require-from-string/package.json +28 -0
- package/node_modules/require-from-string/readme.md +56 -0
- package/package.json +3 -2
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import {URIComponent} from "fast-uri"
|
|
2
|
+
import type {CodeGen, Code, Name, ScopeValueSets, ValueScopeName} from "../compile/codegen"
|
|
3
|
+
import type {SchemaEnv, SchemaCxt, SchemaObjCxt} from "../compile"
|
|
4
|
+
import type {JSONType} from "../compile/rules"
|
|
5
|
+
import type {KeywordCxt} from "../compile/validate"
|
|
6
|
+
import type Ajv from "../core"
|
|
7
|
+
|
|
8
|
+
interface _SchemaObject {
|
|
9
|
+
id?: string
|
|
10
|
+
$id?: string
|
|
11
|
+
$schema?: string
|
|
12
|
+
[x: string]: any // TODO
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface SchemaObject extends _SchemaObject {
|
|
16
|
+
id?: string
|
|
17
|
+
$id?: string
|
|
18
|
+
$schema?: string
|
|
19
|
+
$async?: false
|
|
20
|
+
[x: string]: any // TODO
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface AsyncSchema extends _SchemaObject {
|
|
24
|
+
$async: true
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type AnySchemaObject = SchemaObject | AsyncSchema
|
|
28
|
+
|
|
29
|
+
export type Schema = SchemaObject | boolean
|
|
30
|
+
|
|
31
|
+
export type AnySchema = Schema | AsyncSchema
|
|
32
|
+
|
|
33
|
+
export type SchemaMap = {[Key in string]?: AnySchema}
|
|
34
|
+
|
|
35
|
+
export interface SourceCode {
|
|
36
|
+
validateName: ValueScopeName
|
|
37
|
+
validateCode: string
|
|
38
|
+
scopeValues: ScopeValueSets
|
|
39
|
+
evaluated?: Code
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface DataValidationCxt<T extends string | number = string | number> {
|
|
43
|
+
instancePath: string
|
|
44
|
+
parentData: {[K in T]: any} // object or array
|
|
45
|
+
parentDataProperty: T // string or number
|
|
46
|
+
rootData: Record<string, any> | any[]
|
|
47
|
+
dynamicAnchors: {[Ref in string]?: ValidateFunction}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface ValidateFunction<T = unknown> {
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
|
|
52
|
+
(this: Ajv | any, data: any, dataCxt?: DataValidationCxt): data is T
|
|
53
|
+
errors?: null | ErrorObject[]
|
|
54
|
+
evaluated?: Evaluated
|
|
55
|
+
schema: AnySchema
|
|
56
|
+
schemaEnv: SchemaEnv
|
|
57
|
+
source?: SourceCode
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface JTDParser<T = unknown> {
|
|
61
|
+
(json: string): T | undefined
|
|
62
|
+
message?: string
|
|
63
|
+
position?: number
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export type EvaluatedProperties = {[K in string]?: true} | true
|
|
67
|
+
|
|
68
|
+
export type EvaluatedItems = number | true
|
|
69
|
+
|
|
70
|
+
export interface Evaluated {
|
|
71
|
+
// determined at compile time if staticProps/Items is true
|
|
72
|
+
props?: EvaluatedProperties
|
|
73
|
+
items?: EvaluatedItems
|
|
74
|
+
// whether props/items determined at compile time
|
|
75
|
+
dynamicProps: boolean
|
|
76
|
+
dynamicItems: boolean
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface AsyncValidateFunction<T = unknown> extends ValidateFunction<T> {
|
|
80
|
+
(...args: Parameters<ValidateFunction<T>>): Promise<T>
|
|
81
|
+
$async: true
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export type AnyValidateFunction<T = any> = ValidateFunction<T> | AsyncValidateFunction<T>
|
|
85
|
+
|
|
86
|
+
export interface ErrorObject<K extends string = string, P = Record<string, any>, S = unknown> {
|
|
87
|
+
keyword: K
|
|
88
|
+
instancePath: string
|
|
89
|
+
schemaPath: string
|
|
90
|
+
params: P
|
|
91
|
+
// Added to validation errors of "propertyNames" keyword schema
|
|
92
|
+
propertyName?: string
|
|
93
|
+
// Excluded if option `messages` set to false.
|
|
94
|
+
message?: string
|
|
95
|
+
// These are added with the `verbose` option.
|
|
96
|
+
schema?: S
|
|
97
|
+
parentSchema?: AnySchemaObject
|
|
98
|
+
data?: unknown
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export type ErrorNoParams<K extends string, S = unknown> = ErrorObject<K, Record<string, never>, S>
|
|
102
|
+
|
|
103
|
+
interface _KeywordDef {
|
|
104
|
+
keyword: string | string[]
|
|
105
|
+
type?: JSONType | JSONType[] // data types that keyword applies to
|
|
106
|
+
schemaType?: JSONType | JSONType[] // allowed type(s) of keyword value in the schema
|
|
107
|
+
allowUndefined?: boolean // used for keywords that can be invoked by other keywords, not being present in the schema
|
|
108
|
+
$data?: boolean // keyword supports [$data reference](../../docs/guide/combining-schemas.md#data-reference)
|
|
109
|
+
implements?: string[] // other schema keywords that this keyword implements
|
|
110
|
+
before?: string // keyword should be executed before this keyword (should be applicable to the same type)
|
|
111
|
+
post?: boolean // keyword should be executed after other keywords without post flag
|
|
112
|
+
metaSchema?: AnySchemaObject // meta-schema for keyword schema value - it is better to use schemaType where applicable
|
|
113
|
+
validateSchema?: AnyValidateFunction // compiled keyword metaSchema - should not be passed
|
|
114
|
+
dependencies?: string[] // keywords that must be present in the same schema
|
|
115
|
+
error?: KeywordErrorDefinition
|
|
116
|
+
$dataError?: KeywordErrorDefinition
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export interface CodeKeywordDefinition extends _KeywordDef {
|
|
120
|
+
code: (cxt: KeywordCxt, ruleType?: string) => void
|
|
121
|
+
trackErrors?: boolean
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export type MacroKeywordFunc = (
|
|
125
|
+
schema: any,
|
|
126
|
+
parentSchema: AnySchemaObject,
|
|
127
|
+
it: SchemaCxt
|
|
128
|
+
) => AnySchema
|
|
129
|
+
|
|
130
|
+
export type CompileKeywordFunc = (
|
|
131
|
+
schema: any,
|
|
132
|
+
parentSchema: AnySchemaObject,
|
|
133
|
+
it: SchemaObjCxt
|
|
134
|
+
) => DataValidateFunction
|
|
135
|
+
|
|
136
|
+
export interface DataValidateFunction {
|
|
137
|
+
(...args: Parameters<ValidateFunction>): boolean | Promise<any>
|
|
138
|
+
errors?: Partial<ErrorObject>[]
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface SchemaValidateFunction {
|
|
142
|
+
(
|
|
143
|
+
schema: any,
|
|
144
|
+
data: any,
|
|
145
|
+
parentSchema?: AnySchemaObject,
|
|
146
|
+
dataCxt?: DataValidationCxt
|
|
147
|
+
): boolean | Promise<any>
|
|
148
|
+
errors?: Partial<ErrorObject>[]
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface FuncKeywordDefinition extends _KeywordDef {
|
|
152
|
+
validate?: SchemaValidateFunction | DataValidateFunction
|
|
153
|
+
compile?: CompileKeywordFunc
|
|
154
|
+
// schema: false makes validate not to expect schema (DataValidateFunction)
|
|
155
|
+
schema?: boolean // requires "validate"
|
|
156
|
+
modifying?: boolean
|
|
157
|
+
async?: boolean
|
|
158
|
+
valid?: boolean
|
|
159
|
+
errors?: boolean | "full"
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface MacroKeywordDefinition extends FuncKeywordDefinition {
|
|
163
|
+
macro: MacroKeywordFunc
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export type KeywordDefinition =
|
|
167
|
+
| CodeKeywordDefinition
|
|
168
|
+
| FuncKeywordDefinition
|
|
169
|
+
| MacroKeywordDefinition
|
|
170
|
+
|
|
171
|
+
export type AddedKeywordDefinition = KeywordDefinition & {
|
|
172
|
+
type: JSONType[]
|
|
173
|
+
schemaType: JSONType[]
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface KeywordErrorDefinition {
|
|
177
|
+
message: string | Code | ((cxt: KeywordErrorCxt) => string | Code)
|
|
178
|
+
params?: Code | ((cxt: KeywordErrorCxt) => Code)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export type Vocabulary = (KeywordDefinition | string)[]
|
|
182
|
+
|
|
183
|
+
export interface KeywordErrorCxt {
|
|
184
|
+
gen: CodeGen
|
|
185
|
+
keyword: string
|
|
186
|
+
data: Name
|
|
187
|
+
$data?: string | false
|
|
188
|
+
schema: any // TODO
|
|
189
|
+
parentSchema?: AnySchemaObject
|
|
190
|
+
schemaCode: Code | number | boolean
|
|
191
|
+
schemaValue: Code | number | boolean
|
|
192
|
+
schemaType?: JSONType[]
|
|
193
|
+
errsCount?: Name
|
|
194
|
+
params: KeywordCxtParams
|
|
195
|
+
it: SchemaCxt
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export type KeywordCxtParams = {[P in string]?: Code | string | number}
|
|
199
|
+
|
|
200
|
+
export type FormatValidator<T extends string | number> = (data: T) => boolean
|
|
201
|
+
|
|
202
|
+
export type FormatCompare<T extends string | number> = (data1: T, data2: T) => number | undefined
|
|
203
|
+
|
|
204
|
+
export type AsyncFormatValidator<T extends string | number> = (data: T) => Promise<boolean>
|
|
205
|
+
|
|
206
|
+
export interface FormatDefinition<T extends string | number> {
|
|
207
|
+
type?: T extends string ? "string" | undefined : "number"
|
|
208
|
+
validate: FormatValidator<T> | (T extends string ? string | RegExp : never)
|
|
209
|
+
async?: false | undefined
|
|
210
|
+
compare?: FormatCompare<T>
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export interface AsyncFormatDefinition<T extends string | number> {
|
|
214
|
+
type?: T extends string ? "string" | undefined : "number"
|
|
215
|
+
validate: AsyncFormatValidator<T>
|
|
216
|
+
async: true
|
|
217
|
+
compare?: FormatCompare<T>
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export type AddedFormat =
|
|
221
|
+
| true
|
|
222
|
+
| RegExp
|
|
223
|
+
| FormatValidator<string>
|
|
224
|
+
| FormatDefinition<string>
|
|
225
|
+
| FormatDefinition<number>
|
|
226
|
+
| AsyncFormatDefinition<string>
|
|
227
|
+
| AsyncFormatDefinition<number>
|
|
228
|
+
|
|
229
|
+
export type Format = AddedFormat | string
|
|
230
|
+
|
|
231
|
+
export interface RegExpEngine {
|
|
232
|
+
(pattern: string, u: string): RegExpLike
|
|
233
|
+
code: string
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface RegExpLike {
|
|
237
|
+
test: (s: string) => boolean
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export interface UriResolver {
|
|
241
|
+
parse(uri: string): URIComponent
|
|
242
|
+
resolve(base: string, path: string): string
|
|
243
|
+
serialize(component: URIComponent): string
|
|
244
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-empty-interface */
|
|
2
|
+
type StrictNullChecksWrapper<Name extends string, Type> = undefined extends null
|
|
3
|
+
? `strictNullChecks must be true in tsconfig to use ${Name}`
|
|
4
|
+
: Type
|
|
5
|
+
|
|
6
|
+
type UnionToIntersection<U> = (U extends any ? (_: U) => void : never) extends (_: infer I) => void
|
|
7
|
+
? I
|
|
8
|
+
: never
|
|
9
|
+
|
|
10
|
+
export type SomeJSONSchema = UncheckedJSONSchemaType<Known, true>
|
|
11
|
+
|
|
12
|
+
type UncheckedPartialSchema<T> = Partial<UncheckedJSONSchemaType<T, true>>
|
|
13
|
+
|
|
14
|
+
export type PartialSchema<T> = StrictNullChecksWrapper<"PartialSchema", UncheckedPartialSchema<T>>
|
|
15
|
+
|
|
16
|
+
type JSONType<T extends string, IsPartial extends boolean> = IsPartial extends true
|
|
17
|
+
? T | undefined
|
|
18
|
+
: T
|
|
19
|
+
|
|
20
|
+
interface NumberKeywords {
|
|
21
|
+
minimum?: number
|
|
22
|
+
maximum?: number
|
|
23
|
+
exclusiveMinimum?: number
|
|
24
|
+
exclusiveMaximum?: number
|
|
25
|
+
multipleOf?: number
|
|
26
|
+
format?: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface StringKeywords {
|
|
30
|
+
minLength?: number
|
|
31
|
+
maxLength?: number
|
|
32
|
+
pattern?: string
|
|
33
|
+
format?: string
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type UncheckedJSONSchemaType<T, IsPartial extends boolean> = (
|
|
37
|
+
| // these two unions allow arbitrary unions of types
|
|
38
|
+
{
|
|
39
|
+
anyOf: readonly UncheckedJSONSchemaType<T, IsPartial>[]
|
|
40
|
+
}
|
|
41
|
+
| {
|
|
42
|
+
oneOf: readonly UncheckedJSONSchemaType<T, IsPartial>[]
|
|
43
|
+
}
|
|
44
|
+
// this union allows for { type: (primitive)[] } style schemas
|
|
45
|
+
| ({
|
|
46
|
+
type: readonly (T extends number
|
|
47
|
+
? JSONType<"number" | "integer", IsPartial>
|
|
48
|
+
: T extends string
|
|
49
|
+
? JSONType<"string", IsPartial>
|
|
50
|
+
: T extends boolean
|
|
51
|
+
? JSONType<"boolean", IsPartial>
|
|
52
|
+
: never)[]
|
|
53
|
+
} & UnionToIntersection<
|
|
54
|
+
T extends number
|
|
55
|
+
? NumberKeywords
|
|
56
|
+
: T extends string
|
|
57
|
+
? StringKeywords
|
|
58
|
+
: T extends boolean
|
|
59
|
+
? // eslint-disable-next-line @typescript-eslint/ban-types
|
|
60
|
+
{}
|
|
61
|
+
: never
|
|
62
|
+
>)
|
|
63
|
+
// this covers "normal" types; it's last so typescript looks to it first for errors
|
|
64
|
+
| ((T extends number
|
|
65
|
+
? {
|
|
66
|
+
type: JSONType<"number" | "integer", IsPartial>
|
|
67
|
+
} & NumberKeywords
|
|
68
|
+
: T extends string
|
|
69
|
+
? {
|
|
70
|
+
type: JSONType<"string", IsPartial>
|
|
71
|
+
} & StringKeywords
|
|
72
|
+
: T extends boolean
|
|
73
|
+
? {
|
|
74
|
+
type: JSONType<"boolean", IsPartial>
|
|
75
|
+
}
|
|
76
|
+
: T extends readonly [any, ...any[]]
|
|
77
|
+
? {
|
|
78
|
+
// JSON AnySchema for tuple
|
|
79
|
+
type: JSONType<"array", IsPartial>
|
|
80
|
+
items: {
|
|
81
|
+
readonly [K in keyof T]-?: UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>
|
|
82
|
+
} & {length: T["length"]}
|
|
83
|
+
minItems: T["length"]
|
|
84
|
+
} & ({maxItems: T["length"]} | {additionalItems: false})
|
|
85
|
+
: T extends readonly any[]
|
|
86
|
+
? {
|
|
87
|
+
type: JSONType<"array", IsPartial>
|
|
88
|
+
items: UncheckedJSONSchemaType<T[0], false>
|
|
89
|
+
contains?: UncheckedPartialSchema<T[0]>
|
|
90
|
+
minItems?: number
|
|
91
|
+
maxItems?: number
|
|
92
|
+
minContains?: number
|
|
93
|
+
maxContains?: number
|
|
94
|
+
uniqueItems?: true
|
|
95
|
+
additionalItems?: never
|
|
96
|
+
}
|
|
97
|
+
: T extends Record<string, any>
|
|
98
|
+
? {
|
|
99
|
+
// JSON AnySchema for records and dictionaries
|
|
100
|
+
// "required" is not optional because it is often forgotten
|
|
101
|
+
// "properties" are optional for more concise dictionary schemas
|
|
102
|
+
// "patternProperties" and can be only used with interfaces that have string index
|
|
103
|
+
type: JSONType<"object", IsPartial>
|
|
104
|
+
additionalProperties?: boolean | UncheckedJSONSchemaType<T[string], false>
|
|
105
|
+
unevaluatedProperties?: boolean | UncheckedJSONSchemaType<T[string], false>
|
|
106
|
+
properties?: IsPartial extends true
|
|
107
|
+
? Partial<UncheckedPropertiesSchema<T>>
|
|
108
|
+
: UncheckedPropertiesSchema<T>
|
|
109
|
+
patternProperties?: Record<string, UncheckedJSONSchemaType<T[string], false>>
|
|
110
|
+
propertyNames?: Omit<UncheckedJSONSchemaType<string, false>, "type"> & {type?: "string"}
|
|
111
|
+
dependencies?: {[K in keyof T]?: readonly (keyof T)[] | UncheckedPartialSchema<T>}
|
|
112
|
+
dependentRequired?: {[K in keyof T]?: readonly (keyof T)[]}
|
|
113
|
+
dependentSchemas?: {[K in keyof T]?: UncheckedPartialSchema<T>}
|
|
114
|
+
minProperties?: number
|
|
115
|
+
maxProperties?: number
|
|
116
|
+
} & (IsPartial extends true // "required" is not necessary if it's a non-partial type with no required keys // are listed it only asserts that optional cannot be listed. // "required" type does not guarantee that all required properties
|
|
117
|
+
? {required: readonly (keyof T)[]}
|
|
118
|
+
: [UncheckedRequiredMembers<T>] extends [never]
|
|
119
|
+
? {required?: readonly UncheckedRequiredMembers<T>[]}
|
|
120
|
+
: {required: readonly UncheckedRequiredMembers<T>[]})
|
|
121
|
+
: T extends null
|
|
122
|
+
? {
|
|
123
|
+
type: JSONType<"null", IsPartial>
|
|
124
|
+
nullable: true
|
|
125
|
+
}
|
|
126
|
+
: never) & {
|
|
127
|
+
allOf?: readonly UncheckedPartialSchema<T>[]
|
|
128
|
+
anyOf?: readonly UncheckedPartialSchema<T>[]
|
|
129
|
+
oneOf?: readonly UncheckedPartialSchema<T>[]
|
|
130
|
+
if?: UncheckedPartialSchema<T>
|
|
131
|
+
then?: UncheckedPartialSchema<T>
|
|
132
|
+
else?: UncheckedPartialSchema<T>
|
|
133
|
+
not?: UncheckedPartialSchema<T>
|
|
134
|
+
})
|
|
135
|
+
) & {
|
|
136
|
+
[keyword: string]: any
|
|
137
|
+
$id?: string
|
|
138
|
+
$ref?: string
|
|
139
|
+
$defs?: Record<string, UncheckedJSONSchemaType<Known, true>>
|
|
140
|
+
definitions?: Record<string, UncheckedJSONSchemaType<Known, true>>
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export type JSONSchemaType<T> = StrictNullChecksWrapper<
|
|
144
|
+
"JSONSchemaType",
|
|
145
|
+
UncheckedJSONSchemaType<T, false>
|
|
146
|
+
>
|
|
147
|
+
|
|
148
|
+
type Known =
|
|
149
|
+
| {[key: string]: Known}
|
|
150
|
+
| [Known, ...Known[]]
|
|
151
|
+
| Known[]
|
|
152
|
+
| number
|
|
153
|
+
| string
|
|
154
|
+
| boolean
|
|
155
|
+
| null
|
|
156
|
+
|
|
157
|
+
type UncheckedPropertiesSchema<T> = {
|
|
158
|
+
[K in keyof T]-?: (UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>) | {$ref: string}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export type PropertiesSchema<T> = StrictNullChecksWrapper<
|
|
162
|
+
"PropertiesSchema",
|
|
163
|
+
UncheckedPropertiesSchema<T>
|
|
164
|
+
>
|
|
165
|
+
|
|
166
|
+
type UncheckedRequiredMembers<T> = {
|
|
167
|
+
[K in keyof T]-?: undefined extends T[K] ? never : K
|
|
168
|
+
}[keyof T]
|
|
169
|
+
|
|
170
|
+
export type RequiredMembers<T> = StrictNullChecksWrapper<
|
|
171
|
+
"RequiredMembers",
|
|
172
|
+
UncheckedRequiredMembers<T>
|
|
173
|
+
>
|
|
174
|
+
|
|
175
|
+
type Nullable<T> = undefined extends T
|
|
176
|
+
? {
|
|
177
|
+
nullable: true
|
|
178
|
+
const?: null // any non-null value would fail `const: null`, `null` would fail any other value in const
|
|
179
|
+
enum?: readonly (T | null)[] // `null` must be explicitly included in "enum" for `null` to pass
|
|
180
|
+
default?: T | null
|
|
181
|
+
}
|
|
182
|
+
: {
|
|
183
|
+
nullable?: false
|
|
184
|
+
const?: T
|
|
185
|
+
enum?: readonly T[]
|
|
186
|
+
default?: T
|
|
187
|
+
}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/** numeric strings */
|
|
2
|
+
type NumberType = "float32" | "float64" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32"
|
|
3
|
+
|
|
4
|
+
/** string strings */
|
|
5
|
+
type StringType = "string" | "timestamp"
|
|
6
|
+
|
|
7
|
+
/** Generic JTD Schema without inference of the represented type */
|
|
8
|
+
export type SomeJTDSchemaType = (
|
|
9
|
+
| // ref
|
|
10
|
+
{ref: string}
|
|
11
|
+
// primitives
|
|
12
|
+
| {type: NumberType | StringType | "boolean"}
|
|
13
|
+
// enum
|
|
14
|
+
| {enum: string[]}
|
|
15
|
+
// elements
|
|
16
|
+
| {elements: SomeJTDSchemaType}
|
|
17
|
+
// values
|
|
18
|
+
| {values: SomeJTDSchemaType}
|
|
19
|
+
// properties
|
|
20
|
+
| {
|
|
21
|
+
properties: Record<string, SomeJTDSchemaType>
|
|
22
|
+
optionalProperties?: Record<string, SomeJTDSchemaType>
|
|
23
|
+
additionalProperties?: boolean
|
|
24
|
+
}
|
|
25
|
+
| {
|
|
26
|
+
properties?: Record<string, SomeJTDSchemaType>
|
|
27
|
+
optionalProperties: Record<string, SomeJTDSchemaType>
|
|
28
|
+
additionalProperties?: boolean
|
|
29
|
+
}
|
|
30
|
+
// discriminator
|
|
31
|
+
| {discriminator: string; mapping: Record<string, SomeJTDSchemaType>}
|
|
32
|
+
// empty
|
|
33
|
+
// NOTE see the end of
|
|
34
|
+
// https://github.com/typescript-eslint/typescript-eslint/issues/2063#issuecomment-675156492
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
36
|
+
| {}
|
|
37
|
+
) & {
|
|
38
|
+
nullable?: boolean
|
|
39
|
+
metadata?: Record<string, unknown>
|
|
40
|
+
definitions?: Record<string, SomeJTDSchemaType>
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** required keys of an object, not undefined */
|
|
44
|
+
type RequiredKeys<T> = {
|
|
45
|
+
[K in keyof T]-?: undefined extends T[K] ? never : K
|
|
46
|
+
}[keyof T]
|
|
47
|
+
|
|
48
|
+
/** optional or undifined-able keys of an object */
|
|
49
|
+
type OptionalKeys<T> = {
|
|
50
|
+
[K in keyof T]-?: undefined extends T[K] ? K : never
|
|
51
|
+
}[keyof T]
|
|
52
|
+
|
|
53
|
+
/** type is true if T is a union type */
|
|
54
|
+
type IsUnion_<T, U extends T = T> = false extends (
|
|
55
|
+
T extends unknown ? ([U] extends [T] ? false : true) : never
|
|
56
|
+
)
|
|
57
|
+
? false
|
|
58
|
+
: true
|
|
59
|
+
type IsUnion<T> = IsUnion_<T>
|
|
60
|
+
|
|
61
|
+
/** type is true if T is identically E */
|
|
62
|
+
type TypeEquality<T, E> = [T] extends [E] ? ([E] extends [T] ? true : false) : false
|
|
63
|
+
|
|
64
|
+
/** type is true if T or null is identically E or null*/
|
|
65
|
+
type NullTypeEquality<T, E> = TypeEquality<T | null, E | null>
|
|
66
|
+
|
|
67
|
+
/** gets only the string literals of a type or null if a type isn't a string literal */
|
|
68
|
+
type EnumString<T> = [T] extends [never]
|
|
69
|
+
? null
|
|
70
|
+
: T extends string
|
|
71
|
+
? string extends T
|
|
72
|
+
? null
|
|
73
|
+
: T
|
|
74
|
+
: null
|
|
75
|
+
|
|
76
|
+
/** true if type is a union of string literals */
|
|
77
|
+
type IsEnum<T> = null extends EnumString<T> ? false : true
|
|
78
|
+
|
|
79
|
+
/** true only if all types are array types (not tuples) */
|
|
80
|
+
// NOTE relies on the fact that tuples don't have an index at 0.5, but arrays
|
|
81
|
+
// have an index at every number
|
|
82
|
+
type IsElements<T> = false extends IsUnion<T>
|
|
83
|
+
? [T] extends [readonly unknown[]]
|
|
84
|
+
? undefined extends T[0.5]
|
|
85
|
+
? false
|
|
86
|
+
: true
|
|
87
|
+
: false
|
|
88
|
+
: false
|
|
89
|
+
|
|
90
|
+
/** true if the the type is a values type */
|
|
91
|
+
type IsValues<T> = false extends IsUnion<T> ? TypeEquality<keyof T, string> : false
|
|
92
|
+
|
|
93
|
+
/** true if type is a properties type and Union is false, or type is a discriminator type and Union is true */
|
|
94
|
+
type IsRecord<T, Union extends boolean> = Union extends IsUnion<T>
|
|
95
|
+
? null extends EnumString<keyof T>
|
|
96
|
+
? false
|
|
97
|
+
: true
|
|
98
|
+
: false
|
|
99
|
+
|
|
100
|
+
/** true if type represents an empty record */
|
|
101
|
+
type IsEmptyRecord<T> = [T] extends [Record<string, never>]
|
|
102
|
+
? [T] extends [never]
|
|
103
|
+
? false
|
|
104
|
+
: true
|
|
105
|
+
: false
|
|
106
|
+
|
|
107
|
+
/** actual schema */
|
|
108
|
+
export type JTDSchemaType<T, D extends Record<string, unknown> = Record<string, never>> = (
|
|
109
|
+
| // refs - where null wasn't specified, must match exactly
|
|
110
|
+
(null extends EnumString<keyof D>
|
|
111
|
+
? never
|
|
112
|
+
:
|
|
113
|
+
| ({[K in keyof D]: [T] extends [D[K]] ? {ref: K} : never}[keyof D] & {nullable?: false})
|
|
114
|
+
// nulled refs - if ref is nullable and nullable is specified, then it can
|
|
115
|
+
// match either null or non-null definitions
|
|
116
|
+
| (null extends T
|
|
117
|
+
? {
|
|
118
|
+
[K in keyof D]: [Exclude<T, null>] extends [Exclude<D[K], null>]
|
|
119
|
+
? {ref: K}
|
|
120
|
+
: never
|
|
121
|
+
}[keyof D] & {nullable: true}
|
|
122
|
+
: never))
|
|
123
|
+
// empty - empty schemas also treat nullable differently in that it's now fully ignored
|
|
124
|
+
| (unknown extends T ? {nullable?: boolean} : never)
|
|
125
|
+
// all other types // numbers - only accepts the type number
|
|
126
|
+
| ((true extends NullTypeEquality<T, number>
|
|
127
|
+
? {type: NumberType}
|
|
128
|
+
: // booleans - accepts the type boolean
|
|
129
|
+
true extends NullTypeEquality<T, boolean>
|
|
130
|
+
? {type: "boolean"}
|
|
131
|
+
: // strings - only accepts the type string
|
|
132
|
+
true extends NullTypeEquality<T, string>
|
|
133
|
+
? {type: StringType}
|
|
134
|
+
: // strings - only accepts the type Date
|
|
135
|
+
true extends NullTypeEquality<T, Date>
|
|
136
|
+
? {type: "timestamp"}
|
|
137
|
+
: // enums - only accepts union of string literals
|
|
138
|
+
// TODO we can't actually check that everything in the union was specified
|
|
139
|
+
true extends IsEnum<Exclude<T, null>>
|
|
140
|
+
? {enum: EnumString<Exclude<T, null>>[]}
|
|
141
|
+
: // arrays - only accepts arrays, could be array of unions to be resolved later
|
|
142
|
+
true extends IsElements<Exclude<T, null>>
|
|
143
|
+
? T extends readonly (infer E)[]
|
|
144
|
+
? {
|
|
145
|
+
elements: JTDSchemaType<E, D>
|
|
146
|
+
}
|
|
147
|
+
: never
|
|
148
|
+
: // empty properties
|
|
149
|
+
true extends IsEmptyRecord<Exclude<T, null>>
|
|
150
|
+
?
|
|
151
|
+
| {properties: Record<string, never>; optionalProperties?: Record<string, never>}
|
|
152
|
+
| {optionalProperties: Record<string, never>}
|
|
153
|
+
: // values
|
|
154
|
+
true extends IsValues<Exclude<T, null>>
|
|
155
|
+
? T extends Record<string, infer V>
|
|
156
|
+
? {
|
|
157
|
+
values: JTDSchemaType<V, D>
|
|
158
|
+
}
|
|
159
|
+
: never
|
|
160
|
+
: // properties
|
|
161
|
+
true extends IsRecord<Exclude<T, null>, false>
|
|
162
|
+
? ([RequiredKeys<Exclude<T, null>>] extends [never]
|
|
163
|
+
? {
|
|
164
|
+
properties?: Record<string, never>
|
|
165
|
+
}
|
|
166
|
+
: {
|
|
167
|
+
properties: {[K in RequiredKeys<T>]: JTDSchemaType<T[K], D>}
|
|
168
|
+
}) &
|
|
169
|
+
([OptionalKeys<Exclude<T, null>>] extends [never]
|
|
170
|
+
? {
|
|
171
|
+
optionalProperties?: Record<string, never>
|
|
172
|
+
}
|
|
173
|
+
: {
|
|
174
|
+
optionalProperties: {
|
|
175
|
+
[K in OptionalKeys<T>]: JTDSchemaType<Exclude<T[K], undefined>, D>
|
|
176
|
+
}
|
|
177
|
+
}) & {
|
|
178
|
+
additionalProperties?: boolean
|
|
179
|
+
}
|
|
180
|
+
: // discriminator
|
|
181
|
+
true extends IsRecord<Exclude<T, null>, true>
|
|
182
|
+
? {
|
|
183
|
+
[K in keyof Exclude<T, null>]-?: Exclude<T, null>[K] extends string
|
|
184
|
+
? {
|
|
185
|
+
discriminator: K
|
|
186
|
+
mapping: {
|
|
187
|
+
// TODO currently allows descriminator to be present in schema
|
|
188
|
+
[M in Exclude<T, null>[K]]: JTDSchemaType<
|
|
189
|
+
Omit<T extends Record<K, M> ? T : never, K>,
|
|
190
|
+
D
|
|
191
|
+
>
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
: never
|
|
195
|
+
}[keyof Exclude<T, null>]
|
|
196
|
+
: never) &
|
|
197
|
+
(null extends T
|
|
198
|
+
? {
|
|
199
|
+
nullable: true
|
|
200
|
+
}
|
|
201
|
+
: {nullable?: false}))
|
|
202
|
+
) & {
|
|
203
|
+
// extra properties
|
|
204
|
+
metadata?: Record<string, unknown>
|
|
205
|
+
// TODO these should only be allowed at the top level
|
|
206
|
+
definitions?: {[K in keyof D]: JTDSchemaType<D[K], D>}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
type JTDDataDef<S, D extends Record<string, unknown>> =
|
|
210
|
+
| // ref
|
|
211
|
+
(S extends {ref: string}
|
|
212
|
+
? D extends {[K in S["ref"]]: infer V}
|
|
213
|
+
? JTDDataDef<V, D>
|
|
214
|
+
: never
|
|
215
|
+
: // type
|
|
216
|
+
S extends {type: NumberType}
|
|
217
|
+
? number
|
|
218
|
+
: S extends {type: "boolean"}
|
|
219
|
+
? boolean
|
|
220
|
+
: S extends {type: "string"}
|
|
221
|
+
? string
|
|
222
|
+
: S extends {type: "timestamp"}
|
|
223
|
+
? string | Date
|
|
224
|
+
: // enum
|
|
225
|
+
S extends {enum: readonly (infer E)[]}
|
|
226
|
+
? string extends E
|
|
227
|
+
? never
|
|
228
|
+
: [E] extends [string]
|
|
229
|
+
? E
|
|
230
|
+
: never
|
|
231
|
+
: // elements
|
|
232
|
+
S extends {elements: infer E}
|
|
233
|
+
? JTDDataDef<E, D>[]
|
|
234
|
+
: // properties
|
|
235
|
+
S extends {
|
|
236
|
+
properties: Record<string, unknown>
|
|
237
|
+
optionalProperties?: Record<string, unknown>
|
|
238
|
+
additionalProperties?: boolean
|
|
239
|
+
}
|
|
240
|
+
? {-readonly [K in keyof S["properties"]]-?: JTDDataDef<S["properties"][K], D>} & {
|
|
241
|
+
-readonly [K in keyof S["optionalProperties"]]+?: JTDDataDef<
|
|
242
|
+
S["optionalProperties"][K],
|
|
243
|
+
D
|
|
244
|
+
>
|
|
245
|
+
} & ([S["additionalProperties"]] extends [true] ? Record<string, unknown> : unknown)
|
|
246
|
+
: S extends {
|
|
247
|
+
properties?: Record<string, unknown>
|
|
248
|
+
optionalProperties: Record<string, unknown>
|
|
249
|
+
additionalProperties?: boolean
|
|
250
|
+
}
|
|
251
|
+
? {-readonly [K in keyof S["properties"]]-?: JTDDataDef<S["properties"][K], D>} & {
|
|
252
|
+
-readonly [K in keyof S["optionalProperties"]]+?: JTDDataDef<
|
|
253
|
+
S["optionalProperties"][K],
|
|
254
|
+
D
|
|
255
|
+
>
|
|
256
|
+
} & ([S["additionalProperties"]] extends [true] ? Record<string, unknown> : unknown)
|
|
257
|
+
: // values
|
|
258
|
+
S extends {values: infer V}
|
|
259
|
+
? Record<string, JTDDataDef<V, D>>
|
|
260
|
+
: // discriminator
|
|
261
|
+
S extends {discriminator: infer M; mapping: Record<string, unknown>}
|
|
262
|
+
? [M] extends [string]
|
|
263
|
+
? {
|
|
264
|
+
[K in keyof S["mapping"]]: JTDDataDef<S["mapping"][K], D> & {[KM in M]: K}
|
|
265
|
+
}[keyof S["mapping"]]
|
|
266
|
+
: never
|
|
267
|
+
: // empty
|
|
268
|
+
unknown)
|
|
269
|
+
| (S extends {nullable: true} ? null : never)
|
|
270
|
+
|
|
271
|
+
export type JTDDataType<S> = S extends {definitions: Record<string, unknown>}
|
|
272
|
+
? JTDDataDef<S, S["definitions"]>
|
|
273
|
+
: JTDDataDef<S, Record<string, never>>
|