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.
- package/README.md +61 -73
- package/dist/context.d.ts +20 -2
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +1 -0
- package/dist/context.js.map +1 -0
- package/dist/createParser.d.ts +109 -26
- package/dist/createParser.d.ts.map +1 -0
- package/dist/createParser.js +80 -19
- package/dist/createParser.js.map +1 -0
- package/dist/errors.d.ts +121 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +186 -0
- package/dist/errors.js.map +1 -0
- package/dist/grammar/index.d.ts +19 -14
- package/dist/grammar/index.d.ts.map +1 -0
- package/dist/grammar/index.js +4 -3
- package/dist/grammar/index.js.map +1 -0
- package/dist/index.d.ts +19 -11
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -7
- package/dist/index.js.map +1 -0
- package/dist/parse/index.d.ts +101 -27
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +1 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/performance.bench.d.ts +10 -0
- package/dist/performance.bench.d.ts.map +1 -0
- package/dist/performance.bench.js +379 -0
- package/dist/performance.bench.js.map +1 -0
- package/dist/primitive/index.d.ts +27 -35
- package/dist/primitive/index.d.ts.map +1 -0
- package/dist/primitive/index.js +22 -17
- package/dist/primitive/index.js.map +1 -0
- package/dist/runtime/eval.d.ts +157 -0
- package/dist/runtime/eval.d.ts.map +1 -0
- package/dist/runtime/eval.js +206 -0
- package/dist/runtime/eval.js.map +1 -0
- package/dist/runtime/infer.d.ts +2 -1
- package/dist/runtime/infer.d.ts.map +1 -0
- package/dist/runtime/infer.js +3 -2
- package/dist/runtime/infer.js.map +1 -0
- package/dist/runtime/parser.d.ts +92 -11
- package/dist/runtime/parser.d.ts.map +1 -0
- package/dist/runtime/parser.js +522 -47
- package/dist/runtime/parser.js.map +1 -0
- package/dist/schema/index.d.ts +230 -27
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +54 -28
- package/dist/schema/index.js.map +1 -0
- package/dist/static/infer.d.ts +4 -3
- package/dist/static/infer.d.ts.map +1 -0
- package/dist/static/infer.js +1 -0
- package/dist/static/infer.js.map +1 -0
- package/package.json +35 -4
- package/dist/combinators/index.d.ts +0 -57
- package/dist/combinators/index.js +0 -104
- package/dist/static/parser.d.ts +0 -7
- 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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"}
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -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
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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 =
|
|
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<
|
|
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
|
|
140
|
-
export type Precedence = number
|
|
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 (
|
|
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
|
|
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,
|
|
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
|
|
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: $) =>
|
|
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[
|
|
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
|
-
*
|
|
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
|
|
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[
|
|
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[
|
|
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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"}
|
package/dist/schema/index.js
CHANGED
|
@@ -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:
|
|
22
|
+
export const number = () => withAs({ kind: 'number' });
|
|
23
23
|
/** Create a string literal pattern element */
|
|
24
|
-
export const string = (quotes) => withAs({ kind:
|
|
24
|
+
export const string = (quotes) => withAs({ kind: 'string', quotes });
|
|
25
25
|
/** Create an identifier pattern element */
|
|
26
|
-
export const ident = () => withAs({ kind:
|
|
26
|
+
export const ident = () => withAs({ kind: 'ident' });
|
|
27
27
|
/** Create a constant (exact match) pattern element */
|
|
28
|
-
export const constVal = (value) => withAs({ kind:
|
|
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:
|
|
62
|
+
kind: 'expr',
|
|
45
63
|
constraint: constraint,
|
|
46
|
-
role:
|
|
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:
|
|
93
|
+
kind: 'expr',
|
|
64
94
|
constraint: constraint,
|
|
65
|
-
role:
|
|
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:
|
|
129
|
+
kind: 'expr',
|
|
88
130
|
constraint: constraint,
|
|
89
|
-
role:
|
|
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"}
|
package/dist/static/infer.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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"}
|
package/dist/static/infer.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer.js","sourceRoot":"","sources":["../../src/static/infer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|