@prisma/orm-framework 8.0.0-rc.11-dev.43 → 8.0.0-rc.11-dev.45
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/psl-parser.d.mts +35 -7
- package/dist/psl-parser.d.mts.map +1 -1
- package/dist/psl-parser.mjs +99 -40
- package/dist/psl-parser.mjs.map +1 -1
- package/package.json +15 -15
package/dist/psl-parser.d.mts
CHANGED
|
@@ -14,10 +14,31 @@ import { n as UnionToIntersection, t as Simplify } from "./types-DGxlljKG.mjs";
|
|
|
14
14
|
declare function getPositionalArgument(attribute: PslAttribute, index?: number): string | undefined;
|
|
15
15
|
declare function parseQuotedStringLiteral(value: string): string | undefined;
|
|
16
16
|
//#endregion
|
|
17
|
+
//#region src/entity-reference.d.ts
|
|
18
|
+
type EntitySelector = {
|
|
19
|
+
readonly kind: 'model';
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: 'compositeType';
|
|
22
|
+
} | {
|
|
23
|
+
readonly kind: 'namedType';
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: 'block';
|
|
26
|
+
readonly keyword: string;
|
|
27
|
+
};
|
|
28
|
+
type EntityDeclaration = ModelSymbol | CompositeTypeSymbol | NamedTypeSymbol | BlockSymbol;
|
|
29
|
+
type DeclarationFor<S extends EntitySelector> = Extract<EntityDeclaration, {
|
|
30
|
+
kind: S['kind'];
|
|
31
|
+
}>;
|
|
32
|
+
interface ResolvedEntityReference<D extends EntityDeclaration = EntityDeclaration> {
|
|
33
|
+
readonly declaration: D;
|
|
34
|
+
readonly namespace: NamespaceSymbol | undefined;
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
17
37
|
//#region src/attribute-spec/types.d.ts
|
|
18
38
|
type AttributeLevel = 'field' | 'model' | 'block';
|
|
19
39
|
interface AttributeCtx {
|
|
20
40
|
readonly sources: PslSources;
|
|
41
|
+
readonly symbols: SymbolTable;
|
|
21
42
|
}
|
|
22
43
|
interface ModelAttributeCtx extends AttributeCtx {
|
|
23
44
|
readonly selfModel: ModelSymbol;
|
|
@@ -36,8 +57,9 @@ interface ArgTypeOutput<T, Ctx extends AttributeCtx> {
|
|
|
36
57
|
interface BoolArgType<Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<boolean, Ctx> {
|
|
37
58
|
readonly kind: 'bool';
|
|
38
59
|
}
|
|
39
|
-
interface EntityRefArgType<Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<
|
|
60
|
+
interface EntityRefArgType<D extends EntityDeclaration = EntityDeclaration, Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<ResolvedEntityReference<D>, Ctx> {
|
|
40
61
|
readonly kind: 'entityRef';
|
|
62
|
+
readonly expected: EntitySelector;
|
|
41
63
|
}
|
|
42
64
|
interface FieldRefArgType<Ctx extends ModelAttributeCtx = ModelAttributeCtx> extends ArgTypeOutput<string, Ctx> {
|
|
43
65
|
readonly kind: 'fieldRef';
|
|
@@ -60,11 +82,16 @@ interface FuncCallArgType<Name extends string = string, Ctx extends AttributeCtx
|
|
|
60
82
|
readonly name: Name;
|
|
61
83
|
readonly signature: Signature;
|
|
62
84
|
}
|
|
63
|
-
interface
|
|
85
|
+
interface FixedIdentifierArgType<Name extends string = string, Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<Name, Ctx> {
|
|
64
86
|
readonly kind: 'identifier';
|
|
65
87
|
readonly name: Name;
|
|
66
88
|
readonly documentation: string;
|
|
67
89
|
}
|
|
90
|
+
interface UnrestrictedIdentifierArgType<Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<string, Ctx> {
|
|
91
|
+
readonly kind: 'identifier';
|
|
92
|
+
readonly name: undefined;
|
|
93
|
+
}
|
|
94
|
+
type IdentifierArgType<Name extends string = string, Ctx extends AttributeCtx = AttributeCtx> = FixedIdentifierArgType<Name, Ctx> | UnrestrictedIdentifierArgType<Ctx>;
|
|
68
95
|
interface IntArgType<Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<number, Ctx> {
|
|
69
96
|
readonly kind: 'int';
|
|
70
97
|
readonly min?: number;
|
|
@@ -135,7 +162,7 @@ type AnyArgType = ArgType<unknown, AttributeCtx> | ArgType<unknown, ModelAttribu
|
|
|
135
162
|
type CtxOf<P> = P extends ArgTypeOutput<unknown, infer Ctx> ? Ctx : never;
|
|
136
163
|
type RequiredContextFor<Ctx extends AttributeCtx> = [Extract<Ctx, FieldAttributeCtx>] extends [never] ? [Extract<Ctx, ModelAttributeCtx>] extends [never] ? 'attribute' : 'model' : 'field';
|
|
137
164
|
type ContextForRequirement<Req extends ArgTypeContext> = Req extends 'field' ? FieldAttributeCtx : Req extends 'model' ? ModelAttributeCtx : AttributeCtx;
|
|
138
|
-
type InspectableArgType<Ctx extends AttributeCtx> = BoolArgType<Ctx> | EntityRefArgType<Ctx> | FieldRefArgType<ModelAttributeCtx & Ctx> | FuncCallArgType<string, Ctx> | IdentifierArgType<string, Ctx> | IntArgType<Ctx> | JsonArgType<Ctx> | ListArgType<unknown, Ctx> | FixedNumArgType<number, Ctx> | UnrestrictedNumArgType<Ctx> | NumLiteralArgType<Ctx> | OneOfArgType<readonly [AnyArgType, ...AnyArgType[]], Ctx> | RecordArgType<unknown, Ctx> | ReferencedFieldRefArgType<FieldAttributeCtx & Ctx> | RejectingArgType<never, Ctx> | FixedStrArgType<string, Ctx> | UnrestrictedStrArgType<Ctx> | TaggedLiteralArgType<Ctx>;
|
|
165
|
+
type InspectableArgType<Ctx extends AttributeCtx> = BoolArgType<Ctx> | EntityRefArgType<EntityDeclaration, Ctx> | FieldRefArgType<ModelAttributeCtx & Ctx> | FuncCallArgType<string, Ctx> | IdentifierArgType<string, Ctx> | IntArgType<Ctx> | JsonArgType<Ctx> | ListArgType<unknown, Ctx> | FixedNumArgType<number, Ctx> | UnrestrictedNumArgType<Ctx> | NumLiteralArgType<Ctx> | OneOfArgType<readonly [AnyArgType, ...AnyArgType[]], Ctx> | RecordArgType<unknown, Ctx> | ReferencedFieldRefArgType<FieldAttributeCtx & Ctx> | RejectingArgType<never, Ctx> | FixedStrArgType<string, Ctx> | UnrestrictedStrArgType<Ctx> | TaggedLiteralArgType<Ctx>;
|
|
139
166
|
type OptionalArgType<T, Ctx extends AttributeCtx, Type extends object = ArgType<T, Ctx>, HasDefault extends boolean = boolean> = Type & {
|
|
140
167
|
readonly optional: true;
|
|
141
168
|
readonly hasDefault: HasDefault;
|
|
@@ -210,10 +237,10 @@ declare function blockAttribute<const Pos extends readonly PositionalParam<unkno
|
|
|
210
237
|
declare function bool(): BoolArgType<AttributeCtx>;
|
|
211
238
|
//#endregion
|
|
212
239
|
//#region src/attribute-spec/combinators/diagnostic.d.ts
|
|
213
|
-
declare function leafDiagnostic(ctx: AttributeCtx, node: AstNode, message: string, code?: PslDiagnostic['code']): PslDiagnostic;
|
|
240
|
+
declare function leafDiagnostic(ctx: Pick<AttributeCtx, 'sources'>, node: AstNode, message: string, code?: PslDiagnostic['code']): PslDiagnostic;
|
|
214
241
|
//#endregion
|
|
215
242
|
//#region src/attribute-spec/combinators/entity-ref.d.ts
|
|
216
|
-
declare function entityRef(): EntityRefArgType<AttributeCtx>;
|
|
243
|
+
declare function entityRef<const S extends EntitySelector>(expected: S): EntityRefArgType<DeclarationFor<S>, AttributeCtx>;
|
|
217
244
|
//#endregion
|
|
218
245
|
//#region src/attribute-spec/combinators/field-ref.d.ts
|
|
219
246
|
declare function fieldRef(): FieldRefArgType<ModelAttributeCtx>;
|
|
@@ -223,9 +250,10 @@ declare function referencedFieldRef(): ReferencedFieldRefArgType<FieldAttributeC
|
|
|
223
250
|
declare function funcCall<const Name extends string, const Signature extends FuncCallSig>(name: Name, sig: Signature): FuncCallArgType<Name, AttributeCtx, Signature>;
|
|
224
251
|
//#endregion
|
|
225
252
|
//#region src/attribute-spec/combinators/identifier.d.ts
|
|
253
|
+
declare function identifier(): UnrestrictedIdentifierArgType<AttributeCtx>;
|
|
226
254
|
declare function identifier<const N extends string>(name: N, options: {
|
|
227
255
|
readonly documentation: string;
|
|
228
|
-
}):
|
|
256
|
+
}): FixedIdentifierArgType<N, AttributeCtx>;
|
|
229
257
|
//#endregion
|
|
230
258
|
//#region src/attribute-spec/combinators/int.d.ts
|
|
231
259
|
declare function int(opts?: {
|
|
@@ -319,5 +347,5 @@ declare function validateExtensionBlockFromSymbol(input: {
|
|
|
319
347
|
readonly codecLookup: CodecLookup;
|
|
320
348
|
}): readonly PslDiagnostic[];
|
|
321
349
|
//#endregion
|
|
322
|
-
export { type ArgBindingSpec, type ArgType, type ArgTypeKind, type AssembledAttributeSpecs, type AttributeCtx, type AttributeLevel, type AttributeOut, type AttributeSpec, type AttributeSpecContext, type AttributeSpecNamespace, type BlockAttributeSpecFactory, type BlockSymbol, type BuildSymbolTableOptions, type CompositeTypeSymbol, type DiagnosticSource, type FieldAttributeCtx, type FieldAttributeSpecContext, type FieldAttributeSpecFactory, type FieldSymbol, type FuncCallSig, type InferAttr, type InspectableArgType, type ListOptions, type ModelAttributeCtx, type ModelAttributeSpecFactory, type ModelSymbol, type NamedOut, type NamedTypeSymbol, type NamespaceSymbol, type NumLiteral, type OptionalArgType, type OutOf, type Param, type ParsedTaggedLiteral, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDiagnosticCollector, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParamBare, type PslExtensionBlockParamList, type PslExtensionBlockParamOption, type PslExtensionBlockParamRef, type PslExtensionBlockParamScalarValue, type PslExtensionBlockParamValue, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslTypeConstructorCall, type PslTypesBlock, type RejectingArgType, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type SymbolTable, type SymbolTableResult, type TaggedLiteralArgType, type TopLevelScope, type TypedFuncCall, assembleAttributeSpecs, blockAttribute, bool, buildSymbolTable, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, mapPslDiagnostics, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, str, taggedLiteral, validateExtensionBlockFromSymbol };
|
|
350
|
+
export { type ArgBindingSpec, type ArgType, type ArgTypeKind, type AssembledAttributeSpecs, type AttributeCtx, type AttributeLevel, type AttributeOut, type AttributeSpec, type AttributeSpecContext, type AttributeSpecNamespace, type BlockAttributeSpecFactory, type BlockSymbol, type BuildSymbolTableOptions, type CompositeTypeSymbol, type DeclarationFor, 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 InspectableArgType, type ListOptions, type ModelAttributeCtx, type ModelAttributeSpecFactory, type ModelSymbol, type NamedOut, type NamedTypeSymbol, type NamespaceSymbol, type NumLiteral, type OptionalArgType, type OutOf, type Param, type ParsedTaggedLiteral, type PosOut, type PositionalParam, type PslAttribute, type PslAttributeArgument, type PslAttributeNamedArgument, type PslAttributePositionalArgument, type PslAttributeTarget, type PslCompositeType, type PslDefaultFunctionValue, type PslDefaultLiteralValue, type PslDefaultValue, type PslDiagnostic, type PslDiagnosticCode, type PslDiagnosticCollector, type PslDocumentAst, type PslExtensionBlock, type PslExtensionBlockAttribute, type PslExtensionBlockAttributeArg, type PslExtensionBlockParamBare, type PslExtensionBlockParamList, type PslExtensionBlockParamOption, type PslExtensionBlockParamRef, type PslExtensionBlockParamScalarValue, type PslExtensionBlockParamValue, type PslField, type PslFieldAttribute, type PslModel, type PslModelAttribute, type PslNamedTypeDeclaration, type PslNamespace, type PslPosition, type PslSpan, type PslTypeConstructorCall, type PslTypesBlock, type RejectingArgType, type ResolvedAttribute, type ResolvedAttributeArg, type ResolvedEntityReference, type ResolvedNamedTypeBinding, type ResolvedTypeConstructorCall, type SymbolTable, type SymbolTableResult, type TaggedLiteralArgType, type TopLevelScope, type TypedFuncCall, type UnrestrictedIdentifierArgType, assembleAttributeSpecs, blockAttribute, bool, buildSymbolTable, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, mapPslDiagnostics, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, str, taggedLiteral, validateExtensionBlockFromSymbol };
|
|
323
351
|
//# sourceMappingURL=psl-parser.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psl-parser.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.d.mts"],"mappings":";;;;;;;;;;;;;iBASiB,sBAAsB,WAAW,cAAgB;iBACjD,yBAAyB;;;KAGrC;UACK;WACC,SAAS;;UAEV,0BAA0B;WACzB,WAAW;;UAEZ,0BAA0B;WACzB,OAAO;EAChB,0BAA0B;;KAEvB;KACA;UACK,cAAc,GAAG,YAAY;WAC5B;WACA,OAAO;WACP,QAAQ,KAAK,eAAe,KAAK,QAAQ,OAAO,YAAY;;UAE7D,YAAY,YAAY,eAAe,sBAAsB,uBAAuB;WACnF;;UAED,iBAAiB,YAAY,eAAe,sBAAsB,
|
|
1
|
+
{"version":3,"file":"psl-parser.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.d.mts"],"mappings":"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"}
|
package/dist/psl-parser.mjs
CHANGED
|
@@ -129,19 +129,63 @@ function bool() {
|
|
|
129
129
|
}
|
|
130
130
|
};
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
const references = /* @__PURE__ */ new WeakMap();
|
|
133
|
+
function resolveEntityReference(expression, name, symbols) {
|
|
134
|
+
const namespaceName = expression.syntax.findAncestor(NamespaceDeclarationAst.cast)?.name()?.name();
|
|
135
|
+
const namespace = namespaceName === void 0 ? void 0 : ownValue(symbols.topLevel.namespaces, namespaceName);
|
|
136
|
+
if (namespace !== void 0) {
|
|
137
|
+
const declaration = declarationIn(namespace, name);
|
|
138
|
+
if (declaration !== void 0) return referenceFor(namespace, declaration, namespace);
|
|
139
|
+
}
|
|
140
|
+
const declaration = declarationIn(symbols.topLevel, name);
|
|
141
|
+
return declaration === void 0 ? void 0 : referenceFor(symbols.topLevel, declaration, void 0);
|
|
142
|
+
}
|
|
143
|
+
function ownValue(values, name) {
|
|
144
|
+
return Object.hasOwn(values, name) ? values[name] : void 0;
|
|
145
|
+
}
|
|
146
|
+
function declarationIn(scope, name) {
|
|
147
|
+
return ownValue(scope.models, name) ?? ownValue(scope.compositeTypes, name) ?? ownValue(scope.blocks, name) ?? ("namedTypes" in scope ? ownValue(scope.namedTypes, name) : void 0);
|
|
148
|
+
}
|
|
149
|
+
function referenceFor(scope, declaration, namespace) {
|
|
150
|
+
let byDeclaration = references.get(scope);
|
|
151
|
+
if (byDeclaration === void 0) {
|
|
152
|
+
byDeclaration = /* @__PURE__ */ new WeakMap();
|
|
153
|
+
references.set(scope, byDeclaration);
|
|
154
|
+
}
|
|
155
|
+
let reference = byDeclaration.get(declaration);
|
|
156
|
+
if (reference === void 0) {
|
|
157
|
+
reference = {
|
|
158
|
+
declaration,
|
|
159
|
+
namespace
|
|
160
|
+
};
|
|
161
|
+
byDeclaration.set(declaration, reference);
|
|
162
|
+
}
|
|
163
|
+
return reference;
|
|
164
|
+
}
|
|
165
|
+
function entityRef(expected) {
|
|
166
|
+
const label = `${expected.kind === "block" ? expected.keyword : expected.kind} reference`;
|
|
133
167
|
return {
|
|
134
168
|
kind: "entityRef",
|
|
135
|
-
label
|
|
169
|
+
label,
|
|
170
|
+
expected,
|
|
136
171
|
parse: (arg, ctx) => {
|
|
137
|
-
const
|
|
138
|
-
if (
|
|
139
|
-
const
|
|
140
|
-
if (
|
|
141
|
-
|
|
172
|
+
const name = IdentifierAst.cast(arg.syntax)?.name();
|
|
173
|
+
if (name === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);
|
|
174
|
+
const reference = resolveEntityReference(arg, name, ctx.symbols);
|
|
175
|
+
if (reference === void 0) return notOk([leafDiagnostic(ctx, arg, `Unknown ${label} "${name}"`)]);
|
|
176
|
+
if (!matchesSelector(reference, expected)) {
|
|
177
|
+
const actual = reference.declaration;
|
|
178
|
+
const kind = actual.kind === "block" ? actual.keyword : actual.kind;
|
|
179
|
+
return notOk([leafDiagnostic(ctx, arg, `Expected ${label} "${name}", found ${kind}`)]);
|
|
180
|
+
}
|
|
181
|
+
return ok(reference);
|
|
142
182
|
}
|
|
143
183
|
};
|
|
144
184
|
}
|
|
185
|
+
function matchesSelector(reference, expected) {
|
|
186
|
+
const declaration = reference.declaration;
|
|
187
|
+
return declaration.kind === expected.kind && (expected.kind !== "block" || declaration.kind === "block" && declaration.keyword === expected.keyword);
|
|
188
|
+
}
|
|
145
189
|
function parseFieldName(arg, ctx, model) {
|
|
146
190
|
const identifier = IdentifierAst.cast(arg.syntax);
|
|
147
191
|
if (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a field name")]);
|
|
@@ -290,15 +334,16 @@ function matchCallee(arg, name, ctx) {
|
|
|
290
334
|
return ok(call);
|
|
291
335
|
}
|
|
292
336
|
function identifier(name, options) {
|
|
337
|
+
const label = name ?? "identifier";
|
|
293
338
|
return {
|
|
294
339
|
kind: "identifier",
|
|
295
|
-
label
|
|
340
|
+
label,
|
|
296
341
|
name,
|
|
297
|
-
documentation: options
|
|
342
|
+
documentation: options?.documentation ?? "",
|
|
298
343
|
parse: (arg, ctx) => {
|
|
299
|
-
const
|
|
300
|
-
if (
|
|
301
|
-
return notOk([leafDiagnostic(ctx, arg, `Expected ${
|
|
344
|
+
const value = IdentifierAst.cast(arg.syntax)?.name();
|
|
345
|
+
if (value !== void 0 && (name === void 0 || value === name)) return ok(value);
|
|
346
|
+
return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);
|
|
302
347
|
}
|
|
303
348
|
};
|
|
304
349
|
}
|
|
@@ -354,7 +399,7 @@ function list(of, opts) {
|
|
|
354
399
|
const unique = opts?.unique ?? false;
|
|
355
400
|
return {
|
|
356
401
|
kind: "list",
|
|
357
|
-
label: opts?.label ?? `${of.label}[]
|
|
402
|
+
label: opts?.label ?? (of.label.includes(" | ") ? `(${of.label})[]` : `${of.label}[]`),
|
|
358
403
|
of,
|
|
359
404
|
allowEmpty,
|
|
360
405
|
unique,
|
|
@@ -623,8 +668,6 @@ function reconstructExtensionBlock(node, descriptor, sources, diagnostics) {
|
|
|
623
668
|
const keyword = node.keyword()?.text ?? "";
|
|
624
669
|
const blockName = node.name()?.name() ?? "";
|
|
625
670
|
const blockAttributes = [];
|
|
626
|
-
const attributes = {};
|
|
627
|
-
const seenAttributeNames = /* @__PURE__ */ new Set();
|
|
628
671
|
for (const attribute of node.attributes()) {
|
|
629
672
|
const name = attribute.name()?.path().join(".") ?? "";
|
|
630
673
|
const args = Array.from(attribute.argList()?.args() ?? [], (arg) => {
|
|
@@ -641,10 +684,6 @@ function reconstructExtensionBlock(node, descriptor, sources, diagnostics) {
|
|
|
641
684
|
args,
|
|
642
685
|
span
|
|
643
686
|
});
|
|
644
|
-
if (descriptor === void 0) continue;
|
|
645
|
-
const parsed = parseBlockAttribute(attribute, name, span, descriptor, seenAttributeNames, keyword, blockName, sources);
|
|
646
|
-
if (parsed.ok) attributes[name] = parsed.value;
|
|
647
|
-
else diagnostics.push(...parsed.diagnostics);
|
|
648
687
|
}
|
|
649
688
|
const parameters = {};
|
|
650
689
|
for (const entry of node.entries()) {
|
|
@@ -671,11 +710,20 @@ function reconstructExtensionBlock(node, descriptor, sources, diagnostics) {
|
|
|
671
710
|
name: blockName,
|
|
672
711
|
parameters,
|
|
673
712
|
blockAttributes,
|
|
674
|
-
attributes,
|
|
713
|
+
attributes: {},
|
|
675
714
|
span: nodePslSpan(node.syntax, sources)
|
|
676
715
|
};
|
|
677
716
|
}
|
|
678
|
-
function
|
|
717
|
+
function interpretBlockAttributes(symbol, descriptor, sources, symbols, diagnostics) {
|
|
718
|
+
const seenNames = /* @__PURE__ */ new Set();
|
|
719
|
+
for (const attribute of symbol.node.attributes()) {
|
|
720
|
+
const name = attribute.name()?.path().join(".") ?? "";
|
|
721
|
+
const parsed = parseBlockAttribute(attribute, name, nodePslSpan(attribute.syntax, sources), descriptor, seenNames, symbol.keyword, symbol.name, sources, symbols);
|
|
722
|
+
if (parsed.ok) Object.assign(symbol.block.attributes, { [name]: parsed.value });
|
|
723
|
+
else diagnostics.push(...parsed.diagnostics);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
function parseBlockAttribute(attribute, name, span, descriptor, seenNames, keyword, blockName, sources, symbols) {
|
|
679
727
|
const sourceFile = sources.sourceFileFor(attribute.syntax);
|
|
680
728
|
const range = sourceFile.pslSpanToRange(span);
|
|
681
729
|
const declared = descriptor.attributes ?? {};
|
|
@@ -698,7 +746,10 @@ function parseBlockAttribute(attribute, name, span, descriptor, seenNames, keywo
|
|
|
698
746
|
}]
|
|
699
747
|
};
|
|
700
748
|
seenNames.add(name);
|
|
701
|
-
const result = interpretAttribute(attribute, blindCast(declared[name])(), {
|
|
749
|
+
const result = interpretAttribute(attribute, blindCast(declared[name])(), {
|
|
750
|
+
sources,
|
|
751
|
+
symbols
|
|
752
|
+
});
|
|
702
753
|
if (!result.ok) return {
|
|
703
754
|
ok: false,
|
|
704
755
|
diagnostics: result.failure
|
|
@@ -773,11 +824,12 @@ function reconstructFromExpression(value, param, span, sources, diagnostics) {
|
|
|
773
824
|
function buildSymbolTable(options) {
|
|
774
825
|
const { documents, sources, pslBlockDescriptors } = options;
|
|
775
826
|
const diagnostics = [];
|
|
827
|
+
const collectedBlocks = [];
|
|
776
828
|
const namespaces = Object.create(null);
|
|
777
|
-
const namedTypes =
|
|
778
|
-
const blocks =
|
|
779
|
-
const models =
|
|
780
|
-
const compositeTypes =
|
|
829
|
+
const namedTypes = Object.create(null);
|
|
830
|
+
const blocks = Object.create(null);
|
|
831
|
+
const models = Object.create(null);
|
|
832
|
+
const compositeTypes = Object.create(null);
|
|
781
833
|
const topLevelNames = /* @__PURE__ */ new Set();
|
|
782
834
|
for (const document of documents) {
|
|
783
835
|
const sourceFile = sources.sourceFileFor(document.syntax);
|
|
@@ -805,7 +857,7 @@ function buildSymbolTable(options) {
|
|
|
805
857
|
if (name !== void 0) compositeTypes[name] = buildCompositeType(name, declaration, sources, diagnostics);
|
|
806
858
|
} else if (declaration instanceof GenericBlockDeclarationAst) {
|
|
807
859
|
const name = claim(topLevelNames, declaration.name());
|
|
808
|
-
if (name !== void 0) blocks[name] = buildBlock(name, declaration, sources, pslBlockDescriptors, diagnostics);
|
|
860
|
+
if (name !== void 0) blocks[name] = buildBlock(name, declaration, sources, pslBlockDescriptors, diagnostics, collectedBlocks);
|
|
809
861
|
} else if (declaration instanceof NamespaceDeclarationAst) {
|
|
810
862
|
const declaredName = declaration.name()?.name();
|
|
811
863
|
if (declaredName === void 0) continue;
|
|
@@ -823,7 +875,7 @@ function buildSymbolTable(options) {
|
|
|
823
875
|
};
|
|
824
876
|
namespaces[name] = namespace;
|
|
825
877
|
}
|
|
826
|
-
extendNamespace(namespace, declaration, diagnostics, sources, pslBlockDescriptors);
|
|
878
|
+
extendNamespace(namespace, declaration, diagnostics, sources, pslBlockDescriptors, collectedBlocks);
|
|
827
879
|
} else if (declaration instanceof TypesBlockAst) for (const binding of declaration.declarations()) {
|
|
828
880
|
const name = claim(topLevelNames, binding.name());
|
|
829
881
|
if (name === void 0) continue;
|
|
@@ -837,14 +889,19 @@ function buildSymbolTable(options) {
|
|
|
837
889
|
};
|
|
838
890
|
}
|
|
839
891
|
}
|
|
892
|
+
const symbolTable = { topLevel: {
|
|
893
|
+
namespaces,
|
|
894
|
+
namedTypes,
|
|
895
|
+
blocks,
|
|
896
|
+
models,
|
|
897
|
+
compositeTypes
|
|
898
|
+
} };
|
|
899
|
+
for (const block of collectedBlocks) {
|
|
900
|
+
const descriptor = findBlockDescriptor(pslBlockDescriptors, block.keyword);
|
|
901
|
+
if (descriptor !== void 0) interpretBlockAttributes(block, descriptor, sources, symbolTable, diagnostics);
|
|
902
|
+
}
|
|
840
903
|
return {
|
|
841
|
-
symbolTable
|
|
842
|
-
namespaces,
|
|
843
|
-
namedTypes,
|
|
844
|
-
blocks,
|
|
845
|
-
models,
|
|
846
|
-
compositeTypes
|
|
847
|
-
} },
|
|
904
|
+
symbolTable,
|
|
848
905
|
diagnostics
|
|
849
906
|
};
|
|
850
907
|
}
|
|
@@ -868,10 +925,10 @@ function buildCompositeType(name, node, sources, diagnostics) {
|
|
|
868
925
|
attributes: readResolvedAttributes(node.attributes(), sources)
|
|
869
926
|
};
|
|
870
927
|
}
|
|
871
|
-
function buildBlock(name, node, sources, pslBlockDescriptors, diagnostics) {
|
|
928
|
+
function buildBlock(name, node, sources, pslBlockDescriptors, diagnostics, collectedBlocks) {
|
|
872
929
|
const keyword = node.keyword()?.text ?? "";
|
|
873
930
|
const descriptor = findBlockDescriptor(pslBlockDescriptors, keyword);
|
|
874
|
-
|
|
931
|
+
const symbol = {
|
|
875
932
|
kind: "block",
|
|
876
933
|
name,
|
|
877
934
|
keyword,
|
|
@@ -879,8 +936,10 @@ function buildBlock(name, node, sources, pslBlockDescriptors, diagnostics) {
|
|
|
879
936
|
span: nodePslSpan(node.syntax, sources),
|
|
880
937
|
block: reconstructExtensionBlock(node, descriptor, sources, diagnostics)
|
|
881
938
|
};
|
|
939
|
+
collectedBlocks.push(symbol);
|
|
940
|
+
return symbol;
|
|
882
941
|
}
|
|
883
|
-
function extendNamespace(namespace, node, diagnostics, sources, pslBlockDescriptors) {
|
|
942
|
+
function extendNamespace(namespace, node, diagnostics, sources, pslBlockDescriptors, collectedBlocks) {
|
|
884
943
|
const { models, compositeTypes, blocks } = namespace;
|
|
885
944
|
namespace.declarations.push({
|
|
886
945
|
node,
|
|
@@ -901,11 +960,11 @@ function extendNamespace(namespace, node, diagnostics, sources, pslBlockDescript
|
|
|
901
960
|
}
|
|
902
961
|
if (member instanceof ModelDeclarationAst) models[memberName] = buildModel(memberName, member, sources, diagnostics);
|
|
903
962
|
else if (member instanceof CompositeTypeDeclarationAst) compositeTypes[memberName] = buildCompositeType(memberName, member, sources, diagnostics);
|
|
904
|
-
else if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sources, pslBlockDescriptors, diagnostics);
|
|
963
|
+
else if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sources, pslBlockDescriptors, diagnostics, collectedBlocks);
|
|
905
964
|
}
|
|
906
965
|
}
|
|
907
966
|
function buildFields(ownerName, fields, sources, diagnostics) {
|
|
908
|
-
const result =
|
|
967
|
+
const result = Object.create(null);
|
|
909
968
|
for (const field of fields) {
|
|
910
969
|
const nameNode = field.name();
|
|
911
970
|
const name = nameNode?.name();
|
package/dist/psl-parser.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psl-parser.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.mjs"],"sourcesContent":["import { A as printSyntax, S as TaggedLiteralExprAst, T as IdentifierAst, _ 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 StringLiteralExprAst } from \"./declarations-SwNXosDu.mjs\";\nimport { i as mapPslDiagnostics, n as diagnosticFromSpan, r as diagnosticSource, t as createPslDiagnosticCollector } from \"./diagnostic-Esyl8Qw1.mjs\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, makePslNamespace, makePslNamespaceEntries, namespacePslExtensionBlocks, validateExtensionBlock } from \"@internal/framework-components/psl-ast\";\nimport { isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { notOk, ok } 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/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}\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/resolve.ts\nfunction readResolvedAttribute(attribute, sources) {\n\treturn {\n\t\tname: attributeName(attribute.name()),\n\t\targs: readResolvedArgList(attribute.argList(), sources),\n\t\tspan: nodePslSpan(attribute.syntax, sources)\n\t};\n}\nfunction readResolvedAttributes(attributes, sources) {\n\treturn Array.from(attributes, (attribute) => readResolvedAttribute(attribute, sources));\n}\nfunction readResolvedConstructorCall(annotation, sources) {\n\tconst argList = annotation?.argList();\n\tif (annotation === void 0 || argList === void 0) return void 0;\n\treturn {\n\t\tpath: annotation.name()?.path() ?? [],\n\t\targs: readResolvedArgList(argList, sources),\n\t\tspan: nodePslSpan(annotation.syntax, sources)\n\t};\n}\nfunction readResolvedArgList(argList, sources) {\n\tif (argList === void 0) return [];\n\tconst args = [];\n\tfor (const arg of argList.args()) {\n\t\tconst name = arg.name()?.name();\n\t\tconst expression = arg.value();\n\t\targs.push({\n\t\t\tkind: name !== void 0 ? \"named\" : \"positional\",\n\t\t\t...name !== void 0 ? { name } : {},\n\t\t\tvalue: renderExpression(expression),\n\t\t\t...expression !== void 0 ? { expression } : {},\n\t\t\tspan: nodePslSpan(arg.syntax, sources)\n\t\t});\n\t}\n\treturn args;\n}\nfunction attributeName(name) {\n\treturn name?.path().join(\".\") ?? \"\";\n}\nfunction renderExpression(expression) {\n\tif (expression === void 0) return \"\";\n\treturn printSyntax(expression.syntax).trim();\n}\nfunction nodePslSpan(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.offsetToPslPosition(start),\n\t\tend: sourceFile.offsetToPslPosition(end)\n\t};\n}\n/** Unsupported-top-level-block diagnostics are anchored to the keyword token. */\nfunction keywordPslSpan(node, keyword, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + keyword.length;\n\treturn {\n\t\tstart: sourceFile.offsetToPslPosition(start),\n\t\tend: sourceFile.offsetToPslPosition(end)\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() {\n\treturn {\n\t\tkind: \"entityRef\",\n\t\tlabel: \"model name\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst identifier = IdentifierAst.cast(arg.syntax);\n\t\t\tif (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a model name\")]);\n\t\t\tconst name = identifier.name();\n\t\t\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a model name\")]);\n\t\t\treturn ok(name);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/field-ref.ts\nfunction parseFieldName(arg, ctx, model) {\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\tif (model !== void 0 && !Object.hasOwn(model.fields, name)) return notOk([leafDiagnostic(ctx, arg, `Field \"${name}\" does not exist on model \"${model.name}\"`)]);\n\treturn ok(name);\n}\nfunction fieldRef() {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: (arg, ctx) => parseFieldName(arg, ctx, ctx.selfModel)\n\t};\n}\nfunction referencedFieldRef() {\n\treturn {\n\t\tkind: \"referencedFieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: (arg, ctx) => parseFieldName(arg, ctx, ctx.resolveReferencedModel())\n\t};\n}\n//#endregion\n//#region src/attribute-spec/interpret.ts\nfunction interpretArgs(args, spec, ctx, span, sourceNode) {\n\tconst diagnostics = [];\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\tdiagnostics.push(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\tdiagnostics.push(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\tdiagnostics.push(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, diagnostics);\n\t\tif (result.ok) output[key] = result.value;\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\tdiagnostics.push(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 (diagnostics.length > 0) return notOk(diagnostics);\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, diagnostics) {\n\tconst value = arg.value();\n\tif (value === void 0) {\n\t\tconst missing = diagnostic(\"Attribute argument is missing a value\", ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax);\n\t\tdiagnostics.push(missing);\n\t\treturn notOk([missing]);\n\t}\n\tconst result = argType.parse(value, ctx);\n\tif (!result.ok) for (const failure of result.failure) diagnostics.push(failure);\n\treturn result;\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\treturn {\n\t\tkind: \"identifier\",\n\t\tlabel: name,\n\t\tname,\n\t\tdocumentation: options.documentation,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst identifier = IdentifierAst.cast(arg.syntax);\n\t\t\tif (identifier !== void 0 && identifier.name() === name) return ok(name);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${name}`)]);\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}[]`,\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 diagnostics = [];\n\t\t\tconst parsed = [];\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\telse diagnostics.push(...result.failure);\n\t\t\t}\n\t\t\tif (!allowEmpty && count === 0) diagnostics.push(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)) diagnostics.push(leafDiagnostic(ctx, node, \"Duplicate list entry\"));\n\t\t\t\telse seen.add(value);\n\t\t\t}\n\t\t\tif (diagnostics.length > 0) return notOk(diagnostics);\n\t\t\treturn ok(parsed.map((entry) => entry.value));\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/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\tfor (const alt of alts) {\n\t\t\t\tconst result = blindCast(alt.parse)(arg, ctx);\n\t\t\t\tif (result.ok) return ok(blindCast(result.value));\n\t\t\t}\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 diagnostics = [];\n\t\t\tconst entries = [];\n\t\t\tconst keys = /* @__PURE__ */ new Set();\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\tdiagnostics.push(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\tdiagnostics.push(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\tdiagnostics.push(...parsed.failure);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (keys.has(key)) {\n\t\t\t\t\tdiagnostics.push(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 (diagnostics.length > 0) return notOk(diagnostics);\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/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: 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: 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/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}\nfunction validateExtensionBlockFromSymbol(input) {\n\tconst refCtx = buildRefResolutionContext(input.symbolTable, input.block);\n\treturn validateExtensionBlock(input.block.block, input.descriptor, input.sources.sourceFileFor(input.block.node.syntax).filename, input.codecLookup, refCtx).map((diagnostic) => diagnosticFromSpan(diagnostic, diagnosticSource(input.sources, input.block.node.syntax)));\n}\nconst ZERO_SPAN = {\n\tstart: {\n\t\toffset: 0,\n\t\tline: 1,\n\t\tcolumn: 1\n\t},\n\tend: {\n\t\toffset: 0,\n\t\tline: 1,\n\t\tcolumn: 1\n\t}\n};\nfunction buildRefResolutionContext(symbolTable, block) {\n\tconst unspecifiedNamespace = makeNamespace(UNSPECIFIED_PSL_NAMESPACE_ID, Object.values(symbolTable.topLevel.models));\n\tconst allNamespaces = [unspecifiedNamespace, ...Object.values(symbolTable.topLevel.namespaces).map((namespace) => makeNamespace(namespace.name, Object.values(namespace.models)))];\n\tconst ownerNamespaceName = findOwnerNamespaceName(symbolTable, block);\n\treturn {\n\t\townerNamespace: allNamespaces.find((namespace) => namespace.name === ownerNamespaceName) ?? unspecifiedNamespace,\n\t\tallNamespaces\n\t};\n}\nfunction makeNamespace(name, models) {\n\treturn makePslNamespace({\n\t\tkind: \"namespace\",\n\t\tname,\n\t\tentries: makePslNamespaceEntries(models.map((model) => ({\n\t\t\tkind: \"model\",\n\t\t\tname: model.name,\n\t\t\tfields: [],\n\t\t\tattributes: [],\n\t\t\tspan: ZERO_SPAN\n\t\t})), [], []),\n\t\tspan: ZERO_SPAN\n\t});\n}\nfunction findOwnerNamespaceName(symbolTable, block) {\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) if (Object.values(namespace.blocks).some((candidate) => candidate === block)) return namespace.name;\n\treturn UNSPECIFIED_PSL_NAMESPACE_ID;\n}\n//#endregion\n//#region src/block-reconstruction.ts\n/**\n* Descriptor-free and unknown parameters become `value` stubs so validation can\n* report them via key-set comparison. Duplicate member names are first-wins.\n*/\nfunction reconstructExtensionBlock(node, descriptor, sources, diagnostics) {\n\tconst sourceFile = sources.sourceFileFor(node.syntax);\n\tconst keyword = node.keyword()?.text ?? \"\";\n\tconst blockName = node.name()?.name() ?? \"\";\n\tconst blockAttributes = [];\n\tconst attributes = {};\n\tconst seenAttributeNames = /* @__PURE__ */ new Set();\n\tfor (const attribute of node.attributes()) {\n\t\tconst name = attribute.name()?.path().join(\".\") ?? \"\";\n\t\tconst args = Array.from(attribute.argList()?.args() ?? [], (arg) => {\n\t\t\tconst value = arg.value();\n\t\t\treturn {\n\t\t\t\tkind: \"positional\",\n\t\t\t\tvalue: value === void 0 ? \"\" : printSyntax(value.syntax).trim(),\n\t\t\t\tspan: nodePslSpan(arg.syntax, sources)\n\t\t\t};\n\t\t});\n\t\tconst span = nodePslSpan(attribute.syntax, sources);\n\t\tblockAttributes.push({\n\t\t\tname,\n\t\t\targs,\n\t\t\tspan\n\t\t});\n\t\tif (descriptor === void 0) continue;\n\t\tconst parsed = parseBlockAttribute(attribute, name, span, descriptor, seenAttributeNames, keyword, blockName, sources);\n\t\tif (parsed.ok) attributes[name] = parsed.value;\n\t\telse diagnostics.push(...parsed.diagnostics);\n\t}\n\tconst parameters = {};\n\tfor (const entry of node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, sources);\n\t\tif (Object.hasOwn(parameters, key)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\tcode: \"PSL_EXTENSION_DUPLICATE_PARAMETER\",\n\t\t\t\tmessage: `Duplicate parameter \"${key}\" in \"${keyword}\" block \"${blockName}\"; first occurrence wins`,\n\t\t\t\trange: {\n\t\t\t\t\tstart: sourceFile.positionAt(entry.syntax.offset),\n\t\t\t\t\tend: sourceFile.positionAt(entry.syntax.offset + entry.syntax.green.textLength)\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tparameters[key] = reconstructParamValue(entry, descriptor?.parameters[key], span, sources, diagnostics);\n\t}\n\treturn {\n\t\tkind: descriptor?.discriminator ?? keyword,\n\t\tkeyword,\n\t\tname: blockName,\n\t\tparameters,\n\t\tblockAttributes,\n\t\tattributes,\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t};\n}\nfunction parseBlockAttribute(attribute, name, span, descriptor, seenNames, keyword, blockName, sources) {\n\tconst sourceFile = sources.sourceFileFor(attribute.syntax);\n\tconst range = sourceFile.pslSpanToRange(span);\n\tconst declared = descriptor.attributes ?? {};\n\tif (!Object.hasOwn(declared, name)) return {\n\t\tok: false,\n\t\tdiagnostics: [{\n\t\t\tfilename: sourceFile.filename,\n\t\t\tcode: \"PSL_EXTENSION_UNKNOWN_BLOCK_ATTRIBUTE\",\n\t\t\tmessage: `Unknown attribute \"@@${name}\" in \"${keyword}\" block \"${blockName}\"`,\n\t\t\trange\n\t\t}]\n\t};\n\tif (seenNames.has(name)) return {\n\t\tok: false,\n\t\tdiagnostics: [{\n\t\t\tfilename: sourceFile.filename,\n\t\t\tcode: \"PSL_INVALID_EXTENSION_BLOCK_ATTRIBUTE\",\n\t\t\tmessage: `Duplicate attribute \"@@${name}\" in \"${keyword}\" block \"${blockName}\"; first occurrence wins`,\n\t\t\trange\n\t\t}]\n\t};\n\tseenNames.add(name);\n\tconst result = interpretAttribute(attribute, blindCast(declared[name])(), { sources });\n\tif (!result.ok) return {\n\t\tok: false,\n\t\tdiagnostics: result.failure\n\t};\n\treturn {\n\t\tok: true,\n\t\tvalue: {\n\t\t\targs: result.value,\n\t\t\tspan\n\t\t}\n\t};\n}\nfunction reconstructParamValue(entry, param, span, sources, diagnostics) {\n\tconst value = entry.value();\n\tif (value === void 0) return {\n\t\tkind: \"bare\",\n\t\tspan\n\t};\n\treturn reconstructFromExpression(value, param, span, sources, diagnostics);\n}\nfunction reconstructFromExpression(value, param, span, sources, diagnostics) {\n\tconst raw = printSyntax(value.syntax).trim();\n\tif (param?.kind === \"list\") {\n\t\tconst sourceFile = sources.sourceFileFor(value.syntax);\n\t\tconst array = ArrayLiteralAst.cast(value.syntax);\n\t\tif (!array) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `List parameter expects an array literal, got ${raw}`,\n\t\t\t\trange: {\n\t\t\t\t\tstart: sourceFile.positionAt(value.syntax.offset),\n\t\t\t\t\tend: sourceFile.positionAt(value.syntax.offset + value.syntax.green.textLength)\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tkind: \"value\",\n\t\t\t\traw,\n\t\t\t\tspan\n\t\t\t};\n\t\t}\n\t\tconst items = [];\n\t\tfor (const element of array.elements()) items.push(reconstructFromExpression(element, param.of, nodePslSpan(element.syntax, sources), sources, diagnostics));\n\t\treturn {\n\t\t\tkind: \"list\",\n\t\t\titems,\n\t\t\tspan\n\t\t};\n\t}\n\tswitch (param?.kind) {\n\t\tcase \"ref\": return {\n\t\t\tkind: \"ref\",\n\t\t\tidentifier: raw,\n\t\t\tspan\n\t\t};\n\t\tcase \"option\": return {\n\t\t\tkind: \"option\",\n\t\t\ttoken: raw,\n\t\t\tspan\n\t\t};\n\t\tdefault: return {\n\t\t\tkind: \"value\",\n\t\t\traw,\n\t\t\tspan\n\t\t};\n\t}\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, pslBlockDescriptors } = options;\n\tconst diagnostics = [];\n\tconst namespaces = Object.create(null);\n\tconst namedTypes = {};\n\tconst blocks = {};\n\tconst models = {};\n\tconst compositeTypes = {};\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, pslBlockDescriptors, diagnostics);\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\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}\n\t\t\textendNamespace(namespace, declaration, diagnostics, sources, pslBlockDescriptors);\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, pslBlockDescriptors, diagnostics) {\n\tconst keyword = node.keyword()?.text ?? \"\";\n\tconst descriptor = findBlockDescriptor(pslBlockDescriptors, keyword);\n\treturn {\n\t\tkind: \"block\",\n\t\tname,\n\t\tkeyword,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tblock: reconstructExtensionBlock(node, descriptor, sources, diagnostics)\n\t};\n}\nfunction extendNamespace(namespace, node, diagnostics, sources, pslBlockDescriptors) {\n\tconst { models, compositeTypes, blocks } = namespace;\n\tnamespace.declarations.push({\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t});\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, pslBlockDescriptors, diagnostics);\n\t}\n}\nfunction buildFields(ownerName, fields, sources, diagnostics) {\n\tconst result = {};\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\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\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 { assembleAttributeSpecs, blockAttribute, bool, buildSymbolTable, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, mapPslDiagnostics, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, str, taggedLiteral, validateExtensionBlockFromSymbol };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"psl-parser.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.mjs"],"sourcesContent":["import { A as printSyntax, S as TaggedLiteralExprAst, T as IdentifierAst, _ 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 StringLiteralExprAst } from \"./declarations-SwNXosDu.mjs\";\nimport { i as mapPslDiagnostics, n as diagnosticFromSpan, r as diagnosticSource, t as createPslDiagnosticCollector } from \"./diagnostic-Esyl8Qw1.mjs\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, makePslNamespace, makePslNamespaceEntries, namespacePslExtensionBlocks, validateExtensionBlock } from \"@internal/framework-components/psl-ast\";\nimport { isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { notOk, ok } 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/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}\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/resolve.ts\nfunction readResolvedAttribute(attribute, sources) {\n\treturn {\n\t\tname: attributeName(attribute.name()),\n\t\targs: readResolvedArgList(attribute.argList(), sources),\n\t\tspan: nodePslSpan(attribute.syntax, sources)\n\t};\n}\nfunction readResolvedAttributes(attributes, sources) {\n\treturn Array.from(attributes, (attribute) => readResolvedAttribute(attribute, sources));\n}\nfunction readResolvedConstructorCall(annotation, sources) {\n\tconst argList = annotation?.argList();\n\tif (annotation === void 0 || argList === void 0) return void 0;\n\treturn {\n\t\tpath: annotation.name()?.path() ?? [],\n\t\targs: readResolvedArgList(argList, sources),\n\t\tspan: nodePslSpan(annotation.syntax, sources)\n\t};\n}\nfunction readResolvedArgList(argList, sources) {\n\tif (argList === void 0) return [];\n\tconst args = [];\n\tfor (const arg of argList.args()) {\n\t\tconst name = arg.name()?.name();\n\t\tconst expression = arg.value();\n\t\targs.push({\n\t\t\tkind: name !== void 0 ? \"named\" : \"positional\",\n\t\t\t...name !== void 0 ? { name } : {},\n\t\t\tvalue: renderExpression(expression),\n\t\t\t...expression !== void 0 ? { expression } : {},\n\t\t\tspan: nodePslSpan(arg.syntax, sources)\n\t\t});\n\t}\n\treturn args;\n}\nfunction attributeName(name) {\n\treturn name?.path().join(\".\") ?? \"\";\n}\nfunction renderExpression(expression) {\n\tif (expression === void 0) return \"\";\n\treturn printSyntax(expression.syntax).trim();\n}\nfunction nodePslSpan(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.offsetToPslPosition(start),\n\t\tend: sourceFile.offsetToPslPosition(end)\n\t};\n}\n/** Unsupported-top-level-block diagnostics are anchored to the keyword token. */\nfunction keywordPslSpan(node, keyword, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + keyword.length;\n\treturn {\n\t\tstart: sourceFile.offsetToPslPosition(start),\n\t\tend: sourceFile.offsetToPslPosition(end)\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/entity-reference.ts\nconst references = /* @__PURE__ */ new WeakMap();\nfunction resolveEntityReference(expression, name, symbols) {\n\tconst namespaceName = expression.syntax.findAncestor(NamespaceDeclarationAst.cast)?.name()?.name();\n\tconst namespace = namespaceName === void 0 ? void 0 : ownValue(symbols.topLevel.namespaces, namespaceName);\n\tif (namespace !== void 0) {\n\t\tconst declaration = declarationIn(namespace, name);\n\t\tif (declaration !== void 0) return referenceFor(namespace, declaration, namespace);\n\t}\n\tconst declaration = declarationIn(symbols.topLevel, name);\n\treturn declaration === void 0 ? void 0 : referenceFor(symbols.topLevel, declaration, void 0);\n}\nfunction ownValue(values, name) {\n\treturn Object.hasOwn(values, name) ? values[name] : void 0;\n}\nfunction declarationIn(scope, name) {\n\treturn ownValue(scope.models, name) ?? ownValue(scope.compositeTypes, name) ?? ownValue(scope.blocks, name) ?? (\"namedTypes\" in scope ? ownValue(scope.namedTypes, name) : void 0);\n}\nfunction referenceFor(scope, declaration, namespace) {\n\tlet byDeclaration = references.get(scope);\n\tif (byDeclaration === void 0) {\n\t\tbyDeclaration = /* @__PURE__ */ new WeakMap();\n\t\treferences.set(scope, byDeclaration);\n\t}\n\tlet reference = byDeclaration.get(declaration);\n\tif (reference === void 0) {\n\t\treference = {\n\t\t\tdeclaration,\n\t\t\tnamespace\n\t\t};\n\t\tbyDeclaration.set(declaration, reference);\n\t}\n\treturn reference;\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 name = IdentifierAst.cast(arg.syntax)?.name();\n\t\t\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t\tconst reference = resolveEntityReference(arg, name, ctx.symbols);\n\t\t\tif (reference === void 0) return notOk([leafDiagnostic(ctx, arg, `Unknown ${label} \"${name}\"`)]);\n\t\t\tif (!matchesSelector(reference, expected)) {\n\t\t\t\tconst actual = reference.declaration;\n\t\t\t\tconst kind = actual.kind === \"block\" ? actual.keyword : actual.kind;\n\t\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${label} \"${name}\", found ${kind}`)]);\n\t\t\t}\n\t\t\treturn ok(reference);\n\t\t}\n\t};\n}\nfunction matchesSelector(reference, expected) {\n\tconst declaration = reference.declaration;\n\treturn declaration.kind === expected.kind && (expected.kind !== \"block\" || declaration.kind === \"block\" && declaration.keyword === expected.keyword);\n}\n//#endregion\n//#region src/attribute-spec/combinators/field-ref.ts\nfunction parseFieldName(arg, ctx, model) {\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\tif (model !== void 0 && !Object.hasOwn(model.fields, name)) return notOk([leafDiagnostic(ctx, arg, `Field \"${name}\" does not exist on model \"${model.name}\"`)]);\n\treturn ok(name);\n}\nfunction fieldRef() {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: (arg, ctx) => parseFieldName(arg, ctx, ctx.selfModel)\n\t};\n}\nfunction referencedFieldRef() {\n\treturn {\n\t\tkind: \"referencedFieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: (arg, ctx) => parseFieldName(arg, ctx, ctx.resolveReferencedModel())\n\t};\n}\n//#endregion\n//#region src/attribute-spec/interpret.ts\nfunction interpretArgs(args, spec, ctx, span, sourceNode) {\n\tconst diagnostics = [];\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\tdiagnostics.push(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\tdiagnostics.push(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\tdiagnostics.push(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, diagnostics);\n\t\tif (result.ok) output[key] = result.value;\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\tdiagnostics.push(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 (diagnostics.length > 0) return notOk(diagnostics);\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, diagnostics) {\n\tconst value = arg.value();\n\tif (value === void 0) {\n\t\tconst missing = diagnostic(\"Attribute argument is missing a value\", ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax);\n\t\tdiagnostics.push(missing);\n\t\treturn notOk([missing]);\n\t}\n\tconst result = argType.parse(value, ctx);\n\tif (!result.ok) for (const failure of result.failure) diagnostics.push(failure);\n\treturn result;\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 diagnostics = [];\n\t\t\tconst parsed = [];\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\telse diagnostics.push(...result.failure);\n\t\t\t}\n\t\t\tif (!allowEmpty && count === 0) diagnostics.push(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)) diagnostics.push(leafDiagnostic(ctx, node, \"Duplicate list entry\"));\n\t\t\t\telse seen.add(value);\n\t\t\t}\n\t\t\tif (diagnostics.length > 0) return notOk(diagnostics);\n\t\t\treturn ok(parsed.map((entry) => entry.value));\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/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\tfor (const alt of alts) {\n\t\t\t\tconst result = blindCast(alt.parse)(arg, ctx);\n\t\t\t\tif (result.ok) return ok(blindCast(result.value));\n\t\t\t}\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 diagnostics = [];\n\t\t\tconst entries = [];\n\t\t\tconst keys = /* @__PURE__ */ new Set();\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\tdiagnostics.push(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\tdiagnostics.push(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\tdiagnostics.push(...parsed.failure);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (keys.has(key)) {\n\t\t\t\t\tdiagnostics.push(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 (diagnostics.length > 0) return notOk(diagnostics);\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/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: 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: 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/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}\nfunction validateExtensionBlockFromSymbol(input) {\n\tconst refCtx = buildRefResolutionContext(input.symbolTable, input.block);\n\treturn validateExtensionBlock(input.block.block, input.descriptor, input.sources.sourceFileFor(input.block.node.syntax).filename, input.codecLookup, refCtx).map((diagnostic) => diagnosticFromSpan(diagnostic, diagnosticSource(input.sources, input.block.node.syntax)));\n}\nconst ZERO_SPAN = {\n\tstart: {\n\t\toffset: 0,\n\t\tline: 1,\n\t\tcolumn: 1\n\t},\n\tend: {\n\t\toffset: 0,\n\t\tline: 1,\n\t\tcolumn: 1\n\t}\n};\nfunction buildRefResolutionContext(symbolTable, block) {\n\tconst unspecifiedNamespace = makeNamespace(UNSPECIFIED_PSL_NAMESPACE_ID, Object.values(symbolTable.topLevel.models));\n\tconst allNamespaces = [unspecifiedNamespace, ...Object.values(symbolTable.topLevel.namespaces).map((namespace) => makeNamespace(namespace.name, Object.values(namespace.models)))];\n\tconst ownerNamespaceName = findOwnerNamespaceName(symbolTable, block);\n\treturn {\n\t\townerNamespace: allNamespaces.find((namespace) => namespace.name === ownerNamespaceName) ?? unspecifiedNamespace,\n\t\tallNamespaces\n\t};\n}\nfunction makeNamespace(name, models) {\n\treturn makePslNamespace({\n\t\tkind: \"namespace\",\n\t\tname,\n\t\tentries: makePslNamespaceEntries(models.map((model) => ({\n\t\t\tkind: \"model\",\n\t\t\tname: model.name,\n\t\t\tfields: [],\n\t\t\tattributes: [],\n\t\t\tspan: ZERO_SPAN\n\t\t})), [], []),\n\t\tspan: ZERO_SPAN\n\t});\n}\nfunction findOwnerNamespaceName(symbolTable, block) {\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) if (Object.values(namespace.blocks).some((candidate) => candidate === block)) return namespace.name;\n\treturn UNSPECIFIED_PSL_NAMESPACE_ID;\n}\n//#endregion\n//#region src/block-reconstruction.ts\n/**\n* Descriptor-free and unknown parameters become `value` stubs so validation can\n* report them via key-set comparison. Duplicate member names are first-wins.\n*/\nfunction reconstructExtensionBlock(node, descriptor, sources, diagnostics) {\n\tconst sourceFile = sources.sourceFileFor(node.syntax);\n\tconst keyword = node.keyword()?.text ?? \"\";\n\tconst blockName = node.name()?.name() ?? \"\";\n\tconst blockAttributes = [];\n\tfor (const attribute of node.attributes()) {\n\t\tconst name = attribute.name()?.path().join(\".\") ?? \"\";\n\t\tconst args = Array.from(attribute.argList()?.args() ?? [], (arg) => {\n\t\t\tconst value = arg.value();\n\t\t\treturn {\n\t\t\t\tkind: \"positional\",\n\t\t\t\tvalue: value === void 0 ? \"\" : printSyntax(value.syntax).trim(),\n\t\t\t\tspan: nodePslSpan(arg.syntax, sources)\n\t\t\t};\n\t\t});\n\t\tconst span = nodePslSpan(attribute.syntax, sources);\n\t\tblockAttributes.push({\n\t\t\tname,\n\t\t\targs,\n\t\t\tspan\n\t\t});\n\t}\n\tconst parameters = {};\n\tfor (const entry of node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, sources);\n\t\tif (Object.hasOwn(parameters, key)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\tcode: \"PSL_EXTENSION_DUPLICATE_PARAMETER\",\n\t\t\t\tmessage: `Duplicate parameter \"${key}\" in \"${keyword}\" block \"${blockName}\"; first occurrence wins`,\n\t\t\t\trange: {\n\t\t\t\t\tstart: sourceFile.positionAt(entry.syntax.offset),\n\t\t\t\t\tend: sourceFile.positionAt(entry.syntax.offset + entry.syntax.green.textLength)\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tparameters[key] = reconstructParamValue(entry, descriptor?.parameters[key], span, sources, diagnostics);\n\t}\n\treturn {\n\t\tkind: descriptor?.discriminator ?? keyword,\n\t\tkeyword,\n\t\tname: blockName,\n\t\tparameters,\n\t\tblockAttributes,\n\t\tattributes: {},\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t};\n}\nfunction interpretBlockAttributes(symbol, descriptor, sources, symbols, diagnostics) {\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tfor (const attribute of symbol.node.attributes()) {\n\t\tconst name = attribute.name()?.path().join(\".\") ?? \"\";\n\t\tconst parsed = parseBlockAttribute(attribute, name, nodePslSpan(attribute.syntax, sources), descriptor, seenNames, symbol.keyword, symbol.name, sources, symbols);\n\t\tif (parsed.ok) Object.assign(symbol.block.attributes, { [name]: parsed.value });\n\t\telse diagnostics.push(...parsed.diagnostics);\n\t}\n}\nfunction parseBlockAttribute(attribute, name, span, descriptor, seenNames, keyword, blockName, sources, symbols) {\n\tconst sourceFile = sources.sourceFileFor(attribute.syntax);\n\tconst range = sourceFile.pslSpanToRange(span);\n\tconst declared = descriptor.attributes ?? {};\n\tif (!Object.hasOwn(declared, name)) return {\n\t\tok: false,\n\t\tdiagnostics: [{\n\t\t\tfilename: sourceFile.filename,\n\t\t\tcode: \"PSL_EXTENSION_UNKNOWN_BLOCK_ATTRIBUTE\",\n\t\t\tmessage: `Unknown attribute \"@@${name}\" in \"${keyword}\" block \"${blockName}\"`,\n\t\t\trange\n\t\t}]\n\t};\n\tif (seenNames.has(name)) return {\n\t\tok: false,\n\t\tdiagnostics: [{\n\t\t\tfilename: sourceFile.filename,\n\t\t\tcode: \"PSL_INVALID_EXTENSION_BLOCK_ATTRIBUTE\",\n\t\t\tmessage: `Duplicate attribute \"@@${name}\" in \"${keyword}\" block \"${blockName}\"; first occurrence wins`,\n\t\t\trange\n\t\t}]\n\t};\n\tseenNames.add(name);\n\tconst result = interpretAttribute(attribute, blindCast(declared[name])(), {\n\t\tsources,\n\t\tsymbols\n\t});\n\tif (!result.ok) return {\n\t\tok: false,\n\t\tdiagnostics: result.failure\n\t};\n\treturn {\n\t\tok: true,\n\t\tvalue: {\n\t\t\targs: result.value,\n\t\t\tspan\n\t\t}\n\t};\n}\nfunction reconstructParamValue(entry, param, span, sources, diagnostics) {\n\tconst value = entry.value();\n\tif (value === void 0) return {\n\t\tkind: \"bare\",\n\t\tspan\n\t};\n\treturn reconstructFromExpression(value, param, span, sources, diagnostics);\n}\nfunction reconstructFromExpression(value, param, span, sources, diagnostics) {\n\tconst raw = printSyntax(value.syntax).trim();\n\tif (param?.kind === \"list\") {\n\t\tconst sourceFile = sources.sourceFileFor(value.syntax);\n\t\tconst array = ArrayLiteralAst.cast(value.syntax);\n\t\tif (!array) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `List parameter expects an array literal, got ${raw}`,\n\t\t\t\trange: {\n\t\t\t\t\tstart: sourceFile.positionAt(value.syntax.offset),\n\t\t\t\t\tend: sourceFile.positionAt(value.syntax.offset + value.syntax.green.textLength)\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tkind: \"value\",\n\t\t\t\traw,\n\t\t\t\tspan\n\t\t\t};\n\t\t}\n\t\tconst items = [];\n\t\tfor (const element of array.elements()) items.push(reconstructFromExpression(element, param.of, nodePslSpan(element.syntax, sources), sources, diagnostics));\n\t\treturn {\n\t\t\tkind: \"list\",\n\t\t\titems,\n\t\t\tspan\n\t\t};\n\t}\n\tswitch (param?.kind) {\n\t\tcase \"ref\": return {\n\t\t\tkind: \"ref\",\n\t\t\tidentifier: raw,\n\t\t\tspan\n\t\t};\n\t\tcase \"option\": return {\n\t\t\tkind: \"option\",\n\t\t\ttoken: raw,\n\t\t\tspan\n\t\t};\n\t\tdefault: return {\n\t\t\tkind: \"value\",\n\t\t\traw,\n\t\t\tspan\n\t\t};\n\t}\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, pslBlockDescriptors } = options;\n\tconst diagnostics = [];\n\tconst collectedBlocks = [];\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, pslBlockDescriptors, diagnostics, collectedBlocks);\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\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}\n\t\t\textendNamespace(namespace, declaration, diagnostics, sources, pslBlockDescriptors, collectedBlocks);\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\tconst symbolTable = { topLevel: {\n\t\tnamespaces,\n\t\tnamedTypes,\n\t\tblocks,\n\t\tmodels,\n\t\tcompositeTypes\n\t} };\n\tfor (const block of collectedBlocks) {\n\t\tconst descriptor = findBlockDescriptor(pslBlockDescriptors, block.keyword);\n\t\tif (descriptor !== void 0) interpretBlockAttributes(block, descriptor, sources, symbolTable, diagnostics);\n\t}\n\treturn {\n\t\tsymbolTable,\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, pslBlockDescriptors, diagnostics, collectedBlocks) {\n\tconst keyword = node.keyword()?.text ?? \"\";\n\tconst descriptor = findBlockDescriptor(pslBlockDescriptors, keyword);\n\tconst symbol = {\n\t\tkind: \"block\",\n\t\tname,\n\t\tkeyword,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tblock: reconstructExtensionBlock(node, descriptor, sources, diagnostics)\n\t};\n\tcollectedBlocks.push(symbol);\n\treturn symbol;\n}\nfunction extendNamespace(namespace, node, diagnostics, sources, pslBlockDescriptors, collectedBlocks) {\n\tconst { models, compositeTypes, blocks } = namespace;\n\tnamespace.declarations.push({\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t});\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, pslBlockDescriptors, diagnostics, collectedBlocks);\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\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\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 { assembleAttributeSpecs, blockAttribute, bool, buildSymbolTable, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, mapPslDiagnostics, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, str, taggedLiteral, validateExtensionBlockFromSymbol };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/orm-framework",
|
|
3
|
-
"version": "8.0.0-rc.11-dev.
|
|
3
|
+
"version": "8.0.0-rc.11-dev.45",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -15,20 +15,20 @@
|
|
|
15
15
|
"uniku": "^0.5.0"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@internal/config": "8.0.0-rc.11-dev.
|
|
19
|
-
"@internal/contract": "8.0.0-rc.11-dev.
|
|
20
|
-
"@internal/contract-authoring": "8.0.0-rc.11-dev.
|
|
21
|
-
"@internal/errors": "8.0.0-rc.11-dev.
|
|
22
|
-
"@internal/framework-components": "8.0.0-rc.11-dev.
|
|
23
|
-
"@internal/ids": "8.0.0-rc.11-dev.
|
|
24
|
-
"@internal/operations": "8.0.0-rc.11-dev.
|
|
25
|
-
"@internal/psl-parser": "8.0.0-rc.11-dev.
|
|
26
|
-
"@internal/psl-printer": "8.0.0-rc.11-dev.
|
|
27
|
-
"@internal/ts-render": "8.0.0-rc.11-dev.
|
|
28
|
-
"@repo/tsconfig": "8.0.0-rc.11-dev.
|
|
29
|
-
"@internal/publish-surface": "8.0.0-rc.11-dev.
|
|
30
|
-
"@repo/tsdown": "8.0.0-rc.11-dev.
|
|
31
|
-
"@internal/utils": "8.0.0-rc.11-dev.
|
|
18
|
+
"@internal/config": "8.0.0-rc.11-dev.45",
|
|
19
|
+
"@internal/contract": "8.0.0-rc.11-dev.45",
|
|
20
|
+
"@internal/contract-authoring": "8.0.0-rc.11-dev.45",
|
|
21
|
+
"@internal/errors": "8.0.0-rc.11-dev.45",
|
|
22
|
+
"@internal/framework-components": "8.0.0-rc.11-dev.45",
|
|
23
|
+
"@internal/ids": "8.0.0-rc.11-dev.45",
|
|
24
|
+
"@internal/operations": "8.0.0-rc.11-dev.45",
|
|
25
|
+
"@internal/psl-parser": "8.0.0-rc.11-dev.45",
|
|
26
|
+
"@internal/psl-printer": "8.0.0-rc.11-dev.45",
|
|
27
|
+
"@internal/ts-render": "8.0.0-rc.11-dev.45",
|
|
28
|
+
"@repo/tsconfig": "8.0.0-rc.11-dev.45",
|
|
29
|
+
"@internal/publish-surface": "8.0.0-rc.11-dev.45",
|
|
30
|
+
"@repo/tsdown": "8.0.0-rc.11-dev.45",
|
|
31
|
+
"@internal/utils": "8.0.0-rc.11-dev.45",
|
|
32
32
|
"tsdown": "0.22.14",
|
|
33
33
|
"typescript": "5.9.3",
|
|
34
34
|
"vitest": "5.0.0-rc.2"
|