@prisma/orm-framework 8.0.0-rc.8-dev.15 → 8.0.0-rc.8-dev.17

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.
@@ -122,8 +122,9 @@ function bool() {
122
122
  kind: "bool",
123
123
  label: "boolean",
124
124
  parse: (arg, ctx) => {
125
- if (arg instanceof BooleanLiteralExprAst) {
126
- const value = arg.value();
125
+ const literal = BooleanLiteralExprAst.cast(arg.syntax);
126
+ if (literal !== void 0) {
127
+ const value = literal.value();
127
128
  if (value !== void 0) return ok(value);
128
129
  }
129
130
  return notOk([leafDiagnostic(ctx, arg, "Expected a boolean literal")]);
@@ -135,8 +136,9 @@ function entityRef() {
135
136
  kind: "entityRef",
136
137
  label: "model name",
137
138
  parse: (arg, ctx) => {
138
- if (!(arg instanceof IdentifierAst)) return notOk([leafDiagnostic(ctx, arg, "Expected a model name")]);
139
- const name = arg.name();
139
+ const identifier = IdentifierAst.cast(arg.syntax);
140
+ if (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a model name")]);
141
+ const name = identifier.name();
140
142
  if (name === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a model name")]);
141
143
  return ok(name);
142
144
  }
@@ -148,8 +150,9 @@ function fieldRef(scope) {
148
150
  label: "field name",
149
151
  scope,
150
152
  parse: (arg, ctx) => {
151
- if (!(arg instanceof IdentifierAst)) return notOk([leafDiagnostic(ctx, arg, "Expected a field name")]);
152
- const name = arg.name();
153
+ const identifier = IdentifierAst.cast(arg.syntax);
154
+ if (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a field name")]);
155
+ const name = identifier.name();
153
156
  if (name === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a field name")]);
154
157
  const model = scope === "self" ? ctx.selfModel : ctx.resolveReferencedModel();
155
158
  if (model !== void 0 && !Object.hasOwn(model.fields, name)) return notOk([leafDiagnostic(ctx, arg, `Field "${name}" does not exist on model "${model.name}"`)]);
@@ -272,20 +275,22 @@ function funcCall(name, sig) {
272
275
  };
273
276
  }
274
277
  function matchCallee(arg, name, ctx) {
275
- if (!(arg instanceof FunctionCallAst)) return notOk([leafDiagnostic(ctx, arg, "Expected a function call")]);
276
- const qname = arg.name();
278
+ const call = FunctionCallAst.cast(arg.syntax);
279
+ if (call === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a function call")]);
280
+ const qname = call.name();
277
281
  if (qname === void 0 || qname.dot() !== void 0 || qname.colon() !== void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a function call")]);
278
282
  const calleeName = qname.identifier()?.token()?.text;
279
283
  if (calleeName === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a function call")]);
280
284
  if (calleeName !== name) return notOk([leafDiagnostic(ctx, arg, `Expected ${name}()`)]);
281
- return ok(arg);
285
+ return ok(call);
282
286
  }
283
287
  function identifier(name) {
284
288
  return {
285
289
  kind: "identifier",
286
290
  label: name,
287
291
  parse: (arg, ctx) => {
288
- if (arg instanceof IdentifierAst && arg.name() === name) return ok(name);
292
+ const identifier = IdentifierAst.cast(arg.syntax);
293
+ if (identifier !== void 0 && identifier.name() === name) return ok(name);
289
294
  return notOk([leafDiagnostic(ctx, arg, `Expected ${name}`)]);
290
295
  }
291
296
  };
@@ -297,8 +302,9 @@ function int(opts) {
297
302
  kind: "int",
298
303
  label: "integer",
299
304
  parse: (arg, ctx) => {
300
- if (arg instanceof NumberLiteralExprAst) {
301
- const value = arg.value();
305
+ const literal = NumberLiteralExprAst.cast(arg.syntax);
306
+ if (literal !== void 0) {
307
+ const value = literal.value();
302
308
  if (value !== void 0 && Number.isInteger(value)) {
303
309
  if ((min === void 0 || value >= min) && (max === void 0 || value <= max)) return ok(value);
304
310
  return notOk([leafDiagnostic(ctx, arg, rangeMessage(min, max))]);
@@ -323,8 +329,9 @@ function json() {
323
329
  kind: "json",
324
330
  label: "JSON object",
325
331
  parse: (arg, ctx) => {
326
- if (!(arg instanceof StringLiteralExprAst)) return notOk([leafDiagnostic(ctx, arg, "Expected a JSON object string")]);
327
- const raw = arg.value();
332
+ const literal = StringLiteralExprAst.cast(arg.syntax);
333
+ if (literal === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected a JSON object string")]);
334
+ const raw = literal.value();
328
335
  if (raw !== void 0) try {
329
336
  const parsed = JSON.parse(raw);
330
337
  if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) return ok(blindCast(parsed));
@@ -338,11 +345,12 @@ function list(of, opts) {
338
345
  kind: "list",
339
346
  label: `${of.label}[]`,
340
347
  parse: (arg, ctx) => {
341
- if (!(arg instanceof ArrayLiteralAst)) return notOk([leafDiagnostic(ctx, arg, `Expected a list of ${of.label}`)]);
348
+ const literal = ArrayLiteralAst.cast(arg.syntax);
349
+ if (literal === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected a list of ${of.label}`)]);
342
350
  const diagnostics = [];
343
351
  const parsed = [];
344
352
  let count = 0;
345
- for (const element of arg.elements()) {
353
+ for (const element of literal.elements()) {
346
354
  count += 1;
347
355
  const result = of.parse(element, ctx);
348
356
  if (result.ok) parsed.push({
@@ -367,8 +375,9 @@ function num(value) {
367
375
  kind: "num",
368
376
  label: value === void 0 ? "number" : String(value),
369
377
  parse: (arg, ctx) => {
370
- if (arg instanceof NumberLiteralExprAst) {
371
- const parsed = arg.value();
378
+ const literal = NumberLiteralExprAst.cast(arg.syntax);
379
+ if (literal !== void 0) {
380
+ const parsed = literal.value();
372
381
  if (parsed !== void 0) {
373
382
  if (value === void 0) return ok(parsed);
374
383
  if (parsed === value) return ok(value);
@@ -397,11 +406,12 @@ function record(of) {
397
406
  kind: "record",
398
407
  label: `{ [key]: ${of.label} }`,
399
408
  parse: (arg, ctx) => {
400
- if (!(arg instanceof ObjectLiteralExprAst)) return notOk([leafDiagnostic(ctx, arg, "Expected an object literal")]);
409
+ const literal = ObjectLiteralExprAst.cast(arg.syntax);
410
+ if (literal === void 0) return notOk([leafDiagnostic(ctx, arg, "Expected an object literal")]);
401
411
  const diagnostics = [];
402
412
  const entries = [];
403
413
  const keys = /* @__PURE__ */ new Set();
404
- for (const field of arg.fields()) {
414
+ for (const field of literal.fields()) {
405
415
  const key = field.keyName();
406
416
  if (key === void 0) {
407
417
  diagnostics.push(leafDiagnostic(ctx, field, "Expected a key"));
@@ -434,8 +444,9 @@ function str(value) {
434
444
  kind: "str",
435
445
  label: value === void 0 ? "string" : JSON.stringify(value),
436
446
  parse: (arg, ctx) => {
437
- if (arg instanceof StringLiteralExprAst) {
438
- const parsed = arg.value();
447
+ const literal = StringLiteralExprAst.cast(arg.syntax);
448
+ if (literal !== void 0) {
449
+ const parsed = literal.value();
439
450
  if (parsed !== void 0) {
440
451
  if (value === void 0) return ok(parsed);
441
452
  if (parsed === value) return ok(value);
@@ -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-DR6To8_k.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/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\tif (arg instanceof BooleanLiteralExprAst) {\n\t\t\t\tconst value = arg.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\tif (!(arg instanceof IdentifierAst)) return notOk([leafDiagnostic(ctx, arg, \"Expected a model name\")]);\n\t\t\tconst name = arg.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 fieldRef(scope) {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tscope,\n\t\tparse: (arg, ctx) => {\n\t\t\tif (!(arg instanceof IdentifierAst)) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\t\t\tconst name = arg.name();\n\t\t\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\t\t\tconst model = scope === \"self\" ? ctx.selfModel : ctx.resolveReferencedModel();\n\t\t\tif (model !== void 0 && !Object.hasOwn(model.fields, name)) return notOk([leafDiagnostic(ctx, arg, `Field \"${name}\" does not exist on model \"${model.name}\"`)]);\n\t\t\treturn ok(name);\n\t\t}\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\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\tif (!(arg instanceof FunctionCallAst)) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tconst qname = arg.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(arg);\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\tparse: (arg, ctx) => {\n\t\t\tif (arg instanceof IdentifierAst && arg.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\tparse: (arg, ctx) => {\n\t\t\tif (arg instanceof NumberLiteralExprAst) {\n\t\t\t\tconst value = arg.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\tif (!(arg instanceof StringLiteralExprAst)) return notOk([leafDiagnostic(ctx, arg, \"Expected a JSON object string\")]);\n\t\t\tconst raw = arg.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\treturn {\n\t\tkind: \"list\",\n\t\tlabel: `${of.label}[]`,\n\t\tparse: (arg, ctx) => {\n\t\t\tif (!(arg instanceof ArrayLiteralAst)) 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 arg.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 (opts?.nonEmpty === true && count === 0) diagnostics.push(leafDiagnostic(ctx, arg, \"Expected a non-empty list\"));\n\t\t\tif (opts?.unique === true) {\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\treturn {\n\t\tkind: \"num\",\n\t\tlabel: value === void 0 ? \"number\" : String(value),\n\t\tparse: (arg, ctx) => {\n\t\t\tif (arg instanceof NumberLiteralExprAst) {\n\t\t\t\tconst parsed = arg.value();\n\t\t\t\tif (parsed !== void 0) {\n\t\t\t\t\tif (value === void 0) return ok(parsed);\n\t\t\t\t\tif (parsed === value) return ok(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, value === void 0 ? \"Expected a number literal\" : `Expected ${value}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/one-of.ts\nfunction oneOf(...alts) {\n\tconst label = alts.map((alt) => alt.label).join(\" | \");\n\treturn {\n\t\tkind: \"oneOf\",\n\t\tlabel,\n\t\tparse: (arg, ctx) => {\n\t\t\tfor (const alt of alts) {\n\t\t\t\tconst result = 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\tparse: (arg, ctx) => {\n\t\t\tif (!(arg instanceof ObjectLiteralExprAst)) 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 arg.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\treturn {\n\t\tkind: \"str\",\n\t\tlabel: value === void 0 ? \"string\" : JSON.stringify(value),\n\t\tparse: (arg, ctx) => {\n\t\t\tif (arg instanceof StringLiteralExprAst) {\n\t\t\t\tconst parsed = arg.value();\n\t\t\t\tif (parsed !== void 0) {\n\t\t\t\t\tif (value === void 0) return ok(parsed);\n\t\t\t\t\tif (parsed === value) return ok(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, value === void 0 ? \"Expected a string literal\" : `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\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\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\tblockAttributes.push({\n\t\t\tname,\n\t\t\targs,\n\t\t\tspan: nodePslSpan(attribute.syntax, sourceFile)\n\t\t});\n\t}\n\tconst parameters = {};\n\tfor (const entry of node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, 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\tspan: nodePslSpan(node.syntax, sourceFile)\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, bool, buildSymbolTable, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, 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-DR6To8_k.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/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 fieldRef(scope) {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tscope,\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 field name\")]);\n\t\t\tconst name = identifier.name();\n\t\t\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\t\t\tconst model = scope === \"self\" ? ctx.selfModel : ctx.resolveReferencedModel();\n\t\t\tif (model !== void 0 && !Object.hasOwn(model.fields, name)) return notOk([leafDiagnostic(ctx, arg, `Field \"${name}\" does not exist on model \"${model.name}\"`)]);\n\t\t\treturn ok(name);\n\t\t}\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\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\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\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\treturn {\n\t\tkind: \"list\",\n\t\tlabel: `${of.label}[]`,\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 (opts?.nonEmpty === true && count === 0) diagnostics.push(leafDiagnostic(ctx, arg, \"Expected a non-empty list\"));\n\t\t\tif (opts?.unique === true) {\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\treturn {\n\t\tkind: \"num\",\n\t\tlabel: value === void 0 ? \"number\" : String(value),\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) {\n\t\t\t\t\tif (value === void 0) return ok(parsed);\n\t\t\t\t\tif (parsed === value) return ok(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, value === void 0 ? \"Expected a number literal\" : `Expected ${value}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/one-of.ts\nfunction oneOf(...alts) {\n\tconst label = alts.map((alt) => alt.label).join(\" | \");\n\treturn {\n\t\tkind: \"oneOf\",\n\t\tlabel,\n\t\tparse: (arg, ctx) => {\n\t\t\tfor (const alt of alts) {\n\t\t\t\tconst result = 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\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 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\treturn {\n\t\tkind: \"str\",\n\t\tlabel: value === void 0 ? \"string\" : JSON.stringify(value),\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) {\n\t\t\t\t\tif (value === void 0) return ok(parsed);\n\t\t\t\t\tif (parsed === value) return ok(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, value === void 0 ? \"Expected a string literal\" : `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\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\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\tblockAttributes.push({\n\t\t\tname,\n\t\t\targs,\n\t\t\tspan: nodePslSpan(attribute.syntax, sourceFile)\n\t\t});\n\t}\n\tconst parameters = {};\n\tfor (const entry of node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, 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\tspan: nodePslSpan(node.syntax, sourceFile)\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, bool, buildSymbolTable, entityRef, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, json, keywordPslSpan, leafDiagnostic, list, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, oneOf, optional, parseQuotedStringLiteral, rangeToPslSpan, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, str, validateExtensionBlockFromSymbol };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/orm-framework",
3
- "version": "8.0.0-rc.8-dev.15",
3
+ "version": "8.0.0-rc.8-dev.17",
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.8-dev.15",
19
- "@internal/contract": "8.0.0-rc.8-dev.15",
20
- "@internal/contract-authoring": "8.0.0-rc.8-dev.15",
21
- "@internal/errors": "8.0.0-rc.8-dev.15",
22
- "@internal/framework-components": "8.0.0-rc.8-dev.15",
23
- "@internal/ids": "8.0.0-rc.8-dev.15",
24
- "@internal/operations": "8.0.0-rc.8-dev.15",
25
- "@internal/psl-parser": "8.0.0-rc.8-dev.15",
26
- "@internal/psl-printer": "8.0.0-rc.8-dev.15",
27
- "@internal/ts-render": "8.0.0-rc.8-dev.15",
28
- "@repo/tsconfig": "8.0.0-rc.8-dev.15",
29
- "@internal/publish-surface": "8.0.0-rc.8-dev.15",
30
- "@repo/tsdown": "8.0.0-rc.8-dev.15",
31
- "@internal/utils": "8.0.0-rc.8-dev.15",
18
+ "@internal/config": "8.0.0-rc.8-dev.17",
19
+ "@internal/contract": "8.0.0-rc.8-dev.17",
20
+ "@internal/contract-authoring": "8.0.0-rc.8-dev.17",
21
+ "@internal/errors": "8.0.0-rc.8-dev.17",
22
+ "@internal/framework-components": "8.0.0-rc.8-dev.17",
23
+ "@internal/ids": "8.0.0-rc.8-dev.17",
24
+ "@internal/operations": "8.0.0-rc.8-dev.17",
25
+ "@internal/psl-parser": "8.0.0-rc.8-dev.17",
26
+ "@internal/psl-printer": "8.0.0-rc.8-dev.17",
27
+ "@internal/ts-render": "8.0.0-rc.8-dev.17",
28
+ "@repo/tsconfig": "8.0.0-rc.8-dev.17",
29
+ "@internal/publish-surface": "8.0.0-rc.8-dev.17",
30
+ "@repo/tsdown": "8.0.0-rc.8-dev.17",
31
+ "@internal/utils": "8.0.0-rc.8-dev.17",
32
32
  "tsdown": "0.22.14",
33
33
  "typescript": "5.9.3",
34
34
  "vitest": "5.0.0-rc.2"