@prisma-next/psl-parser 0.14.0-dev.48 → 0.14.0-dev.49
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/{declarations-CPDuQm7x.mjs → declarations-DR6To8_k.mjs} +6 -1
- package/dist/declarations-DR6To8_k.mjs.map +1 -0
- package/dist/format.d.mts +1 -1
- package/dist/format.mjs +2 -2
- package/dist/index.d.mts +26 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +94 -2
- package/dist/index.mjs.map +1 -1
- package/dist/{parse-Du30Ca0-.mjs → parse-3-vr14ej.mjs} +2 -2
- package/dist/{parse-Du30Ca0-.mjs.map → parse-3-vr14ej.mjs.map} +1 -1
- package/dist/{parse-BKN_-hW8.d.mts → parse-BazJr7Ye.d.mts} +3 -1
- package/dist/parse-BazJr7Ye.d.mts.map +1 -0
- package/dist/syntax.d.mts +1 -1
- package/dist/syntax.mjs +2 -2
- package/package.json +5 -5
- package/src/attribute-spec/combinators/bool.ts +19 -0
- package/src/attribute-spec/combinators/entity-ref.ts +24 -0
- package/src/attribute-spec/combinators/int.ts +19 -0
- package/src/attribute-spec/combinators/record.ts +43 -0
- package/src/attribute-spec/model-attribute.ts +27 -0
- package/src/exports/index.ts +6 -0
- package/src/syntax/ast/qualified-name.ts +6 -0
- package/dist/declarations-CPDuQm7x.mjs.map +0 -1
- package/dist/parse-BKN_-hW8.d.mts.map +0 -1
|
@@ -435,6 +435,11 @@ var QualifiedNameAst = class QualifiedNameAst {
|
|
|
435
435
|
}
|
|
436
436
|
return segments;
|
|
437
437
|
}
|
|
438
|
+
/** True iff this is a single unqualified identifier whose text equals `name`. */
|
|
439
|
+
isSimpleName(name) {
|
|
440
|
+
if (this.dot() !== void 0 || this.colon() !== void 0) return false;
|
|
441
|
+
return this.identifier()?.token()?.text === name;
|
|
442
|
+
}
|
|
438
443
|
/**
|
|
439
444
|
* Flags a malformed name with more qualifier segments than allowed (a second
|
|
440
445
|
* `:`-space or a second `.`-namespace).
|
|
@@ -1052,4 +1057,4 @@ var NamedTypeDeclarationAst = class NamedTypeDeclarationAst {
|
|
|
1052
1057
|
//#endregion
|
|
1053
1058
|
export { SyntaxNode as A, QualifiedNameAst as C, findChildToken as D, filterChildren as E, TokenAtOffset as M, createSyntaxTree as N, findFirstChild as O, castExpression as S, any as T, FunctionCallAst as _, KeyValuePairAst as a, ObjectLiteralExprAst as b, NamespaceDeclarationAst as c, AttributeArgListAst as d, FieldAttributeAst as f, BooleanLiteralExprAst as g, AttributeArgAst as h, GenericBlockDeclarationAst as i, SyntaxToken as j, printSyntax as k, TypesBlockAst as l, ArrayLiteralAst as m, DocumentAst as n, ModelDeclarationAst as o, ModelAttributeAst as p, FieldDeclarationAst as r, NamedTypeDeclarationAst as s, CompositeTypeDeclarationAst as t, TypeAnnotationAst as u, NumberLiteralExprAst as v, IdentifierAst as w, StringLiteralExprAst as x, ObjectFieldAst as y };
|
|
1054
1059
|
|
|
1055
|
-
//# sourceMappingURL=declarations-
|
|
1060
|
+
//# sourceMappingURL=declarations-DR6To8_k.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations-DR6To8_k.mjs","names":["#state","#segmentBefore","#segmentAfter","#separatorCount"],"sources":["../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"],"sourcesContent":["import type { Token, TokenKind } from '../tokenizer';\nimport type { GreenElement, GreenNode, GreenToken } from './green';\nimport type { SyntaxKind } from './syntax-kind';\n\n/**\n * A token in the red tree. Unlike the green-layer {@link Token} (kind + text\n * only), a red token also carries its absolute `offset` within the source and a\n * link back to its `parent` {@link SyntaxNode}, so a cursor anchored on a token\n * can walk outward (parent, previous/next token, siblings) without re-scanning\n * from the document root.\n */\nexport class SyntaxToken implements Token {\n readonly green: GreenToken;\n readonly kind: TokenKind;\n readonly text: string;\n readonly offset: number;\n readonly parent: SyntaxNode;\n /** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */\n readonly index: number;\n\n constructor(green: GreenToken, offset: number, parent: SyntaxNode, index: number) {\n this.green = green;\n this.kind = green.kind;\n this.text = green.text;\n this.offset = offset;\n this.parent = parent;\n this.index = index;\n }\n\n get textLength(): number {\n return this.text.length;\n }\n\n get endOffset(): number {\n return this.offset + this.textLength;\n }\n\n /** Whether `offset` falls within this token, inclusive of both ends. */\n isInside(offset: number): boolean {\n return offset >= this.offset && offset <= this.endOffset;\n }\n\n isOutside(offset: number): boolean {\n return !this.isInside(offset);\n }\n\n /** The sibling element immediately after this token within its parent. */\n get nextSiblingOrToken(): SyntaxElement | undefined {\n return childAt(this.parent, this.index + 1);\n }\n\n /** The sibling element immediately before this token within its parent. */\n get prevSiblingOrToken(): SyntaxElement | undefined {\n return childAt(this.parent, this.index - 1);\n }\n\n /** The next token in document order, crossing node boundaries. */\n get nextToken(): SyntaxToken | undefined {\n for (let el = climbingNext(this); el !== undefined; el = climbingNext(el)) {\n const token = firstToken(el);\n if (token !== undefined) return token;\n }\n return undefined;\n }\n\n /** The previous token in document order, crossing node boundaries. */\n get prevToken(): SyntaxToken | undefined {\n for (let el = climbingPrev(this); el !== undefined; el = climbingPrev(el)) {\n const token = lastToken(el);\n if (token !== undefined) return token;\n }\n return undefined;\n }\n}\n\nexport type SyntaxElement = SyntaxNode | SyntaxToken;\n\n/**\n * The result of {@link SyntaxNode.tokenAtOffset}: an offset can fall outside\n * every token (`none`), strictly inside a single token (`single`), or exactly on\n * the seam between two adjacent tokens (`between`). `leftBiased` / `rightBiased`\n * collapse the seam case to one side; for `single` both return the same token,\n * for `none` both return `undefined`.\n */\ntype TokenAtOffsetState =\n | { readonly kind: 'none' }\n | { readonly kind: 'single'; readonly token: SyntaxToken }\n | { readonly kind: 'between'; readonly left: SyntaxToken; readonly right: SyntaxToken };\n\nexport class TokenAtOffset {\n readonly #state: TokenAtOffsetState;\n\n private constructor(state: TokenAtOffsetState) {\n this.#state = state;\n }\n\n static none(): TokenAtOffset {\n return new TokenAtOffset({ kind: 'none' });\n }\n\n static single(token: SyntaxToken): TokenAtOffset {\n return new TokenAtOffset({ kind: 'single', token });\n }\n\n static between(left: SyntaxToken, right: SyntaxToken): TokenAtOffset {\n return new TokenAtOffset({ kind: 'between', left, right });\n }\n\n get isEmpty(): boolean {\n return this.#state.kind === 'none';\n }\n\n get isBetween(): boolean {\n return this.#state.kind === 'between';\n }\n\n leftBiased(): SyntaxToken | undefined {\n switch (this.#state.kind) {\n case 'none':\n return undefined;\n case 'single':\n return this.#state.token;\n case 'between':\n return this.#state.left;\n }\n }\n\n rightBiased(): SyntaxToken | undefined {\n switch (this.#state.kind) {\n case 'none':\n return undefined;\n case 'single':\n return this.#state.token;\n case 'between':\n return this.#state.right;\n }\n }\n}\n\nexport class SyntaxNode {\n readonly green: GreenNode;\n readonly offset: number;\n readonly parent: SyntaxNode | undefined;\n /** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */\n readonly index: number;\n\n constructor(green: GreenNode, offset: number, parent: SyntaxNode | undefined, index: number) {\n this.green = green;\n this.offset = offset;\n this.parent = parent;\n this.index = index;\n }\n\n get kind(): SyntaxKind {\n return this.green.kind;\n }\n\n get textLength(): number {\n return this.green.textLength;\n }\n\n get endOffset(): number {\n return this.offset + this.textLength;\n }\n\n /** Whether `offset` falls within this node, inclusive of both ends. */\n isInside(offset: number): boolean {\n return offset >= this.offset && offset <= this.endOffset;\n }\n\n isOutside(offset: number): boolean {\n return !this.isInside(offset);\n }\n\n get firstChild(): SyntaxElement | undefined {\n return childAt(this, 0);\n }\n\n get lastChild(): SyntaxElement | undefined {\n const len = this.green.children.length;\n if (len === 0) return undefined;\n return childAt(this, len - 1);\n }\n\n get nextSibling(): SyntaxElement | undefined {\n return this.parent === undefined ? undefined : childAt(this.parent, this.index + 1);\n }\n\n get prevSibling(): SyntaxElement | undefined {\n return this.parent === undefined ? undefined : childAt(this.parent, this.index - 1);\n }\n\n /** The sibling element immediately after this node within its parent. */\n get nextSiblingOrToken(): SyntaxElement | undefined {\n return this.nextSibling;\n }\n\n /** The sibling element immediately before this node within its parent. */\n get prevSiblingOrToken(): SyntaxElement | undefined {\n return this.prevSibling;\n }\n\n /** The first token in this subtree (depth-first), or `undefined` if empty. */\n get firstToken(): SyntaxToken | undefined {\n return firstToken(this);\n }\n\n /** The last token in this subtree (depth-first), or `undefined` if empty. */\n get lastToken(): SyntaxToken | undefined {\n return lastToken(this);\n }\n\n *children(): Iterable<SyntaxElement> {\n let offset = this.offset;\n let index = 0;\n for (const child of this.green.children) {\n yield wrapElement(child, offset, this, index);\n offset += elementTextLength(child);\n index++;\n }\n }\n\n *childNodes(): Iterable<SyntaxNode> {\n for (const child of this.children()) {\n if (child instanceof SyntaxNode) yield child;\n }\n }\n\n *ancestors(): Iterable<SyntaxNode> {\n let current: SyntaxNode | undefined = this.parent;\n while (current) {\n yield current;\n current = current.parent;\n }\n }\n\n /** The nearest match, testing this node itself before walking its ancestors. */\n findAncestor<T>(cast: (node: SyntaxNode) => T | undefined): T | undefined {\n const self = cast(this);\n if (self !== undefined) {\n return self;\n }\n for (const ancestor of this.ancestors()) {\n const result = cast(ancestor);\n if (result !== undefined) {\n return result;\n }\n }\n return undefined;\n }\n\n *descendants(): Iterable<SyntaxElement> {\n const stack: SyntaxElement[] = [this];\n for (let el = stack.pop(); el !== undefined; el = stack.pop()) {\n yield el;\n if (el instanceof SyntaxNode) {\n const children = Array.from(el.children());\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (child !== undefined) {\n stack.push(child);\n }\n }\n }\n }\n }\n\n *tokens(): Iterable<SyntaxToken> {\n for (const el of this.descendants()) {\n if (el instanceof SyntaxToken) {\n yield el;\n }\n }\n }\n\n /**\n * The token(s) at `offset`. The between-two-tokens case (offset exactly on a\n * token seam) is represented explicitly so callers can left/right bias.\n */\n tokenAtOffset(offset: number): TokenAtOffset {\n return tokenAtOffsetOf(this, offset);\n }\n\n /**\n * The smallest element fully containing the range `[start, end]`. At a seam\n * (and for empty ranges) the left-hand element is preferred, matching\n * {@link containsOffset}'s inclusive span.\n */\n coveringElement(start: number, end: number): SyntaxElement {\n let result: SyntaxElement = this;\n for (;;) {\n if (result instanceof SyntaxToken) return result;\n let next: SyntaxElement | undefined;\n for (const child of result.children()) {\n if (containsRange(child, start, end)) {\n next = child;\n break;\n }\n }\n if (next === undefined) return result;\n result = next;\n }\n }\n}\n\nfunction elementTextLength(el: GreenElement): number {\n return el.type === 'token' ? el.text.length : el.textLength;\n}\n\nfunction elementLength(el: SyntaxElement): number {\n return el instanceof SyntaxToken ? el.text.length : el.textLength;\n}\n\n/**\n * Whether `el` contains `offset`. The span is inclusive on both ends so a seam\n * offset touches both neighbours.\n */\nfunction containsOffset(el: SyntaxElement, offset: number): boolean {\n const start = el.offset;\n const len = elementLength(el);\n return offset >= start && offset <= start + len;\n}\n\nfunction containsRange(el: SyntaxElement, start: number, end: number): boolean {\n const elStart = el.offset;\n const len = elementLength(el);\n return elStart <= start && end <= elStart + len;\n}\n\nfunction tokenAtOffsetOf(el: SyntaxElement, offset: number): TokenAtOffset {\n if (el instanceof SyntaxToken) {\n return TokenAtOffset.single(el);\n }\n let left: SyntaxElement | undefined;\n let right: SyntaxElement | undefined;\n for (const child of el.children()) {\n if (!containsOffset(child, offset)) continue;\n if (left === undefined) {\n left = child;\n } else {\n right = child;\n break;\n }\n }\n if (left === undefined) return TokenAtOffset.none();\n if (right === undefined) return tokenAtOffsetOf(left, offset);\n const leftToken = tokenAtOffsetOf(left, offset).rightBiased();\n const rightToken = tokenAtOffsetOf(right, offset).leftBiased();\n if (leftToken !== undefined && rightToken !== undefined) {\n return TokenAtOffset.between(leftToken, rightToken);\n }\n if (leftToken !== undefined) return TokenAtOffset.single(leftToken);\n if (rightToken !== undefined) return TokenAtOffset.single(rightToken);\n return TokenAtOffset.none();\n}\n\nfunction firstToken(el: SyntaxElement): SyntaxToken | undefined {\n if (el instanceof SyntaxToken) return el;\n for (const child of el.children()) {\n const token = firstToken(child);\n if (token !== undefined) return token;\n }\n return undefined;\n}\n\nfunction lastToken(el: SyntaxElement): SyntaxToken | undefined {\n if (el instanceof SyntaxToken) return el;\n const children = Array.from(el.children());\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (child !== undefined) {\n const token = lastToken(child);\n if (token !== undefined) return token;\n }\n }\n return undefined;\n}\n\nfunction climbingNext(el: SyntaxElement): SyntaxElement | undefined {\n let current: SyntaxElement = el;\n for (;;) {\n const parent = current.parent;\n if (parent === undefined) return undefined;\n const sibling = childAt(parent, current.index + 1);\n if (sibling !== undefined) return sibling;\n current = parent;\n }\n}\n\nfunction climbingPrev(el: SyntaxElement): SyntaxElement | undefined {\n let current: SyntaxElement = el;\n for (;;) {\n const parent = current.parent;\n if (parent === undefined) return undefined;\n const sibling = childAt(parent, current.index - 1);\n if (sibling !== undefined) return sibling;\n current = parent;\n }\n}\n\nfunction wrapElement(\n green: GreenElement,\n offset: number,\n parent: SyntaxNode,\n index: number,\n): SyntaxElement {\n if (green.type === 'token') {\n return new SyntaxToken(green, offset, parent, index);\n }\n return new SyntaxNode(green, offset, parent, index);\n}\n\nfunction childAt(node: SyntaxNode, index: number): SyntaxElement | undefined {\n const children = node.green.children;\n const target = children[index];\n if (target === undefined) return undefined;\n let offset = node.offset;\n for (let i = 0; i < index; i++) {\n const child = children[i];\n if (child !== undefined) {\n offset += elementTextLength(child);\n }\n }\n return wrapElement(target, offset, node, index);\n}\n\nexport function createSyntaxTree(green: GreenNode): SyntaxNode {\n return new SyntaxNode(green, 0, undefined, 0);\n}\n","import type { TokenKind } from '../tokenizer';\nimport { SyntaxNode, type SyntaxToken } from './red';\n\nexport interface AstNode {\n readonly syntax: SyntaxNode;\n}\n\nexport interface BracedBlock extends AstNode {\n lbrace(): SyntaxToken | undefined;\n rbrace(): SyntaxToken | undefined;\n}\n\nexport function findChildToken(node: SyntaxNode, kind: TokenKind): SyntaxToken | undefined {\n for (const child of node.children()) {\n if (!(child instanceof SyntaxNode) && child.kind === kind) {\n return child;\n }\n }\n return undefined;\n}\n\nexport function findFirstChild<T>(\n node: SyntaxNode,\n cast: (node: SyntaxNode) => T | undefined,\n): T | undefined {\n for (const child of node.childNodes()) {\n const result = cast(child);\n if (result !== undefined) return result;\n }\n return undefined;\n}\n\nexport function* filterChildren<T>(\n node: SyntaxNode,\n cast: (node: SyntaxNode) => T | undefined,\n): Iterable<T> {\n for (const child of node.childNodes()) {\n const result = cast(child);\n if (result !== undefined) yield result;\n }\n}\n\ntype CastTarget<C> = C extends (node: SyntaxNode) => infer R ? Exclude<R, undefined> : never;\n\nexport function any<Casts extends readonly ((node: SyntaxNode) => unknown)[]>(\n ...casts: Casts\n): (node: SyntaxNode) => CastTarget<Casts[number]> | undefined;\nexport function any(\n ...casts: ReadonlyArray<(node: SyntaxNode) => unknown>\n): (node: SyntaxNode) => unknown {\n return (node) => {\n for (const cast of casts) {\n const result = cast(node);\n if (result !== undefined) {\n return result;\n }\n }\n return undefined;\n };\n}\n\n/**\n * Raw source text of a CST node, verbatim (quotes and brackets preserved). For\n * the decoded value of a string literal, decode it instead.\n */\nexport function printSyntax(node: SyntaxNode): string {\n let text = '';\n for (const token of node.tokens()) {\n text += token.text;\n }\n return text;\n}\n","import type { AstNode } from '../ast-helpers';\nimport { findChildToken } from '../ast-helpers';\nimport type { SyntaxNode, SyntaxToken } from '../red';\n\nexport class IdentifierAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n token(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Ident');\n }\n\n name(): string | undefined {\n return this.token()?.text;\n }\n\n static cast(node: SyntaxNode): IdentifierAst | undefined {\n return node.kind === 'Identifier' ? new IdentifierAst(node) : undefined;\n }\n}\n","import type { AstNode } from '../ast-helpers';\nimport { filterChildren, findChildToken, findFirstChild } from '../ast-helpers';\nimport { SyntaxNode, type SyntaxToken } from '../red';\nimport { IdentifierAst } from './identifier';\n\n/** A namespace-qualified name, e.g. `pgvector.Vector` or `supabase:auth.User`. */\nexport class QualifiedNameAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n #segmentBefore(boundary: number): IdentifierAst | undefined {\n let found: IdentifierAst | undefined;\n for (const segment of filterChildren(this.syntax, IdentifierAst.cast)) {\n if (segment.syntax.offset >= boundary) break;\n found = segment;\n }\n return found;\n }\n\n #segmentAfter(boundary: number): IdentifierAst | undefined {\n for (const segment of filterChildren(this.syntax, IdentifierAst.cast)) {\n if (segment.syntax.offset > boundary) return segment;\n }\n return undefined;\n }\n\n #separatorCount(kind: 'Dot' | 'Colon'): number {\n let count = 0;\n for (const child of this.syntax.children()) {\n if (!(child instanceof SyntaxNode) && child.kind === kind) count++;\n }\n return count;\n }\n\n colon(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Colon');\n }\n\n dot(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Dot');\n }\n\n space(): IdentifierAst | undefined {\n const colon = this.colon();\n if (!colon) return undefined;\n return this.#segmentBefore(colon.offset);\n }\n\n namespace(): IdentifierAst | undefined {\n const dot = this.dot();\n if (!dot) return undefined;\n return this.#segmentBefore(dot.offset);\n }\n\n identifier(): IdentifierAst | undefined {\n const dot = this.dot();\n if (dot) return this.#segmentAfter(dot.offset);\n const colon = this.colon();\n if (colon) return this.#segmentAfter(colon.offset);\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n /**\n * Every identifier segment, in source order. A bare `Vector` yields\n * `['Vector']`; a qualified `pgvector.Vector` yields `['pgvector', 'Vector']`.\n */\n path(): readonly string[] {\n const segments: string[] = [];\n for (const segment of filterChildren(this.syntax, IdentifierAst.cast)) {\n const text = segment.token()?.text;\n if (text !== undefined) segments.push(text);\n }\n return segments;\n }\n\n /** True iff this is a single unqualified identifier whose text equals `name`. */\n isSimpleName(name: string): boolean {\n if (this.dot() !== undefined || this.colon() !== undefined) return false;\n return this.identifier()?.token()?.text === name;\n }\n\n /**\n * Flags a malformed name with more qualifier segments than allowed (a second\n * `:`-space or a second `.`-namespace).\n */\n isOverQualified(): boolean {\n return this.#separatorCount('Dot') > 1 || this.#separatorCount('Colon') > 1;\n }\n\n static cast(node: SyntaxNode): QualifiedNameAst | undefined {\n return node.kind === 'QualifiedName' ? new QualifiedNameAst(node) : undefined;\n }\n}\n","import type { AstNode } from '../ast-helpers';\nimport { filterChildren, findChildToken, findFirstChild } from '../ast-helpers';\nimport { SyntaxNode, type SyntaxToken } from '../red';\nimport { IdentifierAst } from './identifier';\nimport { QualifiedNameAst } from './qualified-name';\n\nexport class FunctionCallAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n /** The qualified-name callee, or `undefined` when identifier segments sit directly under the node. */\n name(): QualifiedNameAst | undefined {\n return findFirstChild(this.syntax, QualifiedNameAst.cast);\n }\n\n /**\n * The dotted call path, in source order. A bare `Vector(…)` yields\n * `['Vector']`; a namespace-qualified `pgvector.Vector(…)` yields\n * `['pgvector', 'Vector']`. Empty when the call carries no identifier.\n */\n path(): readonly string[] {\n const qualified = this.name();\n const segments: string[] = [];\n for (const segment of filterChildren(qualified?.syntax ?? this.syntax, IdentifierAst.cast)) {\n const text = segment.token()?.text;\n if (text !== undefined) segments.push(text);\n }\n return segments;\n }\n\n lparen(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LParen');\n }\n\n rparen(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RParen');\n }\n\n *args(): Iterable<AttributeArgAst> {\n yield* filterChildren(this.syntax, AttributeArgAst.cast);\n }\n\n static cast(node: SyntaxNode): FunctionCallAst | undefined {\n return node.kind === 'FunctionCall' ? new FunctionCallAst(node) : undefined;\n }\n}\n\nexport class ArrayLiteralAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n lbracket(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBracket');\n }\n\n rbracket(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBracket');\n }\n\n *elements(): Iterable<ExpressionAst> {\n yield* filterChildren(this.syntax, castExpression);\n }\n\n static cast(node: SyntaxNode): ArrayLiteralAst | undefined {\n return node.kind === 'ArrayLiteral' ? new ArrayLiteralAst(node) : undefined;\n }\n}\n\nconst HEX = /^[0-9a-fA-F]+$/;\n\nfunction decodeFixedHex(raw: string, start: number, width: number): string | undefined {\n if (start + width > raw.length) return undefined;\n const hex = raw.slice(start, start + width);\n if (!HEX.test(hex)) return undefined;\n return String.fromCharCode(Number.parseInt(hex, 16));\n}\n\nfunction decodeStringLiteral(raw: string): string {\n let out = '';\n let i = 0;\n while (i < raw.length) {\n const ch = raw.charAt(i);\n if (ch !== '\\\\' || i + 1 >= raw.length) {\n out += ch;\n i++;\n continue;\n }\n const next = raw.charAt(i + 1);\n switch (next) {\n case 'n':\n out += '\\n';\n i += 2;\n continue;\n case 'r':\n out += '\\r';\n i += 2;\n continue;\n case 't':\n out += '\\t';\n i += 2;\n continue;\n case '\"':\n out += '\"';\n i += 2;\n continue;\n case \"'\":\n out += \"'\";\n i += 2;\n continue;\n case '\\\\':\n out += '\\\\';\n i += 2;\n continue;\n case 'x': {\n const decoded = decodeFixedHex(raw, i + 2, 2);\n if (decoded === undefined) {\n out += '\\\\x';\n i += 2;\n continue;\n }\n out += decoded;\n i += 4;\n continue;\n }\n case 'u': {\n const decoded = decodeFixedHex(raw, i + 2, 4);\n if (decoded === undefined) {\n out += '\\\\u';\n i += 2;\n continue;\n }\n out += decoded;\n i += 6;\n continue;\n }\n default:\n out += `\\\\${next}`;\n i += 2;\n continue;\n }\n }\n return out;\n}\n\nexport class StringLiteralExprAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n token(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'StringLiteral');\n }\n\n value(): string | undefined {\n const tok = this.token();\n if (!tok) return undefined;\n return decodeStringLiteral(tok.text.slice(1, -1));\n }\n\n static cast(node: SyntaxNode): StringLiteralExprAst | undefined {\n return node.kind === 'StringLiteralExpr' ? new StringLiteralExprAst(node) : undefined;\n }\n}\n\nexport class NumberLiteralExprAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n token(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'NumberLiteral');\n }\n\n value(): number | undefined {\n const tok = this.token();\n if (!tok) return undefined;\n return Number(tok.text);\n }\n\n static cast(node: SyntaxNode): NumberLiteralExprAst | undefined {\n return node.kind === 'NumberLiteralExpr' ? new NumberLiteralExprAst(node) : undefined;\n }\n}\n\nexport class BooleanLiteralExprAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n token(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Ident');\n }\n\n value(): boolean | undefined {\n const tok = this.token();\n if (!tok) return undefined;\n if (tok.text === 'true') return true;\n if (tok.text === 'false') return false;\n return undefined;\n }\n\n static cast(node: SyntaxNode): BooleanLiteralExprAst | undefined {\n return node.kind === 'BooleanLiteralExpr' ? new BooleanLiteralExprAst(node) : undefined;\n }\n}\n\nexport class ObjectLiteralExprAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n lbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBrace');\n }\n\n rbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBrace');\n }\n\n *fields(): Iterable<ObjectFieldAst> {\n yield* filterChildren(this.syntax, ObjectFieldAst.cast);\n }\n\n static cast(node: SyntaxNode): ObjectLiteralExprAst | undefined {\n return node.kind === 'ObjectLiteralExpr' ? new ObjectLiteralExprAst(node) : undefined;\n }\n}\n\nexport class ObjectFieldAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n key(): IdentifierAst | undefined {\n for (const child of this.syntax.children()) {\n if (!(child instanceof SyntaxNode)) {\n if (child.kind === 'Colon') break;\n continue;\n }\n return IdentifierAst.cast(child);\n }\n return undefined;\n }\n\n /**\n * The field's logical key name, unquoted. An identifier key (`length:`) yields\n * its text; a string-literal key (`\"length\":`) yields the decoded string.\n * `undefined` when the field carries no key node.\n */\n keyName(): string | undefined {\n for (const child of this.syntax.children()) {\n if (!(child instanceof SyntaxNode)) {\n if (child.kind === 'Colon') break;\n continue;\n }\n const identifier = IdentifierAst.cast(child);\n if (identifier) return identifier.token()?.text;\n const stringKey = StringLiteralExprAst.cast(child);\n if (stringKey) return stringKey.value();\n return undefined;\n }\n return undefined;\n }\n\n colon(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Colon');\n }\n\n value(): ExpressionAst | undefined {\n if (this.colon()) {\n let pastColon = false;\n for (const child of this.syntax.children()) {\n if (!(child instanceof SyntaxNode)) {\n if (child.kind === 'Colon') pastColon = true;\n continue;\n }\n if (pastColon) {\n const expr = castExpression(child);\n if (expr) return expr;\n }\n }\n return undefined;\n }\n return findFirstChild(this.syntax, castExpression);\n }\n\n static cast(node: SyntaxNode): ObjectFieldAst | undefined {\n return node.kind === 'ObjectField' ? new ObjectFieldAst(node) : undefined;\n }\n}\n\nexport type ExpressionAst =\n | FunctionCallAst\n | ArrayLiteralAst\n | StringLiteralExprAst\n | NumberLiteralExprAst\n | BooleanLiteralExprAst\n | ObjectLiteralExprAst\n | IdentifierAst;\n\nexport function castExpression(node: SyntaxNode): ExpressionAst | undefined {\n return (\n FunctionCallAst.cast(node) ??\n ArrayLiteralAst.cast(node) ??\n StringLiteralExprAst.cast(node) ??\n NumberLiteralExprAst.cast(node) ??\n BooleanLiteralExprAst.cast(node) ??\n ObjectLiteralExprAst.cast(node) ??\n IdentifierAst.cast(node)\n );\n}\n\nexport class AttributeArgAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n name(): IdentifierAst | undefined {\n if (!this.colon()) return undefined;\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n colon(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Colon');\n }\n\n value(): ExpressionAst | undefined {\n if (this.colon()) {\n let pastColon = false;\n for (const child of this.syntax.children()) {\n if (!(child instanceof SyntaxNode)) {\n if (child.kind === 'Colon') pastColon = true;\n continue;\n }\n if (pastColon) {\n const expr = castExpression(child);\n if (expr) return expr;\n }\n }\n return undefined;\n }\n return findFirstChild(this.syntax, castExpression);\n }\n\n static cast(node: SyntaxNode): AttributeArgAst | undefined {\n return node.kind === 'AttributeArg' ? new AttributeArgAst(node) : undefined;\n }\n}\n","import type { AstNode } from '../ast-helpers';\nimport { filterChildren, findChildToken, findFirstChild } from '../ast-helpers';\nimport type { SyntaxNode, SyntaxToken } from '../red';\nimport { AttributeArgAst } from './expressions';\nimport { QualifiedNameAst } from './qualified-name';\n\nexport class AttributeArgListAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n lparen(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LParen');\n }\n\n rparen(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RParen');\n }\n\n *args(): Iterable<AttributeArgAst> {\n yield* filterChildren(this.syntax, AttributeArgAst.cast);\n }\n\n static cast(node: SyntaxNode): AttributeArgListAst | undefined {\n return node.kind === 'AttributeArgList' ? new AttributeArgListAst(node) : undefined;\n }\n}\n\nexport class FieldAttributeAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n at(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'At');\n }\n\n name(): QualifiedNameAst | undefined {\n return findFirstChild(this.syntax, QualifiedNameAst.cast);\n }\n\n argList(): AttributeArgListAst | undefined {\n return findFirstChild(this.syntax, AttributeArgListAst.cast);\n }\n\n static cast(node: SyntaxNode): FieldAttributeAst | undefined {\n return node.kind === 'FieldAttribute' ? new FieldAttributeAst(node) : undefined;\n }\n}\n\nexport class ModelAttributeAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n doubleAt(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'DoubleAt');\n }\n\n name(): QualifiedNameAst | undefined {\n return findFirstChild(this.syntax, QualifiedNameAst.cast);\n }\n\n argList(): AttributeArgListAst | undefined {\n return findFirstChild(this.syntax, AttributeArgListAst.cast);\n }\n\n static cast(node: SyntaxNode): ModelAttributeAst | undefined {\n return node.kind === 'ModelAttribute' ? new ModelAttributeAst(node) : undefined;\n }\n}\n","import type { AstNode } from '../ast-helpers';\nimport { findChildToken, findFirstChild } from '../ast-helpers';\nimport type { SyntaxNode, SyntaxToken } from '../red';\nimport { AttributeArgListAst } from './attributes';\nimport { QualifiedNameAst } from './qualified-name';\n\nexport class TypeAnnotationAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n /** The annotation's reference, doubling as the constructor callee when an {@link argList} follows. */\n name(): QualifiedNameAst | undefined {\n return findFirstChild(this.syntax, QualifiedNameAst.cast);\n }\n\n /** Present when the annotation is a constructor (`Vector(1536)`) rather than a plain reference. */\n argList(): AttributeArgListAst | undefined {\n return findFirstChild(this.syntax, AttributeArgListAst.cast);\n }\n\n isConstructor(): boolean {\n return this.argList() !== undefined;\n }\n\n lbracket(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBracket');\n }\n\n rbracket(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBracket');\n }\n\n questionMark(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Question');\n }\n\n isList(): boolean {\n return this.lbracket() !== undefined;\n }\n\n isOptional(): boolean {\n return this.questionMark() !== undefined;\n }\n\n static cast(node: SyntaxNode): TypeAnnotationAst | undefined {\n return node.kind === 'TypeAnnotation' ? new TypeAnnotationAst(node) : undefined;\n }\n}\n","import type { AstNode, BracedBlock } from '../ast-helpers';\nimport { filterChildren, findChildToken, findFirstChild } from '../ast-helpers';\nimport { SyntaxNode, type SyntaxToken } from '../red';\nimport { FieldAttributeAst, ModelAttributeAst } from './attributes';\nimport type { ExpressionAst } from './expressions';\nimport { castExpression } from './expressions';\nimport { IdentifierAst } from './identifier';\nimport { TypeAnnotationAst } from './type-annotation';\n\n/**\n * What may appear inside a `namespace` block: models, composite types, and\n * extension (block) declarations. `types {}` blocks and nested `namespace`\n * blocks are document-only, so they are not namespace members.\n */\nexport type NamespaceMemberAst =\n | ModelDeclarationAst\n | CompositeTypeDeclarationAst\n | GenericBlockDeclarationAst;\n\nexport type DeclarationAst = NamespaceMemberAst | TypesBlockAst | NamespaceDeclarationAst;\nexport type AttributeAst = FieldAttributeAst | ModelAttributeAst;\nexport type BlockMemberAst = FieldDeclarationAst | ModelAttributeAst;\nexport type GenericBlockMemberAst = KeyValuePairAst | ModelAttributeAst;\n\nfunction castNamespaceMember(node: SyntaxNode): NamespaceMemberAst | undefined {\n return (\n ModelDeclarationAst.cast(node) ??\n CompositeTypeDeclarationAst.cast(node) ??\n GenericBlockDeclarationAst.cast(node)\n );\n}\n\nexport class DocumentAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n *declarations(): Iterable<DeclarationAst> {\n yield* filterChildren(\n this.syntax,\n (node) =>\n castNamespaceMember(node) ?? TypesBlockAst.cast(node) ?? NamespaceDeclarationAst.cast(node),\n );\n }\n\n static cast(node: SyntaxNode): DocumentAst | undefined {\n return node.kind === 'Document' ? new DocumentAst(node) : undefined;\n }\n}\n\nexport class ModelDeclarationAst implements BracedBlock {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n keyword(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Ident');\n }\n\n name(): IdentifierAst | undefined {\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n lbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBrace');\n }\n\n rbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBrace');\n }\n\n *fields(): Iterable<FieldDeclarationAst> {\n yield* filterChildren(this.syntax, FieldDeclarationAst.cast);\n }\n\n *attributes(): Iterable<ModelAttributeAst> {\n yield* filterChildren(this.syntax, ModelAttributeAst.cast);\n }\n\n *members(): Iterable<BlockMemberAst> {\n yield* filterChildren(\n this.syntax,\n (node) => FieldDeclarationAst.cast(node) ?? ModelAttributeAst.cast(node),\n );\n }\n\n static cast(node: SyntaxNode): ModelDeclarationAst | undefined {\n return node.kind === 'ModelDeclaration' ? new ModelDeclarationAst(node) : undefined;\n }\n}\n\nexport class CompositeTypeDeclarationAst implements BracedBlock {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n keyword(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Ident');\n }\n\n name(): IdentifierAst | undefined {\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n lbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBrace');\n }\n\n rbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBrace');\n }\n\n *fields(): Iterable<FieldDeclarationAst> {\n yield* filterChildren(this.syntax, FieldDeclarationAst.cast);\n }\n\n *attributes(): Iterable<ModelAttributeAst> {\n yield* filterChildren(this.syntax, ModelAttributeAst.cast);\n }\n\n *members(): Iterable<BlockMemberAst> {\n yield* filterChildren(\n this.syntax,\n (node) => FieldDeclarationAst.cast(node) ?? ModelAttributeAst.cast(node),\n );\n }\n\n static cast(node: SyntaxNode): CompositeTypeDeclarationAst | undefined {\n return node.kind === 'CompositeTypeDeclaration'\n ? new CompositeTypeDeclarationAst(node)\n : undefined;\n }\n}\n\nexport class NamespaceDeclarationAst implements BracedBlock {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n keyword(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Ident');\n }\n\n name(): IdentifierAst | undefined {\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n lbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBrace');\n }\n\n rbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBrace');\n }\n\n *declarations(): Iterable<NamespaceMemberAst> {\n yield* filterChildren(this.syntax, castNamespaceMember);\n }\n\n static cast(node: SyntaxNode): NamespaceDeclarationAst | undefined {\n return node.kind === 'Namespace' ? new NamespaceDeclarationAst(node) : undefined;\n }\n}\n\nexport class TypesBlockAst implements BracedBlock {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n keyword(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Ident');\n }\n\n lbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBrace');\n }\n\n rbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBrace');\n }\n\n *declarations(): Iterable<NamedTypeDeclarationAst> {\n yield* filterChildren(this.syntax, NamedTypeDeclarationAst.cast);\n }\n\n static cast(node: SyntaxNode): TypesBlockAst | undefined {\n return node.kind === 'TypesBlock' ? new TypesBlockAst(node) : undefined;\n }\n}\n\nexport class GenericBlockDeclarationAst implements BracedBlock {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n keyword(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Ident');\n }\n\n name(): IdentifierAst | undefined {\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n lbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'LBrace');\n }\n\n rbrace(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'RBrace');\n }\n\n *entries(): Iterable<KeyValuePairAst> {\n yield* filterChildren(this.syntax, KeyValuePairAst.cast);\n }\n\n *attributes(): Iterable<ModelAttributeAst> {\n yield* filterChildren(this.syntax, ModelAttributeAst.cast);\n }\n\n *members(): Iterable<GenericBlockMemberAst> {\n yield* filterChildren(\n this.syntax,\n (node) => KeyValuePairAst.cast(node) ?? ModelAttributeAst.cast(node),\n );\n }\n\n static cast(node: SyntaxNode): GenericBlockDeclarationAst | undefined {\n return node.kind === 'GenericBlockDeclaration'\n ? new GenericBlockDeclarationAst(node)\n : undefined;\n }\n}\n\nexport class KeyValuePairAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n key(): IdentifierAst | undefined {\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n equals(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Equals');\n }\n\n value(): ExpressionAst | undefined {\n let pastEquals = false;\n for (const child of this.syntax.children()) {\n if (!(child instanceof SyntaxNode)) {\n if (child.kind === 'Equals') pastEquals = true;\n continue;\n }\n if (pastEquals) {\n const expr = castExpression(child);\n if (expr) return expr;\n }\n }\n return undefined;\n }\n\n static cast(node: SyntaxNode): KeyValuePairAst | undefined {\n return node.kind === 'KeyValuePair' ? new KeyValuePairAst(node) : undefined;\n }\n}\n\nexport class FieldDeclarationAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n name(): IdentifierAst | undefined {\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n typeAnnotation(): TypeAnnotationAst | undefined {\n return findFirstChild(this.syntax, TypeAnnotationAst.cast);\n }\n\n *attributes(): Iterable<FieldAttributeAst> {\n yield* filterChildren(this.syntax, FieldAttributeAst.cast);\n }\n\n static cast(node: SyntaxNode): FieldDeclarationAst | undefined {\n return node.kind === 'FieldDeclaration' ? new FieldDeclarationAst(node) : undefined;\n }\n}\n\nexport class NamedTypeDeclarationAst implements AstNode {\n readonly syntax: SyntaxNode;\n\n constructor(syntax: SyntaxNode) {\n this.syntax = syntax;\n }\n\n name(): IdentifierAst | undefined {\n return findFirstChild(this.syntax, IdentifierAst.cast);\n }\n\n equals(): SyntaxToken | undefined {\n return findChildToken(this.syntax, 'Equals');\n }\n\n typeAnnotation(): TypeAnnotationAst | undefined {\n return findFirstChild(this.syntax, TypeAnnotationAst.cast);\n }\n\n *attributes(): Iterable<FieldAttributeAst> {\n yield* filterChildren(this.syntax, FieldAttributeAst.cast);\n }\n\n static cast(node: SyntaxNode): NamedTypeDeclarationAst | undefined {\n return node.kind === 'NamedTypeDeclaration' ? new NamedTypeDeclarationAst(node) : undefined;\n }\n}\n"],"mappings":"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"}
|
package/dist/format.d.mts
CHANGED
package/dist/format.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as SyntaxNode, a as KeyValuePairAst, c as NamespaceDeclarationAst, i as GenericBlockDeclarationAst, l as TypesBlockAst, o as ModelDeclarationAst, p as ModelAttributeAst, r as FieldDeclarationAst, s as NamedTypeDeclarationAst, t as CompositeTypeDeclarationAst } from "./declarations-
|
|
2
|
-
import { t as parse } from "./parse-
|
|
1
|
+
import { A as SyntaxNode, a as KeyValuePairAst, c as NamespaceDeclarationAst, i as GenericBlockDeclarationAst, l as TypesBlockAst, o as ModelDeclarationAst, p as ModelAttributeAst, r as FieldDeclarationAst, s as NamedTypeDeclarationAst, t as CompositeTypeDeclarationAst } from "./declarations-DR6To8_k.mjs";
|
|
2
|
+
import { t as parse } from "./parse-3-vr14ej.mjs";
|
|
3
3
|
//#region src/format/error.ts
|
|
4
4
|
var PslFormatError = class extends Error {
|
|
5
5
|
diagnostics;
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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-
|
|
2
|
-
import { PslAttribute, PslAttribute as PslAttribute$1, PslAttributeArgument, PslAttributeNamedArgument, PslAttributePositionalArgument, PslAttributeTarget, PslCompositeType, PslDefaultFunctionValue, PslDefaultLiteralValue, PslDefaultValue, PslDiagnostic, PslDiagnostic as PslDiagnostic$1, PslDiagnosticCode, PslDocumentAst, PslExtensionBlock, PslExtensionBlock as PslExtensionBlock$1, PslExtensionBlockAttribute, PslExtensionBlockAttributeArg, PslExtensionBlockParamBare, PslExtensionBlockParamList, PslExtensionBlockParamOption, PslExtensionBlockParamRef, PslExtensionBlockParamScalarValue, PslExtensionBlockParamValue, PslField, PslFieldAttribute, PslModel, PslModelAttribute, PslNamedTypeDeclaration, PslNamespace, PslPosition, PslSpan, PslSpan as PslSpan$1, PslTypeConstructorCall, PslTypesBlock, flatPslModels, namespacePslExtensionBlocks } from "@prisma-next/framework-components/psl-ast";
|
|
1
|
+
import { $ as Range, H as SyntaxNode, P as AstNode, 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 { PslAttribute, PslAttribute as PslAttribute$1, PslAttributeArgument, PslAttributeNamedArgument, PslAttributePositionalArgument, PslAttributeTarget, PslCompositeType, PslDefaultFunctionValue, PslDefaultLiteralValue, PslDefaultValue, PslDiagnostic, PslDiagnostic as PslDiagnostic$1, PslDiagnosticCode, PslDiagnosticCode as PslDiagnosticCode$1, PslDocumentAst, PslExtensionBlock, PslExtensionBlock as PslExtensionBlock$1, PslExtensionBlockAttribute, PslExtensionBlockAttributeArg, PslExtensionBlockParamBare, PslExtensionBlockParamList, PslExtensionBlockParamOption, PslExtensionBlockParamRef, PslExtensionBlockParamScalarValue, PslExtensionBlockParamValue, PslField, PslFieldAttribute, PslModel, PslModelAttribute, PslNamedTypeDeclaration, PslNamespace, PslPosition, PslSpan, PslSpan as PslSpan$1, PslTypeConstructorCall, PslTypesBlock, flatPslModels, namespacePslExtensionBlocks } from "@prisma-next/framework-components/psl-ast";
|
|
3
3
|
import { Result } from "@prisma-next/utils/result";
|
|
4
4
|
import { AuthoringPslBlockDescriptor, AuthoringPslBlockDescriptorNamespace } from "@prisma-next/framework-components/authoring";
|
|
5
5
|
import { Simplify, UnionToIntersection } from "@prisma-next/utils/types";
|
|
@@ -170,6 +170,15 @@ type PosOut<Pos extends readonly PositionalParam[]> = Simplify<UnionToIntersecti
|
|
|
170
170
|
type AttributeOut<Pos extends readonly PositionalParam[], Named extends Record<string, Param<unknown>>> = Simplify<PosOut<Pos> & NamedOut<Named>>;
|
|
171
171
|
type InferAttr<S> = S extends AttributeSpec<infer Out> ? Out : never;
|
|
172
172
|
//#endregion
|
|
173
|
+
//#region src/attribute-spec/combinators/bool.d.ts
|
|
174
|
+
declare function bool(): ArgType<boolean>;
|
|
175
|
+
//#endregion
|
|
176
|
+
//#region src/attribute-spec/combinators/diagnostic.d.ts
|
|
177
|
+
declare function leafDiagnostic(ctx: InterpretCtx, node: AstNode, message: string): PslDiagnostic$1;
|
|
178
|
+
//#endregion
|
|
179
|
+
//#region src/attribute-spec/combinators/entity-ref.d.ts
|
|
180
|
+
declare function entityRef(): ArgType<string>;
|
|
181
|
+
//#endregion
|
|
173
182
|
//#region src/attribute-spec/combinators/field-ref.d.ts
|
|
174
183
|
type FieldRefScope = 'self' | 'referenced';
|
|
175
184
|
interface FieldRefArgType extends ArgType<string> {
|
|
@@ -180,6 +189,9 @@ declare function fieldRef(scope: FieldRefScope): FieldRefArgType;
|
|
|
180
189
|
//#region src/attribute-spec/combinators/identifier.d.ts
|
|
181
190
|
declare function identifier<const N extends string>(name: N): ArgType<N>;
|
|
182
191
|
//#endregion
|
|
192
|
+
//#region src/attribute-spec/combinators/int.d.ts
|
|
193
|
+
declare function int(): ArgType<number>;
|
|
194
|
+
//#endregion
|
|
183
195
|
//#region src/attribute-spec/combinators/list.d.ts
|
|
184
196
|
interface ListOptions {
|
|
185
197
|
readonly nonEmpty?: boolean;
|
|
@@ -190,6 +202,9 @@ declare function list<T>(of: ArgType<T>, opts?: ListOptions): ArgType<T[]>;
|
|
|
190
202
|
//#region src/attribute-spec/combinators/one-of.d.ts
|
|
191
203
|
declare function oneOf<Alts extends readonly [ArgType<unknown>, ...ArgType<unknown>[]]>(...alts: Alts): ArgType<OutOf<Alts[number]>>;
|
|
192
204
|
//#endregion
|
|
205
|
+
//#region src/attribute-spec/combinators/record.d.ts
|
|
206
|
+
declare function record<T>(of: ArgType<T>): ArgType<Record<string, T>>;
|
|
207
|
+
//#endregion
|
|
193
208
|
//#region src/attribute-spec/combinators/str.d.ts
|
|
194
209
|
declare function str(): ArgType<string>;
|
|
195
210
|
//#endregion
|
|
@@ -204,6 +219,14 @@ declare function fieldAttribute<const Pos extends readonly PositionalParam[] = r
|
|
|
204
219
|
//#region src/attribute-spec/interpret.d.ts
|
|
205
220
|
declare function interpretAttribute<Out>(attrNode: FieldAttributeAst | ModelAttributeAst, spec: AttributeSpec<Out>, ctx: InterpretCtx): Result<Out, readonly PslDiagnostic$1[]>;
|
|
206
221
|
//#endregion
|
|
222
|
+
//#region src/attribute-spec/model-attribute.d.ts
|
|
223
|
+
interface ModelAttributeConfig<Pos extends readonly PositionalParam[], Named extends Record<string, Param<unknown>>> {
|
|
224
|
+
readonly positional?: Pos;
|
|
225
|
+
readonly named?: Named;
|
|
226
|
+
readonly refine?: (parsed: AttributeOut<Pos, Named>, ctx: InterpretCtx) => readonly PslDiagnostic$1[];
|
|
227
|
+
}
|
|
228
|
+
declare function modelAttribute<const Pos extends readonly PositionalParam[] = readonly [], const Named extends Record<string, Param<unknown>> = Record<never, never>>(name: string, config: ModelAttributeConfig<Pos, Named>): AttributeSpec<AttributeOut<Pos, Named>>;
|
|
229
|
+
//#endregion
|
|
207
230
|
//#region src/attribute-spec/optional.d.ts
|
|
208
231
|
declare function optional<T>(type: ArgType<T>, ...rest: [defaultValue: T] | []): OptionalArgType<T>;
|
|
209
232
|
//#endregion
|
|
@@ -218,5 +241,5 @@ declare function validateExtensionBlockFromSymbol(input: {
|
|
|
218
241
|
readonly codecLookup: CodecLookup;
|
|
219
242
|
}): readonly PslDiagnostic$1[];
|
|
220
243
|
//#endregion
|
|
221
|
-
export { type ArgType, type AttributeLevel, type AttributeOut, type AttributeSpec, type BlockSymbol, type BuildSymbolTableOptions, type CompositeTypeSymbol, type FieldRefArgType, type FieldRefScope, type FieldSymbol, type InferAttr, type InterpretCtx, type ListOptions, type ModelSymbol, type NamedOut, type NamespaceSymbol, type OptionalArgType, type OutOf, type Param, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParamBare, type PslExtensionBlockParamList, type PslExtensionBlockParamOption, type PslExtensionBlockParamRef, type PslExtensionBlockParamScalarValue, type PslExtensionBlockParamValue, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslTypeConstructorCall, type PslTypesBlock, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type ScalarSymbol, type SymbolTable, type SymbolTableResult, type TopLevelScope, type TypeAliasSymbol, buildSymbolTable, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, getPositionalArgument, identifier, interpretAttribute, keywordPslSpan, list, namespacePslExtensionBlocks, nodePslSpan, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, str, validateExtensionBlockFromSymbol };
|
|
244
|
+
export { type ArgType, type AttributeLevel, type AttributeOut, type AttributeSpec, type BlockSymbol, type BuildSymbolTableOptions, type CompositeTypeSymbol, type FieldRefArgType, type FieldRefScope, type FieldSymbol, type InferAttr, type InterpretCtx, type ListOptions, type ModelSymbol, type NamedOut, type NamespaceSymbol, type OptionalArgType, type OutOf, type Param, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParamBare, type PslExtensionBlockParamList, type PslExtensionBlockParamOption, type PslExtensionBlockParamRef, type PslExtensionBlockParamScalarValue, type PslExtensionBlockParamValue, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslTypeConstructorCall, type PslTypesBlock, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type ScalarSymbol, type SymbolTable, type SymbolTableResult, type TopLevelScope, type TypeAliasSymbol, bool, buildSymbolTable, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, getPositionalArgument, identifier, int, interpretAttribute, keywordPslSpan, leafDiagnostic, list, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, str, validateExtensionBlockFromSymbol };
|
|
222
245
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/attribute-helpers.ts","../src/resolve.ts","../src/symbol-table.ts","../src/attribute-spec/types.ts","../src/attribute-spec/combinators/field-ref.ts","../src/attribute-spec/combinators/identifier.ts","../src/attribute-spec/combinators/list.ts","../src/attribute-spec/combinators/one-of.ts","../src/attribute-spec/combinators/str.ts","../src/attribute-spec/field-attribute.ts","../src/attribute-spec/interpret.ts","../src/attribute-spec/optional.ts","../src/extension-block.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/attribute-helpers.ts","../src/resolve.ts","../src/symbol-table.ts","../src/attribute-spec/types.ts","../src/attribute-spec/combinators/bool.ts","../src/attribute-spec/combinators/diagnostic.ts","../src/attribute-spec/combinators/entity-ref.ts","../src/attribute-spec/combinators/field-ref.ts","../src/attribute-spec/combinators/identifier.ts","../src/attribute-spec/combinators/int.ts","../src/attribute-spec/combinators/list.ts","../src/attribute-spec/combinators/one-of.ts","../src/attribute-spec/combinators/record.ts","../src/attribute-spec/combinators/str.ts","../src/attribute-spec/field-attribute.ts","../src/attribute-spec/interpret.ts","../src/attribute-spec/model-attribute.ts","../src/attribute-spec/optional.ts","../src/extension-block.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as NamespaceDeclarationAst, i as GenericBlockDeclarationAst, k as printSyntax, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, w as IdentifierAst, x as StringLiteralExprAst } from "./declarations-
|
|
1
|
+
import { b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, g as BooleanLiteralExprAst, i as GenericBlockDeclarationAst, k as printSyntax, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, v as NumberLiteralExprAst, w as IdentifierAst, x as StringLiteralExprAst } from "./declarations-DR6To8_k.mjs";
|
|
2
2
|
import { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, makePslNamespace, makePslNamespaceEntries, namespacePslExtensionBlocks, validateExtensionBlock } from "@prisma-next/framework-components/psl-ast";
|
|
3
3
|
import { notOk, ok } from "@prisma-next/utils/result";
|
|
4
4
|
import { blindCast } from "@prisma-next/utils/casts";
|
|
@@ -99,6 +99,35 @@ function leafDiagnostic(ctx, node, message) {
|
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
101
|
//#endregion
|
|
102
|
+
//#region src/attribute-spec/combinators/bool.ts
|
|
103
|
+
function bool() {
|
|
104
|
+
return {
|
|
105
|
+
kind: "bool",
|
|
106
|
+
label: "boolean",
|
|
107
|
+
parse: (arg, ctx) => {
|
|
108
|
+
if (arg instanceof BooleanLiteralExprAst) {
|
|
109
|
+
const value = arg.value();
|
|
110
|
+
if (value !== void 0) return ok(value);
|
|
111
|
+
}
|
|
112
|
+
return notOk([leafDiagnostic(ctx, arg, "Expected a boolean literal")]);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
//#region src/attribute-spec/combinators/entity-ref.ts
|
|
118
|
+
function entityRef() {
|
|
119
|
+
return {
|
|
120
|
+
kind: "entityRef",
|
|
121
|
+
label: "model name",
|
|
122
|
+
parse: (arg, ctx) => {
|
|
123
|
+
if (!(arg instanceof IdentifierAst)) return notOk([leafDiagnostic(ctx, arg, "Expected a model name")]);
|
|
124
|
+
const name = arg.name();
|
|
125
|
+
if (name === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a model name")]);
|
|
126
|
+
return ok(name);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
102
131
|
//#region src/attribute-spec/combinators/field-ref.ts
|
|
103
132
|
function fieldRef(scope) {
|
|
104
133
|
return {
|
|
@@ -128,6 +157,21 @@ function identifier(name) {
|
|
|
128
157
|
};
|
|
129
158
|
}
|
|
130
159
|
//#endregion
|
|
160
|
+
//#region src/attribute-spec/combinators/int.ts
|
|
161
|
+
function int() {
|
|
162
|
+
return {
|
|
163
|
+
kind: "int",
|
|
164
|
+
label: "integer",
|
|
165
|
+
parse: (arg, ctx) => {
|
|
166
|
+
if (arg instanceof NumberLiteralExprAst) {
|
|
167
|
+
const value = arg.value();
|
|
168
|
+
if (value !== void 0 && Number.isInteger(value)) return ok(value);
|
|
169
|
+
}
|
|
170
|
+
return notOk([leafDiagnostic(ctx, arg, "Expected an integer literal")]);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//#endregion
|
|
131
175
|
//#region src/attribute-spec/combinators/list.ts
|
|
132
176
|
function list(of, opts) {
|
|
133
177
|
return {
|
|
@@ -175,6 +219,43 @@ function oneOf(...alts) {
|
|
|
175
219
|
};
|
|
176
220
|
}
|
|
177
221
|
//#endregion
|
|
222
|
+
//#region src/attribute-spec/combinators/record.ts
|
|
223
|
+
function record(of) {
|
|
224
|
+
return {
|
|
225
|
+
kind: "record",
|
|
226
|
+
label: `{ [key]: ${of.label} }`,
|
|
227
|
+
parse: (arg, ctx) => {
|
|
228
|
+
if (!(arg instanceof ObjectLiteralExprAst)) return notOk([leafDiagnostic(ctx, arg, "Expected an object literal")]);
|
|
229
|
+
const diagnostics = [];
|
|
230
|
+
const result = {};
|
|
231
|
+
for (const field of arg.fields()) {
|
|
232
|
+
const key = field.keyName();
|
|
233
|
+
if (key === void 0) {
|
|
234
|
+
diagnostics.push(leafDiagnostic(ctx, field, "Expected a key"));
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
const value = field.value();
|
|
238
|
+
if (value === void 0) {
|
|
239
|
+
diagnostics.push(leafDiagnostic(ctx, field, `Expected a value for key "${key}"`));
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const parsed = of.parse(value, ctx);
|
|
243
|
+
if (!parsed.ok) {
|
|
244
|
+
diagnostics.push(...parsed.failure);
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
if (Object.hasOwn(result, key)) {
|
|
248
|
+
diagnostics.push(leafDiagnostic(ctx, field, `Duplicate key "${key}"`));
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
result[key] = parsed.value;
|
|
252
|
+
}
|
|
253
|
+
if (diagnostics.length > 0) return notOk(diagnostics);
|
|
254
|
+
return ok(result);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
//#endregion
|
|
178
259
|
//#region src/attribute-spec/combinators/str.ts
|
|
179
260
|
function str() {
|
|
180
261
|
return {
|
|
@@ -290,6 +371,17 @@ function diagnostic(message, ctx, span) {
|
|
|
290
371
|
};
|
|
291
372
|
}
|
|
292
373
|
//#endregion
|
|
374
|
+
//#region src/attribute-spec/model-attribute.ts
|
|
375
|
+
function modelAttribute(name, config) {
|
|
376
|
+
return {
|
|
377
|
+
level: "model",
|
|
378
|
+
name,
|
|
379
|
+
positional: config.positional ?? [],
|
|
380
|
+
named: config.named ?? {},
|
|
381
|
+
...config.refine !== void 0 ? { refine: config.refine } : {}
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
//#endregion
|
|
293
385
|
//#region src/attribute-spec/optional.ts
|
|
294
386
|
function optional(type, ...rest) {
|
|
295
387
|
if (rest.length === 0) return {
|
|
@@ -700,6 +792,6 @@ function nodeRange(node, sourceFile) {
|
|
|
700
792
|
};
|
|
701
793
|
}
|
|
702
794
|
//#endregion
|
|
703
|
-
export { buildSymbolTable, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, getPositionalArgument, identifier, interpretAttribute, keywordPslSpan, list, namespacePslExtensionBlocks, nodePslSpan, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, str, validateExtensionBlockFromSymbol };
|
|
795
|
+
export { bool, buildSymbolTable, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, getPositionalArgument, identifier, int, interpretAttribute, keywordPslSpan, leafDiagnostic, list, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, str, validateExtensionBlockFromSymbol };
|
|
704
796
|
|
|
705
797
|
//# sourceMappingURL=index.mjs.map
|