🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@prisma-next/psl-parser

Package Overview
Dependencies
Maintainers
4
Versions
632
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@prisma-next/psl-parser - npm Package Compare versions

Comparing version
0.15.0-dev.21
to
0.15.0-dev.22
+425
dist/parse-Bl1gwWGn.d.mts
import { n as TokenKind, t as Token } from "./tokenizer-DcYI0Xrq.mjs";
import { PslDiagnosticCode } from "@prisma-next/framework-components/psl-ast";
//#region src/source-file.d.ts
interface Position {
readonly line: number;
readonly character: number;
}
interface Range {
readonly start: Position;
readonly end: Position;
}
declare class SourceFile {
#private;
constructor(text: string);
get text(): string;
get length(): number;
get lineCount(): number;
lineStartOffsets(): readonly number[];
lineStartOffset(line: number): number;
lineEndOffset(line: number): number;
positionAt(offset: number): Position;
offsetAt(position: Position): number;
}
//#endregion
//#region src/syntax/syntax-kind.d.ts
type SyntaxKind = 'Document' | 'ModelDeclaration' | 'CompositeTypeDeclaration' | 'Namespace' | 'TypesBlock' | 'GenericBlockDeclaration' | 'FieldDeclaration' | 'NamedTypeDeclaration' | 'KeyValuePair' | 'FieldAttribute' | 'ModelAttribute' | 'AttributeArgList' | 'AttributeArg' | 'TypeAnnotation' | 'Identifier' | 'QualifiedName' | 'FunctionCall' | 'ArrayLiteral' | 'StringLiteralExpr' | 'NumberLiteralExpr' | 'BooleanLiteralExpr' | 'ObjectLiteralExpr' | 'ObjectField';
//#endregion
//#region src/syntax/green.d.ts
interface GreenToken {
readonly type: 'token';
readonly kind: TokenKind;
readonly text: string;
}
interface GreenNode {
readonly type: 'node';
readonly kind: SyntaxKind;
readonly children: ReadonlyArray<GreenElement>;
readonly textLength: number;
}
type GreenElement = GreenNode | GreenToken;
declare function greenToken(kind: TokenKind, text: string): GreenToken;
declare function greenNode(kind: SyntaxKind, children: ReadonlyArray<GreenElement>): GreenNode;
//#endregion
//#region src/syntax/red.d.ts
/**
* A token in the red tree. Unlike the green-layer {@link Token} (kind + text
* only), a red token also carries its absolute `offset` within the source and a
* link back to its `parent` {@link SyntaxNode}, so a cursor anchored on a token
* can walk outward (parent, previous/next token, siblings) without re-scanning
* from the document root.
*/
declare class SyntaxToken implements Token {
readonly green: GreenToken;
readonly kind: TokenKind;
readonly text: string;
readonly offset: number;
readonly parent: SyntaxNode;
/** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */
readonly index: number;
constructor(green: GreenToken, offset: number, parent: SyntaxNode, index: number);
get textLength(): number;
get endOffset(): number;
/** Whether `offset` falls within this token, inclusive of both ends. */
isInside(offset: number): boolean;
isOutside(offset: number): boolean;
/** The sibling element immediately after this token within its parent. */
get nextSiblingOrToken(): SyntaxElement | undefined;
/** The sibling element immediately before this token within its parent. */
get prevSiblingOrToken(): SyntaxElement | undefined;
/** The next token in document order, crossing node boundaries. */
get nextToken(): SyntaxToken | undefined;
/** The previous token in document order, crossing node boundaries. */
get prevToken(): SyntaxToken | undefined;
}
type SyntaxElement = SyntaxNode | SyntaxToken;
declare class TokenAtOffset {
#private;
private constructor();
static none(): TokenAtOffset;
static single(token: SyntaxToken): TokenAtOffset;
static between(left: SyntaxToken, right: SyntaxToken): TokenAtOffset;
get isEmpty(): boolean;
get isBetween(): boolean;
leftBiased(): SyntaxToken | undefined;
rightBiased(): SyntaxToken | undefined;
}
declare class SyntaxNode {
readonly green: GreenNode;
readonly offset: number;
readonly parent: SyntaxNode | undefined;
/** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */
readonly index: number;
constructor(green: GreenNode, offset: number, parent: SyntaxNode | undefined, index: number);
get kind(): SyntaxKind;
get textLength(): number;
get endOffset(): number;
/** Whether `offset` falls within this node, inclusive of both ends. */
isInside(offset: number): boolean;
isOutside(offset: number): boolean;
get firstChild(): SyntaxElement | undefined;
get lastChild(): SyntaxElement | undefined;
get nextSibling(): SyntaxElement | undefined;
get prevSibling(): SyntaxElement | undefined;
/** The sibling element immediately after this node within its parent. */
get nextSiblingOrToken(): SyntaxElement | undefined;
/** The sibling element immediately before this node within its parent. */
get prevSiblingOrToken(): SyntaxElement | undefined;
/** The first token in this subtree (depth-first), or `undefined` if empty. */
get firstToken(): SyntaxToken | undefined;
/** The last token in this subtree (depth-first), or `undefined` if empty. */
get lastToken(): SyntaxToken | undefined;
children(): Iterable<SyntaxElement>;
childNodes(): Iterable<SyntaxNode>;
ancestors(): Iterable<SyntaxNode>;
/** The nearest match, testing this node itself before walking its ancestors. */
findAncestor<T>(cast: (node: SyntaxNode) => T | undefined): T | undefined;
descendants(): Iterable<SyntaxElement>;
tokens(): Iterable<SyntaxToken>;
/**
* The token(s) at `offset`. The between-two-tokens case (offset exactly on a
* token seam) is represented explicitly so callers can left/right bias.
*/
tokenAtOffset(offset: number): TokenAtOffset;
/**
* The smallest element fully containing the range `[start, end]`. At a seam
* (and for empty ranges) the left-hand element is preferred, matching
* {@link containsOffset}'s inclusive span.
*/
coveringElement(start: number, end: number): SyntaxElement;
}
declare function createSyntaxTree(green: GreenNode): SyntaxNode;
//#endregion
//#region src/syntax/ast-helpers.d.ts
interface AstNode {
readonly syntax: SyntaxNode;
}
interface BracedBlock extends AstNode {
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
}
declare function findChildToken(node: SyntaxNode, kind: TokenKind): SyntaxToken | undefined;
declare function findFirstChild<T>(node: SyntaxNode, cast: (node: SyntaxNode) => T | undefined): T | undefined;
declare function filterChildren<T>(node: SyntaxNode, cast: (node: SyntaxNode) => T | undefined): Iterable<T>;
type CastTarget<C> = C extends ((node: SyntaxNode) => infer R) ? Exclude<R, undefined> : never;
declare function any<Casts extends readonly ((node: SyntaxNode) => unknown)[]>(...casts: Casts): (node: SyntaxNode) => CastTarget<Casts[number]> | undefined;
/**
* Raw source text of a CST node, verbatim (quotes and brackets preserved). For
* the decoded value of a string literal, decode it instead.
*/
declare function printSyntax(node: SyntaxNode): string;
//#endregion
//#region src/syntax/ast/identifier.d.ts
declare class IdentifierAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
name(): string | undefined;
static cast(node: SyntaxNode): IdentifierAst | undefined;
}
//#endregion
//#region src/syntax/ast/qualified-name.d.ts
/** A namespace-qualified name, e.g. `pgvector.Vector` or `supabase:auth.User`. */
declare class QualifiedNameAst implements AstNode {
#private;
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
colon(): SyntaxToken | undefined;
dot(): SyntaxToken | undefined;
space(): IdentifierAst | undefined;
namespace(): IdentifierAst | undefined;
identifier(): IdentifierAst | undefined;
/**
* Every identifier segment, in source order. A bare `Vector` yields
* `['Vector']`; a qualified `pgvector.Vector` yields `['pgvector', 'Vector']`.
*/
path(): readonly string[];
/** True iff this is a single unqualified identifier whose text equals `name`. */
isSimpleName(name: string): boolean;
/**
* Flags a malformed name with more qualifier segments than allowed (a second
* `:`-space or a second `.`-namespace).
*/
isOverQualified(): boolean;
static cast(node: SyntaxNode): QualifiedNameAst | undefined;
}
//#endregion
//#region src/syntax/ast/expressions.d.ts
declare class FunctionCallAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
/** The qualified-name callee, or `undefined` when identifier segments sit directly under the node. */
name(): QualifiedNameAst | undefined;
/**
* The dotted call path, in source order. A bare `Vector(…)` yields
* `['Vector']`; a namespace-qualified `pgvector.Vector(…)` yields
* `['pgvector', 'Vector']`. Empty when the call carries no identifier.
*/
path(): readonly string[];
lparen(): SyntaxToken | undefined;
rparen(): SyntaxToken | undefined;
args(): Iterable<AttributeArgAst>;
static cast(node: SyntaxNode): FunctionCallAst | undefined;
}
declare class ArrayLiteralAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
lbracket(): SyntaxToken | undefined;
rbracket(): SyntaxToken | undefined;
elements(): Iterable<ExpressionAst>;
static cast(node: SyntaxNode): ArrayLiteralAst | undefined;
}
declare class StringLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
value(): string | undefined;
static cast(node: SyntaxNode): StringLiteralExprAst | undefined;
}
declare class NumberLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
value(): number | undefined;
static cast(node: SyntaxNode): NumberLiteralExprAst | undefined;
}
declare class BooleanLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
value(): boolean | undefined;
static cast(node: SyntaxNode): BooleanLiteralExprAst | undefined;
}
declare class ObjectLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
fields(): Iterable<ObjectFieldAst>;
static cast(node: SyntaxNode): ObjectLiteralExprAst | undefined;
}
declare class ObjectFieldAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
key(): IdentifierAst | undefined;
/**
* The field's logical key name, unquoted. An identifier key (`length:`) yields
* its text; a string-literal key (`"length":`) yields the decoded string.
* `undefined` when the field carries no key node.
*/
keyName(): string | undefined;
colon(): SyntaxToken | undefined;
value(): ExpressionAst | undefined;
static cast(node: SyntaxNode): ObjectFieldAst | undefined;
}
type ExpressionAst = FunctionCallAst | ArrayLiteralAst | StringLiteralExprAst | NumberLiteralExprAst | BooleanLiteralExprAst | ObjectLiteralExprAst | IdentifierAst;
declare function castExpression(node: SyntaxNode): ExpressionAst | undefined;
declare class AttributeArgAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
name(): IdentifierAst | undefined;
colon(): SyntaxToken | undefined;
value(): ExpressionAst | undefined;
static cast(node: SyntaxNode): AttributeArgAst | undefined;
}
//#endregion
//#region src/syntax/ast/attributes.d.ts
declare class AttributeArgListAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
lparen(): SyntaxToken | undefined;
rparen(): SyntaxToken | undefined;
args(): Iterable<AttributeArgAst>;
static cast(node: SyntaxNode): AttributeArgListAst | undefined;
}
declare class FieldAttributeAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
at(): SyntaxToken | undefined;
name(): QualifiedNameAst | undefined;
argList(): AttributeArgListAst | undefined;
static cast(node: SyntaxNode): FieldAttributeAst | undefined;
}
declare class ModelAttributeAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
doubleAt(): SyntaxToken | undefined;
name(): QualifiedNameAst | undefined;
argList(): AttributeArgListAst | undefined;
static cast(node: SyntaxNode): ModelAttributeAst | undefined;
}
//#endregion
//#region src/syntax/ast/type-annotation.d.ts
declare class TypeAnnotationAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
/** The annotation's reference, doubling as the constructor callee when an {@link argList} follows. */
name(): QualifiedNameAst | undefined;
/** Present when the annotation is a constructor (`Vector(1536)`) rather than a plain reference. */
argList(): AttributeArgListAst | undefined;
isConstructor(): boolean;
lbracket(): SyntaxToken | undefined;
rbracket(): SyntaxToken | undefined;
questionMark(): SyntaxToken | undefined;
isList(): boolean;
isOptional(): boolean;
static cast(node: SyntaxNode): TypeAnnotationAst | undefined;
}
//#endregion
//#region src/syntax/ast/declarations.d.ts
/**
* What may appear inside a `namespace` block: models, composite types, and
* extension (block) declarations. `types {}` blocks and nested `namespace`
* blocks are document-only, so they are not namespace members.
*/
type NamespaceMemberAst = ModelDeclarationAst | CompositeTypeDeclarationAst | GenericBlockDeclarationAst;
type DeclarationAst = NamespaceMemberAst | TypesBlockAst | NamespaceDeclarationAst;
type AttributeAst = FieldAttributeAst | ModelAttributeAst;
type BlockMemberAst = FieldDeclarationAst | ModelAttributeAst;
type GenericBlockMemberAst = KeyValuePairAst | ModelAttributeAst;
declare class DocumentAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
declarations(): Iterable<DeclarationAst>;
static cast(node: SyntaxNode): DocumentAst | undefined;
}
declare class ModelDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
fields(): Iterable<FieldDeclarationAst>;
attributes(): Iterable<ModelAttributeAst>;
members(): Iterable<BlockMemberAst>;
static cast(node: SyntaxNode): ModelDeclarationAst | undefined;
}
declare class CompositeTypeDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
fields(): Iterable<FieldDeclarationAst>;
attributes(): Iterable<ModelAttributeAst>;
members(): Iterable<BlockMemberAst>;
static cast(node: SyntaxNode): CompositeTypeDeclarationAst | undefined;
}
declare class NamespaceDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
declarations(): Iterable<NamespaceMemberAst>;
static cast(node: SyntaxNode): NamespaceDeclarationAst | undefined;
}
declare class TypesBlockAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
declarations(): Iterable<NamedTypeDeclarationAst>;
static cast(node: SyntaxNode): TypesBlockAst | undefined;
}
declare class GenericBlockDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
entries(): Iterable<KeyValuePairAst>;
attributes(): Iterable<ModelAttributeAst>;
members(): Iterable<GenericBlockMemberAst>;
static cast(node: SyntaxNode): GenericBlockDeclarationAst | undefined;
}
declare class KeyValuePairAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
key(): IdentifierAst | undefined;
equals(): SyntaxToken | undefined;
value(): ExpressionAst | undefined;
static cast(node: SyntaxNode): KeyValuePairAst | undefined;
}
declare class FieldDeclarationAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
name(): IdentifierAst | undefined;
typeAnnotation(): TypeAnnotationAst | undefined;
attributes(): Iterable<FieldAttributeAst>;
static cast(node: SyntaxNode): FieldDeclarationAst | undefined;
}
declare class NamedTypeDeclarationAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
name(): IdentifierAst | undefined;
equals(): SyntaxToken | undefined;
typeAnnotation(): TypeAnnotationAst | undefined;
attributes(): Iterable<FieldAttributeAst>;
static cast(node: SyntaxNode): NamedTypeDeclarationAst | undefined;
}
//#endregion
//#region src/parse.d.ts
interface ParseDiagnostic {
readonly code: PslDiagnosticCode;
readonly message: string;
readonly range: Range;
}
interface ParseResult {
readonly document: DocumentAst;
readonly diagnostics: readonly ParseDiagnostic[];
readonly sourceFile: SourceFile;
}
/**
* Parses a full PSL document. Never throws — malformed input yields diagnostics
* and a recovered tree, not an exception.
*/
declare function parse(source: string): ParseResult;
//#endregion
export { Range as $, StringLiteralExprAst as A, printSyntax as B, AttributeArgAst as C, NumberLiteralExprAst as D, FunctionCallAst as E, BracedBlock as F, createSyntaxTree as G, SyntaxNode as H, any as I, GreenToken as J, GreenElement as K, filterChildren as L, QualifiedNameAst as M, IdentifierAst as N, ObjectFieldAst as O, AstNode as P, Position as Q, findChildToken as R, ArrayLiteralAst as S, ExpressionAst as T, SyntaxToken as U, SyntaxElement as V, TokenAtOffset as W, greenToken as X, greenNode as Y, SyntaxKind as Z, TypesBlockAst as _, BlockMemberAst as a, FieldAttributeAst as b, DocumentAst as c, GenericBlockMemberAst as d, SourceFile as et, KeyValuePairAst as f, NamespaceMemberAst as g, NamespaceDeclarationAst as h, AttributeAst as i, castExpression as j, ObjectLiteralExprAst as k, FieldDeclarationAst as l, NamedTypeDeclarationAst as m, ParseResult as n, CompositeTypeDeclarationAst as o, ModelDeclarationAst as p, GreenNode as q, parse as r, DeclarationAst as s, ParseDiagnostic as t, GenericBlockDeclarationAst as u, TypeAnnotationAst as v, BooleanLiteralExprAst as w, ModelAttributeAst as x, AttributeArgListAst as y, findFirstChild as z };
//# sourceMappingURL=parse-Bl1gwWGn.d.mts.map
{"version":3,"file":"parse-Bl1gwWGn.d.mts","names":[],"sources":["../src/source-file.ts","../src/syntax/syntax-kind.ts","../src/syntax/green.ts","../src/syntax/red.ts","../src/syntax/ast-helpers.ts","../src/syntax/ast/identifier.ts","../src/syntax/ast/qualified-name.ts","../src/syntax/ast/expressions.ts","../src/syntax/ast/attributes.ts","../src/syntax/ast/type-annotation.ts","../src/syntax/ast/declarations.ts","../src/parse.ts"],"mappings":"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"}
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-Bl1gwWGn.mjs";
import { PslExtensionBlock, PslSpan } from "@prisma-next/framework-components/psl-ast";
import { AuthoringPslBlockDescriptorNamespace } from "@prisma-next/framework-components/authoring";
//#region src/resolve.d.ts
interface ResolvedAttributeArg {
readonly kind: 'positional' | 'named';
readonly name?: string;
readonly value: string;
readonly expression?: ExpressionAst;
readonly span: PslSpan;
}
interface ResolvedAttribute {
readonly name: string;
readonly args: readonly ResolvedAttributeArg[];
readonly span: PslSpan;
}
interface ResolvedTypeConstructorCall {
readonly path: readonly string[];
readonly args: readonly ResolvedAttributeArg[];
readonly span: PslSpan;
}
declare function readResolvedAttribute(attribute: FieldAttributeAst | ModelAttributeAst, sourceFile: SourceFile): ResolvedAttribute;
declare function readResolvedAttributes(attributes: Iterable<FieldAttributeAst | ModelAttributeAst>, sourceFile: SourceFile): readonly ResolvedAttribute[];
declare function readResolvedConstructorCall(annotation: TypeAnnotationAst | undefined, sourceFile: SourceFile): ResolvedTypeConstructorCall | undefined;
declare function nodePslSpan(node: SyntaxNode, sourceFile: SourceFile): PslSpan;
/** Unsupported-top-level-block diagnostics are anchored to the keyword token. */
declare function keywordPslSpan(node: SyntaxNode, keyword: string, sourceFile: SourceFile): PslSpan;
declare function rangeToPslSpan(range: Range, sourceFile: SourceFile): PslSpan;
//#endregion
//#region src/symbol-table.d.ts
interface SymbolTable {
readonly topLevel: TopLevelScope;
}
interface TopLevelScope {
readonly namespaces: Record<string, NamespaceSymbol>;
readonly scalars: Record<string, ScalarSymbol>;
readonly typeAliases: Record<string, TypeAliasSymbol>;
readonly blocks: Record<string, BlockSymbol>;
readonly models: Record<string, ModelSymbol>;
readonly compositeTypes: Record<string, CompositeTypeSymbol>;
}
interface NamespaceSymbol {
readonly kind: 'namespace';
readonly name: string;
readonly node: NamespaceDeclarationAst;
readonly span: PslSpan;
readonly models: Record<string, ModelSymbol>;
readonly compositeTypes: Record<string, CompositeTypeSymbol>;
readonly blocks: Record<string, BlockSymbol>;
}
interface ModelSymbol {
readonly kind: 'model';
readonly name: string;
readonly node: ModelDeclarationAst;
readonly span: PslSpan;
readonly fields: Record<string, FieldSymbol>;
readonly attributes: readonly ResolvedAttribute[];
}
interface CompositeTypeSymbol {
readonly kind: 'compositeType';
readonly name: string;
readonly node: CompositeTypeDeclarationAst;
readonly span: PslSpan;
readonly fields: Record<string, FieldSymbol>;
readonly attributes: readonly ResolvedAttribute[];
}
interface BlockSymbol {
readonly kind: 'block';
readonly name: string;
readonly keyword: string;
readonly node: GenericBlockDeclarationAst;
readonly span: PslSpan;
/** Resolved once so consumers do not independently classify block parameters. */
readonly block: PslExtensionBlock;
}
interface ResolvedNamedTypeBinding {
readonly baseType?: string;
readonly typeConstructor?: ResolvedTypeConstructorCall;
readonly isConstructor: boolean;
readonly attributes: readonly ResolvedAttribute[];
}
interface ScalarSymbol extends ResolvedNamedTypeBinding {
readonly kind: 'scalar';
readonly name: string;
readonly node: NamedTypeDeclarationAst;
readonly span: PslSpan;
}
interface TypeAliasSymbol extends ResolvedNamedTypeBinding {
readonly kind: 'typeAlias';
readonly name: string;
readonly node: NamedTypeDeclarationAst;
readonly span: PslSpan;
}
interface FieldSymbol {
readonly kind: 'field';
readonly name: string;
readonly node: FieldDeclarationAst;
readonly span: PslSpan;
readonly typeName: string;
readonly typeNamespaceId?: string;
readonly typeContractSpaceId?: string;
readonly optional: boolean;
readonly list: boolean;
readonly typeConstructor?: ResolvedTypeConstructorCall;
readonly attributes: readonly ResolvedAttribute[];
/** Prevents cascading unsupported-type diagnostics after invalid qualification. */
readonly malformedType?: boolean;
}
interface BuildSymbolTableOptions {
readonly document: DocumentAst;
readonly sourceFile: SourceFile;
readonly scalarTypes: readonly string[];
readonly pslBlockDescriptors: AuthoringPslBlockDescriptorNamespace;
}
interface SymbolTableResult {
readonly table: SymbolTable;
readonly diagnostics: readonly ParseDiagnostic[];
}
/**
* Owns duplicate-declaration detection for all PSL scopes; downstream consumers
* should consume first-wins symbols rather than re-emitting duplicate diagnostics.
*/
declare function buildSymbolTable(options: BuildSymbolTableOptions): SymbolTableResult;
//#endregion
export { readResolvedConstructorCall as S, keywordPslSpan as _, ModelSymbol as a, readResolvedAttribute as b, ScalarSymbol as c, TopLevelScope as d, TypeAliasSymbol as f, ResolvedTypeConstructorCall as g, ResolvedAttributeArg as h, FieldSymbol as i, SymbolTable as l, ResolvedAttribute as m, BuildSymbolTableOptions as n, NamespaceSymbol as o, buildSymbolTable as p, CompositeTypeSymbol as r, ResolvedNamedTypeBinding as s, BlockSymbol as t, SymbolTableResult as u, nodePslSpan as v, readResolvedAttributes as x, rangeToPslSpan as y };
//# sourceMappingURL=symbol-table-en_Bich3.d.mts.map
{"version":3,"file":"symbol-table-en_Bich3.d.mts","names":[],"sources":["../src/resolve.ts","../src/symbol-table.ts"],"mappings":";;;;UAaiB;WACN;WACA;WACA;WACA,aAAa;WACb,MAAM;;UAGA;WACN;WACA,eAAe;WACf,MAAM;;UAGA;WACN;WACA,eAAe;WACf,MAAM;;iBAGD,sBACd,WAAW,oBAAoB,mBAC/B,YAAY,aACX;iBAQa,uBACd,YAAY,SAAS,oBAAoB,oBACzC,YAAY,sBACF;iBAII,4BACd,YAAY,+BACZ,YAAY,aACX;iBAuCa,YAAY,MAAM,YAAY,YAAY,aAAa;;iBAUvD,eAAe,MAAM,YAAY,iBAAiB,YAAY,aAAa;iBAS3E,eAAe,OAAO,OAAO,YAAY,aAAa;;;UChFrD;WACN,UAAU;;UAGJ;WACN,YAAY,eAAe;WAC3B,SAAS,eAAe;WACxB,aAAa,eAAe;WAC5B,QAAQ,eAAe;WACvB,QAAQ,eAAe;WACvB,gBAAgB,eAAe;;UAGzB;WACN;WACA;WACA,MAAM;WACN,MAAM;WACN,QAAQ,eAAe;WACvB,gBAAgB,eAAe;WAC/B,QAAQ,eAAe;;UAGjB;WACN;WACA;WACA,MAAM;WACN,MAAM;WACN,QAAQ,eAAe;WACvB,qBAAqB;;UAGf;WACN;WACA;WACA,MAAM;WACN,MAAM;WACN,QAAQ,eAAe;WACvB,qBAAqB;;UAGf;WACN;WACA;WACA;WACA,MAAM;WACN,MAAM;;WAEN,OAAO;;UAGD;WACN;WACA,kBAAkB;WAClB;WACA,qBAAqB;;UAGf,qBAAqB;WAC3B;WACA;WACA,MAAM;WACN,MAAM;;UAGA,wBAAwB;WAC9B;WACA;WACA,MAAM;WACN,MAAM;;UAGA;WACN;WACA;WACA,MAAM;WACN,MAAM;WACN;WACA;WACA;WACA;WACA;WACA,kBAAkB;WAClB,qBAAqB;;WAErB;;UAGM;WACN,UAAU;WACV,YAAY;WACZ;WACA,qBAAqB;;UAGf;WACN,OAAO;WACP,sBAAsB;;;;;;iBAOjB,iBAAiB,SAAS,0BAA0B"}
+1
-2

