neoorm 0.8.3 → 0.8.4
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/codegen/column-ts.d.ts +41 -0
- package/dist/codegen/column-ts.d.ts.map +1 -0
- package/dist/codegen/column-ts.js +269 -0
- package/dist/codegen/column-ts.js.map +1 -0
- package/dist/codegen/emit-includes.d.ts.map +1 -1
- package/dist/codegen/emit-includes.js +13 -4
- package/dist/codegen/emit-includes.js.map +1 -1
- package/dist/codegen/emit-models.d.ts +2 -1
- package/dist/codegen/emit-models.d.ts.map +1 -1
- package/dist/codegen/emit-models.js +100 -38
- package/dist/codegen/emit-models.js.map +1 -1
- package/dist/codegen/emit-query-types.d.ts +3 -0
- package/dist/codegen/emit-query-types.d.ts.map +1 -0
- package/dist/codegen/emit-query-types.js +638 -0
- package/dist/codegen/emit-query-types.js.map +1 -0
- package/dist/codegen/generate.d.ts +2 -2
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/codegen/generate.js +12 -32
- package/dist/codegen/generate.js.map +1 -1
- package/dist/runtime/client.d.ts +5 -5
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +6 -6
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schema/relation-types.d.ts +5 -5
- package/dist/schema/relation-types.d.ts.map +1 -1
- package/dist/schema/types.d.ts +3 -3
- package/dist/schema/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Manifest, ManifestColumn, ManifestTable } from "../dialect/types.js";
|
|
2
|
+
import type { ValidationType } from "./validation/types.js";
|
|
3
|
+
export type EnumAlias = {
|
|
4
|
+
name: string;
|
|
5
|
+
values: readonly string[];
|
|
6
|
+
array: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type EnumRegistry = {
|
|
9
|
+
aliasForColumn: (accessor: string, tsName: string) => string | null;
|
|
10
|
+
declarations: string[];
|
|
11
|
+
byName: Map<string, EnumAlias>;
|
|
12
|
+
};
|
|
13
|
+
/** Map validator-neutral JSON/validation IR to a TypeScript type string. */
|
|
14
|
+
export declare function validationTypeToTs(type: ValidationType): string;
|
|
15
|
+
/** Collect hoisted `export type X = ...` enum aliases for enum/enumArray columns. */
|
|
16
|
+
export declare function buildEnumRegistry(manifest: Manifest): EnumRegistry;
|
|
17
|
+
/**
|
|
18
|
+
* Resolved TS type for a manifest column (the `resolvedType` printer).
|
|
19
|
+
* Uses the plugin `columnTsType`, hoisted enum aliases, and JSON validation
|
|
20
|
+
* generics — never the schema builder chain.
|
|
21
|
+
*/
|
|
22
|
+
export declare function columnTsType(col: ManifestColumn, manifest: Manifest, enums?: EnumRegistry | null, tableAccessor?: string): string;
|
|
23
|
+
/** Non-nullable TS type for filter generic params (`StringFilter<PostStatus>`). */
|
|
24
|
+
export declare function columnNonNullTsType(col: ManifestColumn, manifest: Manifest, enums?: EnumRegistry | null, tableAccessor?: string): string;
|
|
25
|
+
/** SQL-name primary key mapped to TS names (empty when the table has no PK). */
|
|
26
|
+
export declare function pkTsNames(table: ManifestTable): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Unique `where` candidates mirroring runtime `resolveUniqueConstraint`:
|
|
29
|
+
* PK group, single unique/primary columns, then unique btree indexes.
|
|
30
|
+
*/
|
|
31
|
+
export declare function uniqueKeyCandidates(table: ManifestTable): string[][];
|
|
32
|
+
/** `timestamps()` / `.defaultNow()` / `.updatedAt()` — ORM-owned, not client-writable. */
|
|
33
|
+
export declare function isManagedTimestamp(col: ManifestColumn): boolean;
|
|
34
|
+
export declare function isJunctionTable(manifest: Manifest, accessor: string): boolean;
|
|
35
|
+
export declare function isJunctionPkColumn(col: ManifestColumn, table: ManifestTable, isJunction: boolean): boolean;
|
|
36
|
+
export declare function isOmittedOnCreate(col: ManifestColumn, table: ManifestTable, isJunction: boolean): boolean;
|
|
37
|
+
export declare function isOmittedOnUpdate(col: ManifestColumn, table: ManifestTable, isJunction: boolean): boolean;
|
|
38
|
+
export declare function isCreateRequired(col: ManifestColumn, table: ManifestTable, isJunction: boolean): boolean;
|
|
39
|
+
export declare function updateScalarTsType(col: ManifestColumn, manifest: Manifest, enums?: EnumRegistry | null, tableAccessor?: string): string;
|
|
40
|
+
export declare function columnByTsNameOrThrow(table: ManifestTable, tsName: string): ManifestColumn;
|
|
41
|
+
//# sourceMappingURL=column-ts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-ts.d.ts","sourceRoot":"","sources":["../../src/codegen/column-ts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,QAAQ,EACR,cAAc,EACd,aAAa,EACb,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAC1B,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACpE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC/B,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAgD/D;AAgBD,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAmDlE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC3B,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,EAC3B,aAAa,CAAC,EAAE,MAAM,GACpB,MAAM,CA+BR;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,EAC3B,aAAa,CAAC,EAAE,MAAM,GACpB,MAAM,CAOR;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,CAQxD;AASD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,EAAE,CA4CpE;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAE/D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,OAAO,GACjB,OAAO,CAET;AAED,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,OAAO,GACjB,OAAO,CAUT;AAED,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,OAAO,GACjB,OAAO,CAKT;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,OAAO,GACjB,OAAO,CAgBT;AAED,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,EAC3B,aAAa,CAAC,EAAE,MAAM,GACpB,MAAM,CAaR;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,GACZ,cAAc,CAQhB"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { findFkReferencedColumn } from "../dialect/fk.js";
|
|
2
|
+
import { getColumnTypeOrThrow } from "../plugins/registry.js";
|
|
3
|
+
import { modelTypeName, pascalCase } from "./manifest-relations.js";
|
|
4
|
+
/** Map validator-neutral JSON/validation IR to a TypeScript type string. */
|
|
5
|
+
export function validationTypeToTs(type) {
|
|
6
|
+
switch (type.kind) {
|
|
7
|
+
case "string":
|
|
8
|
+
return "string";
|
|
9
|
+
case "number":
|
|
10
|
+
return "number";
|
|
11
|
+
case "bigint":
|
|
12
|
+
return "bigint";
|
|
13
|
+
case "boolean":
|
|
14
|
+
return "boolean";
|
|
15
|
+
case "date":
|
|
16
|
+
return "Date";
|
|
17
|
+
case "enum": {
|
|
18
|
+
const union = type.values.map((v) => JSON.stringify(v)).join(" | ");
|
|
19
|
+
return union.length > 0 ? union : "string";
|
|
20
|
+
}
|
|
21
|
+
case "unknown":
|
|
22
|
+
return "unknown";
|
|
23
|
+
case "record": {
|
|
24
|
+
const value = validationTypeToTs(type.value);
|
|
25
|
+
return `Record<string, ${value}>`;
|
|
26
|
+
}
|
|
27
|
+
case "array":
|
|
28
|
+
return `${validationTypeToTs(type.element)}[]`;
|
|
29
|
+
case "object": {
|
|
30
|
+
if (type.fields.length === 0)
|
|
31
|
+
return "Record<string, unknown>";
|
|
32
|
+
const fields = type.fields
|
|
33
|
+
.map((f) => {
|
|
34
|
+
const optional = f.optional ? "?" : "";
|
|
35
|
+
const ts = validationTypeToTs(f.type);
|
|
36
|
+
return `${f.name}${optional}: ${ts}${f.nullable ? " | null" : ""};`;
|
|
37
|
+
})
|
|
38
|
+
.join(" ");
|
|
39
|
+
return `{ ${fields} }`;
|
|
40
|
+
}
|
|
41
|
+
case "union":
|
|
42
|
+
return type.variants.map((v) => validationTypeToTs(v)).join(" | ");
|
|
43
|
+
case "literal":
|
|
44
|
+
return JSON.stringify(type.value);
|
|
45
|
+
case "tuple":
|
|
46
|
+
return `[${type.elements.map((e) => validationTypeToTs(e)).join(", ")}]`;
|
|
47
|
+
case "instance":
|
|
48
|
+
return type.tsName;
|
|
49
|
+
default: {
|
|
50
|
+
const _exhaustive = type;
|
|
51
|
+
return _exhaustive;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function enumValuesOf(col) {
|
|
56
|
+
const values = col.typeOptions?.values;
|
|
57
|
+
if (!values || values.length === 0)
|
|
58
|
+
return null;
|
|
59
|
+
return values;
|
|
60
|
+
}
|
|
61
|
+
function enumAliasSeed(col, modelName) {
|
|
62
|
+
const explicit = col.typeOptions?.name;
|
|
63
|
+
if (explicit !== undefined && explicit.length > 0) {
|
|
64
|
+
return pascalCase(explicit);
|
|
65
|
+
}
|
|
66
|
+
return `${modelName}${pascalCase(col.tsName)}`;
|
|
67
|
+
}
|
|
68
|
+
/** Collect hoisted `export type X = ...` enum aliases for enum/enumArray columns. */
|
|
69
|
+
export function buildEnumRegistry(manifest) {
|
|
70
|
+
const byKey = new Map();
|
|
71
|
+
const byName = new Map();
|
|
72
|
+
const declarations = [];
|
|
73
|
+
const tables = Object.values(manifest.tables).sort((a, b) => a.accessor.localeCompare(b.accessor));
|
|
74
|
+
for (const table of tables) {
|
|
75
|
+
const modelName = modelTypeName(table.accessor);
|
|
76
|
+
for (const col of table.columns) {
|
|
77
|
+
if (col.kind !== "enum" && col.kind !== "enumArray")
|
|
78
|
+
continue;
|
|
79
|
+
const values = enumValuesOf(col);
|
|
80
|
+
if (!values)
|
|
81
|
+
continue;
|
|
82
|
+
const key = `${table.accessor}.${col.tsName}`;
|
|
83
|
+
let name = enumAliasSeed(col, modelName);
|
|
84
|
+
const existing = byName.get(name);
|
|
85
|
+
if (existing) {
|
|
86
|
+
if (existing.array === (col.kind === "enumArray") &&
|
|
87
|
+
JSON.stringify(existing.values) === JSON.stringify(values)) {
|
|
88
|
+
byKey.set(key, name);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
let i = 2;
|
|
92
|
+
while (byName.has(`${name}${i}`))
|
|
93
|
+
i++;
|
|
94
|
+
name = `${name}${i}`;
|
|
95
|
+
}
|
|
96
|
+
const union = values.map((v) => JSON.stringify(v)).join(" | ");
|
|
97
|
+
const decl = col.kind === "enumArray"
|
|
98
|
+
? `export type ${name} = (${union})[];`
|
|
99
|
+
: `export type ${name} = ${union};`;
|
|
100
|
+
byName.set(name, {
|
|
101
|
+
name,
|
|
102
|
+
values,
|
|
103
|
+
array: col.kind === "enumArray",
|
|
104
|
+
});
|
|
105
|
+
byKey.set(key, name);
|
|
106
|
+
declarations.push(decl);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
declarations.sort();
|
|
110
|
+
return {
|
|
111
|
+
aliasForColumn: (accessor, tsName) => byKey.get(`${accessor}.${tsName}`) ?? null,
|
|
112
|
+
declarations,
|
|
113
|
+
byName,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Resolved TS type for a manifest column (the `resolvedType` printer).
|
|
118
|
+
* Uses the plugin `columnTsType`, hoisted enum aliases, and JSON validation
|
|
119
|
+
* generics — never the schema builder chain.
|
|
120
|
+
*/
|
|
121
|
+
export function columnTsType(col, manifest, enums, tableAccessor) {
|
|
122
|
+
if (col.kind === "fk") {
|
|
123
|
+
const referenced = findFkReferencedColumn(col, manifest);
|
|
124
|
+
if (referenced && referenced.kind !== "fk") {
|
|
125
|
+
return columnTsType({ ...referenced, nullable: col.nullable }, manifest, enums, tableAccessor);
|
|
126
|
+
}
|
|
127
|
+
return col.nullable ? "string | null" : "string";
|
|
128
|
+
}
|
|
129
|
+
if ((col.kind === "json" || col.kind === "jsonb") &&
|
|
130
|
+
col.validation !== undefined) {
|
|
131
|
+
const base = validationTypeToTs(col.validation);
|
|
132
|
+
return col.nullable ? `${base} | null` : base;
|
|
133
|
+
}
|
|
134
|
+
if (enums &&
|
|
135
|
+
tableAccessor &&
|
|
136
|
+
(col.kind === "enum" || col.kind === "enumArray")) {
|
|
137
|
+
const alias = enums.aliasForColumn(tableAccessor, col.tsName);
|
|
138
|
+
if (alias) {
|
|
139
|
+
return col.nullable ? `${alias} | null` : alias;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return getColumnTypeOrThrow(col.kind).columnTsType(col);
|
|
143
|
+
}
|
|
144
|
+
/** Non-nullable TS type for filter generic params (`StringFilter<PostStatus>`). */
|
|
145
|
+
export function columnNonNullTsType(col, manifest, enums, tableAccessor) {
|
|
146
|
+
return columnTsType({ ...col, nullable: false }, manifest, enums, tableAccessor);
|
|
147
|
+
}
|
|
148
|
+
/** SQL-name primary key mapped to TS names (empty when the table has no PK). */
|
|
149
|
+
export function pkTsNames(table) {
|
|
150
|
+
const bySql = new Map(table.columns.map((c) => [c.sqlName, c.tsName]));
|
|
151
|
+
const names = [];
|
|
152
|
+
for (const sqlName of table.primaryKey) {
|
|
153
|
+
const tsName = bySql.get(sqlName);
|
|
154
|
+
if (tsName !== undefined)
|
|
155
|
+
names.push(tsName);
|
|
156
|
+
}
|
|
157
|
+
return names;
|
|
158
|
+
}
|
|
159
|
+
function columnByTsName(table, tsName) {
|
|
160
|
+
return table.columns.find((c) => c.tsName === tsName);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Unique `where` candidates mirroring runtime `resolveUniqueConstraint`:
|
|
164
|
+
* PK group, single unique/primary columns, then unique btree indexes.
|
|
165
|
+
*/
|
|
166
|
+
export function uniqueKeyCandidates(table) {
|
|
167
|
+
const candidates = [];
|
|
168
|
+
const pk = pkTsNames(table);
|
|
169
|
+
if (pk.length > 0)
|
|
170
|
+
candidates.push(pk);
|
|
171
|
+
for (const col of table.columns) {
|
|
172
|
+
if (col.unique || col.primary) {
|
|
173
|
+
if (!candidates.some((c) => c.length === 1 && c[0] === col.tsName)) {
|
|
174
|
+
candidates.push([col.tsName]);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const bySql = new Map(table.columns.map((c) => [c.sqlName, c.tsName]));
|
|
179
|
+
for (const index of table.indexes) {
|
|
180
|
+
if (!index.unique)
|
|
181
|
+
continue;
|
|
182
|
+
if (index.using && index.using !== "btree")
|
|
183
|
+
continue;
|
|
184
|
+
if (index.keys?.some((key) => key.expr))
|
|
185
|
+
continue;
|
|
186
|
+
const tsNames = [];
|
|
187
|
+
let ok = true;
|
|
188
|
+
for (const sqlName of index.columns) {
|
|
189
|
+
const tsName = bySql.get(sqlName);
|
|
190
|
+
if (tsName === undefined) {
|
|
191
|
+
ok = false;
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
tsNames.push(tsName);
|
|
195
|
+
}
|
|
196
|
+
if (!ok || tsNames.length === 0)
|
|
197
|
+
continue;
|
|
198
|
+
if (candidates.some((c) => c.length === tsNames.length &&
|
|
199
|
+
c.every((name) => tsNames.includes(name)))) {
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
candidates.push(tsNames);
|
|
203
|
+
}
|
|
204
|
+
return candidates;
|
|
205
|
+
}
|
|
206
|
+
/** `timestamps()` / `.defaultNow()` / `.updatedAt()` — ORM-owned, not client-writable. */
|
|
207
|
+
export function isManagedTimestamp(col) {
|
|
208
|
+
return col.defaultNow || col.updatedAt === true;
|
|
209
|
+
}
|
|
210
|
+
export function isJunctionTable(manifest, accessor) {
|
|
211
|
+
return manifest.manyToMany.some((m) => m.throughAccessor === accessor);
|
|
212
|
+
}
|
|
213
|
+
export function isJunctionPkColumn(col, table, isJunction) {
|
|
214
|
+
return isJunction && table.primaryKey.includes(col.sqlName);
|
|
215
|
+
}
|
|
216
|
+
export function isOmittedOnCreate(col, table, isJunction) {
|
|
217
|
+
if (isJunctionPkColumn(col, table, isJunction)) {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
return (col.primary ||
|
|
221
|
+
col.generated === true ||
|
|
222
|
+
col.kind === "serial" ||
|
|
223
|
+
isManagedTimestamp(col));
|
|
224
|
+
}
|
|
225
|
+
export function isOmittedOnUpdate(col, table, isJunction) {
|
|
226
|
+
if (isJunctionPkColumn(col, table, isJunction)) {
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
return col.primary || isManagedTimestamp(col);
|
|
230
|
+
}
|
|
231
|
+
export function isCreateRequired(col, table, isJunction) {
|
|
232
|
+
if (isOmittedOnCreate(col, table, isJunction)) {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
// FK scalars are satisfied by relation writes (`author: { connect }`),
|
|
236
|
+
// mirroring schema-driven `IsRequired` which is never true for FKs.
|
|
237
|
+
if (col.kind === "fk") {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
if (col.nullable) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
if (col.defaultNow || col.defaultValue !== undefined) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
export function updateScalarTsType(col, manifest, enums, tableAccessor) {
|
|
249
|
+
const base = columnTsType(col, manifest, enums, tableAccessor);
|
|
250
|
+
const nonNull = columnNonNullTsType(col, manifest, enums, tableAccessor);
|
|
251
|
+
switch (col.kind) {
|
|
252
|
+
case "int":
|
|
253
|
+
case "serial":
|
|
254
|
+
case "real":
|
|
255
|
+
case "double":
|
|
256
|
+
case "bigint":
|
|
257
|
+
return `${base} | { increment?: ${nonNull}; decrement?: ${nonNull}; multiply?: ${nonNull}; set?: ${base} }`;
|
|
258
|
+
default:
|
|
259
|
+
return `${base} | { set?: ${base} }`;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
export function columnByTsNameOrThrow(table, tsName) {
|
|
263
|
+
const col = columnByTsName(table, tsName);
|
|
264
|
+
if (!col) {
|
|
265
|
+
throw new Error(`Column "${tsName}" not found on table "${table.accessor}"`);
|
|
266
|
+
}
|
|
267
|
+
return col;
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=column-ts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-ts.js","sourceRoot":"","sources":["../../src/codegen/column-ts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-includes.d.ts","sourceRoot":"","sources":["../../src/codegen/emit-includes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,QAAQ,EAIR,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"emit-includes.d.ts","sourceRoot":"","sources":["../../src/codegen/emit-includes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,QAAQ,EAIR,MAAM,qBAAqB,CAAC;AA8E7B,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAsCzD"}
|
|
@@ -22,11 +22,12 @@ function emitRelationIncludeType(manifest, tableAccessor, relation) {
|
|
|
22
22
|
const target = manifest.tables[relation.targetAccessor];
|
|
23
23
|
const columns = target?.columns ?? [];
|
|
24
24
|
const nestedWith = `${modelTypeName(relation.targetAccessor)}With`;
|
|
25
|
+
const targetWhere = `${modelTypeName(relation.targetAccessor)}Where`;
|
|
25
26
|
return `export type ${typeName} =
|
|
26
27
|
| boolean
|
|
27
28
|
| {
|
|
28
29
|
select?: ${selectType(columns)};
|
|
29
|
-
where?:
|
|
30
|
+
where?: ${targetWhere};
|
|
30
31
|
orderBy?: ${orderByType(columns)};
|
|
31
32
|
take?: number;
|
|
32
33
|
skip?: number;
|
|
@@ -48,18 +49,25 @@ function emitTableWithType(manifest, table) {
|
|
|
48
49
|
.join("\n");
|
|
49
50
|
const countField = manyRelations.length > 0
|
|
50
51
|
? `\n _count?: {\n${manyRelations
|
|
51
|
-
.map((rel) =>
|
|
52
|
+
.map((rel) => {
|
|
53
|
+
const targetWhere = `${modelTypeName(rel.targetAccessor)}Where`;
|
|
54
|
+
return ` ${rel.name}?: true | { where?: ${targetWhere} };`;
|
|
55
|
+
})
|
|
52
56
|
.join("\n")}\n };`
|
|
53
57
|
: "";
|
|
54
58
|
return `export type ${typeName} = {\n${fields}${countField}\n};`;
|
|
55
59
|
}
|
|
56
60
|
export function emitIncludesTs(manifest) {
|
|
61
|
+
const tables = Object.values(manifest.tables).sort((a, b) => a.accessor.localeCompare(b.accessor));
|
|
62
|
+
const withNames = tables.map((t) => `${modelTypeName(t.accessor)}With`);
|
|
63
|
+
const whereNames = tables.map((t) => `${modelTypeName(t.accessor)}Where`);
|
|
57
64
|
const lines = [
|
|
58
65
|
"// Auto-generated by neoorm generate — do not edit",
|
|
59
|
-
`import type {
|
|
66
|
+
`import type { ${whereNames.join(", ")} } from "./query-types.js";`,
|
|
67
|
+
"",
|
|
68
|
+
`type OrderDirection = "asc" | "desc";`,
|
|
60
69
|
"",
|
|
61
70
|
];
|
|
62
|
-
const tables = Object.values(manifest.tables).sort((a, b) => a.accessor.localeCompare(b.accessor));
|
|
63
71
|
for (const table of tables) {
|
|
64
72
|
for (const rel of effectiveRelations(manifest, table)) {
|
|
65
73
|
lines.push(emitRelationIncludeType(manifest, table.accessor, rel));
|
|
@@ -77,6 +85,7 @@ export function emitIncludesTs(manifest) {
|
|
|
77
85
|
lines.push(includeMapEntries);
|
|
78
86
|
lines.push(`};`);
|
|
79
87
|
lines.push("");
|
|
88
|
+
void withNames;
|
|
80
89
|
return lines.join("\n");
|
|
81
90
|
}
|
|
82
91
|
//# sourceMappingURL=emit-includes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-includes.js","sourceRoot":"","sources":["../../src/codegen/emit-includes.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,kBAAkB,EAClB,aAAa,EACb,UAAU,GACV,MAAM,yBAAyB,CAAC;AAEjC,SAAS,WAAW,CAAC,OAAyB;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,UAAU,CAAC,OAAyB;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,aAAa,KAAK,WAAW,YAAY,IAAI,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,OAAyB;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,uBAAuB,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,mBAAmB,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,KAAK,MAAM,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,uBAAuB,CAC/B,QAAkB,EAClB,aAAqB,EACrB,QAA0B;IAE1B,MAAM,QAAQ,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;IACtF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"emit-includes.js","sourceRoot":"","sources":["../../src/codegen/emit-includes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type { Manifest } from "../dialect/types.js";
|
|
1
|
+
import type { Manifest, ManifestTable } from "../dialect/types.js";
|
|
2
|
+
export declare function relationResultTypeFor(manifest: Manifest, table: ManifestTable, relationName: string): string;
|
|
2
3
|
export declare function emitModelsTs(manifest: Manifest, packageImportPath?: string): string;
|
|
3
4
|
//# sourceMappingURL=emit-models.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-models.d.ts","sourceRoot":"","sources":["../../src/codegen/emit-models.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"emit-models.d.ts","sourceRoot":"","sources":["../../src/codegen/emit-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,QAAQ,EAER,aAAa,EACb,MAAM,qBAAqB,CAAC;AA0K7B,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,MAAM,GAClB,MAAM,CAUR;AAED,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,SAAW,GAC1B,MAAM,CAqHR"}
|
|
@@ -1,19 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getColumnTypeOrThrow } from "../plugins/registry.js";
|
|
1
|
+
import { buildEnumRegistry, columnTsType, } from "./column-ts.js";
|
|
3
2
|
import { effectiveRelations, modelTypeName } from "./manifest-relations.js";
|
|
4
|
-
function columnTsType(col, manifest) {
|
|
5
|
-
if (col.kind === "fk") {
|
|
6
|
-
const referenced = findFkReferencedColumn(col, manifest);
|
|
7
|
-
if (referenced && referenced.kind !== "fk") {
|
|
8
|
-
return getColumnTypeOrThrow(referenced.kind).columnTsType({
|
|
9
|
-
...referenced,
|
|
10
|
-
nullable: col.nullable,
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
return col.nullable ? "string | null" : "string";
|
|
14
|
-
}
|
|
15
|
-
return getColumnTypeOrThrow(col.kind).columnTsType(col);
|
|
16
|
-
}
|
|
17
3
|
function emitGeoJsonTypes(manifest) {
|
|
18
4
|
const hasPostgis = (manifest.extensions ?? []).includes("postgis");
|
|
19
5
|
if (!hasPostgis)
|
|
@@ -33,12 +19,12 @@ function emitGeoJsonTypes(manifest) {
|
|
|
33
19
|
"",
|
|
34
20
|
];
|
|
35
21
|
}
|
|
36
|
-
function emitBaseModel(manifest, table) {
|
|
22
|
+
function emitBaseModel(manifest, table, enums) {
|
|
37
23
|
const name = modelTypeName(table.accessor);
|
|
38
24
|
const fields = table.columns
|
|
39
|
-
.map((col) => ` ${col.tsName}: ${columnTsType(col, manifest)};`)
|
|
25
|
+
.map((col) => ` ${col.tsName}: ${columnTsType(col, manifest, enums, table.accessor)};`)
|
|
40
26
|
.join("\n");
|
|
41
|
-
return `export
|
|
27
|
+
return `export interface ${name} {\n${fields}\n}`;
|
|
42
28
|
}
|
|
43
29
|
function hiddenKeysType(table) {
|
|
44
30
|
const hidden = table.columns
|
|
@@ -75,30 +61,88 @@ function emitPayloadType(manifest, table) {
|
|
|
75
61
|
}
|
|
76
62
|
return `export type ${payloadName} = StripCapablePayload<${rowType}, ${hiddenType}>;`;
|
|
77
63
|
}
|
|
78
|
-
function
|
|
79
|
-
|
|
80
|
-
const withName = `${modelTypeName(table.accessor)}With`;
|
|
81
|
-
const includesName = `${baseName}WithIncludes`;
|
|
82
|
-
const relations = effectiveRelations(manifest, table);
|
|
83
|
-
if (relations.length === 0) {
|
|
84
|
-
return `export type ${includesName}<W extends ${withName} | undefined = undefined> = ${baseName};`;
|
|
85
|
-
}
|
|
86
|
-
const includeParts = relations
|
|
87
|
-
.map((rel) => {
|
|
64
|
+
function includePartsFor(manifest, table) {
|
|
65
|
+
return effectiveRelations(manifest, table).map((rel) => {
|
|
88
66
|
const target = manifest.tables[rel.targetAccessor];
|
|
89
67
|
const targetName = target
|
|
90
68
|
? modelTypeName(target.accessor)
|
|
91
69
|
: modelTypeName(rel.targetAccessor);
|
|
92
70
|
const cardinality = rel.cardinality === "many" ? "many" : "one";
|
|
93
|
-
return `
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
71
|
+
return `IncludeRelation<W, "${rel.name}", "${cardinality}", ${targetName}>`;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function emitRelationsType(manifest, table) {
|
|
75
|
+
const baseName = modelTypeName(table.accessor);
|
|
76
|
+
const withName = `${modelTypeName(table.accessor)}With`;
|
|
77
|
+
const includeParts = includePartsFor(manifest, table);
|
|
78
|
+
if (includeParts.length === 0) {
|
|
79
|
+
return `export type ${baseName}Relations<W extends ${withName}> = IncludeCount<W>;`;
|
|
80
|
+
}
|
|
81
|
+
const joined = includeParts.join(" &\n ");
|
|
82
|
+
return `export type ${baseName}Relations<W extends ${withName}> =\n ${joined} &\n IncludeCount<W>;`;
|
|
83
|
+
}
|
|
84
|
+
function emitWithIncludesType(table) {
|
|
85
|
+
const baseName = modelTypeName(table.accessor);
|
|
86
|
+
const withName = `${modelTypeName(table.accessor)}With`;
|
|
87
|
+
const includesName = `${baseName}WithIncludes`;
|
|
88
|
+
const relationsName = `${baseName}Relations`;
|
|
89
|
+
return `export type ${includesName}<W extends ${withName} | undefined = undefined> = [W] extends [undefined] ? ${baseName} : ${baseName} & ${relationsName}<Extract<W, ${withName}>>;`;
|
|
90
|
+
}
|
|
91
|
+
function emitHiddenKeysType(table) {
|
|
92
|
+
const baseName = modelTypeName(table.accessor);
|
|
93
|
+
return `export type ${baseName}HiddenKeys = ${hiddenKeysType(table)};`;
|
|
94
|
+
}
|
|
95
|
+
function emitFindResultType(table) {
|
|
96
|
+
const baseName = modelTypeName(table.accessor);
|
|
97
|
+
const withName = `${baseName}With`;
|
|
98
|
+
const hiddenName = `${baseName}HiddenKeys`;
|
|
99
|
+
const relationsName = `${baseName}Relations`;
|
|
100
|
+
return `export type ${baseName}FindResult<W extends ${withName} | undefined = undefined, S = undefined, O = undefined, IH = undefined> = [W] extends [undefined]
|
|
101
|
+
? [S] extends [undefined]
|
|
102
|
+
? [O] extends [undefined]
|
|
103
|
+
? IH extends true
|
|
104
|
+
? ${baseName}
|
|
105
|
+
: Omit<${baseName}, ${hiddenName}>
|
|
106
|
+
: Omit<${baseName}, (SelectKeys<O> & keyof ${baseName}) | (IH extends true ? never : ${hiddenName})>
|
|
107
|
+
: Pick<${baseName}, SelectKeys<S> & keyof ${baseName}>
|
|
108
|
+
: ([S] extends [undefined]
|
|
109
|
+
? [O] extends [undefined]
|
|
110
|
+
? IH extends true
|
|
111
|
+
? ${baseName}
|
|
112
|
+
: Omit<${baseName}, ${hiddenName}>
|
|
113
|
+
: Omit<${baseName}, (SelectKeys<O> & keyof ${baseName}) | (IH extends true ? never : ${hiddenName})>
|
|
114
|
+
: Pick<${baseName}, SelectKeys<S> & keyof ${baseName}>) & ${relationsName}<Extract<W, ${withName}>>;`;
|
|
115
|
+
}
|
|
116
|
+
function emitCreateResultType(table) {
|
|
117
|
+
const baseName = modelTypeName(table.accessor);
|
|
118
|
+
const withName = `${baseName}With`;
|
|
119
|
+
const relationsName = `${baseName}Relations`;
|
|
120
|
+
return `export type ${baseName}CreateResult<W extends ${withName}> = ${baseName} & ${relationsName}<W>;`;
|
|
121
|
+
}
|
|
122
|
+
function emitMutationResultType(table) {
|
|
123
|
+
const baseName = modelTypeName(table.accessor);
|
|
124
|
+
const withName = `${baseName}With`;
|
|
125
|
+
const relationsName = `${baseName}Relations`;
|
|
126
|
+
return `export type ${baseName}MutationResult<W extends ${withName}> = ${baseName} & ${relationsName}<W>;`;
|
|
127
|
+
}
|
|
128
|
+
function emitRelationListType(rel, targetModelName) {
|
|
129
|
+
return rel.cardinality === "many"
|
|
130
|
+
? `${targetModelName}[]`
|
|
131
|
+
: `${targetModelName} | null`;
|
|
132
|
+
}
|
|
133
|
+
export function relationResultTypeFor(manifest, table, relationName) {
|
|
134
|
+
const rel = effectiveRelations(manifest, table).find((r) => r.name === relationName);
|
|
135
|
+
if (!rel)
|
|
136
|
+
return "Record<string, unknown>";
|
|
137
|
+
const target = manifest.tables[rel.targetAccessor];
|
|
138
|
+
const targetName = target
|
|
139
|
+
? modelTypeName(target.accessor)
|
|
140
|
+
: modelTypeName(rel.targetAccessor);
|
|
141
|
+
return emitRelationListType(rel, targetName);
|
|
99
142
|
}
|
|
100
143
|
export function emitModelsTs(manifest, packageImportPath = "neoorm") {
|
|
101
144
|
const tables = Object.values(manifest.tables).sort((a, b) => a.accessor.localeCompare(b.accessor));
|
|
145
|
+
const enums = buildEnumRegistry(manifest);
|
|
102
146
|
const withTypeNames = tables.map((t) => `${modelTypeName(t.accessor)}With`);
|
|
103
147
|
const lines = [
|
|
104
148
|
"// Auto-generated by neoorm generate — do not edit",
|
|
@@ -106,22 +150,28 @@ export function emitModelsTs(manifest, packageImportPath = "neoorm") {
|
|
|
106
150
|
`import type { ${withTypeNames.join(", ")} } from "./includes.js";`,
|
|
107
151
|
"",
|
|
108
152
|
...emitGeoJsonTypes(manifest),
|
|
153
|
+
...enums.declarations.flatMap((decl) => [decl, ""]),
|
|
109
154
|
"type SelectKeys<S> = S extends readonly (infer K extends PropertyKey)[]",
|
|
110
155
|
" ? K",
|
|
111
156
|
" : S extends Record<string, unknown>",
|
|
112
157
|
" ? { [K in keyof S]: S[K] extends true ? K : never }[keyof S]",
|
|
113
158
|
" : never;",
|
|
114
159
|
"",
|
|
115
|
-
"type ApplySelect<Row extends
|
|
160
|
+
"type ApplySelect<Row extends object, S> = Pick<",
|
|
116
161
|
" Row,",
|
|
117
162
|
" SelectKeys<S> & keyof Row",
|
|
118
163
|
">;",
|
|
119
164
|
"",
|
|
165
|
+
"type ApplyOmit<Row extends object, O> = Omit<",
|
|
166
|
+
" Row,",
|
|
167
|
+
" SelectKeys<O> & keyof Row",
|
|
168
|
+
">;",
|
|
169
|
+
"",
|
|
120
170
|
"type IncludeRelation<",
|
|
121
171
|
" W,",
|
|
122
172
|
" Key extends PropertyKey,",
|
|
123
173
|
' Cardinality extends "one" | "many",',
|
|
124
|
-
" TModel extends
|
|
174
|
+
" TModel extends object,",
|
|
125
175
|
"> = W extends { [K in Key]?: infer Inc }",
|
|
126
176
|
" ? Inc extends { select: infer S }",
|
|
127
177
|
' ? Cardinality extends "many"',
|
|
@@ -140,7 +190,7 @@ export function emitModelsTs(manifest, packageImportPath = "neoorm") {
|
|
|
140
190
|
"",
|
|
141
191
|
];
|
|
142
192
|
for (const table of tables) {
|
|
143
|
-
lines.push(emitBaseModel(manifest, table));
|
|
193
|
+
lines.push(emitBaseModel(manifest, table, enums));
|
|
144
194
|
lines.push("");
|
|
145
195
|
}
|
|
146
196
|
for (const table of tables) {
|
|
@@ -148,7 +198,19 @@ export function emitModelsTs(manifest, packageImportPath = "neoorm") {
|
|
|
148
198
|
lines.push("");
|
|
149
199
|
}
|
|
150
200
|
for (const table of tables) {
|
|
151
|
-
lines.push(emitWithIncludesType(
|
|
201
|
+
lines.push(emitWithIncludesType(table));
|
|
202
|
+
lines.push("");
|
|
203
|
+
}
|
|
204
|
+
for (const table of tables) {
|
|
205
|
+
lines.push(emitHiddenKeysType(table));
|
|
206
|
+
lines.push("");
|
|
207
|
+
lines.push(emitRelationsType(manifest, table));
|
|
208
|
+
lines.push("");
|
|
209
|
+
lines.push(emitFindResultType(table));
|
|
210
|
+
lines.push("");
|
|
211
|
+
lines.push(emitCreateResultType(table));
|
|
212
|
+
lines.push("");
|
|
213
|
+
lines.push(emitMutationResultType(table));
|
|
152
214
|
lines.push("");
|
|
153
215
|
}
|
|
154
216
|
const modelEntries = tables
|