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,55 @@
|
|
|
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/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/type/instantiation.ts", "../src/type/extensions.ts", "../src/shared/schema-access.ts", "../src/type/extends.ts", "../src/type/guards.ts", "../src/type/kind.ts", "../src/type/root-shared.ts", "../src/type/root-constants.ts", "../src/type/root-deferred.ts", "../src/type/root-guards.ts", "../src/type/root-helpers.ts", "../src/type/root-template.ts", "../src/type/root-cyclic.ts", "../src/type/root-instantiate.ts", "../src/shared/bytes.ts", "../src/type/uint8array-codec.ts", "../src/type/codec-builtins.ts", "../src/script/shared.ts", "../src/script/generic.ts", "../src/script/literals.ts", "../src/script/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 {\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",
|
|
24
|
+
"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",
|
|
25
|
+
"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",
|
|
26
|
+
"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",
|
|
27
|
+
"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",
|
|
28
|
+
"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",
|
|
29
|
+
"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",
|
|
30
|
+
"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",
|
|
31
|
+
"import type { Static, TSchema } from './schema.js';\nimport type { TParameter } from './actions.js';\nimport { Readonly as TypeReadonly } from './combinators.js';\nimport { Unknown } from './primitives.js';\nimport { Instantiate, bindParameterContext } from './instantiation.js';\n\nexport interface TCodec<Type extends TSchema = TSchema, Decoded = unknown> extends TSchema {\n '~kind': 'Codec';\n inner: Type;\n codec: {\n decode: (input: Static<Type>) => Decoded;\n encode: (input: Decoded) => Static<Type>;\n };\n}\n\nexport class EncodeBuilder<Type extends TSchema, Decoded> {\n constructor(\n private readonly type: Type,\n private readonly decode: (input: Static<Type>) => Decoded,\n ) {}\n\n Encode(callback: (input: Decoded) => Static<Type>): TCodec<Type, Decoded> {\n return {\n '~kind': 'Codec',\n inner: this.type,\n codec: {\n decode: this.decode,\n encode: callback,\n },\n };\n }\n}\n\nexport class DecodeBuilder<Type extends TSchema> {\n constructor(private readonly type: Type) {}\n\n Decode<Decoded>(callback: (input: Static<Type>) => Decoded): EncodeBuilder<Type, Decoded> {\n return new EncodeBuilder(this.type, callback);\n }\n}\n\nexport function Codec<Type extends TSchema>(type: Type): DecodeBuilder<Type> {\n return new DecodeBuilder(type);\n}\n\nexport function IsCodec(value: unknown): value is TCodec {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n const schema = value as Record<string, unknown>;\n return schema['~kind'] === 'Codec'\n && typeof schema.codec === 'object'\n && schema.codec !== null\n && typeof (schema.codec as Record<string, unknown>).decode === 'function'\n && typeof (schema.codec as Record<string, unknown>).encode === 'function';\n}\n\nexport interface TImmutable<Type extends TSchema = TSchema> extends TSchema {\n '~kind': 'Immutable';\n item: Type;\n}\n\nexport function Immutable<Type extends TSchema>(type: Type): TImmutable<Type> {\n return {\n '~kind': 'Immutable',\n item: type,\n };\n}\n\nexport function IsImmutable(value: unknown): value is TImmutable {\n return typeof value === 'object'\n && value !== null\n && ((value as Record<string, unknown>)['~kind'] === 'Immutable' || (value as Record<string, unknown>)['~immutable'] === true);\n}\n\nexport type TRefineCallback<Type extends TSchema> = (value: Static<Type>) => boolean;\n\nexport interface TRefinement<Type extends TSchema = TSchema> {\n refine: TRefineCallback<Type>;\n message: string;\n}\n\nexport interface TRefine<Type extends TSchema = TSchema> extends TSchema {\n '~kind': 'Refine';\n item: Type;\n '~refine': TRefinement<Type>[];\n}\n\nexport function Refine<Type extends TSchema>(\n type: Type,\n refine: TRefineCallback<Type>,\n message = 'error',\n): TRefine<Type> {\n return {\n '~kind': 'Refine',\n item: type,\n '~refine': [{ refine, message }],\n };\n}\n\nexport function IsRefine(value: unknown): value is TRefine {\n return typeof value === 'object'\n && value !== null\n && ((value as Record<string, unknown>)['~kind'] === 'Refine' || Array.isArray((value as Record<string, unknown>)['~refine']));\n}\n\nexport class Base<Value = unknown> implements TSchema {\n readonly '~kind' = 'Base' as const;\n\n Check(value: unknown): value is Value {\n return true;\n }\n\n Errors(_value: unknown): object[] {\n return [];\n }\n\n Convert(value: unknown): unknown {\n return value;\n }\n\n Clean(value: unknown): unknown {\n return value;\n }\n\n Default(value: unknown): unknown {\n return value;\n }\n\n Create(): Value {\n throw new Error('Create not implemented');\n }\n\n Clone(): Base<Value> {\n return this;\n }\n}\n\nexport function IsBase(value: unknown): value is Base {\n return value instanceof Base || (typeof value === 'object' && value !== null && (value as Record<string, unknown>)['~kind'] === 'Base');\n}\n\nexport interface TCall<Target extends TSchema = TSchema, Arguments extends TSchema[] = TSchema[]> extends TSchema {\n '~kind': 'Call';\n target: Target;\n arguments: Arguments;\n}\n\nexport function Call<Target extends TSchema, Arguments extends TSchema[]>(\n target: Target,\n arguments_: [...Arguments],\n): TSchema {\n const targetValue = target as Record<string, unknown>;\n if (targetValue['~kind'] === 'Generic') {\n const parameters = (targetValue.parameters as TParameter[] | undefined) ?? [];\n const expression = targetValue.expression as TSchema | undefined;\n if (expression !== undefined) {\n const context = bindParameterContext(parameters, arguments_);\n return Instantiate(context, expression);\n }\n }\n return {\n '~kind': 'Call',\n target,\n arguments: arguments_,\n } as TCall<Target, Arguments>;\n}\n\nexport function IsCall(value: unknown): value is TCall {\n return typeof value === 'object' && value !== null && (value as Record<string, unknown>)['~kind'] === 'Call';\n}\n\nexport interface TCyclic<Defs extends Record<string, TSchema> = Record<string, TSchema>, Ref extends string = string> extends TSchema {\n '~kind': 'Cyclic';\n $defs: Defs;\n $ref: Ref;\n}\n\nexport function Cyclic<Defs extends Record<string, TSchema>, Ref extends string>(\n $defs: Defs,\n $ref: Ref,\n options: Record<string, unknown> = {},\n): TCyclic<Defs, Ref> {\n return {\n '~kind': 'Cyclic',\n $defs,\n $ref,\n ...options,\n } as TCyclic<Defs, Ref>;\n}\n\nexport function IsCyclic(value: unknown): value is TCyclic {\n return typeof value === 'object' && value !== null && (value as Record<string, unknown>)['~kind'] === 'Cyclic';\n}\n\nexport interface TGeneric<Parameters extends TParameter[] = TParameter[], Expression extends TSchema = TSchema> extends TSchema {\n '~kind': 'Generic';\n type: 'generic';\n parameters: Parameters;\n expression: Expression;\n}\n\nexport function Generic<Parameters extends TParameter[], Expression extends TSchema>(\n parameters: [...Parameters],\n expression: Expression,\n): TGeneric<Parameters, Expression> {\n return {\n '~kind': 'Generic',\n type: 'generic',\n parameters,\n expression,\n };\n}\n\nexport function IsGeneric(value: unknown): value is TGeneric {\n return typeof value === 'object' && value !== null && (value as Record<string, unknown>)['~kind'] === 'Generic';\n}\n\nexport interface TInfer<Name extends string = string, Extends extends TSchema = TSchema> extends TSchema {\n '~kind': 'Infer';\n type: 'infer';\n name: Name;\n extends: Extends;\n}\n\nexport function Infer<Name extends string, Extends extends TSchema>(name: Name, extends_: Extends): TInfer<Name, Extends>;\nexport function Infer<Name extends string>(name: Name): TInfer<Name>;\nexport function Infer(name: string, extends_?: TSchema): TInfer {\n return {\n '~kind': 'Infer',\n type: 'infer',\n name,\n extends: extends_ ?? Unknown(),\n };\n}\n\nexport function IsInfer(value: unknown): value is TInfer {\n return typeof value === 'object' && value !== null && (value as Record<string, unknown>)['~kind'] === 'Infer';\n}\n\nexport type TImmutableSchema<Type extends TSchema> = TImmutable<Type> | ReturnType<typeof TypeReadonly<Type>>;\n",
|
|
32
|
+
"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",
|
|
33
|
+
"import type { TObject, TSchema } from './schema.js';\nimport type { TInfer } from './extensions.js';\nimport type { TProperties } from './instantiation.js';\nimport { schemaConst, schemaKind, schemaVariants } from '../shared/schema-access.js';\n\nexport interface TExtendsUnion<Inferred extends TProperties = TProperties> {\n '~kind': 'ExtendsUnion';\n inferred: Inferred;\n}\n\nexport interface TExtendsTrue<Inferred extends TProperties = TProperties> {\n '~kind': 'ExtendsTrue';\n inferred: Inferred;\n}\n\nexport interface TExtendsFalse {\n '~kind': 'ExtendsFalse';\n}\n\nexport type TExtendsResult<Inferred extends TProperties = TProperties> = TExtendsUnion<Inferred> | TExtendsTrue<Inferred> | TExtendsFalse;\nexport type TExtends<Inferred extends TProperties, Left extends TSchema, Right extends TSchema> = TExtendsResult<Inferred>;\n\nfunction extendsUnion<Inferred extends TProperties>(inferred: Inferred): TExtendsUnion<Inferred> {\n return { '~kind': 'ExtendsUnion', inferred };\n}\n\nfunction extendsTrue<Inferred extends TProperties>(inferred: Inferred): TExtendsTrue<Inferred> {\n return { '~kind': 'ExtendsTrue', inferred };\n}\n\nfunction extendsFalse(): TExtendsFalse {\n return { '~kind': 'ExtendsFalse' };\n}\n\nfunction isExtendsTrueLike(value: TExtendsResult): value is TExtendsUnion | TExtendsTrue {\n return value['~kind'] === 'ExtendsTrue' || value['~kind'] === 'ExtendsUnion';\n}\n\nfunction mergeInferred(left: TProperties, right: TProperties): TProperties {\n return { ...left, ...right };\n}\n\nfunction extendsObject(inferred: TProperties, left: TObject, right: TObject): TExtendsResult {\n const leftProps = left.properties as Record<string, TSchema>;\n const rightProps = right.properties as Record<string, TSchema>;\n let result: TExtendsResult = extendsTrue(inferred);\n for (const [key, rightSchema] of Object.entries(rightProps)) {\n const leftSchema = leftProps[key];\n if (leftSchema === undefined) {\n return extendsFalse();\n }\n result = extendsSchemas(result.inferred, leftSchema, rightSchema);\n if (!isExtendsTrueLike(result)) {\n return result;\n }\n }\n return result;\n}\n\nfunction extendsLiteral(left: TSchema, right: TSchema): boolean {\n const leftValue = schemaConst(left);\n const rightKind = schemaKind(right);\n if (rightKind === 'Literal') {\n return leftValue === schemaConst(right);\n }\n if (rightKind === 'String') return typeof leftValue === 'string';\n if (rightKind === 'Number' || rightKind === 'Integer') return typeof leftValue === 'number';\n if (rightKind === 'Boolean') return typeof leftValue === 'boolean';\n return false;\n}\n\nfunction extendsSameKind(inferred: TProperties, left: TSchema, right: TSchema): TExtendsResult {\n const kind = schemaKind(left);\n if (kind === 'Object') {\n return extendsObject(inferred, left as TObject, right as TObject);\n }\n return extendsTrue(inferred);\n}\n\nfunction inferFromSchema(inferred: TProperties, left: TSchema, right: TSchema): TExtendsResult {\n if (schemaKind(right) === 'Infer') {\n const infer = right as TInfer;\n return extendsSchemas(mergeInferred(inferred, { [infer.name]: left }), left, infer.extends);\n }\n return extendsSchemas(inferred, left, right);\n}\n\nfunction extendsSchemas(inferred: TProperties, left: TSchema, right: TSchema): TExtendsResult {\n const leftKind = schemaKind(left);\n const rightKind = schemaKind(right);\n\n if (rightKind === 'Union') {\n let sawUnion = false;\n for (const variant of schemaVariants(right)) {\n const result = inferFromSchema(inferred, left, variant);\n if (result['~kind'] === 'ExtendsTrue') return result;\n if (result['~kind'] === 'ExtendsUnion') sawUnion = true;\n }\n return sawUnion ? extendsUnion(inferred) : extendsFalse();\n }\n\n if (leftKind === 'Union') {\n let result: TExtendsResult = extendsTrue(inferred);\n for (const variant of schemaVariants(left)) {\n result = extendsSchemas(result.inferred, variant, right);\n if (!isExtendsTrueLike(result)) return result;\n }\n return result;\n }\n\n if (leftKind === 'Literal') {\n return extendsLiteral(left, right) ? extendsTrue(inferred) : extendsFalse();\n }\n\n if (rightKind === 'Unknown' || rightKind === 'Any') return extendsTrue(inferred);\n if (leftKind === rightKind) return extendsSameKind(inferred, left, right);\n if (leftKind === 'Integer' && rightKind === 'Number') return extendsTrue(inferred);\n\n return extendsFalse();\n}\n\nexport function Extends<Inferred extends TProperties, Left extends TSchema, Right extends TSchema>(\n inferred: Inferred,\n left: Left,\n right: Right,\n): TExtends<Inferred, Left, Right>;\nexport function Extends<Inferred extends TProperties, Left extends TSchema, Right extends TSchema>(\n left: Left,\n right: Right,\n): TExtends<Inferred, Left, Right>;\nexport function Extends<Inferred extends TProperties, Left extends TSchema, Right extends TSchema>(\n arg0: Inferred | Left,\n arg1: Left | Right,\n arg2?: Right,\n): TExtends<Inferred, Left, Right> {\n if (arg2 === undefined) {\n return extendsSchemas({}, arg0 as Left, arg1 as Right) as TExtends<Inferred, Left, Right>;\n }\n return extendsSchemas(arg0 as Inferred, arg1 as Left, arg2) as TExtends<Inferred, Left, Right>;\n}\n\nexport const ExtendsResult = {\n Union: extendsUnion,\n True: extendsTrue,\n False: extendsFalse,\n IsExtendsUnion(value: TExtendsResult): value is TExtendsUnion {\n return value['~kind'] === 'ExtendsUnion';\n },\n IsExtendsTrue(value: TExtendsResult): value is TExtendsTrue {\n return value['~kind'] === 'ExtendsTrue';\n },\n IsExtendsFalse(value: TExtendsResult): value is TExtendsFalse {\n return value['~kind'] === 'ExtendsFalse';\n },\n IsExtendsTrueLike: isExtendsTrueLike,\n};\n",
|
|
34
|
+
"import type { TSchema, TTemplateLiteral } from './schema.js';\n\nfunction isKind<T extends TSchema>(schema: TSchema, kind: string): schema is T {\n return (schema as { '~kind'?: string })['~kind'] === kind;\n}\n\nfunction hasFlag(schema: TSchema, flag: string): boolean {\n return typeof schema === 'object' && schema !== null && flag in schema;\n}\n\nexport function IsSchema(schema: unknown): schema is TSchema {\n return typeof schema === 'object' && schema !== null && '~kind' in schema;\n}\n\nexport function IsKind(schema: TSchema, kind: string): boolean {\n return isKind(schema, kind);\n}\n\nexport function IsString(schema: TSchema): boolean { return isKind(schema, 'String'); }\nexport function IsNumber(schema: TSchema): boolean { return isKind(schema, 'Number'); }\nexport function IsInteger(schema: TSchema): boolean { return isKind(schema, 'Integer'); }\nexport function IsBoolean(schema: TSchema): boolean { return isKind(schema, 'Boolean'); }\nexport function IsNull(schema: TSchema): boolean { return isKind(schema, 'Null'); }\nexport function IsLiteral(schema: TSchema): boolean { return isKind(schema, 'Literal'); }\nexport function IsVoid(schema: TSchema): boolean { return isKind(schema, 'Void'); }\nexport function IsUndefined(schema: TSchema): boolean { return isKind(schema, 'Undefined'); }\nexport function IsUnknown(schema: TSchema): boolean { return isKind(schema, 'Unknown'); }\nexport function IsAny(schema: TSchema): boolean { return isKind(schema, 'Any'); }\nexport function IsNever(schema: TSchema): boolean { return isKind(schema, 'Never'); }\nexport function IsBigInt(schema: TSchema): boolean { return isKind(schema, 'BigInt'); }\nexport function IsDate(schema: TSchema): boolean { return isKind(schema, 'Date'); }\nexport function IsArray(schema: TSchema): boolean { return isKind(schema, 'Array'); }\nexport function IsObject(schema: TSchema): boolean { return isKind(schema, 'Object'); }\nexport function IsTuple(schema: TSchema): boolean { return isKind(schema, 'Tuple'); }\nexport function IsRecord(schema: TSchema): boolean { return isKind(schema, 'Record'); }\nexport function IsUnion(schema: TSchema): boolean { return isKind(schema, 'Union'); }\nexport function IsIntersect(schema: TSchema): boolean { return isKind(schema, 'Intersect'); }\nexport function IsOptional(schema: TSchema): boolean { return isKind(schema, 'Optional') || hasFlag(schema, '~optional'); }\nexport function IsReadonly(schema: TSchema): boolean { return isKind(schema, 'Readonly') || hasFlag(schema, '~readonly'); }\nexport function IsEnum(schema: TSchema): boolean { return isKind(schema, 'Enum'); }\nexport function IsRef(schema: TSchema): boolean { return isKind(schema, 'Ref'); }\nexport function IsRecursive(schema: TSchema): boolean { return isKind(schema, 'Recursive'); }\nexport function IsExclude(schema: TSchema): boolean { return isKind(schema, 'Exclude'); }\nexport function IsExtract(schema: TSchema): boolean { return isKind(schema, 'Extract'); }\nexport function IsKeyOf(schema: TSchema): boolean { return isKind(schema, 'KeyOf'); }\nexport function IsPartial(schema: TSchema): boolean { return isKind(schema, 'Partial'); }\nexport function IsRequired(schema: TSchema): boolean { return isKind(schema, 'Required'); }\nexport function IsPick(schema: TSchema): boolean { return isKind(schema, 'Pick'); }\nexport function IsOmit(schema: TSchema): boolean { return isKind(schema, 'Omit'); }\nexport function IsNot(schema: TSchema): boolean { return isKind(schema, 'Not'); }\nexport function IsIfThenElse(schema: TSchema): boolean { return isKind(schema, 'IfThenElse'); }\nexport function IsUnsafe(schema: TSchema): boolean { return isKind(schema, 'Unsafe'); }\nexport function IsTemplateLiteral(schema: TSchema): schema is TTemplateLiteral { return isKind(schema, 'TemplateLiteral'); }\nexport function IsIndex(schema: TSchema): boolean { return isKind(schema, 'Index'); }\nexport function IsMapped(schema: TSchema): boolean { return isKind(schema, 'Mapped'); }\nexport function IsConditional(schema: TSchema): boolean { return isKind(schema, 'Conditional'); }\nexport function IsFunction(schema: TSchema): boolean { return isKind(schema, 'Function'); }\nexport function IsConstructor(schema: TSchema): boolean { return isKind(schema, 'Constructor'); }\nexport function IsPromise(schema: TSchema): boolean { return isKind(schema, 'Promise'); }\nexport function IsIterator(schema: TSchema): boolean { return isKind(schema, 'Iterator'); }\nexport function IsAsyncIterator(schema: TSchema): boolean { return isKind(schema, 'AsyncIterator'); }\nexport function IsSymbol(schema: TSchema): boolean { return isKind(schema, 'Symbol'); }\nexport function IsUint8Array(schema: TSchema): boolean { return isKind(schema, 'Uint8Array'); }\nexport function IsRegExpInstance(schema: TSchema): boolean { return isKind(schema, 'RegExpInstance'); }\nexport function IsDecode(schema: TSchema): boolean { return isKind(schema, 'Decode'); }\nexport function IsEncode(schema: TSchema): boolean { return isKind(schema, 'Encode'); }\nexport function IsAwaited(schema: TSchema): boolean { return isKind(schema, 'Awaited'); }\nexport function IsReturnType(schema: TSchema): boolean { return isKind(schema, 'ReturnType'); }\nexport function IsParameters(schema: TSchema): boolean { return isKind(schema, 'Parameters'); }\nexport function IsInstanceType(schema: TSchema): boolean { return isKind(schema, 'InstanceType'); }\nexport function IsConstructorParameters(schema: TSchema): boolean { return isKind(schema, 'ConstructorParameters'); }\nexport function IsModule(schema: TSchema): boolean { return isKind(schema, 'Module'); }\nexport function IsRest(schema: TSchema): boolean { return isKind(schema, 'Rest'); }\nexport function IsCapitalize(schema: TSchema): boolean { return isKind(schema, 'Capitalize'); }\nexport function IsLowercase(schema: TSchema): boolean { return isKind(schema, 'Lowercase'); }\nexport function IsUppercase(schema: TSchema): boolean { return isKind(schema, 'Uppercase'); }\nexport function IsUncapitalize(schema: TSchema): boolean { return isKind(schema, 'Uncapitalize'); }\nexport function IsInterface(schema: TSchema): boolean { return IsIntersect(schema); }\nexport function IsNonNullable(schema: TSchema): boolean { return IsExclude(schema); }\nexport function IsOptions(schema: TSchema): boolean { return IsSchema(schema); }\nexport function IsReadonlyType(schema: TSchema): boolean { return IsReadonly(schema); }\nexport function IsIdentifier(schema: TSchema): boolean { return isKind(schema, 'Identifier'); }\nexport function IsParameter(schema: TSchema): boolean { return isKind(schema, 'Parameter'); }\nexport function IsThis(schema: TSchema): boolean { return isKind(schema, 'This'); }\nexport function IsCodec(schema: TSchema): boolean { return isKind(schema, 'Codec'); }\nexport function IsImmutable(schema: TSchema): boolean { return isKind(schema, 'Immutable') || hasFlag(schema, '~immutable'); }\nexport function IsRefine(schema: TSchema): boolean { return isKind(schema, 'Refine') || hasFlag(schema, '~refine'); }\nexport function IsBase(schema: TSchema): boolean { return isKind(schema, 'Base'); }\nexport function IsCall(schema: TSchema): boolean { return isKind(schema, 'Call'); }\nexport function IsCyclic(schema: TSchema): boolean { return isKind(schema, 'Cyclic'); }\nexport function IsGeneric(schema: TSchema): boolean { return isKind(schema, 'Generic'); }\nexport function IsInfer(schema: TSchema): boolean { return isKind(schema, 'Infer'); }\n",
|
|
35
|
+
"export const StringKind = 'String' as const;\nexport const NumberKind = 'Number' as const;\nexport const IntegerKind = 'Integer' as const;\nexport const BooleanKind = 'Boolean' as const;\nexport const NullKind = 'Null' as const;\nexport const LiteralKind = 'Literal' as const;\nexport const ArrayKind = 'Array' as const;\nexport const ObjectKind = 'Object' as const;\nexport const TupleKind = 'Tuple' as const;\nexport const RecordKind = 'Record' as const;\nexport const UnionKind = 'Union' as const;\nexport const IntersectKind = 'Intersect' as const;\nexport const OptionalKind = 'Optional' as const;\nexport const ReadonlyKind = 'Readonly' as const;\nexport const EnumKind = 'Enum' as const;\nexport const RefKind = 'Ref' as const;\nexport const PartialKind = 'Partial' as const;\nexport const RequiredKind = 'Required' as const;\nexport const PickKind = 'Pick' as const;\nexport const OmitKind = 'Omit' as const;\nexport const KeyOfKind = 'KeyOf' as const;\nexport const ExcludeKind = 'Exclude' as const;\nexport const ExtractKind = 'Extract' as const;\nexport const TemplateLiteralKind = 'TemplateLiteral' as const;\nexport const UnsafeKind = 'Unsafe' as const;\nexport const VoidKind = 'Void' as const;\nexport const UndefinedKind = 'Undefined' as const;\nexport const UnknownKind = 'Unknown' as const;\nexport const AnyKind = 'Any' as const;\nexport const NeverKind = 'Never' as const;\nexport const SelfKind = 'Self' as const;\nexport const PromiseKind = 'Promise' as const;\nexport const IteratorKind = 'Iterator' as const;\nexport const AsyncIteratorKind = 'AsyncIterator' as const;\nexport const UuidKind = 'UUID' as const;\nexport const EmailKind = 'Email' as const;\nexport const HostnameKind = 'Hostname' as const;\nexport const UriKind = 'Uri' as const;\nexport const Base64Kind = 'Base64' as const;\nexport const HexKind = 'Hex' as const;\nexport const HexColorKind = 'HexColor' as const;\nexport const IpKind = 'Ip' as const;\nexport const CreditCardKind = 'CreditCard' as const;\nexport const DateFormatKind = 'DateFormat' as const;\nexport const DateTimeKind = 'DateTime' as const;\nexport const TimeKind = 'Time' as const;\nexport const DurationKind = 'Duration' as const;\nexport const JsonKind = 'Json' as const;\nexport const Uint8ArrayKind = 'Uint8Array' as const;\nexport const RegExpKind = 'RegExp' as const;\nexport const FunctionKind = 'Function' as const;\nexport const ConstructorKind = 'Constructor' as const;\nexport const SymbolKind = 'Symbol' as const;\nexport const TemplateElementKind = 'TemplateElement' as const;\nexport const NotKind = 'Not' as const;\nexport const IfThenElseKind = 'IfThenElse' as const;\nexport const IndexKind = 'Index' as const;\nexport const MappedKind = 'Mapped' as const;\nexport const ConditionalKind = 'Conditional' as const;\nexport const RestKind = 'Rest' as const;\nexport const CapitalizeKind = 'Capitalize' as const;\nexport const LowercaseKind = 'Lowercase' as const;\nexport const UppercaseKind = 'Uppercase' as const;\nexport const UncapitalizeKind = 'Uncapitalize' as const;\nexport const BigIntKind = 'BigInt' as const;\nexport const DateKind = 'Date' as const;\nexport const DecodeKind = 'Decode' as const;\nexport const EncodeKind = 'Encode' as const;\nexport const RecursiveKind = 'Recursive' as const;\nexport const ModuleKind = 'Module' as const;\nexport const AwaitedKind = 'Awaited' as const;\nexport const ReturnTypeKind = 'ReturnType' as const;\nexport const ParametersKind = 'Parameters' as const;\nexport const InstanceTypeKind = 'InstanceType' as const;\nexport const ConstructorParametersKind = 'ConstructorParameters' as const;\n",
|
|
36
|
+
"import type { TSchema } from './schema.js';\n\nexport type SchemaRecord = TSchema & Record<string, unknown>;\nexport type LiteralValue = string | number | boolean | bigint;\n\nexport function isObjectValue(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nexport function isSchemaLike(value: unknown): value is TSchema {\n return isObjectValue(value) && typeof value['~kind'] === 'string';\n}\n\nexport function getKind(schema: TSchema): string | undefined {\n const kind = (schema as SchemaRecord)['~kind'];\n return typeof kind === 'string' ? kind : undefined;\n}\n\nexport function hasKind(schema: TSchema, kind: string): boolean {\n return getKind(schema) === kind;\n}\n\nexport function discardKeys<T extends Record<string, unknown>>(\n value: T,\n keys: readonly string[],\n): Record<string, unknown> {\n const result: Record<string, unknown> = { ...value };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\n\nexport function mergeOptions<T extends TSchema>(schema: T, options: Record<string, unknown> = {}): T {\n return { ...schema, ...options } as T;\n}\n\nexport function isLiteralValue(value: unknown): value is LiteralValue {\n return typeof value === 'string'\n || typeof value === 'number'\n || typeof value === 'boolean'\n || typeof value === 'bigint';\n}\n\nexport function getLiteralConst(schema: TSchema): LiteralValue | undefined {\n if (getKind(schema) !== 'Literal') {\n return undefined;\n }\n const value = (schema as SchemaRecord).const;\n return isLiteralValue(value) ? value : undefined;\n}\n\nexport function escapePattern(value: string): string {\n return value.replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&');\n}\n\nexport function stripAnchors(pattern: string): string {\n return pattern.startsWith('^') && pattern.endsWith('$')\n ? pattern.slice(1, -1)\n : pattern;\n}\n",
|
|
37
|
+
"import type {\n TArray,\n TAsyncIterator,\n TConstructor,\n TFunction,\n TIntersect,\n TIterator,\n TObject,\n TPromise,\n TRecord,\n TSchema,\n TTuple,\n TUnion,\n} from './schema.js';\nimport type { TRefinement } from './extensions.js';\nimport { discardKeys, getKind, isObjectValue } from './root-shared.js';\n\nexport const BigIntPattern = '-?(?:0|[1-9][0-9]*)n';\nexport const IntegerPattern = '-?(?:0|[1-9][0-9]*)';\nexport const NumberPattern = '-?(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?';\nexport const StringPattern = '.*';\nexport const NeverPattern = '(?!)';\nexport const IntegerKey = `^${IntegerPattern}$`;\nexport const NumberKey = `^${NumberPattern}$`;\nexport const StringKey = `^${StringPattern}$`;\nexport const ResultEqual = 'equal' as const;\nexport const ResultDisjoint = 'disjoint' as const;\nexport const ResultLeftInside = 'left-inside' as const;\nexport const ResultRightInside = 'right-inside' as const;\n\nfunction schemaOptions(type: TSchema, keys: readonly string[]): Record<string, unknown> {\n return discardKeys(type as Record<string, unknown>, keys);\n}\n\nexport function ArrayOptions(type: TArray): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'items']);\n}\n\nexport function AsyncIteratorOptions(type: TAsyncIterator): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'item']);\n}\n\nexport function ConstructorOptions(type: TConstructor): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'parameters', 'returns']);\n}\n\nexport function FunctionOptions(type: TFunction): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'parameters', 'returns']);\n}\n\nexport function IntersectOptions(type: TIntersect): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'variants']);\n}\n\nexport function IteratorOptions(type: TIterator): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'item']);\n}\n\nexport function ObjectOptions(type: TObject): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'properties']);\n}\n\nexport function PromiseOptions(type: TPromise): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'item']);\n}\n\nexport function RecordOptions(type: TRecord): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'key', 'value']);\n}\n\nexport function TupleOptions(type: TTuple): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'items', 'minItems', 'maxItems', 'additionalItems']);\n}\n\nexport function UnionOptions(type: TUnion): Record<string, unknown> {\n return schemaOptions(type, ['~kind', 'variants']);\n}\n\nexport function CyclicOptions(type: TSchema): Record<string, unknown> {\n return schemaOptions(type, ['~kind', '$defs', '$ref']);\n}\n\nfunction isOptionalSchema(schema: TSchema): boolean {\n return getKind(schema) === 'Optional'\n || (isObjectValue(schema) && schema['~optional'] === true);\n}\n\nexport function RequiredArray(properties: Record<string, TSchema>): string[] {\n return Object.keys(properties).filter((key) => !isOptionalSchema(properties[key]!));\n}\n\nexport function PropertyKeys<TProperties extends Record<string, TSchema>>(properties: TProperties): Array<Extract<keyof TProperties, string>> {\n return Object.keys(properties) as Array<Extract<keyof TProperties, string>>;\n}\n\nexport function PropertyValues<TProperties extends Record<string, TSchema>>(properties: TProperties): Array<TProperties[Extract<keyof TProperties, string>]> {\n return Object.values(properties) as Array<TProperties[Extract<keyof TProperties, string>]>;\n}\n\nexport interface TOptionalAddAction<Type extends TSchema = TSchema> extends TSchema {\n '~kind': 'OptionalAddAction';\n type: Type;\n}\n\nexport interface TOptionalRemoveAction<Type extends TSchema = TSchema> extends TSchema {\n '~kind': 'OptionalRemoveAction';\n type: Type;\n}\n\nexport interface TReadonlyAddAction<Type extends TSchema = TSchema> extends TSchema {\n '~kind': 'ReadonlyAddAction';\n type: Type;\n}\n\nexport interface TReadonlyRemoveAction<Type extends TSchema = TSchema> extends TSchema {\n '~kind': 'ReadonlyRemoveAction';\n type: Type;\n}\n\nexport function OptionalAddAction<Type extends TSchema>(type: Type): TOptionalAddAction<Type> {\n return { '~kind': 'OptionalAddAction', type };\n}\n\nexport function OptionalRemoveAction<Type extends TSchema>(type: Type): TOptionalRemoveAction<Type> {\n return { '~kind': 'OptionalRemoveAction', type };\n}\n\nexport function ReadonlyAddAction<Type extends TSchema>(type: Type): TReadonlyAddAction<Type> {\n return { '~kind': 'ReadonlyAddAction', type };\n}\n\nexport function ReadonlyRemoveAction<Type extends TSchema>(type: Type): TReadonlyRemoveAction<Type> {\n return { '~kind': 'ReadonlyRemoveAction', type };\n}\n\nfunction removeModifier<Type extends TSchema>(type: Type, key: string): Type {\n return discardKeys(type as Record<string, unknown>, [key]) as Type;\n}\n\nexport function OptionalAdd<Type extends TSchema>(type: Type): Type & { '~optional': true } {\n return { ...type, '~optional': true } as Type & { '~optional': true };\n}\n\nexport function OptionalRemove<Type extends TSchema>(type: Type): Type {\n return removeModifier(type, '~optional');\n}\n\nexport function ReadonlyAdd<Type extends TSchema>(type: Type): Type & { '~readonly': true } {\n return { ...type, '~readonly': true } as Type & { '~readonly': true };\n}\n\nexport function ReadonlyRemove<Type extends TSchema>(type: Type): Type {\n return removeModifier(type, '~readonly');\n}\n\nexport function ImmutableAdd<Type extends TSchema>(type: Type): Type & { '~immutable': true } {\n return { ...type, '~immutable': true } as Type & { '~immutable': true };\n}\n\nexport function ImmutableRemove<Type extends TSchema>(type: Type): Type {\n return removeModifier(type, '~immutable');\n}\n\nexport function RefineAdd<Type extends TSchema>(type: Type, refinement: TRefinement<Type>): Type & { '~refine': TRefinement<Type>[] } {\n const existing = isObjectValue(type) && Array.isArray(type['~refine'])\n ? (type['~refine'] as TRefinement<Type>[])\n : [];\n return { ...type, '~refine': [...existing, refinement] } as Type & { '~refine': TRefinement<Type>[] };\n}\n",
|
|
38
|
+
"import type { TObject, TSchema } from './schema.js';\nimport { isObjectValue, isSchemaLike } from './root-shared.js';\n\nexport interface TDeferred<\n Action extends string = string,\n Parameters extends readonly unknown[] = readonly unknown[],\n Options extends Record<string, unknown> = Record<string, unknown>,\n> extends TSchema {\n '~kind': 'Deferred';\n action: Action;\n parameters: Parameters;\n options: Options;\n}\n\nexport type TInterfaceDeferred<\n Heritage extends TObject[] = TObject[],\n Properties extends Record<string, TSchema> = Record<string, TSchema>,\n> = TDeferred<'Interface', [Heritage, Properties]>;\n\nexport function Deferred<\n Action extends string,\n Parameters extends readonly unknown[],\n Options extends Record<string, unknown> = Record<string, unknown>,\n>(\n action: Action,\n parameters: Parameters,\n options: Options = {} as Options,\n): TDeferred<Action, Parameters, Options> {\n return { '~kind': 'Deferred', action, parameters, options };\n}\n\nexport const AwaitedDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Awaited', [type], options);\nexport const CapitalizeDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Capitalize', [type], options);\nexport const ConditionalDeferred = (left: TSchema, right: TSchema, trueType: TSchema, falseType: TSchema, options: Record<string, unknown> = {}) => Deferred('Conditional', [left, right, trueType, falseType], options);\nexport const ConstructorParametersDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('ConstructorParameters', [type], options);\nexport const EvaluateDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Evaluate', [type], options);\nexport const ExcludeDeferred = (left: TSchema, right: TSchema, options: Record<string, unknown> = {}) => Deferred('Exclude', [left, right], options);\nexport const ExtractDeferred = (left: TSchema, right: TSchema, options: Record<string, unknown> = {}) => Deferred('Extract', [left, right], options);\nexport const IndexDeferred = (type: TSchema, indexer: TSchema, options: Record<string, unknown> = {}) => Deferred('Index', [type, indexer], options);\nexport const InstanceTypeDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('InstanceType', [type], options);\nexport const InterfaceDeferred = (heritage: TObject[], properties: Record<string, TSchema>, options: Record<string, unknown> = {}) => Deferred('Interface', [heritage, properties], options);\nexport const KeyOfDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('KeyOf', [type], options);\nexport const LowercaseDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Lowercase', [type], options);\nexport const MappedDeferred = (identifier: TSchema, key: TSchema, asType: TSchema, property: TSchema, options: Record<string, unknown> = {}) => Deferred('Mapped', [identifier, key, asType, property], options);\nexport const ModuleDeferred = (definitions: Record<string, TSchema>, options: Record<string, unknown> = {}) => Deferred('Module', [definitions], options);\nexport const NonNullableDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('NonNullable', [type], options);\nexport const OmitDeferred = (type: TSchema, indexer: TSchema, options: Record<string, unknown> = {}) => Deferred('Omit', [type, indexer], options);\nexport const OptionsDeferred = (type: TSchema, options: Record<string, unknown>) => Deferred('Options', [type, options], {});\nexport const ParametersDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Parameters', [type], options);\nexport const PartialDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Partial', [type], options);\nexport const PickDeferred = (type: TSchema, indexer: TSchema, options: Record<string, unknown> = {}) => Deferred('Pick', [type, indexer], options);\nexport const ReadonlyTypeDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('ReadonlyType', [type], options);\nexport const RecordDeferred = (key: TSchema, value: TSchema, options: Record<string, unknown> = {}) => Deferred('Record', [key, value], options);\nexport const RequiredDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Required', [type], options);\nexport const ReturnTypeDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('ReturnType', [type], options);\nexport const TemplateLiteralDeferred = (types: TSchema[], options: Record<string, unknown> = {}) => Deferred('TemplateLiteral', [types], options);\nexport const UncapitalizeDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Uncapitalize', [type], options);\nexport const UppercaseDeferred = (type: TSchema, options: Record<string, unknown> = {}) => Deferred('Uppercase', [type], options);\n\nexport function IsDeferred(value: unknown): value is TDeferred {\n return isObjectValue(value)\n && value['~kind'] === 'Deferred'\n && typeof value.action === 'string'\n && Array.isArray(value.parameters)\n && isObjectValue(value.options);\n}\n\nexport function IsInterfaceDeferred(value: unknown): value is TInterfaceDeferred {\n if (!IsDeferred(value) || value.action !== 'Interface') {\n return false;\n }\n const [heritage, properties] = value.parameters;\n return Array.isArray(heritage)\n && heritage.every((entry) => isSchemaLike(entry))\n && isObjectValue(properties)\n && Object.values(properties).every((entry) => isSchemaLike(entry));\n}\n",
|
|
39
|
+
"import type { TSchema } from './schema.js';\nimport type {\n TOptionalAddAction,\n TOptionalRemoveAction,\n TReadonlyAddAction,\n TReadonlyRemoveAction,\n} from './root-constants.js';\nimport {\n BigIntPattern,\n IntegerPattern,\n NeverPattern,\n NumberPattern,\n StringPattern,\n} from './root-constants.js';\nimport { getKind, isLiteralValue, isObjectValue, isSchemaLike, stripAnchors } from './root-shared.js';\n\nfunction hasActionKind(value: unknown, kind: string): value is Record<string, unknown> {\n return isObjectValue(value) && value['~kind'] === kind && isSchemaLike(value.type);\n}\n\nexport function IsLiteralValue(value: unknown): boolean {\n return isLiteralValue(value);\n}\n\nexport function IsLiteralBigInt(value: unknown): boolean {\n return isObjectValue(value) && value['~kind'] === 'Literal' && typeof value.const === 'bigint';\n}\n\nexport function IsLiteralBoolean(value: unknown): boolean {\n return isObjectValue(value) && value['~kind'] === 'Literal' && typeof value.const === 'boolean';\n}\n\nexport function IsLiteralNumber(value: unknown): boolean {\n return isObjectValue(value) && value['~kind'] === 'Literal' && typeof value.const === 'number';\n}\n\nexport function IsLiteralString(value: unknown): boolean {\n return isObjectValue(value) && value['~kind'] === 'Literal' && typeof value.const === 'string';\n}\n\nfunction isFiniteTemplateType(type: TSchema): boolean {\n if (getKind(type) === 'Literal') {\n return true;\n }\n if (getKind(type) === 'Union') {\n const variants = (type as TSchema & { variants: TSchema[] }).variants;\n return variants.length > 0 && variants.every((variant) => isFiniteTemplateType(variant));\n }\n return false;\n}\n\nexport function IsTemplateLiteralFinite(types: readonly TSchema[]): boolean {\n return types.length > 0 && types.every((type) => isFiniteTemplateType(type));\n}\n\nexport function IsTemplateLiteralPattern(pattern: string): boolean {\n const inner = stripAnchors(pattern);\n return pattern === StringPattern\n || pattern === NumberPattern\n || pattern === IntegerPattern\n || pattern === BigIntPattern\n || pattern === NeverPattern\n || (pattern.startsWith('^') && pattern.endsWith('$'))\n || inner.includes('|');\n}\n\nexport function IsTypeScriptEnumLike(value: unknown): value is Record<string, string | number> {\n if (!isObjectValue(value) || Array.isArray(value)) {\n return false;\n }\n return Object.keys(value).every((key) => {\n const entry = value[key];\n return typeof entry === 'string' || typeof entry === 'number';\n });\n}\n\nexport function IsOptionalAddAction(value: unknown): value is TOptionalAddAction {\n return hasActionKind(value, 'OptionalAddAction');\n}\n\nexport function IsOptionalRemoveAction(value: unknown): value is TOptionalRemoveAction {\n return hasActionKind(value, 'OptionalRemoveAction');\n}\n\nexport function IsReadonlyAddAction(value: unknown): value is TReadonlyAddAction {\n return hasActionKind(value, 'ReadonlyAddAction');\n}\n\nexport function IsReadonlyRemoveAction(value: unknown): value is TReadonlyRemoveAction {\n return hasActionKind(value, 'ReadonlyRemoveAction');\n}\n",
|
|
40
|
+
"import type { TObject, TSchema } from './schema.js';\nimport { Object as TypeObject } from './containers.js';\nimport { Composite } from './actions.js';\nimport { Any, Literal, Never, Number as TypeNumber, String as TypeString, Symbol as TypeSymbol } from './primitives.js';\nimport { Evaluate as EvaluateObject, Intersect, Union } from './combinators.js';\nimport {\n RequiredArray,\n ResultDisjoint,\n ResultEqual,\n ResultLeftInside,\n ResultRightInside,\n} from './root-constants.js';\nimport { getKind, getLiteralConst, isLiteralValue } from './root-shared.js';\nimport { Extends, ExtendsResult } from './extends.js';\n\nexport class InvalidLiteralValue extends Error {\n constructor(readonly value: unknown) {\n super('Invalid Literal value');\n }\n}\n\nexport function LiteralTypeName(value: unknown): 'bigint' | 'boolean' | 'number' | 'string' {\n if (typeof value === 'bigint') return 'bigint';\n if (typeof value === 'boolean') return 'boolean';\n if (typeof value === 'number') return 'number';\n if (typeof value === 'string') return 'string';\n throw new InvalidLiteralValue(value);\n}\n\nfunction literalSchema(value: string | number | boolean | bigint): TSchema {\n return { '~kind': 'Literal', const: value } as TSchema;\n}\n\nexport function ConvertToIntegerKey(value: string | number): string | number {\n const normal = `${value}`;\n return /^(?:0|[1-9][0-9]*)$/.test(normal) ? globalThis.Number.parseInt(normal, 10) : value;\n}\n\nexport function KeysToIndexer(keys: ReadonlyArray<string | number | boolean | bigint>): TSchema {\n const literals = keys.filter((key) => isLiteralValue(key)).map((key) => literalSchema(key));\n return EvaluateUnionFast(literals);\n}\n\nexport function EnumValuesToVariants(values: readonly unknown[]): TSchema[] {\n return values.flatMap((value) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n return [literalSchema(value)];\n }\n return [];\n });\n}\n\nexport function EnumValuesToUnion(values: readonly unknown[]): TSchema {\n return EvaluateUnionFast(EnumValuesToVariants(values));\n}\n\nexport function EnumToUnion(type: TSchema): TSchema {\n const schema = type as TSchema & { values?: readonly unknown[]; enum?: readonly unknown[] };\n const values = Array.isArray(schema.values) ? schema.values : Array.isArray(schema.enum) ? schema.enum : [];\n return EnumValuesToUnion(values);\n}\n\nexport function TypeScriptEnumToEnumValues(type: Record<string, string | number>): Array<string | number> {\n return Object.keys(type)\n .filter((key) => globalThis.Number.isNaN(globalThis.Number(key)))\n .map((key) => type[key]!);\n}\n\nexport function Compare(left: TSchema, right: TSchema): typeof ResultDisjoint | typeof ResultEqual | typeof ResultLeftInside | typeof ResultRightInside {\n const leftExtendsRight = Extends(left, right);\n const rightExtendsLeft = Extends(right, left);\n return ExtendsResult.IsExtendsTrueLike(leftExtendsRight) && ExtendsResult.IsExtendsTrueLike(rightExtendsLeft)\n ? ResultEqual\n : ExtendsResult.IsExtendsTrueLike(leftExtendsRight) && ExtendsResult.IsExtendsFalse(rightExtendsLeft)\n ? ResultLeftInside\n : ExtendsResult.IsExtendsFalse(leftExtendsRight) && ExtendsResult.IsExtendsTrueLike(rightExtendsLeft)\n ? ResultRightInside\n : ResultDisjoint;\n}\n\nexport function Flatten(types: readonly TSchema[]): TSchema[] {\n return types.flatMap((type) => getKind(type) === 'Union' ? Flatten((type as TSchema & { variants: TSchema[] }).variants) : [type]);\n}\n\nexport function Narrow(left: TSchema, right: TSchema): TSchema {\n const result = Compare(left, right);\n return result === ResultLeftInside ? left : result === ResultRightInside || result === ResultEqual ? right : Never();\n}\n\nfunction broadenFilter(type: TSchema, types: readonly TSchema[]): TSchema[] {\n return types.filter((candidate) => Compare(type, candidate) !== ResultRightInside);\n}\n\nfunction isBroadestType(type: TSchema, types: readonly TSchema[]): boolean {\n return !types.some((candidate) => {\n const result = Compare(type, candidate);\n return result === ResultLeftInside || result === ResultEqual;\n });\n}\n\nfunction broadenType(type: TSchema, types: readonly TSchema[]): TSchema[] {\n const evaluated = EvaluateType(type);\n return getKind(evaluated) === 'Any'\n ? [evaluated]\n : isBroadestType(evaluated, types)\n ? [...broadenFilter(evaluated, types), evaluated]\n : [...types];\n}\n\nexport function Broaden(types: readonly TSchema[]): TSchema {\n const broadened = types.reduce<TSchema[]>((result, type) => {\n if (getKind(type) === 'Object') {\n return [...result, type];\n }\n if (getKind(type) === 'Never') {\n return result;\n }\n return broadenType(type, result);\n }, []);\n const flattened = Flatten(broadened);\n return flattened.length === 0 ? Never() : flattened.length === 1 ? flattened[0]! : Union(flattened);\n}\n\nfunction isObjectLike(type: TSchema): boolean {\n const kind = getKind(type);\n return kind === 'Object' || kind === 'Tuple';\n}\n\nfunction distributeOperation(left: TSchema, right: TSchema): TSchema {\n const evaluatedLeft = EvaluateType(left);\n const evaluatedRight = EvaluateType(right);\n if (getKind(evaluatedLeft) === 'Union' || getKind(evaluatedRight) === 'Union') {\n return EvaluateIntersect([evaluatedLeft, evaluatedRight]);\n }\n if (isObjectLike(evaluatedLeft) && isObjectLike(evaluatedRight)) {\n return Composite([CollapseToObject(evaluatedLeft) as TObject, CollapseToObject(evaluatedRight) as TObject]);\n }\n if (isObjectLike(evaluatedLeft)) return evaluatedLeft;\n if (isObjectLike(evaluatedRight)) return evaluatedRight;\n return Narrow(evaluatedLeft, evaluatedRight);\n}\n\nfunction distributeType(type: TSchema, types: readonly TSchema[], result: TSchema[] = []): TSchema[] {\n const [left, ...right] = types;\n return left !== undefined\n ? distributeType(type, right, [...result, distributeOperation(type, left)])\n : result.length === 0\n ? [type]\n : result;\n}\n\nfunction distributeUnion(types: readonly TSchema[], distribution: readonly TSchema[], result: TSchema[] = []): TSchema[] {\n const [left, ...right] = types;\n return left !== undefined\n ? distributeUnion(right, distribution, [...result, ...Distribute([left], distribution)])\n : result;\n}\n\nexport function Distribute(types: readonly TSchema[], result: readonly TSchema[] = []): TSchema[] {\n const [left, ...right] = types;\n if (left === undefined) {\n return [...result];\n }\n return getKind(left) === 'Union'\n ? Distribute(right, distributeUnion((left as TSchema & { variants: TSchema[] }).variants, result))\n : Distribute(right, distributeType(left, result));\n}\n\nexport function EvaluateIntersect(types: readonly TSchema[]): TSchema {\n return Broaden(Distribute(types));\n}\n\nexport function EvaluateUnion(types: readonly TSchema[]): TSchema {\n return Broaden(types);\n}\n\nexport function EvaluateType(type: TSchema): TSchema {\n return getKind(type) === 'Intersect'\n ? EvaluateIntersect((type as TSchema & { variants: TSchema[] }).variants)\n : getKind(type) === 'Union'\n ? EvaluateUnion((type as TSchema & { variants: TSchema[] }).variants)\n : type;\n}\n\nexport function EvaluateUnionFast(types: readonly TSchema[]): TSchema {\n return types.length === 0 ? Never() : types.length === 1 ? types[0]! : Union([...types]);\n}\n\nexport function CollapseToObject(type: TSchema): TObject<Record<string, TSchema>, string, string> {\n if (getKind(type) === 'Object') {\n return type as TObject<Record<string, TSchema>, string, string>;\n }\n if (getKind(type) === 'Intersect') {\n const variants = (type as TSchema & { variants: TSchema[] }).variants.filter((variant) => getKind(variant) === 'Object') as TObject[];\n return variants.length > 0\n ? EvaluateObject(Intersect(variants)) as TObject<Record<string, TSchema>, string, string>\n : TypeObject({});\n }\n return TypeObject({});\n}\n\nexport function _Function_(parameters: TSchema[], returnType: TSchema, options: Record<string, unknown> = {}): TSchema {\n return { '~kind': 'Function', parameters, returns: returnType, ...options } as TSchema;\n}\n\nexport function _Object_(properties: Record<string, TSchema>, options: Record<string, unknown> = {}): TObject<Record<string, TSchema>, string, string> {\n const required = RequiredArray(properties);\n const optional = Object.keys(properties).filter((key) => !required.includes(key));\n return TypeObject(properties, {\n ...options,\n ...(required.length > 0 ? { required } : {}),\n ...(optional.length > 0 ? { optional } : {}),\n } as Partial<Omit<TObject<Record<string, TSchema>, string, string>, \"'~kind' | 'properties'\">>);\n}\n\nexport function CallConstruct(target: TSchema, arguments_: TSchema[]): TSchema {\n return { '~kind': 'Call', target, arguments: arguments_ } as TSchema;\n}\n\nexport function KeyOfAction(type: TSchema): TSchema {\n switch (getKind(type)) {\n case 'Any':\n return Union([TypeNumber(), TypeString(), TypeSymbol()]);\n case 'Array':\n return TypeNumber();\n case 'Object': {\n const keys = Object.keys((type as TObject).properties).map((key) => ConvertToIntegerKey(key));\n return EvaluateUnionFast(keys.map((key) => literalSchema(key)));\n }\n case 'Record':\n return (type as TSchema & { key: TSchema }).key;\n case 'Tuple': {\n const variants = (type as TSchema & { items: TSchema[] }).items.map((_, index) => literalSchema(index));\n return EvaluateUnionFast(variants);\n }\n default:\n return Never();\n }\n}\n",
|
|
41
|
+
"import type { TRecord, TSchema } from './schema.js';\nimport { Record as TypeRecord } from './containers.js';\nimport { Ref, Union } from './combinators.js';\nimport { BigInt as TypeBigInt, Integer as TypeInteger, Literal, Number as TypeNumber, String as TypeString, TemplateLiteral as TypeTemplateLiteral } from './primitives.js';\nimport {\n BigIntPattern,\n IntegerKey,\n IntegerPattern,\n NeverPattern,\n NumberKey,\n NumberPattern,\n StringKey,\n StringPattern,\n} from './root-constants.js';\nimport { escapePattern, getKind, getLiteralConst, stripAnchors } from './root-shared.js';\n\nfunction parseTemplateExpression(expression: string): TSchema {\n const trimmed = expression.trim();\n if (trimmed.includes('|')) {\n return Union(trimmed.split('|').map((entry) => parseTemplateExpression(entry)));\n }\n if ((trimmed.startsWith('\"') && trimmed.endsWith('\"')) || (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\"))) {\n return Literal(trimmed.slice(1, -1));\n }\n if (trimmed === 'string') return TypeString();\n if (trimmed === 'number') return TypeNumber();\n if (trimmed === 'integer') return TypeInteger();\n if (trimmed === 'bigint') return TypeBigInt();\n if (trimmed === 'true') return Literal(true);\n if (trimmed === 'false') return Literal(false);\n if (/^-?\\d+$/.test(trimmed)) return Literal(globalThis.Number.parseInt(trimmed, 10));\n if (/^-?\\d+\\.\\d+$/.test(trimmed)) return Literal(globalThis.Number.parseFloat(trimmed));\n return Ref(trimmed);\n}\n\nexport function TemplateLiteralCreate(pattern: string): TSchema {\n return TypeTemplateLiteral([pattern]);\n}\n\nexport function ParseTemplateIntoTypes(template: string): TSchema[] {\n const result: TSchema[] = [];\n let index = 0;\n let current = '';\n\n while (index < template.length) {\n const character = template[index]!;\n if (character === '$' && template[index + 1] === '{') {\n if (current.length > 0) {\n result.push(Literal(current));\n current = '';\n }\n let depth = 1;\n let cursor = index + 2;\n while (cursor < template.length && depth > 0) {\n const inner = template[cursor]!;\n if (inner === '{') depth += 1;\n if (inner === '}') depth -= 1;\n cursor += 1;\n }\n result.push(parseTemplateExpression(template.slice(index + 2, cursor - 1)));\n index = cursor;\n continue;\n }\n current += character;\n index += 1;\n }\n\n if (current.length > 0 || result.length === 0) {\n result.push(Literal(current));\n }\n return result;\n}\n\nfunction encodeUnionPattern(variants: TSchema[]): string {\n return `(${variants.map((variant) => encodeTypePattern(variant)).join('|')})`;\n}\n\nfunction encodeTypePattern(type: TSchema): string {\n const literal = getLiteralConst(type);\n if (literal !== undefined) {\n return escapePattern(globalThis.String(literal));\n }\n switch (getKind(type)) {\n case 'String':\n return StringPattern;\n case 'Number':\n return NumberPattern;\n case 'Integer':\n return IntegerPattern;\n case 'BigInt':\n return BigIntPattern;\n case 'Boolean':\n return '(false|true)';\n case 'Enum':\n return encodeUnionPattern((type as TSchema & { values: string[] }).values.map((value) => Literal(value)));\n case 'Union':\n return encodeUnionPattern((type as TSchema & { variants: TSchema[] }).variants);\n case 'TemplateLiteral': {\n const patterns = (type as TSchema & { patterns: string[] }).patterns.map((pattern) => stripAnchors(pattern));\n return patterns.length === 1 ? patterns[0]! : `(${patterns.join('|')})`;\n }\n default:\n return NeverPattern;\n }\n}\n\nexport function TemplateLiteralEncode(types: TSchema[]): TSchema {\n return TemplateLiteralCreate(`^${types.map((type) => encodeTypePattern(type)).join('')}$`);\n}\n\nfunction decodeLiteralPattern(pattern: string): string | undefined {\n if (pattern.length === 0 || /[()[\\]{}+*?]/.test(pattern) || pattern.includes('|')) {\n return undefined;\n }\n return pattern.replace(/\\\\(.)/g, '$1');\n}\n\nfunction decodeAlternationPattern(pattern: string): string[] | undefined {\n const match = /^\\(([^()]+)\\)$/.exec(pattern);\n if (!match) {\n return undefined;\n }\n const parts = match[1]!.split('|').map((entry) => decodeLiteralPattern(entry));\n return parts.every((entry) => entry !== undefined) ? (parts as string[]) : undefined;\n}\n\nexport function TemplateLiteralDecodeUnsafe(pattern: string): TSchema {\n const inner = stripAnchors(pattern);\n if (inner === StringPattern) return TypeString();\n if (inner === NumberPattern) return TypeNumber();\n if (inner === IntegerPattern) return TypeInteger();\n if (inner === BigIntPattern) return TypeBigInt();\n if (inner === '(false|true)') return Union([Literal('false'), Literal('true')]);\n\n const alternates = decodeAlternationPattern(inner);\n if (alternates) {\n return Union(alternates.map((value) => Literal(value)));\n }\n\n const literal = decodeLiteralPattern(inner);\n if (literal !== undefined) {\n return Literal(literal);\n }\n\n return TemplateLiteralCreate(pattern);\n}\n\nexport function TemplateLiteralDecode(pattern: string): TSchema {\n const decoded = TemplateLiteralDecodeUnsafe(pattern);\n return getKind(decoded) === 'TemplateLiteral' ? TypeString() : decoded;\n}\n\nexport function ParsePatternIntoTypes(pattern: string): TSchema[] {\n const decoded = TemplateLiteralDecodeUnsafe(pattern);\n return getKind(decoded) === 'Union'\n ? (decoded as TSchema & { variants: TSchema[] }).variants\n : [decoded];\n}\n\nexport function TemplateLiteralFromTypes(types: TSchema[]): TSchema {\n return TemplateLiteralEncode(types);\n}\n\nexport function TemplateLiteralFromString(template: string): TSchema {\n return TemplateLiteralFromTypes(ParseTemplateIntoTypes(template));\n}\n\nexport function RecordConstruct(key: TSchema, value: TSchema, options: Record<string, unknown> = {}): TRecord<TSchema, TSchema> {\n return TypeRecord(key, value, options as Partial<Omit<TRecord<TSchema, TSchema>, \"'~kind' | 'key' | 'value'\">>);\n}\n\nexport function RecordFromPattern(keyPattern: string, value: TSchema): TRecord<TSchema, TSchema> {\n return RecordConstruct(TemplateLiteralDecode(keyPattern), value);\n}\n\nexport function RecordPattern(type: TRecord<TSchema, TSchema>): string {\n const key = type.key;\n const literal = getLiteralConst(key);\n if (literal !== undefined) {\n return `^${escapePattern(globalThis.String(literal))}$`;\n }\n switch (getKind(key)) {\n case 'String':\n return StringKey;\n case 'Number':\n return NumberKey;\n case 'Integer':\n return IntegerKey;\n case 'Enum':\n return `^(${(key as TSchema & { values: string[] }).values.map((value) => escapePattern(value)).join('|')})$`;\n case 'TemplateLiteral': {\n const patterns = (key as TSchema & { patterns: string[] }).patterns;\n return patterns.length === 1 ? patterns[0]! : `^(${patterns.map((pattern) => stripAnchors(pattern)).join('|')})$`;\n }\n default:\n return StringKey;\n }\n}\n\nexport function RecordKey(type: TRecord<TSchema, TSchema>): TSchema {\n return type.key;\n}\n\nexport function RecordValue(type: TRecord<TSchema, TSchema>): TSchema {\n return type.value;\n}\n",
|
|
42
|
+
"import type { TObject, TSchema } from './schema.js';\nimport type { TProperties } from './instantiation.js';\nimport { Cyclic } from './extensions.js';\nimport { Any, Never } from './primitives.js';\nimport { _Function_, _Object_ } from './root-helpers.js';\nimport { RecordKey, RecordValue } from './root-template.js';\nimport type { TRecord } from './schema.js';\nimport { getKind } from './root-shared.js';\n\nfunction getRefName(schema: TSchema): string | undefined {\n const value = schema as TSchema & { name?: string; $ref?: string };\n return typeof value.name === 'string' ? value.name : typeof value.$ref === 'string' ? value.$ref : undefined;\n}\n\nfunction resolve(defs: Record<string, TSchema>, ref: string): TSchema {\n const target = defs[ref];\n if (target === undefined) {\n return Never();\n }\n const nextRef = getKind(target) === 'Ref' ? getRefName(target) : undefined;\n return typeof nextRef === 'string' ? resolve(defs, nextRef) : target;\n}\n\nexport function CyclicTarget(defs: Record<string, TSchema>, ref: string): TSchema {\n return resolve(defs, ref);\n}\n\nfunction fromProperties<T>(properties: Record<string, TSchema>, mapper: (type: TSchema, result: T) => T, seed: T): T {\n return Object.values(properties).reduce((result, type) => mapper(type, result), seed);\n}\n\nfunction dependencyWalk(context: TProperties, type: TSchema, result: string[]): string[] {\n const ref = getKind(type) === 'Ref' ? getRefName(type) : undefined;\n if (typeof ref === 'string') {\n if (result.includes(ref) || context[ref] === undefined) {\n return result;\n }\n return dependencyWalk(context, context[ref], [...result, ref]);\n }\n switch (getKind(type)) {\n case 'Array':\n case 'Promise':\n case 'Iterator':\n case 'AsyncIterator':\n case 'Rest':\n return dependencyWalk(context, (type as TSchema & { item: TSchema }).item, result);\n case 'Function':\n case 'Constructor': {\n const schema = type as TSchema & { parameters: TSchema[]; returns: TSchema };\n return schema.parameters.reduce((next, entry) => dependencyWalk(context, entry, next), dependencyWalk(context, schema.returns, result));\n }\n case 'Object':\n return fromProperties((type as TObject).properties, (entry, next) => dependencyWalk(context, entry, next), result);\n case 'Union':\n case 'Intersect':\n return (type as TSchema & { variants: TSchema[] }).variants.reduce((next, entry) => dependencyWalk(context, entry, next), result);\n case 'Tuple':\n return (type as TSchema & { items: TSchema[] }).items.reduce((next, entry) => dependencyWalk(context, entry, next), result);\n case 'Record':\n return dependencyWalk(context, RecordValue(type as TRecord), result);\n default:\n return result;\n }\n}\n\nexport function CyclicDependencies(context: TProperties, key: string, type: TSchema): string[] {\n return dependencyWalk(context, type, [key]);\n}\n\nfunction checkWalk(stack: string[], context: TProperties, type: TSchema): boolean {\n const ref = getKind(type) === 'Ref' ? getRefName(type) : undefined;\n if (typeof ref === 'string') {\n return stack.includes(ref)\n ? true\n : context[ref] !== undefined && checkWalk([...stack, ref], context, context[ref]);\n }\n switch (getKind(type)) {\n case 'Array':\n case 'Promise':\n case 'Iterator':\n case 'AsyncIterator':\n case 'Rest':\n return checkWalk(stack, context, (type as TSchema & { item: TSchema }).item);\n case 'Function':\n case 'Constructor': {\n const schema = type as TSchema & { parameters: TSchema[]; returns: TSchema };\n return schema.parameters.some((entry) => checkWalk(stack, context, entry)) || checkWalk(stack, context, schema.returns);\n }\n case 'Object':\n return Object.values((type as TObject).properties).some((entry) => checkWalk(stack, context, entry));\n case 'Union':\n case 'Intersect':\n return (type as TSchema & { variants: TSchema[] }).variants.some((entry) => checkWalk(stack, context, entry));\n case 'Tuple':\n return (type as TSchema & { items: TSchema[] }).items.some((entry) => checkWalk(stack, context, entry));\n case 'Record':\n return checkWalk(stack, context, RecordValue(type as TRecord));\n default:\n return false;\n }\n}\n\nexport function CyclicCheck(stack: string[], context: TProperties, type: TSchema): boolean {\n return checkWalk(stack, context, type);\n}\n\nexport function CyclicCandidates(context: TProperties): string[] {\n return Object.keys(context).filter((key) => CyclicCheck([key], context, context[key]!));\n}\n\nfunction extendsWalk(type: TSchema): TSchema {\n const ref = getKind(type) === 'Ref' ? getRefName(type) : undefined;\n if (typeof ref === 'string') {\n return Any();\n }\n switch (getKind(type)) {\n case 'Array':\n return { ...type, items: extendsWalk((type as TSchema & { items: TSchema }).items) } as TSchema;\n case 'Promise':\n case 'Iterator':\n case 'AsyncIterator':\n case 'Rest':\n return { ...type, item: extendsWalk((type as TSchema & { item: TSchema }).item) } as TSchema;\n case 'Function':\n case 'Constructor': {\n const schema = type as TSchema & { parameters: TSchema[]; returns: TSchema };\n return _Function_(schema.parameters.map((entry) => extendsWalk(entry)), extendsWalk(schema.returns));\n }\n case 'Object': {\n const properties = Object.fromEntries(\n Object.entries((type as TObject).properties).map(([key, value]) => [key, extendsWalk(value)]),\n );\n return _Object_(properties);\n }\n case 'Union':\n case 'Intersect':\n return { ...type, variants: (type as TSchema & { variants: TSchema[] }).variants.map((entry) => extendsWalk(entry)) } as TSchema;\n case 'Tuple':\n return { ...type, items: (type as TSchema & { items: TSchema[] }).items.map((entry) => extendsWalk(entry)) } as TSchema;\n case 'Record':\n return { ...type, key: RecordKey(type as TRecord), value: extendsWalk(RecordValue(type as TRecord)) } as TSchema;\n default:\n return type;\n }\n}\n\nexport function CyclicExtends(type: TSchema & { $defs: Record<string, TSchema>; $ref: string }): TSchema {\n const target = type.$defs[type.$ref];\n return target === undefined ? Any() : extendsWalk(target);\n}\n\nexport function InstantiateCyclic(context: TProperties, ref: string, type: TSchema): TSchema {\n const dependencies = CyclicDependencies(context, ref, type);\n const definitions = Object.fromEntries(\n Object.entries(context).filter(([key]) => dependencies.includes(key)),\n ) as Record<string, TSchema>;\n return Cyclic(definitions, ref);\n}\n",
|
|
43
|
+
"import type { TObject, TPromise, TSchema } from './schema.js';\nimport type { TProperties, TState } from './instantiation.js';\nimport { Interface, NonNullable, Options, ReadonlyType } from './actions.js';\nimport { Null, Undefined, Never } from './primitives.js';\nimport { Awaited, ConstructorParameters, InstanceType, Parameters, ReturnType } from './combinator-functions.js';\nimport { Exclude, Extract, Index, Omit, Partial, Pick, Required } from './combinator-objects.js';\nimport { Tuple } from './containers.js';\nimport { Union } from './combinator-core.js';\nimport { Extends, ExtendsResult } from './extends.js';\nimport { Instantiate } from './instantiation.js';\nimport {\n AwaitedDeferred,\n CapitalizeDeferred,\n ConditionalDeferred,\n ConstructorParametersDeferred,\n EvaluateDeferred,\n ExcludeDeferred,\n ExtractDeferred,\n IndexDeferred,\n InstanceTypeDeferred,\n InterfaceDeferred,\n KeyOfDeferred,\n LowercaseDeferred,\n MappedDeferred,\n ModuleDeferred,\n NonNullableDeferred,\n OmitDeferred,\n OptionsDeferred,\n ParametersDeferred,\n PartialDeferred,\n PickDeferred,\n ReadonlyTypeDeferred,\n RecordDeferred,\n RequiredDeferred,\n ReturnTypeDeferred,\n TemplateLiteralDeferred,\n UncapitalizeDeferred,\n UppercaseDeferred,\n} from './root-deferred.js';\nimport { KeyOfAction, EvaluateType } from './root-helpers.js';\nimport { TemplateLiteralFromTypes } from './root-template.js';\nimport { mergeOptions, getKind, getLiteralConst } from './root-shared.js';\nimport { deriveObjectSchema } from '../shared/utils.js';\n\nfunction extractLiteralKeys(indexer: TSchema): string[] {\n if (getKind(indexer) === 'Literal') {\n const literal = getLiteralConst(indexer);\n return literal === undefined ? [] : [String(literal)];\n }\n if (getKind(indexer) === 'Union') {\n return (indexer as TSchema & { variants: TSchema[] }).variants.flatMap((variant) => extractLiteralKeys(variant));\n }\n return [];\n}\n\nfunction instantiateType(context: TProperties, type: TSchema): TSchema {\n return Instantiate(context, type);\n}\n\nfunction instantiateObject(context: TProperties, type: TSchema): TObject<Record<string, TSchema>, string, string> | undefined {\n const resolved = instantiateType(context, type);\n return getKind(resolved) === 'Object'\n ? resolved as TObject<Record<string, TSchema>, string, string>\n : undefined;\n}\n\nfunction filterUnionVariants(context: TProperties, left: TSchema, right: TSchema, includeMatches: boolean): TSchema {\n const resolvedLeft = instantiateType(context, left);\n const resolvedRight = instantiateType(context, right);\n if (getKind(resolvedLeft) === 'Union') {\n const variants = (resolvedLeft as TSchema & { variants: TSchema[] }).variants.filter((variant) => {\n const matches = ExtendsResult.IsExtendsTrueLike(Extends(context, variant, resolvedRight));\n return includeMatches ? matches : !matches;\n });\n return variants.length === 0 ? Never() : variants.length === 1 ? variants[0]! : Union(variants);\n }\n const matches = ExtendsResult.IsExtendsTrueLike(Extends(context, resolvedLeft, resolvedRight));\n return includeMatches ? (matches ? resolvedLeft : Never()) : (matches ? Never() : resolvedLeft);\n}\n\nexport function AwaitedInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const resolved = instantiateType(context, type);\n const unwrapped = getKind(resolved) === 'Promise'\n ? AwaitedInstantiate(context, _state, (resolved as TPromise).item, options)\n : resolved;\n return mergeOptions(unwrapped, options);\n}\n\nexport function CapitalizeInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(type) === 'Ref' && getKind(instantiateType(context, type)) === 'Ref'\n ? CapitalizeDeferred(type, options)\n : mergeOptions({ '~kind': 'Capitalize', item: instantiateType(context, type) } as TSchema, options);\n}\n\nexport function ConditionalInstantiate(context: TProperties, _state: TState, left: TSchema, right: TSchema, trueType: TSchema, falseType: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(left) === 'Ref' && context[(left as TSchema & { name?: string }).name ?? ''] === undefined\n ? ConditionalDeferred(left, right, trueType, falseType, options)\n : mergeOptions(instantiateType(context, ExtendsResult.IsExtendsTrueLike(Extends(context, instantiateType(context, left), instantiateType(context, right))) ? trueType : falseType), options);\n}\n\nexport function ConstructorParametersInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const resolved = instantiateType(context, type);\n return getKind(resolved) === 'Constructor'\n ? mergeOptions(Tuple((resolved as TSchema & { parameters: TSchema[] }).parameters), options)\n : ConstructorParametersDeferred(type, options);\n}\n\nexport function EvaluateInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return mergeOptions(EvaluateType(instantiateType(context, type)), options);\n}\n\nexport function ExcludeInstantiate(context: TProperties, _state: TState, left: TSchema, right: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(left) === 'Ref' && context[(left as TSchema & { name?: string }).name ?? ''] === undefined\n ? ExcludeDeferred(left, right, options)\n : mergeOptions(filterUnionVariants(context, left, right, false), options);\n}\n\nexport function ExtractInstantiate(context: TProperties, _state: TState, left: TSchema, right: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(left) === 'Ref' && context[(left as TSchema & { name?: string }).name ?? ''] === undefined\n ? ExtractDeferred(left, right, options)\n : mergeOptions(filterUnionVariants(context, left, right, true), options);\n}\n\nexport function IndexInstantiate(context: TProperties, _state: TState, type: TSchema, indexer: TSchema, options: Record<string, unknown> = {}): TSchema {\n const object = instantiateObject(context, type);\n if (!object) {\n return IndexDeferred(type, indexer, options);\n }\n const keys = extractLiteralKeys(instantiateType(context, indexer));\n const variants = keys.flatMap((key) => object.properties[key] ? [instantiateType(context, object.properties[key]!)] : []);\n return mergeOptions(variants.length === 0 ? Index(object as TObject, instantiateType(context, indexer)) : variants.length === 1 ? variants[0]! : Union(variants), options);\n}\n\nexport function InstanceTypeImmediate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const resolved = instantiateType(context, type);\n return getKind(resolved) === 'Constructor'\n ? mergeOptions((resolved as TSchema & { returns: TSchema }).returns, options)\n : mergeOptions(Never(), options);\n}\n\nexport function InstanceTypeInstantiate(context: TProperties, state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const resolved = instantiateType(context, type);\n return getKind(resolved) === 'Constructor'\n ? InstanceTypeImmediate(context, state, resolved, options)\n : InstanceTypeDeferred(type, options);\n}\n\nexport function InterfaceInstantiate(context: TProperties, _state: TState, heritage: TObject[], properties: Record<string, TSchema>, options: Record<string, unknown> = {}): TSchema {\n const nextHeritage = heritage.map((entry) => instantiateType(context, entry) as TObject);\n const nextProperties = Object.fromEntries(Object.entries(properties).map(([key, value]) => [key, instantiateType(context, value)]));\n return mergeOptions(Interface(nextHeritage, nextProperties, options), options);\n}\n\nexport function KeyOfImmediate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return mergeOptions(KeyOfAction(instantiateType(context, type)), options);\n}\n\nexport function KeyOfInstantiate(context: TProperties, state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(type) === 'Ref' && context[(type as TSchema & { name?: string }).name ?? ''] === undefined\n ? KeyOfDeferred(type, options)\n : KeyOfImmediate(context, state, type, options);\n}\n\nexport function LowercaseInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(type) === 'Ref' && context[(type as TSchema & { name?: string }).name ?? ''] === undefined\n ? LowercaseDeferred(type, options)\n : mergeOptions({ '~kind': 'Lowercase', item: instantiateType(context, type) } as TSchema, options);\n}\n\nexport function MappedInstantiate(context: TProperties, _state: TState, identifier: TSchema, key: TSchema, _asType: TSchema, property: TSchema, options: Record<string, unknown> = {}): TSchema {\n const keys = extractLiteralKeys(instantiateType(context, key));\n if (keys.length === 0) {\n return MappedDeferred(identifier, key, _asType, property, options);\n }\n const name = getKind(identifier) === 'Identifier' ? ((identifier as TSchema & { name: string }).name) : 'K';\n const properties = Object.fromEntries(\n keys.map((keyName) => [keyName, instantiateType({ ...context, [name]: { '~kind': 'Literal', const: keyName } as TSchema }, property)]),\n );\n return mergeOptions({ '~kind': 'Object', properties } as TSchema, options);\n}\n\nexport function ModuleInstantiate(context: TProperties, _state: TState, definitions: Record<string, TSchema>, options: Record<string, unknown> = {}): TSchema {\n const instantiated = Object.fromEntries(Object.entries(definitions).map(([key, value]) => [key, instantiateType(context, value)]));\n return mergeOptions({ '~kind': 'Module', definitions: instantiated } as TSchema, options);\n}\n\nexport function NonNullableInstantiate(context: TProperties, state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const resolved = instantiateType(context, type);\n return getKind(type) === 'Ref' && context[(type as TSchema & { name?: string }).name ?? ''] === undefined\n ? NonNullableDeferred(type, options)\n : mergeOptions(ExcludeInstantiate(context, state, resolved, Union([Null(), Undefined()]), options), options);\n}\n\nexport function OmitInstantiate(context: TProperties, _state: TState, type: TSchema, indexer: TSchema, options: Record<string, unknown> = {}): TSchema {\n const object = instantiateObject(context, type);\n if (!object) {\n return OmitDeferred(type, indexer, options);\n }\n const keys = extractLiteralKeys(instantiateType(context, indexer));\n return mergeOptions(deriveObjectSchema(object as TObject, { omitKeys: keys }), options);\n}\n\nexport function OptionsInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown>): TSchema {\n return mergeOptions(Options(instantiateType(context, type), options), options);\n}\n\nexport function ParametersInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const resolved = instantiateType(context, type);\n return getKind(resolved) === 'Function'\n ? mergeOptions(Tuple((resolved as TSchema & { parameters: TSchema[] }).parameters), options)\n : ParametersDeferred(type, options);\n}\n\nexport function PartialInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const object = instantiateObject(context, type);\n return object ? mergeOptions(deriveObjectSchema(object as TObject, { requiredMode: 'none' }), options) : PartialDeferred(type, options);\n}\n\nexport function PickInstantiate(context: TProperties, _state: TState, type: TSchema, indexer: TSchema, options: Record<string, unknown> = {}): TSchema {\n const object = instantiateObject(context, type);\n if (!object) {\n return PickDeferred(type, indexer, options);\n }\n const keys = extractLiteralKeys(instantiateType(context, indexer));\n return mergeOptions(deriveObjectSchema(object as TObject, { pickKeys: keys }), options);\n}\n\nexport function ReadonlyTypeInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(type) === 'Ref' && context[(type as TSchema & { name?: string }).name ?? ''] === undefined\n ? ReadonlyTypeDeferred(type, options)\n : mergeOptions(ReadonlyType(instantiateType(context, type), options), options);\n}\n\nexport function RecordInstantiate(context: TProperties, _state: TState, key: TSchema, value: TSchema, options: Record<string, unknown> = {}): TSchema {\n return mergeOptions({ '~kind': 'Record', key: instantiateType(context, key), value: instantiateType(context, value) } as TSchema, options);\n}\n\nexport function RefInstantiate(context: TProperties, _state: TState, type: TSchema, ref: string): TSchema {\n return context[ref] ?? type;\n}\n\nexport function RequiredInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const object = instantiateObject(context, type);\n return object ? mergeOptions(deriveObjectSchema(object as TObject, { requiredMode: 'all' }), options) : RequiredDeferred(type, options);\n}\n\nexport function ReturnTypeInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n const resolved = instantiateType(context, type);\n return getKind(resolved) === 'Function'\n ? mergeOptions((resolved as TSchema & { returns: TSchema }).returns, options)\n : ReturnTypeDeferred(type, options);\n}\n\nexport function TemplateLiteralInstantiate(context: TProperties, _state: TState, types: TSchema[], options: Record<string, unknown> = {}): TSchema {\n return mergeOptions(TemplateLiteralFromTypes(types.map((type) => instantiateType(context, type))), options);\n}\n\nexport function UncapitalizeInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(type) === 'Ref' && context[(type as TSchema & { name?: string }).name ?? ''] === undefined\n ? UncapitalizeDeferred(type, options)\n : mergeOptions({ '~kind': 'Uncapitalize', item: instantiateType(context, type) } as TSchema, options);\n}\n\nexport function UppercaseInstantiate(context: TProperties, _state: TState, type: TSchema, options: Record<string, unknown> = {}): TSchema {\n return getKind(type) === 'Ref' && context[(type as TSchema & { name?: string }).name ?? ''] === undefined\n ? UppercaseDeferred(type, options)\n : mergeOptions({ '~kind': 'Uppercase', item: instantiateType(context, type) } as TSchema, options);\n}\n",
|
|
44
|
+
"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",
|
|
45
|
+
"import type { TString, TUint8Array } from './schema.js';\nimport type { TCodec, TRefine } from './extensions.js';\nimport { Codec, Refine } from './extensions.js';\nimport { String } from './primitives.js';\nimport {\n decodeUint8ArrayBase64,\n encodeUint8ArrayBase64,\n isUint8ArrayBase64String,\n} from '../shared/bytes.js';\n\nexport type TUint8ArrayCodec = TRefine<TCodec<TString, Uint8Array>> & Pick<TUint8Array, 'minByteLength' | 'maxByteLength' | 'constBytes'> & {\n '~uint8arrayCodec': true;\n constBase64?: string;\n};\n\nexport function Uint8ArrayCodec(\n options: Partial<Omit<TUint8Array, \"'~kind'\">> = {},\n): TUint8ArrayCodec {\n const constBase64 = options.constBytes === undefined ? undefined : encodeUint8ArrayBase64(options.constBytes);\n const codec = Codec(String({\n format: 'base64',\n ...(options.title === undefined ? {} : { title: options.title }),\n ...(options.description === undefined ? {} : { description: options.description }),\n }))\n .Decode((input) => decodeUint8ArrayBase64(input))\n .Encode((input) => encodeUint8ArrayBase64(input));\n\n return {\n ...Refine(\n codec,\n (input) => isUint8ArrayBase64String(\n input,\n options.minByteLength,\n options.maxByteLength,\n options.constBytes,\n constBase64,\n ),\n 'Expected a base64-encoded Uint8Array value',\n ),\n '~uint8arrayCodec': true,\n ...(options.minByteLength === undefined ? {} : { minByteLength: options.minByteLength }),\n ...(options.maxByteLength === undefined ? {} : { maxByteLength: options.maxByteLength }),\n ...(options.constBytes === undefined ? {} : { constBytes: options.constBytes }),\n ...(constBase64 === undefined ? {} : { constBase64 }),\n };\n}\n",
|
|
46
|
+
"import type { TString } from './schema.js';\nimport type { TCodec } from './extensions.js';\nimport { Codec } from './extensions.js';\nimport { String } from './primitives.js';\n\nconst bigintPattern = '^-?(0|[1-9][0-9]*)$';\n\nexport type TBigIntCodec = TCodec<TString, bigint>;\nexport type TDateCodec = TCodec<TString, Date>;\nexport type TURLCodec = TCodec<TString, URL>;\n\nexport function BigIntCodec(): TBigIntCodec {\n return Codec(String({ pattern: bigintPattern }))\n .Decode((input) => globalThis.BigInt(input))\n .Encode((input) => input.toString());\n}\n\nexport function DateCodec(): TDateCodec {\n return Codec(String({ format: 'datetime' }))\n .Decode((input) => new globalThis.Date(input))\n .Encode((input) => input.toISOString());\n}\n\nexport function URLCodec(): TURLCodec {\n return Codec(String({ format: 'uri' }))\n .Decode((input) => new URL(input))\n .Encode((input) => input.toString());\n}\n",
|
|
47
|
+
"import type { TSchema } from '../type/schema.js';\nimport * as T from '../type/index.js';\n\nexport type ScriptDefinitions = Record<string, TSchema>;\n\nexport interface ParseResult {\n schema: TSchema;\n rest: string;\n}\n\nexport type ScriptParser = (input: string, defs: ScriptDefinitions) => TSchema;\n\nexport function parseIdentifier(input: string): string | null {\n const match = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(input);\n return match ? match[0] : null;\n}\n\nexport function resolveType(name: string, defs: ScriptDefinitions): TSchema {\n const definition = defs[name];\n switch (name) {\n case 'string': return T.String();\n case 'number': return T.Number();\n case 'integer': return T.Integer();\n case 'boolean': return T.Boolean();\n case 'null': return T.Null();\n case 'undefined': return T.Undefined();\n case 'void': return T.Void();\n case 'unknown': return T.Unknown();\n case 'any': return T.Any();\n case 'never': return T.Never();\n case 'bigint': return T.BigInt();\n case 'symbol': return T.Symbol();\n case 'Date': return T.Date();\n case 'Uint8Array': return T.Uint8Array();\n default:\n return definition ?? T.Ref(name);\n }\n}\n\nexport function findMatchingParen(input: string): string {\n return findMatching(input, '(', ')');\n}\n\nexport function findMatchingBrace(input: string): string {\n return findMatching(input, '{', '}');\n}\n\nexport function findMatchingBracket(input: string): string {\n return findMatching(input, '[', ']');\n}\n\nexport function findMatchingAngle(input: string): string {\n return findMatching(input, '<', '>');\n}\n\nfunction findMatching(input: string, open: string, close: string): string {\n let depth = 0;\n let index = 0;\n while (index < input.length) {\n const character = input[index];\n if (character === open) depth += 1;\n if (character === close) {\n depth -= 1;\n if (depth === 0) {\n return input.slice(1, index);\n }\n }\n index += 1;\n }\n return input.slice(1);\n}\n\nexport function splitTopLevel(input: string, delimiter: string): string[] {\n const result: string[] = [];\n let depth = 0;\n let current = '';\n\n for (const character of input) {\n if (character === '(' || character === '{' || character === '[' || character === '<') depth += 1;\n if (character === ')' || character === '}' || character === ']' || character === '>') depth -= 1;\n\n if (character === delimiter && depth === 0) {\n result.push(current);\n current = '';\n continue;\n }\n current += character;\n }\n\n if (current.trim().length > 0) {\n result.push(current);\n }\n return result;\n}\n",
|
|
48
|
+
"import type { TObject } from '../type/index.js';\nimport type { TSchema } from '../type/schema.js';\nimport * as T from '../type/index.js';\nimport {\n type ParseResult,\n type ScriptDefinitions,\n type ScriptParser,\n findMatchingAngle,\n resolveType,\n splitTopLevel,\n} from './shared.js';\n\nfunction isObjectSchema(schema: TSchema): schema is TObject {\n return schema['~kind'] === 'Object';\n}\n\nfunction getLiteralString(schema: TSchema): string {\n if (schema['~kind'] !== 'Literal') {\n return '';\n }\n const literal = schema as TSchema & { const?: string };\n return typeof literal.const === 'string' ? literal.const : '';\n}\n\nexport function parseGeneric(\n name: string,\n rest: string,\n defs: ScriptDefinitions,\n parseScript: ScriptParser,\n): ParseResult {\n const argumentSource = findMatchingAngle(rest);\n const arguments_ = splitTopLevel(argumentSource, ',').map((entry) => parseScript(entry.trim(), defs));\n const afterArguments = rest.slice(argumentSource.length + 2).trim();\n\n switch (name) {\n case 'Array':\n return { schema: T.Array(arguments_[0] ?? T.Unknown()), rest: afterArguments };\n case 'Record':\n return {\n schema: T.Record(arguments_[0] ?? T.String(), arguments_[1] ?? T.Unknown()),\n rest: afterArguments,\n };\n case 'Partial': {\n const object = arguments_[0];\n return {\n schema: object !== undefined && isObjectSchema(object) ? T.Partial(object) : (object ?? T.Unknown()),\n rest: afterArguments,\n };\n }\n case 'Required': {\n const object = arguments_[0];\n return {\n schema: object !== undefined && isObjectSchema(object) ? T.Required(object) : (object ?? T.Unknown()),\n rest: afterArguments,\n };\n }\n case 'Pick': {\n const object = arguments_[0];\n const keys = arguments_.slice(1).map(getLiteralString);\n return {\n schema: object !== undefined && isObjectSchema(object) ? T.Pick(object, keys) : (object ?? T.Unknown()),\n rest: afterArguments,\n };\n }\n case 'Omit': {\n const object = arguments_[0];\n const keys = arguments_.slice(1).map(getLiteralString);\n return {\n schema: object !== undefined && isObjectSchema(object) ? T.Omit(object, keys) : (object ?? T.Unknown()),\n rest: afterArguments,\n };\n }\n case 'Promise':\n return { schema: T.Promise(arguments_[0] ?? T.Unknown()), rest: afterArguments };\n case 'Iterator':\n return { schema: T.Iterator(arguments_[0] ?? T.Unknown()), rest: afterArguments };\n case 'AsyncIterator':\n return { schema: T.AsyncIterator(arguments_[0] ?? T.Unknown()), rest: afterArguments };\n case 'Exclude':\n return { schema: T.Exclude(arguments_[0] ?? T.Unknown(), arguments_[1] ?? T.Unknown()), rest: afterArguments };\n case 'Extract':\n return { schema: T.Extract(arguments_[0] ?? T.Unknown(), arguments_[1] ?? T.Unknown()), rest: afterArguments };\n default:\n return { schema: resolveType(name, defs), rest: afterArguments };\n }\n}\n",
|
|
49
|
+
"import type { TObject } from '../type/index.js';\nimport type { TSchema } from '../type/schema.js';\nimport * as T from '../type/index.js';\nimport {\n type ParseResult,\n type ScriptDefinitions,\n type ScriptParser,\n findMatchingBrace,\n findMatchingBracket,\n splitTopLevel,\n} from './shared.js';\n\nexport function parseObjectLiteral(input: string, defs: ScriptDefinitions, parseScript: ScriptParser): ParseResult {\n const body = findMatchingBrace(input);\n const entries = splitTopLevel(body, ';').filter((entry) => entry.trim().length > 0);\n const properties: Record<string, TSchema> = {};\n const required: string[] = [];\n const optional: string[] = [];\n\n for (const entry of entries) {\n const trimmed = entry.trim();\n const optionalMatch = /^(\\w+)\\?\\s*:\\s*(.+)$/.exec(trimmed);\n if (optionalMatch) {\n const key = optionalMatch[1]!;\n const typeText = optionalMatch[2]!.trim();\n properties[key] = parseScript(typeText, defs);\n optional.push(key);\n continue;\n }\n\n const requiredMatch = /^(\\w+)\\s*:\\s*(.+)$/.exec(trimmed);\n if (!requiredMatch) {\n continue;\n }\n const key = requiredMatch[1]!;\n const typeText = requiredMatch[2]!.trim();\n properties[key] = parseScript(typeText, defs);\n required.push(key);\n }\n\n const objectOptions = {\n ...(required.length > 0 ? { required } : {}),\n ...(optional.length > 0 ? { optional } : {}),\n } as Partial<Omit<TObject<Record<string, TSchema>, string, string>, \"'~kind' | 'properties'\">>;\n\n return {\n schema: T.Object(properties, objectOptions),\n rest: input.slice(body.length + 2).trim(),\n };\n}\n\nexport function parseTupleLiteral(input: string, defs: ScriptDefinitions, parseScript: ScriptParser): ParseResult {\n const body = findMatchingBracket(input);\n const elements = splitTopLevel(body, ',').filter((entry) => entry.trim().length > 0);\n const items = elements.map((entry) => parseScript(entry.trim(), defs));\n return {\n schema: T.Tuple(items),\n rest: input.slice(body.length + 2).trim(),\n };\n}\n\nexport function parseStringLiteral(input: string): ParseResult {\n const quote = input.charAt(0);\n let index = 1;\n while (index < input.length && input[index] !== quote) {\n if (input[index] === '\\\\') {\n index += 1;\n }\n index += 1;\n }\n return {\n schema: T.Literal(input.slice(1, index)),\n rest: input.slice(index + 1).trim(),\n };\n}\n",
|
|
50
|
+
"import type { TSchema } from '../type/schema.js';\nimport * as T from '../type/index.js';\nimport { parseGeneric } from './generic.js';\nimport { parseObjectLiteral, parseStringLiteral, parseTupleLiteral } from './literals.js';\nimport {\n type ParseResult,\n type ScriptDefinitions,\n findMatchingParen,\n parseIdentifier,\n resolveType,\n} from './shared.js';\n\n/** Parse a TypeScript-like type expression string into a baobox TSchema */\nexport function Script(input: string): TSchema {\n return parseScript(input.trim(), {});\n}\n\n/** Parse with existing definitions for resolution */\nexport function ScriptWithDefinitions(input: string, definitions: ScriptDefinitions): TSchema {\n return parseScript(input.trim(), definitions);\n}\n\nfunction parseScript(input: string, defs: ScriptDefinitions): TSchema {\n return parseUnionOrIntersect(input, defs).schema;\n}\n\nfunction parseUnionOrIntersect(input: string, defs: ScriptDefinitions): ParseResult {\n const left = parsePrimary(input, defs);\n let rest = left.rest.trim();\n\n if (rest.startsWith('|')) {\n const variants: TSchema[] = [left.schema];\n while (rest.startsWith('|')) {\n rest = rest.slice(1).trim();\n const next = parsePrimary(rest, defs);\n variants.push(next.schema);\n rest = next.rest.trim();\n }\n return { schema: T.Union(variants), rest };\n }\n\n if (rest.startsWith('&')) {\n const variants: TSchema[] = [left.schema];\n while (rest.startsWith('&')) {\n rest = rest.slice(1).trim();\n const next = parsePrimary(rest, defs);\n variants.push(next.schema);\n rest = next.rest.trim();\n }\n return { schema: T.Intersect(variants), rest };\n }\n\n return left;\n}\n\nfunction parsePrimary(input: string, defs: ScriptDefinitions): ParseResult {\n let result = parseAtom(input, defs);\n let rest = result.rest.trim();\n\n while (rest.startsWith('[]')) {\n result = { schema: T.Array(result.schema), rest: rest.slice(2).trim() };\n rest = result.rest;\n }\n\n return result;\n}\n\nfunction parseAtom(input: string, defs: ScriptDefinitions): ParseResult {\n if (input.startsWith('(')) {\n const inner = findMatchingParen(input);\n return {\n schema: parseScript(inner, defs),\n rest: input.slice(inner.length + 2).trim(),\n };\n }\n\n if (input.startsWith('{')) {\n return parseObjectLiteral(input, defs, parseScript);\n }\n\n if (input.startsWith('[')) {\n return parseTupleLiteral(input, defs, parseScript);\n }\n\n if (input.startsWith('\"') || input.startsWith(\"'\")) {\n return parseStringLiteral(input);\n }\n\n const numericMatch = /^(-?\\d+(?:\\.\\d+)?)/.exec(input);\n if (numericMatch) {\n const literal = numericMatch[1]!;\n return {\n schema: T.Literal(Number.parseFloat(literal)),\n rest: input.slice(literal.length).trim(),\n };\n }\n\n if (input.startsWith('true')) {\n return { schema: T.Literal(true), rest: input.slice(4).trim() };\n }\n if (input.startsWith('false')) {\n return { schema: T.Literal(false), rest: input.slice(5).trim() };\n }\n\n const identifier = parseIdentifier(input);\n if (!identifier) {\n return { schema: T.Unknown(), rest: input };\n }\n\n const rest = input.slice(identifier.length).trim();\n if (rest.startsWith('<')) {\n return parseGeneric(identifier, rest, defs, parseScript);\n }\n\n return { schema: resolveType(identifier, defs), rest };\n}\n"
|
|
51
|
+
],
|
|
52
|
+
"mappings": "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",
|
|
53
|
+
"debugId": "58C613E681CE74CD64756E2164756E21",
|
|
54
|
+
"names": []
|
|
55
|
+
}
|