@vielzeug/spell 1.2.2 → 2.0.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/README.md +4 -4
  2. package/dist/_dev.cjs +1 -1
  3. package/dist/_dev.cjs.map +1 -1
  4. package/dist/_dev.js +1 -1
  5. package/dist/_dev.js.map +1 -1
  6. package/dist/core.cjs +1 -1
  7. package/dist/core.cjs.map +1 -1
  8. package/dist/core.d.ts +29 -43
  9. package/dist/core.d.ts.map +1 -1
  10. package/dist/core.js +1 -1
  11. package/dist/core.js.map +1 -1
  12. package/dist/errors.cjs +2 -2
  13. package/dist/errors.cjs.map +1 -1
  14. package/dist/errors.d.ts +9 -11
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +2 -2
  17. package/dist/errors.js.map +1 -1
  18. package/dist/index.cjs +2 -1
  19. package/dist/index.cjs.map +1 -0
  20. package/dist/index.d.ts +11 -5
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -1
  23. package/dist/index.js.map +1 -0
  24. package/dist/json-schema.cjs +1 -1
  25. package/dist/json-schema.cjs.map +1 -1
  26. package/dist/json-schema.d.ts +3 -13
  27. package/dist/json-schema.d.ts.map +1 -1
  28. package/dist/json-schema.js +1 -1
  29. package/dist/json-schema.js.map +1 -1
  30. package/dist/json.cjs +1 -0
  31. package/dist/json.d.ts +2 -0
  32. package/dist/json.d.ts.map +1 -0
  33. package/dist/json.js +1 -0
  34. package/dist/messages.cjs +1 -1
  35. package/dist/messages.cjs.map +1 -1
  36. package/dist/messages.d.ts +3 -35
  37. package/dist/messages.d.ts.map +1 -1
  38. package/dist/messages.js +1 -1
  39. package/dist/messages.js.map +1 -1
  40. package/dist/predicates.cjs +1 -0
  41. package/dist/predicates.d.ts +3 -0
  42. package/dist/predicates.d.ts.map +1 -0
  43. package/dist/predicates.js +1 -0
  44. package/dist/s.cjs +1 -1
  45. package/dist/s.cjs.map +1 -1
  46. package/dist/s.d.ts +12 -14
  47. package/dist/s.d.ts.map +1 -1
  48. package/dist/s.js +1 -1
  49. package/dist/s.js.map +1 -1
  50. package/dist/schemas/array.cjs +1 -1
  51. package/dist/schemas/array.cjs.map +1 -1
  52. package/dist/schemas/array.d.ts +7 -7
  53. package/dist/schemas/array.d.ts.map +1 -1
  54. package/dist/schemas/array.js +1 -1
  55. package/dist/schemas/array.js.map +1 -1
  56. package/dist/schemas/bigint.cjs +1 -1
  57. package/dist/schemas/bigint.cjs.map +1 -1
  58. package/dist/schemas/bigint.d.ts +2 -2
  59. package/dist/schemas/bigint.d.ts.map +1 -1
  60. package/dist/schemas/bigint.js +1 -1
  61. package/dist/schemas/bigint.js.map +1 -1
  62. package/dist/schemas/boolean.cjs +1 -1
  63. package/dist/schemas/boolean.cjs.map +1 -1
  64. package/dist/schemas/boolean.d.ts +2 -2
  65. package/dist/schemas/boolean.d.ts.map +1 -1
  66. package/dist/schemas/boolean.js +1 -1
  67. package/dist/schemas/boolean.js.map +1 -1
  68. package/dist/schemas/date.cjs +1 -1
  69. package/dist/schemas/date.cjs.map +1 -1
  70. package/dist/schemas/date.d.ts +2 -2
  71. package/dist/schemas/date.d.ts.map +1 -1
  72. package/dist/schemas/date.js +1 -1
  73. package/dist/schemas/date.js.map +1 -1
  74. package/dist/schemas/enum.cjs +1 -1
  75. package/dist/schemas/enum.cjs.map +1 -1
  76. package/dist/schemas/enum.d.ts +2 -2
  77. package/dist/schemas/enum.d.ts.map +1 -1
  78. package/dist/schemas/enum.js +1 -1
  79. package/dist/schemas/enum.js.map +1 -1
  80. package/dist/schemas/instanceof.cjs +1 -1
  81. package/dist/schemas/instanceof.cjs.map +1 -1
  82. package/dist/schemas/instanceof.d.ts +2 -2
  83. package/dist/schemas/instanceof.d.ts.map +1 -1
  84. package/dist/schemas/instanceof.js +1 -1
  85. package/dist/schemas/instanceof.js.map +1 -1
  86. package/dist/schemas/intersect.cjs +1 -1
  87. package/dist/schemas/intersect.cjs.map +1 -1
  88. package/dist/schemas/intersect.d.ts +2 -2
  89. package/dist/schemas/intersect.d.ts.map +1 -1
  90. package/dist/schemas/intersect.js +1 -1
  91. package/dist/schemas/intersect.js.map +1 -1
  92. package/dist/schemas/lazy.cjs +1 -1
  93. package/dist/schemas/lazy.cjs.map +1 -1
  94. package/dist/schemas/lazy.d.ts +3 -3
  95. package/dist/schemas/lazy.d.ts.map +1 -1
  96. package/dist/schemas/lazy.js +1 -1
  97. package/dist/schemas/lazy.js.map +1 -1
  98. package/dist/schemas/literal.cjs +1 -1
  99. package/dist/schemas/literal.cjs.map +1 -1
  100. package/dist/schemas/literal.d.ts +2 -2
  101. package/dist/schemas/literal.d.ts.map +1 -1
  102. package/dist/schemas/literal.js +1 -1
  103. package/dist/schemas/literal.js.map +1 -1
  104. package/dist/schemas/map.cjs +1 -1
  105. package/dist/schemas/map.cjs.map +1 -1
  106. package/dist/schemas/map.d.ts +7 -7
  107. package/dist/schemas/map.d.ts.map +1 -1
  108. package/dist/schemas/map.js +1 -1
  109. package/dist/schemas/map.js.map +1 -1
  110. package/dist/schemas/never.cjs +1 -1
  111. package/dist/schemas/never.cjs.map +1 -1
  112. package/dist/schemas/never.d.ts +2 -2
  113. package/dist/schemas/never.d.ts.map +1 -1
  114. package/dist/schemas/never.js +1 -1
  115. package/dist/schemas/never.js.map +1 -1
  116. package/dist/schemas/number.cjs +1 -1
  117. package/dist/schemas/number.cjs.map +1 -1
  118. package/dist/schemas/number.d.ts +3 -3
  119. package/dist/schemas/number.d.ts.map +1 -1
  120. package/dist/schemas/number.js +1 -1
  121. package/dist/schemas/number.js.map +1 -1
  122. package/dist/schemas/object.cjs +1 -1
  123. package/dist/schemas/object.cjs.map +1 -1
  124. package/dist/schemas/object.d.ts +21 -15
  125. package/dist/schemas/object.d.ts.map +1 -1
  126. package/dist/schemas/object.js +1 -1
  127. package/dist/schemas/object.js.map +1 -1
  128. package/dist/schemas/record.cjs +1 -1
  129. package/dist/schemas/record.cjs.map +1 -1
  130. package/dist/schemas/record.d.ts +7 -7
  131. package/dist/schemas/record.d.ts.map +1 -1
  132. package/dist/schemas/record.js +1 -1
  133. package/dist/schemas/record.js.map +1 -1
  134. package/dist/schemas/set.cjs +1 -1
  135. package/dist/schemas/set.cjs.map +1 -1
  136. package/dist/schemas/set.d.ts +6 -6
  137. package/dist/schemas/set.d.ts.map +1 -1
  138. package/dist/schemas/set.js +1 -1
  139. package/dist/schemas/set.js.map +1 -1
  140. package/dist/schemas/string.cjs +1 -1
  141. package/dist/schemas/string.cjs.map +1 -1
  142. package/dist/schemas/string.d.ts +6 -12
  143. package/dist/schemas/string.d.ts.map +1 -1
  144. package/dist/schemas/string.js +1 -1
  145. package/dist/schemas/string.js.map +1 -1
  146. package/dist/schemas/tuple.cjs +1 -1
  147. package/dist/schemas/tuple.cjs.map +1 -1
  148. package/dist/schemas/tuple.d.ts +3 -3
  149. package/dist/schemas/tuple.d.ts.map +1 -1
  150. package/dist/schemas/tuple.js +1 -1
  151. package/dist/schemas/tuple.js.map +1 -1
  152. package/dist/schemas/union.cjs +1 -1
  153. package/dist/schemas/union.cjs.map +1 -1
  154. package/dist/schemas/union.d.ts +2 -2
  155. package/dist/schemas/union.d.ts.map +1 -1
  156. package/dist/schemas/union.js +1 -1
  157. package/dist/schemas/union.js.map +1 -1
  158. package/dist/schemas/variant.cjs +1 -1
  159. package/dist/schemas/variant.cjs.map +1 -1
  160. package/dist/schemas/variant.d.ts +7 -5
  161. package/dist/schemas/variant.d.ts.map +1 -1
  162. package/dist/schemas/variant.js +1 -1
  163. package/dist/schemas/variant.js.map +1 -1
  164. package/dist/spell.cjs +2 -2
  165. package/dist/spell.cjs.map +1 -1
  166. package/dist/spell.iife.js +2 -2
  167. package/dist/spell.iife.js.map +1 -1
  168. package/dist/spell.js +2 -2
  169. package/dist/spell.js.map +1 -1
  170. package/dist/types.cjs +1 -1
  171. package/dist/types.cjs.map +1 -1
  172. package/dist/types.d.ts +61 -26
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js +1 -1
  175. package/dist/types.js.map +1 -1
  176. package/package.json +18 -5
