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

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.
@@ -252,7 +252,7 @@ function diagnostic(message, ctx, span) {
252
252
  function funcCall(name, sig) {
253
253
  return {
254
254
  kind: "funcCall",
255
- label: "function call",
255
+ label: `${name}()`,
256
256
  parse: (arg, ctx) => {
257
257
  const guard = matchCallee(arg, name, ctx);
258
258
  if (!guard.ok) return guard;
@@ -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: \"function call\",\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\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/orm-framework",
3
- "version": "8.0.0-rc.8-dev.14",
3
+ "version": "8.0.0-rc.8-dev.15",
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.14",
19
- "@internal/contract": "8.0.0-rc.8-dev.14",
20
- "@internal/contract-authoring": "8.0.0-rc.8-dev.14",
21
- "@internal/errors": "8.0.0-rc.8-dev.14",
22
- "@internal/framework-components": "8.0.0-rc.8-dev.14",
23
- "@internal/ids": "8.0.0-rc.8-dev.14",
24
- "@internal/operations": "8.0.0-rc.8-dev.14",
25
- "@internal/psl-parser": "8.0.0-rc.8-dev.14",
26
- "@internal/psl-printer": "8.0.0-rc.8-dev.14",
27
- "@internal/ts-render": "8.0.0-rc.8-dev.14",
28
- "@repo/tsconfig": "8.0.0-rc.8-dev.14",
29
- "@internal/publish-surface": "8.0.0-rc.8-dev.14",
30
- "@repo/tsdown": "8.0.0-rc.8-dev.14",
31
- "@internal/utils": "8.0.0-rc.8-dev.14",
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",
32
32
  "tsdown": "0.22.14",
33
33
  "typescript": "5.9.3",
34
34
  "vitest": "5.0.0-rc.2"