@prisma/orm-toolchain 8.0.0-rc.9-dev.1 → 8.0.0-rc.9-dev.2
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/{aggregate-EMuVN6hq.mjs → aggregate-Ib7P8moX.mjs} +2 -2
- package/dist/{aggregate-EMuVN6hq.mjs.map → aggregate-Ib7P8moX.mjs.map} +1 -1
- package/dist/cli.mjs +5 -5
- package/dist/cli.mjs.map +1 -1
- package/dist/cli__control-api.d.mts +1 -1
- package/dist/cli__control-api.mjs +1 -1
- package/dist/cli__migration-cli.mjs +1 -1
- package/dist/config-loader.mjs +1 -1
- package/dist/{domain-type-generation-bpSO3Y0L-jo2C7LlH.mjs → domain-type-generation-CR9ECUau-DOlKbcaE.mjs} +20 -6
- package/dist/domain-type-generation-CR9ECUau-DOlKbcaE.mjs.map +1 -0
- package/dist/{domain-type-generation-PkAb39ob-Ct8AGqow.d.mts → domain-type-generation-X6-AaL1U-DHEoRf_y.d.mts} +14 -3
- package/dist/domain-type-generation-X6-AaL1U-DHEoRf_y.d.mts.map +1 -0
- package/dist/emitter.d.mts +2 -2
- package/dist/emitter.mjs +2 -2
- package/dist/emitter__domain-type-generation.d.mts +2 -2
- package/dist/emitter__domain-type-generation.mjs +2 -2
- package/dist/{exports-4S7plLIx.mjs → exports-BysXxIyI.mjs} +2 -2
- package/dist/{exports-4S7plLIx.mjs.map → exports-BysXxIyI.mjs.map} +1 -1
- package/dist/exports-CE6OD63o-4Qpqr2W7.mjs +398 -0
- package/dist/exports-CE6OD63o-4Qpqr2W7.mjs.map +1 -0
- package/dist/{exports-Cv8nMmBT.mjs → exports-gEustzOH.mjs} +2 -2
- package/dist/{exports-Cv8nMmBT.mjs.map → exports-gEustzOH.mjs.map} +1 -1
- package/dist/{index-Dgwl8Tzs.d.mts → index-D217lbiW.d.mts} +7 -3
- package/dist/index-D217lbiW.d.mts.map +1 -0
- package/dist/migration-tools.mjs +1 -1
- package/dist/migration-tools__aggregate.mjs +1 -1
- package/dist/{ref-CUMSMd2D-BUVY_EPC.mjs → ref-BPBIUGrB-BFzvJ0bv.mjs} +10 -6
- package/dist/ref-BPBIUGrB-BFzvJ0bv.mjs.map +1 -0
- package/dist/vite-plugin-contract-emit.mjs +3 -3
- package/package.json +12 -12
- package/dist/domain-type-generation-PkAb39ob-Ct8AGqow.d.mts.map +0 -1
- package/dist/domain-type-generation-bpSO3Y0L-jo2C7LlH.mjs.map +0 -1
- package/dist/exports-Dw2WIX63-CQgI2e_L.mjs +0 -160
- package/dist/exports-Dw2WIX63-CQgI2e_L.mjs.map +0 -1
- package/dist/index-Dgwl8Tzs.d.mts.map +0 -1
- package/dist/ref-CUMSMd2D-BUVY_EPC.mjs.map +0 -1
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import { D as serializeObjectKey, O as serializeValue, S as resolveModelFieldType, T as serializeExecutionType, d as generateImportLines, g as generateRootsType, h as generateModelsType, i as generateCodecTypeIntersection, l as generateFieldTypesMapsByNamespace, n as emitterError, t as deduplicateImports, u as generateHashTypeAliases, v as generateValueObjectTypeAliases, y as generateValueObjectsDescriptorType } from "./domain-type-generation-CR9ECUau-DOlKbcaE.mjs";
|
|
2
|
+
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
3
|
+
import { keepInternalSpecifiers } from "@prisma/orm-framework/components/emission";
|
|
4
|
+
import { blindCast } from "@prisma/orm-framework/utils/casts";
|
|
5
|
+
import { canonicalizeContractToObject } from "@prisma/orm-framework/contract/hashing";
|
|
6
|
+
import { format } from "prettier";
|
|
7
|
+
import { InternalError } from "@prisma/orm-framework/utils/internal-error";
|
|
8
|
+
import { UNBOUND_NAMESPACE_ID } from "@prisma/orm-framework/components/ir";
|
|
9
|
+
//#region ../../../1-framework/3-tooling/emitter/dist/exports-CE6OD63o.mjs
|
|
10
|
+
const JSON_EXTENSION = ".json";
|
|
11
|
+
function getEmittedArtifactPaths(outputJsonPath) {
|
|
12
|
+
if (!outputJsonPath.endsWith(JSON_EXTENSION)) throw emitterError("CONFIG.VALIDATION_FAILED", "Contract output path must end with .json", { meta: {
|
|
13
|
+
field: "contract.output",
|
|
14
|
+
outputJsonPath
|
|
15
|
+
} });
|
|
16
|
+
return {
|
|
17
|
+
jsonPath: outputJsonPath,
|
|
18
|
+
dtsPath: `${outputJsonPath.slice(0, -5)}.d.ts`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const TYPESCRIPT_IDENTIFIER = /^[$A-Z_a-z][$\w]*$/;
|
|
22
|
+
function namespacedMemberName(namespaceId, modelName) {
|
|
23
|
+
return `${namespaceId === UNBOUND_NAMESPACE_ID ? "unbound" : namespaceId}_${modelName}`;
|
|
24
|
+
}
|
|
25
|
+
function bareMemberName(_namespaceId, modelName) {
|
|
26
|
+
return modelName;
|
|
27
|
+
}
|
|
28
|
+
function claimMemberName(claims, memberName, source) {
|
|
29
|
+
if (!TYPESCRIPT_IDENTIFIER.test(memberName)) throw emitterError("CONTRACT.MODEL_TYPE_NAME_INVALID", `Emitted model type name "${memberName}" (from ${source}) is not a TypeScript identifier`, {
|
|
30
|
+
why: "Every entry in the emitted Models namespace is declared as `export type <name>`, so the name must be a TypeScript identifier.",
|
|
31
|
+
fix: "Rename the namespace or model so that <namespace>_<Model> contains only letters, digits, `$`, and `_`, and does not start with a digit.",
|
|
32
|
+
meta: {
|
|
33
|
+
memberName,
|
|
34
|
+
source
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const existing = claims.get(memberName);
|
|
38
|
+
if (existing !== void 0) throw emitterError("CONTRACT.MODEL_TYPE_NAME_COLLISION", `Emitted model type name "${memberName}" is produced by both ${existing} and ${source}`, {
|
|
39
|
+
why: "Every entry in the emitted Models namespace needs a distinct name, formed as <namespace>_<Model>.",
|
|
40
|
+
fix: "Rename one of the models or namespaces so the two names differ.",
|
|
41
|
+
meta: {
|
|
42
|
+
memberName,
|
|
43
|
+
sources: [existing, source]
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
claims.set(memberName, source);
|
|
47
|
+
}
|
|
48
|
+
function isPolymorphicBase(model) {
|
|
49
|
+
return model.discriminator !== void 0 && model.variants !== void 0;
|
|
50
|
+
}
|
|
51
|
+
function findModelByName(namespaces, namespaceId, modelName) {
|
|
52
|
+
return namespaces.find((ns) => ns.namespaceId === namespaceId)?.models.find((m) => m.modelName === modelName);
|
|
53
|
+
}
|
|
54
|
+
function findModel(namespaces, ref) {
|
|
55
|
+
return findModelByName(namespaces, ref.namespace, ref.model);
|
|
56
|
+
}
|
|
57
|
+
function requireRelationTarget(namespaces, owner, relationName, ref) {
|
|
58
|
+
const target = findModel(namespaces, ref);
|
|
59
|
+
if (target !== void 0) return target;
|
|
60
|
+
const ownerSource = `${owner.namespaceId}.${owner.modelName}`;
|
|
61
|
+
throw emitterError("CONTRACT.MODEL_RELATION_TARGET_MISSING", `Relation "${relationName}" on ${ownerSource} targets ${ref.namespace}.${ref.model}, which is not in the contract`, {
|
|
62
|
+
why: "A same-space relation must point at a model the contract declares; only cross-space relations may reference models outside it.",
|
|
63
|
+
fix: "Declare the target model in the contract, or mark the relation as cross-space by giving its target a `space`.",
|
|
64
|
+
meta: {
|
|
65
|
+
owner: ownerSource,
|
|
66
|
+
relationName,
|
|
67
|
+
target: {
|
|
68
|
+
namespaceId: ref.namespace,
|
|
69
|
+
modelName: ref.model
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function requireBase(namespaces, variant, base) {
|
|
75
|
+
const found = findModel(namespaces, base);
|
|
76
|
+
if (found !== void 0) return found;
|
|
77
|
+
const variantSource = `${variant.namespaceId}.${variant.modelName}`;
|
|
78
|
+
const baseSource = `${base.namespace}.${base.model}`;
|
|
79
|
+
throw emitterError("CONTRACT.MODEL_BASE_MISSING", `Model ${variantSource} names base ${baseSource}, which is not in the contract`, {
|
|
80
|
+
why: "A variant's type is its base's fields plus its own, so the base must be a model the contract declares.",
|
|
81
|
+
fix: "Declare the base model in the contract, or remove `base` from the variant.",
|
|
82
|
+
meta: {
|
|
83
|
+
variant: variantSource,
|
|
84
|
+
base: baseSource
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function requireVariant(namespaces, base, variantName) {
|
|
89
|
+
const variant = findModelByName(namespaces, base.namespaceId, variantName);
|
|
90
|
+
if (variant !== void 0) return variant;
|
|
91
|
+
const baseSource = `${base.namespaceId}.${base.modelName}`;
|
|
92
|
+
throw emitterError("CONTRACT.MODEL_VARIANT_MISSING", `Polymorphic base ${baseSource} names variant "${variantName}", which is not in the contract`, {
|
|
93
|
+
why: "The Any<Base> union is the union of the variant model types, so every variant a base declares must be a model in the same namespace.",
|
|
94
|
+
fix: "Declare the variant model in the same namespace as the base, or remove it from the base's variants.",
|
|
95
|
+
meta: {
|
|
96
|
+
base: baseSource,
|
|
97
|
+
variantName
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function collectFieldLines(ref, resolvers, discriminatorType) {
|
|
102
|
+
const lines = /* @__PURE__ */ new Map();
|
|
103
|
+
for (const [fieldName, field] of Object.entries(ref.model.fields)) {
|
|
104
|
+
const type = discriminatorType !== void 0 && fieldName === discriminatorType.field ? discriminatorType.type : resolveModelFieldType(ref.modelName, fieldName, field, ref.model, resolvers).output;
|
|
105
|
+
lines.set(fieldName, `${serializeObjectKey(fieldName)}: ${type};`);
|
|
106
|
+
}
|
|
107
|
+
return lines;
|
|
108
|
+
}
|
|
109
|
+
function hasJoin(relation) {
|
|
110
|
+
return "on" in relation && relation.on !== void 0;
|
|
111
|
+
}
|
|
112
|
+
function relationLine(owner, relationName, relation, index) {
|
|
113
|
+
if (relation.to.space !== void 0) return void 0;
|
|
114
|
+
const target = requireRelationTarget(index.namespaces, owner, relationName, relation.to);
|
|
115
|
+
const targetMember = index.memberNameOf(target.namespaceId, isPolymorphicBase(target.model) ? `Any${target.modelName}` : target.modelName);
|
|
116
|
+
const key = serializeObjectKey(relationName);
|
|
117
|
+
if (!hasJoin(relation)) return {
|
|
118
|
+
line: `${key}: ${relation.cardinality === "1:N" ? `${targetMember}[]` : targetMember};`,
|
|
119
|
+
hasJoin: false
|
|
120
|
+
};
|
|
121
|
+
if (relation.cardinality === "1:N" || relation.cardinality === "N:M") return {
|
|
122
|
+
line: `${key}: ${targetMember}[];`,
|
|
123
|
+
hasJoin: true
|
|
124
|
+
};
|
|
125
|
+
return {
|
|
126
|
+
line: `${key}: ${relation.nullable ? `${targetMember} | null` : targetMember};`,
|
|
127
|
+
hasJoin: true
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function collectRelationLines(ref, index) {
|
|
131
|
+
const lines = /* @__PURE__ */ new Map();
|
|
132
|
+
for (const [relationName, relation] of Object.entries(ref.model.relations)) {
|
|
133
|
+
const rendered = relationLine(ref, relationName, relation, index);
|
|
134
|
+
if (rendered !== void 0) lines.set(relationName, rendered);
|
|
135
|
+
}
|
|
136
|
+
return lines;
|
|
137
|
+
}
|
|
138
|
+
function discriminatorUnion(base) {
|
|
139
|
+
const values = Object.values(base.variants ?? {}).map((v) => serializeValue(v.value));
|
|
140
|
+
return values.length > 0 ? values.join(" | ") : "never";
|
|
141
|
+
}
|
|
142
|
+
function memberLines(ref, index, resolvers) {
|
|
143
|
+
const base = ref.model.base !== void 0 ? requireBase(index.namespaces, ref, ref.model.base) : void 0;
|
|
144
|
+
if (base !== void 0 && isPolymorphicBase(base.model)) {
|
|
145
|
+
const discriminatorField = base.model.discriminator?.field ?? "";
|
|
146
|
+
const variantValue = base.model.variants?.[ref.modelName]?.value;
|
|
147
|
+
const discriminatorType = {
|
|
148
|
+
field: discriminatorField,
|
|
149
|
+
type: variantValue !== void 0 ? serializeValue(variantValue) : discriminatorUnion(base.model)
|
|
150
|
+
};
|
|
151
|
+
return {
|
|
152
|
+
fieldsByName: new Map([...collectFieldLines(base, resolvers, discriminatorType), ...collectFieldLines(ref, resolvers, void 0)]),
|
|
153
|
+
relationsByName: new Map([...collectRelationLines(base, index), ...collectRelationLines(ref, index)])
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
fieldsByName: collectFieldLines(ref, resolvers, isPolymorphicBase(ref.model) ? {
|
|
158
|
+
field: ref.model.discriminator?.field ?? "",
|
|
159
|
+
type: discriminatorUnion(ref.model)
|
|
160
|
+
} : void 0),
|
|
161
|
+
relationsByName: collectRelationLines(ref, index)
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function renderMember(memberName, lines, hasOwner) {
|
|
165
|
+
const entries = [...lines.relationsByName];
|
|
166
|
+
const joinlessLines = entries.filter(([, r]) => !r.hasJoin).map(([, r]) => r.line);
|
|
167
|
+
const joinedLines = entries.filter(([, r]) => r.hasJoin).map(([, r]) => r.line);
|
|
168
|
+
const relationNames = entries.filter(([, r]) => r.hasJoin).map(([name]) => name);
|
|
169
|
+
const phantom = relationNames.length > 0 ? relationNames.map((name) => serializeValue(name)).join(" | ") : "never";
|
|
170
|
+
return ` export type ${memberName} = {\n${[
|
|
171
|
+
...lines.fieldsByName.values(),
|
|
172
|
+
...joinlessLines,
|
|
173
|
+
...joinedLines,
|
|
174
|
+
...hasOwner ? [] : [`readonly [RelationKeys]?: ${phantom};`]
|
|
175
|
+
].map((line) => ` ${line}`).join("\n")}\n };`;
|
|
176
|
+
}
|
|
177
|
+
function namespaceModelsOf(contract) {
|
|
178
|
+
return Object.entries(contract.domain.namespaces).map(([namespaceId, ns]) => ({
|
|
179
|
+
namespaceId,
|
|
180
|
+
models: Object.entries(ns.models).map(([modelName, model]) => ({
|
|
181
|
+
namespaceId,
|
|
182
|
+
modelName,
|
|
183
|
+
model
|
|
184
|
+
}))
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
function generateModelTypesBlock(contract, resolvers, supportsNamespaces) {
|
|
188
|
+
const memberNameOf = supportsNamespaces ? namespacedMemberName : bareMemberName;
|
|
189
|
+
const namespaces = namespaceModelsOf(contract);
|
|
190
|
+
const index = {
|
|
191
|
+
namespaces,
|
|
192
|
+
memberNameOf
|
|
193
|
+
};
|
|
194
|
+
const claims = /* @__PURE__ */ new Map();
|
|
195
|
+
for (const ns of namespaces) for (const ref of ns.models) claimMemberName(claims, memberNameOf(ns.namespaceId, ref.modelName), `${ns.namespaceId}.${ref.modelName}`);
|
|
196
|
+
for (const ns of namespaces) for (const ref of ns.models) {
|
|
197
|
+
if (!isPolymorphicBase(ref.model)) continue;
|
|
198
|
+
claimMemberName(claims, memberNameOf(ns.namespaceId, `Any${ref.modelName}`), `${ns.namespaceId}.Any<${ref.modelName}>`);
|
|
199
|
+
}
|
|
200
|
+
const members = [];
|
|
201
|
+
const constantEntries = [];
|
|
202
|
+
for (const ns of namespaces) {
|
|
203
|
+
const keys = [];
|
|
204
|
+
for (const ref of ns.models) {
|
|
205
|
+
const memberName = memberNameOf(ns.namespaceId, ref.modelName);
|
|
206
|
+
members.push(renderMember(memberName, memberLines(ref, index, resolvers), ref.model.owner !== void 0));
|
|
207
|
+
keys.push(`${serializeObjectKey(ref.modelName)}: Models.${memberName};`);
|
|
208
|
+
}
|
|
209
|
+
for (const ref of ns.models) {
|
|
210
|
+
if (!isPolymorphicBase(ref.model)) continue;
|
|
211
|
+
const unionName = memberNameOf(ns.namespaceId, `Any${ref.modelName}`);
|
|
212
|
+
const variantMembers = Object.keys(ref.model.variants ?? {}).map((variantName) => {
|
|
213
|
+
const variant = requireVariant(namespaces, ref, variantName);
|
|
214
|
+
return memberNameOf(variant.namespaceId, variant.modelName);
|
|
215
|
+
});
|
|
216
|
+
members.push(` export type ${unionName} = ${variantMembers.length > 0 ? variantMembers.join(" | ") : "never"};`);
|
|
217
|
+
keys.push(`${serializeObjectKey(`Any${ref.modelName}`)}: Models.${unionName};`);
|
|
218
|
+
}
|
|
219
|
+
if (!supportsNamespaces) {
|
|
220
|
+
constantEntries.push(...keys.map((key) => ` ${key}`));
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
const nsKey = serializeObjectKey(ns.namespaceId);
|
|
224
|
+
const nested = keys.map((key) => ` ${key}`).join("\n");
|
|
225
|
+
constantEntries.push(keys.length > 0 ? ` ${nsKey}: {\n${nested}\n };` : ` ${nsKey}: {};`);
|
|
226
|
+
}
|
|
227
|
+
return `${members.length > 0 ? `export namespace Models {\n${members.join("\n")}\n}` : "export namespace Models {}"}\n\n${`export declare const models: {\n${constantEntries.join("\n")}\n};`}`;
|
|
228
|
+
}
|
|
229
|
+
function generateEnumBlockType(enums) {
|
|
230
|
+
return `{ ${Object.entries(enums).map(([name, entry]) => {
|
|
231
|
+
const membersType = `readonly [${entry.members.map((m) => `{ readonly name: ${serializeValue(m.name)}; readonly value: ${serializeValue(m.value)} }`).join(", ")}]`;
|
|
232
|
+
return `readonly ${serializeObjectKey(name)}: { readonly codecId: ${serializeValue(entry.codecId)}; readonly members: ${membersType} }`;
|
|
233
|
+
}).join("; ")} }`;
|
|
234
|
+
}
|
|
235
|
+
function generateContractDts(contract, emitter, codecTypeImports, hashes, options, codecLookup, resolveImportSpecifier = keepInternalSpecifiers) {
|
|
236
|
+
const allImports = [...codecTypeImports];
|
|
237
|
+
if (options?.queryOperationTypeImports) allImports.push(...options.queryOperationTypeImports);
|
|
238
|
+
const importLines = generateImportLines(deduplicateImports(allImports), resolveImportSpecifier);
|
|
239
|
+
const familyImportLines = emitter.getFamilyImports(resolveImportSpecifier);
|
|
240
|
+
const hashAliases = generateHashTypeAliases(hashes);
|
|
241
|
+
const codecTypes = generateCodecTypeIntersection(codecTypeImports, "CodecTypes");
|
|
242
|
+
const familyTypeAliases = emitter.getFamilyTypeAliases(options);
|
|
243
|
+
const typeMapsExpr = emitter.getTypeMapsExpression();
|
|
244
|
+
const storageType = emitter.generateStorageType(contract, "StorageHash");
|
|
245
|
+
const namespaceEntries = Object.entries(contract.domain.namespaces);
|
|
246
|
+
if (namespaceEntries.length === 0) throw emitterError("CONTRACT.NAMESPACE_INVALID", "domain has no namespaces", { meta: { reason: "no-domain-namespaces" } });
|
|
247
|
+
for (const [nsId, ns] of namespaceEntries) if (ns === void 0) throw new InternalError(`domain namespace "${nsId}" is not present on the contract`);
|
|
248
|
+
const rootsType = generateRootsType(contract.roots);
|
|
249
|
+
const flatValueObjects = {};
|
|
250
|
+
for (const [, ns] of namespaceEntries) for (const [voName, vo] of Object.entries(blindCast(ns.valueObjects ?? {}))) if (!(voName in flatValueObjects)) flatValueObjects[voName] = vo;
|
|
251
|
+
const valueObjects = Object.keys(flatValueObjects).length > 0 ? flatValueObjects : void 0;
|
|
252
|
+
const valueObjectTypeAliases = generateValueObjectTypeAliases(valueObjects, codecLookup);
|
|
253
|
+
const valueObjectsDescriptor = generateValueObjectsDescriptorType(valueObjects);
|
|
254
|
+
const domainNamespacesType = namespaceEntries.map(([nsId, ns]) => {
|
|
255
|
+
const nsModels = ns.models;
|
|
256
|
+
const nsModelsType = generateModelsType(nsModels, (name, model) => emitter.generateModelStorageType(name, model));
|
|
257
|
+
const nsValueObjects = blindCast(ns.valueObjects);
|
|
258
|
+
const nsValueObjectsDescriptor = nsValueObjects !== void 0 && Object.keys(nsValueObjects).length > 0 ? generateValueObjectsDescriptorType(nsValueObjects) : void 0;
|
|
259
|
+
const nsEnums = blindCast(ns.enum);
|
|
260
|
+
return [
|
|
261
|
+
nsId,
|
|
262
|
+
nsModelsType,
|
|
263
|
+
nsValueObjectsDescriptor,
|
|
264
|
+
nsEnums !== void 0 && Object.keys(nsEnums).length > 0 ? generateEnumBlockType(nsEnums) : void 0
|
|
265
|
+
];
|
|
266
|
+
}).map(([nsId, nsModelsType, nsValueObjectsDescriptor, nsEnumBlock]) => {
|
|
267
|
+
const voLine = nsValueObjectsDescriptor !== void 0 ? `\n readonly valueObjects: ${nsValueObjectsDescriptor};` : "";
|
|
268
|
+
const enumLine = nsEnumBlock !== void 0 ? `\n readonly enum: ${nsEnumBlock};` : "";
|
|
269
|
+
return ` readonly ${serializeObjectKey(nsId)}: {\n readonly models: ${nsModelsType};${voLine}${enumLine}\n }`;
|
|
270
|
+
}).join(";\n");
|
|
271
|
+
const executionClause = contract.execution !== void 0 ? `\n readonly execution: ${serializeExecutionType(contract.execution)};` : "";
|
|
272
|
+
const resolveFieldTypeParams = emitter.resolveFieldTypeParams ? (modelName, fieldName, model) => emitter.resolveFieldTypeParams?.(modelName, fieldName, model, contract) : void 0;
|
|
273
|
+
const resolveFieldValueSet = emitter.resolveFieldValueSet ? (modelName, fieldName, model) => emitter.resolveFieldValueSet?.(modelName, fieldName, model, contract) : void 0;
|
|
274
|
+
const fieldTypesMaps = generateFieldTypesMapsByNamespace(namespaceEntries.map(([nsId, ns]) => [nsId, ns.models]), codecLookup, resolveFieldTypeParams, resolveFieldValueSet);
|
|
275
|
+
const extraTypeExports = emitter.getStorageTypeExports?.(contract, codecLookup);
|
|
276
|
+
const contractWrapper = emitter.getContractWrapper("ContractBase", "TypeMaps");
|
|
277
|
+
const modelTypesBlock = generateModelTypesBlock(contract, {
|
|
278
|
+
codecLookup,
|
|
279
|
+
resolveFieldTypeParams,
|
|
280
|
+
resolveFieldValueSet
|
|
281
|
+
}, options?.supportsNamespaces ?? true);
|
|
282
|
+
return `// ⚠️ GENERATED FILE - DO NOT EDIT
|
|
283
|
+
// This file is automatically generated by 'prisma contract emit'.
|
|
284
|
+
// To regenerate, run: prisma contract emit
|
|
285
|
+
${importLines.join("\n")}
|
|
286
|
+
|
|
287
|
+
${familyImportLines.join("\n")}
|
|
288
|
+
import type {
|
|
289
|
+
Contract as ContractType,
|
|
290
|
+
ExecutionHashBase,
|
|
291
|
+
NamespaceId,
|
|
292
|
+
ProfileHashBase,
|
|
293
|
+
StorageHashBase,
|
|
294
|
+
} from '${resolveImportSpecifier("@internal/contract/types")}';
|
|
295
|
+
|
|
296
|
+
${hashAliases}
|
|
297
|
+
|
|
298
|
+
export type CodecTypes = ${codecTypes};
|
|
299
|
+
${familyTypeAliases}
|
|
300
|
+
${valueObjectTypeAliases}
|
|
301
|
+
export type FieldOutputTypes = ${fieldTypesMaps.output};
|
|
302
|
+
export type FieldInputTypes = ${fieldTypesMaps.input};
|
|
303
|
+
${extraTypeExports ? `${extraTypeExports}\n` : ""}
|
|
304
|
+
${modelTypesBlock}
|
|
305
|
+
|
|
306
|
+
export type TypeMaps = ${typeMapsExpr};
|
|
307
|
+
|
|
308
|
+
type ContractBase = Omit<
|
|
309
|
+
ContractType<${storageType}>,
|
|
310
|
+
'roots' | 'domain'
|
|
311
|
+
> & {
|
|
312
|
+
readonly target: ${serializeValue(contract.target)};
|
|
313
|
+
readonly targetFamily: ${serializeValue(contract.targetFamily)};
|
|
314
|
+
readonly roots: ${rootsType};
|
|
315
|
+
readonly domain: {
|
|
316
|
+
readonly namespaces: {
|
|
317
|
+
${domainNamespacesType};
|
|
318
|
+
};
|
|
319
|
+
};
|
|
320
|
+
readonly capabilities: ${serializeValue(contract.capabilities)};
|
|
321
|
+
readonly extensions: ${serializeValue(contract.extensions)};${executionClause}
|
|
322
|
+
readonly meta: ${serializeValue(contract.meta)};
|
|
323
|
+
${valueObjects ? `readonly valueObjects: ${valueObjectsDescriptor};` : ""}
|
|
324
|
+
readonly profileHash: ProfileHash;
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
${contractWrapper}
|
|
328
|
+
`;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* The emitter only ever consumes a freshly authored contract, so every same-space to-one relation
|
|
332
|
+
* must already state whether it is nullable. Hydration of an on-disk contract derives a missing
|
|
333
|
+
* flag instead; that path never reaches here.
|
|
334
|
+
*/
|
|
335
|
+
function requireToOneRelationNullability(contract) {
|
|
336
|
+
for (const [namespaceId, namespace] of Object.entries(contract.domain.namespaces)) for (const [modelName, model] of Object.entries(namespace.models)) for (const [relationName, relation] of Object.entries(model.relations ?? {})) {
|
|
337
|
+
if (!("on" in relation && (relation.cardinality === "1:1" || relation.cardinality === "N:1") && relation.to.space === void 0) || typeof relation.nullable === "boolean") continue;
|
|
338
|
+
throw emitterError("CONTRACT.RELATION_INVALID", `Relation "${relationName}" on model "${namespaceId}:${modelName}" is a ${relation.cardinality} relation and must carry a boolean "nullable"`, {
|
|
339
|
+
why: "contract.d.ts types a to-one relation as nullable or required from this flag, and the authoring surfaces always set it.",
|
|
340
|
+
fix: "Author the contract through PSL or the contract builder, which derive the flag from the local fields the relation joins on.",
|
|
341
|
+
meta: {
|
|
342
|
+
modelName,
|
|
343
|
+
relationName,
|
|
344
|
+
reason: "to-one-nullability-missing"
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
const SCHEMA_VERSION = "1";
|
|
350
|
+
async function emit(contract, stack, targetFamily, options) {
|
|
351
|
+
if (options.outputJsonPath !== void 0) getEmittedArtifactPaths(options.outputJsonPath);
|
|
352
|
+
requireToOneRelationNullability(contract);
|
|
353
|
+
const { codecTypeImports, queryOperationTypeImports, aggregateDescriptors, codecDescriptors } = stack;
|
|
354
|
+
const { storageHash } = contract.storage;
|
|
355
|
+
const executionHash = contract.execution?.executionHash;
|
|
356
|
+
const { profileHash } = contract;
|
|
357
|
+
const canonicalized = canonicalizeContractToObject(contract, {
|
|
358
|
+
schemaVersion: SCHEMA_VERSION,
|
|
359
|
+
serializeContract: options.serializeContract,
|
|
360
|
+
...ifDefined("shouldPreserveEmpty", options.shouldPreserveEmpty),
|
|
361
|
+
...ifDefined("sortStorage", options.sortStorage)
|
|
362
|
+
});
|
|
363
|
+
const contractJsonString = JSON.stringify({
|
|
364
|
+
...canonicalized,
|
|
365
|
+
_generated: {
|
|
366
|
+
warning: "⚠️ GENERATED FILE - DO NOT EDIT",
|
|
367
|
+
message: "This file is automatically generated by \"prisma contract emit\".",
|
|
368
|
+
regenerate: "To regenerate, run: prisma contract emit"
|
|
369
|
+
}
|
|
370
|
+
}, null, 2);
|
|
371
|
+
const generateOptions = {
|
|
372
|
+
...ifDefined("queryOperationTypeImports", queryOperationTypeImports),
|
|
373
|
+
...ifDefined("aggregateDescriptors", aggregateDescriptors),
|
|
374
|
+
...ifDefined("codecDescriptors", codecDescriptors),
|
|
375
|
+
...ifDefined("supportsNamespaces", options.supportsNamespaces)
|
|
376
|
+
};
|
|
377
|
+
const contractTypeHashes = {
|
|
378
|
+
storageHash,
|
|
379
|
+
...ifDefined("executionHash", executionHash),
|
|
380
|
+
profileHash
|
|
381
|
+
};
|
|
382
|
+
return {
|
|
383
|
+
contractJson: contractJsonString,
|
|
384
|
+
contractDts: await format(generateContractDts(contract, targetFamily, codecTypeImports ?? [], contractTypeHashes, generateOptions, stack.codecLookup, options.resolveImportSpecifier ?? keepInternalSpecifiers), {
|
|
385
|
+
parser: "typescript",
|
|
386
|
+
singleQuote: true,
|
|
387
|
+
semi: true,
|
|
388
|
+
printWidth: 100
|
|
389
|
+
}),
|
|
390
|
+
storageHash,
|
|
391
|
+
...ifDefined("executionHash", executionHash),
|
|
392
|
+
profileHash
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
//#endregion
|
|
396
|
+
export { generateContractDts as n, getEmittedArtifactPaths as r, emit as t };
|
|
397
|
+
|
|
398
|
+
//# sourceMappingURL=exports-CE6OD63o-4Qpqr2W7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports-CE6OD63o-4Qpqr2W7.mjs","names":[],"sources":["../../../../1-framework/3-tooling/emitter/dist/exports-CE6OD63o.mjs"],"sourcesContent":["import { D as serializeValue, E as serializeObjectKey, O as emitterError, _ as generateValueObjectTypeAliases, c as generateFieldTypesMapsByNamespace, h as generateRootsType, l as generateHashTypeAliases, m as generateModelsType, r as generateCodecTypeIntersection, t as deduplicateImports, u as generateImportLines, v as generateValueObjectsDescriptorType, w as serializeExecutionType, x as resolveModelFieldType } from \"./domain-type-generation-CR9ECUau.mjs\";\nimport { keepInternalSpecifiers } from \"@internal/framework-components/emission\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { canonicalizeContractToObject } from \"@internal/contract/hashing\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { format } from \"prettier\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { UNBOUND_NAMESPACE_ID } from \"@internal/framework-components/ir\";\n//#region src/artifact-paths.ts\nconst JSON_EXTENSION = \".json\";\nfunction getEmittedArtifactPaths(outputJsonPath) {\n\tif (!outputJsonPath.endsWith(JSON_EXTENSION)) throw emitterError(\"CONFIG.VALIDATION_FAILED\", \"Contract output path must end with .json\", { meta: {\n\t\tfield: \"contract.output\",\n\t\toutputJsonPath\n\t} });\n\treturn {\n\t\tjsonPath: outputJsonPath,\n\t\tdtsPath: `${outputJsonPath.slice(0, -5)}.d.ts`\n\t};\n}\n//#endregion\n//#region src/model-types-emission.ts\nconst TYPESCRIPT_IDENTIFIER = /^[$A-Z_a-z][$\\w]*$/;\nfunction namespacedMemberName(namespaceId, modelName) {\n\treturn `${namespaceId === UNBOUND_NAMESPACE_ID ? \"unbound\" : namespaceId}_${modelName}`;\n}\nfunction bareMemberName(_namespaceId, modelName) {\n\treturn modelName;\n}\nfunction claimMemberName(claims, memberName, source) {\n\tif (!TYPESCRIPT_IDENTIFIER.test(memberName)) throw emitterError(\"CONTRACT.MODEL_TYPE_NAME_INVALID\", `Emitted model type name \"${memberName}\" (from ${source}) is not a TypeScript identifier`, {\n\t\twhy: \"Every entry in the emitted Models namespace is declared as `export type <name>`, so the name must be a TypeScript identifier.\",\n\t\tfix: \"Rename the namespace or model so that <namespace>_<Model> contains only letters, digits, `$`, and `_`, and does not start with a digit.\",\n\t\tmeta: {\n\t\t\tmemberName,\n\t\t\tsource\n\t\t}\n\t});\n\tconst existing = claims.get(memberName);\n\tif (existing !== void 0) throw emitterError(\"CONTRACT.MODEL_TYPE_NAME_COLLISION\", `Emitted model type name \"${memberName}\" is produced by both ${existing} and ${source}`, {\n\t\twhy: \"Every entry in the emitted Models namespace needs a distinct name, formed as <namespace>_<Model>.\",\n\t\tfix: \"Rename one of the models or namespaces so the two names differ.\",\n\t\tmeta: {\n\t\t\tmemberName,\n\t\t\tsources: [existing, source]\n\t\t}\n\t});\n\tclaims.set(memberName, source);\n}\nfunction isPolymorphicBase(model) {\n\treturn model.discriminator !== void 0 && model.variants !== void 0;\n}\nfunction findModelByName(namespaces, namespaceId, modelName) {\n\treturn namespaces.find((ns) => ns.namespaceId === namespaceId)?.models.find((m) => m.modelName === modelName);\n}\nfunction findModel(namespaces, ref) {\n\treturn findModelByName(namespaces, ref.namespace, ref.model);\n}\nfunction requireRelationTarget(namespaces, owner, relationName, ref) {\n\tconst target = findModel(namespaces, ref);\n\tif (target !== void 0) return target;\n\tconst ownerSource = `${owner.namespaceId}.${owner.modelName}`;\n\tthrow emitterError(\"CONTRACT.MODEL_RELATION_TARGET_MISSING\", `Relation \"${relationName}\" on ${ownerSource} targets ${ref.namespace}.${ref.model}, which is not in the contract`, {\n\t\twhy: \"A same-space relation must point at a model the contract declares; only cross-space relations may reference models outside it.\",\n\t\tfix: \"Declare the target model in the contract, or mark the relation as cross-space by giving its target a `space`.\",\n\t\tmeta: {\n\t\t\towner: ownerSource,\n\t\t\trelationName,\n\t\t\ttarget: {\n\t\t\t\tnamespaceId: ref.namespace,\n\t\t\t\tmodelName: ref.model\n\t\t\t}\n\t\t}\n\t});\n}\nfunction requireBase(namespaces, variant, base) {\n\tconst found = findModel(namespaces, base);\n\tif (found !== void 0) return found;\n\tconst variantSource = `${variant.namespaceId}.${variant.modelName}`;\n\tconst baseSource = `${base.namespace}.${base.model}`;\n\tthrow emitterError(\"CONTRACT.MODEL_BASE_MISSING\", `Model ${variantSource} names base ${baseSource}, which is not in the contract`, {\n\t\twhy: \"A variant's type is its base's fields plus its own, so the base must be a model the contract declares.\",\n\t\tfix: \"Declare the base model in the contract, or remove `base` from the variant.\",\n\t\tmeta: {\n\t\t\tvariant: variantSource,\n\t\t\tbase: baseSource\n\t\t}\n\t});\n}\nfunction requireVariant(namespaces, base, variantName) {\n\tconst variant = findModelByName(namespaces, base.namespaceId, variantName);\n\tif (variant !== void 0) return variant;\n\tconst baseSource = `${base.namespaceId}.${base.modelName}`;\n\tthrow emitterError(\"CONTRACT.MODEL_VARIANT_MISSING\", `Polymorphic base ${baseSource} names variant \"${variantName}\", which is not in the contract`, {\n\t\twhy: \"The Any<Base> union is the union of the variant model types, so every variant a base declares must be a model in the same namespace.\",\n\t\tfix: \"Declare the variant model in the same namespace as the base, or remove it from the base's variants.\",\n\t\tmeta: {\n\t\t\tbase: baseSource,\n\t\t\tvariantName\n\t\t}\n\t});\n}\nfunction collectFieldLines(ref, resolvers, discriminatorType) {\n\tconst lines = /* @__PURE__ */ new Map();\n\tfor (const [fieldName, field] of Object.entries(ref.model.fields)) {\n\t\tconst type = discriminatorType !== void 0 && fieldName === discriminatorType.field ? discriminatorType.type : resolveModelFieldType(ref.modelName, fieldName, field, ref.model, resolvers).output;\n\t\tlines.set(fieldName, `${serializeObjectKey(fieldName)}: ${type};`);\n\t}\n\treturn lines;\n}\nfunction hasJoin(relation) {\n\treturn \"on\" in relation && relation.on !== void 0;\n}\nfunction relationLine(owner, relationName, relation, index) {\n\tif (relation.to.space !== void 0) return void 0;\n\tconst target = requireRelationTarget(index.namespaces, owner, relationName, relation.to);\n\tconst targetMember = index.memberNameOf(target.namespaceId, isPolymorphicBase(target.model) ? `Any${target.modelName}` : target.modelName);\n\tconst key = serializeObjectKey(relationName);\n\tif (!hasJoin(relation)) return {\n\t\tline: `${key}: ${relation.cardinality === \"1:N\" ? `${targetMember}[]` : targetMember};`,\n\t\thasJoin: false\n\t};\n\tif (relation.cardinality === \"1:N\" || relation.cardinality === \"N:M\") return {\n\t\tline: `${key}: ${targetMember}[];`,\n\t\thasJoin: true\n\t};\n\treturn {\n\t\tline: `${key}: ${relation.nullable ? `${targetMember} | null` : targetMember};`,\n\t\thasJoin: true\n\t};\n}\nfunction collectRelationLines(ref, index) {\n\tconst lines = /* @__PURE__ */ new Map();\n\tfor (const [relationName, relation] of Object.entries(ref.model.relations)) {\n\t\tconst rendered = relationLine(ref, relationName, relation, index);\n\t\tif (rendered !== void 0) lines.set(relationName, rendered);\n\t}\n\treturn lines;\n}\nfunction discriminatorUnion(base) {\n\tconst values = Object.values(base.variants ?? {}).map((v) => serializeValue(v.value));\n\treturn values.length > 0 ? values.join(\" | \") : \"never\";\n}\nfunction memberLines(ref, index, resolvers) {\n\tconst base = ref.model.base !== void 0 ? requireBase(index.namespaces, ref, ref.model.base) : void 0;\n\tif (base !== void 0 && isPolymorphicBase(base.model)) {\n\t\tconst discriminatorField = base.model.discriminator?.field ?? \"\";\n\t\tconst variantValue = base.model.variants?.[ref.modelName]?.value;\n\t\tconst discriminatorType = {\n\t\t\tfield: discriminatorField,\n\t\t\ttype: variantValue !== void 0 ? serializeValue(variantValue) : discriminatorUnion(base.model)\n\t\t};\n\t\treturn {\n\t\t\tfieldsByName: new Map([...collectFieldLines(base, resolvers, discriminatorType), ...collectFieldLines(ref, resolvers, void 0)]),\n\t\t\trelationsByName: new Map([...collectRelationLines(base, index), ...collectRelationLines(ref, index)])\n\t\t};\n\t}\n\treturn {\n\t\tfieldsByName: collectFieldLines(ref, resolvers, isPolymorphicBase(ref.model) ? {\n\t\t\tfield: ref.model.discriminator?.field ?? \"\",\n\t\t\ttype: discriminatorUnion(ref.model)\n\t\t} : void 0),\n\t\trelationsByName: collectRelationLines(ref, index)\n\t};\n}\nfunction renderMember(memberName, lines, hasOwner) {\n\tconst entries = [...lines.relationsByName];\n\tconst joinlessLines = entries.filter(([, r]) => !r.hasJoin).map(([, r]) => r.line);\n\tconst joinedLines = entries.filter(([, r]) => r.hasJoin).map(([, r]) => r.line);\n\tconst relationNames = entries.filter(([, r]) => r.hasJoin).map(([name]) => name);\n\tconst phantom = relationNames.length > 0 ? relationNames.map((name) => serializeValue(name)).join(\" | \") : \"never\";\n\treturn ` export type ${memberName} = {\\n${[\n\t\t...lines.fieldsByName.values(),\n\t\t...joinlessLines,\n\t\t...joinedLines,\n\t\t...hasOwner ? [] : [`readonly [RelationKeys]?: ${phantom};`]\n\t].map((line) => ` ${line}`).join(\"\\n\")}\\n };`;\n}\nfunction namespaceModelsOf(contract) {\n\treturn Object.entries(contract.domain.namespaces).map(([namespaceId, ns]) => ({\n\t\tnamespaceId,\n\t\tmodels: Object.entries(ns.models).map(([modelName, model]) => ({\n\t\t\tnamespaceId,\n\t\t\tmodelName,\n\t\t\tmodel\n\t\t}))\n\t}));\n}\nfunction generateModelTypesBlock(contract, resolvers, supportsNamespaces) {\n\tconst memberNameOf = supportsNamespaces ? namespacedMemberName : bareMemberName;\n\tconst namespaces = namespaceModelsOf(contract);\n\tconst index = {\n\t\tnamespaces,\n\t\tmemberNameOf\n\t};\n\tconst claims = /* @__PURE__ */ new Map();\n\tfor (const ns of namespaces) for (const ref of ns.models) claimMemberName(claims, memberNameOf(ns.namespaceId, ref.modelName), `${ns.namespaceId}.${ref.modelName}`);\n\tfor (const ns of namespaces) for (const ref of ns.models) {\n\t\tif (!isPolymorphicBase(ref.model)) continue;\n\t\tclaimMemberName(claims, memberNameOf(ns.namespaceId, `Any${ref.modelName}`), `${ns.namespaceId}.Any<${ref.modelName}>`);\n\t}\n\tconst members = [];\n\tconst constantEntries = [];\n\tfor (const ns of namespaces) {\n\t\tconst keys = [];\n\t\tfor (const ref of ns.models) {\n\t\t\tconst memberName = memberNameOf(ns.namespaceId, ref.modelName);\n\t\t\tmembers.push(renderMember(memberName, memberLines(ref, index, resolvers), ref.model.owner !== void 0));\n\t\t\tkeys.push(`${serializeObjectKey(ref.modelName)}: Models.${memberName};`);\n\t\t}\n\t\tfor (const ref of ns.models) {\n\t\t\tif (!isPolymorphicBase(ref.model)) continue;\n\t\t\tconst unionName = memberNameOf(ns.namespaceId, `Any${ref.modelName}`);\n\t\t\tconst variantMembers = Object.keys(ref.model.variants ?? {}).map((variantName) => {\n\t\t\t\tconst variant = requireVariant(namespaces, ref, variantName);\n\t\t\t\treturn memberNameOf(variant.namespaceId, variant.modelName);\n\t\t\t});\n\t\t\tmembers.push(` export type ${unionName} = ${variantMembers.length > 0 ? variantMembers.join(\" | \") : \"never\"};`);\n\t\t\tkeys.push(`${serializeObjectKey(`Any${ref.modelName}`)}: Models.${unionName};`);\n\t\t}\n\t\tif (!supportsNamespaces) {\n\t\t\tconstantEntries.push(...keys.map((key) => ` ${key}`));\n\t\t\tcontinue;\n\t\t}\n\t\tconst nsKey = serializeObjectKey(ns.namespaceId);\n\t\tconst nested = keys.map((key) => ` ${key}`).join(\"\\n\");\n\t\tconstantEntries.push(keys.length > 0 ? ` ${nsKey}: {\\n${nested}\\n };` : ` ${nsKey}: {};`);\n\t}\n\treturn `${members.length > 0 ? `export namespace Models {\\n${members.join(\"\\n\")}\\n}` : \"export namespace Models {}\"}\\n\\n${`export declare const models: {\\n${constantEntries.join(\"\\n\")}\\n};`}`;\n}\n//#endregion\n//#region src/generate-contract-dts.ts\nfunction generateEnumBlockType(enums) {\n\treturn `{ ${Object.entries(enums).map(([name, entry]) => {\n\t\tconst membersType = `readonly [${entry.members.map((m) => `{ readonly name: ${serializeValue(m.name)}; readonly value: ${serializeValue(m.value)} }`).join(\", \")}]`;\n\t\treturn `readonly ${serializeObjectKey(name)}: { readonly codecId: ${serializeValue(entry.codecId)}; readonly members: ${membersType} }`;\n\t}).join(\"; \")} }`;\n}\nfunction generateContractDts(contract, emitter, codecTypeImports, hashes, options, codecLookup, resolveImportSpecifier = keepInternalSpecifiers) {\n\tconst allImports = [...codecTypeImports];\n\tif (options?.queryOperationTypeImports) allImports.push(...options.queryOperationTypeImports);\n\tconst importLines = generateImportLines(deduplicateImports(allImports), resolveImportSpecifier);\n\tconst familyImportLines = emitter.getFamilyImports(resolveImportSpecifier);\n\tconst hashAliases = generateHashTypeAliases(hashes);\n\tconst codecTypes = generateCodecTypeIntersection(codecTypeImports, \"CodecTypes\");\n\tconst familyTypeAliases = emitter.getFamilyTypeAliases(options);\n\tconst typeMapsExpr = emitter.getTypeMapsExpression();\n\tconst storageType = emitter.generateStorageType(contract, \"StorageHash\");\n\tconst namespaceEntries = Object.entries(contract.domain.namespaces);\n\tif (namespaceEntries.length === 0) throw emitterError(\"CONTRACT.NAMESPACE_INVALID\", \"domain has no namespaces\", { meta: { reason: \"no-domain-namespaces\" } });\n\tfor (const [nsId, ns] of namespaceEntries) if (ns === void 0) throw new InternalError(`domain namespace \"${nsId}\" is not present on the contract`);\n\tconst rootsType = generateRootsType(contract.roots);\n\tconst flatValueObjects = {};\n\tfor (const [, ns] of namespaceEntries) for (const [voName, vo] of Object.entries(blindCast(ns.valueObjects ?? {}))) if (!(voName in flatValueObjects)) flatValueObjects[voName] = vo;\n\tconst valueObjects = Object.keys(flatValueObjects).length > 0 ? flatValueObjects : void 0;\n\tconst valueObjectTypeAliases = generateValueObjectTypeAliases(valueObjects, codecLookup);\n\tconst valueObjectsDescriptor = generateValueObjectsDescriptorType(valueObjects);\n\tconst domainNamespacesType = namespaceEntries.map(([nsId, ns]) => {\n\t\tconst nsModels = ns.models;\n\t\tconst nsModelsType = generateModelsType(nsModels, (name, model) => emitter.generateModelStorageType(name, model));\n\t\tconst nsValueObjects = blindCast(ns.valueObjects);\n\t\tconst nsValueObjectsDescriptor = nsValueObjects !== void 0 && Object.keys(nsValueObjects).length > 0 ? generateValueObjectsDescriptorType(nsValueObjects) : void 0;\n\t\tconst nsEnums = blindCast(ns.enum);\n\t\treturn [\n\t\t\tnsId,\n\t\t\tnsModelsType,\n\t\t\tnsValueObjectsDescriptor,\n\t\t\tnsEnums !== void 0 && Object.keys(nsEnums).length > 0 ? generateEnumBlockType(nsEnums) : void 0\n\t\t];\n\t}).map(([nsId, nsModelsType, nsValueObjectsDescriptor, nsEnumBlock]) => {\n\t\tconst voLine = nsValueObjectsDescriptor !== void 0 ? `\\n readonly valueObjects: ${nsValueObjectsDescriptor};` : \"\";\n\t\tconst enumLine = nsEnumBlock !== void 0 ? `\\n readonly enum: ${nsEnumBlock};` : \"\";\n\t\treturn ` readonly ${serializeObjectKey(nsId)}: {\\n readonly models: ${nsModelsType};${voLine}${enumLine}\\n }`;\n\t}).join(\";\\n\");\n\tconst executionClause = contract.execution !== void 0 ? `\\n readonly execution: ${serializeExecutionType(contract.execution)};` : \"\";\n\tconst resolveFieldTypeParams = emitter.resolveFieldTypeParams ? (modelName, fieldName, model) => emitter.resolveFieldTypeParams?.(modelName, fieldName, model, contract) : void 0;\n\tconst resolveFieldValueSet = emitter.resolveFieldValueSet ? (modelName, fieldName, model) => emitter.resolveFieldValueSet?.(modelName, fieldName, model, contract) : void 0;\n\tconst fieldTypesMaps = generateFieldTypesMapsByNamespace(namespaceEntries.map(([nsId, ns]) => [nsId, ns.models]), codecLookup, resolveFieldTypeParams, resolveFieldValueSet);\n\tconst extraTypeExports = emitter.getStorageTypeExports?.(contract, codecLookup);\n\tconst contractWrapper = emitter.getContractWrapper(\"ContractBase\", \"TypeMaps\");\n\tconst modelTypesBlock = generateModelTypesBlock(contract, {\n\t\tcodecLookup,\n\t\tresolveFieldTypeParams,\n\t\tresolveFieldValueSet\n\t}, options?.supportsNamespaces ?? true);\n\treturn `// ⚠️ GENERATED FILE - DO NOT EDIT\n// This file is automatically generated by 'prisma contract emit'.\n// To regenerate, run: prisma contract emit\n${importLines.join(\"\\n\")}\n\n${familyImportLines.join(\"\\n\")}\nimport type {\n Contract as ContractType,\n ExecutionHashBase,\n NamespaceId,\n ProfileHashBase,\n StorageHashBase,\n} from '${resolveImportSpecifier(\"@internal/contract/types\")}';\n\n${hashAliases}\n\nexport type CodecTypes = ${codecTypes};\n${familyTypeAliases}\n${valueObjectTypeAliases}\nexport type FieldOutputTypes = ${fieldTypesMaps.output};\nexport type FieldInputTypes = ${fieldTypesMaps.input};\n${extraTypeExports ? `${extraTypeExports}\\n` : \"\"}\n${modelTypesBlock}\n\nexport type TypeMaps = ${typeMapsExpr};\n\ntype ContractBase = Omit<\n ContractType<${storageType}>,\n 'roots' | 'domain'\n> & {\n readonly target: ${serializeValue(contract.target)};\n readonly targetFamily: ${serializeValue(contract.targetFamily)};\n readonly roots: ${rootsType};\n readonly domain: {\n readonly namespaces: {\n${domainNamespacesType};\n };\n };\n readonly capabilities: ${serializeValue(contract.capabilities)};\n readonly extensions: ${serializeValue(contract.extensions)};${executionClause}\n readonly meta: ${serializeValue(contract.meta)};\n ${valueObjects ? `readonly valueObjects: ${valueObjectsDescriptor};` : \"\"}\n readonly profileHash: ProfileHash;\n};\n\n${contractWrapper}\n`;\n}\n//#endregion\n//#region src/require-relation-nullability.ts\n/**\n* The emitter only ever consumes a freshly authored contract, so every same-space to-one relation\n* must already state whether it is nullable. Hydration of an on-disk contract derives a missing\n* flag instead; that path never reaches here.\n*/\nfunction requireToOneRelationNullability(contract) {\n\tfor (const [namespaceId, namespace] of Object.entries(contract.domain.namespaces)) for (const [modelName, model] of Object.entries(namespace.models)) for (const [relationName, relation] of Object.entries(model.relations ?? {})) {\n\t\tif (!(\"on\" in relation && (relation.cardinality === \"1:1\" || relation.cardinality === \"N:1\") && relation.to.space === void 0) || typeof relation.nullable === \"boolean\") continue;\n\t\tthrow emitterError(\"CONTRACT.RELATION_INVALID\", `Relation \"${relationName}\" on model \"${namespaceId}:${modelName}\" is a ${relation.cardinality} relation and must carry a boolean \"nullable\"`, {\n\t\t\twhy: \"contract.d.ts types a to-one relation as nullable or required from this flag, and the authoring surfaces always set it.\",\n\t\t\tfix: \"Author the contract through PSL or the contract builder, which derive the flag from the local fields the relation joins on.\",\n\t\t\tmeta: {\n\t\t\t\tmodelName,\n\t\t\t\trelationName,\n\t\t\t\treason: \"to-one-nullability-missing\"\n\t\t\t}\n\t\t});\n\t}\n}\n//#endregion\n//#region src/emit.ts\nconst SCHEMA_VERSION = \"1\";\nasync function emit(contract, stack, targetFamily, options) {\n\tif (options.outputJsonPath !== void 0) getEmittedArtifactPaths(options.outputJsonPath);\n\trequireToOneRelationNullability(contract);\n\tconst { codecTypeImports, queryOperationTypeImports, aggregateDescriptors, codecDescriptors } = stack;\n\tconst { storageHash } = contract.storage;\n\tconst executionHash = contract.execution?.executionHash;\n\tconst { profileHash } = contract;\n\tconst canonicalized = canonicalizeContractToObject(contract, {\n\t\tschemaVersion: SCHEMA_VERSION,\n\t\tserializeContract: options.serializeContract,\n\t\t...ifDefined(\"shouldPreserveEmpty\", options.shouldPreserveEmpty),\n\t\t...ifDefined(\"sortStorage\", options.sortStorage)\n\t});\n\tconst contractJsonString = JSON.stringify({\n\t\t...canonicalized,\n\t\t_generated: {\n\t\t\twarning: \"⚠️ GENERATED FILE - DO NOT EDIT\",\n\t\t\tmessage: \"This file is automatically generated by \\\"prisma contract emit\\\".\",\n\t\t\tregenerate: \"To regenerate, run: prisma contract emit\"\n\t\t}\n\t}, null, 2);\n\tconst generateOptions = {\n\t\t...ifDefined(\"queryOperationTypeImports\", queryOperationTypeImports),\n\t\t...ifDefined(\"aggregateDescriptors\", aggregateDescriptors),\n\t\t...ifDefined(\"codecDescriptors\", codecDescriptors),\n\t\t...ifDefined(\"supportsNamespaces\", options.supportsNamespaces)\n\t};\n\tconst contractTypeHashes = {\n\t\tstorageHash,\n\t\t...ifDefined(\"executionHash\", executionHash),\n\t\tprofileHash\n\t};\n\treturn {\n\t\tcontractJson: contractJsonString,\n\t\tcontractDts: await format(generateContractDts(contract, targetFamily, codecTypeImports ?? [], contractTypeHashes, generateOptions, stack.codecLookup, options.resolveImportSpecifier ?? keepInternalSpecifiers), {\n\t\t\tparser: \"typescript\",\n\t\t\tsingleQuote: true,\n\t\t\tsemi: true,\n\t\t\tprintWidth: 100\n\t\t}),\n\t\tstorageHash,\n\t\t...ifDefined(\"executionHash\", executionHash),\n\t\tprofileHash\n\t};\n}\n//#endregion\nexport { generateContractDts as n, getEmittedArtifactPaths as r, emit as t };\n\n//# sourceMappingURL=exports-CE6OD63o.mjs.map"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as getEmittedArtifactPaths } from "./exports-
|
|
1
|
+
import { r as getEmittedArtifactPaths } from "./exports-CE6OD63o-4Qpqr2W7.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { realpathSync } from "node:fs";
|
|
4
4
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
@@ -218,4 +218,4 @@ async function loadConfigForFile(filePath) {
|
|
|
218
218
|
//#endregion
|
|
219
219
|
export { loadConfigForSections as a, loadConfigForFile as i, findNearestConfigPathForFile as n, requireConfigSections as o, loadConfig as r, finalizeConfig as t };
|
|
220
220
|
|
|
221
|
-
//# sourceMappingURL=exports-
|
|
221
|
+
//# sourceMappingURL=exports-gEustzOH.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports-Cv8nMmBT.mjs","names":[],"sources":["../../../../1-framework/3-tooling/config-loader/dist/exports/index.mjs"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport { normalizeContractConfig } from \"@internal/config/config-types\";\nimport { dirname, join, resolve } from \"pathe\";\nimport { realpathSync } from \"node:fs\";\nimport { access } from \"node:fs/promises\";\nimport { pathToFileURL } from \"node:url\";\nimport { collectConfigIssues } from \"@internal/config/config-validation\";\nimport { getEmittedArtifactPaths } from \"@internal/emitter\";\nimport { CliStructuredError, errorConfigEvaluationFailed, errorConfigFileNotFound, errorConfigValidation, errorConfigVersionMarkerMissing } from \"@internal/errors/control\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { isStructuredError } from \"@internal/utils/structured-error\";\n//#region src/finalize-config.ts\nfunction finalizeContractSource(source, configDir) {\n\tconst resolvedInputs = source.inputs?.map((input) => resolve(configDir, input));\n\tif (resolvedInputs === void 0) return source;\n\treturn {\n\t\t...source,\n\t\tinputs: resolvedInputs\n\t};\n}\n/** Normalizes a contract section and resolves its paths against `configDir`. */\nfunction finalizeContractConfig(contract, configDir) {\n\tconst normalized = normalizeContractConfig(contract);\n\treturn {\n\t\t...normalized,\n\t\tsource: finalizeContractSource(normalized.source, configDir),\n\t\toutput: resolve(configDir, normalized.output)\n\t};\n}\nconst DEFAULT_MIGRATIONS_DIR = \"migrations\";\n/**\n* Resolves the migrations directory against `configDir`, which is what `migrations.dir` is\n* documented to be relative to. The default is applied here too, so no caller re-derives it\n* against a different base — a command run from one directory with `--config` naming a project in\n* another would otherwise read the wrong `migrations/`.\n*/\nfunction finalizeMigrationsConfig(migrations, configDir) {\n\treturn {\n\t\t...migrations,\n\t\tdir: resolve(configDir, migrations?.dir ?? DEFAULT_MIGRATIONS_DIR)\n\t};\n}\nfunction finalizeConfig(config, configDir) {\n\treturn {\n\t\t...config,\n\t\t...config.contract ? { contract: finalizeContractConfig(config.contract, configDir) } : void 0,\n\t\tmigrations: finalizeMigrationsConfig(config.migrations, configDir)\n\t};\n}\n//#endregion\n//#region src/load.ts\nconst CONFIG_FILENAME = \"prisma.config.ts\";\nasync function findNearestConfigPathForFile(filePath) {\n\tlet current = dirname(resolve(process.cwd(), filePath));\n\twhile (true) {\n\t\tconst candidate = join(current, CONFIG_FILENAME);\n\t\tif (await fileExists(candidate)) return candidate;\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) return;\n\t\tcurrent = parent;\n\t}\n}\nasync function fileExists(path) {\n\ttry {\n\t\tawait access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction isRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction collectArtifactCollisionDiagnostics(contract) {\n\tconst inputs = contract.source.inputs;\n\tconst output = contract.output;\n\tif (inputs === void 0 || output === void 0) return [];\n\tlet emittedArtifactPaths;\n\ttry {\n\t\temittedArtifactPaths = getEmittedArtifactPaths(output);\n\t} catch (error) {\n\t\treturn [errorConfigValidation(\"contract.output\", {\n\t\t\t/* v8 ignore next -- getEmittedArtifactPaths only ever throws an Error */\n\t\t\twhy: error instanceof Error ? error.message : String(error),\n\t\t\tsection: \"contract\"\n\t\t})];\n\t}\n\tconst emittedPaths = /* @__PURE__ */ new Set([emittedArtifactPaths.jsonPath, emittedArtifactPaths.dtsPath]);\n\tif (inputs.some((input) => emittedPaths.has(input))) return [errorConfigValidation(\"contract.source.inputs[]\", {\n\t\twhy: \"Config.contract.source.inputs must not include emitted artifact paths derived from contract.output\",\n\t\tsection: \"contract\"\n\t})];\n\treturn [];\n}\nfunction buildLoadedConfig(rawConfig, configDir) {\n\tconst issues = collectConfigIssues(rawConfig);\n\tconst diagnostics = issues.map((issue) => errorConfigValidation(issue.field, {\n\t\twhy: issue.message,\n\t\tsection: issue.section\n\t}));\n\tconst raw = blindCast(rawConfig);\n\tconst config = issues.some((issue) => issue.section === \"migrations\") ? raw : {\n\t\t...raw,\n\t\tmigrations: finalizeMigrationsConfig(raw.migrations, configDir)\n\t};\n\tif (config.contract === void 0 || issues.some((issue) => issue.section === \"contract\")) return {\n\t\tconfig,\n\t\tdiagnostics\n\t};\n\tconst contract = finalizeContractConfig(config.contract, configDir);\n\tdiagnostics.push(...collectArtifactCollisionDiagnostics(contract));\n\treturn {\n\t\tconfig: {\n\t\t\t...config,\n\t\t\tcontract\n\t\t},\n\t\tdiagnostics\n\t};\n}\nfunction toConfigLoadFailure(error, configPath) {\n\tif (CliStructuredError.is(error)) return error;\n\tconst resolvedPath = configPath ? resolve(process.cwd(), configPath) : void 0;\n\tif (isStructuredError(error)) return new CliStructuredError(error.code, error.message, {\n\t\t...ifDefined(\"why\", error.why),\n\t\t...ifDefined(\"fix\", error.fix),\n\t\t...ifDefined(\"where\", error.where),\n\t\t...ifDefined(\"meta\", error.meta),\n\t\tcause: error\n\t});\n\tif (error instanceof Error) return errorConfigEvaluationFailed(resolvedPath, {\n\t\twhy: error.message,\n\t\tcause: error\n\t});\n\treturn errorConfigEvaluationFailed(resolvedPath, { why: String(error) });\n}\n/**\n* Loads and finalizes the Prisma Next config.\n*\n* Failures that prevent evaluation entirely — missing file, module that does\n* not evaluate (`CONFIG.FILE_NOT_FOUND`, `CONFIG.EVALUATION_FAILED`) — are the\n* `Result` failure. Structural problems inside an evaluated config do not\n* fail the load: they are returned as section-tagged diagnostics so commands\n* fail only on the sections they read (via {@link requireConfigSections}).\n*/\n/**\n* c12 is resolved to its real on-disk entry before importing: jiti (inside\n* c12) resolves its own transitive imports from the importing file's location,\n* and a symlinked install (pnpm) would otherwise anchor them somewhere the\n* packages are not. Importing at the real location keeps every transitive\n* resolution working.\n*/\nasync function importC12() {\n\treturn await import(pathToFileURL(realpathSync(createRequire(import.meta.url).resolve(\"c12\"))).href);\n}\nasync function loadConfig(configPath, options) {\n\tconst cwd = options?.cwd ?? process.cwd();\n\tconst resolvedConfigPath = configPath ? resolve(cwd, configPath) : void 0;\n\tconst configCwd = resolvedConfigPath ? dirname(resolvedConfigPath) : cwd;\n\tlet result;\n\ttry {\n\t\tresult = await (await importC12()).loadConfig({\n\t\t\tname: \"prisma\",\n\t\t\t...ifDefined(\"configFile\", resolvedConfigPath),\n\t\t\tcwd: configCwd\n\t\t});\n\t} catch (error) {\n\t\treturn notOk(toConfigLoadFailure(error, configPath));\n\t}\n\tif (resolvedConfigPath && result.configFile !== resolvedConfigPath) return notOk(errorConfigFileNotFound(resolvedConfigPath));\n\tif (!result.config || Object.keys(result.config).length === 0) return notOk(errorConfigFileNotFound(result.configFile || resolvedConfigPath || configPath));\n\t/* v8 ignore next -- @preserve */\n\tconst loadedConfigDir = result.configFile ? dirname(result.configFile) : configCwd;\n\t/* v8 ignore next -- c12 always returns layers for a config it evaluated */\n\tconst [requestedLayer] = result.layers ?? [];\n\tconst layerConfig = requestedLayer?.config;\n\tconst engineMarker = isRecord(layerConfig) ? layerConfig[\"$prismaConfig\"] : void 0;\n\tif (engineMarker !== void 0) {\n\t\tif (engineMarker !== 1)\n /* v8 ignore next -- a config that evaluated always carries its resolved path */\n\t\treturn notOk(errorConfigVersionMarkerMissing(result.configFile ?? resolvedConfigPath));\n\t\tconst orm = result.config[\"orm\"];\n\t\tif (orm !== void 0 && !isRecord(orm)) return ok({\n\t\t\tconfig: buildLoadedConfig({}, loadedConfigDir).config,\n\t\t\tdiagnostics: [errorConfigValidation(\"orm\", { why: `The orm section of ${CONFIG_FILENAME} must be an object` })]\n\t\t});\n\t\treturn ok(buildLoadedConfig(orm ?? {}, loadedConfigDir));\n\t}\n\t/* v8 ignore next -- a config that evaluated always carries its resolved path */\n\treturn notOk(errorConfigVersionMarkerMissing(result.configFile ?? resolvedConfigPath));\n}\n/**\n* Narrows a {@link LoadedConfig} to the sections a command reads. Fails with\n* the first diagnostic concerning a required section; diagnostics on other\n* sections are ignored so unrelated commands keep working.\n*/\nfunction requireConfigSections(loaded, sections) {\n\tconst blocking = loaded.diagnostics.find((diagnostic) => {\n\t\tconst section = diagnostic.meta?.[\"section\"];\n\t\treturn typeof section !== \"string\" || sections.some((required) => required === section);\n\t});\n\treturn blocking ? notOk(blocking) : ok(loaded.config);\n}\n/**\n* Convenience composition of {@link loadConfig} and\n* {@link requireConfigSections} for commands that read a fixed set of\n* sections and have no use for diagnostics outside them.\n*/\nasync function loadConfigForSections(configPath, sections) {\n\tconst loaded = await loadConfig(configPath);\n\tif (!loaded.ok) return loaded;\n\treturn requireConfigSections(loaded.value, sections);\n}\nasync function loadConfigForFile(filePath) {\n\tconst configPath = await findNearestConfigPathForFile(filePath);\n\tif (configPath === void 0) return notOk(errorConfigFileNotFound(join(dirname(resolve(process.cwd(), filePath)), CONFIG_FILENAME)));\n\treturn loadConfig(configPath);\n}\n//#endregion\nexport { finalizeConfig, findNearestConfigPathForFile, loadConfig, loadConfigForFile, loadConfigForSections, requireConfigSections };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exports-gEustzOH.mjs","names":[],"sources":["../../../../1-framework/3-tooling/config-loader/dist/exports/index.mjs"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport { normalizeContractConfig } from \"@internal/config/config-types\";\nimport { dirname, join, resolve } from \"pathe\";\nimport { realpathSync } from \"node:fs\";\nimport { access } from \"node:fs/promises\";\nimport { pathToFileURL } from \"node:url\";\nimport { collectConfigIssues } from \"@internal/config/config-validation\";\nimport { getEmittedArtifactPaths } from \"@internal/emitter\";\nimport { CliStructuredError, errorConfigEvaluationFailed, errorConfigFileNotFound, errorConfigValidation, errorConfigVersionMarkerMissing } from \"@internal/errors/control\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { isStructuredError } from \"@internal/utils/structured-error\";\n//#region src/finalize-config.ts\nfunction finalizeContractSource(source, configDir) {\n\tconst resolvedInputs = source.inputs?.map((input) => resolve(configDir, input));\n\tif (resolvedInputs === void 0) return source;\n\treturn {\n\t\t...source,\n\t\tinputs: resolvedInputs\n\t};\n}\n/** Normalizes a contract section and resolves its paths against `configDir`. */\nfunction finalizeContractConfig(contract, configDir) {\n\tconst normalized = normalizeContractConfig(contract);\n\treturn {\n\t\t...normalized,\n\t\tsource: finalizeContractSource(normalized.source, configDir),\n\t\toutput: resolve(configDir, normalized.output)\n\t};\n}\nconst DEFAULT_MIGRATIONS_DIR = \"migrations\";\n/**\n* Resolves the migrations directory against `configDir`, which is what `migrations.dir` is\n* documented to be relative to. The default is applied here too, so no caller re-derives it\n* against a different base — a command run from one directory with `--config` naming a project in\n* another would otherwise read the wrong `migrations/`.\n*/\nfunction finalizeMigrationsConfig(migrations, configDir) {\n\treturn {\n\t\t...migrations,\n\t\tdir: resolve(configDir, migrations?.dir ?? DEFAULT_MIGRATIONS_DIR)\n\t};\n}\nfunction finalizeConfig(config, configDir) {\n\treturn {\n\t\t...config,\n\t\t...config.contract ? { contract: finalizeContractConfig(config.contract, configDir) } : void 0,\n\t\tmigrations: finalizeMigrationsConfig(config.migrations, configDir)\n\t};\n}\n//#endregion\n//#region src/load.ts\nconst CONFIG_FILENAME = \"prisma.config.ts\";\nasync function findNearestConfigPathForFile(filePath) {\n\tlet current = dirname(resolve(process.cwd(), filePath));\n\twhile (true) {\n\t\tconst candidate = join(current, CONFIG_FILENAME);\n\t\tif (await fileExists(candidate)) return candidate;\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) return;\n\t\tcurrent = parent;\n\t}\n}\nasync function fileExists(path) {\n\ttry {\n\t\tawait access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction isRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction collectArtifactCollisionDiagnostics(contract) {\n\tconst inputs = contract.source.inputs;\n\tconst output = contract.output;\n\tif (inputs === void 0 || output === void 0) return [];\n\tlet emittedArtifactPaths;\n\ttry {\n\t\temittedArtifactPaths = getEmittedArtifactPaths(output);\n\t} catch (error) {\n\t\treturn [errorConfigValidation(\"contract.output\", {\n\t\t\t/* v8 ignore next -- getEmittedArtifactPaths only ever throws an Error */\n\t\t\twhy: error instanceof Error ? error.message : String(error),\n\t\t\tsection: \"contract\"\n\t\t})];\n\t}\n\tconst emittedPaths = /* @__PURE__ */ new Set([emittedArtifactPaths.jsonPath, emittedArtifactPaths.dtsPath]);\n\tif (inputs.some((input) => emittedPaths.has(input))) return [errorConfigValidation(\"contract.source.inputs[]\", {\n\t\twhy: \"Config.contract.source.inputs must not include emitted artifact paths derived from contract.output\",\n\t\tsection: \"contract\"\n\t})];\n\treturn [];\n}\nfunction buildLoadedConfig(rawConfig, configDir) {\n\tconst issues = collectConfigIssues(rawConfig);\n\tconst diagnostics = issues.map((issue) => errorConfigValidation(issue.field, {\n\t\twhy: issue.message,\n\t\tsection: issue.section\n\t}));\n\tconst raw = blindCast(rawConfig);\n\tconst config = issues.some((issue) => issue.section === \"migrations\") ? raw : {\n\t\t...raw,\n\t\tmigrations: finalizeMigrationsConfig(raw.migrations, configDir)\n\t};\n\tif (config.contract === void 0 || issues.some((issue) => issue.section === \"contract\")) return {\n\t\tconfig,\n\t\tdiagnostics\n\t};\n\tconst contract = finalizeContractConfig(config.contract, configDir);\n\tdiagnostics.push(...collectArtifactCollisionDiagnostics(contract));\n\treturn {\n\t\tconfig: {\n\t\t\t...config,\n\t\t\tcontract\n\t\t},\n\t\tdiagnostics\n\t};\n}\nfunction toConfigLoadFailure(error, configPath) {\n\tif (CliStructuredError.is(error)) return error;\n\tconst resolvedPath = configPath ? resolve(process.cwd(), configPath) : void 0;\n\tif (isStructuredError(error)) return new CliStructuredError(error.code, error.message, {\n\t\t...ifDefined(\"why\", error.why),\n\t\t...ifDefined(\"fix\", error.fix),\n\t\t...ifDefined(\"where\", error.where),\n\t\t...ifDefined(\"meta\", error.meta),\n\t\tcause: error\n\t});\n\tif (error instanceof Error) return errorConfigEvaluationFailed(resolvedPath, {\n\t\twhy: error.message,\n\t\tcause: error\n\t});\n\treturn errorConfigEvaluationFailed(resolvedPath, { why: String(error) });\n}\n/**\n* Loads and finalizes the Prisma Next config.\n*\n* Failures that prevent evaluation entirely — missing file, module that does\n* not evaluate (`CONFIG.FILE_NOT_FOUND`, `CONFIG.EVALUATION_FAILED`) — are the\n* `Result` failure. Structural problems inside an evaluated config do not\n* fail the load: they are returned as section-tagged diagnostics so commands\n* fail only on the sections they read (via {@link requireConfigSections}).\n*/\n/**\n* c12 is resolved to its real on-disk entry before importing: jiti (inside\n* c12) resolves its own transitive imports from the importing file's location,\n* and a symlinked install (pnpm) would otherwise anchor them somewhere the\n* packages are not. Importing at the real location keeps every transitive\n* resolution working.\n*/\nasync function importC12() {\n\treturn await import(pathToFileURL(realpathSync(createRequire(import.meta.url).resolve(\"c12\"))).href);\n}\nasync function loadConfig(configPath, options) {\n\tconst cwd = options?.cwd ?? process.cwd();\n\tconst resolvedConfigPath = configPath ? resolve(cwd, configPath) : void 0;\n\tconst configCwd = resolvedConfigPath ? dirname(resolvedConfigPath) : cwd;\n\tlet result;\n\ttry {\n\t\tresult = await (await importC12()).loadConfig({\n\t\t\tname: \"prisma\",\n\t\t\t...ifDefined(\"configFile\", resolvedConfigPath),\n\t\t\tcwd: configCwd\n\t\t});\n\t} catch (error) {\n\t\treturn notOk(toConfigLoadFailure(error, configPath));\n\t}\n\tif (resolvedConfigPath && result.configFile !== resolvedConfigPath) return notOk(errorConfigFileNotFound(resolvedConfigPath));\n\tif (!result.config || Object.keys(result.config).length === 0) return notOk(errorConfigFileNotFound(result.configFile || resolvedConfigPath || configPath));\n\t/* v8 ignore next -- @preserve */\n\tconst loadedConfigDir = result.configFile ? dirname(result.configFile) : configCwd;\n\t/* v8 ignore next -- c12 always returns layers for a config it evaluated */\n\tconst [requestedLayer] = result.layers ?? [];\n\tconst layerConfig = requestedLayer?.config;\n\tconst engineMarker = isRecord(layerConfig) ? layerConfig[\"$prismaConfig\"] : void 0;\n\tif (engineMarker !== void 0) {\n\t\tif (engineMarker !== 1)\n /* v8 ignore next -- a config that evaluated always carries its resolved path */\n\t\treturn notOk(errorConfigVersionMarkerMissing(result.configFile ?? resolvedConfigPath));\n\t\tconst orm = result.config[\"orm\"];\n\t\tif (orm !== void 0 && !isRecord(orm)) return ok({\n\t\t\tconfig: buildLoadedConfig({}, loadedConfigDir).config,\n\t\t\tdiagnostics: [errorConfigValidation(\"orm\", { why: `The orm section of ${CONFIG_FILENAME} must be an object` })]\n\t\t});\n\t\treturn ok(buildLoadedConfig(orm ?? {}, loadedConfigDir));\n\t}\n\t/* v8 ignore next -- a config that evaluated always carries its resolved path */\n\treturn notOk(errorConfigVersionMarkerMissing(result.configFile ?? resolvedConfigPath));\n}\n/**\n* Narrows a {@link LoadedConfig} to the sections a command reads. Fails with\n* the first diagnostic concerning a required section; diagnostics on other\n* sections are ignored so unrelated commands keep working.\n*/\nfunction requireConfigSections(loaded, sections) {\n\tconst blocking = loaded.diagnostics.find((diagnostic) => {\n\t\tconst section = diagnostic.meta?.[\"section\"];\n\t\treturn typeof section !== \"string\" || sections.some((required) => required === section);\n\t});\n\treturn blocking ? notOk(blocking) : ok(loaded.config);\n}\n/**\n* Convenience composition of {@link loadConfig} and\n* {@link requireConfigSections} for commands that read a fixed set of\n* sections and have no use for diagnostics outside them.\n*/\nasync function loadConfigForSections(configPath, sections) {\n\tconst loaded = await loadConfig(configPath);\n\tif (!loaded.ok) return loaded;\n\treturn requireConfigSections(loaded.value, sections);\n}\nasync function loadConfigForFile(filePath) {\n\tconst configPath = await findNearestConfigPathForFile(filePath);\n\tif (configPath === void 0) return notOk(errorConfigFileNotFound(join(dirname(resolve(process.cwd(), filePath)), CONFIG_FILENAME)));\n\treturn loadConfig(configPath);\n}\n//#endregion\nexport { finalizeConfig, findNearestConfigPathForFile, loadConfig, loadConfigForFile, loadConfigForSections, requireConfigSections };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./domain-type-generation-
|
|
1
|
+
import "./domain-type-generation-X6-AaL1U-DHEoRf_y.mjs";
|
|
2
2
|
import { EmissionSpi, GenerateContractTypesOptions, ImportSpecifierResolver, TypesImportSpec } from "@prisma/orm-framework/components/emission";
|
|
3
3
|
import { PreserveEmptyPredicate, SerializeContract, StorageSort } from "@prisma/orm-framework/contract/hashing";
|
|
4
4
|
import { AggregateDescriptor } from "@prisma/orm-framework/components/components";
|
|
5
5
|
import { Contract } from "@prisma/orm-framework/contract/types";
|
|
6
6
|
import { AnyCodecDescriptor, CodecLookup } from "@prisma/orm-framework/components/codec";
|
|
7
|
-
//#region ../../../1-framework/3-tooling/emitter/dist/index-
|
|
7
|
+
//#region ../../../1-framework/3-tooling/emitter/dist/index-D7XFpEpi.d.mts
|
|
8
8
|
//#region src/artifact-paths.d.ts
|
|
9
9
|
interface EmittedArtifactPaths {
|
|
10
10
|
readonly jsonPath: string;
|
|
@@ -55,6 +55,10 @@ interface EmitOptions {
|
|
|
55
55
|
* while its own code still imports workspace names.
|
|
56
56
|
*/
|
|
57
57
|
readonly resolveImportSpecifier?: ImportSpecifierResolver;
|
|
58
|
+
/**
|
|
59
|
+
* Threaded from `descriptor.supportsNamespaces`. `false` drops the namespace segment from emitted `Models` member names and the `models` constant.
|
|
60
|
+
*/
|
|
61
|
+
readonly supportsNamespaces?: boolean;
|
|
58
62
|
}
|
|
59
63
|
interface EmitResult {
|
|
60
64
|
readonly contractJson: string;
|
|
@@ -75,4 +79,4 @@ declare function generateContractDts(contract: Contract, emitter: EmissionSpi, c
|
|
|
75
79
|
}, options?: GenerateContractTypesOptions, codecLookup?: CodecLookup, resolveImportSpecifier?: ImportSpecifierResolver): string;
|
|
76
80
|
//#endregion
|
|
77
81
|
export { emit as a, EmittedArtifactPaths as i, EmitResult as n, generateContractDts as o, EmitStackInput as r, getEmittedArtifactPaths as s, EmitOptions as t };
|
|
78
|
-
//# sourceMappingURL=index-
|
|
82
|
+
//# sourceMappingURL=index-D217lbiW.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-D217lbiW.d.mts","names":[],"sources":["../../../../1-framework/3-tooling/emitter/dist/index-D7XFpEpi.d.mts"],"mappings":";;;;;;;;UAOU;WACC;WACA;;iBAEM,wBAAwB,yBAAyB;;;;;;;;UAQxD;WACC,mBAAmB,cAAc;WACjC,4BAA4B,cAAc;WAC1C,eAAe;WACf,cAAc;WACd,mBAAmB,cAAc;WACjC,uBAAuB,cAAc;;UAEtC;WACC;;;;;;;;;;WAUA,mBAAmB;;;;;WAKnB,sBAAsB;;;;;WAKtB,cAAc;;;;;;;WAOd,yBAAyB;;;;WAIzB;;UAED;WACC;WACA;WACA;WACA;WACA;;;;iBAIM,KAAK,UAAU,UAAU,OAAO,gBAAgB,cAAc,aAAa,SAAS,cAAc,QAAQ;;;iBAG1G,oBAAoB,UAAU,UAAU,SAAS,aAAa,kBAAkB,cAAc,kBAAkB;WACtH;WACA;WACA;GACR,UAAU,8BAA8B,cAAc,aAAa,yBAAyB"}
|
package/dist/migration-tools.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import { n as isGraphNode, t as assertHashIsGraphNode } from "./graph-membership
|
|
|
8
8
|
import { a as findPath, c as findReachableLeaves, i as findLeaf, l as reconstructGraph, n as detectOrphans, o as findPathWithDecision, r as findLatestMigration, s as findPathWithInvariants, t as detectCycles } from "./migration-graph-CW4bMmTz-B5xFtFVB.mjs";
|
|
9
9
|
import { c as resolveRefsByContractHash, d as writeRef, i as readRefs, l as validateRefName, n as deleteRef, o as refsByContractHash, r as readRef, s as resolveRef, t as HEAD_REF_NAME, u as validateRefValue } from "./refs-BpSpzdYB-BcDelHGt.mjs";
|
|
10
10
|
import { a as isValidSpaceId, c as spaceMigrationDirectory, i as assertValidSpaceId, l as spaceRefsDirectory, n as RESERVED_SPACE_SUBDIR_NAMES, o as listContractSpaceDirectories, r as SPACE_REFS_DIRNAME, s as readContractSpaceHeadRef, t as APP_SPACE_ID, u as verifyContractSpaces } from "./verify-contract-spaces-CrxvgpwD-D5LLXGci.mjs";
|
|
11
|
-
import { a as createAggregateContractSpace, c as loadProblemToViolation, d as resolveRecordedPath, f as verifyMigration, i as computeIntegrityViolations, l as planMigration, n as buildFabricatedMigrationEdge, o as createContractSpaceAggregate, r as collectAggregateNamespaces, s as loadContractSpaceAggregate, t as allStorageElementsExternal, u as requireHeadRef } from "./aggregate-
|
|
11
|
+
import { a as createAggregateContractSpace, c as loadProblemToViolation, d as resolveRecordedPath, f as verifyMigration, i as computeIntegrityViolations, l as planMigration, n as buildFabricatedMigrationEdge, o as createContractSpaceAggregate, r as collectAggregateNamespaces, s as loadContractSpaceAggregate, t as allStorageElementsExternal, u as requireHeadRef } from "./aggregate-Ib7P8moX.mjs";
|
|
12
12
|
import { a as gatherDiskContractSpaceState, i as emitContractSpaceArtifacts, n as computeExtensionSpaceApplyPath, o as planAllSpaces, r as contractSpaceFromJson, t as assertDescriptorSelfConsistency } from "./spaces-BCZiAZQn.mjs";
|
|
13
13
|
import { n as parseContractRef, r as parseMigrationRef, t as findEdgeByDirName } from "./ref-resolution-BWpwb8_b.mjs";
|
|
14
14
|
import { i as writeMigrationTs, n as hasMigrationTs, r as shebangLineFor, t as detectScaffoldRuntime } from "./migration-ts-DdVm0rws.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createAggregateContractSpace, c as loadProblemToViolation, d as resolveRecordedPath, f as verifyMigration, i as computeIntegrityViolations, l as planMigration, n as buildFabricatedMigrationEdge, o as createContractSpaceAggregate, r as collectAggregateNamespaces, s as loadContractSpaceAggregate, t as allStorageElementsExternal, u as requireHeadRef } from "./aggregate-
|
|
1
|
+
import { a as createAggregateContractSpace, c as loadProblemToViolation, d as resolveRecordedPath, f as verifyMigration, i as computeIntegrityViolations, l as planMigration, n as buildFabricatedMigrationEdge, o as createContractSpaceAggregate, r as collectAggregateNamespaces, s as loadContractSpaceAggregate, t as allStorageElementsExternal, u as requireHeadRef } from "./aggregate-Ib7P8moX.mjs";
|
|
2
2
|
export { allStorageElementsExternal, buildFabricatedMigrationEdge, collectAggregateNamespaces, computeIntegrityViolations, createAggregateContractSpace, createContractSpaceAggregate, loadContractSpaceAggregate, loadProblemToViolation, planMigration, requireHeadRef, resolveRecordedPath, verifyMigration };
|