package/dist/types.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e={custom:`custom`,invalid_base64:`invalid_base64`,invalid_date:`invalid_date`,invalid_duration:`invalid_duration`,invalid_enum:`invalid_enum`,invalid_finite:`invalid_finite`,invalid_integer:`invalid_integer`,invalid_keys:`invalid_keys`,invalid_length:`invalid_length`,invalid_literal:`invalid_literal`,invalid_multiple_of:`invalid_multiple_of`,invalid_safe:`invalid_safe`,invalid_string:`invalid_string`,invalid_type:`invalid_type`,invalid_union:`invalid_union`,invalid_unique:`invalid_unique`,invalid_url:`invalid_url`,invalid_variant:`invalid_variant`,too_big:`too_big`,too_small:`too_small`};exports.ErrorCode=e;
1
+ var e={custom:`custom`,invalid_base64:`invalid_base64`,invalid_date:`invalid_date`,invalid_duration:`invalid_duration`,invalid_enum:`invalid_enum`,invalid_finite:`invalid_finite`,invalid_integer:`invalid_integer`,invalid_keys:`invalid_keys`,invalid_length:`invalid_length`,invalid_literal:`invalid_literal`,invalid_multiple_of:`invalid_multiple_of`,invalid_safe:`invalid_safe`,invalid_string:`invalid_string`,invalid_type:`invalid_type`,invalid_union:`invalid_union`,invalid_unique:`invalid_unique`,invalid_url:`invalid_url`,invalid_variant:`invalid_variant`,too_big:`too_big`,too_small:`too_small`},t=Symbol(`spell.schemaMode`);exports.ErrorCode=e,exports.schemaMode=t;
2
2
  //# sourceMappingURL=types.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["/* -------------------- Error Codes -------------------- */\n\nexport const ErrorCode = {\n custom: 'custom',\n invalid_base64: 'invalid_base64',\n invalid_date: 'invalid_date',\n invalid_duration: 'invalid_duration',\n invalid_enum: 'invalid_enum',\n invalid_finite: 'invalid_finite',\n invalid_integer: 'invalid_integer',\n invalid_keys: 'invalid_keys',\n invalid_length: 'invalid_length',\n invalid_literal: 'invalid_literal',\n invalid_multiple_of: 'invalid_multiple_of',\n invalid_safe: 'invalid_safe',\n invalid_string: 'invalid_string',\n invalid_type: 'invalid_type',\n invalid_union: 'invalid_union',\n invalid_unique: 'invalid_unique',\n invalid_url: 'invalid_url',\n invalid_variant: 'invalid_variant',\n too_big: 'too_big',\n too_small: 'too_small',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\n/* -------------------- Messages -------------------- */\n\n/**\n * A validation message — either a static string or a function that receives context and returns a string.\n * **Note:** Static string values are used verbatim with no interpolation. Use the function form\n * for context-dependent messages (e.g. `(ctx) => \\`Must be at least ${ctx.min}\\``).\n */\nexport type MessageFn<Ctx extends Record<string, unknown> = Record<string, unknown>> = string | ((ctx: Ctx) => string);\n\n/* -------------------- JSON Schema -------------------- */\n\n/** Plain JSON Schema object (targeting JSON Schema 2020-12). */\nexport type JsonSchema = Record<string, unknown>;\n\n/* -------------------- Issues -------------------- */\n\n/**\n * A typed discriminated union of all issues emitted by built-in validators.\n *\n * Narrowing on `code` gives precise access to `params`:\n * ```ts\n * if (error.code === 'too_small') {\n * const min = error.params.min; // number | bigint | Date\n * }\n * ```\n */\nexport type Issue =\n | { code: 'custom'; message: string; params?: Record<string, unknown>; path: (string | number)[] }\n | { code: 'invalid_base64'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_date'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_duration'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_enum'; message: string; params: { values: readonly unknown[] }; path: (string | number)[] }\n | { code: 'invalid_finite'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_integer'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_keys'; message: string; params: { keys: string[] }; path: (string | number)[] }\n | { code: 'invalid_length'; message: string; params: { exact: number }; path: (string | number)[] }\n | { code: 'invalid_literal'; message: string; params: { expected: unknown }; path: (string | number)[] }\n | { code: 'invalid_multiple_of'; message: string; params: { step: number | bigint }; path: (string | number)[] }\n | { code: 'invalid_safe'; message: string; params?: undefined; path: (string | number)[] }\n | {\n code: 'invalid_string';\n message: string;\n params: { format?: string; includes?: string; pattern?: string; prefix?: string; suffix?: string };\n path: (string | number)[];\n }\n | { code: 'invalid_type'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_union'; message: string; params: { errors: Issue[][] }; path: (string | number)[] }\n | { code: 'invalid_unique'; message: string; params: { unique: true }; path: (string | number)[] }\n | { code: 'invalid_url'; message: string; params: { format: string }; path: (string | number)[] }\n | {\n code: 'invalid_variant';\n message: string;\n params: { discriminator: string; expected: string[] };\n path: (string | number)[];\n }\n | {\n code: 'too_big';\n message: string;\n params: { exclusive?: boolean; max: number | bigint | Date };\n path: (string | number)[];\n }\n | {\n code: 'too_small';\n message: string;\n params: { exclusive?: boolean; min: number | bigint | Date };\n path: (string | number)[];\n }\n | { code: string & {}; message: string; params?: Record<string, unknown>; path: (string | number)[] };\n\n/** ParseContext carries the active message set through the parse pipeline. */\nexport type ParseContext = {\n messages: import('./messages').Messages;\n};\n\n/**\n * Validator function. Receives the value after type-checking and the active ParseContext.\n * Returns an Issue array on failure, null on success, or a Promise for async validators.\n */\nexport type ValidateFn = (value: unknown, ctx?: ParseContext) => Issue[] | null | Promise<Issue[] | null>;\n\nexport type CheckContext = {\n addIssue: (issue: {\n code: string;\n message: string;\n params?: Record<string, unknown>;\n path?: (string | number)[];\n }) => void;\n};\n\n/**\n * Return type of a `validate()` callback.\n * - `string` — validation failed; the string becomes the error message.\n * - `false` — validation failed with no message (use `addIssue` for a message).\n * - `true` / `null` / `void` — validation passed.\n *\n * The shorthand `condition || 'message'` works naturally:\n * ```ts\n * s.string().validate(v => v.length > 0 || 'Cannot be empty')\n * ```\n */\nexport type ValidateResult = boolean | null | void | string;\n\n/** Re-exported from errors for convenience — defined there. */\nexport type { FlatError, FlatErrorFirst, FormattedErrors } from './errors';\n\n/* -------------------- Schema Introspection -------------------- */\n\n/**\n * Visitor map for schema.walk(). Container handlers receive already-walked children (type R).\n * All handlers are optional — unmatched kinds return `null` unless an `unknown` fallback is provided.\n *\n * Each handler receives the concrete schema type for that kind, enabling access to\n * schema-specific properties (e.g. `ArraySchema.itemSchema`) without casting.\n */\nexport type SchemaWalker<R> = {\n array?: (schema: import('./schemas/array').ArraySchema<any>, item: R | null) => R;\n bigint?: (schema: import('./schemas/bigint').BigIntSchema<any>) => R;\n boolean?: (schema: import('./schemas/boolean').BooleanSchema<any>) => R;\n date?: (schema: import('./schemas/date').DateSchema<any>) => R;\n enum?: (schema: import('./schemas/enum').EnumSchema<any>) => R;\n instanceof?: (schema: import('./schemas/instanceof').InstanceOfSchema<any>) => R;\n intersect?: (schema: import('./schemas/intersect').IntersectSchema<any>, branches: (R | null)[]) => R;\n lazy?: (schema: import('./schemas/lazy').LazySchema<any>) => R;\n literal?: (schema: import('./schemas/literal').LiteralSchema<any>) => R;\n map?: (schema: import('./schemas/map').MapSchema<any, any>, key: R | null, value: R | null) => R;\n never?: (schema: import('./schemas/never').NeverSchema) => R;\n number?: (schema: import('./schemas/number').NumberSchema<any>) => R;\n object?: (schema: import('./schemas/object').ObjectSchema<any>, fields: Record<string, R | null>) => R;\n pipe?: (schema: import('./core').PipeSchema<any, any>, from: R | null, to: R | null) => R;\n record?: (schema: import('./schemas/record').RecordSchema<any, any>, key: R | null, value: R | null) => R;\n set?: (schema: import('./schemas/set').SetSchema<any>, item: R | null) => R;\n string?: (schema: import('./schemas/string').StringSchema<any>) => R;\n tuple?: (schema: import('./schemas/tuple').TupleSchema<any, any>, items: (R | null)[], rest: R | null) => R;\n union?: (schema: import('./schemas/union').UnionSchema<any>, branches: (R | null)[]) => R;\n unknown?: (schema: AnySchema) => R;\n variant?: (schema: import('./schemas/variant').VariantSchema<any, any>, branches: Record<string, R | null>) => R;\n};\n\ntype BaseDescriptor = {\n description?: string;\n isNullable?: boolean;\n isOptional?: boolean;\n};\n\nexport type SchemaDescriptor = BaseDescriptor &\n (\n | { kind: 'any' | 'unknown' | 'never' | 'boolean' | 'bigint' | 'date' | 'lazy' }\n | { className: string; kind: 'instanceof' }\n | {\n contentEncoding?: string;\n format?: string;\n kind: 'string';\n maxLength?: number;\n minLength?: number;\n pattern?: string | null;\n }\n | {\n exclusiveMaximum?: number;\n exclusiveMinimum?: number;\n kind: 'number';\n maximum?: number;\n minimum?: number;\n multipleOf?: number;\n typeHint?: 'integer';\n }\n | { kind: 'literal'; value: string | number | boolean | null | undefined }\n | { kind: 'enum'; values: readonly (string | number)[] }\n | { items: SchemaDescriptor; kind: 'array'; maxItems?: number; minItems?: number }\n | { items: SchemaDescriptor[]; kind: 'tuple'; rest: SchemaDescriptor | null }\n | { fields: Record<string, SchemaDescriptor>; kind: 'object'; strict: boolean }\n | { key: SchemaDescriptor; kind: 'record'; value: SchemaDescriptor }\n | { items: SchemaDescriptor; kind: 'set' }\n | { key: SchemaDescriptor; kind: 'map'; value: SchemaDescriptor }\n | { branches: SchemaDescriptor[]; kind: 'union' | 'intersect' }\n | { branches: Record<string, SchemaDescriptor>; discriminator: string; kind: 'variant' }\n | { from: SchemaDescriptor; kind: 'pipe'; to: SchemaDescriptor }\n );\n\n/* -------------------- ParseResult (forward-references SpellValidationError) -------------------- */\n\nimport type { Schema } from './core';\n// Import only the type to avoid circular dependencies\nimport type { SpellValidationError } from './errors';\n\nexport type ParseResult<T> = { data: T; success: true } | { error: SpellValidationError; success: false };\n\n/* -------------------- AnySchema / Infer (forward-references Schema) -------------------- */\n\nexport type AnySchema = Schema<unknown, unknown>;\nexport type InferOutput<T> = T extends Schema<infer O> ? O : never;\nexport type InferInput<T> = T extends Schema<any, infer I> ? I : never;\nexport type Infer<T> = InferOutput<T>;\n\n/** Re-exported for convenience — defined in messages.ts. */\nexport type { Messages } from './messages';\n"],"mappings":"AAEA,IAAa,EAAY,CACvB,OAAQ,SACR,eAAgB,iBAChB,aAAc,eACd,iBAAkB,mBAClB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,oBAAqB,sBACrB,aAAc,eACd,eAAgB,iBAChB,aAAc,eACd,cAAe,gBACf,eAAgB,iBAChB,YAAa,cACb,gBAAiB,kBACjB,QAAS,UACT,UAAW,WACb"}
