@prisma/orm-framework 8.0.0-rc.12-dev.14 → 8.0.0-rc.12-dev.16

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.
Files changed (113) hide show
  1. package/dist/ast-helpers-2XRnkQEO-BxG5qx3Q.mjs +386 -0
  2. package/dist/ast-helpers-2XRnkQEO-BxG5qx3Q.mjs.map +1 -0
  3. package/dist/authoring-BffMNBO5.d.mts +43 -0
  4. package/dist/authoring-BffMNBO5.d.mts.map +1 -0
  5. package/dist/authoring-DbG78eh2.mjs +88 -0
  6. package/dist/authoring-DbG78eh2.mjs.map +1 -0
  7. package/dist/{hashing-utils-DQgS3nOe.mjs → canonicalization-path-match-D88xLEq6-BFQC39ZG.mjs} +23 -3
  8. package/dist/canonicalization-path-match-D88xLEq6-BFQC39ZG.mjs.map +1 -0
  9. package/dist/{utils-DMAM0unR.mjs → canonicalize-json-ZPawceQR-Dua1VNEB.mjs} +2 -2
  10. package/dist/canonicalize-json-ZPawceQR-Dua1VNEB.mjs.map +1 -0
  11. package/dist/components.d.mts +6 -6
  12. package/dist/components.mjs +6 -6
  13. package/dist/components__authoring.d.mts +2 -2
  14. package/dist/components__authoring.mjs +2 -2
  15. package/dist/components__control.d.mts +2 -2
  16. package/dist/components__control.mjs +2 -2
  17. package/dist/components__psl-ast.d.mts +3 -3
  18. package/dist/components__psl-ast.mjs +2 -2
  19. package/dist/components__runtime.d.mts +2 -2
  20. package/dist/components__runtime.mjs +2 -2
  21. package/dist/components__utils.mjs +1 -1
  22. package/dist/{config-types-DgoEWkgA.d.mts → config-types-CWeyMWBV.d.mts} +17 -14
  23. package/dist/config-types-CWeyMWBV.d.mts.map +1 -0
  24. package/dist/{config-types-BZjCZ4qx.mjs → config-types-D0mYyP62.mjs} +25 -2
  25. package/dist/config-types-D0mYyP62.mjs.map +1 -0
  26. package/dist/config.d.mts +2 -2
  27. package/dist/config.mjs +2 -2
  28. package/dist/config__config-types.d.mts +2 -2
  29. package/dist/config__config-types.mjs +2 -2
  30. package/dist/contract-authoring.d.mts +1 -1
  31. package/dist/contract.d.mts +2 -2
  32. package/dist/contract.mjs +3 -4
  33. package/dist/contract__hashing-utils.mjs +1 -2
  34. package/dist/contract__hashing.d.mts +2 -2
  35. package/dist/contract__hashing.mjs +2 -2
  36. package/dist/{control-Bc_dos9-.d.mts → control-BTo8rNKi.d.mts} +23 -3
  37. package/dist/{control-Bc_dos9-.d.mts.map → control-BTo8rNKi.d.mts.map} +1 -1
  38. package/dist/{control-BjK3Jrmp.mjs → control-CS45l6kB.mjs} +5 -2
  39. package/dist/control-CS45l6kB.mjs.map +1 -0
  40. package/dist/{declarations-D79GooqC-CcAbqTsq.mjs → declarations-43E1JFHg-DGBa0YH_.mjs} +8 -388
  41. package/dist/declarations-43E1JFHg-DGBa0YH_.mjs.map +1 -0
  42. package/dist/errors.d.mts +1 -1
  43. package/dist/errors__execution.d.mts +1 -1
  44. package/dist/{execution-oqC6O8ES.d.mts → execution-BsiK0DjS.d.mts} +2 -2
  45. package/dist/{execution-oqC6O8ES.d.mts.map → execution-BsiK0DjS.d.mts.map} +1 -1
  46. package/dist/hashing-BAPc4zoz.d.mts +36 -0
  47. package/dist/hashing-BAPc4zoz.d.mts.map +1 -0
  48. package/dist/{hashing-BtIZVNYX.mjs → hashing-CjTNYBuj.mjs} +21 -3
  49. package/dist/hashing-CjTNYBuj.mjs.map +1 -0
  50. package/dist/{parse-SHpUIBnv-BvPsKLqw.d.mts → parse-DZRO_CK2-D8YAg23m.d.mts} +10 -18
  51. package/dist/{parse-SHpUIBnv-BvPsKLqw.d.mts.map → parse-DZRO_CK2-D8YAg23m.d.mts.map} +1 -1
  52. package/dist/{parse-DN-F4ASD-ClJdPlzj.mjs → parse-Km2Ne67K-CakfHP9f.mjs} +26 -29
  53. package/dist/parse-Km2Ne67K-CakfHP9f.mjs.map +1 -0
  54. package/dist/{psl-ast-BKF2fYgk-D6YxdCnP.d.mts → psl-ast-BePuKena-AYNqFKCE.d.mts} +8 -3
  55. package/dist/{psl-ast-BKF2fYgk-D6YxdCnP.d.mts.map → psl-ast-BePuKena-AYNqFKCE.d.mts.map} +1 -1
  56. package/dist/{psl-ast-Bu85Lu-k.d.mts → psl-ast-Cec7KbOn.d.mts} +2 -2
  57. package/dist/{psl-ast-Bu85Lu-k.d.mts.map → psl-ast-Cec7KbOn.d.mts.map} +1 -1
  58. package/dist/{psl-ast-DUCvVXbB.mjs → psl-ast-DYtFdynZ.mjs} +7 -2
  59. package/dist/psl-ast-DYtFdynZ.mjs.map +1 -0
  60. package/dist/psl-parser.d.mts +14 -7
  61. package/dist/psl-parser.d.mts.map +1 -1
  62. package/dist/psl-parser.mjs +10 -65
  63. package/dist/psl-parser.mjs.map +1 -1
  64. package/dist/psl-parser__format.mjs +23 -30
  65. package/dist/psl-parser__format.mjs.map +1 -1
  66. package/dist/psl-parser__interpret.d.mts +15 -7
  67. package/dist/psl-parser__interpret.d.mts.map +1 -1
  68. package/dist/psl-parser__interpret.mjs +24 -3
  69. package/dist/psl-parser__interpret.mjs.map +1 -1
  70. package/dist/psl-parser__syntax.d.mts +3 -3
  71. package/dist/psl-parser__syntax.mjs +3 -2
  72. package/dist/psl-parser__syntax.mjs.map +1 -1
  73. package/dist/psl-parser__tokenizer.d.mts +1 -1
  74. package/dist/psl-parser__tokenizer.mjs +1 -1
  75. package/dist/psl-printer.d.mts +8 -3
  76. package/dist/psl-printer.d.mts.map +1 -1
  77. package/dist/psl-printer.mjs +16 -9
  78. package/dist/psl-printer.mjs.map +1 -1
  79. package/dist/resolve-D_lZ54qh-DqOQkoMT.mjs +145 -0
  80. package/dist/resolve-D_lZ54qh-DqOQkoMT.mjs.map +1 -0
  81. package/dist/{runtime-Dnv06bEV.d.mts → runtime-CQ9-3czC.d.mts} +52 -2
  82. package/dist/runtime-CQ9-3czC.d.mts.map +1 -0
  83. package/dist/{runtime-DXmHIbAr.mjs → runtime-CpojufYS.mjs} +80 -2
  84. package/dist/{runtime-DXmHIbAr.mjs.map → runtime-CpojufYS.mjs.map} +1 -1
  85. package/dist/{symbol-table-DVPEY1fq-C5mC1wdG.d.mts → symbol-table-CRtoii4t-DubuO_5j.d.mts} +5 -5
  86. package/dist/{symbol-table-DVPEY1fq-C5mC1wdG.d.mts.map → symbol-table-CRtoii4t-DubuO_5j.d.mts.map} +1 -1
  87. package/dist/{tokenizer-CFsbtfFw-BnfUBepb.mjs → tokenizer-BMz7z2KR-J0yZ4im3.mjs} +11 -3
  88. package/dist/tokenizer-BMz7z2KR-J0yZ4im3.mjs.map +1 -0
  89. package/dist/{tokenizer-DcYI0Xrq-C-nNE9mE.d.mts → tokenizer-DW30uwhx-BHsWTwYk.d.mts} +8 -3
  90. package/dist/tokenizer-DW30uwhx-BHsWTwYk.d.mts.map +1 -0
  91. package/package.json +16 -15
  92. package/dist/authoring-D_Czkofy.mjs +0 -35
  93. package/dist/authoring-D_Czkofy.mjs.map +0 -1
  94. package/dist/authoring-DjeaZGzp.d.mts +0 -27
  95. package/dist/authoring-DjeaZGzp.d.mts.map +0 -1
  96. package/dist/canonicalization-path-match-CNgHuwM_-CCPBeUuk.mjs +0 -25
  97. package/dist/canonicalization-path-match-CNgHuwM_-CCPBeUuk.mjs.map +0 -1
  98. package/dist/config-types-BZjCZ4qx.mjs.map +0 -1
  99. package/dist/config-types-DgoEWkgA.d.mts.map +0 -1
  100. package/dist/control-BjK3Jrmp.mjs.map +0 -1
  101. package/dist/declarations-D79GooqC-CcAbqTsq.mjs.map +0 -1
  102. package/dist/diagnostic-Esyl8Qw1-Cd6SnWPN.mjs +0 -83
  103. package/dist/diagnostic-Esyl8Qw1-Cd6SnWPN.mjs.map +0 -1
  104. package/dist/hashing-BtIZVNYX.mjs.map +0 -1
  105. package/dist/hashing-WJflm0s1.d.mts +0 -25
  106. package/dist/hashing-WJflm0s1.d.mts.map +0 -1
  107. package/dist/hashing-utils-DQgS3nOe.mjs.map +0 -1
  108. package/dist/parse-DN-F4ASD-ClJdPlzj.mjs.map +0 -1
  109. package/dist/psl-ast-DUCvVXbB.mjs.map +0 -1
  110. package/dist/runtime-Dnv06bEV.d.mts.map +0 -1
  111. package/dist/tokenizer-CFsbtfFw-BnfUBepb.mjs.map +0 -1
  112. package/dist/tokenizer-DcYI0Xrq-C-nNE9mE.d.mts.map +0 -1
  113. package/dist/utils-DMAM0unR.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"psl-printer.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-printer/dist/index.d.mts"],"mappings":";;;;;;;;KAIK,+BAA+B;UAC1B;;;;;;;;;;;;;;WAcC,sBAAsB;;;;;;;;WAQtB,cAAc;;iBAER,gBAAgB,KAAK,gBAAgB,UAAU"}
