@specverse/engines 6.38.0 → 6.39.0
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/libs/instance-factories/orms/templates/prisma/schema-generator.js +2 -37
- package/dist/libs/instance-factories/services/templates/prisma/step-conventions.js +6 -6
- package/dist/realize/index.d.ts +1 -0
- package/dist/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +30 -7
- package/dist/realize/index.js.map +1 -1
- package/dist/realize/normalize-collisions.d.ts +75 -0
- package/dist/realize/normalize-collisions.d.ts.map +1 -0
- package/dist/realize/normalize-collisions.js +152 -0
- package/dist/realize/normalize-collisions.js.map +1 -0
- package/dist/realize/resolver/index.d.ts.map +1 -1
- package/dist/realize/resolver/index.js +23 -1
- package/dist/realize/resolver/index.js.map +1 -1
- package/libs/instance-factories/orms/templates/prisma/__tests__/schema-generator.test.ts +117 -68
- package/libs/instance-factories/orms/templates/prisma/schema-generator.ts +8 -80
- package/libs/instance-factories/services/templates/prisma/step-conventions.ts +15 -7
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { pluralize } from "@specverse/types";
|
|
2
|
+
import { resolveOneModel } from "@specverse/engines/realize";
|
|
2
3
|
function generatePrismaSchema(context) {
|
|
3
4
|
const { spec, models, implType } = context;
|
|
4
5
|
const allModels = models || spec?.models || [];
|
|
@@ -6,7 +7,7 @@ function generatePrismaSchema(context) {
|
|
|
6
7
|
throw new Error("No models found in context for schema generation");
|
|
7
8
|
}
|
|
8
9
|
for (const model of allModels) {
|
|
9
|
-
|
|
10
|
+
resolveOneModel(model);
|
|
10
11
|
}
|
|
11
12
|
const relationMap = buildRelationMap(allModels);
|
|
12
13
|
const backRefs = buildMissingBackRefs(allModels, relationMap);
|
|
@@ -39,42 +40,6 @@ ${body}
|
|
|
39
40
|
|
|
40
41
|
${enumBlock}${modelSchemas}`;
|
|
41
42
|
}
|
|
42
|
-
function detectAttributeRelationshipCollision(model) {
|
|
43
|
-
if (!model) return;
|
|
44
|
-
const attributes = Array.isArray(model.attributes) ? model.attributes : Object.values(model.attributes || {});
|
|
45
|
-
const relationships = Array.isArray(model.relationships) ? model.relationships : Object.values(model.relationships || {});
|
|
46
|
-
const attributeNames = /* @__PURE__ */ new Set();
|
|
47
|
-
for (const attr of attributes) {
|
|
48
|
-
if (attr?.name) attributeNames.add(attr.name);
|
|
49
|
-
}
|
|
50
|
-
const collisions = [];
|
|
51
|
-
for (const rel of relationships) {
|
|
52
|
-
const defaultName = rel?.type === "hasMany" || rel?.type === "manyToMany" ? pluralize(String(rel?.target || "").toLowerCase()) : String(rel?.target || "").toLowerCase();
|
|
53
|
-
const candidate = rel?.name || defaultName;
|
|
54
|
-
if (candidate && attributeNames.has(candidate)) {
|
|
55
|
-
collisions.push({
|
|
56
|
-
name: candidate,
|
|
57
|
-
relType: String(rel?.type || "unknown"),
|
|
58
|
-
relTarget: String(rel?.target || "unknown")
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (collisions.length > 0) {
|
|
63
|
-
const lines = [];
|
|
64
|
-
lines.push(
|
|
65
|
-
`Realize error: model "${model.name}" has attribute/relationship name collision(s):`
|
|
66
|
-
);
|
|
67
|
-
for (const c of collisions) {
|
|
68
|
-
lines.push(
|
|
69
|
-
` - "${c.name}" is declared as both an attribute AND a ${c.relType} relationship to ${c.relTarget}`
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
lines.push(
|
|
73
|
-
'Rename one to disambiguate (e.g. "' + collisions[0].name + 'Data" for the attribute, keeping "' + collisions[0].name + '" for the relationship).'
|
|
74
|
-
);
|
|
75
|
-
throw new Error(lines.join("\n"));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
43
|
function buildRelationMap(allModels) {
|
|
79
44
|
const targetRefs = /* @__PURE__ */ new Map();
|
|
80
45
|
for (const model of allModels) {
|
|
@@ -156,7 +156,7 @@ const STEP_CONVENTIONS = [
|
|
|
156
156
|
generateCall: (m, ctx) => {
|
|
157
157
|
const field = m[1];
|
|
158
158
|
const rawValue = m[2];
|
|
159
|
-
const modelVar = toVar(ctx.
|
|
159
|
+
const modelVar = toVar(ctx.modelName);
|
|
160
160
|
const val = resolveValue(rawValue, ctx);
|
|
161
161
|
return ` // Step ${ctx.stepNum}: Set ${field} to ${rawValue.trim()}
|
|
162
162
|
await prisma.${modelVar}.update({
|
|
@@ -172,7 +172,7 @@ const STEP_CONVENTIONS = [
|
|
|
172
172
|
generateCall: (m, ctx) => {
|
|
173
173
|
const field = m[1];
|
|
174
174
|
const amount = m[2];
|
|
175
|
-
const modelVar = toVar(ctx.
|
|
175
|
+
const modelVar = toVar(ctx.modelName);
|
|
176
176
|
const amountVal = /^\d+$/.test(amount) ? amount : amount;
|
|
177
177
|
return ` // Step ${ctx.stepNum}: Increment ${field} by ${amount}
|
|
178
178
|
await prisma.${modelVar}.update({
|
|
@@ -188,7 +188,7 @@ const STEP_CONVENTIONS = [
|
|
|
188
188
|
generateCall: (m, ctx) => {
|
|
189
189
|
const field = m[1];
|
|
190
190
|
const amount = m[2];
|
|
191
|
-
const modelVar = toVar(ctx.
|
|
191
|
+
const modelVar = toVar(ctx.modelName);
|
|
192
192
|
const amountVal = /^\d+$/.test(amount) ? amount : amount;
|
|
193
193
|
return ` // Step ${ctx.stepNum}: Decrement ${field} by ${amount}
|
|
194
194
|
await prisma.${modelVar}.update({
|
|
@@ -207,7 +207,7 @@ const STEP_CONVENTIONS = [
|
|
|
207
207
|
generateCall: (m, ctx) => {
|
|
208
208
|
const event = m[1];
|
|
209
209
|
return ` // Step ${ctx.stepNum}: Emit ${event} event
|
|
210
|
-
await eventBus.publish('${event}', { ${toVar(ctx.
|
|
210
|
+
await eventBus.publish('${event}', { ${toVar(ctx.modelName)}Id: ${toVar(ctx.modelName)}.id, operation: '${ctx.operationName}', timestamp: new Date().toISOString() });`;
|
|
211
211
|
}
|
|
212
212
|
},
|
|
213
213
|
// --- Send notification ---
|
|
@@ -217,7 +217,7 @@ const STEP_CONVENTIONS = [
|
|
|
217
217
|
generateCall: (m, ctx) => {
|
|
218
218
|
const type = m[1];
|
|
219
219
|
return ` // Step ${ctx.stepNum}: Send ${type} notification
|
|
220
|
-
await eventBus.publish('${type}Notification', { ${toVar(ctx.
|
|
220
|
+
await eventBus.publish('${type}Notification', { ${toVar(ctx.modelName)}Id: ${toVar(ctx.modelName)}.id, operation: '${ctx.operationName}' });`;
|
|
221
221
|
}
|
|
222
222
|
},
|
|
223
223
|
// --- Call service ---
|
|
@@ -240,7 +240,7 @@ const STEP_CONVENTIONS = [
|
|
|
240
240
|
const isModel = /^(updated|created|the)\s+/i.test(value) || value === ctx.modelName;
|
|
241
241
|
if (isModel) {
|
|
242
242
|
return ` // Step ${ctx.stepNum}: Return result
|
|
243
|
-
return ${toVar(ctx.
|
|
243
|
+
return ${toVar(ctx.modelName)};`;
|
|
244
244
|
}
|
|
245
245
|
return ` // Step ${ctx.stepNum}: Return ${value}
|
|
246
246
|
return ${value};`;
|
package/dist/realize/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './generators/index.js';
|
|
|
10
10
|
export { InstanceFactoryLibrary, createDefaultLibrary } from './library/library.js';
|
|
11
11
|
export { createResolver } from './library/resolver.js';
|
|
12
12
|
export { createCodeGenerator } from './engines/code-generator.js';
|
|
13
|
+
export { normalizeAttributeRelationshipCollisions, resolveOneModel, type RenameRecord, } from './normalize-collisions.js';
|
|
13
14
|
import type { RealizeEngine, EngineInfo, GeneratedOutput } from '@specverse/types';
|
|
14
15
|
declare class SpecVerseRealizeEngine implements RealizeEngine {
|
|
15
16
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realize/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realize/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,wCAAwC,EACxC,eAAe,EACf,KAAK,YAAY,GAClB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA2DnF,cAAM,sBAAuB,YAAW,aAAa;IACnD,IAAI,SAAa;IACjB,OAAO,SAAW;IAClB,YAAY,WAA+E;IAE3F,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAEtB,UAAU,CAAC,MAAM,CAAC,EAAE;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDjB,OAAO,IAAI,UAAU;IAIrB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;IAK1B,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvF;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA8nC9F;;;OAGG;YACW,UAAU;IA8DxB,OAAO,CAAC,oBAAoB;CAuB7B;AAED,eAAO,MAAM,MAAM,wBAA+B,CAAC;AACnD,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
package/dist/realize/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export { InstanceFactoryLibrary, createDefaultLibrary } from './library/library.
|
|
|
14
14
|
export { createResolver } from './library/resolver.js';
|
|
15
15
|
// Code generator
|
|
16
16
|
export { createCodeGenerator } from './engines/code-generator.js';
|
|
17
|
+
export { normalizeAttributeRelationshipCollisions, resolveOneModel, } from './normalize-collisions.js';
|
|
17
18
|
import { writeFileSync, existsSync, mkdirSync, readdirSync, statSync, copyFileSync } from 'fs';
|
|
18
19
|
import { dirname, join, basename } from 'path';
|
|
19
20
|
import { fileURLToPath } from 'url';
|
|
@@ -153,6 +154,17 @@ class SpecVerseRealizeEngine {
|
|
|
153
154
|
}
|
|
154
155
|
const files = [];
|
|
155
156
|
const errors = [];
|
|
157
|
+
// Pre-realize normalization: rename any attribute that collides with
|
|
158
|
+
// a relationship name on the same model. Mutates spec.models in place
|
|
159
|
+
// so every downstream generator (prisma, mongo, pg, controllers,
|
|
160
|
+
// services, routes, views) sees the canonical renamed shape. Without
|
|
161
|
+
// this, the rename used to live inside prisma's schema-generator only,
|
|
162
|
+
// and non-prisma manifests (e.g. mongo) silently shipped colliding
|
|
163
|
+
// attribute/relationship names downstream. Per-rename warns are emitted
|
|
164
|
+
// by resolveOneModel; this site doesn't add a summary line. See
|
|
165
|
+
// engines/src/realize/normalize-collisions.ts for the why + invariants.
|
|
166
|
+
const { normalizeAttributeRelationshipCollisions } = await import('./normalize-collisions.js');
|
|
167
|
+
normalizeAttributeRelationshipCollisions(spec);
|
|
156
168
|
const allModels = Object.values(spec.models || {});
|
|
157
169
|
// Audit-trail recorder (#audit-trail-2026-05-03 plan, engines 6.22.1+).
|
|
158
170
|
// Forward-logs every matcher dispatch decision (level-2 convention vs
|
|
@@ -502,17 +514,28 @@ class SpecVerseRealizeEngine {
|
|
|
502
514
|
// a single aggregated v2-deployment-suggestions.yaml at the
|
|
503
515
|
// top-level outputDir. Library-topology emissions don't contribute.
|
|
504
516
|
const allDeploymentSuggestions = [];
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
517
|
+
// Iterate spec.components as [name, component] entries so we have
|
|
518
|
+
// the canonical name even when components is a keyed-object whose
|
|
519
|
+
// values omit `.name` (which is what the inference YAML produces
|
|
520
|
+
// — name is the key, not a field on the value). Pre-fix this site
|
|
521
|
+
// read `consumerComp.name ?? 'unknown'`, which silently lumped
|
|
522
|
+
// every V2 import for every component into `backend/src/unknown/clients/`
|
|
523
|
+
// and overwrote them as the loop continued. Same shape mismatch
|
|
524
|
+
// as the resolver fix (engines 6.38.4 defect C), different site.
|
|
525
|
+
const componentEntries = Array.isArray(spec.components)
|
|
526
|
+
? spec.components.map((c) => [String(c?.name ?? ''), c])
|
|
527
|
+
: Object.entries(spec.components ?? {});
|
|
528
|
+
for (const [entryKey, consumerComp] of componentEntries) {
|
|
529
|
+
const imports = consumerComp.imports ?? consumerComp.import ?? [];
|
|
510
530
|
if (!Array.isArray(imports) || imports.length === 0)
|
|
511
531
|
continue;
|
|
512
532
|
// Track per-component imports for the aggregator file (clients/index.ts).
|
|
513
533
|
// Each entry: { from: file path (without .js), specifier: client const name }
|
|
514
534
|
const aggregatorEntries = [];
|
|
515
|
-
|
|
535
|
+
// Prefer the canonical name field on the component object, fall
|
|
536
|
+
// back to the entry key (the YAML map key), fall back to 'unknown'
|
|
537
|
+
// for malformed inputs.
|
|
538
|
+
const componentName = String(consumerComp.name || entryKey || 'unknown');
|
|
516
539
|
const componentOutputDir = join(outputDir, 'backend', 'src', componentName);
|
|
517
540
|
for (const importEntry of imports) {
|
|
518
541
|
try {
|
|
@@ -554,7 +577,7 @@ class SpecVerseRealizeEngine {
|
|
|
554
577
|
}
|
|
555
578
|
}
|
|
556
579
|
catch (importErr) {
|
|
557
|
-
const compName = consumerComp.name
|
|
580
|
+
const compName = String(consumerComp.name || entryKey || '<unknown>');
|
|
558
581
|
const fromName = importEntry.from ?? '<unknown>';
|
|
559
582
|
errors.push(`V2 import ${compName}.${fromName}: ${importErr.message}`);
|
|
560
583
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realize/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realize/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-realize spec normalization — attribute/relationship name collisions.
|
|
3
|
+
*
|
|
4
|
+
* Why this lives in realize (not inference)
|
|
5
|
+
* ----------------------------------------
|
|
6
|
+
*
|
|
7
|
+
* The analyse pipeline can produce specs where a model declares an
|
|
8
|
+
* attribute and a relationship sharing the same name (e.g. SaveGame
|
|
9
|
+
* has both `attributes.gameState: Json` and `relationships.gameState:
|
|
10
|
+
* belongsTo GameState`). That's an ambiguity the AST happily carries
|
|
11
|
+
* — `attributes.gameState` and `relationships.gameState` are two
|
|
12
|
+
* distinct slots in the schema — but every downstream code emitter
|
|
13
|
+
* needs to project them onto a single namespace (one Prisma column
|
|
14
|
+
* + one Prisma relation field; one TypeScript class member +
|
|
15
|
+
* one ORM relation accessor) and the projection collides.
|
|
16
|
+
*
|
|
17
|
+
* Pre-engines 6.38.4 this was guarded inside `prisma/schema-generator.ts`
|
|
18
|
+
* which threw on the first collision and aborted the model loop — one
|
|
19
|
+
* bad model in a 24-model spec left zero schema on disk. 6.38.4 moved
|
|
20
|
+
* the guard to a non-throwing auto-rename: keep the relationship's
|
|
21
|
+
* canonical name and rename the colliding attribute to `<name>Data`.
|
|
22
|
+
* But the rename lived inside the prisma generator, which meant:
|
|
23
|
+
* - Mongo / pg / non-Prisma specs never got the rename. Mongo
|
|
24
|
+
* tolerates parallel fields more leniently than Prisma, but the
|
|
25
|
+
* ambiguity still propagates to controllers / services /
|
|
26
|
+
* validators that read `model.attributes` and would still
|
|
27
|
+
* mention the colliding name twice.
|
|
28
|
+
* - Service / controller / route generators that read
|
|
29
|
+
* `model.attributes` saw the rename ONLY when the ORM step ran
|
|
30
|
+
* first AND mutated the shared `allModels` reference. Skip the
|
|
31
|
+
* ORM (e.g. mongo manifests) → drift.
|
|
32
|
+
*
|
|
33
|
+
* This module lifts the rename to a single pre-emission pass that
|
|
34
|
+
* runs regardless of which ORM (if any) is in the manifest. The
|
|
35
|
+
* `realizeAll` entrypoint calls `normalizeAttributeRelationshipCollisions`
|
|
36
|
+
* once at the top, mutating `spec.models` in place. All subsequent
|
|
37
|
+
* generators (prisma, mongo, pg, controllers, services, routes,
|
|
38
|
+
* views) see the canonical renamed shape.
|
|
39
|
+
*
|
|
40
|
+
* Backward compatibility
|
|
41
|
+
* ---------------------
|
|
42
|
+
*
|
|
43
|
+
* - `prisma/schema-generator.ts` still calls
|
|
44
|
+
* `resolveAttributeRelationshipCollisions(model)` defensively,
|
|
45
|
+
* but the first pass at realize-top has already mutated the
|
|
46
|
+
* model, so the second pass is a no-op (no collisions remain).
|
|
47
|
+
* We keep the call there to protect direct invocations of the
|
|
48
|
+
* schema generator that bypass realize (e.g. test fixtures).
|
|
49
|
+
*/
|
|
50
|
+
export interface RenameRecord {
|
|
51
|
+
modelName: string;
|
|
52
|
+
fromAttributeName: string;
|
|
53
|
+
toAttributeName: string;
|
|
54
|
+
relationshipType: string;
|
|
55
|
+
relationshipTarget: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Walk every model in the spec and resolve attribute/relationship
|
|
59
|
+
* name collisions. Returns the list of renames performed so callers
|
|
60
|
+
* (realize/index.ts) can surface them in a single tidy log line
|
|
61
|
+
* instead of one console.warn per model.
|
|
62
|
+
*
|
|
63
|
+
* Mutates spec.models in place — downstream generators read the
|
|
64
|
+
* renamed shape. Idempotent: a second pass produces zero renames.
|
|
65
|
+
*/
|
|
66
|
+
export declare function normalizeAttributeRelationshipCollisions(spec: any): RenameRecord[];
|
|
67
|
+
/**
|
|
68
|
+
* Resolve collisions for a single model. Exported so prisma's
|
|
69
|
+
* schema-generator can keep its defensive call site for direct
|
|
70
|
+
* invocations (the call becomes a no-op when realize has already
|
|
71
|
+
* normalized; non-zero only when the generator is invoked outside
|
|
72
|
+
* the realize pipeline).
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveOneModel(model: any): RenameRecord[];
|
|
75
|
+
//# sourceMappingURL=normalize-collisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-collisions.d.ts","sourceRoot":"","sources":["../../src/realize/normalize-collisions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAIH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wCAAwC,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,EAAE,CAoBlF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,YAAY,EAAE,CAqE1D"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-realize spec normalization — attribute/relationship name collisions.
|
|
3
|
+
*
|
|
4
|
+
* Why this lives in realize (not inference)
|
|
5
|
+
* ----------------------------------------
|
|
6
|
+
*
|
|
7
|
+
* The analyse pipeline can produce specs where a model declares an
|
|
8
|
+
* attribute and a relationship sharing the same name (e.g. SaveGame
|
|
9
|
+
* has both `attributes.gameState: Json` and `relationships.gameState:
|
|
10
|
+
* belongsTo GameState`). That's an ambiguity the AST happily carries
|
|
11
|
+
* — `attributes.gameState` and `relationships.gameState` are two
|
|
12
|
+
* distinct slots in the schema — but every downstream code emitter
|
|
13
|
+
* needs to project them onto a single namespace (one Prisma column
|
|
14
|
+
* + one Prisma relation field; one TypeScript class member +
|
|
15
|
+
* one ORM relation accessor) and the projection collides.
|
|
16
|
+
*
|
|
17
|
+
* Pre-engines 6.38.4 this was guarded inside `prisma/schema-generator.ts`
|
|
18
|
+
* which threw on the first collision and aborted the model loop — one
|
|
19
|
+
* bad model in a 24-model spec left zero schema on disk. 6.38.4 moved
|
|
20
|
+
* the guard to a non-throwing auto-rename: keep the relationship's
|
|
21
|
+
* canonical name and rename the colliding attribute to `<name>Data`.
|
|
22
|
+
* But the rename lived inside the prisma generator, which meant:
|
|
23
|
+
* - Mongo / pg / non-Prisma specs never got the rename. Mongo
|
|
24
|
+
* tolerates parallel fields more leniently than Prisma, but the
|
|
25
|
+
* ambiguity still propagates to controllers / services /
|
|
26
|
+
* validators that read `model.attributes` and would still
|
|
27
|
+
* mention the colliding name twice.
|
|
28
|
+
* - Service / controller / route generators that read
|
|
29
|
+
* `model.attributes` saw the rename ONLY when the ORM step ran
|
|
30
|
+
* first AND mutated the shared `allModels` reference. Skip the
|
|
31
|
+
* ORM (e.g. mongo manifests) → drift.
|
|
32
|
+
*
|
|
33
|
+
* This module lifts the rename to a single pre-emission pass that
|
|
34
|
+
* runs regardless of which ORM (if any) is in the manifest. The
|
|
35
|
+
* `realizeAll` entrypoint calls `normalizeAttributeRelationshipCollisions`
|
|
36
|
+
* once at the top, mutating `spec.models` in place. All subsequent
|
|
37
|
+
* generators (prisma, mongo, pg, controllers, services, routes,
|
|
38
|
+
* views) see the canonical renamed shape.
|
|
39
|
+
*
|
|
40
|
+
* Backward compatibility
|
|
41
|
+
* ---------------------
|
|
42
|
+
*
|
|
43
|
+
* - `prisma/schema-generator.ts` still calls
|
|
44
|
+
* `resolveAttributeRelationshipCollisions(model)` defensively,
|
|
45
|
+
* but the first pass at realize-top has already mutated the
|
|
46
|
+
* model, so the second pass is a no-op (no collisions remain).
|
|
47
|
+
* We keep the call there to protect direct invocations of the
|
|
48
|
+
* schema generator that bypass realize (e.g. test fixtures).
|
|
49
|
+
*/
|
|
50
|
+
import { pluralize } from '@specverse/types';
|
|
51
|
+
/**
|
|
52
|
+
* Walk every model in the spec and resolve attribute/relationship
|
|
53
|
+
* name collisions. Returns the list of renames performed so callers
|
|
54
|
+
* (realize/index.ts) can surface them in a single tidy log line
|
|
55
|
+
* instead of one console.warn per model.
|
|
56
|
+
*
|
|
57
|
+
* Mutates spec.models in place — downstream generators read the
|
|
58
|
+
* renamed shape. Idempotent: a second pass produces zero renames.
|
|
59
|
+
*/
|
|
60
|
+
export function normalizeAttributeRelationshipCollisions(spec) {
|
|
61
|
+
const renames = [];
|
|
62
|
+
if (!spec)
|
|
63
|
+
return renames;
|
|
64
|
+
// Accept either array-shape or keyed-object-shape `models:`. Both
|
|
65
|
+
// are valid across the inference pipeline depending on which
|
|
66
|
+
// stage handed us the spec.
|
|
67
|
+
const modelsAny = spec.models;
|
|
68
|
+
const models = Array.isArray(modelsAny)
|
|
69
|
+
? modelsAny
|
|
70
|
+
: (modelsAny && typeof modelsAny === 'object'
|
|
71
|
+
? Object.values(modelsAny)
|
|
72
|
+
: []);
|
|
73
|
+
for (const model of models) {
|
|
74
|
+
const r = resolveOneModel(model);
|
|
75
|
+
for (const rec of r)
|
|
76
|
+
renames.push(rec);
|
|
77
|
+
}
|
|
78
|
+
return renames;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolve collisions for a single model. Exported so prisma's
|
|
82
|
+
* schema-generator can keep its defensive call site for direct
|
|
83
|
+
* invocations (the call becomes a no-op when realize has already
|
|
84
|
+
* normalized; non-zero only when the generator is invoked outside
|
|
85
|
+
* the realize pipeline).
|
|
86
|
+
*/
|
|
87
|
+
export function resolveOneModel(model) {
|
|
88
|
+
const out = [];
|
|
89
|
+
if (!model)
|
|
90
|
+
return out;
|
|
91
|
+
const wasArray = Array.isArray(model.attributes);
|
|
92
|
+
const attributes = wasArray
|
|
93
|
+
? model.attributes
|
|
94
|
+
: Object.values(model.attributes || {});
|
|
95
|
+
const relationships = Array.isArray(model.relationships)
|
|
96
|
+
? model.relationships
|
|
97
|
+
: Object.values(model.relationships || {});
|
|
98
|
+
const attrNameToObj = new Map();
|
|
99
|
+
for (const attr of attributes) {
|
|
100
|
+
if (attr?.name)
|
|
101
|
+
attrNameToObj.set(attr.name, attr);
|
|
102
|
+
}
|
|
103
|
+
const localRenames = [];
|
|
104
|
+
for (const rel of relationships) {
|
|
105
|
+
// Relationships emit a field named after `rel.name` (or a derived
|
|
106
|
+
// default when name is absent). The default for hasMany/manyToMany
|
|
107
|
+
// is the pluralised target lowercase; for belongsTo/hasOne it's
|
|
108
|
+
// the bare target lowercase. Match all forms.
|
|
109
|
+
const defaultName = rel?.type === 'hasMany' || rel?.type === 'manyToMany'
|
|
110
|
+
? pluralize(String(rel?.target || '').toLowerCase())
|
|
111
|
+
: String(rel?.target || '').toLowerCase();
|
|
112
|
+
const candidate = rel?.name || defaultName;
|
|
113
|
+
if (!candidate)
|
|
114
|
+
continue;
|
|
115
|
+
const collidingAttr = attrNameToObj.get(candidate);
|
|
116
|
+
if (!collidingAttr)
|
|
117
|
+
continue;
|
|
118
|
+
let renamed = `${candidate}Data`;
|
|
119
|
+
let suffix = 2;
|
|
120
|
+
while (attrNameToObj.has(renamed)) {
|
|
121
|
+
renamed = `${candidate}Data${suffix++}`;
|
|
122
|
+
}
|
|
123
|
+
console.warn(` ⚠️ Schema: model "${model.name}" attribute "${candidate}" renamed to "${renamed}" ` +
|
|
124
|
+
`(collides with ${rel.type} relationship to ${rel.target})`);
|
|
125
|
+
attrNameToObj.delete(candidate);
|
|
126
|
+
collidingAttr.name = renamed;
|
|
127
|
+
attrNameToObj.set(renamed, collidingAttr);
|
|
128
|
+
localRenames.push({ from: candidate, to: renamed });
|
|
129
|
+
out.push({
|
|
130
|
+
modelName: String(model.name ?? '<anonymous>'),
|
|
131
|
+
fromAttributeName: candidate,
|
|
132
|
+
toAttributeName: renamed,
|
|
133
|
+
relationshipType: String(rel?.type || 'unknown'),
|
|
134
|
+
relationshipTarget: String(rel?.target || 'unknown'),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
// Object-form attributes carry the field name as the object key too.
|
|
138
|
+
// Rebuild the object so downstream emitters that read Object.entries
|
|
139
|
+
// (e.g. controller-generator's validation walker) see the renamed key.
|
|
140
|
+
// Array-form needs no rewrite — the inner `.name` is the canonical
|
|
141
|
+
// handle.
|
|
142
|
+
if (!wasArray && localRenames.length > 0 && model.attributes) {
|
|
143
|
+
const rebuilt = {};
|
|
144
|
+
for (const [key, val] of Object.entries(model.attributes)) {
|
|
145
|
+
const rename = localRenames.find((r) => r.from === key);
|
|
146
|
+
rebuilt[rename ? rename.to : key] = val;
|
|
147
|
+
}
|
|
148
|
+
model.attributes = rebuilt;
|
|
149
|
+
}
|
|
150
|
+
return out;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=normalize-collisions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-collisions.js","sourceRoot":"","sources":["../../src/realize/normalize-collisions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/realize/resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMpE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;IACpE;;;;OAIG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAErG;;;;;;;;OAQG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACnG;AAMD,qBAAa,yBAA0B,SAAQ,KAAK;aAGhC,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM,EAAE;gBAFpC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAAE;CAKvC;AAMD,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/realize/resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMpE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;IACpE;;;;OAIG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAErG;;;;;;;;OAQG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACnG;AAMD,qBAAa,yBAA0B,SAAQ,KAAK;aAGhC,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM,EAAE;gBAFpC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAAE;CAKvC;AAMD,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAiVD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D"}
|
|
@@ -140,8 +140,30 @@ class DependencyResolverImpl {
|
|
|
140
140
|
const effectiveVersion = version ?? DEFAULT_VERSION;
|
|
141
141
|
const triedSteps = [];
|
|
142
142
|
// ── Step 1: Local component in same spec ────────────────────────────────
|
|
143
|
+
// Components can land as either an array or a name-keyed object
|
|
144
|
+
// depending on which point in the analyse/inference pipeline assembled
|
|
145
|
+
// the spec. Pre-fix this site did `(options.spec?.components ?? []).find`
|
|
146
|
+
// which only handled the array+undefined cases — object-shaped
|
|
147
|
+
// components crashed with `((intermediate value) ?? []).find is not a
|
|
148
|
+
// function` (idle-meta surfaced 7 of these per run).
|
|
149
|
+
//
|
|
150
|
+
// When the spec keys components by name (`components: { Services: {...} }`)
|
|
151
|
+
// the values usually omit `.name` because the key IS the name. Match
|
|
152
|
+
// by key first; fall back to the inner `.name` only for array-shaped
|
|
153
|
+
// components (which always carry their name as a field).
|
|
143
154
|
triedSteps.push('local-component');
|
|
144
|
-
const
|
|
155
|
+
const componentsAny = options.spec?.components;
|
|
156
|
+
let localMatch;
|
|
157
|
+
if (Array.isArray(componentsAny)) {
|
|
158
|
+
localMatch = componentsAny.find((c) => c?.name === from);
|
|
159
|
+
}
|
|
160
|
+
else if (componentsAny && typeof componentsAny === 'object') {
|
|
161
|
+
const keyed = componentsAny;
|
|
162
|
+
const value = keyed[from];
|
|
163
|
+
if (value) {
|
|
164
|
+
localMatch = { name: from, version: value.version };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
145
167
|
if (localMatch) {
|
|
146
168
|
return {
|
|
147
169
|
fromName: from,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/realize/resolver/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/realize/resolver/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* Tests assert substrings (or thrown-error properties) rather than exact
|
|
21
21
|
* file equality so unrelated formatting tweaks don't cascade.
|
|
22
22
|
*/
|
|
23
|
-
import { describe, it, expect } from 'vitest';
|
|
23
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
24
24
|
import generatePrismaSchema from '../schema-generator.js';
|
|
25
25
|
|
|
26
26
|
const simpleModel = {
|
|
@@ -268,7 +268,16 @@ describe('prisma/schema-generator — 53B *At field DateTime promotion', () => {
|
|
|
268
268
|
});
|
|
269
269
|
|
|
270
270
|
describe('prisma/schema-generator — 53C attribute/relationship collision', () => {
|
|
271
|
-
|
|
271
|
+
// Prior behaviour: the first collision threw, killing emission of every
|
|
272
|
+
// subsequent model. New behaviour: rename the colliding attribute to
|
|
273
|
+
// `<name>Data` (the historical error message's own suggestion), emit a
|
|
274
|
+
// console.warn, and proceed so the rest of the spec still produces a
|
|
275
|
+
// Prisma schema. The auto-rename only happens inside the schema
|
|
276
|
+
// generator — downstream services that key off the original attribute
|
|
277
|
+
// name will need spec-level disambiguation if they reference the
|
|
278
|
+
// renamed field; the goal here is "realize produces a usable schema",
|
|
279
|
+
// not "spec is healed end-to-end".
|
|
280
|
+
it('auto-renames the colliding attribute and still emits the model + relationship', () => {
|
|
272
281
|
const saveGameModel = {
|
|
273
282
|
name: 'SaveGame',
|
|
274
283
|
attributes: [
|
|
@@ -284,50 +293,36 @@ describe('prisma/schema-generator — 53C attribute/relationship collision', ()
|
|
|
284
293
|
attributes: [{ name: 'id', type: 'String', required: true }],
|
|
285
294
|
relationships: [],
|
|
286
295
|
};
|
|
287
|
-
|
|
288
|
-
|
|
296
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
297
|
+
let out = '';
|
|
298
|
+
let messages = '';
|
|
299
|
+
try {
|
|
300
|
+
out = generatePrismaSchema({
|
|
289
301
|
spec: { models: [saveGameModel, gameStateModel] },
|
|
290
302
|
models: [saveGameModel, gameStateModel],
|
|
291
|
-
} as any)
|
|
292
|
-
).toThrow(/SaveGame.*attribute.*relationship.*collision/i);
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
it('error message references the colliding name AND the relationship type/target', () => {
|
|
296
|
-
const model = {
|
|
297
|
-
name: 'SaveGame',
|
|
298
|
-
attributes: [
|
|
299
|
-
{ name: 'id', type: 'String', required: true },
|
|
300
|
-
{ name: 'gameState', type: 'String' },
|
|
301
|
-
],
|
|
302
|
-
relationships: [
|
|
303
|
-
{ name: 'gameState', type: 'belongsTo', target: 'GameState' },
|
|
304
|
-
],
|
|
305
|
-
};
|
|
306
|
-
const target = {
|
|
307
|
-
name: 'GameState',
|
|
308
|
-
attributes: [{ name: 'id', type: 'String', required: true }],
|
|
309
|
-
relationships: [],
|
|
310
|
-
};
|
|
311
|
-
let err: Error | null = null;
|
|
312
|
-
try {
|
|
313
|
-
generatePrismaSchema({
|
|
314
|
-
spec: { models: [model, target] },
|
|
315
|
-
models: [model, target],
|
|
316
303
|
} as any);
|
|
317
|
-
|
|
318
|
-
|
|
304
|
+
// Capture warn.mock.calls BEFORE mockRestore — restoring resets state.
|
|
305
|
+
messages = warn.mock.calls.map((c) => c.join(' ')).join('\n');
|
|
306
|
+
} finally {
|
|
307
|
+
warn.mockRestore();
|
|
319
308
|
}
|
|
320
|
-
|
|
321
|
-
expect(
|
|
322
|
-
|
|
323
|
-
expect(
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
309
|
+
// Original String attribute is now named gameStateData
|
|
310
|
+
expect(out).toMatch(/gameStateData\s+String/);
|
|
311
|
+
// belongsTo relationship keeps the canonical `gameState` name
|
|
312
|
+
expect(out).toMatch(/gameState\s+GameState\b/);
|
|
313
|
+
// SaveGame still emits, GameState still emits
|
|
314
|
+
expect(out).toMatch(/model SaveGame \{/);
|
|
315
|
+
expect(out).toMatch(/model GameState \{/);
|
|
316
|
+
// Warning emitted naming the model + the rename
|
|
317
|
+
expect(messages).toContain('SaveGame');
|
|
318
|
+
expect(messages).toContain('gameState');
|
|
319
|
+
expect(messages).toContain('gameStateData');
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
it('renames against default-derived relationship names too (no explicit rel.name)', () => {
|
|
328
323
|
// Default name for a hasMany relation = pluralised target lowercase.
|
|
329
|
-
//
|
|
330
|
-
const
|
|
324
|
+
// The attribute walker can produce a field that shadows that default.
|
|
325
|
+
const userModel = {
|
|
331
326
|
name: 'User',
|
|
332
327
|
attributes: [
|
|
333
328
|
{ name: 'id', type: 'String', required: true },
|
|
@@ -340,22 +335,23 @@ describe('prisma/schema-generator — 53C attribute/relationship collision', ()
|
|
|
340
335
|
};
|
|
341
336
|
const post = {
|
|
342
337
|
name: 'Post',
|
|
343
|
-
attributes: [
|
|
344
|
-
|
|
345
|
-
],
|
|
346
|
-
relationships: [
|
|
347
|
-
{ type: 'belongsTo', target: 'User' },
|
|
348
|
-
],
|
|
338
|
+
attributes: [{ name: 'id', type: 'String', required: true }],
|
|
339
|
+
relationships: [{ type: 'belongsTo', target: 'User' }],
|
|
349
340
|
};
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
341
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
342
|
+
let out: string;
|
|
343
|
+
try {
|
|
344
|
+
out = generatePrismaSchema({
|
|
345
|
+
spec: { models: [userModel, post] },
|
|
346
|
+
models: [userModel, post],
|
|
347
|
+
} as any);
|
|
348
|
+
} finally {
|
|
349
|
+
warn.mockRestore();
|
|
350
|
+
}
|
|
351
|
+
expect(out).toMatch(/postsData\s+String/);
|
|
356
352
|
});
|
|
357
353
|
|
|
358
|
-
it('proceeds normally when no collision exists (no false positives)', () => {
|
|
354
|
+
it('proceeds normally when no collision exists (no false positives, no warnings)', () => {
|
|
359
355
|
const model = {
|
|
360
356
|
name: 'User',
|
|
361
357
|
attributes: [
|
|
@@ -377,15 +373,23 @@ describe('prisma/schema-generator — 53C attribute/relationship collision', ()
|
|
|
377
373
|
{ name: 'author', type: 'belongsTo', target: 'User' },
|
|
378
374
|
],
|
|
379
375
|
};
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
376
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
377
|
+
let callCount = 0;
|
|
378
|
+
try {
|
|
379
|
+
expect(() =>
|
|
380
|
+
generatePrismaSchema({
|
|
381
|
+
spec: { models: [model, post] },
|
|
382
|
+
models: [model, post],
|
|
383
|
+
} as any)
|
|
384
|
+
).not.toThrow();
|
|
385
|
+
callCount = warn.mock.calls.length;
|
|
386
|
+
} finally {
|
|
387
|
+
warn.mockRestore();
|
|
388
|
+
}
|
|
389
|
+
expect(callCount).toBe(0);
|
|
386
390
|
});
|
|
387
391
|
|
|
388
|
-
it('
|
|
392
|
+
it('renames multiple colliding attributes in a single model independently', () => {
|
|
389
393
|
const model = {
|
|
390
394
|
name: 'WideModel',
|
|
391
395
|
attributes: [
|
|
@@ -400,18 +404,63 @@ describe('prisma/schema-generator — 53C attribute/relationship collision', ()
|
|
|
400
404
|
};
|
|
401
405
|
const foo = { name: 'Foo', attributes: [{ name: 'id', type: 'String' }], relationships: [] };
|
|
402
406
|
const bar = { name: 'Bar', attributes: [{ name: 'id', type: 'String' }], relationships: [] };
|
|
403
|
-
|
|
407
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
408
|
+
let out: string;
|
|
404
409
|
try {
|
|
405
|
-
generatePrismaSchema({
|
|
410
|
+
out = generatePrismaSchema({
|
|
406
411
|
spec: { models: [model, foo, bar] },
|
|
407
412
|
models: [model, foo, bar],
|
|
408
413
|
} as any);
|
|
409
|
-
}
|
|
410
|
-
|
|
414
|
+
} finally {
|
|
415
|
+
warn.mockRestore();
|
|
416
|
+
}
|
|
417
|
+
expect(out).toMatch(/fooData\s+String/);
|
|
418
|
+
expect(out).toMatch(/barData\s+String/);
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
it('blast-radius regression: a collision in one model does NOT prevent later models from emitting', () => {
|
|
422
|
+
// Pre-fix this site threw on the first collision, killing emission of
|
|
423
|
+
// every subsequent model in the loop. Pin the new contract: 24 models
|
|
424
|
+
// with one offender still produces all 24 in the output.
|
|
425
|
+
const offender = {
|
|
426
|
+
name: 'SaveGame',
|
|
427
|
+
attributes: [
|
|
428
|
+
{ name: 'id', type: 'String', required: true },
|
|
429
|
+
{ name: 'gameState', type: 'String' },
|
|
430
|
+
],
|
|
431
|
+
relationships: [
|
|
432
|
+
{ name: 'gameState', type: 'belongsTo', target: 'GameState' },
|
|
433
|
+
],
|
|
434
|
+
};
|
|
435
|
+
const innocent1 = {
|
|
436
|
+
name: 'Player',
|
|
437
|
+
attributes: [
|
|
438
|
+
{ name: 'id', type: 'String', required: true },
|
|
439
|
+
{ name: 'name', type: 'String' },
|
|
440
|
+
],
|
|
441
|
+
relationships: [],
|
|
442
|
+
};
|
|
443
|
+
const innocent2 = {
|
|
444
|
+
name: 'GameState',
|
|
445
|
+
attributes: [
|
|
446
|
+
{ name: 'id', type: 'String', required: true },
|
|
447
|
+
{ name: 'phase', type: 'String' },
|
|
448
|
+
],
|
|
449
|
+
relationships: [],
|
|
450
|
+
};
|
|
451
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
452
|
+
let out: string;
|
|
453
|
+
try {
|
|
454
|
+
out = generatePrismaSchema({
|
|
455
|
+
spec: { models: [offender, innocent1, innocent2] },
|
|
456
|
+
models: [offender, innocent1, innocent2],
|
|
457
|
+
} as any);
|
|
458
|
+
} finally {
|
|
459
|
+
warn.mockRestore();
|
|
411
460
|
}
|
|
412
|
-
expect(
|
|
413
|
-
expect(
|
|
414
|
-
expect(
|
|
461
|
+
expect(out).toMatch(/model SaveGame \{/);
|
|
462
|
+
expect(out).toMatch(/model Player \{/);
|
|
463
|
+
expect(out).toMatch(/model GameState \{/);
|
|
415
464
|
});
|
|
416
465
|
});
|
|
417
466
|
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import type { TemplateContext } from '@specverse/types';
|
|
8
8
|
import { pluralize } from '@specverse/types';
|
|
9
|
+
import { resolveOneModel } from '@specverse/engines/realize';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Generate Prisma schema
|
|
@@ -19,15 +20,14 @@ export default function generatePrismaSchema(context: TemplateContext): string {
|
|
|
19
20
|
throw new Error('No models found in context for schema generation');
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
// 53C —
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// colliding names so the spec author knows where to disambiguate.
|
|
23
|
+
// 53C — defensive collision resolution for direct invocations of this
|
|
24
|
+
// generator (test fixtures, ad-hoc scripts) that bypass the realize
|
|
25
|
+
// pipeline. The realizeAll() entrypoint runs the same pass at the top
|
|
26
|
+
// via normalizeAttributeRelationshipCollisions — so when we get here
|
|
27
|
+
// from the normal pipeline, this is a no-op (no collisions remain).
|
|
28
|
+
// See engines/src/realize/normalize-collisions.ts for the full why.
|
|
29
29
|
for (const model of allModels) {
|
|
30
|
-
|
|
30
|
+
resolveOneModel(model);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
// Build relation map: track all references to each target model
|
|
@@ -80,78 +80,6 @@ export default function generatePrismaSchema(context: TemplateContext): string {
|
|
|
80
80
|
return `${header}\n\n${enumBlock}${modelSchemas}`;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
/**
|
|
84
|
-
* Detect duplicate field names within a single model (53C).
|
|
85
|
-
*
|
|
86
|
-
* Prisma rejects models where the same name is declared twice. Two
|
|
87
|
-
* common collision patterns surface from the analyse pipeline:
|
|
88
|
-
* - An attribute walker emits `gameState: String` AND a relationship
|
|
89
|
-
* walker emits `gameState: belongsTo GameState` on the same model.
|
|
90
|
-
* - Two attribute walkers extract the same field from different
|
|
91
|
-
* facets of the source (TS interface + Zod schema).
|
|
92
|
-
*
|
|
93
|
-
* We detect the relationship-vs-attribute collision specifically because
|
|
94
|
-
* it's the one with a deterministic-looking-but-broken result (Prisma's
|
|
95
|
-
* error message says "field already defined" with no hint about the
|
|
96
|
-
* source). Attribute-vs-attribute duplicates are caught by spec validation
|
|
97
|
-
* earlier in the pipeline.
|
|
98
|
-
*/
|
|
99
|
-
function detectAttributeRelationshipCollision(model: any): void {
|
|
100
|
-
if (!model) return;
|
|
101
|
-
const attributes = Array.isArray(model.attributes)
|
|
102
|
-
? model.attributes
|
|
103
|
-
: Object.values(model.attributes || {});
|
|
104
|
-
const relationships = Array.isArray(model.relationships)
|
|
105
|
-
? model.relationships
|
|
106
|
-
: Object.values(model.relationships || {});
|
|
107
|
-
|
|
108
|
-
const attributeNames = new Set<string>();
|
|
109
|
-
for (const attr of attributes as any[]) {
|
|
110
|
-
if (attr?.name) attributeNames.add(attr.name);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const collisions: Array<{ name: string; relType: string; relTarget: string }> = [];
|
|
114
|
-
for (const rel of relationships as any[]) {
|
|
115
|
-
// Relationships emit a field named after `rel.name` (or a derived default
|
|
116
|
-
// when name is absent). The default for hasMany/manyToMany is the
|
|
117
|
-
// pluralised target lowercase; for belongsTo/hasOne it's the bare target
|
|
118
|
-
// lowercase. We check ALL these surfaces so a spec author who relied on
|
|
119
|
-
// the implicit naming gets the same protection as one who set `name:`.
|
|
120
|
-
const defaultName =
|
|
121
|
-
rel?.type === 'hasMany' || rel?.type === 'manyToMany'
|
|
122
|
-
? pluralize(String(rel?.target || '').toLowerCase())
|
|
123
|
-
: String(rel?.target || '').toLowerCase();
|
|
124
|
-
const candidate = rel?.name || defaultName;
|
|
125
|
-
if (candidate && attributeNames.has(candidate)) {
|
|
126
|
-
collisions.push({
|
|
127
|
-
name: candidate,
|
|
128
|
-
relType: String(rel?.type || 'unknown'),
|
|
129
|
-
relTarget: String(rel?.target || 'unknown'),
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (collisions.length > 0) {
|
|
135
|
-
const lines: string[] = [];
|
|
136
|
-
lines.push(
|
|
137
|
-
`Realize error: model "${model.name}" has attribute/relationship name collision(s):`
|
|
138
|
-
);
|
|
139
|
-
for (const c of collisions) {
|
|
140
|
-
lines.push(
|
|
141
|
-
` - "${c.name}" is declared as both an attribute AND a ${c.relType} relationship to ${c.relTarget}`
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
lines.push(
|
|
145
|
-
'Rename one to disambiguate (e.g. "' +
|
|
146
|
-
collisions[0].name +
|
|
147
|
-
'Data" for the attribute, keeping "' +
|
|
148
|
-
collisions[0].name +
|
|
149
|
-
'" for the relationship).'
|
|
150
|
-
);
|
|
151
|
-
throw new Error(lines.join('\n'));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
83
|
/**
|
|
156
84
|
* Build a relation name map that assigns consistent names to both sides of each relation.
|
|
157
85
|
*
|
|
@@ -21,7 +21,15 @@ import {
|
|
|
21
21
|
export type StepConvention = SharedConvention<StepContext>;
|
|
22
22
|
|
|
23
23
|
export interface StepContext extends SharedStepContext {
|
|
24
|
-
|
|
24
|
+
// Optional: legacy callers (ai-behaviors-generator, controller-generator)
|
|
25
|
+
// supply this as a pre-lowercased model var. The per-action emitter
|
|
26
|
+
// (engines/src/realize/per-action-emitter.ts) builds a plain
|
|
27
|
+
// SharedStepContext and doesn't set it. Conventions below read
|
|
28
|
+
// ctx.modelName (canonical) and call toVar() locally — same result
|
|
29
|
+
// either way, but the per-action path no longer crashes with
|
|
30
|
+
// `Cannot read properties of undefined (reading 'charAt')` when a
|
|
31
|
+
// convention reads ctx.prismaModel that was never supplied.
|
|
32
|
+
prismaModel?: string;
|
|
25
33
|
}
|
|
26
34
|
|
|
27
35
|
/**
|
|
@@ -229,7 +237,7 @@ export const STEP_CONVENTIONS: StepConvention[] = [
|
|
|
229
237
|
generateCall: (m, ctx) => {
|
|
230
238
|
const field = m[1];
|
|
231
239
|
const rawValue = m[2];
|
|
232
|
-
const modelVar = toVar(ctx.
|
|
240
|
+
const modelVar = toVar(ctx.modelName);
|
|
233
241
|
const val = resolveValue(rawValue, ctx);
|
|
234
242
|
return ` // Step ${ctx.stepNum}: Set ${field} to ${rawValue.trim()}
|
|
235
243
|
await prisma.${modelVar}.update({
|
|
@@ -246,7 +254,7 @@ export const STEP_CONVENTIONS: StepConvention[] = [
|
|
|
246
254
|
generateCall: (m, ctx) => {
|
|
247
255
|
const field = m[1];
|
|
248
256
|
const amount = m[2];
|
|
249
|
-
const modelVar = toVar(ctx.
|
|
257
|
+
const modelVar = toVar(ctx.modelName);
|
|
250
258
|
const amountVal = /^\d+$/.test(amount) ? amount : amount;
|
|
251
259
|
return ` // Step ${ctx.stepNum}: Increment ${field} by ${amount}
|
|
252
260
|
await prisma.${modelVar}.update({
|
|
@@ -263,7 +271,7 @@ export const STEP_CONVENTIONS: StepConvention[] = [
|
|
|
263
271
|
generateCall: (m, ctx) => {
|
|
264
272
|
const field = m[1];
|
|
265
273
|
const amount = m[2];
|
|
266
|
-
const modelVar = toVar(ctx.
|
|
274
|
+
const modelVar = toVar(ctx.modelName);
|
|
267
275
|
const amountVal = /^\d+$/.test(amount) ? amount : amount;
|
|
268
276
|
return ` // Step ${ctx.stepNum}: Decrement ${field} by ${amount}
|
|
269
277
|
await prisma.${modelVar}.update({
|
|
@@ -284,7 +292,7 @@ export const STEP_CONVENTIONS: StepConvention[] = [
|
|
|
284
292
|
generateCall: (m, ctx) => {
|
|
285
293
|
const event = m[1];
|
|
286
294
|
return ` // Step ${ctx.stepNum}: Emit ${event} event
|
|
287
|
-
await eventBus.publish('${event}', { ${toVar(ctx.
|
|
295
|
+
await eventBus.publish('${event}', { ${toVar(ctx.modelName)}Id: ${toVar(ctx.modelName)}.id, operation: '${ctx.operationName}', timestamp: new Date().toISOString() });`;
|
|
288
296
|
},
|
|
289
297
|
},
|
|
290
298
|
|
|
@@ -295,7 +303,7 @@ export const STEP_CONVENTIONS: StepConvention[] = [
|
|
|
295
303
|
generateCall: (m, ctx) => {
|
|
296
304
|
const type = m[1];
|
|
297
305
|
return ` // Step ${ctx.stepNum}: Send ${type} notification
|
|
298
|
-
await eventBus.publish('${type}Notification', { ${toVar(ctx.
|
|
306
|
+
await eventBus.publish('${type}Notification', { ${toVar(ctx.modelName)}Id: ${toVar(ctx.modelName)}.id, operation: '${ctx.operationName}' });`;
|
|
299
307
|
},
|
|
300
308
|
},
|
|
301
309
|
|
|
@@ -320,7 +328,7 @@ export const STEP_CONVENTIONS: StepConvention[] = [
|
|
|
320
328
|
const isModel = /^(updated|created|the)\s+/i.test(value) || value === ctx.modelName;
|
|
321
329
|
if (isModel) {
|
|
322
330
|
return ` // Step ${ctx.stepNum}: Return result
|
|
323
|
-
return ${toVar(ctx.
|
|
331
|
+
return ${toVar(ctx.modelName)};`;
|
|
324
332
|
}
|
|
325
333
|
return ` // Step ${ctx.stepNum}: Return ${value}
|
|
326
334
|
return ${value};`;
|