1
+ {"version":3,"file":"types.cjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["/* -------------------- Error Codes -------------------- */\n\nexport const ErrorCode = {\n custom: 'custom',\n invalid_base64: 'invalid_base64',\n invalid_date: 'invalid_date',\n invalid_duration: 'invalid_duration',\n invalid_enum: 'invalid_enum',\n invalid_finite: 'invalid_finite',\n invalid_integer: 'invalid_integer',\n invalid_keys: 'invalid_keys',\n invalid_length: 'invalid_length',\n invalid_literal: 'invalid_literal',\n invalid_multiple_of: 'invalid_multiple_of',\n invalid_safe: 'invalid_safe',\n invalid_string: 'invalid_string',\n invalid_type: 'invalid_type',\n invalid_union: 'invalid_union',\n invalid_unique: 'invalid_unique',\n invalid_url: 'invalid_url',\n invalid_variant: 'invalid_variant',\n too_big: 'too_big',\n too_small: 'too_small',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\n/* -------------------- Messages -------------------- */\n\n/**\n * A validation message — either a static string or a function that receives context and returns a string.\n * **Note:** Static string values are used verbatim with no interpolation. Use the function form\n * for context-dependent messages (e.g. `(ctx) => \\`Must be at least ${ctx.min}\\``).\n */\nexport type MessageFn<Ctx extends Record<string, unknown> = Record<string, unknown>> = string | ((ctx: Ctx) => string);\n\n/* -------------------- JSON Schema -------------------- */\n\n/** Plain JSON Schema object (targeting JSON Schema 2020-12). */\nexport type JsonSchema = Record<string, unknown>;\n\n/** Frozen data-only representation of a schema that can be exported to tooling. */\nexport type SchemaDefinition = SchemaDescriptor;\n\n/* -------------------- Issues -------------------- */\n\n/**\n * A typed discriminated union of all issues emitted by built-in validators.\n *\n * Narrowing on `code` gives precise access to `params`:\n * ```ts\n * if (error.code === 'too_small') {\n * const min = error.params.min; // number | bigint | Date\n * }\n * ```\n */\nexport type Issue =\n | { code: 'custom'; message: string; params?: Record<string, unknown>; path: (string | number)[] }\n | { code: 'invalid_base64'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_date'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_duration'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_enum'; message: string; params: { values: readonly unknown[] }; path: (string | number)[] }\n | { code: 'invalid_finite'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_integer'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_keys'; message: string; params: { keys: string[] }; path: (string | number)[] }\n | { code: 'invalid_length'; message: string; params: { exact: number }; path: (string | number)[] }\n | { code: 'invalid_literal'; message: string; params: { expected: unknown }; path: (string | number)[] }\n | { code: 'invalid_multiple_of'; message: string; params: { step: number | bigint }; path: (string | number)[] }\n | { code: 'invalid_safe'; message: string; params?: undefined; path: (string | number)[] }\n | {\n code: 'invalid_string';\n message: string;\n params: { format?: string; includes?: string; pattern?: string; prefix?: string; suffix?: string };\n path: (string | number)[];\n }\n | { code: 'invalid_type'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_union'; message: string; params: { errors: Issue[][] }; path: (string | number)[] }\n | { code: 'invalid_unique'; message: string; params: { unique: true }; path: (string | number)[] }\n | { code: 'invalid_url'; message: string; params: { format: string }; path: (string | number)[] }\n | {\n code: 'invalid_variant';\n message: string;\n params: { discriminator: string; expected: string[] };\n path: (string | number)[];\n }\n | {\n code: 'too_big';\n message: string;\n params: { exclusive?: boolean; max: number | bigint | Date };\n path: (string | number)[];\n }\n | {\n code: 'too_small';\n message: string;\n params: { exclusive?: boolean; min: number | bigint | Date };\n path: (string | number)[];\n }\n | { code: string & {}; message: string; params?: Record<string, unknown>; path: (string | number)[] };\n\n/** ParseContext carries the active message set through the parse pipeline. */\nexport type ParseContext = {\n messages: import('./messages').Messages;\n};\n\n/**\n * Validator function. Receives the value after type-checking and the active ParseContext.\n * Returns an Issue array on failure, null on success, or a Promise for async validators.\n */\nexport type ValidateFn = (value: unknown, ctx?: ParseContext) => Issue[] | null | Promise<Issue[] | null>;\n\nexport type CheckContext = {\n addIssue: (issue: {\n code: string;\n message: string;\n params?: Record<string, unknown>;\n path?: (string | number)[];\n }) => void;\n};\n\n/**\n * Return type of a `check()` callback.\n * - `string` — validation failed; the string becomes the error message.\n * - `false` — validation failed with no message (use `addIssue` for a message).\n * - `true` / `null` / `void` — validation passed.\n *\n * The shorthand `condition || 'message'` works naturally:\n * ```ts\n * s.string().check((value) => value.length > 0 || 'Cannot be empty')\n * ```\n */\nexport type ValidateResult = boolean | null | void | string;\n\n/** Re-exported from errors for convenience — defined there. */\nexport type { FlatError, FlatErrorFirst } from './errors';\n\n/* -------------------- Schema Introspection -------------------- */\n\n/**\n * Visitor map for schema.walk(). Container handlers receive already-walked children (type R).\n * All handlers are optional — unmatched kinds return `null` unless an `unknown` fallback is provided.\n *\n * Each handler receives the concrete schema type for that kind, enabling access to\n * schema-specific properties (e.g. `ArraySchema.itemSchema`) without casting.\n */\nexport type SchemaWalker<R> = {\n array?: <T extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/array').ArraySchema<T, Mode>,\n item: R | null,\n ) => R;\n bigint?: <Input, Mode extends SchemaMode>(schema: import('./schemas/bigint').BigIntSchema<Input, Mode>) => R;\n boolean?: <Input, Mode extends SchemaMode>(schema: import('./schemas/boolean').BooleanSchema<Input, Mode>) => R;\n date?: <Input, Mode extends SchemaMode>(schema: import('./schemas/date').DateSchema<Input, Mode>) => R;\n enum?: <T extends import('./schemas/enum').EnumValues, Mode extends SchemaMode>(\n schema: import('./schemas/enum').EnumSchema<T, Mode>,\n ) => R;\n instanceof?: <T, Mode extends SchemaMode>(schema: import('./schemas/instanceof').InstanceOfSchema<T, Mode>) => R;\n intersect?: <T extends readonly AnySchema[], Mode extends SchemaMode>(\n schema: import('./schemas/intersect').IntersectSchema<T, Mode>,\n branches: (R | null)[],\n ) => R;\n lazy?: <T, Input, Mode extends SchemaMode>(schema: import('./schemas/lazy').LazySchema<T, Input, Mode>) => R;\n literal?: <T extends string | number | boolean | null | undefined, Mode extends SchemaMode>(\n schema: import('./schemas/literal').LiteralSchema<T, Mode>,\n ) => R;\n map?: <K extends AnySchema, V extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/map').MapSchema<K, V, Mode>,\n key: R | null,\n value: R | null,\n ) => R;\n never?: <Mode extends SchemaMode>(schema: import('./schemas/never').NeverSchema<Mode>) => R;\n number?: <Input, Mode extends SchemaMode>(schema: import('./schemas/number').NumberSchema<Input, Mode>) => R;\n object?: <T extends import('./schemas/object').ObjectShape, Mode extends SchemaMode>(\n schema: import('./schemas/object').ObjectSchema<T, Mode>,\n fields: Record<string, R | null>,\n ) => R;\n pipe?: <To extends AnySchema, From extends AnySchema, Mode extends SchemaMode>(\n schema: import('./core').PipeSchema<To, From, Mode>,\n from: R | null,\n to: R | null,\n ) => R;\n record?: <K extends AnySchema, V extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/record').RecordSchema<K, V, Mode>,\n key: R | null,\n value: R | null,\n ) => R;\n set?: <T extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/set').SetSchema<T, Mode>,\n item: R | null,\n ) => R;\n string?: <Input, Mode extends SchemaMode>(schema: import('./schemas/string').StringSchema<Input, Mode>) => R;\n tuple?: <T extends import('./schemas/tuple').TupleSchemas, Rest extends AnySchema | null, Mode extends SchemaMode>(\n schema: import('./schemas/tuple').TupleSchema<T, Rest, Mode>,\n items: (R | null)[],\n rest: R | null,\n ) => R;\n union?: <T extends readonly AnySchema[], Mode extends SchemaMode>(\n schema: import('./schemas/union').UnionSchema<T, Mode>,\n branches: (R | null)[],\n ) => R;\n unknown?: (schema: AnySchema) => R;\n variant?: <\n K extends string,\n M extends Record<string, import('./schemas/object').ObjectSchema<any, any>>,\n Mode extends SchemaMode,\n >(\n schema: import('./schemas/variant').VariantSchema<K, M, Mode>,\n branches: Record<string, R | null>,\n ) => R;\n};\n\ntype BaseDescriptor = {\n description?: string;\n isNullable?: boolean;\n isOptional?: boolean;\n};\n\nexport type SchemaDescriptor = BaseDescriptor &\n (\n | { kind: 'any' | 'unknown' | 'never' | 'boolean' | 'bigint' | 'date' | 'lazy' }\n | { className: string; kind: 'instanceof' }\n | {\n contentEncoding?: string;\n format?: string;\n kind: 'string';\n maxLength?: number;\n minLength?: number;\n pattern?: string | null;\n }\n | {\n exclusiveMaximum?: number;\n exclusiveMinimum?: number;\n kind: 'number';\n maximum?: number;\n minimum?: number;\n multipleOf?: number;\n typeHint?: 'integer';\n }\n | { kind: 'literal'; value: string | number | boolean | null | undefined }\n | { kind: 'enum'; values: readonly (string | number)[] }\n | { items: SchemaDescriptor; kind: 'array'; maxItems?: number; minItems?: number }\n | { items: SchemaDescriptor[]; kind: 'tuple'; rest: SchemaDescriptor | null }\n | { fields: Record<string, SchemaDescriptor>; kind: 'object'; strict: boolean }\n | { key: SchemaDescriptor; kind: 'record'; value: SchemaDescriptor }\n | { items: SchemaDescriptor; kind: 'set' }\n | { key: SchemaDescriptor; kind: 'map'; value: SchemaDescriptor }\n | { branches: SchemaDescriptor[]; kind: 'union' | 'intersect' }\n | { branches: Record<string, SchemaDescriptor>; discriminator: string; kind: 'variant' }\n | { from: SchemaDescriptor; kind: 'pipe'; to: SchemaDescriptor }\n );\n\n/* -------------------- ParseResult (forward-references SpellValidationError) -------------------- */\n\nimport type { Schema } from './core';\n// Import only the type to avoid circular dependencies\nimport type { SpellValidationError } from './errors';\n\nexport type ParseResult<T> = { data: T; success: true } | { error: SpellValidationError; success: false };\n\n/* -------------------- Schema execution mode / Infer (forward-references Schema) -------------------- */\n\n/** @internal */\nexport const schemaInput = Symbol('spell.schemaInput');\n/** Public structural marker for a schema's parsing capability. */\nexport const schemaMode = Symbol('spell.schemaMode');\n/** @internal */\nexport const schemaOutput = Symbol('spell.schemaOutput');\n\n/** Whether a schema can be parsed synchronously or requires asynchronous parsing. */\nexport type SchemaMode = 'async' | 'sync';\n\n/** A structural schema surface accepted by composition helpers. */\nexport type SchemaSurface<Output = unknown, Input = Output, Mode extends SchemaMode = SchemaMode> = {\n _parseFullAsync(value: unknown, ctx?: ParseContext): Promise<{ data: unknown; issues: Issue[] }>;\n _parseFullSync(value: unknown, ctx?: ParseContext): { data: unknown; issues: Issue[] };\n definition(): SchemaDefinition;\n isOptional: boolean;\n optional(): SchemaSurface<Output | undefined, Input | undefined, Mode>;\n required(): SchemaSurface<Exclude<Output, undefined>, Exclude<Input, undefined>, Mode>;\n readonly [schemaInput]: Input;\n readonly [schemaMode]: Mode;\n readonly [schemaOutput]: Output;\n walk<R>(visitor: SchemaWalker<R>): R | null;\n};\n\nexport type AnySchema<Output = unknown, Input = Output, Mode extends SchemaMode = SchemaMode> = SchemaSurface<\n Output,\n Input,\n Mode\n>;\n\n/** Extracts a schema's parsing capability. */\nexport type InferSchemaMode<T> = T extends { readonly [schemaMode]: infer Mode extends SchemaMode } ? Mode : never;\n\n/** Selects async mode when any member of a schema collection is async. */\nexport type MergeSchemaModes<Modes extends SchemaMode> = 'async' extends Modes ? 'async' : 'sync';\n\nexport type InferOutput<T> =\n T extends Schema<infer Output, unknown, SchemaMode>\n ? Output\n : T extends { readonly [schemaOutput]: infer Output }\n ? Output\n : never;\nexport type InferInput<T> = T extends { readonly [schemaInput]: infer Input } ? Input : unknown;\nexport type Infer<T> = InferOutput<T>;\n\n/** Re-exported for convenience — defined in messages.ts. */\nexport type { Messages } from './messages';\n"],"mappings":"AAEA,IAAa,EAAY,CACvB,OAAQ,SACR,eAAgB,iBAChB,aAAc,eACd,iBAAkB,mBAClB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,oBAAqB,sBACrB,aAAc,eACd,eAAgB,iBAChB,aAAc,eACd,cAAe,gBACf,eAAgB,iBAChB,YAAa,cACb,gBAAiB,kBACjB,QAAS,UACT,UAAW,WACb,EAgPa,EAAa,OAAO,kBAAkB"}
package/dist/types.d.ts CHANGED
@@ -29,6 +29,8 @@ export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
29
29
  export type MessageFn<Ctx extends Record<string, unknown> = Record<string, unknown>> = string | ((ctx: Ctx) => string);
