@earendil-works/pi-schema 0.0.0-stage → 1.5.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.
Files changed (176) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSES/typebox-LICENSE +23 -0
  3. package/README.md +295 -2
  4. package/dist/annotations.d.ts +44 -0
  5. package/dist/annotations.d.ts.map +1 -0
  6. package/dist/annotations.js +193 -0
  7. package/dist/annotations.js.map +1 -0
  8. package/dist/builders.d.ts +114 -0
  9. package/dist/builders.d.ts.map +1 -0
  10. package/dist/builders.js +98 -0
  11. package/dist/builders.js.map +1 -0
  12. package/dist/checks.d.ts +87 -0
  13. package/dist/checks.d.ts.map +1 -0
  14. package/dist/checks.js +447 -0
  15. package/dist/checks.js.map +1 -0
  16. package/dist/coerce.d.ts +53 -0
  17. package/dist/coerce.d.ts.map +1 -0
  18. package/dist/coerce.js +585 -0
  19. package/dist/coerce.js.map +1 -0
  20. package/dist/compiler.d.ts +53 -0
  21. package/dist/compiler.d.ts.map +1 -0
  22. package/dist/compiler.js +532 -0
  23. package/dist/compiler.js.map +1 -0
  24. package/dist/explain.d.ts +29 -0
  25. package/dist/explain.d.ts.map +1 -0
  26. package/dist/explain.js +381 -0
  27. package/dist/explain.js.map +1 -0
  28. package/dist/formats/index.d.ts +7 -0
  29. package/dist/formats/index.d.ts.map +1 -0
  30. package/dist/formats/index.js +51 -0
  31. package/dist/formats/index.js.map +1 -0
  32. package/dist/formats/typebox/date.d.ts +7 -0
  33. package/dist/formats/typebox/date.d.ts.map +1 -0
  34. package/dist/formats/typebox/date.js +47 -0
  35. package/dist/formats/typebox/date.js.map +1 -0
  36. package/dist/formats/typebox/date_time.d.ts +7 -0
  37. package/dist/formats/typebox/date_time.d.ts.map +1 -0
  38. package/dist/formats/typebox/date_time.js +39 -0
  39. package/dist/formats/typebox/date_time.js.map +1 -0
  40. package/dist/formats/typebox/duration.d.ts +6 -0
  41. package/dist/formats/typebox/duration.d.ts.map +1 -0
  42. package/dist/formats/typebox/duration.js +36 -0
  43. package/dist/formats/typebox/duration.js.map +1 -0
  44. package/dist/formats/typebox/email.d.ts +6 -0
  45. package/dist/formats/typebox/email.d.ts.map +1 -0
  46. package/dist/formats/typebox/email.js +36 -0
  47. package/dist/formats/typebox/email.js.map +1 -0
  48. package/dist/formats/typebox/hostname.d.ts +8 -0
  49. package/dist/formats/typebox/hostname.d.ts.map +1 -0
  50. package/dist/formats/typebox/hostname.js +38 -0
  51. package/dist/formats/typebox/hostname.js.map +1 -0
  52. package/dist/formats/typebox/idn_email.d.ts +6 -0
  53. package/dist/formats/typebox/idn_email.d.ts.map +1 -0
  54. package/dist/formats/typebox/idn_email.js +36 -0
  55. package/dist/formats/typebox/idn_email.js.map +1 -0
  56. package/dist/formats/typebox/idn_hostname.d.ts +9 -0
  57. package/dist/formats/typebox/idn_hostname.d.ts.map +1 -0
  58. package/dist/formats/typebox/idn_hostname.js +39 -0
  59. package/dist/formats/typebox/idn_hostname.js.map +1 -0
  60. package/dist/formats/typebox/idna/format/bidi.d.ts +4 -0
  61. package/dist/formats/typebox/idna/format/bidi.d.ts.map +1 -0
  62. package/dist/formats/typebox/idna/format/bidi.js +132 -0
  63. package/dist/formats/typebox/idna/format/bidi.js.map +1 -0
  64. package/dist/formats/typebox/idna/format/puny.d.ts +4 -0
  65. package/dist/formats/typebox/idna/format/puny.d.ts.map +1 -0
  66. package/dist/formats/typebox/idna/format/puny.js +172 -0
  67. package/dist/formats/typebox/idna/format/puny.js.map +1 -0
  68. package/dist/formats/typebox/idna/hostname.d.ts +2 -0
  69. package/dist/formats/typebox/idna/hostname.d.ts.map +1 -0
  70. package/dist/formats/typebox/idna/hostname.js +43 -0
  71. package/dist/formats/typebox/idna/hostname.js.map +1 -0
  72. package/dist/formats/typebox/idna/idn-hostname.d.ts +2 -0
  73. package/dist/formats/typebox/idna/idn-hostname.d.ts.map +1 -0
  74. package/dist/formats/typebox/idna/idn-hostname.js +71 -0
  75. package/dist/formats/typebox/idna/idn-hostname.js.map +1 -0
  76. package/dist/formats/typebox/idna/index.d.ts +3 -0
  77. package/dist/formats/typebox/idna/index.d.ts.map +1 -0
  78. package/dist/formats/typebox/idna/index.js +30 -0
  79. package/dist/formats/typebox/idna/index.js.map +1 -0
  80. package/dist/formats/typebox/idna/label/ascii.d.ts +2 -0
  81. package/dist/formats/typebox/idna/label/ascii.d.ts.map +1 -0
  82. package/dist/formats/typebox/idna/label/ascii.js +37 -0
  83. package/dist/formats/typebox/idna/label/ascii.js.map +1 -0
  84. package/dist/formats/typebox/idna/label/puny.d.ts +2 -0
  85. package/dist/formats/typebox/idna/label/puny.d.ts.map +1 -0
  86. package/dist/formats/typebox/idna/label/puny.js +56 -0
  87. package/dist/formats/typebox/idna/label/puny.js.map +1 -0
  88. package/dist/formats/typebox/idna/label/unicode.d.ts +2 -0
  89. package/dist/formats/typebox/idna/label/unicode.d.ts.map +1 -0
  90. package/dist/formats/typebox/idna/label/unicode.js +134 -0
  91. package/dist/formats/typebox/idna/label/unicode.js.map +1 -0
  92. package/dist/formats/typebox/idna/pattern/pattern.d.ts +31 -0
  93. package/dist/formats/typebox/idna/pattern/pattern.d.ts.map +1 -0
  94. package/dist/formats/typebox/idna/pattern/pattern.js +98 -0
  95. package/dist/formats/typebox/idna/pattern/pattern.js.map +1 -0
  96. package/dist/formats/typebox/ipv4.d.ts +6 -0
  97. package/dist/formats/typebox/ipv4.d.ts.map +1 -0
  98. package/dist/formats/typebox/ipv4.js +36 -0
  99. package/dist/formats/typebox/ipv4.js.map +1 -0
  100. package/dist/formats/typebox/ipv6.d.ts +6 -0
  101. package/dist/formats/typebox/ipv6.d.ts.map +1 -0
  102. package/dist/formats/typebox/ipv6.js +36 -0
  103. package/dist/formats/typebox/ipv6.js.map +1 -0
  104. package/dist/formats/typebox/iri.d.ts +6 -0
  105. package/dist/formats/typebox/iri.d.ts.map +1 -0
  106. package/dist/formats/typebox/iri.js +63 -0
  107. package/dist/formats/typebox/iri.js.map +1 -0
  108. package/dist/formats/typebox/iri_reference.d.ts +6 -0
  109. package/dist/formats/typebox/iri_reference.d.ts.map +1 -0
  110. package/dist/formats/typebox/iri_reference.js +40 -0
  111. package/dist/formats/typebox/iri_reference.js.map +1 -0
  112. package/dist/formats/typebox/json_pointer.d.ts +7 -0
  113. package/dist/formats/typebox/json_pointer.d.ts.map +1 -0
  114. package/dist/formats/typebox/json_pointer.js +37 -0
  115. package/dist/formats/typebox/json_pointer.js.map +1 -0
  116. package/dist/formats/typebox/json_pointer_uri_fragment.d.ts +7 -0
  117. package/dist/formats/typebox/json_pointer_uri_fragment.d.ts.map +1 -0
  118. package/dist/formats/typebox/json_pointer_uri_fragment.js +37 -0
  119. package/dist/formats/typebox/json_pointer_uri_fragment.js.map +1 -0
  120. package/dist/formats/typebox/regex.d.ts +6 -0
  121. package/dist/formats/typebox/regex.d.ts.map +1 -0
  122. package/dist/formats/typebox/regex.js +41 -0
  123. package/dist/formats/typebox/regex.js.map +1 -0
  124. package/dist/formats/typebox/relative_json_pointer.d.ts +7 -0
  125. package/dist/formats/typebox/relative_json_pointer.d.ts.map +1 -0
  126. package/dist/formats/typebox/relative_json_pointer.js +37 -0
  127. package/dist/formats/typebox/relative_json_pointer.js.map +1 -0
  128. package/dist/formats/typebox/time.d.ts +6 -0
  129. package/dist/formats/typebox/time.d.ts.map +1 -0
  130. package/dist/formats/typebox/time.js +60 -0
  131. package/dist/formats/typebox/time.js.map +1 -0
  132. package/dist/formats/typebox/uri.d.ts +6 -0
  133. package/dist/formats/typebox/uri.d.ts.map +1 -0
  134. package/dist/formats/typebox/uri.js +36 -0
  135. package/dist/formats/typebox/uri.js.map +1 -0
  136. package/dist/formats/typebox/uri_reference.d.ts +6 -0
  137. package/dist/formats/typebox/uri_reference.d.ts.map +1 -0
  138. package/dist/formats/typebox/uri_reference.js +36 -0
  139. package/dist/formats/typebox/uri_reference.js.map +1 -0
  140. package/dist/formats/typebox/uri_template.d.ts +6 -0
  141. package/dist/formats/typebox/uri_template.d.ts.map +1 -0
  142. package/dist/formats/typebox/uri_template.js +37 -0
  143. package/dist/formats/typebox/uri_template.js.map +1 -0
  144. package/dist/formats/typebox/url.d.ts +7 -0
  145. package/dist/formats/typebox/url.d.ts.map +1 -0
  146. package/dist/formats/typebox/url.js +36 -0
  147. package/dist/formats/typebox/url.js.map +1 -0
  148. package/dist/formats/typebox/uuid.d.ts +7 -0
  149. package/dist/formats/typebox/uuid.d.ts.map +1 -0
  150. package/dist/formats/typebox/uuid.js +37 -0
  151. package/dist/formats/typebox/uuid.js.map +1 -0
  152. package/dist/index.d.ts +4 -0
  153. package/dist/index.d.ts.map +1 -0
  154. package/dist/index.js +5 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/resolver.d.ts +57 -0
  157. package/dist/resolver.d.ts.map +1 -0
  158. package/dist/resolver.js +202 -0
  159. package/dist/resolver.js.map +1 -0
  160. package/dist/shared.d.ts +9 -0
  161. package/dist/shared.d.ts.map +1 -0
  162. package/dist/shared.js +33 -0
  163. package/dist/shared.js.map +1 -0
  164. package/dist/typebox-static.d.ts +48 -0
  165. package/dist/typebox-static.d.ts.map +1 -0
  166. package/dist/typebox-static.js +5 -0
  167. package/dist/typebox-static.js.map +1 -0
  168. package/dist/types.d.ts +48 -0
  169. package/dist/types.d.ts.map +1 -0
  170. package/dist/types.js +3 -0
  171. package/dist/types.js.map +1 -0
  172. package/dist/validator.d.ts +39 -0
  173. package/dist/validator.d.ts.map +1 -0
  174. package/dist/validator.js +71 -0
  175. package/dist/validator.js.map +1 -0
  176. package/package.json +59 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coerce.js","sourceRoot":"","sources":["../src/coerce.ts"],"names":[],"mappings":"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","sourcesContent":["// Coercion: turns a loosely typed value (a model's tool call arguments, form input, query strings) into the value a\n// schema most likely meant, before it is checked. Only validators compiled with `{ coerce: true }` have it, and they\n// build it on their first coerce() or parse(); the check path never runs it.\n//\n// Three passes, in this order:\n// 1. Optional nulls: a `null` in an optional property whose schema rejects null is dropped, as if omitted.\n// 2. Conversion rules ported from TypeBox 1.3.27's Value.Convert (MIT), keyed on JSON Schema structure (`$ref`, `const`,\n// `enum`, `anyOf`/`oneOf`, `allOf`, `type`, `items`/`prefixItems`, `properties`/`patternProperties`) instead of\n// TypeBox's kind marks: `null` becomes \"null\" for a string, `\"3.5\"` becomes 3 for an integer, a single value becomes\n// a one-item array, and a union takes the first branch whose conversion passes.\n// 3. Primitive coercion by `type` (also type arrays), as in Ajv's `coerceTypes`: what pass 2 left, for example a type\n// array `[\"integer\", \"null\"]`, or `\"\"` for `null`.\n// A value that cannot be coerced is left as it is; the check then reports it.\n//\n// Every pass is copy-on-write: an object or array is copied only when one of its members changes, so an unchanged\n// value comes back as the same reference and the input is never modified. All passes walk the same keywords for\n// members: `properties`, then `patternProperties`, then `additionalProperties` for keys neither names; tuple items by\n// `prefixItems` (or a draft-7 `items` array), the rest by `items`. Draft 7's `additionalItems` is not coerced.\n\nimport type { Compiler } from \"./compiler.ts\";\nimport { isSchemaObject } from \"./resolver.ts\";\nimport { sharedRegex } from \"./shared.ts\";\nimport type { SchemaObject } from \"./types.ts\";\n\n/** Coerces values for one compiled schema. */\nexport class Coercer {\n\tprivate readonly c: Compiler;\n\tprivate readonly schema: unknown;\n\t/**\n\t * The (schema node, value) pairs pass 2 is converting through a re-entry point, as a stack. Conversion can enter\n\t * a node again with the same value only through a `$ref` or by wrapping a single value into an array (also for\n\t * schemas that cycle through shared JS objects): a recursive schema that meets a value no branch accepts would\n\t * convert it without end. A pair already on the stack (primitives by value, objects by reference) leaves the value\n\t * unchanged. Only those two points push, so schemas without references or wraps pay nothing.\n\t */\n\tprivate readonly entered: unknown[] = [];\n\t/** How often a re-entry was cut short in this coerce() call; results computed across one are not memoized. */\n\tprivate cuts = 0;\n\t/**\n\t * Results of `$ref` targets by (node, value) within one coerce() call: a recursive union whose branches all\n\t * convert the same children (and all fail) would convert them once per branch, exponentially in the depth.\n\t */\n\tprivate memo: Map<object, Map<unknown, unknown>> | undefined = undefined;\n\n\tconstructor(compiler: Compiler, schema: unknown) {\n\t\tthis.c = compiler;\n\t\tthis.schema = schema;\n\t}\n\n\t/** `value` coerced: a copy along the changed paths only, or `value` itself when nothing changes. */\n\tcoerce(value: unknown): unknown {\n\t\tconst base = this.c.r.rootBase;\n\t\tconst withoutNulls = this.dropOptionalNulls(value, this.schema, base);\n\t\treturn this.coerceTypes(this.convertOnly(withoutNulls), this.schema, base);\n\t}\n\n\t/** Pass 2 alone, as TypeBox's `Value.Convert` (the TypeBox conformance tests run it). */\n\tconvertOnly(value: unknown): unknown {\n\t\ttry {\n\t\t\treturn this.convert(this.schema, this.c.r.rootBase, value);\n\t\t} finally {\n\t\t\tthis.memo = undefined;\n\t\t\tthis.cuts = 0;\n\t\t}\n\t}\n\n\t/** `node` converted for `value` at a re-entry point: unchanged when that pair is already being converted. */\n\tprivate reenter(node: object, base: string, value: unknown, memoize: boolean): unknown {\n\t\tconst entered = this.entered;\n\t\tfor (let i = 0; i < entered.length; i += 2) {\n\t\t\tif (entered[i] === node && Object.is(entered[i + 1], value)) {\n\t\t\t\tthis.cuts++;\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tconst memo = memoize ? this.memo?.get(node) : undefined;\n\t\tif (memo?.has(value)) return memo.get(value);\n\t\tconst cuts = this.cuts;\n\t\tentered.push(node, value);\n\t\tlet result: unknown;\n\t\ttry {\n\t\t\tresult = this.convert(node, base, value);\n\t\t} finally {\n\t\t\tentered.length -= 2;\n\t\t}\n\t\tif (memoize && this.cuts === cuts) {\n\t\t\tthis.memo ??= new Map();\n\t\t\tlet values = this.memo.get(node);\n\t\t\tif (values === undefined) {\n\t\t\t\tvalues = new Map();\n\t\t\t\tthis.memo.set(node, values);\n\t\t\t}\n\t\t\tvalues.set(value, result);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** Whether `value` passes the schema `node`; undefined when `node` cannot be compiled. */\n\tprivate passes(node: unknown, base: string, value: unknown): boolean | undefined {\n\t\ttry {\n\t\t\treturn this.c.check(node, this.baseOf(node, base))(value);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tprivate baseOf(node: unknown, base: string): string {\n\t\treturn isSchemaObject(node) ? (this.c.r.baseOf.get(node) ?? base) : base;\n\t}\n\n\t// ---------------------------------------------------------------------------------------------------------------\n\t// Pass 1: optional nulls\n\t// ---------------------------------------------------------------------------------------------------------------\n\n\tprivate dropOptionalNulls(value: unknown, schema: unknown, base: string): unknown {\n\t\tif (!isSchemaObject(schema)) return value;\n\t\tconst b = this.baseOf(schema, base);\n\t\tif (Array.isArray(value)) {\n\t\t\treturn mapItems(value, (item, i) => {\n\t\t\t\tconst itemSchema = itemSchemaAt(schema, i);\n\t\t\t\treturn itemSchema === undefined ? item : this.dropOptionalNulls(item, itemSchema, b);\n\t\t\t});\n\t\t}\n\t\tif (!isPlainObject(value)) return value;\n\t\tconst properties = isSchemaObject(schema.properties) ? schema.properties : {};\n\t\tconst patterns = isSchemaObject(schema.patternProperties)\n\t\t\t? Object.entries(schema.patternProperties).map(([pattern, item]) => [sharedRegex(pattern), item] as const)\n\t\t\t: [];\n\t\tconst additional = isSchemaObject(schema.additionalProperties) ? schema.additionalProperties : undefined;\n\t\tif (patterns.length === 0 && additional === undefined && !isSchemaObject(schema.properties)) return value;\n\t\tconst required = new Set(Array.isArray(schema.required) ? schema.required : []);\n\t\tlet out: Record<string, unknown> | undefined;\n\t\tconst set = (key: string, next: unknown) => {\n\t\t\tif (next === (out ?? value)[key]) return;\n\t\t\tout ??= { ...value };\n\t\t\tout[key] = next;\n\t\t};\n\t\tfor (const [key, property] of Object.entries(properties)) {\n\t\t\tif (!Object.hasOwn(value, key)) continue;\n\t\t\tconst isRef = isSchemaObject(property) && typeof property.$ref === \"string\";\n\t\t\tif (value[key] === null && !required.has(key) && !isRef && this.passes(property, b, null) === false) {\n\t\t\t\tout ??= { ...value };\n\t\t\t\tdelete out[key];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tset(key, this.dropOptionalNulls(value[key], property, b));\n\t\t}\n\t\t// Values of pattern and additional properties are walked for their own optional nulls; the keys themselves\n\t\t// are not optional properties, so they stay.\n\t\tif (patterns.length > 0 || additional !== undefined) {\n\t\t\tfor (const key of Object.keys(value)) {\n\t\t\t\tlet matched = Object.hasOwn(properties, key);\n\t\t\t\tfor (const [pattern, item] of patterns) {\n\t\t\t\t\tif (!pattern.test(key)) continue;\n\t\t\t\t\tmatched = true;\n\t\t\t\t\tset(key, this.dropOptionalNulls((out ?? value)[key], item, b));\n\t\t\t\t}\n\t\t\t\tif (!matched && additional !== undefined) set(key, this.dropOptionalNulls(value[key], additional, b));\n\t\t\t}\n\t\t}\n\t\treturn out ?? value;\n\t}\n\n\t// ---------------------------------------------------------------------------------------------------------------\n\t// Pass 2: TypeBox's conversion rules\n\t// ---------------------------------------------------------------------------------------------------------------\n\n\tprivate convert(node: unknown, base: string, value: unknown): unknown {\n\t\tif (!isSchemaObject(node)) return value;\n\t\tconst b = this.baseOf(node, base);\n\t\tif (typeof node.$ref === \"string\") {\n\t\t\tlet target: { node: unknown; base: string };\n\t\t\ttry {\n\t\t\t\ttarget = this.c.r.resolve(node.$ref, b);\n\t\t\t} catch {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\treturn isSchemaObject(target.node) ? this.reenter(target.node, target.base, value, true) : value;\n\t\t}\n\t\treturn this.convertNode(node, b, value);\n\t}\n\n\t/** One schema node's conversion: its first keyword among `const`, `enum`, the unions, `allOf` and `type`. */\n\tprivate convertNode(node: SchemaObject, b: string, value: unknown): unknown {\n\t\tif (Object.hasOwn(node, \"const\")) return convertLiteral(node.const, value);\n\t\tif (Array.isArray(node.enum)) return this.convertEnum(node, node.enum, b, value);\n\t\t// A union or intersection node may also declare members (plain JSON Schema; TypeBox's never do): they convert\n\t\t// after the branches.\n\t\tif (Array.isArray(node.anyOf)) return this.convertUnion(node, node.anyOf, b, value);\n\t\tif (Array.isArray(node.oneOf)) return this.convertUnion(node, node.oneOf, b, value);\n\t\tif (Array.isArray(node.allOf)) {\n\t\t\tlet next = value;\n\t\t\tfor (const member of node.allOf) next = this.convert(member, b, next);\n\t\t\treturn this.convertMembers(node, b, next);\n\t\t}\n\t\tswitch (node.type) {\n\t\t\tcase \"string\":\n\t\t\t\treturn orValue(tryString(value), value);\n\t\t\tcase \"number\":\n\t\t\t\treturn orValue(tryNumber(value), value);\n\t\t\tcase \"integer\": {\n\t\t\t\tconst result = tryNumber(value);\n\t\t\t\treturn result === undefined ? value : Math.trunc(result.value);\n\t\t\t}\n\t\t\tcase \"boolean\":\n\t\t\t\treturn orValue(tryBoolean(value), value);\n\t\t\tcase \"null\":\n\t\t\t\treturn orValue(tryNull(value), value);\n\t\t\tcase \"array\":\n\t\t\t\treturn this.convertArray(node, b, value);\n\t\t\tcase \"object\":\n\t\t\t\treturn this.convertObject(node, b, value);\n\t\t\tcase undefined:\n\t\t\t\tif (node.properties !== undefined || node.patternProperties !== undefined) {\n\t\t\t\t\treturn this.convertObject(node, b, value);\n\t\t\t\t}\n\t\t\t\tif (node.items !== undefined || node.prefixItems !== undefined) return this.convertArray(node, b, value);\n\t\t\t\treturn value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n\n\t/** An enum is a union of its values: a member stays, else the first value the input converts to. */\n\tprivate convertEnum(node: SchemaObject, values: readonly unknown[], base: string, value: unknown): unknown {\n\t\tif (values.some((member) => member === value)) return value;\n\t\tfor (const member of values) {\n\t\t\tconst candidate = convertLiteral(member, value);\n\t\t\tif (candidate !== value && this.passes(node, base, candidate) === true) return candidate;\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * A value one branch accepts stays; else the first branch's conversion that the whole union accepts. Branches are\n\t * converted in order and only until one is accepted, so a later recursive branch is not entered needlessly. A node\n\t * that also declares members (plain JSON Schema; TypeBox's never do) converts them into each candidate before it is\n\t * checked, so a branch is not discarded for a sibling property that is converted after it.\n\t */\n\tprivate convertUnion(node: SchemaObject, branches: readonly unknown[], base: string, value: unknown): unknown {\n\t\tif (branches.some((branch) => this.passes(branch, base, value) === true))\n\t\t\treturn this.convertMembers(node, base, value);\n\t\tfor (const branch of branches) {\n\t\t\tconst candidate = this.convertMembers(node, base, this.convert(branch, base, value));\n\t\t\tif (this.passes(node, base, candidate) === true) return candidate;\n\t\t}\n\t\treturn this.convertMembers(node, base, value);\n\t}\n\n\t/** The object members of a union or intersection node, when it declares any. */\n\tprivate convertMembers(node: SchemaObject, base: string, value: unknown): unknown {\n\t\tconst declares =\n\t\t\tnode.properties !== undefined ||\n\t\t\tnode.patternProperties !== undefined ||\n\t\t\tnode.additionalProperties !== undefined;\n\t\treturn declares ? this.convertObject(node, base, value) : value;\n\t}\n\n\tprivate convertArray(node: SchemaObject, base: string, value: unknown): unknown {\n\t\tconst prefix = Array.isArray(node.items)\n\t\t\t? node.items\n\t\t\t: Array.isArray(node.prefixItems)\n\t\t\t\t? node.prefixItems\n\t\t\t\t: undefined;\n\t\tif (prefix !== undefined) {\n\t\t\t// A tuple converts its items and never wraps a single value.\n\t\t\tif (!Array.isArray(value)) return value;\n\t\t\tconst rest = Array.isArray(node.items) ? undefined : node.items;\n\t\t\treturn mapItems(value, (item, i) => {\n\t\t\t\tconst schema = i < prefix.length ? prefix[i] : rest;\n\t\t\t\treturn schema === undefined ? item : this.convert(schema, base, item);\n\t\t\t});\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\treturn node.items === undefined ? value : mapItems(value, (item) => this.convert(node.items, base, item));\n\t\t}\n\t\t// The wrapped single value is converted by the item schema with the same value: a re-entry point.\n\t\tconst item = node.items;\n\t\treturn [isSchemaObject(item) ? this.reenter(item, base, value, false) : value];\n\t}\n\n\tprivate convertObject(node: SchemaObject, base: string, value: unknown): unknown {\n\t\tif (!isPlainObject(value)) return value;\n\t\tconst properties = isSchemaObject(node.properties) ? node.properties : {};\n\t\tconst patterns = isSchemaObject(node.patternProperties)\n\t\t\t? Object.entries(node.patternProperties).map(([pattern, schema]) => [sharedRegex(pattern), schema] as const)\n\t\t\t: [];\n\t\tconst additional = isSchemaObject(node.additionalProperties) ? node.additionalProperties : undefined;\n\t\tlet out: Record<string, unknown> | undefined;\n\t\tfor (const key of Object.keys(value)) {\n\t\t\t// An undefined property counts as absent.\n\t\t\tif (value[key] === undefined) continue;\n\t\t\tlet next: unknown = value[key];\n\t\t\tlet matched = Object.hasOwn(properties, key);\n\t\t\tif (matched) next = this.convert(properties[key], base, next);\n\t\t\tfor (const [pattern, schema] of patterns) {\n\t\t\t\tif (!pattern.test(key)) continue;\n\t\t\t\tmatched = true;\n\t\t\t\tnext = this.convert(schema, base, next);\n\t\t\t}\n\t\t\tif (!matched && additional !== undefined) next = this.convert(additional, base, next);\n\t\t\tif (next !== value[key]) {\n\t\t\t\tout ??= { ...value };\n\t\t\t\tout[key] = next;\n\t\t\t}\n\t\t}\n\t\treturn out ?? value;\n\t}\n\n\t// ---------------------------------------------------------------------------------------------------------------\n\t// Pass 3: primitive coercion by type\n\t// ---------------------------------------------------------------------------------------------------------------\n\n\tprivate coerceTypes(value: unknown, schema: unknown, base: string): unknown {\n\t\tif (!isSchemaObject(schema)) return value;\n\t\tconst b = this.baseOf(schema, base);\n\t\tlet next = value;\n\t\tif (Array.isArray(schema.allOf)) for (const member of schema.allOf) next = this.coerceTypes(next, member, b);\n\t\tif (Array.isArray(schema.anyOf)) next = this.coerceUnion(next, schema.anyOf, b);\n\t\tif (Array.isArray(schema.oneOf)) next = this.coerceUnion(next, schema.oneOf, b);\n\t\tconst types = typesOf(schema);\n\t\tconst matchesUnionMember = types.length > 1 && types.some((type) => matchesType(next, type));\n\t\tif (types.length > 0 && !matchesUnionMember) {\n\t\t\tfor (const type of types) {\n\t\t\t\tconst candidate = coercePrimitive(next, type);\n\t\t\t\tif (candidate !== next) {\n\t\t\t\t\tnext = candidate;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (types.includes(\"object\") && isPlainObject(next)) next = this.coerceProperties(next, schema, b);\n\t\tif (types.includes(\"array\") && Array.isArray(next)) next = this.coerceItems(next, schema, b);\n\t\treturn next;\n\t}\n\n\tprivate coerceUnion(value: unknown, branches: readonly unknown[], base: string): unknown {\n\t\tfor (const branch of branches) if (this.passes(branch, base, value) === true) return value;\n\t\tfor (const branch of branches) {\n\t\t\tconst coerced = this.coerceTypes(value, branch, base);\n\t\t\tif (this.passes(branch, base, coerced) === true) return coerced;\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate coerceProperties(\n\t\tvalue: Record<string, unknown>,\n\t\tschema: SchemaObject,\n\t\tbase: string,\n\t): Record<string, unknown> {\n\t\tconst properties = isSchemaObject(schema.properties) ? schema.properties : {};\n\t\tconst patterns = isSchemaObject(schema.patternProperties)\n\t\t\t? Object.entries(schema.patternProperties).map(([pattern, item]) => [sharedRegex(pattern), item] as const)\n\t\t\t: [];\n\t\tconst additional = isSchemaObject(schema.additionalProperties) ? schema.additionalProperties : undefined;\n\t\tlet out: Record<string, unknown> | undefined;\n\t\tconst set = (key: string, next: unknown) => {\n\t\t\tif (next === (out ?? value)[key]) return;\n\t\t\tout ??= { ...value };\n\t\t\tout[key] = next;\n\t\t};\n\t\tfor (const [key, property] of Object.entries(properties)) {\n\t\t\tif (key in value) set(key, this.coerceTypes(value[key], property, base));\n\t\t}\n\t\tfor (const key of Object.keys(value)) {\n\t\t\tlet matched = Object.hasOwn(properties, key);\n\t\t\tfor (const [pattern, item] of patterns) {\n\t\t\t\tif (!pattern.test(key)) continue;\n\t\t\t\tmatched = true;\n\t\t\t\tset(key, this.coerceTypes((out ?? value)[key], item, base));\n\t\t\t}\n\t\t\tif (!matched && additional !== undefined) set(key, this.coerceTypes(value[key], additional, base));\n\t\t}\n\t\treturn out ?? value;\n\t}\n\n\tprivate coerceItems(value: unknown[], schema: SchemaObject, base: string): unknown[] {\n\t\treturn mapItems(value, (item, i) => {\n\t\t\tconst itemSchema = itemSchemaAt(schema, i);\n\t\t\treturn isSchemaObject(itemSchema) ? this.coerceTypes(item, itemSchema, base) : item;\n\t\t});\n\t}\n}\n\n/**\n * The schema of an array's item at `index`: a tuple's (`prefixItems`, or a draft-7 `items` array) for its prefix,\n * `items` after `prefixItems`, or `items` for every item. Undefined when nothing applies.\n */\nfunction itemSchemaAt(schema: SchemaObject, index: number): unknown {\n\tif (Array.isArray(schema.items)) return schema.items[index];\n\tif (Array.isArray(schema.prefixItems) && index < schema.prefixItems.length) return schema.prefixItems[index];\n\treturn schema.items;\n}\n\n/** `items` mapped by `map`; the same array when every item maps to itself. */\nfunction mapItems(items: unknown[], map: (item: unknown, index: number) => unknown): unknown[] {\n\tlet out: unknown[] | undefined;\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst next = map(items[i], i);\n\t\tif (next === items[i]) continue;\n\t\tout ??= items.slice();\n\t\tout[i] = next;\n\t}\n\treturn out ?? items;\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n// TypeBox's conversions of one value (value/convert/try in TypeBox 1.3.27): a result, or undefined when there is none\n// -------------------------------------------------------------------------------------------------------------------\n\ntype Converted<T> = { readonly value: T } | undefined;\n\nfunction orValue(result: Converted<unknown>, value: unknown): unknown {\n\treturn result === undefined ? value : result.value;\n}\n\n/** A literal (`const`, an enum value) taken from a value of another type that converts to exactly it. */\nfunction convertLiteral(literal: unknown, value: unknown): unknown {\n\tif (literal === value) return value;\n\tconst result =\n\t\ttypeof literal === \"string\"\n\t\t\t? tryString(value)\n\t\t\t: typeof literal === \"number\"\n\t\t\t\t? tryNumber(value)\n\t\t\t\t: typeof literal === \"boolean\"\n\t\t\t\t\t? tryBoolean(value)\n\t\t\t\t\t: undefined;\n\treturn result !== undefined && result.value === literal ? result.value : value;\n}\n\nfunction tryString(value: unknown): Converted<string> {\n\tif (typeof value === \"bigint\" || typeof value === \"boolean\" || isFiniteNumber(value))\n\t\treturn { value: String(value) };\n\tif (value === null) return { value: \"null\" };\n\tif (typeof value === \"string\") return { value };\n\tif (value === undefined) return { value: \"\" };\n\treturn undefined;\n}\n\nconst MAX_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);\nconst MIN_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);\n\nfunction tryNumber(value: unknown): Converted<number> {\n\tif (typeof value === \"bigint\")\n\t\treturn value <= MAX_BIGINT && value >= MIN_BIGINT ? { value: Number(value) } : undefined;\n\tif (typeof value === \"boolean\") return { value: value ? 1 : 0 };\n\tif (isFiniteNumber(value)) return { value };\n\tif (value === null || value === undefined) return { value: 0 };\n\tif (typeof value !== \"string\") return undefined;\n\tconst coerced = +value;\n\tif (Number.isFinite(coerced)) return { value: coerced };\n\tconst lowercase = value.toLowerCase();\n\tif (lowercase === \"false\") return { value: 0 };\n\tif (lowercase === \"true\") return { value: 1 };\n\tconst big = bigIntOfString(value);\n\treturn big !== undefined && big <= MAX_BIGINT && big >= MIN_BIGINT ? { value: Number(big) } : undefined;\n}\n\n/** TypeBox's TryBigInt of a string: `12n`, `12.5` (truncated) or `12`; true and false are not reached from tryNumber. */\nfunction bigIntOfString(value: string): bigint | undefined {\n\tif (/^-?(0|[1-9]\\d*)n$/.test(value)) return BigInt(value.slice(0, -1));\n\tif (/^-?(0|[1-9]\\d*)\\.\\d+$/.test(value)) return BigInt(value.split(\".\")[0]);\n\tif (/^-?(0|[1-9]\\d*)$/.test(value)) return BigInt(value);\n\treturn undefined;\n}\n\nfunction tryBoolean(value: unknown): Converted<boolean> {\n\tif (typeof value === \"bigint\") return value === 0n ? { value: false } : value === 1n ? { value: true } : undefined;\n\tif (typeof value === \"boolean\") return { value };\n\tif (isFiniteNumber(value)) return value === 0 ? { value: false } : value === 1 ? { value: true } : undefined;\n\tif (value === null || value === undefined) return { value: false };\n\tif (typeof value !== \"string\") return undefined;\n\tconst lowercase = value.toLowerCase();\n\tif (lowercase === \"false\" || value === \"0\") return { value: false };\n\tif (lowercase === \"true\" || value === \"1\") return { value: true };\n\treturn undefined;\n}\n\nfunction tryNull(value: unknown): Converted<null> {\n\tif (typeof value === \"bigint\") return value === 0n ? { value: null } : undefined;\n\tif (typeof value === \"boolean\") return value === false ? { value: null } : undefined;\n\tif (isFiniteNumber(value)) return value === 0 ? { value: null } : undefined;\n\tif (value === null || value === undefined) return { value: null };\n\tif (typeof value !== \"string\") return undefined;\n\tconst lowercase = value.toLowerCase();\n\treturn lowercase === \"undefined\" || lowercase === \"null\" || value === \"\" || value === \"0\"\n\t\t? { value: null }\n\t\t: undefined;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n\treturn typeof value === \"number\" && Number.isFinite(value);\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n// Primitive coercion by type (pass 3)\n// -------------------------------------------------------------------------------------------------------------------\n\nfunction typesOf(schema: SchemaObject): string[] {\n\tif (typeof schema.type === \"string\") return [schema.type];\n\tif (Array.isArray(schema.type)) return schema.type.filter((type): type is string => typeof type === \"string\");\n\treturn [];\n}\n\nfunction matchesType(value: unknown, type: string): boolean {\n\tswitch (type) {\n\t\tcase \"number\":\n\t\t\treturn typeof value === \"number\";\n\t\tcase \"integer\":\n\t\t\treturn typeof value === \"number\" && Number.isInteger(value);\n\t\tcase \"boolean\":\n\t\t\treturn typeof value === \"boolean\";\n\t\tcase \"string\":\n\t\t\treturn typeof value === \"string\";\n\t\tcase \"null\":\n\t\t\treturn value === null;\n\t\tcase \"array\":\n\t\t\treturn Array.isArray(value);\n\t\tcase \"object\":\n\t\t\treturn isPlainObject(value);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nfunction coercePrimitive(value: unknown, type: string): unknown {\n\tswitch (type) {\n\t\tcase \"number\":\n\t\tcase \"integer\": {\n\t\t\tif (value === null) return 0;\n\t\t\tif (typeof value === \"string\" && value.trim() !== \"\") {\n\t\t\t\tconst parsed = Number(value);\n\t\t\t\tif (type === \"number\" ? Number.isFinite(parsed) : Number.isInteger(parsed)) return parsed;\n\t\t\t}\n\t\t\tif (typeof value === \"boolean\") return value ? 1 : 0;\n\t\t\treturn value;\n\t\t}\n\t\tcase \"boolean\":\n\t\t\tif (value === null) return false;\n\t\t\tif (value === \"true\" || value === 1) return true;\n\t\t\tif (value === \"false\" || value === 0) return false;\n\t\t\treturn value;\n\t\tcase \"string\":\n\t\t\tif (value === null) return \"\";\n\t\t\tif (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n\t\t\treturn value;\n\t\tcase \"null\":\n\t\t\treturn value === \"\" || value === 0 || value === false ? null : value;\n\t\tdefault:\n\t\t\treturn value;\n\t}\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
