@prisma/orm-framework 8.0.0-rc.14-dev.18 → 8.0.0-rc.14-dev.20
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/dist/{ast-helpers-2XRnkQEO-BxG5qx3Q.mjs → ast-helpers-CzydMPdh-Mi0SrZRa.mjs} +41 -3
- package/dist/{ast-helpers-2XRnkQEO-BxG5qx3Q.mjs.map → ast-helpers-CzydMPdh-Mi0SrZRa.mjs.map} +1 -1
- package/dist/{binder-CQGFQCuK-DrdVszQh.d.mts → binder-CGmSEQPU-Bn32vwiq.d.mts} +7 -4
- package/dist/binder-CGmSEQPU-Bn32vwiq.d.mts.map +1 -0
- package/dist/{declarations-C0VwsVFX-BcP1Nyv4.mjs → declarations-DDT0hm5r-BAMLVwKx.mjs} +24 -5
- package/dist/declarations-DDT0hm5r-BAMLVwKx.mjs.map +1 -0
- package/dist/{parse-DqMTVHCw-DqqgVEUq.d.mts → parse-eSQ_clQv-Dd2RdJRb.d.mts} +20 -9
- package/dist/parse-eSQ_clQv-Dd2RdJRb.d.mts.map +1 -0
- package/dist/{parse-EvT3Ac9q-B0Nxq52v.mjs → parse-ymgXJUnk-CYMEjkGC.mjs} +61 -21
- package/dist/parse-ymgXJUnk-CYMEjkGC.mjs.map +1 -0
- package/dist/psl-parser.d.mts +11 -12
- package/dist/psl-parser.d.mts.map +1 -1
- package/dist/psl-parser.mjs +122 -68
- package/dist/psl-parser.mjs.map +1 -1
- package/dist/psl-parser__format.mjs +3 -3
- package/dist/psl-parser__format.mjs.map +1 -1
- package/dist/psl-parser__interpret.d.mts +2 -2
- package/dist/psl-parser__interpret.mjs +1 -1
- package/dist/psl-parser__interpret.mjs.map +1 -1
- package/dist/psl-parser__syntax.d.mts +2 -2
- package/dist/psl-parser__syntax.mjs +3 -3
- package/dist/psl-parser__syntax.mjs.map +1 -1
- package/dist/{resolve-GE34dgM6-D33m6YEw.mjs → resolve-C8PUf8zv-QAvnPhCt.mjs} +3 -3
- package/dist/{resolve-GE34dgM6-D33m6YEw.mjs.map → resolve-C8PUf8zv-QAvnPhCt.mjs.map} +1 -1
- package/package.json +15 -15
- package/dist/binder-CQGFQCuK-DrdVszQh.d.mts.map +0 -1
- package/dist/declarations-C0VwsVFX-BcP1Nyv4.mjs.map +0 -1
- package/dist/parse-DqMTVHCw-DqqgVEUq.d.mts.map +0 -1
- package/dist/parse-EvT3Ac9q-B0Nxq52v.mjs.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as InternalError } from "./internal-error-ChGYPVpq-DhUD05u0.mjs";
|
|
2
2
|
import { r as UNSPECIFIED_PSL_NAMESPACE_ID } from "./psl-ast-CyvE6CR-.mjs";
|
|
3
3
|
import { r as isTerminatedStringLiteral, t as Tokenizer } from "./tokenizer-BMz7z2KR-J0yZ4im3.mjs";
|
|
4
|
-
import { a as createSyntaxTree } from "./ast-helpers-
|
|
5
|
-
import { o as DocumentAst } from "./declarations-
|
|
6
|
-
//#region ../../../1-framework/2-authoring/psl-parser/dist/parse-
|
|
4
|
+
import { a as createSyntaxTree } from "./ast-helpers-CzydMPdh-Mi0SrZRa.mjs";
|
|
5
|
+
import { o as DocumentAst } from "./declarations-DDT0hm5r-BAMLVwKx.mjs";
|
|
6
|
+
//#region ../../../1-framework/2-authoring/psl-parser/dist/parse-ymgXJUnk.mjs
|
|
7
7
|
const CARRIAGE_RETURN = 13;
|
|
8
8
|
const LINE_FEED = 10;
|
|
9
9
|
var SourceFile = class {
|
|
@@ -216,6 +216,24 @@ var Cursor = class {
|
|
|
216
216
|
rawIndex++;
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
+
newlineBefore(ahead = 0) {
|
|
220
|
+
let rawIndex = 0;
|
|
221
|
+
let remaining = ahead;
|
|
222
|
+
let newline = false;
|
|
223
|
+
for (;;) {
|
|
224
|
+
const token = this.#tokenizer.peek(rawIndex);
|
|
225
|
+
if (token.kind === "Eof") return newline;
|
|
226
|
+
if (TRIVIA_KINDS.has(token.kind)) {
|
|
227
|
+
if (token.kind === "Newline") newline = true;
|
|
228
|
+
rawIndex++;
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
if (remaining === 0) return newline;
|
|
232
|
+
remaining--;
|
|
233
|
+
newline = false;
|
|
234
|
+
rawIndex++;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
219
237
|
/** Span of the significant token `lookahead` positions ahead (`mark(0)` = the next). */
|
|
220
238
|
mark(lookahead = 0) {
|
|
221
239
|
let rawIndex = 0;
|
|
@@ -350,15 +368,18 @@ function parseQualifiedName(cursor) {
|
|
|
350
368
|
*/
|
|
351
369
|
function parseQualifiedSegments(cursor, separator) {
|
|
352
370
|
let seen = 0;
|
|
353
|
-
while (cursor.peekKind() === separator) {
|
|
371
|
+
while (cursor.peekKind() === separator && !cursor.newlineBefore()) {
|
|
354
372
|
seen++;
|
|
355
373
|
const separatorMark = cursor.mark();
|
|
356
374
|
cursor.bump();
|
|
357
375
|
if (seen > 1) cursor.diagnostic("PSL_INVALID_QUALIFIED_NAME", "Qualified name has too many segments", separatorMark);
|
|
358
|
-
if (cursor.peekKind() === "Ident") parseIdentifier(cursor);
|
|
359
|
-
else
|
|
376
|
+
if (cursor.peekKind() === "Ident" && !cursor.newlineBefore()) parseIdentifier(cursor);
|
|
377
|
+
else reportMissingSegment(cursor);
|
|
360
378
|
}
|
|
361
379
|
}
|
|
380
|
+
function reportMissingSegment(cursor) {
|
|
381
|
+
cursor.diagnostic("PSL_INVALID_QUALIFIED_NAME", "Qualified name is missing a name after the separator", cursor.markAfterLastToken());
|
|
382
|
+
}
|
|
362
383
|
/**
|
|
363
384
|
* Whether the next tokens open a tagged literal: a bare `Ident` or a
|
|
364
385
|
* namespace-qualified `Ident.Ident`, then a string. Trivia may sit anywhere
|
|
@@ -434,14 +455,27 @@ function parseObjectField(cursor) {
|
|
|
434
455
|
return cursor.finishNode();
|
|
435
456
|
}
|
|
436
457
|
/**
|
|
437
|
-
* The
|
|
438
|
-
*
|
|
458
|
+
* The dotted chain `Ident ('.' Ident)*` at the cursor, which stays on one line. `length` counts its
|
|
459
|
+
* significant tokens: 1 for `a`, 3 for `a.b`, 5 for `a.b.c`; 0 when no `Ident` is next.
|
|
460
|
+
* `trailingDot` marks a chain that ends in a `.` with no name after it, as in `auth.`.
|
|
439
461
|
*/
|
|
440
|
-
function
|
|
441
|
-
if (cursor.peekKind() !== "Ident") return
|
|
462
|
+
function dottedChain(cursor) {
|
|
463
|
+
if (cursor.peekKind() !== "Ident") return {
|
|
464
|
+
length: 0,
|
|
465
|
+
trailingDot: false
|
|
466
|
+
};
|
|
442
467
|
let length = 1;
|
|
443
|
-
while (cursor.peekKind(length) === "Dot" && cursor.
|
|
444
|
-
|
|
468
|
+
while (cursor.peekKind(length) === "Dot" && !cursor.newlineBefore(length)) {
|
|
469
|
+
if (cursor.peekKind(length + 1) !== "Ident" || cursor.newlineBefore(length + 1)) return {
|
|
470
|
+
length,
|
|
471
|
+
trailingDot: true
|
|
472
|
+
};
|
|
473
|
+
length += 2;
|
|
474
|
+
}
|
|
475
|
+
return {
|
|
476
|
+
length,
|
|
477
|
+
trailingDot: false
|
|
478
|
+
};
|
|
445
479
|
}
|
|
446
480
|
/**
|
|
447
481
|
* Whether the next tokens open a call: a dotted chain followed by `(`, such as
|
|
@@ -449,8 +483,8 @@ function dottedChainLength(cursor) {
|
|
|
449
483
|
* with no `(` after it, like `a.b`, is a path, not a call.
|
|
450
484
|
*/
|
|
451
485
|
function isCallAhead(cursor) {
|
|
452
|
-
const chain =
|
|
453
|
-
return chain > 0 && cursor.peekKind(chain) === "LParen";
|
|
486
|
+
const chain = dottedChain(cursor);
|
|
487
|
+
return chain.length > 0 && !chain.trailingDot && cursor.peekKind(chain.length) === "LParen";
|
|
454
488
|
}
|
|
455
489
|
/**
|
|
456
490
|
* Parses a function/constructor call — bare `autoincrement()` or dotted
|
|
@@ -462,29 +496,35 @@ function isCallAhead(cursor) {
|
|
|
462
496
|
*/
|
|
463
497
|
function parseFunctionCall(cursor) {
|
|
464
498
|
if (!isCallAhead(cursor)) return void 0;
|
|
465
|
-
const chain =
|
|
499
|
+
const chain = dottedChain(cursor);
|
|
466
500
|
cursor.startNode("FunctionCall");
|
|
467
|
-
if (chain > 1) parsePath(cursor, chain);
|
|
501
|
+
if (chain.length > 1) parsePath(cursor, chain);
|
|
468
502
|
else parseQualifiedName(cursor);
|
|
469
503
|
if (cursor.peekKind() === "LParen") parseParenArgs(cursor);
|
|
470
504
|
return cursor.finishNode();
|
|
471
505
|
}
|
|
472
506
|
/**
|
|
473
507
|
* Parses a member path `Ident ('.' Ident)+` that is neither a call nor the tag
|
|
474
|
-
* of a tagged literal, such as `address.city` in `@@index([address.city])`.
|
|
508
|
+
* of a tagged literal, such as `address.city` in `@@index([address.city])`. A
|
|
509
|
+
* path that ends in a `.` keeps the dot and reports the missing name, as in
|
|
510
|
+
* `auth.` while the member is still being typed.
|
|
475
511
|
*/
|
|
476
512
|
function parsePathExpr(cursor) {
|
|
477
|
-
const chain =
|
|
478
|
-
if (chain < 3) return void 0;
|
|
513
|
+
const chain = dottedChain(cursor);
|
|
514
|
+
if (chain.length < 3 && !chain.trailingDot) return void 0;
|
|
479
515
|
return parsePath(cursor, chain);
|
|
480
516
|
}
|
|
481
517
|
function parsePath(cursor, chain) {
|
|
482
518
|
cursor.startNode("PathExpr");
|
|
483
519
|
parseIdentifier(cursor);
|
|
484
|
-
for (let consumed = 1; consumed < chain; consumed += 2) {
|
|
520
|
+
for (let consumed = 1; consumed < chain.length; consumed += 2) {
|
|
485
521
|
cursor.bump();
|
|
486
522
|
parseIdentifier(cursor);
|
|
487
523
|
}
|
|
524
|
+
if (chain.trailingDot) {
|
|
525
|
+
cursor.bump();
|
|
526
|
+
reportMissingSegment(cursor);
|
|
527
|
+
}
|
|
488
528
|
return cursor.finishNode();
|
|
489
529
|
}
|
|
490
530
|
/** Parses a parenthesised, comma-separated `AttributeArg` list into the currently open node. */
|
|
@@ -759,4 +799,4 @@ function parseKeyValue(cursor, options = { memberAttributes: false }) {
|
|
|
759
799
|
//#endregion
|
|
760
800
|
export { greenToken as a, greenNode as i, PslSources as n, parse as o, SourceFile as r, GreenNodeBuilder as t };
|
|
761
801
|
|
|
762
|
-
//# sourceMappingURL=parse-
|
|
802
|
+
//# sourceMappingURL=parse-ymgXJUnk-CYMEjkGC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-ymgXJUnk-CYMEjkGC.mjs","names":["#filename","#text","#lineStarts","#lineIndexAt","#lineStartAt","#lineEndAt","#sourcesByRoot","#stack","#tokenizer","#sourceFile","#diagnostics","#offset","#depth","#builder","#advance"],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/parse-ymgXJUnk.mjs"],"sourcesContent":["import { r as isTerminatedStringLiteral, t as Tokenizer } from \"./tokenizer-BMz7z2KR.mjs\";\nimport { u as createSyntaxTree } from \"./ast-helpers-CzydMPdh.mjs\";\nimport { n as DocumentAst } from \"./declarations-DDT0hm5r.mjs\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID } from \"@internal/framework-components/psl-ast\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/source-file.ts\nconst CARRIAGE_RETURN = 13;\nconst LINE_FEED = 10;\nvar SourceFile = class {\n\t#filename;\n\t#text;\n\t#lineStarts;\n\tconstructor(filename, text) {\n\t\tthis.#filename = filename;\n\t\tthis.#text = text;\n\t\tconst lineStarts = [0];\n\t\tfor (let offset = 0; offset < text.length; offset++) if (text.charCodeAt(offset) === LINE_FEED) lineStarts.push(offset + 1);\n\t\tthis.#lineStarts = lineStarts;\n\t}\n\tget filename() {\n\t\treturn this.#filename;\n\t}\n\tget text() {\n\t\treturn this.#text;\n\t}\n\tget length() {\n\t\treturn this.#text.length;\n\t}\n\tget lineCount() {\n\t\treturn this.#lineStarts.length;\n\t}\n\tlineStartOffsets() {\n\t\treturn this.#lineStarts;\n\t}\n\tlineStartOffset(line) {\n\t\tif (line <= 0) return 0;\n\t\treturn this.#lineStarts[line] ?? this.#text.length;\n\t}\n\tlineEndOffset(line) {\n\t\tif (line < 0) return 0;\n\t\tconst nextLineStart = this.#lineStarts[line + 1];\n\t\tif (nextLineStart === void 0) return this.#text.length;\n\t\tconst lineFeedOffset = nextLineStart - 1;\n\t\tconst carriageReturnOffset = lineFeedOffset - 1;\n\t\treturn this.#text.charCodeAt(carriageReturnOffset) === CARRIAGE_RETURN ? carriageReturnOffset : lineFeedOffset;\n\t}\n\tpositionAt(offset) {\n\t\tconst clamped = clamp(offset, 0, this.#text.length);\n\t\tconst line = this.#lineIndexAt(clamped);\n\t\treturn {\n\t\t\tline,\n\t\t\tcharacter: clamped - this.#lineStartAt(line)\n\t\t};\n\t}\n\toffsetAt(position) {\n\t\tconst line = clamp(position.line, 0, this.#lineStarts.length - 1);\n\t\tconst lineStart = this.#lineStartAt(line);\n\t\tconst lineEnd = this.#lineEndAt(line);\n\t\treturn clamp(lineStart + position.character, lineStart, lineEnd);\n\t}\n\toffsetToPslPosition(offset) {\n\t\tconst position = this.positionAt(offset);\n\t\treturn {\n\t\t\toffset,\n\t\t\tline: position.line + 1,\n\t\t\tcolumn: position.character + 1\n\t\t};\n\t}\n\trangeToPslSpan(range) {\n\t\treturn {\n\t\t\tstart: this.offsetToPslPosition(this.offsetAt(range.start)),\n\t\t\tend: this.offsetToPslPosition(this.offsetAt(range.end))\n\t\t};\n\t}\n\tpslSpanToRange(span) {\n\t\treturn {\n\t\t\tstart: this.positionAt(span.start.offset),\n\t\t\tend: this.positionAt(span.end.offset)\n\t\t};\n\t}\n\t#lineStartAt(line) {\n\t\treturn this.#lineStarts[line] ?? 0;\n\t}\n\t#lineEndAt(line) {\n\t\treturn line + 1 < this.#lineStarts.length ? this.#lineStartAt(line + 1) - 1 : this.#text.length;\n\t}\n\t#lineIndexAt(offset) {\n\t\tconst lineStarts = this.#lineStarts;\n\t\tlet low = 0;\n\t\tlet high = lineStarts.length - 1;\n\t\twhile (low < high) {\n\t\t\tconst mid = low + high + 1 >>> 1;\n\t\t\tif ((lineStarts[mid] ?? 0) <= offset) low = mid;\n\t\t\telse high = mid - 1;\n\t\t}\n\t\treturn low;\n\t}\n};\nvar PslSources = class PslSources {\n\t#sourcesByRoot = /* @__PURE__ */ new Map();\n\tconstructor(entries) {\n\t\tfor (const [root, sourceFile] of entries) this.#sourcesByRoot.set(root, sourceFile);\n\t}\n\t/**\n\t* A new registry uniting this one with `others` — e.g. the per-document\n\t* `PslSources` registries `parse()` returns for each member of a\n\t* multi-file schema, united into the one registry `buildSymbolTable` and\n\t* the interpreters expect.\n\t*/\n\tmerge(...others) {\n\t\treturn new PslSources([...this.#sourcesByRoot, ...others.flatMap((other) => [...other.#sourcesByRoot])]);\n\t}\n\tsourceFileNamed(filename) {\n\t\tlet match;\n\t\tfor (const sourceFile of this.#sourcesByRoot.values()) {\n\t\t\tif (sourceFile.filename !== filename) continue;\n\t\t\tif (match !== void 0 && match.text !== sourceFile.text) throw new InternalError(`Ambiguous PSL diagnostic filename \"${filename}\": registered sources have different text`);\n\t\t\tmatch = sourceFile;\n\t\t}\n\t\tif (match === void 0) throw new InternalError(`No SourceFile registered for PSL diagnostic filename \"${filename}\"`);\n\t\treturn match;\n\t}\n\tsourceFileFor(node) {\n\t\tconst root = node.root();\n\t\tconst sourceFile = this.#sourcesByRoot.get(root);\n\t\tif (sourceFile === void 0) throw new InternalError(\"No SourceFile registered for PSL syntax root\");\n\t\treturn sourceFile;\n\t}\n};\nfunction clamp(value, min, max) {\n\tif (value < min) return min;\n\tif (value > max) return max;\n\treturn value;\n}\n//#endregion\n//#region src/syntax/green.ts\nfunction greenToken(kind, text) {\n\treturn {\n\t\ttype: \"token\",\n\t\tkind,\n\t\ttext\n\t};\n}\nfunction greenNode(kind, children) {\n\tlet textLength = 0;\n\tfor (const child of children) textLength += child.type === \"token\" ? child.text.length : child.textLength;\n\treturn {\n\t\ttype: \"node\",\n\t\tkind,\n\t\tchildren,\n\t\ttextLength\n\t};\n}\n//#endregion\n//#region src/syntax/green-builder.ts\nvar GreenNodeBuilder = class {\n\t#stack = [];\n\tstartNode(kind) {\n\t\tthis.#stack.push({\n\t\t\tkind,\n\t\t\tchildren: []\n\t\t});\n\t}\n\ttoken(kind, text) {\n\t\tconst current = this.#stack.at(-1);\n\t\tif (!current) throw new InternalError(\"GreenNodeBuilder: token() called with no open node\");\n\t\tcurrent.children.push(greenToken(kind, text));\n\t}\n\tfinishNode() {\n\t\tconst completed = this.#stack.pop();\n\t\tif (!completed) throw new InternalError(\"GreenNodeBuilder: finishNode() called with no open node\");\n\t\tconst node = greenNode(completed.kind, completed.children);\n\t\tconst parent = this.#stack.at(-1);\n\t\tif (parent) parent.children.push(node);\n\t\treturn node;\n\t}\n};\n//#endregion\n//#region src/parse.ts\nconst TRIVIA_KINDS = /* @__PURE__ */ new Set([\n\t\"Whitespace\",\n\t\"Newline\",\n\t\"Comment\"\n]);\n/**\n* The fault-tolerant parser substrate the parse functions below drive. Trivia is flushed\n* into the enclosing open node, so every child node spans exactly its first\n* through last significant token.\n*/\nvar Cursor = class {\n\t#tokenizer;\n\t#sourceFile;\n\t#builder = new GreenNodeBuilder();\n\t#diagnostics = [];\n\t#offset = 0;\n\t#depth = 0;\n\tconstructor(filename, source) {\n\t\tthis.#tokenizer = new Tokenizer(source);\n\t\tthis.#sourceFile = new SourceFile(filename, source);\n\t}\n\tget diagnostics() {\n\t\treturn this.#diagnostics;\n\t}\n\tget sourceFile() {\n\t\treturn this.#sourceFile;\n\t}\n\tpeekKind(ahead = 0) {\n\t\treturn this.peekToken(ahead).kind;\n\t}\n\tpeekToken(ahead = 0) {\n\t\tlet rawIndex = 0;\n\t\tlet remaining = ahead;\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek(rawIndex);\n\t\t\tif (token.kind === \"Eof\") return token;\n\t\t\tif (TRIVIA_KINDS.has(token.kind)) {\n\t\t\t\trawIndex++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (remaining === 0) return token;\n\t\t\tremaining--;\n\t\t\trawIndex++;\n\t\t}\n\t}\n\tnewlineBefore(ahead = 0) {\n\t\tlet rawIndex = 0;\n\t\tlet remaining = ahead;\n\t\tlet newline = false;\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek(rawIndex);\n\t\t\tif (token.kind === \"Eof\") return newline;\n\t\t\tif (TRIVIA_KINDS.has(token.kind)) {\n\t\t\t\tif (token.kind === \"Newline\") newline = true;\n\t\t\t\trawIndex++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (remaining === 0) return newline;\n\t\t\tremaining--;\n\t\t\tnewline = false;\n\t\t\trawIndex++;\n\t\t}\n\t}\n\t/** Span of the significant token `lookahead` positions ahead (`mark(0)` = the next). */\n\tmark(lookahead = 0) {\n\t\tlet rawIndex = 0;\n\t\tlet offset = this.#offset;\n\t\tlet remaining = lookahead;\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek(rawIndex);\n\t\t\tif (token.kind === \"Eof\") return {\n\t\t\t\toffset,\n\t\t\t\tlength: token.text.length\n\t\t\t};\n\t\t\tif (!TRIVIA_KINDS.has(token.kind) && remaining === 0) return {\n\t\t\t\toffset,\n\t\t\t\tlength: token.text.length\n\t\t\t};\n\t\t\tif (!TRIVIA_KINDS.has(token.kind)) remaining--;\n\t\t\toffset += token.text.length;\n\t\t\trawIndex++;\n\t\t}\n\t}\n\t/**\n\t* Zero-width mark just past the last consumed significant token — anchors an\n\t* \"expected here\" diagnostic, e.g. the `{` missing after a declaration's name.\n\t*/\n\tmarkAfterLastToken() {\n\t\treturn {\n\t\t\toffset: this.#offset,\n\t\t\tlength: 0\n\t\t};\n\t}\n\tstartNode(kind) {\n\t\tif (this.#depth > 0) this.flushTrivia();\n\t\tthis.#builder.startNode(kind);\n\t\tthis.#depth++;\n\t}\n\tfinishNode() {\n\t\tthis.#depth--;\n\t\treturn this.#builder.finishNode();\n\t}\n\tbump() {\n\t\tthis.flushTrivia();\n\t\tconst token = this.#tokenizer.peek();\n\t\tif (token.kind === \"Eof\") return token;\n\t\tthis.#builder.token(token.kind, token.text);\n\t\tthis.#advance();\n\t\treturn token;\n\t}\n\trecoverToSyncPoint() {\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek();\n\t\t\tif (token.kind === \"Eof\" || token.kind === \"Newline\" || token.kind === \"RBrace\") return;\n\t\t\tthis.#builder.token(token.kind, token.text);\n\t\t\tthis.#advance();\n\t\t}\n\t}\n\tflushTrivia() {\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek();\n\t\t\tif (!TRIVIA_KINDS.has(token.kind)) return;\n\t\t\tthis.#builder.token(token.kind, token.text);\n\t\t\tthis.#advance();\n\t\t}\n\t}\n\tdiagnostic(code, message, mark) {\n\t\tconst start = mark.offset;\n\t\tconst end = start + mark.length;\n\t\tthis.#diagnostics.push({\n\t\t\tfilename: this.#sourceFile.filename,\n\t\t\tcode,\n\t\t\tmessage,\n\t\t\trange: {\n\t\t\t\tstart: this.#sourceFile.positionAt(start),\n\t\t\t\tend: this.#sourceFile.positionAt(end)\n\t\t\t}\n\t\t});\n\t}\n\t#advance() {\n\t\tthis.#offset += this.#tokenizer.next().text.length;\n\t}\n};\nfunction parseIdentifier(cursor) {\n\tcursor.startNode(\"Identifier\");\n\tcursor.bump();\n\tcursor.finishNode();\n}\n/**\n* Returns `undefined` when the next significant token does not start a\n* recognised expression, leaving recovery to the caller.\n*/\nfunction parseExpression(cursor) {\n\treturn parseStringLiteralExpr(cursor) ?? parseNumberLiteralExpr(cursor) ?? parseArrayLiteral(cursor) ?? parseObjectLiteralExpr(cursor) ?? parseTaggedLiteral(cursor) ?? parseFunctionCall(cursor) ?? parsePathExpr(cursor) ?? parseBooleanLiteralExpr(cursor) ?? parseIdentifierExpr(cursor);\n}\n/** A string literal outside a tagged literal, where a backtick string is refused. */\nfunction parseStringLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"StringLiteral\") return void 0;\n\tif (cursor.peekToken().text.startsWith(\"`\")) cursor.diagnostic(\"PSL_BACKTICK_STRING_REQUIRES_TAG\", \"A backtick string must follow a tag, as in tag`...`.\", cursor.mark());\n\treturn parseStringLiteral(cursor);\n}\nfunction parseStringLiteral(cursor) {\n\tconst stringMark = cursor.mark();\n\tconst text = cursor.peekToken().text;\n\tcursor.startNode(\"StringLiteralExpr\");\n\tcursor.bump();\n\tif (!isTerminatedStringLiteral(text)) cursor.diagnostic(\"PSL_UNTERMINATED_STRING\", \"Unterminated string literal\", stringMark);\n\treturn cursor.finishNode();\n}\nfunction parseNumberLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"NumberLiteral\") return void 0;\n\tcursor.startNode(\"NumberLiteralExpr\");\n\tcursor.bump();\n\treturn cursor.finishNode();\n}\n/**\n* Parses a namespace-qualified name `[space ':']? Ident ('.' Ident)*`. The\n* caller guarantees a leading `Ident`.\n*\n* Parsing the whole chain up front lets a position decide\n* constructor-vs-reference by peeking exactly one token for `(`, with no scan of\n* the dotted chain's length.\n*/\nfunction parseQualifiedName(cursor) {\n\tcursor.startNode(\"QualifiedName\");\n\tparseIdentifier(cursor);\n\tparseQualifiedSegments(cursor, \"Colon\");\n\tparseQualifiedSegments(cursor, \"Dot\");\n\tcursor.finishNode();\n}\n/**\n* A well-formed name carries at most one colon space and one dot namespace, so\n* each separator past the first of its kind reports `PSL_INVALID_QUALIFIED_NAME`.\n* The separator is consumed regardless, keeping the lossless round-trip intact.\n*/\nfunction parseQualifiedSegments(cursor, separator) {\n\tlet seen = 0;\n\twhile (cursor.peekKind() === separator && !cursor.newlineBefore()) {\n\t\tseen++;\n\t\tconst separatorMark = cursor.mark();\n\t\tcursor.bump();\n\t\tif (seen > 1) cursor.diagnostic(\"PSL_INVALID_QUALIFIED_NAME\", \"Qualified name has too many segments\", separatorMark);\n\t\tif (cursor.peekKind() === \"Ident\" && !cursor.newlineBefore()) parseIdentifier(cursor);\n\t\telse reportMissingSegment(cursor);\n\t}\n}\nfunction reportMissingSegment(cursor) {\n\tcursor.diagnostic(\"PSL_INVALID_QUALIFIED_NAME\", \"Qualified name is missing a name after the separator\", cursor.markAfterLastToken());\n}\n/**\n* Whether the next tokens open a tagged literal: a bare `Ident` or a\n* namespace-qualified `Ident.Ident`, then a string. Trivia may sit anywhere\n* between them. Bounded like {@link isCallAhead}.\n*/\nfunction isTaggedLiteralAhead(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return false;\n\tif (cursor.peekKind(1) === \"StringLiteral\") return true;\n\treturn cursor.peekKind(1) === \"Dot\" && cursor.peekKind(2) === \"Ident\" && cursor.peekKind(3) === \"StringLiteral\";\n}\n/** Parses `` tag`body` ``, `tag\"body\"`, or `tag'body'`: a qualified name, then a string literal. */\nfunction parseTaggedLiteral(cursor) {\n\tif (!isTaggedLiteralAhead(cursor)) return void 0;\n\tcursor.startNode(\"TaggedLiteral\");\n\tparseQualifiedName(cursor);\n\tparseStringLiteral(cursor);\n\treturn cursor.finishNode();\n}\nfunction parseBooleanLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tconst text = cursor.peekToken().text;\n\tif (text !== \"true\" && text !== \"false\") return void 0;\n\tcursor.startNode(\"BooleanLiteralExpr\");\n\tcursor.bump();\n\treturn cursor.finishNode();\n}\nfunction parseIdentifierExpr(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"Identifier\");\n\tcursor.bump();\n\treturn cursor.finishNode();\n}\nfunction parseArrayLiteral(cursor) {\n\tif (cursor.peekKind() !== \"LBracket\") return void 0;\n\tcursor.startNode(\"ArrayLiteral\");\n\tcursor.bump();\n\twhile (cursor.peekKind() !== \"RBracket\" && cursor.peekKind() !== \"Eof\") {\n\t\tif (!parseExpression(cursor)) break;\n\t\tif (cursor.peekKind() === \"Comma\") cursor.bump();\n\t\telse break;\n\t}\n\tif (cursor.peekKind() === \"RBracket\") cursor.bump();\n\treturn cursor.finishNode();\n}\nfunction parseObjectLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"LBrace\") return void 0;\n\tconst braceMark = cursor.mark();\n\tcursor.startNode(\"ObjectLiteralExpr\");\n\tcursor.bump();\n\twhile (cursor.peekKind() !== \"RBrace\" && cursor.peekKind() !== \"Eof\") {\n\t\tparseObjectField(cursor);\n\t\tif (cursor.peekKind() === \"Comma\") cursor.bump();\n\t\telse if (cursor.peekKind() === \"Ident\") cursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", \"Expected \\\",\\\" between object-literal fields\", cursor.markAfterLastToken());\n\t\telse break;\n\t}\n\tif (cursor.peekKind() === \"RBrace\") cursor.bump();\n\telse cursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", \"Unterminated object literal\", braceMark);\n\treturn cursor.finishNode();\n}\nfunction parseObjectField(cursor) {\n\tcursor.startNode(\"ObjectField\");\n\tconst keyMark = cursor.mark();\n\tconst keyText = cursor.peekToken().text;\n\tif (cursor.peekKind() === \"Ident\") parseIdentifier(cursor);\n\telse if (cursor.peekKind() === \"StringLiteral\") parseStringLiteralExpr(cursor);\n\tif (cursor.peekKind() === \"Colon\") {\n\t\tcursor.bump();\n\t\tif (!parseExpression(cursor)) cursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", \"Expected a value after \\\":\\\"\", cursor.mark());\n\t} else {\n\t\tcursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", `Expected \":\" after \"${keyText}\"`, keyMark);\n\t\tif (!(cursor.peekKind() === \"Ident\" && cursor.peekKind(1) === \"Colon\")) parseExpression(cursor);\n\t}\n\treturn cursor.finishNode();\n}\n/**\n* The dotted chain `Ident ('.' Ident)*` at the cursor, which stays on one line. `length` counts its\n* significant tokens: 1 for `a`, 3 for `a.b`, 5 for `a.b.c`; 0 when no `Ident` is next.\n* `trailingDot` marks a chain that ends in a `.` with no name after it, as in `auth.`.\n*/\nfunction dottedChain(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return {\n\t\tlength: 0,\n\t\ttrailingDot: false\n\t};\n\tlet length = 1;\n\twhile (cursor.peekKind(length) === \"Dot\" && !cursor.newlineBefore(length)) {\n\t\tif (cursor.peekKind(length + 1) !== \"Ident\" || cursor.newlineBefore(length + 1)) return {\n\t\t\tlength,\n\t\t\ttrailingDot: true\n\t\t};\n\t\tlength += 2;\n\t}\n\treturn {\n\t\tlength,\n\t\ttrailingDot: false\n\t};\n}\n/**\n* Whether the next tokens open a call: a dotted chain followed by `(`, such as\n* `autoincrement(`, `temporal.updatedAt(` or `address.geo.lat(`. A dotted chain\n* with no `(` after it, like `a.b`, is a path, not a call.\n*/\nfunction isCallAhead(cursor) {\n\tconst chain = dottedChain(cursor);\n\treturn chain.length > 0 && !chain.trailingDot && cursor.peekKind(chain.length) === \"LParen\";\n}\n/**\n* Parses a function/constructor call — bare `autoincrement()` or dotted\n* `address.city(sort: Asc)`. A dotted callee is a `PathExpr`, the node the same\n* chain gets without the call, so `address.city` has one shape whether or not\n* it is called; a bare callee is a `QualifiedName`. Returns `undefined` unless\n* {@link isCallAhead} confirms a trailing `(`, so the `parseExpression` chain\n* falls through to the path, boolean and bare-identifier forms.\n*/\nfunction parseFunctionCall(cursor) {\n\tif (!isCallAhead(cursor)) return void 0;\n\tconst chain = dottedChain(cursor);\n\tcursor.startNode(\"FunctionCall\");\n\tif (chain.length > 1) parsePath(cursor, chain);\n\telse parseQualifiedName(cursor);\n\tif (cursor.peekKind() === \"LParen\") parseParenArgs(cursor);\n\treturn cursor.finishNode();\n}\n/**\n* Parses a member path `Ident ('.' Ident)+` that is neither a call nor the tag\n* of a tagged literal, such as `address.city` in `@@index([address.city])`. A\n* path that ends in a `.` keeps the dot and reports the missing name, as in\n* `auth.` while the member is still being typed.\n*/\nfunction parsePathExpr(cursor) {\n\tconst chain = dottedChain(cursor);\n\tif (chain.length < 3 && !chain.trailingDot) return void 0;\n\treturn parsePath(cursor, chain);\n}\nfunction parsePath(cursor, chain) {\n\tcursor.startNode(\"PathExpr\");\n\tparseIdentifier(cursor);\n\tfor (let consumed = 1; consumed < chain.length; consumed += 2) {\n\t\tcursor.bump();\n\t\tparseIdentifier(cursor);\n\t}\n\tif (chain.trailingDot) {\n\t\tcursor.bump();\n\t\treportMissingSegment(cursor);\n\t}\n\treturn cursor.finishNode();\n}\n/** Parses a parenthesised, comma-separated `AttributeArg` list into the currently open node. */\nfunction parseParenArgs(cursor) {\n\tcursor.bump();\n\twhile (cursor.peekKind() !== \"RParen\" && cursor.peekKind() !== \"Eof\") {\n\t\tparseAttributeArg(cursor);\n\t\tif (cursor.peekKind() === \"Comma\") cursor.bump();\n\t\telse break;\n\t}\n\tif (cursor.peekKind() === \"RParen\") cursor.bump();\n}\nfunction parseAttributeArg(cursor) {\n\tconst kind = cursor.peekKind();\n\tif (kind !== \"Ident\" && kind !== \"StringLiteral\" && kind !== \"NumberLiteral\" && kind !== \"LBracket\" && kind !== \"LBrace\") return;\n\tcursor.startNode(\"AttributeArg\");\n\tif (cursor.peekKind() === \"Ident\" && cursor.peekKind(1) === \"Colon\") {\n\t\tparseIdentifier(cursor);\n\t\tcursor.bump();\n\t}\n\tparseArgValue(cursor);\n\tcursor.finishNode();\n}\nfunction parseArgValue(cursor) {\n\tparseExpression(cursor);\n}\nfunction parseAttributeArgList(cursor) {\n\tcursor.startNode(\"AttributeArgList\");\n\tparseParenArgs(cursor);\n\treturn cursor.finishNode();\n}\nfunction parseAttribute(cursor) {\n\tconst isBlockAttribute = cursor.peekKind() === \"DoubleAt\";\n\tconst attributeMark = cursor.mark();\n\tcursor.startNode(isBlockAttribute ? \"ModelAttribute\" : \"FieldAttribute\");\n\tcursor.bump();\n\tif (cursor.peekKind() === \"Ident\") parseQualifiedName(cursor);\n\telse cursor.diagnostic(\"PSL_INVALID_ATTRIBUTE_SYNTAX\", \"Attribute name expected\", attributeMark);\n\tif (cursor.peekKind() === \"LParen\") parseAttributeArgList(cursor);\n\treturn cursor.finishNode();\n}\n/**\n* A type annotation: `QualifiedName (argList)? (?)? ([])? (?)?`, e.g.\n* `pgvector.Vector(1536)?[]?`. The two `?` positions are distinct axes: a `?`\n* before `[]` makes the list elements nullable; a `?` after `[]` makes the\n* list itself nullable. Without a `[]`, a single `?` is the field-level\n* optional (`Foo?`), so a second `?` (`Foo??`) is malformed. When the field\n* has no type, no node is emitted — a missing type is the absence of a\n* `TypeAnnotation`, not a zero-width one.\n*/\nfunction parseTypeAnnotation(cursor, memberCode) {\n\tconst kind = cursor.peekKind();\n\tif (kind !== \"Ident\" && kind !== \"LBracket\" && kind !== \"Question\") return;\n\tcursor.startNode(\"TypeAnnotation\");\n\tif (cursor.peekKind() === \"Ident\") {\n\t\tparseQualifiedName(cursor);\n\t\tif (cursor.peekKind() === \"LParen\") parseAttributeArgList(cursor);\n\t}\n\tconst hasLeadingQuestion = cursor.peekKind() === \"Question\";\n\tif (hasLeadingQuestion) cursor.bump();\n\tlet isListType = false;\n\tif (cursor.peekKind() === \"LBracket\") {\n\t\tisListType = true;\n\t\tcursor.bump();\n\t\tif (cursor.peekKind() === \"RBracket\") cursor.bump();\n\t}\n\tlet trailingAllowed = isListType || !hasLeadingQuestion;\n\twhile (cursor.peekKind() === \"Question\") {\n\t\tif (!trailingAllowed) cursor.diagnostic(memberCode, \"Unexpected \\\"?\\\"; a type may be optional (`Foo?`), a list (`Foo[]`), have nullable elements (`Foo?[]`), or both (`Foo?[]?`)\", cursor.mark());\n\t\tcursor.bump();\n\t\ttrailingAllowed = false;\n\t}\n\tcursor.finishNode();\n}\n/**\n* Parses a full PSL document. Never throws — malformed input yields diagnostics\n* and a recovered tree, not an exception.\n*/\nfunction parse(source, filename, options = {}) {\n\tconst cursor = new Cursor(filename, source);\n\tconst root = createSyntaxTree(parseDocument(cursor, options));\n\tconst document = DocumentAst.cast(root) ?? new DocumentAst(root);\n\tconst sources = new PslSources([[document.syntax, cursor.sourceFile]]);\n\treturn {\n\t\tdocument,\n\t\tdiagnostics: cursor.diagnostics,\n\t\tsources\n\t};\n}\nfunction parseDocument(cursor, options) {\n\tcursor.startNode(\"Document\");\n\twhile (cursor.peekKind() !== \"Eof\") parseDeclaration(cursor, false, options);\n\tcursor.flushTrivia();\n\treturn cursor.finishNode();\n}\nconst RESERVED_BLOCK_KEYWORDS = /* @__PURE__ */ new Set([\n\t\"model\",\n\t\"namespace\",\n\t\"type\",\n\t\"types\"\n]);\nfunction keywordIs(cursor, keyword) {\n\treturn cursor.peekKind() === \"Ident\" && cursor.peekToken().text === keyword;\n}\n/**\n* Each alternative is a no-op on non-match, consuming nothing, so the\n* forward-only cursor is never left half-consumed by a rejected alternative.\n* Recovery runs via the `if (!node)` tail rather than as a `??` arm, because it\n* appends raw tokens to the open parent instead of returning a child node.\n*/\nfunction parseDeclaration(cursor, insideNamespace, options) {\n\tconst name = cursor.peekKind(1) === \"Ident\" ? cursor.peekToken(1).text : \"\";\n\tif (insideNamespace && keywordIs(cursor, \"namespace\")) cursor.diagnostic(\"PSL_INVALID_NAMESPACE_BLOCK\", `Recursive \"namespace ${name}\" block is not allowed; namespace blocks may not nest`, cursor.mark());\n\telse if (insideNamespace && keywordIs(cursor, \"types\")) cursor.diagnostic(\"PSL_INVALID_NAMESPACE_BLOCK\", \"`types` blocks must be declared at the document top level, not inside a namespace block\", cursor.mark());\n\telse if (keywordIs(cursor, \"namespace\") && name === UNSPECIFIED_PSL_NAMESPACE_ID) cursor.diagnostic(\"PSL_INVALID_NAMESPACE_BLOCK\", `Namespace name \"${UNSPECIFIED_PSL_NAMESPACE_ID}\" is reserved for the parser-synthesised bucket for top-level declarations`, cursor.mark(1));\n\tif (!(parseModel(cursor) ?? parseNamespace(cursor, options) ?? parseCompositeType(cursor) ?? parseTypesBlock(cursor) ?? parseGenericBlock(cursor, options))) parseUnsupportedTopLevel(cursor);\n}\n/**\n* Reports only the first missing piece — a missing name suppresses the\n* missing-brace diagnostic. `nameRequired` is false only for the `types` block.\n*/\nfunction parseBlock(cursor, kind, nameRequired, parseMember) {\n\tconst keyword = cursor.peekToken().text;\n\tconst keywordMark = cursor.mark();\n\tcursor.startNode(kind);\n\tcursor.bump();\n\tconst hasName = nameRequired && cursor.peekKind() === \"Ident\";\n\tif (hasName) parseIdentifier(cursor);\n\tif (nameRequired && !hasName) cursor.diagnostic(\"PSL_INVALID_DECLARATION\", `Expected a name after \"${keyword}\"`, keywordMark);\n\telse if (cursor.peekKind() !== \"LBrace\") cursor.diagnostic(\"PSL_INVALID_DECLARATION\", `Expected \"{\" to open the \"${keyword}\" block`, cursor.markAfterLastToken());\n\tif (cursor.peekKind() === \"LBrace\") parseBlockBody(cursor, parseMember);\n\telse cursor.recoverToSyncPoint();\n\treturn cursor.finishNode();\n}\nfunction parseModel(cursor) {\n\tif (!keywordIs(cursor, \"model\")) return void 0;\n\treturn parseBlock(cursor, \"ModelDeclaration\", true, parseModelMember);\n}\n/**\n* Excluding the reserved keywords keeps a malformed reserved block (e.g. `model\n* {` with no name) routed to its dedicated parser. The generic keyword set is\n* open, so a bare identifier with no brace (e.g. `oops`) is read as an unfinished\n* custom declaration rather than unsupported content.\n*/\nfunction parseGenericBlock(cursor, options) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tconst keyword = cursor.peekToken().text;\n\tif (RESERVED_BLOCK_KEYWORDS.has(keyword)) return void 0;\n\tconst hasName = cursor.peekKind(1) === \"Ident\" && cursor.peekKind(2) === \"LBrace\";\n\tcursor.startNode(\"GenericBlockDeclaration\");\n\tcursor.bump();\n\tif (hasName) parseIdentifier(cursor);\n\tif (cursor.peekKind() === \"LBrace\") parseBlockBody(cursor, genericBlockMemberParser(keyword, options));\n\telse {\n\t\tcursor.diagnostic(\"PSL_INVALID_DECLARATION\", `Expected \"{\" to open the \"${keyword}\" block`, cursor.markAfterLastToken());\n\t\tcursor.recoverToSyncPoint();\n\t}\n\treturn cursor.finishNode();\n}\nfunction parseNamespace(cursor, options) {\n\tif (!keywordIs(cursor, \"namespace\")) return void 0;\n\treturn parseBlock(cursor, \"Namespace\", true, (inner) => parseDeclaration(inner, true, options));\n}\nfunction parseCompositeType(cursor) {\n\tif (!keywordIs(cursor, \"type\")) return void 0;\n\treturn parseBlock(cursor, \"CompositeTypeDeclaration\", true, parseModelMember);\n}\n/** `types` (plural) is the no-name types block; the singular `type` is the composite type above. */\nfunction parseTypesBlock(cursor) {\n\tif (!keywordIs(cursor, \"types\")) return void 0;\n\treturn parseBlock(cursor, \"TypesBlock\", false, parseNamedTypeMember);\n}\n/** Every `parseMember` consumes at least one significant token, so the loop always terminates. */\nfunction parseBlockBody(cursor, parseMember) {\n\tconst braceMark = cursor.mark();\n\tcursor.bump();\n\tfor (;;) {\n\t\tconst kind = cursor.peekKind();\n\t\tif (kind === \"RBrace\" || kind === \"Eof\") break;\n\t\tparseMember(cursor);\n\t}\n\tif (cursor.peekKind() === \"RBrace\") cursor.bump();\n\telse cursor.diagnostic(\"PSL_UNTERMINATED_BLOCK\", \"Unterminated block declaration\", braceMark);\n}\nfunction parseUnsupportedTopLevel(cursor) {\n\tconst offending = cursor.peekToken().text;\n\tconst message = cursor.peekKind(1) === \"LBrace\" ? `Unsupported top-level block \"${offending}\"` : `Unsupported top-level declaration \"${offending}\"`;\n\tcursor.diagnostic(\"PSL_UNSUPPORTED_TOP_LEVEL_BLOCK\", message, cursor.mark());\n\tcursor.bump();\n\tcursor.recoverToSyncPoint();\n}\n/**\n* Matches a leading `@@` block attribute, a no-op otherwise. Single-`@`\n* attributes belong to fields and are parsed inside `parseField`.\n*/\nfunction parseBlockAttribute(cursor) {\n\tif (cursor.peekKind() !== \"DoubleAt\") return void 0;\n\treturn parseAttribute(cursor);\n}\nfunction parseModelMember(cursor) {\n\tif (!(parseBlockAttribute(cursor) ?? parseField(cursor))) invalidMember(cursor, \"PSL_INVALID_MODEL_MEMBER\", `Invalid model member declaration \"${cursor.peekToken().text}\"`);\n}\nfunction parseNamedTypeMember(cursor) {\n\tif (!parseNamedType(cursor)) invalidMember(cursor, \"PSL_INVALID_TYPES_MEMBER\", `Invalid types declaration \"${cursor.peekToken().text}\"`);\n}\n/**\n* A generic block reads `key = value` entries and bare keys; in an `enum` block those may carry `@`\n* attributes (`USER @map(\"user\")`). In the `prisma-7` grammar, a `view` body is read like a model\n* body. Each interpreter decides whether it accepts the block and its members.\n*/\nfunction genericBlockMemberParser(keyword, options) {\n\tif (keyword === \"view\" && options.grammar === \"prisma-7\") return parseModelMember;\n\tif (keyword === \"enum\") return parseEnumMember;\n\treturn parseKeyValueMember;\n}\n/**\n* A generic-block member is either a `@@`-block attribute or a `key = value`\n* entry. The block-attribute alternative is purely syntactic — it does not judge\n* whether the attribute is valid for the block's kind.\n*/\nfunction parseKeyValueMember(cursor) {\n\tif (!(parseBlockAttribute(cursor) ?? parseKeyValue(cursor))) invalidMember(cursor, \"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", \"Invalid block entry\");\n}\nfunction parseEnumMember(cursor) {\n\tif (!(parseBlockAttribute(cursor) ?? parseKeyValue(cursor, { memberAttributes: true }))) invalidMember(cursor, \"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", \"Invalid block entry\");\n}\nfunction invalidMember(cursor, code, message) {\n\tcursor.diagnostic(code, message, cursor.mark());\n\tcursor.bump();\n\tcursor.recoverToSyncPoint();\n}\nfunction parseField(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"FieldDeclaration\");\n\tconst nameMark = cursor.mark();\n\tconst nameText = cursor.peekToken().text;\n\tparseIdentifier(cursor);\n\tif (cursor.peekKind() !== \"Ident\") cursor.diagnostic(\"PSL_INVALID_MODEL_MEMBER\", `Expected a type after field \"${nameText}\"`, nameMark);\n\tparseTypeAnnotation(cursor, \"PSL_INVALID_MODEL_MEMBER\");\n\twhile (cursor.peekKind() === \"At\") parseAttribute(cursor);\n\treturn cursor.finishNode();\n}\nfunction parseNamedType(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"NamedTypeDeclaration\");\n\tconst nameMark = cursor.mark();\n\tconst nameText = cursor.peekToken().text;\n\tparseIdentifier(cursor);\n\tif (cursor.peekKind() === \"Equals\") cursor.bump();\n\telse cursor.diagnostic(\"PSL_INVALID_TYPES_MEMBER\", `Expected \"=\" after \"${nameText}\"`, nameMark);\n\tparseTypeAnnotation(cursor, \"PSL_INVALID_TYPES_MEMBER\");\n\twhile (cursor.peekKind() === \"At\") parseAttribute(cursor);\n\treturn cursor.finishNode();\n}\n/**\n* A generic-block entry is either `key = value` or a bare `key` (committing a\n* `KeyValuePair` carrying only the key). With `memberAttributes` (enum blocks) any number of `@`\n* attributes may follow, as in `USER @map(\"user\")`. A `key =` with no following expression is\n* flagged.\n*/\nfunction parseKeyValue(cursor, options = { memberAttributes: false }) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"KeyValuePair\");\n\tparseIdentifier(cursor);\n\tif (cursor.peekKind() === \"Equals\") {\n\t\tcursor.bump();\n\t\tif (!parseExpression(cursor)) cursor.diagnostic(\"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", \"Expected a value after \\\"=\\\"\", cursor.mark());\n\t}\n\twhile (options.memberAttributes && cursor.peekKind() === \"At\") parseAttribute(cursor);\n\treturn cursor.finishNode();\n}\n//#endregion\nexport { PslSources as a, greenToken as i, GreenNodeBuilder as n, SourceFile as o, greenNode as r, parse as t };\n\n//# sourceMappingURL=parse-ymgXJUnk.mjs.map"],"mappings":"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"}
|
package/dist/psl-parser.d.mts
CHANGED
|
@@ -6,8 +6,8 @@ import { r as Result } from "./result-BYCOANWy.mjs";
|
|
|
6
6
|
import { n as AssembledAuthoringContributions } from "./control-B059zyD4.mjs";
|
|
7
7
|
import "./psl-ast-DA_tKWiL.mjs";
|
|
8
8
|
import { i as isPslIdentifier } from "./tokenizer-DW30uwhx-BHsWTwYk.mjs";
|
|
9
|
-
import {
|
|
10
|
-
import { $ as
|
|
9
|
+
import { L as PslDiagnostic, R as PslDiagnosticCollector, T as ModelAttributeAst, d as DiagnosticSource, dt as mapPslDiagnostics, it as diagnosticSource, m as FieldAttributeAst, n as AstNode, q as SyntaxNode, r as AttributeArgAst, rt as diagnosticFromSpan, tt as createPslDiagnosticCollector, z as PslSources } from "./parse-eSQ_clQv-Dd2RdJRb.mjs";
|
|
10
|
+
import { $ as NullArgType, A as EntityDeclaration, At as UnrestrictedNumArgType, B as FuncCallSig, Bt as memberEntries, C as ContributedTypeScope, Ct as SymbolTable, D as DeclarationFor, Dt as TypedFuncCall, E as CtxOf, Et as TopLevelScope, F as FieldSymbol, Ft as createBinder, G as JsonArgType, Gt as typeReferenceNode, H as InferAttr, Ht as readResolvedAttribute, I as FixedIdentifierArgType, It as entityReference, J as ModelAttributeCtx, K as JsonValueArgType, L as FixedNumArgType, Lt as isNamespaceLike, M as EntitySelector, Mt as UnsupportedAttribute, N as FieldAttributeCtx, Nt as buildSymbolTable, O as DescribeUnresolvedType, Ot as UnresolvedTypeReference, P as FieldRefArgType, Pt as contributedTypeOf, Q as NamespaceSymbol, R as FixedStrArgType, Rt as keywordPslSpan, S as ContributedTypeNamespace, St as ScopeResolution, T as CreateBinderInput, Tt as TaggedLiteralArgType, U as InspectableArgType, Ut as readResolvedAttributes, V as IdentifierArgType, Vt as nodePslSpan, W as IntArgType, Wt as readResolvedConstructorCall, X as NamedOut, Y as ModelSymbol, Z as NamedTypeSymbol, _ as CompositeTypeSymbol, _t as ResolvedAttributeArg, a as AttributeLevel, at as PSL_UNRESOLVED_REFERENCE, b as ContributedNamespaceSymbol, bt as ResolvedTypeConstructorCall, c as AttributeSymbol, ct as PosOut, d as BinderResult, dt as RecordArgType, et as NumLiteral, f as BlockAttributeCtx, ft as ReferencedFieldRefArgType, g as BuildSymbolTableOptions, gt as ResolvedAttribute, h as BoundSpec, ht as Resolution, i as AttributeCtx, it as OutOf, j as EntityRefArgType, jt as UnrestrictedStrArgType, k as DescribeUnsupportedAttribute, kt as UnrestrictedIdentifierArgType, l as Binder, lt as PositionalParam, m as BoolArgType, mt as RequiredContextFor, n as ArgType, nt as OneOfArgType, o as AttributeOut, ot as Param, p as BlockSymbol, pt as RejectingArgType, q as ListArgType, r as ArgTypeKind, rt as OptionalArgType, s as AttributeSpec, st as ParsedTaggedLiteral, t as AnyArgType, tt as NumLiteralArgType, u as BinderContext, ut as PslSymbol, v as ContextForRequirement, vt as ResolvedEntityReference, w as ContributedTypeSymbol, wt as SymbolTableResult, x as ContributedTypeDescriptor, xt as Scope, y as ContributedMember, yt as ResolvedNamedTypeBinding, z as FuncCallArgType, zt as matchesSelector } from "./binder-CGmSEQPU-Bn32vwiq.mjs";
|
|
11
11
|
//#region ../../../1-framework/2-authoring/psl-parser/dist/index.d.mts
|
|
12
12
|
//#region src/attribute-helpers.d.ts
|
|
13
13
|
declare function getPositionalArgument(attribute: PslAttribute, index?: number): string | undefined;
|
|
@@ -16,15 +16,14 @@ declare function parseQuotedStringLiteral(value: string): string | undefined;
|
|
|
16
16
|
//#region src/block-spec/types.d.ts
|
|
17
17
|
interface BlockSpecContext {
|
|
18
18
|
readonly symbols: SymbolTable;
|
|
19
|
-
readonly block: BlockSymbol;
|
|
20
19
|
}
|
|
21
20
|
interface BlockEntryValueSpec {
|
|
22
|
-
readonly type: ArgType<unknown,
|
|
21
|
+
readonly type: ArgType<unknown, BlockAttributeCtx>;
|
|
23
22
|
readonly documentation: string;
|
|
24
23
|
}
|
|
25
24
|
interface StructBlockSpec<Out = unknown> {
|
|
26
25
|
readonly mode: 'struct';
|
|
27
|
-
readonly parameters: Readonly<Record<string, Param<unknown,
|
|
26
|
+
readonly parameters: Readonly<Record<string, Param<unknown, BlockAttributeCtx>>>;
|
|
28
27
|
readonly _out?: Out;
|
|
29
28
|
}
|
|
30
29
|
interface MapBlockSpec<Out = unknown> {
|
|
@@ -53,7 +52,7 @@ interface AttributeSpecNamespace {
|
|
|
53
52
|
readonly model: Readonly<Record<string, ModelAttributeSpecFactory>>;
|
|
54
53
|
readonly field: Readonly<Record<string, FieldAttributeSpecFactory>>;
|
|
55
54
|
}
|
|
56
|
-
type BlockAttributeSpecFactory = (ctx: BlockSpecContext) => AttributeSpec<never,
|
|
55
|
+
type BlockAttributeSpecFactory = (ctx: BlockSpecContext) => AttributeSpec<never, BlockAttributeCtx>;
|
|
57
56
|
//#endregion
|
|
58
57
|
//#region src/attribute-spec/assemble.d.ts
|
|
59
58
|
interface AssembledAttributeSpecs {
|
|
@@ -63,13 +62,13 @@ interface AssembledAttributeSpecs {
|
|
|
63
62
|
declare function assembleAttributeSpecs(contributions: AssembledAuthoringContributions): AssembledAttributeSpecs;
|
|
64
63
|
//#endregion
|
|
65
64
|
//#region src/attribute-spec/block-attribute.d.ts
|
|
66
|
-
interface BlockAttributeConfig<Pos extends readonly PositionalParam<unknown,
|
|
65
|
+
interface BlockAttributeConfig<Pos extends readonly PositionalParam<unknown, BlockAttributeCtx>[], Named extends Record<string, Param<unknown, BlockAttributeCtx>>> {
|
|
67
66
|
readonly documentation: string;
|
|
68
67
|
readonly positional?: Pos;
|
|
69
68
|
readonly named?: Named;
|
|
70
|
-
readonly refine?: (parsed: AttributeOut<Pos, Named>, ctx:
|
|
69
|
+
readonly refine?: (parsed: AttributeOut<Pos, Named>, ctx: BlockAttributeCtx, attributeNode: AstNode) => readonly PslDiagnostic[];
|
|
71
70
|
}
|
|
72
|
-
declare function blockAttribute<const Pos extends readonly PositionalParam<unknown,
|
|
71
|
+
declare function blockAttribute<const Pos extends readonly PositionalParam<unknown, BlockAttributeCtx>[] = readonly [], const Named extends Record<string, Param<unknown, BlockAttributeCtx>> = Record<never, never>>(name: string, config: BlockAttributeConfig<Pos, Named>): AttributeSpec<AttributeOut<Pos, Named>, BlockAttributeCtx>;
|
|
73
72
|
//#endregion
|
|
74
73
|
//#region src/attribute-spec/combinators/bool.d.ts
|
|
75
74
|
declare function bool(): BoolArgType<AttributeCtx>;
|
|
@@ -179,10 +178,10 @@ declare function modelAttribute<const Pos extends readonly PositionalParam<unkno
|
|
|
179
178
|
declare function optional<Type extends AnyArgType>(type: Type, ...rest: [] | [defaultValue: OutOf<Type> | undefined]): OptionalArgType<OutOf<Type>, CtxOf<Type>, Type>;
|
|
180
179
|
//#endregion
|
|
181
180
|
//#region src/block-spec/constructors.d.ts
|
|
182
|
-
declare function structBlock<const P extends Record<string, Param<unknown,
|
|
181
|
+
declare function structBlock<const P extends Record<string, Param<unknown, BlockAttributeCtx>>>(config: {
|
|
183
182
|
readonly parameters: P;
|
|
184
183
|
}): StructBlockSpec<NamedOut<P>>;
|
|
185
|
-
declare function mapBlock<R extends ArgType<unknown,
|
|
184
|
+
declare function mapBlock<R extends ArgType<unknown, BlockAttributeCtx>, Bare extends boolean = false>(config: {
|
|
186
185
|
readonly value: {
|
|
187
186
|
readonly type: R;
|
|
188
187
|
readonly documentation: string;
|
|
@@ -244,5 +243,5 @@ declare function isPrismaNextSchema(text: string): boolean;
|
|
|
244
243
|
/** The document with the directive earlier releases wrote replaced by the current one. */
|
|
245
244
|
declare function renameLegacyDirective(text: string): string;
|
|
246
245
|
//#endregion
|
|
247
|
-
export { type ArgBindingSpec, type ArgType, type ArgTypeKind, type AssembledAttributeSpecs, type AttributeCtx, type AttributeLevel, type AttributeOut, type AttributeSpec, type AttributeSpecContext, type AttributeSpecNamespace, type AttributeSymbol, type Binder, type BinderContext, type BinderResult, type BlockAttributeSpecFactory, type BlockEntryValueSpec, type BlockSpec, type BlockSpecContext, type BlockSpecFactory, type BlockSymbol, type BoundSpec, type BuildSymbolTableOptions, type CompositeTypeSymbol, type ContributedMember, type ContributedNamespaceSymbol, type ContributedTypeDescriptor, type ContributedTypeNamespace, type ContributedTypeScope, type ContributedTypeSymbol, type CreateBinderInput, type DeclarationFor, type DescribeUnresolvedType, type DescribeUnsupportedAttribute, type DiagnosticSource, type EntityDeclaration, type EntityRefArgType, type EntitySelector, type FieldAttributeCtx, type FieldAttributeSpecContext, type FieldAttributeSpecFactory, type FieldSymbol, type FixedIdentifierArgType, type FuncCallSig, type IdentifierArgType, type InferAttr, type InferBlock, type InspectableArgType, type InterpretExtensionBlockAttributesInput, type InterpretExtensionBlockInput, type InterpretExtensionBlocksResult, type JsonValueArgType, type ListOptions, type MapBlockSpec, type ModelAttributeCtx, type ModelAttributeSpecFactory, type ModelSymbol, NAME_THE_PSL_SOURCE_LOSES, type NamedOut, type NamedTypeSymbol, type NamespaceSymbol, type NullArgType, type NumLiteral, type OptionalArgType, type OutOf, PSL_UNRESOLVED_REFERENCE, type Param, type ParsedPslExtensionBlock, type ParsedTaggedLiteral, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslBlockSpecDescriptor, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDiagnosticCollector, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParsedAttribute, type PslExtensionBlockPrintEntry, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslSymbol, type PslTypeConstructorCall, type PslTypesBlock, type RejectingArgType, type Resolution, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedEntityReference, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type Scope, type ScopeResolution, type StructBlockSpec, type SymbolTable, type SymbolTableResult, type TaggedLiteralArgType, type TopLevelScope, type TypedFuncCall, type UnresolvedTypeReference, type UnrestrictedIdentifierArgType, type UnsupportedAttribute, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };
|
|
246
|
+
export { type ArgBindingSpec, type ArgType, type ArgTypeKind, type AssembledAttributeSpecs, type AttributeCtx, type AttributeLevel, type AttributeOut, type AttributeSpec, type AttributeSpecContext, type AttributeSpecNamespace, type AttributeSymbol, type Binder, type BinderContext, type BinderResult, type BlockAttributeCtx, type BlockAttributeSpecFactory, type BlockEntryValueSpec, type BlockSpec, type BlockSpecContext, type BlockSpecFactory, type BlockSymbol, type BoundSpec, type BuildSymbolTableOptions, type CompositeTypeSymbol, type ContributedMember, type ContributedNamespaceSymbol, type ContributedTypeDescriptor, type ContributedTypeNamespace, type ContributedTypeScope, type ContributedTypeSymbol, type CreateBinderInput, type DeclarationFor, type DescribeUnresolvedType, type DescribeUnsupportedAttribute, type DiagnosticSource, type EntityDeclaration, type EntityRefArgType, type EntitySelector, type FieldAttributeCtx, type FieldAttributeSpecContext, type FieldAttributeSpecFactory, type FieldSymbol, type FixedIdentifierArgType, type FuncCallSig, type IdentifierArgType, type InferAttr, type InferBlock, type InspectableArgType, type InterpretExtensionBlockAttributesInput, type InterpretExtensionBlockInput, type InterpretExtensionBlocksResult, type JsonValueArgType, type ListOptions, type MapBlockSpec, type ModelAttributeCtx, type ModelAttributeSpecFactory, type ModelSymbol, NAME_THE_PSL_SOURCE_LOSES, type NamedOut, type NamedTypeSymbol, type NamespaceSymbol, type NullArgType, type NumLiteral, type OptionalArgType, type OutOf, PSL_UNRESOLVED_REFERENCE, type Param, type ParsedPslExtensionBlock, type ParsedTaggedLiteral, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslBlockSpecDescriptor, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDiagnosticCollector, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParsedAttribute, type PslExtensionBlockPrintEntry, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslSymbol, type PslTypeConstructorCall, type PslTypesBlock, type RejectingArgType, type Resolution, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedEntityReference, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type Scope, type ScopeResolution, type StructBlockSpec, type SymbolTable, type SymbolTableResult, type TaggedLiteralArgType, type TopLevelScope, type TypedFuncCall, type UnresolvedTypeReference, type UnrestrictedIdentifierArgType, type UnsupportedAttribute, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };
|
|
248
247
|
//# sourceMappingURL=psl-parser.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psl-parser.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.d.mts"],"mappings":";;;;;;;;;;;;iBASiB,sBAAsB,WAAW,cAAgB;iBACjD,yBAAyB;;;UAGhC;WACC,SAAS
|
|
1
|
+
{"version":3,"file":"psl-parser.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.d.mts"],"mappings":"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"}
|