30
30
  /** Plain JSON Schema object (targeting JSON Schema 2020-12). */
31
31
  export type JsonSchema = Record<string, unknown>;
32
+ /** Frozen data-only representation of a schema that can be exported to tooling. */
33
+ export type SchemaDefinition = SchemaDescriptor;
32
34
  /**
33
35
  * A typed discriminated union of all issues emitted by built-in validators.
34
36
  *
@@ -198,19 +200,19 @@ export type CheckContext = {
198
200
  }) => void;
199
201
  };
200
202
  /**
201
- * Return type of a `validate()` callback.
203
+ * Return type of a `check()` callback.
202
204
  * - `string` — validation failed; the string becomes the error message.
203
205
  * - `false` — validation failed with no message (use `addIssue` for a message).
204
206
  * - `true` / `null` / `void` — validation passed.
205
207
  *
206
208
  * The shorthand `condition || 'message'` works naturally:
207
209
  * ```ts
208
- * s.string().validate(v => v.length > 0 || 'Cannot be empty')
210
+ * s.string().check((value) => value.length > 0 || 'Cannot be empty')
209
211
  * ```
210
212
  */
211
213
  export type ValidateResult = boolean | null | void | string;
212
214
  /** Re-exported from errors for convenience — defined there. */
213
- export type { FlatError, FlatErrorFirst, FormattedErrors } from './errors';
215
+ export type { FlatError, FlatErrorFirst } from './errors';
214
216
  /**
215
217
  * Visitor map for schema.walk(). Container handlers receive already-walked children (type R).
216
218
  * All handlers are optional — unmatched kinds return `null` unless an `unknown` fallback is provided.
@@ -219,27 +221,27 @@ export type { FlatError, FlatErrorFirst, FormattedErrors } from './errors';
219
221
  * schema-specific properties (e.g. `ArraySchema.itemSchema`) without casting.
220
222
  */
