@prisma/orm-framework 8.0.0-rc.14-dev.30 → 8.0.0-rc.14-dev.32
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/{binder-CGmSEQPU-Celseo4Z.d.mts → binder-Dz5zT7tr-CCCwiQ29.d.mts} +29 -5
- package/dist/{binder-CGmSEQPU-Celseo4Z.d.mts.map → binder-Dz5zT7tr-CCCwiQ29.d.mts.map} +1 -1
- package/dist/psl-parser.d.mts +2 -2
- package/dist/psl-parser.mjs +130 -15
- package/dist/psl-parser.mjs.map +1 -1
- package/dist/psl-parser__interpret.d.mts +1 -1
- package/package.json +15 -15
|
@@ -9,7 +9,7 @@ import "./psl-ast-CcQp_u_l.mjs";
|
|
|
9
9
|
import { n as ContractSourceContext } from "./config-types-E4OZwoHK.mjs";
|
|
10
10
|
import { D as NamedTypeDeclarationAst, E as ModelDeclarationAst, L as PslDiagnostic, N as ParseDiagnostic, O as NamespaceDeclarationAst, T as ModelAttributeAst, Z as TypeAnnotationAst, _ as GenericBlockDeclarationAst, f as DocumentAst, h as FieldDeclarationAst, l as CompositeTypeDeclarationAst, m as FieldAttributeAst, n as AstNode, p as ExpressionAst, q as SyntaxNode, z as PslSources } from "./parse-eSQ_clQv-BIek6vrj.mjs";
|
|
11
11
|
import { n as UnionToIntersection, t as Simplify } from "./types-DGxlljKG.mjs";
|
|
12
|
-
//#region ../../../1-framework/2-authoring/psl-parser/dist/binder-
|
|
12
|
+
//#region ../../../1-framework/2-authoring/psl-parser/dist/binder-Dz5zT7tr.d.mts
|
|
13
13
|
//#region src/resolve.d.ts
|
|
14
14
|
interface ResolvedAttributeArg {
|
|
15
15
|
readonly kind: 'positional' | 'named';
|
|
@@ -397,13 +397,28 @@ declare function memberEntries(qualifier: Extract<ScopeResolution, {
|
|
|
397
397
|
//#endregion
|
|
398
398
|
//#region src/binder.d.ts
|
|
399
399
|
declare const PSL_UNRESOLVED_REFERENCE = "PSL_UNRESOLVED_REFERENCE";
|
|
400
|
-
type BoundSpec = AttributeSpec<never, ModelAttributeCtx> | AttributeSpec<never, FieldAttributeCtx>;
|
|
400
|
+
type BoundSpec = AttributeSpec<never, ModelAttributeCtx> | AttributeSpec<never, FieldAttributeCtx> | AttributeSpec<never, BlockAttributeCtx>;
|
|
401
401
|
interface AttributeSymbol {
|
|
402
402
|
readonly kind: 'attribute';
|
|
403
403
|
readonly name: string;
|
|
404
|
-
readonly level: 'model' | 'field';
|
|
404
|
+
readonly level: 'model' | 'field' | 'block';
|
|
405
405
|
readonly spec: BoundSpec;
|
|
406
406
|
}
|
|
407
|
+
interface ParameterSymbol {
|
|
408
|
+
readonly kind: 'parameter';
|
|
409
|
+
readonly name: string;
|
|
410
|
+
readonly param: Param<unknown, never>;
|
|
411
|
+
}
|
|
412
|
+
interface FunctionSymbol {
|
|
413
|
+
readonly kind: 'function';
|
|
414
|
+
readonly name: string;
|
|
415
|
+
readonly signature: FuncCallSig;
|
|
416
|
+
}
|
|
417
|
+
interface ConstantSymbol {
|
|
418
|
+
readonly kind: 'constant';
|
|
419
|
+
readonly name: string;
|
|
420
|
+
readonly documentation: string;
|
|
421
|
+
}
|
|
407
422
|
type PslSymbol = ModelSymbol | CompositeTypeSymbol | NamedTypeSymbol | BlockSymbol | NamespaceSymbol | FieldSymbol;
|
|
408
423
|
type Resolution = ScopeResolution | {
|
|
409
424
|
readonly kind: 'field';
|
|
@@ -411,6 +426,15 @@ type Resolution = ScopeResolution | {
|
|
|
411
426
|
} | {
|
|
412
427
|
readonly kind: 'attribute';
|
|
413
428
|
readonly symbol: AttributeSymbol;
|
|
429
|
+
} | {
|
|
430
|
+
readonly kind: 'parameter';
|
|
431
|
+
readonly symbol: ParameterSymbol;
|
|
432
|
+
} | {
|
|
433
|
+
readonly kind: 'function';
|
|
434
|
+
readonly symbol: FunctionSymbol;
|
|
435
|
+
} | {
|
|
436
|
+
readonly kind: 'constant';
|
|
437
|
+
readonly symbol: ConstantSymbol;
|
|
414
438
|
} | {
|
|
415
439
|
readonly kind: 'crossSpace';
|
|
416
440
|
} | {
|
|
@@ -451,5 +475,5 @@ declare function typeReferenceNode(symbol: FieldSymbol | NamedTypeSymbol): Synta
|
|
|
451
475
|
declare function contributedTypeOf(resolution: Resolution | undefined, binder: Binder): ContributedTypeSymbol | undefined;
|
|
452
476
|
declare function createBinder(input: CreateBinderInput): BinderResult;
|
|
453
477
|
//#endregion
|
|
454
|
-
export {
|
|
455
|
-
//# sourceMappingURL=binder-
|
|
478
|
+
export { NamedTypeSymbol as $, DescribeUnsupportedAttribute as A, TypedFuncCall as At, FuncCallArgType as B, isNamespaceLike as Bt, ContributedTypeNamespace as C, ResolvedTypeConstructorCall as Ct, CtxOf as D, SymbolTableResult as Dt, CreateBinderInput as E, SymbolTable as Et, FieldRefArgType as F, UnsupportedAttribute as Ft, InspectableArgType as G, readResolvedAttribute as Gt, FunctionSymbol as H, matchesSelector as Ht, FieldSymbol as I, buildSymbolTable as It, JsonValueArgType as J, typeReferenceNode as Jt, IntArgType as K, readResolvedAttributes as Kt, FixedIdentifierArgType as L, contributedTypeOf as Lt, EntityRefArgType as M, UnrestrictedIdentifierArgType as Mt, EntitySelector as N, UnrestrictedNumArgType as Nt, DeclarationFor as O, TaggedLiteralArgType as Ot, FieldAttributeCtx as P, UnrestrictedStrArgType as Pt, NamedOut as Q, FixedNumArgType as R, createBinder as Rt, ContributedTypeDescriptor as S, ResolvedNamedTypeBinding as St, ContributedTypeSymbol as T, ScopeResolution as Tt, IdentifierArgType as U, memberEntries as Ut, FuncCallSig as V, keywordPslSpan as Vt, InferAttr as W, nodePslSpan as Wt, ModelAttributeCtx as X, ListArgType as Y, ModelSymbol as Z, CompositeTypeSymbol as _, RequiredContextFor as _t, AttributeLevel as a, OptionalArgType as at, ContributedMember as b, ResolvedAttributeArg as bt, AttributeSymbol as c, Param as ct, BinderResult as d, PosOut as dt, NamespaceSymbol as et, BlockAttributeCtx as f, PositionalParam as ft, BuildSymbolTableOptions as g, RejectingArgType as gt, BoundSpec as h, ReferencedFieldRefArgType as ht, AttributeCtx as i, OneOfArgType as it, EntityDeclaration as j, UnresolvedTypeReference as jt, DescribeUnresolvedType as k, TopLevelScope as kt, Binder as l, ParameterSymbol as lt, BoolArgType as m, RecordArgType as mt, ArgType as n, NumLiteral as nt, AttributeOut as o, OutOf as ot, BlockSymbol as p, PslSymbol as pt, JsonArgType as q, readResolvedConstructorCall as qt, ArgTypeKind as r, NumLiteralArgType as rt, AttributeSpec as s, PSL_UNRESOLVED_REFERENCE as st, AnyArgType as t, NullArgType as tt, BinderContext as u, ParsedTaggedLiteral as ut, ConstantSymbol as v, Resolution as vt, ContributedTypeScope as w, Scope as wt, ContributedNamespaceSymbol as x, ResolvedEntityReference as xt, ContextForRequirement as y, ResolvedAttribute as yt, FixedStrArgType as z, entityReference as zt };
|
|
479
|
+
//# sourceMappingURL=binder-Dz5zT7tr-CCCwiQ29.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binder-
|
|
1
|
+
{"version":3,"file":"binder-Dz5zT7tr-CCCwiQ29.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/binder-Dz5zT7tr.d.mts"],"mappings":"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"}
|
package/dist/psl-parser.d.mts
CHANGED
|
@@ -7,7 +7,7 @@ import { n as AssembledAuthoringContributions } from "./control-DtFLqCvx.mjs";
|
|
|
7
7
|
import "./psl-ast-CcQp_u_l.mjs";
|
|
8
8
|
import { i as isPslIdentifier } from "./tokenizer-DW30uwhx-BHsWTwYk.mjs";
|
|
9
9
|
import { L as PslDiagnostic, R as PslDiagnosticCollector, T as ModelAttributeAst, d as DiagnosticSource, dt as mapPslDiagnostics, it as diagnosticSource, m as FieldAttributeAst, n as AstNode, q as SyntaxNode, r as AttributeArgAst, rt as diagnosticFromSpan, tt as createPslDiagnosticCollector, z as PslSources } from "./parse-eSQ_clQv-BIek6vrj.mjs";
|
|
10
|
-
import { $ as
|
|
10
|
+
import { $ as NamedTypeSymbol, A as DescribeUnsupportedAttribute, At as TypedFuncCall, B as FuncCallArgType, Bt as isNamespaceLike, C as ContributedTypeNamespace, Ct as ResolvedTypeConstructorCall, D as CtxOf, Dt as SymbolTableResult, E as CreateBinderInput, Et as SymbolTable, F as FieldRefArgType, Ft as UnsupportedAttribute, G as InspectableArgType, Gt as readResolvedAttribute, H as FunctionSymbol, Ht as matchesSelector, I as FieldSymbol, It as buildSymbolTable, J as JsonValueArgType, Jt as typeReferenceNode, K as IntArgType, Kt as readResolvedAttributes, L as FixedIdentifierArgType, Lt as contributedTypeOf, M as EntityRefArgType, Mt as UnrestrictedIdentifierArgType, N as EntitySelector, Nt as UnrestrictedNumArgType, O as DeclarationFor, Ot as TaggedLiteralArgType, P as FieldAttributeCtx, Pt as UnrestrictedStrArgType, Q as NamedOut, R as FixedNumArgType, Rt as createBinder, S as ContributedTypeDescriptor, St as ResolvedNamedTypeBinding, T as ContributedTypeSymbol, Tt as ScopeResolution, U as IdentifierArgType, Ut as memberEntries, V as FuncCallSig, Vt as keywordPslSpan, W as InferAttr, Wt as nodePslSpan, X as ModelAttributeCtx, Y as ListArgType, Z as ModelSymbol, _ as CompositeTypeSymbol, _t as RequiredContextFor, a as AttributeLevel, at as OptionalArgType, b as ContributedMember, bt as ResolvedAttributeArg, c as AttributeSymbol, ct as Param, d as BinderResult, dt as PosOut, et as NamespaceSymbol, f as BlockAttributeCtx, ft as PositionalParam, g as BuildSymbolTableOptions, gt as RejectingArgType, h as BoundSpec, ht as ReferencedFieldRefArgType, i as AttributeCtx, it as OneOfArgType, j as EntityDeclaration, jt as UnresolvedTypeReference, k as DescribeUnresolvedType, kt as TopLevelScope, l as Binder, lt as ParameterSymbol, m as BoolArgType, mt as RecordArgType, n as ArgType, nt as NumLiteral, o as AttributeOut, ot as OutOf, p as BlockSymbol, pt as PslSymbol, q as JsonArgType, qt as readResolvedConstructorCall, r as ArgTypeKind, rt as NumLiteralArgType, s as AttributeSpec, st as PSL_UNRESOLVED_REFERENCE, t as AnyArgType, tt as NullArgType, u as BinderContext, ut as ParsedTaggedLiteral, v as ConstantSymbol, vt as Resolution, w as ContributedTypeScope, wt as Scope, x as ContributedNamespaceSymbol, xt as ResolvedEntityReference, y as ContextForRequirement, yt as ResolvedAttribute, z as FixedStrArgType, zt as entityReference } from "./binder-Dz5zT7tr-CCCwiQ29.mjs";
|
|
11
11
|
//#region ../../../1-framework/2-authoring/psl-parser/dist/index.d.mts
|
|
12
12
|
//#region src/attribute-helpers.d.ts
|
|
13
13
|
declare function getPositionalArgument(attribute: PslAttribute, index?: number): string | undefined;
|
|
@@ -243,5 +243,5 @@ declare function isPrismaNextSchema(text: string): boolean;
|
|
|
243
243
|
/** The document with the directive earlier releases wrote replaced by the current one. */
|
|
244
244
|
declare function renameLegacyDirective(text: string): string;
|
|
245
245
|
//#endregion
|
|
246
|
-
export { type ArgBindingSpec, type ArgType, type ArgTypeKind, type AssembledAttributeSpecs, type AttributeCtx, type AttributeLevel, type AttributeOut, type AttributeSpec, type AttributeSpecContext, type AttributeSpecNamespace, type AttributeSymbol, type Binder, type BinderContext, type BinderResult, type BlockAttributeCtx, type BlockAttributeSpecFactory, type BlockEntryValueSpec, type BlockSpec, type BlockSpecContext, type BlockSpecFactory, type BlockSymbol, type BoundSpec, type BuildSymbolTableOptions, type CompositeTypeSymbol, type ContributedMember, type ContributedNamespaceSymbol, type ContributedTypeDescriptor, type ContributedTypeNamespace, type ContributedTypeScope, type ContributedTypeSymbol, type CreateBinderInput, type DeclarationFor, type DescribeUnresolvedType, type DescribeUnsupportedAttribute, type DiagnosticSource, type EntityDeclaration, type EntityRefArgType, type EntitySelector, type FieldAttributeCtx, type FieldAttributeSpecContext, type FieldAttributeSpecFactory, type FieldSymbol, type FixedIdentifierArgType, type FuncCallSig, type IdentifierArgType, type InferAttr, type InferBlock, type InspectableArgType, type InterpretExtensionBlockAttributesInput, type InterpretExtensionBlockInput, type InterpretExtensionBlocksResult, type JsonValueArgType, type ListOptions, type MapBlockSpec, type ModelAttributeCtx, type ModelAttributeSpecFactory, type ModelSymbol, NAME_THE_PSL_SOURCE_LOSES, type NamedOut, type NamedTypeSymbol, type NamespaceSymbol, type NullArgType, type NumLiteral, type OptionalArgType, type OutOf, PSL_UNRESOLVED_REFERENCE, type Param, type ParsedPslExtensionBlock, type ParsedTaggedLiteral, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslBlockSpecDescriptor, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDiagnosticCollector, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParsedAttribute, type PslExtensionBlockPrintEntry, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslSymbol, type PslTypeConstructorCall, type PslTypesBlock, type RejectingArgType, type Resolution, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedEntityReference, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type Scope, type ScopeResolution, type StructBlockSpec, type SymbolTable, type SymbolTableResult, type TaggedLiteralArgType, type TopLevelScope, type TypedFuncCall, type UnresolvedTypeReference, type UnrestrictedIdentifierArgType, type UnsupportedAttribute, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };
|
|
246
|
+
export { type ArgBindingSpec, type ArgType, type ArgTypeKind, type AssembledAttributeSpecs, type AttributeCtx, type AttributeLevel, type AttributeOut, type AttributeSpec, type AttributeSpecContext, type AttributeSpecNamespace, type AttributeSymbol, type Binder, type BinderContext, type BinderResult, type BlockAttributeCtx, type BlockAttributeSpecFactory, type BlockEntryValueSpec, type BlockSpec, type BlockSpecContext, type BlockSpecFactory, type BlockSymbol, type BoundSpec, type BuildSymbolTableOptions, type CompositeTypeSymbol, type ConstantSymbol, type ContributedMember, type ContributedNamespaceSymbol, type ContributedTypeDescriptor, type ContributedTypeNamespace, type ContributedTypeScope, type ContributedTypeSymbol, type CreateBinderInput, type DeclarationFor, type DescribeUnresolvedType, type DescribeUnsupportedAttribute, type DiagnosticSource, type EntityDeclaration, type EntityRefArgType, type EntitySelector, type FieldAttributeCtx, type FieldAttributeSpecContext, type FieldAttributeSpecFactory, type FieldSymbol, type FixedIdentifierArgType, type FuncCallSig, type FunctionSymbol, type IdentifierArgType, type InferAttr, type InferBlock, type InspectableArgType, type InterpretExtensionBlockAttributesInput, type InterpretExtensionBlockInput, type InterpretExtensionBlocksResult, type JsonValueArgType, type ListOptions, type MapBlockSpec, type ModelAttributeCtx, type ModelAttributeSpecFactory, type ModelSymbol, NAME_THE_PSL_SOURCE_LOSES, type NamedOut, type NamedTypeSymbol, type NamespaceSymbol, type NullArgType, type NumLiteral, type OptionalArgType, type OutOf, PSL_UNRESOLVED_REFERENCE, type Param, type ParameterSymbol, type ParsedPslExtensionBlock, type ParsedTaggedLiteral, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslBlockSpecDescriptor, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDiagnosticCollector, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParsedAttribute, type PslExtensionBlockPrintEntry, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslSymbol, type PslTypeConstructorCall, type PslTypesBlock, type RejectingArgType, type Resolution, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedEntityReference, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type Scope, type ScopeResolution, type StructBlockSpec, type SymbolTable, type SymbolTableResult, type TaggedLiteralArgType, type TopLevelScope, type TypedFuncCall, type UnresolvedTypeReference, type UnrestrictedIdentifierArgType, type UnsupportedAttribute, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };
|
|
247
247
|
//# sourceMappingURL=psl-parser.d.mts.map
|
package/dist/psl-parser.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { a as flatPslModels, c as namespacePslExtensionBlocks } from "./psl-ast-
|
|
|
6
6
|
import { n as isPslIdentifier } from "./tokenizer-BMz7z2KR-J0yZ4im3.mjs";
|
|
7
7
|
import { C as TaggedLiteralExprAst, S as StringLiteralExprAst, T as TypesBlockAst, _ as NumberLiteralExprAst, a as CompositeTypeDeclarationAst, b as PathExprAst, d as IdentifierAst, g as NamespaceDeclarationAst, i as BooleanLiteralExprAst, l as FunctionCallAst, m as ModelDeclarationAst, t as ArrayLiteralAst, u as GenericBlockDeclarationAst, y as ObjectLiteralExprAst } from "./declarations-DDT0hm5r-D_XDM-WN.mjs";
|
|
8
8
|
import { a as mapPslDiagnostics, c as readResolvedAttributes, i as keywordPslSpan, l as readResolvedConstructorCall, n as diagnosticFromSpan, o as nodePslSpan, r as diagnosticSource, s as readResolvedAttribute, t as createPslDiagnosticCollector } from "./resolve-C8PUf8zv-QAvnPhCt.mjs";
|
|
9
|
-
//#region ../../../1-framework/2-authoring/psl-parser/dist/symbol-table-
|
|
9
|
+
//#region ../../../1-framework/2-authoring/psl-parser/dist/symbol-table-CEfbWR5H.mjs
|
|
10
10
|
function* modelAttributeDescriptors(namespace) {
|
|
11
11
|
for (const value of Object.values(namespace)) {
|
|
12
12
|
if (isAuthoringModelAttributeDescriptor(value)) {
|
|
@@ -524,7 +524,19 @@ function bindBlock(block, ctx) {
|
|
|
524
524
|
for (const entry of block.node.entries()) {
|
|
525
525
|
const key = entry.key()?.name();
|
|
526
526
|
if (key === void 0) continue;
|
|
527
|
-
const
|
|
527
|
+
const parameter = spec.mode === "struct" && Object.hasOwn(spec.parameters, key) ? spec.parameters[key] : void 0;
|
|
528
|
+
const rule = spec.mode === "struct" ? parameter?.type : spec.value.type;
|
|
529
|
+
if (parameter !== void 0) {
|
|
530
|
+
const keyNode = entry.key()?.syntax;
|
|
531
|
+
if (keyNode !== void 0) ctx.references.set(keyNode, {
|
|
532
|
+
kind: "parameter",
|
|
533
|
+
symbol: {
|
|
534
|
+
kind: "parameter",
|
|
535
|
+
name: key,
|
|
536
|
+
param: parameter
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
}
|
|
528
540
|
const value = entry.value();
|
|
529
541
|
if (rule === void 0 || value === void 0) continue;
|
|
530
542
|
bindExpression(rule, value, ctx);
|
|
@@ -534,7 +546,19 @@ function bindBlock(block, ctx) {
|
|
|
534
546
|
for (const attribute of readResolvedAttributes(block.node.attributes(), ctx.sources)) {
|
|
535
547
|
const factory = attributeSpecs[attribute.name];
|
|
536
548
|
if (factory === void 0) continue;
|
|
537
|
-
|
|
549
|
+
const attributeSpec = blindCast(factory)({ symbols: ctx.symbolTable });
|
|
550
|
+
const attributeSymbol = {
|
|
551
|
+
kind: "attribute",
|
|
552
|
+
name: attribute.name,
|
|
553
|
+
level: "block",
|
|
554
|
+
spec: attributeSpec
|
|
555
|
+
};
|
|
556
|
+
const nameNode = attribute.node.name()?.syntax;
|
|
557
|
+
if (nameNode !== void 0) ctx.references.set(nameNode, {
|
|
558
|
+
kind: "attribute",
|
|
559
|
+
symbol: attributeSymbol
|
|
560
|
+
});
|
|
561
|
+
bindArguments(attribute, attributeSpec, ctx);
|
|
538
562
|
}
|
|
539
563
|
}
|
|
540
564
|
function bindExpression(rule, expression, ctx, modelContext) {
|
|
@@ -587,13 +611,37 @@ function tryBindExpression(rule, expression, ctx, modelContext) {
|
|
|
587
611
|
references,
|
|
588
612
|
diagnostics
|
|
589
613
|
};
|
|
614
|
+
const functionSymbol = {
|
|
615
|
+
kind: "function",
|
|
616
|
+
name: rule.name,
|
|
617
|
+
signature: rule.signature
|
|
618
|
+
};
|
|
619
|
+
references.set(name.syntax, {
|
|
620
|
+
kind: "function",
|
|
621
|
+
symbol: functionSymbol
|
|
622
|
+
});
|
|
590
623
|
let matched = true;
|
|
591
624
|
let positional = 0;
|
|
592
625
|
for (const arg of call.args()) {
|
|
593
626
|
const key = arg.name()?.name();
|
|
594
627
|
const parameter = argumentParameter(rule.signature, key, key === void 0 ? positional++ : positional);
|
|
628
|
+
if (parameter === void 0) {
|
|
629
|
+
matched = false;
|
|
630
|
+
continue;
|
|
631
|
+
}
|
|
632
|
+
if (key !== void 0) {
|
|
633
|
+
const keyNode = arg.name()?.syntax;
|
|
634
|
+
if (keyNode !== void 0) references.set(keyNode, {
|
|
635
|
+
kind: "parameter",
|
|
636
|
+
symbol: {
|
|
637
|
+
kind: "parameter",
|
|
638
|
+
name: key,
|
|
639
|
+
param: parameter
|
|
640
|
+
}
|
|
641
|
+
});
|
|
642
|
+
}
|
|
595
643
|
const value = arg.value();
|
|
596
|
-
if (
|
|
644
|
+
if (value === void 0) {
|
|
597
645
|
matched = false;
|
|
598
646
|
continue;
|
|
599
647
|
}
|
|
@@ -608,6 +656,32 @@ function tryBindExpression(rule, expression, ctx, modelContext) {
|
|
|
608
656
|
diagnostics
|
|
609
657
|
};
|
|
610
658
|
}
|
|
659
|
+
case "identifier": {
|
|
660
|
+
if (rule.name === void 0) return {
|
|
661
|
+
matched: true,
|
|
662
|
+
references,
|
|
663
|
+
diagnostics
|
|
664
|
+
};
|
|
665
|
+
const node = expression.syntax;
|
|
666
|
+
if (IdentifierAst.cast(node)?.name() !== rule.name) return {
|
|
667
|
+
matched: false,
|
|
668
|
+
references,
|
|
669
|
+
diagnostics
|
|
670
|
+
};
|
|
671
|
+
references.set(node, {
|
|
672
|
+
kind: "constant",
|
|
673
|
+
symbol: {
|
|
674
|
+
kind: "constant",
|
|
675
|
+
name: rule.name,
|
|
676
|
+
documentation: rule.documentation
|
|
677
|
+
}
|
|
678
|
+
});
|
|
679
|
+
return {
|
|
680
|
+
matched: true,
|
|
681
|
+
references,
|
|
682
|
+
diagnostics
|
|
683
|
+
};
|
|
684
|
+
}
|
|
611
685
|
case "entityRef": {
|
|
612
686
|
const node = expression.syntax;
|
|
613
687
|
const written = writtenEntityReference(node);
|
|
@@ -671,8 +745,35 @@ function tryBindExpression(rule, expression, ctx, modelContext) {
|
|
|
671
745
|
diagnostics
|
|
672
746
|
};
|
|
673
747
|
}
|
|
674
|
-
|
|
675
|
-
|
|
748
|
+
case "str":
|
|
749
|
+
case "json": return {
|
|
750
|
+
matched: StringLiteralExprAst.cast(expression.syntax) !== void 0,
|
|
751
|
+
references,
|
|
752
|
+
diagnostics
|
|
753
|
+
};
|
|
754
|
+
case "num":
|
|
755
|
+
case "int": return {
|
|
756
|
+
matched: NumberLiteralExprAst.cast(expression.syntax) !== void 0,
|
|
757
|
+
references,
|
|
758
|
+
diagnostics
|
|
759
|
+
};
|
|
760
|
+
case "bool": return {
|
|
761
|
+
matched: BooleanLiteralExprAst.cast(expression.syntax) !== void 0,
|
|
762
|
+
references,
|
|
763
|
+
diagnostics
|
|
764
|
+
};
|
|
765
|
+
case "null": return {
|
|
766
|
+
matched: IdentifierAst.cast(expression.syntax)?.name() === "null",
|
|
767
|
+
references,
|
|
768
|
+
diagnostics
|
|
769
|
+
};
|
|
770
|
+
case "taggedLiteral": return {
|
|
771
|
+
matched: TaggedLiteralExprAst.cast(expression.syntax) !== void 0,
|
|
772
|
+
references,
|
|
773
|
+
diagnostics
|
|
774
|
+
};
|
|
775
|
+
case "rejecting": return {
|
|
776
|
+
matched: false,
|
|
676
777
|
references,
|
|
677
778
|
diagnostics
|
|
678
779
|
};
|
|
@@ -706,26 +807,40 @@ function bindAttributes(holder, attributes, specs, instantiate, ctx) {
|
|
|
706
807
|
}
|
|
707
808
|
const spec = instantiate(factory);
|
|
708
809
|
if (spec === void 0) return;
|
|
810
|
+
const attributeSymbol = {
|
|
811
|
+
kind: "attribute",
|
|
812
|
+
name: attribute.name,
|
|
813
|
+
level,
|
|
814
|
+
spec
|
|
815
|
+
};
|
|
709
816
|
const nameNode = nodes[index]?.name()?.syntax;
|
|
710
817
|
if (nameNode !== void 0) ctx.references.set(nameNode, {
|
|
711
818
|
kind: "attribute",
|
|
712
|
-
symbol:
|
|
713
|
-
kind: "attribute",
|
|
714
|
-
name: attribute.name,
|
|
715
|
-
level,
|
|
716
|
-
spec
|
|
717
|
-
}
|
|
819
|
+
symbol: attributeSymbol
|
|
718
820
|
});
|
|
719
821
|
bindArguments(attribute, spec, ctx, ctx);
|
|
720
822
|
});
|
|
721
823
|
}
|
|
722
824
|
function bindArguments(attribute, spec, ctx, modelContext) {
|
|
825
|
+
const rawArgs = Array.from(attribute.node.argList()?.args() ?? []);
|
|
723
826
|
let positional = 0;
|
|
724
|
-
|
|
827
|
+
attribute.args.forEach((arg, index) => {
|
|
725
828
|
const parameter = argumentParameter(spec, arg.name, arg.name === void 0 ? positional++ : positional);
|
|
726
|
-
if (parameter === void 0
|
|
829
|
+
if (parameter === void 0) return;
|
|
830
|
+
if (arg.name !== void 0) {
|
|
831
|
+
const keyNode = rawArgs[index]?.name()?.syntax;
|
|
832
|
+
if (keyNode !== void 0) ctx.references.set(keyNode, {
|
|
833
|
+
kind: "parameter",
|
|
834
|
+
symbol: {
|
|
835
|
+
kind: "parameter",
|
|
836
|
+
name: arg.name,
|
|
837
|
+
param: parameter
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
}
|
|
841
|
+
if (arg.expression === void 0) return;
|
|
727
842
|
bindExpression(parameter.type, arg.expression, ctx, modelContext);
|
|
728
|
-
}
|
|
843
|
+
});
|
|
729
844
|
}
|
|
730
845
|
function argumentParameter(spec, name, position) {
|
|
731
846
|
if (name === void 0) return spec.positional?.[position];
|
package/dist/psl-parser.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psl-parser.mjs","names":["#registry","#records","#namespace","#declarations","#references","#documentScope","#scopes","#base"],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/symbol-table-DDQTCCCB.mjs","../../../../1-framework/2-authoring/psl-parser/dist/index.mjs"],"sourcesContent":["import { D as IdentifierAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, i as GenericBlockDeclarationAst, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, x as PathExprAst } from \"./declarations-DDT0hm5r.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, n as nodePslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/attribute-spec/assemble.ts\nfunction* modelAttributeDescriptors(namespace) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringModelAttributeDescriptor(value)) {\n\t\t\tyield value;\n\t\t\tcontinue;\n\t\t}\n\t\tyield* modelAttributeDescriptors(value);\n\t}\n}\nfunction assembleAttributeSpecs(contributions) {\n\tconst entries = Object.entries(contributions.attributeSpecs.model);\n\tconst claimed = new Set(entries.map(([attribute]) => attribute));\n\tfor (const descriptor of modelAttributeDescriptors(contributions.modelAttributes)) {\n\t\tif (claimed.has(descriptor.attribute)) throw new InternalError(`Duplicate attribute spec registration for \"${descriptor.attribute}\". Each model attribute name may be registered once across family built-ins and model-attribute descriptors.`);\n\t\tclaimed.add(descriptor.attribute);\n\t\tentries.push([descriptor.attribute, descriptor.spec]);\n\t}\n\treturn Object.freeze(blindCast({\n\t\tmodel: Object.freeze(Object.fromEntries(entries)),\n\t\tfield: Object.freeze({ ...contributions.attributeSpecs.field })\n\t}));\n}\nfunction resolveDescribeUnsupportedAttribute(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnsupportedAttribute === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnsupportedAttribute);\n}\nfunction resolveDescribeUnresolvedType(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnresolvedType === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnresolvedType);\n}\n//#endregion\n//#region src/entity-reference.ts\nfunction writtenEntityReference(node) {\n\tconst name = IdentifierAst.cast(node)?.name();\n\tif (name !== void 0) return {\n\t\tnamespace: void 0,\n\t\tname\n\t};\n\tconst path = PathExprAst.cast(node)?.path();\n\tif (path === void 0 || path.length !== 2) return void 0;\n\tconst [namespace, member] = path;\n\treturn namespace === void 0 || member === void 0 ? void 0 : {\n\t\tnamespace,\n\t\tname: member\n\t};\n}\nfunction describeWrittenEntityReference(reference) {\n\treturn reference.namespace === void 0 ? reference.name : `${reference.namespace}.${reference.name}`;\n}\nconst references = /* @__PURE__ */ new WeakMap();\nfunction entityReference(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\":\n\t\tcase \"compositeType\":\n\t\tcase \"namedType\":\n\t\tcase \"block\": return interned(resolution.symbol, resolution.namespace);\n\t\tdefault: return;\n\t}\n}\nfunction interned(declaration, namespace) {\n\tconst existing = references.get(declaration);\n\tif (existing !== void 0) return existing;\n\tconst reference = {\n\t\tdeclaration,\n\t\tnamespace\n\t};\n\treferences.set(declaration, reference);\n\treturn reference;\n}\nfunction matchesSelector(reference, expected) {\n\tconst declaration = reference.declaration;\n\tif (declaration.kind !== expected.kind) return false;\n\treturn expected.kind !== \"block\" || declaration.kind === \"block\" && declaration.keyword === expected.keyword;\n}\nfunction describeResolution(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"block\": return resolution.symbol.keyword;\n\t\tcase \"contributedType\": return \"scalar type\";\n\t\tcase \"crossSpace\": return \"cross-space reference\";\n\t\tcase \"unresolved\": return \"unresolved name\";\n\t\tdefault: return resolution.kind;\n\t}\n}\n//#endregion\n//#region src/block-spec/descriptor.ts\nfunction blockSpecFactoryOf(descriptor) {\n\treturn blindCast(descriptor.spec);\n}\n//#endregion\n//#region src/contributed-type-scope.ts\nfunction isContributedTypeDescriptor(value) {\n\treturn \"kind\" in value && (value.kind === \"typeConstructor\" || value.kind === \"fieldPreset\");\n}\nfunction mergeContributedTypes(...namespaces) {\n\tconst merged = {};\n\tfor (const namespace of namespaces) for (const [name, value] of Object.entries(namespace)) {\n\t\tconst existing = Object.hasOwn(merged, name) ? merged[name] : void 0;\n\t\tmerged[name] = existing !== void 0 && !isContributedTypeDescriptor(existing) && !isContributedTypeDescriptor(value) ? mergeContributedTypes(existing, value) : value;\n\t}\n\treturn merged;\n}\nfunction contributedTypeScope(contributedTypes) {\n\tconst members = collect(contributedTypes, []);\n\treturn {\n\t\tlookup(name) {\n\t\t\treturn members.get(name);\n\t\t},\n\t\tentries() {\n\t\t\treturn members.entries();\n\t\t}\n\t};\n}\nfunction collect(namespace, prefix) {\n\tconst members = /* @__PURE__ */ new Map();\n\tfor (const [name, value] of Object.entries(namespace)) {\n\t\tconst path = [...prefix, name];\n\t\tmembers.set(name, isContributedTypeDescriptor(value) ? {\n\t\t\tkind: \"contributedType\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tdescriptor: value\n\t\t} : {\n\t\t\tkind: \"contributedNamespace\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tmembers: collect(value, path)\n\t\t});\n\t}\n\treturn members;\n}\n//#endregion\n//#region src/extension-block.ts\nfunction findBlockDescriptor(descriptors, keyword) {\n\tif (descriptors === void 0) return void 0;\n\tfor (const value of Object.values(descriptors)) {\n\t\tif (value === void 0) continue;\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tif (value.keyword === keyword) return value;\n\t\t\tcontinue;\n\t\t}\n\t\tconst nested = findBlockDescriptor(value, keyword);\n\t\tif (nested !== void 0) return nested;\n\t}\n}\n//#endregion\n//#region src/scope.ts\nfunction* recordNames(...records) {\n\tfor (const record of records) yield* Object.keys(record);\n}\nvar Scope = class {\n\tparent;\n\tconstructor(parent) {\n\t\tthis.parent = parent;\n\t}\n\t*entries() {\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const name of this.ownNames()) {\n\t\t\tif (seen.has(name)) continue;\n\t\t\tseen.add(name);\n\t\t\tconst resolution = this.lookup(name);\n\t\t\tif (resolution !== void 0) yield [name, resolution];\n\t\t}\n\t\tfor (const entry of this.parent?.entries() ?? []) if (!seen.has(entry[0])) yield entry;\n\t}\n};\nfunction contributedResolution(member) {\n\treturn member.kind === \"contributedType\" ? {\n\t\tkind: \"contributedType\",\n\t\tsymbol: member\n\t} : {\n\t\tkind: \"contributedNamespace\",\n\t\tsymbol: member\n\t};\n}\nfunction namespaceMember(namespace, name) {\n\tconst model = namespace.models[name];\n\tif (model !== void 0) return {\n\t\tkind: \"model\",\n\t\tsymbol: model,\n\t\tnamespace\n\t};\n\tconst compositeType = namespace.compositeTypes[name];\n\tif (compositeType !== void 0) return {\n\t\tkind: \"compositeType\",\n\t\tsymbol: compositeType,\n\t\tnamespace\n\t};\n\tconst block = namespace.blocks[name];\n\tif (block !== void 0) return {\n\t\tkind: \"block\",\n\t\tsymbol: block,\n\t\tnamespace\n\t};\n}\nvar ContributedScope = class extends Scope {\n\t#registry;\n\tconstructor(registry) {\n\t\tsuper(void 0);\n\t\tthis.#registry = registry;\n\t}\n\tlookup(name) {\n\t\tconst member = this.#registry.lookup(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\t*ownNames() {\n\t\tfor (const [name] of this.#registry.entries()) yield name;\n\t}\n};\nvar DocumentScope = class extends Scope {\n\t#records;\n\tconstructor(records, parent) {\n\t\tsuper(parent);\n\t\tthis.#records = records;\n\t}\n\tlookup(name) {\n\t\tconst records = this.#records;\n\t\tconst model = records.models[name];\n\t\tif (model !== void 0) return {\n\t\t\tkind: \"model\",\n\t\t\tsymbol: model\n\t\t};\n\t\tconst compositeType = records.compositeTypes[name];\n\t\tif (compositeType !== void 0) return {\n\t\t\tkind: \"compositeType\",\n\t\t\tsymbol: compositeType\n\t\t};\n\t\tconst namedType = records.namedTypes[name];\n\t\tif (namedType !== void 0) return {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol: namedType\n\t\t};\n\t\tconst block = records.blocks[name];\n\t\tif (block !== void 0) return {\n\t\t\tkind: \"block\",\n\t\t\tsymbol: block\n\t\t};\n\t\tconst namespace = records.namespaces[name];\n\t\tif (namespace !== void 0) return {\n\t\t\tkind: \"namespace\",\n\t\t\tsymbol: namespace\n\t\t};\n\t\treturn this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst records = this.#records;\n\t\treturn recordNames(records.models, records.compositeTypes, records.namedTypes, records.blocks, records.namespaces);\n\t}\n};\nvar NamespaceScope = class extends Scope {\n\t#namespace;\n\tconstructor(namespace, parent) {\n\t\tsuper(parent);\n\t\tthis.#namespace = namespace;\n\t}\n\tlookup(name) {\n\t\treturn namespaceMember(this.#namespace, name) ?? this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst namespace = this.#namespace;\n\t\treturn recordNames(namespace.models, namespace.compositeTypes, namespace.blocks);\n\t}\n};\nfunction contributedScope(registry) {\n\treturn new ContributedScope(registry);\n}\nfunction documentScope(records, parent) {\n\treturn new DocumentScope(records, parent);\n}\nfunction namedTypeBaseScope(records, parent) {\n\treturn new DocumentScope({\n\t\t...records,\n\t\tnamedTypes: {}\n\t}, parent);\n}\nfunction namespaceScope(namespace, parent) {\n\treturn new NamespaceScope(namespace, parent);\n}\nfunction isNamespaceLike(resolution) {\n\treturn resolution.kind === \"namespace\" || resolution.kind === \"contributedNamespace\";\n}\nfunction* memberEntries(qualifier) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tfor (const [name, member] of qualifier.symbol.members) yield [name, contributedResolution(member)];\n\t\treturn;\n\t}\n\tyield* new NamespaceScope(qualifier.symbol, void 0).entries();\n}\nfunction lookupMember(qualifier, name) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tconst member = qualifier.symbol.members.get(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\treturn namespaceMember(qualifier.symbol, name);\n}\n//#endregion\n//#region src/binder.ts\nconst PSL_UNRESOLVED_REFERENCE = \"PSL_UNRESOLVED_REFERENCE\";\nfunction typeReferenceNode(symbol) {\n\treturn symbol.node.typeAnnotation()?.name()?.syntax;\n}\nfunction contributedTypeOf(resolution, binder) {\n\tconst base = resolution?.kind === \"namedType\" ? typeReferenceNode(resolution.symbol) : void 0;\n\tconst target = base === void 0 ? resolution : binder.symbolForNode(base);\n\treturn target?.kind === \"contributedType\" ? target.symbol : void 0;\n}\nvar PslBinder = class {\n\t#declarations;\n\t#references;\n\t#documentScope;\n\t#scopes;\n\tconstructor(declarations, references, documentScope, scopes) {\n\t\tthis.#declarations = declarations;\n\t\tthis.#references = references;\n\t\tthis.#documentScope = documentScope;\n\t\tthis.#scopes = scopes;\n\t}\n\tdeclaredSymbol(node) {\n\t\treturn this.#declarations.get(node);\n\t}\n\tsymbolForNode(node) {\n\t\treturn this.#references.get(node);\n\t}\n\tscopeAt(node) {\n\t\treturn node.findAncestor((ancestor) => this.#scopes.get(ancestor)) ?? this.#documentScope;\n\t}\n};\nvar ScopeStack = class {\n\t#base;\n\t#scopes;\n\tconstructor(base) {\n\t\tthis.#base = base;\n\t\tthis.#scopes = [base];\n\t}\n\tcurrent() {\n\t\treturn this.#scopes[this.#scopes.length - 1] ?? this.#base;\n\t}\n\tpush(scope) {\n\t\tthis.#scopes.push(scope);\n\t}\n\tpop() {\n\t\tthis.#scopes.pop();\n\t}\n};\nfunction walkEntities(symbolTable, stack, binder, visit) {\n\tconst { topLevel } = symbolTable;\n\tfor (const entity of Object.values(topLevel.models)) visit(entity);\n\tfor (const entity of Object.values(topLevel.compositeTypes)) visit(entity);\n\tfor (const namespace of Object.values(topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tfor (const entity of Object.values(namespace.models)) visit(entity, namespace);\n\t\tfor (const entity of Object.values(namespace.compositeTypes)) visit(entity, namespace);\n\t\tstack.pop();\n\t}\n}\nfunction declarationResolution(entity, namespace) {\n\treturn entity.kind === \"model\" ? {\n\t\tkind: \"model\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t} : {\n\t\tkind: \"compositeType\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t};\n}\nfunction createBinder(input) {\n\tconst { symbolTable, sources, context } = input;\n\tconst contributions = context.authoringContributions;\n\tconst describeUnsupportedAttributeFactory = resolveDescribeUnsupportedAttribute(context.pslDiagnostics);\n\tconst describeUnresolvedTypeFactory = resolveDescribeUnresolvedType(context.pslDiagnostics);\n\treturn bind({\n\t\tsources,\n\t\tsymbolTable,\n\t\tcontributedTypes: mergeContributedTypes(contributions.field, contributions.type),\n\t\tattributeSpecs: assembleAttributeSpecs(contributions),\n\t\tpslBlockDescriptors: contributions.pslBlockDescriptors,\n\t\tcontrolMutationDefaults: {\n\t\t\tdefaultFunctionRegistry: context.controlMutationDefaults.defaultFunctionRegistry,\n\t\t\tdataTypeEntries: contributions.dataTypes\n\t\t},\n\t\t...describeUnsupportedAttributeFactory !== void 0 ? { describeUnsupportedAttribute: describeUnsupportedAttributeFactory(sources) } : {},\n\t\t...describeUnresolvedTypeFactory !== void 0 ? { describeUnresolvedType: describeUnresolvedTypeFactory(contributions) } : {}\n\t});\n}\nfunction bind(options) {\n\tconst { sources, symbolTable, contributedTypes, attributeSpecs, controlMutationDefaults, describeUnsupportedAttribute, describeUnresolvedType } = options;\n\tconst pslBlockDescriptors = options.pslBlockDescriptors ?? {};\n\tconst contributed = contributedScope(contributedTypeScope(contributedTypes));\n\tconst document = documentScope(symbolTable.topLevel, contributed);\n\tconst stack = new ScopeStack(document);\n\tconst scopes = /* @__PURE__ */ new WeakMap();\n\tconst declarations = /* @__PURE__ */ new WeakMap();\n\tconst references = /* @__PURE__ */ new WeakMap();\n\tconst diagnostics = [];\n\tconst binder = new PslBinder(declarations, references, document, scopes);\n\tconst baseScope = namedTypeBaseScope(symbolTable.topLevel, contributed);\n\tfor (const symbol of Object.values(symbolTable.topLevel.namedTypes)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol\n\t\t});\n\t\tconst name = symbol.node.typeAnnotation()?.name();\n\t\tconst outcome = resolveTypeReference(name, baseScope);\n\t\tif (name === void 0 || outcome === void 0) continue;\n\t\treferences.set(name.syntax, outcome.resolution);\n\t}\n\tfor (const symbol of Object.values(symbolTable.topLevel.blocks)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"block\",\n\t\t\tsymbol\n\t\t});\n\t}\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tconst scope = namespaceScope(namespace, document);\n\t\tfor (const declaration of namespace.declarations) {\n\t\t\tdeclarations.set(declaration.node.syntax, namespace);\n\t\t\tscopes.set(declaration.node.syntax, scope);\n\t\t}\n\t\tfor (const symbol of Object.values(namespace.blocks)) {\n\t\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\t\tkind: \"block\",\n\t\t\t\tsymbol,\n\t\t\t\tnamespace\n\t\t\t});\n\t\t}\n\t}\n\twalkEntities(symbolTable, stack, binder, (entity, namespace) => {\n\t\tdeclarations.set(entity.node.syntax, entity);\n\t\tconst declaredName = entity.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, declarationResolution(entity, namespace));\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tdeclarations.set(field.node.syntax, field);\n\t\t\tconst fieldName = field.node.name()?.syntax;\n\t\t\tif (fieldName !== void 0) references.set(fieldName, {\n\t\t\t\tkind: \"field\",\n\t\t\t\tsymbol: field\n\t\t\t});\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tif (node === void 0) continue;\n\t\t\tconst outcome = resolveTypeReference(field.node.typeAnnotation()?.name(), stack.current(), (written) => describeUnresolvedType?.({\n\t\t\t\tfield,\n\t\t\t\towner: entity,\n\t\t\t\twritten\n\t\t\t}));\n\t\t\tif (outcome === void 0) continue;\n\t\t\treferences.set(node, outcome.resolution);\n\t\t\tif (outcome.message !== void 0) diagnostics.push({\n\t\t\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\t\t\tmessage: outcome.message,\n\t\t\t\tdata: {\n\t\t\t\t\treference: \"type\",\n\t\t\t\t\tname: outcome.name,\n\t\t\t\t\tconstructorCall: field.typeConstructor !== void 0\n\t\t\t\t},\n\t\t\t\t...diagnosticSource(sources, node).at()\n\t\t\t});\n\t\t}\n\t});\n\twalkEntities(symbolTable, stack, binder, (entity) => {\n\t\tconst context = {\n\t\t\towner: entity,\n\t\t\tscope: stack.current(),\n\t\t\treferences,\n\t\t\tdiagnostics,\n\t\t\tsymbolTable,\n\t\t\tsources,\n\t\t\tdescribeUnsupportedAttribute\n\t\t};\n\t\tconst specContext = entity.kind === \"model\" ? {\n\t\t\tsymbols: symbolTable,\n\t\t\tmodel: entity,\n\t\t\tcontrolMutationDefaults\n\t\t} : void 0;\n\t\tbindAttributes(entity, entity.attributes, attributeSpecs.model, (factory) => specContext === void 0 ? void 0 : factory(specContext), {\n\t\t\t...context,\n\t\t\tfield: void 0\n\t\t});\n\t\tfor (const field of Object.values(entity.fields)) bindAttributes(field, field.attributes, attributeSpecs.field, (factory) => {\n\t\t\tif (specContext === void 0) return void 0;\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tconst typeResolution = node === void 0 ? void 0 : references.get(node);\n\t\t\treturn factory({\n\t\t\t\t...specContext,\n\t\t\t\tfield,\n\t\t\t\ttypeResolution\n\t\t\t});\n\t\t}, {\n\t\t\t...context,\n\t\t\tfield\n\t\t});\n\t});\n\tconst blockContext = {\n\t\tpslBlockDescriptors,\n\t\tsymbolTable,\n\t\tsources,\n\t\treferences,\n\t\tdiagnostics\n\t};\n\tconst bindBlocks = (blocks) => {\n\t\tconst context = {\n\t\t\t...blockContext,\n\t\t\tscope: stack.current()\n\t\t};\n\t\tfor (const block of Object.values(blocks)) bindBlock(block, context);\n\t};\n\tbindBlocks(symbolTable.topLevel.blocks);\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tbindBlocks(namespace.blocks);\n\t\tstack.pop();\n\t}\n\treturn {\n\t\tbinder,\n\t\tdiagnostics\n\t};\n}\nfunction bindBlock(block, ctx) {\n\tconst descriptor = findBlockDescriptor(ctx.pslBlockDescriptors, block.keyword);\n\tif (descriptor === void 0) return;\n\tconst spec = blockSpecFactoryOf(descriptor)({ symbols: ctx.symbolTable });\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst rule = spec.mode === \"struct\" ? Object.hasOwn(spec.parameters, key) ? spec.parameters[key]?.type : void 0 : spec.value.type;\n\t\tconst value = entry.value();\n\t\tif (rule === void 0 || value === void 0) continue;\n\t\tbindExpression(rule, value, ctx);\n\t}\n\tconst attributeSpecs = descriptor.attributes ?? {};\n\tif (Object.keys(attributeSpecs).length === 0) return;\n\tfor (const attribute of readResolvedAttributes(block.node.attributes(), ctx.sources)) {\n\t\tconst factory = attributeSpecs[attribute.name];\n\t\tif (factory === void 0) continue;\n\t\tbindArguments(attribute, blindCast(factory)({ symbols: ctx.symbolTable }), ctx);\n\t}\n}\nfunction bindExpression(rule, expression, ctx, modelContext) {\n\tconst trial = tryBindExpression(rule, expression, ctx, modelContext);\n\tfor (const [node, resolution] of trial.references) ctx.references.set(node, resolution);\n\tctx.diagnostics.push(...trial.diagnostics.values());\n}\nfunction tryBindExpression(rule, expression, ctx, modelContext) {\n\tconst references = /* @__PURE__ */ new Map();\n\tconst diagnostics = /* @__PURE__ */ new Map();\n\tswitch (rule.kind) {\n\t\tcase \"oneOf\":\n\t\t\tfor (const alternative of rule.alternatives) {\n\t\t\t\tconst trial = tryBindExpression(alternative, expression, ctx, modelContext);\n\t\t\t\tif (trial.matched) return trial;\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t\tfor (const [node, resolution] of trial.references) if (resolution.kind === \"unresolved\") references.set(node, resolution);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\tcase \"list\":\n\t\tcase \"record\": {\n\t\t\tconst children = rule.kind === \"list\" ? ArrayLiteralAst.cast(expression.syntax)?.elements() : recordValues(expression);\n\t\t\tif (children === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tlet matched = true;\n\t\t\tfor (const child of children) {\n\t\t\t\tconst trial = tryBindExpression(rule.of, child, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"funcCall\": {\n\t\t\tconst call = FunctionCallAst.cast(expression.syntax);\n\t\t\tconst name = call?.name();\n\t\t\tif (call === void 0 || name === void 0 || name.dot() !== void 0 || name.colon() !== void 0 || name.identifier()?.name() !== rule.name) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tlet matched = true;\n\t\t\tlet positional = 0;\n\t\t\tfor (const arg of call.args()) {\n\t\t\t\tconst key = arg.name()?.name();\n\t\t\t\tconst parameter = argumentParameter(rule.signature, key, key === void 0 ? positional++ : positional);\n\t\t\t\tconst value = arg.value();\n\t\t\t\tif (parameter === void 0 || value === void 0) {\n\t\t\t\t\tmatched = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst trial = tryBindExpression(parameter.type, value, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"entityRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst written = writtenEntityReference(node);\n\t\t\tif (written === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveEntity(written, node, {\n\t\t\t\t...ctx,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"fieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveOwnerField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"referencedFieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveReferencedField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tdefault: return {\n\t\t\tmatched: true,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t}\n}\nfunction recordValues(expression) {\n\tconst record = ObjectLiteralExprAst.cast(expression.syntax);\n\tif (record === void 0) return void 0;\n\treturn (function* () {\n\t\tfor (const field of record.fields()) {\n\t\t\tconst value = field.value();\n\t\t\tif (value !== void 0) yield value;\n\t\t}\n\t})();\n}\nfunction bindAttributes(holder, attributes, specs, instantiate, ctx) {\n\tconst declared = holder.node.attributes();\n\tconst nodes = Array.from(declared);\n\tconst level = holder.kind === \"field\" ? \"field\" : \"model\";\n\tattributes.forEach((attribute, index) => {\n\t\tconst factory = own(specs, attribute.name);\n\t\tif (factory === void 0) {\n\t\t\tconst diagnostic = ctx.describeUnsupportedAttribute?.({\n\t\t\t\tattribute,\n\t\t\t\tlevel,\n\t\t\t\towner: ctx.owner,\n\t\t\t\tfield: level === \"field\" ? ctx.field : void 0\n\t\t\t});\n\t\t\tif (diagnostic !== void 0) ctx.diagnostics.push(diagnostic);\n\t\t\treturn;\n\t\t}\n\t\tconst spec = instantiate(factory);\n\t\tif (spec === void 0) return;\n\t\tconst nameNode = nodes[index]?.name()?.syntax;\n\t\tif (nameNode !== void 0) ctx.references.set(nameNode, {\n\t\t\tkind: \"attribute\",\n\t\t\tsymbol: {\n\t\t\t\tkind: \"attribute\",\n\t\t\t\tname: attribute.name,\n\t\t\t\tlevel,\n\t\t\t\tspec\n\t\t\t}\n\t\t});\n\t\tbindArguments(attribute, spec, ctx, ctx);\n\t});\n}\nfunction bindArguments(attribute, spec, ctx, modelContext) {\n\tlet positional = 0;\n\tfor (const arg of attribute.args) {\n\t\tconst parameter = argumentParameter(spec, arg.name, arg.name === void 0 ? positional++ : positional);\n\t\tif (parameter === void 0 || arg.expression === void 0) continue;\n\t\tbindExpression(parameter.type, arg.expression, ctx, modelContext);\n\t}\n}\nfunction argumentParameter(spec, name, position) {\n\tif (name === void 0) return spec.positional?.[position];\n\treturn spec.named === void 0 ? void 0 : own(spec.named, name);\n}\nfunction resolveOwnerField(name, node, ctx) {\n\tconst field = ctx.owner.fields[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on \"${ctx.owner.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction resolveReferencedField(name, node, ctx) {\n\tconst declaring = ctx.field;\n\tif (declaring === void 0) return {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n\tif (declaring.typeContractSpaceId !== void 0) return { kind: \"crossSpace\" };\n\tconst typeNode = typeReferenceNode(declaring);\n\tconst field = targetFields(typeNode === void 0 ? void 0 : ctx.references.get(typeNode))?.[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on the type of \"${ctx.owner.name}.${declaring.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction targetFields(target) {\n\tif (target === void 0) return void 0;\n\tif (target.kind === \"model\" || target.kind === \"compositeType\") return target.symbol.fields;\n}\nfunction resolveEntity(written, node, ctx) {\n\tconst found = written.namespace === void 0 ? ctx.scope.lookup(written.name) : qualifiedMember(written.namespace, written.name, ctx.scope);\n\tif (found === void 0) {\n\t\tconst name = describeWrittenEntityReference(written);\n\t\tif (written.name !== \"\") report(`Cannot find entity \"${name}\"`, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) {\n\t\treport(found.badQualifier, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t};\n\t}\n\treturn found;\n}\nfunction report(message, node, ctx, reference) {\n\tctx.diagnostics.push({\n\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\tmessage,\n\t\tdata: { reference },\n\t\t...diagnosticSource(ctx.sources, node).at()\n\t});\n}\nfunction resolveTypeReference(reference, scope, describeUnresolved) {\n\tif (reference === void 0 || reference.isOverQualified()) return void 0;\n\tif (reference.space() !== void 0) return { resolution: { kind: \"crossSpace\" } };\n\tconst name = reference.identifier()?.name();\n\tif (name === void 0 || name === \"\") return void 0;\n\tconst namespaceId = reference.namespace()?.name();\n\tconst found = namespaceId === void 0 ? scope.lookup(name) : qualifiedMember(namespaceId, name, scope);\n\tif (found === void 0) {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\tconst message = describeUnresolved?.(written) ?? `Cannot find type \"${written}\"`;\n\t\treturn {\n\t\t\tresolution: {\n\t\t\t\tkind: \"unresolved\",\n\t\t\t\tname: written\n\t\t\t},\n\t\t\tmessage,\n\t\t\tname: written\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) return {\n\t\tresolution: {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t},\n\t\tmessage: found.badQualifier,\n\t\tname: found.qualifier\n\t};\n\tif (found.kind === \"namespace\" || found.kind === \"contributedNamespace\") {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\treturn {\n\t\t\tresolution: found,\n\t\t\tmessage: `\"${written}\" is a namespace; a type reference must name a model, composite type, enum, or named type`,\n\t\t\tname: written\n\t\t};\n\t}\n\treturn { resolution: found };\n}\nfunction qualifiedMember(namespaceId, name, scope) {\n\tconst qualifier = scope.lookup(namespaceId);\n\tif (qualifier === void 0) return void 0;\n\tif (!isNamespaceLike(qualifier)) return {\n\t\tbadQualifier: `\"${namespaceId}\" is ${describeQualifier(qualifier)}, not a namespace`,\n\t\tqualifier: namespaceId\n\t};\n\treturn lookupMember(qualifier, name);\n}\nfunction describeQualifier(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\": return \"a model\";\n\t\tcase \"compositeType\": return \"a composite type\";\n\t\tcase \"namedType\": return \"a named type\";\n\t\tcase \"block\": return `${resolution.symbol.keyword === \"enum\" ? \"an\" : \"a\"} ${resolution.symbol.keyword}`;\n\t\tdefault: return \"a scalar type\";\n\t}\n}\nfunction own(record, name) {\n\treturn Object.hasOwn(record, name) ? record[name] : void 0;\n}\n//#endregion\n//#region src/symbol-table.ts\n/**\n* Owns duplicate-declaration detection for all PSL scopes; downstream consumers\n* should consume first-wins symbols rather than re-emitting duplicate diagnostics.\n*/\nfunction buildSymbolTable(options) {\n\tconst { documents, sources } = options;\n\tconst diagnostics = [];\n\tconst namespaces = Object.create(null);\n\tconst namedTypes = Object.create(null);\n\tconst blocks = Object.create(null);\n\tconst models = Object.create(null);\n\tconst compositeTypes = Object.create(null);\n\tconst topLevelNames = /* @__PURE__ */ new Set();\n\tfor (const document of documents) {\n\t\tconst sourceFile = sources.sourceFileFor(document.syntax);\n\t\tconst claim = (taken, name) => {\n\t\t\tconst text = name?.name();\n\t\t\tif (text === void 0) return void 0;\n\t\t\tif (taken.has(text)) {\n\t\t\t\tconst range = nameRange(name, sources);\n\t\t\t\tif (range) diagnostics.push({\n\t\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\t\tmessage: `Duplicate declaration of \"${text}\"`,\n\t\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\t\trange\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttaken.add(text);\n\t\t\treturn text;\n\t\t};\n\t\tfor (const declaration of document.declarations()) if (declaration instanceof ModelDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) models[name] = buildModel(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof CompositeTypeDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) compositeTypes[name] = buildCompositeType(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof GenericBlockDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) blocks[name] = buildBlock(name, declaration, sources);\n\t\t} else if (declaration instanceof NamespaceDeclarationAst) {\n\t\t\tconst declaredName = declaration.name()?.name();\n\t\t\tif (declaredName === void 0) continue;\n\t\t\tlet namespace = namespaces[declaredName];\n\t\t\tif (namespace === void 0) {\n\t\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\t\tif (name === void 0) continue;\n\t\t\t\tnamespace = {\n\t\t\t\t\tkind: \"namespace\",\n\t\t\t\t\tname,\n\t\t\t\t\tdeclarations: [{\n\t\t\t\t\t\tnode: declaration,\n\t\t\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t\t\t}],\n\t\t\t\t\tmodels: Object.create(null),\n\t\t\t\t\tcompositeTypes: Object.create(null),\n\t\t\t\t\tblocks: Object.create(null)\n\t\t\t\t};\n\t\t\t\tnamespaces[name] = namespace;\n\t\t\t} else namespace.declarations.push({\n\t\t\t\tnode: declaration,\n\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t});\n\t\t\textendNamespace(namespace, declaration, diagnostics, sources);\n\t\t} else if (declaration instanceof TypesBlockAst) for (const binding of declaration.declarations()) {\n\t\t\tconst name = claim(topLevelNames, binding.name());\n\t\t\tif (name === void 0) continue;\n\t\t\tconst resolved = resolveNamedTypeBinding(binding, sources);\n\t\t\tnamedTypes[name] = {\n\t\t\t\tkind: \"namedType\",\n\t\t\t\tname,\n\t\t\t\tnode: binding,\n\t\t\t\tspan: nodePslSpan(binding.syntax, sources),\n\t\t\t\t...resolved\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tsymbolTable: { topLevel: {\n\t\t\tnamespaces,\n\t\t\tnamedTypes,\n\t\t\tblocks,\n\t\t\tmodels,\n\t\t\tcompositeTypes\n\t\t} },\n\t\tdiagnostics\n\t};\n}\nfunction buildModel(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"model\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildCompositeType(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"compositeType\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildBlock(name, node, sources) {\n\treturn {\n\t\tkind: \"block\",\n\t\tname,\n\t\tkeyword: node.keyword()?.text ?? \"\",\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t};\n}\nfunction extendNamespace(namespace, node, diagnostics, sources) {\n\tconst { models, compositeTypes, blocks } = namespace;\n\tfor (const member of node.declarations()) {\n\t\tconst memberName = member.name()?.name();\n\t\tif (memberName === void 0) continue;\n\t\tif (Object.hasOwn(models, memberName) || Object.hasOwn(compositeTypes, memberName) || Object.hasOwn(blocks, memberName)) {\n\t\t\tconst range = nameRange(member.name(), sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${memberName}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(member.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (member instanceof ModelDeclarationAst) models[memberName] = buildModel(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof CompositeTypeDeclarationAst) compositeTypes[memberName] = buildCompositeType(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sources);\n\t}\n}\nfunction buildFields(ownerName, fields, sources, diagnostics) {\n\tconst result = Object.create(null);\n\tfor (const field of fields) {\n\t\tconst nameNode = field.name();\n\t\tconst name = nameNode?.name();\n\t\tif (name === void 0) continue;\n\t\tif (Object.hasOwn(result, name)) {\n\t\t\tconst range = nameRange(nameNode, sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${name}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(field.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tresult[name] = buildField(ownerName, name, field, sources, diagnostics);\n\t}\n\treturn result;\n}\nfunction buildField(ownerName, name, node, sources, diagnostics) {\n\tconst attributes = readResolvedAttributes(node.attributes(), sources);\n\tconst span = nodePslSpan(node.syntax, sources);\n\tconst annotation = node.typeAnnotation();\n\tconst typeName = annotation?.name();\n\tif (typeName?.isOverQualified()) {\n\t\tconst path = typeName.path();\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_INVALID_QUALIFIED_TYPE\",\n\t\t\tmessage: `Field \"${ownerName}.${name}\" has an invalid qualified type \"${path.join(\".\")}\"; use at most one namespace qualifier (e.g. \"ns.TypeName\")`,\n\t\t\tfilename: sources.sourceFileFor(typeName.syntax).filename,\n\t\t\trange: nodeRange(typeName.syntax, sources)\n\t\t});\n\t\treturn {\n\t\t\tkind: \"field\",\n\t\t\tname,\n\t\t\tnode,\n\t\t\tspan,\n\t\t\ttypeName: path[path.length - 1] ?? \"\",\n\t\t\toptional: false,\n\t\t\tlist: false,\n\t\t\telementOptional: false,\n\t\t\tmalformedType: true,\n\t\t\tattributes\n\t\t};\n\t}\n\tconst typeConstructor = annotation?.isConstructor() ? readResolvedConstructorCall(annotation, sources) : void 0;\n\tconst typeNamespaceId = typeName?.namespace()?.name();\n\tconst typeContractSpaceId = typeName?.space()?.name();\n\treturn {\n\t\tkind: \"field\",\n\t\tname,\n\t\tnode,\n\t\tspan,\n\t\ttypeName: typeName?.identifier()?.name() ?? \"\",\n\t\t...typeNamespaceId !== void 0 ? { typeNamespaceId } : {},\n\t\t...typeContractSpaceId !== void 0 ? { typeContractSpaceId } : {},\n\t\toptional: annotation?.isOptional() ?? false,\n\t\tlist: annotation?.isList() ?? false,\n\t\telementOptional: annotation?.isElementOptional() ?? false,\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes\n\t};\n}\nfunction resolveNamedTypeBinding(node, sources) {\n\tconst annotation = node.typeAnnotation();\n\tconst isConstructor = annotation?.isConstructor() ?? false;\n\tconst baseType = annotation?.name()?.identifier()?.name();\n\tconst typeConstructor = readResolvedConstructorCall(annotation, sources);\n\treturn {\n\t\tisConstructor,\n\t\t...!isConstructor && baseType !== void 0 ? { baseType } : {},\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction nameRange(name, sources) {\n\tif (name === void 0) return void 0;\n\tconst sourceFile = sources.sourceFileFor(name.syntax);\n\tfor (const token of name.syntax.tokens()) if (token.kind === \"Ident\") return {\n\t\tstart: sourceFile.positionAt(token.offset),\n\t\tend: sourceFile.positionAt(token.offset + token.text.length)\n\t};\n}\nfunction nodeRange(node, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + node.green.textLength;\n\treturn {\n\t\tstart: sourceFile.positionAt(start),\n\t\tend: sourceFile.positionAt(end)\n\t};\n}\n//#endregion\nexport { typeReferenceNode as a, findBlockDescriptor as c, describeWrittenEntityReference as d, entityReference as f, assembleAttributeSpecs as h, createBinder as i, blockSpecFactoryOf as l, writtenEntityReference as m, PSL_UNRESOLVED_REFERENCE as n, isNamespaceLike as o, matchesSelector as p, contributedTypeOf as r, memberEntries as s, buildSymbolTable as t, describeResolution as u };\n\n//# sourceMappingURL=symbol-table-DDQTCCCB.mjs.map","import { a as typeReferenceNode, c as findBlockDescriptor, d as describeWrittenEntityReference, f as entityReference, h as assembleAttributeSpecs, i as createBinder, l as blockSpecFactoryOf, m as writtenEntityReference, n as PSL_UNRESOLVED_REFERENCE, o as isNamespaceLike, p as matchesSelector, r as contributedTypeOf, s as memberEntries, t as buildSymbolTable, u as describeResolution } from \"./symbol-table-DDQTCCCB.mjs\";\nimport { n as isPslIdentifier } from \"./tokenizer-BMz7z2KR.mjs\";\nimport { C as TaggedLiteralExprAst, D as IdentifierAst, S as StringLiteralExprAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, g as BooleanLiteralExprAst, m as ArrayLiteralAst, v as NumberLiteralExprAst } from \"./declarations-DDT0hm5r.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, l as mapPslDiagnostics, n as nodePslSpan, o as createPslDiagnosticCollector, r as readResolvedAttribute, s as diagnosticFromSpan, t as keywordPslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { and, notOk, ok, okVoid, or } from \"@internal/utils/result\";\n//#region src/attribute-helpers.ts\nfunction getPositionalArgument(attribute, index = 0) {\n\treturn attribute.args.filter((arg) => arg.kind === \"positional\")[index]?.value;\n}\nfunction parseQuotedStringLiteral(value) {\n\tconst match = value.trim().match(/^(['\"])(.*)\\1$/);\n\tif (!match) return void 0;\n\treturn match[2] ?? \"\";\n}\n//#endregion\n//#region src/attribute-spec/block-attribute.ts\nfunction blockAttribute(name, config) {\n\treturn {\n\t\tlevel: \"block\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: config.named ?? {},\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/diagnostic.ts\nconst ATTRIBUTE_DIAGNOSTIC_CODE = \"PSL_INVALID_ATTRIBUTE_SYNTAX\";\nfunction leafDiagnostic(ctx, node, message, code = ATTRIBUTE_DIAGNOSTIC_CODE) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(nodePslSpan(node.syntax, ctx.sources))\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/bool.ts\nfunction bool() {\n\treturn {\n\t\tkind: \"bool\",\n\t\tlabel: \"boolean\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = BooleanLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a boolean literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/entity-ref.ts\nfunction entityRef(expected) {\n\tconst label = `${expected.kind === \"block\" ? expected.keyword : expected.kind} reference`;\n\treturn {\n\t\tkind: \"entityRef\",\n\t\tlabel,\n\t\texpected,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst written = writtenEntityReference(arg.syntax);\n\t\t\tif (written === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t\tconst name = describeWrittenEntityReference(written);\n\t\t\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\t\t\tif (resolution === void 0 || resolution.kind === \"unresolved\") return notOk([]);\n\t\t\tconst reference = entityReference(resolution);\n\t\t\tif (reference === void 0 || !matchesSelector(reference, expected)) return notOk([leafDiagnostic(ctx, arg, `Expected ${label} \"${name}\", found ${describeResolution(resolution)}`)]);\n\t\t\treturn ok(reference);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/field-ref.ts\nfunction parseFieldName(arg, ctx) {\n\tconst identifier = IdentifierAst.cast(arg.syntax);\n\tif (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst name = identifier.name();\n\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\tif (resolution === void 0) return notOk([]);\n\tif (resolution.kind === \"field\") return ok(resolution.symbol.name);\n\tif (resolution.kind === \"crossSpace\") return ok(name);\n\treturn notOk([]);\n}\nfunction fieldRef() {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\nfunction referencedFieldRef() {\n\treturn {\n\t\tkind: \"referencedFieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\n//#endregion\n//#region src/attribute-spec/interpret.ts\nfunction interpretArgs(args, spec, ctx, span, sourceNode) {\n\tlet outcome = okVoid();\n\tconst output = {};\n\tconst seen = /* @__PURE__ */ new Set();\n\tlet positionalSlot = 0;\n\tlet reportedExcess = false;\n\tfor (const arg of args) {\n\t\tconst name = arg.name()?.name();\n\t\tlet key;\n\t\tlet param;\n\t\tif (name === void 0) {\n\t\t\tconst posParam = spec.positional[positionalSlot];\n\t\t\tif (posParam === void 0) {\n\t\t\t\tif (!reportedExcess) {\n\t\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received too many positional arguments`, ctx, span, sourceNode)]));\n\t\t\t\t\treportedExcess = true;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpositionalSlot += 1;\n\t\t\tkey = posParam.key;\n\t\t\tparam = posParam.type;\n\t\t} else {\n\t\t\tconst namedParam = Object.hasOwn(spec.named, name) ? spec.named[name] : void 0;\n\t\t\tif (namedParam === void 0) {\n\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received unknown argument \"${name}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tkey = name;\n\t\t\tparam = namedParam.type;\n\t\t}\n\t\tif (seen.has(key)) {\n\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received duplicate argument \"${key}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst result = parseArgValue(arg, param, ctx);\n\t\tif (result.ok) output[key] = result.value;\n\t\toutcome = and(outcome, result);\n\t}\n\tconst finalized = /* @__PURE__ */ new Set();\n\tconst finalizeAbsentKey = (key, positionalParam, namedParam) => {\n\t\tif (finalized.has(key) || seen.has(key)) return;\n\t\tfinalized.add(key);\n\t\tconst effective = namedParam ?? positionalParam;\n\t\tif (effective === void 0) return;\n\t\tif (isOptionalArgType(effective)) {\n\t\t\tif (effective.hasDefault) output[key] = effective.defaultValue;\n\t\t\treturn;\n\t\t}\n\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" is missing required argument \"${key}\"`, ctx, span, sourceNode)]));\n\t};\n\tfor (const param of spec.positional) {\n\t\tconst namedParam = Object.hasOwn(spec.named, param.key) ? spec.named[param.key] : void 0;\n\t\tfinalizeAbsentKey(param.key, param.type, namedParam?.type);\n\t}\n\tfor (const key of Object.keys(spec.named)) finalizeAbsentKey(key, void 0, spec.named[key]?.type);\n\tif (!outcome.ok) return notOk(outcome.failure);\n\treturn ok(output);\n}\nfunction interpretAttribute(attrNode, spec, ctx) {\n\tconst attributeSpan = nodePslSpan(attrNode.syntax, ctx.sources);\n\tconst bound = interpretArgs(attrNode.argList()?.args() ?? [], spec, ctx, attributeSpan, attrNode.syntax);\n\tif (!bound.ok) return notOk(bound.failure);\n\tconst value = blindCast(bound.value);\n\tif (spec.refine !== void 0) {\n\t\tconst refineDiagnostics = spec.refine(value, ctx, attrNode);\n\t\tif (refineDiagnostics.length > 0) return notOk(refineDiagnostics);\n\t}\n\treturn ok(value);\n}\nfunction parseArgValue(arg, argType, ctx) {\n\tconst value = arg.value();\n\tif (value === void 0) return notOk([diagnostic(\"Attribute argument is missing a value\", ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]);\n\treturn argType.parse(value, ctx);\n}\nfunction isOptionalArgType(param) {\n\treturn \"optional\" in param && param.optional === true;\n}\nfunction diagnostic(message, ctx, span, sourceNode) {\n\treturn {\n\t\tcode: ATTRIBUTE_DIAGNOSTIC_CODE,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, sourceNode).at(span)\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/func-call.ts\nfunction funcCall(name, sig) {\n\treturn {\n\t\tkind: \"funcCall\",\n\t\tlabel: `${name}()`,\n\t\tname,\n\t\tsignature: sig,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst guard = matchCallee(arg, name, ctx);\n\t\t\tif (!guard.ok) return guard;\n\t\t\tconst span = nodePslSpan(guard.value.syntax, ctx.sources);\n\t\t\tconst bound = interpretArgs(guard.value.args(), {\n\t\t\t\tname,\n\t\t\t\tpositional: sig.positional ?? [],\n\t\t\t\tnamed: sig.named ?? {}\n\t\t\t}, ctx, span, guard.value.syntax);\n\t\t\tif (!bound.ok) return notOk(bound.failure);\n\t\t\treturn ok({\n\t\t\t\tfn: name,\n\t\t\t\tspan,\n\t\t\t\targs: bound.value\n\t\t\t});\n\t\t}\n\t};\n}\nfunction matchCallee(arg, name, ctx) {\n\tconst call = FunctionCallAst.cast(arg.syntax);\n\tif (call === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tconst qname = call.name();\n\tif (qname === void 0 || qname.dot() !== void 0 || qname.colon() !== void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tconst calleeName = qname.identifier()?.token()?.text;\n\tif (calleeName === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tif (calleeName !== name) return notOk([leafDiagnostic(ctx, arg, `Expected ${name}()`)]);\n\treturn ok(call);\n}\n//#endregion\n//#region src/attribute-spec/combinators/identifier.ts\nfunction identifier(name, options) {\n\tconst label = name ?? \"identifier\";\n\treturn {\n\t\tkind: \"identifier\",\n\t\tlabel,\n\t\tname,\n\t\tdocumentation: options?.documentation ?? \"\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = IdentifierAst.cast(arg.syntax)?.name();\n\t\t\tif (value !== void 0 && (name === void 0 || value === name)) return ok(value);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/int.ts\nfunction int(opts) {\n\tconst min = opts?.min;\n\tconst max = opts?.max;\n\treturn {\n\t\tkind: \"int\",\n\t\tlabel: \"integer\",\n\t\t...min === void 0 ? {} : { min },\n\t\t...max === void 0 ? {} : { max },\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0 && Number.isInteger(value)) {\n\t\t\t\t\tif ((min === void 0 || value >= min) && (max === void 0 || value <= max)) return ok(value);\n\t\t\t\t\treturn notOk([leafDiagnostic(ctx, arg, rangeMessage(min, max))]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected an integer literal\")]);\n\t\t}\n\t};\n}\nfunction rangeMessage(min, max) {\n\tif (min !== void 0 && max !== void 0) return `Expected an integer between ${min} and ${max}`;\n\tif (min !== void 0) return `Expected an integer greater than or equal to ${min}`;\n\treturn `Expected an integer less than or equal to ${max}`;\n}\n//#endregion\n//#region src/attribute-spec/combinators/json.ts\n/**\n* Reads an opaque JSON object from a quoted JSON string — the ADR's one text-encoded surface\n* exception (e.g. an index `filter` / `weights` argument). The string is decoded by the parser,\n* then JSON-parsed; a non-object (array/scalar) or invalid JSON is a diagnostic.\n*/\nfunction json() {\n\treturn {\n\t\tkind: \"json\",\n\t\tlabel: \"JSON object\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a JSON object string\")]);\n\t\t\tconst raw = literal.value();\n\t\t\tif (raw !== void 0) try {\n\t\t\t\tconst parsed = JSON.parse(raw);\n\t\t\t\tif (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) return ok(blindCast(parsed));\n\t\t\t} catch {}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a valid JSON object\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/list.ts\nfunction list(of, opts) {\n\tconst allowEmpty = opts?.allowEmpty ?? true;\n\tconst unique = opts?.unique ?? false;\n\treturn {\n\t\tkind: \"list\",\n\t\tlabel: opts?.label ?? (of.label.includes(\" | \") ? `(${of.label})[]` : `${of.label}[]`),\n\t\tof,\n\t\tallowEmpty,\n\t\tunique,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ArrayLiteralAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected a list of ${of.label}`)]);\n\t\t\tconst parsed = [];\n\t\t\tlet outcome = okVoid();\n\t\t\tlet count = 0;\n\t\t\tfor (const element of literal.elements()) {\n\t\t\t\tcount += 1;\n\t\t\t\tconst result = of.parse(element, ctx);\n\t\t\t\tif (result.ok) parsed.push({\n\t\t\t\t\tnode: element,\n\t\t\t\t\tvalue: result.value\n\t\t\t\t});\n\t\t\t\toutcome = and(outcome, result);\n\t\t\t}\n\t\t\tif (!allowEmpty && count === 0) outcome = and(outcome, notOk([leafDiagnostic(ctx, arg, \"Expected a non-empty list\")]));\n\t\t\tif (unique) {\n\t\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const { node, value } of parsed) if (seen.has(value)) outcome = and(outcome, notOk([leafDiagnostic(ctx, node, \"Duplicate list entry\")]));\n\t\t\t\telse seen.add(value);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(parsed.map((entry) => entry.value));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/one-of.ts\nfunction oneOf(...alts) {\n\tconst label = alts.map((alt) => alt.label).join(\" | \");\n\treturn {\n\t\tkind: \"oneOf\",\n\t\tlabel,\n\t\talternatives: alts,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst [head, ...tail] = blindCast(alts);\n\t\t\tlet rejection = head.parse(arg, ctx);\n\t\t\tif (rejection.ok) return rejection;\n\t\t\tfor (const alt of tail) {\n\t\t\t\tconst result = alt.parse(arg, ctx);\n\t\t\t\tif (result.ok) return result;\n\t\t\t\trejection = or(rejection, result);\n\t\t\t}\n\t\t\tif (!rejection.ok && rejection.failure.length === 0) return notOk([]);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected one of: ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/record.ts\nfunction record(of) {\n\treturn {\n\t\tkind: \"record\",\n\t\tlabel: `{ [key]: ${of.label} }`,\n\t\tof,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ObjectLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected an object literal\")]);\n\t\t\tconst entries = [];\n\t\t\tconst keys = /* @__PURE__ */ new Set();\n\t\t\tlet outcome = okVoid();\n\t\t\tfor (const field of Array.from(literal.fields())) {\n\t\t\t\tconst key = field.keyName();\n\t\t\t\tif (key === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, \"Expected a key\")]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = field.value();\n\t\t\t\tif (value === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Expected a value for key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst parsed = of.parse(value, ctx);\n\t\t\t\tif (!parsed.ok) {\n\t\t\t\t\toutcome = and(outcome, parsed);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (keys.has(key)) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Duplicate key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tkeys.add(key);\n\t\t\t\tentries.push([key, parsed.value]);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(Object.fromEntries(entries));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/str.ts\nfunction str(value) {\n\tif (value === void 0) return {\n\t\tkind: \"str\",\n\t\tlabel: \"string\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a string literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"str\",\n\t\tlabel: JSON.stringify(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${JSON.stringify(value)}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/json-value.ts\nfunction jsonValue() {\n\tconst self = {\n\t\tkind: \"oneOf\",\n\t\tlabel: \"JSON value\",\n\t\tget alternatives() {\n\t\t\treturn composed.alternatives;\n\t\t},\n\t\tparse: (arg, ctx) => composed.parse(arg, ctx)\n\t};\n\tconst composed = oneOf(str(), finiteNumber(), bool(), jsonNull(), list(self), record(self));\n\treturn self;\n}\nfunction finiteNumber() {\n\treturn {\n\t\tkind: \"num\",\n\t\tvalue: void 0,\n\t\tlabel: \"number\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = NumberLiteralExprAst.cast(arg.syntax)?.value();\n\t\t\tif (value === void 0 || Number.isNaN(value) || !Number.isFinite(value)) return notOk([leafDiagnostic(ctx, arg, \"Expected a finite number literal\")]);\n\t\t\treturn ok(value);\n\t\t}\n\t};\n}\nfunction jsonNull() {\n\treturn {\n\t\tkind: \"null\",\n\t\tlabel: \"null\",\n\t\tparse: (arg, ctx) => {\n\t\t\tif (IdentifierAst.cast(arg.syntax)?.name() === \"null\") return ok(null);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected null\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num.ts\nfunction num(value) {\n\tif (value === void 0) return {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: String(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${value}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num-literal.ts\n/** A number literal kept as its source text, for consumers that must not round it through a JS number. */\nfunction numLiteral() {\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst text = NumberLiteralExprAst.cast(arg.syntax)?.token()?.text;\n\t\t\tif (text !== void 0) return ok({ text });\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/tagged-literal.ts\n/**\n* A `` tag`...` ``, `tag\"...\"`, or `tag'...'` argument. `tags` and `documentation` describe the\n* registered tags for tooling; parsing accepts any tag.\n*/\nfunction taggedLiteral(tags, options) {\n\treturn {\n\t\tkind: \"taggedLiteral\",\n\t\tlabel: `${tags[0] ?? \"tag\"}\\`...\\``,\n\t\ttags,\n\t\tdocumentation: options.documentation,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = TaggedLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a tagged literal\")]);\n\t\t\treturn ok({\n\t\t\t\ttag: literal.tagName(),\n\t\t\t\tcanonicalization: literal.canonicalization(),\n\t\t\t\tspan: nodePslSpan(literal.syntax, ctx.sources)\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/field-attribute.ts\nfunction fieldAttribute(name, config) {\n\treturn {\n\t\tlevel: \"field\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/model-attribute.ts\nfunction modelAttribute(name, config) {\n\treturn {\n\t\tlevel: \"model\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/optional.ts\nfunction optional(type, ...rest) {\n\tif (rest.length === 0) return {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: false\n\t};\n\treturn {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: true,\n\t\tdefaultValue: rest[0]\n\t};\n}\n//#endregion\n//#region src/block-spec/constructors.ts\nfunction structBlock(config) {\n\treturn {\n\t\tmode: \"struct\",\n\t\tparameters: config.parameters\n\t};\n}\nfunction mapBlock(config) {\n\treturn {\n\t\tmode: \"map\",\n\t\tvalue: config.value,\n\t\tallowBare: config.allowBare ?? false\n\t};\n}\n//#endregion\n//#region src/block-spec/interpret.ts\nfunction interpretExtensionBlock(input) {\n\tconst { block, descriptor, spec, symbols, sources, binder } = input;\n\tconst ctx = {\n\t\tsources,\n\t\tsymbols,\n\t\tbinder,\n\t\tselfBlock: block\n\t};\n\tconst entries = spec.mode === \"struct\" ? interpretStructBlock(block, spec, ctx) : interpretMapBlock(block, spec, ctx);\n\tconst diagnostics = [...entries.diagnostics];\n\tconst interpretedAttributes = interpretExtensionBlockAttributes({\n\t\tblock,\n\t\tdescriptor,\n\t\tsymbols,\n\t\tsources,\n\t\tbinder\n\t});\n\tdiagnostics.push(...interpretedAttributes.diagnostics);\n\tif (entries.failed || diagnostics.length > 0) return notOk(diagnostics);\n\treturn ok({\n\t\tkind: descriptor.discriminator,\n\t\tkeyword: block.keyword,\n\t\tname: block.name,\n\t\tvalues: blindCast(entries.values),\n\t\tparameterSpans: entries.parameterSpans,\n\t\tattributes: interpretedAttributes.attributes,\n\t\tspan: block.span\n\t});\n}\nfunction interpretStructBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst rule = Object.hasOwn(spec.parameters, key) ? spec.parameters[key]?.type : void 0;\n\t\tif (rule === void 0) {\n\t\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_UNKNOWN_PARAMETER\", `Unknown parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\". The block does not declare this parameter.`, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = rule.parse(value, ctx);\n\t\tif (parsed.ok) values[key] = parsed.value;\n\t\telse {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\tfor (const [key, param] of Object.entries(spec.parameters)) {\n\t\tif (seen.has(key)) continue;\n\t\tif (isOptionalArgType(param.type)) {\n\t\t\tif (param.type.hasDefault) values[key] = param.type.defaultValue;\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_MISSING_REQUIRED_PARAMETER\", `Required parameter \"${key}\" is missing from \"${block.keyword}\" block \"${block.name}\".`, ctx, block.node, block.span));\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction interpretMapBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tif (spec.allowBare) {\n\t\t\t\tvalues[key] = void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = spec.value.type.parse(value, ctx);\n\t\tif (parsed.ok) values[key] = parsed.value;\n\t\telse {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction duplicateParameterDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_EXTENSION_DUPLICATE_PARAMETER\", `Duplicate parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`, ctx, node, span);\n}\nfunction bareEntryDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", `Parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\" must be written as \"${key} = <value>\".`, ctx, node, span);\n}\nfunction interpretExtensionBlockAttributes(input) {\n\tconst { block, descriptor, symbols, sources, binder } = input;\n\tconst declared = descriptor.attributes ?? {};\n\tconst attributes = Object.create(null);\n\tconst diagnostics = [];\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tfor (const attribute of block.node.attributes()) {\n\t\tconst name = attribute.name()?.path().join(\".\") ?? \"\";\n\t\tconst span = nodePslSpan(attribute.syntax, sources);\n\t\tif (!Object.hasOwn(declared, name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_EXTENSION_UNKNOWN_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Unknown attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (seenNames.has(name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_INVALID_EXTENSION_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Duplicate attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseenNames.add(name);\n\t\tconst spec = blindCast(declared[name])({ symbols });\n\t\tconst result = interpretAttribute(attribute, spec, {\n\t\t\tsources,\n\t\t\tsymbols,\n\t\t\tbinder,\n\t\t\tselfBlock: block\n\t\t});\n\t\tif (result.ok) {\n\t\t\tconst argSpans = Object.create(null);\n\t\t\tlet positionalSlot = 0;\n\t\t\tfor (const arg of readResolvedAttribute(attribute, sources).args) {\n\t\t\t\tconst key = arg.name ?? spec.positional[positionalSlot++]?.key;\n\t\t\t\tif (key !== void 0) argSpans[key] = arg.span;\n\t\t\t}\n\t\t\tattributes[name] = {\n\t\t\t\targs: result.value,\n\t\t\t\targSpans,\n\t\t\t\tspan\n\t\t\t};\n\t\t} else diagnostics.push(...result.failure);\n\t}\n\treturn {\n\t\tattributes,\n\t\tdiagnostics\n\t};\n}\nfunction entryDiagnostic(code, message, ctx, node, span) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(span)\n\t};\n}\nfunction interpretExtensionBlocks(input) {\n\tconst { symbolTable, sources, pslBlockDescriptors, binder } = input;\n\tconst parsedBlocks = /* @__PURE__ */ new Map();\n\tconst diagnostics = [];\n\tconst scopes = [symbolTable.topLevel, ...Object.values(symbolTable.topLevel.namespaces)];\n\tfor (const scope of scopes) for (const block of Object.values(scope.blocks)) {\n\t\tconst descriptor = findBlockDescriptor(pslBlockDescriptors, block.keyword);\n\t\tif (descriptor === void 0) continue;\n\t\tconst parsed = interpretExtensionBlock({\n\t\t\tblock,\n\t\t\tdescriptor,\n\t\t\tspec: blockSpecFactoryOf(descriptor)({ symbols: symbolTable }),\n\t\t\tsymbols: symbolTable,\n\t\t\tsources,\n\t\t\tbinder\n\t\t});\n\t\tif (parsed.ok) parsedBlocks.set(block, parsed.value);\n\t\telse diagnostics.push(...parsed.failure);\n\t}\n\treturn {\n\t\tparsedBlocks,\n\t\tdiagnostics\n\t};\n}\n//#endregion\n//#region src/name-the-psl-source-loses.ts\n/**\n* A name that is lost when a PSL file is read. The parser keeps block members, and the PSL contract sources keep other names, as keys of plain objects, where assigning this key sets the object's prototype instead of adding a key. Code that writes PSL must not write this name anywhere a PSL source reads a name, including inside `@map` and `@@map`.\n*/\nconst NAME_THE_PSL_SOURCE_LOSES = \"__proto__\";\n//#endregion\n//#region src/schema-directive.ts\nconst DIRECTIVE = /^(\\s*\\/\\/ *use +)(prisma-8|prisma-next)( *)(?!\\S)/;\nconst LEGACY_NAME = \"prisma-next\";\nfunction isPrismaNextSchema(text) {\n\treturn DIRECTIVE.test(text);\n}\n/** The document with the directive earlier releases wrote replaced by the current one. */\nfunction renameLegacyDirective(text) {\n\treturn text.replace(DIRECTIVE, (whole, lead, name, trail) => name === LEGACY_NAME ? `${lead}prisma-8${trail}` : whole);\n}\n//#endregion\nexport { NAME_THE_PSL_SOURCE_LOSES, PSL_UNRESOLVED_REFERENCE, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"psl-parser.mjs","names":["#registry","#records","#namespace","#declarations","#references","#documentScope","#scopes","#base"],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/symbol-table-CEfbWR5H.mjs","../../../../1-framework/2-authoring/psl-parser/dist/index.mjs"],"sourcesContent":["import { C as TaggedLiteralExprAst, D as IdentifierAst, S as StringLiteralExprAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, g as BooleanLiteralExprAst, i as GenericBlockDeclarationAst, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, v as NumberLiteralExprAst, x as PathExprAst } from \"./declarations-DDT0hm5r.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, n as nodePslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/attribute-spec/assemble.ts\nfunction* modelAttributeDescriptors(namespace) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringModelAttributeDescriptor(value)) {\n\t\t\tyield value;\n\t\t\tcontinue;\n\t\t}\n\t\tyield* modelAttributeDescriptors(value);\n\t}\n}\nfunction assembleAttributeSpecs(contributions) {\n\tconst entries = Object.entries(contributions.attributeSpecs.model);\n\tconst claimed = new Set(entries.map(([attribute]) => attribute));\n\tfor (const descriptor of modelAttributeDescriptors(contributions.modelAttributes)) {\n\t\tif (claimed.has(descriptor.attribute)) throw new InternalError(`Duplicate attribute spec registration for \"${descriptor.attribute}\". Each model attribute name may be registered once across family built-ins and model-attribute descriptors.`);\n\t\tclaimed.add(descriptor.attribute);\n\t\tentries.push([descriptor.attribute, descriptor.spec]);\n\t}\n\treturn Object.freeze(blindCast({\n\t\tmodel: Object.freeze(Object.fromEntries(entries)),\n\t\tfield: Object.freeze({ ...contributions.attributeSpecs.field })\n\t}));\n}\nfunction resolveDescribeUnsupportedAttribute(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnsupportedAttribute === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnsupportedAttribute);\n}\nfunction resolveDescribeUnresolvedType(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnresolvedType === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnresolvedType);\n}\n//#endregion\n//#region src/entity-reference.ts\nfunction writtenEntityReference(node) {\n\tconst name = IdentifierAst.cast(node)?.name();\n\tif (name !== void 0) return {\n\t\tnamespace: void 0,\n\t\tname\n\t};\n\tconst path = PathExprAst.cast(node)?.path();\n\tif (path === void 0 || path.length !== 2) return void 0;\n\tconst [namespace, member] = path;\n\treturn namespace === void 0 || member === void 0 ? void 0 : {\n\t\tnamespace,\n\t\tname: member\n\t};\n}\nfunction describeWrittenEntityReference(reference) {\n\treturn reference.namespace === void 0 ? reference.name : `${reference.namespace}.${reference.name}`;\n}\nconst references = /* @__PURE__ */ new WeakMap();\nfunction entityReference(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\":\n\t\tcase \"compositeType\":\n\t\tcase \"namedType\":\n\t\tcase \"block\": return interned(resolution.symbol, resolution.namespace);\n\t\tdefault: return;\n\t}\n}\nfunction interned(declaration, namespace) {\n\tconst existing = references.get(declaration);\n\tif (existing !== void 0) return existing;\n\tconst reference = {\n\t\tdeclaration,\n\t\tnamespace\n\t};\n\treferences.set(declaration, reference);\n\treturn reference;\n}\nfunction matchesSelector(reference, expected) {\n\tconst declaration = reference.declaration;\n\tif (declaration.kind !== expected.kind) return false;\n\treturn expected.kind !== \"block\" || declaration.kind === \"block\" && declaration.keyword === expected.keyword;\n}\nfunction describeResolution(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"block\": return resolution.symbol.keyword;\n\t\tcase \"contributedType\": return \"scalar type\";\n\t\tcase \"crossSpace\": return \"cross-space reference\";\n\t\tcase \"unresolved\": return \"unresolved name\";\n\t\tdefault: return resolution.kind;\n\t}\n}\n//#endregion\n//#region src/block-spec/descriptor.ts\nfunction blockSpecFactoryOf(descriptor) {\n\treturn blindCast(descriptor.spec);\n}\n//#endregion\n//#region src/contributed-type-scope.ts\nfunction isContributedTypeDescriptor(value) {\n\treturn \"kind\" in value && (value.kind === \"typeConstructor\" || value.kind === \"fieldPreset\");\n}\nfunction mergeContributedTypes(...namespaces) {\n\tconst merged = {};\n\tfor (const namespace of namespaces) for (const [name, value] of Object.entries(namespace)) {\n\t\tconst existing = Object.hasOwn(merged, name) ? merged[name] : void 0;\n\t\tmerged[name] = existing !== void 0 && !isContributedTypeDescriptor(existing) && !isContributedTypeDescriptor(value) ? mergeContributedTypes(existing, value) : value;\n\t}\n\treturn merged;\n}\nfunction contributedTypeScope(contributedTypes) {\n\tconst members = collect(contributedTypes, []);\n\treturn {\n\t\tlookup(name) {\n\t\t\treturn members.get(name);\n\t\t},\n\t\tentries() {\n\t\t\treturn members.entries();\n\t\t}\n\t};\n}\nfunction collect(namespace, prefix) {\n\tconst members = /* @__PURE__ */ new Map();\n\tfor (const [name, value] of Object.entries(namespace)) {\n\t\tconst path = [...prefix, name];\n\t\tmembers.set(name, isContributedTypeDescriptor(value) ? {\n\t\t\tkind: \"contributedType\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tdescriptor: value\n\t\t} : {\n\t\t\tkind: \"contributedNamespace\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tmembers: collect(value, path)\n\t\t});\n\t}\n\treturn members;\n}\n//#endregion\n//#region src/extension-block.ts\nfunction findBlockDescriptor(descriptors, keyword) {\n\tif (descriptors === void 0) return void 0;\n\tfor (const value of Object.values(descriptors)) {\n\t\tif (value === void 0) continue;\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tif (value.keyword === keyword) return value;\n\t\t\tcontinue;\n\t\t}\n\t\tconst nested = findBlockDescriptor(value, keyword);\n\t\tif (nested !== void 0) return nested;\n\t}\n}\n//#endregion\n//#region src/scope.ts\nfunction* recordNames(...records) {\n\tfor (const record of records) yield* Object.keys(record);\n}\nvar Scope = class {\n\tparent;\n\tconstructor(parent) {\n\t\tthis.parent = parent;\n\t}\n\t*entries() {\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const name of this.ownNames()) {\n\t\t\tif (seen.has(name)) continue;\n\t\t\tseen.add(name);\n\t\t\tconst resolution = this.lookup(name);\n\t\t\tif (resolution !== void 0) yield [name, resolution];\n\t\t}\n\t\tfor (const entry of this.parent?.entries() ?? []) if (!seen.has(entry[0])) yield entry;\n\t}\n};\nfunction contributedResolution(member) {\n\treturn member.kind === \"contributedType\" ? {\n\t\tkind: \"contributedType\",\n\t\tsymbol: member\n\t} : {\n\t\tkind: \"contributedNamespace\",\n\t\tsymbol: member\n\t};\n}\nfunction namespaceMember(namespace, name) {\n\tconst model = namespace.models[name];\n\tif (model !== void 0) return {\n\t\tkind: \"model\",\n\t\tsymbol: model,\n\t\tnamespace\n\t};\n\tconst compositeType = namespace.compositeTypes[name];\n\tif (compositeType !== void 0) return {\n\t\tkind: \"compositeType\",\n\t\tsymbol: compositeType,\n\t\tnamespace\n\t};\n\tconst block = namespace.blocks[name];\n\tif (block !== void 0) return {\n\t\tkind: \"block\",\n\t\tsymbol: block,\n\t\tnamespace\n\t};\n}\nvar ContributedScope = class extends Scope {\n\t#registry;\n\tconstructor(registry) {\n\t\tsuper(void 0);\n\t\tthis.#registry = registry;\n\t}\n\tlookup(name) {\n\t\tconst member = this.#registry.lookup(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\t*ownNames() {\n\t\tfor (const [name] of this.#registry.entries()) yield name;\n\t}\n};\nvar DocumentScope = class extends Scope {\n\t#records;\n\tconstructor(records, parent) {\n\t\tsuper(parent);\n\t\tthis.#records = records;\n\t}\n\tlookup(name) {\n\t\tconst records = this.#records;\n\t\tconst model = records.models[name];\n\t\tif (model !== void 0) return {\n\t\t\tkind: \"model\",\n\t\t\tsymbol: model\n\t\t};\n\t\tconst compositeType = records.compositeTypes[name];\n\t\tif (compositeType !== void 0) return {\n\t\t\tkind: \"compositeType\",\n\t\t\tsymbol: compositeType\n\t\t};\n\t\tconst namedType = records.namedTypes[name];\n\t\tif (namedType !== void 0) return {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol: namedType\n\t\t};\n\t\tconst block = records.blocks[name];\n\t\tif (block !== void 0) return {\n\t\t\tkind: \"block\",\n\t\t\tsymbol: block\n\t\t};\n\t\tconst namespace = records.namespaces[name];\n\t\tif (namespace !== void 0) return {\n\t\t\tkind: \"namespace\",\n\t\t\tsymbol: namespace\n\t\t};\n\t\treturn this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst records = this.#records;\n\t\treturn recordNames(records.models, records.compositeTypes, records.namedTypes, records.blocks, records.namespaces);\n\t}\n};\nvar NamespaceScope = class extends Scope {\n\t#namespace;\n\tconstructor(namespace, parent) {\n\t\tsuper(parent);\n\t\tthis.#namespace = namespace;\n\t}\n\tlookup(name) {\n\t\treturn namespaceMember(this.#namespace, name) ?? this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst namespace = this.#namespace;\n\t\treturn recordNames(namespace.models, namespace.compositeTypes, namespace.blocks);\n\t}\n};\nfunction contributedScope(registry) {\n\treturn new ContributedScope(registry);\n}\nfunction documentScope(records, parent) {\n\treturn new DocumentScope(records, parent);\n}\nfunction namedTypeBaseScope(records, parent) {\n\treturn new DocumentScope({\n\t\t...records,\n\t\tnamedTypes: {}\n\t}, parent);\n}\nfunction namespaceScope(namespace, parent) {\n\treturn new NamespaceScope(namespace, parent);\n}\nfunction isNamespaceLike(resolution) {\n\treturn resolution.kind === \"namespace\" || resolution.kind === \"contributedNamespace\";\n}\nfunction* memberEntries(qualifier) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tfor (const [name, member] of qualifier.symbol.members) yield [name, contributedResolution(member)];\n\t\treturn;\n\t}\n\tyield* new NamespaceScope(qualifier.symbol, void 0).entries();\n}\nfunction lookupMember(qualifier, name) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tconst member = qualifier.symbol.members.get(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\treturn namespaceMember(qualifier.symbol, name);\n}\n//#endregion\n//#region src/binder.ts\nconst PSL_UNRESOLVED_REFERENCE = \"PSL_UNRESOLVED_REFERENCE\";\nfunction typeReferenceNode(symbol) {\n\treturn symbol.node.typeAnnotation()?.name()?.syntax;\n}\nfunction contributedTypeOf(resolution, binder) {\n\tconst base = resolution?.kind === \"namedType\" ? typeReferenceNode(resolution.symbol) : void 0;\n\tconst target = base === void 0 ? resolution : binder.symbolForNode(base);\n\treturn target?.kind === \"contributedType\" ? target.symbol : void 0;\n}\nvar PslBinder = class {\n\t#declarations;\n\t#references;\n\t#documentScope;\n\t#scopes;\n\tconstructor(declarations, references, documentScope, scopes) {\n\t\tthis.#declarations = declarations;\n\t\tthis.#references = references;\n\t\tthis.#documentScope = documentScope;\n\t\tthis.#scopes = scopes;\n\t}\n\tdeclaredSymbol(node) {\n\t\treturn this.#declarations.get(node);\n\t}\n\tsymbolForNode(node) {\n\t\treturn this.#references.get(node);\n\t}\n\tscopeAt(node) {\n\t\treturn node.findAncestor((ancestor) => this.#scopes.get(ancestor)) ?? this.#documentScope;\n\t}\n};\nvar ScopeStack = class {\n\t#base;\n\t#scopes;\n\tconstructor(base) {\n\t\tthis.#base = base;\n\t\tthis.#scopes = [base];\n\t}\n\tcurrent() {\n\t\treturn this.#scopes[this.#scopes.length - 1] ?? this.#base;\n\t}\n\tpush(scope) {\n\t\tthis.#scopes.push(scope);\n\t}\n\tpop() {\n\t\tthis.#scopes.pop();\n\t}\n};\nfunction walkEntities(symbolTable, stack, binder, visit) {\n\tconst { topLevel } = symbolTable;\n\tfor (const entity of Object.values(topLevel.models)) visit(entity);\n\tfor (const entity of Object.values(topLevel.compositeTypes)) visit(entity);\n\tfor (const namespace of Object.values(topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tfor (const entity of Object.values(namespace.models)) visit(entity, namespace);\n\t\tfor (const entity of Object.values(namespace.compositeTypes)) visit(entity, namespace);\n\t\tstack.pop();\n\t}\n}\nfunction declarationResolution(entity, namespace) {\n\treturn entity.kind === \"model\" ? {\n\t\tkind: \"model\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t} : {\n\t\tkind: \"compositeType\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t};\n}\nfunction createBinder(input) {\n\tconst { symbolTable, sources, context } = input;\n\tconst contributions = context.authoringContributions;\n\tconst describeUnsupportedAttributeFactory = resolveDescribeUnsupportedAttribute(context.pslDiagnostics);\n\tconst describeUnresolvedTypeFactory = resolveDescribeUnresolvedType(context.pslDiagnostics);\n\treturn bind({\n\t\tsources,\n\t\tsymbolTable,\n\t\tcontributedTypes: mergeContributedTypes(contributions.field, contributions.type),\n\t\tattributeSpecs: assembleAttributeSpecs(contributions),\n\t\tpslBlockDescriptors: contributions.pslBlockDescriptors,\n\t\tcontrolMutationDefaults: {\n\t\t\tdefaultFunctionRegistry: context.controlMutationDefaults.defaultFunctionRegistry,\n\t\t\tdataTypeEntries: contributions.dataTypes\n\t\t},\n\t\t...describeUnsupportedAttributeFactory !== void 0 ? { describeUnsupportedAttribute: describeUnsupportedAttributeFactory(sources) } : {},\n\t\t...describeUnresolvedTypeFactory !== void 0 ? { describeUnresolvedType: describeUnresolvedTypeFactory(contributions) } : {}\n\t});\n}\nfunction bind(options) {\n\tconst { sources, symbolTable, contributedTypes, attributeSpecs, controlMutationDefaults, describeUnsupportedAttribute, describeUnresolvedType } = options;\n\tconst pslBlockDescriptors = options.pslBlockDescriptors ?? {};\n\tconst contributed = contributedScope(contributedTypeScope(contributedTypes));\n\tconst document = documentScope(symbolTable.topLevel, contributed);\n\tconst stack = new ScopeStack(document);\n\tconst scopes = /* @__PURE__ */ new WeakMap();\n\tconst declarations = /* @__PURE__ */ new WeakMap();\n\tconst references = /* @__PURE__ */ new WeakMap();\n\tconst diagnostics = [];\n\tconst binder = new PslBinder(declarations, references, document, scopes);\n\tconst baseScope = namedTypeBaseScope(symbolTable.topLevel, contributed);\n\tfor (const symbol of Object.values(symbolTable.topLevel.namedTypes)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol\n\t\t});\n\t\tconst name = symbol.node.typeAnnotation()?.name();\n\t\tconst outcome = resolveTypeReference(name, baseScope);\n\t\tif (name === void 0 || outcome === void 0) continue;\n\t\treferences.set(name.syntax, outcome.resolution);\n\t}\n\tfor (const symbol of Object.values(symbolTable.topLevel.blocks)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"block\",\n\t\t\tsymbol\n\t\t});\n\t}\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tconst scope = namespaceScope(namespace, document);\n\t\tfor (const declaration of namespace.declarations) {\n\t\t\tdeclarations.set(declaration.node.syntax, namespace);\n\t\t\tscopes.set(declaration.node.syntax, scope);\n\t\t}\n\t\tfor (const symbol of Object.values(namespace.blocks)) {\n\t\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\t\tkind: \"block\",\n\t\t\t\tsymbol,\n\t\t\t\tnamespace\n\t\t\t});\n\t\t}\n\t}\n\twalkEntities(symbolTable, stack, binder, (entity, namespace) => {\n\t\tdeclarations.set(entity.node.syntax, entity);\n\t\tconst declaredName = entity.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, declarationResolution(entity, namespace));\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tdeclarations.set(field.node.syntax, field);\n\t\t\tconst fieldName = field.node.name()?.syntax;\n\t\t\tif (fieldName !== void 0) references.set(fieldName, {\n\t\t\t\tkind: \"field\",\n\t\t\t\tsymbol: field\n\t\t\t});\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tif (node === void 0) continue;\n\t\t\tconst outcome = resolveTypeReference(field.node.typeAnnotation()?.name(), stack.current(), (written) => describeUnresolvedType?.({\n\t\t\t\tfield,\n\t\t\t\towner: entity,\n\t\t\t\twritten\n\t\t\t}));\n\t\t\tif (outcome === void 0) continue;\n\t\t\treferences.set(node, outcome.resolution);\n\t\t\tif (outcome.message !== void 0) diagnostics.push({\n\t\t\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\t\t\tmessage: outcome.message,\n\t\t\t\tdata: {\n\t\t\t\t\treference: \"type\",\n\t\t\t\t\tname: outcome.name,\n\t\t\t\t\tconstructorCall: field.typeConstructor !== void 0\n\t\t\t\t},\n\t\t\t\t...diagnosticSource(sources, node).at()\n\t\t\t});\n\t\t}\n\t});\n\twalkEntities(symbolTable, stack, binder, (entity) => {\n\t\tconst context = {\n\t\t\towner: entity,\n\t\t\tscope: stack.current(),\n\t\t\treferences,\n\t\t\tdiagnostics,\n\t\t\tsymbolTable,\n\t\t\tsources,\n\t\t\tdescribeUnsupportedAttribute\n\t\t};\n\t\tconst specContext = entity.kind === \"model\" ? {\n\t\t\tsymbols: symbolTable,\n\t\t\tmodel: entity,\n\t\t\tcontrolMutationDefaults\n\t\t} : void 0;\n\t\tbindAttributes(entity, entity.attributes, attributeSpecs.model, (factory) => specContext === void 0 ? void 0 : factory(specContext), {\n\t\t\t...context,\n\t\t\tfield: void 0\n\t\t});\n\t\tfor (const field of Object.values(entity.fields)) bindAttributes(field, field.attributes, attributeSpecs.field, (factory) => {\n\t\t\tif (specContext === void 0) return void 0;\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tconst typeResolution = node === void 0 ? void 0 : references.get(node);\n\t\t\treturn factory({\n\t\t\t\t...specContext,\n\t\t\t\tfield,\n\t\t\t\ttypeResolution\n\t\t\t});\n\t\t}, {\n\t\t\t...context,\n\t\t\tfield\n\t\t});\n\t});\n\tconst blockContext = {\n\t\tpslBlockDescriptors,\n\t\tsymbolTable,\n\t\tsources,\n\t\treferences,\n\t\tdiagnostics\n\t};\n\tconst bindBlocks = (blocks) => {\n\t\tconst context = {\n\t\t\t...blockContext,\n\t\t\tscope: stack.current()\n\t\t};\n\t\tfor (const block of Object.values(blocks)) bindBlock(block, context);\n\t};\n\tbindBlocks(symbolTable.topLevel.blocks);\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tbindBlocks(namespace.blocks);\n\t\tstack.pop();\n\t}\n\treturn {\n\t\tbinder,\n\t\tdiagnostics\n\t};\n}\nfunction bindBlock(block, ctx) {\n\tconst descriptor = findBlockDescriptor(ctx.pslBlockDescriptors, block.keyword);\n\tif (descriptor === void 0) return;\n\tconst spec = blockSpecFactoryOf(descriptor)({ symbols: ctx.symbolTable });\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst parameter = spec.mode === \"struct\" && Object.hasOwn(spec.parameters, key) ? spec.parameters[key] : void 0;\n\t\tconst rule = spec.mode === \"struct\" ? parameter?.type : spec.value.type;\n\t\tif (parameter !== void 0) {\n\t\t\tconst keyNode = entry.key()?.syntax;\n\t\t\tif (keyNode !== void 0) ctx.references.set(keyNode, {\n\t\t\t\tkind: \"parameter\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\tname: key,\n\t\t\t\t\tparam: parameter\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst value = entry.value();\n\t\tif (rule === void 0 || value === void 0) continue;\n\t\tbindExpression(rule, value, ctx);\n\t}\n\tconst attributeSpecs = descriptor.attributes ?? {};\n\tif (Object.keys(attributeSpecs).length === 0) return;\n\tfor (const attribute of readResolvedAttributes(block.node.attributes(), ctx.sources)) {\n\t\tconst factory = attributeSpecs[attribute.name];\n\t\tif (factory === void 0) continue;\n\t\tconst attributeSpec = blindCast(factory)({ symbols: ctx.symbolTable });\n\t\tconst attributeSymbol = {\n\t\t\tkind: \"attribute\",\n\t\t\tname: attribute.name,\n\t\t\tlevel: \"block\",\n\t\t\tspec: attributeSpec\n\t\t};\n\t\tconst nameNode = attribute.node.name()?.syntax;\n\t\tif (nameNode !== void 0) ctx.references.set(nameNode, {\n\t\t\tkind: \"attribute\",\n\t\t\tsymbol: attributeSymbol\n\t\t});\n\t\tbindArguments(attribute, attributeSpec, ctx);\n\t}\n}\nfunction bindExpression(rule, expression, ctx, modelContext) {\n\tconst trial = tryBindExpression(rule, expression, ctx, modelContext);\n\tfor (const [node, resolution] of trial.references) ctx.references.set(node, resolution);\n\tctx.diagnostics.push(...trial.diagnostics.values());\n}\nfunction tryBindExpression(rule, expression, ctx, modelContext) {\n\tconst references = /* @__PURE__ */ new Map();\n\tconst diagnostics = /* @__PURE__ */ new Map();\n\tswitch (rule.kind) {\n\t\tcase \"oneOf\":\n\t\t\tfor (const alternative of rule.alternatives) {\n\t\t\t\tconst trial = tryBindExpression(alternative, expression, ctx, modelContext);\n\t\t\t\tif (trial.matched) return trial;\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t\tfor (const [node, resolution] of trial.references) if (resolution.kind === \"unresolved\") references.set(node, resolution);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\tcase \"list\":\n\t\tcase \"record\": {\n\t\t\tconst children = rule.kind === \"list\" ? ArrayLiteralAst.cast(expression.syntax)?.elements() : recordValues(expression);\n\t\t\tif (children === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tlet matched = true;\n\t\t\tfor (const child of children) {\n\t\t\t\tconst trial = tryBindExpression(rule.of, child, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"funcCall\": {\n\t\t\tconst call = FunctionCallAst.cast(expression.syntax);\n\t\t\tconst name = call?.name();\n\t\t\tif (call === void 0 || name === void 0 || name.dot() !== void 0 || name.colon() !== void 0 || name.identifier()?.name() !== rule.name) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst functionSymbol = {\n\t\t\t\tkind: \"function\",\n\t\t\t\tname: rule.name,\n\t\t\t\tsignature: rule.signature\n\t\t\t};\n\t\t\treferences.set(name.syntax, {\n\t\t\t\tkind: \"function\",\n\t\t\t\tsymbol: functionSymbol\n\t\t\t});\n\t\t\tlet matched = true;\n\t\t\tlet positional = 0;\n\t\t\tfor (const arg of call.args()) {\n\t\t\t\tconst key = arg.name()?.name();\n\t\t\t\tconst parameter = argumentParameter(rule.signature, key, key === void 0 ? positional++ : positional);\n\t\t\t\tif (parameter === void 0) {\n\t\t\t\t\tmatched = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (key !== void 0) {\n\t\t\t\t\tconst keyNode = arg.name()?.syntax;\n\t\t\t\t\tif (keyNode !== void 0) references.set(keyNode, {\n\t\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\t\tsymbol: {\n\t\t\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\t\t\tname: key,\n\t\t\t\t\t\t\tparam: parameter\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst value = arg.value();\n\t\t\t\tif (value === void 0) {\n\t\t\t\t\tmatched = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst trial = tryBindExpression(parameter.type, value, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"identifier\": {\n\t\t\tif (rule.name === void 0) return {\n\t\t\t\tmatched: true,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst node = expression.syntax;\n\t\t\tif (IdentifierAst.cast(node)?.name() !== rule.name) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\treferences.set(node, {\n\t\t\t\tkind: \"constant\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"constant\",\n\t\t\t\t\tname: rule.name,\n\t\t\t\t\tdocumentation: rule.documentation\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tmatched: true,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"entityRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst written = writtenEntityReference(node);\n\t\t\tif (written === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveEntity(written, node, {\n\t\t\t\t...ctx,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"fieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveOwnerField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"referencedFieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveReferencedField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"str\":\n\t\tcase \"json\": return {\n\t\t\tmatched: StringLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"num\":\n\t\tcase \"int\": return {\n\t\t\tmatched: NumberLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"bool\": return {\n\t\t\tmatched: BooleanLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"null\": return {\n\t\t\tmatched: IdentifierAst.cast(expression.syntax)?.name() === \"null\",\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"taggedLiteral\": return {\n\t\t\tmatched: TaggedLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"rejecting\": return {\n\t\t\tmatched: false,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t}\n}\nfunction recordValues(expression) {\n\tconst record = ObjectLiteralExprAst.cast(expression.syntax);\n\tif (record === void 0) return void 0;\n\treturn (function* () {\n\t\tfor (const field of record.fields()) {\n\t\t\tconst value = field.value();\n\t\t\tif (value !== void 0) yield value;\n\t\t}\n\t})();\n}\nfunction bindAttributes(holder, attributes, specs, instantiate, ctx) {\n\tconst declared = holder.node.attributes();\n\tconst nodes = Array.from(declared);\n\tconst level = holder.kind === \"field\" ? \"field\" : \"model\";\n\tattributes.forEach((attribute, index) => {\n\t\tconst factory = own(specs, attribute.name);\n\t\tif (factory === void 0) {\n\t\t\tconst diagnostic = ctx.describeUnsupportedAttribute?.({\n\t\t\t\tattribute,\n\t\t\t\tlevel,\n\t\t\t\towner: ctx.owner,\n\t\t\t\tfield: level === \"field\" ? ctx.field : void 0\n\t\t\t});\n\t\t\tif (diagnostic !== void 0) ctx.diagnostics.push(diagnostic);\n\t\t\treturn;\n\t\t}\n\t\tconst spec = instantiate(factory);\n\t\tif (spec === void 0) return;\n\t\tconst attributeSymbol = {\n\t\t\tkind: \"attribute\",\n\t\t\tname: attribute.name,\n\t\t\tlevel,\n\t\t\tspec\n\t\t};\n\t\tconst nameNode = nodes[index]?.name()?.syntax;\n\t\tif (nameNode !== void 0) ctx.references.set(nameNode, {\n\t\t\tkind: \"attribute\",\n\t\t\tsymbol: attributeSymbol\n\t\t});\n\t\tbindArguments(attribute, spec, ctx, ctx);\n\t});\n}\nfunction bindArguments(attribute, spec, ctx, modelContext) {\n\tconst rawArgs = Array.from(attribute.node.argList()?.args() ?? []);\n\tlet positional = 0;\n\tattribute.args.forEach((arg, index) => {\n\t\tconst parameter = argumentParameter(spec, arg.name, arg.name === void 0 ? positional++ : positional);\n\t\tif (parameter === void 0) return;\n\t\tif (arg.name !== void 0) {\n\t\t\tconst keyNode = rawArgs[index]?.name()?.syntax;\n\t\t\tif (keyNode !== void 0) ctx.references.set(keyNode, {\n\t\t\t\tkind: \"parameter\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\tname: arg.name,\n\t\t\t\t\tparam: parameter\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (arg.expression === void 0) return;\n\t\tbindExpression(parameter.type, arg.expression, ctx, modelContext);\n\t});\n}\nfunction argumentParameter(spec, name, position) {\n\tif (name === void 0) return spec.positional?.[position];\n\treturn spec.named === void 0 ? void 0 : own(spec.named, name);\n}\nfunction resolveOwnerField(name, node, ctx) {\n\tconst field = ctx.owner.fields[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on \"${ctx.owner.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction resolveReferencedField(name, node, ctx) {\n\tconst declaring = ctx.field;\n\tif (declaring === void 0) return {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n\tif (declaring.typeContractSpaceId !== void 0) return { kind: \"crossSpace\" };\n\tconst typeNode = typeReferenceNode(declaring);\n\tconst field = targetFields(typeNode === void 0 ? void 0 : ctx.references.get(typeNode))?.[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on the type of \"${ctx.owner.name}.${declaring.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction targetFields(target) {\n\tif (target === void 0) return void 0;\n\tif (target.kind === \"model\" || target.kind === \"compositeType\") return target.symbol.fields;\n}\nfunction resolveEntity(written, node, ctx) {\n\tconst found = written.namespace === void 0 ? ctx.scope.lookup(written.name) : qualifiedMember(written.namespace, written.name, ctx.scope);\n\tif (found === void 0) {\n\t\tconst name = describeWrittenEntityReference(written);\n\t\tif (written.name !== \"\") report(`Cannot find entity \"${name}\"`, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) {\n\t\treport(found.badQualifier, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t};\n\t}\n\treturn found;\n}\nfunction report(message, node, ctx, reference) {\n\tctx.diagnostics.push({\n\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\tmessage,\n\t\tdata: { reference },\n\t\t...diagnosticSource(ctx.sources, node).at()\n\t});\n}\nfunction resolveTypeReference(reference, scope, describeUnresolved) {\n\tif (reference === void 0 || reference.isOverQualified()) return void 0;\n\tif (reference.space() !== void 0) return { resolution: { kind: \"crossSpace\" } };\n\tconst name = reference.identifier()?.name();\n\tif (name === void 0 || name === \"\") return void 0;\n\tconst namespaceId = reference.namespace()?.name();\n\tconst found = namespaceId === void 0 ? scope.lookup(name) : qualifiedMember(namespaceId, name, scope);\n\tif (found === void 0) {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\tconst message = describeUnresolved?.(written) ?? `Cannot find type \"${written}\"`;\n\t\treturn {\n\t\t\tresolution: {\n\t\t\t\tkind: \"unresolved\",\n\t\t\t\tname: written\n\t\t\t},\n\t\t\tmessage,\n\t\t\tname: written\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) return {\n\t\tresolution: {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t},\n\t\tmessage: found.badQualifier,\n\t\tname: found.qualifier\n\t};\n\tif (found.kind === \"namespace\" || found.kind === \"contributedNamespace\") {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\treturn {\n\t\t\tresolution: found,\n\t\t\tmessage: `\"${written}\" is a namespace; a type reference must name a model, composite type, enum, or named type`,\n\t\t\tname: written\n\t\t};\n\t}\n\treturn { resolution: found };\n}\nfunction qualifiedMember(namespaceId, name, scope) {\n\tconst qualifier = scope.lookup(namespaceId);\n\tif (qualifier === void 0) return void 0;\n\tif (!isNamespaceLike(qualifier)) return {\n\t\tbadQualifier: `\"${namespaceId}\" is ${describeQualifier(qualifier)}, not a namespace`,\n\t\tqualifier: namespaceId\n\t};\n\treturn lookupMember(qualifier, name);\n}\nfunction describeQualifier(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\": return \"a model\";\n\t\tcase \"compositeType\": return \"a composite type\";\n\t\tcase \"namedType\": return \"a named type\";\n\t\tcase \"block\": return `${resolution.symbol.keyword === \"enum\" ? \"an\" : \"a\"} ${resolution.symbol.keyword}`;\n\t\tdefault: return \"a scalar type\";\n\t}\n}\nfunction own(record, name) {\n\treturn Object.hasOwn(record, name) ? record[name] : void 0;\n}\n//#endregion\n//#region src/symbol-table.ts\n/**\n* Owns duplicate-declaration detection for all PSL scopes; downstream consumers\n* should consume first-wins symbols rather than re-emitting duplicate diagnostics.\n*/\nfunction buildSymbolTable(options) {\n\tconst { documents, sources } = options;\n\tconst diagnostics = [];\n\tconst namespaces = Object.create(null);\n\tconst namedTypes = Object.create(null);\n\tconst blocks = Object.create(null);\n\tconst models = Object.create(null);\n\tconst compositeTypes = Object.create(null);\n\tconst topLevelNames = /* @__PURE__ */ new Set();\n\tfor (const document of documents) {\n\t\tconst sourceFile = sources.sourceFileFor(document.syntax);\n\t\tconst claim = (taken, name) => {\n\t\t\tconst text = name?.name();\n\t\t\tif (text === void 0) return void 0;\n\t\t\tif (taken.has(text)) {\n\t\t\t\tconst range = nameRange(name, sources);\n\t\t\t\tif (range) diagnostics.push({\n\t\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\t\tmessage: `Duplicate declaration of \"${text}\"`,\n\t\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\t\trange\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttaken.add(text);\n\t\t\treturn text;\n\t\t};\n\t\tfor (const declaration of document.declarations()) if (declaration instanceof ModelDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) models[name] = buildModel(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof CompositeTypeDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) compositeTypes[name] = buildCompositeType(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof GenericBlockDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) blocks[name] = buildBlock(name, declaration, sources);\n\t\t} else if (declaration instanceof NamespaceDeclarationAst) {\n\t\t\tconst declaredName = declaration.name()?.name();\n\t\t\tif (declaredName === void 0) continue;\n\t\t\tlet namespace = namespaces[declaredName];\n\t\t\tif (namespace === void 0) {\n\t\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\t\tif (name === void 0) continue;\n\t\t\t\tnamespace = {\n\t\t\t\t\tkind: \"namespace\",\n\t\t\t\t\tname,\n\t\t\t\t\tdeclarations: [{\n\t\t\t\t\t\tnode: declaration,\n\t\t\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t\t\t}],\n\t\t\t\t\tmodels: Object.create(null),\n\t\t\t\t\tcompositeTypes: Object.create(null),\n\t\t\t\t\tblocks: Object.create(null)\n\t\t\t\t};\n\t\t\t\tnamespaces[name] = namespace;\n\t\t\t} else namespace.declarations.push({\n\t\t\t\tnode: declaration,\n\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t});\n\t\t\textendNamespace(namespace, declaration, diagnostics, sources);\n\t\t} else if (declaration instanceof TypesBlockAst) for (const binding of declaration.declarations()) {\n\t\t\tconst name = claim(topLevelNames, binding.name());\n\t\t\tif (name === void 0) continue;\n\t\t\tconst resolved = resolveNamedTypeBinding(binding, sources);\n\t\t\tnamedTypes[name] = {\n\t\t\t\tkind: \"namedType\",\n\t\t\t\tname,\n\t\t\t\tnode: binding,\n\t\t\t\tspan: nodePslSpan(binding.syntax, sources),\n\t\t\t\t...resolved\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tsymbolTable: { topLevel: {\n\t\t\tnamespaces,\n\t\t\tnamedTypes,\n\t\t\tblocks,\n\t\t\tmodels,\n\t\t\tcompositeTypes\n\t\t} },\n\t\tdiagnostics\n\t};\n}\nfunction buildModel(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"model\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildCompositeType(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"compositeType\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildBlock(name, node, sources) {\n\treturn {\n\t\tkind: \"block\",\n\t\tname,\n\t\tkeyword: node.keyword()?.text ?? \"\",\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t};\n}\nfunction extendNamespace(namespace, node, diagnostics, sources) {\n\tconst { models, compositeTypes, blocks } = namespace;\n\tfor (const member of node.declarations()) {\n\t\tconst memberName = member.name()?.name();\n\t\tif (memberName === void 0) continue;\n\t\tif (Object.hasOwn(models, memberName) || Object.hasOwn(compositeTypes, memberName) || Object.hasOwn(blocks, memberName)) {\n\t\t\tconst range = nameRange(member.name(), sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${memberName}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(member.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (member instanceof ModelDeclarationAst) models[memberName] = buildModel(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof CompositeTypeDeclarationAst) compositeTypes[memberName] = buildCompositeType(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sources);\n\t}\n}\nfunction buildFields(ownerName, fields, sources, diagnostics) {\n\tconst result = Object.create(null);\n\tfor (const field of fields) {\n\t\tconst nameNode = field.name();\n\t\tconst name = nameNode?.name();\n\t\tif (name === void 0) continue;\n\t\tif (Object.hasOwn(result, name)) {\n\t\t\tconst range = nameRange(nameNode, sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${name}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(field.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tresult[name] = buildField(ownerName, name, field, sources, diagnostics);\n\t}\n\treturn result;\n}\nfunction buildField(ownerName, name, node, sources, diagnostics) {\n\tconst attributes = readResolvedAttributes(node.attributes(), sources);\n\tconst span = nodePslSpan(node.syntax, sources);\n\tconst annotation = node.typeAnnotation();\n\tconst typeName = annotation?.name();\n\tif (typeName?.isOverQualified()) {\n\t\tconst path = typeName.path();\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_INVALID_QUALIFIED_TYPE\",\n\t\t\tmessage: `Field \"${ownerName}.${name}\" has an invalid qualified type \"${path.join(\".\")}\"; use at most one namespace qualifier (e.g. \"ns.TypeName\")`,\n\t\t\tfilename: sources.sourceFileFor(typeName.syntax).filename,\n\t\t\trange: nodeRange(typeName.syntax, sources)\n\t\t});\n\t\treturn {\n\t\t\tkind: \"field\",\n\t\t\tname,\n\t\t\tnode,\n\t\t\tspan,\n\t\t\ttypeName: path[path.length - 1] ?? \"\",\n\t\t\toptional: false,\n\t\t\tlist: false,\n\t\t\telementOptional: false,\n\t\t\tmalformedType: true,\n\t\t\tattributes\n\t\t};\n\t}\n\tconst typeConstructor = annotation?.isConstructor() ? readResolvedConstructorCall(annotation, sources) : void 0;\n\tconst typeNamespaceId = typeName?.namespace()?.name();\n\tconst typeContractSpaceId = typeName?.space()?.name();\n\treturn {\n\t\tkind: \"field\",\n\t\tname,\n\t\tnode,\n\t\tspan,\n\t\ttypeName: typeName?.identifier()?.name() ?? \"\",\n\t\t...typeNamespaceId !== void 0 ? { typeNamespaceId } : {},\n\t\t...typeContractSpaceId !== void 0 ? { typeContractSpaceId } : {},\n\t\toptional: annotation?.isOptional() ?? false,\n\t\tlist: annotation?.isList() ?? false,\n\t\telementOptional: annotation?.isElementOptional() ?? false,\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes\n\t};\n}\nfunction resolveNamedTypeBinding(node, sources) {\n\tconst annotation = node.typeAnnotation();\n\tconst isConstructor = annotation?.isConstructor() ?? false;\n\tconst baseType = annotation?.name()?.identifier()?.name();\n\tconst typeConstructor = readResolvedConstructorCall(annotation, sources);\n\treturn {\n\t\tisConstructor,\n\t\t...!isConstructor && baseType !== void 0 ? { baseType } : {},\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction nameRange(name, sources) {\n\tif (name === void 0) return void 0;\n\tconst sourceFile = sources.sourceFileFor(name.syntax);\n\tfor (const token of name.syntax.tokens()) if (token.kind === \"Ident\") return {\n\t\tstart: sourceFile.positionAt(token.offset),\n\t\tend: sourceFile.positionAt(token.offset + token.text.length)\n\t};\n}\nfunction nodeRange(node, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + node.green.textLength;\n\treturn {\n\t\tstart: sourceFile.positionAt(start),\n\t\tend: sourceFile.positionAt(end)\n\t};\n}\n//#endregion\nexport { typeReferenceNode as a, findBlockDescriptor as c, describeWrittenEntityReference as d, entityReference as f, assembleAttributeSpecs as h, createBinder as i, blockSpecFactoryOf as l, writtenEntityReference as m, PSL_UNRESOLVED_REFERENCE as n, isNamespaceLike as o, matchesSelector as p, contributedTypeOf as r, memberEntries as s, buildSymbolTable as t, describeResolution as u };\n\n//# sourceMappingURL=symbol-table-CEfbWR5H.mjs.map","import { a as typeReferenceNode, c as findBlockDescriptor, d as describeWrittenEntityReference, f as entityReference, h as assembleAttributeSpecs, i as createBinder, l as blockSpecFactoryOf, m as writtenEntityReference, n as PSL_UNRESOLVED_REFERENCE, o as isNamespaceLike, p as matchesSelector, r as contributedTypeOf, s as memberEntries, t as buildSymbolTable, u as describeResolution } from \"./symbol-table-CEfbWR5H.mjs\";\nimport { n as isPslIdentifier } from \"./tokenizer-BMz7z2KR.mjs\";\nimport { C as TaggedLiteralExprAst, D as IdentifierAst, S as StringLiteralExprAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, g as BooleanLiteralExprAst, m as ArrayLiteralAst, v as NumberLiteralExprAst } from \"./declarations-DDT0hm5r.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, l as mapPslDiagnostics, n as nodePslSpan, o as createPslDiagnosticCollector, r as readResolvedAttribute, s as diagnosticFromSpan, t as keywordPslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { and, notOk, ok, okVoid, or } from \"@internal/utils/result\";\n//#region src/attribute-helpers.ts\nfunction getPositionalArgument(attribute, index = 0) {\n\treturn attribute.args.filter((arg) => arg.kind === \"positional\")[index]?.value;\n}\nfunction parseQuotedStringLiteral(value) {\n\tconst match = value.trim().match(/^(['\"])(.*)\\1$/);\n\tif (!match) return void 0;\n\treturn match[2] ?? \"\";\n}\n//#endregion\n//#region src/attribute-spec/block-attribute.ts\nfunction blockAttribute(name, config) {\n\treturn {\n\t\tlevel: \"block\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: config.named ?? {},\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/diagnostic.ts\nconst ATTRIBUTE_DIAGNOSTIC_CODE = \"PSL_INVALID_ATTRIBUTE_SYNTAX\";\nfunction leafDiagnostic(ctx, node, message, code = ATTRIBUTE_DIAGNOSTIC_CODE) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(nodePslSpan(node.syntax, ctx.sources))\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/bool.ts\nfunction bool() {\n\treturn {\n\t\tkind: \"bool\",\n\t\tlabel: \"boolean\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = BooleanLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a boolean literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/entity-ref.ts\nfunction entityRef(expected) {\n\tconst label = `${expected.kind === \"block\" ? expected.keyword : expected.kind} reference`;\n\treturn {\n\t\tkind: \"entityRef\",\n\t\tlabel,\n\t\texpected,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst written = writtenEntityReference(arg.syntax);\n\t\t\tif (written === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t\tconst name = describeWrittenEntityReference(written);\n\t\t\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\t\t\tif (resolution === void 0 || resolution.kind === \"unresolved\") return notOk([]);\n\t\t\tconst reference = entityReference(resolution);\n\t\t\tif (reference === void 0 || !matchesSelector(reference, expected)) return notOk([leafDiagnostic(ctx, arg, `Expected ${label} \"${name}\", found ${describeResolution(resolution)}`)]);\n\t\t\treturn ok(reference);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/field-ref.ts\nfunction parseFieldName(arg, ctx) {\n\tconst identifier = IdentifierAst.cast(arg.syntax);\n\tif (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst name = identifier.name();\n\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\tif (resolution === void 0) return notOk([]);\n\tif (resolution.kind === \"field\") return ok(resolution.symbol.name);\n\tif (resolution.kind === \"crossSpace\") return ok(name);\n\treturn notOk([]);\n}\nfunction fieldRef() {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\nfunction referencedFieldRef() {\n\treturn {\n\t\tkind: \"referencedFieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\n//#endregion\n//#region src/attribute-spec/interpret.ts\nfunction interpretArgs(args, spec, ctx, span, sourceNode) {\n\tlet outcome = okVoid();\n\tconst output = {};\n\tconst seen = /* @__PURE__ */ new Set();\n\tlet positionalSlot = 0;\n\tlet reportedExcess = false;\n\tfor (const arg of args) {\n\t\tconst name = arg.name()?.name();\n\t\tlet key;\n\t\tlet param;\n\t\tif (name === void 0) {\n\t\t\tconst posParam = spec.positional[positionalSlot];\n\t\t\tif (posParam === void 0) {\n\t\t\t\tif (!reportedExcess) {\n\t\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received too many positional arguments`, ctx, span, sourceNode)]));\n\t\t\t\t\treportedExcess = true;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpositionalSlot += 1;\n\t\t\tkey = posParam.key;\n\t\t\tparam = posParam.type;\n\t\t} else {\n\t\t\tconst namedParam = Object.hasOwn(spec.named, name) ? spec.named[name] : void 0;\n\t\t\tif (namedParam === void 0) {\n\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received unknown argument \"${name}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tkey = name;\n\t\t\tparam = namedParam.type;\n\t\t}\n\t\tif (seen.has(key)) {\n\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received duplicate argument \"${key}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst result = parseArgValue(arg, param, ctx);\n\t\tif (result.ok) output[key] = result.value;\n\t\toutcome = and(outcome, result);\n\t}\n\tconst finalized = /* @__PURE__ */ new Set();\n\tconst finalizeAbsentKey = (key, positionalParam, namedParam) => {\n\t\tif (finalized.has(key) || seen.has(key)) return;\n\t\tfinalized.add(key);\n\t\tconst effective = namedParam ?? positionalParam;\n\t\tif (effective === void 0) return;\n\t\tif (isOptionalArgType(effective)) {\n\t\t\tif (effective.hasDefault) output[key] = effective.defaultValue;\n\t\t\treturn;\n\t\t}\n\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" is missing required argument \"${key}\"`, ctx, span, sourceNode)]));\n\t};\n\tfor (const param of spec.positional) {\n\t\tconst namedParam = Object.hasOwn(spec.named, param.key) ? spec.named[param.key] : void 0;\n\t\tfinalizeAbsentKey(param.key, param.type, namedParam?.type);\n\t}\n\tfor (const key of Object.keys(spec.named)) finalizeAbsentKey(key, void 0, spec.named[key]?.type);\n\tif (!outcome.ok) return notOk(outcome.failure);\n\treturn ok(output);\n}\nfunction interpretAttribute(attrNode, spec, ctx) {\n\tconst attributeSpan = nodePslSpan(attrNode.syntax, ctx.sources);\n\tconst bound = interpretArgs(attrNode.argList()?.args() ?? [], spec, ctx, attributeSpan, attrNode.syntax);\n\tif (!bound.ok) return notOk(bound.failure);\n\tconst value = blindCast(bound.value);\n\tif (spec.refine !== void 0) {\n\t\tconst refineDiagnostics = spec.refine(value, ctx, attrNode);\n\t\tif (refineDiagnostics.length > 0) return notOk(refineDiagnostics);\n\t}\n\treturn ok(value);\n}\nfunction parseArgValue(arg, argType, ctx) {\n\tconst value = arg.value();\n\tif (value === void 0) return notOk([diagnostic(\"Attribute argument is missing a value\", ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]);\n\treturn argType.parse(value, ctx);\n}\nfunction isOptionalArgType(param) {\n\treturn \"optional\" in param && param.optional === true;\n}\nfunction diagnostic(message, ctx, span, sourceNode) {\n\treturn {\n\t\tcode: ATTRIBUTE_DIAGNOSTIC_CODE,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, sourceNode).at(span)\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/func-call.ts\nfunction funcCall(name, sig) {\n\treturn {\n\t\tkind: \"funcCall\",\n\t\tlabel: `${name}()`,\n\t\tname,\n\t\tsignature: sig,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst guard = matchCallee(arg, name, ctx);\n\t\t\tif (!guard.ok) return guard;\n\t\t\tconst span = nodePslSpan(guard.value.syntax, ctx.sources);\n\t\t\tconst bound = interpretArgs(guard.value.args(), {\n\t\t\t\tname,\n\t\t\t\tpositional: sig.positional ?? [],\n\t\t\t\tnamed: sig.named ?? {}\n\t\t\t}, ctx, span, guard.value.syntax);\n\t\t\tif (!bound.ok) return notOk(bound.failure);\n\t\t\treturn ok({\n\t\t\t\tfn: name,\n\t\t\t\tspan,\n\t\t\t\targs: bound.value\n\t\t\t});\n\t\t}\n\t};\n}\nfunction matchCallee(arg, name, ctx) {\n\tconst call = FunctionCallAst.cast(arg.syntax);\n\tif (call === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tconst qname = call.name();\n\tif (qname === void 0 || qname.dot() !== void 0 || qname.colon() !== void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tconst calleeName = qname.identifier()?.token()?.text;\n\tif (calleeName === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tif (calleeName !== name) return notOk([leafDiagnostic(ctx, arg, `Expected ${name}()`)]);\n\treturn ok(call);\n}\n//#endregion\n//#region src/attribute-spec/combinators/identifier.ts\nfunction identifier(name, options) {\n\tconst label = name ?? \"identifier\";\n\treturn {\n\t\tkind: \"identifier\",\n\t\tlabel,\n\t\tname,\n\t\tdocumentation: options?.documentation ?? \"\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = IdentifierAst.cast(arg.syntax)?.name();\n\t\t\tif (value !== void 0 && (name === void 0 || value === name)) return ok(value);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/int.ts\nfunction int(opts) {\n\tconst min = opts?.min;\n\tconst max = opts?.max;\n\treturn {\n\t\tkind: \"int\",\n\t\tlabel: \"integer\",\n\t\t...min === void 0 ? {} : { min },\n\t\t...max === void 0 ? {} : { max },\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0 && Number.isInteger(value)) {\n\t\t\t\t\tif ((min === void 0 || value >= min) && (max === void 0 || value <= max)) return ok(value);\n\t\t\t\t\treturn notOk([leafDiagnostic(ctx, arg, rangeMessage(min, max))]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected an integer literal\")]);\n\t\t}\n\t};\n}\nfunction rangeMessage(min, max) {\n\tif (min !== void 0 && max !== void 0) return `Expected an integer between ${min} and ${max}`;\n\tif (min !== void 0) return `Expected an integer greater than or equal to ${min}`;\n\treturn `Expected an integer less than or equal to ${max}`;\n}\n//#endregion\n//#region src/attribute-spec/combinators/json.ts\n/**\n* Reads an opaque JSON object from a quoted JSON string — the ADR's one text-encoded surface\n* exception (e.g. an index `filter` / `weights` argument). The string is decoded by the parser,\n* then JSON-parsed; a non-object (array/scalar) or invalid JSON is a diagnostic.\n*/\nfunction json() {\n\treturn {\n\t\tkind: \"json\",\n\t\tlabel: \"JSON object\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a JSON object string\")]);\n\t\t\tconst raw = literal.value();\n\t\t\tif (raw !== void 0) try {\n\t\t\t\tconst parsed = JSON.parse(raw);\n\t\t\t\tif (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) return ok(blindCast(parsed));\n\t\t\t} catch {}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a valid JSON object\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/list.ts\nfunction list(of, opts) {\n\tconst allowEmpty = opts?.allowEmpty ?? true;\n\tconst unique = opts?.unique ?? false;\n\treturn {\n\t\tkind: \"list\",\n\t\tlabel: opts?.label ?? (of.label.includes(\" | \") ? `(${of.label})[]` : `${of.label}[]`),\n\t\tof,\n\t\tallowEmpty,\n\t\tunique,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ArrayLiteralAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected a list of ${of.label}`)]);\n\t\t\tconst parsed = [];\n\t\t\tlet outcome = okVoid();\n\t\t\tlet count = 0;\n\t\t\tfor (const element of literal.elements()) {\n\t\t\t\tcount += 1;\n\t\t\t\tconst result = of.parse(element, ctx);\n\t\t\t\tif (result.ok) parsed.push({\n\t\t\t\t\tnode: element,\n\t\t\t\t\tvalue: result.value\n\t\t\t\t});\n\t\t\t\toutcome = and(outcome, result);\n\t\t\t}\n\t\t\tif (!allowEmpty && count === 0) outcome = and(outcome, notOk([leafDiagnostic(ctx, arg, \"Expected a non-empty list\")]));\n\t\t\tif (unique) {\n\t\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const { node, value } of parsed) if (seen.has(value)) outcome = and(outcome, notOk([leafDiagnostic(ctx, node, \"Duplicate list entry\")]));\n\t\t\t\telse seen.add(value);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(parsed.map((entry) => entry.value));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/one-of.ts\nfunction oneOf(...alts) {\n\tconst label = alts.map((alt) => alt.label).join(\" | \");\n\treturn {\n\t\tkind: \"oneOf\",\n\t\tlabel,\n\t\talternatives: alts,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst [head, ...tail] = blindCast(alts);\n\t\t\tlet rejection = head.parse(arg, ctx);\n\t\t\tif (rejection.ok) return rejection;\n\t\t\tfor (const alt of tail) {\n\t\t\t\tconst result = alt.parse(arg, ctx);\n\t\t\t\tif (result.ok) return result;\n\t\t\t\trejection = or(rejection, result);\n\t\t\t}\n\t\t\tif (!rejection.ok && rejection.failure.length === 0) return notOk([]);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected one of: ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/record.ts\nfunction record(of) {\n\treturn {\n\t\tkind: \"record\",\n\t\tlabel: `{ [key]: ${of.label} }`,\n\t\tof,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ObjectLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected an object literal\")]);\n\t\t\tconst entries = [];\n\t\t\tconst keys = /* @__PURE__ */ new Set();\n\t\t\tlet outcome = okVoid();\n\t\t\tfor (const field of Array.from(literal.fields())) {\n\t\t\t\tconst key = field.keyName();\n\t\t\t\tif (key === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, \"Expected a key\")]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = field.value();\n\t\t\t\tif (value === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Expected a value for key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst parsed = of.parse(value, ctx);\n\t\t\t\tif (!parsed.ok) {\n\t\t\t\t\toutcome = and(outcome, parsed);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (keys.has(key)) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Duplicate key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tkeys.add(key);\n\t\t\t\tentries.push([key, parsed.value]);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(Object.fromEntries(entries));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/str.ts\nfunction str(value) {\n\tif (value === void 0) return {\n\t\tkind: \"str\",\n\t\tlabel: \"string\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a string literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"str\",\n\t\tlabel: JSON.stringify(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${JSON.stringify(value)}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/json-value.ts\nfunction jsonValue() {\n\tconst self = {\n\t\tkind: \"oneOf\",\n\t\tlabel: \"JSON value\",\n\t\tget alternatives() {\n\t\t\treturn composed.alternatives;\n\t\t},\n\t\tparse: (arg, ctx) => composed.parse(arg, ctx)\n\t};\n\tconst composed = oneOf(str(), finiteNumber(), bool(), jsonNull(), list(self), record(self));\n\treturn self;\n}\nfunction finiteNumber() {\n\treturn {\n\t\tkind: \"num\",\n\t\tvalue: void 0,\n\t\tlabel: \"number\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = NumberLiteralExprAst.cast(arg.syntax)?.value();\n\t\t\tif (value === void 0 || Number.isNaN(value) || !Number.isFinite(value)) return notOk([leafDiagnostic(ctx, arg, \"Expected a finite number literal\")]);\n\t\t\treturn ok(value);\n\t\t}\n\t};\n}\nfunction jsonNull() {\n\treturn {\n\t\tkind: \"null\",\n\t\tlabel: \"null\",\n\t\tparse: (arg, ctx) => {\n\t\t\tif (IdentifierAst.cast(arg.syntax)?.name() === \"null\") return ok(null);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected null\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num.ts\nfunction num(value) {\n\tif (value === void 0) return {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: String(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${value}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num-literal.ts\n/** A number literal kept as its source text, for consumers that must not round it through a JS number. */\nfunction numLiteral() {\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst text = NumberLiteralExprAst.cast(arg.syntax)?.token()?.text;\n\t\t\tif (text !== void 0) return ok({ text });\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/tagged-literal.ts\n/**\n* A `` tag`...` ``, `tag\"...\"`, or `tag'...'` argument. `tags` and `documentation` describe the\n* registered tags for tooling; parsing accepts any tag.\n*/\nfunction taggedLiteral(tags, options) {\n\treturn {\n\t\tkind: \"taggedLiteral\",\n\t\tlabel: `${tags[0] ?? \"tag\"}\\`...\\``,\n\t\ttags,\n\t\tdocumentation: options.documentation,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = TaggedLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a tagged literal\")]);\n\t\t\treturn ok({\n\t\t\t\ttag: literal.tagName(),\n\t\t\t\tcanonicalization: literal.canonicalization(),\n\t\t\t\tspan: nodePslSpan(literal.syntax, ctx.sources)\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/field-attribute.ts\nfunction fieldAttribute(name, config) {\n\treturn {\n\t\tlevel: \"field\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/model-attribute.ts\nfunction modelAttribute(name, config) {\n\treturn {\n\t\tlevel: \"model\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/optional.ts\nfunction optional(type, ...rest) {\n\tif (rest.length === 0) return {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: false\n\t};\n\treturn {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: true,\n\t\tdefaultValue: rest[0]\n\t};\n}\n//#endregion\n//#region src/block-spec/constructors.ts\nfunction structBlock(config) {\n\treturn {\n\t\tmode: \"struct\",\n\t\tparameters: config.parameters\n\t};\n}\nfunction mapBlock(config) {\n\treturn {\n\t\tmode: \"map\",\n\t\tvalue: config.value,\n\t\tallowBare: config.allowBare ?? false\n\t};\n}\n//#endregion\n//#region src/block-spec/interpret.ts\nfunction interpretExtensionBlock(input) {\n\tconst { block, descriptor, spec, symbols, sources, binder } = input;\n\tconst ctx = {\n\t\tsources,\n\t\tsymbols,\n\t\tbinder,\n\t\tselfBlock: block\n\t};\n\tconst entries = spec.mode === \"struct\" ? interpretStructBlock(block, spec, ctx) : interpretMapBlock(block, spec, ctx);\n\tconst diagnostics = [...entries.diagnostics];\n\tconst interpretedAttributes = interpretExtensionBlockAttributes({\n\t\tblock,\n\t\tdescriptor,\n\t\tsymbols,\n\t\tsources,\n\t\tbinder\n\t});\n\tdiagnostics.push(...interpretedAttributes.diagnostics);\n\tif (entries.failed || diagnostics.length > 0) return notOk(diagnostics);\n\treturn ok({\n\t\tkind: descriptor.discriminator,\n\t\tkeyword: block.keyword,\n\t\tname: block.name,\n\t\tvalues: blindCast(entries.values),\n\t\tparameterSpans: entries.parameterSpans,\n\t\tattributes: interpretedAttributes.attributes,\n\t\tspan: block.span\n\t});\n}\nfunction interpretStructBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst rule = Object.hasOwn(spec.parameters, key) ? spec.parameters[key]?.type : void 0;\n\t\tif (rule === void 0) {\n\t\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_UNKNOWN_PARAMETER\", `Unknown parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\". The block does not declare this parameter.`, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = rule.parse(value, ctx);\n\t\tif (parsed.ok) values[key] = parsed.value;\n\t\telse {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\tfor (const [key, param] of Object.entries(spec.parameters)) {\n\t\tif (seen.has(key)) continue;\n\t\tif (isOptionalArgType(param.type)) {\n\t\t\tif (param.type.hasDefault) values[key] = param.type.defaultValue;\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_MISSING_REQUIRED_PARAMETER\", `Required parameter \"${key}\" is missing from \"${block.keyword}\" block \"${block.name}\".`, ctx, block.node, block.span));\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction interpretMapBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tif (spec.allowBare) {\n\t\t\t\tvalues[key] = void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = spec.value.type.parse(value, ctx);\n\t\tif (parsed.ok) values[key] = parsed.value;\n\t\telse {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction duplicateParameterDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_EXTENSION_DUPLICATE_PARAMETER\", `Duplicate parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`, ctx, node, span);\n}\nfunction bareEntryDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", `Parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\" must be written as \"${key} = <value>\".`, ctx, node, span);\n}\nfunction interpretExtensionBlockAttributes(input) {\n\tconst { block, descriptor, symbols, sources, binder } = input;\n\tconst declared = descriptor.attributes ?? {};\n\tconst attributes = Object.create(null);\n\tconst diagnostics = [];\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tfor (const attribute of block.node.attributes()) {\n\t\tconst name = attribute.name()?.path().join(\".\") ?? \"\";\n\t\tconst span = nodePslSpan(attribute.syntax, sources);\n\t\tif (!Object.hasOwn(declared, name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_EXTENSION_UNKNOWN_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Unknown attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (seenNames.has(name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_INVALID_EXTENSION_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Duplicate attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseenNames.add(name);\n\t\tconst spec = blindCast(declared[name])({ symbols });\n\t\tconst result = interpretAttribute(attribute, spec, {\n\t\t\tsources,\n\t\t\tsymbols,\n\t\t\tbinder,\n\t\t\tselfBlock: block\n\t\t});\n\t\tif (result.ok) {\n\t\t\tconst argSpans = Object.create(null);\n\t\t\tlet positionalSlot = 0;\n\t\t\tfor (const arg of readResolvedAttribute(attribute, sources).args) {\n\t\t\t\tconst key = arg.name ?? spec.positional[positionalSlot++]?.key;\n\t\t\t\tif (key !== void 0) argSpans[key] = arg.span;\n\t\t\t}\n\t\t\tattributes[name] = {\n\t\t\t\targs: result.value,\n\t\t\t\targSpans,\n\t\t\t\tspan\n\t\t\t};\n\t\t} else diagnostics.push(...result.failure);\n\t}\n\treturn {\n\t\tattributes,\n\t\tdiagnostics\n\t};\n}\nfunction entryDiagnostic(code, message, ctx, node, span) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(span)\n\t};\n}\nfunction interpretExtensionBlocks(input) {\n\tconst { symbolTable, sources, pslBlockDescriptors, binder } = input;\n\tconst parsedBlocks = /* @__PURE__ */ new Map();\n\tconst diagnostics = [];\n\tconst scopes = [symbolTable.topLevel, ...Object.values(symbolTable.topLevel.namespaces)];\n\tfor (const scope of scopes) for (const block of Object.values(scope.blocks)) {\n\t\tconst descriptor = findBlockDescriptor(pslBlockDescriptors, block.keyword);\n\t\tif (descriptor === void 0) continue;\n\t\tconst parsed = interpretExtensionBlock({\n\t\t\tblock,\n\t\t\tdescriptor,\n\t\t\tspec: blockSpecFactoryOf(descriptor)({ symbols: symbolTable }),\n\t\t\tsymbols: symbolTable,\n\t\t\tsources,\n\t\t\tbinder\n\t\t});\n\t\tif (parsed.ok) parsedBlocks.set(block, parsed.value);\n\t\telse diagnostics.push(...parsed.failure);\n\t}\n\treturn {\n\t\tparsedBlocks,\n\t\tdiagnostics\n\t};\n}\n//#endregion\n//#region src/name-the-psl-source-loses.ts\n/**\n* A name that is lost when a PSL file is read. The parser keeps block members, and the PSL contract sources keep other names, as keys of plain objects, where assigning this key sets the object's prototype instead of adding a key. Code that writes PSL must not write this name anywhere a PSL source reads a name, including inside `@map` and `@@map`.\n*/\nconst NAME_THE_PSL_SOURCE_LOSES = \"__proto__\";\n//#endregion\n//#region src/schema-directive.ts\nconst DIRECTIVE = /^(\\s*\\/\\/ *use +)(prisma-8|prisma-next)( *)(?!\\S)/;\nconst LEGACY_NAME = \"prisma-next\";\nfunction isPrismaNextSchema(text) {\n\treturn DIRECTIVE.test(text);\n}\n/** The document with the directive earlier releases wrote replaced by the current one. */\nfunction renameLegacyDirective(text) {\n\treturn text.replace(DIRECTIVE, (whole, lead, name, trail) => name === LEGACY_NAME ? `${lead}prisma-8${trail}` : whole);\n}\n//#endregion\nexport { NAME_THE_PSL_SOURCE_LOSES, PSL_UNRESOLVED_REFERENCE, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { r as Result } from "./result-BYCOANWy.mjs";
|
|
|
5
5
|
import "./psl-ast-CcQp_u_l.mjs";
|
|
6
6
|
import { c as ContractSourceProvider, n as ContractSourceContext, o as ContractSourceDiagnostics, p as PslContractSourceProvider, r as ContractSourceDiagnostic } from "./config-types-E4OZwoHK.mjs";
|
|
7
7
|
import { L as PslDiagnostic, R as PslDiagnosticCollector, d as DiagnosticSource, f as DocumentAst, z as PslSources } from "./parse-eSQ_clQv-BIek6vrj.mjs";
|
|
8
|
-
import { Ct as
|
|
8
|
+
import { Ct as ResolvedTypeConstructorCall, Et as SymbolTable, I as FieldSymbol, bt as ResolvedAttributeArg, l as Binder, p as BlockSymbol } from "./binder-Dz5zT7tr-CCCwiQ29.mjs";
|
|
9
9
|
//#region ../../../1-framework/2-authoring/psl-parser/dist/interpret.d.mts
|
|
10
10
|
//#region src/authoring-arguments.d.ts
|
|
11
11
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/orm-framework",
|
|
3
|
-
"version": "8.0.0-rc.14-dev.
|
|
3
|
+
"version": "8.0.0-rc.14-dev.32",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -16,20 +16,20 @@
|
|
|
16
16
|
"uniku": "^0.5.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@internal/config": "8.0.0-rc.14-dev.
|
|
20
|
-
"@internal/contract": "8.0.0-rc.14-dev.
|
|
21
|
-
"@internal/contract-authoring": "8.0.0-rc.14-dev.
|
|
22
|
-
"@internal/errors": "8.0.0-rc.14-dev.
|
|
23
|
-
"@internal/framework-components": "8.0.0-rc.14-dev.
|
|
24
|
-
"@internal/ids": "8.0.0-rc.14-dev.
|
|
25
|
-
"@internal/operations": "8.0.0-rc.14-dev.
|
|
26
|
-
"@internal/psl-parser": "8.0.0-rc.14-dev.
|
|
27
|
-
"@internal/psl-printer": "8.0.0-rc.14-dev.
|
|
28
|
-
"@internal/ts-render": "8.0.0-rc.14-dev.
|
|
29
|
-
"@repo/tsconfig": "8.0.0-rc.14-dev.
|
|
30
|
-
"@internal/publish-surface": "8.0.0-rc.14-dev.
|
|
31
|
-
"@repo/tsdown": "8.0.0-rc.14-dev.
|
|
32
|
-
"@internal/utils": "8.0.0-rc.14-dev.
|
|
19
|
+
"@internal/config": "8.0.0-rc.14-dev.32",
|
|
20
|
+
"@internal/contract": "8.0.0-rc.14-dev.32",
|
|
21
|
+
"@internal/contract-authoring": "8.0.0-rc.14-dev.32",
|
|
22
|
+
"@internal/errors": "8.0.0-rc.14-dev.32",
|
|
23
|
+
"@internal/framework-components": "8.0.0-rc.14-dev.32",
|
|
24
|
+
"@internal/ids": "8.0.0-rc.14-dev.32",
|
|
25
|
+
"@internal/operations": "8.0.0-rc.14-dev.32",
|
|
26
|
+
"@internal/psl-parser": "8.0.0-rc.14-dev.32",
|
|
27
|
+
"@internal/psl-printer": "8.0.0-rc.14-dev.32",
|
|
28
|
+
"@internal/ts-render": "8.0.0-rc.14-dev.32",
|
|
29
|
+
"@repo/tsconfig": "8.0.0-rc.14-dev.32",
|
|
30
|
+
"@internal/publish-surface": "8.0.0-rc.14-dev.32",
|
|
31
|
+
"@repo/tsdown": "8.0.0-rc.14-dev.32",
|
|
32
|
+
"@internal/utils": "8.0.0-rc.14-dev.32",
|
|
33
33
|
"tsdown": "0.22.14",
|
|
34
34
|
"typescript": "5.9.3",
|
|
35
35
|
"vitest": "5.0.0-rc.2"
|