@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.
- package/dist/ast-helpers-2XRnkQEO-BxG5qx3Q.mjs +386 -0
- package/dist/ast-helpers-2XRnkQEO-BxG5qx3Q.mjs.map +1 -0
- package/dist/authoring-BffMNBO5.d.mts +43 -0
- package/dist/authoring-BffMNBO5.d.mts.map +1 -0
- package/dist/authoring-DbG78eh2.mjs +88 -0
- package/dist/authoring-DbG78eh2.mjs.map +1 -0
- package/dist/{hashing-utils-DQgS3nOe.mjs → canonicalization-path-match-D88xLEq6-BFQC39ZG.mjs} +23 -3
- package/dist/canonicalization-path-match-D88xLEq6-BFQC39ZG.mjs.map +1 -0
- package/dist/{utils-DMAM0unR.mjs → canonicalize-json-ZPawceQR-Dua1VNEB.mjs} +2 -2
- package/dist/canonicalize-json-ZPawceQR-Dua1VNEB.mjs.map +1 -0
- package/dist/components.d.mts +6 -6
- package/dist/components.mjs +6 -6
- package/dist/components__authoring.d.mts +2 -2
- package/dist/components__authoring.mjs +2 -2
- package/dist/components__control.d.mts +2 -2
- package/dist/components__control.mjs +2 -2
- package/dist/components__psl-ast.d.mts +3 -3
- package/dist/components__psl-ast.mjs +2 -2
- package/dist/components__runtime.d.mts +2 -2
- package/dist/components__runtime.mjs +2 -2
- package/dist/components__utils.mjs +1 -1
- package/dist/{config-types-DgoEWkgA.d.mts → config-types-CWeyMWBV.d.mts} +17 -14
- package/dist/config-types-CWeyMWBV.d.mts.map +1 -0
- package/dist/{config-types-BZjCZ4qx.mjs → config-types-D0mYyP62.mjs} +25 -2
- package/dist/config-types-D0mYyP62.mjs.map +1 -0
- package/dist/config.d.mts +2 -2
- package/dist/config.mjs +2 -2
- package/dist/config__config-types.d.mts +2 -2
- package/dist/config__config-types.mjs +2 -2
- package/dist/contract-authoring.d.mts +1 -1
- package/dist/contract.d.mts +2 -2
- package/dist/contract.mjs +3 -4
- package/dist/contract__hashing-utils.mjs +1 -2
- package/dist/contract__hashing.d.mts +2 -2
- package/dist/contract__hashing.mjs +2 -2
- package/dist/{control-Bc_dos9-.d.mts → control-BTo8rNKi.d.mts} +23 -3
- package/dist/{control-Bc_dos9-.d.mts.map → control-BTo8rNKi.d.mts.map} +1 -1
- package/dist/{control-BjK3Jrmp.mjs → control-CS45l6kB.mjs} +5 -2
- package/dist/control-CS45l6kB.mjs.map +1 -0
- package/dist/{declarations-D79GooqC-CcAbqTsq.mjs → declarations-43E1JFHg-DGBa0YH_.mjs} +8 -388
- package/dist/declarations-43E1JFHg-DGBa0YH_.mjs.map +1 -0
- package/dist/errors.d.mts +1 -1
- package/dist/errors__execution.d.mts +1 -1
- package/dist/{execution-oqC6O8ES.d.mts → execution-BsiK0DjS.d.mts} +2 -2
- package/dist/{execution-oqC6O8ES.d.mts.map → execution-BsiK0DjS.d.mts.map} +1 -1
- package/dist/hashing-BAPc4zoz.d.mts +36 -0
- package/dist/hashing-BAPc4zoz.d.mts.map +1 -0
- package/dist/{hashing-BtIZVNYX.mjs → hashing-CjTNYBuj.mjs} +21 -3
- package/dist/hashing-CjTNYBuj.mjs.map +1 -0
- package/dist/{parse-SHpUIBnv-BvPsKLqw.d.mts → parse-DZRO_CK2-D8YAg23m.d.mts} +10 -18
- package/dist/{parse-SHpUIBnv-BvPsKLqw.d.mts.map → parse-DZRO_CK2-D8YAg23m.d.mts.map} +1 -1
- package/dist/{parse-DN-F4ASD-ClJdPlzj.mjs → parse-Km2Ne67K-CakfHP9f.mjs} +26 -29
- package/dist/parse-Km2Ne67K-CakfHP9f.mjs.map +1 -0
- package/dist/{psl-ast-BKF2fYgk-D6YxdCnP.d.mts → psl-ast-BePuKena-AYNqFKCE.d.mts} +8 -3
- package/dist/{psl-ast-BKF2fYgk-D6YxdCnP.d.mts.map → psl-ast-BePuKena-AYNqFKCE.d.mts.map} +1 -1
- package/dist/{psl-ast-Bu85Lu-k.d.mts → psl-ast-Cec7KbOn.d.mts} +2 -2
- package/dist/{psl-ast-Bu85Lu-k.d.mts.map → psl-ast-Cec7KbOn.d.mts.map} +1 -1
- package/dist/{psl-ast-DUCvVXbB.mjs → psl-ast-DYtFdynZ.mjs} +7 -2
- package/dist/psl-ast-DYtFdynZ.mjs.map +1 -0
- package/dist/psl-parser.d.mts +14 -7
- package/dist/psl-parser.d.mts.map +1 -1
- package/dist/psl-parser.mjs +10 -65
- package/dist/psl-parser.mjs.map +1 -1
- package/dist/psl-parser__format.mjs +23 -30
- package/dist/psl-parser__format.mjs.map +1 -1
- package/dist/psl-parser__interpret.d.mts +15 -7
- package/dist/psl-parser__interpret.d.mts.map +1 -1
- package/dist/psl-parser__interpret.mjs +24 -3
- package/dist/psl-parser__interpret.mjs.map +1 -1
- package/dist/psl-parser__syntax.d.mts +3 -3
- package/dist/psl-parser__syntax.mjs +3 -2
- package/dist/psl-parser__syntax.mjs.map +1 -1
- package/dist/psl-parser__tokenizer.d.mts +1 -1
- package/dist/psl-parser__tokenizer.mjs +1 -1
- package/dist/psl-printer.d.mts +8 -3
- package/dist/psl-printer.d.mts.map +1 -1
- package/dist/psl-printer.mjs +16 -9
- package/dist/psl-printer.mjs.map +1 -1
- package/dist/resolve-D_lZ54qh-DqOQkoMT.mjs +145 -0
- package/dist/resolve-D_lZ54qh-DqOQkoMT.mjs.map +1 -0
- package/dist/{runtime-Dnv06bEV.d.mts → runtime-CQ9-3czC.d.mts} +52 -2
- package/dist/runtime-CQ9-3czC.d.mts.map +1 -0
- package/dist/{runtime-DXmHIbAr.mjs → runtime-CpojufYS.mjs} +80 -2
- package/dist/{runtime-DXmHIbAr.mjs.map → runtime-CpojufYS.mjs.map} +1 -1
- package/dist/{symbol-table-DVPEY1fq-C5mC1wdG.d.mts → symbol-table-CRtoii4t-DubuO_5j.d.mts} +5 -5
- package/dist/{symbol-table-DVPEY1fq-C5mC1wdG.d.mts.map → symbol-table-CRtoii4t-DubuO_5j.d.mts.map} +1 -1
- package/dist/{tokenizer-CFsbtfFw-BnfUBepb.mjs → tokenizer-BMz7z2KR-J0yZ4im3.mjs} +11 -3
- package/dist/tokenizer-BMz7z2KR-J0yZ4im3.mjs.map +1 -0
- package/dist/{tokenizer-DcYI0Xrq-C-nNE9mE.d.mts → tokenizer-DW30uwhx-BHsWTwYk.d.mts} +8 -3
- package/dist/tokenizer-DW30uwhx-BHsWTwYk.d.mts.map +1 -0
- package/package.json +16 -15
- package/dist/authoring-D_Czkofy.mjs +0 -35
- package/dist/authoring-D_Czkofy.mjs.map +0 -1
- package/dist/authoring-DjeaZGzp.d.mts +0 -27
- package/dist/authoring-DjeaZGzp.d.mts.map +0 -1
- package/dist/canonicalization-path-match-CNgHuwM_-CCPBeUuk.mjs +0 -25
- package/dist/canonicalization-path-match-CNgHuwM_-CCPBeUuk.mjs.map +0 -1
- package/dist/config-types-BZjCZ4qx.mjs.map +0 -1
- package/dist/config-types-DgoEWkgA.d.mts.map +0 -1
- package/dist/control-BjK3Jrmp.mjs.map +0 -1
- package/dist/declarations-D79GooqC-CcAbqTsq.mjs.map +0 -1
- package/dist/diagnostic-Esyl8Qw1-Cd6SnWPN.mjs +0 -83
- package/dist/diagnostic-Esyl8Qw1-Cd6SnWPN.mjs.map +0 -1
- package/dist/hashing-BtIZVNYX.mjs.map +0 -1
- package/dist/hashing-WJflm0s1.d.mts +0 -25
- package/dist/hashing-WJflm0s1.d.mts.map +0 -1
- package/dist/hashing-utils-DQgS3nOe.mjs.map +0 -1
- package/dist/parse-DN-F4ASD-ClJdPlzj.mjs.map +0 -1
- package/dist/psl-ast-DUCvVXbB.mjs.map +0 -1
- package/dist/runtime-Dnv06bEV.d.mts.map +0 -1
- package/dist/tokenizer-CFsbtfFw-BnfUBepb.mjs.map +0 -1
- package/dist/tokenizer-DcYI0Xrq-C-nNE9mE.d.mts.map +0 -1
- 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;;
|
|
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"}
|
package/dist/psl-printer.mjs
CHANGED
|
@@ -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 {
|
|
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
|
|
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(
|
|
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
|
|
197
|
-
function
|
|
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:
|
|
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
|
});
|
package/dist/psl-printer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psl-printer.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-printer/dist/index.mjs"],"sourcesContent":["import { ifDefined } from \"@internal/utils/defined\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/contract-errors.ts\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/serialize-print-document.ts\n/**\n* Indent unit used for PSL block bodies and namespace nesting.\n*/\nconst PSL_INDENT_UNIT = \" \";\nfunction buildPslBlockDispatchMap(namespace) {\n\tconst byKeyword = /* @__PURE__ */ new Map();\n\tif (namespace) collectBlockDescriptors(namespace, byKeyword);\n\treturn { byKeyword };\n}\nfunction collectBlockDescriptors(namespace, byKeyword) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tbyKeyword.set(value.keyword, value);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) collectBlockDescriptors(value, byKeyword);\n\t}\n}\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\nfunction serializePrintDocument(doc, options = {}) {\n\tconst sections = [];\n\tsections.push(doc.headerComment);\n\tconst namedTypeEntries = [...doc.namedTypes].sort((a, b) => a.name.localeCompare(b.name));\n\tif (namedTypeEntries.length > 0) sections.push(serializeTypesBlock(namedTypeEntries));\n\tconst blockDispatchMap = buildPslBlockDispatchMap(options.pslBlockDescriptors);\n\tfor (const namespace of doc.namespaces) {\n\t\tconst namespaceSections = serializeNamespaceContents(namespace, blockDispatchMap, options.codecLookup);\n\t\tif (namespaceSections.length === 0) continue;\n\t\tif (namespace.name === UNSPECIFIED_PSL_NAMESPACE_ID) sections.push(...namespaceSections);\n\t\telse sections.push(wrapNamespaceBlock(namespace.name, namespaceSections));\n\t}\n\treturn `${sections.join(\"\\n\\n\")}\\n`;\n}\nfunction serializeNamespaceContents(namespace, blockDispatchMap, codecLookup) {\n\tconst sections = [];\n\tfor (const model of namespace.models) sections.push(serializeModel(model));\n\tfor (const extensionBlock of namespace.extensionBlocks) sections.push(serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup));\n\treturn sections;\n}\nfunction serializeExtensionBlock(extensionBlock, blockDispatchMap, codecLookup) {\n\tconst descriptor = blockDispatchMap.byKeyword.get(extensionBlock.keyword);\n\tif (!descriptor) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `No pslBlockDescriptors contribution registered for extension-contributed block keyword \"${extensionBlock.keyword}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-missing\",\n\t\tkeyword: extensionBlock.keyword\n\t} });\n\tif (descriptor.discriminator !== extensionBlock.kind) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `The pslBlockDescriptors contribution for keyword \"${extensionBlock.keyword}\" owns discriminator \"${descriptor.discriminator}\", but the block carries kind \"${extensionBlock.kind}\". Provide a matching pslBlockDescriptors contribution to serializePrintDocument, or remove the block from the input AST.`, { meta: {\n\t\treason: \"block-descriptor-kind-mismatch\",\n\t\tkeyword: extensionBlock.keyword,\n\t\tdescriptorDiscriminator: descriptor.discriminator,\n\t\tblockKind: extensionBlock.kind\n\t} });\n\tconst lines = [`${extensionBlock.keyword} ${extensionBlock.name} {`];\n\tfor (const [paramName, paramDescriptor] of Object.entries(descriptor.parameters)) {\n\t\tconst paramValue = extensionBlock.parameters[paramName];\n\t\tif (paramValue === void 0) continue;\n\t\tconst rendered = renderParamValue(paramValue, paramDescriptor, codecLookup, paramName);\n\t\tlines.push(`${PSL_INDENT_UNIT}${paramName} = ${rendered}`);\n\t}\n\tif (descriptor.variadicParameters) for (const [paramName, paramValue] of Object.entries(extensionBlock.parameters)) {\n\t\tif (Object.hasOwn(descriptor.parameters, paramName)) continue;\n\t\tlines.push(`${PSL_INDENT_UNIT}${renderVariadicParam(paramName, paramValue)}`);\n\t}\n\tfor (const attr of extensionBlock.blockAttributes ?? []) {\n\t\tconst args = attr.args.map((arg) => arg.value).join(\", \");\n\t\tlines.push(`${PSL_INDENT_UNIT}@@${attr.name}${args.length > 0 ? `(${args})` : \"\"}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\n/**\n* Renders one undeclared parameter of a `variadicParameters` block (e.g. a\n* `native_enum` member line). Variadic entries have no per-parameter\n* descriptor, so there is no codec to round-trip a `value` through — the raw\n* PSL literal is emitted verbatim. A `bare` entry is just its key.\n*/\nfunction renderVariadicParam(paramName, paramValue) {\n\tif (paramValue.kind === \"bare\") return paramName;\n\treturn `${paramName} = ${renderVariadicValue(paramValue)}`;\n}\nfunction renderVariadicValue(paramValue) {\n\tswitch (paramValue.kind) {\n\t\tcase \"bare\": return \"\";\n\t\tcase \"value\": return paramValue.raw;\n\t\tcase \"ref\": return paramValue.identifier;\n\t\tcase \"option\": return paramValue.token;\n\t\tcase \"list\": return `[${paramValue.items.map(renderVariadicValue).join(\", \")}]`;\n\t}\n}\nfunction renderParamValue(paramValue, descriptor, codecLookup, paramName) {\n\tswitch (descriptor.kind) {\n\t\tcase \"ref\":\n\t\t\tif (paramValue.kind !== \"ref\") throw paramKindMismatchError(paramName, \"ref\", paramValue.kind);\n\t\t\treturn paramValue.identifier;\n\t\tcase \"value\":\n\t\t\tif (paramValue.kind !== \"value\") throw paramKindMismatchError(paramName, \"value\", paramValue.kind);\n\t\t\treturn renderValueParam(paramValue.raw, descriptor.codecId, codecLookup, paramName);\n\t\tcase \"option\":\n\t\t\tif (paramValue.kind !== \"option\") throw paramKindMismatchError(paramName, \"option\", paramValue.kind);\n\t\t\treturn paramValue.token;\n\t\tcase \"list\":\n\t\t\tif (paramValue.kind !== \"list\") throw paramKindMismatchError(paramName, \"list\", paramValue.kind);\n\t\t\treturn `[${paramValue.items.map((item) => renderParamValue(item, descriptor.of, codecLookup, paramName)).join(\", \")}]`;\n\t}\n}\nfunction paramKindMismatchError(paramName, descriptorKind, valueKind) {\n\treturn contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": descriptor is \"${descriptorKind}\" but AST node has kind \"${valueKind}\"`, { meta: {\n\t\treason: \"param-kind-mismatch\",\n\t\tparamName,\n\t\tdescriptorKind,\n\t\tvalueKind\n\t} });\n}\nfunction renderValueParam(raw, codecId, codecLookup, paramName) {\n\tif (!codecLookup) return raw;\n\tconst codec = codecLookup.get(codecId);\n\tif (!codec) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": no codec registered for id \"${codecId}\"`, { meta: {\n\t\treason: \"codec-unregistered\",\n\t\tparamName,\n\t\tcodecId\n\t} });\n\tlet parsedJson;\n\ttry {\n\t\tparsedJson = JSON.parse(raw);\n\t} catch (e) {\n\t\tthrow contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Extension block parameter \"${paramName}\": codec \"${codecId}\" — raw literal is not valid JSON: ${String(e)}`, {\n\t\t\tmeta: {\n\t\t\t\treason: \"raw-literal-invalid-json\",\n\t\t\t\tparamName,\n\t\t\t\tcodecId\n\t\t\t},\n\t\t\tcause: e\n\t\t});\n\t}\n\treturn JSON.stringify(codec.encodeJson(codec.decodeJson(blindCast(parsedJson))));\n}\nfunction wrapNamespaceBlock(name, innerSections) {\n\treturn `namespace ${name} {\\n${innerSections.map((section) => section.split(\"\\n\").map((line) => line.length > 0 ? ` ${line}` : line).join(\"\\n\")).join(\"\\n\\n\")}\\n}`;\n}\nfunction serializeTypesBlock(namedTypes) {\n\tconst lines = [\"types {\"];\n\tfor (const nt of namedTypes) {\n\t\tconst attrStr = nt.attributes.length > 0 ? ` ${nt.attributes.join(\" \")}` : \"\";\n\t\tlines.push(` ${nt.name} = ${nt.baseType}${attrStr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction serializeModel(model) {\n\tconst lines = [];\n\tif (model.comment) lines.push(model.comment);\n\tlines.push(`model ${model.name} {`);\n\tconst idFields = model.fields.filter((f) => f.isId);\n\tconst scalarFields = model.fields.filter((f) => !f.isId && !f.isRelation);\n\tconst relationFields = model.fields.filter((f) => f.isRelation);\n\tconst allOrderedFields = [\n\t\t...idFields,\n\t\t...scalarFields,\n\t\t...relationFields\n\t];\n\tif (allOrderedFields.length > 0) {\n\t\tconst maxNameLen = Math.max(...allOrderedFields.map((f) => f.name.length));\n\t\tconst maxTypeLen = Math.max(...allOrderedFields.map((f) => formatFieldType(f).length));\n\t\tfor (const field of allOrderedFields) {\n\t\t\tconst typePart = formatFieldType(field);\n\t\t\tconst paddedName = field.name.padEnd(maxNameLen);\n\t\t\tconst paddedType = typePart.padEnd(maxTypeLen);\n\t\t\tif (field.comment) lines.push(` ${field.comment}`);\n\t\t\tconst attrStr = field.attributes.length > 0 ? ` ${field.attributes.join(\" \")}` : \"\";\n\t\t\tlines.push(` ${paddedName} ${paddedType}${attrStr}`.trimEnd());\n\t\t}\n\t}\n\tif (model.modelAttributes.length > 0) {\n\t\tif (allOrderedFields.length > 0) lines.push(\"\");\n\t\tfor (const attr of model.modelAttributes) lines.push(` ${attr}`);\n\t}\n\tlines.push(\"}\");\n\treturn lines.join(\"\\n\");\n}\nfunction formatFieldType(field) {\n\tlet type = field.typeName;\n\tif (field.list) type += \"[]\";\n\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 {
|
|
1100
|
-
//# sourceMappingURL=runtime-
|
|
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 {
|
|
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-
|
|
753
|
+
//# sourceMappingURL=runtime-CpojufYS.mjs.map
|