baobox 0.1.0
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/README.md +193 -0
- package/dist/compile/bun-fast-path.d.ts +14 -0
- package/dist/compile/bun-fast-path.d.ts.map +1 -0
- package/dist/compile/emit.d.ts +5 -0
- package/dist/compile/emit.d.ts.map +1 -0
- package/dist/compile/index.d.ts +57 -0
- package/dist/compile/index.d.ts.map +1 -0
- package/dist/compile/index.js +4711 -0
- package/dist/compile/index.js.map +65 -0
- package/dist/error/catalog-types.d.ts +30 -0
- package/dist/error/catalog-types.d.ts.map +1 -0
- package/dist/error/collector/advanced.d.ts +5 -0
- package/dist/error/collector/advanced.d.ts.map +1 -0
- package/dist/error/collector/collections-basic.d.ts +5 -0
- package/dist/error/collector/collections-basic.d.ts.map +1 -0
- package/dist/error/collector/collections-derived.d.ts +5 -0
- package/dist/error/collector/collections-derived.d.ts.map +1 -0
- package/dist/error/collector/collections-parameters.d.ts +5 -0
- package/dist/error/collector/collections-parameters.d.ts.map +1 -0
- package/dist/error/collector/collections.d.ts +5 -0
- package/dist/error/collector/collections.d.ts.map +1 -0
- package/dist/error/collector/primitives.d.ts +5 -0
- package/dist/error/collector/primitives.d.ts.map +1 -0
- package/dist/error/collector/shared.d.ts +6 -0
- package/dist/error/collector/shared.d.ts.map +1 -0
- package/dist/error/collector.d.ts +5 -0
- package/dist/error/collector.d.ts.map +1 -0
- package/dist/error/errors.d.ts +23 -0
- package/dist/error/errors.d.ts.map +1 -0
- package/dist/error/index.d.ts +11 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +3163 -0
- package/dist/error/index.js.map +53 -0
- package/dist/error/locales/de.d.ts +3 -0
- package/dist/error/locales/de.d.ts.map +1 -0
- package/dist/error/locales/en.d.ts +3 -0
- package/dist/error/locales/en.d.ts.map +1 -0
- package/dist/error/locales/es.d.ts +3 -0
- package/dist/error/locales/es.d.ts.map +1 -0
- package/dist/error/locales/fr.d.ts +3 -0
- package/dist/error/locales/fr.d.ts.map +1 -0
- package/dist/error/locales/ja.d.ts +3 -0
- package/dist/error/locales/ja.d.ts.map +1 -0
- package/dist/error/locales/ko.d.ts +3 -0
- package/dist/error/locales/ko.d.ts.map +1 -0
- package/dist/error/locales/pt.d.ts +3 -0
- package/dist/error/locales/pt.d.ts.map +1 -0
- package/dist/error/locales/shared.d.ts +4 -0
- package/dist/error/locales/shared.d.ts.map +1 -0
- package/dist/error/locales/zh.d.ts +4 -0
- package/dist/error/locales/zh.d.ts.map +1 -0
- package/dist/error/messages.d.ts +7 -0
- package/dist/error/messages.d.ts.map +1 -0
- package/dist/format/format.d.ts +61 -0
- package/dist/format/format.d.ts.map +1 -0
- package/dist/format/index.d.ts +5 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +1475 -0
- package/dist/format/index.js.map +29 -0
- package/dist/guard/guard.d.ts +73 -0
- package/dist/guard/guard.d.ts.map +1 -0
- package/dist/guard/index.d.ts +7 -0
- package/dist/guard/index.d.ts.map +1 -0
- package/dist/guard/index.js +342 -0
- package/dist/guard/index.js.map +11 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8938 -0
- package/dist/index.js.map +104 -0
- package/dist/locale/index.d.ts +124 -0
- package/dist/locale/index.d.ts.map +1 -0
- package/dist/locale/index.js +564 -0
- package/dist/locale/index.js.map +20 -0
- package/dist/schema/build.d.ts +32 -0
- package/dist/schema/build.d.ts.map +1 -0
- package/dist/schema/check.d.ts +6 -0
- package/dist/schema/check.d.ts.map +1 -0
- package/dist/schema/compile.d.ts +16 -0
- package/dist/schema/compile.d.ts.map +1 -0
- package/dist/schema/core-keywords.d.ts +8 -0
- package/dist/schema/core-keywords.d.ts.map +1 -0
- package/dist/schema/core.d.ts +3 -0
- package/dist/schema/core.d.ts.map +1 -0
- package/dist/schema/emitter-advanced.d.ts +6 -0
- package/dist/schema/emitter-advanced.d.ts.map +1 -0
- package/dist/schema/emitter-base.d.ts +8 -0
- package/dist/schema/emitter-base.d.ts.map +1 -0
- package/dist/schema/emitter-derived.d.ts +5 -0
- package/dist/schema/emitter-derived.d.ts.map +1 -0
- package/dist/schema/emitter-reference.d.ts +5 -0
- package/dist/schema/emitter-reference.d.ts.map +1 -0
- package/dist/schema/emitter-types.d.ts +5 -0
- package/dist/schema/emitter-types.d.ts.map +1 -0
- package/dist/schema/emitter-wrapper.d.ts +5 -0
- package/dist/schema/emitter-wrapper.d.ts.map +1 -0
- package/dist/schema/emitter.d.ts +52 -0
- package/dist/schema/emitter.d.ts.map +1 -0
- package/dist/schema/engine.d.ts +61 -0
- package/dist/schema/engine.d.ts.map +1 -0
- package/dist/schema/error-collector.d.ts +4 -0
- package/dist/schema/error-collector.d.ts.map +1 -0
- package/dist/schema/errors.d.ts +7 -0
- package/dist/schema/errors.d.ts.map +1 -0
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +3661 -0
- package/dist/schema/index.js.map +50 -0
- package/dist/schema/parse.d.ts +14 -0
- package/dist/schema/parse.d.ts.map +1 -0
- package/dist/schema/pointer.d.ts +13 -0
- package/dist/schema/pointer.d.ts.map +1 -0
- package/dist/schema/predicates.d.ts +62 -0
- package/dist/schema/predicates.d.ts.map +1 -0
- package/dist/schema/resolve.d.ts +6 -0
- package/dist/schema/resolve.d.ts.map +1 -0
- package/dist/schema/runtime-keywords.d.ts +136 -0
- package/dist/schema/runtime-keywords.d.ts.map +1 -0
- package/dist/schema/schema.d.ts +14 -0
- package/dist/schema/schema.d.ts.map +1 -0
- package/dist/schema/shared.d.ts +61 -0
- package/dist/schema/shared.d.ts.map +1 -0
- package/dist/script/generic.d.ts +3 -0
- package/dist/script/generic.d.ts.map +1 -0
- package/dist/script/index.d.ts +7 -0
- package/dist/script/index.d.ts.map +1 -0
- package/dist/script/index.js +3948 -0
- package/dist/script/index.js.map +55 -0
- package/dist/script/literals.d.ts +5 -0
- package/dist/script/literals.d.ts.map +1 -0
- package/dist/script/shared.d.ts +15 -0
- package/dist/script/shared.d.ts.map +1 -0
- package/dist/shared/bytes.d.ts +9 -0
- package/dist/shared/bytes.d.ts.map +1 -0
- package/dist/shared/format-constants.d.ts +16 -0
- package/dist/shared/format-constants.d.ts.map +1 -0
- package/dist/shared/format-validators.d.ts +13 -0
- package/dist/shared/format-validators.d.ts.map +1 -0
- package/dist/shared/locale.d.ts +43 -0
- package/dist/shared/locale.d.ts.map +1 -0
- package/dist/shared/object-utils.d.ts +21 -0
- package/dist/shared/object-utils.d.ts.map +1 -0
- package/dist/shared/regex-json.d.ts +5 -0
- package/dist/shared/regex-json.d.ts.map +1 -0
- package/dist/shared/registries.d.ts +41 -0
- package/dist/shared/registries.d.ts.map +1 -0
- package/dist/shared/runtime-context.d.ts +109 -0
- package/dist/shared/runtime-context.d.ts.map +1 -0
- package/dist/shared/runtime-guards.d.ts +7 -0
- package/dist/shared/runtime-guards.d.ts.map +1 -0
- package/dist/shared/schema-access.d.ts +34 -0
- package/dist/shared/schema-access.d.ts.map +1 -0
- package/dist/shared/utils.d.ts +9 -0
- package/dist/shared/utils.d.ts.map +1 -0
- package/dist/shared/utils.js +1321 -0
- package/dist/shared/utils.js.map +27 -0
- package/dist/standard/index.d.ts +51 -0
- package/dist/standard/index.d.ts.map +1 -0
- package/dist/standard/index.js +4551 -0
- package/dist/standard/index.js.map +66 -0
- package/dist/system/index.d.ts +5 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/system/index.js +1632 -0
- package/dist/system/index.js.map +33 -0
- package/dist/system/system.d.ts +154 -0
- package/dist/system/system.d.ts.map +1 -0
- package/dist/type/actions.d.ts +48 -0
- package/dist/type/actions.d.ts.map +1 -0
- package/dist/type/base-types.d.ts +5 -0
- package/dist/type/base-types.d.ts.map +1 -0
- package/dist/type/codec-builtins.d.ts +9 -0
- package/dist/type/codec-builtins.d.ts.map +1 -0
- package/dist/type/combinator-core.d.ts +26 -0
- package/dist/type/combinator-core.d.ts.map +1 -0
- package/dist/type/combinator-functions.d.ts +16 -0
- package/dist/type/combinator-functions.d.ts.map +1 -0
- package/dist/type/combinator-objects.d.ts +30 -0
- package/dist/type/combinator-objects.d.ts.map +1 -0
- package/dist/type/combinators.d.ts +4 -0
- package/dist/type/combinators.d.ts.map +1 -0
- package/dist/type/composite-types.d.ts +39 -0
- package/dist/type/composite-types.d.ts.map +1 -0
- package/dist/type/containers-types.d.ts +47 -0
- package/dist/type/containers-types.d.ts.map +1 -0
- package/dist/type/containers.d.ts +7 -0
- package/dist/type/containers.d.ts.map +1 -0
- package/dist/type/extends.d.ts +32 -0
- package/dist/type/extends.d.ts.map +1 -0
- package/dist/type/extensions.d.ts +86 -0
- package/dist/type/extensions.d.ts.map +1 -0
- package/dist/type/guards.d.ts +78 -0
- package/dist/type/guards.d.ts.map +1 -0
- package/dist/type/index.d.ts +29 -0
- package/dist/type/index.d.ts.map +1 -0
- package/dist/type/index.js +4049 -0
- package/dist/type/index.js.map +51 -0
- package/dist/type/instantiation.d.ts +10 -0
- package/dist/type/instantiation.d.ts.map +1 -0
- package/dist/type/kind.d.ts +76 -0
- package/dist/type/kind.d.ts.map +1 -0
- package/dist/type/narrow-types.d.ts +23 -0
- package/dist/type/narrow-types.d.ts.map +1 -0
- package/dist/type/primitives-types.d.ts +103 -0
- package/dist/type/primitives-types.d.ts.map +1 -0
- package/dist/type/primitives.d.ts +81 -0
- package/dist/type/primitives.d.ts.map +1 -0
- package/dist/type/root-constants.d.ts +65 -0
- package/dist/type/root-constants.d.ts.map +1 -0
- package/dist/type/root-cyclic.d.ts +12 -0
- package/dist/type/root-cyclic.d.ts.map +1 -0
- package/dist/type/root-deferred.d.ts +39 -0
- package/dist/type/root-deferred.d.ts.map +1 -0
- package/dist/type/root-guards.d.ts +15 -0
- package/dist/type/root-guards.d.ts.map +1 -0
- package/dist/type/root-helpers.d.ts +28 -0
- package/dist/type/root-helpers.d.ts.map +1 -0
- package/dist/type/root-instantiate.d.ts +33 -0
- package/dist/type/root-instantiate.d.ts.map +1 -0
- package/dist/type/root-shared.d.ts +14 -0
- package/dist/type/root-shared.d.ts.map +1 -0
- package/dist/type/root-template.d.ts +15 -0
- package/dist/type/root-template.d.ts.map +1 -0
- package/dist/type/schema.d.ts +10 -0
- package/dist/type/schema.d.ts.map +1 -0
- package/dist/type/static-const-types.d.ts +25 -0
- package/dist/type/static-const-types.d.ts.map +1 -0
- package/dist/type/static-shared-types.d.ts +17 -0
- package/dist/type/static-shared-types.d.ts.map +1 -0
- package/dist/type/static-types.d.ts +39 -0
- package/dist/type/static-types.d.ts.map +1 -0
- package/dist/type/string-action-types.d.ts +24 -0
- package/dist/type/string-action-types.d.ts.map +1 -0
- package/dist/type/transform-types.d.ts +54 -0
- package/dist/type/transform-types.d.ts.map +1 -0
- package/dist/type/uint8array-codec.d.ts +8 -0
- package/dist/type/uint8array-codec.d.ts.map +1 -0
- package/dist/type/wrapper-types.d.ts +71 -0
- package/dist/type/wrapper-types.d.ts.map +1 -0
- package/dist/typebox.d.ts +3 -0
- package/dist/typebox.d.ts.map +1 -0
- package/dist/typebox.js +4767 -0
- package/dist/typebox.js.map +55 -0
- package/dist/value/assert.d.ts +8 -0
- package/dist/value/assert.d.ts.map +1 -0
- package/dist/value/check-collections-derived.d.ts +6 -0
- package/dist/value/check-collections-derived.d.ts.map +1 -0
- package/dist/value/check-collections.d.ts +5 -0
- package/dist/value/check-collections.d.ts.map +1 -0
- package/dist/value/check-extensions.d.ts +3 -0
- package/dist/value/check-extensions.d.ts.map +1 -0
- package/dist/value/check-primitives.d.ts +4 -0
- package/dist/value/check-primitives.d.ts.map +1 -0
- package/dist/value/check.d.ts +13 -0
- package/dist/value/check.d.ts.map +1 -0
- package/dist/value/clean.d.ts +4 -0
- package/dist/value/clean.d.ts.map +1 -0
- package/dist/value/clone.d.ts +3 -0
- package/dist/value/clone.d.ts.map +1 -0
- package/dist/value/convert.d.ts +4 -0
- package/dist/value/convert.d.ts.map +1 -0
- package/dist/value/create.d.ts +4 -0
- package/dist/value/create.d.ts.map +1 -0
- package/dist/value/decode.d.ts +4 -0
- package/dist/value/decode.d.ts.map +1 -0
- package/dist/value/default.d.ts +4 -0
- package/dist/value/default.d.ts.map +1 -0
- package/dist/value/diff.d.ts +9 -0
- package/dist/value/diff.d.ts.map +1 -0
- package/dist/value/encode.d.ts +4 -0
- package/dist/value/encode.d.ts.map +1 -0
- package/dist/value/equal.d.ts +3 -0
- package/dist/value/equal.d.ts.map +1 -0
- package/dist/value/has-codec.d.ts +3 -0
- package/dist/value/has-codec.d.ts.map +1 -0
- package/dist/value/hash.d.ts +3 -0
- package/dist/value/hash.d.ts.map +1 -0
- package/dist/value/index.d.ts +145 -0
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/index.js +4702 -0
- package/dist/value/index.js.map +71 -0
- package/dist/value/mutate.d.ts +3 -0
- package/dist/value/mutate.d.ts.map +1 -0
- package/dist/value/parse.d.ts +13 -0
- package/dist/value/parse.d.ts.map +1 -0
- package/dist/value/patch.d.ts +4 -0
- package/dist/value/patch.d.ts.map +1 -0
- package/dist/value/pipeline.d.ts +6 -0
- package/dist/value/pipeline.d.ts.map +1 -0
- package/dist/value/pointer.d.ts +8 -0
- package/dist/value/pointer.d.ts.map +1 -0
- package/dist/value/repair.d.ts +5 -0
- package/dist/value/repair.d.ts.map +1 -0
- package/dist/value/result.d.ts +10 -0
- package/dist/value/result.d.ts.map +1 -0
- package/docs/locale-packs.md +78 -0
- package/docs/package-contract.md +89 -0
- package/docs/parity-and-extensions.md +56 -0
- package/docs/script-module-registries.md +107 -0
- package/docs/workflows.md +154 -0
- package/package.json +117 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/error/locales/shared.ts", "../src/error/locales/de.ts", "../src/error/locales/en.ts", "../src/error/locales/es.ts", "../src/error/locales/fr.ts", "../src/error/locales/ja.ts", "../src/error/locales/ko.ts", "../src/error/locales/pt.ts", "../src/error/locales/zh.ts", "../src/shared/locale.ts", "../src/locale/index.ts", "../src/shared/object-utils.ts", "../src/shared/runtime-guards.ts", "../src/shared/format-constants.ts", "../src/shared/regex-json.ts", "../src/shared/runtime-context.ts", "../src/shared/format-validators.ts", "../src/shared/registries.ts", "../src/schema/shared.ts", "../src/schema/pointer.ts", "../src/schema/resolve.ts", "../src/schema/predicates.ts", "../src/schema/core-keywords.ts", "../src/schema/core.ts", "../src/schema/engine.ts", "../src/schema/error-collector.ts", "../src/schema/runtime-keywords.ts", "../src/schema/check.ts", "../src/schema/build.ts", "../src/schema/errors.ts", "../src/schema/parse.ts", "../src/schema/compile.ts", "../src/shared/schema-access.ts", "../src/schema/emitter-base.ts", "../src/schema/emitter-derived.ts", "../src/type/instantiation.ts", "../src/schema/emitter-reference.ts", "../src/schema/emitter-wrapper.ts", "../src/schema/emitter-advanced.ts", "../src/schema/emitter.ts", "../src/schema/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { SchemaIssueParams } from '../catalog-types.js';\n\nexport function formatList(values: readonly string[] | undefined): string {\n return values === undefined ? '' : values.join(', ');\n}\n\nexport function labelFor(params: SchemaIssueParams, fallback: string): string {\n return params.label ?? fallback;\n}\n",
|
|
6
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const deDECatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `Erwartet: ${params.expected ?? 'Wert'}`\n : `Erwartet: ${params.expected ?? 'Wert'}, erhalten: ${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, 'Der Wert')} muss mindestens ${params.minimum} sein`,\n MAX_LENGTH: (params) => `${labelFor(params, 'Der Wert')} darf höchstens ${params.maximum} sein`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, 'Der Wert')} muss einem von folgenden Mustern entsprechen: ${formatList(params.patterns)}`\n : `${labelFor(params, 'Der Wert')} muss dem Muster ${params.pattern} entsprechen`,\n FORMAT: (params) => `${labelFor(params, 'Der Wert')} muss dem Format ${params.format} entsprechen`,\n MINIMUM: (params) => `${labelFor(params, 'Der Wert')} muss >= ${params.minimum} sein`,\n MAXIMUM: (params) => `${labelFor(params, 'Der Wert')} muss <= ${params.maximum} sein`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, 'Der Wert')} muss > ${params.minimum} sein`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, 'Der Wert')} muss < ${params.maximum} sein`,\n MULTIPLE_OF: (params) => `${labelFor(params, 'Der Wert')} muss ein Vielfaches von ${params.divisor} sein`,\n INVALID_CONST: (params) => `Erwartet: ${params.expectedValue}`,\n MIN_ITEMS: (params) => `${labelFor(params, 'Das Array')} muss mindestens ${params.minimum} Elemente enthalten`,\n MAX_ITEMS: (params) => `${labelFor(params, 'Das Array')} darf höchstens ${params.maximum} Elemente enthalten`,\n UNIQUE_ITEMS: (params) => `Die Elemente von ${labelFor(params, 'diesem Array')} müssen eindeutig sein`,\n CONTAINS: (params) => `${labelFor(params, 'Das Array')} muss mindestens ein passendes Element enthalten`,\n MIN_CONTAINS: (params) => `${labelFor(params, 'Das Array')} muss mindestens ${params.minimum} passende Elemente enthalten`,\n MAX_CONTAINS: (params) => `${labelFor(params, 'Das Array')} darf höchstens ${params.maximum} passende Elemente enthalten`,\n MISSING_REQUIRED: (params) => `Erforderliche Eigenschaft \"${params.property}\" fehlt`,\n ADDITIONAL_PROPERTY: (params) => `Unerwartete Eigenschaft \"${params.property}\"`,\n ADDITIONAL_ITEMS: (params) => `Unerwartetes Element an Index ${params.count}`,\n MIN_PROPERTIES: (params) => `${labelFor(params, 'Das Objekt')} muss mindestens ${params.minimum} Eigenschaften haben`,\n MAX_PROPERTIES: (params) => `${labelFor(params, 'Das Objekt')} darf höchstens ${params.maximum} Eigenschaften haben`,\n INVALID_KEY: (params) => `Ungültiger Schlüssel \"${params.key}\"`,\n UNION: () => 'Der Wert passt zu keiner Union-Variante',\n ENUM: (params) => `Der Wert muss einer von folgenden sein: ${formatList(params.values)}`,\n UNRESOLVED_REF: () => 'Nicht aufgelöste Schema-Referenz',\n EXCLUDE: () => 'Der Wert entspricht einem ausgeschlossenen Schema',\n EXTRACT: () => 'Der Wert entspricht nicht dem extrahierten Schema',\n NEVER: () => 'Der Wert ist nicht erlaubt',\n NOT: () => 'Der Wert entspricht einem negierten Schema',\n KEYOF: (params) => `Der Wert muss einer von folgenden sein: ${formatList(params.values)}`,\n CONDITIONAL: () => 'Der Wert passt zu keinem bedingten Zweig',\n INDEX: () => 'Der Wert passt zu keinem indexierten Schema',\n IDENTIFIER: () => 'Gültiger Bezeichner erwartet',\n BASE: () => 'Basisvalidierung fehlgeschlagen',\n REFINE: (params) => params.customMessage ?? 'Verfeinerung fehlgeschlagen',\n CALL: () => 'Aufrufschema konnte nicht instanziiert werden',\n PARAMETERS_LENGTH: (params) => `${params.count} Parameter erwartet`,\n CUSTOM_TYPE: (params) => `Validierung des benutzerdefinierten Typs \"${params.kind}\" fehlgeschlagen`,\n};\n",
|
|
7
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const enUSCatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `Expected ${params.expected ?? 'value'}`\n : `Expected ${params.expected ?? 'value'}, got ${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, 'Value')} must be at least ${params.minimum}`,\n MAX_LENGTH: (params) => `${labelFor(params, 'Value')} must be at most ${params.maximum}`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, 'Value')} must match one of: ${formatList(params.patterns)}`\n : `${labelFor(params, 'Value')} must match pattern ${params.pattern}`,\n FORMAT: (params) => `${labelFor(params, 'Value')} must match format ${params.format}`,\n MINIMUM: (params) => `${labelFor(params, 'Value')} must be >= ${params.minimum}`,\n MAXIMUM: (params) => `${labelFor(params, 'Value')} must be <= ${params.maximum}`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, 'Value')} must be > ${params.minimum}`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, 'Value')} must be < ${params.maximum}`,\n MULTIPLE_OF: (params) => `${labelFor(params, 'Value')} must be a multiple of ${params.divisor}`,\n INVALID_CONST: (params) => `Expected ${params.expectedValue}`,\n MIN_ITEMS: (params) => `${labelFor(params, 'Array')} must have at least ${params.minimum} items`,\n MAX_ITEMS: (params) => `${labelFor(params, 'Array')} must have at most ${params.maximum} items`,\n UNIQUE_ITEMS: (params) => `${labelFor(params, 'Array')} items must be unique`,\n CONTAINS: (params) => `${labelFor(params, 'Array')} must contain at least one matching item`,\n MIN_CONTAINS: (params) => `${labelFor(params, 'Array')} must contain at least ${params.minimum} matching items`,\n MAX_CONTAINS: (params) => `${labelFor(params, 'Array')} must contain at most ${params.maximum} matching items`,\n MISSING_REQUIRED: (params) => `Missing required property \"${params.property}\"`,\n ADDITIONAL_PROPERTY: (params) => `Unexpected property \"${params.property}\"`,\n ADDITIONAL_ITEMS: (params) => `Unexpected item at index ${params.count}`,\n MIN_PROPERTIES: (params) => `${labelFor(params, 'Object')} must have at least ${params.minimum} properties`,\n MAX_PROPERTIES: (params) => `${labelFor(params, 'Object')} must have at most ${params.maximum} properties`,\n INVALID_KEY: (params) => `Invalid record key \"${params.key}\"`,\n UNION: () => 'Value does not match any union variant',\n ENUM: (params) => `Value must be one of: ${formatList(params.values)}`,\n UNRESOLVED_REF: () => 'Unresolved schema reference',\n EXCLUDE: () => 'Value matched an excluded schema',\n EXTRACT: () => 'Value did not match the extracted schema',\n NEVER: () => 'Value is not allowed',\n NOT: () => 'Value matches a negated schema',\n KEYOF: (params) => `Value must be one of: ${formatList(params.values)}`,\n CONDITIONAL: () => 'Value does not match any conditional branch',\n INDEX: () => 'Value does not match any indexed schema',\n IDENTIFIER: () => 'Expected valid identifier string',\n BASE: () => 'Base validation failed',\n REFINE: (params) => params.customMessage ?? 'Refinement failed',\n CALL: () => 'Unable to instantiate call schema',\n PARAMETERS_LENGTH: (params) => `Expected ${params.count} parameters`,\n CUSTOM_TYPE: (params) => `Custom type validation failed for kind \"${params.kind}\"`,\n};\n",
|
|
8
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const esESCatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `Se esperaba ${params.expected ?? 'un valor'}`\n : `Se esperaba ${params.expected ?? 'un valor'}, se recibió ${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, 'El valor')} debe ser al menos ${params.minimum}`,\n MAX_LENGTH: (params) => `${labelFor(params, 'El valor')} debe ser como máximo ${params.maximum}`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, 'El valor')} debe coincidir con uno de: ${formatList(params.patterns)}`\n : `${labelFor(params, 'El valor')} debe coincidir con el patrón ${params.pattern}`,\n FORMAT: (params) => `${labelFor(params, 'El valor')} debe coincidir con el formato ${params.format}`,\n MINIMUM: (params) => `${labelFor(params, 'El valor')} debe ser >= ${params.minimum}`,\n MAXIMUM: (params) => `${labelFor(params, 'El valor')} debe ser <= ${params.maximum}`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, 'El valor')} debe ser > ${params.minimum}`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, 'El valor')} debe ser < ${params.maximum}`,\n MULTIPLE_OF: (params) => `${labelFor(params, 'El valor')} debe ser múltiplo de ${params.divisor}`,\n INVALID_CONST: (params) => `Se esperaba ${params.expectedValue}`,\n MIN_ITEMS: (params) => `${labelFor(params, 'El arreglo')} debe tener al menos ${params.minimum} elementos`,\n MAX_ITEMS: (params) => `${labelFor(params, 'El arreglo')} debe tener como máximo ${params.maximum} elementos`,\n UNIQUE_ITEMS: (params) => `Los elementos de ${labelFor(params, 'este arreglo')} deben ser únicos`,\n CONTAINS: (params) => `${labelFor(params, 'El arreglo')} debe contener al menos un elemento coincidente`,\n MIN_CONTAINS: (params) => `${labelFor(params, 'El arreglo')} debe contener al menos ${params.minimum} elementos coincidentes`,\n MAX_CONTAINS: (params) => `${labelFor(params, 'El arreglo')} debe contener como máximo ${params.maximum} elementos coincidentes`,\n MISSING_REQUIRED: (params) => `Falta la propiedad requerida \"${params.property}\"`,\n ADDITIONAL_PROPERTY: (params) => `Propiedad inesperada \"${params.property}\"`,\n ADDITIONAL_ITEMS: (params) => `Elemento inesperado en el índice ${params.count}`,\n MIN_PROPERTIES: (params) => `${labelFor(params, 'El objeto')} debe tener al menos ${params.minimum} propiedades`,\n MAX_PROPERTIES: (params) => `${labelFor(params, 'El objeto')} debe tener como máximo ${params.maximum} propiedades`,\n INVALID_KEY: (params) => `Clave de registro no válida \"${params.key}\"`,\n UNION: () => 'El valor no coincide con ninguna variante de la unión',\n ENUM: (params) => `El valor debe ser uno de: ${formatList(params.values)}`,\n UNRESOLVED_REF: () => 'Referencia de esquema no resuelta',\n EXCLUDE: () => 'El valor coincidió con un esquema excluido',\n EXTRACT: () => 'El valor no coincidió con el esquema extraído',\n NEVER: () => 'El valor no está permitido',\n NOT: () => 'El valor coincide con un esquema negado',\n KEYOF: (params) => `El valor debe ser uno de: ${formatList(params.values)}`,\n CONDITIONAL: () => 'El valor no coincide con ninguna rama condicional',\n INDEX: () => 'El valor no coincide con ningún esquema indexado',\n IDENTIFIER: () => 'Se esperaba una cadena identificadora válida',\n BASE: () => 'La validación base falló',\n REFINE: (params) => params.customMessage ?? 'La validación refinada falló',\n CALL: () => 'No se pudo instanciar el esquema de llamada',\n PARAMETERS_LENGTH: (params) => `Se esperaban ${params.count} parámetros`,\n CUSTOM_TYPE: (params) => `La validación del tipo personalizado \"${params.kind}\" falló`,\n};\n",
|
|
9
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const frFRCatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `Valeur attendue: ${params.expected ?? 'valeur'}`\n : `Valeur attendue: ${params.expected ?? 'valeur'}, reçu: ${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, 'La valeur')} doit être au moins ${params.minimum}`,\n MAX_LENGTH: (params) => `${labelFor(params, 'La valeur')} doit être au plus ${params.maximum}`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, 'La valeur')} doit correspondre à l'un de: ${formatList(params.patterns)}`\n : `${labelFor(params, 'La valeur')} doit correspondre au motif ${params.pattern}`,\n FORMAT: (params) => `${labelFor(params, 'La valeur')} doit respecter le format ${params.format}`,\n MINIMUM: (params) => `${labelFor(params, 'La valeur')} doit être >= ${params.minimum}`,\n MAXIMUM: (params) => `${labelFor(params, 'La valeur')} doit être <= ${params.maximum}`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, 'La valeur')} doit être > ${params.minimum}`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, 'La valeur')} doit être < ${params.maximum}`,\n MULTIPLE_OF: (params) => `${labelFor(params, 'La valeur')} doit être un multiple de ${params.divisor}`,\n INVALID_CONST: (params) => `Valeur attendue: ${params.expectedValue}`,\n MIN_ITEMS: (params) => `${labelFor(params, 'Le tableau')} doit contenir au moins ${params.minimum} éléments`,\n MAX_ITEMS: (params) => `${labelFor(params, 'Le tableau')} doit contenir au plus ${params.maximum} éléments`,\n UNIQUE_ITEMS: (params) => `Les éléments de ${labelFor(params, 'ce tableau')} doivent être uniques`,\n CONTAINS: (params) => `${labelFor(params, 'Le tableau')} doit contenir au moins un élément correspondant`,\n MIN_CONTAINS: (params) => `${labelFor(params, 'Le tableau')} doit contenir au moins ${params.minimum} éléments correspondants`,\n MAX_CONTAINS: (params) => `${labelFor(params, 'Le tableau')} doit contenir au plus ${params.maximum} éléments correspondants`,\n MISSING_REQUIRED: (params) => `Propriété requise manquante \"${params.property}\"`,\n ADDITIONAL_PROPERTY: (params) => `Propriété inattendue \"${params.property}\"`,\n ADDITIONAL_ITEMS: (params) => `Élément inattendu à l'index ${params.count}`,\n MIN_PROPERTIES: (params) => `${labelFor(params, 'L’objet')} doit avoir au moins ${params.minimum} propriétés`,\n MAX_PROPERTIES: (params) => `${labelFor(params, 'L’objet')} doit avoir au plus ${params.maximum} propriétés`,\n INVALID_KEY: (params) => `Clé d’enregistrement invalide \"${params.key}\"`,\n UNION: () => 'La valeur ne correspond à aucune variante de l’union',\n ENUM: (params) => `La valeur doit être l’une de: ${formatList(params.values)}`,\n UNRESOLVED_REF: () => 'Référence de schéma non résolue',\n EXCLUDE: () => 'La valeur correspond à un schéma exclu',\n EXTRACT: () => 'La valeur ne correspond pas au schéma extrait',\n NEVER: () => 'La valeur n’est pas autorisée',\n NOT: () => 'La valeur correspond à un schéma négatif',\n KEYOF: (params) => `La valeur doit être l’une de: ${formatList(params.values)}`,\n CONDITIONAL: () => 'La valeur ne correspond à aucune branche conditionnelle',\n INDEX: () => 'La valeur ne correspond à aucun schéma indexé',\n IDENTIFIER: () => 'Identifiant attendu valide',\n BASE: () => 'La validation de base a échoué',\n REFINE: (params) => params.customMessage ?? 'Le raffinement a échoué',\n CALL: () => 'Impossible d’instancier le schéma d’appel',\n PARAMETERS_LENGTH: (params) => `${params.count} paramètres attendus`,\n CUSTOM_TYPE: (params) => `La validation du type personnalisé \"${params.kind}\" a échoué`,\n};\n",
|
|
10
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const jaJPCatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `${params.expected ?? '値'}である必要があります`\n : `${params.expected ?? '値'}である必要があります。実際の型: ${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, '値')}は少なくとも${params.minimum}である必要があります`,\n MAX_LENGTH: (params) => `${labelFor(params, '値')}は最大で${params.maximum}である必要があります`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, '値')}は次のいずれかに一致する必要があります: ${formatList(params.patterns)}`\n : `${labelFor(params, '値')}はパターン${params.pattern}に一致する必要があります`,\n FORMAT: (params) => `${labelFor(params, '値')}は形式${params.format}に一致する必要があります`,\n MINIMUM: (params) => `${labelFor(params, '値')}は${params.minimum}以上である必要があります`,\n MAXIMUM: (params) => `${labelFor(params, '値')}は${params.maximum}以下である必要があります`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, '値')}は${params.minimum}より大きい必要があります`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, '値')}は${params.maximum}より小さい必要があります`,\n MULTIPLE_OF: (params) => `${labelFor(params, '値')}は${params.divisor}の倍数である必要があります`,\n INVALID_CONST: (params) => `${params.expectedValue}である必要があります`,\n MIN_ITEMS: (params) => `${labelFor(params, '配列')}には少なくとも${params.minimum}個の項目が必要です`,\n MAX_ITEMS: (params) => `${labelFor(params, '配列')}には最大${params.maximum}個の項目まで許可されます`,\n UNIQUE_ITEMS: (params) => `${labelFor(params, '配列')}の項目は一意である必要があります`,\n CONTAINS: (params) => `${labelFor(params, '配列')}には一致する項目が少なくとも1つ必要です`,\n MIN_CONTAINS: (params) => `${labelFor(params, '配列')}には一致する項目が少なくとも${params.minimum}個必要です`,\n MAX_CONTAINS: (params) => `${labelFor(params, '配列')}には一致する項目を最大${params.maximum}個まで含められます`,\n MISSING_REQUIRED: (params) => `必須プロパティ\"${params.property}\"がありません`,\n ADDITIONAL_PROPERTY: (params) => `予期しないプロパティ\"${params.property}\"です`,\n ADDITIONAL_ITEMS: (params) => `インデックス${params.count}に予期しない項目があります`,\n MIN_PROPERTIES: (params) => `${labelFor(params, 'オブジェクト')}には少なくとも${params.minimum}個のプロパティが必要です`,\n MAX_PROPERTIES: (params) => `${labelFor(params, 'オブジェクト')}には最大${params.maximum}個のプロパティまで許可されます`,\n INVALID_KEY: (params) => `無効なレコードキー\"${params.key}\"です`,\n UNION: () => '値がどのユニオン分岐にも一致しません',\n ENUM: (params) => `値は次のいずれかである必要があります: ${formatList(params.values)}`,\n UNRESOLVED_REF: () => '解決できないスキーマ参照です',\n EXCLUDE: () => '値が除外されたスキーマに一致しました',\n EXTRACT: () => '値が抽出されたスキーマに一致しません',\n NEVER: () => '値は許可されていません',\n NOT: () => '値が否定スキーマに一致しています',\n KEYOF: (params) => `値は次のいずれかである必要があります: ${formatList(params.values)}`,\n CONDITIONAL: () => '値がどの条件分岐にも一致しません',\n INDEX: () => '値がどのインデックス候補スキーマにも一致しません',\n IDENTIFIER: () => '有効な識別子文字列である必要があります',\n BASE: () => '基本検証に失敗しました',\n REFINE: (params) => params.customMessage ?? '追加条件の検証に失敗しました',\n CALL: () => '呼び出しスキーマをインスタンス化できません',\n PARAMETERS_LENGTH: (params) => `パラメータは${params.count}個である必要があります`,\n CUSTOM_TYPE: (params) => `カスタム型\"${params.kind}\"の検証に失敗しました`,\n};\n",
|
|
11
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const koKRCatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `${params.expected ?? '값'}이어야 합니다`\n : `${params.expected ?? '값'}이어야 합니다. 현재 값 유형: ${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, '값')}은(는) 최소 ${params.minimum}이어야 합니다`,\n MAX_LENGTH: (params) => `${labelFor(params, '값')}은(는) 최대 ${params.maximum}이어야 합니다`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, '값')}은(는) 다음 중 하나와 일치해야 합니다: ${formatList(params.patterns)}`\n : `${labelFor(params, '값')}은(는) 패턴 ${params.pattern}과 일치해야 합니다`,\n FORMAT: (params) => `${labelFor(params, '값')}은(는) ${params.format} 형식이어야 합니다`,\n MINIMUM: (params) => `${labelFor(params, '값')}은(는) ${params.minimum} 이상이어야 합니다`,\n MAXIMUM: (params) => `${labelFor(params, '값')}은(는) ${params.maximum} 이하여야 합니다`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, '값')}은(는) ${params.minimum}보다 커야 합니다`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, '값')}은(는) ${params.maximum}보다 작아야 합니다`,\n MULTIPLE_OF: (params) => `${labelFor(params, '값')}은(는) ${params.divisor}의 배수여야 합니다`,\n INVALID_CONST: (params) => `${params.expectedValue}이어야 합니다`,\n MIN_ITEMS: (params) => `${labelFor(params, '배열')}은(는) 최소 ${params.minimum}개 항목이 필요합니다`,\n MAX_ITEMS: (params) => `${labelFor(params, '배열')}은(는) 최대 ${params.maximum}개 항목만 허용됩니다`,\n UNIQUE_ITEMS: (params) => `${labelFor(params, '배열')} 항목은 고유해야 합니다`,\n CONTAINS: (params) => `${labelFor(params, '배열')}에 일치하는 항목이 하나 이상 있어야 합니다`,\n MIN_CONTAINS: (params) => `${labelFor(params, '배열')}에 일치하는 항목이 최소 ${params.minimum}개 있어야 합니다`,\n MAX_CONTAINS: (params) => `${labelFor(params, '배열')}에 일치하는 항목이 최대 ${params.maximum}개까지만 허용됩니다`,\n MISSING_REQUIRED: (params) => `필수 속성 \"${params.property}\"이(가) 없습니다`,\n ADDITIONAL_PROPERTY: (params) => `예상하지 못한 속성 \"${params.property}\"입니다`,\n ADDITIONAL_ITEMS: (params) => `인덱스 ${params.count}의 항목은 허용되지 않습니다`,\n MIN_PROPERTIES: (params) => `${labelFor(params, '객체')}에는 최소 ${params.minimum}개의 속성이 필요합니다`,\n MAX_PROPERTIES: (params) => `${labelFor(params, '객체')}에는 최대 ${params.maximum}개의 속성만 허용됩니다`,\n INVALID_KEY: (params) => `레코드 키 \"${params.key}\"가 올바르지 않습니다`,\n UNION: () => '값이 어떤 유니언 분기와도 일치하지 않습니다',\n ENUM: (params) => `값은 다음 중 하나여야 합니다: ${formatList(params.values)}`,\n UNRESOLVED_REF: () => '스키마 참조를 확인할 수 없습니다',\n EXCLUDE: () => '값이 제외된 스키마와 일치했습니다',\n EXTRACT: () => '값이 추출된 스키마와 일치하지 않습니다',\n NEVER: () => '값이 허용되지 않습니다',\n NOT: () => '값이 부정 스키마와 일치합니다',\n KEYOF: (params) => `값은 다음 중 하나여야 합니다: ${formatList(params.values)}`,\n CONDITIONAL: () => '값이 어떤 조건 분기와도 일치하지 않습니다',\n INDEX: () => '값이 어떤 인덱스 후보 스키마와도 일치하지 않습니다',\n IDENTIFIER: () => '올바른 식별자 문자열이어야 합니다',\n BASE: () => '기본 검증에 실패했습니다',\n REFINE: (params) => params.customMessage ?? '세부 조건 검증에 실패했습니다',\n CALL: () => '호출 스키마를 인스턴스화할 수 없습니다',\n PARAMETERS_LENGTH: (params) => `매개변수는 ${params.count}개여야 합니다`,\n CUSTOM_TYPE: (params) => `사용자 정의 타입 \"${params.kind}\" 검증에 실패했습니다`,\n};\n",
|
|
12
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const ptBRCatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `Esperado ${params.expected ?? 'valor'}`\n : `Esperado ${params.expected ?? 'valor'}, recebido ${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, 'O valor')} deve ser no mínimo ${params.minimum}`,\n MAX_LENGTH: (params) => `${labelFor(params, 'O valor')} deve ser no máximo ${params.maximum}`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, 'O valor')} deve corresponder a um destes padrões: ${formatList(params.patterns)}`\n : `${labelFor(params, 'O valor')} deve corresponder ao padrão ${params.pattern}`,\n FORMAT: (params) => `${labelFor(params, 'O valor')} deve corresponder ao formato ${params.format}`,\n MINIMUM: (params) => `${labelFor(params, 'O valor')} deve ser >= ${params.minimum}`,\n MAXIMUM: (params) => `${labelFor(params, 'O valor')} deve ser <= ${params.maximum}`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, 'O valor')} deve ser > ${params.minimum}`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, 'O valor')} deve ser < ${params.maximum}`,\n MULTIPLE_OF: (params) => `${labelFor(params, 'O valor')} deve ser múltiplo de ${params.divisor}`,\n INVALID_CONST: (params) => `Esperado ${params.expectedValue}`,\n MIN_ITEMS: (params) => `${labelFor(params, 'O array')} deve ter pelo menos ${params.minimum} itens`,\n MAX_ITEMS: (params) => `${labelFor(params, 'O array')} deve ter no máximo ${params.maximum} itens`,\n UNIQUE_ITEMS: (params) => `Os itens de ${labelFor(params, 'este array')} devem ser únicos`,\n CONTAINS: (params) => `${labelFor(params, 'O array')} deve conter ao menos um item correspondente`,\n MIN_CONTAINS: (params) => `${labelFor(params, 'O array')} deve conter pelo menos ${params.minimum} itens correspondentes`,\n MAX_CONTAINS: (params) => `${labelFor(params, 'O array')} deve conter no máximo ${params.maximum} itens correspondentes`,\n MISSING_REQUIRED: (params) => `Propriedade obrigatória ausente \"${params.property}\"`,\n ADDITIONAL_PROPERTY: (params) => `Propriedade inesperada \"${params.property}\"`,\n ADDITIONAL_ITEMS: (params) => `Item inesperado no índice ${params.count}`,\n MIN_PROPERTIES: (params) => `${labelFor(params, 'O objeto')} deve ter pelo menos ${params.minimum} propriedades`,\n MAX_PROPERTIES: (params) => `${labelFor(params, 'O objeto')} deve ter no máximo ${params.maximum} propriedades`,\n INVALID_KEY: (params) => `Chave inválida \"${params.key}\"`,\n UNION: () => 'O valor não corresponde a nenhuma variante da união',\n ENUM: (params) => `O valor deve ser um destes: ${formatList(params.values)}`,\n UNRESOLVED_REF: () => 'Referência de esquema não resolvida',\n EXCLUDE: () => 'O valor correspondeu a um esquema excluído',\n EXTRACT: () => 'O valor não correspondeu ao esquema extraído',\n NEVER: () => 'O valor não é permitido',\n NOT: () => 'O valor corresponde a um esquema negado',\n KEYOF: (params) => `O valor deve ser um destes: ${formatList(params.values)}`,\n CONDITIONAL: () => 'O valor não corresponde a nenhum ramo condicional',\n INDEX: () => 'O valor não corresponde a nenhum esquema indexado',\n IDENTIFIER: () => 'Era esperado um identificador válido',\n BASE: () => 'A validação base falhou',\n REFINE: (params) => params.customMessage ?? 'A validação refinada falhou',\n CALL: () => 'Não foi possível instanciar o esquema de chamada',\n PARAMETERS_LENGTH: (params) => `Esperados ${params.count} parâmetros`,\n CUSTOM_TYPE: (params) => `A validação do tipo personalizado \"${params.kind}\" falhou`,\n};\n",
|
|
13
|
+
"import type { SchemaIssueCatalog } from '../catalog-types.js';\nimport { formatList, labelFor } from './shared.js';\n\nexport const zhHansCatalog: SchemaIssueCatalog = {\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `应为${params.expected ?? '值'}`\n : `应为${params.expected ?? '值'},实际类型为${params.actual}`,\n MIN_LENGTH: (params) => `${labelFor(params, '值')}必须至少为${params.minimum}`,\n MAX_LENGTH: (params) => `${labelFor(params, '值')}最多只能为${params.maximum}`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, '值')}必须匹配以下之一:${formatList(params.patterns)}`\n : `${labelFor(params, '值')}必须匹配模式${params.pattern}`,\n FORMAT: (params) => `${labelFor(params, '值')}必须匹配格式${params.format}`,\n MINIMUM: (params) => `${labelFor(params, '值')}必须 >= ${params.minimum}`,\n MAXIMUM: (params) => `${labelFor(params, '值')}必须 <= ${params.maximum}`,\n EXCLUSIVE_MINIMUM: (params) => `${labelFor(params, '值')}必须 > ${params.minimum}`,\n EXCLUSIVE_MAXIMUM: (params) => `${labelFor(params, '值')}必须 < ${params.maximum}`,\n MULTIPLE_OF: (params) => `${labelFor(params, '值')}必须是${params.divisor}的倍数`,\n INVALID_CONST: (params) => `应为${params.expectedValue}`,\n MIN_ITEMS: (params) => `${labelFor(params, '数组')}至少需要${params.minimum}个项目`,\n MAX_ITEMS: (params) => `${labelFor(params, '数组')}最多只能有${params.maximum}个项目`,\n UNIQUE_ITEMS: (params) => `${labelFor(params, '数组')}中的项目必须唯一`,\n CONTAINS: (params) => `${labelFor(params, '数组')}至少要包含一个匹配项目`,\n MIN_CONTAINS: (params) => `${labelFor(params, '数组')}至少要包含${params.minimum}个匹配项目`,\n MAX_CONTAINS: (params) => `${labelFor(params, '数组')}最多只能包含${params.maximum}个匹配项目`,\n MISSING_REQUIRED: (params) => `缺少必填属性\"${params.property}\"`,\n ADDITIONAL_PROPERTY: (params) => `存在未预期的属性\"${params.property}\"`,\n ADDITIONAL_ITEMS: (params) => `索引${params.count}处存在未预期的项目`,\n MIN_PROPERTIES: (params) => `${labelFor(params, '对象')}至少需要${params.minimum}个属性`,\n MAX_PROPERTIES: (params) => `${labelFor(params, '对象')}最多只能有${params.maximum}个属性`,\n INVALID_KEY: (params) => `无效的记录键\"${params.key}\"`,\n UNION: () => '值不符合任何联合分支',\n ENUM: (params) => `值必须是以下之一:${formatList(params.values)}`,\n UNRESOLVED_REF: () => '无法解析的模式引用',\n EXCLUDE: () => '值匹配了被排除的模式',\n EXTRACT: () => '值不匹配提取后的模式',\n NEVER: () => '不允许该值',\n NOT: () => '值匹配了否定模式',\n KEYOF: (params) => `值必须是以下之一:${formatList(params.values)}`,\n CONDITIONAL: () => '值不匹配任何条件分支',\n INDEX: () => '值不匹配任何索引模式',\n IDENTIFIER: () => '必须是有效的标识符字符串',\n BASE: () => '基础验证失败',\n REFINE: (params) => params.customMessage ?? '细化验证失败',\n CALL: () => '无法实例化调用模式',\n PARAMETERS_LENGTH: (params) => `参数数量必须为${params.count}`,\n CUSTOM_TYPE: (params) => `自定义类型\"${params.kind}\"验证失败`,\n};\n\nexport const zhHantCatalog: SchemaIssueCatalog = {\n ...zhHansCatalog,\n INVALID_TYPE: (params) =>\n params.actual === undefined\n ? `應為${params.expected ?? '值'}`\n : `應為${params.expected ?? '值'},實際類型為${params.actual}`,\n PATTERN: (params) =>\n params.patterns !== undefined\n ? `${labelFor(params, '值')}必須符合以下其中之一:${formatList(params.patterns)}`\n : `${labelFor(params, '值')}必須符合模式${params.pattern}`,\n MISSING_REQUIRED: (params) => `缺少必要屬性\"${params.property}\"`,\n ADDITIONAL_PROPERTY: (params) => `存在未預期的屬性\"${params.property}\"`,\n ADDITIONAL_ITEMS: (params) => `索引${params.count}處存在未預期的項目`,\n MIN_PROPERTIES: (params) => `${labelFor(params, '物件')}至少需要${params.minimum}個屬性`,\n MAX_PROPERTIES: (params) => `${labelFor(params, '物件')}最多只能有${params.maximum}個屬性`,\n INVALID_KEY: (params) => `無效的記錄鍵\"${params.key}\"`,\n UNRESOLVED_REF: () => '無法解析的結構參照',\n EXCLUDE: () => '值符合被排除的結構',\n EXTRACT: () => '值不符合提取後的結構',\n NEVER: () => '不允許此值',\n CONDITIONAL: () => '值不符合任何條件分支',\n INDEX: () => '值不符合任何索引結構',\n IDENTIFIER: () => '必須是有效的識別字串',\n BASE: () => '基礎驗證失敗',\n REFINE: (params) => params.customMessage ?? '細化驗證失敗',\n CALL: () => '無法實例化呼叫結構',\n PARAMETERS_LENGTH: (params) => `參數數量必須為${params.count}`,\n CUSTOM_TYPE: (params) => `自訂類型\"${params.kind}\"驗證失敗`,\n};\n",
|
|
14
|
+
"export const LocaleCodes = {\n ar_001: 'ar_001',\n bn_BD: 'bn_BD',\n cs_CZ: 'cs_CZ',\n de_DE: 'de_DE',\n el_GR: 'el_GR',\n en_US: 'en_US',\n es_419: 'es_419',\n es_AR: 'es_AR',\n es_ES: 'es_ES',\n es_MX: 'es_MX',\n fa_IR: 'fa_IR',\n fil_PH: 'fil_PH',\n fr_CA: 'fr_CA',\n fr_FR: 'fr_FR',\n ha_NG: 'ha_NG',\n hi_IN: 'hi_IN',\n hu_HU: 'hu_HU',\n id_ID: 'id_ID',\n it_IT: 'it_IT',\n ja_JP: 'ja_JP',\n ko_KR: 'ko_KR',\n ms_MY: 'ms_MY',\n nl_NL: 'nl_NL',\n pl_PL: 'pl_PL',\n pt_BR: 'pt_BR',\n pt_PT: 'pt_PT',\n ro_RO: 'ro_RO',\n ru_RU: 'ru_RU',\n sv_SE: 'sv_SE',\n sw_TZ: 'sw_TZ',\n th_TH: 'th_TH',\n tr_TR: 'tr_TR',\n uk_UA: 'uk_UA',\n ur_PK: 'ur_PK',\n vi_VN: 'vi_VN',\n yo_NG: 'yo_NG',\n zh_Hans: 'zh_Hans',\n zh_Hant: 'zh_Hant',\n} as const;\n\nexport type LocaleCode = (typeof LocaleCodes)[keyof typeof LocaleCodes];\nexport type LocaleIdentifier = LocaleCode | (string & {});\n",
|
|
15
|
+
"import type { SchemaIssueCatalog } from '../error/catalog-types.js';\nimport { deDECatalog } from '../error/locales/de.js';\nimport { enUSCatalog } from '../error/locales/en.js';\nimport { esESCatalog } from '../error/locales/es.js';\nimport { frFRCatalog } from '../error/locales/fr.js';\nimport { jaJPCatalog } from '../error/locales/ja.js';\nimport { koKRCatalog } from '../error/locales/ko.js';\nimport { ptBRCatalog } from '../error/locales/pt.js';\nimport { zhHansCatalog, zhHantCatalog } from '../error/locales/zh.js';\nimport { LocaleCodes, type LocaleCode } from '../shared/locale.js';\n\nexport const ar_001 = enUSCatalog;\nexport const bn_BD = enUSCatalog;\nexport const cs_CZ = enUSCatalog;\nexport const de_DE = deDECatalog;\nexport const el_GR = enUSCatalog;\nexport const en_US = enUSCatalog;\nexport const es_419 = esESCatalog;\nexport const es_AR = esESCatalog;\nexport const es_ES = esESCatalog;\nexport const es_MX = esESCatalog;\nexport const fa_IR = enUSCatalog;\nexport const fil_PH = enUSCatalog;\nexport const fr_CA = frFRCatalog;\nexport const fr_FR = frFRCatalog;\nexport const ha_NG = enUSCatalog;\nexport const hi_IN = enUSCatalog;\nexport const hu_HU = enUSCatalog;\nexport const id_ID = enUSCatalog;\nexport const it_IT = enUSCatalog;\nexport const ja_JP = jaJPCatalog;\nexport const ko_KR = koKRCatalog;\nexport const ms_MY = enUSCatalog;\nexport const nl_NL = enUSCatalog;\nexport const pl_PL = enUSCatalog;\nexport const pt_BR = ptBRCatalog;\nexport const pt_PT = ptBRCatalog;\nexport const ro_RO = enUSCatalog;\nexport const ru_RU = enUSCatalog;\nexport const sv_SE = enUSCatalog;\nexport const sw_TZ = enUSCatalog;\nexport const th_TH = enUSCatalog;\nexport const tr_TR = enUSCatalog;\nexport const uk_UA = enUSCatalog;\nexport const ur_PK = enUSCatalog;\nexport const vi_VN = enUSCatalog;\nexport const yo_NG = enUSCatalog;\nexport const zh_Hans = zhHansCatalog;\nexport const zh_Hant = zhHantCatalog;\n\nexport const OfficialLocaleCatalogs = {\n [LocaleCodes.ar_001]: ar_001,\n [LocaleCodes.bn_BD]: bn_BD,\n [LocaleCodes.cs_CZ]: cs_CZ,\n [LocaleCodes.de_DE]: de_DE,\n [LocaleCodes.el_GR]: el_GR,\n [LocaleCodes.en_US]: en_US,\n [LocaleCodes.es_419]: es_419,\n [LocaleCodes.es_AR]: es_AR,\n [LocaleCodes.es_ES]: es_ES,\n [LocaleCodes.es_MX]: es_MX,\n [LocaleCodes.fa_IR]: fa_IR,\n [LocaleCodes.fil_PH]: fil_PH,\n [LocaleCodes.fr_CA]: fr_CA,\n [LocaleCodes.fr_FR]: fr_FR,\n [LocaleCodes.ha_NG]: ha_NG,\n [LocaleCodes.hi_IN]: hi_IN,\n [LocaleCodes.hu_HU]: hu_HU,\n [LocaleCodes.id_ID]: id_ID,\n [LocaleCodes.it_IT]: it_IT,\n [LocaleCodes.ja_JP]: ja_JP,\n [LocaleCodes.ko_KR]: ko_KR,\n [LocaleCodes.ms_MY]: ms_MY,\n [LocaleCodes.nl_NL]: nl_NL,\n [LocaleCodes.pl_PL]: pl_PL,\n [LocaleCodes.pt_BR]: pt_BR,\n [LocaleCodes.pt_PT]: pt_PT,\n [LocaleCodes.ro_RO]: ro_RO,\n [LocaleCodes.ru_RU]: ru_RU,\n [LocaleCodes.sv_SE]: sv_SE,\n [LocaleCodes.sw_TZ]: sw_TZ,\n [LocaleCodes.th_TH]: th_TH,\n [LocaleCodes.tr_TR]: tr_TR,\n [LocaleCodes.uk_UA]: uk_UA,\n [LocaleCodes.ur_PK]: ur_PK,\n [LocaleCodes.vi_VN]: vi_VN,\n [LocaleCodes.yo_NG]: yo_NG,\n [LocaleCodes.zh_Hans]: zh_Hans,\n [LocaleCodes.zh_Hant]: zh_Hant,\n} satisfies Record<LocaleCode, SchemaIssueCatalog>;\n\nexport function LocaleCatalogEntries(): Array<[LocaleCode, SchemaIssueCatalog]> {\n return Object.values(LocaleCodes).map((locale) => [locale, OfficialLocaleCatalogs[locale]]);\n}\n\nconst LocalePacks = OfficialLocaleCatalogs;\n\nexport { LocalePacks };\nexport default LocalePacks;\n",
|
|
16
|
+
"import type { TObject, TSchema, TString } from '../type/schema.js';\n\n/** @internal Options for deriving a sub-schema from an object schema */\nexport interface DeriveObjectOptions {\n requiredMode?: 'preserve' | 'none' | 'all';\n pickKeys?: string[];\n omitKeys?: string[];\n additionalProperties?: boolean | TSchema;\n}\n\n/** @internal Derive a filtered/projected object schema from a source TObject */\nexport function deriveObjectSchema(\n object: TObject,\n options: DeriveObjectOptions = {},\n): TObject<Record<string, TSchema>, string, string> {\n const pickSet = options.pickKeys ? new Set(options.pickKeys) : undefined;\n const omitSet = options.omitKeys ? new Set(options.omitKeys) : undefined;\n const originalOptional = new Set((object.optional ?? []).map(String));\n const originalRequired = new Set((object.required ?? []).map(String));\n const originalProperties = object.properties as Record<string, TSchema>;\n const properties: Record<string, TSchema> = {};\n\n for (const [key, schema] of Object.entries(originalProperties)) {\n if (pickSet && !pickSet.has(key)) continue;\n if (omitSet && omitSet.has(key)) continue;\n properties[key] = schema;\n }\n\n const keys = Object.keys(properties);\n const required = options.requiredMode === 'all'\n ? keys\n : options.requiredMode === 'none'\n ? []\n : keys.filter((key) => originalRequired.has(key));\n const optional = keys.filter((key) => originalOptional.has(key) && !required.includes(key));\n\n return {\n '~kind': 'Object',\n properties,\n ...(required.length > 0 ? { required } : {}),\n ...(optional.length > 0 ? { optional } : {}),\n ...(object.patternProperties !== undefined ? { patternProperties: object.patternProperties } : {}),\n ...(options.additionalProperties !== undefined\n ? { additionalProperties: options.additionalProperties }\n : object.additionalProperties !== undefined\n ? { additionalProperties: object.additionalProperties }\n : {}),\n };\n}\n\n/** @internal Match pattern properties against a key and return matching schemas */\nexport function getPatternPropertySchemas(\n patternProperties: Record<string, TSchema> | undefined,\n key: string,\n): TSchema[] {\n if (!patternProperties) return [];\n const matches: TSchema[] = [];\n for (const [pattern, schema] of Object.entries(patternProperties)) {\n if (new RegExp(pattern).test(key)) {\n matches.push(schema);\n }\n }\n return matches;\n}\n\n/** @internal Derive candidate schemas from object properties matching a key schema */\nexport function deriveIndexSchemas(\n object: TObject,\n keySchema: TSchema,\n checkFn: (schema: TSchema, value: unknown) => boolean,\n): TSchema[] {\n const candidates: TSchema[] = [];\n const properties = object.properties as Record<string, TSchema>;\n for (const [key, schema] of Object.entries(properties)) {\n if (checkFn(keySchema, key)) {\n candidates.push(schema);\n }\n }\n return candidates;\n}\n\n/** @internal Derive candidate schemas for schema emission (pattern-based) */\nexport function deriveIndexSchemasForEmission(\n object: TObject,\n keySchema: TSchema,\n): TSchema[] {\n const candidates: TSchema[] = [];\n const properties = object.properties as Record<string, TSchema>;\n const keySchemaRecord = keySchema as Record<string, unknown>;\n\n for (const [key, schema] of Object.entries(properties)) {\n const keyValidationSchema: TString = {\n '~kind': 'String',\n ...(typeof keySchemaRecord.format === 'string' ? { format: keySchemaRecord.format } : {}),\n ...(typeof keySchemaRecord.pattern === 'string' ? { pattern: keySchemaRecord.pattern } : {}),\n };\n if (keySchemaRecord['~kind'] === 'String' ? stringMatchesKeySchema(keyValidationSchema, key) : true) {\n candidates.push(schema);\n }\n }\n return candidates;\n}\n\n/** @internal Check if a string matches a key schema's pattern constraint */\nexport function stringMatchesKeySchema(schema: TString, value: string): boolean {\n return schema.pattern === undefined || new RegExp(schema.pattern).test(value);\n}\n\nfunction transformStringLiteralValue(kind: string, value: string): string {\n switch (kind) {\n case 'Capitalize':\n return value.length === 0 ? value : value.charAt(0).toUpperCase() + value.slice(1);\n case 'Lowercase':\n return value.toLowerCase();\n case 'Uppercase':\n return value.toUpperCase();\n case 'Uncapitalize':\n return value.length === 0 ? value : value.charAt(0).toLowerCase() + value.slice(1);\n default:\n return value;\n }\n}\n\n/** @internal Resolve casing actions to a concrete schema when possible */\nexport function resolveStringActionSchema(schema: TSchema): TSchema {\n const value = schema as Record<string, unknown>;\n const kind = value['~kind'];\n if (kind !== 'Capitalize' && kind !== 'Lowercase' && kind !== 'Uppercase' && kind !== 'Uncapitalize') {\n return schema;\n }\n const item = value['item'];\n if (typeof item !== 'object' || item === null) {\n return schema;\n }\n const target = item as Record<string, unknown>;\n const targetKind = target['~kind'];\n if (targetKind === 'Literal' && typeof target['const'] === 'string') {\n return { '~kind': 'Literal', const: transformStringLiteralValue(String(kind), target['const']) } as TSchema;\n }\n if (targetKind === 'Enum' && Array.isArray(target['values']) && target['values'].every((entry) => typeof entry === 'string')) {\n return {\n '~kind': 'Enum',\n values: (target['values'] as string[]).map((entry) => transformStringLiteralValue(String(kind), entry)),\n } as TSchema;\n }\n return item as TSchema;\n}\n",
|
|
17
|
+
"/** @internal PromiseLike structural type guard */\nexport function isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return (typeof value === 'object' || typeof value === 'function')\n && value !== null\n && 'then' in value\n && typeof value.then === 'function';\n}\n\n/** @internal Iterator structural type guard */\nexport function isIteratorLike(value: unknown): value is Iterator<unknown> {\n return typeof value === 'object'\n && value !== null\n && 'next' in value\n && typeof value.next === 'function'\n && Symbol.iterator in value\n && typeof value[Symbol.iterator] === 'function';\n}\n\n/** @internal AsyncIterator structural type guard */\nexport function isAsyncIteratorLike(value: unknown): value is AsyncIterator<unknown> {\n return typeof value === 'object'\n && value !== null\n && 'next' in value\n && typeof value.next === 'function'\n && Symbol.asyncIterator in value\n && typeof value[Symbol.asyncIterator] === 'function';\n}\n",
|
|
18
|
+
"export const EMAIL_RE = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nexport const URI_RE = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;\nexport const HOSTNAME_RE = /^(?!-)[a-zA-Z0-9-]{0,63}(?<!-)(.(?!-)[a-zA-Z0-9-]{0,63}(?<!-))*$/;\nexport const IPV4_RE = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\nexport const IPV6_RE = /^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}$|^([0-9a-fA-F]{1,4}:){1,6}::$/;\nexport const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\nexport const ISO_DATE_RE = /^\\d{4}-(0[1-9]|1[0-2])-([0-2]\\d|3[01])$/;\nexport const ISO_DT_RE = /^\\d{4}-(0[1-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|[+-][01]\\d:[0-5]\\d)$/;\nexport const ISO_TIME_RE = /^([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?$/;\nexport const ISO_DUR_RE = /^P(?:\\d+Y)?(?:\\d+M)?(?:\\d+D)?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+S)?)?$/;\nexport const BASE64_RE = /^[a-zA-Z0-9+/]*={0,2}$/;\nexport const HEX_RE = /^[0-9a-fA-F]+$/;\nexport const HEXCLR_RE = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\nexport const LUHN_DIGITS_RE = /^\\d{13,19}$/;\n\nexport const KNOWN_FORMATS = new Set([\n 'email', 'uri', 'hostname', 'ip', 'ipv4', 'ipv6', 'uuid',\n 'date', 'datetime', 'time', 'duration',\n 'base64', 'hex', 'hexcolor',\n 'creditcard', 'regex', 'uint8array', 'json',\n]);\n",
|
|
19
|
+
"function isAsciiDigit(value: string): boolean {\n return value >= '0' && value <= '9';\n}\n\nfunction consumeRegexQuantifier(pattern: string, start: number): number {\n let index = start;\n const first = pattern[index];\n if (first === undefined || !isAsciiDigit(first)) {\n return -1;\n }\n while (index < pattern.length) {\n const character = pattern[index];\n if (character === undefined || !isAsciiDigit(character)) {\n break;\n }\n index += 1;\n }\n if (pattern[index] === ',') {\n index += 1;\n while (index < pattern.length) {\n const character = pattern[index];\n if (character === undefined || !isAsciiDigit(character)) {\n break;\n }\n index += 1;\n }\n }\n return pattern[index] === '}' ? index : -1;\n}\n\n/** @internal Check if a string is a valid regular expression */\nexport function isValidRegex(value: string): boolean {\n let escaped = false;\n let inCharacterClass = false;\n let groupDepth = 0;\n let hasToken = false;\n let groupPrefixAllowed = false;\n\n for (let index = 0; index < value.length; index += 1) {\n const character = value[index];\n if (character === undefined) return false;\n if (escaped) {\n escaped = false;\n hasToken = true;\n groupPrefixAllowed = false;\n continue;\n }\n if (character === '\\\\') {\n escaped = true;\n continue;\n }\n if (inCharacterClass) {\n if (character === ']') {\n inCharacterClass = false;\n hasToken = true;\n }\n continue;\n }\n if (groupPrefixAllowed && character === '?') {\n groupPrefixAllowed = false;\n continue;\n }\n groupPrefixAllowed = false;\n\n switch (character) {\n case '[':\n inCharacterClass = true;\n hasToken = true;\n break;\n case '(':\n groupDepth += 1;\n hasToken = false;\n groupPrefixAllowed = true;\n break;\n case ')':\n if (groupDepth === 0) return false;\n groupDepth -= 1;\n hasToken = true;\n break;\n case '{': {\n if (!hasToken) return false;\n const quantifierEnd = consumeRegexQuantifier(value, index + 1);\n if (quantifierEnd < 0) return false;\n index = quantifierEnd;\n hasToken = true;\n break;\n }\n case '*':\n case '+':\n case '?':\n if (!hasToken) return false;\n hasToken = true;\n break;\n case ']':\n case '}':\n return false;\n case '|':\n hasToken = false;\n break;\n default:\n hasToken = true;\n break;\n }\n }\n\n return !escaped && !inCharacterClass && groupDepth === 0;\n}\n\ninterface JsonState {\n index: number;\n text: string;\n}\n\nfunction skipWhitespace(state: JsonState): void {\n while (state.index < state.text.length) {\n const character = state.text[state.index];\n if (character !== ' ' && character !== '\\n' && character !== '\\r' && character !== '\\t') {\n break;\n }\n state.index += 1;\n }\n}\n\nfunction consumeLiteral(state: JsonState, literal: string): boolean {\n if (state.text.slice(state.index, state.index + literal.length) !== literal) {\n return false;\n }\n state.index += literal.length;\n return true;\n}\n\nfunction parseString(state: JsonState): boolean {\n if (state.text[state.index] !== '\"') return false;\n state.index += 1;\n while (state.index < state.text.length) {\n const character = state.text[state.index];\n if (character === undefined) return false;\n if (character === '\"') {\n state.index += 1;\n return true;\n }\n if (character === '\\\\') {\n const escape = state.text[state.index + 1];\n if (escape === undefined) return false;\n if (escape === 'u') {\n for (let offset = 2; offset < 6; offset += 1) {\n const hex = state.text[state.index + offset];\n if (hex === undefined || !/[0-9a-fA-F]/.test(hex)) return false;\n }\n state.index += 6;\n continue;\n }\n if (!'\"\\\\/bfnrt'.includes(escape)) return false;\n state.index += 2;\n continue;\n }\n if (character < ' ') return false;\n state.index += 1;\n }\n return false;\n}\n\nfunction parseNumber(state: JsonState): boolean {\n const start = state.index;\n if (state.text[state.index] === '-') {\n state.index += 1;\n }\n const firstDigit = state.text[state.index];\n if (firstDigit === undefined || !isAsciiDigit(firstDigit)) return false;\n if (firstDigit === '0') {\n state.index += 1;\n } else {\n while (state.index < state.text.length) {\n const digit = state.text[state.index];\n if (digit === undefined || !isAsciiDigit(digit)) break;\n state.index += 1;\n }\n }\n if (state.text[state.index] === '.') {\n state.index += 1;\n const fractionDigit = state.text[state.index];\n if (fractionDigit === undefined || !isAsciiDigit(fractionDigit)) return false;\n while (state.index < state.text.length) {\n const digit = state.text[state.index];\n if (digit === undefined || !isAsciiDigit(digit)) break;\n state.index += 1;\n }\n }\n const exponent = state.text[state.index];\n if (exponent === 'e' || exponent === 'E') {\n state.index += 1;\n const sign = state.text[state.index];\n if (sign === '+' || sign === '-') state.index += 1;\n const exponentDigit = state.text[state.index];\n if (exponentDigit === undefined || !isAsciiDigit(exponentDigit)) return false;\n while (state.index < state.text.length) {\n const digit = state.text[state.index];\n if (digit === undefined || !isAsciiDigit(digit)) break;\n state.index += 1;\n }\n }\n return state.index > start;\n}\n\nfunction parseArray(state: JsonState): boolean {\n if (state.text[state.index] !== '[') return false;\n state.index += 1;\n skipWhitespace(state);\n if (state.text[state.index] === ']') {\n state.index += 1;\n return true;\n }\n while (state.index < state.text.length) {\n if (!parseValue(state)) return false;\n skipWhitespace(state);\n const separator = state.text[state.index];\n if (separator === ',') {\n state.index += 1;\n skipWhitespace(state);\n continue;\n }\n if (separator === ']') {\n state.index += 1;\n return true;\n }\n return false;\n }\n return false;\n}\n\nfunction parseObject(state: JsonState): boolean {\n if (state.text[state.index] !== '{') return false;\n state.index += 1;\n skipWhitespace(state);\n if (state.text[state.index] === '}') {\n state.index += 1;\n return true;\n }\n while (state.index < state.text.length) {\n if (!parseString(state)) return false;\n skipWhitespace(state);\n if (state.text[state.index] !== ':') return false;\n state.index += 1;\n if (!parseValue(state)) return false;\n skipWhitespace(state);\n const separator = state.text[state.index];\n if (separator === ',') {\n state.index += 1;\n skipWhitespace(state);\n continue;\n }\n if (separator === '}') {\n state.index += 1;\n return true;\n }\n return false;\n }\n return false;\n}\n\nfunction parseValue(state: JsonState): boolean {\n skipWhitespace(state);\n const character = state.text[state.index];\n switch (character) {\n case '\"':\n return parseString(state);\n case '{':\n return parseObject(state);\n case '[':\n return parseArray(state);\n case 't':\n return consumeLiteral(state, 'true');\n case 'f':\n return consumeLiteral(state, 'false');\n case 'n':\n return consumeLiteral(state, 'null');\n default:\n return character === '-' || (character !== undefined && isAsciiDigit(character))\n ? parseNumber(state)\n : false;\n }\n}\n\n/** @internal Check if a string is valid JSON */\nexport function isValidJson(value: string): boolean {\n const state: JsonState = { index: 0, text: value };\n if (!parseValue(state)) return false;\n skipWhitespace(state);\n return state.index === state.text.length;\n}\n",
|
|
20
|
+
"import type { SchemaIssueCatalog } from '../error/catalog-types.js';\nimport { enUSCatalog } from '../error/locales/en.js';\nimport { LocaleCatalogEntries } from '../locale/index.js';\nimport type { TSchema } from '../type/schema.js';\nimport { LocaleCodes, type LocaleIdentifier } from './locale.js';\nimport type { SettingsOptions, TypeSystemPolicyOptions } from './registries.js';\n\nexport type FormatValidator = (value: string) => boolean;\nexport type TypeValidator = (schema: TSchema, value: unknown) => boolean;\n\nexport interface RuntimeContextOptions {\n formats?: Iterable<readonly [string, FormatValidator]>;\n locale?: LocaleIdentifier;\n localeCatalogs?: Iterable<readonly [LocaleIdentifier, SchemaIssueCatalog]>;\n settings?: Partial<SettingsOptions>;\n typePolicy?: Partial<TypeSystemPolicyOptions>;\n types?: Iterable<readonly [string, TypeValidator]>;\n}\n\nconst builtinLocaleCatalogEntries = LocaleCatalogEntries();\n\nconst defaultTypePolicy: TypeSystemPolicyOptions = {\n AllowNaN: false,\n AllowArrayObject: false,\n AllowNullVoid: true,\n};\n\nconst defaultSettings: SettingsOptions = {\n correctiveParse: false,\n};\n\nlet runtimeContextCounter = 0;\n\nfunction cloneEntries<TValue>(\n entries: Iterable<readonly [string, TValue]>,\n): Array<readonly [string, TValue]> {\n return Array.from(entries, ([key, value]) => [key, value] as const);\n}\n\nexport class RuntimeContext {\n private readonly id = ++runtimeContextCounter;\n private revision = 0;\n private activeLocale: LocaleIdentifier;\n private readonly formatValidators = new Map<string, FormatValidator>();\n private readonly localeCatalogs = new Map<LocaleIdentifier, SchemaIssueCatalog>();\n private settings: SettingsOptions;\n private readonly typeValidators = new Map<string, TypeValidator>();\n private typePolicy: TypeSystemPolicyOptions;\n\n readonly FormatRegistry = {\n Clear: (): void => {\n this.formatValidators.clear();\n this.touch();\n },\n Delete: (name: string): boolean => {\n const deleted = this.formatValidators.delete(name);\n if (deleted) {\n this.touch();\n }\n return deleted;\n },\n Entries: (): Array<[string, FormatValidator]> => Array.from(this.formatValidators.entries()),\n Get: (name: string): FormatValidator | undefined => this.formatValidators.get(name),\n Has: (name: string): boolean => this.formatValidators.has(name),\n Set: (name: string, validator: FormatValidator): void => {\n this.formatValidators.set(name, validator);\n this.touch();\n },\n };\n\n readonly Locale = {\n ...LocaleCodes,\n Entries: (): Array<[LocaleIdentifier, SchemaIssueCatalog]> => Array.from(this.localeCatalogs.entries()),\n Get: (): LocaleIdentifier => this.activeLocale,\n GetCatalog: (locale: LocaleIdentifier = this.activeLocale): SchemaIssueCatalog =>\n this.localeCatalogs.get(locale) ?? this.localeCatalogs.get(LocaleCodes.en_US) ?? enUSCatalog,\n Has: (locale: LocaleIdentifier): boolean => this.localeCatalogs.has(locale),\n Register: (locale: LocaleIdentifier, catalog: SchemaIssueCatalog): void => {\n this.localeCatalogs.set(locale, catalog);\n this.touch();\n },\n Reset: (): void => {\n this.activeLocale = LocaleCodes.en_US;\n this.touch();\n },\n Set: (locale: LocaleIdentifier): void => {\n this.activeLocale = locale;\n this.touch();\n },\n };\n\n readonly Settings = {\n Get: (): Readonly<SettingsOptions> => this.settings,\n Reset: (): void => {\n this.settings = { ...defaultSettings };\n this.touch();\n },\n Set: (options: Partial<SettingsOptions>): void => {\n this.settings = { ...this.settings, ...options };\n this.touch();\n },\n };\n\n readonly TypeRegistry = {\n Clear: (): void => {\n this.typeValidators.clear();\n this.touch();\n },\n Delete: (kind: string): boolean => {\n const deleted = this.typeValidators.delete(kind);\n if (deleted) {\n this.touch();\n }\n return deleted;\n },\n Entries: (): Array<[string, TypeValidator]> => Array.from(this.typeValidators.entries()),\n Get: (kind: string): TypeValidator | undefined => this.typeValidators.get(kind),\n Has: (kind: string): boolean => this.typeValidators.has(kind),\n Set: (kind: string, validator: TypeValidator): void => {\n this.typeValidators.set(kind, validator);\n this.touch();\n },\n };\n\n readonly TypeSystemPolicy = {\n Get: (): Readonly<TypeSystemPolicyOptions> => this.typePolicy,\n Reset: (): void => {\n this.typePolicy = { ...defaultTypePolicy };\n this.touch();\n },\n Set: (options: Partial<TypeSystemPolicyOptions>): void => {\n this.typePolicy = { ...this.typePolicy, ...options };\n this.touch();\n },\n };\n\n constructor(options: RuntimeContextOptions = {}) {\n this.activeLocale = options.locale ?? LocaleCodes.en_US;\n this.settings = { ...defaultSettings, ...options.settings };\n this.typePolicy = { ...defaultTypePolicy, ...options.typePolicy };\n for (const [locale, catalog] of builtinLocaleCatalogEntries) {\n this.localeCatalogs.set(locale, catalog);\n }\n for (const [locale, catalog] of options.localeCatalogs ?? []) {\n this.localeCatalogs.set(locale, catalog);\n }\n for (const [name, validator] of options.formats ?? []) {\n this.formatValidators.set(name, validator);\n }\n for (const [kind, validator] of options.types ?? []) {\n this.typeValidators.set(kind, validator);\n }\n }\n\n Clone(options: RuntimeContextOptions = {}): RuntimeContext {\n return new RuntimeContext({\n formats: [...cloneEntries(this.formatValidators.entries()), ...(options.formats ?? [])],\n locale: options.locale ?? this.activeLocale,\n localeCatalogs: [...cloneEntries(this.localeCatalogs.entries()), ...(options.localeCatalogs ?? [])],\n settings: { ...this.settings, ...options.settings },\n typePolicy: { ...this.typePolicy, ...options.typePolicy },\n types: [...cloneEntries(this.typeValidators.entries()), ...(options.types ?? [])],\n });\n }\n\n CacheKey(namespace = 'runtime'): string {\n return `${namespace}:${this.id}:${this.revision}`;\n }\n\n private touch(): void {\n this.revision += 1;\n }\n}\n\nconst defaultRuntimeContext = new RuntimeContext();\n\nexport interface RuntimeContextCarrier {\n context?: RuntimeContext;\n}\n\nexport type RuntimeContextArg = RuntimeContext | RuntimeContextCarrier | undefined;\n\nexport function CreateRuntimeContext(options: RuntimeContextOptions = {}): RuntimeContext {\n return new RuntimeContext(options);\n}\n\nexport function getDefaultRuntimeContext(): RuntimeContext {\n return defaultRuntimeContext;\n}\n\nexport function resolveRuntimeContext(context: RuntimeContextArg): RuntimeContext {\n if (context instanceof RuntimeContext) {\n return context;\n }\n return context?.context ?? defaultRuntimeContext;\n}\n",
|
|
21
|
+
"import type { TSchema } from '../type/schema.js';\nimport {\n BASE64_RE,\n EMAIL_RE,\n HEXCLR_RE,\n HEX_RE,\n HOSTNAME_RE,\n ISO_DATE_RE,\n ISO_DT_RE,\n ISO_DUR_RE,\n ISO_TIME_RE,\n IPV4_RE,\n IPV6_RE,\n LUHN_DIGITS_RE,\n URI_RE,\n UUID_RE,\n} from './format-constants.js';\nimport { isValidJson, isValidRegex } from './regex-json.js';\nimport { resolveRuntimeContext, type RuntimeContextArg } from './runtime-context.js';\n\n/** @internal Luhn algorithm for credit card validation */\nexport function luhnCheck(digits: string): boolean {\n if (!LUHN_DIGITS_RE.test(digits)) return false;\n let sum = 0;\n let alternate = false;\n for (let index = digits.length - 1; index >= 0; index -= 1) {\n let digit = Number.parseInt(digits.charAt(index), 10);\n if (alternate) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n alternate = !alternate;\n }\n return sum % 10 === 0;\n}\n\n/** @internal Validate ISO date string (YYYY-MM-DD) for calendar correctness */\nexport function isValidISODate(value: string): boolean {\n const parts = value.split('-').map(Number);\n const year = parts[0];\n const month = parts[1];\n const day = parts[2];\n if (year === undefined || month === undefined || day === undefined) return false;\n const date = new globalThis.Date(year, month - 1, day);\n return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day;\n}\n\n/** @internal Validate a string against named format constraints */\nexport function validateFormat(\n value: string,\n format: string,\n context?: RuntimeContextArg,\n): boolean {\n const runtimeContext = resolveRuntimeContext(context);\n const custom = runtimeContext.FormatRegistry.Get(format);\n if (custom !== undefined) return custom(value);\n switch (format) {\n case 'email': return EMAIL_RE.test(value);\n case 'uri': return URI_RE.test(value);\n case 'ip': return IPV4_RE.test(value) || IPV6_RE.test(value);\n case 'hostname': return HOSTNAME_RE.test(value);\n case 'ipv4': return IPV4_RE.test(value);\n case 'ipv6': return IPV6_RE.test(value);\n case 'uuid': return UUID_RE.test(value);\n case 'date': return ISO_DATE_RE.test(value) && isValidISODate(value);\n case 'datetime': return ISO_DT_RE.test(value);\n case 'time': return ISO_TIME_RE.test(value);\n case 'duration': return ISO_DUR_RE.test(value);\n case 'base64': return BASE64_RE.test(value);\n case 'hex': return HEX_RE.test(value);\n case 'hexcolor': return HEXCLR_RE.test(value);\n case 'creditcard': return luhnCheck(value.replace(/\\D/g, ''));\n case 'regex': return isValidRegex(value);\n case 'json': return isValidJson(value);\n case 'uint8array': return BASE64_RE.test(value);\n default: return true;\n }\n}\n\n/** @internal Check string constraints (minLength, maxLength, pattern, format) */\nexport function checkStringConstraints(\n schema: TSchema & Record<string, unknown>,\n value: string,\n context?: RuntimeContextArg,\n): boolean {\n if (schema.minLength !== undefined && value.length < (schema.minLength as number)) return false;\n if (schema.maxLength !== undefined && value.length > (schema.maxLength as number)) return false;\n if (schema.pattern !== undefined) {\n const regex = new RegExp(schema.pattern as string);\n if (!regex.test(value)) return false;\n }\n return schema.format === undefined || validateFormat(value, schema.format as string, context);\n}\n\n/** @internal Check number constraints (min, max, exclusive, multipleOf) */\nexport function checkNumberConstraints(schema: TSchema & Record<string, unknown>, value: number): boolean {\n if (schema.minimum !== undefined && value < (schema.minimum as number)) return false;\n if (schema.maximum !== undefined && value > (schema.maximum as number)) return false;\n if (schema.exclusiveMinimum !== undefined && value <= (schema.exclusiveMinimum as number)) return false;\n if (schema.exclusiveMaximum !== undefined && value >= (schema.exclusiveMaximum as number)) return false;\n return schema.multipleOf === undefined || value % (schema.multipleOf as number) === 0;\n}\n",
|
|
22
|
+
"import { getDefaultRuntimeContext } from './runtime-context.js';\n\n/** @internal Configurable type system policy flags */\nexport interface TypeSystemPolicyOptions {\n AllowNaN: boolean;\n AllowArrayObject: boolean;\n AllowNullVoid: boolean;\n}\n\n/** @internal Global settings */\nexport interface SettingsOptions {\n correctiveParse: boolean;\n}\n\n/** Format registry for registering custom string format validators */\nexport const FormatRegistry = {\n Clear(): void {\n getDefaultRuntimeContext().FormatRegistry.Clear();\n },\n Delete(name: string): boolean {\n return getDefaultRuntimeContext().FormatRegistry.Delete(name);\n },\n Entries(): Array<[string, (value: string) => boolean]> {\n return getDefaultRuntimeContext().FormatRegistry.Entries();\n },\n Get(name: string): ((value: string) => boolean) | undefined {\n return getDefaultRuntimeContext().FormatRegistry.Get(name);\n },\n Has(name: string): boolean {\n return getDefaultRuntimeContext().FormatRegistry.Has(name);\n },\n Set(name: string, validator: (value: string) => boolean): void {\n getDefaultRuntimeContext().FormatRegistry.Set(name, validator);\n },\n};\n\n/** Type registry for registering custom kind validators */\nexport const TypeRegistry = {\n Clear(): void {\n getDefaultRuntimeContext().TypeRegistry.Clear();\n },\n Delete(kind: string): boolean {\n return getDefaultRuntimeContext().TypeRegistry.Delete(kind);\n },\n Entries(): Array<[string, (schema: import('../type/schema.js').TSchema, value: unknown) => boolean]> {\n return getDefaultRuntimeContext().TypeRegistry.Entries();\n },\n Get(kind: string): ((schema: import('../type/schema.js').TSchema, value: unknown) => boolean) | undefined {\n return getDefaultRuntimeContext().TypeRegistry.Get(kind);\n },\n Has(kind: string): boolean {\n return getDefaultRuntimeContext().TypeRegistry.Has(kind);\n },\n Set(kind: string, validator: (schema: import('../type/schema.js').TSchema, value: unknown) => boolean): void {\n getDefaultRuntimeContext().TypeRegistry.Set(kind, validator);\n },\n};\n\n/** Configurable type system policy */\nexport const TypeSystemPolicy = {\n Get(): Readonly<TypeSystemPolicyOptions> {\n return getDefaultRuntimeContext().TypeSystemPolicy.Get();\n },\n Reset(): void {\n getDefaultRuntimeContext().TypeSystemPolicy.Reset();\n },\n Set(options: Partial<TypeSystemPolicyOptions>): void {\n getDefaultRuntimeContext().TypeSystemPolicy.Set(options);\n },\n};\n\n/** Global settings registry */\nexport const Settings = {\n Get(): Readonly<SettingsOptions> {\n return getDefaultRuntimeContext().Settings.Get();\n },\n Reset(): void {\n getDefaultRuntimeContext().Settings.Reset();\n },\n Set(options: Partial<SettingsOptions>): void {\n getDefaultRuntimeContext().Settings.Set(options);\n },\n};\n",
|
|
23
|
+
"export type SchemaObject = { [key: string]: unknown };\nexport type XSchema = boolean | SchemaObject;\nexport type SchemaContext = Record<PropertyKey, XSchema>;\n\ntype SchemaProperties = Record<string, XSchema>;\ntype RequiredKeys<Schema> = Schema extends { required: readonly (infer Keys)[] } ? Extract<Keys, string> : never;\ntype OptionalKeys<Schema> = Schema extends { properties: infer Props extends SchemaProperties }\n ? Exclude<keyof Props, RequiredKeys<Schema>>\n : never;\n\nexport type XStatic<Schema extends XSchema> =\n Schema extends boolean ? unknown\n : Schema extends { const: infer Const } ? Const\n : Schema extends { enum: readonly (infer Entry)[] } ? Entry\n : Schema extends { type: 'string' } ? string\n : Schema extends { type: 'number' | 'integer' } ? number\n : Schema extends { type: 'boolean' } ? boolean\n : Schema extends { type: 'null' } ? null\n : Schema extends { type: 'array', items: infer Items extends XSchema } ? Array<XStatic<Items>>\n : Schema extends { type: 'array', prefixItems: infer Items extends readonly XSchema[] }\n ? { [Index in keyof Items]: XStatic<Items[Index]> }\n : Schema extends { type: 'object', properties: infer Props extends SchemaProperties }\n ? { [Key in RequiredKeys<Schema>]: Key extends keyof Props ? XStatic<Props[Key]> : unknown }\n & { [Key in OptionalKeys<Schema>]?: Key extends keyof Props ? XStatic<Props[Key]> : unknown }\n : unknown;\n\nexport function IsArray(value: unknown): value is unknown[] {\n return Array.isArray(value);\n}\n\nexport function IsObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nexport function IsPlainObject(value: unknown): value is Record<string, unknown> {\n return IsObject(value) && !Array.isArray(value);\n}\n\nexport function IsSchemaObject(value: unknown): value is SchemaObject {\n return IsObject(value);\n}\n\nexport function IsSchema(value: unknown): value is XSchema {\n return typeof value === 'boolean' || IsSchemaObject(value);\n}\n\nexport function HasPropertyKey(value: Record<string, unknown>, key: string): boolean {\n return key in value;\n}\n\nexport function HasString(value: Record<string, unknown>, key: string): value is Record<string, string> {\n return typeof value[key] === 'string';\n}\n\nexport function HasNumber(value: Record<string, unknown>, key: string): value is Record<string, number> {\n return typeof value[key] === 'number' && Number.isFinite(value[key]);\n}\n\nexport function HasBoolean(value: Record<string, unknown>, key: string): value is Record<string, boolean> {\n return typeof value[key] === 'boolean';\n}\n\nexport function HasArray(value: Record<string, unknown>, key: string): value is Record<string, unknown[]> {\n return Array.isArray(value[key]);\n}\n\nexport function HasObject(value: Record<string, unknown>, key: string): value is Record<string, SchemaObject> {\n return IsObject(value[key]);\n}\n\nexport function HasArrayOfStrings(value: Record<string, unknown>, key: string): value is Record<string, string[]> {\n return Array.isArray(value[key]) && value[key].every((entry) => typeof entry === 'string');\n}\n\nexport function Keys(value: Record<string, unknown>): string[] {\n return Object.keys(value);\n}\n\nexport function Entries(value: Record<string, unknown>): Array<[string, unknown]> {\n return Object.entries(value);\n}\n\nexport function NormalizeArgs(args: [XSchema, unknown] | [SchemaContext, XSchema, unknown]): [SchemaContext, XSchema, unknown] {\n return args.length === 2 ? [{}, args[0], args[1]] : [args[0], args[1], args[2]];\n}\n\nexport function DecodePointerToken(token: string): string {\n return token.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n\nexport function MatchesType(type: unknown, value: unknown): boolean {\n if (Array.isArray(type)) {\n return type.some((entry) => MatchesType(entry, value));\n }\n if (typeof type !== 'string') {\n return true;\n }\n switch (type) {\n case 'array':\n return Array.isArray(value);\n case 'boolean':\n return typeof value === 'boolean';\n case 'integer':\n return typeof value === 'number' && Number.isInteger(value);\n case 'null':\n return value === null;\n case 'number':\n return typeof value === 'number' && Number.isFinite(value);\n case 'object':\n return IsPlainObject(value);\n case 'string':\n return typeof value === 'string';\n default:\n return true;\n }\n}\n\nexport function UniqueItems(items: unknown[]): boolean {\n const seen = new Set<string>();\n for (const item of items) {\n const signature = JSON.stringify(item);\n if (seen.has(signature)) {\n return false;\n }\n seen.add(signature);\n }\n return true;\n}\n\nexport function ProjectSchema(schema: XSchema, keys: readonly string[], defaults: Record<string, unknown> = {}): XSchema {\n if (typeof schema === 'boolean') {\n return schema;\n }\n const projected: Record<string, unknown> = { ...defaults };\n for (const key of keys) {\n if (key in schema) {\n projected[key] = schema[key];\n }\n }\n return projected;\n}\n",
|
|
24
|
+
"import { DecodePointerToken, IsArray, IsObject } from './shared.js';\n\nfunction assertNotRoot(indices: string[]): void {\n if (indices.length === 0) {\n throw new Error('Cannot set root');\n }\n}\n\nfunction assertIndexable(value: unknown): asserts value is Record<string, unknown> | unknown[] {\n if (!IsObject(value)) {\n throw new Error('Cannot set value');\n }\n}\n\nfunction hasIndex(index: string, value: unknown): boolean {\n return IsObject(value) && index in value;\n}\n\nfunction getIndex(index: string, value: unknown): unknown {\n return IsObject(value) ? value[index] : undefined;\n}\n\nfunction takeIndexRight(indices: string[]): [string[], string] {\n return [indices.slice(0, indices.length - 1), indices[indices.length - 1] ?? ''];\n}\n\nfunction getIndices(indices: string[], value: unknown): unknown {\n return indices.reduce<unknown>((current, index) => getIndex(index, current), value);\n}\n\nfunction isNumericIndex(index: string): boolean {\n return /^(0|[1-9]\\d*)$/.test(index);\n}\n\nexport function Indices(pointer: string): string[] {\n if (pointer.length === 0) {\n return [];\n }\n const indices = pointer.split('/').map(DecodePointerToken);\n return indices.length > 0 && indices[0] === '' ? indices.slice(1) : indices;\n}\n\nexport function Has(value: unknown, pointer: string): boolean {\n let current = value;\n return Indices(pointer).every((index) => {\n if (!hasIndex(index, current)) {\n return false;\n }\n current = getIndex(index, current);\n return true;\n });\n}\n\nexport function Get(value: unknown, pointer: string): unknown {\n return getIndices(Indices(pointer), value);\n}\n\nexport function Set<T>(value: T, pointer: string, next: unknown): T {\n const indices = Indices(pointer);\n assertNotRoot(indices);\n const [head, index] = takeIndexRight(indices);\n const parent = getIndices(head, value);\n assertIndexable(parent);\n if (Array.isArray(parent) && isNumericIndex(index)) {\n parent[Number(index)] = next;\n } else if (IsObject(parent)) {\n parent[index] = next;\n }\n return value;\n}\n\nexport function Delete<T>(value: T, pointer: string): T {\n const indices = Indices(pointer);\n assertNotRoot(indices);\n const [head, index] = takeIndexRight(indices);\n const parent = getIndices(head, value);\n assertIndexable(parent);\n if (IsArray(parent) && isNumericIndex(index)) {\n parent.splice(Number(index), 1);\n } else {\n delete (parent as Record<string, unknown>)[index];\n }\n return value;\n}\n\nexport const Pointer = {\n Delete,\n Get,\n Has,\n Indices,\n Set,\n};\n",
|
|
25
|
+
"import { Get } from './pointer.js';\nimport { DecodePointerToken, Entries, HasString, IsArray, IsObject, IsSchema, IsSchemaObject, Keys, type XSchema } from './shared.js';\n\nfunction matchHash(schema: XSchema, ref: URL): XSchema | undefined {\n if (ref.href.endsWith('#')) {\n return schema;\n }\n if (!ref.hash.startsWith('#')) {\n return undefined;\n }\n const value = Get(schema, decodeURIComponent(DecodePointerToken(ref.hash.slice(1))));\n return IsSchema(value) ? value : undefined;\n}\n\nfunction matchId(schema: Record<string, unknown>, base: URL, ref: URL): XSchema | undefined {\n const id = schema['$id'];\n if (typeof id !== 'string') {\n return undefined;\n }\n if (id === ref.hash) {\n return schema;\n }\n const absoluteId = new URL(id, base.href);\n const absoluteRef = new URL(ref.href, base.href);\n if (absoluteId.pathname === absoluteRef.pathname) {\n return ref.hash.startsWith('#') ? matchHash(schema, ref) : schema;\n }\n return undefined;\n}\n\nfunction matchAnchor(schema: Record<string, unknown>, base: URL, ref: URL): XSchema | undefined {\n const anchor = schema['$anchor'];\n if (typeof anchor !== 'string') {\n return undefined;\n }\n const absoluteAnchor = new URL(`#${anchor}`, base.href);\n const absoluteRef = new URL(ref.href, base.href);\n return absoluteAnchor.href === absoluteRef.href ? schema : undefined;\n}\n\nfunction match(schema: Record<string, unknown>, base: URL, ref: URL): XSchema | undefined {\n return matchId(schema, base, ref) ?? matchAnchor(schema, base, ref) ?? matchHash(schema, ref);\n}\n\nfunction fromArray(values: unknown[], base: URL, ref: URL): XSchema | undefined {\n for (const value of values) {\n const found = fromValue(value, base, ref);\n if (found !== undefined) {\n return found;\n }\n }\n return undefined;\n}\n\nfunction fromObject(schema: Record<string, unknown>, base: URL, ref: URL): XSchema | undefined {\n for (const key of Keys(schema)) {\n const found = fromValue(schema[key], base, ref);\n if (found !== undefined) {\n return found;\n }\n }\n return undefined;\n}\n\nfunction fromValue(value: unknown, base: URL, ref: URL): XSchema | undefined {\n const nextId = IsSchemaObject(value) ? value['$id'] : undefined;\n const nextBase = typeof nextId === 'string' ? new URL(nextId, base.href) : base;\n if (IsSchemaObject(value)) {\n const found = match(value, nextBase, ref);\n if (found !== undefined) {\n return found;\n }\n }\n if (IsArray(value)) {\n return fromArray(value, nextBase, ref);\n }\n if (IsObject(value)) {\n return fromObject(value, nextBase, ref);\n }\n return undefined;\n}\n\nexport function Ref(schema: XSchema, ref: string): XSchema | undefined {\n const defaultBase = new URL('http://unknown');\n const initialId = IsSchemaObject(schema) ? schema['$id'] : undefined;\n const initialBase = typeof initialId === 'string' ? new URL(initialId, defaultBase.href) : defaultBase;\n const targetRef = new URL(ref, initialBase.href);\n return fromValue(schema, initialBase, targetRef);\n}\n\nexport const Resolve = {\n Ref,\n};\n",
|
|
26
|
+
"import {\n HasArray,\n HasBoolean,\n HasObject,\n HasPropertyKey,\n HasString,\n IsSchema as isSchemaValue,\n IsSchemaObject as isSchemaObjectValue,\n type XSchema,\n} from './shared.js';\n\nfunction hasKeyword(keyword: string): (schema: XSchema) => boolean {\n return (schema) => isSchemaObjectValue(schema) && HasPropertyKey(schema, keyword);\n}\n\nexport const IsSchemaObject = (schema: XSchema): boolean => isSchemaObjectValue(schema);\nexport const IsBooleanSchema = (schema: XSchema): boolean => typeof schema === 'boolean';\nexport const IsSchema = (schema: XSchema): boolean => isSchemaValue(schema);\nexport const IsAdditionalItems = hasKeyword('additionalItems');\nexport const IsAdditionalProperties = hasKeyword('additionalProperties');\nexport const IsAllOf = hasKeyword('allOf');\nexport const IsAnchor = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasString(schema, '$anchor');\nexport const IsAnyOf = hasKeyword('anyOf');\nexport const IsConst = hasKeyword('const');\nexport const IsContains = hasKeyword('contains');\nexport const IsContentEncoding = hasKeyword('contentEncoding');\nexport const IsContentMediaType = hasKeyword('contentMediaType');\nexport const IsDefault = hasKeyword('default');\nexport const IsDefs = hasKeyword('$defs');\nexport const IsDependencies = hasKeyword('dependencies');\nexport const IsDependentRequired = hasKeyword('dependentRequired');\nexport const IsDependentSchemas = hasKeyword('dependentSchemas');\nexport const IsDynamicAnchor = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasString(schema, '$dynamicAnchor');\nexport const IsDynamicRef = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasString(schema, '$dynamicRef');\nexport const IsElse = hasKeyword('else');\nexport const IsEnum = hasKeyword('enum');\nexport const IsExclusiveMaximum = hasKeyword('exclusiveMaximum');\nexport const IsExclusiveMinimum = hasKeyword('exclusiveMinimum');\nexport const IsFormat = hasKeyword('format');\nexport const IsGuard = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasObject(schema, '~guard');\nexport const IsGuardInterface = IsGuard;\nexport const IsId = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasString(schema, '$id');\nexport const IsIf = hasKeyword('if');\nexport const IsItems = hasKeyword('items');\nexport const IsItemsSized = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasArray(schema, 'prefixItems');\nexport const IsItemsUnsized = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasPropertyKey(schema, 'items') && !HasArray(schema, 'prefixItems');\nexport const IsMaxContains = hasKeyword('maxContains');\nexport const IsMaxItems = hasKeyword('maxItems');\nexport const IsMaxLength = hasKeyword('maxLength');\nexport const IsMaxProperties = hasKeyword('maxProperties');\nexport const IsMaximum = hasKeyword('maximum');\nexport const IsMinContains = hasKeyword('minContains');\nexport const IsMinItems = hasKeyword('minItems');\nexport const IsMinLength = hasKeyword('minLength');\nexport const IsMinProperties = hasKeyword('minProperties');\nexport const IsMinimum = hasKeyword('minimum');\nexport const IsMultipleOf = hasKeyword('multipleOf');\nexport const IsNot = hasKeyword('not');\nexport const IsOneOf = hasKeyword('oneOf');\nexport const IsPattern = hasKeyword('pattern');\nexport const IsPatternProperties = hasKeyword('patternProperties');\nexport const IsPrefixItems = hasKeyword('prefixItems');\nexport const IsProperties = hasKeyword('properties');\nexport const IsPropertyNames = hasKeyword('propertyNames');\nexport const IsRecursiveAnchor = hasKeyword('$recursiveAnchor');\nexport const IsRecursiveAnchorTrue = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasBoolean(schema, '$recursiveAnchor') && schema.$recursiveAnchor === true;\nexport const IsRecursiveRef = hasKeyword('$recursiveRef');\nexport const IsRef = hasKeyword('$ref');\nexport const IsRefine = (schema: XSchema): boolean => isSchemaObjectValue(schema) && HasArray(schema, '~refine');\nexport const IsRequired = hasKeyword('required');\nexport const IsThen = hasKeyword('then');\nexport const IsType = hasKeyword('type');\nexport const IsUnevaluatedItems = hasKeyword('unevaluatedItems');\nexport const IsUnevaluatedProperties = hasKeyword('unevaluatedProperties');\nexport const IsUniqueItems = hasKeyword('uniqueItems');\n",
|
|
27
|
+
"import { FormatRegistry } from '../shared/registries.js';\nimport { Entries, IsObject, IsPlainObject, IsSchema, type SchemaContext, type XSchema } from './shared.js';\n\nexport function MatchesType(type: unknown, value: unknown): boolean {\n if (Array.isArray(type)) {\n return type.some((entry) => MatchesType(entry, value));\n }\n if (typeof type !== 'string') {\n return true;\n }\n switch (type) {\n case 'array':\n return Array.isArray(value);\n case 'boolean':\n return typeof value === 'boolean';\n case 'integer':\n return typeof value === 'number' && Number.isInteger(value);\n case 'null':\n return value === null;\n case 'number':\n return typeof value === 'number' && Number.isFinite(value);\n case 'object':\n return IsPlainObject(value);\n case 'string':\n return typeof value === 'string';\n default:\n return true;\n }\n}\n\nfunction uniqueItems(items: unknown[]): boolean {\n const seen = new Set<string>();\n for (const item of items) {\n const signature = JSON.stringify(item);\n if (seen.has(signature)) {\n return false;\n }\n seen.add(signature);\n }\n return true;\n}\n\nexport function CheckStringKeywords(record: Record<string, unknown>, value: unknown): boolean {\n if (typeof value !== 'string') {\n return true;\n }\n const minLength = record['minLength'];\n if (typeof minLength === 'number' && value.length < minLength) {\n return false;\n }\n const maxLength = record['maxLength'];\n if (typeof maxLength === 'number' && value.length > maxLength) {\n return false;\n }\n const pattern = record['pattern'];\n if (typeof pattern === 'string' && !new RegExp(pattern).test(value)) {\n return false;\n }\n const format = record['format'];\n if (typeof format === 'string') {\n const validator = FormatRegistry.Get(format);\n if (validator !== undefined && !validator(value)) {\n return false;\n }\n }\n return true;\n}\n\nexport function CheckNumberKeywords(record: Record<string, unknown>, value: unknown): boolean {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return true;\n }\n const minimum = record['minimum'];\n if (typeof minimum === 'number' && value < minimum) {\n return false;\n }\n const maximum = record['maximum'];\n if (typeof maximum === 'number' && value > maximum) {\n return false;\n }\n const exclusiveMinimum = record['exclusiveMinimum'];\n if (typeof exclusiveMinimum === 'number' && value <= exclusiveMinimum) {\n return false;\n }\n const exclusiveMaximum = record['exclusiveMaximum'];\n if (typeof exclusiveMaximum === 'number' && value >= exclusiveMaximum) {\n return false;\n }\n const multipleOf = record['multipleOf'];\n if (typeof multipleOf === 'number' && value % multipleOf !== 0) {\n return false;\n }\n return true;\n}\n\nexport function CheckArrayKeywords(\n check: (context: SchemaContext, schema: XSchema, value: unknown, root: XSchema) => boolean,\n context: SchemaContext,\n record: Record<string, unknown>,\n value: unknown,\n root: XSchema,\n): boolean {\n if (!Array.isArray(value)) {\n return true;\n }\n const minItems = record['minItems'];\n if (typeof minItems === 'number' && value.length < minItems) {\n return false;\n }\n const maxItems = record['maxItems'];\n if (typeof maxItems === 'number' && value.length > maxItems) {\n return false;\n }\n if (record['uniqueItems'] === true && !uniqueItems(value)) {\n return false;\n }\n const prefixItems = Array.isArray(record['prefixItems']) ? record['prefixItems'] : undefined;\n if (prefixItems !== undefined) {\n for (let index = 0; index < prefixItems.length; index += 1) {\n const itemSchema = prefixItems[index];\n if (IsSchema(itemSchema) && !check(context, itemSchema, value[index], root)) {\n return false;\n }\n }\n }\n const items = IsSchema(record['items']) ? record['items'] : undefined;\n if (items !== undefined) {\n const start = prefixItems?.length ?? 0;\n for (let index = start; index < value.length; index += 1) {\n if (!check(context, items, value[index], root)) {\n return false;\n }\n }\n }\n const additionalItems = IsSchema(record['additionalItems']) ? record['additionalItems'] : undefined;\n if (additionalItems !== undefined && prefixItems !== undefined && items === undefined) {\n for (let index = prefixItems.length; index < value.length; index += 1) {\n if (!check(context, additionalItems, value[index], root)) {\n return false;\n }\n }\n }\n const unevaluatedItems = IsSchema(record['unevaluatedItems']) ? record['unevaluatedItems'] : undefined;\n if (unevaluatedItems !== undefined && prefixItems !== undefined && items === undefined) {\n for (let index = prefixItems.length; index < value.length; index += 1) {\n if (!check(context, unevaluatedItems, value[index], root)) {\n return false;\n }\n }\n }\n const contains = IsSchema(record['contains']) ? record['contains'] : undefined;\n if (contains !== undefined) {\n const count = value.filter((entry) => check(context, contains, entry, root)).length;\n if (count === 0) {\n return false;\n }\n const minContains = record['minContains'];\n if (typeof minContains === 'number' && count < minContains) {\n return false;\n }\n const maxContains = record['maxContains'];\n if (typeof maxContains === 'number' && count > maxContains) {\n return false;\n }\n }\n return true;\n}\n\nexport function CheckObjectKeywords(\n check: (context: SchemaContext, schema: XSchema, value: unknown, root: XSchema) => boolean,\n context: SchemaContext,\n record: Record<string, unknown>,\n value: unknown,\n root: XSchema,\n): boolean {\n if (!IsPlainObject(value)) {\n return true;\n }\n const keys = Object.keys(value);\n const minProperties = record['minProperties'];\n if (typeof minProperties === 'number' && keys.length < minProperties) {\n return false;\n }\n const maxProperties = record['maxProperties'];\n if (typeof maxProperties === 'number' && keys.length > maxProperties) {\n return false;\n }\n const required = Array.isArray(record['required']) ? record['required'] : undefined;\n if (required !== undefined && !required.every((entry) => typeof entry === 'string' && entry in value)) {\n return false;\n }\n const propertyNames = IsSchema(record['propertyNames']) ? record['propertyNames'] : undefined;\n if (propertyNames !== undefined && !keys.every((key) => check(context, propertyNames, key, root))) {\n return false;\n }\n const properties = IsObject(record['properties']) ? record['properties'] : undefined;\n const patternProperties = IsObject(record['patternProperties']) ? record['patternProperties'] : undefined;\n for (const key of keys) {\n const propertySchema = properties?.[key];\n const matchedPatterns = patternProperties === undefined\n ? []\n : Entries(patternProperties)\n .filter(([pattern, schema]) => new RegExp(pattern).test(key) && IsSchema(schema))\n .map(([, schema]) => schema as XSchema);\n if (IsSchema(propertySchema) && !check(context, propertySchema, value[key], root)) {\n return false;\n }\n if (matchedPatterns.some((schema) => !check(context, schema, value[key], root))) {\n return false;\n }\n if (propertySchema === undefined && matchedPatterns.length === 0) {\n const additionalProperties = record['additionalProperties'];\n if (additionalProperties === false) {\n return false;\n }\n if (IsSchema(additionalProperties) && !check(context, additionalProperties, value[key], root)) {\n return false;\n }\n const unevaluatedProperties = record['unevaluatedProperties'];\n if (unevaluatedProperties === false) {\n return false;\n }\n if (IsSchema(unevaluatedProperties) && !check(context, unevaluatedProperties, value[key], root)) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport function CheckDependentKeywords(\n check: (context: SchemaContext, schema: XSchema, value: unknown, root: XSchema) => boolean,\n context: SchemaContext,\n record: Record<string, unknown>,\n value: unknown,\n root: XSchema,\n): boolean {\n if (!IsPlainObject(value)) {\n return true;\n }\n const dependentRequired = IsObject(record['dependentRequired']) ? record['dependentRequired'] : undefined;\n if (dependentRequired !== undefined) {\n for (const [key, dependency] of Entries(dependentRequired)) {\n if (key in value && Array.isArray(dependency) && !dependency.every((entry) => typeof entry === 'string' && entry in value)) {\n return false;\n }\n }\n }\n const dependentSchemas = IsObject(record['dependentSchemas']) ? record['dependentSchemas'] : undefined;\n if (dependentSchemas !== undefined) {\n for (const [key, dependency] of Entries(dependentSchemas)) {\n if (key in value && IsSchema(dependency) && !check(context, dependency, value, root)) {\n return false;\n }\n }\n }\n const dependencies = IsObject(record['dependencies']) ? record['dependencies'] : undefined;\n if (dependencies !== undefined) {\n for (const [key, dependency] of Entries(dependencies)) {\n if (!(key in value)) {\n continue;\n }\n if (Array.isArray(dependency) && !dependency.every((entry) => typeof entry === 'string' && entry in value)) {\n return false;\n }\n if (IsSchema(dependency) && !check(context, dependency, value, root)) {\n return false;\n }\n }\n }\n return true;\n}\n",
|
|
28
|
+
"import { Ref } from './resolve.js';\nimport {\n CheckArrayKeywords,\n CheckDependentKeywords,\n CheckNumberKeywords,\n CheckObjectKeywords,\n CheckStringKeywords,\n MatchesType,\n} from './core-keywords.js';\nimport { IsObject, IsSchema, type SchemaContext, type XSchema } from './shared.js';\n\nfunction resolveReferencedSchema(context: SchemaContext, schema: XSchema, root: XSchema): XSchema | undefined {\n const schemaRecord = schema as Record<string, unknown>;\n const refKeys = ['$ref', '$recursiveRef', '$dynamicRef'] as const;\n for (const key of refKeys) {\n const value = schemaRecord[key];\n const ref = typeof value === 'string' ? value : undefined;\n if (ref !== undefined) {\n return context[ref] ?? Ref(root, ref);\n }\n }\n return undefined;\n}\n\nfunction checkCoreKeywords(context: SchemaContext, schema: Exclude<XSchema, boolean>, value: unknown, root: XSchema): boolean {\n if ('const' in schema && !Object.is(schema['const'], value)) {\n return false;\n }\n const enumValues = Array.isArray(schema['enum']) ? schema['enum'] : undefined;\n if (enumValues !== undefined && !enumValues.some((entry) => Object.is(entry, value))) {\n return false;\n }\n if ('type' in schema && !MatchesType(schema['type'], value)) {\n return false;\n }\n if (!CheckStringKeywords(schema, value) || !CheckNumberKeywords(schema, value)) {\n return false;\n }\n if (!CheckArrayKeywords(CheckSchemaValue, context, schema, value, root) || !CheckObjectKeywords(CheckSchemaValue, context, schema, value, root)) {\n return false;\n }\n return CheckDependentKeywords(CheckSchemaValue, context, schema, value, root);\n}\n\nfunction checkCompositionKeywords(context: SchemaContext, schema: Exclude<XSchema, boolean>, value: unknown, root: XSchema): boolean {\n const allOf = Array.isArray(schema['allOf']) ? schema['allOf'] : undefined;\n if (allOf !== undefined && !allOf.every((entry) => IsSchema(entry) && CheckSchemaValue(context, entry, value, root))) {\n return false;\n }\n const anyOf = Array.isArray(schema['anyOf']) ? schema['anyOf'] : undefined;\n if (anyOf !== undefined && !anyOf.some((entry) => IsSchema(entry) && CheckSchemaValue(context, entry, value, root))) {\n return false;\n }\n const oneOf = Array.isArray(schema['oneOf']) ? schema['oneOf'] : undefined;\n if (oneOf !== undefined) {\n const matches = oneOf.filter((entry) => IsSchema(entry) && CheckSchemaValue(context, entry, value, root));\n if (matches.length !== 1) {\n return false;\n }\n }\n return true;\n}\n\nfunction checkConditionalKeywords(context: SchemaContext, schema: Exclude<XSchema, boolean>, value: unknown, root: XSchema): boolean {\n const notSchema = IsSchema(schema['not']) ? schema['not'] : undefined;\n if (notSchema !== undefined && CheckSchemaValue(context, notSchema, value, root)) {\n return false;\n }\n const ifSchema = IsSchema(schema['if']) ? schema['if'] : undefined;\n if (ifSchema !== undefined) {\n const matched = CheckSchemaValue(context, ifSchema, value, root);\n const thenSchema = IsSchema(schema['then']) ? schema['then'] : undefined;\n const elseSchema = IsSchema(schema['else']) ? schema['else'] : undefined;\n if (matched && thenSchema !== undefined) {\n return CheckSchemaValue(context, thenSchema, value, root);\n }\n if (!matched && elseSchema !== undefined) {\n return CheckSchemaValue(context, elseSchema, value, root);\n }\n }\n return true;\n}\n\nfunction checkExtensionKeywords(context: SchemaContext, schema: Exclude<XSchema, boolean>, value: unknown, root: XSchema): boolean {\n const guard = IsObject(schema['~guard']) ? schema['~guard'] : undefined;\n if (guard !== undefined && typeof guard['check'] === 'function' && !guard['check'](value)) {\n return false;\n }\n const refine = Array.isArray(schema['~refine']) ? schema['~refine'] : undefined;\n if (refine !== undefined && !refine.every((entry) => IsObject(entry) && typeof entry['refine'] === 'function' && entry['refine'](value))) {\n return false;\n }\n return true;\n}\n\nexport function CheckSchemaValue(context: SchemaContext, schema: XSchema, value: unknown, root: XSchema = schema): boolean {\n if (typeof schema === 'boolean') {\n return schema;\n }\n\n const resolved = resolveReferencedSchema(context, schema, root);\n if (resolved !== undefined) {\n return CheckSchemaValue(context, resolved, value, root);\n }\n\n return checkCoreKeywords(context, schema, value, root)\n && checkCompositionKeywords(context, schema, value, root)\n && checkConditionalKeywords(context, schema, value, root)\n && checkExtensionKeywords(context, schema, value, root);\n}\n",
|
|
29
|
+
"import type { SchemaError } from '../error/errors.js';\nimport { Ref } from './resolve.js';\nimport { CheckSchemaValue } from './core.js';\nimport { HasBoolean, HasObject, HasString, IsArray, IsObject, IsSchemaObject, Keys, type SchemaContext, type XSchema } from './shared.js';\n\nconst externalState: { identifier: string; variables: unknown[] } = {\n identifier: 'external_0',\n variables: [],\n};\n\nlet resetCount = 1;\nconst functions = new Map<string, string>();\n\nfunction scanUnevaluated(value: unknown): boolean {\n if (IsArray(value)) {\n return value.some((entry) => scanUnevaluated(entry));\n }\n if (IsObject(value)) {\n return Keys(value).some((key) => key === 'unevaluatedItems' || key === 'unevaluatedProperties' || scanUnevaluated(value[key]));\n }\n return false;\n}\n\nexport function HasUnevaluated(context: SchemaContext, schema: XSchema): boolean {\n return scanUnevaluated(schema) || Object.keys(context).some((key) => scanUnevaluated(context[key]));\n}\n\nexport class BuildContext {\n constructor(private readonly hasUnevaluated: boolean) {}\n\n UseUnevaluated(): boolean {\n return this.hasUnevaluated;\n }\n\n AddIndex(index: number): string {\n return `context.AddIndex(${index})`;\n }\n\n AddKey(key: string): string {\n return `context.AddKey(${JSON.stringify(key)})`;\n }\n\n Merge(results: string): string {\n return `context.Merge(${results})`;\n }\n}\n\nexport class CheckContext {\n private readonly indices = new Set<number>();\n private readonly keys = new Set<string>();\n\n AddIndex(index: number): boolean {\n this.indices.add(index);\n return true;\n }\n\n AddKey(key: string): boolean {\n this.keys.add(key);\n return true;\n }\n\n GetIndices(): Set<number> {\n return this.indices;\n }\n\n GetKeys(): Set<string> {\n return this.keys;\n }\n\n Merge(results: CheckContext[]): boolean {\n results.forEach((result) => {\n result.indices.forEach((entry) => this.indices.add(entry));\n result.keys.forEach((entry) => this.keys.add(entry));\n });\n return true;\n }\n}\n\nexport class ErrorContext extends CheckContext {\n constructor(private readonly callback: (error: SchemaError | Record<string, unknown>) => void) {\n super();\n }\n\n AddError(error: SchemaError | Record<string, unknown>): false {\n this.callback(error);\n return false;\n }\n}\n\nexport class AccumulatedErrorContext extends ErrorContext {\n private readonly errors: Array<SchemaError | Record<string, unknown>> = [];\n\n constructor() {\n super((error) => {\n this.errors.push(error);\n });\n }\n\n override AddError(error: SchemaError | Record<string, unknown>): false {\n this.errors.push(error);\n return false;\n }\n\n GetErrors(): Array<SchemaError | Record<string, unknown>> {\n return this.errors;\n }\n}\n\nexport function ResetExternal(): void {\n externalState.identifier = `external_${resetCount}`;\n externalState.variables = [];\n resetCount += 1;\n}\n\nexport function CreateVariable(value: unknown): string {\n const call = `${externalState.identifier}[${externalState.variables.length}]`;\n externalState.variables.push(value);\n return call;\n}\n\nexport function GetExternal(): { identifier: string; variables: unknown[] } {\n return externalState;\n}\n\nexport function ResetFunctions(): void {\n functions.clear();\n}\n\nexport function GetFunctions(): string[] {\n return Array.from(functions.values());\n}\n\nexport class Stack {\n private readonly ids: Record<string, unknown>[] = [];\n private readonly anchors: Record<string, unknown>[] = [];\n\n constructor(private readonly context: SchemaContext, private readonly schema: XSchema) {}\n\n BaseURL(): URL {\n return this.ids.reduce((result, schema) => {\n const id = schema['$id'];\n return typeof id === 'string' ? new URL(id, result.href) : result;\n }, new URL('http://unknown'));\n }\n\n Base(): XSchema {\n return this.ids[this.ids.length - 1] ?? this.schema;\n }\n\n Push(schema: unknown): void {\n if (!IsSchemaObject(schema)) {\n return;\n }\n if (HasString(schema, '$id')) {\n this.ids.push(schema);\n }\n if (HasString(schema, '$anchor')) {\n this.anchors.push(schema);\n }\n }\n\n Pop(schema: unknown): void {\n if (!IsSchemaObject(schema)) {\n return;\n }\n if (HasString(schema, '$id')) {\n this.ids.pop();\n }\n if (HasString(schema, '$anchor')) {\n this.anchors.pop();\n }\n }\n\n Ref(ref: string): XSchema | undefined {\n return this.context[ref] ?? Ref(this.Base(), ref);\n }\n\n RecursiveRef(ref: string): XSchema | undefined {\n return this.Ref(ref);\n }\n}\n\nexport function CreateFunction(_stack: Stack, _context: BuildContext, schema: XSchema, value: string): string {\n const identifier = `check_${functions.size}`;\n if (!functions.has(identifier)) {\n functions.set(identifier, `const ${identifier} = (${value}) => ${JSON.stringify(schema)};`);\n }\n return `${identifier}(${value})`;\n}\n\nexport function Reducer(stack: Stack, context: CheckContext, schemas: XSchema[], value: unknown, check: boolean): boolean {\n const results = schemas\n .map((schema) => {\n const next = new CheckContext();\n return CheckSchemaValue({}, schema, value, stack.Base()) ? next : undefined;\n })\n .filter((entry): entry is CheckContext => entry instanceof CheckContext);\n return check && context.Merge(results);\n}\n\nexport function BuildGuard(_stack: Stack, _context: BuildContext, _schema: XSchema, value: string): string {\n return `typeof ${value} !== 'undefined'`;\n}\n\nexport function CheckGuard(_stack: Stack, _context: CheckContext, schema: XSchema, value: unknown): boolean {\n if (!IsSchemaObject(schema) || !HasObject(schema, '~guard')) {\n return true;\n }\n const guard = schema['~guard'];\n if (!IsObject(guard)) {\n return true;\n }\n return typeof guard['check'] === 'function' ? guard['check'](value) : true;\n}\n\nexport function ErrorGuard(stack: Stack, context: ErrorContext, schemaPath: string, instancePath: string, schema: XSchema, value: unknown): boolean {\n if (CheckGuard(stack, context, schema, value)) {\n return true;\n }\n return context.AddError({ keyword: '~guard', schemaPath, instancePath, params: { value } });\n}\n\nexport function BuildRefine(_stack: Stack, _context: BuildContext, _schema: XSchema, value: string): string {\n return `typeof ${value} !== 'undefined'`;\n}\n\nexport function CheckRefine(_stack: Stack, _context: CheckContext, schema: XSchema, value: unknown): boolean {\n if (!IsSchemaObject(schema) || !Array.isArray(schema['~refine'])) {\n return true;\n }\n return schema['~refine'].every((entry) => IsObject(entry) && typeof entry['refine'] === 'function' && entry['refine'](value));\n}\n\nexport function ErrorRefine(stack: Stack, context: ErrorContext, schemaPath: string, instancePath: string, schema: XSchema, value: unknown): boolean {\n if (CheckRefine(stack, context, schema, value)) {\n return true;\n }\n return context.AddError({ keyword: '~refine', schemaPath, instancePath, params: { value } });\n}\n",
|
|
30
|
+
"import type { SchemaError } from '../error/errors.js';\nimport { CheckSchemaValue } from './core.js';\nimport { Ref } from './resolve.js';\nimport { Entries, IsObject, IsPlainObject, IsSchema, type SchemaContext, type XSchema } from './shared.js';\n\nfunction error(path: string, message: string, code: string): SchemaError {\n return { path, message, code };\n}\n\nfunction collectReferenceErrors(\n context: SchemaContext,\n schema: Exclude<XSchema, boolean>,\n value: unknown,\n root: XSchema,\n path: string,\n): SchemaError[] | undefined {\n const ref = typeof schema['$ref'] === 'string' ? schema['$ref'] : undefined;\n if (ref !== undefined) {\n const resolved = context[ref] ?? Ref(root, ref);\n return resolved === undefined\n ? [error(path, `Unresolved reference ${ref}`, 'UNRESOLVED_REF')]\n : CollectSchemaErrors(context, resolved, value, root, path);\n }\n return undefined;\n}\n\nfunction collectPrimitiveErrors(schema: Exclude<XSchema, boolean>, value: unknown, path: string): SchemaError[] {\n const errors: SchemaError[] = [];\n if ('const' in schema && !Object.is(schema['const'], value)) {\n errors.push(error(path, 'Value does not match const', 'CONST'));\n }\n const enumValues = Array.isArray(schema['enum']) ? schema['enum'] : undefined;\n if (enumValues !== undefined && !enumValues.some((entry) => Object.is(entry, value))) {\n errors.push(error(path, 'Value does not match enum', 'ENUM'));\n }\n if ('type' in schema) {\n errors.push(error(path, 'Value does not match type', 'TYPE'));\n }\n return errors;\n}\n\nfunction collectNestedErrors(\n context: SchemaContext,\n schema: Exclude<XSchema, boolean>,\n value: unknown,\n root: XSchema,\n path: string,\n): SchemaError[] {\n const errors: SchemaError[] = [];\n if (Array.isArray(value)) {\n const items = IsSchema(schema['items']) ? schema['items'] : undefined;\n if (items !== undefined) {\n value.forEach((entry, index) => {\n errors.push(...CollectSchemaErrors(context, items, entry, root, `${path}/${index}`));\n });\n }\n }\n if (IsPlainObject(value)) {\n const properties = IsObject(schema['properties']) ? schema['properties'] : undefined;\n if (properties !== undefined) {\n for (const [key, propertySchema] of Entries(properties)) {\n if (IsSchema(propertySchema) && key in value) {\n errors.push(...CollectSchemaErrors(context, propertySchema, value[key], root, `${path}/${key}`));\n }\n }\n }\n }\n return errors;\n}\n\nfunction collectCompositionErrors(schema: Exclude<XSchema, boolean>, path: string): SchemaError[] {\n const errors: SchemaError[] = [];\n if (Array.isArray(schema['allOf'])) {\n errors.push(error(path, 'Value failed allOf', 'ALL_OF'));\n }\n if (Array.isArray(schema['anyOf'])) {\n errors.push(error(path, 'Value failed anyOf', 'ANY_OF'));\n }\n if (Array.isArray(schema['oneOf'])) {\n errors.push(error(path, 'Value failed oneOf', 'ONE_OF'));\n }\n return errors;\n}\n\nfunction collectExtensionErrors(\n context: SchemaContext,\n schema: Exclude<XSchema, boolean>,\n value: unknown,\n root: XSchema,\n path: string,\n): SchemaError[] {\n const errors: SchemaError[] = [];\n const notSchema = IsSchema(schema['not']) ? schema['not'] : undefined;\n if (notSchema !== undefined && CheckSchemaValue(context, notSchema, value, root)) {\n errors.push(error(path, 'Value matched a negated schema', 'NOT'));\n }\n const guard = IsObject(schema['~guard']) ? schema['~guard'] : undefined;\n if (guard !== undefined && typeof guard['check'] === 'function' && !guard['check'](value)) {\n errors.push(error(path, 'Guard validation failed', 'GUARD'));\n }\n const refine = Array.isArray(schema['~refine']) ? schema['~refine'] : undefined;\n if (refine !== undefined) {\n refine.forEach((entry, index) => {\n if (IsObject(entry) && typeof entry['refine'] === 'function' && !entry['refine'](value)) {\n const message = typeof entry['message'] === 'string' ? entry['message'] : `Refinement ${index} failed`;\n errors.push(error(path, message, 'REFINE'));\n }\n });\n }\n return errors;\n}\n\nexport function CollectSchemaErrors(context: SchemaContext, schema: XSchema, value: unknown, root: XSchema = schema, path = '/'): SchemaError[] {\n if (CheckSchemaValue(context, schema, value, root)) {\n return [];\n }\n if (typeof schema === 'boolean') {\n return [error(path, 'Boolean schema rejected the value', 'BOOLEAN_SCHEMA')];\n }\n\n const referenceErrors = collectReferenceErrors(context, schema, value, root, path);\n if (referenceErrors !== undefined) {\n return referenceErrors;\n }\n\n const errors = [\n ...collectPrimitiveErrors(schema, value, path),\n ...collectNestedErrors(context, schema, value, root, path),\n ...collectCompositionErrors(schema, path),\n ...collectExtensionErrors(context, schema, value, root, path),\n ];\n return errors.length > 0 ? errors : [error(path, 'Schema validation failed', 'SCHEMA')];\n}\n",
|
|
31
|
+
"import { CheckSchemaValue } from './core.js';\nimport { CollectSchemaErrors } from './error-collector.js';\nimport { BuildContext, CheckContext, ErrorContext, Stack } from './engine.js';\nimport { ProjectSchema, type XSchema } from './shared.js';\n\ntype BuildFn = (stack: Stack, context: BuildContext, schema: XSchema, value: string) => string;\ntype CheckFn = (stack: Stack, context: CheckContext, schema: XSchema, value: unknown) => boolean;\ntype ErrorFn = (stack: Stack, context: ErrorContext, schemaPath: string, instancePath: string, schema: XSchema, value: unknown) => boolean;\n\nfunction buildFromKeys(keys: readonly string[], defaults: Record<string, unknown> = {}): BuildFn {\n return (_stack, _context, schema, _value) => JSON.stringify(ProjectSchema(schema, keys, defaults));\n}\n\nfunction checkFromKeys(keys: readonly string[], defaults: Record<string, unknown> = {}): CheckFn {\n return (_stack, _context, schema, value) => CheckSchemaValue({}, ProjectSchema(schema, keys, defaults), value);\n}\n\nfunction errorFromKeys(keyword: string, check: CheckFn): ErrorFn {\n return (stack, context, schemaPath, instancePath, schema, value) => {\n if (check(stack, new CheckContext(), schema, value)) {\n return true;\n }\n const projectedErrors = CollectSchemaErrors({}, schema, value);\n projectedErrors.forEach((error) => {\n context.AddError({ keyword, schemaPath, instancePath, params: error });\n });\n return false;\n };\n}\n\nexport const CanAdditionalPropertiesFast = (schema: XSchema): boolean => typeof schema !== 'boolean';\n\nexport const BuildBooleanSchema = buildFromKeys([]);\nexport const BuildConst = buildFromKeys(['const']);\nexport const BuildEnum = buildFromKeys(['enum']);\nexport const BuildType = buildFromKeys(['type']);\nexport const BuildMinLength = buildFromKeys(['type', 'minLength'], { type: 'string' });\nexport const BuildMaxLength = buildFromKeys(['type', 'maxLength'], { type: 'string' });\nexport const BuildPattern = buildFromKeys(['type', 'pattern'], { type: 'string' });\nexport const BuildFormat = buildFromKeys(['type', 'format'], { type: 'string' });\nexport const BuildMinimum = buildFromKeys(['type', 'minimum'], { type: 'number' });\nexport const BuildMaximum = buildFromKeys(['type', 'maximum'], { type: 'number' });\nexport const BuildExclusiveMinimum = buildFromKeys(['type', 'exclusiveMinimum'], { type: 'number' });\nexport const BuildExclusiveMaximum = buildFromKeys(['type', 'exclusiveMaximum'], { type: 'number' });\nexport const BuildMultipleOf = buildFromKeys(['type', 'multipleOf'], { type: 'number' });\nexport const BuildMinItems = buildFromKeys(['type', 'minItems'], { type: 'array' });\nexport const BuildMaxItems = buildFromKeys(['type', 'maxItems'], { type: 'array' });\nexport const BuildUniqueItems = buildFromKeys(['type', 'uniqueItems'], { type: 'array' });\nexport const BuildItems = buildFromKeys(['type', 'items', 'prefixItems'], { type: 'array' });\nexport const BuildPrefixItems = buildFromKeys(['type', 'prefixItems'], { type: 'array' });\nexport const BuildAdditionalItems = buildFromKeys(['type', 'prefixItems', 'items', 'additionalItems'], { type: 'array' });\nexport const BuildUnevaluatedItems = buildFromKeys(['type', 'prefixItems', 'items', 'unevaluatedItems'], { type: 'array' });\nexport const BuildContains = buildFromKeys(['type', 'contains'], { type: 'array' });\nexport const BuildMinContains = buildFromKeys(['type', 'contains', 'minContains'], { type: 'array' });\nexport const BuildMaxContains = buildFromKeys(['type', 'contains', 'maxContains'], { type: 'array' });\nexport const BuildMinProperties = buildFromKeys(['type', 'minProperties'], { type: 'object' });\nexport const BuildMaxProperties = buildFromKeys(['type', 'maxProperties'], { type: 'object' });\nexport const BuildRequired = buildFromKeys(['type', 'properties', 'required'], { type: 'object' });\nexport const BuildProperties = buildFromKeys(['type', 'properties', 'required'], { type: 'object' });\nexport const BuildPatternProperties = buildFromKeys(['type', 'patternProperties'], { type: 'object' });\nexport const BuildAdditionalProperties = buildFromKeys(['type', 'properties', 'patternProperties', 'additionalProperties'], { type: 'object' });\nexport const BuildAdditionalPropertiesFast = BuildAdditionalProperties;\nexport const BuildAdditionalPropertiesStandard = BuildAdditionalProperties;\nexport const BuildUnevaluatedProperties = buildFromKeys(['type', 'properties', 'patternProperties', 'unevaluatedProperties'], { type: 'object' });\nexport const BuildPropertyNames = buildFromKeys(['type', 'propertyNames'], { type: 'object' });\nexport const BuildDependencies = buildFromKeys(['type', 'dependencies'], { type: 'object' });\nexport const BuildDependentRequired = buildFromKeys(['type', 'dependentRequired'], { type: 'object' });\nexport const BuildDependentSchemas = buildFromKeys(['type', 'dependentSchemas'], { type: 'object' });\nexport const BuildAllOf = buildFromKeys(['allOf']);\nexport const BuildAnyOf = buildFromKeys(['anyOf']);\nexport const BuildOneOf = buildFromKeys(['oneOf']);\nexport const BuildNot = buildFromKeys(['not']);\nexport const BuildIf = buildFromKeys(['if', 'then', 'else']);\nexport const BuildRef = buildFromKeys(['$ref']);\nexport const BuildRecursiveRef = buildFromKeys(['$recursiveRef']);\nexport const BuildSchema = (_stack: Stack, _context: BuildContext, schema: XSchema, _value: string): string => JSON.stringify(schema);\n\nexport const CheckBooleanSchema = (_stack: Stack, _context: CheckContext, schema: XSchema, value: unknown): boolean => CheckSchemaValue({}, schema, value);\nexport const CheckConst = checkFromKeys(['const']);\nexport const CheckEnum = checkFromKeys(['enum']);\nexport const CheckType = checkFromKeys(['type']);\nexport const CheckMinLength = checkFromKeys(['type', 'minLength'], { type: 'string' });\nexport const CheckMaxLength = checkFromKeys(['type', 'maxLength'], { type: 'string' });\nexport const CheckPattern = checkFromKeys(['type', 'pattern'], { type: 'string' });\nexport const CheckFormat = checkFromKeys(['type', 'format'], { type: 'string' });\nexport const CheckMinimum = checkFromKeys(['type', 'minimum'], { type: 'number' });\nexport const CheckMaximum = checkFromKeys(['type', 'maximum'], { type: 'number' });\nexport const CheckExclusiveMinimum = checkFromKeys(['type', 'exclusiveMinimum'], { type: 'number' });\nexport const CheckExclusiveMaximum = checkFromKeys(['type', 'exclusiveMaximum'], { type: 'number' });\nexport const CheckMultipleOf = checkFromKeys(['type', 'multipleOf'], { type: 'number' });\nexport const CheckMinItems = checkFromKeys(['type', 'minItems'], { type: 'array' });\nexport const CheckMaxItems = checkFromKeys(['type', 'maxItems'], { type: 'array' });\nexport const CheckUniqueItems = checkFromKeys(['type', 'uniqueItems'], { type: 'array' });\nexport const CheckItems = checkFromKeys(['type', 'items', 'prefixItems'], { type: 'array' });\nexport const CheckPrefixItems = checkFromKeys(['type', 'prefixItems'], { type: 'array' });\nexport const CheckAdditionalItems = checkFromKeys(['type', 'prefixItems', 'items', 'additionalItems'], { type: 'array' });\nexport const CheckUnevaluatedItems = checkFromKeys(['type', 'prefixItems', 'items', 'unevaluatedItems'], { type: 'array' });\nexport const CheckContains = checkFromKeys(['type', 'contains'], { type: 'array' });\nexport const CheckMinContains = checkFromKeys(['type', 'contains', 'minContains'], { type: 'array' });\nexport const CheckMaxContains = checkFromKeys(['type', 'contains', 'maxContains'], { type: 'array' });\nexport const CheckMinProperties = checkFromKeys(['type', 'minProperties'], { type: 'object' });\nexport const CheckMaxProperties = checkFromKeys(['type', 'maxProperties'], { type: 'object' });\nexport const CheckRequired = checkFromKeys(['type', 'properties', 'required'], { type: 'object' });\nexport const CheckProperties = checkFromKeys(['type', 'properties', 'required'], { type: 'object' });\nexport const CheckPatternProperties = checkFromKeys(['type', 'patternProperties'], { type: 'object' });\nexport const CheckAdditionalProperties = checkFromKeys(['type', 'properties', 'patternProperties', 'additionalProperties'], { type: 'object' });\nexport const CheckUnevaluatedProperties = checkFromKeys(['type', 'properties', 'patternProperties', 'unevaluatedProperties'], { type: 'object' });\nexport const CheckPropertyNames = checkFromKeys(['type', 'propertyNames'], { type: 'object' });\nexport const CheckDependencies = checkFromKeys(['type', 'dependencies'], { type: 'object' });\nexport const CheckDependentRequired = checkFromKeys(['type', 'dependentRequired'], { type: 'object' });\nexport const CheckDependentSchemas = checkFromKeys(['type', 'dependentSchemas'], { type: 'object' });\nexport const CheckAllOf = checkFromKeys(['allOf']);\nexport const CheckAnyOf = checkFromKeys(['anyOf']);\nexport const CheckOneOf = checkFromKeys(['oneOf']);\nexport const CheckNot = checkFromKeys(['not']);\nexport const CheckIf = checkFromKeys(['if', 'then', 'else']);\nexport const CheckRef = (_stack: Stack, _context: CheckContext, schema: XSchema, value: unknown): boolean => CheckSchemaValue({}, schema, value);\nexport const CheckRecursiveRef = CheckRef;\nexport const CheckSchema = (_stack: Stack, _context: CheckContext, schema: XSchema, value: unknown): boolean => CheckSchemaValue({}, schema, value);\n\nexport const ErrorBooleanSchema = errorFromKeys('type', CheckBooleanSchema);\nexport const ErrorConst = errorFromKeys('const', CheckConst);\nexport const ErrorEnum = errorFromKeys('enum', CheckEnum);\nexport const ErrorType = errorFromKeys('type', CheckType);\nexport const ErrorMinLength = errorFromKeys('minLength', CheckMinLength);\nexport const ErrorMaxLength = errorFromKeys('maxLength', CheckMaxLength);\nexport const ErrorPattern = errorFromKeys('pattern', CheckPattern);\nexport const ErrorFormat = errorFromKeys('format', CheckFormat);\nexport const ErrorMinimum = errorFromKeys('minimum', CheckMinimum);\nexport const ErrorMaximum = errorFromKeys('maximum', CheckMaximum);\nexport const ErrorExclusiveMinimum = errorFromKeys('exclusiveMinimum', CheckExclusiveMinimum);\nexport const ErrorExclusiveMaximum = errorFromKeys('exclusiveMaximum', CheckExclusiveMaximum);\nexport const ErrorMultipleOf = errorFromKeys('multipleOf', CheckMultipleOf);\nexport const ErrorMinItems = errorFromKeys('minItems', CheckMinItems);\nexport const ErrorMaxItems = errorFromKeys('maxItems', CheckMaxItems);\nexport const ErrorUniqueItems = errorFromKeys('uniqueItems', CheckUniqueItems);\nexport const ErrorItems = errorFromKeys('items', CheckItems);\nexport const ErrorPrefixItems = errorFromKeys('prefixItems', CheckPrefixItems);\nexport const ErrorAdditionalItems = errorFromKeys('additionalItems', CheckAdditionalItems);\nexport const ErrorUnevaluatedItems = errorFromKeys('unevaluatedItems', CheckUnevaluatedItems);\nexport const ErrorContains = errorFromKeys('contains', CheckContains);\nexport const ErrorMinContains = errorFromKeys('minContains', CheckMinContains);\nexport const ErrorMaxContains = errorFromKeys('maxContains', CheckMaxContains);\nexport const ErrorMinProperties = errorFromKeys('minProperties', CheckMinProperties);\nexport const ErrorMaxProperties = errorFromKeys('maxProperties', CheckMaxProperties);\nexport const ErrorRequired = errorFromKeys('required', CheckRequired);\nexport const ErrorProperties = errorFromKeys('properties', CheckProperties);\nexport const ErrorPatternProperties = errorFromKeys('patternProperties', CheckPatternProperties);\nexport const ErrorAdditionalProperties = errorFromKeys('additionalProperties', CheckAdditionalProperties);\nexport const ErrorUnevaluatedProperties = errorFromKeys('unevaluatedProperties', CheckUnevaluatedProperties);\nexport const ErrorPropertyNames = errorFromKeys('propertyNames', CheckPropertyNames);\nexport const ErrorDependencies = errorFromKeys('dependencies', CheckDependencies);\nexport const ErrorDependentRequired = errorFromKeys('dependentRequired', CheckDependentRequired);\nexport const ErrorDependentSchemas = errorFromKeys('dependentSchemas', CheckDependentSchemas);\nexport const ErrorAllOf = errorFromKeys('allOf', CheckAllOf);\nexport const ErrorAnyOf = errorFromKeys('anyOf', CheckAnyOf);\nexport const ErrorOneOf = errorFromKeys('oneOf', CheckOneOf);\nexport const ErrorNot = errorFromKeys('not', CheckNot);\nexport const ErrorIf = errorFromKeys('if', CheckIf);\nexport const ErrorRef = errorFromKeys('$ref', CheckRef);\nexport const ErrorRecursiveRef = errorFromKeys('$recursiveRef', CheckRecursiveRef);\nexport const ErrorSchema = errorFromKeys('schema', CheckSchema);\n",
|
|
32
|
+
"import { CheckSchemaValue } from './core.js';\nimport { CheckContext } from './engine.js';\nimport { NormalizeArgs, type XSchema } from './shared.js';\n\nexport function Check<const Schema extends XSchema>(schema: Schema, value: unknown): boolean;\nexport function Check<const Schema extends XSchema>(context: Record<PropertyKey, XSchema>, schema: Schema, value: unknown): boolean;\nexport function Check(...args: [XSchema, unknown] | [Record<PropertyKey, XSchema>, XSchema, unknown]): boolean {\n const [context, schema, value] = NormalizeArgs(args);\n return CheckSchemaValue(context, schema, value);\n}\n\nexport { CheckContext };\n",
|
|
33
|
+
"import { Check } from './check.js';\nimport {\n BuildContext,\n CreateFunction,\n GetExternal,\n GetFunctions,\n HasUnevaluated,\n ResetExternal,\n ResetFunctions,\n Stack,\n} from './engine.js';\nimport { NormalizeArgs, type SchemaContext, type XSchema } from './shared.js';\n\nexport type CheckFunction = (value: unknown) => boolean;\n\nexport interface EvaluateResult {\n IsAccelerated: boolean;\n Code: string;\n Check: CheckFunction;\n}\n\nexport class BuildResult {\n constructor(\n private readonly context: SchemaContext,\n private readonly schema: XSchema,\n private readonly external: { identifier: string; variables: unknown[] },\n private readonly functions: string[],\n private readonly call: string,\n private readonly useUnevaluated: boolean,\n ) {}\n\n Context(): SchemaContext {\n return this.context;\n }\n\n Schema(): XSchema {\n return this.schema;\n }\n\n UseUnevaluated(): boolean {\n return this.useUnevaluated;\n }\n\n External(): { identifier: string; variables: unknown[] } {\n return this.external;\n }\n\n Functions(): string[] {\n return this.functions;\n }\n\n Call(): string {\n return this.call;\n }\n\n Evaluate(): EvaluateResult {\n return {\n IsAccelerated: true,\n Code: this.functions.join('\\n'),\n Check: (value: unknown) => Check(this.context, this.schema, value),\n };\n }\n}\n\nexport function Build(schema: XSchema): BuildResult;\nexport function Build(context: SchemaContext, schema: XSchema): BuildResult;\nexport function Build(...args: [XSchema] | [SchemaContext, XSchema]): BuildResult {\n const context = args.length === 1 ? {} : args[0];\n const schema = args.length === 1 ? args[0] : args[1];\n ResetExternal();\n ResetFunctions();\n const useUnevaluated = HasUnevaluated(context, schema);\n const stack = new Stack(context, schema);\n const buildContext = new BuildContext(useUnevaluated);\n const call = CreateFunction(stack, buildContext, schema, 'value');\n return new BuildResult(context, schema, GetExternal(), GetFunctions(), call, useUnevaluated);\n}\n",
|
|
34
|
+
"import type { SchemaError } from '../error/errors.js';\nimport { CollectSchemaErrors } from './error-collector.js';\nimport { AccumulatedErrorContext, ErrorContext } from './engine.js';\nimport { NormalizeArgs, type XSchema } from './shared.js';\n\nexport function Errors(schema: XSchema, value: unknown): [boolean, SchemaError[]];\nexport function Errors(context: Record<PropertyKey, XSchema>, schema: XSchema, value: unknown): [boolean, SchemaError[]];\nexport function Errors(...args: [XSchema, unknown] | [Record<PropertyKey, XSchema>, XSchema, unknown]): [boolean, SchemaError[]] {\n const [context, schema, value] = NormalizeArgs(args);\n const errors = CollectSchemaErrors(context, schema, value);\n return [errors.length === 0, errors];\n}\n\nexport { AccumulatedErrorContext, ErrorContext };\n",
|
|
35
|
+
"import type { ParseResult, SchemaError } from '../error/errors.js';\nimport { NormalizeArgs, type XSchema, type XStatic } from './shared.js';\nimport { Errors } from './errors.js';\n\nexport class ParseError extends Error {\n constructor(\n public readonly schema: XSchema,\n public readonly value: unknown,\n public readonly errors: SchemaError[],\n ) {\n super(`Parse failed with ${errors.length} error(s)`);\n this.name = 'ParseError';\n }\n}\n\nexport function TryParse<const Schema extends XSchema>(schema: Schema, value: unknown): ParseResult<XStatic<Schema>>;\nexport function TryParse<const Schema extends XSchema>(context: Record<PropertyKey, XSchema>, schema: Schema, value: unknown): ParseResult<XStatic<Schema>>;\nexport function TryParse(...args: [XSchema, unknown] | [Record<PropertyKey, XSchema>, XSchema, unknown]): ParseResult<unknown> {\n const [context, schema, value] = NormalizeArgs(args);\n const [result, errors] = Errors(context, schema, value);\n if (result) {\n return {\n success: true,\n value,\n };\n }\n return {\n success: false,\n errors,\n };\n}\n\nexport function Parse<const Schema extends XSchema>(schema: Schema, value: unknown): XStatic<Schema>;\nexport function Parse<const Schema extends XSchema>(context: Record<PropertyKey, XSchema>, schema: Schema, value: unknown): XStatic<Schema>;\nexport function Parse(...args: [XSchema, unknown] | [Record<PropertyKey, XSchema>, XSchema, unknown]): unknown {\n const [context, schema, value] = NormalizeArgs(args);\n const result = TryParse(context, schema, value);\n if (!result.success) {\n throw new ParseError(schema, value, result.errors);\n }\n return result.value;\n}\n\nexport type { ParseFailure, ParseResult, ParseSuccess } from '../error/errors.js';\n",
|
|
36
|
+
"import type { ParseResult, SchemaError } from '../error/errors.js';\nimport { Build } from './build.js';\nimport { Errors } from './errors.js';\nimport { Parse, TryParse } from './parse.js';\nimport type { SchemaContext, XSchema, XStatic } from './shared.js';\n\nexport class Validator<Schema extends XSchema = XSchema, Value = XStatic<Schema>> {\n private readonly build;\n private readonly result;\n\n constructor(context: SchemaContext, schema: Schema) {\n this.build = Build(context, schema);\n this.result = this.build.Evaluate();\n }\n\n IsAccelerated(): boolean {\n return this.result.IsAccelerated;\n }\n\n Schema(): Schema {\n return this.build.Schema() as Schema;\n }\n\n Check(value: unknown): value is Value {\n return this.result.Check(value);\n }\n\n Parse(value: unknown): Value {\n return Parse(this.build.Context(), this.build.Schema(), value) as Value;\n }\n\n TryParse(value: unknown): ParseResult<Value> {\n return TryParse(this.build.Context(), this.build.Schema(), value) as ParseResult<Value>;\n }\n\n Errors(value: unknown): [boolean, SchemaError[]] {\n return Errors(this.build.Context(), this.build.Schema(), value);\n }\n}\n\nexport function Compile<const Schema extends XSchema>(schema: Schema): Validator<Schema>;\nexport function Compile<const Schema extends XSchema>(context: SchemaContext, schema: Schema): Validator<Schema>;\nexport function Compile(...args: [XSchema] | [SchemaContext, XSchema]): Validator {\n const context = args.length === 1 ? {} : args[0];\n const schema = args.length === 1 ? args[0] : args[1];\n return new Validator(context, schema);\n}\n",
|
|
37
|
+
"import type { TKind, TSchema } from '../type/schema.js';\n\nexport type SchemaNode = TSchema & Record<string, unknown>;\nexport type SchemaRefinement = { refine: (value: unknown) => boolean; message?: string };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isSchemaValue(value: unknown): value is TSchema {\n return isRecord(value) && typeof value['~kind'] === 'string';\n}\n\nexport function schemaNode(schema: TSchema): SchemaNode {\n return schema as SchemaNode;\n}\n\nexport function schemaKind(schema: TSchema): TKind | undefined {\n const kind = schemaNode(schema)['~kind'];\n return typeof kind === 'string' ? kind as TKind : undefined;\n}\n\nexport function schemaUnknownField(schema: TSchema, field: string): unknown {\n return schemaNode(schema)[field];\n}\n\nexport function schemaStringField(schema: TSchema, field: string): string | undefined {\n const value = schemaUnknownField(schema, field);\n return typeof value === 'string' ? value : undefined;\n}\n\nexport function schemaNumberField(schema: TSchema, field: string): number | undefined {\n const value = schemaUnknownField(schema, field);\n return typeof value === 'number' ? value : undefined;\n}\n\nexport function schemaBigIntField(schema: TSchema, field: string): bigint | undefined {\n const value = schemaUnknownField(schema, field);\n return typeof value === 'bigint' ? value : undefined;\n}\n\nexport function schemaBooleanField(schema: TSchema, field: string): boolean | undefined {\n const value = schemaUnknownField(schema, field);\n return typeof value === 'boolean' ? value : undefined;\n}\n\nexport function schemaStringListField(schema: TSchema, field: string): string[] {\n const value = schemaUnknownField(schema, field);\n return Array.isArray(value) && value.every((entry) => typeof entry === 'string') ? value : [];\n}\n\nexport function schemaRecordField(schema: TSchema, field: string): Record<string, unknown> {\n const value = schemaUnknownField(schema, field);\n return isRecord(value) ? value : {};\n}\n\nexport function schemaSchemaField(schema: TSchema, field: string): TSchema | undefined {\n const value = schemaUnknownField(schema, field);\n return isSchemaValue(value) ? value : undefined;\n}\n\nexport function schemaSchemaListField(schema: TSchema, field: string): TSchema[] {\n const value = schemaUnknownField(schema, field);\n return Array.isArray(value) && value.every(isSchemaValue) ? value : [];\n}\n\nexport function schemaSchemaMapField(schema: TSchema, field: string): Record<string, TSchema> {\n const value = schemaUnknownField(schema, field);\n if (!isRecord(value)) {\n return {};\n }\n return Object.values(value).every(isSchemaValue)\n ? value as Record<string, TSchema>\n : {};\n}\n\nexport function schemaBooleanOrSchemaField(schema: TSchema, field: string): boolean | TSchema | undefined {\n const value = schemaUnknownField(schema, field);\n if (typeof value === 'boolean' || value === undefined) {\n return value;\n }\n return isSchemaValue(value) ? value : undefined;\n}\n\nexport function schemaCallbackField<T extends (...args: never[]) => unknown>(\n schema: TSchema,\n field: string,\n): T | undefined {\n const value = schemaUnknownField(schema, field);\n return typeof value === 'function' ? value as T : undefined;\n}\n\nexport function schemaItem(schema: TSchema): TSchema | undefined {\n return schemaSchemaField(schema, 'item');\n}\n\nexport function schemaInner(schema: TSchema): TSchema | undefined {\n return schemaSchemaField(schema, 'inner');\n}\n\nexport function schemaItemOrInner(schema: TSchema): TSchema | undefined {\n return schemaItem(schema) ?? schemaInner(schema);\n}\n\nexport function schemaVariants(schema: TSchema): TSchema[] {\n return schemaSchemaListField(schema, 'variants');\n}\n\nexport function schemaProperties(schema: TSchema): Record<string, TSchema> {\n return schemaSchemaMapField(schema, 'properties');\n}\n\nexport function schemaDefinitions(schema: TSchema): Record<string, TSchema> {\n return schemaSchemaMapField(schema, '$defs');\n}\n\nexport function schemaPatternProperties(schema: TSchema): Record<string, TSchema> {\n return schemaSchemaMapField(schema, 'patternProperties');\n}\n\nexport function schemaRequiredKeys(schema: TSchema): string[] {\n return schemaStringListField(schema, 'required');\n}\n\nexport function schemaOptionalKeys(schema: TSchema): string[] {\n return schemaStringListField(schema, 'optional');\n}\n\nexport function schemaConst(schema: TSchema): unknown {\n return schemaUnknownField(schema, 'const');\n}\n\nexport function schemaPatterns(schema: TSchema): string[] {\n return schemaStringListField(schema, 'patterns');\n}\n\nexport function schemaRefinements(schema: TSchema): SchemaRefinement[] {\n const value = schemaUnknownField(schema, '~refine');\n return Array.isArray(value)\n ? value.filter(\n (entry): entry is SchemaRefinement =>\n isRecord(entry) && typeof entry.refine === 'function' && (entry.message === undefined || typeof entry.message === 'string'),\n )\n : [];\n}\n\nexport function schemaPath(path: readonly string[]): string {\n return path.join('.') || '/';\n}\n",
|
|
38
|
+
"import type {\n TInteger,\n TNumber,\n TObject,\n TSchema,\n TString,\n} from '../type/schema.js';\nimport {\n schemaBooleanOrSchemaField,\n schemaOptionalKeys,\n schemaPatternProperties,\n schemaProperties,\n schemaRequiredKeys,\n schemaUnknownField,\n} from '../shared/schema-access.js';\nimport { KNOWN_FORMATS } from '../shared/utils.js';\nimport type { JsonSchema, JsonSchemaOptions } from './emitter.js';\nimport type { EmitJsonSchema } from './emitter-types.js';\n\nexport function stringSchema(schema: TString): JsonSchema {\n const result: JsonSchema = { type: 'string' };\n if (schema.minLength !== undefined) result['minLength'] = schema.minLength;\n if (schema.maxLength !== undefined) result['maxLength'] = schema.maxLength;\n if (schema.pattern !== undefined) result['pattern'] = schema.pattern;\n if (schema.format !== undefined && KNOWN_FORMATS.has(schema.format)) result['format'] = schema.format;\n return result;\n}\n\nexport function objectLikeSchema(\n object: TObject<Record<string, TSchema>, string, string>,\n refs: Map<string, TSchema>,\n options: JsonSchemaOptions,\n emit: EmitJsonSchema,\n): JsonSchema {\n const properties: Record<string, JsonSchema> = {};\n const required: string[] = [];\n const propertySchemas = schemaProperties(object);\n for (const [key, propSchema] of Object.entries(propertySchemas)) {\n properties[key] = emit(propSchema, refs, options);\n }\n const optional = new Set(schemaOptionalKeys(object).map(String));\n for (const key of schemaRequiredKeys(object)) {\n if (key in propertySchemas && !optional.has(String(key))) {\n required.push(String(key));\n }\n }\n const patternProperties = schemaPatternProperties(object);\n const additionalProperties = schemaBooleanOrSchemaField(object, 'additionalProperties');\n return {\n type: 'object',\n properties,\n ...(required.length > 0 ? { required } : {}),\n ...(schemaUnknownField(object, 'optional') !== undefined\n ? { $comment: 'Optional keys are represented by omission from required in emitted JSON Schema.' }\n : {}),\n ...(Object.keys(patternProperties).length > 0\n ? {\n patternProperties: Object.fromEntries(\n Object.entries(patternProperties).map(([pattern, patternSchema]) => [pattern, emit(patternSchema, refs, options)]),\n ),\n }\n : {}),\n ...(additionalProperties === false\n ? { additionalProperties: false }\n : additionalProperties === true\n ? { additionalProperties: true }\n : additionalProperties !== undefined\n ? { additionalProperties: emit(additionalProperties, refs, options) }\n : {}),\n };\n}\n\nexport function numberSchema(schema: TNumber): JsonSchema {\n const result: JsonSchema = { type: 'number' };\n if (schema.minimum !== undefined) result['minimum'] = schema.minimum;\n if (schema.maximum !== undefined) result['maximum'] = schema.maximum;\n if (schema.exclusiveMinimum !== undefined) result['exclusiveMinimum'] = schema.exclusiveMinimum;\n if (schema.exclusiveMaximum !== undefined) result['exclusiveMaximum'] = schema.exclusiveMaximum;\n if (schema.multipleOf !== undefined) result['multipleOf'] = schema.multipleOf;\n return result;\n}\n\nexport function integerSchema(schema: TInteger): JsonSchema {\n const result: JsonSchema = { type: 'integer' };\n if (schema.minimum !== undefined) result['minimum'] = schema.minimum;\n if (schema.maximum !== undefined) result['maximum'] = schema.maximum;\n if (schema.exclusiveMinimum !== undefined) result['exclusiveMinimum'] = schema.exclusiveMinimum;\n if (schema.exclusiveMaximum !== undefined) result['exclusiveMaximum'] = schema.exclusiveMaximum;\n if (schema.multipleOf !== undefined) result['multipleOf'] = schema.multipleOf;\n return result;\n}\n",
|
|
39
|
+
"import type {\n TConditional,\n TExclude,\n TExtract,\n TIfThenElse,\n TIndex,\n TKeyOf,\n TMapped,\n TNot,\n TObject,\n TOmit,\n TPartial,\n TPick,\n TRequired,\n TSchema,\n} from '../type/schema.js';\nimport {\n deriveIndexSchemasForEmission,\n deriveObjectSchema,\n} from '../shared/utils.js';\nimport type { JsonSchema, JsonSchemaOptions } from './emitter.js';\nimport type { ApplyOptions, EmitJsonSchema } from './emitter-types.js';\nimport { objectLikeSchema } from './emitter-base.js';\n\nexport function emitDerivedSchema(\n kind: string | undefined,\n schema: TSchema,\n refs: Map<string, TSchema>,\n options: JsonSchemaOptions,\n opt: ApplyOptions,\n emit: EmitJsonSchema,\n): JsonSchema | undefined {\n switch (kind) {\n case 'Exclude': {\n const excluded = schema as TExclude<TSchema, TSchema>;\n return opt({ allOf: [emit(excluded.left, refs, options), { not: emit(excluded.right, refs, options) }] });\n }\n case 'Extract': {\n const extracted = schema as TExtract<TSchema, TSchema>;\n return opt({ allOf: [emit(extracted.left, refs, options), emit(extracted.right, refs, options)] });\n }\n case 'Partial': {\n const partial = schema as TPartial<TObject>;\n const derived = deriveObjectSchema(partial.object, { requiredMode: 'none' });\n return opt(objectLikeSchema(derived, refs, options, emit));\n }\n case 'Required': {\n const required = schema as TRequired<TObject>;\n const derived = deriveObjectSchema(required.object, { requiredMode: 'all' });\n return opt(objectLikeSchema(derived, refs, options, emit));\n }\n case 'Pick': {\n const picked = schema as TPick<TObject, keyof TObject['properties']>;\n const derived = deriveObjectSchema(picked.object, { pickKeys: picked.keys.map(String), additionalProperties: false });\n return opt(objectLikeSchema(derived, refs, options, emit));\n }\n case 'Omit': {\n const omitted = schema as TOmit<TObject, keyof TObject['properties']>;\n const derived = deriveObjectSchema(omitted.object, { omitKeys: omitted.keys.map(String), additionalProperties: false });\n return opt(objectLikeSchema(derived, refs, options, emit));\n }\n case 'KeyOf':\n return opt({ type: 'string', enum: Object.keys((schema as TKeyOf<TObject>).object.properties) });\n case 'Not':\n return opt({ not: emit((schema as TNot<TSchema>).schema, refs, options) });\n case 'IfThenElse': {\n const conditional = schema as TIfThenElse<TSchema, TSchema, TSchema>;\n return opt({\n if: emit(conditional.if, refs, options),\n then: emit(conditional.then, refs, options),\n ...(conditional.else ? { else: emit(conditional.else, refs, options) } : {}),\n });\n }\n case 'Conditional': {\n const conditional = schema as TConditional<TSchema, TSchema[]>;\n const elseBranch = conditional.default ? emit(conditional.default, refs, options) : undefined;\n return opt({\n if: emit(conditional.check, refs, options),\n then: conditional.union.length > 0 ? { anyOf: conditional.union.map((entry) => emit(entry, refs, options)) } : {},\n ...(elseBranch !== undefined && Object.keys(elseBranch).length > 0 ? { else: elseBranch } : {}),\n });\n }\n case 'Index': {\n const index = schema as TIndex<TObject, TSchema>;\n const candidates = deriveIndexSchemasForEmission(index.object, index.key);\n if (candidates.length === 0) return opt({ not: {} });\n if (candidates.length === 1 && candidates[0] !== undefined) return emit(candidates[0], refs, options);\n return opt({ anyOf: candidates.map((candidate) => emit(candidate, refs, options)) });\n }\n case 'Mapped':\n return opt(objectLikeSchema((schema as TMapped<TObject>).object, refs, options, emit));\n default:\n return undefined;\n }\n}\n",
|
|
40
|
+
"import type { TParameter, TThis } from './actions.js';\nimport type { TObject, TSchema } from './schema.js';\nimport type { TCall, TCyclic, TGeneric, TInfer } from './extensions.js';\n\nexport type TProperties = Record<string, TSchema>;\n\nexport interface TState {\n callstack: string[];\n}\n\nexport type TInstantiate<Context extends TProperties, Type extends TSchema> = TSchema;\n\nfunction getString(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction getSchema(value: unknown): TSchema | undefined {\n if (typeof value !== 'object' || value === null) {\n return undefined;\n }\n return typeof (value as Record<string, unknown>)['~kind'] === 'string' ? (value as TSchema) : undefined;\n}\n\nfunction getSchemaArray(value: unknown): TSchema[] {\n return Array.isArray(value) ? value.flatMap((entry) => (getSchema(entry) ? [entry as TSchema] : [])) : [];\n}\n\nfunction getParameterSchema(schema: TSchema): { name: string; equals: TSchema } {\n const value = schema as Record<string, unknown>;\n return {\n name: getString(value['name']) ?? '',\n equals: getSchema(value['equals']) ?? schema,\n };\n}\n\nfunction getInferSchema(schema: TSchema): { name: string; extends: TSchema } {\n const value = schema as Record<string, unknown>;\n return {\n name: getString(value['name']) ?? '',\n extends: getSchema(value['extends']) ?? schema,\n };\n}\n\nfunction getGenericSchema(schema: TSchema): { parameters: TParameter[]; expression: TSchema } {\n const value = schema as Record<string, unknown>;\n const parameters = Array.isArray(value['parameters'])\n ? value['parameters'].flatMap((entry) => {\n if (typeof entry !== 'object' || entry === null) return [];\n const candidate = entry as Record<string, unknown>;\n return candidate['~kind'] === 'Parameter' ? [entry as TParameter] : [];\n })\n : [];\n return {\n parameters,\n expression: getSchema(value['expression']) ?? schema,\n };\n}\n\nfunction getCallSchema(schema: TSchema): { target: TSchema; arguments: TSchema[] } {\n const value = schema as Record<string, unknown>;\n return {\n target: getSchema(value['target']) ?? schema,\n arguments: getSchemaArray(value['arguments']),\n };\n}\n\nfunction getCyclicSchema(schema: TSchema): { $defs: Record<string, TSchema>; $ref: string } {\n const value = schema as Record<string, unknown>;\n const defsSource = value['$defs'];\n const defs = typeof defsSource === 'object' && defsSource !== null\n ? Object.fromEntries(\n Object.entries(defsSource as Record<string, unknown>).flatMap(([key, entry]) => {\n const nextSchema = getSchema(entry);\n return nextSchema ? [[key, nextSchema]] : [];\n }),\n ) as Record<string, TSchema>\n : {};\n return {\n $defs: defs,\n $ref: getString(value['$ref']) ?? '',\n };\n}\n\nexport function bindParameterContext(parameters: readonly TParameter[], arguments_: readonly TSchema[]): TProperties {\n const context: TProperties = {};\n for (let index = 0; index < parameters.length; index += 1) {\n const parameter = parameters[index]!;\n const name = parameter.name;\n const argument = arguments_[index] ?? parameter.equals;\n context[name] = argument;\n }\n return context;\n}\n\nfunction getObjectSchema(schema: TSchema): TObject<Record<string, TSchema>, string, string> {\n const value = schema as Record<string, unknown>;\n const propertiesSource = value['properties'];\n const patternPropertiesSource = value['patternProperties'];\n const requiredSource = value['required'];\n const optionalSource = value['optional'];\n\n return {\n ...schema,\n '~kind': 'Object' as const,\n properties: typeof propertiesSource === 'object' && propertiesSource !== null\n ? (propertiesSource as Record<string, TSchema>)\n : {},\n ...(typeof patternPropertiesSource === 'object' && patternPropertiesSource !== null\n ? { patternProperties: patternPropertiesSource as Record<string, TSchema> }\n : {}),\n ...(Array.isArray(requiredSource)\n ? { required: requiredSource.filter((entry): entry is string => typeof entry === 'string') }\n : {}),\n ...(Array.isArray(optionalSource)\n ? { optional: optionalSource.filter((entry): entry is string => typeof entry === 'string') }\n : {}),\n } as TObject<Record<string, TSchema>, string, string>;\n}\n\nfunction instantiateObject(context: TProperties, schema: TSchema): TObject<Record<string, TSchema>, string, string> {\n const objectSchema = getObjectSchema(schema);\n const properties: Record<string, TSchema> = {};\n for (const [key, value] of Object.entries(objectSchema.properties)) {\n properties[key] = Instantiate(context, value);\n }\n const patternProperties = objectSchema.patternProperties === undefined\n ? undefined\n : Object.fromEntries(\n Object.entries(objectSchema.patternProperties).map(([key, value]) => [key, Instantiate(context, value)]),\n );\n return {\n ...objectSchema,\n properties,\n ...(patternProperties !== undefined ? { patternProperties } : {}),\n ...(typeof objectSchema.additionalProperties === 'object' && objectSchema.additionalProperties !== null\n ? { additionalProperties: Instantiate(context, objectSchema.additionalProperties as TSchema) }\n : {}),\n };\n}\n\nexport function Instantiate<Context extends TProperties, Type extends TSchema>(\n context: Context,\n schema: Type,\n): TInstantiate<Context, Type> {\n const value = schema as Record<string, unknown>;\n const kind = value['~kind'];\n\n switch (kind) {\n case 'Parameter': {\n const parameter = getParameterSchema(schema);\n return (context[parameter.name] ?? parameter.equals) as TInstantiate<Context, Type>;\n }\n case 'Infer': {\n const infer = getInferSchema(schema);\n return (context[infer.name] ?? infer.extends) as TInstantiate<Context, Type>;\n }\n case 'This':\n return schema as TInstantiate<Context, Type>;\n case 'Ref': {\n const name = value['name'];\n return (typeof name === 'string' && context[name] !== undefined ? context[name] : schema) as TInstantiate<Context, Type>;\n }\n case 'Array':\n return { ...schema, items: Instantiate(context, value['items'] as TSchema) } as TInstantiate<Context, Type>;\n case 'Object':\n return instantiateObject(context, schema) as TInstantiate<Context, Type>;\n case 'Tuple':\n return { ...schema, items: ((value['items'] as TSchema[]).map((item) => Instantiate(context, item))) } as TInstantiate<Context, Type>;\n case 'Record':\n return {\n ...schema,\n key: Instantiate(context, value['key'] as TSchema),\n value: Instantiate(context, value['value'] as TSchema),\n } as TInstantiate<Context, Type>;\n case 'Union':\n case 'Intersect':\n return { ...schema, variants: (value['variants'] as TSchema[]).map((item) => Instantiate(context, item)) } as TInstantiate<Context, Type>;\n case 'Optional':\n case 'Readonly':\n case 'Capitalize':\n case 'Lowercase':\n case 'Uppercase':\n case 'Uncapitalize':\n case 'Awaited':\n return { ...schema, item: Instantiate(context, value['item'] as TSchema) } as TInstantiate<Context, Type>;\n case 'Immutable':\n case 'Refine':\n return { ...schema, item: Instantiate(context, value['item'] as TSchema) } as TInstantiate<Context, Type>;\n case 'Codec':\n return { ...schema, inner: Instantiate(context, value['inner'] as TSchema) } as TInstantiate<Context, Type>;\n case 'Exclude':\n case 'Extract':\n return {\n ...schema,\n left: Instantiate(context, value['left'] as TSchema),\n right: Instantiate(context, value['right'] as TSchema),\n } as TInstantiate<Context, Type>;\n case 'Not':\n return { ...schema, schema: Instantiate(context, value['schema'] as TSchema) } as TInstantiate<Context, Type>;\n case 'IfThenElse':\n return {\n ...schema,\n if: Instantiate(context, value['if'] as TSchema),\n then: Instantiate(context, value['then'] as TSchema),\n else: Instantiate(context, value['else'] as TSchema),\n } as TInstantiate<Context, Type>;\n case 'Index':\n return {\n ...schema,\n object: Instantiate(context, value['object'] as TSchema),\n key: Instantiate(context, value['key'] as TSchema),\n } as TInstantiate<Context, Type>;\n case 'Mapped':\n return { ...schema, object: Instantiate(context, value['object'] as TSchema) } as TInstantiate<Context, Type>;\n case 'Conditional':\n return {\n ...schema,\n check: Instantiate(context, value['check'] as TSchema),\n union: (value['union'] as TSchema[]).map((item) => Instantiate(context, item)),\n ...(value['default'] !== undefined ? { default: Instantiate(context, value['default'] as TSchema) } : {}),\n } as TInstantiate<Context, Type>;\n case 'Function':\n case 'Constructor':\n return {\n ...schema,\n parameters: (value['parameters'] as TSchema[]).map((item) => Instantiate(context, item)),\n returns: Instantiate(context, value['returns'] as TSchema),\n } as TInstantiate<Context, Type>;\n case 'Promise':\n case 'Iterator':\n case 'AsyncIterator':\n case 'Rest':\n return { ...schema, item: Instantiate(context, value['item'] as TSchema), items: Instantiate(context, (value['items'] as TSchema | undefined) ?? (value['item'] as TSchema)) } as TInstantiate<Context, Type>;\n case 'Decode':\n return { ...schema, inner: Instantiate(context, value['inner'] as TSchema) } as TInstantiate<Context, Type>;\n case 'Encode':\n return { ...schema, inner: Instantiate(context, value['inner'] as TSchema) } as TInstantiate<Context, Type>;\n case 'ReturnType':\n case 'Parameters':\n return { ...schema, function: Instantiate(context, value['function'] as TSchema) } as TInstantiate<Context, Type>;\n case 'InstanceType':\n case 'ConstructorParameters':\n return { ...schema, constructor: Instantiate(context, value['constructor'] as TSchema) } as TInstantiate<Context, Type>;\n case 'Generic': {\n const generic = getGenericSchema(schema);\n return {\n ...generic,\n parameters: generic.parameters,\n expression: Instantiate(context, generic.expression),\n } as TInstantiate<Context, Type>;\n }\n case 'Call': {\n const call = getCallSchema(schema);\n const target = Instantiate(context, call.target);\n const arguments_ = call.arguments.map((item) => Instantiate(context, item));\n const targetValue = target as Record<string, unknown>;\n if (targetValue['~kind'] === 'Generic') {\n const generic = getGenericSchema(target);\n const nextContext = bindParameterContext(generic.parameters, arguments_);\n return Instantiate({ ...context, ...nextContext }, generic.expression) as TInstantiate<Context, Type>;\n }\n return {\n '~kind': 'Call',\n target,\n arguments: arguments_,\n } as TInstantiate<Context, Type>;\n }\n case 'Cyclic': {\n const cyclic = getCyclicSchema(schema);\n const defs = Object.fromEntries(\n Object.entries(cyclic.$defs).map(([key, value]) => [key, Instantiate(context, value)]),\n ) as Record<string, TSchema>;\n return {\n ...cyclic,\n $defs: defs,\n } as TInstantiate<Context, Type>;\n }\n default:\n return schema as TInstantiate<Context, Type>;\n }\n}\n",
|
|
41
|
+
"import type {\n TRecursive,\n TRef,\n TSchema,\n} from '../type/schema.js';\nimport { Instantiate } from '../type/instantiation.js';\nimport {\n schemaSchemaField,\n schemaSchemaMapField,\n schemaStringField,\n} from '../shared/schema-access.js';\nimport type { JsonSchema, JsonSchemaOptions } from './emitter.js';\nimport type { ApplyOptions, EmitJsonSchema } from './emitter-types.js';\n\nexport function emitReferenceSchema(\n kind: string | undefined,\n schema: TSchema,\n refs: Map<string, TSchema>,\n options: JsonSchemaOptions,\n opt: ApplyOptions,\n emit: EmitJsonSchema,\n): JsonSchema | undefined {\n switch (kind) {\n case 'Recursive': {\n const recursive = schema as TRecursive<TSchema>;\n refs.set(recursive.name, recursive.schema);\n return { $ref: `#/definitions/${recursive.name}` };\n }\n case 'Cyclic': {\n const definitions = schemaSchemaMapField(schema, '$defs');\n const ref = schemaStringField(schema, '$ref');\n return {\n $defs: Object.fromEntries(Object.entries(definitions).map(([key, value]) => [key, emit(value, refs, options)])),\n ...(ref !== undefined ? { $ref: `#/$defs/${ref}` } : {}),\n };\n }\n case 'Ref': {\n const refSchema = schema as TRef;\n return refs.has(refSchema.name)\n ? { $ref: `#/definitions/${refSchema.name}` }\n : opt({ not: {}, $comment: `Unresolved ref: ${refSchema.name}` });\n }\n case 'This':\n return { $ref: '#' };\n case 'Generic':\n return emit(schemaSchemaField(schema, 'expression') ?? schema, refs, options);\n case 'Call': {\n const instantiated = Instantiate({}, schema);\n return instantiated === schema\n ? opt({ not: {}, $comment: 'Unable to instantiate call schema.' })\n : emit(instantiated, refs, options);\n }\n case 'Infer':\n return emit(schemaSchemaField(schema, 'extends') ?? schema, refs, options);\n case 'Module': {\n const definitions = schemaSchemaMapField(schema, 'definitions');\n return opt({\n $defs: Object.fromEntries(\n Object.entries(definitions).map(([name, definition]) => [name, emit(definition, refs, options)]),\n ),\n });\n }\n default:\n return undefined;\n }\n}\n",
|
|
42
|
+
"import type {\n TSchema,\n TTemplateLiteral,\n TUnsafe,\n} from '../type/schema.js';\nimport {\n schemaItem,\n schemaItemOrInner,\n schemaPatterns,\n schemaSchemaField,\n schemaSchemaListField,\n} from '../shared/schema-access.js';\nimport { resolveStringActionSchema } from '../shared/utils.js';\nimport type { JsonSchema, JsonSchemaOptions } from './emitter.js';\nimport type { ApplyOptions, EmitJsonSchema } from './emitter-types.js';\n\nexport function emitWrapperSchema(\n kind: string | undefined,\n schema: TSchema,\n refs: Map<string, TSchema>,\n options: JsonSchemaOptions,\n opt: ApplyOptions,\n emit: EmitJsonSchema,\n): JsonSchema | undefined {\n switch (kind) {\n case 'Rest':\n return opt({ type: 'array', items: emit(schemaItem(schema) ?? schemaSchemaField(schema, 'items') ?? schema, refs, options) });\n case 'Capitalize':\n case 'Lowercase':\n case 'Uppercase':\n case 'Uncapitalize':\n return emit(resolveStringActionSchema(schema), refs, options);\n case 'Identifier':\n return opt({ type: 'string', pattern: '^[$A-Z_a-z][$\\\\w]*$' });\n case 'Parameter':\n return emit(schemaSchemaField(schema, 'equals') ?? schema, refs, options);\n case 'TemplateLiteral':\n return opt({ type: 'string', pattern: schemaPatterns(schema as TTemplateLiteral).join('|') });\n case 'Unsafe':\n return { ...((schema as TUnsafe).schema as JsonSchema) };\n case 'Decode':\n case 'Encode':\n return emit(schemaItemOrInner(schema) ?? schema, refs, options);\n case 'Awaited':\n return emit(schemaItem(schemaSchemaField(schema, 'promise') ?? schema) ?? schema, refs, options);\n case 'ReturnType':\n return emit(schemaSchemaField(schemaSchemaField(schema, 'function') ?? schema, 'returns') ?? schema, refs, options);\n case 'Parameters': {\n const parameters = schemaSchemaListField(schemaSchemaField(schema, 'function') ?? schema, 'parameters');\n return opt({\n type: 'array',\n prefixItems: parameters.map((entry) => emit(entry, refs, options)),\n minItems: parameters.length,\n maxItems: parameters.length,\n });\n }\n case 'InstanceType':\n return emit(schemaSchemaField(schemaSchemaField(schema, 'constructor') ?? schema, 'returns') ?? schema, refs, options);\n case 'ConstructorParameters': {\n const parameters = schemaSchemaListField(schemaSchemaField(schema, 'constructor') ?? schema, 'parameters');\n return opt({\n type: 'array',\n prefixItems: parameters.map((entry) => emit(entry, refs, options)),\n minItems: parameters.length,\n maxItems: parameters.length,\n });\n }\n case 'Function':\n case 'Constructor':\n case 'Promise':\n case 'Iterator':\n case 'AsyncIterator':\n case 'Symbol':\n case 'Base':\n return opt({});\n default:\n return undefined;\n }\n}\n",
|
|
43
|
+
"import type { TSchema } from '../type/schema.js';\nimport type { JsonSchema, JsonSchemaOptions } from './emitter.js';\nimport { integerSchema, numberSchema, objectLikeSchema, stringSchema } from './emitter-base.js';\nimport { emitDerivedSchema } from './emitter-derived.js';\nimport { emitReferenceSchema } from './emitter-reference.js';\nimport type { ApplyOptions, EmitJsonSchema } from './emitter-types.js';\nimport { emitWrapperSchema } from './emitter-wrapper.js';\n\nexport { integerSchema, numberSchema, objectLikeSchema, stringSchema } from './emitter-base.js';\n\nexport function emitAdvancedSchema(\n kind: string | undefined,\n schema: TSchema,\n refs: Map<string, TSchema>,\n options: JsonSchemaOptions,\n opt: ApplyOptions,\n emit: EmitJsonSchema,\n): JsonSchema | undefined {\n return emitReferenceSchema(kind, schema, refs, options, opt, emit)\n ?? emitDerivedSchema(kind, schema, refs, options, opt, emit)\n ?? emitWrapperSchema(kind, schema, refs, options, opt, emit);\n}\n",
|
|
44
|
+
"import type {\n TArray,\n TEnum,\n TInteger,\n TNumber,\n TObject,\n TRecord,\n TSchema,\n TString,\n TTuple,\n TUint8Array,\n} from '../type/schema.js';\nimport {\n schemaConst,\n schemaItem,\n schemaItemOrInner,\n schemaRefinements,\n schemaStringListField,\n schemaUnknownField,\n schemaVariants,\n} from '../shared/schema-access.js';\nimport { integerSchema, numberSchema, objectLikeSchema, stringSchema } from './emitter-base.js';\nimport { emitAdvancedSchema } from './emitter-advanced.js';\nimport { emitDerivedSchema } from './emitter-derived.js';\nimport { emitReferenceSchema } from './emitter-reference.js';\nimport { emitWrapperSchema } from './emitter-wrapper.js';\nimport type { ApplyOptions, EmitJsonSchema } from './emitter-types.js';\n\nexport interface JsonSchemaOptions {\n descriptions?: boolean;\n titles?: boolean;\n defaults?: boolean;\n resolveRefs?: boolean;\n}\n\nexport interface JsonSchema {\n [key: string]: unknown;\n $comment?: string;\n $defs?: Record<string, JsonSchema>;\n $ref?: string;\n additionalProperties?: boolean | JsonSchema;\n allOf?: JsonSchema[];\n anyOf?: JsonSchema[];\n const?: string | number | boolean | null;\n contains?: JsonSchema;\n contentEncoding?: string;\n default?: unknown;\n description?: string;\n else?: JsonSchema;\n enum?: Array<string | number | boolean | null>;\n format?: string;\n if?: JsonSchema;\n items?: boolean | JsonSchema;\n maxContains?: number;\n maxItems?: number;\n maxLength?: number;\n maxProperties?: number;\n minContains?: number;\n minItems?: number;\n minLength?: number;\n minProperties?: number;\n not?: JsonSchema;\n pattern?: string;\n patternProperties?: Record<string, JsonSchema>;\n prefixItems?: JsonSchema[];\n properties?: Record<string, JsonSchema>;\n propertyNames?: JsonSchema;\n required?: string[];\n then?: JsonSchema;\n title?: string;\n type?: string | string[];\n uniqueItems?: boolean;\n}\n\nexport interface JsonSchemaResult {\n schema: JsonSchema;\n definitions: Record<string, JsonSchema>;\n}\n\nexport function Schema(schema: TSchema, options: JsonSchemaOptions = {}): JsonSchemaResult {\n const refs = new Map<string, TSchema>();\n const emitted = toJsonSchema(schema, refs, options);\n const definitions: Record<string, JsonSchema> = {};\n for (const [name, refSchema] of refs) {\n definitions[name] = toJsonSchema(refSchema, refs, options);\n }\n return { schema: emitted, definitions };\n}\n\nexport function To(schema: TSchema, options: JsonSchemaOptions = {}): JsonSchema {\n return toJsonSchema(schema, new Map(), options ?? {});\n}\n\nfunction applySchemaOptions(\n schema: TSchema,\n options: JsonSchemaOptions,\n): ApplyOptions {\n const { descriptions = true, titles = true, defaults = true } = options;\n return (obj: JsonSchema, extra: JsonSchema = {}): JsonSchema => {\n const result: JsonSchema = { ...obj, ...extra };\n const description = schemaUnknownField(schema, 'description');\n const title = schemaUnknownField(schema, 'title');\n const defaultValue = schemaUnknownField(schema, 'default');\n if (descriptions && typeof description === 'string') result.description = description;\n if (titles && typeof title === 'string') result.title = title;\n if (defaults && defaultValue !== undefined) result['default'] = defaultValue;\n return result;\n };\n}\n\nfunction emitBuiltInSchema(\n kind: string | undefined,\n schema: TSchema,\n refs: Map<string, TSchema>,\n options: JsonSchemaOptions,\n opt: ApplyOptions,\n emit: EmitJsonSchema,\n): JsonSchema | undefined {\n switch (kind) {\n case 'String':\n return opt(stringSchema(schema as TString));\n case 'Uint8Array': {\n const bytes = schema as TUint8Array;\n return opt({\n type: 'string',\n contentEncoding: 'base64',\n ...(bytes.minByteLength !== undefined ? { minLength: Math.ceil((bytes.minByteLength * 4) / 3) } : {}),\n ...(bytes.maxByteLength !== undefined ? { maxLength: Math.ceil((bytes.maxByteLength * 4) / 3) } : {}),\n $comment: 'Uint8Array runtime values are represented as base64 strings in emitted JSON Schema.',\n });\n }\n case 'RegExpInstance':\n return opt({ type: 'object', $comment: 'RegExpInstance validates actual RegExp objects; no JSON Schema equivalent.' });\n case 'Number':\n return opt(numberSchema(schema as TNumber));\n case 'Integer':\n return opt(integerSchema(schema as TInteger));\n case 'Boolean':\n return opt({ type: 'boolean' });\n case 'Null':\n return opt({ type: 'null' });\n case 'BigInt':\n return opt({ type: 'string', $comment: 'BigInt runtime value; no native JSON Schema equivalent.' });\n case 'Date':\n return opt({ type: 'string', format: 'date-time', $comment: 'Date runtime instance; validated as native Date at runtime.' });\n case 'Literal':\n return opt({ const: schemaConst(schema) as string | number | boolean | null });\n case 'Void':\n return opt({ type: 'null', description: 'void (undefined or null)' });\n case 'Undefined':\n return opt({ not: {}, description: 'undefined' });\n case 'Unknown':\n case 'Any':\n return opt({});\n case 'Never':\n return opt({ not: {} });\n case 'Array': {\n const array = schema as TArray;\n return opt({\n type: 'array',\n items: emit(array.items, refs, options),\n ...(array.minItems !== undefined ? { minItems: array.minItems } : {}),\n ...(array.maxItems !== undefined ? { maxItems: array.maxItems } : {}),\n ...(array.uniqueItems ? { uniqueItems: true } : {}),\n ...(array.contains !== undefined ? { contains: emit(array.contains, refs, options) } : {}),\n ...(array.minContains !== undefined ? { minContains: array.minContains } : {}),\n ...(array.maxContains !== undefined ? { maxContains: array.maxContains } : {}),\n });\n }\n case 'Object':\n return opt(objectLikeSchema(schema as TObject<Record<string, TSchema>, string, string>, refs, options, emit));\n case 'Tuple': {\n const tuple = schema as TTuple;\n return opt({\n type: 'array',\n prefixItems: tuple.items.map((item) => emit(item, refs, options)),\n minItems: tuple.minItems ?? tuple.items.length,\n ...(tuple.maxItems !== undefined ? { maxItems: tuple.maxItems } : tuple.additionalItems === true ? {} : { maxItems: tuple.items.length }),\n items: tuple.additionalItems === true ? {} : false,\n });\n }\n case 'Record': {\n const record = schema as TRecord;\n return opt({\n type: 'object',\n propertyNames: emit(record.key, refs, options),\n additionalProperties: emit(record.value, refs, options),\n ...(record.minProperties !== undefined ? { minProperties: record.minProperties } : {}),\n ...(record.maxProperties !== undefined ? { maxProperties: record.maxProperties } : {}),\n });\n }\n case 'Union':\n return opt({ anyOf: schemaVariants(schema).map((entry) => emit(entry, refs, options)) });\n case 'Intersect':\n return opt({ allOf: schemaVariants(schema).map((entry) => emit(entry, refs, options)) });\n case 'Optional':\n return { ...emit(schemaItem(schema) ?? schema, refs, options), $comment: 'Optional wrapper accepts undefined at runtime; JSON Schema represents the defined-value branch only.' };\n case 'Readonly':\n case 'Immutable':\n return emit(schemaItem(schema) ?? schema, refs, options);\n case 'Codec':\n return emit(schemaItemOrInner(schema) ?? schema, refs, options);\n case 'Refine': {\n const emitted = emit(schemaItem(schema) ?? schema, refs, options);\n const messages = schemaRefinements(schema)\n .flatMap((entry) => entry.message === undefined ? [] : [entry.message]);\n return { ...emitted, ...(messages.length > 0 ? { $comment: messages.join('; ') } : {}) };\n }\n case 'Enum':\n return opt({ type: 'string', enum: schemaStringListField(schema, 'values') });\n default:\n return undefined;\n }\n}\n\nfunction toJsonSchema(\n schema: TSchema,\n refs: Map<string, TSchema>,\n options: JsonSchemaOptions,\n): JsonSchema {\n const kind = schemaUnknownField(schema, '~kind');\n const resolvedKind = typeof kind === 'string' ? kind : undefined;\n const opt = applySchemaOptions(schema, options);\n const emit: EmitJsonSchema = (nextSchema, nextRefs, nextOptions) => toJsonSchema(nextSchema, nextRefs, nextOptions);\n\n return emitBuiltInSchema(resolvedKind, schema, refs, options, opt, emit)\n ?? emitReferenceSchema(resolvedKind, schema, refs, options, opt, emit)\n ?? emitWrapperSchema(resolvedKind, schema, refs, options, opt, emit)\n ?? emitDerivedSchema(resolvedKind, schema, refs, options, opt, emit)\n ?? emitAdvancedSchema(resolvedKind, schema, refs, options, opt, emit)\n ?? {};\n}\n",
|
|
45
|
+
"export * from './schema.js';\n\nimport * as Schema from './schema.js';\n\nexport default Schema;\n"
|
|
46
|
+
],
|
|
47
|
+
"mappings": "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",
|
|
48
|
+
"debugId": "E15CA57717B3AABF64756E2164756E21",
|
|
49
|
+
"names": []
|
|
50
|
+
}
|