221
223
  export type SchemaWalker<R> = {
222
- array?: (schema: import('./schemas/array').ArraySchema<any>, item: R | null) => R;
223
- bigint?: (schema: import('./schemas/bigint').BigIntSchema<any>) => R;
224
- boolean?: (schema: import('./schemas/boolean').BooleanSchema<any>) => R;
225
- date?: (schema: import('./schemas/date').DateSchema<any>) => R;
226
- enum?: (schema: import('./schemas/enum').EnumSchema<any>) => R;
227
- instanceof?: (schema: import('./schemas/instanceof').InstanceOfSchema<any>) => R;
228
- intersect?: (schema: import('./schemas/intersect').IntersectSchema<any>, branches: (R | null)[]) => R;
229
- lazy?: (schema: import('./schemas/lazy').LazySchema<any>) => R;
230
- literal?: (schema: import('./schemas/literal').LiteralSchema<any>) => R;
231
- map?: (schema: import('./schemas/map').MapSchema<any, any>, key: R | null, value: R | null) => R;
232
- never?: (schema: import('./schemas/never').NeverSchema) => R;
233
- number?: (schema: import('./schemas/number').NumberSchema<any>) => R;
234
- object?: (schema: import('./schemas/object').ObjectSchema<any>, fields: Record<string, R | null>) => R;
235
- pipe?: (schema: import('./core').PipeSchema<any, any>, from: R | null, to: R | null) => R;
236
- record?: (schema: import('./schemas/record').RecordSchema<any, any>, key: R | null, value: R | null) => R;
237
- set?: (schema: import('./schemas/set').SetSchema<any>, item: R | null) => R;
238
- string?: (schema: import('./schemas/string').StringSchema<any>) => R;
239
- tuple?: (schema: import('./schemas/tuple').TupleSchema<any, any>, items: (R | null)[], rest: R | null) => R;
240
- union?: (schema: import('./schemas/union').UnionSchema<any>, branches: (R | null)[]) => R;
224
+ array?: <T extends AnySchema, Mode extends SchemaMode>(schema: import('./schemas/array').ArraySchema<T, Mode>, item: R | null) => R;
225
+ bigint?: <Input, Mode extends SchemaMode>(schema: import('./schemas/bigint').BigIntSchema<Input, Mode>) => R;
226
+ boolean?: <Input, Mode extends SchemaMode>(schema: import('./schemas/boolean').BooleanSchema<Input, Mode>) => R;
227
+ date?: <Input, Mode extends SchemaMode>(schema: import('./schemas/date').DateSchema<Input, Mode>) => R;
228
+ enum?: <T extends import('./schemas/enum').EnumValues, Mode extends SchemaMode>(schema: import('./schemas/enum').EnumSchema<T, Mode>) => R;
229
+ instanceof?: <T, Mode extends SchemaMode>(schema: import('./schemas/instanceof').InstanceOfSchema<T, Mode>) => R;
230
+ intersect?: <T extends readonly AnySchema[], Mode extends SchemaMode>(schema: import('./schemas/intersect').IntersectSchema<T, Mode>, branches: (R | null)[]) => R;
231
+ lazy?: <T, Input, Mode extends SchemaMode>(schema: import('./schemas/lazy').LazySchema<T, Input, Mode>) => R;
232
+ literal?: <T extends string | number | boolean | null | undefined, Mode extends SchemaMode>(schema: import('./schemas/literal').LiteralSchema<T, Mode>) => R;
233
+ map?: <K extends AnySchema, V extends AnySchema, Mode extends SchemaMode>(schema: import('./schemas/map').MapSchema<K, V, Mode>, key: R | null, value: R | null) => R;
234
+ never?: <Mode extends SchemaMode>(schema: import('./schemas/never').NeverSchema<Mode>) => R;
235
+ number?: <Input, Mode extends SchemaMode>(schema: import('./schemas/number').NumberSchema<Input, Mode>) => R;
236
+ object?: <T extends import('./schemas/object').ObjectShape, Mode extends SchemaMode>(schema: import('./schemas/object').ObjectSchema<T, Mode>, fields: Record<string, R | null>) => R;
237
+ pipe?: <To extends AnySchema, From extends AnySchema, Mode extends SchemaMode>(schema: import('./core').PipeSchema<To, From, Mode>, from: R | null, to: R | null) => R;
238
+ record?: <K extends AnySchema, V extends AnySchema, Mode extends SchemaMode>(schema: import('./schemas/record').RecordSchema<K, V, Mode>, key: R | null, value: R | null) => R;
239
+ set?: <T extends AnySchema, Mode extends SchemaMode>(schema: import('./schemas/set').SetSchema<T, Mode>, item: R | null) => R;
240
+ string?: <Input, Mode extends SchemaMode>(schema: import('./schemas/string').StringSchema<Input, Mode>) => R;
241
+ tuple?: <T extends import('./schemas/tuple').TupleSchemas, Rest extends AnySchema | null, Mode extends SchemaMode>(schema: import('./schemas/tuple').TupleSchema<T, Rest, Mode>, items: (R | null)[], rest: R | null) => R;
242
+ union?: <T extends readonly AnySchema[], Mode extends SchemaMode>(schema: import('./schemas/union').UnionSchema<T, Mode>, branches: (R | null)[]) => R;
241
243
  unknown?: (schema: AnySchema) => R;
242
- variant?: (schema: import('./schemas/variant').VariantSchema<any, any>, branches: Record<string, R | null>) => R;
244
+ variant?: <K extends string, M extends Record<string, import('./schemas/object').ObjectSchema<any, any>>, Mode extends SchemaMode>(schema: import('./schemas/variant').VariantSchema<K, M, Mode>, branches: Record<string, R | null>) => R;
243
245
  };