@@ -0,0 +1,53 @@
1
+ import { type AnnotatingCheck } from "./annotations.ts";
2
+ import { Resolver } from "./resolver.ts";
3
+ import type { Check, CompileOptions, FormatCheck, JsonSchema } from "./types.ts";
4
+ /** Thrown when a compile without dynamic scope tracking meets a bookended `$dynamicRef`: compile again with it. */
5
+ export declare const RESTART: unique symbol;
6
+ /** One compile of a schema. Its caches and indexes are garbage once the root check is built. */
7
+ export declare class Compiler {
8
+ readonly r: Resolver;
9
+ readonly draft: "2020-12" | "7";
10
+ readonly formats: Readonly<Record<string, FormatCheck>> | undefined;
11
+ /** Whether checks track the dynamic scope (the schema has a bookended `$dynamicRef`). */
12
+ readonly dynamic: boolean;
13
+ private readonly schema;
14
+ private readonly scope;
15
+ private readonly cache;
16
+ private readonly annotatingCache;
17
+ constructor(schema: JsonSchema, options: CompileOptions, dynamic: boolean);
18
+ /** The check of the root schema. */
19
+ root(): Check;
20
+ /** The check of a schema (cached by schema object; a recursive reference goes through an indirection). */
21
+ check(node: unknown, base: string): Check;
22
+ private build;
23
+ /**
24
+ * The module-level check of a schema that is only a `type` (with annotations), `ALWAYS` for one with no assertion
25
+ * at all; undefined for every other schema. These are the most common subschemas and cost nothing to share.
26
+ */
27
+ private bareType;
28
+ /** Every keyword of `node`, not tracking annotations. */
29
+ private plain;
30
+ private inPlace;
31
+ private union;
32
+ private ref;
33
+ private dynamicRef;
34
+ /** The initial target and anchor name of a `$dynamicRef` that resolves dynamically, or undefined for a plain ref. */
35
+ private bookended;
36
+ private dynamicLookup;
37
+ /** anyOf/oneOf whose branches are all objects with a distinct required const on one key: the tag picks the branch. */
38
+ private tagged;
39
+ private stringGroup;
40
+ private numberGroup;
41
+ private objectGroup;
42
+ private objectCore;
43
+ private arrayGroup;
44
+ /** The annotating check of a schema evaluated in place (only below `unevaluatedProperties`/`unevaluatedItems`). */
45
+ annotating(node: unknown, base: string): AnnotatingCheck;
46
+ private buildAnnotating;
47
+ private annotatingParts;
48
+ private annotatingRef;
49
+ private annotatingDynamicRef;
50
+ }
51
+ /** Keywords that never affect a check. */
52
+ export declare const NEUTRAL_KEYWORDS: Set<string>;
53
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAIA,OAAO,EAGN,KAAK,eAAe,EAcpB,MAAM,kBAAkB,CAAC;AA0C1B,OAAO,EAA8B,QAAQ,EAAc,MAAM,eAAe,CAAC;AAEjF,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAE/F,mHAAmH;AACnH,eAAO,MAAM,OAAO,eAAoB,CAAC;AAEzC,gGAAgG;AAChG,qBAAa,QAAQ;IACpB,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEtE,YAAY,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAOxE;IAED,oCAAoC;IACpC,IAAI,IAAI,KAAK,CAEZ;IAED,0GAA0G;IAC1G,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAexC;IAED,OAAO,CAAC,KAAK;IASb;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB,yDAAyD;IACzD,OAAO,CAAC,KAAK;IA8Bb,OAAO,CAAC,OAAO;IAkBf,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,UAAU;IAgBlB,qHAAqH;IACrH,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,aAAa;IAcrB,sHAAsH;IACtH,OAAO,CAAC,MAAM;IAwBd,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,UAAU;IAuClB,mHAAmH;IACnH,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAavD;IAED,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,eAAe;IA0DvB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,oBAAoB;CAe5B;AAED,0CAA0C;AAC1C,eAAO,MAAM,gBAAgB,aAiB3B,CAAC"}