@prisma/orm-framework 8.0.0-rc.11-dev.18 → 8.0.0-rc.11-dev.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/psl-parser.d.mts +15 -5
- package/dist/psl-parser.d.mts.map +1 -1
- package/dist/psl-parser.mjs +8 -4
- package/dist/psl-parser.mjs.map +1 -1
- package/dist/psl-printer.mjs +1 -1
- package/dist/psl-printer.mjs.map +1 -1
- package/package.json +15 -15
package/dist/psl-parser.d.mts
CHANGED
|
@@ -48,6 +48,7 @@ interface ReferencedFieldRefArgType<Ctx extends FieldAttributeCtx = FieldAttribu
|
|
|
48
48
|
readonly kind: 'referencedFieldRef';
|
|
49
49
|
}
|
|
50
50
|
interface FuncCallSig {
|
|
51
|
+
readonly documentation: string;
|
|
51
52
|
readonly positional?: readonly PositionalParam<unknown, AttributeCtx>[];
|
|
52
53
|
readonly named?: Readonly<Record<string, Param<unknown, AttributeCtx>>>;
|
|
53
54
|
}
|
|
@@ -64,6 +65,7 @@ interface FuncCallArgType<Name extends string = string, Ctx extends AttributeCtx
|
|
|
64
65
|
interface IdentifierArgType<Name extends string = string, Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<Name, Ctx> {
|
|
65
66
|
readonly kind: 'identifier';
|
|
66
67
|
readonly name: Name;
|
|
68
|
+
readonly documentation: string;
|
|
67
69
|
}
|
|
68
70
|
interface IntArgType<Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<number, Ctx> {
|
|
69
71
|
readonly kind: 'int';
|
|
@@ -127,12 +129,15 @@ type OptionalArgType<T, Ctx extends AttributeCtx, Type extends object = ArgType<
|
|
|
127
129
|
readonly hasDefault: HasDefault;
|
|
128
130
|
readonly defaultValue?: T | undefined;
|
|
129
131
|
};
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
interface Param<T, Ctx extends AttributeCtx> {
|
|
133
|
+
readonly type: ArgType<T, Ctx>;
|
|
134
|
+
readonly documentation: string;
|
|
135
|
+
}
|
|
136
|
+
interface PositionalParam<T, Ctx extends AttributeCtx> extends Param<T, Ctx> {
|
|
132
137
|
readonly key: string;
|
|
133
|
-
readonly type: Param<T, Ctx>;
|
|
134
138
|
}
|
|
135
139
|
interface AttributeSpec<Out, Ctx extends AttributeCtx> {
|
|
140
|
+
readonly documentation: string;
|
|
136
141
|
readonly level: AttributeLevel;
|
|
137
142
|
readonly name: string;
|
|
138
143
|
readonly positional: readonly PositionalParam<unknown, Ctx>[];
|
|
@@ -150,7 +155,7 @@ type OutOf<P> = P extends {
|
|
|
150
155
|
type OptionalMarker = {
|
|
151
156
|
readonly optional: true;
|
|
152
157
|
};
|
|
153
|
-
type NamedOut<N extends Record<string, Param<unknown, never>>> = Simplify<{ [K in keyof N as N[K] extends OptionalMarker ? never : K]: OutOf<N[K]>; } & { [K in keyof N as N[K] extends OptionalMarker ? K : never]?: OutOf<N[K]>; }>;
|
|
158
|
+
type NamedOut<N extends Record<string, Param<unknown, never>>> = Simplify<{ [K in keyof N as N[K]['type'] extends OptionalMarker ? never : K]: OutOf<N[K]['type']>; } & { [K in keyof N as N[K]['type'] extends OptionalMarker ? K : never]?: OutOf<N[K]['type']>; }>;
|
|
154
159
|
type PosEntryObject<E extends PositionalParam<unknown, never>> = E['type'] extends OptionalMarker ? { [K in E['key']]?: OutOf<E['type']>; } : { [K in E['key']]: OutOf<E['type']>; };
|
|
155
160
|
type PosOut<Pos extends readonly PositionalParam<unknown, never>[]> = Simplify<UnionToIntersection<{ [I in keyof Pos]: PosEntryObject<Pos[I]>; }[number]>>;
|
|
156
161
|
type AttributeOut<Pos extends readonly PositionalParam<unknown, never>[], Named extends Record<string, Param<unknown, never>>> = Simplify<PosOut<Pos> & NamedOut<Named>>;
|
|
@@ -182,6 +187,7 @@ declare function assembleAttributeSpecs(contributions: AssembledAuthoringContrib
|
|
|
182
187
|
//#endregion
|
|
183
188
|
//#region src/attribute-spec/block-attribute.d.ts
|
|
184
189
|
interface BlockAttributeConfig<Pos extends readonly PositionalParam<unknown, AttributeCtx>[], Named extends Record<string, Param<unknown, AttributeCtx>>> {
|
|
190
|
+
readonly documentation: string;
|
|
185
191
|
readonly positional?: Pos;
|
|
186
192
|
readonly named?: Named;
|
|
187
193
|
readonly refine?: (parsed: AttributeOut<Pos, Named>, ctx: AttributeCtx, attributeNode: AstNode) => readonly PslDiagnostic[];
|
|
@@ -205,7 +211,9 @@ declare function referencedFieldRef(): ReferencedFieldRefArgType<FieldAttributeC
|
|
|
205
211
|
declare function funcCall<const Name extends string, const Signature extends FuncCallSig>(name: Name, sig: Signature): FuncCallArgType<Name, AttributeCtx, Signature>;
|
|
206
212
|
//#endregion
|
|
207
213
|
//#region src/attribute-spec/combinators/identifier.d.ts
|
|
208
|
-
declare function identifier<const N extends string>(name: N
|
|
214
|
+
declare function identifier<const N extends string>(name: N, options: {
|
|
215
|
+
readonly documentation: string;
|
|
216
|
+
}): IdentifierArgType<N, AttributeCtx>;
|
|
209
217
|
//#endregion
|
|
210
218
|
//#region src/attribute-spec/combinators/int.d.ts
|
|
211
219
|
declare function int(opts?: {
|
|
@@ -250,6 +258,7 @@ declare function str<const T extends string>(value: T): FixedStrArgType<T, Attri
|
|
|
250
258
|
//#endregion
|
|
251
259
|
//#region src/attribute-spec/field-attribute.d.ts
|
|
252
260
|
interface FieldAttributeConfig<Pos extends readonly PositionalParam<unknown, FieldAttributeCtx>[], Named extends Record<string, Param<unknown, FieldAttributeCtx>>> {
|
|
261
|
+
readonly documentation: string;
|
|
253
262
|
readonly positional?: Pos;
|
|
254
263
|
readonly named?: Named;
|
|
255
264
|
readonly refine?: (parsed: AttributeOut<Pos, Named>, ctx: FieldAttributeCtx, attributeNode: AstNode) => readonly PslDiagnostic[];
|
|
@@ -267,6 +276,7 @@ declare function interpretAttribute<Out, Ctx extends AttributeCtx>(attrNode: Fie
|
|
|
267
276
|
//#endregion
|
|
268
277
|
//#region src/attribute-spec/model-attribute.d.ts
|
|
269
278
|
interface ModelAttributeConfig<Pos extends readonly PositionalParam<unknown, ModelAttributeCtx>[], Named extends Record<string, Param<unknown, ModelAttributeCtx>>> {
|
|
279
|
+
readonly documentation: string;
|
|
270
280
|
readonly positional?: Pos;
|
|
271
281
|
readonly named?: Named;
|
|
272
282
|
readonly refine?: (parsed: AttributeOut<Pos, Named>, ctx: ModelAttributeCtx, attributeNode: AstNode) => readonly PslDiagnostic[];
|
|
@@ -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;WACA,YAAY;;UAEb,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,sBAAsB;WACvF;;UAED,gBAAgB,YAAY,oBAAoB,2BAA2B,sBAAsB;WAChG;;UAED,0BAA0B,YAAY,oBAAoB,2BAA2B,sBAAsB;WAC1G;;UAED;WACC,sBAAsB,yBAAyB;WAC/C,QAAQ,SAAS,eAAe,eAAe;;UAEhD;WACC;WACA,MAAM;WACN,MAAM,SAAS;;UAEhB,gBAAgB,8BAA8B,YAAY,eAAe,cAAc,kBAAkB,cAAc,qBAAqB,cAAc,eAAe;WACxK;WACA,MAAM;WACN,WAAW;;UAEZ,kBAAkB,8BAA8B,YAAY,eAAe,sBAAsB,cAAc,MAAM;WACpH;WACA,MAAM;;
|
|
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
|
@@ -39,6 +39,7 @@ function blockAttribute(name, config) {
|
|
|
39
39
|
return {
|
|
40
40
|
level: "block",
|
|
41
41
|
name,
|
|
42
|
+
documentation: config.documentation,
|
|
42
43
|
positional: config.positional ?? [],
|
|
43
44
|
named: config.named ?? {},
|
|
44
45
|
...config.refine !== void 0 ? { refine: config.refine } : {}
|
|
@@ -204,7 +205,7 @@ function interpretArgs(args, spec, ctx, span) {
|
|
|
204
205
|
continue;
|
|
205
206
|
}
|
|
206
207
|
key = name;
|
|
207
|
-
param = namedParam;
|
|
208
|
+
param = namedParam.type;
|
|
208
209
|
}
|
|
209
210
|
if (seen.has(key)) {
|
|
210
211
|
diagnostics.push(diagnostic(`Attribute "${spec.name}" received duplicate argument "${key}"`, ctx, nodePslSpan(arg.syntax, ctx.sourceFile)));
|
|
@@ -228,9 +229,9 @@ function interpretArgs(args, spec, ctx, span) {
|
|
|
228
229
|
};
|
|
229
230
|
for (const param of spec.positional) {
|
|
230
231
|
const namedParam = Object.hasOwn(spec.named, param.key) ? spec.named[param.key] : void 0;
|
|
231
|
-
finalizeAbsentKey(param.key, param.type, namedParam);
|
|
232
|
+
finalizeAbsentKey(param.key, param.type, namedParam?.type);
|
|
232
233
|
}
|
|
233
|
-
for (const key of Object.keys(spec.named)) finalizeAbsentKey(key, void 0, spec.named[key]);
|
|
234
|
+
for (const key of Object.keys(spec.named)) finalizeAbsentKey(key, void 0, spec.named[key]?.type);
|
|
234
235
|
if (diagnostics.length > 0) return notOk(diagnostics);
|
|
235
236
|
return ok(output);
|
|
236
237
|
}
|
|
@@ -301,11 +302,12 @@ function matchCallee(arg, name, ctx) {
|
|
|
301
302
|
if (calleeName !== name) return notOk([leafDiagnostic(ctx, arg, `Expected ${name}()`)]);
|
|
302
303
|
return ok(call);
|
|
303
304
|
}
|
|
304
|
-
function identifier(name) {
|
|
305
|
+
function identifier(name, options) {
|
|
305
306
|
return {
|
|
306
307
|
kind: "identifier",
|
|
307
308
|
label: name,
|
|
308
309
|
name,
|
|
310
|
+
documentation: options.documentation,
|
|
309
311
|
parse: (arg, ctx) => {
|
|
310
312
|
const identifier = IdentifierAst.cast(arg.syntax);
|
|
311
313
|
if (identifier !== void 0 && identifier.name() === name) return ok(name);
|
|
@@ -520,6 +522,7 @@ function fieldAttribute(name, config) {
|
|
|
520
522
|
return {
|
|
521
523
|
level: "field",
|
|
522
524
|
name,
|
|
525
|
+
documentation: config.documentation,
|
|
523
526
|
positional: config.positional ?? [],
|
|
524
527
|
named: config.named ?? {},
|
|
525
528
|
...config.refine !== void 0 ? { refine: config.refine } : {}
|
|
@@ -529,6 +532,7 @@ function modelAttribute(name, config) {
|
|
|
529
532
|
return {
|
|
530
533
|
level: "model",
|
|
531
534
|
name,
|
|
535
|
+
documentation: config.documentation,
|
|
532
536
|
positional: config.positional ?? [],
|
|
533
537
|
named: config.named ?? {},
|
|
534
538
|
...config.refine !== void 0 ? { refine: config.refine } : {}
|
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 { _ as FunctionCallAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, g as BooleanLiteralExprAst, i as GenericBlockDeclarationAst, k as printSyntax, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, v as NumberLiteralExprAst, w as IdentifierAst, x as StringLiteralExprAst } from \"./declarations-C8gJnWQp.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\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, sourceFile) {\n\treturn {\n\t\tname: attributeName(attribute.name()),\n\t\targs: readResolvedArgList(attribute.argList(), sourceFile),\n\t\tspan: nodePslSpan(attribute.syntax, sourceFile)\n\t};\n}\nfunction readResolvedAttributes(attributes, sourceFile) {\n\treturn Array.from(attributes, (attribute) => readResolvedAttribute(attribute, sourceFile));\n}\nfunction readResolvedConstructorCall(annotation, sourceFile) {\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, sourceFile),\n\t\tspan: nodePslSpan(annotation.syntax, sourceFile)\n\t};\n}\nfunction readResolvedArgList(argList, sourceFile) {\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, sourceFile)\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, sourceFile) {\n\tconst start = node.offset;\n\tconst end = start + node.green.textLength;\n\treturn {\n\t\tstart: offsetToPslPosition(start, sourceFile),\n\t\tend: offsetToPslPosition(end, sourceFile)\n\t};\n}\n/** Unsupported-top-level-block diagnostics are anchored to the keyword token. */\nfunction keywordPslSpan(node, keyword, sourceFile) {\n\tconst start = node.offset;\n\tconst end = start + keyword.length;\n\treturn {\n\t\tstart: offsetToPslPosition(start, sourceFile),\n\t\tend: offsetToPslPosition(end, sourceFile)\n\t};\n}\nfunction rangeToPslSpan(range, sourceFile) {\n\treturn {\n\t\tstart: offsetToPslPosition(sourceFile.offsetAt(range.start), sourceFile),\n\t\tend: offsetToPslPosition(sourceFile.offsetAt(range.end), sourceFile)\n\t};\n}\nfunction offsetToPslPosition(offset, sourceFile) {\n\tconst position = sourceFile.positionAt(offset);\n\treturn {\n\t\toffset,\n\t\tline: position.line + 1,\n\t\tcolumn: position.character + 1\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\tsourceId: ctx.sourceId,\n\t\tspan: nodePslSpan(node.syntax, ctx.sourceFile)\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) {\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));\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.sourceFile)));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tkey = name;\n\t\t\tparam = namedParam;\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.sourceFile)));\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));\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);\n\t}\n\tfor (const key of Object.keys(spec.named)) finalizeAbsentKey(key, void 0, spec.named[key]);\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.sourceFile);\n\tconst bound = interpretArgs(attrNode.argList()?.args() ?? [], spec, ctx, attributeSpan);\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.sourceFile));\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) {\n\treturn {\n\t\tcode: ATTRIBUTE_DIAGNOSTIC_CODE,\n\t\tmessage,\n\t\tsourceId: ctx.sourceId,\n\t\tspan\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.sourceFile);\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);\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) {\n\treturn {\n\t\tkind: \"identifier\",\n\t\tlabel: name,\n\t\tname,\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: `${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/field-attribute.ts\nfunction fieldAttribute(name, config) {\n\treturn {\n\t\tlevel: \"field\",\n\t\tname,\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\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.sourceId, input.codecLookup, refCtx);\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\nconst BLOCK_ATTRIBUTE_SOURCE_ID = \"unknown\";\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, sourceFile, diagnostics) {\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, sourceFile)\n\t\t\t};\n\t\t});\n\t\tconst span = nodePslSpan(attribute.syntax, sourceFile);\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, sourceFile);\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, sourceFile);\n\t\tif (Object.hasOwn(parameters, key)) {\n\t\t\tdiagnostics.push({\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, sourceFile, 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, sourceFile)\n\t};\n}\nfunction parseBlockAttribute(attribute, name, span, descriptor, seenNames, keyword, blockName, sourceFile) {\n\tconst range = pslSpanToRange(span, sourceFile);\n\tconst declared = descriptor.attributes ?? {};\n\tif (!Object.hasOwn(declared, name)) return {\n\t\tok: false,\n\t\tdiagnostics: [{\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\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\tsourceId: BLOCK_ATTRIBUTE_SOURCE_ID,\n\t\tsourceFile\n\t});\n\tif (!result.ok) return {\n\t\tok: false,\n\t\tdiagnostics: result.failure.map((diagnostic) => toParseDiagnostic(diagnostic, sourceFile))\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 toParseDiagnostic(diagnostic, sourceFile) {\n\treturn {\n\t\tcode: diagnostic.code,\n\t\tmessage: diagnostic.message,\n\t\trange: pslSpanToRange(diagnostic.span, sourceFile)\n\t};\n}\nfunction pslSpanToRange(span, sourceFile) {\n\treturn {\n\t\tstart: sourceFile.positionAt(span.start.offset),\n\t\tend: sourceFile.positionAt(span.end.offset)\n\t};\n}\nfunction reconstructParamValue(entry, param, span, sourceFile, 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, sourceFile, diagnostics);\n}\nfunction reconstructFromExpression(value, param, span, sourceFile, diagnostics) {\n\tconst raw = printSyntax(value.syntax).trim();\n\tif (param?.kind === \"list\") {\n\t\tconst array = ArrayLiteralAst.cast(value.syntax);\n\t\tif (!array) {\n\t\t\tdiagnostics?.push({\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, sourceFile), sourceFile, 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 { document, sourceFile, pslBlockDescriptors } = options;\n\tconst diagnostics = [];\n\tconst namespaces = {};\n\tconst namedTypes = {};\n\tconst blocks = {};\n\tconst models = {};\n\tconst compositeTypes = {};\n\tconst topLevelNames = /* @__PURE__ */ new Set();\n\tconst claim = (taken, name) => {\n\t\tconst text = name?.name();\n\t\tif (text === void 0) return void 0;\n\t\tif (taken.has(text)) {\n\t\t\tconst range = nameRange(name, sourceFile);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${text}\"`,\n\t\t\t\trange\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\ttaken.add(text);\n\t\treturn text;\n\t};\n\tfor (const declaration of document.declarations()) if (declaration instanceof ModelDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) models[name] = buildModel(name, declaration, sourceFile, diagnostics);\n\t} else if (declaration instanceof CompositeTypeDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) compositeTypes[name] = buildCompositeType(name, declaration, sourceFile, diagnostics);\n\t} else if (declaration instanceof GenericBlockDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) blocks[name] = buildBlock(name, declaration, sourceFile, pslBlockDescriptors, diagnostics);\n\t} else if (declaration instanceof NamespaceDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) namespaces[name] = buildNamespace(name, declaration, diagnostics, sourceFile, pslBlockDescriptors);\n\t} else if (declaration instanceof TypesBlockAst) for (const binding of declaration.declarations()) {\n\t\tconst name = claim(topLevelNames, binding.name());\n\t\tif (name === void 0) continue;\n\t\tconst resolved = resolveNamedTypeBinding(binding, sourceFile);\n\t\tnamedTypes[name] = {\n\t\t\tkind: \"namedType\",\n\t\t\tname,\n\t\t\tnode: binding,\n\t\t\tspan: nodePslSpan(binding.syntax, sourceFile),\n\t\t\t...resolved\n\t\t};\n\t}\n\treturn {\n\t\ttable: { 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, sourceFile, diagnostics) {\n\treturn {\n\t\tkind: \"model\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sourceFile),\n\t\tfields: buildFields(name, node.fields(), sourceFile, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sourceFile)\n\t};\n}\nfunction buildCompositeType(name, node, sourceFile, diagnostics) {\n\treturn {\n\t\tkind: \"compositeType\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sourceFile),\n\t\tfields: buildFields(name, node.fields(), sourceFile, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sourceFile)\n\t};\n}\nfunction buildBlock(name, node, sourceFile, 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, sourceFile),\n\t\tblock: reconstructExtensionBlock(node, descriptor, sourceFile, diagnostics)\n\t};\n}\nfunction buildNamespace(name, node, diagnostics, sourceFile, pslBlockDescriptors) {\n\tconst models = {};\n\tconst compositeTypes = {};\n\tconst blocks = {};\n\tconst taken = /* @__PURE__ */ new Set();\n\tfor (const member of node.declarations()) {\n\t\tconst memberName = member.name()?.name();\n\t\tif (memberName === void 0) continue;\n\t\tif (taken.has(memberName)) {\n\t\t\tconst range = nameRange(member.name(), sourceFile);\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\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\ttaken.add(memberName);\n\t\tif (member instanceof ModelDeclarationAst) models[memberName] = buildModel(memberName, member, sourceFile, diagnostics);\n\t\telse if (member instanceof CompositeTypeDeclarationAst) compositeTypes[memberName] = buildCompositeType(memberName, member, sourceFile, diagnostics);\n\t\telse if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sourceFile, pslBlockDescriptors, diagnostics);\n\t}\n\treturn {\n\t\tkind: \"namespace\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sourceFile),\n\t\tmodels,\n\t\tcompositeTypes,\n\t\tblocks\n\t};\n}\nfunction buildFields(ownerName, fields, sourceFile, 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, sourceFile);\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\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tresult[name] = buildField(ownerName, name, field, sourceFile, diagnostics);\n\t}\n\treturn result;\n}\nfunction buildField(ownerName, name, node, sourceFile, diagnostics) {\n\tconst attributes = readResolvedAttributes(node.attributes(), sourceFile);\n\tconst span = nodePslSpan(node.syntax, sourceFile);\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\trange: nodeRange(typeName.syntax, sourceFile)\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, sourceFile) : 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, sourceFile) {\n\tconst annotation = node.typeAnnotation();\n\tconst isConstructor = annotation?.isConstructor() ?? false;\n\tconst baseType = annotation?.name()?.identifier()?.name();\n\tconst typeConstructor = readResolvedConstructorCall(annotation, sourceFile);\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(), sourceFile)\n\t};\n}\nfunction nameRange(name, sourceFile) {\n\tif (name === void 0) return void 0;\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, sourceFile) {\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, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, str, 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 { _ as FunctionCallAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, g as BooleanLiteralExprAst, i as GenericBlockDeclarationAst, k as printSyntax, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, v as NumberLiteralExprAst, w as IdentifierAst, x as StringLiteralExprAst } from \"./declarations-C8gJnWQp.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, sourceFile) {\n\treturn {\n\t\tname: attributeName(attribute.name()),\n\t\targs: readResolvedArgList(attribute.argList(), sourceFile),\n\t\tspan: nodePslSpan(attribute.syntax, sourceFile)\n\t};\n}\nfunction readResolvedAttributes(attributes, sourceFile) {\n\treturn Array.from(attributes, (attribute) => readResolvedAttribute(attribute, sourceFile));\n}\nfunction readResolvedConstructorCall(annotation, sourceFile) {\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, sourceFile),\n\t\tspan: nodePslSpan(annotation.syntax, sourceFile)\n\t};\n}\nfunction readResolvedArgList(argList, sourceFile) {\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, sourceFile)\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, sourceFile) {\n\tconst start = node.offset;\n\tconst end = start + node.green.textLength;\n\treturn {\n\t\tstart: offsetToPslPosition(start, sourceFile),\n\t\tend: offsetToPslPosition(end, sourceFile)\n\t};\n}\n/** Unsupported-top-level-block diagnostics are anchored to the keyword token. */\nfunction keywordPslSpan(node, keyword, sourceFile) {\n\tconst start = node.offset;\n\tconst end = start + keyword.length;\n\treturn {\n\t\tstart: offsetToPslPosition(start, sourceFile),\n\t\tend: offsetToPslPosition(end, sourceFile)\n\t};\n}\nfunction rangeToPslSpan(range, sourceFile) {\n\treturn {\n\t\tstart: offsetToPslPosition(sourceFile.offsetAt(range.start), sourceFile),\n\t\tend: offsetToPslPosition(sourceFile.offsetAt(range.end), sourceFile)\n\t};\n}\nfunction offsetToPslPosition(offset, sourceFile) {\n\tconst position = sourceFile.positionAt(offset);\n\treturn {\n\t\toffset,\n\t\tline: position.line + 1,\n\t\tcolumn: position.character + 1\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\tsourceId: ctx.sourceId,\n\t\tspan: nodePslSpan(node.syntax, ctx.sourceFile)\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) {\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));\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.sourceFile)));\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.sourceFile)));\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));\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.sourceFile);\n\tconst bound = interpretArgs(attrNode.argList()?.args() ?? [], spec, ctx, attributeSpan);\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.sourceFile));\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) {\n\treturn {\n\t\tcode: ATTRIBUTE_DIAGNOSTIC_CODE,\n\t\tmessage,\n\t\tsourceId: ctx.sourceId,\n\t\tspan\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.sourceFile);\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);\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: `${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/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.sourceId, input.codecLookup, refCtx);\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\nconst BLOCK_ATTRIBUTE_SOURCE_ID = \"unknown\";\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, sourceFile, diagnostics) {\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, sourceFile)\n\t\t\t};\n\t\t});\n\t\tconst span = nodePslSpan(attribute.syntax, sourceFile);\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, sourceFile);\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, sourceFile);\n\t\tif (Object.hasOwn(parameters, key)) {\n\t\t\tdiagnostics.push({\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, sourceFile, 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, sourceFile)\n\t};\n}\nfunction parseBlockAttribute(attribute, name, span, descriptor, seenNames, keyword, blockName, sourceFile) {\n\tconst range = pslSpanToRange(span, sourceFile);\n\tconst declared = descriptor.attributes ?? {};\n\tif (!Object.hasOwn(declared, name)) return {\n\t\tok: false,\n\t\tdiagnostics: [{\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\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\tsourceId: BLOCK_ATTRIBUTE_SOURCE_ID,\n\t\tsourceFile\n\t});\n\tif (!result.ok) return {\n\t\tok: false,\n\t\tdiagnostics: result.failure.map((diagnostic) => toParseDiagnostic(diagnostic, sourceFile))\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 toParseDiagnostic(diagnostic, sourceFile) {\n\treturn {\n\t\tcode: diagnostic.code,\n\t\tmessage: diagnostic.message,\n\t\trange: pslSpanToRange(diagnostic.span, sourceFile)\n\t};\n}\nfunction pslSpanToRange(span, sourceFile) {\n\treturn {\n\t\tstart: sourceFile.positionAt(span.start.offset),\n\t\tend: sourceFile.positionAt(span.end.offset)\n\t};\n}\nfunction reconstructParamValue(entry, param, span, sourceFile, 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, sourceFile, diagnostics);\n}\nfunction reconstructFromExpression(value, param, span, sourceFile, diagnostics) {\n\tconst raw = printSyntax(value.syntax).trim();\n\tif (param?.kind === \"list\") {\n\t\tconst array = ArrayLiteralAst.cast(value.syntax);\n\t\tif (!array) {\n\t\t\tdiagnostics?.push({\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, sourceFile), sourceFile, 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 { document, sourceFile, pslBlockDescriptors } = options;\n\tconst diagnostics = [];\n\tconst namespaces = {};\n\tconst namedTypes = {};\n\tconst blocks = {};\n\tconst models = {};\n\tconst compositeTypes = {};\n\tconst topLevelNames = /* @__PURE__ */ new Set();\n\tconst claim = (taken, name) => {\n\t\tconst text = name?.name();\n\t\tif (text === void 0) return void 0;\n\t\tif (taken.has(text)) {\n\t\t\tconst range = nameRange(name, sourceFile);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${text}\"`,\n\t\t\t\trange\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\ttaken.add(text);\n\t\treturn text;\n\t};\n\tfor (const declaration of document.declarations()) if (declaration instanceof ModelDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) models[name] = buildModel(name, declaration, sourceFile, diagnostics);\n\t} else if (declaration instanceof CompositeTypeDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) compositeTypes[name] = buildCompositeType(name, declaration, sourceFile, diagnostics);\n\t} else if (declaration instanceof GenericBlockDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) blocks[name] = buildBlock(name, declaration, sourceFile, pslBlockDescriptors, diagnostics);\n\t} else if (declaration instanceof NamespaceDeclarationAst) {\n\t\tconst name = claim(topLevelNames, declaration.name());\n\t\tif (name !== void 0) namespaces[name] = buildNamespace(name, declaration, diagnostics, sourceFile, pslBlockDescriptors);\n\t} else if (declaration instanceof TypesBlockAst) for (const binding of declaration.declarations()) {\n\t\tconst name = claim(topLevelNames, binding.name());\n\t\tif (name === void 0) continue;\n\t\tconst resolved = resolveNamedTypeBinding(binding, sourceFile);\n\t\tnamedTypes[name] = {\n\t\t\tkind: \"namedType\",\n\t\t\tname,\n\t\t\tnode: binding,\n\t\t\tspan: nodePslSpan(binding.syntax, sourceFile),\n\t\t\t...resolved\n\t\t};\n\t}\n\treturn {\n\t\ttable: { 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, sourceFile, diagnostics) {\n\treturn {\n\t\tkind: \"model\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sourceFile),\n\t\tfields: buildFields(name, node.fields(), sourceFile, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sourceFile)\n\t};\n}\nfunction buildCompositeType(name, node, sourceFile, diagnostics) {\n\treturn {\n\t\tkind: \"compositeType\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sourceFile),\n\t\tfields: buildFields(name, node.fields(), sourceFile, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sourceFile)\n\t};\n}\nfunction buildBlock(name, node, sourceFile, 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, sourceFile),\n\t\tblock: reconstructExtensionBlock(node, descriptor, sourceFile, diagnostics)\n\t};\n}\nfunction buildNamespace(name, node, diagnostics, sourceFile, pslBlockDescriptors) {\n\tconst models = {};\n\tconst compositeTypes = {};\n\tconst blocks = {};\n\tconst taken = /* @__PURE__ */ new Set();\n\tfor (const member of node.declarations()) {\n\t\tconst memberName = member.name()?.name();\n\t\tif (memberName === void 0) continue;\n\t\tif (taken.has(memberName)) {\n\t\t\tconst range = nameRange(member.name(), sourceFile);\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\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\ttaken.add(memberName);\n\t\tif (member instanceof ModelDeclarationAst) models[memberName] = buildModel(memberName, member, sourceFile, diagnostics);\n\t\telse if (member instanceof CompositeTypeDeclarationAst) compositeTypes[memberName] = buildCompositeType(memberName, member, sourceFile, diagnostics);\n\t\telse if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sourceFile, pslBlockDescriptors, diagnostics);\n\t}\n\treturn {\n\t\tkind: \"namespace\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sourceFile),\n\t\tmodels,\n\t\tcompositeTypes,\n\t\tblocks\n\t};\n}\nfunction buildFields(ownerName, fields, sourceFile, 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, sourceFile);\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\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tresult[name] = buildField(ownerName, name, field, sourceFile, diagnostics);\n\t}\n\treturn result;\n}\nfunction buildField(ownerName, name, node, sourceFile, diagnostics) {\n\tconst attributes = readResolvedAttributes(node.attributes(), sourceFile);\n\tconst span = nodePslSpan(node.syntax, sourceFile);\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\trange: nodeRange(typeName.syntax, sourceFile)\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, sourceFile) : 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, sourceFile) {\n\tconst annotation = node.typeAnnotation();\n\tconst isConstructor = annotation?.isConstructor() ?? false;\n\tconst baseType = annotation?.name()?.identifier()?.name();\n\tconst typeConstructor = readResolvedConstructorCall(annotation, sourceFile);\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(), sourceFile)\n\t};\n}\nfunction nameRange(name, sourceFile) {\n\tif (name === void 0) return void 0;\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, sourceFile) {\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, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, str, validateExtensionBlockFromSymbol };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;;;;;AAOA,SAAS,sBAAsB,WAAW,QAAQ,GAAG;CACpD,OAAO,UAAU,KAAK,QAAQ,QAAQ,IAAI,SAAS,YAAY,CAAC,CAAC,MAAM,EAAE;AAC1E;AACA,SAAS,yBAAyB,OAAO;CACxC,MAAM,QAAQ,MAAM,KAAK,CAAC,CAAC,MAAM,gBAAgB;CACjD,IAAI,CAAC,OAAO,OAAO,KAAK;CACxB,OAAO,MAAM,MAAM;AACpB;AAGA,UAAU,0BAA0B,WAAW;CAC9C,KAAK,MAAM,SAAS,OAAO,OAAO,SAAS,GAAG;EAC7C,IAAI,oCAAoC,KAAK,GAAG;GAC/C,MAAM;GACN;EACD;EACA,OAAO,0BAA0B,KAAK;CACvC;AACD;AACA,SAAS,uBAAuB,eAAe;CAC9C,MAAM,UAAU,OAAO,QAAQ,cAAc,eAAe,KAAK;CACjE,MAAM,UAAU,IAAI,IAAI,QAAQ,KAAK,CAAC,eAAe,SAAS,CAAC;CAC/D,KAAK,MAAM,cAAc,0BAA0B,cAAc,eAAe,GAAG;EAClF,IAAI,QAAQ,IAAI,WAAW,SAAS,GAAG,MAAM,IAAI,cAAc,8CAA8C,WAAW,UAAU,6GAA6G;EAC/O,QAAQ,IAAI,WAAW,SAAS;EAChC,QAAQ,KAAK,CAAC,WAAW,WAAW,WAAW,IAAI,CAAC;CACrD;CACA,OAAO,OAAO,OAAO,UAAU;EAC9B,OAAO,OAAO,OAAO,OAAO,YAAY,OAAO,CAAC;EAChD,OAAO,OAAO,OAAO,EAAE,GAAG,cAAc,eAAe,MAAM,CAAC;CAC/D,CAAC,CAAC;AACH;AAGA,SAAS,eAAe,MAAM,QAAQ;CACrC,OAAO;EACN,OAAO;EACP;EACA,eAAe,OAAO;EACtB,YAAY,OAAO,cAAc,CAAC;EAClC,OAAO,OAAO,SAAS,CAAC;EACxB,GAAG,OAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;CAC5D;AACD;AAGA,SAAS,sBAAsB,WAAW,YAAY;CACrD,OAAO;EACN,MAAM,cAAc,UAAU,KAAK,CAAC;EACpC,MAAM,oBAAoB,UAAU,QAAQ,GAAG,UAAU;EACzD,MAAM,YAAY,UAAU,QAAQ,UAAU;CAC/C;AACD;AACA,SAAS,uBAAuB,YAAY,YAAY;CACvD,OAAO,MAAM,KAAK,aAAa,cAAc,sBAAsB,WAAW,UAAU,CAAC;AAC1F;AACA,SAAS,4BAA4B,YAAY,YAAY;CAC5D,MAAM,UAAU,YAAY,QAAQ;CACpC,IAAI,eAAe,KAAK,KAAK,YAAY,KAAK,GAAG,OAAO,KAAK;CAC7D,OAAO;EACN,MAAM,WAAW,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC;EACpC,MAAM,oBAAoB,SAAS,UAAU;EAC7C,MAAM,YAAY,WAAW,QAAQ,UAAU;CAChD;AACD;AACA,SAAS,oBAAoB,SAAS,YAAY;CACjD,IAAI,YAAY,KAAK,GAAG,OAAO,CAAC;CAChC,MAAM,OAAO,CAAC;CACd,KAAK,MAAM,OAAO,QAAQ,KAAK,GAAG;EACjC,MAAM,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK;EAC9B,MAAM,aAAa,IAAI,MAAM;EAC7B,KAAK,KAAK;GACT,MAAM,SAAS,KAAK,IAAI,UAAU;GAClC,GAAG,SAAS,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC;GACjC,OAAO,iBAAiB,UAAU;GAClC,GAAG,eAAe,KAAK,IAAI,EAAE,WAAW,IAAI,CAAC;GAC7C,MAAM,YAAY,IAAI,QAAQ,UAAU;EACzC,CAAC;CACF;CACA,OAAO;AACR;AACA,SAAS,cAAc,MAAM;CAC5B,OAAO,MAAM,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK;AAClC;AACA,SAAS,iBAAiB,YAAY;CACrC,IAAI,eAAe,KAAK,GAAG,OAAO;CAClC,OAAO,YAAY,WAAW,MAAM,CAAC,CAAC,KAAK;AAC5C;AACA,SAAS,YAAY,MAAM,YAAY;CACtC,MAAM,QAAQ,KAAK;CACnB,MAAM,MAAM,QAAQ,KAAK,MAAM;CAC/B,OAAO;EACN,OAAO,oBAAoB,OAAO,UAAU;EAC5C,KAAK,oBAAoB,KAAK,UAAU;CACzC;AACD;;AAEA,SAAS,eAAe,MAAM,SAAS,YAAY;CAClD,MAAM,QAAQ,KAAK;CACnB,MAAM,MAAM,QAAQ,QAAQ;CAC5B,OAAO;EACN,OAAO,oBAAoB,OAAO,UAAU;EAC5C,KAAK,oBAAoB,KAAK,UAAU;CACzC;AACD;AACA,SAAS,eAAe,OAAO,YAAY;CAC1C,OAAO;EACN,OAAO,oBAAoB,WAAW,SAAS,MAAM,KAAK,GAAG,UAAU;EACvE,KAAK,oBAAoB,WAAW,SAAS,MAAM,GAAG,GAAG,UAAU;CACpE;AACD;AACA,SAAS,oBAAoB,QAAQ,YAAY;CAChD,MAAM,WAAW,WAAW,WAAW,MAAM;CAC7C,OAAO;EACN;EACA,MAAM,SAAS,OAAO;EACtB,QAAQ,SAAS,YAAY;CAC9B;AACD;AAGA,MAAM,4BAA4B;AAClC,SAAS,eAAe,KAAK,MAAM,SAAS,OAAO,2BAA2B;CAC7E,OAAO;EACN;EACA;EACA,UAAU,IAAI;EACd,MAAM,YAAY,KAAK,QAAQ,IAAI,UAAU;CAC9C;AACD;AAGA,SAAS,OAAO;CACf,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,sBAAsB,KAAK,IAAI,MAAM;GACrD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,QAAQ,QAAQ,MAAM;IAC5B,IAAI,UAAU,KAAK,GAAG,OAAO,GAAG,KAAK;GACtC;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,4BAA4B,CAAC,CAAC;EACtE;CACD;AACD;AAGA,SAAS,YAAY;CACpB,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ;GACpB,MAAM,aAAa,cAAc,KAAK,IAAI,MAAM;GAChD,IAAI,eAAe,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,uBAAuB,CAAC,CAAC;GAC3F,MAAM,OAAO,WAAW,KAAK;GAC7B,IAAI,SAAS,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,uBAAuB,CAAC,CAAC;GACrF,OAAO,GAAG,IAAI;EACf;CACD;AACD;AAGA,SAAS,eAAe,KAAK,KAAK,OAAO;CACxC,MAAM,aAAa,cAAc,KAAK,IAAI,MAAM;CAChD,IAAI,eAAe,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,uBAAuB,CAAC,CAAC;CAC3F,MAAM,OAAO,WAAW,KAAK;CAC7B,IAAI,SAAS,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,uBAAuB,CAAC,CAAC;CACrF,IAAI,UAAU,KAAK,KAAK,CAAC,OAAO,OAAO,MAAM,QAAQ,IAAI,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,UAAU,KAAK,6BAA6B,MAAM,KAAK,EAAE,CAAC,CAAC;CAC9J,OAAO,GAAG,IAAI;AACf;AACA,SAAS,WAAW;CACnB,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ,eAAe,KAAK,KAAK,IAAI,SAAS;CAC5D;AACD;AACA,SAAS,qBAAqB;CAC7B,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ,eAAe,KAAK,KAAK,IAAI,uBAAuB,CAAC;CAC3E;AACD;AAGA,SAAS,cAAc,MAAM,MAAM,KAAK,MAAM;CAC7C,MAAM,cAAc,CAAC;CACrB,MAAM,SAAS,CAAC;CAChB,MAAM,uBAAuB,IAAI,IAAI;CACrC,IAAI,iBAAiB;CACrB,IAAI,iBAAiB;CACrB,KAAK,MAAM,OAAO,MAAM;EACvB,MAAM,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK;EAC9B,IAAI;EACJ,IAAI;EACJ,IAAI,SAAS,KAAK,GAAG;GACpB,MAAM,WAAW,KAAK,WAAW;GACjC,IAAI,aAAa,KAAK,GAAG;IACxB,IAAI,CAAC,gBAAgB;KACpB,YAAY,KAAK,WAAW,cAAc,KAAK,KAAK,2CAA2C,KAAK,IAAI,CAAC;KACzG,iBAAiB;IAClB;IACA;GACD;GACA,kBAAkB;GAClB,MAAM,SAAS;GACf,QAAQ,SAAS;EAClB,OAAO;GACN,MAAM,aAAa,OAAO,OAAO,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,QAAQ,KAAK;GAC7E,IAAI,eAAe,KAAK,GAAG;IAC1B,YAAY,KAAK,WAAW,cAAc,KAAK,KAAK,+BAA+B,KAAK,IAAI,KAAK,YAAY,IAAI,QAAQ,IAAI,UAAU,CAAC,CAAC;IACzI;GACD;GACA,MAAM;GACN,QAAQ,WAAW;EACpB;EACA,IAAI,KAAK,IAAI,GAAG,GAAG;GAClB,YAAY,KAAK,WAAW,cAAc,KAAK,KAAK,iCAAiC,IAAI,IAAI,KAAK,YAAY,IAAI,QAAQ,IAAI,UAAU,CAAC,CAAC;GAC1I;EACD;EACA,KAAK,IAAI,GAAG;EACZ,MAAM,SAAS,cAAc,KAAK,OAAO,KAAK,WAAW;EACzD,IAAI,OAAO,IAAI,OAAO,OAAO,OAAO;CACrC;CACA,MAAM,4BAA4B,IAAI,IAAI;CAC1C,MAAM,qBAAqB,KAAK,iBAAiB,eAAe;EAC/D,IAAI,UAAU,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG;EACzC,UAAU,IAAI,GAAG;EACjB,MAAM,YAAY,cAAc;EAChC,IAAI,cAAc,KAAK,GAAG;EAC1B,IAAI,kBAAkB,SAAS,GAAG;GACjC,IAAI,UAAU,YAAY,OAAO,OAAO,UAAU;GAClD;EACD;EACA,YAAY,KAAK,WAAW,cAAc,KAAK,KAAK,kCAAkC,IAAI,IAAI,KAAK,IAAI,CAAC;CACzG;CACA,KAAK,MAAM,SAAS,KAAK,YAAY;EACpC,MAAM,aAAa,OAAO,OAAO,KAAK,OAAO,MAAM,GAAG,IAAI,KAAK,MAAM,MAAM,OAAO,KAAK;EACvF,kBAAkB,MAAM,KAAK,MAAM,MAAM,YAAY,IAAI;CAC1D;CACA,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,KAAK,GAAG,kBAAkB,KAAK,KAAK,GAAG,KAAK,MAAM,IAAI,EAAE,IAAI;CAC/F,IAAI,YAAY,SAAS,GAAG,OAAO,MAAM,WAAW;CACpD,OAAO,GAAG,MAAM;AACjB;AACA,SAAS,mBAAmB,UAAU,MAAM,KAAK;CAChD,MAAM,gBAAgB,YAAY,SAAS,QAAQ,IAAI,UAAU;CACjE,MAAM,QAAQ,cAAc,SAAS,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,MAAM,KAAK,aAAa;CACtF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,MAAM,OAAO;CACzC,MAAM,QAAQ,UAAU,MAAM,KAAK;CACnC,IAAI,KAAK,WAAW,KAAK,GAAG;EAC3B,MAAM,oBAAoB,KAAK,OAAO,OAAO,KAAK,QAAQ;EAC1D,IAAI,kBAAkB,SAAS,GAAG,OAAO,MAAM,iBAAiB;CACjE;CACA,OAAO,GAAG,KAAK;AAChB;AACA,SAAS,cAAc,KAAK,SAAS,KAAK,aAAa;CACtD,MAAM,QAAQ,IAAI,MAAM;CACxB,IAAI,UAAU,KAAK,GAAG;EACrB,MAAM,UAAU,WAAW,yCAAyC,KAAK,YAAY,IAAI,QAAQ,IAAI,UAAU,CAAC;EAChH,YAAY,KAAK,OAAO;EACxB,OAAO,MAAM,CAAC,OAAO,CAAC;CACvB;CACA,MAAM,SAAS,QAAQ,MAAM,OAAO,GAAG;CACvC,IAAI,CAAC,OAAO,IAAI,KAAK,MAAM,WAAW,OAAO,SAAS,YAAY,KAAK,OAAO;CAC9E,OAAO;AACR;AACA,SAAS,kBAAkB,OAAO;CACjC,OAAO,cAAc,SAAS,MAAM,aAAa;AAClD;AACA,SAAS,WAAW,SAAS,KAAK,MAAM;CACvC,OAAO;EACN,MAAM;EACN;EACA,UAAU,IAAI;EACd;CACD;AACD;AAGA,SAAS,SAAS,MAAM,KAAK;CAC5B,OAAO;EACN,MAAM;EACN,OAAO,GAAG,KAAK;EACf;EACA,WAAW;EACX,QAAQ,KAAK,QAAQ;GACpB,MAAM,QAAQ,YAAY,KAAK,MAAM,GAAG;GACxC,IAAI,CAAC,MAAM,IAAI,OAAO;GACtB,MAAM,OAAO,YAAY,MAAM,MAAM,QAAQ,IAAI,UAAU;GAC3D,MAAM,QAAQ,cAAc,MAAM,MAAM,KAAK,GAAG;IAC/C;IACA,YAAY,IAAI,cAAc,CAAC;IAC/B,OAAO,IAAI,SAAS,CAAC;GACtB,GAAG,KAAK,IAAI;GACZ,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,MAAM,OAAO;GACzC,OAAO,GAAG;IACT,IAAI;IACJ;IACA,MAAM,MAAM;GACb,CAAC;EACF;CACD;AACD;AACA,SAAS,YAAY,KAAK,MAAM,KAAK;CACpC,MAAM,OAAO,gBAAgB,KAAK,IAAI,MAAM;CAC5C,IAAI,SAAS,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,0BAA0B,CAAC,CAAC;CACxF,MAAM,QAAQ,KAAK,KAAK;CACxB,IAAI,UAAU,KAAK,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,0BAA0B,CAAC,CAAC;CAC/I,MAAM,aAAa,MAAM,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;CAChD,IAAI,eAAe,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,0BAA0B,CAAC,CAAC;CAC9F,IAAI,eAAe,MAAM,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,KAAK,GAAG,CAAC,CAAC;CACtF,OAAO,GAAG,IAAI;AACf;AAGA,SAAS,WAAW,MAAM,SAAS;CAClC,OAAO;EACN,MAAM;EACN,OAAO;EACP;EACA,eAAe,QAAQ;EACvB,QAAQ,KAAK,QAAQ;GACpB,MAAM,aAAa,cAAc,KAAK,IAAI,MAAM;GAChD,IAAI,eAAe,KAAK,KAAK,WAAW,KAAK,MAAM,MAAM,OAAO,GAAG,IAAI;GACvE,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,MAAM,CAAC,CAAC;EAC5D;CACD;AACD;AAGA,SAAS,IAAI,MAAM;CAClB,MAAM,MAAM,MAAM;CAClB,MAAM,MAAM,MAAM;CAClB,OAAO;EACN,MAAM;EACN,OAAO;EACP,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI;EAC/B,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI;EAC/B,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,QAAQ,QAAQ,MAAM;IAC5B,IAAI,UAAU,KAAK,KAAK,OAAO,UAAU,KAAK,GAAG;KAChD,KAAK,QAAQ,KAAK,KAAK,SAAS,SAAS,QAAQ,KAAK,KAAK,SAAS,MAAM,OAAO,GAAG,KAAK;KACzF,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC;IAChE;GACD;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,6BAA6B,CAAC,CAAC;EACvE;CACD;AACD;AACA,SAAS,aAAa,KAAK,KAAK;CAC/B,IAAI,QAAQ,KAAK,KAAK,QAAQ,KAAK,GAAG,OAAO,+BAA+B,IAAI,OAAO;CACvF,IAAI,QAAQ,KAAK,GAAG,OAAO,gDAAgD;CAC3E,OAAO,6CAA6C;AACrD;;;;;;AAQA,SAAS,OAAO;CACf,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,+BAA+B,CAAC,CAAC;GAChG,MAAM,MAAM,QAAQ,MAAM;GAC1B,IAAI,QAAQ,KAAK,GAAG,IAAI;IACvB,MAAM,SAAS,KAAK,MAAM,GAAG;IAC7B,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,GAAG,UAAU,MAAM,CAAC;GACzG,QAAQ,CAAC;GACT,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,8BAA8B,CAAC,CAAC;EACxE;CACD;AACD;AAGA,SAAS,KAAK,IAAI,MAAM;CACvB,MAAM,aAAa,MAAM,cAAc;CACvC,MAAM,SAAS,MAAM,UAAU;CAC/B,OAAO;EACN,MAAM;EACN,OAAO,GAAG,GAAG,MAAM;EACnB;EACA;EACA;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,gBAAgB,KAAK,IAAI,MAAM;GAC/C,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,sBAAsB,GAAG,OAAO,CAAC,CAAC;GACjG,MAAM,cAAc,CAAC;GACrB,MAAM,SAAS,CAAC;GAChB,IAAI,QAAQ;GACZ,KAAK,MAAM,WAAW,QAAQ,SAAS,GAAG;IACzC,SAAS;IACT,MAAM,SAAS,GAAG,MAAM,SAAS,GAAG;IACpC,IAAI,OAAO,IAAI,OAAO,KAAK;KAC1B,MAAM;KACN,OAAO,OAAO;IACf,CAAC;SACI,YAAY,KAAK,GAAG,OAAO,OAAO;GACxC;GACA,IAAI,CAAC,cAAc,UAAU,GAAG,YAAY,KAAK,eAAe,KAAK,KAAK,2BAA2B,CAAC;GACtG,IAAI,QAAQ;IACX,MAAM,uBAAuB,IAAI,IAAI;IACrC,KAAK,MAAM,EAAE,MAAM,WAAW,QAAQ,IAAI,KAAK,IAAI,KAAK,GAAG,YAAY,KAAK,eAAe,KAAK,MAAM,sBAAsB,CAAC;SACxH,KAAK,IAAI,KAAK;GACpB;GACA,IAAI,YAAY,SAAS,GAAG,OAAO,MAAM,WAAW;GACpD,OAAO,GAAG,OAAO,KAAK,UAAU,MAAM,KAAK,CAAC;EAC7C;CACD;AACD;AAGA,SAAS,IAAI,OAAO;CACnB,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,OAAO;EACP,OAAO,KAAK;EACZ,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,SAAS,QAAQ,MAAM;IAC7B,IAAI,WAAW,KAAK,GAAG,OAAO,GAAG,MAAM;GACxC;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC;EACrE;CACD;CACA,OAAO;EACN,MAAM;EACN,OAAO,OAAO,KAAK;EACnB;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAChB;QAAA,QAAQ,MAAM,MAAM,OAAO,OAAO,GAAG,KAAK;GAAA;GAE/C,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,OAAO,CAAC,CAAC;EAC7D;CACD;AACD;;AAIA,SAAS,aAAa;CACrB,OAAO;EACN,MAAM;EACN,OAAO;EACP,OAAO,KAAK;EACZ,QAAQ,KAAK,QAAQ;GACpB,MAAM,OAAO,qBAAqB,KAAK,IAAI,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE;GAC7D,IAAI,SAAS,KAAK,GAAG,OAAO,GAAG,EAAE,KAAK,CAAC;GACvC,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC;EACrE;CACD;AACD;AAGA,SAAS,MAAM,GAAG,MAAM;CACvB,MAAM,QAAQ,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK;CACrD,OAAO;EACN,MAAM;EACN;EACA,cAAc;EACd,QAAQ,KAAK,QAAQ;GACpB,KAAK,MAAM,OAAO,MAAM;IACvB,MAAM,SAAS,UAAU,IAAI,KAAK,CAAC,CAAC,KAAK,GAAG;IAC5C,IAAI,OAAO,IAAI,OAAO,GAAG,UAAU,OAAO,KAAK,CAAC;GACjD;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,oBAAoB,OAAO,CAAC,CAAC;EACrE;CACD;AACD;AAGA,SAAS,OAAO,IAAI;CACnB,OAAO;EACN,MAAM;EACN,OAAO,YAAY,GAAG,MAAM;EAC5B;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,4BAA4B,CAAC,CAAC;GAC7F,MAAM,cAAc,CAAC;GACrB,MAAM,UAAU,CAAC;GACjB,MAAM,uBAAuB,IAAI,IAAI;GACrC,KAAK,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,CAAC,GAAG;IACjD,MAAM,MAAM,MAAM,QAAQ;IAC1B,IAAI,QAAQ,KAAK,GAAG;KACnB,YAAY,KAAK,eAAe,KAAK,OAAO,gBAAgB,CAAC;KAC7D;IACD;IACA,MAAM,QAAQ,MAAM,MAAM;IAC1B,IAAI,UAAU,KAAK,GAAG;KACrB,YAAY,KAAK,eAAe,KAAK,OAAO,6BAA6B,IAAI,EAAE,CAAC;KAChF;IACD;IACA,MAAM,SAAS,GAAG,MAAM,OAAO,GAAG;IAClC,IAAI,CAAC,OAAO,IAAI;KACf,YAAY,KAAK,GAAG,OAAO,OAAO;KAClC;IACD;IACA,IAAI,KAAK,IAAI,GAAG,GAAG;KAClB,YAAY,KAAK,eAAe,KAAK,OAAO,kBAAkB,IAAI,EAAE,CAAC;KACrE;IACD;IACA,KAAK,IAAI,GAAG;IACZ,QAAQ,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC;GACjC;GACA,IAAI,YAAY,SAAS,GAAG,OAAO,MAAM,WAAW;GACpD,OAAO,GAAG,OAAO,YAAY,OAAO,CAAC;EACtC;CACD;AACD;AAGA,SAAS,IAAI,OAAO;CACnB,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,OAAO;EACP,OAAO,KAAK;EACZ,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,SAAS,QAAQ,MAAM;IAC7B,IAAI,WAAW,KAAK,GAAG,OAAO,GAAG,MAAM;GACxC;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC;EACrE;CACD;CACA,OAAO;EACN,MAAM;EACN,OAAO,KAAK,UAAU,KAAK;EAC3B;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAChB;QAAA,QAAQ,MAAM,MAAM,OAAO,OAAO,GAAG,KAAK;GAAA;GAE/C,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,KAAK,UAAU,KAAK,GAAG,CAAC,CAAC;EAC7E;CACD;AACD;AAGA,SAAS,eAAe,MAAM,QAAQ;CACrC,OAAO;EACN,OAAO;EACP;EACA,eAAe,OAAO;EACtB,YAAY,OAAO,cAAc,CAAC;EAClC,OAAO,OAAO,SAAS,CAAC;EACxB,GAAG,OAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;CAC5D;AACD;AAGA,SAAS,eAAe,MAAM,QAAQ;CACrC,OAAO;EACN,OAAO;EACP;EACA,eAAe,OAAO;EACtB,YAAY,OAAO,cAAc,CAAC;EAClC,OAAO,OAAO,SAAS,CAAC;EACxB,GAAG,OAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;CAC5D;AACD;AAGA,SAAS,SAAS,MAAM,GAAG,MAAM;CAChC,IAAI,KAAK,WAAW,GAAG,OAAO;EAC7B,GAAG;EACH,UAAU;EACV,YAAY;CACb;CACA,OAAO;EACN,GAAG;EACH,UAAU;EACV,YAAY;EACZ,cAAc,KAAK;CACpB;AACD;AAGA,SAAS,oBAAoB,aAAa,SAAS;CAClD,IAAI,gBAAgB,KAAK,GAAG,OAAO,KAAK;CACxC,KAAK,MAAM,SAAS,OAAO,OAAO,WAAW,GAAG;EAC/C,IAAI,UAAU,KAAK,GAAG;EACtB,IAAI,8BAA8B,KAAK,GAAG;GACzC,IAAI,MAAM,YAAY,SAAS,OAAO;GACtC;EACD;EACA,MAAM,SAAS,oBAAoB,OAAO,OAAO;EACjD,IAAI,WAAW,KAAK,GAAG,OAAO;CAC/B;AACD;AACA,SAAS,iCAAiC,OAAO;CAChD,MAAM,SAAS,0BAA0B,MAAM,aAAa,MAAM,KAAK;CACvE,OAAO,uBAAuB,MAAM,MAAM,OAAO,MAAM,YAAY,MAAM,UAAU,MAAM,aAAa,MAAM;AAC7G;AACA,MAAM,YAAY;CACjB,OAAO;EACN,QAAQ;EACR,MAAM;EACN,QAAQ;CACT;CACA,KAAK;EACJ,QAAQ;EACR,MAAM;EACN,QAAQ;CACT;AACD;AACA,SAAS,0BAA0B,aAAa,OAAO;CACtD,MAAM,uBAAuB,cAAc,8BAA8B,OAAO,OAAO,YAAY,SAAS,MAAM,CAAC;CACnH,MAAM,gBAAgB,CAAC,sBAAsB,GAAG,OAAO,OAAO,YAAY,SAAS,UAAU,CAAC,CAAC,KAAK,cAAc,cAAc,UAAU,MAAM,OAAO,OAAO,UAAU,MAAM,CAAC,CAAC,CAAC;CACjL,MAAM,qBAAqB,uBAAuB,aAAa,KAAK;CACpE,OAAO;EACN,gBAAgB,cAAc,MAAM,cAAc,UAAU,SAAS,kBAAkB,KAAK;EAC5F;CACD;AACD;AACA,SAAS,cAAc,MAAM,QAAQ;CACpC,OAAO,iBAAiB;EACvB,MAAM;EACN;EACA,SAAS,wBAAwB,OAAO,KAAK,WAAW;GACvD,MAAM;GACN,MAAM,MAAM;GACZ,QAAQ,CAAC;GACT,YAAY,CAAC;GACb,MAAM;EACP,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACX,MAAM;CACP,CAAC;AACF;AACA,SAAS,uBAAuB,aAAa,OAAO;CACnD,KAAK,MAAM,aAAa,OAAO,OAAO,YAAY,SAAS,UAAU,GAAG,IAAI,OAAO,OAAO,UAAU,MAAM,CAAC,CAAC,MAAM,cAAc,cAAc,KAAK,GAAG,OAAO,UAAU;CACvK,OAAO;AACR;AAGA,MAAM,4BAA4B;;;;;AAKlC,SAAS,0BAA0B,MAAM,YAAY,YAAY,aAAa;CAC7E,MAAM,UAAU,KAAK,QAAQ,CAAC,EAAE,QAAQ;CACxC,MAAM,YAAY,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK;CACzC,MAAM,kBAAkB,CAAC;CACzB,MAAM,aAAa,CAAC;CACpB,MAAM,qCAAqC,IAAI,IAAI;CACnD,KAAK,MAAM,aAAa,KAAK,WAAW,GAAG;EAC1C,MAAM,OAAO,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK;EACnD,MAAM,OAAO,MAAM,KAAK,UAAU,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,QAAQ;GACnE,MAAM,QAAQ,IAAI,MAAM;GACxB,OAAO;IACN,MAAM;IACN,OAAO,UAAU,KAAK,IAAI,KAAK,YAAY,MAAM,MAAM,CAAC,CAAC,KAAK;IAC9D,MAAM,YAAY,IAAI,QAAQ,UAAU;GACzC;EACD,CAAC;EACD,MAAM,OAAO,YAAY,UAAU,QAAQ,UAAU;EACrD,gBAAgB,KAAK;GACpB;GACA;GACA;EACD,CAAC;EACD,IAAI,eAAe,KAAK,GAAG;EAC3B,MAAM,SAAS,oBAAoB,WAAW,MAAM,MAAM,YAAY,oBAAoB,SAAS,WAAW,UAAU;EACxH,IAAI,OAAO,IAAI,WAAW,QAAQ,OAAO;OACpC,YAAY,KAAK,GAAG,OAAO,WAAW;CAC5C;CACA,MAAM,aAAa,CAAC;CACpB,KAAK,MAAM,SAAS,KAAK,QAAQ,GAAG;EACnC,MAAM,MAAM,MAAM,IAAI,CAAC,EAAE,KAAK;EAC9B,IAAI,QAAQ,KAAK,GAAG;EACpB,MAAM,OAAO,YAAY,MAAM,QAAQ,UAAU;EACjD,IAAI,OAAO,OAAO,YAAY,GAAG,GAAG;GACnC,YAAY,KAAK;IAChB,MAAM;IACN,SAAS,wBAAwB,IAAI,QAAQ,QAAQ,WAAW,UAAU;IAC1E,OAAO;KACN,OAAO,WAAW,WAAW,MAAM,OAAO,MAAM;KAChD,KAAK,WAAW,WAAW,MAAM,OAAO,SAAS,MAAM,OAAO,MAAM,UAAU;IAC/E;GACD,CAAC;GACD;EACD;EACA,WAAW,OAAO,sBAAsB,OAAO,YAAY,WAAW,MAAM,MAAM,YAAY,WAAW;CAC1G;CACA,OAAO;EACN,MAAM,YAAY,iBAAiB;EACnC;EACA,MAAM;EACN;EACA;EACA;EACA,MAAM,YAAY,KAAK,QAAQ,UAAU;CAC1C;AACD;AACA,SAAS,oBAAoB,WAAW,MAAM,MAAM,YAAY,WAAW,SAAS,WAAW,YAAY;CAC1G,MAAM,QAAQ,eAAe,MAAM,UAAU;CAC7C,MAAM,WAAW,WAAW,cAAc,CAAC;CAC3C,IAAI,CAAC,OAAO,OAAO,UAAU,IAAI,GAAG,OAAO;EAC1C,IAAI;EACJ,aAAa,CAAC;GACb,MAAM;GACN,SAAS,wBAAwB,KAAK,QAAQ,QAAQ,WAAW,UAAU;GAC3E;EACD,CAAC;CACF;CACA,IAAI,UAAU,IAAI,IAAI,GAAG,OAAO;EAC/B,IAAI;EACJ,aAAa,CAAC;GACb,MAAM;GACN,SAAS,0BAA0B,KAAK,QAAQ,QAAQ,WAAW,UAAU;GAC7E;EACD,CAAC;CACF;CACA,UAAU,IAAI,IAAI;CAClB,MAAM,SAAS,mBAAmB,WAAW,UAAU,SAAS,KAAK,CAAC,CAAC,GAAG;EACzE,UAAU;EACV;CACD,CAAC;CACD,IAAI,CAAC,OAAO,IAAI,OAAO;EACtB,IAAI;EACJ,aAAa,OAAO,QAAQ,KAAK,eAAe,kBAAkB,YAAY,UAAU,CAAC;CAC1F;CACA,OAAO;EACN,IAAI;EACJ,OAAO;GACN,MAAM,OAAO;GACb;EACD;CACD;AACD;AACA,SAAS,kBAAkB,YAAY,YAAY;CAClD,OAAO;EACN,MAAM,WAAW;EACjB,SAAS,WAAW;EACpB,OAAO,eAAe,WAAW,MAAM,UAAU;CAClD;AACD;AACA,SAAS,eAAe,MAAM,YAAY;CACzC,OAAO;EACN,OAAO,WAAW,WAAW,KAAK,MAAM,MAAM;EAC9C,KAAK,WAAW,WAAW,KAAK,IAAI,MAAM;CAC3C;AACD;AACA,SAAS,sBAAsB,OAAO,OAAO,MAAM,YAAY,aAAa;CAC3E,MAAM,QAAQ,MAAM,MAAM;CAC1B,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN;CACD;CACA,OAAO,0BAA0B,OAAO,OAAO,MAAM,YAAY,WAAW;AAC7E;AACA,SAAS,0BAA0B,OAAO,OAAO,MAAM,YAAY,aAAa;CAC/E,MAAM,MAAM,YAAY,MAAM,MAAM,CAAC,CAAC,KAAK;CAC3C,IAAI,OAAO,SAAS,QAAQ;EAC3B,MAAM,QAAQ,gBAAgB,KAAK,MAAM,MAAM;EAC/C,IAAI,CAAC,OAAO;GACX,aAAa,KAAK;IACjB,MAAM;IACN,SAAS,gDAAgD;IACzD,OAAO;KACN,OAAO,WAAW,WAAW,MAAM,OAAO,MAAM;KAChD,KAAK,WAAW,WAAW,MAAM,OAAO,SAAS,MAAM,OAAO,MAAM,UAAU;IAC/E;GACD,CAAC;GACD,OAAO;IACN,MAAM;IACN;IACA;GACD;EACD;EACA,MAAM,QAAQ,CAAC;EACf,KAAK,MAAM,WAAW,MAAM,SAAS,GAAG,MAAM,KAAK,0BAA0B,SAAS,MAAM,IAAI,YAAY,QAAQ,QAAQ,UAAU,GAAG,YAAY,WAAW,CAAC;EACjK,OAAO;GACN,MAAM;GACN;GACA;EACD;CACD;CACA,QAAQ,OAAO,MAAf;EACC,KAAK,OAAO,OAAO;GAClB,MAAM;GACN,YAAY;GACZ;EACD;EACA,KAAK,UAAU,OAAO;GACrB,MAAM;GACN,OAAO;GACP;EACD;EACA,SAAS,OAAO;GACf,MAAM;GACN;GACA;EACD;CACD;AACD;;;;;AAOA,SAAS,iBAAiB,SAAS;CAClC,MAAM,EAAE,UAAU,YAAY,wBAAwB;CACtD,MAAM,cAAc,CAAC;CACrB,MAAM,aAAa,CAAC;CACpB,MAAM,aAAa,CAAC;CACpB,MAAM,SAAS,CAAC;CAChB,MAAM,SAAS,CAAC;CAChB,MAAM,iBAAiB,CAAC;CACxB,MAAM,gCAAgC,IAAI,IAAI;CAC9C,MAAM,SAAS,OAAO,SAAS;EAC9B,MAAM,OAAO,MAAM,KAAK;EACxB,IAAI,SAAS,KAAK,GAAG,OAAO,KAAK;EACjC,IAAI,MAAM,IAAI,IAAI,GAAG;GACpB,MAAM,QAAQ,UAAU,MAAM,UAAU;GACxC,IAAI,OAAO,YAAY,KAAK;IAC3B,MAAM;IACN,SAAS,6BAA6B,KAAK;IAC3C;GACD,CAAC;GACD;EACD;EACA,MAAM,IAAI,IAAI;EACd,OAAO;CACR;CACA,KAAK,MAAM,eAAe,SAAS,aAAa,GAAG,IAAI,uBAAuB,qBAAqB;EAClG,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;EACpD,IAAI,SAAS,KAAK,GAAG,OAAO,QAAQ,WAAW,MAAM,aAAa,YAAY,WAAW;CAC1F,OAAO,IAAI,uBAAuB,6BAA6B;EAC9D,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;EACpD,IAAI,SAAS,KAAK,GAAG,eAAe,QAAQ,mBAAmB,MAAM,aAAa,YAAY,WAAW;CAC1G,OAAO,IAAI,uBAAuB,4BAA4B;EAC7D,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;EACpD,IAAI,SAAS,KAAK,GAAG,OAAO,QAAQ,WAAW,MAAM,aAAa,YAAY,qBAAqB,WAAW;CAC/G,OAAO,IAAI,uBAAuB,yBAAyB;EAC1D,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;EACpD,IAAI,SAAS,KAAK,GAAG,WAAW,QAAQ,eAAe,MAAM,aAAa,aAAa,YAAY,mBAAmB;CACvH,OAAO,IAAI,uBAAuB,eAAe,KAAK,MAAM,WAAW,YAAY,aAAa,GAAG;EAClG,MAAM,OAAO,MAAM,eAAe,QAAQ,KAAK,CAAC;EAChD,IAAI,SAAS,KAAK,GAAG;EACrB,MAAM,WAAW,wBAAwB,SAAS,UAAU;EAC5D,WAAW,QAAQ;GAClB,MAAM;GACN;GACA,MAAM;GACN,MAAM,YAAY,QAAQ,QAAQ,UAAU;GAC5C,GAAG;EACJ;CACD;CACA,OAAO;EACN,OAAO,EAAE,UAAU;GAClB;GACA;GACA;GACA;GACA;EACD,EAAE;EACF;CACD;AACD;AACA,SAAS,WAAW,MAAM,MAAM,YAAY,aAAa;CACxD,OAAO;EACN,MAAM;EACN;EACA;EACA,MAAM,YAAY,KAAK,QAAQ,UAAU;EACzC,QAAQ,YAAY,MAAM,KAAK,OAAO,GAAG,YAAY,WAAW;EAChE,YAAY,uBAAuB,KAAK,WAAW,GAAG,UAAU;CACjE;AACD;AACA,SAAS,mBAAmB,MAAM,MAAM,YAAY,aAAa;CAChE,OAAO;EACN,MAAM;EACN;EACA;EACA,MAAM,YAAY,KAAK,QAAQ,UAAU;EACzC,QAAQ,YAAY,MAAM,KAAK,OAAO,GAAG,YAAY,WAAW;EAChE,YAAY,uBAAuB,KAAK,WAAW,GAAG,UAAU;CACjE;AACD;AACA,SAAS,WAAW,MAAM,MAAM,YAAY,qBAAqB,aAAa;CAC7E,MAAM,UAAU,KAAK,QAAQ,CAAC,EAAE,QAAQ;CACxC,MAAM,aAAa,oBAAoB,qBAAqB,OAAO;CACnE,OAAO;EACN,MAAM;EACN;EACA;EACA;EACA,MAAM,YAAY,KAAK,QAAQ,UAAU;EACzC,OAAO,0BAA0B,MAAM,YAAY,YAAY,WAAW;CAC3E;AACD;AACA,SAAS,eAAe,MAAM,MAAM,aAAa,YAAY,qBAAqB;CACjF,MAAM,SAAS,CAAC;CAChB,MAAM,iBAAiB,CAAC;CACxB,MAAM,SAAS,CAAC;CAChB,MAAM,wBAAwB,IAAI,IAAI;CACtC,KAAK,MAAM,UAAU,KAAK,aAAa,GAAG;EACzC,MAAM,aAAa,OAAO,KAAK,CAAC,EAAE,KAAK;EACvC,IAAI,eAAe,KAAK,GAAG;EAC3B,IAAI,MAAM,IAAI,UAAU,GAAG;GAC1B,MAAM,QAAQ,UAAU,OAAO,KAAK,GAAG,UAAU;GACjD,IAAI,OAAO,YAAY,KAAK;IAC3B,MAAM;IACN,SAAS,6BAA6B,WAAW;IACjD;GACD,CAAC;GACD;EACD;EACA,MAAM,IAAI,UAAU;EACpB,IAAI,kBAAkB,qBAAqB,OAAO,cAAc,WAAW,YAAY,QAAQ,YAAY,WAAW;OACjH,IAAI,kBAAkB,6BAA6B,eAAe,cAAc,mBAAmB,YAAY,QAAQ,YAAY,WAAW;OAC9I,IAAI,kBAAkB,4BAA4B,OAAO,cAAc,WAAW,YAAY,QAAQ,YAAY,qBAAqB,WAAW;CACxJ;CACA,OAAO;EACN,MAAM;EACN;EACA;EACA,MAAM,YAAY,KAAK,QAAQ,UAAU;EACzC;EACA;EACA;CACD;AACD;AACA,SAAS,YAAY,WAAW,QAAQ,YAAY,aAAa;CAChE,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,SAAS,QAAQ;EAC3B,MAAM,WAAW,MAAM,KAAK;EAC5B,MAAM,OAAO,UAAU,KAAK;EAC5B,IAAI,SAAS,KAAK,GAAG;EACrB,IAAI,OAAO,OAAO,QAAQ,IAAI,GAAG;GAChC,MAAM,QAAQ,UAAU,UAAU,UAAU;GAC5C,IAAI,OAAO,YAAY,KAAK;IAC3B,MAAM;IACN,SAAS,6BAA6B,KAAK;IAC3C;GACD,CAAC;GACD;EACD;EACA,OAAO,QAAQ,WAAW,WAAW,MAAM,OAAO,YAAY,WAAW;CAC1E;CACA,OAAO;AACR;AACA,SAAS,WAAW,WAAW,MAAM,MAAM,YAAY,aAAa;CACnE,MAAM,aAAa,uBAAuB,KAAK,WAAW,GAAG,UAAU;CACvE,MAAM,OAAO,YAAY,KAAK,QAAQ,UAAU;CAChD,MAAM,aAAa,KAAK,eAAe;CACvC,MAAM,WAAW,YAAY,KAAK;CAClC,IAAI,UAAU,gBAAgB,GAAG;EAChC,MAAM,OAAO,SAAS,KAAK;EAC3B,YAAY,KAAK;GAChB,MAAM;GACN,SAAS,UAAU,UAAU,GAAG,KAAK,mCAAmC,KAAK,KAAK,GAAG,EAAE;GACvF,OAAO,UAAU,SAAS,QAAQ,UAAU;EAC7C,CAAC;EACD,OAAO;GACN,MAAM;GACN;GACA;GACA;GACA,UAAU,KAAK,KAAK,SAAS,MAAM;GACnC,UAAU;GACV,MAAM;GACN,eAAe;GACf;EACD;CACD;CACA,MAAM,kBAAkB,YAAY,cAAc,IAAI,4BAA4B,YAAY,UAAU,IAAI,KAAK;CACjH,MAAM,kBAAkB,UAAU,UAAU,CAAC,EAAE,KAAK;CACpD,MAAM,sBAAsB,UAAU,MAAM,CAAC,EAAE,KAAK;CACpD,OAAO;EACN,MAAM;EACN;EACA;EACA;EACA,UAAU,UAAU,WAAW,CAAC,EAAE,KAAK,KAAK;EAC5C,GAAG,oBAAoB,KAAK,IAAI,EAAE,gBAAgB,IAAI,CAAC;EACvD,GAAG,wBAAwB,KAAK,IAAI,EAAE,oBAAoB,IAAI,CAAC;EAC/D,UAAU,YAAY,WAAW,KAAK;EACtC,MAAM,YAAY,OAAO,KAAK;EAC9B,GAAG,oBAAoB,KAAK,IAAI,EAAE,gBAAgB,IAAI,CAAC;EACvD;CACD;AACD;AACA,SAAS,wBAAwB,MAAM,YAAY;CAClD,MAAM,aAAa,KAAK,eAAe;CACvC,MAAM,gBAAgB,YAAY,cAAc,KAAK;CACrD,MAAM,WAAW,YAAY,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,KAAK;CACxD,MAAM,kBAAkB,4BAA4B,YAAY,UAAU;CAC1E,OAAO;EACN;EACA,GAAG,CAAC,iBAAiB,aAAa,KAAK,IAAI,EAAE,SAAS,IAAI,CAAC;EAC3D,GAAG,oBAAoB,KAAK,IAAI,EAAE,gBAAgB,IAAI,CAAC;EACvD,YAAY,uBAAuB,KAAK,WAAW,GAAG,UAAU;CACjE;AACD;AACA,SAAS,UAAU,MAAM,YAAY;CACpC,IAAI,SAAS,KAAK,GAAG,OAAO,KAAK;CACjC,KAAK,MAAM,SAAS,KAAK,OAAO,OAAO,GAAG,IAAI,MAAM,SAAS,SAAS,OAAO;EAC5E,OAAO,WAAW,WAAW,MAAM,MAAM;EACzC,KAAK,WAAW,WAAW,MAAM,SAAS,MAAM,KAAK,MAAM;CAC5D;AACD;AACA,SAAS,UAAU,MAAM,YAAY;CACpC,MAAM,QAAQ,KAAK;CACnB,MAAM,MAAM,QAAQ,KAAK,MAAM;CAC/B,OAAO;EACN,OAAO,WAAW,WAAW,KAAK;EAClC,KAAK,WAAW,WAAW,GAAG;CAC/B;AACD"}
|
package/dist/psl-printer.mjs
CHANGED
|
@@ -190,7 +190,7 @@ function serializeModel(model) {
|
|
|
190
190
|
function formatFieldType(field) {
|
|
191
191
|
let type = field.typeName;
|
|
192
192
|
if (field.list) type += "[]";
|
|
193
|
-
|
|
193
|
+
if (field.optional) type += "?";
|
|
194
194
|
return type;
|
|
195
195
|
}
|
|
196
196
|
const DEFAULT_AST_PRINT_HEADER = "// use prisma-8\n// Contract inferred from the live database schema. Edit as needed, then run `prisma contract emit`.";
|
package/dist/psl-printer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psl-printer.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-printer/dist/index.mjs"],"sourcesContent":["import { ifDefined } from \"@internal/utils/defined\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/contract-errors.ts\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/serialize-print-document.ts\n/**\n* Indent unit used for PSL block bodies and namespace nesting.\n*/\nconst PSL_INDENT_UNIT = \" \";\nfunction buildPslBlockDispatchMap(namespace) {\n\tconst byKeyword = /* @__PURE__ */ new Map();\n\tif (namespace) collectBlockDescriptors(namespace, byKeyword);\n\treturn { byKeyword };\n}\nfunction collectBlockDescriptors(namespace, byKeyword) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tbyKeyword.set(value.keyword, value);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) collectBlockDescriptors(value, byKeyword);\n\t}\n}\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\nfunction serializePrintDocument(doc, options = {}) {\n\tconst sections = [];\n\tsections.push(doc.headerComment);\n\tconst namedTypeEntries = [...doc.namedTypes].sort((a, b) => a.name.localeCompare(b.name));\n\tif (namedTypeEntries.length > 0) sections.push(serializeTypesBlock(namedTypeEntries));\n\tconst blockDispatchMap = buildPslBlockDispatchMap(options.pslBlockDescriptors);\n\tfor (const namespace of doc.namespaces) {\n\t\tconst namespaceSections = serializeNamespaceContents(namespace, blockDispatchMap, options.codecLookup);\n\t\tif (namespaceSections.length === 0) continue;\n\t\tif (namespace.name === UNSPECIFIED_PSL_NAMESPACE_ID) sections.push(...namespaceSections);\n\t\telse sections.push(wrapNamespaceBlock(namespace.name, namespaceSections));\n\t}\n\treturn `${sections.join(\"\\n\\n\")}\\n`;\n}\nfunction serializeNamespaceContents(namespace, blockDispatchMap, codecLookup) {\n\tconst sections = [];\n\tfor (const model of namespace.models) sections.push(serializeModel(model));\n\tfor (const extensionBlock of namespace.extensionBlocks) sections.push(serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup));\n\treturn sections;\n}\nfunction serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup) {\n\tconst descriptor = blockDispatchMap.byKeyword.get(extensionBlock.keyword);\n\tif (!descriptor) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `No pslBlockDescriptors contribution registered for extension-contributed block keyword \"${extensionBlock.keyword}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-missing\",\n\t\tkeyword: extensionBlock.keyword\n\t} });\n\tif (descriptor.discriminator !== extensionBlock.kind) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `The pslBlockDescriptors contribution for keyword \"${extensionBlock.keyword}\" owns discriminator \"${descriptor.discriminator}\", but the block carries kind \"${extensionBlock.kind}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-kind-mismatch\",\n\t\tkeyword: extensionBlock.keyword,\n\t\tdescriptorDiscriminator: descriptor.discriminator,\n\t\tblockKind: extensionBlock.kind\n\t} });\n\tconst lines = [`${extensionBlock.keyword} ${extensionBlock.name} {`];\n\tfor (const [paramName, paramDescriptor] of Object.entries(descriptor.parameters)) {\n\t\tconst paramValue = extensionBlock.parameters[paramName];\n\t\tif (paramValue === void 0) continue;\n\t\tconst rendered = renderParamValue(paramValue, paramDescriptor, codecLookup, paramName);\n\t\tlines.push(`${PSL_INDENT_UNIT}${paramName} = ${rendered}`);\n\t}\n\tif (descriptor.variadicParameters) for (const [paramName, paramValue] of Object.entries(extensionBlock.parameters)) {\n\t\tif (Object.hasOwn(descriptor.parameters, paramName)) continue;\n\t\tlines.push(`${PSL_INDENT_UNIT}${renderVariadicParam(paramName, paramValue)}`);\n\t}\n\tfor (const attr of extensionBlock.blockAttributes ?? []) {\n\t\tconst args = attr.args.map((arg) => arg.value).join(\", \");\n\t\tlines.push(`${PSL_INDENT_UNIT}@@${attr.name}${args.length > 0 ? `(${args})` : \"\"}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\n/**\n* Renders one undeclared parameter of a `variadicParameters` block (e.g. a\n* `native_enum` member line). Variadic entries have no per-parameter\n* descriptor, so there is no codec to round-trip a `value` through — the raw\n* PSL literal is emitted verbatim. A `bare` entry is just its key.\n*/\nfunction renderVariadicParam(paramName, paramValue) {\n\tif (paramValue.kind === \"bare\") return paramName;\n\treturn `${paramName} = ${renderVariadicValue(paramValue)}`;\n}\nfunction renderVariadicValue(paramValue) {\n\tswitch (paramValue.kind) {\n\t\tcase \"bare\": return \"\";\n\t\tcase \"value\": return paramValue.raw;\n\t\tcase \"ref\": return paramValue.identifier;\n\t\tcase \"option\": return paramValue.token;\n\t\tcase \"list\": return `[${paramValue.items.map(renderVariadicValue).join(\", \")}]`;\n\t}\n}\nfunction renderParamValue(paramValue, descriptor, codecLookup, paramName) {\n\tswitch (descriptor.kind) {\n\t\tcase \"ref\":\n\t\t\tif (paramValue.kind !== \"ref\") throw paramKindMismatchError(paramName, \"ref\", paramValue.kind);\n\t\t\treturn paramValue.identifier;\n\t\tcase \"value\":\n\t\t\tif (paramValue.kind !== \"value\") throw paramKindMismatchError(paramName, \"value\", paramValue.kind);\n\t\t\treturn renderValueParam(paramValue.raw, descriptor.codecId, codecLookup, paramName);\n\t\tcase \"option\":\n\t\t\tif (paramValue.kind !== \"option\") throw paramKindMismatchError(paramName, \"option\", paramValue.kind);\n\t\t\treturn paramValue.token;\n\t\tcase \"list\":\n\t\t\tif (paramValue.kind !== \"list\") throw paramKindMismatchError(paramName, \"list\", paramValue.kind);\n\t\t\treturn `[${paramValue.items.map((item) => renderParamValue(item, descriptor.of, codecLookup, paramName)).join(\", \")}]`;\n\t}\n}\nfunction paramKindMismatchError(paramName, descriptorKind, valueKind) {\n\treturn contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": descriptor is \"${descriptorKind}\" but AST node has kind \"${valueKind}\"`, { meta: {\n\t\treason: \"param-kind-mismatch\",\n\t\tparamName,\n\t\tdescriptorKind,\n\t\tvalueKind\n\t} });\n}\nfunction renderValueParam(raw, codecId, codecLookup, paramName) {\n\tif (!codecLookup) return raw;\n\tconst codec = codecLookup.get(codecId);\n\tif (!codec) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": no codec registered for id \"${codecId}\"`, { meta: {\n\t\treason: \"codec-unregistered\",\n\t\tparamName,\n\t\tcodecId\n\t} });\n\tlet parsedJson;\n\ttry {\n\t\tparsedJson = JSON.parse(raw);\n\t} catch (e) {\n\t\tthrow contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": codec \"${codecId}\" — raw literal is not valid JSON: ${String(e)}`, {\n\t\t\tmeta: {\n\t\t\t\treason: \"raw-literal-invalid-json\",\n\t\t\t\tparamName,\n\t\t\t\tcodecId\n\t\t\t},\n\t\t\tcause: e\n\t\t});\n\t}\n\treturn JSON.stringify(codec.encodeJson(codec.decodeJson(blindCast(parsedJson))));\n}\nfunction wrapNamespaceBlock(name, innerSections) {\n\treturn `namespace ${name} {\\n${innerSections.map((section) => section.split(\"\\n\").map((line) => line.length > 0 ? ` ${line}` : line).join(\"\\n\")).join(\"\\n\\n\")}\\n}`;\n}\nfunction serializeTypesBlock(namedTypes) {\n\tconst lines = [\"types {\"];\n\tfor (const nt of namedTypes) {\n\t\tconst attrStr = nt.attributes.length > 0 ? ` ${nt.attributes.join(\" \")}` : \"\";\n\t\tlines.push(` ${nt.name} = ${nt.baseType}${attrStr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction serializeModel(model) {\n\tconst lines = [];\n\tif (model.comment) lines.push(model.comment);\n\tlines.push(`model ${model.name} {`);\n\tconst idFields = model.fields.filter((f) => f.isId);\n\tconst scalarFields = model.fields.filter((f) => !f.isId && !f.isRelation);\n\tconst relationFields = model.fields.filter((f) => f.isRelation);\n\tconst allOrderedFields = [\n\t\t...idFields,\n\t\t...scalarFields,\n\t\t...relationFields\n\t];\n\tif (allOrderedFields.length > 0) {\n\t\tconst maxNameLen = Math.max(...allOrderedFields.map((f) => f.name.length));\n\t\tconst maxTypeLen = Math.max(...allOrderedFields.map((f) => formatFieldType(f).length));\n\t\tfor (const field of allOrderedFields) {\n\t\t\tconst typePart = formatFieldType(field);\n\t\t\tconst paddedName = field.name.padEnd(maxNameLen);\n\t\t\tconst paddedType = typePart.padEnd(maxTypeLen);\n\t\t\tif (field.comment) lines.push(` ${field.comment}`);\n\t\t\tconst attrStr = field.attributes.length > 0 ? ` ${field.attributes.join(\" \")}` : \"\";\n\t\t\tlines.push(` ${paddedName} ${paddedType}${attrStr}`.trimEnd());\n\t\t}\n\t}\n\tif (model.modelAttributes.length > 0) {\n\t\tif (allOrderedFields.length > 0) lines.push(\"\");\n\t\tfor (const attr of model.modelAttributes) lines.push(` ${attr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction formatFieldType(field) {\n\tlet type = field.typeName;\n\tif (field.list) type += \"[]\";\n\telse if (field.optional) type += \"?\";\n\treturn type;\n}\n//#endregion\n//#region src/ast-to-print-document.ts\nconst DEFAULT_AST_PRINT_HEADER = \"// use prisma-8\\n// Contract inferred from the live database schema. Edit as needed, then run `prisma contract emit`.\";\nfunction astDocumentToPrintDocument(ast) {\n\tconst allModels = flatPslModels(ast);\n\tconst sortedModels = topologicalSortModels(allModels, buildModelFkDeps(allModels, new Set(allModels.map((m) => m.name))));\n\tconst namedTypes = ast.types ? ast.types.declarations.map(namedTypeDeclarationToPrinterNamedType) : [];\n\tconst modelOrder = new Map(sortedModels.map((model, index) => [model.name, index]));\n\tconst sectionsByName = /* @__PURE__ */ new Map();\n\tfor (const namespace of ast.namespaces) {\n\t\tconst section = sectionsByName.get(namespace.name) ?? {\n\t\t\tmodels: /* @__PURE__ */ new Map(),\n\t\t\tblocks: /* @__PURE__ */ new Map()\n\t\t};\n\t\tfor (const model of namespace.models) section.models.set(model.name, model);\n\t\tfor (const block of namespacePslExtensionBlocks(namespace)) section.blocks.set(`${block.kind} ${block.name}`, block);\n\t\tsectionsByName.set(namespace.name, section);\n\t}\n\tconst unranked = sortedModels.length;\n\tconst namespaceSections = [...sectionsByName].map(([name, section]) => ({\n\t\tname,\n\t\tmodels: [...section.models.values()].sort((a, b) => (modelOrder.get(a.name) ?? unranked) - (modelOrder.get(b.name) ?? unranked)).map((m) => modelToPrinterModel(m)),\n\t\textensionBlocks: [...section.blocks.values()]\n\t}));\n\tnamespaceSections.sort((a, b) => {\n\t\tif (a.name === b.name) return 0;\n\t\tif (a.name === UNSPECIFIED_PSL_NAMESPACE_ID) return -1;\n\t\tif (b.name === UNSPECIFIED_PSL_NAMESPACE_ID) return 1;\n\t\treturn a.name < b.name ? -1 : 1;\n\t});\n\treturn {\n\t\theaderComment: DEFAULT_AST_PRINT_HEADER,\n\t\tnamedTypes,\n\t\tnamespaces: namespaceSections\n\t};\n}\nfunction renderPslAttribute(attr) {\n\tconst prefix = attr.target === \"model\" || attr.target === \"enum\" ? \"@@\" : \"@\";\n\tif (attr.args.length === 0) return `${prefix}${attr.name}`;\n\tconst inner = attr.args.map(renderAttributeArgument).join(\", \");\n\treturn `${prefix}${attr.name}(${inner})`;\n}\nfunction renderAttributeArgument(arg) {\n\tif (arg.kind === \"positional\") return arg.value;\n\treturn `${arg.name}: ${arg.value}`;\n}\nfunction namedTypeDeclarationToPrinterNamedType(decl) {\n\tconst base = decl.baseType ?? (decl.typeConstructor !== void 0 ? formatTypeConstructor(decl.typeConstructor) : \"\");\n\tconst attributes = decl.attributes.map(renderPslAttribute);\n\treturn {\n\t\tname: decl.name,\n\t\tbaseType: base,\n\t\tattributes\n\t};\n}\nfunction formatTypeConstructor(tc) {\n\tconst path = tc.path.join(\".\");\n\tif (tc.args.length === 0) return path;\n\treturn `${path}(${tc.args.map(renderAttributeArgument).join(\", \")})`;\n}\nfunction getPositionalStringArg(attr, index) {\n\tconst raw = attr.args.filter((a) => a.kind === \"positional\")[index]?.value.trim();\n\tif (!raw) return void 0;\n\tconst m = raw.match(/^(['\"])(.*)\\1$/);\n\tif (!m) return void 0;\n\treturn unescapePslString(m[2]);\n}\n/**\n* Inverse of `escapePslString`. The parser stores quoted-literal arguments with\n* their PSL escape sequences (`\\\\`, `\\\"`, `\\n`, `\\r`) intact; when we round-trip\n* a value through `getPositionalStringArg` and re-render via `escapePslString`,\n* we must decode it once on extraction to avoid double-escaping the same\n* sequences on output.\n*/\nfunction unescapePslString(value) {\n\tlet result = \"\";\n\tfor (let i = 0; i < value.length; i++) {\n\t\tif (value.charCodeAt(i) !== 92 || i + 1 >= value.length) {\n\t\t\tresult += value[i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst next = value[i + 1];\n\t\tif (next === \"\\\\\" || next === \"\\\"\" || next === \"'\") result += next;\n\t\telse if (next === \"n\") result += \"\\n\";\n\t\telse if (next === \"r\") result += \"\\r\";\n\t\telse {\n\t\t\tresult += \"\\\\\";\n\t\t\tresult += next;\n\t\t}\n\t\ti++;\n\t}\n\treturn result;\n}\nfunction modelToPrinterModel(model) {\n\tlet mapName;\n\tconst modelAttrStrings = [];\n\tfor (const a of model.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"model\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tmodelAttrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) modelAttrStrings.push(`@@map(\"${escapePslString(mapName)}\")`);\n\tconst printerFields = model.fields.map((f) => fieldToPrinterField(f));\n\treturn {\n\t\tname: model.name,\n\t\tmapName,\n\t\tfields: printerFields,\n\t\tmodelAttributes: modelAttrStrings,\n\t\tcomment: model.comment\n\t};\n}\n/**\n* Assembles the qualified type name string for a field type reference.\n*\n* Handles all four forms:\n* - `space:ns.Name` — typeContractSpaceId + typeNamespaceId + typeName\n* - `space:Name` — typeContractSpaceId + typeName (no namespace)\n* - `ns.Name` — typeNamespaceId + typeName (no space); fixes TML-2459 printer gap\n* - `Name` — typeName only (no qualifier)\n*/\nfunction assembleQualifiedTypeName(field) {\n\tconst { typeName, typeNamespaceId, typeContractSpaceId } = field;\n\tconst dotted = typeNamespaceId !== void 0 ? `${typeNamespaceId}.${typeName}` : typeName;\n\treturn typeContractSpaceId !== void 0 ? `${typeContractSpaceId}:${dotted}` : dotted;\n}\nfunction fieldToPrinterField(field) {\n\tconst typeName = field.typeConstructor !== void 0 ? formatTypeConstructor(field.typeConstructor) : assembleQualifiedTypeName(field);\n\tlet mapName;\n\tconst attrStrings = [];\n\tfor (const a of field.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"field\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tattrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) attrStrings.push(`@map(\"${escapePslString(mapName)}\")`);\n\tconst isRelation = field.attributes.some((a) => a.name === \"relation\" && a.target === \"field\");\n\tconst isUnsupported = typeName.startsWith(\"Unsupported(\");\n\tconst isId = field.attributes.some((a) => a.name === \"id\" && a.target === \"field\");\n\treturn {\n\t\tname: field.name,\n\t\ttypeName,\n\t\toptional: field.optional,\n\t\tlist: field.list,\n\t\tattributes: attrStrings,\n\t\tmapName,\n\t\tisId,\n\t\tisRelation,\n\t\tisUnsupported,\n\t\tcomment: void 0\n\t};\n}\nfunction buildModelFkDeps(models, modelNames) {\n\tconst deps = /* @__PURE__ */ new Map();\n\tfor (const m of models) deps.set(m.name, /* @__PURE__ */ new Set());\n\tfor (const m of models) for (const field of m.fields) {\n\t\tconst refModel = relationReferencedModel(field, modelNames);\n\t\tif (!refModel || refModel === m.name) continue;\n\t\tif (!hasFullRelation(field)) continue;\n\t\tdeps.get(m.name).add(refModel);\n\t}\n\treturn deps;\n}\nfunction hasFullRelation(field) {\n\tconst rel = field.attributes.find((a) => a.name === \"relation\" && a.target === \"field\");\n\tif (!rel) return false;\n\tconst named = Object.fromEntries(rel.args.filter((a) => a.kind === \"named\").map((a) => [a.name, a.value.trim()]));\n\treturn named[\"fields\"] !== void 0 && named[\"references\"] !== void 0;\n}\nfunction relationReferencedModel(field, modelNames) {\n\tconst raw = field.typeConstructor?.path[0] ?? field.typeName.replace(/\\?$/, \"\").replace(/\\[\\]$/, \"\");\n\tif (raw.length === 0) return;\n\treturn modelNames.has(raw) ? raw : void 0;\n}\nfunction topologicalSortModels(models, deps) {\n\tconst byName = new Map(models.map((m) => [m.name, m]));\n\tconst result = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst visiting = /* @__PURE__ */ new Set();\n\tconst sortedNames = [...deps.keys()].sort();\n\tfunction visit(name) {\n\t\tif (visited.has(name)) return;\n\t\tif (visiting.has(name)) return;\n\t\tvisiting.add(name);\n\t\tconst sortedDeps = [...deps.get(name) ?? /* @__PURE__ */ new Set()].sort();\n\t\tfor (const dep of sortedDeps) visit(dep);\n\t\tvisiting.delete(name);\n\t\tvisited.add(name);\n\t\tconst model = byName.get(name);\n\t\tif (model) result.push(model);\n\t}\n\tfor (const name of sortedNames) visit(name);\n\treturn result;\n}\n//#endregion\n//#region src/print-psl.ts\nfunction printPslFromAst(ast, options = {}) {\n\treturn serializePrintDocument(astDocumentToPrintDocument(ast), {\n\t\t...ifDefined(\"pslBlockDescriptors\", options.pslBlockDescriptors),\n\t\t...ifDefined(\"codecLookup\", options.codecLookup)\n\t});\n}\n//#endregion\nexport { printPslFromAst as printPsl };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"psl-printer.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-printer/dist/index.mjs"],"sourcesContent":["import { ifDefined } from \"@internal/utils/defined\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/contract-errors.ts\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/serialize-print-document.ts\n/**\n* Indent unit used for PSL block bodies and namespace nesting.\n*/\nconst PSL_INDENT_UNIT = \" \";\nfunction buildPslBlockDispatchMap(namespace) {\n\tconst byKeyword = /* @__PURE__ */ new Map();\n\tif (namespace) collectBlockDescriptors(namespace, byKeyword);\n\treturn { byKeyword };\n}\nfunction collectBlockDescriptors(namespace, byKeyword) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tbyKeyword.set(value.keyword, value);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) collectBlockDescriptors(value, byKeyword);\n\t}\n}\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\nfunction serializePrintDocument(doc, options = {}) {\n\tconst sections = [];\n\tsections.push(doc.headerComment);\n\tconst namedTypeEntries = [...doc.namedTypes].sort((a, b) => a.name.localeCompare(b.name));\n\tif (namedTypeEntries.length > 0) sections.push(serializeTypesBlock(namedTypeEntries));\n\tconst blockDispatchMap = buildPslBlockDispatchMap(options.pslBlockDescriptors);\n\tfor (const namespace of doc.namespaces) {\n\t\tconst namespaceSections = serializeNamespaceContents(namespace, blockDispatchMap, options.codecLookup);\n\t\tif (namespaceSections.length === 0) continue;\n\t\tif (namespace.name === UNSPECIFIED_PSL_NAMESPACE_ID) sections.push(...namespaceSections);\n\t\telse sections.push(wrapNamespaceBlock(namespace.name, namespaceSections));\n\t}\n\treturn `${sections.join(\"\\n\\n\")}\\n`;\n}\nfunction serializeNamespaceContents(namespace, blockDispatchMap, codecLookup) {\n\tconst sections = [];\n\tfor (const model of namespace.models) sections.push(serializeModel(model));\n\tfor (const extensionBlock of namespace.extensionBlocks) sections.push(serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup));\n\treturn sections;\n}\nfunction serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup) {\n\tconst descriptor = blockDispatchMap.byKeyword.get(extensionBlock.keyword);\n\tif (!descriptor) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `No pslBlockDescriptors contribution registered for extension-contributed block keyword \"${extensionBlock.keyword}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-missing\",\n\t\tkeyword: extensionBlock.keyword\n\t} });\n\tif (descriptor.discriminator !== extensionBlock.kind) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `The pslBlockDescriptors contribution for keyword \"${extensionBlock.keyword}\" owns discriminator \"${descriptor.discriminator}\", but the block carries kind \"${extensionBlock.kind}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-kind-mismatch\",\n\t\tkeyword: extensionBlock.keyword,\n\t\tdescriptorDiscriminator: descriptor.discriminator,\n\t\tblockKind: extensionBlock.kind\n\t} });\n\tconst lines = [`${extensionBlock.keyword} ${extensionBlock.name} {`];\n\tfor (const [paramName, paramDescriptor] of Object.entries(descriptor.parameters)) {\n\t\tconst paramValue = extensionBlock.parameters[paramName];\n\t\tif (paramValue === void 0) continue;\n\t\tconst rendered = renderParamValue(paramValue, paramDescriptor, codecLookup, paramName);\n\t\tlines.push(`${PSL_INDENT_UNIT}${paramName} = ${rendered}`);\n\t}\n\tif (descriptor.variadicParameters) for (const [paramName, paramValue] of Object.entries(extensionBlock.parameters)) {\n\t\tif (Object.hasOwn(descriptor.parameters, paramName)) continue;\n\t\tlines.push(`${PSL_INDENT_UNIT}${renderVariadicParam(paramName, paramValue)}`);\n\t}\n\tfor (const attr of extensionBlock.blockAttributes ?? []) {\n\t\tconst args = attr.args.map((arg) => arg.value).join(\", \");\n\t\tlines.push(`${PSL_INDENT_UNIT}@@${attr.name}${args.length > 0 ? `(${args})` : \"\"}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\n/**\n* Renders one undeclared parameter of a `variadicParameters` block (e.g. a\n* `native_enum` member line). Variadic entries have no per-parameter\n* descriptor, so there is no codec to round-trip a `value` through — the raw\n* PSL literal is emitted verbatim. A `bare` entry is just its key.\n*/\nfunction renderVariadicParam(paramName, paramValue) {\n\tif (paramValue.kind === \"bare\") return paramName;\n\treturn `${paramName} = ${renderVariadicValue(paramValue)}`;\n}\nfunction renderVariadicValue(paramValue) {\n\tswitch (paramValue.kind) {\n\t\tcase \"bare\": return \"\";\n\t\tcase \"value\": return paramValue.raw;\n\t\tcase \"ref\": return paramValue.identifier;\n\t\tcase \"option\": return paramValue.token;\n\t\tcase \"list\": return `[${paramValue.items.map(renderVariadicValue).join(\", \")}]`;\n\t}\n}\nfunction renderParamValue(paramValue, descriptor, codecLookup, paramName) {\n\tswitch (descriptor.kind) {\n\t\tcase \"ref\":\n\t\t\tif (paramValue.kind !== \"ref\") throw paramKindMismatchError(paramName, \"ref\", paramValue.kind);\n\t\t\treturn paramValue.identifier;\n\t\tcase \"value\":\n\t\t\tif (paramValue.kind !== \"value\") throw paramKindMismatchError(paramName, \"value\", paramValue.kind);\n\t\t\treturn renderValueParam(paramValue.raw, descriptor.codecId, codecLookup, paramName);\n\t\tcase \"option\":\n\t\t\tif (paramValue.kind !== \"option\") throw paramKindMismatchError(paramName, \"option\", paramValue.kind);\n\t\t\treturn paramValue.token;\n\t\tcase \"list\":\n\t\t\tif (paramValue.kind !== \"list\") throw paramKindMismatchError(paramName, \"list\", paramValue.kind);\n\t\t\treturn `[${paramValue.items.map((item) => renderParamValue(item, descriptor.of, codecLookup, paramName)).join(\", \")}]`;\n\t}\n}\nfunction paramKindMismatchError(paramName, descriptorKind, valueKind) {\n\treturn contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": descriptor is \"${descriptorKind}\" but AST node has kind \"${valueKind}\"`, { meta: {\n\t\treason: \"param-kind-mismatch\",\n\t\tparamName,\n\t\tdescriptorKind,\n\t\tvalueKind\n\t} });\n}\nfunction renderValueParam(raw, codecId, codecLookup, paramName) {\n\tif (!codecLookup) return raw;\n\tconst codec = codecLookup.get(codecId);\n\tif (!codec) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": no codec registered for id \"${codecId}\"`, { meta: {\n\t\treason: \"codec-unregistered\",\n\t\tparamName,\n\t\tcodecId\n\t} });\n\tlet parsedJson;\n\ttry {\n\t\tparsedJson = JSON.parse(raw);\n\t} catch (e) {\n\t\tthrow contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": codec \"${codecId}\" — raw literal is not valid JSON: ${String(e)}`, {\n\t\t\tmeta: {\n\t\t\t\treason: \"raw-literal-invalid-json\",\n\t\t\t\tparamName,\n\t\t\t\tcodecId\n\t\t\t},\n\t\t\tcause: e\n\t\t});\n\t}\n\treturn JSON.stringify(codec.encodeJson(codec.decodeJson(blindCast(parsedJson))));\n}\nfunction wrapNamespaceBlock(name, innerSections) {\n\treturn `namespace ${name} {\\n${innerSections.map((section) => section.split(\"\\n\").map((line) => line.length > 0 ? ` ${line}` : line).join(\"\\n\")).join(\"\\n\\n\")}\\n}`;\n}\nfunction serializeTypesBlock(namedTypes) {\n\tconst lines = [\"types {\"];\n\tfor (const nt of namedTypes) {\n\t\tconst attrStr = nt.attributes.length > 0 ? ` ${nt.attributes.join(\" \")}` : \"\";\n\t\tlines.push(` ${nt.name} = ${nt.baseType}${attrStr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction serializeModel(model) {\n\tconst lines = [];\n\tif (model.comment) lines.push(model.comment);\n\tlines.push(`model ${model.name} {`);\n\tconst idFields = model.fields.filter((f) => f.isId);\n\tconst scalarFields = model.fields.filter((f) => !f.isId && !f.isRelation);\n\tconst relationFields = model.fields.filter((f) => f.isRelation);\n\tconst allOrderedFields = [\n\t\t...idFields,\n\t\t...scalarFields,\n\t\t...relationFields\n\t];\n\tif (allOrderedFields.length > 0) {\n\t\tconst maxNameLen = Math.max(...allOrderedFields.map((f) => f.name.length));\n\t\tconst maxTypeLen = Math.max(...allOrderedFields.map((f) => formatFieldType(f).length));\n\t\tfor (const field of allOrderedFields) {\n\t\t\tconst typePart = formatFieldType(field);\n\t\t\tconst paddedName = field.name.padEnd(maxNameLen);\n\t\t\tconst paddedType = typePart.padEnd(maxTypeLen);\n\t\t\tif (field.comment) lines.push(` ${field.comment}`);\n\t\t\tconst attrStr = field.attributes.length > 0 ? ` ${field.attributes.join(\" \")}` : \"\";\n\t\t\tlines.push(` ${paddedName} ${paddedType}${attrStr}`.trimEnd());\n\t\t}\n\t}\n\tif (model.modelAttributes.length > 0) {\n\t\tif (allOrderedFields.length > 0) lines.push(\"\");\n\t\tfor (const attr of model.modelAttributes) lines.push(` ${attr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction formatFieldType(field) {\n\tlet type = field.typeName;\n\tif (field.list) type += \"[]\";\n\tif (field.optional) type += \"?\";\n\treturn type;\n}\n//#endregion\n//#region src/ast-to-print-document.ts\nconst DEFAULT_AST_PRINT_HEADER = \"// use prisma-8\\n// Contract inferred from the live database schema. Edit as needed, then run `prisma contract emit`.\";\nfunction astDocumentToPrintDocument(ast) {\n\tconst allModels = flatPslModels(ast);\n\tconst sortedModels = topologicalSortModels(allModels, buildModelFkDeps(allModels, new Set(allModels.map((m) => m.name))));\n\tconst namedTypes = ast.types ? ast.types.declarations.map(namedTypeDeclarationToPrinterNamedType) : [];\n\tconst modelOrder = new Map(sortedModels.map((model, index) => [model.name, index]));\n\tconst sectionsByName = /* @__PURE__ */ new Map();\n\tfor (const namespace of ast.namespaces) {\n\t\tconst section = sectionsByName.get(namespace.name) ?? {\n\t\t\tmodels: /* @__PURE__ */ new Map(),\n\t\t\tblocks: /* @__PURE__ */ new Map()\n\t\t};\n\t\tfor (const model of namespace.models) section.models.set(model.name, model);\n\t\tfor (const block of namespacePslExtensionBlocks(namespace)) section.blocks.set(`${block.kind} ${block.name}`, block);\n\t\tsectionsByName.set(namespace.name, section);\n\t}\n\tconst unranked = sortedModels.length;\n\tconst namespaceSections = [...sectionsByName].map(([name, section]) => ({\n\t\tname,\n\t\tmodels: [...section.models.values()].sort((a, b) => (modelOrder.get(a.name) ?? unranked) - (modelOrder.get(b.name) ?? unranked)).map((m) => modelToPrinterModel(m)),\n\t\textensionBlocks: [...section.blocks.values()]\n\t}));\n\tnamespaceSections.sort((a, b) => {\n\t\tif (a.name === b.name) return 0;\n\t\tif (a.name === UNSPECIFIED_PSL_NAMESPACE_ID) return -1;\n\t\tif (b.name === UNSPECIFIED_PSL_NAMESPACE_ID) return 1;\n\t\treturn a.name < b.name ? -1 : 1;\n\t});\n\treturn {\n\t\theaderComment: DEFAULT_AST_PRINT_HEADER,\n\t\tnamedTypes,\n\t\tnamespaces: namespaceSections\n\t};\n}\nfunction renderPslAttribute(attr) {\n\tconst prefix = attr.target === \"model\" || attr.target === \"enum\" ? \"@@\" : \"@\";\n\tif (attr.args.length === 0) return `${prefix}${attr.name}`;\n\tconst inner = attr.args.map(renderAttributeArgument).join(\", \");\n\treturn `${prefix}${attr.name}(${inner})`;\n}\nfunction renderAttributeArgument(arg) {\n\tif (arg.kind === \"positional\") return arg.value;\n\treturn `${arg.name}: ${arg.value}`;\n}\nfunction namedTypeDeclarationToPrinterNamedType(decl) {\n\tconst base = decl.baseType ?? (decl.typeConstructor !== void 0 ? formatTypeConstructor(decl.typeConstructor) : \"\");\n\tconst attributes = decl.attributes.map(renderPslAttribute);\n\treturn {\n\t\tname: decl.name,\n\t\tbaseType: base,\n\t\tattributes\n\t};\n}\nfunction formatTypeConstructor(tc) {\n\tconst path = tc.path.join(\".\");\n\tif (tc.args.length === 0) return path;\n\treturn `${path}(${tc.args.map(renderAttributeArgument).join(\", \")})`;\n}\nfunction getPositionalStringArg(attr, index) {\n\tconst raw = attr.args.filter((a) => a.kind === \"positional\")[index]?.value.trim();\n\tif (!raw) return void 0;\n\tconst m = raw.match(/^(['\"])(.*)\\1$/);\n\tif (!m) return void 0;\n\treturn unescapePslString(m[2]);\n}\n/**\n* Inverse of `escapePslString`. The parser stores quoted-literal arguments with\n* their PSL escape sequences (`\\\\`, `\\\"`, `\\n`, `\\r`) intact; when we round-trip\n* a value through `getPositionalStringArg` and re-render via `escapePslString`,\n* we must decode it once on extraction to avoid double-escaping the same\n* sequences on output.\n*/\nfunction unescapePslString(value) {\n\tlet result = \"\";\n\tfor (let i = 0; i < value.length; i++) {\n\t\tif (value.charCodeAt(i) !== 92 || i + 1 >= value.length) {\n\t\t\tresult += value[i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst next = value[i + 1];\n\t\tif (next === \"\\\\\" || next === \"\\\"\" || next === \"'\") result += next;\n\t\telse if (next === \"n\") result += \"\\n\";\n\t\telse if (next === \"r\") result += \"\\r\";\n\t\telse {\n\t\t\tresult += \"\\\\\";\n\t\t\tresult += next;\n\t\t}\n\t\ti++;\n\t}\n\treturn result;\n}\nfunction modelToPrinterModel(model) {\n\tlet mapName;\n\tconst modelAttrStrings = [];\n\tfor (const a of model.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"model\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tmodelAttrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) modelAttrStrings.push(`@@map(\"${escapePslString(mapName)}\")`);\n\tconst printerFields = model.fields.map((f) => fieldToPrinterField(f));\n\treturn {\n\t\tname: model.name,\n\t\tmapName,\n\t\tfields: printerFields,\n\t\tmodelAttributes: modelAttrStrings,\n\t\tcomment: model.comment\n\t};\n}\n/**\n* Assembles the qualified type name string for a field type reference.\n*\n* Handles all four forms:\n* - `space:ns.Name` — typeContractSpaceId + typeNamespaceId + typeName\n* - `space:Name` — typeContractSpaceId + typeName (no namespace)\n* - `ns.Name` — typeNamespaceId + typeName (no space); fixes TML-2459 printer gap\n* - `Name` — typeName only (no qualifier)\n*/\nfunction assembleQualifiedTypeName(field) {\n\tconst { typeName, typeNamespaceId, typeContractSpaceId } = field;\n\tconst dotted = typeNamespaceId !== void 0 ? `${typeNamespaceId}.${typeName}` : typeName;\n\treturn typeContractSpaceId !== void 0 ? `${typeContractSpaceId}:${dotted}` : dotted;\n}\nfunction fieldToPrinterField(field) {\n\tconst typeName = field.typeConstructor !== void 0 ? formatTypeConstructor(field.typeConstructor) : assembleQualifiedTypeName(field);\n\tlet mapName;\n\tconst attrStrings = [];\n\tfor (const a of field.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"field\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tattrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) attrStrings.push(`@map(\"${escapePslString(mapName)}\")`);\n\tconst isRelation = field.attributes.some((a) => a.name === \"relation\" && a.target === \"field\");\n\tconst isUnsupported = typeName.startsWith(\"Unsupported(\");\n\tconst isId = field.attributes.some((a) => a.name === \"id\" && a.target === \"field\");\n\treturn {\n\t\tname: field.name,\n\t\ttypeName,\n\t\toptional: field.optional,\n\t\tlist: field.list,\n\t\tattributes: attrStrings,\n\t\tmapName,\n\t\tisId,\n\t\tisRelation,\n\t\tisUnsupported,\n\t\tcomment: void 0\n\t};\n}\nfunction buildModelFkDeps(models, modelNames) {\n\tconst deps = /* @__PURE__ */ new Map();\n\tfor (const m of models) deps.set(m.name, /* @__PURE__ */ new Set());\n\tfor (const m of models) for (const field of m.fields) {\n\t\tconst refModel = relationReferencedModel(field, modelNames);\n\t\tif (!refModel || refModel === m.name) continue;\n\t\tif (!hasFullRelation(field)) continue;\n\t\tdeps.get(m.name).add(refModel);\n\t}\n\treturn deps;\n}\nfunction hasFullRelation(field) {\n\tconst rel = field.attributes.find((a) => a.name === \"relation\" && a.target === \"field\");\n\tif (!rel) return false;\n\tconst named = Object.fromEntries(rel.args.filter((a) => a.kind === \"named\").map((a) => [a.name, a.value.trim()]));\n\treturn named[\"fields\"] !== void 0 && named[\"references\"] !== void 0;\n}\nfunction relationReferencedModel(field, modelNames) {\n\tconst raw = field.typeConstructor?.path[0] ?? field.typeName.replace(/\\?$/, \"\").replace(/\\[\\]$/, \"\");\n\tif (raw.length === 0) return;\n\treturn modelNames.has(raw) ? raw : void 0;\n}\nfunction topologicalSortModels(models, deps) {\n\tconst byName = new Map(models.map((m) => [m.name, m]));\n\tconst result = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst visiting = /* @__PURE__ */ new Set();\n\tconst sortedNames = [...deps.keys()].sort();\n\tfunction visit(name) {\n\t\tif (visited.has(name)) return;\n\t\tif (visiting.has(name)) return;\n\t\tvisiting.add(name);\n\t\tconst sortedDeps = [...deps.get(name) ?? /* @__PURE__ */ new Set()].sort();\n\t\tfor (const dep of sortedDeps) visit(dep);\n\t\tvisiting.delete(name);\n\t\tvisited.add(name);\n\t\tconst model = byName.get(name);\n\t\tif (model) result.push(model);\n\t}\n\tfor (const name of sortedNames) visit(name);\n\treturn result;\n}\n//#endregion\n//#region src/print-psl.ts\nfunction printPslFromAst(ast, options = {}) {\n\treturn serializePrintDocument(astDocumentToPrintDocument(ast), {\n\t\t...ifDefined(\"pslBlockDescriptors\", options.pslBlockDescriptors),\n\t\t...ifDefined(\"codecLookup\", options.codecLookup)\n\t});\n}\n//#endregion\nexport { printPslFromAst as printPsl };\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.20",
|
|
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.20",
|
|
19
|
+
"@internal/contract": "8.0.0-rc.11-dev.20",
|
|
20
|
+
"@internal/contract-authoring": "8.0.0-rc.11-dev.20",
|
|
21
|
+
"@internal/errors": "8.0.0-rc.11-dev.20",
|
|
22
|
+
"@internal/framework-components": "8.0.0-rc.11-dev.20",
|
|
23
|
+
"@internal/ids": "8.0.0-rc.11-dev.20",
|
|
24
|
+
"@internal/operations": "8.0.0-rc.11-dev.20",
|
|
25
|
+
"@internal/psl-parser": "8.0.0-rc.11-dev.20",
|
|
26
|
+
"@internal/psl-printer": "8.0.0-rc.11-dev.20",
|
|
27
|
+
"@internal/ts-render": "8.0.0-rc.11-dev.20",
|
|
28
|
+
"@repo/tsconfig": "8.0.0-rc.11-dev.20",
|
|
29
|
+
"@internal/publish-surface": "8.0.0-rc.11-dev.20",
|
|
30
|
+
"@repo/tsdown": "8.0.0-rc.11-dev.20",
|
|
31
|
+
"@internal/utils": "8.0.0-rc.11-dev.20",
|
|
32
32
|
"tsdown": "0.22.14",
|
|
33
33
|
"typescript": "5.9.3",
|
|
34
34
|
"vitest": "5.0.0-rc.2"
|