@@ -1,3 +0,2 @@

import { t as ParseDiagnostic } from "./parse-BazJr7Ye.mjs";
import { t as ParseDiagnostic } from "./parse-Bl1gwWGn.mjs";
//#region src/format/error.d.ts

@@ -4,0 +3,0 @@ declare class PslFormatError extends Error {

@@ -1,1 +0,1 @@

{"version":3,"file":"format.d.mts","names":[],"sources":["../src/format/error.ts","../src/format/options.ts","../src/format/format.ts"],"mappings":";;;cAEa,cAAA,SAAuB,KAAA;EAAA,SACzB,WAAA,WAAsB,eAAA;cAEnB,WAAA,WAAsB,eAAA;AAAA;;;UCLnB,aAAA;EAAA,SACN,MAAA;EAAA,SACA,OAAO;AAAA;;;iBCGF,MAAA,CAAO,MAAA,UAAgB,OAAA,GAAU,aAAa"}
{"version":3,"file":"format.d.mts","names":[],"sources":["../src/format/error.ts","../src/format/options.ts","../src/format/format.ts"],"mappings":";;cAEa,uBAAuB;WACzB,sBAAsB;cAEnB,sBAAsB;;;;UCLnB;WACN;WACA;;;;iBCGK,OAAO,gBAAgB,UAAU"}

@@ -1,3 +0,3 @@

import { C as AttributeArgAst, P as AstNode, T as ExpressionAst, b as FieldAttributeAst, et as SourceFile, x as ModelAttributeAst } from "./parse-BazJr7Ye.mjs";
import { S as readResolvedConstructorCall, _ as keywordPslSpan, a as ModelSymbol, b as readResolvedAttribute, c as ScalarSymbol, d as TopLevelScope, f as TypeAliasSymbol, g as ResolvedTypeConstructorCall, h as ResolvedAttributeArg, i as FieldSymbol, l as SymbolTable, m as ResolvedAttribute, n as BuildSymbolTableOptions, o as NamespaceSymbol, p as buildSymbolTable, r as CompositeTypeSymbol, s as ResolvedNamedTypeBinding, t as BlockSymbol, u as SymbolTableResult, v as nodePslSpan, x as readResolvedAttributes, y as rangeToPslSpan } from "./symbol-table-C-AH04Ug.mjs";
import { C as AttributeArgAst, P as AstNode, T as ExpressionAst, b as FieldAttributeAst, et as SourceFile, x as ModelAttributeAst } from "./parse-Bl1gwWGn.mjs";
import { S as readResolvedConstructorCall, _ as keywordPslSpan, a as ModelSymbol, b as readResolvedAttribute, c as ScalarSymbol, d as TopLevelScope, f as TypeAliasSymbol, g as ResolvedTypeConstructorCall, h as ResolvedAttributeArg, i as FieldSymbol, l as SymbolTable, m as ResolvedAttribute, n as BuildSymbolTableOptions, o as NamespaceSymbol, p as buildSymbolTable, r as CompositeTypeSymbol, s as ResolvedNamedTypeBinding, t as BlockSymbol, u as SymbolTableResult, v as nodePslSpan, x as readResolvedAttributes, y as rangeToPslSpan } from "./symbol-table-en_Bich3.mjs";
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, 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";

@@ -8,3 +8,2 @@ import { Result } from "@prisma-next/utils/result";

import { CodecLookup } from "@prisma-next/framework-components/codec";
//#region src/attribute-helpers.d.ts

@@ -48,5 +47,5 @@ declare function getPositionalArgument(attribute: PslAttribute$1, index?: number): string | undefined;

type OutOf<P> = P extends ArgType<infer T> ? T : never;
type NamedOut<N extends Record<string, Param<unknown>>> = Simplify<{ [K in keyof N as N[K] extends OptionalArgType<unknown> ? never : K]: OutOf<N[K]> } & { [K in keyof N as N[K] extends OptionalArgType<unknown> ? K : never]?: OutOf<N[K]> }>;
type PosEntryObject<E extends PositionalParam> = E['type'] extends OptionalArgType<unknown> ? { [K in E['key']]?: OutOf<E['type']> } : { [K in E['key']]: OutOf<E['type']> };
type PosOut<Pos extends readonly PositionalParam[]> = Simplify<UnionToIntersection<{ [I in keyof Pos]: PosEntryObject<Pos[I]> }[number]>>;
type NamedOut<N extends Record<string, Param<unknown>>> = Simplify<{ [K in keyof N as N[K] extends OptionalArgType<unknown> ? never : K]: OutOf<N[K]>; } & { [K in keyof N as N[K] extends OptionalArgType<unknown> ? K : never]?: OutOf<N[K]>; }>;
type PosEntryObject<E extends PositionalParam> = E['type'] extends OptionalArgType<unknown> ? { [K in E['key']]?: OutOf<E['type']>; } : { [K in E['key']]: OutOf<E['type']>; };
type PosOut<Pos extends readonly PositionalParam[]> = Simplify<UnionToIntersection<{ [I in keyof Pos]: PosEntryObject<Pos[I]>; }[number]>>;
type AttributeOut<Pos extends readonly PositionalParam[], Named extends Record<string, Param<unknown>>> = Simplify<PosOut<Pos> & NamedOut<Named>>;

@@ -53,0 +52,0 @@ type InferAttr<S> = S extends AttributeSpec<infer Out> ? Out : never;

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.mts","names":[],"sources":["../src/attribute-helpers.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/func-call.ts","../src/attribute-spec/combinators/identifier.ts","../src/attribute-spec/combinators/int.ts","../src/attribute-spec/combinators/list.ts","../src/attribute-spec/combinators/num.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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"}
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/attribute-helpers.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/func-call.ts","../src/attribute-spec/combinators/identifier.ts","../src/attribute-spec/combinators/int.ts","../src/attribute-spec/combinators/list.ts","../src/attribute-spec/combinators/num.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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"}

@@ -1,7 +0,6 @@

import { c as DocumentAst, et as SourceFile } from "./parse-BazJr7Ye.mjs";
import { l as SymbolTable } from "./symbol-table-C-AH04Ug.mjs";
import { c as DocumentAst, et as SourceFile } from "./parse-Bl1gwWGn.mjs";
import { l as SymbolTable } from "./symbol-table-en_Bich3.mjs";
import { Result } from "@prisma-next/utils/result";
import { ContractSourceContext, ContractSourceDiagnostic, ContractSourceDiagnostics, ContractSourceProvider, PslContractSourceProvider } from "@prisma-next/config/config-types";
import { Contract } from "@prisma-next/contract/types";
//#region src/interpret.d.ts

@@ -8,0 +7,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"interpret.d.mts","names":[],"sources":["../src/interpret.ts"],"mappings":";;;;;;;;AAkBA;;;;UAAiB,iBAAA;EAAA,SACN,QAAA,EAAU,WAAA;EAAA,SACV,UAAA,EAAY,UAAA;EAAA,SACZ,WAAA,EAAa,WAAA;EAAA,SACb,QAAA;AAAA;;;;;;;UASM,mBAAA,SAA4B,yBAAA;EAC3C,SAAA,CACE,KAAA,EAAO,iBAAA,EACP,OAAA,EAAS,qBAAA,GACR,MAAA,CAAO,QAAA,EAAU,yBAAA;AAAA;;;;;;;iBASN,mBAAA,CACd,MAAA,EAAQ,MAAA,CAAO,QAAA,EAAU,yBAAA,GACzB,eAAA,WAA0B,wBAAA,KACzB,MAAA,CAAO,QAAA,EAAU,yBAAA;;iBAeJ,iBAAA,CAAkB,MAAA,EAAQ,sBAAA,GAAyB,MAAA,IAAU,mBAAmB"}
{"version":3,"file":"interpret.d.mts","names":[],"sources":["../src/interpret.ts"],"mappings":";;;;;;;;;;;UAkBiB;WACN,UAAU;WACV,YAAY;WACZ,aAAa;WACb;;;;;;;;UASM,4BAA4B;EAC3C,UACE,OAAO,mBACP,SAAS,wBACR,OAAO,UAAU;;;;;;;;iBASN,oBACd,QAAQ,OAAO,UAAU,4BACzB,0BAA0B,6BACzB,OAAO,UAAU;;iBAeJ,kBAAkB,QAAQ,yBAAyB,UAAU"}