1
+ {"version":3,"file":"psl-printer.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-printer/dist/index.d.mts"],"mappings":";;;;;;;;KAIK,+BAA+B;UAC1B;;;;;;;;;;;;;;WAcC,sBAAsB;;;;;;;;WAQtB,cAAc;;;;;WAKd;;iBAEM,gBAAgB,KAAK,gBAAgB,UAAU"}
@@ -2,7 +2,7 @@ import { t as blindCast } from "./casts-DpaahrlC-Bd5n2coI.mjs";
2
2
  import { t as ifDefined } from "./defined-BQWA85QH-BRSBMULx.mjs";
3
3
  import { o as structuredError } from "./structured-error-BXbihKQ-.mjs";
4
4
  import { v as isAuthoringPslBlockDescriptor } from "./temporal-presets-DABMpaxB-DDEaCwpa.mjs";
5
- import { i as flatPslModels, s as namespacePslExtensionBlocks } from "./psl-ast-DUCvVXbB.mjs";
5
+ import { a as flatPslModels, c as namespacePslExtensionBlocks } from "./psl-ast-DYtFdynZ.mjs";
6
6
  //#region ../../../1-framework/2-authoring/psl-printer/dist/index.mjs
7
7
  function contractError(code, message, options) {
8
8
  return structuredError(code, message, options);
@@ -44,7 +44,8 @@ function serializePrintDocument(doc, options = {}) {
44
44
  }
45
45
  function serializeNamespaceContents(namespace, blockDispatchMap, codecLookup) {
46
46
  const sections = [];
47
- for (const model of namespace.models) sections.push(serializeModel(model));
47
+ for (const compositeType of namespace.compositeTypes) sections.push(serializeModel(compositeType, "type"));
48
+ for (const model of namespace.models) sections.push(serializeModel(model, "model"));
48
49
  for (const extensionBlock of namespace.extensionBlocks) sections.push(serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup));
49
50
  return sections;
50
51
  }
@@ -156,10 +157,10 @@ function serializeTypesBlock(namedTypes) {
156
157
  lines.push("}");
157
158
  return lines.join("\n");
158
159
  }
