stringent 0.0.2 → 0.0.4

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 (58) hide show
  1. package/README.md +61 -73
  2. package/dist/context.d.ts +20 -2
  3. package/dist/context.d.ts.map +1 -0
  4. package/dist/context.js +1 -0
  5. package/dist/context.js.map +1 -0
  6. package/dist/createParser.d.ts +109 -26
  7. package/dist/createParser.d.ts.map +1 -0
  8. package/dist/createParser.js +80 -19
  9. package/dist/createParser.js.map +1 -0
  10. package/dist/errors.d.ts +121 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +186 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/grammar/index.d.ts +19 -14
  15. package/dist/grammar/index.d.ts.map +1 -0
  16. package/dist/grammar/index.js +4 -3
  17. package/dist/grammar/index.js.map +1 -0
  18. package/dist/index.d.ts +19 -11
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +16 -7
  21. package/dist/index.js.map +1 -0
  22. package/dist/parse/index.d.ts +101 -27
  23. package/dist/parse/index.d.ts.map +1 -0
  24. package/dist/parse/index.js +1 -0
  25. package/dist/parse/index.js.map +1 -0
  26. package/dist/performance.bench.d.ts +10 -0
  27. package/dist/performance.bench.d.ts.map +1 -0
  28. package/dist/performance.bench.js +379 -0
  29. package/dist/performance.bench.js.map +1 -0
  30. package/dist/primitive/index.d.ts +27 -35
  31. package/dist/primitive/index.d.ts.map +1 -0
  32. package/dist/primitive/index.js +22 -17
  33. package/dist/primitive/index.js.map +1 -0
  34. package/dist/runtime/eval.d.ts +157 -0
  35. package/dist/runtime/eval.d.ts.map +1 -0
  36. package/dist/runtime/eval.js +206 -0
  37. package/dist/runtime/eval.js.map +1 -0
  38. package/dist/runtime/infer.d.ts +2 -1
  39. package/dist/runtime/infer.d.ts.map +1 -0
  40. package/dist/runtime/infer.js +3 -2
  41. package/dist/runtime/infer.js.map +1 -0
  42. package/dist/runtime/parser.d.ts +92 -11
  43. package/dist/runtime/parser.d.ts.map +1 -0
  44. package/dist/runtime/parser.js +522 -47
  45. package/dist/runtime/parser.js.map +1 -0
  46. package/dist/schema/index.d.ts +230 -27
  47. package/dist/schema/index.d.ts.map +1 -0
  48. package/dist/schema/index.js +54 -28
  49. package/dist/schema/index.js.map +1 -0
  50. package/dist/static/infer.d.ts +4 -3
  51. package/dist/static/infer.d.ts.map +1 -0
  52. package/dist/static/infer.js +1 -0
  53. package/dist/static/infer.js.map +1 -0
  54. package/package.json +35 -4
  55. package/dist/combinators/index.d.ts +0 -57
  56. package/dist/combinators/index.js +0 -104
  57. package/dist/static/parser.d.ts +0 -7
  58. package/dist/static/parser.js +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/runtime/parser.ts"],"names":[],"mappings":"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"}
@@ -7,26 +7,36 @@
7
7
  * The key insight: defineNode returns a schema object whose TYPE carries
8
8
  * all the information needed for type-level parsing. No runtime magic.
9
9
  */
10
- import type { NumberNode, StringNode, IdentNode, ConstNode } from "../primitive/index.js";
10
+ import type { NumberNode, StringNode, IdentNode, ConstNode, NullNode, BooleanNode, UndefinedNode } from '../primitive/index.js';
11
+ import { type } from 'arktype';
11
12
  export interface Schema<TKind extends string> {
12
13
  readonly kind: TKind;
13
14
  }
14
15
  /** Number literal pattern element */