@@ -1,4 +0,3 @@

import { $ as Range, A as StringLiteralExprAst, B as printSyntax, C as AttributeArgAst, D as NumberLiteralExprAst, E as FunctionCallAst, F as BracedBlock, G as createSyntaxTree, H as SyntaxNode, I as any, J as GreenToken, K as GreenElement, L as filterChildren, M as QualifiedNameAst, N as IdentifierAst, O as ObjectFieldAst, P as AstNode, Q as Position, R as findChildToken, S as ArrayLiteralAst, T as ExpressionAst, U as SyntaxToken, V as SyntaxElement, W as TokenAtOffset, X as greenToken, Y as greenNode, Z as SyntaxKind, _ as TypesBlockAst, a as BlockMemberAst, b as FieldAttributeAst, c as DocumentAst, d as GenericBlockMemberAst, et as SourceFile, f as KeyValuePairAst, g as NamespaceMemberAst, h as NamespaceDeclarationAst, i as AttributeAst, j as castExpression, k as ObjectLiteralExprAst, l as FieldDeclarationAst, m as NamedTypeDeclarationAst, n as ParseResult, o as CompositeTypeDeclarationAst, p as ModelDeclarationAst, q as GreenNode, r as parse, s as DeclarationAst, t as ParseDiagnostic, u as GenericBlockDeclarationAst, v as TypeAnnotationAst, w as BooleanLiteralExprAst, x as ModelAttributeAst, y as AttributeArgListAst, z as findFirstChild } from "./parse-BazJr7Ye.mjs";
import { $ as Range, A as StringLiteralExprAst, B as printSyntax, C as AttributeArgAst, D as NumberLiteralExprAst, E as FunctionCallAst, F as BracedBlock, G as createSyntaxTree, H as SyntaxNode, I as any, J as GreenToken, K as GreenElement, L as filterChildren, M as QualifiedNameAst, N as IdentifierAst, O as ObjectFieldAst, P as AstNode, Q as Position, R as findChildToken, S as ArrayLiteralAst, T as ExpressionAst, U as SyntaxToken, V as SyntaxElement, W as TokenAtOffset, X as greenToken, Y as greenNode, Z as SyntaxKind, _ as TypesBlockAst, a as BlockMemberAst, b as FieldAttributeAst, c as DocumentAst, d as GenericBlockMemberAst, et as SourceFile, f as KeyValuePairAst, g as NamespaceMemberAst, h as NamespaceDeclarationAst, i as AttributeAst, j as castExpression, k as ObjectLiteralExprAst, l as FieldDeclarationAst, m as NamedTypeDeclarationAst, n as ParseResult, o as CompositeTypeDeclarationAst, p as ModelDeclarationAst, q as GreenNode, r as parse, s as DeclarationAst, t as ParseDiagnostic, u as GenericBlockDeclarationAst, v as TypeAnnotationAst, w as BooleanLiteralExprAst, x as ModelAttributeAst, y as AttributeArgListAst, z as findFirstChild } from "./parse-Bl1gwWGn.mjs";
import { n as TokenKind } from "./tokenizer-DcYI0Xrq.mjs";
//#region src/syntax/green-builder.d.ts

