@metaobjectsdev/codegen-ts 0.20.9-rc.1 → 0.20.10-rc.1
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/generators/api-model.d.ts.map +1 -1
- package/dist/generators/api-model.js +9 -5
- package/dist/generators/api-model.js.map +1 -1
- package/dist/generators/barrel.js +1 -1
- package/dist/generators/barrel.js.map +1 -1
- package/dist/generators/entity-file.d.ts.map +1 -1
- package/dist/generators/entity-file.js +7 -1
- package/dist/generators/entity-file.js.map +1 -1
- package/dist/generators/extractor-file.d.ts.map +1 -1
- package/dist/generators/extractor-file.js +6 -1
- package/dist/generators/extractor-file.js.map +1 -1
- package/dist/generators/output-parser-file.d.ts.map +1 -1
- package/dist/generators/output-parser-file.js +6 -1
- package/dist/generators/output-parser-file.js.map +1 -1
- package/dist/generators/queries-file.d.ts +1 -1
- package/dist/generators/queries-file.d.ts.map +1 -1
- package/dist/generators/queries-file.js +11 -6
- package/dist/generators/queries-file.js.map +1 -1
- package/dist/generators/routes-file-hono.d.ts +4 -0
- package/dist/generators/routes-file-hono.d.ts.map +1 -1
- package/dist/generators/routes-file-hono.js +6 -1
- package/dist/generators/routes-file-hono.js.map +1 -1
- package/dist/generators/routes-file.d.ts +4 -0
- package/dist/generators/routes-file.d.ts.map +1 -1
- package/dist/generators/routes-file.js +6 -1
- package/dist/generators/routes-file.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/naming/collision-names.d.ts +19 -0
- package/dist/naming/collision-names.d.ts.map +1 -0
- package/dist/naming/collision-names.js +79 -0
- package/dist/naming/collision-names.js.map +1 -0
- package/dist/payload-codegen.d.ts.map +1 -1
- package/dist/payload-codegen.js +5 -71
- package/dist/payload-codegen.js.map +1 -1
- package/dist/render-context.d.ts +35 -3
- package/dist/render-context.d.ts.map +1 -1
- package/dist/render-context.js +23 -0
- package/dist/render-context.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +36 -2
- package/dist/runner.js.map +1 -1
- package/dist/source-detect.d.ts +10 -0
- package/dist/source-detect.d.ts.map +1 -1
- package/dist/source-detect.js +22 -0
- package/dist/source-detect.js.map +1 -1
- package/dist/templates/drizzle-schema.d.ts.map +1 -1
- package/dist/templates/drizzle-schema.js +14 -3
- package/dist/templates/drizzle-schema.js.map +1 -1
- package/dist/templates/entity-file.d.ts +1 -1
- package/dist/templates/entity-file.d.ts.map +1 -1
- package/dist/templates/entity-file.js +13 -3
- package/dist/templates/entity-file.js.map +1 -1
- package/dist/templates/extract-delegate-emitter.d.ts +9 -4
- package/dist/templates/extract-delegate-emitter.d.ts.map +1 -1
- package/dist/templates/extract-delegate-emitter.js +46 -30
- package/dist/templates/extract-delegate-emitter.js.map +1 -1
- package/dist/templates/extractor.d.ts +2 -1
- package/dist/templates/extractor.d.ts.map +1 -1
- package/dist/templates/extractor.js +48 -33
- package/dist/templates/extractor.js.map +1 -1
- package/dist/templates/inferred-types.d.ts +1 -1
- package/dist/templates/inferred-types.d.ts.map +1 -1
- package/dist/templates/inferred-types.js +39 -16
- package/dist/templates/inferred-types.js.map +1 -1
- package/dist/templates/output-parser.d.ts +2 -1
- package/dist/templates/output-parser.d.ts.map +1 -1
- package/dist/templates/output-parser.js +37 -12
- package/dist/templates/output-parser.js.map +1 -1
- package/dist/templates/projection-decl.d.ts +1 -1
- package/dist/templates/projection-decl.d.ts.map +1 -1
- package/dist/templates/projection-decl.js +20 -9
- package/dist/templates/projection-decl.js.map +1 -1
- package/dist/templates/value-object-file.d.ts.map +1 -1
- package/dist/templates/value-object-file.js +5 -1
- package/dist/templates/value-object-file.js.map +1 -1
- package/dist/templates/view-decl.d.ts +12 -2
- package/dist/templates/view-decl.d.ts.map +1 -1
- package/dist/templates/view-decl.js +21 -15
- package/dist/templates/view-decl.js.map +1 -1
- package/dist/templates/zod-validators.d.ts +1 -1
- package/dist/templates/zod-validators.d.ts.map +1 -1
- package/dist/templates/zod-validators.js +35 -22
- package/dist/templates/zod-validators.js.map +1 -1
- package/package.json +6 -6
- package/src/generators/api-model.ts +9 -5
- package/src/generators/barrel.ts +1 -1
- package/src/generators/entity-file.ts +7 -1
- package/src/generators/extractor-file.ts +6 -1
- package/src/generators/output-parser-file.ts +6 -1
- package/src/generators/queries-file.ts +12 -7
- package/src/generators/routes-file-hono.ts +7 -1
- package/src/generators/routes-file.ts +6 -1
- package/src/index.ts +1 -1
- package/src/naming/collision-names.ts +87 -0
- package/src/payload-codegen.ts +4 -79
- package/src/reference/barrel.ts +1 -1
- package/src/reference/queries.ts +14 -6
- package/src/reference/routes.ts +8 -1
- package/src/render-context.ts +51 -3
- package/src/runner.ts +36 -4
- package/src/source-detect.ts +20 -0
- package/src/templates/drizzle-schema.ts +14 -3
- package/src/templates/entity-file.ts +14 -6
- package/src/templates/extract-delegate-emitter.ts +52 -27
- package/src/templates/extractor.ts +49 -32
- package/src/templates/inferred-types.ts +39 -17
- package/src/templates/output-parser.ts +40 -12
- package/src/templates/projection-decl.ts +20 -10
- package/src/templates/value-object-file.ts +5 -1
- package/src/templates/view-decl.ts +30 -18
- package/src/templates/zod-validators.ts +35 -23
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// ADR-0044 collision-scoped naming — shared across every codegen tier that emits
|
|
2
|
+
// declarations from a reference closure (payload records today; the entity +
|
|
3
|
+
// extract/output-parser tiers per issue #228).
|
|
4
|
+
//
|
|
5
|
+
// `assignEmittedNames` is a PURE function of the closure: a bare short name
|
|
6
|
+
// unique in the closure emits bare; a collision emits EVERY member under its
|
|
7
|
+
// package-qualified derived name (PascalCase each package segment + short
|
|
8
|
+
// name). A still-colliding derived name fails loud (ERR_PAYLOAD_NAME_COLLISION).
|
|
9
|
+
import { PACKAGE_SEPARATOR } from "@metaobjectsdev/metadata";
|
|
10
|
+
// ADR-0044 backstop error code — a codegen-time (not loader) error, peer of
|
|
11
|
+
// @metaobjectsdev/render's ERR_VAR_NOT_ON_PAYLOAD. Already promoted to the shared
|
|
12
|
+
// cross-language error-code ledger in 0.19.3 (packages/metadata/src/errors.ts's
|
|
13
|
+
// ERROR_CODES, fixtures/conformance/ERROR-CODES.json, server/python/src/metaobjects/errors.py).
|
|
14
|
+
// That ledger has no per-code named export (only the ERROR_CODES array + the ErrorCode
|
|
15
|
+
// union type), so this stays a local literal — but `satisfies ErrorCode` binds it to the
|
|
16
|
+
// shared ledger's type: a future rename/removal there fails this file's typecheck instead
|
|
17
|
+
// of silently drifting.
|
|
18
|
+
export const ERR_PAYLOAD_NAME_COLLISION = "ERR_PAYLOAD_NAME_COLLISION";
|
|
19
|
+
function pascalSegment(s) {
|
|
20
|
+
return s.length > 0 ? s[0].toUpperCase() + s.slice(1) : s;
|
|
21
|
+
}
|
|
22
|
+
/** ADR-0044 — package-qualified derived name for a collision member: PascalCase
|
|
23
|
+
* each `::`-segment of the node's effective package, concatenated, then the
|
|
24
|
+
* bare short name (`acme::alpha::Note` -> `AcmeAlphaNote`). A root-level
|
|
25
|
+
* (no-package) node has nothing to qualify with and keeps its bare name — two
|
|
26
|
+
* root-level VOs can never share a name (the loader's own-package uniqueness
|
|
27
|
+
* already rejects that), so this can't silently under-qualify. */
|
|
28
|
+
export function packageQualifiedName(pkg, shortName) {
|
|
29
|
+
if (pkg === "")
|
|
30
|
+
return shortName;
|
|
31
|
+
return (pkg
|
|
32
|
+
.split(PACKAGE_SEPARATOR)
|
|
33
|
+
.map(pascalSegment)
|
|
34
|
+
.join("") + shortName);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* ADR-0044 pass 2 — assign the emitted TS name for every VO in the closure. A
|
|
38
|
+
* PURE function of the closure's (fqn, bareName, package) triples — never of
|
|
39
|
+
* traversal order: bare short name unique in the closure -> bare name; a
|
|
40
|
+
* collision -> EVERY member gets its package-qualified derived name. If two
|
|
41
|
+
* DISTINCT fqns still derive the same name after qualification, throws
|
|
42
|
+
* (ERR_PAYLOAD_NAME_COLLISION) — never silently wrong.
|
|
43
|
+
*/
|
|
44
|
+
export function assignEmittedNames(closure) {
|
|
45
|
+
const byShortName = new Map();
|
|
46
|
+
for (const [fqn, node] of closure) {
|
|
47
|
+
const bucket = byShortName.get(node.name);
|
|
48
|
+
if (bucket)
|
|
49
|
+
bucket.push(fqn);
|
|
50
|
+
else
|
|
51
|
+
byShortName.set(node.name, [fqn]);
|
|
52
|
+
}
|
|
53
|
+
const nameMap = new Map();
|
|
54
|
+
for (const [shortName, fqns] of byShortName) {
|
|
55
|
+
if (fqns.length === 1) {
|
|
56
|
+
nameMap.set(fqns[0], shortName);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
for (const fqn of fqns) {
|
|
60
|
+
const node = closure.get(fqn);
|
|
61
|
+
const pkg = node.package ?? node.fileDefaultPackage ?? "";
|
|
62
|
+
nameMap.set(fqn, packageQualifiedName(pkg, shortName));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Backstop — sorted by fqn so which pair the message names (and whether the
|
|
66
|
+
// set of colliding names is non-empty) is a pure function of the closure, not
|
|
67
|
+
// of Map insertion/traversal order.
|
|
68
|
+
const ownerOf = new Map();
|
|
69
|
+
for (const fqn of [...nameMap.keys()].sort()) {
|
|
70
|
+
const emitted = nameMap.get(fqn);
|
|
71
|
+
const existing = ownerOf.get(emitted);
|
|
72
|
+
if (existing !== undefined && existing !== fqn) {
|
|
73
|
+
throw new Error(`${ERR_PAYLOAD_NAME_COLLISION}: payload record name collision: "${emitted}" derives from both "${existing}" and "${fqn}" — rename one value-object or move it to a package that derives a distinct name`);
|
|
74
|
+
}
|
|
75
|
+
ownerOf.set(emitted, fqn);
|
|
76
|
+
}
|
|
77
|
+
return nameMap;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=collision-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collision-names.js","sourceRoot":"","sources":["../../src/naming/collision-names.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-codegen.d.ts","sourceRoot":"","sources":["../src/payload-codegen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"payload-codegen.d.ts","sourceRoot":"","sources":["../src/payload-codegen.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,KAAK,QAAQ,EAad,MAAM,0BAA0B,CAAC;AA8KlC;;;;uDAIuD;AACvD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,MAAM,CAOlG;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,WAAW,SAAK,GACf,MAAM,CAWR;AAMD,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAyBjF"}
|
package/dist/payload-codegen.js
CHANGED
|
@@ -19,12 +19,15 @@
|
|
|
19
19
|
// unique in the closure emits bare; a collision emits
|
|
20
20
|
// EVERY member under its package-qualified derived
|
|
21
21
|
// name (PascalCase each package segment + short name).
|
|
22
|
-
// A still-colliding derived name fails loud.
|
|
22
|
+
// A still-colliding derived name fails loud. Lives in
|
|
23
|
+
// ./naming/collision-names.js — shared with the
|
|
24
|
+
// entity + extract/output-parser tiers (#228).
|
|
23
25
|
// 3. emitClosureDeclarations — emit each declaration + every reference through
|
|
24
26
|
// the name map.
|
|
25
|
-
import { TYPE_FIELD, TYPE_TEMPLATE, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_ENUM, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_REQUIRED, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_FORMAT,
|
|
27
|
+
import { TYPE_FIELD, TYPE_TEMPLATE, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_ENUM, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_REQUIRED, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_FORMAT, resolveObjectRef, stripPackage, } from "@metaobjectsdev/metadata";
|
|
26
28
|
import { enumValues } from "./enum-meta.js";
|
|
27
29
|
import { enumUnionAliasName, enumUnionString } from "./templates/inferred-types.js";
|
|
30
|
+
import { assignEmittedNames } from "./naming/collision-names.js";
|
|
28
31
|
const SCALAR_TS = {
|
|
29
32
|
string: "string",
|
|
30
33
|
class: "string",
|
|
@@ -41,15 +44,6 @@ const SCALAR_TS = {
|
|
|
41
44
|
time: "string",
|
|
42
45
|
timestamp: "string",
|
|
43
46
|
};
|
|
44
|
-
// ADR-0044 backstop error code — a codegen-time (not loader) error, peer of
|
|
45
|
-
// @metaobjectsdev/render's ERR_VAR_NOT_ON_PAYLOAD. Declared LOCALLY rather than
|
|
46
|
-
// added to packages/metadata/src/errors.ts's ERROR_CODES ledger: that ledger is
|
|
47
|
-
// checked for FULL cross-port agreement against fixtures/conformance/ERROR-CODES.json
|
|
48
|
-
// (packages/metadata/test/errors.test.ts) and, on the Python side, for corpus-code
|
|
49
|
-
// coverage — registering it there before every port implements the ADR-0044 fix
|
|
50
|
-
// would turn those OTHER ports' tests red. It moves into the shared ledger once the
|
|
51
|
-
// Java/Kotlin/Python follow-up (ADR-0044 §4, items 3-4) lands alongside this code.
|
|
52
|
-
const ERR_PAYLOAD_NAME_COLLISION = "ERR_PAYLOAD_NAME_COLLISION";
|
|
53
47
|
// ADR-0039: resolving — root has no super (children()==ownChildren()); a top-level object/template may itself extend, so resolve rather than work-by-accident.
|
|
54
48
|
// ADR-0042: resolveObjectRef gives package-local-before-root-level precedence for a bare ref, FQN-exact otherwise.
|
|
55
49
|
function findObject(root, name, referrerPkg = "") {
|
|
@@ -86,66 +80,6 @@ function collectClosure(root, voRef, referrerPkg, visited) {
|
|
|
86
80
|
collectClosure(root, ref, fieldPkg, visited);
|
|
87
81
|
}
|
|
88
82
|
}
|
|
89
|
-
function pascalSegment(s) {
|
|
90
|
-
return s.length > 0 ? s[0].toUpperCase() + s.slice(1) : s;
|
|
91
|
-
}
|
|
92
|
-
/** ADR-0044 — package-qualified derived name for a collision member: PascalCase
|
|
93
|
-
* each `::`-segment of the node's effective package, concatenated, then the
|
|
94
|
-
* bare short name (`acme::alpha::Note` -> `AcmeAlphaNote`). A root-level
|
|
95
|
-
* (no-package) node has nothing to qualify with and keeps its bare name — two
|
|
96
|
-
* root-level VOs can never share a name (the loader's own-package uniqueness
|
|
97
|
-
* already rejects that), so this can't silently under-qualify. */
|
|
98
|
-
function packageQualifiedName(pkg, shortName) {
|
|
99
|
-
if (pkg === "")
|
|
100
|
-
return shortName;
|
|
101
|
-
return (pkg
|
|
102
|
-
.split(PACKAGE_SEPARATOR)
|
|
103
|
-
.map(pascalSegment)
|
|
104
|
-
.join("") + shortName);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* ADR-0044 pass 2 — assign the emitted TS name for every VO in the closure. A
|
|
108
|
-
* PURE function of the closure's (fqn, bareName, package) triples — never of
|
|
109
|
-
* traversal order: bare short name unique in the closure -> bare name; a
|
|
110
|
-
* collision -> EVERY member gets its package-qualified derived name. If two
|
|
111
|
-
* DISTINCT fqns still derive the same name after qualification, throws
|
|
112
|
-
* (ERR_PAYLOAD_NAME_COLLISION) — never silently wrong.
|
|
113
|
-
*/
|
|
114
|
-
function assignEmittedNames(closure) {
|
|
115
|
-
const byShortName = new Map();
|
|
116
|
-
for (const [fqn, node] of closure) {
|
|
117
|
-
const bucket = byShortName.get(node.name);
|
|
118
|
-
if (bucket)
|
|
119
|
-
bucket.push(fqn);
|
|
120
|
-
else
|
|
121
|
-
byShortName.set(node.name, [fqn]);
|
|
122
|
-
}
|
|
123
|
-
const nameMap = new Map();
|
|
124
|
-
for (const [shortName, fqns] of byShortName) {
|
|
125
|
-
if (fqns.length === 1) {
|
|
126
|
-
nameMap.set(fqns[0], shortName);
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
for (const fqn of fqns) {
|
|
130
|
-
const node = closure.get(fqn);
|
|
131
|
-
const pkg = node.package ?? node.fileDefaultPackage ?? "";
|
|
132
|
-
nameMap.set(fqn, packageQualifiedName(pkg, shortName));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Backstop — sorted by fqn so which pair the message names (and whether the
|
|
136
|
-
// set of colliding names is non-empty) is a pure function of the closure, not
|
|
137
|
-
// of Map insertion/traversal order.
|
|
138
|
-
const ownerOf = new Map();
|
|
139
|
-
for (const fqn of [...nameMap.keys()].sort()) {
|
|
140
|
-
const emitted = nameMap.get(fqn);
|
|
141
|
-
const existing = ownerOf.get(emitted);
|
|
142
|
-
if (existing !== undefined && existing !== fqn) {
|
|
143
|
-
throw new Error(`${ERR_PAYLOAD_NAME_COLLISION}: payload record name collision: "${emitted}" derives from both "${existing}" and "${fqn}" — rename one value-object or move it to a package that derives a distinct name`);
|
|
144
|
-
}
|
|
145
|
-
ownerOf.set(emitted, fqn);
|
|
146
|
-
}
|
|
147
|
-
return nameMap;
|
|
148
|
-
}
|
|
149
83
|
/** Resolve `ref`'s emitted TS interface name under the ADR-0044 naming rule,
|
|
150
84
|
* scoped to `ref`'s OWN reference closure (the same closure
|
|
151
85
|
* `generatePayloadInterfaces(root, ref, referrerPkg)` would emit). Returns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-codegen.js","sourceRoot":"","sources":["../src/payload-codegen.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,sEAAsE;AACtE,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,+EAA+E;AAC/E,kDAAkD;AAClD,EAAE;AACF,wEAAwE;AACxE,8EAA8E;AAC9E,6EAA6E;AAC7E,gFAAgF;AAChF,uEAAuE;AACvE,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"payload-codegen.js","sourceRoot":"","sources":["../src/payload-codegen.ts"],"names":[],"mappings":"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"}
|
package/dist/render-context.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MetaRoot } from "@metaobjectsdev/metadata";
|
|
1
|
+
import type { MetaRoot, MetaData, MetaField } from "@metaobjectsdev/metadata";
|
|
2
2
|
import type { Dialect } from "./column-mapper.js";
|
|
3
3
|
import type { PkInfo } from "./pk-resolver.js";
|
|
4
4
|
import type { RelationMap } from "./relation-resolver.js";
|
|
@@ -62,15 +62,35 @@ export interface RenderContext {
|
|
|
62
62
|
pkMap: Map<string, PkInfo>;
|
|
63
63
|
/** Pre-pass relation map for FK + relations() block emission. */
|
|
64
64
|
relationMap: RelationMap;
|
|
65
|
-
/**
|
|
65
|
+
/** Object name → its metadata package (undefined if the object has no package).
|
|
66
|
+
* Built once per run. Value objects are keyed by their ADR-0044 EMITTED name
|
|
67
|
+
* (bare when unique, package-qualified on a cross-package short-name collision;
|
|
68
|
+
* #228) so `valueObjectModuleSpecifier` resolves the right module; entities and
|
|
69
|
+
* other objects are keyed by their bare name. */
|
|
66
70
|
packageOf: Map<string, string | undefined>;
|
|
71
|
+
/** ADR-0044/#228 — `resolutionKey()` → emitted TS name for every emitted
|
|
72
|
+
* `object.value` in the run. A PURE function of the run's value-object set
|
|
73
|
+
* (collision-scoped): a bare short name unique in the set stays bare; a
|
|
74
|
+
* cross-package short-name collision qualifies EVERY member. Empty by default
|
|
75
|
+
* (bare names — byte-identical to pre-#228 output). */
|
|
76
|
+
valueObjectNames: ReadonlyMap<string, string>;
|
|
77
|
+
/** The ADR-0044 emitted name for a value object being DECLARED (its interface,
|
|
78
|
+
* Zod schema, and module filename). Non-value objects (entities) are never in
|
|
79
|
+
* the collision set, so this returns their bare `name`. */
|
|
80
|
+
valueObjectEmittedName: (obj: MetaData) => string;
|
|
81
|
+
/** The ADR-0044 emitted name for a REFERENCE to a value object (`@objectRef`,
|
|
82
|
+
* bare or FQN), resolved package-locally (ADR-0042) from `referrerPkg`. Falls
|
|
83
|
+
* back to the bare (package-stripped) ref when it resolves to no emitted value
|
|
84
|
+
* object — which is also the byte-identical result whenever there is no
|
|
85
|
+
* collision. */
|
|
86
|
+
resolveValueObjectName: (ref: string, referrerPkg: string | undefined) => string;
|
|
67
87
|
/** FR-019: module specifier to import externally-PROVIDED shared enums from
|
|
68
88
|
* (`@provided: true` declarations). Undefined when unset — referencing a
|
|
69
89
|
* provided enum without it is a codegen-time error. */
|
|
70
90
|
providedEnumModule?: string;
|
|
71
91
|
}
|
|
72
92
|
/** Optional shape — `extStyle`, `omImport`, `columnNamingStrategy`, `apiPrefix`, `outputLayout`, and `packageOf` default if omitted. `packageOf` defaults to an empty Map (correct for flat layout; `runGen` always provides the real map). `collectionName` is built from `pluralizeCollections` + `collectionNameOverrides` (both default to always-pluralize). */
|
|
73
|
-
export type RenderContextInput = Omit<RenderContext, "extStyle" | "omImport" | "columnNamingStrategy" | "timestampMode" | "apiPrefix" | "emitAbstractShapes" | "outputLayout" | "packageOf" | "selfTarget" | "entityModuleTarget" | "collectionName"> & {
|
|
93
|
+
export type RenderContextInput = Omit<RenderContext, "extStyle" | "omImport" | "columnNamingStrategy" | "timestampMode" | "apiPrefix" | "emitAbstractShapes" | "outputLayout" | "packageOf" | "valueObjectNames" | "valueObjectEmittedName" | "resolveValueObjectName" | "selfTarget" | "entityModuleTarget" | "collectionName"> & {
|
|
74
94
|
extStyle?: ExtStyle;
|
|
75
95
|
omImport?: string;
|
|
76
96
|
columnNamingStrategy?: ColumnNamingStrategy;
|
|
@@ -79,6 +99,10 @@ export type RenderContextInput = Omit<RenderContext, "extStyle" | "omImport" | "
|
|
|
79
99
|
emitAbstractShapes?: boolean;
|
|
80
100
|
outputLayout?: OutputLayout;
|
|
81
101
|
packageOf?: Map<string, string | undefined>;
|
|
102
|
+
/** ADR-0044/#228 value-object emitted-name map (resolutionKey → emitted name).
|
|
103
|
+
* Defaults to an empty Map — bare names, byte-identical to pre-#228 output.
|
|
104
|
+
* `runGen` always provides the real map. */
|
|
105
|
+
valueObjectNames?: ReadonlyMap<string, string>;
|
|
82
106
|
selfTarget?: ResolvedTarget;
|
|
83
107
|
entityModuleTarget?: ResolvedTarget;
|
|
84
108
|
/** Auto-pluralize collection (table) variable names. Default true. */
|
|
@@ -86,6 +110,14 @@ export type RenderContextInput = Omit<RenderContext, "extStyle" | "omImport" | "
|
|
|
86
110
|
/** Per-entity exact collection-var-name overrides, keyed by bare entity name. */
|
|
87
111
|
collectionNameOverrides?: Record<string, string>;
|
|
88
112
|
};
|
|
113
|
+
/** ADR-0042/#228 — the package a field's `@objectRef` resolves in: the FIELD's OWN
|
|
114
|
+
* declaring package (which differs from the referring object's when the field is
|
|
115
|
+
* inherited via `extends` from an abstract node in another package), falling back
|
|
116
|
+
* to `fallbackPkg` (the referring object's package). THE single source of truth for
|
|
117
|
+
* the referrer package passed to `RenderContext.resolveValueObjectName`, so every
|
|
118
|
+
* value-object reference site resolves a cross-package short-name collision
|
|
119
|
+
* identically (they cannot drift). Mirrors payload-codegen's `collectClosure`. */
|
|
120
|
+
export declare function fieldDeclaringPackage(field: MetaField, fallbackPkg: string | undefined): string | undefined;
|
|
89
121
|
/** Append the configured extension to a cross-entity module specifier (which is
|
|
90
122
|
* always a bare, extension-less relative path like `./Foo`). */
|
|
91
123
|
export declare function withExt(spec: string, style: ExtStyle): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"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"}
|
package/dist/render-context.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
// RenderContext — cross-cutting state passed to every template.
|
|
2
|
+
import { resolveObjectRef, stripPackage } from "@metaobjectsdev/metadata";
|
|
2
3
|
import { variableNameFromEntity } from "./naming.js";
|
|
4
|
+
/** ADR-0042/#228 — the package a field's `@objectRef` resolves in: the FIELD's OWN
|
|
5
|
+
* declaring package (which differs from the referring object's when the field is
|
|
6
|
+
* inherited via `extends` from an abstract node in another package), falling back
|
|
7
|
+
* to `fallbackPkg` (the referring object's package). THE single source of truth for
|
|
8
|
+
* the referrer package passed to `RenderContext.resolveValueObjectName`, so every
|
|
9
|
+
* value-object reference site resolves a cross-package short-name collision
|
|
10
|
+
* identically (they cannot drift). Mirrors payload-codegen's `collectClosure`. */
|
|
11
|
+
export function fieldDeclaringPackage(field, fallbackPkg) {
|
|
12
|
+
return field.parent?.package ?? field.parent?.fileDefaultPackage ?? fallbackPkg;
|
|
13
|
+
}
|
|
3
14
|
/** Append the configured extension to a cross-entity module specifier (which is
|
|
4
15
|
* always a bare, extension-less relative path like `./Foo`). */
|
|
5
16
|
export function withExt(spec, style) {
|
|
@@ -37,6 +48,11 @@ export function makeRenderContext(opts) {
|
|
|
37
48
|
pluralize: opts.pluralizeCollections ?? true,
|
|
38
49
|
overrides: opts.collectionNameOverrides ?? {},
|
|
39
50
|
};
|
|
51
|
+
// ADR-0044/#228 — the value-object emitted-name map + its two accessors. When
|
|
52
|
+
// absent (bare template unit-tests), the map is empty, so both accessors return
|
|
53
|
+
// bare names and every consumer is byte-identical to pre-#228 output.
|
|
54
|
+
const valueObjectNames = opts.valueObjectNames ?? new Map();
|
|
55
|
+
const loadedRoot = opts.loadedRoot;
|
|
40
56
|
return {
|
|
41
57
|
...opts,
|
|
42
58
|
extStyle: opts.extStyle ?? "js",
|
|
@@ -47,6 +63,13 @@ export function makeRenderContext(opts) {
|
|
|
47
63
|
emitAbstractShapes: opts.emitAbstractShapes ?? true,
|
|
48
64
|
outputLayout,
|
|
49
65
|
packageOf: opts.packageOf ?? new Map(),
|
|
66
|
+
valueObjectNames,
|
|
67
|
+
valueObjectEmittedName: (obj) => valueObjectNames.get(obj.resolutionKey()) ?? obj.name,
|
|
68
|
+
resolveValueObjectName: (ref, referrerPkg) => {
|
|
69
|
+
const { node } = resolveObjectRef(loadedRoot, ref, referrerPkg ?? "");
|
|
70
|
+
const emitted = node !== undefined ? valueObjectNames.get(node.resolutionKey()) : undefined;
|
|
71
|
+
return emitted ?? stripPackage(ref);
|
|
72
|
+
},
|
|
50
73
|
selfTarget: defaultTarget,
|
|
51
74
|
entityModuleTarget: opts.entityModuleTarget ?? defaultTarget,
|
|
52
75
|
collectionName: (entityName) => variableNameFromEntity(entityName, collectionNameOpts),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-context.js","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAAA,gEAAgE;
|
|
1
|
+
{"version":3,"file":"render-context.js","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,0BAA0B,CAAC;AAKrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAMpE,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAU/B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;4BAEwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;oDACgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;qBAEiB;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;gDAC4C;IAC5C,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAuPpE"}
|
package/dist/runner.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { join, relative, resolve, isAbsolute } from "node:path";
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
|
-
import { MetaRoot } from "@metaobjectsdev/metadata";
|
|
3
|
+
import { MetaRoot, OBJECT_SUBTYPE_VALUE } from "@metaobjectsdev/metadata";
|
|
4
|
+
import { assignEmittedNames } from "./naming/collision-names.js";
|
|
5
|
+
import { isAbstract } from "./instance-artifacts.js";
|
|
4
6
|
import { normalizeConfig, DEFAULT_TARGET_NAME } from "./metaobjects-config.js";
|
|
5
7
|
import { buildPkMap } from "./pk-resolver.js";
|
|
6
8
|
import { buildRelationMap } from "./relation-resolver.js";
|
|
@@ -89,7 +91,38 @@ export async function runGen(opts) {
|
|
|
89
91
|
// 3. Build shared render state once.
|
|
90
92
|
const pkMap = buildPkMap(root);
|
|
91
93
|
const relationMap = buildRelationMap(root);
|
|
92
|
-
|
|
94
|
+
// ADR-0044/#228 — the ENTITY-tier collision domain is the run's EMITTED
|
|
95
|
+
// `object.value` SET (NOT any per-payload closure): value-object module
|
|
96
|
+
// filenames + `packageOf` are per-run/global, so the emitted-name map is built
|
|
97
|
+
// ONCE over every top-level `object.value` that actually produces a file, keyed
|
|
98
|
+
// by `resolutionKey()`. A bare short name unique across the set stays bare
|
|
99
|
+
// (byte-identical to pre-#228 output); a cross-package short-name collision
|
|
100
|
+
// qualifies every member (`AcmeAlphaNote`), and a still-colliding derived name
|
|
101
|
+
// fails loud (ERR_PAYLOAD_NAME_COLLISION, thrown by assignEmittedNames). A
|
|
102
|
+
// NON-emitted abstract value object (abstract + emitAbstractShapes off) produces
|
|
103
|
+
// no file/reference and is excluded — the entity-file generator's own emit gate
|
|
104
|
+
// (`isAbstract && !emitAbstractShapes` ⇒ skip) — so it can't over-qualify a
|
|
105
|
+
// concrete value object that merely shares its bare name in another package.
|
|
106
|
+
const isEmittedValueObject = (o) => o.subType === OBJECT_SUBTYPE_VALUE && (!isAbstract(o) || config.emitAbstractShapes);
|
|
107
|
+
const valueObjectClosure = new Map();
|
|
108
|
+
for (const o of root.objects()) {
|
|
109
|
+
if (isEmittedValueObject(o))
|
|
110
|
+
valueObjectClosure.set(o.resolutionKey(), o);
|
|
111
|
+
}
|
|
112
|
+
const valueObjectNames = assignEmittedNames(valueObjectClosure);
|
|
113
|
+
// `packageOf` keys value objects by their EMITTED name (unique by construction
|
|
114
|
+
// via the backstop) so `valueObjectModuleSpecifier` resolves the right module
|
|
115
|
+
// even when two same-bare-named value objects live in different packages (the
|
|
116
|
+
// #244 misbinding disease). Non-value objects keep their bare name. With no
|
|
117
|
+
// collision, every emitted name equals its bare name, so this map is
|
|
118
|
+
// byte-identical to the pre-#228 `[o.name, o.package]` map.
|
|
119
|
+
const packageOf = new Map();
|
|
120
|
+
for (const o of root.objects()) {
|
|
121
|
+
const key = o.subType === OBJECT_SUBTYPE_VALUE
|
|
122
|
+
? (valueObjectNames.get(o.resolutionKey()) ?? o.name)
|
|
123
|
+
: o.name;
|
|
124
|
+
packageOf.set(key, o.package);
|
|
125
|
+
}
|
|
93
126
|
// Auto-detect: is the OPT-IN Hono routes generator in the active suite? If so,
|
|
94
127
|
// surface it on every generator's ctx.config so api-docs documents the Hono
|
|
95
128
|
// CRUD surface it actually emits (rather than silently omitting it).
|
|
@@ -132,6 +165,7 @@ export async function runGen(opts) {
|
|
|
132
165
|
pkMap,
|
|
133
166
|
relationMap,
|
|
134
167
|
packageOf,
|
|
168
|
+
valueObjectNames,
|
|
135
169
|
selfTarget,
|
|
136
170
|
entityModuleTarget,
|
|
137
171
|
...(config.providedEnumModule !== undefined && { providedEnumModule: config.providedEnumModule }),
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/source-detect.d.ts
CHANGED
|
@@ -7,4 +7,14 @@ import type { MetaObject } from "@metaobjectsdev/metadata";
|
|
|
7
7
|
* transit data — no migration, no ORM table to point at.
|
|
8
8
|
*/
|
|
9
9
|
export declare function hasWritableRdbSource(entity: MetaObject): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* True when the object declares (or inherits via extends — ADR-0039 resolving)
|
|
12
|
+
* at least one source.rdb child of ANY kind (writable OR read-only). Zero
|
|
13
|
+
* sources means "not backed by any store" (loader contract,
|
|
14
|
+
* validate-source-roles: zero sources is allowed, means not persisted) — the
|
|
15
|
+
* DB-artifact tier (queries/routes/api-model) must emit nothing for it, exactly
|
|
16
|
+
* as the table tier already refuses to emit a Drizzle table for it
|
|
17
|
+
* (hasWritableRdbSource, above — this is its any-kind sibling).
|
|
18
|
+
*/
|
|
19
|
+
export declare function hasAnyRdbSource(entity: MetaObject): boolean;
|
|
10
20
|
//# sourceMappingURL=source-detect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-detect.d.ts","sourceRoot":"","sources":["../src/source-detect.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAWhE"}
|
|
1
|
+
{"version":3,"file":"source-detect.d.ts","sourceRoot":"","sources":["../src/source-detect.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAWhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAS3D"}
|
package/dist/source-detect.js
CHANGED
|
@@ -30,4 +30,26 @@ export function hasWritableRdbSource(entity) {
|
|
|
30
30
|
}
|
|
31
31
|
return false;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* True when the object declares (or inherits via extends — ADR-0039 resolving)
|
|
35
|
+
* at least one source.rdb child of ANY kind (writable OR read-only). Zero
|
|
36
|
+
* sources means "not backed by any store" (loader contract,
|
|
37
|
+
* validate-source-roles: zero sources is allowed, means not persisted) — the
|
|
38
|
+
* DB-artifact tier (queries/routes/api-model) must emit nothing for it, exactly
|
|
39
|
+
* as the table tier already refuses to emit a Drizzle table for it
|
|
40
|
+
* (hasWritableRdbSource, above — this is its any-kind sibling).
|
|
41
|
+
*/
|
|
42
|
+
export function hasAnyRdbSource(entity) {
|
|
43
|
+
// ADR-0039: resolving — same rationale as hasWritableRdbSource.
|
|
44
|
+
for (const child of entity.children()) {
|
|
45
|
+
if (child.type !== TYPE_SOURCE)
|
|
46
|
+
continue;
|
|
47
|
+
if (child.subType !== SOURCE_SUBTYPE_RDB)
|
|
48
|
+
continue;
|
|
49
|
+
if (!(child instanceof MetaSource))
|
|
50
|
+
continue;
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
33
55
|
//# sourceMappingURL=source-detect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-detect.js","sourceRoot":"","sources":["../src/source-detect.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,kFAAkF;AAClF,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,8EAA8E;AAC9E,2DAA2D;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAkB;IACrD,kFAAkF;IAClF,gFAAgF;IAChF,uDAAuD;IACvD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACzC,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;YAAE,SAAS;QACnD,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAAE,SAAS;QAC7C,IAAI,KAAK,CAAC,UAAU,EAAE;YAAE,OAAO,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"source-detect.js","sourceRoot":"","sources":["../src/source-detect.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,kFAAkF;AAClF,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,8EAA8E;AAC9E,2DAA2D;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAkB;IACrD,kFAAkF;IAClF,gFAAgF;IAChF,uDAAuD;IACvD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACzC,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;YAAE,SAAS;QACnD,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAAE,SAAS;QAC7C,IAAI,KAAK,CAAC,UAAU,EAAE;YAAE,OAAO,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,gEAAgE;IAChE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACzC,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;YAAE,SAAS;QACnD,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAAE,SAAS;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-schema.d.ts","sourceRoot":"","sources":["../../src/templates/drizzle-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,UAAU,EAAsC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"drizzle-schema.d.ts","sourceRoot":"","sources":["../../src/templates/drizzle-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,UAAU,EAAsC,MAAM,0BAA0B,CAAC;AAQ1F,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQjF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAmJ7E"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// plus the relations() block auto-emitted at the end.
|
|
4
4
|
import { code, imp, joinCode } from "ts-poet";
|
|
5
5
|
import { MetaObject, MetaField, MetaIndex, stripPackage } from "@metaobjectsdev/metadata";
|
|
6
|
-
import { FIELD_SUBTYPE_LONG, IDENTITY_ATTR_FIELDS, IDENTITY_ATTR_GENERATION, GENERATION_INCREMENT, GENERATION_UUID, FIELD_ATTR_AUTO_SET, } from "@metaobjectsdev/metadata";
|
|
7
|
-
import {} from "../render-context.js";
|
|
6
|
+
import { FIELD_SUBTYPE_LONG, IDENTITY_ATTR_FIELDS, IDENTITY_ATTR_GENERATION, GENERATION_INCREMENT, GENERATION_UUID, FIELD_ATTR_AUTO_SET, FIELD_ATTR_OBJECT_REF, } from "@metaobjectsdev/metadata";
|
|
7
|
+
import { fieldDeclaringPackage } from "../render-context.js";
|
|
8
8
|
import { crossEntitySpecifier, valueObjectModuleSpecifier } from "../import-path.js";
|
|
9
9
|
import { mapColumnType } from "../column-mapper.js";
|
|
10
10
|
import { tableNameFromEntity, columnNameFromField } from "../naming.js";
|
|
@@ -349,7 +349,18 @@ forceNullable = false) {
|
|
|
349
349
|
// first."
|
|
350
350
|
// Resolve a VO name → an imported type symbol (shared layout/package/extStyle-aware
|
|
351
351
|
// helper, so the .$type<VO> import matches the field's TS type + Zod schema).
|
|
352
|
-
|
|
352
|
+
// ADR-0044/#228 — resolve the field's @objectRef to the value object's EMITTED
|
|
353
|
+
// name (bare when unique in the run, package-qualified on a cross-package
|
|
354
|
+
// short-name collision), resolved package-locally from the FIELD's declaring
|
|
355
|
+
// package. `name` (the bare dollarTypeRef name) is the byte-identical fallback
|
|
356
|
+
// when the ref doesn't resolve to an emitted value object.
|
|
357
|
+
const voSym = (name) => {
|
|
358
|
+
const refRaw = field.attr(FIELD_ATTR_OBJECT_REF);
|
|
359
|
+
const emitted = typeof refRaw === "string"
|
|
360
|
+
? ctx.resolveValueObjectName(refRaw, fieldDeclaringPackage(field, entityPackage))
|
|
361
|
+
: name;
|
|
362
|
+
return imp(`${emitted}@${valueObjectModuleSpecifier(emitted, ctx.packageOf, entityPackage, ctx.outputLayout, ctx.extStyle)}`);
|
|
363
|
+
};
|
|
353
364
|
let dollarTypeSegment = "";
|
|
354
365
|
if (spec.dollarTypeRef !== undefined) {
|
|
355
366
|
const ref = spec.dollarTypeRef;
|