15
- export interface NumberSchema extends Schema<"number"> {
16
+ export interface NumberSchema extends Schema<'number'> {
16
17
  }
17
18
  /** String literal pattern element */
18
- export interface StringSchema<TQuotes extends readonly string[] = readonly string[]> extends Schema<"string"> {
19
+ export interface StringSchema<TQuotes extends readonly string[] = readonly string[]> extends Schema<'string'> {
19
20
  readonly quotes: TQuotes;
20
21
  }
21
22
  /** Identifier pattern element */
22
- export interface IdentSchema extends Schema<"ident"> {
23
+ export interface IdentSchema extends Schema<'ident'> {
23
24
  }
24
25
  /** Constant (exact match) pattern element */
25
- export interface ConstSchema<TValue extends string = string> extends Schema<"const"> {
26
+ export interface ConstSchema<TValue extends string = string> extends Schema<'const'> {
26
27
  readonly value: TValue;
27
28
  }
29
+ /** Null literal pattern element */
30
+ export interface NullSchema extends Schema<'null'> {
31
+ }
32
+ /** Boolean literal pattern element */
33
+ export interface BooleanSchema extends Schema<'boolean'> {
34
+ }
35
+ /** Undefined literal pattern element */
36
+ export interface UndefinedSchema extends Schema<'undefined'> {
37
+ }
28
38
  /** Expression role determines which grammar level is used */
29
- export type ExprRole = "lhs" | "rhs" | "expr";
39
+ export type ExprRole = 'lhs' | 'rhs' | 'expr';
30
40
  /** Recursive expression pattern element with optional type constraint and role */
31
41
  export interface ExprSchema<
32
42
  /** This technically shouldn't require a string
@@ -35,12 +45,12 @@ export interface ExprSchema<
35
45
  * expr()/lhs()/rhs() usage site by
36
46
  * using arktype.type.validate<> (see createBox example: https://arktype.io/docs/generics).
37
47
  **/
38
- TConstraint extends string = string, TRole extends ExprRole = ExprRole> extends Schema<"expr"> {
48
+ TConstraint extends string = string, TRole extends ExprRole = ExprRole> extends Schema<'expr'> {
39
49
  readonly constraint?: TConstraint;
40
50
  readonly role: TRole;
41
51
  }
42
52
  /** Base pattern schema type (without NamedSchema to avoid circular reference) */
43
- export type PatternSchemaBase = NumberSchema | StringSchema<readonly string[]> | IdentSchema | ConstSchema<string> | ExprSchema<string, ExprRole>;
53
+ export type PatternSchemaBase = NumberSchema | StringSchema<readonly string[]> | IdentSchema | ConstSchema<string> | NullSchema | BooleanSchema | UndefinedSchema | ExprSchema<string, ExprRole>;
44
54
  /**
45
55
  * A pattern schema with a binding name.
46
56
  * Created by calling .as(name) on any pattern element.
@@ -80,21 +90,45 @@ export declare const ident: () => IdentSchema & {
80
90
  export declare const constVal: <const TValue extends string>(value: TValue) => ConstSchema<TValue> & {
81
91
  as<TName extends string>(name: TName): NamedSchema<ConstSchema<TValue>, TName>;
82
92
  };
93
+ /** Create a null literal pattern element */
94
+ export declare const nullLiteral: () => NullSchema & {
95
+ as<TName extends string>(name: TName): NamedSchema<NullSchema, TName>;
96
+ };
97
+ /** Create a boolean literal pattern element */
98
+ export declare const booleanLiteral: () => BooleanSchema & {
99
+ as<TName extends string>(name: TName): NamedSchema<BooleanSchema, TName>;
100
+ };
101
+ /** Create an undefined literal pattern element */
102
+ export declare const undefinedLiteral: () => UndefinedSchema & {
103
+ as<TName extends string>(name: TName): NamedSchema<UndefinedSchema, TName>;
104
+ };
83
105
  /**
84
106
  * Create a LEFT-HAND SIDE expression element.
85
107
  *
86
108
  * Uses TNextLevel grammar to avoid left-recursion.
87
109
  * Must be at position 0 in a pattern.
88
110
  *
111
+ * The constraint parameter is validated at compile time using arktype.
112
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
113
+ *
89
114
  * @example
90
115
  * ```ts
91
116
  * const add = defineNode({
92
117
  * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
93
118
  * // lhs parses at higher precedence to avoid infinite recursion
94
119
  * });
120
+ *
121
+ * // Valid arktype constraints:
122
+ * lhs('number') // primitive
123
+ * lhs('string.email') // subtype
124
+ * lhs('number >= 0') // constraint
125
+ * lhs('string | number') // union
126
+ *
127
+ * // Invalid - causes compile error:
128
+ * // lhs('garbage')
95
129
  * ```
96
130
  */
97
- export declare const lhs: <const TConstraint extends string>(constraint?: TConstraint) => ExprSchema<TConstraint, "lhs"> & {
131
+ export declare const lhs: <const TConstraint extends string>(constraint?: type.validate<TConstraint>) => ExprSchema<TConstraint, "lhs"> & {
98
132
  as<TName extends string>(name: TName): NamedSchema<ExprSchema<TConstraint, "lhs">, TName>;
99
133
  };
100
134
  /**
@@ -103,15 +137,27 @@ export declare const lhs: <const TConstraint extends string>(constraint?: TConst
103
137
  * Uses TCurrentLevel grammar to maintain precedence and enable right-associativity.
104
138
  * Used for right operands of binary operators.
105
139
  *
140
+ * The constraint parameter is validated at compile time using arktype.
141
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
142
+ *
106
143
  * @example
107
144
  * ```ts
108
145
  * const add = defineNode({
109
146
  * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
110
147
  * // rhs parses at same level for right-associativity: 1+2+3 = 1+(2+3)
111
148
  * });
149
+ *
150
+ * // Valid arktype constraints:
151
+ * rhs('number') // primitive
152
+ * rhs('string.email') // subtype
153
+ * rhs('number >= 0') // constraint
154
+ * rhs('string | number') // union
155
+ *
156
+ * // Invalid - causes compile error:
157
+ * // rhs('garbage')
112
158
  * ```
113
159
  */
114
- export declare const rhs: <const TConstraint extends string>(constraint?: TConstraint) => ExprSchema<TConstraint, "rhs"> & {
160
+ export declare const rhs: <const TConstraint extends string>(constraint?: type.validate<TConstraint>) => ExprSchema<TConstraint, "rhs"> & {
115
161
  as<TName extends string>(name: TName): NamedSchema<ExprSchema<TConstraint, "rhs">, TName>;
116
162
  };
117
163
  /**
@@ -120,6 +166,9 @@ export declare const rhs: <const TConstraint extends string>(constraint?: TConst
120
166
  * Uses TFullGrammar - resets to full grammar (precedence 0).
121
167
  * Used for delimited contexts like parentheses, ternary branches, function arguments.
122
168
  *
169
+ * The constraint parameter is validated at compile time using arktype.
170
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
171
+ *
123
172
  * @example
124
173
  * ```ts
125
174
  * const parens = defineNode({
@@ -131,13 +180,55 @@ export declare const rhs: <const TConstraint extends string>(constraint?: TConst
131
180
  * pattern: [lhs("boolean").as("cond"), constVal("?"), expr().as("then"), constVal(":"), expr().as("else")],
132
181
  * // The branches can contain any expression
133
182
  * });
183
+ *
184
+ * // Valid arktype constraints:
185
+ * expr('number') // primitive
186
+ * expr('string.email') // subtype
187
+ * expr('number >= 0') // constraint
188
+ * expr('string | number') // union
189
+ *
190
+ * // Invalid - causes compile error:
191
+ * // expr('garbage')
134
192
  * ```
135
193
  */
136
- export declare const expr: <const TConstraint extends string>(constraint?: TConstraint) => ExprSchema<TConstraint, "expr"> & {
194
+ export declare const expr: <const TConstraint extends string>(constraint?: type.validate<TConstraint>) => ExprSchema<TConstraint, "expr"> & {
137
195
  as<TName extends string>(name: TName): NamedSchema<ExprSchema<TConstraint, "expr">, TName>;
138
196
  };
139
- /** Precedence type: number for operators, "atom" for atoms (literals) */
140
- export type Precedence = number | "atom";
197
+ /** Precedence type: number for operators (lower = binds looser) */
198
+ export type Precedence = number;
199
+ /**
200
+ * Marker for computed union result types.
201
+ * When used as resultType, the outputSchema is computed at parse time
202
+ * as the union of the outputSchemas from the specified bindings.
203
+ *
204
+ * @example
205
+ * ```ts
206
+ * const ternary = defineNode({
207
+ * name: 'ternary',
208
+ * pattern: [
209
+ * lhs('boolean').as('condition'),
210
+ * constVal('?'),
211
+ * expr().as('then'),
212
+ * constVal(':'),
213
+ * rhs().as('else'),
214
+ * ],
215
+ * precedence: 1,
216
+ * resultType: { union: ['then', 'else'] }, // Computed union of then/else types
217
+ * });
218
+ *
219
+ * // Parsing 'x ? true : 0' would result in outputSchema: 'boolean | number'
220
+ * ```
221
+ */
222
+ export interface UnionResultType<TBindings extends readonly string[] = readonly string[]> {
223
+ readonly union: TBindings;
224
+ }
225
+ /**
226
+ * Result type specification for nodes.
227
+ * Can be either:
228
+ * - A string literal type (static result type validated by arktype)
229
+ * - A UnionResultType object for computed union types
230
+ */
231
+ export type ResultTypeSpec<T extends string | UnionResultType = string | UnionResultType> = T;
141
232
  /**
142
233
  * A node definition schema.
143
234
  *
@@ -145,10 +236,10 @@ export type Precedence = number | "atom";
145
236
  * all the literal types needed for compile-time grammar computation:
146
237
  * - TName: The unique node name (e.g., "add", "mul")
147
238
  * - TPattern: The pattern elements as a tuple type
148
- * - TPrecedence: The precedence (number for operators, "atom" for atoms)
149
- * - TResultType: The result type (e.g., "number", "string")
239
+ * - TPrecedence: The precedence (lower = binds looser, tried first)
240
+ * - TResultType: The result type (e.g., "number", "string", or UnionResultType)
150
241
  */
151
- export interface NodeSchema<TName extends string = string, TPattern extends readonly PatternSchema[] = readonly PatternSchema[], TPrecedence extends Precedence = Precedence, TResultType extends string = string> {
242
+ export interface NodeSchema<TName extends string = string, TPattern extends readonly PatternSchema[] = readonly PatternSchema[], TPrecedence extends Precedence = Precedence, TResultType = unknown> {
152
243
  readonly name: TName;
153
244
  readonly pattern: TPattern;
154
245
  readonly precedence: TPrecedence;
@@ -182,36 +273,147 @@ export type EvalFn = <$>(values: Record<string, unknown>, ctx: $) => unknown;
182
273
  * - name: "add" (not string)
183
274
  * - pattern: readonly [ExprSchema<"number">, ConstSchema<"+">, ExprSchema<"number">]
184
275
  * - precedence: 1 or "atom" (not number | "atom")
185
- * - resultType: "number" (not string)
276
+ * - resultType: "number" (not string), or { union: ['then', 'else'] } for computed unions
277
+ *
278
+ * The resultType parameter is validated at compile time using arktype (for string types).
279
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
280
+ * Valid arktype types include: primitives, subtypes (string.email), constraints (number >= 0), unions.
281
+ *
282
+ * For computed union types, use { union: ['bindingA', 'bindingB'] } to compute the
283
+ * outputSchema as the union of the outputSchemas of the named bindings.
186
284
  *
187
285
  * @example
286
+ * ```ts
287
+ * // Static result type
188
288
  * const add = defineNode({
189
289
  * name: "add",
190
290
  * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
191
291
  * precedence: 1,
192
292
  * resultType: "number",
193
- * eval: ({ left, right }) => left + right, // left and right are already numbers
293
+ * eval: ({ left, right }) => left + right,
294
+ * });
295
+ *
296
+ * // Computed union result type
297
+ * const ternary = defineNode({
298
+ * name: "ternary",
299
+ * pattern: [
300
+ * lhs("boolean").as("condition"),
301
+ * constVal("?"),
302
+ * expr().as("then"),
303
+ * constVal(":"),
304
+ * rhs().as("else"),
305
+ * ],
306
+ * precedence: 0,
307
+ * resultType: { union: ["then", "else"] }, // outputSchema = then | else
308
+ * eval: ({ condition, then, else: elseVal }) => (condition ? then : elseVal),
194
309
  * });
310
+ *
311
+ * // Valid resultType examples:
312
+ * // resultType: 'string' // primitive
313
+ * // resultType: 'string.email' // subtype
314
+ * // resultType: 'number >= 0' // constraint
315
+ * // resultType: 'string | number' // static union
316
+ * // resultType: { union: ['a', 'b'] } // computed union from bindings
317
+ *
318
+ * // Invalid - causes compile error:
319
+ * // resultType: 'garbage'
320
+ * ```
195
321
  */
196
- export declare function defineNode<const TName extends string, const TPattern extends readonly PatternSchema[], const TPrecedence extends Precedence, const TResultType extends string>(config: {
322
+ export declare function defineNode<const TName extends string, const TPattern extends readonly PatternSchema[], const TPrecedence extends Precedence, const TBindings extends readonly string[]>(config: {
323
+ readonly name: TName;
324
+ readonly pattern: TPattern;
325
+ readonly precedence: TPrecedence;
326
+ readonly resultType: UnionResultType<TBindings>;
327
+ readonly configure?: <$>(bindings: InferBindings<TPattern>, ctx: $) => Record<string, unknown>;
328
+ readonly eval?: <$>(values: InferEvaluatedBindings<TPattern>, ctx: $) => unknown;
329
+ }): NodeSchema<TName, TPattern, TPrecedence, UnionResultType<TBindings>>;
330
+ export declare function defineNode<const TName extends string, const TPattern extends readonly PatternSchema[], const TPrecedence extends Precedence, const TResultType extends UnionResultType>(config: {
197
331
  readonly name: TName;
198
332
  readonly pattern: TPattern;
199
333
  readonly precedence: TPrecedence;
200
334
  readonly resultType: TResultType;
201
335
  readonly configure?: <$>(bindings: InferBindings<TPattern>, ctx: $) => Record<string, unknown>;
202
- readonly eval?: <$>(values: InferEvaluatedBindings<TPattern>, ctx: $) => SchemaToType<TResultType>;
336
+ readonly eval?: <$>(values: InferEvaluatedBindings<TPattern>, ctx: $) => unknown;
337
+ }): NodeSchema<TName, TPattern, TPrecedence, TResultType>;
338
+ export declare function defineNode<const TName extends string, const TPattern extends readonly PatternSchema[], const TPrecedence extends Precedence, const TResultType>(config: {
339
+ readonly name: TName;
340
+ readonly pattern: TPattern;
341
+ readonly precedence: TPrecedence;
342
+ readonly resultType: type.validate<TResultType>;
343
+ readonly configure?: <$>(bindings: InferBindings<TPattern>, ctx: $) => Record<string, unknown>;
344
+ readonly eval?: <$>(values: InferEvaluatedBindings<TPattern>, ctx: $) => unknown;
203
345
  }): NodeSchema<TName, TPattern, TPrecedence, TResultType>;
204
346
  /** Extract the operator from a binary pattern (second element should be ConstSchema) */
205
347
  export type ExtractOperator<T extends readonly PatternSchema[]> = T extends readonly [
206
348
  PatternSchema,
207
349
  infer Op extends ConstSchema,
208
350
  PatternSchema
209
- ] ? Op["value"] : never;
351
+ ] ? Op['value'] : never;
352
+ /**
353
+ * Validate that a type definition string is a valid arktype definition.
354
+ * This is used at compile time to reject invalid type strings like 'garbage'.
355
+ *
356
+ * @example
357
+ * ```ts
358
+ * type Valid = ValidArkType<'number'>; // 'number' - valid
359
+ * type Valid2 = ValidArkType<'string.email'>; // 'string.email' - valid
360
+ * type Invalid = ValidArkType<'garbage'>; // never - invalid
361
+ * ```
362
+ */
363
+ export type ValidArkType<T extends string> = type.validate<T>;
364
+ /**
365
+ * Map a valid arktype schema string to its TypeScript runtime type.
366
+ * Uses arktype's type.infer directly (no fallback for invalid types).
367
+ *
368
+ * Correctly infers types for:
369
+ * - Primitives: 'number', 'string', 'boolean', 'null', 'undefined'
370
+ * - Subtypes: 'string.email', 'number.integer' → base type (string, number)
371
+ * - Constraints: 'number >= 0' → base type (number)
372
+ * - Unions: 'string | number' → union type (string | number)
373
+ *
374
+ * Returns `never` for invalid type strings (no fallback).
375
+ * Use `SchemaToType` if you need a fallback to `unknown`.
376
+ *
377
+ * @example
378
+ * ```ts
379
+ * type N = ArkTypeSchemaToType<'number'>; // number
380
+ * type S = ArkTypeSchemaToType<'string'>; // string
381
+ * type E = ArkTypeSchemaToType<'string.email'>; // string
382
+ * type C = ArkTypeSchemaToType<'number >= 0'>; // number
383
+ * type U = ArkTypeSchemaToType<'string | number'>; // string | number
384
+ * type X = ArkTypeSchemaToType<'invalid'>; // never
385
+ * ```
386
+ */
387
+ export type ArkTypeSchemaToType<T extends string> = type.infer<T>;
210
388
  /**
211
389
  * Map a schema type string to its TypeScript runtime type.
212
- * Used for eval return types and evaluated bindings.
390
+ *
391
+ * Uses arktype's `type.infer<T>` to infer TypeScript types from ANY valid
392
+ * arktype type string.
393
+ *
394
+ * Supports ALL arktype types:
395
+ * - Primitives: 'number', 'string', 'boolean', 'null', 'undefined', 'unknown'
396
+ * - Subtypes: 'string.email', 'string.uuid', 'number.integer', etc.
397
+ * - Constraints: 'number >= 0', 'number > 0', '1 <= number <= 100', etc.
398
+ * - Unions: 'string | number', 'boolean | null', etc.
399
+ * - Arrays: 'string[]', 'number[]', '(string | number)[]', etc.
400
+ *
401
+ * Falls back to `unknown` for:
402
+ * - Generic 'string' type (not a literal)
403
+ * - Invalid arktype type strings
404
+ *
405
+ * @example
406
+ * ```ts
407
+ * type N = SchemaToType<'number'>; // number
408
+ * type S = SchemaToType<'string'>; // string
409
+ * type E = SchemaToType<'string.email'>; // string
410
+ * type C = SchemaToType<'number >= 0'>; // number
411
+ * type U = SchemaToType<'string | number'>; // string | number
412
+ * type A = SchemaToType<'string[]'>; // string[]
413
+ * type X = SchemaToType<'invalid'>; // unknown (fallback)
414
+ * ```
213
415
  */
214
- export type SchemaToType<T extends string> = T extends "number" ? number : T extends "string" ? string : T extends "boolean" ? boolean : unknown;
416
+ export type SchemaToType<T> = string extends T ? unknown : number extends T ? unknown : boolean extends T ? unknown : [type.infer<T>] extends [never] ? unknown : type.infer<T>;
215
417
  /**
216
418
  * Infer the AST node type from a pattern schema.
217
419
  * This maps schema types to their corresponding node types.
@@ -219,14 +421,14 @@ export type SchemaToType<T extends string> = T extends "number" ? number : T ext
219
421
  * Note: ExprSchema maps to `unknown` since the actual type depends on the constraint
220
422
  * and what's parsed. The runtime parser will fill this in.
221
423
  */
222
- export type InferNodeType<TSchema extends PatternSchemaBase> = TSchema extends NumberSchema ? NumberNode : TSchema extends StringSchema ? StringNode : TSchema extends IdentSchema ? IdentNode : TSchema extends ConstSchema ? ConstNode : TSchema extends ExprSchema<infer C> ? {
424
+ export type InferNodeType<TSchema extends PatternSchemaBase> = TSchema extends NumberSchema ? NumberNode : TSchema extends StringSchema ? StringNode : TSchema extends IdentSchema ? IdentNode : TSchema extends ConstSchema ? ConstNode : TSchema extends NullSchema ? NullNode : TSchema extends BooleanSchema ? BooleanNode : TSchema extends UndefinedSchema ? UndefinedNode : TSchema extends ExprSchema<infer C> ? {
223
425
  outputSchema: C;
224
426
  } : never;
225
427
  /**
226
428
  * Infer the evaluated value type from a pattern schema.
227
429
  * For ExprSchema, uses the constraint to determine the runtime type.
228
430
  */
229
- export type InferEvaluatedType<TSchema extends PatternSchemaBase> = TSchema extends NumberSchema ? number : TSchema extends StringSchema ? string : TSchema extends IdentSchema ? unknown : TSchema extends ConstSchema ? never : TSchema extends ExprSchema<infer C extends string> ? SchemaToType<C> : never;
431
+ export type InferEvaluatedType<TSchema extends PatternSchemaBase> = TSchema extends NumberSchema ? number : TSchema extends StringSchema ? string : TSchema extends IdentSchema ? unknown : TSchema extends ConstSchema ? never : TSchema extends NullSchema ? null : TSchema extends BooleanSchema ? boolean : TSchema extends UndefinedSchema ? undefined : TSchema extends ExprSchema<infer C extends string> ? SchemaToType<C> : never;
230
432
  /**
231
433
  * Extract all NamedSchema entries from a pattern tuple as a union.
232
434
  */
@@ -250,7 +452,7 @@ type ExtractNamedSchemas<TPattern extends readonly PatternSchema[]> = TPattern[n
250
452
  * ```
251
453
  */
252
454
  export type InferBindings<TPattern extends readonly PatternSchema[]> = {
253
- [K in ExtractNamedSchemas<TPattern> as K["name"]]: InferNodeType<K["schema"]>;
455
+ [K in ExtractNamedSchemas<TPattern> as K['name']]: InferNodeType<K['schema']>;
254
456
  };
255
457
  /**
256
458
  * Infer evaluated bindings from a pattern (runtime values).
@@ -268,6 +470,7 @@ export type InferBindings<TPattern extends readonly PatternSchema[]> = {
268
470
  * ```
269
471
  */
270
472
  export type InferEvaluatedBindings<TPattern extends readonly PatternSchema[]> = {
271
- [K in ExtractNamedSchemas<TPattern> as K["name"]]: InferEvaluatedType<K["schema"]>;
473
+ [K in ExtractNamedSchemas<TPattern> as K['name']]: InferEvaluatedType<K['schema']>;
272
474
  };
273
475
  export {};
476
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
@@ -19,31 +19,49 @@ function withAs(schema) {
19
19
  // Pattern Element Factories
20
20
  // =============================================================================
21
21
  /** Create a number literal pattern element */
22
- export const number = () => withAs({ kind: "number" });
22
+ export const number = () => withAs({ kind: 'number' });
23
23
  /** Create a string literal pattern element */
24
- export const string = (quotes) => withAs({ kind: "string", quotes });
24
+ export const string = (quotes) => withAs({ kind: 'string', quotes });
25
25
  /** Create an identifier pattern element */
26
- export const ident = () => withAs({ kind: "ident" });
26
+ export const ident = () => withAs({ kind: 'ident' });
27
27
  /** Create a constant (exact match) pattern element */
28
- export const constVal = (value) => withAs({ kind: "const", value });
28
+ export const constVal = (value) => withAs({ kind: 'const', value });
29
+ /** Create a null literal pattern element */
30
+ export const nullLiteral = () => withAs({ kind: 'null' });
31
+ /** Create a boolean literal pattern element */
32
+ export const booleanLiteral = () => withAs({ kind: 'boolean' });
33
+ /** Create an undefined literal pattern element */
34
+ export const undefinedLiteral = () => withAs({ kind: 'undefined' });
29
35
  /**
30
36
  * Create a LEFT-HAND SIDE expression element.
31
37
  *
32
38
  * Uses TNextLevel grammar to avoid left-recursion.
33
39
  * Must be at position 0 in a pattern.
34
40
  *
41
+ * The constraint parameter is validated at compile time using arktype.
42
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
43
+ *
35
44
  * @example
36
45
  * ```ts
37
46
  * const add = defineNode({
38
47
  * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
39
48
  * // lhs parses at higher precedence to avoid infinite recursion
40
49
  * });
50
+ *
51
+ * // Valid arktype constraints:
52
+ * lhs('number') // primitive
53
+ * lhs('string.email') // subtype
54
+ * lhs('number >= 0') // constraint
55
+ * lhs('string | number') // union
56
+ *
57
+ * // Invalid - causes compile error:
58
+ * // lhs('garbage')
41
59
  * ```
42
60
  */
43
61
  export const lhs = (constraint) => withAs({
44
- kind: "expr",
62
+ kind: 'expr',
45
63
  constraint: constraint,
46
- role: "lhs",
64
+ role: 'lhs',
47
65
  });
48
66
  /**
49
67
  * Create a RIGHT-HAND SIDE expression element.
@@ -51,18 +69,30 @@ export const lhs = (constraint) => withAs({
51
69
  * Uses TCurrentLevel grammar to maintain precedence and enable right-associativity.
52
70
  * Used for right operands of binary operators.
53
71
  *
72
+ * The constraint parameter is validated at compile time using arktype.
73
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
74
+ *
54
75
  * @example
55
76
  * ```ts
56
77
  * const add = defineNode({
57
78
  * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
58
79
  * // rhs parses at same level for right-associativity: 1+2+3 = 1+(2+3)
59
80
  * });
81
+ *
82
+ * // Valid arktype constraints:
83
+ * rhs('number') // primitive
84
+ * rhs('string.email') // subtype
85
+ * rhs('number >= 0') // constraint
86
+ * rhs('string | number') // union
87
+ *
88
+ * // Invalid - causes compile error:
89
+ * // rhs('garbage')
60
90
  * ```
61
91
  */
62
92
  export const rhs = (constraint) => withAs({
63
- kind: "expr",
93
+ kind: 'expr',
64
94
  constraint: constraint,
65
- role: "rhs",
95
+ role: 'rhs',
66
96
  });
67
97
  /**
68
98
  * Create a FULL expression element.
@@ -70,6 +100,9 @@ export const rhs = (constraint) => withAs({
70
100
  * Uses TFullGrammar - resets to full grammar (precedence 0).
71
101
  * Used for delimited contexts like parentheses, ternary branches, function arguments.
72
102
  *
103
+ * The constraint parameter is validated at compile time using arktype.
104
+ * Invalid type strings like 'garbage' will cause TypeScript errors.
105
+ *
73
106
  * @example
74
107
  * ```ts
75
108
  * const parens = defineNode({
@@ -81,31 +114,24 @@ export const rhs = (constraint) => withAs({
81
114
  * pattern: [lhs("boolean").as("cond"), constVal("?"), expr().as("then"), constVal(":"), expr().as("else")],
82
115
  * // The branches can contain any expression
83
116
  * });
117
+ *
118
+ * // Valid arktype constraints:
119
+ * expr('number') // primitive
120
+ * expr('string.email') // subtype
121
+ * expr('number >= 0') // constraint
122
+ * expr('string | number') // union
123
+ *
124
+ * // Invalid - causes compile error:
125
+ * // expr('garbage')
84
126
  * ```
85
127
  */
86
128
  export const expr = (constraint) => withAs({
87
- kind: "expr",
129
+ kind: 'expr',
88
130
  constraint: constraint,
89
- role: "expr",
131
+ role: 'expr',
90
132
  });
91
- /**
92
- * Define a node type for the grammar.
93
- *
94
- * The `const` modifier on generics ensures literal types are preserved:
95
- * - name: "add" (not string)
96
- * - pattern: readonly [ExprSchema<"number">, ConstSchema<"+">, ExprSchema<"number">]
97
- * - precedence: 1 or "atom" (not number | "atom")
98
- * - resultType: "number" (not string)
99
- *
100
- * @example
101
- * const add = defineNode({
102
- * name: "add",
103
- * pattern: [lhs("number").as("left"), constVal("+"), rhs("number").as("right")],
104
- * precedence: 1,
105
- * resultType: "number",
106
- * eval: ({ left, right }) => left + right, // left and right are already numbers
107
- * });
108
- */
133
+ // Implementation
109
134
  export function defineNode(config) {
110
135
  return config;
111
136
  }
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6GH,gDAAgD;AAChD,SAAS,MAAM,CACb,MAAe;IAEf,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAC3B,EAAE,CAAuB,IAAW;YAClC,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAa,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAErE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,MAAM,GAAG,CAA0C,MAAe,EAAE,EAAE,CACjF,MAAM,CAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAE5D,2CAA2C;AAC3C,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAc,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAElE,sDAAsD;AACtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAA8B,KAAa,EAAE,EAAE,CACrE,MAAM,CAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAExD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,MAAM,CAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAEtE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,MAAM,CAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAE/E,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAmC,UAAuC,EAAE,EAAE,CAC/F,MAAM,CAAiC;IACrC,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,UAAyB;IACrC,IAAI,EAAE,KAAK;CACZ,CAAC,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAmC,UAAuC,EAAE,EAAE,CAC/F,MAAM,CAAiC;IACrC,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,UAAyB;IACrC,IAAI,EAAE,KAAK;CACZ,CAAC,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAmC,UAAuC,EAAE,EAAE,CAChG,MAAM,CAAkC;IACtC,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,UAAyB;IACrC,IAAI,EAAE,MAAM;CACb,CAAC,CAAC;AAsNL,iBAAiB;AACjB,MAAM,UAAU,UAAU,CAKxB,MAOD;IACC,OAAO,MAAe,CAAC;AACzB,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * With the new architecture, nodes carry their outputSchema directly,
7
7
  * so inference is simpler - just extract the outputSchema field.
8
8
  */
9
- import type { Context } from "../context.js";
9
+ import type { Context } from '../context.js';
10
10
  /**
11
11
  * Infer the result type of an AST node.
12
12
  *
@@ -21,6 +21,7 @@ import type { Context } from "../context.js";
21
21
  * type Add = Infer<BinaryNode<"add", NumberNode<"1">, NumberNode<"2">, "number">, {}>; // "number"
22
22
  * ```
23
23
  */
24
- export type Infer<AST, $ extends Context> = AST extends {
25
- outputSchema: infer R extends string;
24
+ export type Infer<AST, _$ extends Context> = AST extends {
25
+ outputSchema: infer R;
26
26
  } ? R : never;
27
+ //# sourceMappingURL=infer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../../src/static/infer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,OAAO,IAEvC,GAAG,SAAS;IAAE,YAAY,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC"}
@@ -7,3 +7,4 @@
7
7
  * so inference is simpler - just extract the outputSchema field.
8
8
  */
9
9
  export {};
10
+ //# sourceMappingURL=infer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer.js","sourceRoot":"","sources":["../../src/static/infer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}