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,71 @@
|
|
|
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/shared/schema-access.ts", "../src/type/instantiation.ts", "../src/shared/bytes.ts", "../src/value/check-collections-derived.ts", "../src/value/check-collections.ts", "../src/value/check-extensions.ts", "../src/value/check-primitives.ts", "../src/value/check.ts", "../src/error/messages.ts", "../src/error/collector/advanced.ts", "../src/error/collector/shared.ts", "../src/error/collector/collections-basic.ts", "../src/error/collector/collections-derived.ts", "../src/error/collector/collections-parameters.ts", "../src/error/collector/collections.ts", "../src/type/combinator-core.ts", "../src/type/combinator-objects.ts", "../src/type/combinator-functions.ts", "../src/type/containers.ts", "../src/value/clone.ts", "../src/type/actions.ts", "../src/type/primitives.ts", "../src/error/collector/primitives.ts", "../src/error/collector.ts", "../src/error/errors.ts", "../src/value/create.ts", "../src/value/decode.ts", "../src/value/encode.ts", "../src/value/convert.ts", "../src/value/repair.ts", "../src/value/result.ts", "../src/value/assert.ts", "../src/value/clean.ts", "../src/value/default.ts", "../src/value/equal.ts", "../src/value/diff.ts", "../src/value/hash.ts", "../src/value/has-codec.ts", "../src/value/mutate.ts", "../src/value/parse.ts", "../src/value/patch.ts", "../src/value/pipeline.ts", "../src/value/pointer.ts", "../src/value/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
|
+
"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",
|
|
24
|
+
"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",
|
|
25
|
+
"import { validateFormat } from './format-validators.js';\nimport { dlopen, ptr } from 'bun:ffi';\n\nconst libcPath = process.platform === 'darwin'\n ? '/usr/lib/libSystem.B.dylib'\n : process.platform === 'linux'\n ? 'libc.so.6'\n : process.platform === 'win32'\n ? 'msvcrt.dll'\n : '';\n\nconst memcmp = libcPath === ''\n ? undefined\n : dlopen(libcPath, {\n memcmp: {\n args: ['ptr', 'ptr', 'usize'],\n returns: 'i32',\n },\n }).symbols.memcmp;\n\nexport function encodeUint8ArrayBase64(value: Uint8Array): string {\n return Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString('base64');\n}\n\nexport function decodeUint8ArrayBase64(value: string): Uint8Array {\n const bunWithBase64 = Bun as typeof Bun & { base64ToBytes?: (input: string) => Uint8Array };\n if (typeof bunWithBase64.base64ToBytes === 'function') {\n return bunWithBase64.base64ToBytes(value);\n }\n return new Uint8Array(Buffer.from(value, 'base64'));\n}\n\nexport function getBase64DecodedByteLength(value: string): number {\n const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;\n return ((value.length / 4) * 3) - padding;\n}\n\nexport function areUint8ArraysEqual(left: Uint8Array, right: Uint8Array): boolean {\n if (left.byteLength !== right.byteLength) {\n return false;\n }\n if (left.byteLength === 0) {\n return true;\n }\n if (memcmp !== undefined) {\n return memcmp(ptr(left), ptr(right), left.byteLength) === 0;\n }\n for (let index = 0; index < left.length; index += 1) {\n if (left[index] !== right[index]) {\n return false;\n }\n }\n return true;\n}\n\nexport function isUint8ArrayWithinBounds(\n value: { byteLength: number },\n minByteLength?: number,\n maxByteLength?: number,\n): boolean {\n if (minByteLength !== undefined && value.byteLength < minByteLength) return false;\n return maxByteLength === undefined || value.byteLength <= maxByteLength;\n}\n\nexport function isUint8ArrayBase64String(\n value: unknown,\n minByteLength?: number,\n maxByteLength?: number,\n constBytes?: Uint8Array,\n constBase64?: string,\n): boolean {\n if (typeof value !== 'string' || !validateFormat(value, 'base64')) {\n return false;\n }\n if (!isUint8ArrayWithinBounds({ byteLength: getBase64DecodedByteLength(value) }, minByteLength, maxByteLength)) {\n return false;\n }\n return constBytes === undefined ? true : value === (constBase64 ?? encodeUint8ArrayBase64(constBytes));\n}\n",
|
|
26
|
+
"import type { TObject, TSchema } from '../type/schema.js';\nimport {\n deriveIndexSchemas,\n deriveObjectSchema,\n} from '../shared/utils.js';\nimport { isUint8ArrayBase64String } from '../shared/bytes.js';\nimport {\n schemaCallbackField,\n schemaDefinitions,\n schemaItem,\n schemaItemOrInner,\n schemaNumberField,\n schemaProperties,\n schemaRefinements,\n schemaSchemaField,\n schemaSchemaListField,\n schemaStringField,\n schemaUnknownField,\n schemaVariants,\n} from '../shared/schema-access.js';\n\ntype CheckFn = (schema: TSchema, value: unknown, refs: Map<string, TSchema>) => boolean;\n\nexport function checkReferenceCollection(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n refs: Map<string, TSchema>,\n check: CheckFn,\n): boolean | undefined {\n switch (kind) {\n case 'Union':\n return schemaVariants(schema).some((variant) => check(variant, value, refs));\n case 'Intersect':\n return schemaVariants(schema).every((variant) => check(variant, value, refs));\n case 'Optional': {\n const itemSchema = schemaItem(schema);\n return value === undefined || (itemSchema ? check(itemSchema, value, refs) : false);\n }\n case 'Readonly':\n case 'Immutable':\n case 'Codec': {\n const inner = schemaItemOrInner(schema);\n return inner ? check(inner, value, refs) : false;\n }\n case 'Ref': {\n const target = refs.get(schemaStringField(schema, 'name') ?? '');\n return target ? check(target, value, refs) : false;\n }\n case 'Recursive': {\n const name = schemaStringField(schema, 'name');\n const target = schemaSchemaField(schema, 'schema');\n if (!name || target === undefined) return false;\n const nextRefs = new Map(refs);\n nextRefs.set(name, target);\n nextRefs.set('#', target);\n return check(target, value, nextRefs);\n }\n case 'Cyclic': {\n const defs = schemaDefinitions(schema);\n const refName = schemaStringField(schema, '$ref');\n const nextRefs = new Map(refs);\n for (const [name, definition] of Object.entries(defs)) {\n nextRefs.set(name, definition);\n }\n const target = refName ? defs[refName] : undefined;\n return target ? check(target, value, nextRefs) : false;\n }\n case 'Exclude': {\n const left = schemaSchemaField(schema, 'left');\n const right = schemaSchemaField(schema, 'right');\n return left !== undefined && right !== undefined\n ? check(left, value, refs) && !check(right, value, refs)\n : false;\n }\n case 'Extract': {\n const left = schemaSchemaField(schema, 'left');\n const right = schemaSchemaField(schema, 'right');\n return left !== undefined && right !== undefined\n ? check(left, value, refs) && check(right, value, refs)\n : false;\n }\n default:\n return undefined;\n }\n}\n\nexport function checkDerivedCollection(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n refs: Map<string, TSchema>,\n check: CheckFn,\n): boolean | undefined {\n switch (kind) {\n case 'Partial': {\n const objectSchema = schemaSchemaField(schema, 'object');\n return objectSchema\n ? check(deriveObjectSchema(objectSchema as TObject, { requiredMode: 'none' }), value, refs)\n : false;\n }\n case 'Required': {\n const objectSchema = schemaSchemaField(schema, 'object');\n return objectSchema\n ? check(deriveObjectSchema(objectSchema as TObject, { requiredMode: 'all' }), value, refs)\n : false;\n }\n case 'KeyOf': {\n const objectSchema = schemaSchemaField(schema, 'object');\n return objectSchema\n ? typeof value === 'string' && Object.keys(schemaProperties(objectSchema)).includes(value)\n : false;\n }\n case 'Pick': {\n const objectSchema = schemaSchemaField(schema, 'object');\n const keys = schemaUnknownField(schema, 'keys');\n return objectSchema && Array.isArray(keys)\n ? check(deriveObjectSchema(objectSchema as TObject, { pickKeys: keys.map(String), additionalProperties: false }), value, refs)\n : false;\n }\n case 'Omit': {\n const objectSchema = schemaSchemaField(schema, 'object');\n const keys = schemaUnknownField(schema, 'keys');\n return objectSchema && Array.isArray(keys)\n ? check(deriveObjectSchema(objectSchema as TObject, { omitKeys: keys.map(String), additionalProperties: false }), value, refs)\n : false;\n }\n case 'Not': {\n const target = schemaSchemaField(schema, 'schema');\n return target ? !check(target, value, refs) : false;\n }\n case 'IfThenElse': {\n const checkSchema = schemaSchemaField(schema, 'if');\n const thenSchema = schemaSchemaField(schema, 'then');\n const elseSchema = schemaSchemaField(schema, 'else');\n if (checkSchema === undefined || thenSchema === undefined || elseSchema === undefined) return false;\n return check(checkSchema, value, refs)\n ? check(thenSchema, value, refs)\n : check(elseSchema, value, refs);\n }\n case 'Index': {\n const objectSchema = schemaSchemaField(schema, 'object');\n const keySchema = schemaSchemaField(schema, 'key');\n if (objectSchema === undefined || keySchema === undefined) return false;\n const candidates = deriveIndexSchemas(\n objectSchema as TObject,\n keySchema,\n (candidate, candidateValue) => check(candidate, candidateValue, new Map()),\n );\n return candidates.length > 0 && candidates.some((candidate) => check(candidate, value, refs));\n }\n case 'Mapped': {\n const objectSchema = schemaSchemaField(schema, 'object');\n if (objectSchema === undefined) return false;\n const transform = schemaCallbackField<(schema: TSchema, key: string) => TSchema>(schema, 'transform');\n if (!transform) {\n return check(objectSchema, value, refs);\n }\n const transformed: Record<string, TSchema> = {};\n for (const [key, propertySchema] of Object.entries(schemaProperties(objectSchema))) {\n transformed[key] = transform(propertySchema, key);\n }\n return check({ ...objectSchema, properties: transformed } as TObject, value, refs);\n }\n case 'Conditional': {\n const checkSchema = schemaSchemaField(schema, 'check');\n const union = schemaSchemaListField(schema, 'union');\n const defaultSchema = schemaSchemaField(schema, 'default');\n if (checkSchema === undefined) return false;\n if (check(checkSchema, value, refs)) {\n return union.some((candidate) => check(candidate, value, refs));\n }\n return defaultSchema !== undefined ? check(defaultSchema, value, refs) : true;\n }\n case 'Rest': {\n const items = schemaSchemaField(schema, 'items');\n return Array.isArray(value) && items !== undefined && value.every((item) => check(items, item, refs));\n }\n case 'Refine': {\n if (schemaUnknownField(schema, '~uint8arrayCodec') === true) {\n const constBytes = schemaUnknownField(schema, 'constBytes');\n return isUint8ArrayBase64String(\n value,\n schemaNumberField(schema, 'minByteLength'),\n schemaNumberField(schema, 'maxByteLength'),\n constBytes instanceof Uint8Array ? constBytes : undefined,\n schemaStringField(schema, 'constBase64'),\n );\n }\n const itemSchema = schemaItem(schema);\n return itemSchema !== undefined\n && check(itemSchema, value, refs)\n && schemaRefinements(schema).every((entry) => entry.refine(value));\n }\n default:\n return undefined;\n }\n}\n",
|
|
27
|
+
"import type { TSchema } from '../type/schema.js';\nimport { getPatternPropertySchemas } from '../shared/utils.js';\nimport {\n schemaBooleanField,\n schemaBooleanOrSchemaField,\n schemaNumberField,\n schemaOptionalKeys,\n schemaPatternProperties,\n schemaProperties,\n schemaRequiredKeys,\n schemaSchemaField,\n schemaSchemaListField,\n} from '../shared/schema-access.js';\nimport {\n checkDerivedCollection,\n checkReferenceCollection,\n} from './check-collections-derived.js';\n\ntype CheckFn = (schema: TSchema, value: unknown, refs: Map<string, TSchema>) => boolean;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction checkArrayCollection(schema: TSchema, value: unknown, refs: Map<string, TSchema>, check: CheckFn): boolean {\n if (!Array.isArray(value)) return false;\n const itemSchema = schemaSchemaField(schema, 'items');\n const minItems = schemaNumberField(schema, 'minItems');\n const maxItems = schemaNumberField(schema, 'maxItems');\n const uniqueItems = schemaBooleanField(schema, 'uniqueItems');\n const containsSchema = schemaSchemaField(schema, 'contains');\n const minContains = schemaNumberField(schema, 'minContains');\n const maxContains = schemaNumberField(schema, 'maxContains');\n if (minItems !== undefined && value.length < minItems) return false;\n if (maxItems !== undefined && value.length > maxItems) return false;\n if (uniqueItems && new Set(value).size !== value.length) return false;\n if (containsSchema !== undefined) {\n let containsCount = 0;\n for (const item of value) {\n if (check(containsSchema, item, refs)) containsCount += 1;\n }\n if (containsCount === 0) return false;\n if (minContains !== undefined && containsCount < minContains) return false;\n if (maxContains !== undefined && containsCount > maxContains) return false;\n }\n return itemSchema ? value.every((item) => check(itemSchema, item, refs)) : false;\n}\n\nfunction checkObjectCollection(schema: TSchema, value: unknown, refs: Map<string, TSchema>, check: CheckFn): boolean {\n if (!isRecord(value)) return false;\n const properties = schemaProperties(schema);\n const required = schemaRequiredKeys(schema);\n const optional = new Set(schemaOptionalKeys(schema));\n const patternProperties = schemaPatternProperties(schema);\n const additionalProperties = schemaBooleanOrSchemaField(schema, 'additionalProperties');\n\n for (const key of required) {\n if (!(key in value)) return false;\n const propertySchema = properties[key];\n if (propertySchema === undefined || !check(propertySchema, value[key], refs)) return false;\n }\n\n for (const [key, entryValue] of Object.entries(value)) {\n const propertySchema = properties[key];\n const matchedPatterns = getPatternPropertySchemas(patternProperties, key);\n if (propertySchema !== undefined) {\n if (entryValue === undefined && optional.has(key)) continue;\n if (!check(propertySchema, entryValue, refs)) return false;\n }\n if (matchedPatterns.length > 0) {\n if (!matchedPatterns.every((patternSchema) => check(patternSchema, entryValue, refs))) return false;\n continue;\n }\n if (propertySchema === undefined && additionalProperties === false) return false;\n if (propertySchema === undefined && typeof additionalProperties === 'object') {\n if (!check(additionalProperties, entryValue, refs)) return false;\n }\n }\n return true;\n}\n\nfunction checkTupleCollection(schema: TSchema, value: unknown, refs: Map<string, TSchema>, check: CheckFn): boolean {\n if (!Array.isArray(value)) return false;\n const items = schemaSchemaListField(schema, 'items');\n const minItems = schemaNumberField(schema, 'minItems');\n const maxItems = schemaNumberField(schema, 'maxItems');\n const additionalItems = schemaBooleanField(schema, 'additionalItems');\n if (minItems !== undefined && value.length < minItems) return false;\n if (maxItems !== undefined && value.length > maxItems) return false;\n if (value.length > items.length && additionalItems !== true) return false;\n return value.every((item, index) => {\n const itemSchema = items[index];\n return itemSchema ? check(itemSchema, item, refs) : true;\n });\n}\n\nfunction checkRecordCollection(schema: TSchema, value: unknown, refs: Map<string, TSchema>, check: CheckFn): boolean {\n if (!isRecord(value)) return false;\n const keySchema = schemaSchemaField(schema, 'key');\n const valueSchema = schemaSchemaField(schema, 'value');\n const entries = Object.entries(value);\n const minProperties = schemaNumberField(schema, 'minProperties');\n const maxProperties = schemaNumberField(schema, 'maxProperties');\n if (keySchema === undefined || valueSchema === undefined) return false;\n if (minProperties !== undefined && entries.length < minProperties) return false;\n if (maxProperties !== undefined && entries.length > maxProperties) return false;\n return entries.every(([entryKey, entryValue]) => check(keySchema, entryKey, refs) && check(valueSchema, entryValue, refs));\n}\n\nexport function checkCollectionKind(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n refs: Map<string, TSchema>,\n check: CheckFn,\n): boolean | undefined {\n switch (kind) {\n case 'Array':\n return checkArrayCollection(schema, value, refs, check);\n case 'Object':\n return checkObjectCollection(schema, value, refs, check);\n case 'Tuple':\n return checkTupleCollection(schema, value, refs, check);\n case 'Record':\n return checkRecordCollection(schema, value, refs, check);\n default:\n return checkReferenceCollection(kind, schema, value, refs, check)\n ?? checkDerivedCollection(kind, schema, value, refs, check);\n }\n}\n",
|
|
28
|
+
"import type { TSchema } from '../type/schema.js';\nimport { Instantiate } from '../type/instantiation.js';\nimport { resolveStringActionSchema } from '../shared/utils.js';\n\nexport function checkExtensionKind(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n refs: Map<string, TSchema>,\n check: (schema: TSchema, value: unknown, refs: Map<string, TSchema>) => boolean,\n): boolean | undefined {\n switch (kind) {\n case 'Capitalize':\n case 'Lowercase':\n case 'Uppercase':\n case 'Uncapitalize':\n return check(resolveStringActionSchema(schema), value, refs);\n case 'Parameter':\n return check((schema as TSchema & { equals: TSchema }).equals, value, refs);\n case 'This': {\n const target = refs.get('#');\n return target ? check(target, value, refs) : false;\n }\n case 'Generic':\n return check((schema as TSchema & { expression: TSchema }).expression, value, refs);\n case 'Call': {\n const instantiated = Instantiate({}, schema);\n return instantiated === schema ? false : check(instantiated, value, refs);\n }\n case 'Infer':\n return check((schema as TSchema & { extends: TSchema }).extends, value, refs);\n case 'Decode':\n case 'Encode':\n return check((schema as TSchema & { inner: TSchema }).inner, value, refs);\n case 'Awaited': {\n const current = schema as TSchema & { promise: TSchema & { item: TSchema } };\n return check(current.promise.item, value, refs);\n }\n case 'ReturnType': {\n const current = schema as TSchema & { function: TSchema & { returns: TSchema } };\n return check(current.function.returns, value, refs);\n }\n case 'Parameters': {\n const current = schema as TSchema & { function: TSchema & { parameters: TSchema[] } };\n if (!Array.isArray(value) || value.length !== current.function.parameters.length) return false;\n return value.every((item, index) => {\n const parameterSchema = current.function.parameters[index];\n return parameterSchema ? check(parameterSchema, item, refs) : false;\n });\n }\n case 'InstanceType': {\n const current = schema as TSchema & { constructor: TSchema & { returns: TSchema } };\n return check(current.constructor.returns, value, refs);\n }\n case 'ConstructorParameters': {\n const current = schema as TSchema & { constructor: TSchema & { parameters: TSchema[] } };\n if (!Array.isArray(value) || value.length !== current.constructor.parameters.length) return false;\n return value.every((item, index) => {\n const parameterSchema = current.constructor.parameters[index];\n return parameterSchema ? check(parameterSchema, item, refs) : false;\n });\n }\n default:\n return undefined;\n }\n}\n",
|
|
29
|
+
"import type { TSchema } from '../type/schema.js';\nimport {\n checkNumberConstraints,\n checkStringConstraints,\n isAsyncIteratorLike,\n isIteratorLike,\n isPromiseLike,\n} from '../shared/utils.js';\nimport { areUint8ArraysEqual, isUint8ArrayWithinBounds } from '../shared/bytes.js';\nimport { resolveRuntimeContext, type RuntimeContextArg } from '../shared/runtime-context.js';\nimport {\n schemaBigIntField,\n schemaCallbackField,\n schemaConst,\n schemaNumberField,\n schemaPatterns,\n schemaStringListField,\n} from '../shared/schema-access.js';\n\nfunction checkBigIntConstraints(schema: TSchema, value: bigint): boolean {\n const minimum = schemaBigIntField(schema, 'minimum');\n const maximum = schemaBigIntField(schema, 'maximum');\n const exclusiveMinimum = schemaBigIntField(schema, 'exclusiveMinimum');\n const exclusiveMaximum = schemaBigIntField(schema, 'exclusiveMaximum');\n const multipleOf = schemaBigIntField(schema, 'multipleOf');\n if (minimum !== undefined && value < minimum) return false;\n if (maximum !== undefined && value > maximum) return false;\n if (exclusiveMinimum !== undefined && value <= exclusiveMinimum) return false;\n if (exclusiveMaximum !== undefined && value >= exclusiveMaximum) return false;\n if (multipleOf !== undefined && value % multipleOf !== 0n) return false;\n return true;\n}\n\nfunction checkDateConstraints(schema: TSchema, value: Date): boolean {\n if (Number.isNaN(value.getTime())) return false;\n const minimum = schemaNumberField(schema, 'minimumTimestamp');\n const maximum = schemaNumberField(schema, 'maximumTimestamp');\n const exclusiveMinimum = schemaNumberField(schema, 'exclusiveMinimumTimestamp');\n const exclusiveMaximum = schemaNumberField(schema, 'exclusiveMaximumTimestamp');\n const timestamp = value.getTime();\n if (minimum !== undefined && timestamp < minimum) return false;\n if (maximum !== undefined && timestamp > maximum) return false;\n if (exclusiveMinimum !== undefined && timestamp <= exclusiveMinimum) return false;\n if (exclusiveMaximum !== undefined && timestamp >= exclusiveMaximum) return false;\n return true;\n}\n\nfunction checkUint8ArrayConstraints(schema: TSchema, value: Uint8Array): boolean {\n const minByteLength = schemaNumberField(schema, 'minByteLength');\n const maxByteLength = schemaNumberField(schema, 'maxByteLength');\n const constBytes = schemaConst(schema);\n const expectedBytes = constBytes instanceof Uint8Array ? constBytes : undefined;\n if (!isUint8ArrayWithinBounds(value, minByteLength, maxByteLength)) return false;\n return expectedBytes === undefined || areUint8ArraysEqual(value, expectedBytes);\n}\n\nexport function checkPrimitiveKind(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n context?: RuntimeContextArg,\n): boolean | undefined {\n const runtimeContext = resolveRuntimeContext(context);\n switch (kind) {\n case 'String':\n return typeof value === 'string' && checkStringConstraints(schema as TSchema & Record<string, unknown>, value, runtimeContext);\n case 'Number': {\n const policy = runtimeContext.TypeSystemPolicy.Get();\n return typeof value === 'number'\n && (policy.AllowNaN || Number.isFinite(value))\n && checkNumberConstraints(schema as TSchema & Record<string, unknown>, value);\n }\n case 'Integer':\n return typeof value === 'number' && Number.isInteger(value) && checkNumberConstraints(schema as TSchema & Record<string, unknown>, value);\n case 'Boolean':\n return typeof value === 'boolean';\n case 'Null':\n return value === null;\n case 'Literal':\n return value === schemaConst(schema);\n case 'BigInt': {\n if (typeof value !== 'bigint') return false;\n return checkBigIntConstraints(schema, value);\n }\n case 'Date': {\n if (!(value instanceof globalThis.Date)) return false;\n return checkDateConstraints(schema, value);\n }\n case 'Void':\n return value === undefined || value === null;\n case 'Undefined':\n return value === undefined;\n case 'Unknown':\n case 'Any':\n case 'Unsafe':\n return true;\n case 'Never':\n return false;\n case 'Enum':\n return schemaStringListField(schema, 'values').includes(String(value));\n case 'Identifier':\n return typeof value === 'string' && /^[$A-Z_a-z][$\\w]*$/.test(value);\n case 'TemplateLiteral': {\n if (typeof value !== 'string') return false;\n return new RegExp(schemaPatterns(schema).join('|')).test(value);\n }\n case 'Uint8Array': {\n if (!(value instanceof globalThis.Uint8Array)) return false;\n return checkUint8ArrayConstraints(schema, value);\n }\n case 'RegExpInstance':\n return value instanceof globalThis.RegExp;\n case 'Promise':\n return isPromiseLike(value);\n case 'Iterator':\n return isIteratorLike(value);\n case 'AsyncIterator':\n return isAsyncIteratorLike(value);\n case 'Function':\n return typeof value === 'function';\n case 'Constructor':\n return typeof value === 'function' && 'prototype' in value;\n case 'Symbol':\n return typeof value === 'symbol';\n case 'Base': {\n const check = schemaCallbackField<(input: unknown) => boolean>(schema, 'Check');\n return check ? check(value) : true;\n }\n default:\n return undefined;\n }\n}\n",
|
|
30
|
+
"import type { Static } from '../type/index.js';\nimport type { TSchema } from '../type/schema.js';\nimport { resolveRuntimeContext, type RuntimeContext, type RuntimeContextArg } from '../shared/runtime-context.js';\nimport { checkCollectionKind } from './check-collections.js';\nimport { checkExtensionKind } from './check-extensions.js';\nimport { checkPrimitiveKind } from './check-primitives.js';\n\n/** Options for the Check function */\nexport interface ValueCheckOptions {\n coerce?: boolean;\n context?: RuntimeContext;\n}\n\nfunction resolveCheckContext(context?: RuntimeContextArg): RuntimeContext {\n return resolveRuntimeContext(context);\n}\n\n/** Validate a value against a schema, returning a type guard */\nexport function Check<T extends TSchema>(\n schema: T,\n value: unknown,\n options?: ValueCheckOptions | RuntimeContext,\n): value is Static<T> {\n return CheckInternal(schema, value, new Map(), resolveCheckContext(options));\n}\n\n/** @internal Recursive validation core */\nexport function CheckInternal(\n schema: TSchema,\n value: unknown,\n refs: Map<string, TSchema>,\n context?: RuntimeContextArg,\n): boolean {\n const runtimeContext = resolveCheckContext(context);\n const kind = (schema as Record<string, unknown>)['~kind'] as string | undefined;\n\n const primitiveResult = checkPrimitiveKind(kind, schema, value, runtimeContext);\n if (primitiveResult !== undefined) {\n return primitiveResult;\n }\n\n const collectionResult = checkCollectionKind(\n kind,\n schema,\n value,\n refs,\n (nextSchema, nextValue, nextRefs) => CheckInternal(nextSchema, nextValue, nextRefs, runtimeContext),\n );\n if (collectionResult !== undefined) {\n return collectionResult;\n }\n\n const extensionResult = checkExtensionKind(\n kind,\n schema,\n value,\n refs,\n (nextSchema, nextValue, nextRefs) => CheckInternal(nextSchema, nextValue, nextRefs, runtimeContext),\n );\n if (extensionResult !== undefined) {\n return extensionResult;\n }\n\n const customValidator = runtimeContext.TypeRegistry.Get(kind ?? '');\n return customValidator ? customValidator(schema, value) : false;\n}\n",
|
|
31
|
+
"import type {\n SchemaIssue,\n SchemaIssueCatalog,\n SchemaIssueCode,\n SchemaIssueDiagnostic,\n SchemaIssueParams,\n} from './catalog-types.js';\nimport { resolveRuntimeContext, type RuntimeContextArg } from '../shared/runtime-context.js';\n\nexport type {\n SchemaIssue,\n SchemaIssueCatalog,\n SchemaIssueCode,\n SchemaIssueDiagnostic,\n SchemaIssueParams,\n} from './catalog-types.js';\n\nexport function createSchemaIssue(\n path: string,\n code: SchemaIssueCode,\n params: SchemaIssueParams = {},\n): SchemaIssue {\n return { path, code, params };\n}\n\nexport function localizeSchemaIssue(\n issue: SchemaIssue,\n context?: RuntimeContextArg,\n): string {\n const runtimeContext = resolveRuntimeContext(context);\n const catalog = runtimeContext.Locale.GetCatalog();\n return catalog[issue.code](issue.params ?? {});\n}\n\nexport function localizeSchemaIssueWithCatalog(\n issue: SchemaIssue,\n catalog: SchemaIssueCatalog,\n locale: string,\n): SchemaIssueDiagnostic {\n return {\n ...issue,\n locale,\n message: catalog[issue.code](issue.params ?? {}),\n };\n}\n",
|
|
32
|
+
"import type {\n TAwaited,\n TConditional,\n TConstructor,\n TInstanceType,\n TOptional,\n TRecursive,\n TRef,\n TReturnType,\n TSchema,\n} from '../../type/schema.js';\nimport { Instantiate } from '../../type/instantiation.js';\nimport { schemaPath } from '../../shared/schema-access.js';\nimport { resolveStringActionSchema, TypeRegistry } from '../../shared/utils.js';\nimport { CheckInternal } from '../../value/check.js';\nimport { createSchemaIssue, type SchemaIssue } from '../messages.js';\nimport { type CollectSchemaIssues, type ReferenceMap } from './shared.js';\n\ninterface TExcludeSchema extends TSchema {\n '~kind': 'Exclude';\n left: TSchema;\n right: TSchema;\n}\n\ninterface TExtractSchema extends TSchema {\n '~kind': 'Extract';\n left: TSchema;\n right: TSchema;\n}\n\ninterface TNotSchema extends TSchema {\n '~kind': 'Not';\n schema: TSchema;\n}\n\ninterface TIfThenElseSchema extends TSchema {\n '~kind': 'IfThenElse';\n if: TSchema;\n then: TSchema;\n else: TSchema;\n}\n\ninterface TParameterSchema extends TSchema {\n '~kind': 'Parameter';\n equals: TSchema;\n}\n\ninterface TGenericSchema extends TSchema {\n '~kind': 'Generic';\n expression: TSchema;\n}\n\ninterface TInferSchema extends TSchema {\n '~kind': 'Infer';\n extends: TSchema;\n}\n\ninterface TRefinement {\n refine: (value: unknown) => boolean;\n message: string;\n}\n\ninterface TRefineSchema extends TSchema {\n '~kind': 'Refine';\n item: TSchema;\n '~refine': TRefinement[];\n}\n\ninterface TCyclicSchema extends TSchema {\n '~kind': 'Cyclic';\n $defs: Record<string, TSchema>;\n $ref: string;\n}\n\ninterface TCodecSchema extends TSchema {\n '~kind': 'Codec';\n inner: TSchema;\n}\n\ninterface TDecodeSchema extends TSchema {\n '~kind': 'Decode';\n inner: TSchema;\n}\n\ninterface TEncodeSchema extends TSchema {\n '~kind': 'Encode';\n inner: TSchema;\n}\n\nfunction unresolvedRefIssue(path: readonly string[]): SchemaIssue[] {\n return [createSchemaIssue(schemaPath(path), 'UNRESOLVED_REF')];\n}\n\nfunction collectDelegatedIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] | undefined {\n switch (kind) {\n case 'Optional':\n return value === undefined ? [] : collectSchemaIssues((schema as TOptional<TSchema>).item, value, path, refs);\n case 'Readonly':\n case 'Immutable':\n return collectSchemaIssues((schema as TOptional<TSchema>).item, value, path, refs);\n case 'Codec':\n return collectSchemaIssues((schema as TCodecSchema).inner, value, path, refs);\n case 'Decode':\n return collectSchemaIssues((schema as TDecodeSchema).inner, value, path, refs);\n case 'Encode':\n return collectSchemaIssues((schema as TEncodeSchema).inner, value, path, refs);\n case 'Awaited':\n return collectSchemaIssues((schema as TAwaited).promise.item, value, path, refs);\n case 'ReturnType':\n return collectSchemaIssues((schema as TReturnType).function.returns, value, path, refs);\n case 'InstanceType':\n return collectSchemaIssues((schema as TInstanceType<TConstructor>).constructor.returns, value, path, refs);\n case 'Capitalize':\n case 'Lowercase':\n case 'Uppercase':\n case 'Uncapitalize':\n return collectSchemaIssues(resolveStringActionSchema(schema), value, path, refs);\n case 'Parameter':\n return collectSchemaIssues((schema as TParameterSchema).equals, value, path, refs);\n case 'Generic':\n return collectSchemaIssues((schema as TGenericSchema).expression, value, path, refs);\n case 'Infer':\n return collectSchemaIssues((schema as TInferSchema).extends, value, path, refs);\n default:\n return undefined;\n }\n}\n\nfunction collectReferenceIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] | undefined {\n switch (kind) {\n case 'Recursive': {\n const recursiveSchema = schema as TRecursive;\n const nextRefs = new Map(refs);\n nextRefs.set(recursiveSchema.name, recursiveSchema.schema);\n nextRefs.set('#', recursiveSchema.schema);\n return collectSchemaIssues(recursiveSchema.schema, value, path, nextRefs);\n }\n case 'Ref': {\n const target = refs.get((schema as TRef).name);\n return target === undefined\n ? unresolvedRefIssue(path)\n : collectSchemaIssues(target, value, path, refs);\n }\n case 'This': {\n const target = refs.get('#');\n return target === undefined\n ? unresolvedRefIssue(path)\n : collectSchemaIssues(target, value, path, refs);\n }\n case 'Call': {\n const instantiated = Instantiate({}, schema);\n return instantiated === schema\n ? [createSchemaIssue(schemaPath(path), 'CALL')]\n : collectSchemaIssues(instantiated, value, path, refs);\n }\n case 'Cyclic': {\n const cyclicSchema = schema as TCyclicSchema;\n const nextRefs = new Map(refs);\n Object.entries(cyclicSchema.$defs).forEach(([name, definition]) => {\n nextRefs.set(name, definition);\n });\n const target = cyclicSchema.$defs[cyclicSchema.$ref];\n return target === undefined ? [] : collectSchemaIssues(target, value, path, nextRefs);\n }\n default:\n return undefined;\n }\n}\n\nfunction collectBranchIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] | undefined {\n const currentPath = schemaPath(path);\n\n switch (kind) {\n case 'Exclude': {\n const excludeSchema = schema as TExcludeSchema;\n if (!CheckInternal(excludeSchema.left, value, refs)) {\n return collectSchemaIssues(excludeSchema.left, value, path, refs);\n }\n return CheckInternal(excludeSchema.right, value, refs)\n ? [createSchemaIssue(currentPath, 'EXCLUDE')]\n : [];\n }\n case 'Extract': {\n const extractSchema = schema as TExtractSchema;\n if (!CheckInternal(extractSchema.left, value, refs)) {\n return collectSchemaIssues(extractSchema.left, value, path, refs);\n }\n return CheckInternal(extractSchema.right, value, refs)\n ? []\n : [createSchemaIssue(currentPath, 'EXTRACT')];\n }\n case 'Not':\n return CheckInternal((schema as TNotSchema).schema, value, refs) ? [createSchemaIssue(currentPath, 'NOT')] : [];\n case 'IfThenElse': {\n const conditionalSchema = schema as TIfThenElseSchema;\n return collectSchemaIssues(\n CheckInternal(conditionalSchema.if, value, refs) ? conditionalSchema.then : conditionalSchema.else,\n value,\n path,\n refs,\n );\n }\n case 'Conditional': {\n const conditionalSchema = schema as TConditional<TSchema, TSchema[]>;\n if (CheckInternal(conditionalSchema.check, value, refs)) {\n const variantIssues = conditionalSchema.union.map((entry) => collectSchemaIssues(entry, value, path, refs));\n return variantIssues.some((entry) => entry.length === 0)\n ? []\n : [createSchemaIssue(currentPath, 'CONDITIONAL')];\n }\n return conditionalSchema.default === undefined\n ? []\n : collectSchemaIssues(conditionalSchema.default, value, path, refs);\n }\n case 'Refine': {\n const refineSchema = schema as TRefineSchema;\n const nestedIssues = collectSchemaIssues(refineSchema.item, value, path, refs);\n if (nestedIssues.length > 0) {\n return nestedIssues;\n }\n const issues: SchemaIssue[] = [];\n refineSchema['~refine'].forEach((refinement) => {\n if (!refinement.refine(value)) {\n issues.push(createSchemaIssue(currentPath, 'REFINE', { customMessage: refinement.message }));\n }\n });\n return issues;\n }\n default:\n return undefined;\n }\n}\n\nexport function collectAdvancedIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] {\n return collectDelegatedIssues(kind, schema, value, path, refs, collectSchemaIssues)\n ?? collectReferenceIssues(kind, schema, value, path, refs, collectSchemaIssues)\n ?? collectBranchIssues(kind, schema, value, path, refs, collectSchemaIssues)\n ?? (() => {\n const customValidator = TypeRegistry.Get(kind ?? '');\n return customValidator !== undefined && !customValidator(schema, value)\n ? [createSchemaIssue(schemaPath(path), 'CUSTOM_TYPE', { kind: kind ?? '' })]\n : [];\n })();\n}\n",
|
|
33
|
+
"import type { TSchema } from '../../type/schema.js';\nimport type { SchemaIssue } from '../messages.js';\n\nexport type ReferenceMap = Map<string, TSchema>;\n\nexport type CollectSchemaIssues = (\n schema: TSchema,\n value: unknown,\n path?: readonly string[],\n refs?: ReferenceMap,\n) => SchemaIssue[];\n\nexport function appendPath(path: readonly string[], segment: string): string[] {\n return [...path, segment];\n}\n",
|
|
34
|
+
"import type { TArray, TObject, TRecord, TSchema, TTuple } from '../../type/schema.js';\nimport { schemaPath } from '../../shared/schema-access.js';\nimport { getPatternPropertySchemas } from '../../shared/utils.js';\nimport { CheckInternal } from '../../value/check.js';\nimport { createSchemaIssue, type SchemaIssue } from '../messages.js';\nimport { appendPath, type CollectSchemaIssues, type ReferenceMap } from './shared.js';\n\nfunction collectArrayIssues(\n schema: TArray,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n\n if (!Array.isArray(value)) {\n issues.push(createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'array' }));\n return issues;\n }\n\n if (schema.minItems !== undefined && value.length < schema.minItems) {\n issues.push(createSchemaIssue(currentPath, 'MIN_ITEMS', { minimum: schema.minItems }));\n }\n if (schema.maxItems !== undefined && value.length > schema.maxItems) {\n issues.push(createSchemaIssue(currentPath, 'MAX_ITEMS', { maximum: schema.maxItems }));\n }\n if (schema.uniqueItems && new Set(value).size !== value.length) {\n issues.push(createSchemaIssue(currentPath, 'UNIQUE_ITEMS'));\n }\n if (schema.contains !== undefined) {\n let containsCount = 0;\n value.forEach((item) => {\n if (CheckInternal(schema.contains!, item, refs)) {\n containsCount += 1;\n }\n });\n if (containsCount === 0) {\n issues.push(createSchemaIssue(currentPath, 'CONTAINS'));\n }\n if (schema.minContains !== undefined && containsCount < schema.minContains) {\n issues.push(createSchemaIssue(currentPath, 'MIN_CONTAINS', { minimum: schema.minContains }));\n }\n if (schema.maxContains !== undefined && containsCount > schema.maxContains) {\n issues.push(createSchemaIssue(currentPath, 'MAX_CONTAINS', { maximum: schema.maxContains }));\n }\n }\n\n value.forEach((item, index) => {\n issues.push(...collectSchemaIssues(schema.items, item, appendPath(path, String(index)), refs));\n });\n\n return issues;\n}\n\nfunction collectObjectIssues(\n schema: TObject,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n issues.push(createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'object' }));\n return issues;\n }\n\n const objectValue = value as Record<string, unknown>;\n const required = schema.required ?? [];\n const optional = new Set((schema.optional ?? []).map(String));\n\n for (const key of required) {\n if (!(key in objectValue)) {\n issues.push(createSchemaIssue(schemaPath(appendPath(path, String(key))), 'MISSING_REQUIRED', { property: String(key) }));\n }\n }\n\n for (const [key, entryValue] of Object.entries(objectValue)) {\n const entryPath = appendPath(path, key);\n const patternSchemas = getPatternPropertySchemas(schema.patternProperties, key);\n\n if (schema.properties[key] !== undefined) {\n if (!(entryValue === undefined && optional.has(key))) {\n issues.push(...collectSchemaIssues(schema.properties[key], entryValue, entryPath, refs));\n }\n }\n if (patternSchemas.length > 0) {\n for (const patternSchema of patternSchemas) {\n issues.push(...collectSchemaIssues(patternSchema, entryValue, entryPath, refs));\n }\n } else if (schema.properties[key] === undefined && schema.additionalProperties === false) {\n issues.push(createSchemaIssue(schemaPath(entryPath), 'ADDITIONAL_PROPERTY', { property: key }));\n } else if (schema.properties[key] === undefined && typeof schema.additionalProperties === 'object') {\n issues.push(...collectSchemaIssues(schema.additionalProperties, entryValue, entryPath, refs));\n }\n }\n\n return issues;\n}\n\nfunction collectTupleIssues(\n schema: TTuple,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n\n if (!Array.isArray(value)) {\n issues.push(createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'array' }));\n return issues;\n }\n\n if (schema.minItems !== undefined && value.length < schema.minItems) {\n issues.push(createSchemaIssue(currentPath, 'MIN_ITEMS', { label: 'Tuple', minimum: schema.minItems }));\n }\n if (schema.maxItems !== undefined && value.length > schema.maxItems) {\n issues.push(createSchemaIssue(currentPath, 'MAX_ITEMS', { label: 'Tuple', maximum: schema.maxItems }));\n }\n\n value.forEach((item, index) => {\n const itemSchema = schema.items[index];\n if (itemSchema !== undefined) {\n issues.push(...collectSchemaIssues(itemSchema, item, appendPath(path, String(index)), refs));\n } else if (!schema.additionalItems) {\n issues.push(createSchemaIssue(schemaPath(appendPath(path, String(index))), 'ADDITIONAL_ITEMS', { count: index }));\n }\n });\n\n return issues;\n}\n\nfunction collectRecordIssues(\n schema: TRecord,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n issues.push(createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'object' }));\n return issues;\n }\n\n const entries = Object.entries(value as Record<string, unknown>);\n if (schema.minProperties !== undefined && entries.length < schema.minProperties) {\n issues.push(createSchemaIssue(currentPath, 'MIN_PROPERTIES', { minimum: schema.minProperties }));\n }\n if (schema.maxProperties !== undefined && entries.length > schema.maxProperties) {\n issues.push(createSchemaIssue(currentPath, 'MAX_PROPERTIES', { maximum: schema.maxProperties }));\n }\n\n entries.forEach(([key, entryValue]) => {\n if (!CheckInternal(schema.key, key, refs)) {\n issues.push(createSchemaIssue(schemaPath(appendPath(path, key)), 'INVALID_KEY', { key }));\n }\n issues.push(...collectSchemaIssues(schema.value, entryValue, appendPath(path, key), refs));\n });\n\n return issues;\n}\n\nexport function collectBasicCollectionIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] | undefined {\n switch (kind) {\n case 'Array':\n return collectArrayIssues(schema as TArray, value, path, refs, collectSchemaIssues);\n case 'Object':\n return collectObjectIssues(schema as TObject, value, path, refs, collectSchemaIssues);\n case 'Tuple':\n return collectTupleIssues(schema as TTuple, value, path, refs, collectSchemaIssues);\n case 'Record':\n return collectRecordIssues(schema as TRecord, value, path, refs, collectSchemaIssues);\n default:\n return undefined;\n }\n}\n",
|
|
35
|
+
"import type {\n TIndex,\n TIntersect,\n TKeyOf,\n TMapped,\n TObject,\n TOmit,\n TPick,\n TRequired,\n TSchema,\n TUnion,\n} from '../../type/schema.js';\nimport { schemaPath } from '../../shared/schema-access.js';\nimport { deriveIndexSchemas, deriveObjectSchema } from '../../shared/utils.js';\nimport { CheckInternal } from '../../value/check.js';\nimport { createSchemaIssue, type SchemaIssue } from '../messages.js';\nimport type { CollectSchemaIssues, ReferenceMap } from './shared.js';\n\nexport function collectDerivedCollectionIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] | undefined {\n const currentPath = schemaPath(path);\n\n switch (kind) {\n case 'Union': {\n const unionSchema = schema as TUnion;\n const variantIssues = unionSchema.variants.map((variant) => collectSchemaIssues(variant, value, path, refs));\n return variantIssues.some((entry) => entry.length === 0)\n ? []\n : [createSchemaIssue(currentPath, 'UNION')];\n }\n case 'Intersect': {\n const intersectSchema = schema as TIntersect;\n const issues: SchemaIssue[] = [];\n intersectSchema.variants.forEach((variant) => {\n issues.push(...collectSchemaIssues(variant, value, path, refs));\n });\n return issues;\n }\n case 'Partial':\n return collectSchemaIssues(deriveObjectSchema((schema as TRequired<TObject>).object, { requiredMode: 'none' }), value, path, refs);\n case 'Required':\n return collectSchemaIssues(deriveObjectSchema((schema as TRequired<TObject>).object, { requiredMode: 'all' }), value, path, refs);\n case 'KeyOf': {\n const keyOfSchema = schema as TKeyOf<TObject>;\n const keys = Object.keys(keyOfSchema.object.properties);\n if (typeof value !== 'string') {\n return [createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'string', actual: typeof value })];\n }\n return keys.includes(value) ? [] : [createSchemaIssue(currentPath, 'KEYOF', { values: keys })];\n }\n case 'Pick': {\n const pickSchema = schema as TPick<TObject, string>;\n return collectSchemaIssues(\n deriveObjectSchema(pickSchema.object, { pickKeys: pickSchema.keys, additionalProperties: false }),\n value,\n path,\n refs,\n );\n }\n case 'Omit': {\n const omitSchema = schema as TOmit<TObject, string>;\n return collectSchemaIssues(\n deriveObjectSchema(omitSchema.object, { omitKeys: omitSchema.keys, additionalProperties: false }),\n value,\n path,\n refs,\n );\n }\n case 'Index': {\n const indexSchema = schema as TIndex<TObject>;\n const candidates = deriveIndexSchemas(indexSchema.object, indexSchema.key, (candidateSchema, candidateValue) =>\n CheckInternal(candidateSchema, candidateValue, new Map()),\n );\n if (candidates.length === 0) {\n return [createSchemaIssue(currentPath, 'INDEX')];\n }\n const candidateIssues = candidates.map((candidate) => collectSchemaIssues(candidate, value, path, refs));\n return candidateIssues.some((entry) => entry.length === 0)\n ? []\n : [createSchemaIssue(currentPath, 'INDEX')];\n }\n case 'Mapped':\n return collectSchemaIssues((schema as TMapped<TObject>).object, value, path, refs);\n default:\n return undefined;\n }\n}\n",
|
|
36
|
+
"import type {\n TConstructor,\n TConstructorParameters,\n TFunction,\n TParameters,\n TRest,\n TSchema,\n} from '../../type/schema.js';\nimport { schemaPath } from '../../shared/schema-access.js';\nimport { createSchemaIssue, type SchemaIssue } from '../messages.js';\nimport { appendPath, type CollectSchemaIssues, type ReferenceMap } from './shared.js';\n\nfunction collectTupleParameterIssues(\n parameters: readonly TSchema[],\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] {\n const currentPath = schemaPath(path);\n\n if (!Array.isArray(value)) {\n return [createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'array' })];\n }\n\n const issues: SchemaIssue[] = [];\n if (value.length !== parameters.length) {\n issues.push(createSchemaIssue(currentPath, 'PARAMETERS_LENGTH', { count: parameters.length }));\n }\n value.forEach((item, index) => {\n const parameter = parameters[index];\n if (parameter !== undefined) {\n issues.push(...collectSchemaIssues(parameter, item, appendPath(path, String(index)), refs));\n }\n });\n return issues;\n}\n\nexport function collectParameterCollectionIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] | undefined {\n switch (kind) {\n case 'Rest': {\n const currentPath = schemaPath(path);\n if (!Array.isArray(value)) {\n return [createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'array' })];\n }\n\n const restSchema = schema as TRest;\n const issues: SchemaIssue[] = [];\n value.forEach((item, index) => {\n issues.push(...collectSchemaIssues(restSchema.items, item, appendPath(path, String(index)), refs));\n });\n return issues;\n }\n case 'Parameters':\n return collectTupleParameterIssues((schema as TParameters<TFunction>).function.parameters, value, path, refs, collectSchemaIssues);\n case 'ConstructorParameters':\n return collectTupleParameterIssues(\n (schema as TConstructorParameters<TConstructor>).constructor.parameters,\n value,\n path,\n refs,\n collectSchemaIssues,\n );\n default:\n return undefined;\n }\n}\n",
|
|
37
|
+
"import type { TSchema } from '../../type/schema.js';\nimport type { SchemaIssue } from '../messages.js';\nimport { collectBasicCollectionIssues } from './collections-basic.js';\nimport { collectDerivedCollectionIssues } from './collections-derived.js';\nimport { collectParameterCollectionIssues } from './collections-parameters.js';\nimport type { CollectSchemaIssues, ReferenceMap } from './shared.js';\n\nexport function collectCollectionIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n collectSchemaIssues: CollectSchemaIssues,\n): SchemaIssue[] | undefined {\n const basicIssues = collectBasicCollectionIssues(kind, schema, value, path, refs, collectSchemaIssues);\n if (basicIssues !== undefined) {\n return basicIssues;\n }\n\n const derivedIssues = collectDerivedCollectionIssues(kind, schema, value, path, refs, collectSchemaIssues);\n if (derivedIssues !== undefined) {\n return derivedIssues;\n }\n\n return collectParameterCollectionIssues(kind, schema, value, path, refs, collectSchemaIssues);\n}\n",
|
|
38
|
+
"import type {\n TUnion,\n TIntersect,\n TOptional,\n TReadonly,\n TEnum,\n TRef,\n TRecursive,\n TObject,\n TSchema,\n UnionToIntersection,\n} from './schema.js';\n\ntype Simplify<T> = { [K in keyof T]: T[K] };\ntype TObjectLike = TObject<Record<string, TSchema>, string, string>;\n\ntype EvaluateProperties<T extends TObjectLike | TIntersect<TObjectLike[]>> = T extends TObject<infer P>\n ? P\n : T extends TIntersect<infer V>\n ? Simplify<UnionToIntersection<V[number] extends TObject<infer P> ? P : never>>\n : never;\n\n/** Create a union schema from an array of variants */\nexport function Union<TOptions extends TSchema[]>(\n variants: TOptions,\n options?: Partial<Omit<TUnion<TOptions>, \"'~kind' | 'variants'\">>,\n): TUnion<TOptions> {\n return { '~kind': 'Union', variants, ...options } as TUnion<TOptions>;\n}\n\n/** Create an intersection schema from an array of variants */\nexport function Intersect<TOptions extends TSchema[]>(\n variants: TOptions,\n options?: Partial<Omit<TIntersect<TOptions>, \"'~kind' | 'variants'\">>,\n): TIntersect<TOptions> {\n return { '~kind': 'Intersect', variants, ...options } as TIntersect<TOptions>;\n}\n\n/** Flatten an Object or Intersect<Object[]> into a single Object schema */\nexport function Evaluate<T extends TObjectLike | TIntersect<TObjectLike[]>>(\n schema: T,\n): TObject<EvaluateProperties<T>> {\n if (schema['~kind'] === 'Object') {\n return schema as TObject<EvaluateProperties<T>>;\n }\n\n const properties: Record<string, TSchema> = {};\n const required = new Set<string>();\n const optional = new Set<string>();\n const patternProperties: Record<string, TSchema> = {};\n let additionalProperties: boolean | TSchema | undefined;\n\n for (const variant of schema.variants) {\n Object.assign(properties, variant.properties as Record<string, TSchema>);\n for (const key of variant.required ?? []) required.add(String(key));\n for (const key of variant.optional ?? []) optional.add(String(key));\n Object.assign(patternProperties, variant.patternProperties as Record<string, TSchema> | undefined);\n if (variant.additionalProperties === false) {\n additionalProperties = false;\n } else if (additionalProperties !== false && variant.additionalProperties !== undefined) {\n additionalProperties = variant.additionalProperties;\n }\n }\n\n for (const key of optional) {\n required.delete(key);\n }\n\n return {\n '~kind': 'Object',\n properties: properties as EvaluateProperties<T>,\n ...(required.size > 0 ? { required: [...required] as (keyof EvaluateProperties<T>)[] } : {}),\n ...(optional.size > 0 ? { optional: [...optional] as (keyof EvaluateProperties<T>)[] } : {}),\n ...(Object.keys(patternProperties).length > 0 ? { patternProperties } : {}),\n ...(additionalProperties !== undefined ? { additionalProperties } : {}),\n } as TObject<EvaluateProperties<T>>;\n}\n\n/** Mark a schema as optional (value | undefined) */\nexport function Optional<T extends TSchema>(\n item: T,\n options?: Partial<Omit<TOptional<T>, \"'~kind' | 'item'\">>,\n): TOptional<T> {\n return { '~kind': 'Optional', item, ...options } as TOptional<T>;\n}\n\n/** Mark a schema as readonly */\nexport function Readonly<T extends TSchema>(\n item: T,\n options?: Partial<Omit<TReadonly<T>, \"'~kind' | 'item'\">>,\n): TReadonly<T> {\n return { '~kind': 'Readonly', item, ...options } as TReadonly<T>;\n}\n\n/** Create an enum schema from string values */\nexport function Enum<TValues extends string[]>(\n values: TValues,\n options?: Partial<Omit<TEnum<TValues>, \"'~kind' | 'values'\">>,\n): TEnum<TValues> {\n return { '~kind': 'Enum', values, ...options } as TEnum<TValues>;\n}\n\n/** Create a reference to a named schema */\nexport function Ref<T extends TSchema = TSchema>(\n name: string,\n options?: Partial<Omit<TRef<T>, \"'~kind' | 'name'\">>,\n): TRef<T> {\n return { '~kind': 'Ref', name, ...options } as TRef<T>;\n}\n\n/** Create a recursive (self-referential) schema */\nexport function Recursive<T extends TSchema>(\n name: string,\n build: (self: TRef<T>) => T,\n options?: Partial<Omit<TRecursive<T>, \"'~kind' | 'name' | 'schema'\">>,\n): TRecursive<T> {\n const self = Ref<T>(name);\n const schema = build(self);\n return { '~kind': 'Recursive', name, schema, ...options } as TRecursive<T>;\n}\n\n/** Create a discriminated union schema */\nexport function Variant<TOptions extends TObjectLike[]>(\n discriminator: string,\n variants: TOptions,\n options?: Partial<Omit<TUnion<TOptions>, \"'~kind' | 'variants' | 'discriminator'\">>,\n): TUnion<TOptions> {\n return Union(variants, { discriminator, ...options });\n}\n",
|
|
39
|
+
"import type {\n TExclude,\n TExtract,\n TKeyOf,\n TPartial,\n TRequired,\n TPick,\n TOmit,\n TNot,\n TIfThenElse,\n TUnsafe,\n TIndex,\n TMapped,\n TConditional,\n TSchema,\n TObject,\n} from './schema.js';\n\ntype TObjectLike = TObject<Record<string, TSchema>, string, string>;\n\n/** Create an Exclude schema (Left ∩ ¬Right) */\nexport function Exclude<TLeft extends TSchema, TRight extends TSchema>(\n left: TLeft,\n right: TRight,\n options?: Partial<Omit<TExclude<TLeft, TRight>, \"'~kind' | 'left' | 'right'\">>,\n): TExclude<TLeft, TRight> {\n return { '~kind': 'Exclude', left, right, ...options } as TExclude<TLeft, TRight>;\n}\n\n/** Create an Extract schema (Left ∩ Right) */\nexport function Extract<TLeft extends TSchema, TRight extends TSchema>(\n left: TLeft,\n right: TRight,\n options?: Partial<Omit<TExtract<TLeft, TRight>, \"'~kind' | 'left' | 'right'\">>,\n): TExtract<TLeft, TRight> {\n return { '~kind': 'Extract', left, right, ...options } as TExtract<TLeft, TRight>;\n}\n\n/** Create a KeyOf schema (extracts keys of an object) */\nexport function KeyOf<T extends TObjectLike>(\n object: T,\n options?: Partial<Omit<TKeyOf<T>, \"'~kind' | 'object'\">>,\n): TKeyOf<T> {\n return { '~kind': 'KeyOf', object, ...options } as TKeyOf<T>;\n}\n\n/** Create a Partial schema (all properties optional) */\nexport function Partial<T extends TObjectLike>(\n object: T,\n options?: Partial<Omit<TPartial<T>, \"'~kind' | 'object'\">>,\n): TPartial<T> {\n return { '~kind': 'Partial', object, ...options } as TPartial<T>;\n}\n\n/** Create a Required schema (all properties required) */\nexport function Required<T extends TObjectLike>(\n object: T,\n options?: Partial<Omit<TRequired<T>, \"'~kind' | 'object'\">>,\n): TRequired<T> {\n return { '~kind': 'Required', object, ...options } as TRequired<T>;\n}\n\n/** Create a Pick schema (subset of object properties) */\nexport function Pick<T extends TObjectLike, K extends keyof T['properties']>(\n object: T,\n keys: K[],\n options?: Partial<Omit<TPick<T, K>, \"'~kind' | 'object' | 'keys'\">>,\n): TPick<T, K> {\n return { '~kind': 'Pick', object, keys, ...options } as TPick<T, K>;\n}\n\n/** Create an Omit schema (object without specified properties) */\nexport function Omit<T extends TObjectLike, K extends keyof T['properties']>(\n object: T,\n keys: K[],\n options?: Partial<Omit<TOmit<T, K>, \"'~kind' | 'object' | 'keys'\">>,\n): TOmit<T, K> {\n return { '~kind': 'Omit', object, keys, ...options } as TOmit<T, K>;\n}\n\n/** Create a Not schema (negation) */\nexport function Not<T extends TSchema>(\n schema: T,\n options?: Partial<Omit<TNot<T>, \"'~kind' | 'schema'\">>,\n): TNot<T> {\n return { '~kind': 'Not', schema, ...options } as TNot<T>;\n}\n\n/** Create an if/then/else conditional schema */\nexport function IfThenElse<TCond extends TSchema, TThen extends TSchema, TElse extends TSchema>(\n condition: TCond,\n then: TThen,\n elseSchema: TElse,\n options?: Partial<Omit<TIfThenElse<TCond, TThen, TElse>, \"'~kind' | 'if' | 'then' | 'else'\">>,\n): TIfThenElse<TCond, TThen, TElse> {\n return {\n '~kind': 'IfThenElse',\n if: condition,\n then,\n else: elseSchema,\n ...options,\n } as TIfThenElse<TCond, TThen, TElse>;\n}\n\n/** Create an unsafe schema from a raw JSON Schema record */\nexport function Unsafe<T = unknown>(\n schema: Record<string, unknown>,\n options?: Partial<Omit<TUnsafe<T>, \"'~kind' | 'schema' | 'type'\">>,\n): TUnsafe<T> {\n return {\n '~kind': 'Unsafe',\n schema,\n type: undefined as T,\n ...options,\n } as TUnsafe<T>;\n}\n\n/** Create an Index schema (value-type lookup by key) */\nexport function Index<T extends TObjectLike, TKey extends TSchema = TSchema>(\n object: T,\n key?: TKey,\n options?: Partial<Omit<TIndex<T, TKey>, \"'~kind' | 'object' | 'key'\">>,\n): TIndex<T, TKey> {\n return {\n '~kind': 'Index',\n object,\n key: key ?? { '~kind': 'String' },\n ...options,\n } as TIndex<T, TKey>;\n}\n\n/** Create a Mapped schema (delegates to inner object, with optional transform) */\nexport function Mapped<T extends TObjectLike>(\n object: T,\n transform?: (schema: TSchema, key: string) => TSchema,\n options?: Partial<Omit<TMapped<T>, \"'~kind' | 'object' | 'transform'\">>,\n): TMapped<T> {\n return { '~kind': 'Mapped', object, ...(transform ? { transform } : {}), ...options } as TMapped<T>;\n}\n\n/** Create a Conditional schema with check/union/default branches */\nexport function Conditional<TCheck extends TSchema, TUnion extends TSchema[], TDefault extends TSchema = TSchema>(\n check: TCheck,\n union: TUnion,\n defaultSchema?: TDefault,\n options?: Partial<Omit<TConditional<TCheck, TUnion, TDefault>, \"'~kind' | 'check' | 'union' | 'default'\">>,\n): TConditional<TCheck, TUnion, TDefault> {\n return {\n '~kind': 'Conditional',\n check,\n union,\n default: defaultSchema,\n ...options,\n } as TConditional<TCheck, TUnion, TDefault>;\n}\n",
|
|
40
|
+
"import type {\n TAwaited,\n TReturnType,\n TParameters,\n TInstanceType,\n TConstructorParameters,\n TModule,\n TPromise,\n TFunction,\n TConstructor,\n TRef,\n TSchema,\n} from './schema.js';\n\n/** Unwrap a Promise schema to its resolved type */\nexport function Awaited<T extends TPromise>(promise: T): TAwaited<T> {\n return { '~kind': 'Awaited', promise } as TAwaited<T>;\n}\n\n/** Extract the return type of a Function schema */\nexport function ReturnType<T extends TFunction>(fn: T): TReturnType<T> {\n return { '~kind': 'ReturnType', function: fn } as TReturnType<T>;\n}\n\n/** Extract the parameters of a Function schema as a tuple */\nexport function Parameters<T extends TFunction>(fn: T): TParameters<T> {\n return { '~kind': 'Parameters', function: fn } as TParameters<T>;\n}\n\n/** Extract the instance type of a Constructor schema */\nexport function InstanceType<T extends TConstructor>(ctor: T): TInstanceType<T> {\n return { '~kind': 'InstanceType', constructor: ctor } as TInstanceType<T>;\n}\n\n/** Extract the constructor parameters as a tuple */\nexport function ConstructorParameters<T extends TConstructor>(ctor: T): TConstructorParameters<T> {\n return { '~kind': 'ConstructorParameters', constructor: ctor } as TConstructorParameters<T>;\n}\n\n/** Create a schema module (named definitions registry) */\nexport function Module(definitions: Record<string, TSchema>): TModule & { Import: (name: string) => TRef } {\n const mod = { '~kind': 'Module', definitions } as TModule;\n return {\n ...mod,\n Import(name: string): TRef {\n return { '~kind': 'Ref', name } as TRef;\n },\n };\n}\n",
|
|
41
|
+
"import type {\n TArray,\n TObject,\n TTuple,\n TRecord,\n TSchema,\n} from './schema.js';\nimport { ExpandTupleRest, type ExpandRestItems } from './actions.js';\n\nexport function Array<T extends TSchema>(\n item: T,\n options?: Partial<Omit<TArray<T>, \"'~kind' | 'items'\">>,\n): TArray<T> {\n return {\n '~kind': 'Array',\n items: item,\n ...options,\n } as TArray<T>;\n}\n\nexport function Object<\n const TProperties extends Record<string, TSchema>,\n const TRequired extends keyof TProperties = never,\n const TOptional extends keyof TProperties = never,\n>(\n properties: TProperties,\n options?: Partial<\n Omit<TObject<TProperties, TRequired, TOptional>, \"'~kind' | 'properties'\">\n >,\n): TObject<TProperties, TRequired, TOptional> {\n return {\n '~kind': 'Object',\n properties,\n ...options,\n } as TObject<TProperties, TRequired, TOptional>;\n}\n\nexport function Tuple<TItems extends TSchema[]>(\n items: TItems,\n options?: Partial<Omit<TTuple<ExpandRestItems<TItems>>, \"'~kind' | 'items'\">>,\n): TTuple<ExpandRestItems<TItems>> {\n const expandedItems = ExpandTupleRest(items);\n return {\n '~kind': 'Tuple',\n items: expandedItems,\n minItems: options?.minItems ?? expandedItems.length,\n maxItems: options?.maxItems ?? (options?.additionalItems === true ? undefined : expandedItems.length),\n additionalItems: options?.additionalItems ?? false,\n ...options,\n } as TTuple<ExpandRestItems<TItems>>;\n}\n\nexport function Record<TKey extends TSchema, TValue extends TSchema>(\n key: TKey,\n value: TValue,\n options?: Partial<Omit<TRecord<TKey, TValue>, \"'~kind' | 'key' | 'value'\">>,\n): TRecord<TKey, TValue> {\n return {\n '~kind': 'Record',\n key,\n value,\n ...options,\n } as TRecord<TKey, TValue>;\n}\n",
|
|
42
|
+
"function cloneValue<T>(value: T): T {\n return (globalThis as typeof globalThis & {\n structuredClone<U>(input: U): U;\n }).structuredClone(value);\n}\n\n/** Deep structural clone using Bun-native structuredClone */\nexport function Clone<T>(value: T): T {\n return cloneValue(value);\n}\n",
|
|
43
|
+
"import type {\n TCapitalize,\n TExclude,\n TLowercase,\n TNull,\n TObject,\n TReadonly,\n TRest,\n TSchema,\n TTuple,\n TUndefined,\n TUnion,\n UnionToIntersection,\n TUncapitalize,\n TUppercase,\n} from './schema.js';\nimport { Evaluate, Exclude, Intersect, Readonly, Union } from './combinators.js';\nimport { Object as TypeObject } from './containers.js';\nimport { Null, Undefined, Unknown } from './primitives.js';\nimport { Clone as CloneValue } from '../value/clone.js';\n\ntype TObjectLike = TObject<Record<string, TSchema>, string, string>;\n\nfunction hasKind(value: TSchema, kind: string): boolean {\n return (value as { '~kind'?: string })['~kind'] === kind;\n}\n\nexport type ExpandRestItems<TItems extends TSchema[]> = TItems extends [\n infer Head extends TSchema,\n ...infer Tail extends TSchema[],\n]\n ? Head extends TRest<infer Item extends TSchema>\n ? Item extends TTuple<infer RestItems>\n ? [...ExpandRestItems<RestItems>, ...ExpandRestItems<Tail>]\n : [Head, ...ExpandRestItems<Tail>]\n : [Head, ...ExpandRestItems<Tail>]\n : [];\n\nexport function ExpandTupleRest<TItems extends TSchema[]>(items: TItems): ExpandRestItems<TItems> {\n const expanded: TSchema[] = [];\n for (const item of items) {\n if (hasKind(item, 'Rest')) {\n const rest = item as TRest<TSchema>;\n if (hasKind(rest.items, 'Tuple')) {\n expanded.push(...(rest.items as TTuple<TSchema[]>).items);\n continue;\n }\n }\n expanded.push(item);\n }\n return expanded as ExpandRestItems<TItems>;\n}\n\nexport function Rest<T extends TSchema>(item: T): TRest<T> {\n return { '~kind': 'Rest', type: 'rest', items: item } as TRest<T>;\n}\n\nexport function Composite<TObjects extends TObjectLike[]>(objects: [...TObjects]): TObject {\n return Evaluate(Intersect(objects)) as TObject;\n}\n\nexport function Clone<T extends TSchema>(schema: T): T {\n return CloneValue(schema);\n}\n\nexport function Capitalize<T extends TSchema>(item: T): TCapitalize<T> {\n return { '~kind': 'Capitalize', item } as TCapitalize<T>;\n}\n\nexport function Lowercase<T extends TSchema>(item: T): TLowercase<T> {\n return { '~kind': 'Lowercase', item } as TLowercase<T>;\n}\n\nexport function Uppercase<T extends TSchema>(item: T): TUppercase<T> {\n return { '~kind': 'Uppercase', item } as TUppercase<T>;\n}\n\nexport function Uncapitalize<T extends TSchema>(item: T): TUncapitalize<T> {\n return { '~kind': 'Uncapitalize', item } as TUncapitalize<T>;\n}\n\ntype InterfaceProperties<\n Heritage extends TObject[],\n Properties extends Record<string, TSchema>,\n> = Properties & UnionToIntersection<\n Heritage[number] extends TObject<infer InheritedProperties, infer _Required, infer _Optional>\n ? InheritedProperties\n : Record<string, never>\n>;\n\nexport type TInterface<\n Heritage extends TObject[] = TObject[],\n Properties extends Record<string, TSchema> = Record<string, TSchema>,\n> = TObject<InterfaceProperties<Heritage, Properties>>;\n\nexport function Interface<\n Heritage extends TObject[],\n Properties extends Record<string, TSchema>,\n>(\n heritage: [...Heritage],\n properties: Properties,\n options?: Record<string, unknown>,\n): TInterface<Heritage, Properties> {\n return {\n ...Evaluate(Intersect([...heritage, TypeObject(properties)])),\n ...options,\n } as TInterface<Heritage, Properties>;\n}\n\nexport type TNonNullable<Type extends TSchema> = TExclude<Type, TUnion<[TNull, TUndefined]>>;\n\nexport function NonNullable<Type extends TSchema>(\n type: Type,\n options?: Partial<Omit<TNonNullable<Type>, \"'~kind' | 'left' | 'right'\">>,\n): TNonNullable<Type> {\n return Exclude(type, Union([Null(), Undefined()]), options) as TNonNullable<Type>;\n}\n\nexport type TOptions<Type extends TSchema, SchemaOptions extends Record<string, unknown>> = Type & SchemaOptions;\n\nexport function Options<Type extends TSchema, SchemaOptions extends Record<string, unknown>>(\n type: Type,\n options: SchemaOptions,\n): TOptions<Type, SchemaOptions> {\n return {\n ...type,\n ...options,\n } as TOptions<Type, SchemaOptions>;\n}\n\nexport type TReadonlyType<Type extends TSchema> = TReadonly<Type>;\n\nexport function ReadonlyType<Type extends TSchema>(\n type: Type,\n options?: Partial<Omit<TReadonlyType<Type>, \"'~kind' | 'item'\">>,\n): TReadonlyType<Type> {\n return Readonly(type, options) as TReadonlyType<Type>;\n}\n\nexport interface TIdentifier<Name extends string = string> extends TSchema {\n '~kind': 'Identifier';\n type: 'identifier';\n name: Name;\n}\n\nexport function Identifier<Name extends string>(name: Name): TIdentifier<Name> {\n return {\n '~kind': 'Identifier',\n type: 'identifier',\n name,\n };\n}\n\nexport interface TParameter<\n Name extends string = string,\n Extends extends TSchema = TSchema,\n Equals extends TSchema = Extends,\n> extends TSchema {\n '~kind': 'Parameter';\n name: Name;\n extends: Extends;\n equals: Equals;\n}\n\nexport function Parameter<Name extends string, Extends extends TSchema, Equals extends TSchema>(\n name: Name,\n extends_: Extends,\n equals: Equals,\n): TParameter<Name, Extends, Equals>;\nexport function Parameter<Name extends string, Extends extends TSchema>(\n name: Name,\n extends_: Extends,\n): TParameter<Name, Extends, Extends>;\nexport function Parameter<Name extends string>(\n name: Name,\n): TParameter<Name>;\nexport function Parameter(\n name: string,\n extends_?: TSchema,\n equals?: TSchema,\n): TParameter {\n const constraint = extends_ ?? Unknown();\n const fallback = equals ?? constraint;\n return {\n '~kind': 'Parameter',\n name,\n extends: constraint,\n equals: fallback,\n };\n}\n\nexport interface TThis extends TSchema {\n '~kind': 'This';\n $ref: '#';\n}\n\nexport function This(options?: Partial<Omit<TThis, \"'~kind' | '$ref'\">>): TThis {\n return {\n '~kind': 'This',\n $ref: '#',\n ...options,\n };\n}\n\nexport function Import<TModule extends { definitions: Record<string, TSchema> }, TName extends Extract<keyof TModule['definitions'], string>>(\n module: TModule,\n name: TName,\n): TModule['definitions'][TName] {\n const definition = module.definitions[name];\n if (definition === undefined) {\n throw new Error(`Unknown module definition: ${name}`);\n }\n return definition as TModule['definitions'][TName];\n}\n",
|
|
44
|
+
"import type {\n TString,\n TNumber,\n TInteger,\n TBoolean,\n TNull,\n TLiteral,\n TVoid,\n TUndefined,\n TUnknown,\n TAny,\n TNever,\n TTemplateLiteral,\n TSymbol,\n TUint8Array,\n TRegExpInstance,\n TFunction,\n TConstructor,\n TPromise,\n TIterator,\n TAsyncIterator,\n TSchema,\n TBigInt,\n TDate,\n TDecode,\n TEncode,\n} from './schema.js';\nimport { ExpandTupleRest, type ExpandRestItems } from './actions.js';\n\n/** Create a string schema */\nexport function String(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return { '~kind': 'String', ...options } as TString;\n}\n\n/** Create a number schema */\nexport function Number(options?: Partial<Omit<TNumber, \"'~kind'\">>): TNumber {\n return { '~kind': 'Number', ...options } as TNumber;\n}\n\n/** Create an integer schema */\nexport function Integer(options?: Partial<Omit<TInteger, \"'~kind'\">>): TInteger {\n return { '~kind': 'Integer', ...options } as TInteger;\n}\n\n/** Create a boolean schema */\nexport function Boolean(options?: Partial<Omit<TBoolean, \"'~kind'\">>): TBoolean {\n return { '~kind': 'Boolean', ...options } as TBoolean;\n}\n\n/** Create a null schema */\nexport function Null(options?: Partial<Omit<TNull, \"'~kind'\">>): TNull {\n return { '~kind': 'Null', ...options } as TNull;\n}\n\n/** Create a literal schema for an exact value */\nexport function Literal<const TValue extends string | number | boolean>(\n value: TValue,\n options?: Partial<Omit<TLiteral<TValue>, \"'~kind' | 'const'\">>,\n): TLiteral<TValue> {\n return { '~kind': 'Literal', const: value, ...options } as TLiteral<TValue>;\n}\n\n/** Create a void schema (undefined or null) */\nexport function Void(options?: Partial<Omit<TVoid, \"'~kind'\">>): TVoid {\n return { '~kind': 'Void', ...options } as TVoid;\n}\n\n/** Create an undefined schema */\nexport function Undefined(options?: Partial<Omit<TUndefined, \"'~kind'\">>): TUndefined {\n return { '~kind': 'Undefined', ...options } as TUndefined;\n}\n\n/** Create an unknown schema (accepts any value) */\nexport function Unknown(options?: Partial<Omit<TUnknown, \"'~kind'\">>): TUnknown {\n return { '~kind': 'Unknown', ...options } as TUnknown;\n}\n\n/** Create an any schema */\nexport function Any(options?: Partial<Omit<TAny, \"'~kind'\">>): TAny {\n return { '~kind': 'Any', ...options } as TAny;\n}\n\n/** Create a never schema (rejects all values) */\nexport function Never(options?: Partial<Omit<TNever, \"'~kind'\">>): TNever {\n return { '~kind': 'Never', ...options } as TNever;\n}\n\n/** Create a bigint schema */\nexport function BigInt(options?: Partial<Omit<TBigInt, \"'~kind'\">>): TBigInt {\n return { '~kind': 'BigInt', ...options } as TBigInt;\n}\n\n/** Create a native Date instance schema with optional timestamp constraints */\nexport function Date(options?: Partial<Omit<TDate, \"'~kind'\">>): TDate {\n return { '~kind': 'Date', ...options } as TDate;\n}\n\n/** Create a string schema with date format (YYYY-MM-DD) */\nexport function DateFormat(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'date', ...options });\n}\n\n/** Create a UUID string schema */\nexport function Uuid(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'uuid', ...options });\n}\n\n/** Create an email string schema */\nexport function Email(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'email', ...options });\n}\n\n/** Create a URI string schema */\nexport function Uri(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'uri', ...options });\n}\n\n/** Create a hostname string schema */\nexport function Hostname(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'hostname', ...options });\n}\n\n/** Create an IP address string schema (v4 or v6) */\nexport function Ip(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'ip', ...options });\n}\n\n/** Create a base64 string schema */\nexport function Base64(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'base64', ...options });\n}\n\n/** Create a hex string schema */\nexport function Hex(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'hex', ...options });\n}\n\n/** Create a hex colour string schema (#RGB or #RRGGBB) */\nexport function HexColor(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'hexcolor', ...options });\n}\n\n/** Create a date-time string schema (ISO 8601) */\nexport function DateTime(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'datetime', ...options });\n}\n\n/** Create a time string schema (HH:MM:SS) */\nexport function Time(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'time', ...options });\n}\n\n/** Create a duration string schema (ISO 8601) */\nexport function Duration(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'duration', ...options });\n}\n\n/** Create a JSON string schema */\nexport function Json(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'json', ...options });\n}\n\n/** Create a credit card string schema (Luhn validated) */\nexport function CreditCard(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'creditcard', ...options });\n}\n\n/** Create a Uint8Array schema with optional byte length constraints */\nexport function Uint8Array(options?: Partial<Omit<TUint8Array, \"'~kind'\">>): TUint8Array {\n return { '~kind': 'Uint8Array', ...options } as TUint8Array;\n}\n\n/** Create a RegExpInstance schema that validates actual RegExp objects */\nexport function RegExpInstance(options?: Partial<Omit<TRegExpInstance, \"'~kind'\">>): TRegExpInstance {\n return { '~kind': 'RegExpInstance', ...options } as TRegExpInstance;\n}\n\n/** Create a regex-validated string schema */\nexport function RegExp(options?: Partial<Omit<TString, \"'~kind'\">>): TString {\n return String({ format: 'regex', ...options });\n}\n\n/** Create a symbol schema */\nexport function Symbol(options?: Partial<Omit<TSymbol, \"'~kind'\">>): TSymbol {\n return { '~kind': 'Symbol', ...options } as TSymbol;\n}\n\n/** Create a template literal string schema */\nexport function TemplateLiteral(\n patterns: string[],\n options?: Partial<Omit<TTemplateLiteral, \"'~kind' | 'patterns'\">>,\n): TTemplateLiteral {\n return { '~kind': 'TemplateLiteral', patterns, ...options } as TTemplateLiteral;\n}\n\n/** Create a function schema */\nexport function Function<TParameters extends TSchema[] = TSchema[], TReturns extends TSchema = TAny>(\n parameters?: TParameters,\n returns?: TReturns,\n options?: Partial<Omit<TFunction<ExpandRestItems<TParameters>, TReturns>, \"'~kind' | 'parameters' | 'returns'\">>,\n): TFunction<ExpandRestItems<TParameters>, TReturns> {\n const resolvedParameters = ExpandTupleRest((parameters ?? []) as TParameters);\n const resolvedReturns = (returns ?? Any()) as TReturns;\n return {\n '~kind': 'Function',\n parameters: resolvedParameters,\n returns: resolvedReturns,\n ...options,\n } as TFunction<ExpandRestItems<TParameters>, TReturns>;\n}\n\n/** Create a constructor schema */\nexport function Constructor<TParameters extends TSchema[] = TSchema[], TReturns extends TSchema = TAny>(\n parameters?: TParameters,\n returns?: TReturns,\n options?: Partial<Omit<TConstructor<ExpandRestItems<TParameters>, TReturns>, \"'~kind' | 'parameters' | 'returns'\">>,\n): TConstructor<ExpandRestItems<TParameters>, TReturns> {\n const resolvedParameters = ExpandTupleRest((parameters ?? []) as TParameters);\n const resolvedReturns = (returns ?? Any()) as TReturns;\n return {\n '~kind': 'Constructor',\n parameters: resolvedParameters,\n returns: resolvedReturns,\n ...options,\n } as TConstructor<ExpandRestItems<TParameters>, TReturns>;\n}\n\n/** Create a Promise schema */\nexport function Promise<T extends TSchema = TSchema>(\n item: T,\n options?: Partial<Omit<TPromise<T>, \"'~kind' | 'item'\">>,\n): TPromise<T> {\n return { '~kind': 'Promise', item, ...options } as TPromise<T>;\n}\n\n/** Create an Iterator schema */\nexport function Iterator<T extends TSchema = TSchema>(\n item: T,\n options?: Partial<Omit<TIterator<T>, \"'~kind' | 'item'\">>,\n): TIterator<T> {\n return { '~kind': 'Iterator', item, ...options } as TIterator<T>;\n}\n\n/** Create an AsyncIterator schema */\nexport function AsyncIterator<T extends TSchema = TSchema>(\n item: T,\n options?: Partial<Omit<TAsyncIterator<T>, \"'~kind' | 'item'\">>,\n): TAsyncIterator<T> {\n return { '~kind': 'AsyncIterator', item, ...options } as TAsyncIterator<T>;\n}\n\n/** Wrap a schema with a decode transform */\nexport function Decode<T extends TSchema>(\n inner: T,\n decode: (value: unknown) => unknown,\n): TDecode<T> {\n return { '~kind': 'Decode', inner, decode } as TDecode<T>;\n}\n\n/** Wrap a schema with an encode transform */\nexport function Encode<T extends TSchema>(\n inner: T,\n encode: (value: unknown) => unknown,\n): TEncode<T> {\n return { '~kind': 'Encode', inner, encode } as TEncode<T>;\n}\n",
|
|
45
|
+
"import type {\n TBigInt,\n TDate,\n TEnum,\n TInteger,\n TLiteral,\n TNumber,\n TSchema,\n TString,\n TUint8Array,\n} from '../../type/schema.js';\nimport { String as TypeString } from '../../type/primitives.js';\nimport { schemaPath } from '../../shared/schema-access.js';\nimport { isAsyncIteratorLike, isIteratorLike, isPromiseLike } from '../../shared/utils.js';\nimport { CheckInternal } from '../../value/check.js';\nimport { createSchemaIssue, type SchemaIssue } from '../messages.js';\nimport type { ReferenceMap } from './shared.js';\n\ninterface TBaseSchemaLike extends TSchema {\n Check?: (input: unknown) => boolean;\n Errors?: (input: unknown) => object[];\n}\n\nfunction invalidTypeIssue(path: readonly string[], expected: string, actual?: string): SchemaIssue[] {\n return [createSchemaIssue(schemaPath(path), 'INVALID_TYPE', actual === undefined ? { expected } : { expected, actual })];\n}\n\nfunction collectStringIssues(schema: TString, value: unknown, path: readonly string[], refs: ReferenceMap): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n\n if (typeof value !== 'string') {\n issues.push(createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'string', actual: typeof value }));\n return issues;\n }\n\n if (schema.minLength !== undefined && value.length < schema.minLength) {\n issues.push(createSchemaIssue(currentPath, 'MIN_LENGTH', { label: 'String length', minimum: schema.minLength }));\n }\n if (schema.maxLength !== undefined && value.length > schema.maxLength) {\n issues.push(createSchemaIssue(currentPath, 'MAX_LENGTH', { label: 'String length', maximum: schema.maxLength }));\n }\n if (schema.pattern !== undefined && !new RegExp(schema.pattern).test(value)) {\n issues.push(createSchemaIssue(currentPath, 'PATTERN', { label: 'String', pattern: schema.pattern }));\n }\n if (typeof schema.format === 'string' && !CheckInternal(TypeString({ format: schema.format }), value, refs)) {\n issues.push(createSchemaIssue(currentPath, 'FORMAT', { label: 'String', format: schema.format }));\n }\n\n return issues;\n}\n\nfunction collectNumberIssues(\n schema: TInteger | TNumber,\n value: unknown,\n path: readonly string[],\n integerOnly: boolean,\n): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n issues.push(createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'number', actual: typeof value }));\n return issues;\n }\n\n if (integerOnly && !Number.isInteger(value)) {\n issues.push(createSchemaIssue(currentPath, 'INVALID_TYPE', { expected: 'integer' }));\n }\n if (schema.minimum !== undefined && value < schema.minimum) {\n issues.push(createSchemaIssue(currentPath, 'MINIMUM', { minimum: schema.minimum }));\n }\n if (schema.maximum !== undefined && value > schema.maximum) {\n issues.push(createSchemaIssue(currentPath, 'MAXIMUM', { maximum: schema.maximum }));\n }\n if (schema.exclusiveMinimum !== undefined && value <= schema.exclusiveMinimum) {\n issues.push(createSchemaIssue(currentPath, 'EXCLUSIVE_MINIMUM', { minimum: schema.exclusiveMinimum }));\n }\n if (schema.exclusiveMaximum !== undefined && value >= schema.exclusiveMaximum) {\n issues.push(createSchemaIssue(currentPath, 'EXCLUSIVE_MAXIMUM', { maximum: schema.exclusiveMaximum }));\n }\n if (schema.multipleOf !== undefined && value % schema.multipleOf !== 0) {\n issues.push(createSchemaIssue(currentPath, 'MULTIPLE_OF', { divisor: schema.multipleOf }));\n }\n\n return issues;\n}\n\nfunction collectBigIntIssues(schema: TBigInt, value: unknown, path: readonly string[]): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n if (typeof value !== 'bigint') {\n return invalidTypeIssue(path, 'bigint', typeof value);\n }\n if (schema.minimum !== undefined && value < schema.minimum) {\n issues.push(createSchemaIssue(currentPath, 'MINIMUM', { minimum: schema.minimum }));\n }\n if (schema.maximum !== undefined && value > schema.maximum) {\n issues.push(createSchemaIssue(currentPath, 'MAXIMUM', { maximum: schema.maximum }));\n }\n if (schema.exclusiveMinimum !== undefined && value <= schema.exclusiveMinimum) {\n issues.push(createSchemaIssue(currentPath, 'EXCLUSIVE_MINIMUM', { minimum: schema.exclusiveMinimum }));\n }\n if (schema.exclusiveMaximum !== undefined && value >= schema.exclusiveMaximum) {\n issues.push(createSchemaIssue(currentPath, 'EXCLUSIVE_MAXIMUM', { maximum: schema.exclusiveMaximum }));\n }\n if (schema.multipleOf !== undefined && value % schema.multipleOf !== 0n) {\n issues.push(createSchemaIssue(currentPath, 'MULTIPLE_OF', { divisor: schema.multipleOf }));\n }\n return issues;\n}\n\nfunction collectDateIssues(schema: TDate, value: unknown, path: readonly string[]): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n if (!(value instanceof globalThis.Date) || Number.isNaN(value.getTime())) {\n return invalidTypeIssue(path, 'Date instance');\n }\n const timestamp = value.getTime();\n if (schema.minimumTimestamp !== undefined && timestamp < schema.minimumTimestamp) {\n issues.push(createSchemaIssue(currentPath, 'MINIMUM', { label: 'Date timestamp', minimum: schema.minimumTimestamp }));\n }\n if (schema.maximumTimestamp !== undefined && timestamp > schema.maximumTimestamp) {\n issues.push(createSchemaIssue(currentPath, 'MAXIMUM', { label: 'Date timestamp', maximum: schema.maximumTimestamp }));\n }\n return issues;\n}\n\nfunction collectLiteralIssues(schema: TLiteral<string | number | boolean>, value: unknown, path: readonly string[]): SchemaIssue[] {\n return value === schema.const\n ? []\n : [createSchemaIssue(schemaPath(path), 'INVALID_CONST', { expectedValue: JSON.stringify(schema.const) })];\n}\n\nfunction collectEnumIssues(schema: TEnum, value: unknown, path: readonly string[]): SchemaIssue[] {\n if (typeof value !== 'string') {\n return invalidTypeIssue(path, 'string', typeof value);\n }\n return schema.values.includes(value)\n ? []\n : [createSchemaIssue(schemaPath(path), 'ENUM', { values: schema.values })];\n}\n\nfunction collectTemplateLiteralIssues(\n schema: { '~kind': 'TemplateLiteral'; patterns: string[] },\n value: unknown,\n path: readonly string[],\n): SchemaIssue[] {\n if (typeof value !== 'string') {\n return invalidTypeIssue(path, 'string', typeof value);\n }\n return new RegExp(schema.patterns.join('|')).test(value)\n ? []\n : [createSchemaIssue(schemaPath(path), 'PATTERN', { label: 'String', patterns: schema.patterns })];\n}\n\nfunction collectUint8ArrayIssues(schema: TUint8Array, value: unknown, path: readonly string[]): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n const currentPath = schemaPath(path);\n if (!(value instanceof globalThis.Uint8Array)) {\n return invalidTypeIssue(path, 'Uint8Array', typeof value);\n }\n if (schema.minByteLength !== undefined && value.byteLength < schema.minByteLength) {\n issues.push(createSchemaIssue(currentPath, 'MIN_LENGTH', { label: 'Uint8Array byteLength', minimum: schema.minByteLength }));\n }\n if (schema.maxByteLength !== undefined && value.byteLength > schema.maxByteLength) {\n issues.push(createSchemaIssue(currentPath, 'MAX_LENGTH', { label: 'Uint8Array byteLength', maximum: schema.maxByteLength }));\n }\n return issues;\n}\n\nexport function collectPrimitiveIssues(\n kind: string | undefined,\n schema: TSchema,\n value: unknown,\n path: readonly string[],\n refs: ReferenceMap,\n): SchemaIssue[] | undefined {\n const currentPath = schemaPath(path);\n\n switch (kind) {\n case 'String':\n return collectStringIssues(schema as TString, value, path, refs);\n case 'Number':\n return collectNumberIssues(schema as TNumber, value, path, false);\n case 'Integer':\n return collectNumberIssues(schema as TInteger, value, path, true);\n case 'BigInt':\n return collectBigIntIssues(schema as TBigInt, value, path);\n case 'Date':\n return collectDateIssues(schema as TDate, value, path);\n case 'Boolean':\n return typeof value === 'boolean' ? [] : invalidTypeIssue(path, 'boolean', typeof value);\n case 'Null':\n return value === null ? [] : invalidTypeIssue(path, 'null');\n case 'Literal':\n return collectLiteralIssues(schema as TLiteral<string | number | boolean>, value, path);\n case 'Enum':\n return collectEnumIssues(schema as TEnum, value, path);\n case 'Void':\n return value === undefined || value === null ? [] : invalidTypeIssue(path, 'void (undefined or null)');\n case 'Undefined':\n return value === undefined ? [] : invalidTypeIssue(path, 'undefined');\n case 'Never':\n return [createSchemaIssue(currentPath, 'NEVER')];\n case 'TemplateLiteral':\n return collectTemplateLiteralIssues(schema as { '~kind': 'TemplateLiteral'; patterns: string[] }, value, path);\n case 'Uint8Array':\n return collectUint8ArrayIssues(schema as TUint8Array, value, path);\n case 'Identifier':\n return typeof value === 'string' && /^[$A-Z_a-z][$\\w]*$/.test(value)\n ? []\n : [createSchemaIssue(currentPath, typeof value === 'string' ? 'IDENTIFIER' : 'INVALID_TYPE', { expected: 'string', actual: typeof value })];\n case 'Promise':\n return isPromiseLike(value) ? [] : invalidTypeIssue(path, 'Promise-like value');\n case 'Iterator':\n return isIteratorLike(value) ? [] : invalidTypeIssue(path, 'iterator value');\n case 'AsyncIterator':\n return isAsyncIteratorLike(value) ? [] : invalidTypeIssue(path, 'async iterator value');\n case 'Function':\n return typeof value === 'function' ? [] : invalidTypeIssue(path, 'function', typeof value);\n case 'Constructor':\n return typeof value === 'function' && 'prototype' in value\n ? []\n : invalidTypeIssue(path, 'constructor function');\n case 'Symbol':\n return typeof value === 'symbol' ? [] : invalidTypeIssue(path, 'symbol', typeof value);\n case 'Base': {\n const baseSchema = schema as TBaseSchemaLike;\n if (typeof baseSchema.Check === 'function' && !baseSchema.Check(value)) {\n return [createSchemaIssue(currentPath, 'BASE')];\n }\n return [];\n }\n default:\n return undefined;\n }\n}\n",
|
|
46
|
+
"import type { TSchema } from '../type/schema.js';\nimport { schemaKind } from '../shared/schema-access.js';\nimport type { SchemaIssue } from './messages.js';\nimport { collectAdvancedIssues } from './collector/advanced.js';\nimport { collectCollectionIssues } from './collector/collections.js';\nimport { collectPrimitiveIssues } from './collector/primitives.js';\nimport type { ReferenceMap } from './collector/shared.js';\n\nexport function collectSchemaIssues(\n schema: TSchema,\n value: unknown,\n path: readonly string[] = [],\n refs: ReferenceMap = new Map(),\n): SchemaIssue[] {\n const kind = schemaKind(schema);\n\n const primitiveIssues = collectPrimitiveIssues(kind, schema, value, path, refs);\n if (primitiveIssues !== undefined) {\n return primitiveIssues;\n }\n\n const collectionIssues = collectCollectionIssues(kind, schema, value, path, refs, collectSchemaIssues);\n if (collectionIssues !== undefined) {\n return collectionIssues;\n }\n\n return collectAdvancedIssues(kind, schema, value, path, refs, collectSchemaIssues);\n}\n",
|
|
47
|
+
"import type { TSchema } from '../type/schema.js';\nimport { collectSchemaIssues } from './collector.js';\nimport {\n localizeSchemaIssueWithCatalog,\n type SchemaIssueDiagnostic,\n} from './messages.js';\nimport { resolveRuntimeContext, type RuntimeContextArg } from '../shared/runtime-context.js';\n\n/** Structured validation error */\nexport interface SchemaError {\n path: string;\n message: string;\n code: string;\n}\n\nexport interface ParseSuccess<T> {\n success: true;\n value: T;\n}\n\nexport interface ParseFailure {\n success: false;\n errors: SchemaError[];\n}\n\nexport type ParseResult<T> = ParseSuccess<T> | ParseFailure;\n\n/** Collect raw issues with localized diagnostics for a value against a schema */\nexport function Explain(\n schema: TSchema,\n value: unknown,\n context?: RuntimeContextArg,\n): SchemaIssueDiagnostic[] {\n const runtimeContext = resolveRuntimeContext(context);\n const locale = String(runtimeContext.Locale.Get());\n const catalog = runtimeContext.Locale.GetCatalog(locale);\n return collectSchemaIssues(schema, value).map((issue) =>\n localizeSchemaIssueWithCatalog(issue, catalog, locale),\n );\n}\n\n/** Collect all validation errors for a value against a schema */\nexport function Errors(\n schema: TSchema,\n value: unknown,\n context?: RuntimeContextArg,\n): SchemaError[] {\n return Explain(schema, value, context).map((issue) => ({\n path: issue.path,\n code: issue.code,\n message: issue.message,\n }));\n}\n",
|
|
48
|
+
"import type { Static, TSchema, TObject } from '../type/schema.js';\n\nconst NOT_HANDLED = Symbol('create.not-handled');\n\nfunction cloneValue<T>(value: T): T {\n return (globalThis as typeof globalThis & {\n structuredClone<U>(input: U): U;\n }).structuredClone(value);\n}\n\n/** Generate a default-populated value matching the schema shape */\nexport function Create<T extends TSchema>(schema: T): Static<T> {\n return CreateInternal(schema, new Map()) as Static<T>;\n}\n\nfunction createPrimitiveValue(s: Record<string, unknown>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'String': return '';\n case 'Number': return 0;\n case 'Integer': return 0;\n case 'Boolean': return false;\n case 'Null': return null;\n case 'BigInt': return 0n;\n case 'Date': return new globalThis.Date(0);\n case 'Literal': return s['const'];\n case 'Void':\n case 'Undefined':\n case 'Unknown':\n case 'Any':\n case 'Never':\n return undefined;\n case 'Symbol': return globalThis.Symbol();\n case 'Uint8Array': return new globalThis.Uint8Array(0);\n case 'Function': return () => {};\n case 'Constructor': return class {};\n case 'Promise': return globalThis.Promise.resolve(undefined);\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction createStructuredValue(s: Record<string, unknown>, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Array': return [];\n case 'Tuple': {\n const items = s['items'] as TSchema[];\n return items.map((item) => CreateInternal(item, refs));\n }\n case 'Object': {\n const obj: Record<string, unknown> = {};\n const props = s['properties'] as Record<string, TSchema>;\n const required = (s['required'] as string[]) ?? [];\n const optionalKeys = new Set((s['optional'] as string[]) ?? []);\n for (const key of required) {\n if (props[key]) obj[key] = CreateInternal(props[key], refs);\n }\n for (const [key, propSchema] of Object.entries(props)) {\n if (!(key in obj) && !optionalKeys.has(key)) {\n obj[key] = CreateInternal(propSchema, refs);\n }\n }\n return obj;\n }\n case 'Record':\n case 'Partial':\n return {};\n case 'Union': {\n const variants = s['variants'] as TSchema[];\n return variants.length > 0 ? CreateInternal(variants[0] as TSchema, refs) : undefined;\n }\n case 'Intersect': {\n const variants = s['variants'] as TSchema[];\n let result = {};\n for (const variant of variants) {\n const v = CreateInternal(variant, refs);\n if (typeof v === 'object' && v !== null) result = { ...result, ...v };\n }\n return result;\n }\n case 'Optional': return undefined;\n case 'Readonly': return CreateInternal(s['item'] as TSchema, refs);\n case 'Enum': {\n const values = s['values'] as string[];\n return values.length > 0 ? values[0] : '';\n }\n case 'Required': {\n const obj = s['object'] as TObject;\n const result: Record<string, unknown> = {};\n for (const [key, propSchema] of Object.entries(obj.properties as Record<string, TSchema>)) {\n result[key] = CreateInternal(propSchema, refs);\n }\n return result;\n }\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction createReferenceValue(s: Record<string, unknown>, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Ref': {\n const target = refs.get(s['name'] as string);\n return target ? CreateInternal(target, refs) : undefined;\n }\n case 'Recursive': {\n const nextRefs = new Map(refs);\n nextRefs.set(s['name'] as string, s['schema'] as TSchema);\n return CreateInternal(s['schema'] as TSchema, nextRefs);\n }\n case 'Decode':\n case 'Encode':\n return CreateInternal(s['inner'] as TSchema, refs);\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction CreateInternal(schema: TSchema, refs: Map<string, TSchema>): unknown {\n const s = schema as Record<string, unknown>;\n\n if (s['default'] !== undefined) return cloneValue(s['default']);\n\n const primitive = createPrimitiveValue(s);\n if (primitive !== NOT_HANDLED) {\n return primitive;\n }\n const structured = createStructuredValue(s, refs);\n if (structured !== NOT_HANDLED) {\n return structured;\n }\n const reference = createReferenceValue(s, refs);\n return reference !== NOT_HANDLED ? reference : undefined;\n}\n",
|
|
49
|
+
"import type { StaticDecode, TSchema } from '../type/schema.js';\nimport {\n schemaCallbackField,\n schemaDefinitions,\n schemaInner,\n schemaItem,\n schemaKind,\n schemaProperties,\n schemaSchemaField,\n schemaSchemaListField,\n schemaStringField,\n schemaUnknownField,\n} from '../shared/schema-access.js';\nimport { Instantiate } from '../type/instantiation.js';\n\n/** Run decode callbacks depth-first on a value */\nexport function Decode<T extends TSchema>(schema: T, value: unknown): StaticDecode<T> {\n return DecodeInternal(schema, value, new Map()) as StaticDecode<T>;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction resolveCodec(schema: TSchema): { decode: (input: unknown) => unknown } | undefined {\n const codec = schemaUnknownField(schema, 'codec');\n return isRecord(codec) && typeof codec.decode === 'function'\n ? codec as { decode: (input: unknown) => unknown }\n : undefined;\n}\n\nfunction decodeObject(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n if (!isRecord(value) || Array.isArray(value)) return value;\n const result: Record<string, unknown> = {};\n const properties = schemaProperties(schema);\n for (const [key, entryValue] of Object.entries(value)) {\n const propertySchema = properties[key];\n result[key] = propertySchema ? DecodeInternal(propertySchema, entryValue, refs) : entryValue;\n }\n return result;\n}\n\nfunction decodeArrayItems(itemSchema: TSchema | undefined, value: unknown, refs: Map<string, TSchema>): unknown {\n return Array.isArray(value) && itemSchema\n ? value.map((item) => DecodeInternal(itemSchema, item, refs))\n : value;\n}\n\nfunction decodeTupleItems(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n if (!Array.isArray(value)) return value;\n const items = schemaSchemaListField(schema, 'items');\n return value.map((item, index) => {\n const itemSchema = items[index];\n return itemSchema ? DecodeInternal(itemSchema, item, refs) : item;\n });\n}\n\nfunction decodeWrappedInner(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n const inner = schemaInner(schema) ?? schemaItem(schema);\n return value === undefined || inner === undefined\n ? value\n : DecodeInternal(inner, value, refs);\n}\n\nfunction decodeReferenceSchema(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n switch (schemaKind(schema)) {\n case 'Call': {\n const instantiated = Instantiate({}, schema);\n return instantiated === schema ? value : DecodeInternal(instantiated, value, refs);\n }\n case 'Cyclic': {\n const defs = schemaDefinitions(schema);\n const refName = schemaStringField(schema, '$ref');\n const nextRefs = new Map(refs);\n for (const [key, definition] of Object.entries(defs)) {\n nextRefs.set(key, definition);\n }\n const target = refName ? defs[refName] : undefined;\n return target === undefined ? value : DecodeInternal(target, value, nextRefs);\n }\n case 'Recursive': {\n const name = schemaStringField(schema, 'name');\n const target = schemaSchemaField(schema, 'schema');\n if (!name || target === undefined) return value;\n const nextRefs = new Map(refs);\n nextRefs.set(name, target);\n nextRefs.set('#', target);\n return DecodeInternal(target, value, nextRefs);\n }\n case 'Ref': {\n const target = refs.get(schemaStringField(schema, 'name') ?? '');\n return target ? DecodeInternal(target, value, refs) : value;\n }\n default:\n return value;\n }\n}\n\nfunction DecodeInternal(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n switch (schemaKind(schema)) {\n case 'Decode': {\n const inner = schemaInner(schema);\n const decode = schemaCallbackField<(value: unknown) => unknown>(schema, 'decode');\n return inner && decode ? decode(DecodeInternal(inner, value, refs)) : value;\n }\n case 'Codec': {\n const inner = schemaInner(schema);\n const codec = resolveCodec(schema);\n return inner && codec ? codec.decode(DecodeInternal(inner, value, refs)) : value;\n }\n case 'Object':\n return decodeObject(schema, value, refs);\n case 'Array':\n return decodeArrayItems(schemaSchemaField(schema, 'items'), value, refs);\n case 'Tuple':\n return decodeTupleItems(schema, value, refs);\n case 'Union':\n return value;\n case 'Intersect': {\n let result = value;\n for (const variant of schemaSchemaListField(schema, 'variants')) {\n result = DecodeInternal(variant, result, refs);\n }\n return result;\n }\n case 'Optional':\n case 'Readonly':\n case 'Immutable':\n case 'Refine':\n return decodeWrappedInner(schema, value, refs);\n case 'Generic':\n return DecodeInternal(schemaSchemaField(schema, 'expression') ?? schema, value, refs);\n case 'Infer':\n return DecodeInternal(schemaSchemaField(schema, 'extends') ?? schema, value, refs);\n case 'Call':\n case 'Cyclic':\n case 'Recursive':\n case 'Ref':\n return decodeReferenceSchema(schema, value, refs);\n case 'Encode':\n return decodeWrappedInner(schema, value, refs);\n case 'Base': {\n const convert = schemaCallbackField<(input: unknown) => unknown>(schema, 'Convert');\n return convert ? convert(value) : value;\n }\n default:\n return value;\n }\n}\n",
|
|
50
|
+
"import type { StaticEncode, TSchema } from '../type/schema.js';\nimport {\n schemaCallbackField,\n schemaDefinitions,\n schemaInner,\n schemaItem,\n schemaKind,\n schemaProperties,\n schemaSchemaField,\n schemaSchemaListField,\n schemaStringField,\n schemaUnknownField,\n} from '../shared/schema-access.js';\nimport { Instantiate } from '../type/instantiation.js';\n\n/** Run encode callbacks depth-first on a value */\nexport function Encode<T extends TSchema>(schema: T, value: unknown): StaticEncode<T> {\n return EncodeInternal(schema, value, new Map()) as StaticEncode<T>;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction resolveCodec(schema: TSchema): { encode: (input: unknown) => unknown } | undefined {\n const codec = schemaUnknownField(schema, 'codec');\n return isRecord(codec) && typeof codec.encode === 'function'\n ? codec as { encode: (input: unknown) => unknown }\n : undefined;\n}\n\nfunction encodeObject(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n if (!isRecord(value) || Array.isArray(value)) return value;\n const result: Record<string, unknown> = {};\n const properties = schemaProperties(schema);\n for (const [key, entryValue] of Object.entries(value)) {\n const propertySchema = properties[key];\n result[key] = propertySchema ? EncodeInternal(propertySchema, entryValue, refs) : entryValue;\n }\n return result;\n}\n\nfunction encodeArrayItems(itemSchema: TSchema | undefined, value: unknown, refs: Map<string, TSchema>): unknown {\n return Array.isArray(value) && itemSchema\n ? value.map((item) => EncodeInternal(itemSchema, item, refs))\n : value;\n}\n\nfunction encodeTupleItems(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n if (!Array.isArray(value)) return value;\n const items = schemaSchemaListField(schema, 'items');\n return value.map((item, index) => {\n const itemSchema = items[index];\n return itemSchema ? EncodeInternal(itemSchema, item, refs) : item;\n });\n}\n\nfunction encodeWrappedInner(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n const inner = schemaInner(schema) ?? schemaItem(schema);\n return value === undefined || inner === undefined\n ? value\n : EncodeInternal(inner, value, refs);\n}\n\nfunction encodeReferenceSchema(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n switch (schemaKind(schema)) {\n case 'Call': {\n const instantiated = Instantiate({}, schema);\n return instantiated === schema ? value : EncodeInternal(instantiated, value, refs);\n }\n case 'Cyclic': {\n const defs = schemaDefinitions(schema);\n const refName = schemaStringField(schema, '$ref');\n const nextRefs = new Map(refs);\n for (const [key, definition] of Object.entries(defs)) {\n nextRefs.set(key, definition);\n }\n const target = refName ? defs[refName] : undefined;\n return target === undefined ? value : EncodeInternal(target, value, nextRefs);\n }\n case 'Recursive': {\n const name = schemaStringField(schema, 'name');\n const target = schemaSchemaField(schema, 'schema');\n if (!name || target === undefined) return value;\n const nextRefs = new Map(refs);\n nextRefs.set(name, target);\n nextRefs.set('#', target);\n return EncodeInternal(target, value, nextRefs);\n }\n case 'Ref': {\n const target = refs.get(schemaStringField(schema, 'name') ?? '');\n return target ? EncodeInternal(target, value, refs) : value;\n }\n default:\n return value;\n }\n}\n\nfunction EncodeInternal(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n switch (schemaKind(schema)) {\n case 'Encode': {\n const inner = schemaInner(schema);\n const encode = schemaCallbackField<(value: unknown) => unknown>(schema, 'encode');\n return inner && encode ? EncodeInternal(inner, encode(value), refs) : value;\n }\n case 'Codec': {\n const inner = schemaInner(schema);\n const codec = resolveCodec(schema);\n return inner && codec ? EncodeInternal(inner, codec.encode(value), refs) : value;\n }\n case 'Object':\n return encodeObject(schema, value, refs);\n case 'Array':\n return encodeArrayItems(schemaSchemaField(schema, 'items'), value, refs);\n case 'Tuple':\n return encodeTupleItems(schema, value, refs);\n case 'Optional':\n case 'Readonly':\n case 'Immutable':\n case 'Refine':\n return encodeWrappedInner(schema, value, refs);\n case 'Generic':\n return EncodeInternal(schemaSchemaField(schema, 'expression') ?? schema, value, refs);\n case 'Infer':\n return EncodeInternal(schemaSchemaField(schema, 'extends') ?? schema, value, refs);\n case 'Call':\n case 'Cyclic':\n case 'Recursive':\n case 'Ref':\n return encodeReferenceSchema(schema, value, refs);\n case 'Decode':\n return encodeWrappedInner(schema, value, refs);\n case 'Base': {\n const convert = schemaCallbackField<(input: unknown) => unknown>(schema, 'Convert');\n return convert ? convert(value) : value;\n }\n default:\n return value;\n }\n}\n",
|
|
51
|
+
"import type { StaticParse, TSchema } from '../type/schema.js';\n\nconst NOT_HANDLED = Symbol('convert.not-handled');\n\nfunction isBigIntText(value: string): boolean {\n const normalized = value.trim();\n if (normalized.length === 0) {\n return false;\n }\n const first = normalized[0];\n const start = first === '+' || first === '-' ? 1 : 0;\n if (start === normalized.length) {\n return false;\n }\n for (let index = start; index < normalized.length; index += 1) {\n const char = normalized[index];\n if (char === undefined || char < '0' || char > '9') {\n return false;\n }\n }\n return true;\n}\n\n/** Coerce compatible types to match a schema */\nexport function Convert<T extends TSchema>(schema: T, value: unknown): StaticParse<T> {\n return ConvertInternal(schema, value, new Map()) as StaticParse<T>;\n}\n\nfunction convertPrimitiveValue(s: Record<string, unknown>, value: unknown): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'String': {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n return globalThis.String(value);\n }\n return value;\n }\n case 'Number': {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const n = globalThis.Number(value);\n if (!isNaN(n)) return n;\n }\n if (typeof value === 'boolean') return value ? 1 : 0;\n return value;\n }\n case 'Integer': {\n if (typeof value === 'number' && Number.isInteger(value)) return value;\n if (typeof value === 'string') {\n const n = parseInt(value, 10);\n if (!isNaN(n)) return n;\n }\n if (typeof value === 'boolean') return value ? 1 : 0;\n if (typeof value === 'number') return Math.trunc(value);\n return value;\n }\n case 'Boolean': {\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') {\n if (value === 'true' || value === '1') return true;\n if (value === 'false' || value === '0') return false;\n }\n if (typeof value === 'number') return value !== 0;\n return value;\n }\n case 'BigInt': {\n if (typeof value === 'bigint') return value;\n if (typeof value === 'number' && Number.isInteger(value)) return globalThis.BigInt(value);\n if (typeof value === 'string') {\n const normalized = value.trim();\n if (isBigIntText(normalized)) {\n return globalThis.BigInt(normalized);\n }\n }\n return value;\n }\n case 'Date': {\n if (value instanceof globalThis.Date) return value;\n if (typeof value === 'string' || typeof value === 'number') {\n const d = new globalThis.Date(value);\n if (!isNaN(d.getTime())) return d;\n }\n return value;\n }\n case 'Null':\n return value === null ? value : value === 'null' || value === undefined ? null : value;\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction convertStructuredValue(s: Record<string, unknown>, value: unknown, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Object': {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return value;\n const result: Record<string, unknown> = {};\n const props = s['properties'] as Record<string, TSchema>;\n const obj = value as Record<string, unknown>;\n for (const [key, val] of Object.entries(obj)) {\n const propSchema = props[key];\n result[key] = propSchema ? ConvertInternal(propSchema, val, refs) : val;\n }\n return result;\n }\n case 'Array': {\n if (!Array.isArray(value)) return value;\n const itemSchema = s['items'] as TSchema;\n return value.map((item) => ConvertInternal(itemSchema, item, refs));\n }\n case 'Tuple': {\n if (!Array.isArray(value)) return value;\n const items = s['items'] as TSchema[];\n return value.map((item, i) => items[i] ? ConvertInternal(items[i], item, refs) : item);\n }\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction convertCompositeValue(s: Record<string, unknown>, value: unknown, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Optional':\n return value === undefined ? value : ConvertInternal(s['item'] as TSchema, value, refs);\n case 'Readonly':\n return ConvertInternal(s['item'] as TSchema, value, refs);\n case 'Union': {\n const variants = s['variants'] as TSchema[];\n for (const variant of variants) {\n const converted = ConvertInternal(variant, value, refs);\n if (converted !== value) return converted;\n }\n return value;\n }\n case 'Intersect': {\n const variants = s['variants'] as TSchema[];\n let result = value;\n for (const variant of variants) {\n result = ConvertInternal(variant, result, refs);\n }\n return result;\n }\n case 'Recursive': {\n const nextRefs = new Map(refs);\n nextRefs.set(s['name'] as string, s['schema'] as TSchema);\n return ConvertInternal(s['schema'] as TSchema, value, nextRefs);\n }\n case 'Ref': {\n const target = refs.get(s['name'] as string);\n return target ? ConvertInternal(target, value, refs) : value;\n }\n case 'Decode':\n case 'Encode':\n return ConvertInternal(s['inner'] as TSchema, value, refs);\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction ConvertInternal(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n const s = schema as Record<string, unknown>;\n const primitive = convertPrimitiveValue(s, value);\n if (primitive !== NOT_HANDLED) {\n return primitive;\n }\n const structured = convertStructuredValue(s, value, refs);\n if (structured !== NOT_HANDLED) {\n return structured;\n }\n const composite = convertCompositeValue(s, value, refs);\n return composite !== NOT_HANDLED ? composite : value;\n}\n",
|
|
52
|
+
"import type {\n StaticParse,\n TArray,\n TIntersect,\n TObject,\n TOptional,\n TReadonly,\n TRecord,\n TRecursive,\n TRef,\n TSchema,\n TTuple,\n TUnion,\n} from '../type/schema.js';\nimport { schemaKind } from '../shared/schema-access.js';\nimport { Check } from './check.js';\nimport { Clone } from './clone.js';\nimport { Convert } from './convert.js';\nimport { Create } from './create.js';\nimport type { RuntimeContext } from '../shared/runtime-context.js';\n\ntype ReferenceMap = Map<string, TSchema>;\n\n/** Repair a value to conform to a schema. Returns a new value (does not mutate). */\nexport function Repair<T extends TSchema>(\n schema: T,\n value: unknown,\n context?: RuntimeContext,\n): StaticParse<T> {\n const converted = Convert(schema, Clone(value));\n const kind = schemaKind(schema);\n\n if (\n Check(schema, converted, context)\n && kind !== 'Object'\n && kind !== 'Tuple'\n && kind !== 'Array'\n && kind !== 'Record'\n ) {\n return converted as StaticParse<T>;\n }\n\n return repairInternal(schema, converted, new Map(), context) as StaticParse<T>;\n}\n\nfunction repairObject(schema: TObject, value: unknown, refs: ReferenceMap): Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return Create(schema) as Record<string, unknown>;\n }\n\n const optional = new Set((schema.optional ?? []).map(String));\n const objectValue = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n\n for (const [key, propertySchema] of Object.entries(schema.properties)) {\n if (key in objectValue) {\n const propertyValue = objectValue[key];\n if (propertyValue === undefined && optional.has(key)) {\n result[key] = undefined;\n } else {\n result[key] = repairInternal(propertySchema, propertyValue, refs);\n }\n } else if (!optional.has(key)) {\n result[key] = Create(propertySchema);\n }\n }\n\n if (schema.additionalProperties !== false) {\n for (const [key, entryValue] of Object.entries(objectValue)) {\n if (!(key in schema.properties)) result[key] = entryValue;\n }\n }\n\n return result;\n}\n\nfunction repairArray(schema: TArray, value: unknown, refs: ReferenceMap): unknown[] {\n if (!Array.isArray(value)) {\n const result: unknown[] = [];\n if (schema.minItems !== undefined) {\n for (let index = 0; index < schema.minItems; index += 1) {\n result.push(Create(schema.items));\n }\n }\n return result;\n }\n\n const result = value.map((entry) => repairInternal(schema.items, entry, refs));\n\n if (schema.minItems !== undefined && result.length < schema.minItems) {\n while (result.length < schema.minItems) result.push(Create(schema.items));\n }\n if (schema.maxItems !== undefined && result.length > schema.maxItems) {\n result.length = schema.maxItems;\n }\n\n return result;\n}\n\nfunction repairTuple(schema: TTuple, value: unknown, refs: ReferenceMap): unknown[] {\n if (!Array.isArray(value)) return schema.items.map((item) => Create(item));\n const repairedItems = schema.items.map((itemSchema, index) =>\n index < value.length ? repairInternal(itemSchema, value[index], refs) : Create(itemSchema)\n );\n if (!schema.additionalItems) {\n return repairedItems;\n }\n const extraItems = value.slice(schema.items.length);\n if (schema.maxItems === undefined) {\n return [...repairedItems, ...extraItems];\n }\n return [...repairedItems, ...extraItems.slice(0, Math.max(schema.maxItems - repairedItems.length, 0))];\n}\n\nfunction repairRecord(schema: TRecord, value: unknown, refs: ReferenceMap): Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return {};\n const result: Record<string, unknown> = {};\n Object.entries(value as Record<string, unknown>).forEach(([key, entryValue]) => {\n result[key] = repairInternal(schema.value, entryValue, refs);\n });\n return result;\n}\n\nfunction repairUnion(\n schema: TUnion,\n value: unknown,\n refs: ReferenceMap,\n context?: RuntimeContext,\n): unknown {\n for (const variant of schema.variants) {\n const repaired = repairInternal(variant, value, refs, context);\n if (Check(variant, repaired, context)) return repaired;\n }\n return schema.variants.length > 0 ? repairInternal(schema.variants[0]!, value, refs, context) : value;\n}\n\nfunction repairInternal(\n schema: TSchema,\n value: unknown,\n refs: ReferenceMap,\n context?: RuntimeContext,\n): unknown {\n switch (schemaKind(schema)) {\n case 'Object':\n return repairObject(schema as TObject, value, refs);\n case 'Array':\n return repairArray(schema as TArray, value, refs);\n case 'Tuple':\n return repairTuple(schema as TTuple, value, refs);\n case 'Record':\n return repairRecord(schema as TRecord, value, refs);\n case 'Union':\n return repairUnion(schema as TUnion, value, refs, context);\n case 'Intersect': {\n let result = value;\n (schema as TIntersect).variants.forEach((variant) => {\n result = repairInternal(variant, result, refs, context);\n });\n return result;\n }\n case 'Optional':\n return value === undefined ? undefined : repairInternal((schema as TOptional<TSchema>).item, value, refs, context);\n case 'Readonly':\n return repairInternal((schema as TReadonly<TSchema>).item, value, refs, context);\n case 'Recursive': {\n const recursiveSchema = schema as TRecursive;\n const nextRefs = new Map(refs);\n nextRefs.set(recursiveSchema.name, recursiveSchema.schema);\n return repairInternal(recursiveSchema.schema, value, nextRefs, context);\n }\n case 'Ref': {\n const target = refs.get((schema as TRef).name);\n return target === undefined ? value : repairInternal(target, value, refs, context);\n }\n case 'Decode':\n case 'Encode':\n return repairInternal((schema as { inner: TSchema }).inner, value, refs, context);\n default:\n return Check(schema, value, context) ? value : Create(schema);\n }\n}\n",
|
|
53
|
+
"import type { Static, StaticDecode, StaticEncode, StaticParse, TSchema } from '../type/schema.js';\nimport type { ParseResult } from '../error/errors.js';\nimport { Errors, Explain } from '../error/errors.js';\nimport type { RuntimeContext } from '../shared/runtime-context.js';\nimport { Check } from './check.js';\nimport { Create } from './create.js';\nimport { Decode } from './decode.js';\nimport { Encode } from './encode.js';\nimport { Repair } from './repair.js';\n\nexport function TryCreate<T extends TSchema>(\n schema: T,\n context?: RuntimeContext,\n): ParseResult<Static<T>> {\n const created = Create(schema);\n return Check(schema, created, context)\n ? { success: true, value: created }\n : { success: false, errors: Errors(schema, created, context) };\n}\n\nexport function TryDecode<T extends TSchema>(\n schema: T,\n value: unknown,\n context?: RuntimeContext,\n): ParseResult<StaticDecode<T>> {\n const decoded = Decode(schema, value);\n const encoded = Encode(schema, decoded);\n return Check(schema, encoded, context)\n ? { success: true, value: decoded }\n : { success: false, errors: Errors(schema, encoded, context) };\n}\n\nexport function TryEncode<T extends TSchema>(\n schema: T,\n value: unknown,\n context?: RuntimeContext,\n): ParseResult<StaticEncode<T>> {\n const encoded = Encode(schema, value);\n return Check(schema, encoded, context)\n ? { success: true, value: encoded }\n : { success: false, errors: Errors(schema, encoded, context) };\n}\n\nexport function TryRepair<T extends TSchema>(\n schema: T,\n value: unknown,\n context?: RuntimeContext,\n): ParseResult<StaticParse<T>> {\n const repaired = Repair(schema, value, context);\n return Check(schema, repaired, context)\n ? { success: true, value: repaired }\n : { success: false, errors: Errors(schema, repaired, context) };\n}\n\nexport { Explain };\n",
|
|
54
|
+
"import type { Static, TSchema } from '../type/schema.js';\nimport type { SchemaError } from '../error/errors.js';\nimport { Check } from './check.js';\nimport { Errors } from '../error/errors.js';\n\nexport class AssertError extends Error {\n public readonly errors: SchemaError[];\n constructor(errors: SchemaError[]) {\n super(`Assertion failed with ${errors.length} error(s)`);\n this.name = 'AssertError';\n this.errors = errors;\n }\n}\n\nexport function Assert<T extends TSchema>(schema: T, value: unknown): asserts value is Static<T> {\n if (!Check(schema, value)) {\n throw new AssertError(Errors(schema, value));\n }\n}\n",
|
|
55
|
+
"import type { StaticParse, TSchema } from '../type/schema.js';\n\nconst NOT_HANDLED = Symbol('clean.not-handled');\n\n/** Remove properties not defined in the schema from a value */\nexport function Clean<T extends TSchema>(schema: T, value: unknown): StaticParse<T> {\n return CleanInternal(schema, value, new Map()) as StaticParse<T>;\n}\n\nfunction cleanStructuredValue(s: Record<string, unknown>, value: unknown, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Object': {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return value;\n const result: Record<string, unknown> = {};\n const props = s['properties'] as Record<string, TSchema>;\n const additionalProperties = s['additionalProperties'];\n for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n const propSchema = props[key];\n if (propSchema) {\n result[key] = CleanInternal(propSchema, val, refs);\n } else if (additionalProperties !== false) {\n if (typeof additionalProperties === 'object') {\n result[key] = CleanInternal(additionalProperties as TSchema, val, refs);\n } else {\n result[key] = val;\n }\n }\n }\n return result;\n }\n case 'Array': {\n if (!Array.isArray(value)) return value;\n const itemSchema = s['items'] as TSchema;\n return value.map((item) => CleanInternal(itemSchema, item, refs));\n }\n case 'Tuple': {\n if (!Array.isArray(value)) return value;\n const items = s['items'] as TSchema[];\n const cleanedItems = value.slice(0, items.length).map((item, i) =>\n items[i] ? CleanInternal(items[i], item, refs) : item\n );\n return s['additionalItems'] === true\n ? [...cleanedItems, ...value.slice(items.length)]\n : cleanedItems;\n }\n case 'Record': {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return value;\n const result: Record<string, unknown> = {};\n const valueSchema = s['value'] as TSchema;\n for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n result[key] = CleanInternal(valueSchema, val, refs);\n }\n return result;\n }\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction cleanCompositeValue(s: Record<string, unknown>, value: unknown, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Union': {\n const variants = s['variants'] as TSchema[];\n for (const variant of variants) {\n const cleaned = CleanInternal(variant, value, refs);\n if (cleaned !== value) return cleaned;\n }\n return value;\n }\n case 'Intersect': {\n const variants = s['variants'] as TSchema[];\n let result = value;\n for (const variant of variants) {\n result = CleanInternal(variant, result, refs);\n }\n return result;\n }\n case 'Optional':\n case 'Readonly':\n return value === undefined ? value : CleanInternal(s['item'] as TSchema, value, refs);\n case 'Recursive': {\n const nextRefs = new Map(refs);\n nextRefs.set(s['name'] as string, s['schema'] as TSchema);\n return CleanInternal(s['schema'] as TSchema, value, nextRefs);\n }\n case 'Ref': {\n const target = refs.get(s['name'] as string);\n return target ? CleanInternal(target, value, refs) : value;\n }\n case 'Decode':\n case 'Encode':\n return CleanInternal(s['inner'] as TSchema, value, refs);\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction CleanInternal(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n const s = schema as Record<string, unknown>;\n const structured = cleanStructuredValue(s, value, refs);\n if (structured !== NOT_HANDLED) {\n return structured;\n }\n const composite = cleanCompositeValue(s, value, refs);\n return composite !== NOT_HANDLED ? composite : value;\n}\n",
|
|
56
|
+
"import type { StaticParse, TSchema } from '../type/schema.js';\n\nconst NOT_HANDLED = Symbol('default.not-handled');\n\nfunction cloneValue<T>(value: T): T {\n return (globalThis as typeof globalThis & {\n structuredClone<U>(input: U): U;\n }).structuredClone(value);\n}\n\n/** Apply default values from a schema to undefined/missing properties in a value */\nexport function Default<T extends TSchema>(schema: T, value: unknown): StaticParse<T> {\n return DefaultInternal(schema, value, new Map()) as StaticParse<T>;\n}\n\nfunction defaultStructuredValue(s: Record<string, unknown>, value: unknown, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Object': {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return value;\n const result = { ...(value as Record<string, unknown>) };\n const props = s['properties'] as Record<string, TSchema>;\n for (const [key, propSchema] of Object.entries(props)) {\n if (result[key] === undefined) {\n const propS = propSchema as Record<string, unknown>;\n if (propS['default'] !== undefined) {\n result[key] = cloneValue(propS['default']);\n }\n } else {\n result[key] = DefaultInternal(propSchema, result[key], refs);\n }\n }\n return result;\n }\n case 'Array': {\n if (!Array.isArray(value)) return value;\n const itemSchema = s['items'] as TSchema;\n return value.map((item) => DefaultInternal(itemSchema, item, refs));\n }\n case 'Tuple': {\n if (!Array.isArray(value)) return value;\n const items = s['items'] as TSchema[];\n return value.map((item, i) => items[i] ? DefaultInternal(items[i], item, refs) : item);\n }\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction defaultCompositeValue(s: Record<string, unknown>, value: unknown, refs: Map<string, TSchema>): unknown | typeof NOT_HANDLED {\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Optional':\n return value === undefined ? value : DefaultInternal(s['item'] as TSchema, value, refs);\n case 'Readonly':\n return DefaultInternal(s['item'] as TSchema, value, refs);\n case 'Intersect': {\n const variants = s['variants'] as TSchema[];\n let result = value;\n for (const variant of variants) {\n result = DefaultInternal(variant, result, refs);\n }\n return result;\n }\n case 'Union':\n return value;\n case 'Recursive': {\n const nextRefs = new Map(refs);\n nextRefs.set(s['name'] as string, s['schema'] as TSchema);\n return DefaultInternal(s['schema'] as TSchema, value, nextRefs);\n }\n case 'Ref': {\n const target = refs.get(s['name'] as string);\n return target ? DefaultInternal(target, value, refs) : value;\n }\n case 'Decode':\n case 'Encode':\n return DefaultInternal(s['inner'] as TSchema, value, refs);\n default:\n return NOT_HANDLED;\n }\n}\n\nfunction DefaultInternal(schema: TSchema, value: unknown, refs: Map<string, TSchema>): unknown {\n const s = schema as Record<string, unknown>;\n\n if (value === undefined && s['default'] !== undefined) {\n return cloneValue(s['default']);\n }\n\n const structured = defaultStructuredValue(s, value, refs);\n if (structured !== NOT_HANDLED) {\n return structured;\n }\n const composite = defaultCompositeValue(s, value, refs);\n return composite !== NOT_HANDLED ? composite : value;\n}\n",
|
|
57
|
+
"/** Deep structural equality comparison */\nexport function Equal(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a === null || b === null) return false;\n if (typeof a !== typeof b) return false;\n\n if (typeof a === 'bigint') return a === b;\n\n if (a instanceof globalThis.Date && b instanceof globalThis.Date) {\n return a.getTime() === (b as globalThis.Date).getTime();\n }\n\n if (a instanceof globalThis.Uint8Array && b instanceof globalThis.Uint8Array) {\n if (a.length !== (b as globalThis.Uint8Array).length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== (b as globalThis.Uint8Array)[i]) return false;\n }\n return true;\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!Equal(a[i], b[i])) return false;\n }\n return true;\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aObj = a as Record<string, unknown>;\n const bObj = b as Record<string, unknown>;\n const aKeys = Object.keys(aObj);\n const bKeys = Object.keys(bObj);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (!Equal(aObj[key], bObj[key])) return false;\n }\n return true;\n }\n\n return false;\n}\n",
|
|
58
|
+
"import { Equal } from './equal.js';\n\n/** A structural edit operation */\nexport interface DiffEdit {\n type: 'insert' | 'update' | 'delete';\n path: string;\n value?: unknown;\n}\n\n/** Compute a structural delta between two values */\nexport function Diff(a: unknown, b: unknown): DiffEdit[] {\n const edits: DiffEdit[] = [];\n diffInternal(a, b, '', edits);\n return edits;\n}\n\nfunction diffInternal(a: unknown, b: unknown, path: string, edits: DiffEdit[]): void {\n if (Equal(a, b)) return;\n\n if (a === undefined && b !== undefined) {\n edits.push({ type: 'insert', path, value: b });\n return;\n }\n if (a !== undefined && b === undefined) {\n edits.push({ type: 'delete', path });\n return;\n }\n\n if (typeof a !== typeof b || a === null || b === null ||\n typeof a !== 'object' || typeof b !== 'object') {\n edits.push({ type: 'update', path, value: b });\n return;\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n const maxLen = Math.max(a.length, b.length);\n for (let i = 0; i < maxLen; i++) {\n const itemPath = path ? `${path}/${i}` : `/${i}`;\n if (i >= a.length) {\n edits.push({ type: 'insert', path: itemPath, value: b[i] });\n } else if (i >= b.length) {\n edits.push({ type: 'delete', path: itemPath });\n } else {\n diffInternal(a[i], b[i], itemPath, edits);\n }\n }\n return;\n }\n\n const aObj = a as Record<string, unknown>;\n const bObj = b as Record<string, unknown>;\n const allKeys = new Set([...Object.keys(aObj), ...Object.keys(bObj)]);\n\n for (const key of allKeys) {\n const keyPath = path ? `${path}/${key}` : `/${key}`;\n if (!(key in aObj)) {\n edits.push({ type: 'insert', path: keyPath, value: bObj[key] });\n } else if (!(key in bObj)) {\n edits.push({ type: 'delete', path: keyPath });\n } else {\n diffInternal(aObj[key], bObj[key], keyPath, edits);\n }\n }\n}\n",
|
|
59
|
+
"/** FNV-1a hash of a value's deep structure, returning a bigint */\nexport function Hash(value: unknown): bigint {\n let h = 0xcbf29ce484222325n;\n hashValue(value);\n return h;\n\n function mix(b: bigint): void {\n h ^= b & 0xffn;\n h = BigInt.asUintN(64, h * 0x100000001b3n);\n }\n\n function hashString(s: string): void {\n for (let i = 0; i < s.length; i++) {\n mix(BigInt(s.charCodeAt(i)));\n }\n }\n\n function hashValue(v: unknown): void {\n if (v === null) { mix(0n); return; }\n if (v === undefined) { mix(1n); return; }\n\n switch (typeof v) {\n case 'boolean':\n mix(v ? 2n : 3n);\n return;\n case 'number':\n mix(4n);\n hashString(v.toString());\n return;\n case 'bigint':\n mix(5n);\n hashString(v.toString());\n return;\n case 'string':\n mix(6n);\n hashString(v);\n return;\n case 'symbol':\n mix(7n);\n hashString(v.toString());\n return;\n case 'object': {\n if (Array.isArray(v)) {\n mix(8n);\n for (const item of v) hashValue(item);\n return;\n }\n if (v instanceof globalThis.Date) {\n mix(9n);\n hashString(v.toISOString());\n return;\n }\n if (v instanceof globalThis.Uint8Array) {\n mix(10n);\n for (const byte of v) mix(BigInt(byte));\n return;\n }\n mix(11n);\n const keys = Object.keys(v as Record<string, unknown>).sort();\n for (const key of keys) {\n hashString(key);\n hashValue((v as Record<string, unknown>)[key]);\n }\n return;\n }\n default:\n mix(12n);\n }\n }\n}\n",
|
|
60
|
+
"import type { TSchema } from '../type/schema.js';\n\nexport function HasCodec(schema: TSchema): boolean {\n return HasCodecInternal(schema, new Set());\n}\n\nfunction HasCodecInternal(schema: TSchema, visited: Set<TSchema>): boolean {\n if (visited.has(schema)) return false;\n visited.add(schema);\n\n const s = schema as Record<string, unknown>;\n const kind = s['~kind'] as string | undefined;\n\n switch (kind) {\n case 'Codec':\n case 'Decode':\n case 'Encode':\n return true;\n case 'Object': {\n const props = s['properties'] as Record<string, TSchema> | undefined;\n if (!props) return false;\n return Object.values(props).some(p => HasCodecInternal(p, visited));\n }\n case 'Array':\n case 'Optional':\n case 'Readonly':\n case 'Immutable':\n case 'Refine':\n return HasCodecInternal(s['items'] as TSchema ?? s['item'] as TSchema, visited);\n case 'Tuple': {\n const items = s['items'] as TSchema[] | undefined;\n return items ? items.some(i => HasCodecInternal(i, visited)) : false;\n }\n case 'Union':\n case 'Intersect': {\n const variants = s['variants'] as TSchema[] | undefined;\n return variants ? variants.some(v => HasCodecInternal(v, visited)) : false;\n }\n case 'Recursive':\n return HasCodecInternal(s['schema'] as TSchema, visited);\n case 'Cyclic': {\n const defs = s['$defs'] as Record<string, TSchema> | undefined;\n return defs ? Object.values(defs).some((entry) => HasCodecInternal(entry, visited)) : false;\n }\n case 'Ref':\n return false;\n case 'Record':\n return HasCodecInternal(s['value'] as TSchema, visited);\n case 'Generic':\n return HasCodecInternal(s['expression'] as TSchema, visited);\n case 'Call':\n return HasCodecInternal(s['target'] as TSchema, visited)\n || ((s['arguments'] as TSchema[] | undefined)?.some((entry) => HasCodecInternal(entry, visited)) ?? false);\n default:\n return false;\n }\n}\n",
|
|
61
|
+
"/** In-place deep mutation: transfer all properties from source into target */\nexport function Mutate(target: unknown, source: unknown): void {\n if (typeof target !== 'object' || target === null) return;\n if (typeof source !== 'object' || source === null) return;\n\n if (Array.isArray(target) && Array.isArray(source)) {\n target.length = 0;\n for (const item of source) target.push(item);\n return;\n }\n\n const t = target as Record<string, unknown>;\n const s = source as Record<string, unknown>;\n\n for (const key of Object.keys(t)) {\n if (!(key in s)) {\n delete t[key];\n }\n }\n for (const [key, val] of Object.entries(s)) {\n t[key] = val;\n }\n}\n",
|
|
62
|
+
"import type { StaticParse, TSchema } from '../type/schema.js';\nimport type { ParseResult, SchemaError } from '../error/errors.js';\nimport { Check } from './check.js';\nimport { Clone } from './clone.js';\nimport { Default } from './default.js';\nimport { Convert } from './convert.js';\nimport { Clean } from './clean.js';\nimport { Errors } from '../error/errors.js';\nimport type { RuntimeContext } from '../shared/runtime-context.js';\n\n/** Error thrown when Value.Parse fails validation */\nexport class ParseError extends Error {\n public readonly errors: SchemaError[];\n constructor(errors: SchemaError[]) {\n super(`Parse failed with ${errors.length} error(s)`);\n this.name = 'ParseError';\n this.errors = errors;\n }\n}\n\nexport function TryParse<T extends TSchema>(\n schema: T,\n value: unknown,\n context?: RuntimeContext,\n): ParseResult<StaticParse<T>> {\n let result = Clone(value);\n result = Default(schema, result);\n result = Convert(schema, result);\n result = Clean(schema, result);\n if (!Check(schema, result, context)) {\n return {\n success: false,\n errors: Errors(schema, result, context),\n };\n }\n return {\n success: true,\n value: result,\n };\n}\n\n/** Full validation pipeline: Clone → Default → Convert → Clean → Check */\nexport function Parse<T extends TSchema>(\n schema: T,\n value: unknown,\n context?: RuntimeContext,\n): StaticParse<T> {\n const result = TryParse(schema, value, context);\n if (!result.success) {\n throw new ParseError(result.errors);\n }\n return result.value;\n}\n\nexport type { ParseFailure, ParseResult, ParseSuccess } from '../error/errors.js';\n",
|
|
63
|
+
"import type { DiffEdit } from './diff.js';\nimport { Clone } from './clone.js';\n\n/** Apply a structural delta (DiffEdit[]) to a value */\nexport function Patch<T>(value: T, edits: DiffEdit[]): T {\n const result = Clone(value);\n for (const edit of edits) {\n applyEdit(result, edit);\n }\n return result;\n}\n\nfunction applyEdit(root: unknown, edit: DiffEdit): void {\n const segments = edit.path.split('/').filter(Boolean);\n if (segments.length === 0) return;\n\n let current: unknown = root;\n for (let i = 0; i < segments.length - 1; i++) {\n const seg = segments[i] as string;\n if (Array.isArray(current)) {\n current = current[parseInt(seg, 10)];\n } else if (typeof current === 'object' && current !== null) {\n current = (current as Record<string, unknown>)[seg];\n } else {\n return;\n }\n }\n\n const lastSeg = segments[segments.length - 1] as string;\n if (Array.isArray(current)) {\n const idx = parseInt(lastSeg, 10);\n switch (edit.type) {\n case 'insert':\n current.splice(idx, 0, edit.value);\n break;\n case 'update':\n current[idx] = edit.value;\n break;\n case 'delete':\n current.splice(idx, 1);\n break;\n }\n } else if (typeof current === 'object' && current !== null) {\n const obj = current as Record<string, unknown>;\n switch (edit.type) {\n case 'insert':\n case 'update':\n obj[lastSeg] = edit.value;\n break;\n case 'delete':\n delete obj[lastSeg];\n break;\n }\n }\n}\n",
|
|
64
|
+
"import type { TSchema } from '../type/schema.js';\n\n/** A pipeline stage that transforms a value */\nexport type PipelineStage = (schema: TSchema, value: unknown) => unknown;\n\n/** Create a composable pipeline of value transformation stages */\nexport function Pipeline(stages: PipelineStage[]): (schema: TSchema, value: unknown) => unknown {\n return (schema: TSchema, value: unknown): unknown => {\n let result = value;\n for (const stage of stages) {\n result = stage(schema, result);\n }\n return result;\n };\n}\n",
|
|
65
|
+
"type PointerContainer = Record<string, unknown> | unknown[];\ntype PointerResolution =\n | { parent: unknown[]; key: number }\n | { parent: Record<string, unknown>; key: string };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction parseArrayIndex(token: string): number | undefined {\n const index = Number(token);\n return Number.isInteger(index) && index >= 0 ? index : undefined;\n}\n\nfunction parsePointer(pointer: string): string[] {\n if (pointer === '') return [];\n if (!pointer.startsWith('/')) {\n throw new Error(`Invalid JSON Pointer: \"${pointer}\" - must start with \"/\" or be empty`);\n }\n return pointer\n .slice(1)\n .split('/')\n .map((token) => token.replace(/~1/g, '/').replace(/~0/g, '~'));\n}\n\nfunction encodeToken(token: string): string {\n return token.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\nfunction getChild(container: PointerContainer, token: string): unknown {\n if (Array.isArray(container)) {\n const index = parseArrayIndex(token);\n return index === undefined || index >= container.length ? undefined : container[index];\n }\n return container[token];\n}\n\nfunction setChild(container: PointerContainer, token: string, value: unknown): boolean {\n if (Array.isArray(container)) {\n const index = parseArrayIndex(token);\n if (index === undefined) {\n return false;\n }\n while (container.length <= index) {\n container.push(undefined);\n }\n container[index] = value;\n return true;\n }\n container[token] = value;\n return true;\n}\n\nfunction ensureContainer(container: PointerContainer, token: string, nextIsNumeric: boolean): PointerContainer | undefined {\n const existing = getChild(container, token);\n if (Array.isArray(existing) || isRecord(existing)) {\n return existing;\n }\n\n const nextContainer: PointerContainer = nextIsNumeric ? [] : {};\n return setChild(container, token, nextContainer) ? nextContainer : undefined;\n}\n\nfunction resolve(value: unknown, tokens: readonly string[]): PointerResolution | undefined {\n if (tokens.length === 0 || (!Array.isArray(value) && !isRecord(value))) return undefined;\n\n let current: PointerContainer = value;\n for (let i = 0; i < tokens.length - 1; i++) {\n const token = tokens[i]!;\n const next = getChild(current, token);\n if (!Array.isArray(next) && !isRecord(next)) {\n return undefined;\n }\n current = next;\n }\n\n const lastToken = tokens[tokens.length - 1]!;\n if (Array.isArray(current)) {\n const idx = parseArrayIndex(lastToken);\n if (idx === undefined) return undefined;\n return { parent: current, key: idx };\n }\n return { parent: current, key: lastToken };\n}\n\nexport namespace Pointer {\n export function Get(value: unknown, pointer: string): unknown {\n const tokens = parsePointer(pointer);\n if (tokens.length === 0) return value;\n\n let current: unknown = value;\n for (const token of tokens) {\n if (!Array.isArray(current) && !isRecord(current)) {\n return undefined;\n }\n current = getChild(current, token);\n if (current === undefined) return undefined;\n }\n return current;\n }\n\n export function Set(value: unknown, pointer: string, setValue: unknown): unknown {\n const tokens = parsePointer(pointer);\n if (tokens.length === 0) return setValue;\n\n if (value === null || value === undefined) {\n const firstIsNumeric = /^\\d+$/.test(tokens[0]!);\n value = firstIsNumeric ? [] : {};\n }\n if (!Array.isArray(value) && !isRecord(value)) {\n return value;\n }\n\n let current: PointerContainer = value;\n for (let i = 0; i < tokens.length - 1; i++) {\n const token = tokens[i]!;\n const nextToken = tokens[i + 1]!;\n const nextIsNumeric = /^\\d+$/.test(nextToken);\n const next = ensureContainer(current, token, nextIsNumeric);\n if (next === undefined) {\n return value;\n }\n current = next;\n }\n\n const lastToken = tokens[tokens.length - 1]!;\n setChild(current, lastToken, setValue);\n\n return value;\n }\n\n export function Delete(value: unknown, pointer: string): unknown {\n const tokens = parsePointer(pointer);\n if (tokens.length === 0) return value;\n\n const resolved = resolve(value, tokens);\n if (resolved === undefined) return value;\n\n const { parent, key } = resolved;\n if (Array.isArray(parent) && typeof key === 'number') {\n if (key >= 0 && key < parent.length) {\n parent.splice(key, 1);\n }\n } else if (!Array.isArray(parent) && typeof key === 'string') {\n delete parent[key];\n }\n\n return value;\n }\n\n export function Has(value: unknown, pointer: string): boolean {\n const tokens = parsePointer(pointer);\n if (tokens.length === 0) return true;\n\n const resolved = resolve(value, tokens);\n if (resolved === undefined) return false;\n\n const { parent, key } = resolved;\n if (Array.isArray(parent) && typeof key === 'number') {\n return key >= 0 && key < parent.length;\n }\n return key in parent;\n }\n\n export function Create(...tokens: string[]): string {\n if (tokens.length === 0) return '';\n return '/' + tokens.map(encodeToken).join('/');\n }\n}\n",
|
|
66
|
+
"import { Errors } from '../error/errors.js';\nimport { Explain, TryCreate, TryDecode, TryEncode, TryRepair } from './result.js';\nimport { Assert, AssertError } from './assert.js';\nimport { Check } from './check.js';\nimport { Clean } from './clean.js';\nimport { Clone } from './clone.js';\nimport { Convert } from './convert.js';\nimport { Create } from './create.js';\nimport { Decode } from './decode.js';\nimport { Default } from './default.js';\nimport { Diff } from './diff.js';\nimport { Encode } from './encode.js';\nimport { Equal } from './equal.js';\nimport { Hash } from './hash.js';\nimport { HasCodec } from './has-codec.js';\nimport { Mutate } from './mutate.js';\nimport { Parse, ParseError, TryParse } from './parse.js';\nimport { Patch } from './patch.js';\nimport { Pipeline } from './pipeline.js';\nimport { Pointer } from './pointer.js';\nimport { Repair } from './repair.js';\n\nexport class CreateError extends Error {\n public readonly causeValue: unknown;\n\n constructor(message: string, causeValue: unknown) {\n super(message);\n this.name = 'CreateError';\n this.causeValue = causeValue;\n }\n}\n\nexport class DecodeError extends Error {\n public readonly causeValue: unknown;\n\n constructor(message: string, causeValue: unknown) {\n super(message);\n this.name = 'DecodeError';\n this.causeValue = causeValue;\n }\n}\n\nexport class EncodeError extends Error {\n public readonly causeValue: unknown;\n\n constructor(message: string, causeValue: unknown) {\n super(message);\n this.name = 'EncodeError';\n this.causeValue = causeValue;\n }\n}\n\nexport const Insert = {\n type: 'object',\n required: ['type', 'path', 'value'],\n properties: {\n type: { const: 'insert' },\n path: { type: 'string' },\n value: {},\n },\n};\n\nexport const Update = {\n type: 'object',\n required: ['type', 'path', 'value'],\n properties: {\n type: { const: 'update' },\n path: { type: 'string' },\n value: {},\n },\n};\n\nexport const Delete = {\n type: 'object',\n required: ['type', 'path'],\n properties: {\n type: { const: 'delete' },\n path: { type: 'string' },\n },\n};\n\nexport const Edit = {\n anyOf: [Insert, Update, Delete],\n};\n\nexport { Assert, AssertError };\nexport { Check };\nexport type { ValueCheckOptions } from './check.js';\nexport { Clean };\nexport { Clone };\nexport { Convert };\nexport { Create };\nexport { Decode };\nexport { Default };\nexport type { DiffEdit } from './diff.js';\nexport { Diff };\nexport { Encode };\nexport { Equal };\nexport { Errors };\nexport { Explain };\nexport { Hash };\nexport { HasCodec };\nexport { Mutate };\nexport { Parse, ParseError, TryParse };\nexport { TryCreate, TryDecode, TryEncode, TryRepair };\nexport type { ParseFailure, ParseResult, ParseSuccess } from '../error/errors.js';\nexport { Patch };\nexport { Pipeline };\nexport type { PipelineStage } from './pipeline.js';\nexport { Pointer };\nexport { Repair };\nexport { Decode as DecodeUnsafe };\nexport { Encode as EncodeUnsafe };\n\nconst Value = {\n Assert,\n Check,\n Clean,\n Clone,\n Convert,\n Create,\n Decode,\n Default,\n Diff,\n Encode,\n Equal,\n Errors,\n Explain,\n HasCodec,\n Hash,\n Mutate,\n Parse,\n TryCreate,\n TryDecode,\n TryEncode,\n TryParse,\n TryRepair,\n Patch,\n Pipeline,\n Pointer,\n Repair,\n};\n\nexport function Parser(): typeof Value {\n return Value;\n}\n\nexport { Value };\nexport default Value;\n"
|
|
67
|
+
],
|
|
68
|
+
"mappings": "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",
|
|
69
|
+
"debugId": "8E0FE05292D4F2BA64756E2164756E21",
|
|
70
|
+
"names": []
|
|
71
|
+
}
|