159
- function serializeModel(model) {
160
+ function serializeModel(model, keyword) {
160
161
  const lines = [];
161
162
  if (model.comment) lines.push(model.comment);
162
- lines.push(`model ${model.name} {`);
163
+ lines.push(`${keyword} ${model.name} {`);
163
164
  const idFields = model.fields.filter((f) => f.isId);
164
165
  const scalarFields = model.fields.filter((f) => !f.isId && !f.isRelation);
165
166
  const relationFields = model.fields.filter((f) => f.isRelation);
@@ -193,8 +194,11 @@ function formatFieldType(field) {
193
194
  if (field.optional) type += "?";
194
195
  return type;
195
196
  }
196
- const DEFAULT_AST_PRINT_HEADER = "// use prisma-8\n// Contract inferred from the live database schema. Edit as needed, then run `prisma contract emit`.";
197
- function astDocumentToPrintDocument(ast) {
197
+ const PRISMA_8_MARKER = "// use prisma-8";
198
+ function headerCommentFor(description) {
199
+ return description === void 0 ? PRISMA_8_MARKER : `${PRISMA_8_MARKER}\n// ${description}`;
200
+ }
201
+ function astDocumentToPrintDocument(ast, description) {
198
202
  const allModels = flatPslModels(ast);
199
203
  const sortedModels = topologicalSortModels(allModels, buildModelFkDeps(allModels, new Set(allModels.map((m) => m.name))));
200
204
  const namedTypes = ast.types ? ast.types.declarations.map(namedTypeDeclarationToPrinterNamedType) : [];
@@ -202,9 +206,11 @@ function astDocumentToPrintDocument(ast) {
202
206
  const sectionsByName = /* @__PURE__ */ new Map();
203
207
  for (const namespace of ast.namespaces) {
204
208
  const section = sectionsByName.get(namespace.name) ?? {
209
+ compositeTypes: /* @__PURE__ */ new Map(),
205
210
  models: /* @__PURE__ */ new Map(),
206
211
  blocks: /* @__PURE__ */ new Map()
207
212
  };
213
+ for (const compositeType of namespace.compositeTypes) section.compositeTypes.set(compositeType.name, compositeType);
208
214
  for (const model of namespace.models) section.models.set(model.name, model);
209
215
  for (const block of namespacePslExtensionBlocks(namespace)) section.blocks.set(`${block.kind} ${block.name}`, block);
210
216
  sectionsByName.set(namespace.name, section);
@@ -212,6 +218,7 @@ function astDocumentToPrintDocument(ast) {
212
218
  const unranked = sortedModels.length;
213
219
  const namespaceSections = [...sectionsByName].map(([name, section]) => ({
214
220
  name,
221
+ compositeTypes: [...section.compositeTypes.values()].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0).map((compositeType) => modelToPrinterModel(compositeType)),
215
222
  models: [...section.models.values()].sort((a, b) => (modelOrder.get(a.name) ?? unranked) - (modelOrder.get(b.name) ?? unranked)).map((m) => modelToPrinterModel(m)),
216
223
  extensionBlocks: [...section.blocks.values()]
217
224
  }));
@@ -222,7 +229,7 @@ function astDocumentToPrintDocument(ast) {
222
229
  return a.name < b.name ? -1 : 1;
223
230
  });
224
231
  return {
225
- headerComment: DEFAULT_AST_PRINT_HEADER,
232
+ headerComment: headerCommentFor(description),
226
233
  namedTypes,
227
234
  namespaces: namespaceSections
228
235
  };
@@ -301,7 +308,7 @@ function modelToPrinterModel(model) {
301
308
  mapName,
302
309
  fields: printerFields,
303
310
  modelAttributes: modelAttrStrings,
304
- comment: model.comment
311
+ comment: model.kind === "model" ? model.comment : void 0
305
312
  };
306
313
  }
307
314
  /**
@@ -389,7 +396,7 @@ function topologicalSortModels(models, deps) {
389
396
  return result;
390
397
  }
391
398
  function printPslFromAst(ast, options = {}) {
392
- return serializePrintDocument(astDocumentToPrintDocument(ast), {
399
+ return serializePrintDocument(astDocumentToPrintDocument(ast, options.description), {
393
400
  ...ifDefined("pslBlockDescriptors", options.pslBlockDescriptors),
394
401
  ...ifDefined("codecLookup", options.codecLookup)
395
402
  });
@@ -1 +1 @@
1
- {"version":3,"file":"psl-printer.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-printer/dist/index.mjs"],"sourcesContent":["import { ifDefined } from \"@internal/utils/defined\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/contract-errors.ts\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/serialize-print-document.ts\n/**\n* Indent unit used for PSL block bodies and namespace nesting.\n*/\nconst PSL_INDENT_UNIT = \" \";\nfunction buildPslBlockDispatchMap(namespace) {\n\tconst byKeyword = /* @__PURE__ */ new Map();\n\tif (namespace) collectBlockDescriptors(namespace, byKeyword);\n\treturn { byKeyword };\n}\nfunction collectBlockDescriptors(namespace, byKeyword) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tbyKeyword.set(value.keyword, value);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) collectBlockDescriptors(value, byKeyword);\n\t}\n}\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\nfunction serializePrintDocument(doc, options = {}) {\n\tconst sections = [];\n\tsections.push(doc.headerComment);\n\tconst namedTypeEntries = [...doc.namedTypes].sort((a, b) => a.name.localeCompare(b.name));\n\tif (namedTypeEntries.length > 0) sections.push(serializeTypesBlock(namedTypeEntries));\n\tconst blockDispatchMap = buildPslBlockDispatchMap(options.pslBlockDescriptors);\n\tfor (const namespace of doc.namespaces) {\n\t\tconst namespaceSections = serializeNamespaceContents(namespace, blockDispatchMap, options.codecLookup);\n\t\tif (namespaceSections.length === 0) continue;\n\t\tif (namespace.name === UNSPECIFIED_PSL_NAMESPACE_ID) sections.push(...namespaceSections);\n\t\telse sections.push(wrapNamespaceBlock(namespace.name, namespaceSections));\n\t}\n\treturn `${sections.join(\"\\n\\n\")}\\n`;\n}\nfunction serializeNamespaceContents(namespace, blockDispatchMap, codecLookup) {\n\tconst sections = [];\n\tfor (const model of namespace.models) sections.push(serializeModel(model));\n\tfor (const extensionBlock of namespace.extensionBlocks) sections.push(serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup));\n\treturn sections;\n}\nfunction serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup) {\n\tconst descriptor = blockDispatchMap.byKeyword.get(extensionBlock.keyword);\n\tif (!descriptor) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `No pslBlockDescriptors contribution registered for extension-contributed block keyword \"${extensionBlock.keyword}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-missing\",\n\t\tkeyword: extensionBlock.keyword\n\t} });\n\tif (descriptor.discriminator !== extensionBlock.kind) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `The pslBlockDescriptors contribution for keyword \"${extensionBlock.keyword}\" owns discriminator \"${descriptor.discriminator}\", but the block carries kind \"${extensionBlock.kind}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-kind-mismatch\",\n\t\tkeyword: extensionBlock.keyword,\n\t\tdescriptorDiscriminator: descriptor.discriminator,\n\t\tblockKind: extensionBlock.kind\n\t} });\n\tconst lines = [`${extensionBlock.keyword} ${extensionBlock.name} {`];\n\tfor (const [paramName, paramDescriptor] of Object.entries(descriptor.parameters)) {\n\t\tconst paramValue = extensionBlock.parameters[paramName];\n\t\tif (paramValue === void 0) continue;\n\t\tconst rendered = renderParamValue(paramValue, paramDescriptor, codecLookup, paramName);\n\t\tlines.push(`${PSL_INDENT_UNIT}${paramName} = ${rendered}`);\n\t}\n\tif (descriptor.variadicParameters) for (const [paramName, paramValue] of Object.entries(extensionBlock.parameters)) {\n\t\tif (Object.hasOwn(descriptor.parameters, paramName)) continue;\n\t\tlines.push(`${PSL_INDENT_UNIT}${renderVariadicParam(paramName, paramValue)}`);\n\t}\n\tfor (const attr of extensionBlock.blockAttributes ?? []) {\n\t\tconst args = attr.args.map((arg) => arg.value).join(\", \");\n\t\tlines.push(`${PSL_INDENT_UNIT}@@${attr.name}${args.length > 0 ? `(${args})` : \"\"}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\n/**\n* Renders one undeclared parameter of a `variadicParameters` block (e.g. a\n* `native_enum` member line). Variadic entries have no per-parameter\n* descriptor, so there is no codec to round-trip a `value` through — the raw\n* PSL literal is emitted verbatim. A `bare` entry is just its key.\n*/\nfunction renderVariadicParam(paramName, paramValue) {\n\tif (paramValue.kind === \"bare\") return paramName;\n\treturn `${paramName} = ${renderVariadicValue(paramValue)}`;\n}\nfunction renderVariadicValue(paramValue) {\n\tswitch (paramValue.kind) {\n\t\tcase \"bare\": return \"\";\n\t\tcase \"value\": return paramValue.raw;\n\t\tcase \"ref\": return paramValue.identifier;\n\t\tcase \"option\": return paramValue.token;\n\t\tcase \"list\": return `[${paramValue.items.map(renderVariadicValue).join(\", \")}]`;\n\t}\n}\nfunction renderParamValue(paramValue, descriptor, codecLookup, paramName) {\n\tswitch (descriptor.kind) {\n\t\tcase \"ref\":\n\t\t\tif (paramValue.kind !== \"ref\") throw paramKindMismatchError(paramName, \"ref\", paramValue.kind);\n\t\t\treturn paramValue.identifier;\n\t\tcase \"value\":\n\t\t\tif (paramValue.kind !== \"value\") throw paramKindMismatchError(paramName, \"value\", paramValue.kind);\n\t\t\treturn renderValueParam(paramValue.raw, descriptor.codecId, codecLookup, paramName);\n\t\tcase \"option\":\n\t\t\tif (paramValue.kind !== \"option\") throw paramKindMismatchError(paramName, \"option\", paramValue.kind);\n\t\t\treturn paramValue.token;\n\t\tcase \"list\":\n\t\t\tif (paramValue.kind !== \"list\") throw paramKindMismatchError(paramName, \"list\", paramValue.kind);\n\t\t\treturn `[${paramValue.items.map((item) => renderParamValue(item, descriptor.of, codecLookup, paramName)).join(\", \")}]`;\n\t}\n}\nfunction paramKindMismatchError(paramName, descriptorKind, valueKind) {\n\treturn contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": descriptor is \"${descriptorKind}\" but AST node has kind \"${valueKind}\"`, { meta: {\n\t\treason: \"param-kind-mismatch\",\n\t\tparamName,\n\t\tdescriptorKind,\n\t\tvalueKind\n\t} });\n}\nfunction renderValueParam(raw, codecId, codecLookup, paramName) {\n\tif (!codecLookup) return raw;\n\tconst codec = codecLookup.get(codecId);\n\tif (!codec) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": no codec registered for id \"${codecId}\"`, { meta: {\n\t\treason: \"codec-unregistered\",\n\t\tparamName,\n\t\tcodecId\n\t} });\n\tlet parsedJson;\n\ttry {\n\t\tparsedJson = JSON.parse(raw);\n\t} catch (e) {\n\t\tthrow contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": codec \"${codecId}\" — raw literal is not valid JSON: ${String(e)}`, {\n\t\t\tmeta: {\n\t\t\t\treason: \"raw-literal-invalid-json\",\n\t\t\t\tparamName,\n\t\t\t\tcodecId\n\t\t\t},\n\t\t\tcause: e\n\t\t});\n\t}\n\treturn JSON.stringify(codec.encodeJson(codec.decodeJson(blindCast(parsedJson))));\n}\nfunction wrapNamespaceBlock(name, innerSections) {\n\treturn `namespace ${name} {\\n${innerSections.map((section) => section.split(\"\\n\").map((line) => line.length > 0 ? ` ${line}` : line).join(\"\\n\")).join(\"\\n\\n\")}\\n}`;\n}\nfunction serializeTypesBlock(namedTypes) {\n\tconst lines = [\"types {\"];\n\tfor (const nt of namedTypes) {\n\t\tconst attrStr = nt.attributes.length > 0 ? ` ${nt.attributes.join(\" \")}` : \"\";\n\t\tlines.push(` ${nt.name} = ${nt.baseType}${attrStr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction serializeModel(model) {\n\tconst lines = [];\n\tif (model.comment) lines.push(model.comment);\n\tlines.push(`model ${model.name} {`);\n\tconst idFields = model.fields.filter((f) => f.isId);\n\tconst scalarFields = model.fields.filter((f) => !f.isId && !f.isRelation);\n\tconst relationFields = model.fields.filter((f) => f.isRelation);\n\tconst allOrderedFields = [\n\t\t...idFields,\n\t\t...scalarFields,\n\t\t...relationFields\n\t];\n\tif (allOrderedFields.length > 0) {\n\t\tconst maxNameLen = Math.max(...allOrderedFields.map((f) => f.name.length));\n\t\tconst maxTypeLen = Math.max(...allOrderedFields.map((f) => formatFieldType(f).length));\n\t\tfor (const field of allOrderedFields) {\n\t\t\tconst typePart = formatFieldType(field);\n\t\t\tconst paddedName = field.name.padEnd(maxNameLen);\n\t\t\tconst paddedType = typePart.padEnd(maxTypeLen);\n\t\t\tif (field.comment) lines.push(` ${field.comment}`);\n\t\t\tconst attrStr = field.attributes.length > 0 ? ` ${field.attributes.join(\" \")}` : \"\";\n\t\t\tlines.push(` ${paddedName} ${paddedType}${attrStr}`.trimEnd());\n\t\t}\n\t}\n\tif (model.modelAttributes.length > 0) {\n\t\tif (allOrderedFields.length > 0) lines.push(\"\");\n\t\tfor (const attr of model.modelAttributes) lines.push(` ${attr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction formatFieldType(field) {\n\tlet type = field.typeName;\n\tif (field.list) type += \"[]\";\n\tif (field.optional) type += \"?\";\n\treturn type;\n}\n//#endregion\n//#region src/ast-to-print-document.ts\nconst DEFAULT_AST_PRINT_HEADER = \"// use prisma-8\\n// Contract inferred from the live database schema. Edit as needed, then run `prisma contract emit`.\";\nfunction astDocumentToPrintDocument(ast) {\n\tconst allModels = flatPslModels(ast);\n\tconst sortedModels = topologicalSortModels(allModels, buildModelFkDeps(allModels, new Set(allModels.map((m) => m.name))));\n\tconst namedTypes = ast.types ? ast.types.declarations.map(namedTypeDeclarationToPrinterNamedType) : [];\n\tconst modelOrder = new Map(sortedModels.map((model, index) => [model.name, index]));\n\tconst sectionsByName = /* @__PURE__ */ new Map();\n\tfor (const namespace of ast.namespaces) {\n\t\tconst section = sectionsByName.get(namespace.name) ?? {\n\t\t\tmodels: /* @__PURE__ */ new Map(),\n\t\t\tblocks: /* @__PURE__ */ new Map()\n\t\t};\n\t\tfor (const model of namespace.models) section.models.set(model.name, model);\n\t\tfor (const block of namespacePslExtensionBlocks(namespace)) section.blocks.set(`${block.kind} ${block.name}`, block);\n\t\tsectionsByName.set(namespace.name, section);\n\t}\n\tconst unranked = sortedModels.length;\n\tconst namespaceSections = [...sectionsByName].map(([name, section]) => ({\n\t\tname,\n\t\tmodels: [...section.models.values()].sort((a, b) => (modelOrder.get(a.name) ?? unranked) - (modelOrder.get(b.name) ?? unranked)).map((m) => modelToPrinterModel(m)),\n\t\textensionBlocks: [...section.blocks.values()]\n\t}));\n\tnamespaceSections.sort((a, b) => {\n\t\tif (a.name === b.name) return 0;\n\t\tif (a.name === UNSPECIFIED_PSL_NAMESPACE_ID) return -1;\n\t\tif (b.name === UNSPECIFIED_PSL_NAMESPACE_ID) return 1;\n\t\treturn a.name < b.name ? -1 : 1;\n\t});\n\treturn {\n\t\theaderComment: DEFAULT_AST_PRINT_HEADER,\n\t\tnamedTypes,\n\t\tnamespaces: namespaceSections\n\t};\n}\nfunction renderPslAttribute(attr) {\n\tconst prefix = attr.target === \"model\" || attr.target === \"enum\" ? \"@@\" : \"@\";\n\tif (attr.args.length === 0) return `${prefix}${attr.name}`;\n\tconst inner = attr.args.map(renderAttributeArgument).join(\", \");\n\treturn `${prefix}${attr.name}(${inner})`;\n}\nfunction renderAttributeArgument(arg) {\n\tif (arg.kind === \"positional\") return arg.value;\n\treturn `${arg.name}: ${arg.value}`;\n}\nfunction namedTypeDeclarationToPrinterNamedType(decl) {\n\tconst base = decl.baseType ?? (decl.typeConstructor !== void 0 ? formatTypeConstructor(decl.typeConstructor) : \"\");\n\tconst attributes = decl.attributes.map(renderPslAttribute);\n\treturn {\n\t\tname: decl.name,\n\t\tbaseType: base,\n\t\tattributes\n\t};\n}\nfunction formatTypeConstructor(tc) {\n\tconst path = tc.path.join(\".\");\n\tif (tc.args.length === 0) return path;\n\treturn `${path}(${tc.args.map(renderAttributeArgument).join(\", \")})`;\n}\nfunction getPositionalStringArg(attr, index) {\n\tconst raw = attr.args.filter((a) => a.kind === \"positional\")[index]?.value.trim();\n\tif (!raw) return void 0;\n\tconst unescaped = raw.match(/^(['\"])(.*)\\1$/)?.[2];\n\tif (unescaped === void 0) return void 0;\n\treturn unescapePslString(unescaped);\n}\n/**\n* Inverse of `escapePslString`. The parser stores quoted-literal arguments with\n* their PSL escape sequences (`\\\\`, `\\\"`, `\\n`, `\\r`) intact; when we round-trip\n* a value through `getPositionalStringArg` and re-render via `escapePslString`,\n* we must decode it once on extraction to avoid double-escaping the same\n* sequences on output.\n*/\nfunction unescapePslString(value) {\n\tlet result = \"\";\n\tfor (let i = 0; i < value.length; i++) {\n\t\tif (value.charCodeAt(i) !== 92 || i + 1 >= value.length) {\n\t\t\tresult += value[i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst next = value[i + 1];\n\t\tif (next === \"\\\\\" || next === \"\\\"\" || next === \"'\") result += next;\n\t\telse if (next === \"n\") result += \"\\n\";\n\t\telse if (next === \"r\") result += \"\\r\";\n\t\telse {\n\t\t\tresult += \"\\\\\";\n\t\t\tresult += next;\n\t\t}\n\t\ti++;\n\t}\n\treturn result;\n}\nfunction modelToPrinterModel(model) {\n\tlet mapName;\n\tconst modelAttrStrings = [];\n\tfor (const a of model.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"model\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tmodelAttrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) modelAttrStrings.push(`@@map(\"${escapePslString(mapName)}\")`);\n\tconst printerFields = model.fields.map((f) => fieldToPrinterField(f));\n\treturn {\n\t\tname: model.name,\n\t\tmapName,\n\t\tfields: printerFields,\n\t\tmodelAttributes: modelAttrStrings,\n\t\tcomment: model.comment\n\t};\n}\n/**\n* Assembles the qualified type name string for a field type reference.\n*\n* Handles all four forms:\n* - `space:ns.Name` — typeContractSpaceId + typeNamespaceId + typeName\n* - `space:Name` — typeContractSpaceId + typeName (no namespace)\n* - `ns.Name` — typeNamespaceId + typeName (no space); fixes TML-2459 printer gap\n* - `Name` — typeName only (no qualifier)\n*/\nfunction assembleQualifiedTypeName(field) {\n\tconst { typeName, typeNamespaceId, typeContractSpaceId } = field;\n\tconst dotted = typeNamespaceId !== void 0 ? `${typeNamespaceId}.${typeName}` : typeName;\n\treturn typeContractSpaceId !== void 0 ? `${typeContractSpaceId}:${dotted}` : dotted;\n}\nfunction fieldToPrinterField(field) {\n\tconst typeName = field.typeConstructor !== void 0 ? formatTypeConstructor(field.typeConstructor) : assembleQualifiedTypeName(field);\n\tlet mapName;\n\tconst attrStrings = [];\n\tfor (const a of field.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"field\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tattrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) attrStrings.push(`@map(\"${escapePslString(mapName)}\")`);\n\tconst isRelation = field.attributes.some((a) => a.name === \"relation\" && a.target === \"field\");\n\tconst isUnsupported = typeName.startsWith(\"Unsupported(\");\n\tconst isId = field.attributes.some((a) => a.name === \"id\" && a.target === \"field\");\n\treturn {\n\t\tname: field.name,\n\t\ttypeName,\n\t\toptional: field.optional,\n\t\tlist: field.list,\n\t\tattributes: attrStrings,\n\t\tmapName,\n\t\tisId,\n\t\tisRelation,\n\t\tisUnsupported,\n\t\tcomment: void 0\n\t};\n}\nfunction buildModelFkDeps(models, modelNames) {\n\tconst deps = /* @__PURE__ */ new Map();\n\tfor (const m of models) deps.set(m.name, /* @__PURE__ */ new Set());\n\tfor (const m of models) for (const field of m.fields) {\n\t\tconst refModel = relationReferencedModel(field, modelNames);\n\t\tif (!refModel || refModel === m.name) continue;\n\t\tif (!hasFullRelation(field)) continue;\n\t\tdeps.get(m.name)?.add(refModel);\n\t}\n\treturn deps;\n}\nfunction hasFullRelation(field) {\n\tconst rel = field.attributes.find((a) => a.name === \"relation\" && a.target === \"field\");\n\tif (!rel) return false;\n\tconst named = Object.fromEntries(rel.args.filter((a) => a.kind === \"named\").map((a) => [a.name, a.value.trim()]));\n\treturn named[\"fields\"] !== void 0 && named[\"references\"] !== void 0;\n}\nfunction relationReferencedModel(field, modelNames) {\n\tconst raw = field.typeConstructor?.path[0] ?? field.typeName.replace(/\\?$/, \"\").replace(/\\[\\]$/, \"\");\n\tif (raw.length === 0) return;\n\treturn modelNames.has(raw) ? raw : void 0;\n}\nfunction topologicalSortModels(models, deps) {\n\tconst byName = new Map(models.map((m) => [m.name, m]));\n\tconst result = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst visiting = /* @__PURE__ */ new Set();\n\tconst sortedNames = [...deps.keys()].sort();\n\tfunction visit(name) {\n\t\tif (visited.has(name)) return;\n\t\tif (visiting.has(name)) return;\n\t\tvisiting.add(name);\n\t\tconst sortedDeps = [...deps.get(name) ?? /* @__PURE__ */ new Set()].sort();\n\t\tfor (const dep of sortedDeps) visit(dep);\n\t\tvisiting.delete(name);\n\t\tvisited.add(name);\n\t\tconst model = byName.get(name);\n\t\tif (model) result.push(model);\n\t}\n\tfor (const name of sortedNames) visit(name);\n\treturn result;\n}\n//#endregion\n//#region src/print-psl.ts\nfunction printPslFromAst(ast, options = {}) {\n\treturn serializePrintDocument(astDocumentToPrintDocument(ast), {\n\t\t...ifDefined(\"pslBlockDescriptors\", options.pslBlockDescriptors),\n\t\t...ifDefined(\"codecLookup\", options.codecLookup)\n\t});\n}\n//#endregion\nexport { printPslFromAst as printPsl };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"psl-printer.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-printer/dist/index.mjs"],"sourcesContent":["import { ifDefined } from \"@internal/utils/defined\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/contract-errors.ts\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/serialize-print-document.ts\n/**\n* Indent unit used for PSL block bodies and namespace nesting.\n*/\nconst PSL_INDENT_UNIT = \" \";\nfunction buildPslBlockDispatchMap(namespace) {\n\tconst byKeyword = /* @__PURE__ */ new Map();\n\tif (namespace) collectBlockDescriptors(namespace, byKeyword);\n\treturn { byKeyword };\n}\nfunction collectBlockDescriptors(namespace, byKeyword) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tbyKeyword.set(value.keyword, value);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) collectBlockDescriptors(value, byKeyword);\n\t}\n}\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\nfunction serializePrintDocument(doc, options = {}) {\n\tconst sections = [];\n\tsections.push(doc.headerComment);\n\tconst namedTypeEntries = [...doc.namedTypes].sort((a, b) => a.name.localeCompare(b.name));\n\tif (namedTypeEntries.length > 0) sections.push(serializeTypesBlock(namedTypeEntries));\n\tconst blockDispatchMap = buildPslBlockDispatchMap(options.pslBlockDescriptors);\n\tfor (const namespace of doc.namespaces) {\n\t\tconst namespaceSections = serializeNamespaceContents(namespace, blockDispatchMap, options.codecLookup);\n\t\tif (namespaceSections.length === 0) continue;\n\t\tif (namespace.name === UNSPECIFIED_PSL_NAMESPACE_ID) sections.push(...namespaceSections);\n\t\telse sections.push(wrapNamespaceBlock(namespace.name, namespaceSections));\n\t}\n\treturn `${sections.join(\"\\n\\n\")}\\n`;\n}\nfunction serializeNamespaceContents(namespace, blockDispatchMap, codecLookup) {\n\tconst sections = [];\n\tfor (const compositeType of namespace.compositeTypes) sections.push(serializeModel(compositeType, \"type\"));\n\tfor (const model of namespace.models) sections.push(serializeModel(model, \"model\"));\n\tfor (const extensionBlock of namespace.extensionBlocks) sections.push(serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup));\n\treturn sections;\n}\nfunction serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup) {\n\tconst descriptor = blockDispatchMap.byKeyword.get(extensionBlock.keyword);\n\tif (!descriptor) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `No pslBlockDescriptors contribution registered for extension-contributed block keyword \"${extensionBlock.keyword}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-missing\",\n\t\tkeyword: extensionBlock.keyword\n\t} });\n\tif (descriptor.discriminator !== extensionBlock.kind) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `The pslBlockDescriptors contribution for keyword \"${extensionBlock.keyword}\" owns discriminator \"${descriptor.discriminator}\", but the block carries kind \"${extensionBlock.kind}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-kind-mismatch\",\n\t\tkeyword: extensionBlock.keyword,\n\t\tdescriptorDiscriminator: descriptor.discriminator,\n\t\tblockKind: extensionBlock.kind\n\t} });\n\tconst lines = [`${extensionBlock.keyword} ${extensionBlock.name} {`];\n\tfor (const [paramName, paramDescriptor] of Object.entries(descriptor.parameters)) {\n\t\tconst paramValue = extensionBlock.parameters[paramName];\n\t\tif (paramValue === void 0) continue;\n\t\tconst rendered = renderParamValue(paramValue, paramDescriptor, codecLookup, paramName);\n\t\tlines.push(`${PSL_INDENT_UNIT}${paramName} = ${rendered}`);\n\t}\n\tif (descriptor.variadicParameters) for (const [paramName, paramValue] of Object.entries(extensionBlock.parameters)) {\n\t\tif (Object.hasOwn(descriptor.parameters, paramName)) continue;\n\t\tlines.push(`${PSL_INDENT_UNIT}${renderVariadicParam(paramName, paramValue)}`);\n\t}\n\tfor (const attr of extensionBlock.blockAttributes ?? []) {\n\t\tconst args = attr.args.map((arg) => arg.value).join(\", \");\n\t\tlines.push(`${PSL_INDENT_UNIT}@@${attr.name}${args.length > 0 ? `(${args})` : \"\"}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\n/**\n* Renders one undeclared parameter of a `variadicParameters` block (e.g. a\n* `native_enum` member line). Variadic entries have no per-parameter\n* descriptor, so there is no codec to round-trip a `value` through — the raw\n* PSL literal is emitted verbatim. A `bare` entry is just its key.\n*/\nfunction renderVariadicParam(paramName, paramValue) {\n\tif (paramValue.kind === \"bare\") return paramName;\n\treturn `${paramName} = ${renderVariadicValue(paramValue)}`;\n}\nfunction renderVariadicValue(paramValue) {\n\tswitch (paramValue.kind) {\n\t\tcase \"bare\": return \"\";\n\t\tcase \"value\": return paramValue.raw;\n\t\tcase \"ref\": return paramValue.identifier;\n\t\tcase \"option\": return paramValue.token;\n\t\tcase \"list\": return `[${paramValue.items.map(renderVariadicValue).join(\", \")}]`;\n\t}\n}\nfunction renderParamValue(paramValue, descriptor, codecLookup, paramName) {\n\tswitch (descriptor.kind) {\n\t\tcase \"ref\":\n\t\t\tif (paramValue.kind !== \"ref\") throw paramKindMismatchError(paramName, \"ref\", paramValue.kind);\n\t\t\treturn paramValue.identifier;\n\t\tcase \"value\":\n\t\t\tif (paramValue.kind !== \"value\") throw paramKindMismatchError(paramName, \"value\", paramValue.kind);\n\t\t\treturn renderValueParam(paramValue.raw, descriptor.codecId, codecLookup, paramName);\n\t\tcase \"option\":\n\t\t\tif (paramValue.kind !== \"option\") throw paramKindMismatchError(paramName, \"option\", paramValue.kind);\n\t\t\treturn paramValue.token;\n\t\tcase \"list\":\n\t\t\tif (paramValue.kind !== \"list\") throw paramKindMismatchError(paramName, \"list\", paramValue.kind);\n\t\t\treturn `[${paramValue.items.map((item) => renderParamValue(item, descriptor.of, codecLookup, paramName)).join(\", \")}]`;\n\t}\n}\nfunction paramKindMismatchError(paramName, descriptorKind, valueKind) {\n\treturn contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": descriptor is \"${descriptorKind}\" but AST node has kind \"${valueKind}\"`, { meta: {\n\t\treason: \"param-kind-mismatch\",\n\t\tparamName,\n\t\tdescriptorKind,\n\t\tvalueKind\n\t} });\n}\nfunction renderValueParam(raw, codecId, codecLookup, paramName) {\n\tif (!codecLookup) return raw;\n\tconst codec = codecLookup.get(codecId);\n\tif (!codec) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": no codec registered for id \"${codecId}\"`, { meta: {\n\t\treason: \"codec-unregistered\",\n\t\tparamName,\n\t\tcodecId\n\t} });\n\tlet parsedJson;\n\ttry {\n\t\tparsedJson = JSON.parse(raw);\n\t} catch (e) {\n\t\tthrow contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": codec \"${codecId}\" — raw literal is not valid JSON: ${String(e)}`, {\n\t\t\tmeta: {\n\t\t\t\treason: \"raw-literal-invalid-json\",\n\t\t\t\tparamName,\n\t\t\t\tcodecId\n\t\t\t},\n\t\t\tcause: e\n\t\t});\n\t}\n\treturn JSON.stringify(codec.encodeJson(codec.decodeJson(blindCast(parsedJson))));\n}\nfunction wrapNamespaceBlock(name, innerSections) {\n\treturn `namespace ${name} {\\n${innerSections.map((section) => section.split(\"\\n\").map((line) => line.length > 0 ? ` ${line}` : line).join(\"\\n\")).join(\"\\n\\n\")}\\n}`;\n}\nfunction serializeTypesBlock(namedTypes) {\n\tconst lines = [\"types {\"];\n\tfor (const nt of namedTypes) {\n\t\tconst attrStr = nt.attributes.length > 0 ? ` ${nt.attributes.join(\" \")}` : \"\";\n\t\tlines.push(` ${nt.name} = ${nt.baseType}${attrStr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction serializeModel(model, keyword) {\n\tconst lines = [];\n\tif (model.comment) lines.push(model.comment);\n\tlines.push(`${keyword} ${model.name} {`);\n\tconst idFields = model.fields.filter((f) => f.isId);\n\tconst scalarFields = model.fields.filter((f) => !f.isId && !f.isRelation);\n\tconst relationFields = model.fields.filter((f) => f.isRelation);\n\tconst allOrderedFields = [\n\t\t...idFields,\n\t\t...scalarFields,\n\t\t...relationFields\n\t];\n\tif (allOrderedFields.length > 0) {\n\t\tconst maxNameLen = Math.max(...allOrderedFields.map((f) => f.name.length));\n\t\tconst maxTypeLen = Math.max(...allOrderedFields.map((f) => formatFieldType(f).length));\n\t\tfor (const field of allOrderedFields) {\n\t\t\tconst typePart = formatFieldType(field);\n\t\t\tconst paddedName = field.name.padEnd(maxNameLen);\n\t\t\tconst paddedType = typePart.padEnd(maxTypeLen);\n\t\t\tif (field.comment) lines.push(` ${field.comment}`);\n\t\t\tconst attrStr = field.attributes.length > 0 ? ` ${field.attributes.join(\" \")}` : \"\";\n\t\t\tlines.push(` ${paddedName} ${paddedType}${attrStr}`.trimEnd());\n\t\t}\n\t}\n\tif (model.modelAttributes.length > 0) {\n\t\tif (allOrderedFields.length > 0) lines.push(\"\");\n\t\tfor (const attr of model.modelAttributes) lines.push(` ${attr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction formatFieldType(field) {\n\tlet type = field.typeName;\n\tif (field.list) type += \"[]\";\n\tif (field.optional) type += \"?\";\n\treturn type;\n}\n//#endregion\n//#region src/ast-to-print-document.ts\nconst PRISMA_8_MARKER = \"// use prisma-8\";\nfunction headerCommentFor(description) {\n\treturn description === void 0 ? PRISMA_8_MARKER : `${PRISMA_8_MARKER}\\n// ${description}`;\n}\nfunction astDocumentToPrintDocument(ast, description) {\n\tconst allModels = flatPslModels(ast);\n\tconst sortedModels = topologicalSortModels(allModels, buildModelFkDeps(allModels, new Set(allModels.map((m) => m.name))));\n\tconst namedTypes = ast.types ? ast.types.declarations.map(namedTypeDeclarationToPrinterNamedType) : [];\n\tconst modelOrder = new Map(sortedModels.map((model, index) => [model.name, index]));\n\tconst sectionsByName = /* @__PURE__ */ new Map();\n\tfor (const namespace of ast.namespaces) {\n\t\tconst section = sectionsByName.get(namespace.name) ?? {\n\t\t\tcompositeTypes: /* @__PURE__ */ new Map(),\n\t\t\tmodels: /* @__PURE__ */ new Map(),\n\t\t\tblocks: /* @__PURE__ */ new Map()\n\t\t};\n\t\tfor (const compositeType of namespace.compositeTypes) section.compositeTypes.set(compositeType.name, compositeType);\n\t\tfor (const model of namespace.models) section.models.set(model.name, model);\n\t\tfor (const block of namespacePslExtensionBlocks(namespace)) section.blocks.set(`${block.kind} ${block.name}`, block);\n\t\tsectionsByName.set(namespace.name, section);\n\t}\n\tconst unranked = sortedModels.length;\n\tconst namespaceSections = [...sectionsByName].map(([name, section]) => ({\n\t\tname,\n\t\tcompositeTypes: [...section.compositeTypes.values()].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0).map((compositeType) => modelToPrinterModel(compositeType)),\n\t\tmodels: [...section.models.values()].sort((a, b) => (modelOrder.get(a.name) ?? unranked) - (modelOrder.get(b.name) ?? unranked)).map((m) => modelToPrinterModel(m)),\n\t\textensionBlocks: [...section.blocks.values()]\n\t}));\n\tnamespaceSections.sort((a, b) => {\n\t\tif (a.name === b.name) return 0;\n\t\tif (a.name === UNSPECIFIED_PSL_NAMESPACE_ID) return -1;\n\t\tif (b.name === UNSPECIFIED_PSL_NAMESPACE_ID) return 1;\n\t\treturn a.name < b.name ? -1 : 1;\n\t});\n\treturn {\n\t\theaderComment: headerCommentFor(description),\n\t\tnamedTypes,\n\t\tnamespaces: namespaceSections\n\t};\n}\nfunction renderPslAttribute(attr) {\n\tconst prefix = attr.target === \"model\" || attr.target === \"enum\" ? \"@@\" : \"@\";\n\tif (attr.args.length === 0) return `${prefix}${attr.name}`;\n\tconst inner = attr.args.map(renderAttributeArgument).join(\", \");\n\treturn `${prefix}${attr.name}(${inner})`;\n}\nfunction renderAttributeArgument(arg) {\n\tif (arg.kind === \"positional\") return arg.value;\n\treturn `${arg.name}: ${arg.value}`;\n}\nfunction namedTypeDeclarationToPrinterNamedType(decl) {\n\tconst base = decl.baseType ?? (decl.typeConstructor !== void 0 ? formatTypeConstructor(decl.typeConstructor) : \"\");\n\tconst attributes = decl.attributes.map(renderPslAttribute);\n\treturn {\n\t\tname: decl.name,\n\t\tbaseType: base,\n\t\tattributes\n\t};\n}\nfunction formatTypeConstructor(tc) {\n\tconst path = tc.path.join(\".\");\n\tif (tc.args.length === 0) return path;\n\treturn `${path}(${tc.args.map(renderAttributeArgument).join(\", \")})`;\n}\nfunction getPositionalStringArg(attr, index) {\n\tconst raw = attr.args.filter((a) => a.kind === \"positional\")[index]?.value.trim();\n\tif (!raw) return void 0;\n\tconst unescaped = raw.match(/^(['\"])(.*)\\1$/)?.[2];\n\tif (unescaped === void 0) return void 0;\n\treturn unescapePslString(unescaped);\n}\n/**\n* Inverse of `escapePslString`. The parser stores quoted-literal arguments with\n* their PSL escape sequences (`\\\\`, `\\\"`, `\\n`, `\\r`) intact; when we round-trip\n* a value through `getPositionalStringArg` and re-render via `escapePslString`,\n* we must decode it once on extraction to avoid double-escaping the same\n* sequences on output.\n*/\nfunction unescapePslString(value) {\n\tlet result = \"\";\n\tfor (let i = 0; i < value.length; i++) {\n\t\tif (value.charCodeAt(i) !== 92 || i + 1 >= value.length) {\n\t\t\tresult += value[i];\n\t\t\tcontinue;\n\t\t}\n\t\tconst next = value[i + 1];\n\t\tif (next === \"\\\\\" || next === \"\\\"\" || next === \"'\") result += next;\n\t\telse if (next === \"n\") result += \"\\n\";\n\t\telse if (next === \"r\") result += \"\\r\";\n\t\telse {\n\t\t\tresult += \"\\\\\";\n\t\t\tresult += next;\n\t\t}\n\t\ti++;\n\t}\n\treturn result;\n}\nfunction modelToPrinterModel(model) {\n\tlet mapName;\n\tconst modelAttrStrings = [];\n\tfor (const a of model.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"model\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tmodelAttrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) modelAttrStrings.push(`@@map(\"${escapePslString(mapName)}\")`);\n\tconst printerFields = model.fields.map((f) => fieldToPrinterField(f));\n\treturn {\n\t\tname: model.name,\n\t\tmapName,\n\t\tfields: printerFields,\n\t\tmodelAttributes: modelAttrStrings,\n\t\tcomment: model.kind === \"model\" ? model.comment : void 0\n\t};\n}\n/**\n* Assembles the qualified type name string for a field type reference.\n*\n* Handles all four forms:\n* - `space:ns.Name` — typeContractSpaceId + typeNamespaceId + typeName\n* - `space:Name` — typeContractSpaceId + typeName (no namespace)\n* - `ns.Name` — typeNamespaceId + typeName (no space); fixes TML-2459 printer gap\n* - `Name` — typeName only (no qualifier)\n*/\nfunction assembleQualifiedTypeName(field) {\n\tconst { typeName, typeNamespaceId, typeContractSpaceId } = field;\n\tconst dotted = typeNamespaceId !== void 0 ? `${typeNamespaceId}.${typeName}` : typeName;\n\treturn typeContractSpaceId !== void 0 ? `${typeContractSpaceId}:${dotted}` : dotted;\n}\nfunction fieldToPrinterField(field) {\n\tconst typeName = field.typeConstructor !== void 0 ? formatTypeConstructor(field.typeConstructor) : assembleQualifiedTypeName(field);\n\tlet mapName;\n\tconst attrStrings = [];\n\tfor (const a of field.attributes) {\n\t\tif (a.name === \"map\" && a.target === \"field\") {\n\t\t\tmapName = getPositionalStringArg(a, 0) ?? mapName;\n\t\t\tcontinue;\n\t\t}\n\t\tattrStrings.push(renderPslAttribute(a));\n\t}\n\tif (mapName !== void 0) attrStrings.push(`@map(\"${escapePslString(mapName)}\")`);\n\tconst isRelation = field.attributes.some((a) => a.name === \"relation\" && a.target === \"field\");\n\tconst isUnsupported = typeName.startsWith(\"Unsupported(\");\n\tconst isId = field.attributes.some((a) => a.name === \"id\" && a.target === \"field\");\n\treturn {\n\t\tname: field.name,\n\t\ttypeName,\n\t\toptional: field.optional,\n\t\tlist: field.list,\n\t\tattributes: attrStrings,\n\t\tmapName,\n\t\tisId,\n\t\tisRelation,\n\t\tisUnsupported,\n\t\tcomment: void 0\n\t};\n}\nfunction buildModelFkDeps(models, modelNames) {\n\tconst deps = /* @__PURE__ */ new Map();\n\tfor (const m of models) deps.set(m.name, /* @__PURE__ */ new Set());\n\tfor (const m of models) for (const field of m.fields) {\n\t\tconst refModel = relationReferencedModel(field, modelNames);\n\t\tif (!refModel || refModel === m.name) continue;\n\t\tif (!hasFullRelation(field)) continue;\n\t\tdeps.get(m.name)?.add(refModel);\n\t}\n\treturn deps;\n}\nfunction hasFullRelation(field) {\n\tconst rel = field.attributes.find((a) => a.name === \"relation\" && a.target === \"field\");\n\tif (!rel) return false;\n\tconst named = Object.fromEntries(rel.args.filter((a) => a.kind === \"named\").map((a) => [a.name, a.value.trim()]));\n\treturn named[\"fields\"] !== void 0 && named[\"references\"] !== void 0;\n}\nfunction relationReferencedModel(field, modelNames) {\n\tconst raw = field.typeConstructor?.path[0] ?? field.typeName.replace(/\\?$/, \"\").replace(/\\[\\]$/, \"\");\n\tif (raw.length === 0) return;\n\treturn modelNames.has(raw) ? raw : void 0;\n}\nfunction topologicalSortModels(models, deps) {\n\tconst byName = new Map(models.map((m) => [m.name, m]));\n\tconst result = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst visiting = /* @__PURE__ */ new Set();\n\tconst sortedNames = [...deps.keys()].sort();\n\tfunction visit(name) {\n\t\tif (visited.has(name)) return;\n\t\tif (visiting.has(name)) return;\n\t\tvisiting.add(name);\n\t\tconst sortedDeps = [...deps.get(name) ?? /* @__PURE__ */ new Set()].sort();\n\t\tfor (const dep of sortedDeps) visit(dep);\n\t\tvisiting.delete(name);\n\t\tvisited.add(name);\n\t\tconst model = byName.get(name);\n\t\tif (model) result.push(model);\n\t}\n\tfor (const name of sortedNames) visit(name);\n\treturn result;\n}\n//#endregion\n//#region src/print-psl.ts\nfunction printPslFromAst(ast, options = {}) {\n\treturn serializePrintDocument(astDocumentToPrintDocument(ast, options.description), {\n\t\t...ifDefined(\"pslBlockDescriptors\", options.pslBlockDescriptors),\n\t\t...ifDefined(\"codecLookup\", options.codecLookup)\n\t});\n}\n//#endregion\nexport { printPslFromAst as printPsl };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import { t as InternalError } from "./internal-error-ChGYPVpq-DhUD05u0.mjs";
2
+ import { l as printSyntax } from "./ast-helpers-2XRnkQEO-BxG5qx3Q.mjs";
3
+ //#region ../../../1-framework/2-authoring/psl-parser/dist/resolve-D_lZ54qh.mjs
4
+ function diagnosticSource(sources, node) {
5
+ return {
6
+ sources,
7
+ node,
8
+ at(span) {
9
+ const sourceFile = sources.sourceFileFor(node);
10
+ const range = span === void 0 ? {
11
+ start: sourceFile.positionAt(node.offset),
12
+ end: sourceFile.positionAt(node.endOffset)
13
+ } : sourceFile.pslSpanToRange(span);
14
+ return {
15
+ filename: sourceFile.filename,
16
+ range
17
+ };
18
+ }
19
+ };
20
+ }
21
+ function diagnosticFromSpan(diagnostic, source) {
22
+ if (diagnostic.span === void 0) throw new InternalError("Owned PSL diagnostic has no span");
23
+ return {
24
+ code: diagnostic.code,
25
+ message: diagnostic.message,
26
+ ...source.at(diagnostic.span),
27
+ ...diagnostic.data === void 0 ? {} : { data: diagnostic.data }
28
+ };
29
+ }
30
+ function mapPslDiagnostics(diagnostics, sources) {
31
+ return diagnostics.map(({ filename, code, message, range, data }) => ({
32
+ code,
33
+ message,
34
+ sourceId: filename,
35
+ span: sources.sourceFileNamed(filename).rangeToPslSpan(range),
36
+ ...data === void 0 ? {} : { data }
37
+ }));
38
+ }
39
+ function createPslDiagnosticCollector(sources) {
40
+ const entries = [];
41
+ return {
42
+ get length() {
43
+ return entries.length;
44
+ },
45
+ push(...diagnostics) {
46
+ for (const diagnostic of diagnostics) entries.push({
47
+ kind: "psl",
48
+ diagnostic
49
+ });
50
+ },
51
+ pushUnlocated(...diagnostics) {
52
+ for (const diagnostic of diagnostics) entries.push({
53
+ kind: "psl",
54
+ diagnostic,
55
+ omitSpan: true
56
+ });
57
+ },
58
+ pushExternal(...diagnostics) {
59
+ for (const diagnostic of diagnostics) entries.push({
60
+ kind: "external",
61
+ diagnostic
62
+ });
63
+ },
64
+ toExternal() {
65
+ return entries.flatMap((entry) => {
66
+ if (entry.kind === "external") return [entry.diagnostic];
67
+ if (entry.omitSpan) {
68
+ const { code, message, filename, data } = entry.diagnostic;
69
+ return [{
70
+ code,
71
+ message,
72
+ sourceId: filename,
73
+ ...data === void 0 ? {} : { data }
74
+ }];
75
+ }
76
+ return mapPslDiagnostics([entry.diagnostic], sources);
77
+ });
78
+ }
79
+ };
80
+ }
81
+ function readResolvedAttribute(attribute, sources) {
82
+ return {
83
+ name: attributeName(attribute.name()),
84
+ args: readResolvedArgList(attribute.argList(), sources),
85
+ span: nodePslSpan(attribute.syntax, sources)
86
+ };
87
+ }
88
+ function readResolvedAttributes(attributes, sources) {
89
+ return Array.from(attributes, (attribute) => readResolvedAttribute(attribute, sources));
90
+ }
91
+ function readResolvedConstructorCall(annotation, sources) {
92
+ const argList = annotation?.argList();
93
+ if (annotation === void 0 || argList === void 0) return void 0;
94
+ return {
95
+ path: annotation.name()?.path() ?? [],
96
+ args: readResolvedArgList(argList, sources),
97
+ span: nodePslSpan(annotation.syntax, sources)
98
+ };
99
+ }
100
+ function readResolvedArgList(argList, sources) {
101
+ if (argList === void 0) return [];
102
+ const args = [];
103
+ for (const arg of argList.args()) {
104
+ const name = arg.name()?.name();
105
+ const expression = arg.value();
106
+ args.push({
107
+ kind: name !== void 0 ? "named" : "positional",
108
+ ...name !== void 0 ? { name } : {},
109
+ value: renderExpression(expression),
110
+ ...expression !== void 0 ? { expression } : {},
111
+ span: nodePslSpan(arg.syntax, sources)
112
+ });
113
+ }
114
+ return args;
115
+ }
116
+ function attributeName(name) {
117
+ return name?.path().join(".") ?? "";
118
+ }
119
+ function renderExpression(expression) {
120
+ if (expression === void 0) return "";
121
+ return printSyntax(expression.syntax).trim();
122
+ }
123
+ function nodePslSpan(node, sources) {
124
+ const sourceFile = sources.sourceFileFor(node);
125
+ const start = node.offset;
126
+ const end = start + node.green.textLength;
127
+ return {
128
+ start: sourceFile.offsetToPslPosition(start),
129
+ end: sourceFile.offsetToPslPosition(end)
130
+ };
131
+ }
132
+ /** Unsupported-top-level-block diagnostics are anchored to the keyword token. */
133
+ function keywordPslSpan(node, keyword, sources) {
134
+ const sourceFile = sources.sourceFileFor(node);
135
+ const start = node.offset;
136
+ const end = start + keyword.length;
137
+ return {
138
+ start: sourceFile.offsetToPslPosition(start),
139
+ end: sourceFile.offsetToPslPosition(end)
140
+ };
141
+ }
142
+ //#endregion
143
+ export { mapPslDiagnostics as a, readResolvedAttributes as c, keywordPslSpan as i, readResolvedConstructorCall as l, diagnosticFromSpan as n, nodePslSpan as o, diagnosticSource as r, readResolvedAttribute as s, createPslDiagnosticCollector as t };
144
+
145
+ //# sourceMappingURL=resolve-D_lZ54qh-DqOQkoMT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-D_lZ54qh-DqOQkoMT.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/resolve-D_lZ54qh.mjs"],"sourcesContent":["import { a as printSyntax } from \"./ast-helpers-2XRnkQEO.mjs\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/diagnostic.ts\nfunction diagnosticSource(sources, node) {\n\treturn {\n\t\tsources,\n\t\tnode,\n\t\tat(span) {\n\t\t\tconst sourceFile = sources.sourceFileFor(node);\n\t\t\tconst range = span === void 0 ? {\n\t\t\t\tstart: sourceFile.positionAt(node.offset),\n\t\t\t\tend: sourceFile.positionAt(node.endOffset)\n\t\t\t} : sourceFile.pslSpanToRange(span);\n\t\t\treturn {\n\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\trange\n\t\t\t};\n\t\t}\n\t};\n}\nfunction diagnosticFromSpan(diagnostic, source) {\n\tif (diagnostic.span === void 0) throw new InternalError(\"Owned PSL diagnostic has no span\");\n\treturn {\n\t\tcode: diagnostic.code,\n\t\tmessage: diagnostic.message,\n\t\t...source.at(diagnostic.span),\n\t\t...diagnostic.data === void 0 ? {} : { data: diagnostic.data }\n\t};\n}\nfunction mapPslDiagnostics(diagnostics, sources) {\n\treturn diagnostics.map(({ filename, code, message, range, data }) => ({\n\t\tcode,\n\t\tmessage,\n\t\tsourceId: filename,\n\t\tspan: sources.sourceFileNamed(filename).rangeToPslSpan(range),\n\t\t...data === void 0 ? {} : { data }\n\t}));\n}\nfunction createPslDiagnosticCollector(sources) {\n\tconst entries = [];\n\treturn {\n\t\tget length() {\n\t\t\treturn entries.length;\n\t\t},\n\t\tpush(...diagnostics) {\n\t\t\tfor (const diagnostic of diagnostics) entries.push({\n\t\t\t\tkind: \"psl\",\n\t\t\t\tdiagnostic\n\t\t\t});\n\t\t},\n\t\tpushUnlocated(...diagnostics) {\n\t\t\tfor (const diagnostic of diagnostics) entries.push({\n\t\t\t\tkind: \"psl\",\n\t\t\t\tdiagnostic,\n\t\t\t\tomitSpan: true\n\t\t\t});\n\t\t},\n\t\tpushExternal(...diagnostics) {\n\t\t\tfor (const diagnostic of diagnostics) entries.push({\n\t\t\t\tkind: \"external\",\n\t\t\t\tdiagnostic\n\t\t\t});\n\t\t},\n\t\ttoExternal() {\n\t\t\treturn entries.flatMap((entry) => {\n\t\t\t\tif (entry.kind === \"external\") return [entry.diagnostic];\n\t\t\t\tif (entry.omitSpan) {\n\t\t\t\t\tconst { code, message, filename, data } = entry.diagnostic;\n\t\t\t\t\treturn [{\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tsourceId: filename,\n\t\t\t\t\t\t...data === void 0 ? {} : { data }\n\t\t\t\t\t}];\n\t\t\t\t}\n\t\t\t\treturn mapPslDiagnostics([entry.diagnostic], sources);\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\n//#region src/resolve.ts\nfunction readResolvedAttribute(attribute, sources) {\n\treturn {\n\t\tname: attributeName(attribute.name()),\n\t\targs: readResolvedArgList(attribute.argList(), sources),\n\t\tspan: nodePslSpan(attribute.syntax, sources)\n\t};\n}\nfunction readResolvedAttributes(attributes, sources) {\n\treturn Array.from(attributes, (attribute) => readResolvedAttribute(attribute, sources));\n}\nfunction readResolvedConstructorCall(annotation, sources) {\n\tconst argList = annotation?.argList();\n\tif (annotation === void 0 || argList === void 0) return void 0;\n\treturn {\n\t\tpath: annotation.name()?.path() ?? [],\n\t\targs: readResolvedArgList(argList, sources),\n\t\tspan: nodePslSpan(annotation.syntax, sources)\n\t};\n}\nfunction readResolvedArgList(argList, sources) {\n\tif (argList === void 0) return [];\n\tconst args = [];\n\tfor (const arg of argList.args()) {\n\t\tconst name = arg.name()?.name();\n\t\tconst expression = arg.value();\n\t\targs.push({\n\t\t\tkind: name !== void 0 ? \"named\" : \"positional\",\n\t\t\t...name !== void 0 ? { name } : {},\n\t\t\tvalue: renderExpression(expression),\n\t\t\t...expression !== void 0 ? { expression } : {},\n\t\t\tspan: nodePslSpan(arg.syntax, sources)\n\t\t});\n\t}\n\treturn args;\n}\nfunction attributeName(name) {\n\treturn name?.path().join(\".\") ?? \"\";\n}\nfunction renderExpression(expression) {\n\tif (expression === void 0) return \"\";\n\treturn printSyntax(expression.syntax).trim();\n}\nfunction nodePslSpan(node, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + node.green.textLength;\n\treturn {\n\t\tstart: sourceFile.offsetToPslPosition(start),\n\t\tend: sourceFile.offsetToPslPosition(end)\n\t};\n}\n/** Unsupported-top-level-block diagnostics are anchored to the keyword token. */\nfunction keywordPslSpan(node, keyword, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + keyword.length;\n\treturn {\n\t\tstart: sourceFile.offsetToPslPosition(start),\n\t\tend: sourceFile.offsetToPslPosition(end)\n\t};\n}\n//#endregion\nexport { readResolvedConstructorCall as a, diagnosticSource as c, readResolvedAttributes as i, mapPslDiagnostics as l, nodePslSpan as n, createPslDiagnosticCollector as o, readResolvedAttribute as r, diagnosticFromSpan as s, keywordPslSpan as t };\n\n//# sourceMappingURL=resolve-D_lZ54qh.mjs.map"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { G as PlanMeta } from "./domain-envelope-gHv58hD1-B8mta2A6.mjs";
2
+ import { n as ContractExecutionSection } from "./contract-types-Cdqr65a--BsYwlpQo.mjs";
2
3
  import { a as CodecCallContext } from "./codec-types-C4Bx6jXr-C2MBP0-0.mjs";
3
4
  //#region ../../../1-framework/1-core/framework-components/dist/runtime.d.mts
4
5
  //#region src/annotations.d.ts
@@ -721,6 +722,55 @@ declare function runBeforeQueryChain<TExec extends ExecutionPlan, TMutator exten
721
722
  */
722
723
  declare function runBeforeExecuteChain<TExec extends ExecutionPlan, TMutator extends ParamRefMutator = ParamRefMutator>(plan: TExec, middleware: ReadonlyArray<RuntimeMiddleware<TExec, TMutator>>, ctx: RuntimeMiddlewareContext, paramsMutator?: TMutator): Promise<void>;
723
724
  //#endregion
725
+ //#region src/execution/mutation-defaults.d.ts
726
+ /**
727
+ * Scope across which a generator's value is constant.
728
+ *
729
+ * - `'field'` — one value per defaulting site (one field of one record). Cache strategy: no cache; call per defaulting site. Right for per-record identifiers (UUIDs, CUIDs, ULIDs, nanoid, ksuid).
730
+ * - `'row'` — one value across all defaulting sites of one record of one operation. Cache strategy: per-call cache keyed by generator id. Right for correlation ids stamped into several fields of one record.
731
+ * - `'query'` — one value across all records and fields of one ORM operation. Cache strategy: caller-provided cache keyed by generator id. Right for `timestampNow` (a single timestamp per bulk create or update).
732
+ */
733
+ type GeneratorStability = 'field' | 'row' | 'query';
734
+ interface RuntimeMutationDefaultGenerator {
735
+ readonly id: string;
736
+ readonly generate: (params?: Record<string, unknown>) => unknown;
737
+ /**
738
+ * Scope across which the generator's value is constant. The framework derives the cache strategy from this declaration; generator authors never need to know about cache keys. See `GeneratorStability` for the per-value semantics.
739
+ */
740
+ readonly stability: GeneratorStability;
741
+ }
742
+ /** A runtime component (target, adapter, or extension) that may contribute generators. */
743
+ interface MutationDefaultGeneratorContributor {
744
+ readonly id: string;
745
+ readonly mutationDefaultGenerators?: () => ReadonlyArray<RuntimeMutationDefaultGenerator>;
746
+ }
747
+ type MutationDefaultsOp = 'create' | 'update';
748
+ interface MutationDefaultsOptions {
749
+ readonly op: MutationDefaultsOp;
750
+ /** Required: refs are namespace-scoped, so only defaults of `(namespace, entry)` apply, which tells same-named entries in different namespaces apart. */
751
+ readonly namespace: string;
752
+ readonly entry: string;
753
+ /** The values the caller writes. A key present here is explicit, whatever its value, and gets no default. */
754
+ readonly values: Readonly<Record<string, unknown>>;
755
+ /** Cache shared by the calls of one ORM operation, for `'query'`-stable generators. */
756
+ readonly defaultValueCache?: Map<string, unknown>;
757
+ }
758
+ interface AppliedMutationDefault {
759
+ readonly field: string;
760
+ readonly value: unknown;
761
+ }
762
+ interface MutationDefaults {
763
+ applyMutationDefaults(options: MutationDefaultsOptions): ReadonlyArray<AppliedMutationDefault>;
764
+ }
765
+ /** Registers every generator the contributors provide, by id. Two contributors providing one id is an error naming both. */
766
+ declare function collectMutationDefaultGenerators(contributors: ReadonlyArray<MutationDefaultGeneratorContributor>): ReadonlyMap<string, RuntimeMutationDefaultGenerator>;
767
+ /** Fails when the contract's mutation defaults name a generator the registry does not hold, listing every missing id. */
768
+ declare function assertMutationDefaultGeneratorsAvailable(execution: ContractExecutionSection | undefined, generatorRegistry: ReadonlyMap<string, RuntimeMutationDefaultGenerator>): void;
769
+ /**
770
+ * The defaults to write for one record: for each mutation default of the entry and namespace whose phase matches `op`, the generated value of every field the values do not carry. An update with no keys gets none.
771
+ */
772
+ declare function applyMutationDefaults(execution: ContractExecutionSection | undefined, generatorRegistry: ReadonlyMap<string, RuntimeMutationDefaultGenerator>, options: MutationDefaultsOptions): ReadonlyArray<AppliedMutationDefault>;
773
+ //#endregion
724
774
  //#region src/shared/runtime-error.d.ts
725
775
  interface RuntimeErrorEnvelope extends Error {
726
776
  readonly code: string;
@@ -1096,5 +1146,5 @@ interface LaneMetaBuilder<K extends OperationKind> extends MetaBuilder<K> {
1096
1146
  */
1097
1147
  declare function createMetaBuilder<K extends OperationKind>(kind: K, terminalName: string): LaneMetaBuilder<K>;
1098
1148
  //#endregion
1099
- export { Scalars as A, raceAgainstAbort as B, RuntimeErrorEnvelope as C, RuntimeMiddleware as D, RuntimeLog as E, checkAborted as F, runtimeAborted as G, runBeforeQueryChain as H, checkMiddlewareCompatibility as I, runtimeError as K, createMetaBuilder as L, ShapeSpec as M, ValidAnnotations as N, RuntimeMiddlewareContext as O, assertAnnotationsApplicable as P, defineAnnotation as R, RuntimeCoreOptions as S, RuntimeExecutor as T, runExecuteWithMiddleware as U, runBeforeExecuteChain as V, runQueryWithMiddleware as W, RelationKeys as _, AsyncIterableResult as a, RuntimeAbortedPhase as b, ExecuteInterceptResult as c, MetaBuilder as d, OperationKind as f, RUNTIME_ABORTED as g, QueryPlan as h, AnnotationValue as i, Shape as j, RuntimeStatementStats as k, ExecutionPlan as l, QueryInterceptResult as m, AfterQueryResult as n, CrossFamilyMiddleware as o, ParamRefMutator as p, AnnotationHandle as r, DefineAnnotationOptions as s, AfterExecuteResult as t, LaneMetaBuilder as u, RelationNamesOf as v, RuntimeExecuteOptions as w, RuntimeCore as x, ResultType as y, isRuntimeError as z };
1100
- //# sourceMappingURL=runtime-Dnv06bEV.d.mts.map
1149
+ export { runExecuteWithMiddleware as $, RuntimeExecuteOptions as A, ValidAnnotations as B, RelationKeys as C, RuntimeCore as D, RuntimeAbortedPhase as E, RuntimeMutationDefaultGenerator as F, checkMiddlewareCompatibility as G, assertAnnotationsApplicable as H, RuntimeStatementStats as I, defineAnnotation as J, collectMutationDefaultGenerators as K, Scalars as L, RuntimeLog as M, RuntimeMiddleware as N, RuntimeCoreOptions as O, RuntimeMiddlewareContext as P, runBeforeQueryChain as Q, Shape as R, RUNTIME_ABORTED as S, ResultType as T, assertMutationDefaultGeneratorsAvailable as U, applyMutationDefaults as V, checkAborted as W, raceAgainstAbort as X, isRuntimeError as Y, runBeforeExecuteChain as Z, MutationDefaultsOptions as _, AppliedMutationDefault as a, QueryInterceptResult as b, DefineAnnotationOptions as c, GeneratorStability as d, runQueryWithMiddleware as et, LaneMetaBuilder as f, MutationDefaultsOp as g, MutationDefaults as h, AnnotationValue as i, RuntimeExecutor as j, RuntimeErrorEnvelope as k, ExecuteInterceptResult as l, MutationDefaultGeneratorContributor as m, AfterQueryResult as n, runtimeError as nt, AsyncIterableResult as o, MetaBuilder as p, createMetaBuilder as q, AnnotationHandle as r, CrossFamilyMiddleware as s, AfterExecuteResult as t, runtimeAborted as tt, ExecutionPlan as u, OperationKind as v, RelationNamesOf as w, QueryPlan as x, ParamRefMutator as y, ShapeSpec as z };
1150
+ //# sourceMappingURL=runtime-CQ9-3czC.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-CQ9-3czC.d.mts","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/runtime.d.mts"],"mappings":"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"}
@@ -360,6 +360,84 @@ async function runBeforeChain(plan, middleware, ctx, paramsMutator, phase, selec
360
360
  if (work !== void 0) await raceAgainstAbort(Promise.resolve(work), ctx.signal, phase);
361
361
  }
362
362
  }
363
+ /** Registers every generator the contributors provide, by id. Two contributors providing one id is an error naming both. */
364
+ function collectMutationDefaultGenerators(contributors) {
365
+ const generators = /* @__PURE__ */ new Map();
366
+ const owners = /* @__PURE__ */ new Map();
367
+ for (const contributor of contributors) {
368
+ const nextGenerators = contributor.mutationDefaultGenerators?.() ?? [];
369
+ for (const generator of nextGenerators) {
370
+ const existingOwner = owners.get(generator.id);
371
+ if (existingOwner !== void 0) throw runtimeError("RUNTIME.DUPLICATE_MUTATION_DEFAULT_GENERATOR", `Duplicate mutation default generator '${generator.id}'.`, {
372
+ id: generator.id,
373
+ existingOwner,
374
+ incomingOwner: contributor.id
375
+ });
376
+ generators.set(generator.id, generator);
377
+ owners.set(generator.id, contributor.id);
378
+ }
379
+ }
380
+ return generators;
381
+ }
382
+ /** Fails when the contract's mutation defaults name a generator the registry does not hold, listing every missing id. */
383
+ function assertMutationDefaultGeneratorsAvailable(execution, generatorRegistry) {
384
+ const defaults = execution?.mutations.defaults ?? [];
385
+ if (defaults.length === 0) return;
386
+ const missing = /* @__PURE__ */ new Set();
387
+ for (const mutationDefault of defaults) for (const phase of [mutationDefault.onCreate, mutationDefault.onUpdate]) {
388
+ if (!phase) continue;
389
+ if (phase.kind === "generator" && !generatorRegistry.has(phase.id)) missing.add(phase.id);
390
+ }
391
+ if (missing.size === 0) return;
392
+ const ids = Array.from(missing);
393
+ throw runtimeError("RUNTIME.MUTATION_DEFAULT_GENERATOR_MISSING", `Contract requires mutation default generator(s) ${ids.map((id) => `'${id}'`).join(", ")}, but no runtime component provides them.`, { ids });
394
+ }
395
+ function computeExecutionDefaultValue(spec, generatorRegistry) {
396
+ const generator = generatorRegistry.get(spec.id);
397
+ if (!generator) throw runtimeError("RUNTIME.MUTATION_DEFAULT_GENERATOR_MISSING", `Contract references mutation default generator '${spec.id}' but no runtime component provides it.`, { id: spec.id });
398
+ return generator.generate(spec.params);
399
+ }
400
+ /**
401
+ * The defaults to write for one record: for each mutation default of the entry and namespace whose phase matches `op`, the generated value of every field the values do not carry. An update with no keys gets none.
402
+ */
403
+ function applyMutationDefaults(execution, generatorRegistry, options) {
404
+ const defaults = execution?.mutations.defaults ?? [];
405
+ if (defaults.length === 0) return [];
406
+ const isEmptyUpdate = options.op === "update" && Object.keys(options.values).length === 0;
407
+ const applied = [];
408
+ const appliedFields = /* @__PURE__ */ new Set();
409
+ const rowCache = /* @__PURE__ */ new Map();
410
+ for (const mutationDefault of defaults) {
411
+ if (mutationDefault.ref.entry !== options.entry) continue;
412
+ if (mutationDefault.ref.namespace !== options.namespace) continue;
413
+ const defaultSpec = options.op === "create" ? mutationDefault.onCreate : mutationDefault.onUpdate;
414
+ if (!defaultSpec) continue;
415
+ if (isEmptyUpdate) continue;
416
+ const fieldName = mutationDefault.ref.field;
417
+ if (Object.hasOwn(options.values, fieldName) || appliedFields.has(fieldName)) continue;
418
+ applied.push({
419
+ field: fieldName,
420
+ value: resolveScopedValue(defaultSpec, generatorRegistry, rowCache, options.defaultValueCache)
421
+ });
422
+ appliedFields.add(fieldName);
423
+ }
424
+ return applied;
425
+ }
426
+ function resolveScopedValue(spec, generatorRegistry, rowCache, queryCache) {
427
+ const cache = scopedCache(generatorRegistry.get(spec.id)?.stability, rowCache, queryCache);
428
+ if (!cache) return computeExecutionDefaultValue(spec, generatorRegistry);
429
+ if (cache.has(spec.id)) return cache.get(spec.id);
430
+ const value = computeExecutionDefaultValue(spec, generatorRegistry);
431
+ cache.set(spec.id, value);
432
+ return value;
433
+ }
434
+ function scopedCache(stability, rowCache, queryCache) {
435
+ switch (stability) {
436
+ case "row": return rowCache;
437
+ case "query": return queryCache;
438
+ default: return;
439
+ }
440
+ }
363
441
  /**
364
442
  * Drives a single query execution of `runDriver()` through the middleware
365
443
  * lifecycle's `interceptQuery` + row-source + termination phases.
@@ -670,6 +748,6 @@ function createMetaBuilder(kind, terminalName) {
670
748
  return new MetaBuilderImpl(kind, terminalName);
671
749
  }
672
750
  //#endregion
673
- export { assertAnnotationsApplicable as a, createMetaBuilder as c, runBeforeExecuteChain as d, runBeforeQueryChain as f, runtimeAborted as h, RuntimeCore as i, defineAnnotation as l, runQueryWithMiddleware as m, RUNTIME_ABORTED as n, checkAborted as o, runExecuteWithMiddleware as p, RelationKeys as r, checkMiddlewareCompatibility as s, AsyncIterableResult as t, raceAgainstAbort as u };
751
+ export { runQueryWithMiddleware as _, applyMutationDefaults as a, checkAborted as c, createMetaBuilder as d, defineAnnotation as f, runExecuteWithMiddleware as g, runBeforeQueryChain as h, RuntimeCore as i, checkMiddlewareCompatibility as l, runBeforeExecuteChain as m, RUNTIME_ABORTED as n, assertAnnotationsApplicable as o, raceAgainstAbort as p, RelationKeys as r, assertMutationDefaultGeneratorsAvailable as s, AsyncIterableResult as t, collectMutationDefaultGenerators as u, runtimeAborted as v };
674
752
 
675
- //# sourceMappingURL=runtime-DXmHIbAr.mjs.map
753
+ //# sourceMappingURL=runtime-CpojufYS.mjs.map