244
246
  type BaseDescriptor = {
245
247
  description?: string;
@@ -317,9 +319,42 @@ export type ParseResult<T> = {
317
319
  error: SpellValidationError;
318
320
  success: false;
319
321
  };
320
- export type AnySchema = Schema<unknown, unknown>;
321
- export type InferOutput<T> = T extends Schema<infer O> ? O : never;
322
- export type InferInput<T> = T extends Schema<any, infer I> ? I : never;
322
+ /** Public structural marker for a schema's parsing capability. */
323
+ export declare const schemaMode: unique symbol;
324
+ /** Whether a schema can be parsed synchronously or requires asynchronous parsing. */
325
+ export type SchemaMode = 'async' | 'sync';
326
+ /** A structural schema surface accepted by composition helpers. */
327
+ export type SchemaSurface<Output = unknown, Input = Output, Mode extends SchemaMode = SchemaMode> = {
328
+ _parseFullAsync(value: unknown, ctx?: ParseContext): Promise<{
329
+ data: unknown;
330
+ issues: Issue[];
331
+ }>;
332
+ _parseFullSync(value: unknown, ctx?: ParseContext): {
333
+ data: unknown;
334
+ issues: Issue[];
335
+ };
336
+ definition(): SchemaDefinition;
337
+ isOptional: boolean;
338
+ optional(): SchemaSurface<Output | undefined, Input | undefined, Mode>;
339
+ required(): SchemaSurface<Exclude<Output, undefined>, Exclude<Input, undefined>, Mode>;
340
+ readonly [schemaInput]: Input;
341
+ readonly [schemaMode]: Mode;
342
+ readonly [schemaOutput]: Output;
343
+ walk<R>(visitor: SchemaWalker<R>): R | null;
344
+ };
345
+ export type AnySchema<Output = unknown, Input = Output, Mode extends SchemaMode = SchemaMode> = SchemaSurface<Output, Input, Mode>;
346
+ /** Extracts a schema's parsing capability. */
347
+ export type InferSchemaMode<T> = T extends {
348
+ readonly [schemaMode]: infer Mode extends SchemaMode;
349
+ } ? Mode : never;
350
+ /** Selects async mode when any member of a schema collection is async. */
351
+ export type MergeSchemaModes<Modes extends SchemaMode> = 'async' extends Modes ? 'async' : 'sync';
352
+ export type InferOutput<T> = T extends Schema<infer Output, unknown, SchemaMode> ? Output : T extends {
353
+ readonly [schemaOutput]: infer Output;
354
+ } ? Output : never;
355
+ export type InferInput<T> = T extends {
356
+ readonly [schemaInput]: infer Input;
357
+ } ? Input : unknown;
323
358
  export type Infer<T> = InferOutput<T>;
324
359
  /** Re-exported for convenience — defined in messages.ts. */
325
360
  export type { Messages } from './messages';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,2 +1,2 @@
1
- var e={custom:`custom`,invalid_base64:`invalid_base64`,invalid_date:`invalid_date`,invalid_duration:`invalid_duration`,invalid_enum:`invalid_enum`,invalid_finite:`invalid_finite`,invalid_integer:`invalid_integer`,invalid_keys:`invalid_keys`,invalid_length:`invalid_length`,invalid_literal:`invalid_literal`,invalid_multiple_of:`invalid_multiple_of`,invalid_safe:`invalid_safe`,invalid_string:`invalid_string`,invalid_type:`invalid_type`,invalid_union:`invalid_union`,invalid_unique:`invalid_unique`,invalid_url:`invalid_url`,invalid_variant:`invalid_variant`,too_big:`too_big`,too_small:`too_small`};export{e as ErrorCode};
1
+ var e={custom:`custom`,invalid_base64:`invalid_base64`,invalid_date:`invalid_date`,invalid_duration:`invalid_duration`,invalid_enum:`invalid_enum`,invalid_finite:`invalid_finite`,invalid_integer:`invalid_integer`,invalid_keys:`invalid_keys`,invalid_length:`invalid_length`,invalid_literal:`invalid_literal`,invalid_multiple_of:`invalid_multiple_of`,invalid_safe:`invalid_safe`,invalid_string:`invalid_string`,invalid_type:`invalid_type`,invalid_union:`invalid_union`,invalid_unique:`invalid_unique`,invalid_url:`invalid_url`,invalid_variant:`invalid_variant`,too_big:`too_big`,too_small:`too_small`},t=Symbol(`spell.schemaMode`);export{e as ErrorCode,t as schemaMode};
2
2
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["/* -------------------- Error Codes -------------------- */\n\nexport const ErrorCode = {\n custom: 'custom',\n invalid_base64: 'invalid_base64',\n invalid_date: 'invalid_date',\n invalid_duration: 'invalid_duration',\n invalid_enum: 'invalid_enum',\n invalid_finite: 'invalid_finite',\n invalid_integer: 'invalid_integer',\n invalid_keys: 'invalid_keys',\n invalid_length: 'invalid_length',\n invalid_literal: 'invalid_literal',\n invalid_multiple_of: 'invalid_multiple_of',\n invalid_safe: 'invalid_safe',\n invalid_string: 'invalid_string',\n invalid_type: 'invalid_type',\n invalid_union: 'invalid_union',\n invalid_unique: 'invalid_unique',\n invalid_url: 'invalid_url',\n invalid_variant: 'invalid_variant',\n too_big: 'too_big',\n too_small: 'too_small',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\n/* -------------------- Messages -------------------- */\n\n/**\n * A validation message — either a static string or a function that receives context and returns a string.\n * **Note:** Static string values are used verbatim with no interpolation. Use the function form\n * for context-dependent messages (e.g. `(ctx) => \\`Must be at least ${ctx.min}\\``).\n */\nexport type MessageFn<Ctx extends Record<string, unknown> = Record<string, unknown>> = string | ((ctx: Ctx) => string);\n\n/* -------------------- JSON Schema -------------------- */\n\n/** Plain JSON Schema object (targeting JSON Schema 2020-12). */\nexport type JsonSchema = Record<string, unknown>;\n\n/* -------------------- Issues -------------------- */\n\n/**\n * A typed discriminated union of all issues emitted by built-in validators.\n *\n * Narrowing on `code` gives precise access to `params`:\n * ```ts\n * if (error.code === 'too_small') {\n * const min = error.params.min; // number | bigint | Date\n * }\n * ```\n */\nexport type Issue =\n | { code: 'custom'; message: string; params?: Record<string, unknown>; path: (string | number)[] }\n | { code: 'invalid_base64'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_date'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_duration'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_enum'; message: string; params: { values: readonly unknown[] }; path: (string | number)[] }\n | { code: 'invalid_finite'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_integer'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_keys'; message: string; params: { keys: string[] }; path: (string | number)[] }\n | { code: 'invalid_length'; message: string; params: { exact: number }; path: (string | number)[] }\n | { code: 'invalid_literal'; message: string; params: { expected: unknown }; path: (string | number)[] }\n | { code: 'invalid_multiple_of'; message: string; params: { step: number | bigint }; path: (string | number)[] }\n | { code: 'invalid_safe'; message: string; params?: undefined; path: (string | number)[] }\n | {\n code: 'invalid_string';\n message: string;\n params: { format?: string; includes?: string; pattern?: string; prefix?: string; suffix?: string };\n path: (string | number)[];\n }\n | { code: 'invalid_type'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_union'; message: string; params: { errors: Issue[][] }; path: (string | number)[] }\n | { code: 'invalid_unique'; message: string; params: { unique: true }; path: (string | number)[] }\n | { code: 'invalid_url'; message: string; params: { format: string }; path: (string | number)[] }\n | {\n code: 'invalid_variant';\n message: string;\n params: { discriminator: string; expected: string[] };\n path: (string | number)[];\n }\n | {\n code: 'too_big';\n message: string;\n params: { exclusive?: boolean; max: number | bigint | Date };\n path: (string | number)[];\n }\n | {\n code: 'too_small';\n message: string;\n params: { exclusive?: boolean; min: number | bigint | Date };\n path: (string | number)[];\n }\n | { code: string & {}; message: string; params?: Record<string, unknown>; path: (string | number)[] };\n\n/** ParseContext carries the active message set through the parse pipeline. */\nexport type ParseContext = {\n messages: import('./messages').Messages;\n};\n\n/**\n * Validator function. Receives the value after type-checking and the active ParseContext.\n * Returns an Issue array on failure, null on success, or a Promise for async validators.\n */\nexport type ValidateFn = (value: unknown, ctx?: ParseContext) => Issue[] | null | Promise<Issue[] | null>;\n\nexport type CheckContext = {\n addIssue: (issue: {\n code: string;\n message: string;\n params?: Record<string, unknown>;\n path?: (string | number)[];\n }) => void;\n};\n\n/**\n * Return type of a `validate()` callback.\n * - `string` — validation failed; the string becomes the error message.\n * - `false` — validation failed with no message (use `addIssue` for a message).\n * - `true` / `null` / `void` — validation passed.\n *\n * The shorthand `condition || 'message'` works naturally:\n * ```ts\n * s.string().validate(v => v.length > 0 || 'Cannot be empty')\n * ```\n */\nexport type ValidateResult = boolean | null | void | string;\n\n/** Re-exported from errors for convenience — defined there. */\nexport type { FlatError, FlatErrorFirst, FormattedErrors } from './errors';\n\n/* -------------------- Schema Introspection -------------------- */\n\n/**\n * Visitor map for schema.walk(). Container handlers receive already-walked children (type R).\n * All handlers are optional — unmatched kinds return `null` unless an `unknown` fallback is provided.\n *\n * Each handler receives the concrete schema type for that kind, enabling access to\n * schema-specific properties (e.g. `ArraySchema.itemSchema`) without casting.\n */\nexport type SchemaWalker<R> = {\n array?: (schema: import('./schemas/array').ArraySchema<any>, item: R | null) => R;\n bigint?: (schema: import('./schemas/bigint').BigIntSchema<any>) => R;\n boolean?: (schema: import('./schemas/boolean').BooleanSchema<any>) => R;\n date?: (schema: import('./schemas/date').DateSchema<any>) => R;\n enum?: (schema: import('./schemas/enum').EnumSchema<any>) => R;\n instanceof?: (schema: import('./schemas/instanceof').InstanceOfSchema<any>) => R;\n intersect?: (schema: import('./schemas/intersect').IntersectSchema<any>, branches: (R | null)[]) => R;\n lazy?: (schema: import('./schemas/lazy').LazySchema<any>) => R;\n literal?: (schema: import('./schemas/literal').LiteralSchema<any>) => R;\n map?: (schema: import('./schemas/map').MapSchema<any, any>, key: R | null, value: R | null) => R;\n never?: (schema: import('./schemas/never').NeverSchema) => R;\n number?: (schema: import('./schemas/number').NumberSchema<any>) => R;\n object?: (schema: import('./schemas/object').ObjectSchema<any>, fields: Record<string, R | null>) => R;\n pipe?: (schema: import('./core').PipeSchema<any, any>, from: R | null, to: R | null) => R;\n record?: (schema: import('./schemas/record').RecordSchema<any, any>, key: R | null, value: R | null) => R;\n set?: (schema: import('./schemas/set').SetSchema<any>, item: R | null) => R;\n string?: (schema: import('./schemas/string').StringSchema<any>) => R;\n tuple?: (schema: import('./schemas/tuple').TupleSchema<any, any>, items: (R | null)[], rest: R | null) => R;\n union?: (schema: import('./schemas/union').UnionSchema<any>, branches: (R | null)[]) => R;\n unknown?: (schema: AnySchema) => R;\n variant?: (schema: import('./schemas/variant').VariantSchema<any, any>, branches: Record<string, R | null>) => R;\n};\n\ntype BaseDescriptor = {\n description?: string;\n isNullable?: boolean;\n isOptional?: boolean;\n};\n\nexport type SchemaDescriptor = BaseDescriptor &\n (\n | { kind: 'any' | 'unknown' | 'never' | 'boolean' | 'bigint' | 'date' | 'lazy' }\n | { className: string; kind: 'instanceof' }\n | {\n contentEncoding?: string;\n format?: string;\n kind: 'string';\n maxLength?: number;\n minLength?: number;\n pattern?: string | null;\n }\n | {\n exclusiveMaximum?: number;\n exclusiveMinimum?: number;\n kind: 'number';\n maximum?: number;\n minimum?: number;\n multipleOf?: number;\n typeHint?: 'integer';\n }\n | { kind: 'literal'; value: string | number | boolean | null | undefined }\n | { kind: 'enum'; values: readonly (string | number)[] }\n | { items: SchemaDescriptor; kind: 'array'; maxItems?: number; minItems?: number }\n | { items: SchemaDescriptor[]; kind: 'tuple'; rest: SchemaDescriptor | null }\n | { fields: Record<string, SchemaDescriptor>; kind: 'object'; strict: boolean }\n | { key: SchemaDescriptor; kind: 'record'; value: SchemaDescriptor }\n | { items: SchemaDescriptor; kind: 'set' }\n | { key: SchemaDescriptor; kind: 'map'; value: SchemaDescriptor }\n | { branches: SchemaDescriptor[]; kind: 'union' | 'intersect' }\n | { branches: Record<string, SchemaDescriptor>; discriminator: string; kind: 'variant' }\n | { from: SchemaDescriptor; kind: 'pipe'; to: SchemaDescriptor }\n );\n\n/* -------------------- ParseResult (forward-references SpellValidationError) -------------------- */\n\nimport type { Schema } from './core';\n// Import only the type to avoid circular dependencies\nimport type { SpellValidationError } from './errors';\n\nexport type ParseResult<T> = { data: T; success: true } | { error: SpellValidationError; success: false };\n\n/* -------------------- AnySchema / Infer (forward-references Schema) -------------------- */\n\nexport type AnySchema = Schema<unknown, unknown>;\nexport type InferOutput<T> = T extends Schema<infer O> ? O : never;\nexport type InferInput<T> = T extends Schema<any, infer I> ? I : never;\nexport type Infer<T> = InferOutput<T>;\n\n/** Re-exported for convenience — defined in messages.ts. */\nexport type { Messages } from './messages';\n"],"mappings":"AAEA,IAAa,EAAY,CACvB,OAAQ,SACR,eAAgB,iBAChB,aAAc,eACd,iBAAkB,mBAClB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,oBAAqB,sBACrB,aAAc,eACd,eAAgB,iBAChB,aAAc,eACd,cAAe,gBACf,eAAgB,iBAChB,YAAa,cACb,gBAAiB,kBACjB,QAAS,UACT,UAAW,WACb"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["/* -------------------- Error Codes -------------------- */\n\nexport const ErrorCode = {\n custom: 'custom',\n invalid_base64: 'invalid_base64',\n invalid_date: 'invalid_date',\n invalid_duration: 'invalid_duration',\n invalid_enum: 'invalid_enum',\n invalid_finite: 'invalid_finite',\n invalid_integer: 'invalid_integer',\n invalid_keys: 'invalid_keys',\n invalid_length: 'invalid_length',\n invalid_literal: 'invalid_literal',\n invalid_multiple_of: 'invalid_multiple_of',\n invalid_safe: 'invalid_safe',\n invalid_string: 'invalid_string',\n invalid_type: 'invalid_type',\n invalid_union: 'invalid_union',\n invalid_unique: 'invalid_unique',\n invalid_url: 'invalid_url',\n invalid_variant: 'invalid_variant',\n too_big: 'too_big',\n too_small: 'too_small',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\n/* -------------------- Messages -------------------- */\n\n/**\n * A validation message — either a static string or a function that receives context and returns a string.\n * **Note:** Static string values are used verbatim with no interpolation. Use the function form\n * for context-dependent messages (e.g. `(ctx) => \\`Must be at least ${ctx.min}\\``).\n */\nexport type MessageFn<Ctx extends Record<string, unknown> = Record<string, unknown>> = string | ((ctx: Ctx) => string);\n\n/* -------------------- JSON Schema -------------------- */\n\n/** Plain JSON Schema object (targeting JSON Schema 2020-12). */\nexport type JsonSchema = Record<string, unknown>;\n\n/** Frozen data-only representation of a schema that can be exported to tooling. */\nexport type SchemaDefinition = SchemaDescriptor;\n\n/* -------------------- Issues -------------------- */\n\n/**\n * A typed discriminated union of all issues emitted by built-in validators.\n *\n * Narrowing on `code` gives precise access to `params`:\n * ```ts\n * if (error.code === 'too_small') {\n * const min = error.params.min; // number | bigint | Date\n * }\n * ```\n */\nexport type Issue =\n | { code: 'custom'; message: string; params?: Record<string, unknown>; path: (string | number)[] }\n | { code: 'invalid_base64'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_date'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_duration'; message: string; params: { format: string }; path: (string | number)[] }\n | { code: 'invalid_enum'; message: string; params: { values: readonly unknown[] }; path: (string | number)[] }\n | { code: 'invalid_finite'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_integer'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_keys'; message: string; params: { keys: string[] }; path: (string | number)[] }\n | { code: 'invalid_length'; message: string; params: { exact: number }; path: (string | number)[] }\n | { code: 'invalid_literal'; message: string; params: { expected: unknown }; path: (string | number)[] }\n | { code: 'invalid_multiple_of'; message: string; params: { step: number | bigint }; path: (string | number)[] }\n | { code: 'invalid_safe'; message: string; params?: undefined; path: (string | number)[] }\n | {\n code: 'invalid_string';\n message: string;\n params: { format?: string; includes?: string; pattern?: string; prefix?: string; suffix?: string };\n path: (string | number)[];\n }\n | { code: 'invalid_type'; message: string; params?: undefined; path: (string | number)[] }\n | { code: 'invalid_union'; message: string; params: { errors: Issue[][] }; path: (string | number)[] }\n | { code: 'invalid_unique'; message: string; params: { unique: true }; path: (string | number)[] }\n | { code: 'invalid_url'; message: string; params: { format: string }; path: (string | number)[] }\n | {\n code: 'invalid_variant';\n message: string;\n params: { discriminator: string; expected: string[] };\n path: (string | number)[];\n }\n | {\n code: 'too_big';\n message: string;\n params: { exclusive?: boolean; max: number | bigint | Date };\n path: (string | number)[];\n }\n | {\n code: 'too_small';\n message: string;\n params: { exclusive?: boolean; min: number | bigint | Date };\n path: (string | number)[];\n }\n | { code: string & {}; message: string; params?: Record<string, unknown>; path: (string | number)[] };\n\n/** ParseContext carries the active message set through the parse pipeline. */\nexport type ParseContext = {\n messages: import('./messages').Messages;\n};\n\n/**\n * Validator function. Receives the value after type-checking and the active ParseContext.\n * Returns an Issue array on failure, null on success, or a Promise for async validators.\n */\nexport type ValidateFn = (value: unknown, ctx?: ParseContext) => Issue[] | null | Promise<Issue[] | null>;\n\nexport type CheckContext = {\n addIssue: (issue: {\n code: string;\n message: string;\n params?: Record<string, unknown>;\n path?: (string | number)[];\n }) => void;\n};\n\n/**\n * Return type of a `check()` callback.\n * - `string` — validation failed; the string becomes the error message.\n * - `false` — validation failed with no message (use `addIssue` for a message).\n * - `true` / `null` / `void` — validation passed.\n *\n * The shorthand `condition || 'message'` works naturally:\n * ```ts\n * s.string().check((value) => value.length > 0 || 'Cannot be empty')\n * ```\n */\nexport type ValidateResult = boolean | null | void | string;\n\n/** Re-exported from errors for convenience — defined there. */\nexport type { FlatError, FlatErrorFirst } from './errors';\n\n/* -------------------- Schema Introspection -------------------- */\n\n/**\n * Visitor map for schema.walk(). Container handlers receive already-walked children (type R).\n * All handlers are optional — unmatched kinds return `null` unless an `unknown` fallback is provided.\n *\n * Each handler receives the concrete schema type for that kind, enabling access to\n * schema-specific properties (e.g. `ArraySchema.itemSchema`) without casting.\n */\nexport type SchemaWalker<R> = {\n array?: <T extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/array').ArraySchema<T, Mode>,\n item: R | null,\n ) => R;\n bigint?: <Input, Mode extends SchemaMode>(schema: import('./schemas/bigint').BigIntSchema<Input, Mode>) => R;\n boolean?: <Input, Mode extends SchemaMode>(schema: import('./schemas/boolean').BooleanSchema<Input, Mode>) => R;\n date?: <Input, Mode extends SchemaMode>(schema: import('./schemas/date').DateSchema<Input, Mode>) => R;\n enum?: <T extends import('./schemas/enum').EnumValues, Mode extends SchemaMode>(\n schema: import('./schemas/enum').EnumSchema<T, Mode>,\n ) => R;\n instanceof?: <T, Mode extends SchemaMode>(schema: import('./schemas/instanceof').InstanceOfSchema<T, Mode>) => R;\n intersect?: <T extends readonly AnySchema[], Mode extends SchemaMode>(\n schema: import('./schemas/intersect').IntersectSchema<T, Mode>,\n branches: (R | null)[],\n ) => R;\n lazy?: <T, Input, Mode extends SchemaMode>(schema: import('./schemas/lazy').LazySchema<T, Input, Mode>) => R;\n literal?: <T extends string | number | boolean | null | undefined, Mode extends SchemaMode>(\n schema: import('./schemas/literal').LiteralSchema<T, Mode>,\n ) => R;\n map?: <K extends AnySchema, V extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/map').MapSchema<K, V, Mode>,\n key: R | null,\n value: R | null,\n ) => R;\n never?: <Mode extends SchemaMode>(schema: import('./schemas/never').NeverSchema<Mode>) => R;\n number?: <Input, Mode extends SchemaMode>(schema: import('./schemas/number').NumberSchema<Input, Mode>) => R;\n object?: <T extends import('./schemas/object').ObjectShape, Mode extends SchemaMode>(\n schema: import('./schemas/object').ObjectSchema<T, Mode>,\n fields: Record<string, R | null>,\n ) => R;\n pipe?: <To extends AnySchema, From extends AnySchema, Mode extends SchemaMode>(\n schema: import('./core').PipeSchema<To, From, Mode>,\n from: R | null,\n to: R | null,\n ) => R;\n record?: <K extends AnySchema, V extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/record').RecordSchema<K, V, Mode>,\n key: R | null,\n value: R | null,\n ) => R;\n set?: <T extends AnySchema, Mode extends SchemaMode>(\n schema: import('./schemas/set').SetSchema<T, Mode>,\n item: R | null,\n ) => R;\n string?: <Input, Mode extends SchemaMode>(schema: import('./schemas/string').StringSchema<Input, Mode>) => R;\n tuple?: <T extends import('./schemas/tuple').TupleSchemas, Rest extends AnySchema | null, Mode extends SchemaMode>(\n schema: import('./schemas/tuple').TupleSchema<T, Rest, Mode>,\n items: (R | null)[],\n rest: R | null,\n ) => R;\n union?: <T extends readonly AnySchema[], Mode extends SchemaMode>(\n schema: import('./schemas/union').UnionSchema<T, Mode>,\n branches: (R | null)[],\n ) => R;\n unknown?: (schema: AnySchema) => R;\n variant?: <\n K extends string,\n M extends Record<string, import('./schemas/object').ObjectSchema<any, any>>,\n Mode extends SchemaMode,\n >(\n schema: import('./schemas/variant').VariantSchema<K, M, Mode>,\n branches: Record<string, R | null>,\n ) => R;\n};\n\ntype BaseDescriptor = {\n description?: string;\n isNullable?: boolean;\n isOptional?: boolean;\n};\n\nexport type SchemaDescriptor = BaseDescriptor &\n (\n | { kind: 'any' | 'unknown' | 'never' | 'boolean' | 'bigint' | 'date' | 'lazy' }\n | { className: string; kind: 'instanceof' }\n | {\n contentEncoding?: string;\n format?: string;\n kind: 'string';\n maxLength?: number;\n minLength?: number;\n pattern?: string | null;\n }\n | {\n exclusiveMaximum?: number;\n exclusiveMinimum?: number;\n kind: 'number';\n maximum?: number;\n minimum?: number;\n multipleOf?: number;\n typeHint?: 'integer';\n }\n | { kind: 'literal'; value: string | number | boolean | null | undefined }\n | { kind: 'enum'; values: readonly (string | number)[] }\n | { items: SchemaDescriptor; kind: 'array'; maxItems?: number; minItems?: number }\n | { items: SchemaDescriptor[]; kind: 'tuple'; rest: SchemaDescriptor | null }\n | { fields: Record<string, SchemaDescriptor>; kind: 'object'; strict: boolean }\n | { key: SchemaDescriptor; kind: 'record'; value: SchemaDescriptor }\n | { items: SchemaDescriptor; kind: 'set' }\n | { key: SchemaDescriptor; kind: 'map'; value: SchemaDescriptor }\n | { branches: SchemaDescriptor[]; kind: 'union' | 'intersect' }\n | { branches: Record<string, SchemaDescriptor>; discriminator: string; kind: 'variant' }\n | { from: SchemaDescriptor; kind: 'pipe'; to: SchemaDescriptor }\n );\n\n/* -------------------- ParseResult (forward-references SpellValidationError) -------------------- */\n\nimport type { Schema } from './core';\n// Import only the type to avoid circular dependencies\nimport type { SpellValidationError } from './errors';\n\nexport type ParseResult<T> = { data: T; success: true } | { error: SpellValidationError; success: false };\n\n/* -------------------- Schema execution mode / Infer (forward-references Schema) -------------------- */\n\n/** @internal */\nexport const schemaInput = Symbol('spell.schemaInput');\n/** Public structural marker for a schema's parsing capability. */\nexport const schemaMode = Symbol('spell.schemaMode');\n/** @internal */\nexport const schemaOutput = Symbol('spell.schemaOutput');\n\n/** Whether a schema can be parsed synchronously or requires asynchronous parsing. */\nexport type SchemaMode = 'async' | 'sync';\n\n/** A structural schema surface accepted by composition helpers. */\nexport type SchemaSurface<Output = unknown, Input = Output, Mode extends SchemaMode = SchemaMode> = {\n _parseFullAsync(value: unknown, ctx?: ParseContext): Promise<{ data: unknown; issues: Issue[] }>;\n _parseFullSync(value: unknown, ctx?: ParseContext): { data: unknown; issues: Issue[] };\n definition(): SchemaDefinition;\n isOptional: boolean;\n optional(): SchemaSurface<Output | undefined, Input | undefined, Mode>;\n required(): SchemaSurface<Exclude<Output, undefined>, Exclude<Input, undefined>, Mode>;\n readonly [schemaInput]: Input;\n readonly [schemaMode]: Mode;\n readonly [schemaOutput]: Output;\n walk<R>(visitor: SchemaWalker<R>): R | null;\n};\n\nexport type AnySchema<Output = unknown, Input = Output, Mode extends SchemaMode = SchemaMode> = SchemaSurface<\n Output,\n Input,\n Mode\n>;\n\n/** Extracts a schema's parsing capability. */\nexport type InferSchemaMode<T> = T extends { readonly [schemaMode]: infer Mode extends SchemaMode } ? Mode : never;\n\n/** Selects async mode when any member of a schema collection is async. */\nexport type MergeSchemaModes<Modes extends SchemaMode> = 'async' extends Modes ? 'async' : 'sync';\n\nexport type InferOutput<T> =\n T extends Schema<infer Output, unknown, SchemaMode>\n ? Output\n : T extends { readonly [schemaOutput]: infer Output }\n ? Output\n : never;\nexport type InferInput<T> = T extends { readonly [schemaInput]: infer Input } ? Input : unknown;\nexport type Infer<T> = InferOutput<T>;\n\n/** Re-exported for convenience — defined in messages.ts. */\nexport type { Messages } from './messages';\n"],"mappings":"AAEA,IAAa,EAAY,CACvB,OAAQ,SACR,eAAgB,iBAChB,aAAc,eACd,iBAAkB,mBAClB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,aAAc,eACd,eAAgB,iBAChB,gBAAiB,kBACjB,oBAAqB,sBACrB,aAAc,eACd,eAAgB,iBAChB,aAAc,eACd,cAAe,gBACf,eAAgB,iBAChB,YAAa,cACb,gBAAiB,kBACjB,QAAS,UACT,UAAW,WACb,EAgPa,EAAa,OAAO,kBAAkB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vielzeug/spell",
3
- "version": "1.2.2",
3
+ "version": "2.0.0",
4
4
  "description": "Schema-first validation and parsing — runtime type checking, coercion, and custom refinements",
5
5
  "type": "module",
6
6
  "files": [
@@ -15,6 +15,18 @@
15
15
  "types": "./dist/index.d.ts",
16
16
  "import": "./dist/index.js",
17
17
  "require": "./dist/index.cjs"
18
+ },
19
+ "./json": {
20
+ "source": "./src/json.ts",
21
+ "types": "./dist/json.d.ts",
22
+ "import": "./dist/json.js",
23
+ "require": "./dist/json.cjs"
24
+ },
25
+ "./predicates": {
26
+ "source": "./src/predicates.ts",
27
+ "types": "./dist/predicates.d.ts",
28
+ "import": "./dist/predicates.js",
29
+ "require": "./dist/predicates.cjs"
18
30
  }
19
31
  },
20
32
  "scripts": {
@@ -24,7 +36,8 @@
24
36
  "lint": "eslint src",
25
37
  "prepublishOnly": "pnpm run build",
26
38
  "preview": "vite preview",
27
- "test": "vitest",
39
+ "test": "pnpm test:types && vitest",
40
+ "test:types": "tsc -p tsconfig.types.json",
28
41
  "build:bundle": "vite build --config vite.bundle.config.ts"
29
42
  },
30
43
  "publishConfig": {
@@ -35,12 +48,12 @@
35
48
  "node": ">=22"
36
49
  },
37
50
  "dependencies": {
38
- "@vielzeug/arsenal": "1.1.2"
51
+ "@vielzeug/arsenal": "2.0.0"
39
52
  },
40
53
  "devDependencies": {
41
- "@types/node": "^26.1.0",
54
+ "@types/node": "^26.1.2",
42
55
  "typescript": "^6.0.3",
43
- "vite": "^8.1.3",
56
+ "vite": "^8.2.0",
44
57
  "vitest": "^4.1.10"
45
58
  }
46
59
  }