@prisma-next/psl-parser 0.14.0-dev.6 → 0.14.0-dev.60

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 (57) hide show
  1. package/dist/{declarations-D9h_ihD3.mjs → declarations-DR6To8_k.mjs} +295 -55
  2. package/dist/declarations-DR6To8_k.mjs.map +1 -0
  3. package/dist/format.d.mts +1 -1
  4. package/dist/format.mjs +2 -2
  5. package/dist/index.d.mts +95 -112
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +373 -60
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/interpret.d.mts +29 -0
  10. package/dist/interpret.d.mts.map +1 -0
  11. package/dist/interpret.mjs +9 -0
  12. package/dist/interpret.mjs.map +1 -0
  13. package/dist/{parse-DhEV6av6.mjs → parse-3-vr14ej.mjs} +26 -5
  14. package/dist/parse-3-vr14ej.mjs.map +1 -0
  15. package/dist/{parse-BjZ1LPe6.d.mts → parse-BazJr7Ye.d.mts} +128 -51
  16. package/dist/parse-BazJr7Ye.d.mts.map +1 -0
  17. package/dist/symbol-table-C-AH04Ug.d.mts +127 -0
  18. package/dist/symbol-table-C-AH04Ug.d.mts.map +1 -0
  19. package/dist/syntax.d.mts +20 -2
  20. package/dist/syntax.d.mts.map +1 -1
  21. package/dist/syntax.mjs +43 -3
  22. package/dist/syntax.mjs.map +1 -0
  23. package/package.json +7 -5
  24. package/src/attribute-spec/combinators/bool.ts +19 -0
  25. package/src/attribute-spec/combinators/diagnostic.ts +15 -0
  26. package/src/attribute-spec/combinators/entity-ref.ts +24 -0
  27. package/src/attribute-spec/combinators/field-ref.ts +36 -0
  28. package/src/attribute-spec/combinators/identifier.ts +16 -0
  29. package/src/attribute-spec/combinators/int.ts +19 -0
  30. package/src/attribute-spec/combinators/list.ts +43 -0
  31. package/src/attribute-spec/combinators/one-of.ts +29 -0
  32. package/src/attribute-spec/combinators/record.ts +43 -0
  33. package/src/attribute-spec/combinators/str.ts +19 -0
  34. package/src/attribute-spec/field-attribute.ts +27 -0
  35. package/src/attribute-spec/interpret.ts +154 -0
  36. package/src/attribute-spec/model-attribute.ts +27 -0
  37. package/src/attribute-spec/optional.ts +8 -0
  38. package/src/attribute-spec/types.ts +72 -0
  39. package/src/exports/index.ts +30 -0
  40. package/src/exports/interpret.ts +2 -0
  41. package/src/exports/syntax.ts +25 -5
  42. package/src/interpret.ts +40 -0
  43. package/src/parse.ts +23 -5
  44. package/src/resolve.ts +4 -1
  45. package/src/source-file.ts +25 -0
  46. package/src/syntax/ast/attributes.ts +5 -6
  47. package/src/syntax/ast/declarations.ts +51 -26
  48. package/src/syntax/ast/expressions.ts +12 -13
  49. package/src/syntax/ast/identifier.ts +2 -3
  50. package/src/syntax/ast/qualified-name.ts +28 -19
  51. package/src/syntax/ast/type-annotation.ts +4 -5
  52. package/src/syntax/ast-helpers.ts +27 -3
  53. package/src/syntax/navigation.ts +55 -0
  54. package/src/syntax/red.ts +317 -42
  55. package/dist/declarations-D9h_ihD3.mjs.map +0 -1
  56. package/dist/parse-BjZ1LPe6.d.mts.map +0 -1
  57. package/dist/parse-DhEV6av6.mjs.map +0 -1
@@ -17,6 +17,8 @@ declare class SourceFile {
17
17
  get length(): number;
18
18
  get lineCount(): number;
19
19
  lineStartOffsets(): readonly number[];
20
+ lineStartOffset(line: number): number;
21
+ lineEndOffset(line: number): number;
20
22
  positionAt(offset: number): Position;
21
23
  offsetAt(position: Position): number;
22
24
  }