@@ -5,0 +4,0 @@ declare class GreenNodeBuilder {

@@ -1,1 +0,1 @@

{"version":3,"file":"syntax.d.mts","names":[],"sources":["../src/syntax/green-builder.ts","../src/syntax/navigation.ts"],"mappings":";;;;cAKa,gBAAA;EAAA;EAGX,SAAA,CAAU,IAAA,EAAM,UAAA;EAIhB,KAAA,CAAM,IAAA,EAAM,SAAA,EAAW,IAAA;EAQvB,UAAA,IAAc,SAAA;AAAA;;;;KChBJ,SAAA;ADCZ;AAAA,iBCQgB,YAAA,CAAa,IAAe,EAAT,SAAS;;iBAK5B,QAAA,CAAS,KAAkB,EAAX,WAAW;;;;;iBAQ3B,eAAA,CAAgB,KAAA,EAAO,WAAA,EAAa,SAAA,EAAW,SAAA,GAAY,WAAA;;;;;iBAY3D,gBAAA,CACd,OAAA,EAAS,aAAA,EACT,SAAA,EAAW,SAAA,GACV,aAAA"}
{"version":3,"file":"syntax.d.mts","names":[],"sources":["../src/syntax/green-builder.ts","../src/syntax/navigation.ts"],"mappings":";;;cAKa;;EAGX,UAAU,MAAM;EAIhB,MAAM,MAAM,WAAW;EAQvB,cAAc;;;;;KChBJ;;iBASI,aAAa,MAAM;;iBAKnB,SAAS,OAAO;;;;;iBAQhB,gBAAgB,OAAO,aAAa,WAAW,YAAY;;;;;iBAY3D,iBACd,SAAS,eACT,WAAW,YACV"}

@@ -1,1 +0,1 @@

{"version":3,"file":"tokenizer-DcYI0Xrq.d.mts","names":[],"sources":["../src/tokenizer.ts"],"mappings":";KAAY,SAAA;AAAA,UAuBK,KAAA;EAAA,SACN,IAAA,EAAM,SAAS;EAAA,SACf,IAAA;AAAA;AAAA,cAGE,SAAA;EAAA;cAKC,MAAA;EAMZ,IAAA,IAAQ,KAAA;EAQR,IAAA,CAAK,MAAA,YAAa,KAAK;AAAA"}
{"version":3,"file":"tokenizer-DcYI0Xrq.d.mts","names":[],"sources":["../src/tokenizer.ts"],"mappings":";KAAY;UAuBK;WACN,MAAM;WACN;;cAGE;;cAKC;EAMZ,QAAQ;EAQR,KAAK,kBAAa"}
{
"name": "@prisma-next/psl-parser",
"version": "0.15.0-dev.21",
"version": "0.15.0-dev.22",
"license": "Apache-2.0",

@@ -9,11 +9,11 @@ "type": "module",

"dependencies": {
"@prisma-next/config": "0.15.0-dev.21",
"@prisma-next/contract": "0.15.0-dev.21",
"@prisma-next/framework-components": "0.15.0-dev.21",
"@prisma-next/utils": "0.15.0-dev.21"
"@prisma-next/config": "0.15.0-dev.22",
"@prisma-next/contract": "0.15.0-dev.22",
"@prisma-next/framework-components": "0.15.0-dev.22",
"@prisma-next/utils": "0.15.0-dev.22"
},
"devDependencies": {
"@prisma-next/tsconfig": "0.15.0-dev.21",
"@prisma-next/tsdown": "0.15.0-dev.21",
"tsdown": "0.22.3",
"@prisma-next/tsconfig": "0.15.0-dev.22",
"@prisma-next/tsdown": "0.15.0-dev.22",
"tsdown": "0.22.8",
"typescript": "5.9.3",

@@ -20,0 +20,0 @@ "vitest": "4.1.10"

import { n as TokenKind, t as Token } from "./tokenizer-DcYI0Xrq.mjs";
import { PslDiagnosticCode } from "@prisma-next/framework-components/psl-ast";
//#region src/source-file.d.ts
interface Position {
readonly line: number;
readonly character: number;
}
interface Range {
readonly start: Position;
readonly end: Position;
}
declare class SourceFile {
#private;
constructor(text: string);
get text(): string;
get length(): number;
get lineCount(): number;
lineStartOffsets(): readonly number[];
lineStartOffset(line: number): number;
lineEndOffset(line: number): number;
positionAt(offset: number): Position;
offsetAt(position: Position): number;
}
//#endregion
//#region src/syntax/syntax-kind.d.ts
type SyntaxKind = 'Document' | 'ModelDeclaration' | 'CompositeTypeDeclaration' | 'Namespace' | 'TypesBlock' | 'GenericBlockDeclaration' | 'FieldDeclaration' | 'NamedTypeDeclaration' | 'KeyValuePair' | 'FieldAttribute' | 'ModelAttribute' | 'AttributeArgList' | 'AttributeArg' | 'TypeAnnotation' | 'Identifier' | 'QualifiedName' | 'FunctionCall' | 'ArrayLiteral' | 'StringLiteralExpr' | 'NumberLiteralExpr' | 'BooleanLiteralExpr' | 'ObjectLiteralExpr' | 'ObjectField';
//#endregion
//#region src/syntax/green.d.ts
interface GreenToken {
readonly type: 'token';
readonly kind: TokenKind;
readonly text: string;
}
interface GreenNode {
readonly type: 'node';
readonly kind: SyntaxKind;
readonly children: ReadonlyArray<GreenElement>;
readonly textLength: number;
}
type GreenElement = GreenNode | GreenToken;
declare function greenToken(kind: TokenKind, text: string): GreenToken;
declare function greenNode(kind: SyntaxKind, children: ReadonlyArray<GreenElement>): GreenNode;
//#endregion
//#region src/syntax/red.d.ts
/**
* A token in the red tree. Unlike the green-layer {@link Token} (kind + text
* only), a red token also carries its absolute `offset` within the source and a
* link back to its `parent` {@link SyntaxNode}, so a cursor anchored on a token
* can walk outward (parent, previous/next token, siblings) without re-scanning
* from the document root.
*/
declare class SyntaxToken implements Token {
readonly green: GreenToken;
readonly kind: TokenKind;
readonly text: string;
readonly offset: number;
readonly parent: SyntaxNode;
/** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */
readonly index: number;
constructor(green: GreenToken, offset: number, parent: SyntaxNode, index: number);
get textLength(): number;
get endOffset(): number;
/** Whether `offset` falls within this token, inclusive of both ends. */
isInside(offset: number): boolean;
isOutside(offset: number): boolean;
/** The sibling element immediately after this token within its parent. */
get nextSiblingOrToken(): SyntaxElement | undefined;
/** The sibling element immediately before this token within its parent. */
get prevSiblingOrToken(): SyntaxElement | undefined;
/** The next token in document order, crossing node boundaries. */
get nextToken(): SyntaxToken | undefined;
/** The previous token in document order, crossing node boundaries. */
get prevToken(): SyntaxToken | undefined;
}
type SyntaxElement = SyntaxNode | SyntaxToken;
declare class TokenAtOffset {
#private;
private constructor();
static none(): TokenAtOffset;
static single(token: SyntaxToken): TokenAtOffset;
static between(left: SyntaxToken, right: SyntaxToken): TokenAtOffset;
get isEmpty(): boolean;
get isBetween(): boolean;
leftBiased(): SyntaxToken | undefined;
rightBiased(): SyntaxToken | undefined;
}
declare class SyntaxNode {
readonly green: GreenNode;
readonly offset: number;
readonly parent: SyntaxNode | undefined;
/** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */
readonly index: number;
constructor(green: GreenNode, offset: number, parent: SyntaxNode | undefined, index: number);
get kind(): SyntaxKind;
get textLength(): number;
get endOffset(): number;
/** Whether `offset` falls within this node, inclusive of both ends. */
isInside(offset: number): boolean;
isOutside(offset: number): boolean;
get firstChild(): SyntaxElement | undefined;
get lastChild(): SyntaxElement | undefined;
get nextSibling(): SyntaxElement | undefined;
get prevSibling(): SyntaxElement | undefined;
/** The sibling element immediately after this node within its parent. */
get nextSiblingOrToken(): SyntaxElement | undefined;
/** The sibling element immediately before this node within its parent. */
get prevSiblingOrToken(): SyntaxElement | undefined;
/** The first token in this subtree (depth-first), or `undefined` if empty. */
get firstToken(): SyntaxToken | undefined;
/** The last token in this subtree (depth-first), or `undefined` if empty. */
get lastToken(): SyntaxToken | undefined;
children(): Iterable<SyntaxElement>;
childNodes(): Iterable<SyntaxNode>;
ancestors(): Iterable<SyntaxNode>;
/** The nearest match, testing this node itself before walking its ancestors. */
findAncestor<T>(cast: (node: SyntaxNode) => T | undefined): T | undefined;
descendants(): Iterable<SyntaxElement>;
tokens(): Iterable<SyntaxToken>;
/**
* The token(s) at `offset`. The between-two-tokens case (offset exactly on a
* token seam) is represented explicitly so callers can left/right bias.
*/
tokenAtOffset(offset: number): TokenAtOffset;
/**
* The smallest element fully containing the range `[start, end]`. At a seam
* (and for empty ranges) the left-hand element is preferred, matching
* {@link containsOffset}'s inclusive span.
*/
coveringElement(start: number, end: number): SyntaxElement;
}
declare function createSyntaxTree(green: GreenNode): SyntaxNode;
//#endregion
//#region src/syntax/ast-helpers.d.ts
interface AstNode {
readonly syntax: SyntaxNode;
}
interface BracedBlock extends AstNode {
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
}
declare function findChildToken(node: SyntaxNode, kind: TokenKind): SyntaxToken | undefined;
declare function findFirstChild<T>(node: SyntaxNode, cast: (node: SyntaxNode) => T | undefined): T | undefined;
declare function filterChildren<T>(node: SyntaxNode, cast: (node: SyntaxNode) => T | undefined): Iterable<T>;
type CastTarget<C> = C extends ((node: SyntaxNode) => infer R) ? Exclude<R, undefined> : never;
declare function any<Casts extends readonly ((node: SyntaxNode) => unknown)[]>(...casts: Casts): (node: SyntaxNode) => CastTarget<Casts[number]> | undefined;
/**
* Raw source text of a CST node, verbatim (quotes and brackets preserved). For
* the decoded value of a string literal, decode it instead.
*/
declare function printSyntax(node: SyntaxNode): string;
//#endregion
//#region src/syntax/ast/identifier.d.ts
declare class IdentifierAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
name(): string | undefined;
static cast(node: SyntaxNode): IdentifierAst | undefined;
}
//#endregion
//#region src/syntax/ast/qualified-name.d.ts
/** A namespace-qualified name, e.g. `pgvector.Vector` or `supabase:auth.User`. */
declare class QualifiedNameAst implements AstNode {
#private;
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
colon(): SyntaxToken | undefined;
dot(): SyntaxToken | undefined;
space(): IdentifierAst | undefined;
namespace(): IdentifierAst | undefined;
identifier(): IdentifierAst | undefined;
/**
* Every identifier segment, in source order. A bare `Vector` yields
* `['Vector']`; a qualified `pgvector.Vector` yields `['pgvector', 'Vector']`.
*/
path(): readonly string[];
/** True iff this is a single unqualified identifier whose text equals `name`. */
isSimpleName(name: string): boolean;
/**
* Flags a malformed name with more qualifier segments than allowed (a second
* `:`-space or a second `.`-namespace).
*/
isOverQualified(): boolean;
static cast(node: SyntaxNode): QualifiedNameAst | undefined;
}
//#endregion
//#region src/syntax/ast/expressions.d.ts
declare class FunctionCallAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
/** The qualified-name callee, or `undefined` when identifier segments sit directly under the node. */
name(): QualifiedNameAst | undefined;
/**
* The dotted call path, in source order. A bare `Vector(…)` yields
* `['Vector']`; a namespace-qualified `pgvector.Vector(…)` yields
* `['pgvector', 'Vector']`. Empty when the call carries no identifier.
*/
path(): readonly string[];
lparen(): SyntaxToken | undefined;
rparen(): SyntaxToken | undefined;
args(): Iterable<AttributeArgAst>;
static cast(node: SyntaxNode): FunctionCallAst | undefined;
}
declare class ArrayLiteralAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
lbracket(): SyntaxToken | undefined;
rbracket(): SyntaxToken | undefined;
elements(): Iterable<ExpressionAst>;
static cast(node: SyntaxNode): ArrayLiteralAst | undefined;
}
declare class StringLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
value(): string | undefined;
static cast(node: SyntaxNode): StringLiteralExprAst | undefined;
}
declare class NumberLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
value(): number | undefined;
static cast(node: SyntaxNode): NumberLiteralExprAst | undefined;
}
declare class BooleanLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
token(): SyntaxToken | undefined;
value(): boolean | undefined;
static cast(node: SyntaxNode): BooleanLiteralExprAst | undefined;
}
declare class ObjectLiteralExprAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
fields(): Iterable<ObjectFieldAst>;
static cast(node: SyntaxNode): ObjectLiteralExprAst | undefined;
}
declare class ObjectFieldAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
key(): IdentifierAst | undefined;
/**
* The field's logical key name, unquoted. An identifier key (`length:`) yields
* its text; a string-literal key (`"length":`) yields the decoded string.
* `undefined` when the field carries no key node.
*/
keyName(): string | undefined;
colon(): SyntaxToken | undefined;
value(): ExpressionAst | undefined;
static cast(node: SyntaxNode): ObjectFieldAst | undefined;
}
type ExpressionAst = FunctionCallAst | ArrayLiteralAst | StringLiteralExprAst | NumberLiteralExprAst | BooleanLiteralExprAst | ObjectLiteralExprAst | IdentifierAst;
declare function castExpression(node: SyntaxNode): ExpressionAst | undefined;
declare class AttributeArgAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
name(): IdentifierAst | undefined;
colon(): SyntaxToken | undefined;
value(): ExpressionAst | undefined;
static cast(node: SyntaxNode): AttributeArgAst | undefined;
}
//#endregion
//#region src/syntax/ast/attributes.d.ts
declare class AttributeArgListAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
lparen(): SyntaxToken | undefined;
rparen(): SyntaxToken | undefined;
args(): Iterable<AttributeArgAst>;
static cast(node: SyntaxNode): AttributeArgListAst | undefined;
}
declare class FieldAttributeAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
at(): SyntaxToken | undefined;
name(): QualifiedNameAst | undefined;
argList(): AttributeArgListAst | undefined;
static cast(node: SyntaxNode): FieldAttributeAst | undefined;
}
declare class ModelAttributeAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
doubleAt(): SyntaxToken | undefined;
name(): QualifiedNameAst | undefined;
argList(): AttributeArgListAst | undefined;
static cast(node: SyntaxNode): ModelAttributeAst | undefined;
}
//#endregion
//#region src/syntax/ast/type-annotation.d.ts
declare class TypeAnnotationAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
/** The annotation's reference, doubling as the constructor callee when an {@link argList} follows. */
name(): QualifiedNameAst | undefined;
/** Present when the annotation is a constructor (`Vector(1536)`) rather than a plain reference. */
argList(): AttributeArgListAst | undefined;
isConstructor(): boolean;
lbracket(): SyntaxToken | undefined;
rbracket(): SyntaxToken | undefined;
questionMark(): SyntaxToken | undefined;
isList(): boolean;
isOptional(): boolean;
static cast(node: SyntaxNode): TypeAnnotationAst | undefined;
}
//#endregion
//#region src/syntax/ast/declarations.d.ts
/**
* What may appear inside a `namespace` block: models, composite types, and
* extension (block) declarations. `types {}` blocks and nested `namespace`
* blocks are document-only, so they are not namespace members.
*/
type NamespaceMemberAst = ModelDeclarationAst | CompositeTypeDeclarationAst | GenericBlockDeclarationAst;
type DeclarationAst = NamespaceMemberAst | TypesBlockAst | NamespaceDeclarationAst;
type AttributeAst = FieldAttributeAst | ModelAttributeAst;
type BlockMemberAst = FieldDeclarationAst | ModelAttributeAst;
type GenericBlockMemberAst = KeyValuePairAst | ModelAttributeAst;
declare class DocumentAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
declarations(): Iterable<DeclarationAst>;
static cast(node: SyntaxNode): DocumentAst | undefined;
}
declare class ModelDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
fields(): Iterable<FieldDeclarationAst>;
attributes(): Iterable<ModelAttributeAst>;
members(): Iterable<BlockMemberAst>;
static cast(node: SyntaxNode): ModelDeclarationAst | undefined;
}
declare class CompositeTypeDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
fields(): Iterable<FieldDeclarationAst>;
attributes(): Iterable<ModelAttributeAst>;
members(): Iterable<BlockMemberAst>;
static cast(node: SyntaxNode): CompositeTypeDeclarationAst | undefined;
}
declare class NamespaceDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
declarations(): Iterable<NamespaceMemberAst>;
static cast(node: SyntaxNode): NamespaceDeclarationAst | undefined;
}
declare class TypesBlockAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
declarations(): Iterable<NamedTypeDeclarationAst>;
static cast(node: SyntaxNode): TypesBlockAst | undefined;
}
declare class GenericBlockDeclarationAst implements BracedBlock {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
keyword(): SyntaxToken | undefined;
name(): IdentifierAst | undefined;
lbrace(): SyntaxToken | undefined;
rbrace(): SyntaxToken | undefined;
entries(): Iterable<KeyValuePairAst>;
attributes(): Iterable<ModelAttributeAst>;
members(): Iterable<GenericBlockMemberAst>;
static cast(node: SyntaxNode): GenericBlockDeclarationAst | undefined;
}
declare class KeyValuePairAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
key(): IdentifierAst | undefined;
equals(): SyntaxToken | undefined;
value(): ExpressionAst | undefined;
static cast(node: SyntaxNode): KeyValuePairAst | undefined;
}
declare class FieldDeclarationAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
name(): IdentifierAst | undefined;
typeAnnotation(): TypeAnnotationAst | undefined;
attributes(): Iterable<FieldAttributeAst>;
static cast(node: SyntaxNode): FieldDeclarationAst | undefined;
}
declare class NamedTypeDeclarationAst implements AstNode {
readonly syntax: SyntaxNode;
constructor(syntax: SyntaxNode);
name(): IdentifierAst | undefined;
equals(): SyntaxToken | undefined;
typeAnnotation(): TypeAnnotationAst | undefined;
attributes(): Iterable<FieldAttributeAst>;
static cast(node: SyntaxNode): NamedTypeDeclarationAst | undefined;
}
//#endregion
//#region src/parse.d.ts
interface ParseDiagnostic {
readonly code: PslDiagnosticCode;
readonly message: string;
readonly range: Range;
}
interface ParseResult {
readonly document: DocumentAst;
readonly diagnostics: readonly ParseDiagnostic[];
readonly sourceFile: SourceFile;
}
/**
* Parses a full PSL document. Never throws — malformed input yields diagnostics
* and a recovered tree, not an exception.
*/
declare function parse(source: string): ParseResult;
//#endregion
export { Range as $, StringLiteralExprAst as A, printSyntax as B, AttributeArgAst as C, NumberLiteralExprAst as D, FunctionCallAst as E, BracedBlock as F, createSyntaxTree as G, SyntaxNode as H, any as I, GreenToken as J, GreenElement as K, filterChildren as L, QualifiedNameAst as M, IdentifierAst as N, ObjectFieldAst as O, AstNode as P, Position as Q, findChildToken as R, ArrayLiteralAst as S, ExpressionAst as T, SyntaxToken as U, SyntaxElement as V, TokenAtOffset as W, greenToken as X, greenNode as Y, SyntaxKind as Z, TypesBlockAst as _, BlockMemberAst as a, FieldAttributeAst as b, DocumentAst as c, GenericBlockMemberAst as d, SourceFile as et, KeyValuePairAst as f, NamespaceMemberAst as g, NamespaceDeclarationAst as h, AttributeAst as i, castExpression as j, ObjectLiteralExprAst as k, FieldDeclarationAst as l, NamedTypeDeclarationAst as m, ParseResult as n, CompositeTypeDeclarationAst as o, ModelDeclarationAst as p, GreenNode as q, parse as r, DeclarationAst as s, ParseDiagnostic as t, GenericBlockDeclarationAst as u, TypeAnnotationAst as v, BooleanLiteralExprAst as w, ModelAttributeAst as x, AttributeArgListAst as y, findFirstChild as z };
//# sourceMappingURL=parse-BazJr7Ye.d.mts.map
{"version":3,"file":"parse-BazJr7Ye.d.mts","names":[],"sources":["../src/source-file.ts","../src/syntax/syntax-kind.ts","../src/syntax/green.ts","../src/syntax/red.ts","../src/syntax/ast-helpers.ts","../src/syntax/ast/identifier.ts","../src/syntax/ast/qualified-name.ts","../src/syntax/ast/expressions.ts","../src/syntax/ast/attributes.ts","../src/syntax/ast/type-annotation.ts","../src/syntax/ast/declarations.ts","../src/parse.ts"],"mappings":";;;;UAGiB,QAAA;EAAA,SACN,IAAA;EAAA,SACA,SAAS;AAAA;AAAA,UAGH,KAAA;EAAA,SACN,KAAA,EAAO,QAAA;EAAA,SACP,GAAA,EAAK,QAAQ;AAAA;AAAA,cAGX,UAAA;EAAA;cAIC,IAAA;EAAA,IAWR,IAAA;EAAA,IAIA,MAAA;EAAA,IAIA,SAAA;EAIJ,gBAAA;EAIA,eAAA,CAAgB,IAAA;EAOhB,aAAA,CAAc,IAAA;EAiBd,UAAA,CAAW,MAAA,WAAiB,QAAA;EAM5B,QAAA,CAAS,QAAA,EAAU,QAAQ;AAAA;;;KC1EjB,UAAA;;;UCGK,UAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA,EAAM,SAAS;EAAA,SACf,IAAA;AAAA;AAAA,UAGM,SAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA,EAAM,UAAA;EAAA,SACN,QAAA,EAAU,aAAA,CAAc,YAAA;EAAA,SACxB,UAAA;AAAA;AAAA,KAGC,YAAA,GAAe,SAAA,GAAY,UAAU;AAAA,iBAEjC,UAAA,CAAW,IAAA,EAAM,SAAA,EAAW,IAAA,WAAe,UAAU;AAAA,iBAIrD,SAAA,CAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,aAAA,CAAc,YAAA,IAAgB,SAAA;;;;AFnBpF;;;;AAEoB;AAGpB;cGGa,WAAA,YAAuB,KAAA;EAAA,SACzB,KAAA,EAAO,UAAA;EAAA,SACP,IAAA,EAAM,SAAA;EAAA,SACN,IAAA;EAAA,SACA,MAAA;EAAA,SACA,MAAA,EAAQ,UAAA;EHNH;EAAA,SGQL,KAAA;cAEG,KAAA,EAAO,UAAA,EAAY,MAAA,UAAgB,MAAA,EAAQ,UAAA,EAAY,KAAA;EAAA,IAS/D,UAAA;EAAA,IAIA,SAAA;;EAKJ,QAAA,CAAS,MAAA;EAIT,SAAA,CAAU,MAAA;;MAKN,kBAAA,IAAsB,aAAA;EHnBtB;EAAA,IGwBA,kBAAA,IAAsB,aAAA;EHhBtB;EAAA,IGqBA,SAAA,IAAa,WAAA;EHbjB;EAAA,IGsBI,SAAA,IAAa,WAAA;AAAA;AAAA,KASP,aAAA,GAAgB,UAAA,GAAa,WAAW;AAAA,cAcvC,aAAA;EAAA;UAGJ,WAAA;EAAA,OAIA,IAAA,IAAQ,aAAA;EAAA,OAIR,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,aAAA;EAAA,OAI5B,OAAA,CAAQ,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,WAAA,GAAc,aAAA;EAAA,IAInD,OAAA;EAAA,IAIA,SAAA;EAIJ,UAAA,IAAc,WAAA;EAWd,WAAA,IAAe,WAAA;AAAA;AAAA,cAYJ,UAAA;EAAA,SACF,KAAA,EAAO,SAAA;EAAA,SACP,MAAA;EAAA,SACA,MAAA,EAAQ,UAAA;EF9IG;EAAA,SEgJX,KAAA;cAEG,KAAA,EAAO,SAAA,EAAW,MAAA,UAAgB,MAAA,EAAQ,UAAA,cAAwB,KAAA;EAAA,IAO1E,IAAA,IAAQ,UAAA;EAAA,IAIR,UAAA;EAAA,IAIA,SAAA;;EAKJ,QAAA,CAAS,MAAA;EAIT,SAAA,CAAU,MAAA;EAAA,IAIN,UAAA,IAAc,aAAA;EAAA,IAId,SAAA,IAAa,aAAA;EAAA,IAMb,WAAA,IAAe,aAAA;EAAA,IAIf,WAAA,IAAe,aAAA;EDtLN;EAAA,IC2LT,kBAAA,IAAsB,aAAA;EDxLF;EAAA,IC6LpB,kBAAA,IAAsB,aAAA;ED3LX;EAAA,ICgMX,UAAA,IAAc,WAAA;ED/LC;EAAA,ICoMf,SAAA,IAAa,WAAA;EAIhB,QAAA,IAAY,QAAA,CAAS,aAAA;EAUrB,UAAA,IAAc,QAAA,CAAS,UAAA;EAMvB,SAAA,IAAa,QAAA,CAAS,UAAA;EDzNR;ECkOf,YAAA,IAAgB,IAAA,GAAO,IAAA,EAAM,UAAA,KAAe,CAAA,eAAgB,CAAA;EAc3D,WAAA,IAAe,QAAA,CAAS,aAAA;EAgBxB,MAAA,IAAU,QAAA,CAAS,WAAA;ED9PX;;AAAU;AAGrB;ECuQE,aAAA,CAAc,MAAA,WAAiB,aAAA;;;ADvQgB;AAEjD;;EC8QE,eAAA,CAAgB,KAAA,UAAe,GAAA,WAAc,aAAA;AAAA;AAAA,iBA0I/B,gBAAA,CAAiB,KAAA,EAAO,SAAA,GAAY,UAAU;;;UCva7C,OAAA;EAAA,SACN,MAAA,EAAQ,UAAU;AAAA;AAAA,UAGZ,WAAA,SAAoB,OAAA;EACnC,MAAA,IAAU,WAAA;EACV,MAAA,IAAU,WAAA;AAAA;AAAA,iBAGI,cAAA,CAAe,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,GAAY,WAAA;AAAA,iBASnD,cAAA,IACd,IAAA,EAAM,UAAA,EACN,IAAA,GAAO,IAAA,EAAM,UAAA,KAAe,CAAA,eAC3B,CAAA;AAAA,iBAQc,cAAA,IACf,IAAA,EAAM,UAAA,EACN,IAAA,GAAO,IAAA,EAAM,UAAA,KAAe,CAAA,eAC3B,QAAA,CAAS,CAAA;AAAA,KAOP,UAAA,MAAgB,CAAA,WAAW,IAAA,EAAM,UAAA,gBAAyB,OAAA,CAAQ,CAAA;AAAA,iBAEvD,GAAA,0BAA6B,IAAA,EAAM,UAAA,oBAC9C,KAAA,EAAO,KAAA,IACR,IAAA,EAAM,UAAA,KAAe,UAAA,CAAW,KAAA;;;;;iBAmBpB,WAAA,CAAY,IAAgB,EAAV,UAAU;;;cC7D/B,aAAA,YAAyB,OAAA;EAAA,SAC3B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,KAAA,IAAS,WAAA;EAIT,IAAA;EAAA,OAIO,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,aAAA;AAAA;;;;cCbpB,gBAAA,YAA4B,OAAA;EAAA;WAC9B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EA4BpB,KAAA,IAAS,WAAA;EAIT,GAAA,IAAO,WAAA;EAIP,KAAA,IAAS,aAAA;EAMT,SAAA,IAAa,aAAA;EAMb,UAAA,IAAc,aAAA;ENhDL;;;;EM4DT,IAAA;EN3DsB;EMqEtB,YAAA,CAAa,IAAA;ENlEQ;;;;EM2ErB,eAAA;EAAA,OAIO,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,gBAAA;AAAA;;;cCtFpB,eAAA,YAA2B,OAAA;EAAA,SAC7B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EPLX;EOUT,IAAA,IAAQ,gBAAA;EPNO;;;;;EOef,IAAA;EAUA,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,IAAA,IAAQ,QAAA,CAAS,eAAA;EAAA,OAIX,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,eAAA;AAAA;AAAA,cAKpB,eAAA,YAA2B,OAAA;EAAA,SAC7B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,QAAA,IAAY,WAAA;EAIZ,QAAA,IAAY,WAAA;EAIX,QAAA,IAAY,QAAA,CAAS,aAAA;EAAA,OAIf,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,eAAA;AAAA;AAAA,cAiFpB,oBAAA,YAAgC,OAAA;EAAA,SAClC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,KAAA,IAAS,WAAA;EAIT,KAAA;EAAA,OAMO,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,oBAAA;AAAA;AAAA,cAKpB,oBAAA,YAAgC,OAAA;EAAA,SAClC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,KAAA,IAAS,WAAA;EAIT,KAAA;EAAA,OAMO,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,oBAAA;AAAA;AAAA,cAKpB,qBAAA,YAAiC,OAAA;EAAA,SACnC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,KAAA,IAAS,WAAA;EAIT,KAAA;EAAA,OAQO,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,qBAAA;AAAA;AAAA,cAKpB,oBAAA,YAAgC,OAAA;EAAA,SAClC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,MAAA,IAAU,QAAA,CAAS,cAAA;EAAA,OAIb,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,oBAAA;AAAA;AAAA,cAKpB,cAAA,YAA0B,OAAA;EAAA,SAC5B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,GAAA,IAAO,aAAA;ELnPM;AAAA;AAGf;;;EKgQE,OAAA;EAeA,KAAA,IAAS,WAAA;EAIT,KAAA,IAAS,aAAA;EAAA,OAkBF,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,cAAA;AAAA;AAAA,KAKrB,aAAA,GACR,eAAA,GACA,eAAA,GACA,oBAAA,GACA,oBAAA,GACA,qBAAA,GACA,oBAAA,GACA,aAAA;AAAA,iBAEY,cAAA,CAAe,IAAA,EAAM,UAAA,GAAa,aAAa;AAAA,cAYlD,eAAA,YAA2B,OAAA;EAAA,SAC7B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,IAAA,IAAQ,aAAA;EAKR,KAAA,IAAS,WAAA;EAIT,KAAA,IAAS,aAAA;EAAA,OAkBF,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,eAAA;AAAA;;;cCpWpB,mBAAA,YAA+B,OAAA;EAAA,SACjC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,IAAA,IAAQ,QAAA,CAAS,eAAA;EAAA,OAIX,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,mBAAA;AAAA;AAAA,cAKpB,iBAAA,YAA6B,OAAA;EAAA,SAC/B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,EAAA,IAAM,WAAA;EAIN,IAAA,IAAQ,gBAAA;EAIR,OAAA,IAAW,mBAAA;EAAA,OAIJ,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,iBAAA;AAAA;AAAA,cAKpB,iBAAA,YAA6B,OAAA;EAAA,SAC/B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,QAAA,IAAY,WAAA;EAIZ,IAAA,IAAQ,gBAAA;EAIR,OAAA,IAAW,mBAAA;EAAA,OAIJ,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,iBAAA;AAAA;;;cCnEpB,iBAAA,YAA6B,OAAA;EAAA,SAC/B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;ETLX;ESUT,IAAA,IAAQ,gBAAA;ETNO;ESWf,OAAA,IAAW,mBAAA;EAIX,aAAA;EAIA,QAAA,IAAY,WAAA;EAIZ,QAAA,IAAY,WAAA;EAIZ,YAAA,IAAgB,WAAA;EAIhB,MAAA;EAIA,UAAA;EAAA,OAIO,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,iBAAA;AAAA;;;;;AT1Cb;AAGpB;;KUMY,kBAAA,GACR,mBAAA,GACA,2BAAA,GACA,0BAAA;AAAA,KAEQ,cAAA,GAAiB,kBAAA,GAAqB,aAAA,GAAgB,uBAAA;AAAA,KACtD,YAAA,GAAe,iBAAA,GAAoB,iBAAiB;AAAA,KACpD,cAAA,GAAiB,mBAAA,GAAsB,iBAAiB;AAAA,KACxD,qBAAA,GAAwB,eAAA,GAAkB,iBAAiB;AAAA,cAU1D,WAAA,YAAuB,OAAA;EAAA,SACzB,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAInB,YAAA,IAAgB,QAAA,CAAS,cAAA;EAAA,OAQnB,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,WAAA;AAAA;AAAA,cAKpB,mBAAA,YAA+B,WAAA;EAAA,SACjC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,OAAA,IAAW,WAAA;EAIX,IAAA,IAAQ,aAAA;EAIR,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,MAAA,IAAU,QAAA,CAAS,mBAAA;EAInB,UAAA,IAAc,QAAA,CAAS,iBAAA;EAIvB,OAAA,IAAW,QAAA,CAAS,cAAA;EAAA,OAOd,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,mBAAA;AAAA;AAAA,cAKpB,2BAAA,YAAuC,WAAA;EAAA,SACzC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,OAAA,IAAW,WAAA;EAIX,IAAA,IAAQ,aAAA;EAIR,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,MAAA,IAAU,QAAA,CAAS,mBAAA;EAInB,UAAA,IAAc,QAAA,CAAS,iBAAA;EAIvB,OAAA,IAAW,QAAA,CAAS,cAAA;EAAA,OAOd,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,2BAAA;AAAA;AAAA,cAOpB,uBAAA,YAAmC,WAAA;EAAA,SACrC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,OAAA,IAAW,WAAA;EAIX,IAAA,IAAQ,aAAA;EAIR,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,YAAA,IAAgB,QAAA,CAAS,kBAAA;EAAA,OAInB,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,uBAAA;AAAA;AAAA,cAKpB,aAAA,YAAyB,WAAA;EAAA,SAC3B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,OAAA,IAAW,WAAA;EAIX,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,YAAA,IAAgB,QAAA,CAAS,uBAAA;EAAA,OAInB,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,aAAA;AAAA;AAAA,cAKpB,0BAAA,YAAsC,WAAA;EAAA,SACxC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,OAAA,IAAW,WAAA;EAIX,IAAA,IAAQ,aAAA;EAIR,MAAA,IAAU,WAAA;EAIV,MAAA,IAAU,WAAA;EAIT,OAAA,IAAW,QAAA,CAAS,eAAA;EAIpB,UAAA,IAAc,QAAA,CAAS,iBAAA;EAIvB,OAAA,IAAW,QAAA,CAAS,qBAAA;EAAA,OAOd,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,0BAAA;AAAA;AAAA,cAOpB,eAAA,YAA2B,OAAA;EAAA,SAC7B,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,GAAA,IAAO,aAAA;EAIP,MAAA,IAAU,WAAA;EAIV,KAAA,IAAS,aAAA;EAAA,OAeF,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,eAAA;AAAA;AAAA,cAKpB,mBAAA,YAA+B,OAAA;EAAA,SACjC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,IAAA,IAAQ,aAAA;EAIR,cAAA,IAAkB,iBAAA;EAIjB,UAAA,IAAc,QAAA,CAAS,iBAAA;EAAA,OAIjB,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,mBAAA;AAAA;AAAA,cAKpB,uBAAA,YAAmC,OAAA;EAAA,SACrC,MAAA,EAAQ,UAAA;cAEL,MAAA,EAAQ,UAAA;EAIpB,IAAA,IAAQ,aAAA;EAIR,MAAA,IAAU,WAAA;EAIV,cAAA,IAAkB,iBAAA;EAIjB,UAAA,IAAc,QAAA,CAAS,iBAAA;EAAA,OAIjB,IAAA,CAAK,IAAA,EAAM,UAAA,GAAa,uBAAA;AAAA;;;UC7ThB,eAAA;EAAA,SACN,IAAA,EAAM,iBAAA;EAAA,SACN,OAAA;EAAA,SACA,KAAA,EAAO,KAAK;AAAA;AAAA,UAGN,WAAA;EAAA,SACN,QAAA,EAAU,WAAA;EAAA,SACV,WAAA,WAAsB,eAAA;EAAA,SACtB,UAAA,EAAY,UAAA;AAAA;;;;;iBA+cP,KAAA,CAAM,MAAA,WAAiB,WAAW"}
import { $ as Range, H as SyntaxNode, T as ExpressionAst, b as FieldAttributeAst, c as DocumentAst, et as SourceFile, h as NamespaceDeclarationAst, l as FieldDeclarationAst, m as NamedTypeDeclarationAst, o as CompositeTypeDeclarationAst, p as ModelDeclarationAst, t as ParseDiagnostic, u as GenericBlockDeclarationAst, v as TypeAnnotationAst, x as ModelAttributeAst } from "./parse-BazJr7Ye.mjs";
import { PslExtensionBlock, PslSpan } from "@prisma-next/framework-components/psl-ast";
import { AuthoringPslBlockDescriptorNamespace } from "@prisma-next/framework-components/authoring";
//#region src/resolve.d.ts
interface ResolvedAttributeArg {
readonly kind: 'positional' | 'named';
readonly name?: string;
readonly value: string;
readonly expression?: ExpressionAst;
readonly span: PslSpan;
}
interface ResolvedAttribute {
readonly name: string;
readonly args: readonly ResolvedAttributeArg[];
readonly span: PslSpan;
}
interface ResolvedTypeConstructorCall {
readonly path: readonly string[];
readonly args: readonly ResolvedAttributeArg[];
readonly span: PslSpan;
}
declare function readResolvedAttribute(attribute: FieldAttributeAst | ModelAttributeAst, sourceFile: SourceFile): ResolvedAttribute;
declare function readResolvedAttributes(attributes: Iterable<FieldAttributeAst | ModelAttributeAst>, sourceFile: SourceFile): readonly ResolvedAttribute[];
declare function readResolvedConstructorCall(annotation: TypeAnnotationAst | undefined, sourceFile: SourceFile): ResolvedTypeConstructorCall | undefined;
declare function nodePslSpan(node: SyntaxNode, sourceFile: SourceFile): PslSpan;
/** Unsupported-top-level-block diagnostics are anchored to the keyword token. */
declare function keywordPslSpan(node: SyntaxNode, keyword: string, sourceFile: SourceFile): PslSpan;
declare function rangeToPslSpan(range: Range, sourceFile: SourceFile): PslSpan;
//#endregion
//#region src/symbol-table.d.ts
interface SymbolTable {
readonly topLevel: TopLevelScope;
}
interface TopLevelScope {
readonly namespaces: Record<string, NamespaceSymbol>;
readonly scalars: Record<string, ScalarSymbol>;
readonly typeAliases: Record<string, TypeAliasSymbol>;
readonly blocks: Record<string, BlockSymbol>;
readonly models: Record<string, ModelSymbol>;
readonly compositeTypes: Record<string, CompositeTypeSymbol>;
}
interface NamespaceSymbol {
readonly kind: 'namespace';
readonly name: string;
readonly node: NamespaceDeclarationAst;
readonly span: PslSpan;
readonly models: Record<string, ModelSymbol>;
readonly compositeTypes: Record<string, CompositeTypeSymbol>;
readonly blocks: Record<string, BlockSymbol>;
}
interface ModelSymbol {
readonly kind: 'model';
readonly name: string;
readonly node: ModelDeclarationAst;
readonly span: PslSpan;
readonly fields: Record<string, FieldSymbol>;
readonly attributes: readonly ResolvedAttribute[];
}
interface CompositeTypeSymbol {
readonly kind: 'compositeType';
readonly name: string;
readonly node: CompositeTypeDeclarationAst;
readonly span: PslSpan;
readonly fields: Record<string, FieldSymbol>;
readonly attributes: readonly ResolvedAttribute[];
}
interface BlockSymbol {
readonly kind: 'block';
readonly name: string;
readonly keyword: string;
readonly node: GenericBlockDeclarationAst;
readonly span: PslSpan;
/** Resolved once so consumers do not independently classify block parameters. */
readonly block: PslExtensionBlock;
}
interface ResolvedNamedTypeBinding {
readonly baseType?: string;
readonly typeConstructor?: ResolvedTypeConstructorCall;
readonly isConstructor: boolean;
readonly attributes: readonly ResolvedAttribute[];
}
interface ScalarSymbol extends ResolvedNamedTypeBinding {
readonly kind: 'scalar';
readonly name: string;
readonly node: NamedTypeDeclarationAst;
readonly span: PslSpan;
}
interface TypeAliasSymbol extends ResolvedNamedTypeBinding {
readonly kind: 'typeAlias';
readonly name: string;
readonly node: NamedTypeDeclarationAst;
readonly span: PslSpan;
}
interface FieldSymbol {
readonly kind: 'field';
readonly name: string;
readonly node: FieldDeclarationAst;
readonly span: PslSpan;
readonly typeName: string;
readonly typeNamespaceId?: string;
readonly typeContractSpaceId?: string;
readonly optional: boolean;
readonly list: boolean;
readonly typeConstructor?: ResolvedTypeConstructorCall;
readonly attributes: readonly ResolvedAttribute[];
/** Prevents cascading unsupported-type diagnostics after invalid qualification. */
readonly malformedType?: boolean;
}
interface BuildSymbolTableOptions {
readonly document: DocumentAst;
readonly sourceFile: SourceFile;
readonly scalarTypes: readonly string[];
readonly pslBlockDescriptors: AuthoringPslBlockDescriptorNamespace;
}
interface SymbolTableResult {
readonly table: SymbolTable;
readonly diagnostics: readonly ParseDiagnostic[];
}
/**
* Owns duplicate-declaration detection for all PSL scopes; downstream consumers
* should consume first-wins symbols rather than re-emitting duplicate diagnostics.
*/
declare function buildSymbolTable(options: BuildSymbolTableOptions): SymbolTableResult;
//#endregion
export { readResolvedConstructorCall as S, keywordPslSpan as _, ModelSymbol as a, readResolvedAttribute as b, ScalarSymbol as c, TopLevelScope as d, TypeAliasSymbol as f, ResolvedTypeConstructorCall as g, ResolvedAttributeArg as h, FieldSymbol as i, SymbolTable as l, ResolvedAttribute as m, BuildSymbolTableOptions as n, NamespaceSymbol as o, buildSymbolTable as p, CompositeTypeSymbol as r, ResolvedNamedTypeBinding as s, BlockSymbol as t, SymbolTableResult as u, nodePslSpan as v, readResolvedAttributes as x, rangeToPslSpan as y };
//# sourceMappingURL=symbol-table-C-AH04Ug.d.mts.map
{"version":3,"file":"symbol-table-C-AH04Ug.d.mts","names":[],"sources":["../src/resolve.ts","../src/symbol-table.ts"],"mappings":"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"}