@@ -43,29 +45,89 @@ declare function greenNode(kind: SyntaxKind, children: ReadonlyArray<GreenElemen
43
45
  //#region src/syntax/red.d.ts
44
46
  /**
45
47
  * A token in the red tree. Unlike the green-layer {@link Token} (kind + text
46
- * only), a red token also carries its absolute `offset` within the source,
47
- * computed lazily as the tree is walked.
48
+ * only), a red token also carries its absolute `offset` within the source and a
49
+ * link back to its `parent` {@link SyntaxNode}, so a cursor anchored on a token
50
+ * can walk outward (parent, previous/next token, siblings) without re-scanning
51
+ * from the document root.
48
52
  */
49
- interface SyntaxToken extends Token {
53
+ declare class SyntaxToken implements Token {
54
+ readonly green: GreenToken;
55
+ readonly kind: TokenKind;
56
+ readonly text: string;
50
57
  readonly offset: number;
58
+ readonly parent: SyntaxNode;
59
+ /** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */
60
+ readonly index: number;
61
+ constructor(green: GreenToken, offset: number, parent: SyntaxNode, index: number);
62
+ get textLength(): number;
63
+ get endOffset(): number;
64
+ /** Whether `offset` falls within this token, inclusive of both ends. */
65
+ isInside(offset: number): boolean;
66
+ isOutside(offset: number): boolean;
67
+ /** The sibling element immediately after this token within its parent. */
68
+ get nextSiblingOrToken(): SyntaxElement | undefined;
69
+ /** The sibling element immediately before this token within its parent. */
70
+ get prevSiblingOrToken(): SyntaxElement | undefined;
71
+ /** The next token in document order, crossing node boundaries. */
72
+ get nextToken(): SyntaxToken | undefined;
73
+ /** The previous token in document order, crossing node boundaries. */
74
+ get prevToken(): SyntaxToken | undefined;
51
75
  }
52
76
  type SyntaxElement = SyntaxNode | SyntaxToken;
77
+ declare class TokenAtOffset {
78
+ #private;
79
+ private constructor();
80
+ static none(): TokenAtOffset;
81
+ static single(token: SyntaxToken): TokenAtOffset;
82
+ static between(left: SyntaxToken, right: SyntaxToken): TokenAtOffset;
83
+ get isEmpty(): boolean;
84
+ get isBetween(): boolean;
85
+ leftBiased(): SyntaxToken | undefined;
86
+ rightBiased(): SyntaxToken | undefined;
87
+ }
53
88
  declare class SyntaxNode {
54
89
  readonly green: GreenNode;
55
90
  readonly offset: number;
56
91
  readonly parent: SyntaxNode | undefined;
57
- constructor(green: GreenNode, offset: number, parent: SyntaxNode | undefined);
92
+ /** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */
93
+ readonly index: number;
94
+ constructor(green: GreenNode, offset: number, parent: SyntaxNode | undefined, index: number);
58
95
  get kind(): SyntaxKind;
59
96
  get textLength(): number;
97
+ get endOffset(): number;
98
+ /** Whether `offset` falls within this node, inclusive of both ends. */
99
+ isInside(offset: number): boolean;
100
+ isOutside(offset: number): boolean;
60
101
  get firstChild(): SyntaxElement | undefined;
61
102
  get lastChild(): SyntaxElement | undefined;
62
103
  get nextSibling(): SyntaxElement | undefined;
63
104
  get prevSibling(): SyntaxElement | undefined;
105
+ /** The sibling element immediately after this node within its parent. */
106
+ get nextSiblingOrToken(): SyntaxElement | undefined;
107
+ /** The sibling element immediately before this node within its parent. */
108
+ get prevSiblingOrToken(): SyntaxElement | undefined;
109
+ /** The first token in this subtree (depth-first), or `undefined` if empty. */
110
+ get firstToken(): SyntaxToken | undefined;
111
+ /** The last token in this subtree (depth-first), or `undefined` if empty. */
112
+ get lastToken(): SyntaxToken | undefined;
64
113
  children(): Iterable<SyntaxElement>;
65
114
  childNodes(): Iterable<SyntaxNode>;
66
115
  ancestors(): Iterable<SyntaxNode>;
116
+ /** The nearest match, testing this node itself before walking its ancestors. */
117
+ findAncestor<T>(cast: (node: SyntaxNode) => T | undefined): T | undefined;
67
118
  descendants(): Iterable<SyntaxElement>;
68
119
  tokens(): Iterable<SyntaxToken>;
120
+ /**
121
+ * The token(s) at `offset`. The between-two-tokens case (offset exactly on a
122
+ * token seam) is represented explicitly so callers can left/right bias.
123
+ */
124
+ tokenAtOffset(offset: number): TokenAtOffset;
125
+ /**
126
+ * The smallest element fully containing the range `[start, end]`. At a seam
127
+ * (and for empty ranges) the left-hand element is preferred, matching
128
+ * {@link containsOffset}'s inclusive span.
129
+ */
130
+ coveringElement(start: number, end: number): SyntaxElement;
69
131
  }
70
132
  declare function createSyntaxTree(green: GreenNode): SyntaxNode;
71
133
  //#endregion
@@ -73,9 +135,15 @@ declare function createSyntaxTree(green: GreenNode): SyntaxNode;
73
135
  interface AstNode {
74
136
  readonly syntax: SyntaxNode;
75
137
  }
76
- declare function findChildToken(node: SyntaxNode, kind: TokenKind): Token | undefined;
138
+ interface BracedBlock extends AstNode {
139
+ lbrace(): SyntaxToken | undefined;
140
+ rbrace(): SyntaxToken | undefined;
141
+ }
142
+ declare function findChildToken(node: SyntaxNode, kind: TokenKind): SyntaxToken | undefined;
77
143
  declare function findFirstChild<T>(node: SyntaxNode, cast: (node: SyntaxNode) => T | undefined): T | undefined;
78
144
  declare function filterChildren<T>(node: SyntaxNode, cast: (node: SyntaxNode) => T | undefined): Iterable<T>;
145
+ type CastTarget<C> = C extends ((node: SyntaxNode) => infer R) ? Exclude<R, undefined> : never;
146
+ declare function any<Casts extends readonly ((node: SyntaxNode) => unknown)[]>(...casts: Casts): (node: SyntaxNode) => CastTarget<Casts[number]> | undefined;
79
147
  /**
80
148
  * Raw source text of a CST node, verbatim (quotes and brackets preserved). For
81
149
  * the decoded value of a string literal, decode it instead.
@@ -86,7 +154,7 @@ declare function printSyntax(node: SyntaxNode): string;
86
154
  declare class IdentifierAst implements AstNode {
87
155
  readonly syntax: SyntaxNode;
88
156
  constructor(syntax: SyntaxNode);
89
- token(): Token | undefined;
157
+ token(): SyntaxToken | undefined;
90
158
  name(): string | undefined;
91
159
  static cast(node: SyntaxNode): IdentifierAst | undefined;
92
160
  }
@@ -97,8 +165,8 @@ declare class QualifiedNameAst implements AstNode {
97
165
  #private;
98
166
  readonly syntax: SyntaxNode;
99
167
  constructor(syntax: SyntaxNode);
100
- colon(): Token | undefined;
101
- dot(): Token | undefined;
168
+ colon(): SyntaxToken | undefined;
169
+ dot(): SyntaxToken | undefined;
102
170
  space(): IdentifierAst | undefined;
103
171
  namespace(): IdentifierAst | undefined;
104
172
  identifier(): IdentifierAst | undefined;
@@ -107,6 +175,8 @@ declare class QualifiedNameAst implements AstNode {
107
175
  * `['Vector']`; a qualified `pgvector.Vector` yields `['pgvector', 'Vector']`.
108
176
  */
109
177
  path(): readonly string[];
178
+ /** True iff this is a single unqualified identifier whose text equals `name`. */
179
+ isSimpleName(name: string): boolean;
110
180
  /**
111
181
  * Flags a malformed name with more qualifier segments than allowed (a second
112
182
  * `:`-space or a second `.`-namespace).
@@ -127,45 +197,45 @@ declare class FunctionCallAst implements AstNode {
127
197
  * `['pgvector', 'Vector']`. Empty when the call carries no identifier.
128
198
  */
129
199
  path(): readonly string[];
130
- lparen(): Token | undefined;
131
- rparen(): Token | undefined;
200
+ lparen(): SyntaxToken | undefined;
201
+ rparen(): SyntaxToken | undefined;
132
202
  args(): Iterable<AttributeArgAst>;
133
203
  static cast(node: SyntaxNode): FunctionCallAst | undefined;
134
204
  }
135
205
  declare class ArrayLiteralAst implements AstNode {
136
206
  readonly syntax: SyntaxNode;
137
207
  constructor(syntax: SyntaxNode);
138
- lbracket(): Token | undefined;
139
- rbracket(): Token | undefined;
208
+ lbracket(): SyntaxToken | undefined;
209
+ rbracket(): SyntaxToken | undefined;
140
210
  elements(): Iterable<ExpressionAst>;
141
211
  static cast(node: SyntaxNode): ArrayLiteralAst | undefined;
142
212
  }
143
213
  declare class StringLiteralExprAst implements AstNode {
144
214
  readonly syntax: SyntaxNode;
145
215
  constructor(syntax: SyntaxNode);
146
- token(): Token | undefined;
216
+ token(): SyntaxToken | undefined;
147
217
  value(): string | undefined;
148
218
  static cast(node: SyntaxNode): StringLiteralExprAst | undefined;
149
219
  }
150
220
  declare class NumberLiteralExprAst implements AstNode {
151
221
  readonly syntax: SyntaxNode;
152
222
  constructor(syntax: SyntaxNode);
153
- token(): Token | undefined;
223
+ token(): SyntaxToken | undefined;
154
224
  value(): number | undefined;
155
225
  static cast(node: SyntaxNode): NumberLiteralExprAst | undefined;
156
226
  }
157
227
  declare class BooleanLiteralExprAst implements AstNode {
158
228
  readonly syntax: SyntaxNode;
159
229
  constructor(syntax: SyntaxNode);
160
- token(): Token | undefined;
230
+ token(): SyntaxToken | undefined;
161
231
  value(): boolean | undefined;
162
232
  static cast(node: SyntaxNode): BooleanLiteralExprAst | undefined;
163
233
  }
164
234
  declare class ObjectLiteralExprAst implements AstNode {
165
235
  readonly syntax: SyntaxNode;
166
236
  constructor(syntax: SyntaxNode);
167
- lbrace(): Token | undefined;
168
- rbrace(): Token | undefined;
237
+ lbrace(): SyntaxToken | undefined;
238
+ rbrace(): SyntaxToken | undefined;
169
239
  fields(): Iterable<ObjectFieldAst>;
170
240
  static cast(node: SyntaxNode): ObjectLiteralExprAst | undefined;
171
241
  }
@@ -179,7 +249,7 @@ declare class ObjectFieldAst implements AstNode {
179
249
  * `undefined` when the field carries no key node.
180
250
  */
181
251
  keyName(): string | undefined;
182
- colon(): Token | undefined;
252
+ colon(): SyntaxToken | undefined;
183
253
  value(): ExpressionAst | undefined;
184
254
  static cast(node: SyntaxNode): ObjectFieldAst | undefined;
185
255
  }
@@ -189,7 +259,7 @@ declare class AttributeArgAst implements AstNode {
189
259
  readonly syntax: SyntaxNode;
190
260
  constructor(syntax: SyntaxNode);
191
261
  name(): IdentifierAst | undefined;
192
- colon(): Token | undefined;
262
+ colon(): SyntaxToken | undefined;
193
263
  value(): ExpressionAst | undefined;
194
264
  static cast(node: SyntaxNode): AttributeArgAst | undefined;
195
265
  }
@@ -198,15 +268,15 @@ declare class AttributeArgAst implements AstNode {
198
268
  declare class AttributeArgListAst implements AstNode {
199
269
  readonly syntax: SyntaxNode;
200
270
  constructor(syntax: SyntaxNode);
201
- lparen(): Token | undefined;
202
- rparen(): Token | undefined;
271
+ lparen(): SyntaxToken | undefined;
272
+ rparen(): SyntaxToken | undefined;
203
273
  args(): Iterable<AttributeArgAst>;
204
274
  static cast(node: SyntaxNode): AttributeArgListAst | undefined;
205
275
  }
206
276
  declare class FieldAttributeAst implements AstNode {
207
277
  readonly syntax: SyntaxNode;
208
278
  constructor(syntax: SyntaxNode);
209
- at(): Token | undefined;
279
+ at(): SyntaxToken | undefined;
210
280
  name(): QualifiedNameAst | undefined;
211
281
  argList(): AttributeArgListAst | undefined;
212
282
  static cast(node: SyntaxNode): FieldAttributeAst | undefined;
@@ -214,7 +284,7 @@ declare class FieldAttributeAst implements AstNode {
214
284
  declare class ModelAttributeAst implements AstNode {
215
285
  readonly syntax: SyntaxNode;
216
286
  constructor(syntax: SyntaxNode);
217
- doubleAt(): Token | undefined;
287
+ doubleAt(): SyntaxToken | undefined;
218
288
  name(): QualifiedNameAst | undefined;
219
289
  argList(): AttributeArgListAst | undefined;
220
290
  static cast(node: SyntaxNode): ModelAttributeAst | undefined;
@@ -229,9 +299,9 @@ declare class TypeAnnotationAst implements AstNode {
229
299
  /** Present when the annotation is a constructor (`Vector(1536)`) rather than a plain reference. */
230
300
  argList(): AttributeArgListAst | undefined;
231
301
  isConstructor(): boolean;
232
- lbracket(): Token | undefined;
233
- rbracket(): Token | undefined;
234
- questionMark(): Token | undefined;
302
+ lbracket(): SyntaxToken | undefined;
303
+ rbracket(): SyntaxToken | undefined;
304
+ questionMark(): SyntaxToken | undefined;
235
305
  isList(): boolean;
236
306
  isOptional(): boolean;
237
307
  static cast(node: SyntaxNode): TypeAnnotationAst | undefined;
@@ -244,69 +314,76 @@ declare class TypeAnnotationAst implements AstNode {
244
314
  * blocks are document-only, so they are not namespace members.
245
315
  */
246
316
  type NamespaceMemberAst = ModelDeclarationAst | CompositeTypeDeclarationAst | GenericBlockDeclarationAst;
317
+ type DeclarationAst = NamespaceMemberAst | TypesBlockAst | NamespaceDeclarationAst;
318
+ type AttributeAst = FieldAttributeAst | ModelAttributeAst;
319
+ type BlockMemberAst = FieldDeclarationAst | ModelAttributeAst;
320
+ type GenericBlockMemberAst = KeyValuePairAst | ModelAttributeAst;
247
321
  declare class DocumentAst implements AstNode {
248
322
  readonly syntax: SyntaxNode;
249
323
  constructor(syntax: SyntaxNode);
250
- declarations(): Iterable<NamespaceMemberAst | TypesBlockAst | NamespaceDeclarationAst>;
324
+ declarations(): Iterable<DeclarationAst>;
251
325
  static cast(node: SyntaxNode): DocumentAst | undefined;
252
326
  }
253
- declare class ModelDeclarationAst implements AstNode {
327
+ declare class ModelDeclarationAst implements BracedBlock {
254
328
  readonly syntax: SyntaxNode;
255
329
  constructor(syntax: SyntaxNode);
256
- keyword(): Token | undefined;
330
+ keyword(): SyntaxToken | undefined;
257
331
  name(): IdentifierAst | undefined;
258
- lbrace(): Token | undefined;
259
- rbrace(): Token | undefined;
332
+ lbrace(): SyntaxToken | undefined;
333
+ rbrace(): SyntaxToken | undefined;
260
334
  fields(): Iterable<FieldDeclarationAst>;
261
335
  attributes(): Iterable<ModelAttributeAst>;
336
+ members(): Iterable<BlockMemberAst>;
262
337
  static cast(node: SyntaxNode): ModelDeclarationAst | undefined;
263
338
  }
264
- declare class CompositeTypeDeclarationAst implements AstNode {
339
+ declare class CompositeTypeDeclarationAst implements BracedBlock {
265
340
  readonly syntax: SyntaxNode;
266
341
  constructor(syntax: SyntaxNode);
267
- keyword(): Token | undefined;
342
+ keyword(): SyntaxToken | undefined;
268
343
  name(): IdentifierAst | undefined;
269
- lbrace(): Token | undefined;
270
- rbrace(): Token | undefined;
344
+ lbrace(): SyntaxToken | undefined;
345
+ rbrace(): SyntaxToken | undefined;
271
346
  fields(): Iterable<FieldDeclarationAst>;
272
347
  attributes(): Iterable<ModelAttributeAst>;
348
+ members(): Iterable<BlockMemberAst>;
273
349
  static cast(node: SyntaxNode): CompositeTypeDeclarationAst | undefined;
274
350
  }
275
- declare class NamespaceDeclarationAst implements AstNode {
351
+ declare class NamespaceDeclarationAst implements BracedBlock {
276
352
  readonly syntax: SyntaxNode;
277
353
  constructor(syntax: SyntaxNode);
278
- keyword(): Token | undefined;
354
+ keyword(): SyntaxToken | undefined;
279
355
  name(): IdentifierAst | undefined;
280
- lbrace(): Token | undefined;
281
- rbrace(): Token | undefined;
356
+ lbrace(): SyntaxToken | undefined;
357
+ rbrace(): SyntaxToken | undefined;
282
358
  declarations(): Iterable<NamespaceMemberAst>;
283
359
  static cast(node: SyntaxNode): NamespaceDeclarationAst | undefined;
284
360
  }
285
- declare class TypesBlockAst implements AstNode {
361
+ declare class TypesBlockAst implements BracedBlock {
286
362
  readonly syntax: SyntaxNode;
287
363
  constructor(syntax: SyntaxNode);
288
- keyword(): Token | undefined;
289
- lbrace(): Token | undefined;
290
- rbrace(): Token | undefined;
364
+ keyword(): SyntaxToken | undefined;
365
+ lbrace(): SyntaxToken | undefined;
366
+ rbrace(): SyntaxToken | undefined;
291
367
  declarations(): Iterable<NamedTypeDeclarationAst>;
292
368
  static cast(node: SyntaxNode): TypesBlockAst | undefined;
293
369
  }
294
- declare class GenericBlockDeclarationAst implements AstNode {
370
+ declare class GenericBlockDeclarationAst implements BracedBlock {
295
371
  readonly syntax: SyntaxNode;
296
372
  constructor(syntax: SyntaxNode);
297
- keyword(): Token | undefined;
373
+ keyword(): SyntaxToken | undefined;
298
374
  name(): IdentifierAst | undefined;
299
- lbrace(): Token | undefined;
300
- rbrace(): Token | undefined;
375
+ lbrace(): SyntaxToken | undefined;
376
+ rbrace(): SyntaxToken | undefined;
301
377
  entries(): Iterable<KeyValuePairAst>;
302
378
  attributes(): Iterable<ModelAttributeAst>;
379
+ members(): Iterable<GenericBlockMemberAst>;
303
380
  static cast(node: SyntaxNode): GenericBlockDeclarationAst | undefined;
304
381
  }
305
382
  declare class KeyValuePairAst implements AstNode {
306
383
  readonly syntax: SyntaxNode;
307
384
  constructor(syntax: SyntaxNode);
308
385
  key(): IdentifierAst | undefined;
309
- equals(): Token | undefined;
386
+ equals(): SyntaxToken | undefined;
310
387
  value(): ExpressionAst | undefined;
311
388
  static cast(node: SyntaxNode): KeyValuePairAst | undefined;
312
389
  }
@@ -322,7 +399,7 @@ declare class NamedTypeDeclarationAst implements AstNode {
322
399
  readonly syntax: SyntaxNode;
323
400
  constructor(syntax: SyntaxNode);
324
401
  name(): IdentifierAst | undefined;
325
- equals(): Token | undefined;
402
+ equals(): SyntaxToken | undefined;
326
403
  typeAnnotation(): TypeAnnotationAst | undefined;
327
404
  attributes(): Iterable<FieldAttributeAst>;
328
405
  static cast(node: SyntaxNode): NamedTypeDeclarationAst | undefined;
@@ -345,5 +422,5 @@ interface ParseResult {
345
422
  */
346
423
  declare function parse(source: string): ParseResult;
347
424
  //#endregion
348
- export { AstNode as A, GreenNode as B, NumberLiteralExprAst as C, castExpression as D, StringLiteralExprAst as E, SyntaxElement as F, Position as G, greenNode as H, SyntaxNode as I, Range as K, SyntaxToken as L, findChildToken as M, findFirstChild as N, QualifiedNameAst as O, printSyntax as P, createSyntaxTree as R, FunctionCallAst as S, ObjectLiteralExprAst as T, greenToken as U, GreenToken as V, SyntaxKind as W, ModelAttributeAst as _, DocumentAst as a, BooleanLiteralExprAst as b, KeyValuePairAst as c, NamespaceDeclarationAst as d, NamespaceMemberAst as f, FieldAttributeAst as g, AttributeArgListAst as h, CompositeTypeDeclarationAst as i, filterChildren as j, IdentifierAst as k, ModelDeclarationAst as l, TypeAnnotationAst as m, ParseResult as n, FieldDeclarationAst as o, TypesBlockAst as p, SourceFile as q, parse as r, GenericBlockDeclarationAst as s, ParseDiagnostic as t, NamedTypeDeclarationAst as u, ArrayLiteralAst as v, ObjectFieldAst as w, ExpressionAst as x, AttributeArgAst as y, GreenElement as z };
349
- //# sourceMappingURL=parse-BjZ1LPe6.d.mts.map
425
+ export { Range as $, StringLiteralExprAst as A, printSyntax as B, AttributeArgAst as C, NumberLiteralExprAst as D, FunctionCallAst as E, BracedBlock as F, createSyntaxTree as G, SyntaxNode as H, any as I, GreenToken as J, GreenElement as K, filterChildren as L, QualifiedNameAst as M, IdentifierAst as N, ObjectFieldAst as O, AstNode as P, Position as Q, findChildToken as R, ArrayLiteralAst as S, ExpressionAst as T, SyntaxToken as U, SyntaxElement as V, TokenAtOffset as W, greenToken as X, greenNode as Y, SyntaxKind as Z, TypesBlockAst as _, BlockMemberAst as a, FieldAttributeAst as b, DocumentAst as c, GenericBlockMemberAst as d, SourceFile as et, KeyValuePairAst as f, NamespaceMemberAst as g, NamespaceDeclarationAst as h, AttributeAst as i, castExpression as j, ObjectLiteralExprAst as k, FieldDeclarationAst as l, NamedTypeDeclarationAst as m, ParseResult as n, CompositeTypeDeclarationAst as o, ModelDeclarationAst as p, GreenNode as q, parse as r, DeclarationAst as s, ParseDiagnostic as t, GenericBlockDeclarationAst as u, TypeAnnotationAst as v, BooleanLiteralExprAst as w, ModelAttributeAst as x, AttributeArgListAst as y, findFirstChild as z };
426
+ //# sourceMappingURL=parse-BazJr7Ye.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-BazJr7Ye.d.mts","names":[],"sources":["../src/source-file.ts","../src/syntax/syntax-kind.ts","../src/syntax/green.ts","../src/syntax/red.ts","../src/syntax/ast-helpers.ts","../src/syntax/ast/identifier.ts","../src/syntax/ast/qualified-name.ts","../src/syntax/ast/expressions.ts","../src/syntax/ast/attributes.ts","../src/syntax/ast/type-annotation.ts","../src/syntax/ast/declarations.ts","../src/parse.ts"],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { $ as Range, H as SyntaxNode, T as ExpressionAst, b as FieldAttributeAst, c as DocumentAst, et as SourceFile, h as NamespaceDeclarationAst, l as FieldDeclarationAst, m as NamedTypeDeclarationAst, o as CompositeTypeDeclarationAst, p as ModelDeclarationAst, t as ParseDiagnostic, u as GenericBlockDeclarationAst, v as TypeAnnotationAst, x as ModelAttributeAst } from "./parse-BazJr7Ye.mjs";
2
+ import { PslExtensionBlock, PslSpan } from "@prisma-next/framework-components/psl-ast";
3
+ import { AuthoringPslBlockDescriptorNamespace } from "@prisma-next/framework-components/authoring";
4
+
5
+ //#region src/resolve.d.ts
6
+ interface ResolvedAttributeArg {
7
+ readonly kind: 'positional' | 'named';
8
+ readonly name?: string;
9
+ readonly value: string;
10
+ readonly expression?: ExpressionAst;
11
+ readonly span: PslSpan;
12
+ }
13
+ interface ResolvedAttribute {
14
+ readonly name: string;
15
+ readonly args: readonly ResolvedAttributeArg[];
16
+ readonly span: PslSpan;
17
+ }
18
+ interface ResolvedTypeConstructorCall {
19
+ readonly path: readonly string[];
20
+ readonly args: readonly ResolvedAttributeArg[];
21
+ readonly span: PslSpan;
22
+ }
23
+ declare function readResolvedAttribute(attribute: FieldAttributeAst | ModelAttributeAst, sourceFile: SourceFile): ResolvedAttribute;
24
+ declare function readResolvedAttributes(attributes: Iterable<FieldAttributeAst | ModelAttributeAst>, sourceFile: SourceFile): readonly ResolvedAttribute[];
25
+ declare function readResolvedConstructorCall(annotation: TypeAnnotationAst | undefined, sourceFile: SourceFile): ResolvedTypeConstructorCall | undefined;
26
+ declare function nodePslSpan(node: SyntaxNode, sourceFile: SourceFile): PslSpan;
27
+ /** Unsupported-top-level-block diagnostics are anchored to the keyword token. */
28
+ declare function keywordPslSpan(node: SyntaxNode, keyword: string, sourceFile: SourceFile): PslSpan;
29
+ declare function rangeToPslSpan(range: Range, sourceFile: SourceFile): PslSpan;
30
+ //#endregion
31
+ //#region src/symbol-table.d.ts
32
+ interface SymbolTable {
33
+ readonly topLevel: TopLevelScope;
34
+ }
35
+ interface TopLevelScope {
36
+ readonly namespaces: Record<string, NamespaceSymbol>;
37
+ readonly scalars: Record<string, ScalarSymbol>;
38
+ readonly typeAliases: Record<string, TypeAliasSymbol>;
39
+ readonly blocks: Record<string, BlockSymbol>;
40
+ readonly models: Record<string, ModelSymbol>;
41
+ readonly compositeTypes: Record<string, CompositeTypeSymbol>;
42
+ }
43
+ interface NamespaceSymbol {
44
+ readonly kind: 'namespace';
45
+ readonly name: string;
46
+ readonly node: NamespaceDeclarationAst;
47
+ readonly span: PslSpan;
48
+ readonly models: Record<string, ModelSymbol>;
49
+ readonly compositeTypes: Record<string, CompositeTypeSymbol>;
50
+ readonly blocks: Record<string, BlockSymbol>;
51
+ }
52
+ interface ModelSymbol {
53
+ readonly kind: 'model';
54
+ readonly name: string;
55
+ readonly node: ModelDeclarationAst;
56
+ readonly span: PslSpan;
57
+ readonly fields: Record<string, FieldSymbol>;
58
+ readonly attributes: readonly ResolvedAttribute[];
59
+ }
60
+ interface CompositeTypeSymbol {
61
+ readonly kind: 'compositeType';
62
+ readonly name: string;
63
+ readonly node: CompositeTypeDeclarationAst;
64
+ readonly span: PslSpan;
65
+ readonly fields: Record<string, FieldSymbol>;
66
+ readonly attributes: readonly ResolvedAttribute[];
67
+ }
68
+ interface BlockSymbol {
69
+ readonly kind: 'block';
70
+ readonly name: string;
71
+ readonly keyword: string;
72
+ readonly node: GenericBlockDeclarationAst;
73
+ readonly span: PslSpan;
74
+ /** Resolved once so consumers do not independently classify block parameters. */
75
+ readonly block: PslExtensionBlock;
76
+ }
77
+ interface ResolvedNamedTypeBinding {
78
+ readonly baseType?: string;
79
+ readonly typeConstructor?: ResolvedTypeConstructorCall;
80
+ readonly isConstructor: boolean;
81
+ readonly attributes: readonly ResolvedAttribute[];
82
+ }
83
+ interface ScalarSymbol extends ResolvedNamedTypeBinding {
84
+ readonly kind: 'scalar';
85
+ readonly name: string;
86
+ readonly node: NamedTypeDeclarationAst;
87
+ readonly span: PslSpan;
88
+ }
89
+ interface TypeAliasSymbol extends ResolvedNamedTypeBinding {
90
+ readonly kind: 'typeAlias';
91
+ readonly name: string;
92
+ readonly node: NamedTypeDeclarationAst;
93
+ readonly span: PslSpan;
94
+ }
95
+ interface FieldSymbol {
96
+ readonly kind: 'field';
97
+ readonly name: string;
98
+ readonly node: FieldDeclarationAst;
99
+ readonly span: PslSpan;
100
+ readonly typeName: string;
101
+ readonly typeNamespaceId?: string;
102
+ readonly typeContractSpaceId?: string;
103
+ readonly optional: boolean;
104
+ readonly list: boolean;
105
+ readonly typeConstructor?: ResolvedTypeConstructorCall;
106
+ readonly attributes: readonly ResolvedAttribute[];
107
+ /** Prevents cascading unsupported-type diagnostics after invalid qualification. */
108
+ readonly malformedType?: boolean;
109
+ }
110
+ interface BuildSymbolTableOptions {
111
+ readonly document: DocumentAst;
112
+ readonly sourceFile: SourceFile;
113
+ readonly scalarTypes: readonly string[];
114
+ readonly pslBlockDescriptors: AuthoringPslBlockDescriptorNamespace;
115
+ }
116
+ interface SymbolTableResult {
117
+ readonly table: SymbolTable;
118
+ readonly diagnostics: readonly ParseDiagnostic[];
119
+ }
120
+ /**
121
+ * Owns duplicate-declaration detection for all PSL scopes; downstream consumers
122
+ * should consume first-wins symbols rather than re-emitting duplicate diagnostics.
123
+ */
124
+ declare function buildSymbolTable(options: BuildSymbolTableOptions): SymbolTableResult;
125
+ //#endregion
126
+ export { readResolvedConstructorCall as S, keywordPslSpan as _, ModelSymbol as a, readResolvedAttribute as b, ScalarSymbol as c, TopLevelScope as d, TypeAliasSymbol as f, ResolvedTypeConstructorCall as g, ResolvedAttributeArg as h, FieldSymbol as i, SymbolTable as l, ResolvedAttribute as m, BuildSymbolTableOptions as n, NamespaceSymbol as o, buildSymbolTable as p, CompositeTypeSymbol as r, ResolvedNamedTypeBinding as s, BlockSymbol as t, SymbolTableResult as u, nodePslSpan as v, readResolvedAttributes as x, rangeToPslSpan as y };
127
+ //# sourceMappingURL=symbol-table-C-AH04Ug.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-table-C-AH04Ug.d.mts","names":[],"sources":["../src/resolve.ts","../src/symbol-table.ts"],"mappings":"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"}
package/dist/syntax.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as AstNode, B as GreenNode, C as NumberLiteralExprAst, D as castExpression, E as StringLiteralExprAst, F as SyntaxElement, G as Position, H as greenNode, I as SyntaxNode, K as Range, L as SyntaxToken, M as findChildToken, N as findFirstChild, O as QualifiedNameAst, P as printSyntax, R as createSyntaxTree, S as FunctionCallAst, T as ObjectLiteralExprAst, U as greenToken, V as GreenToken, W as SyntaxKind, _ as ModelAttributeAst, a as DocumentAst, b as BooleanLiteralExprAst, c as KeyValuePairAst, d as NamespaceDeclarationAst, f as NamespaceMemberAst, g as FieldAttributeAst, h as AttributeArgListAst, i as CompositeTypeDeclarationAst, j as filterChildren, k as IdentifierAst, l as ModelDeclarationAst, m as TypeAnnotationAst, n as ParseResult, o as FieldDeclarationAst, p as TypesBlockAst, q as SourceFile, r as parse, s as GenericBlockDeclarationAst, t as ParseDiagnostic, u as NamedTypeDeclarationAst, v as ArrayLiteralAst, w as ObjectFieldAst, x as ExpressionAst, y as AttributeArgAst, z as GreenElement } from "./parse-BjZ1LPe6.mjs";
1
+ import { $ as Range, A as StringLiteralExprAst, B as printSyntax, C as AttributeArgAst, D as NumberLiteralExprAst, E as FunctionCallAst, F as BracedBlock, G as createSyntaxTree, H as SyntaxNode, I as any, J as GreenToken, K as GreenElement, L as filterChildren, M as QualifiedNameAst, N as IdentifierAst, O as ObjectFieldAst, P as AstNode, Q as Position, R as findChildToken, S as ArrayLiteralAst, T as ExpressionAst, U as SyntaxToken, V as SyntaxElement, W as TokenAtOffset, X as greenToken, Y as greenNode, Z as SyntaxKind, _ as TypesBlockAst, a as BlockMemberAst, b as FieldAttributeAst, c as DocumentAst, d as GenericBlockMemberAst, et as SourceFile, f as KeyValuePairAst, g as NamespaceMemberAst, h as NamespaceDeclarationAst, i as AttributeAst, j as castExpression, k as ObjectLiteralExprAst, l as FieldDeclarationAst, m as NamedTypeDeclarationAst, n as ParseResult, o as CompositeTypeDeclarationAst, p as ModelDeclarationAst, q as GreenNode, r as parse, s as DeclarationAst, t as ParseDiagnostic, u as GenericBlockDeclarationAst, v as TypeAnnotationAst, w as BooleanLiteralExprAst, x as ModelAttributeAst, y as AttributeArgListAst, z as findFirstChild } from "./parse-BazJr7Ye.mjs";
2
2
  import { n as TokenKind } from "./tokenizer-DcYI0Xrq.mjs";
3
3
 
4
4
  //#region src/syntax/green-builder.d.ts
@@ -9,5 +9,23 @@ declare class GreenNodeBuilder {
9
9
  finishNode(): GreenNode;
10
10
  }
11
11
  //#endregion
12
- export { ArrayLiteralAst, type AstNode, AttributeArgAst, AttributeArgListAst, BooleanLiteralExprAst, CompositeTypeDeclarationAst, DocumentAst, type ExpressionAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, type GreenElement, type GreenNode, GreenNodeBuilder, type GreenToken, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamedTypeDeclarationAst, NamespaceDeclarationAst, type NamespaceMemberAst, NumberLiteralExprAst, ObjectFieldAst, ObjectLiteralExprAst, type ParseDiagnostic, type ParseResult, type Position, QualifiedNameAst, type Range, SourceFile, StringLiteralExprAst, type SyntaxElement, type SyntaxKind, SyntaxNode, type SyntaxToken, TypeAnnotationAst, TypesBlockAst, castExpression, createSyntaxTree, filterChildren, findChildToken, findFirstChild, greenNode, greenToken, parse, printSyntax };
12
+ //#region src/syntax/navigation.d.ts
13
+ /** Direction of a sibling/token walk. */
14
+ type Direction = 'next' | 'prev';
15
+ /** Whether a token kind is trivia (whitespace, newline, or comment). */
16
+ declare function isTriviaKind(kind: TokenKind): boolean;
17
+ /** Whether a token is trivia. */
18
+ declare function isTrivia(token: SyntaxToken): boolean;
19
+ /**
20
+ * The first non-trivia token at or beyond `token` in `direction`. Returns
21
+ * `token` itself when it is already significant.
22
+ */
23
+ declare function skipTriviaToken(token: SyntaxToken, direction: Direction): SyntaxToken | undefined;
24
+ /**
25
+ * The nearest sibling of `element` (within the same parent) in `direction` that
26
+ * is not a trivia token. Nodes are always significant.
27
+ */
28
+ declare function nonTriviaSibling(element: SyntaxElement, direction: Direction): SyntaxElement | undefined;
29
+ //#endregion
30
+ export { ArrayLiteralAst, type AstNode, AttributeArgAst, AttributeArgListAst, type AttributeAst, type BlockMemberAst, BooleanLiteralExprAst, type BracedBlock, CompositeTypeDeclarationAst, type DeclarationAst, type Direction, DocumentAst, type ExpressionAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, type GenericBlockMemberAst, type GreenElement, type GreenNode, GreenNodeBuilder, type GreenToken, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamedTypeDeclarationAst, NamespaceDeclarationAst, type NamespaceMemberAst, NumberLiteralExprAst, ObjectFieldAst, ObjectLiteralExprAst, type ParseDiagnostic, type ParseResult, type Position, QualifiedNameAst, type Range, SourceFile, StringLiteralExprAst, type SyntaxElement, type SyntaxKind, SyntaxNode, SyntaxToken, TokenAtOffset, TypeAnnotationAst, TypesBlockAst, any, castExpression, createSyntaxTree, filterChildren, findChildToken, findFirstChild, greenNode, greenToken, isTrivia, isTriviaKind, nonTriviaSibling, parse, printSyntax, skipTriviaToken };
13
31
  //# sourceMappingURL=syntax.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syntax.d.mts","names":[],"sources":["../src/syntax/green-builder.ts"],"mappings":";;;;cAKa,gBAAA;EAAA;EAGX,SAAA,CAAU,IAAA,EAAM,UAAA;EAIhB,KAAA,CAAM,IAAA,EAAM,SAAA,EAAW,IAAA;EAQvB,UAAA,IAAc,SAAA;AAAA"}
1
+ {"version":3,"file":"syntax.d.mts","names":[],"sources":["../src/syntax/green-builder.ts","../src/syntax/navigation.ts"],"mappings":";;;;cAKa,gBAAA;EAAA;EAGX,SAAA,CAAU,IAAA,EAAM,UAAA;EAIhB,KAAA,CAAM,IAAA,EAAM,SAAA,EAAW,IAAA;EAQvB,UAAA,IAAc,SAAA;AAAA;;;;KChBJ,SAAA;ADCZ;AAAA,iBCQgB,YAAA,CAAa,IAAe,EAAT,SAAS;;iBAK5B,QAAA,CAAS,KAAkB,EAAX,WAAW;;;;;iBAQ3B,eAAA,CAAgB,KAAA,EAAO,WAAA,EAAa,SAAA,EAAW,SAAA,GAAY,WAAA;;;;;iBAY3D,gBAAA,CACd,OAAA,EAAS,aAAA,EACT,SAAA,EAAW,SAAA,GACV,aAAA"}
package/dist/syntax.mjs CHANGED
@@ -1,3 +1,43 @@
1
- import { A as createSyntaxTree, C as QualifiedNameAst, D as findFirstChild, E as findChildToken, O as printSyntax, S as castExpression, T as filterChildren, _ as FunctionCallAst, a as KeyValuePairAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, d as AttributeArgListAst, f as FieldAttributeAst, g as BooleanLiteralExprAst, h as AttributeArgAst, i as GenericBlockDeclarationAst, k as SyntaxNode, l as TypesBlockAst, m as ArrayLiteralAst, n as DocumentAst, o as ModelDeclarationAst, p as ModelAttributeAst, r as FieldDeclarationAst, s as NamedTypeDeclarationAst, t as CompositeTypeDeclarationAst, u as TypeAnnotationAst, v as NumberLiteralExprAst, w as IdentifierAst, x as StringLiteralExprAst, y as ObjectFieldAst } from "./declarations-D9h_ihD3.mjs";
2
- import { a as SourceFile, i as greenToken, n as GreenNodeBuilder, r as greenNode, t as parse } from "./parse-DhEV6av6.mjs";
3
- export { ArrayLiteralAst, AttributeArgAst, AttributeArgListAst, BooleanLiteralExprAst, CompositeTypeDeclarationAst, DocumentAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, GreenNodeBuilder, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamedTypeDeclarationAst, NamespaceDeclarationAst, NumberLiteralExprAst, ObjectFieldAst, ObjectLiteralExprAst, QualifiedNameAst, SourceFile, StringLiteralExprAst, SyntaxNode, TypeAnnotationAst, TypesBlockAst, castExpression, createSyntaxTree, filterChildren, findChildToken, findFirstChild, greenNode, greenToken, parse, printSyntax };
1
+ import { A as SyntaxNode, C as QualifiedNameAst, D as findChildToken, E as filterChildren, M as TokenAtOffset, N as createSyntaxTree, O as findFirstChild, S as castExpression, T as any, _ as FunctionCallAst, a as KeyValuePairAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, d as AttributeArgListAst, f as FieldAttributeAst, g as BooleanLiteralExprAst, h as AttributeArgAst, i as GenericBlockDeclarationAst, j as SyntaxToken, k as printSyntax, l as TypesBlockAst, m as ArrayLiteralAst, n as DocumentAst, o as ModelDeclarationAst, p as ModelAttributeAst, r as FieldDeclarationAst, s as NamedTypeDeclarationAst, t as CompositeTypeDeclarationAst, u as TypeAnnotationAst, v as NumberLiteralExprAst, w as IdentifierAst, x as StringLiteralExprAst, y as ObjectFieldAst } from "./declarations-DR6To8_k.mjs";
2
+ import { a as SourceFile, i as greenToken, n as GreenNodeBuilder, r as greenNode, t as parse } from "./parse-3-vr14ej.mjs";
3
+ //#region src/syntax/navigation.ts
4
+ const TRIVIA_KINDS = new Set([
5
+ "Whitespace",
6
+ "Newline",
7
+ "Comment"
8
+ ]);
9
+ /** Whether a token kind is trivia (whitespace, newline, or comment). */
10
+ function isTriviaKind(kind) {
11
+ return TRIVIA_KINDS.has(kind);
12
+ }
13
+ /** Whether a token is trivia. */
14
+ function isTrivia(token) {
15
+ return isTriviaKind(token.kind);
16
+ }
17
+ /**
18
+ * The first non-trivia token at or beyond `token` in `direction`. Returns
19
+ * `token` itself when it is already significant.
20
+ */
21
+ function skipTriviaToken(token, direction) {
22
+ let current = token;
23
+ while (current !== void 0 && isTrivia(current)) current = direction === "next" ? current.nextToken : current.prevToken;
24
+ return current;
25
+ }
26
+ /**
27
+ * The nearest sibling of `element` (within the same parent) in `direction` that
28
+ * is not a trivia token. Nodes are always significant.
29
+ */
30
+ function nonTriviaSibling(element, direction) {
31
+ let sibling = step(element, direction);
32
+ while (sibling !== void 0) {
33
+ if (!(sibling instanceof SyntaxToken) || !isTrivia(sibling)) return sibling;
34
+ sibling = step(sibling, direction);
35
+ }
36
+ }
37
+ function step(element, direction) {
38
+ return direction === "next" ? element.nextSiblingOrToken : element.prevSiblingOrToken;
39
+ }
40
+ //#endregion
41
+ export { ArrayLiteralAst, AttributeArgAst, AttributeArgListAst, BooleanLiteralExprAst, CompositeTypeDeclarationAst, DocumentAst, FieldAttributeAst, FieldDeclarationAst, FunctionCallAst, GenericBlockDeclarationAst, GreenNodeBuilder, IdentifierAst, KeyValuePairAst, ModelAttributeAst, ModelDeclarationAst, NamedTypeDeclarationAst, NamespaceDeclarationAst, NumberLiteralExprAst, ObjectFieldAst, ObjectLiteralExprAst, QualifiedNameAst, SourceFile, StringLiteralExprAst, SyntaxNode, SyntaxToken, TokenAtOffset, TypeAnnotationAst, TypesBlockAst, any, castExpression, createSyntaxTree, filterChildren, findChildToken, findFirstChild, greenNode, greenToken, isTrivia, isTriviaKind, nonTriviaSibling, parse, printSyntax, skipTriviaToken };
42
+
43
+ //# sourceMappingURL=syntax.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.mjs","names":[],"sources":["../src/syntax/navigation.ts"],"sourcesContent":["import type { TokenKind } from '../tokenizer';\nimport { type SyntaxElement, SyntaxToken } from './red';\n\n/** Direction of a sibling/token walk. */\nexport type Direction = 'next' | 'prev';\n\nconst TRIVIA_KINDS: ReadonlySet<TokenKind> = new Set<TokenKind>([\n 'Whitespace',\n 'Newline',\n 'Comment',\n]);\n\n/** Whether a token kind is trivia (whitespace, newline, or comment). */\nexport function isTriviaKind(kind: TokenKind): boolean {\n return TRIVIA_KINDS.has(kind);\n}\n\n/** Whether a token is trivia. */\nexport function isTrivia(token: SyntaxToken): boolean {\n return isTriviaKind(token.kind);\n}\n\n/**\n * The first non-trivia token at or beyond `token` in `direction`. Returns\n * `token` itself when it is already significant.\n */\nexport function skipTriviaToken(token: SyntaxToken, direction: Direction): SyntaxToken | undefined {\n let current: SyntaxToken | undefined = token;\n while (current !== undefined && isTrivia(current)) {\n current = direction === 'next' ? current.nextToken : current.prevToken;\n }\n return current;\n}\n\n/**\n * The nearest sibling of `element` (within the same parent) in `direction` that\n * is not a trivia token. Nodes are always significant.\n */\nexport function nonTriviaSibling(\n element: SyntaxElement,\n direction: Direction,\n): SyntaxElement | undefined {\n let sibling = step(element, direction);\n while (sibling !== undefined) {\n if (!(sibling instanceof SyntaxToken) || !isTrivia(sibling)) {\n return sibling;\n }\n sibling = step(sibling, direction);\n }\n return undefined;\n}\n\nfunction step(element: SyntaxElement, direction: Direction): SyntaxElement | undefined {\n return direction === 'next' ? element.nextSiblingOrToken : element.prevSiblingOrToken;\n}\n"],"mappings":";;;AAMA,MAAM,eAAuC,IAAI,IAAe;CAC9D;CACA;CACA;AACF,CAAC;;AAGD,SAAgB,aAAa,MAA0B;CACrD,OAAO,aAAa,IAAI,IAAI;AAC9B;;AAGA,SAAgB,SAAS,OAA6B;CACpD,OAAO,aAAa,MAAM,IAAI;AAChC;;;;;AAMA,SAAgB,gBAAgB,OAAoB,WAA+C;CACjG,IAAI,UAAmC;CACvC,OAAO,YAAY,KAAA,KAAa,SAAS,OAAO,GAC9C,UAAU,cAAc,SAAS,QAAQ,YAAY,QAAQ;CAE/D,OAAO;AACT;;;;;AAMA,SAAgB,iBACd,SACA,WAC2B;CAC3B,IAAI,UAAU,KAAK,SAAS,SAAS;CACrC,OAAO,YAAY,KAAA,GAAW;EAC5B,IAAI,EAAE,mBAAmB,gBAAgB,CAAC,SAAS,OAAO,GACxD,OAAO;EAET,UAAU,KAAK,SAAS,SAAS;CACnC;AAEF;AAEA,SAAS,KAAK,SAAwB,WAAiD;CACrF,OAAO,cAAc,SAAS,QAAQ,qBAAqB,QAAQ;AACrE"}