on-zero 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/generate-helpers.cjs +309 -0
- package/dist/cjs/generate-helpers.native.js +451 -0
- package/dist/cjs/generate-helpers.native.js.map +1 -0
- package/dist/cjs/generate-lite.cjs +150 -0
- package/dist/cjs/generate-lite.native.js +269 -0
- package/dist/cjs/generate-lite.native.js.map +1 -0
- package/dist/cjs/generate-lite.test.cjs +229 -0
- package/dist/cjs/generate-lite.test.native.js +234 -0
- package/dist/cjs/generate-lite.test.native.js.map +1 -0
- package/dist/cjs/generate.cjs +16 -285
- package/dist/cjs/generate.native.js +18 -432
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/esm/generate-helpers.mjs +272 -0
- package/dist/esm/generate-helpers.mjs.map +1 -0
- package/dist/esm/generate-helpers.native.js +411 -0
- package/dist/esm/generate-helpers.native.js.map +1 -0
- package/dist/esm/generate-lite.mjs +127 -0
- package/dist/esm/generate-lite.mjs.map +1 -0
- package/dist/esm/generate-lite.native.js +243 -0
- package/dist/esm/generate-lite.native.js.map +1 -0
- package/dist/esm/generate-lite.test.mjs +230 -0
- package/dist/esm/generate-lite.test.mjs.map +1 -0
- package/dist/esm/generate-lite.test.native.js +232 -0
- package/dist/esm/generate-lite.test.native.js.map +1 -0
- package/dist/esm/generate.mjs +6 -275
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +9 -423
- package/dist/esm/generate.native.js.map +1 -1
- package/package.json +7 -2
- package/src/generate-helpers.ts +440 -0
- package/src/generate-lite.test.ts +310 -0
- package/src/generate-lite.ts +333 -0
- package/src/generate.ts +23 -415
- package/types/generate-helpers.d.ts +42 -0
- package/types/generate-helpers.d.ts.map +1 -0
- package/types/generate-lite.d.ts +40 -0
- package/types/generate-lite.d.ts.map +1 -0
- package/types/generate-lite.test.d.ts +2 -0
- package/types/generate-lite.test.d.ts.map +1 -0
- package/types/generate.d.ts +1 -6
- package/types/generate.d.ts.map +1 -1
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
function shouldSkipObjectKey(name) {
|
|
2
|
+
return name.startsWith("__@");
|
|
3
|
+
}
|
|
4
|
+
function formatObjectKey(name) {
|
|
5
|
+
return /^[$A-Z_a-z][$\w]*$/.test(name) ? name : JSON.stringify(name);
|
|
6
|
+
}
|
|
7
|
+
function getModelImportName(name) {
|
|
8
|
+
return name === "user" ? "userPublic" : name;
|
|
9
|
+
}
|
|
10
|
+
function parseTypeString(type) {
|
|
11
|
+
if (type = type.trim(), type === "string") return "v.string()";
|
|
12
|
+
if (type === "number") return "v.number()";
|
|
13
|
+
if (type === "boolean") return "v.boolean()";
|
|
14
|
+
if (type === "void" || type === "undefined") return "v.void_()";
|
|
15
|
+
if (type === "null") return "v.null_()";
|
|
16
|
+
if (type === "any" || type === "unknown") return "v.unknown()";
|
|
17
|
+
if (type.startsWith("{") && type.endsWith("}")) {
|
|
18
|
+
var inner = type.slice(1, -1).trim();
|
|
19
|
+
if (!inner) return "v.object({})";
|
|
20
|
+
var normalized = inner.replace(/\n/g, "; ").replace(/;\s*;/g, ";"),
|
|
21
|
+
entries = [],
|
|
22
|
+
_iteratorNormalCompletion = !0,
|
|
23
|
+
_didIteratorError = !1,
|
|
24
|
+
_iteratorError = void 0;
|
|
25
|
+
try {
|
|
26
|
+
for (var _iterator = normalized.split(";")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
27
|
+
var part = _step.value,
|
|
28
|
+
trimmed = part.trim().replace(/,\s*$/, "");
|
|
29
|
+
if (trimmed) {
|
|
30
|
+
var match = trimmed.match(/^(?:readonly\s+)?(\w+)(\?)?:\s*(.+)$/);
|
|
31
|
+
if (match) {
|
|
32
|
+
var [, name, opt, typeStr] = match,
|
|
33
|
+
parsed = parseTypeString(typeStr.trim());
|
|
34
|
+
if (!parsed) return null;
|
|
35
|
+
var val = parsed;
|
|
36
|
+
opt && (val = `v.optional(${val})`), entries.push(`${formatObjectKey(name)}: ${val}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
} catch (err) {
|
|
41
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
42
|
+
} finally {
|
|
43
|
+
try {
|
|
44
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
45
|
+
} finally {
|
|
46
|
+
if (_didIteratorError) throw _iteratorError;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return entries.length === 0 ? "v.object({})" : `v.object({
|
|
50
|
+
${entries.join(`,
|
|
51
|
+
`)},
|
|
52
|
+
})`;
|
|
53
|
+
}
|
|
54
|
+
if (type.endsWith("[]")) {
|
|
55
|
+
var inner1 = parseTypeString(type.slice(0, -2).trim());
|
|
56
|
+
return inner1 ? `v.array(${inner1})` : null;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
function generateModelsFile(modelNames, modelsDirName) {
|
|
61
|
+
var sorted = [...modelNames].sort(),
|
|
62
|
+
imports = sorted.map(function (name) {
|
|
63
|
+
return `import * as ${getModelImportName(name)} from '../${modelsDirName}/${name}'`;
|
|
64
|
+
}).join(`
|
|
65
|
+
`),
|
|
66
|
+
sortedByImportName = [...sorted].sort(function (a, b) {
|
|
67
|
+
return getModelImportName(a).localeCompare(getModelImportName(b));
|
|
68
|
+
}),
|
|
69
|
+
modelsObj = `export const models = {
|
|
70
|
+
${sortedByImportName.map(function (name) {
|
|
71
|
+
return ` ${getModelImportName(name)},`;
|
|
72
|
+
}).join(`
|
|
73
|
+
`)}
|
|
74
|
+
}`;
|
|
75
|
+
return `// auto-generated by: on-zero generate
|
|
76
|
+
${imports}
|
|
77
|
+
|
|
78
|
+
${modelsObj}
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
81
|
+
function generateTypesFile(modelNames) {
|
|
82
|
+
var sorted = [...modelNames].sort(),
|
|
83
|
+
typeExports = sorted.map(function (name) {
|
|
84
|
+
var pascalName = name.charAt(0).toUpperCase() + name.slice(1),
|
|
85
|
+
schemaName = getModelImportName(name);
|
|
86
|
+
return `export type ${pascalName} = TableInsertRow<typeof schema.${schemaName}>
|
|
87
|
+
export type ${pascalName}Update = TableUpdateRow<typeof schema.${schemaName}>`;
|
|
88
|
+
}).join(`
|
|
89
|
+
|
|
90
|
+
`);
|
|
91
|
+
return `import type { TableInsertRow, TableUpdateRow } from 'on-zero'
|
|
92
|
+
import type * as schema from './tables'
|
|
93
|
+
|
|
94
|
+
${typeExports}
|
|
95
|
+
`;
|
|
96
|
+
}
|
|
97
|
+
function generateTablesFile(modelNames, modelsDirName) {
|
|
98
|
+
var sorted = [...modelNames].sort(),
|
|
99
|
+
exports = sorted.map(function (name) {
|
|
100
|
+
return `export { schema as ${getModelImportName(name)} } from '../${modelsDirName}/${name}'`;
|
|
101
|
+
}).join(`
|
|
102
|
+
`);
|
|
103
|
+
return `// auto-generated by: on-zero generate
|
|
104
|
+
|
|
105
|
+
${exports}
|
|
106
|
+
`;
|
|
107
|
+
}
|
|
108
|
+
function generateReadmeFile() {
|
|
109
|
+
return `# generated
|
|
110
|
+
|
|
111
|
+
this folder is auto-generated by on-zero. do not edit files here directly.
|
|
112
|
+
|
|
113
|
+
## what's generated
|
|
114
|
+
|
|
115
|
+
- \`models.ts\` - exports all models from ../models
|
|
116
|
+
- \`types.ts\` - typescript types derived from table schemas
|
|
117
|
+
- \`tables.ts\` - exports table schemas for type inference
|
|
118
|
+
- \`groupedQueries.ts\` - namespaced query re-exports for client setup
|
|
119
|
+
- \`syncedQueries.ts\` - namespaced syncedQuery wrappers for server setup
|
|
120
|
+
- \`syncedMutations.ts\` - valibot validators for mutation args (server auto-validation)
|
|
121
|
+
|
|
122
|
+
## usage guidelines
|
|
123
|
+
|
|
124
|
+
**do not import generated files outside of the data folder.**
|
|
125
|
+
|
|
126
|
+
### queries
|
|
127
|
+
|
|
128
|
+
write your queries as plain functions in \`../queries/\` and import them directly:
|
|
129
|
+
|
|
130
|
+
\`\`\`ts
|
|
131
|
+
// \u2705 good - import from queries
|
|
132
|
+
import { channelMessages } from '~/data/queries/message'
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
the generated query files are only used internally by zero client/server setup.
|
|
136
|
+
|
|
137
|
+
### types
|
|
138
|
+
|
|
139
|
+
you can import types from this folder, but prefer re-exporting from \`../types.ts\`:
|
|
140
|
+
|
|
141
|
+
\`\`\`ts
|
|
142
|
+
// \u274C okay but not preferred
|
|
143
|
+
import type { Message } from '~/data/generated/types'
|
|
144
|
+
|
|
145
|
+
// \u2705 better - re-export from types.ts
|
|
146
|
+
import type { Message } from '~/data/types'
|
|
147
|
+
\`\`\`
|
|
148
|
+
|
|
149
|
+
## regeneration
|
|
150
|
+
|
|
151
|
+
files are regenerated when you run:
|
|
152
|
+
|
|
153
|
+
\`\`\`bash
|
|
154
|
+
bun on-zero generate
|
|
155
|
+
\`\`\`
|
|
156
|
+
|
|
157
|
+
or in watch mode:
|
|
158
|
+
|
|
159
|
+
\`\`\`bash
|
|
160
|
+
bun on-zero generate --watch
|
|
161
|
+
\`\`\`
|
|
162
|
+
|
|
163
|
+
## more info
|
|
164
|
+
|
|
165
|
+
see the [on-zero readme](./node_modules/on-zero/README.md) for full documentation.
|
|
166
|
+
`;
|
|
167
|
+
}
|
|
168
|
+
function generateGroupedQueriesFile(queries) {
|
|
169
|
+
var sortedFiles = [...new Set(queries.map(function (q) {
|
|
170
|
+
return q.sourceFile;
|
|
171
|
+
}))].sort(),
|
|
172
|
+
exports = sortedFiles.map(function (file) {
|
|
173
|
+
return `export * as ${file} from '../queries/${file}'`;
|
|
174
|
+
}).join(`
|
|
175
|
+
`);
|
|
176
|
+
return `/**
|
|
177
|
+
* auto-generated by: on-zero generate
|
|
178
|
+
*
|
|
179
|
+
* grouped query re-exports for minification-safe query identity.
|
|
180
|
+
* this file re-exports all query modules - while this breaks tree-shaking,
|
|
181
|
+
* queries are typically small and few in number even in larger apps.
|
|
182
|
+
*/
|
|
183
|
+
${exports}
|
|
184
|
+
`;
|
|
185
|
+
}
|
|
186
|
+
function generateSyncedQueriesFile(queries) {
|
|
187
|
+
var queryByFile = /* @__PURE__ */new Map(),
|
|
188
|
+
_iteratorNormalCompletion = !0,
|
|
189
|
+
_didIteratorError = !1,
|
|
190
|
+
_iteratorError = void 0;
|
|
191
|
+
try {
|
|
192
|
+
for (var _iterator = queries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
193
|
+
var q = _step.value;
|
|
194
|
+
queryByFile.has(q.sourceFile) || queryByFile.set(q.sourceFile, []), queryByFile.get(q.sourceFile).push(q);
|
|
195
|
+
}
|
|
196
|
+
} catch (err) {
|
|
197
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
198
|
+
} finally {
|
|
199
|
+
try {
|
|
200
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
201
|
+
} finally {
|
|
202
|
+
if (_didIteratorError) throw _iteratorError;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
var sortedFiles = Array.from(queryByFile.keys()).sort(),
|
|
206
|
+
imports = `// auto-generated by: on-zero generate
|
|
207
|
+
// server-side query definitions with validators
|
|
208
|
+
import { defineQuery, defineQueries } from '@rocicorp/zero'
|
|
209
|
+
import * as v from 'valibot'
|
|
210
|
+
import * as Queries from './groupedQueries'
|
|
211
|
+
`,
|
|
212
|
+
namespaceDefs = sortedFiles.map(function (file) {
|
|
213
|
+
var fileQueries = queryByFile.get(file).sort(function (a, b) {
|
|
214
|
+
return a.name.localeCompare(b.name);
|
|
215
|
+
}),
|
|
216
|
+
queryDefs = fileQueries.map(function (q2) {
|
|
217
|
+
var validatorDef = q2.valibotCode.trim();
|
|
218
|
+
if (q2.params === "void" || !validatorDef) return ` ${q2.name}: defineQuery(() => Queries.${file}.${q2.name}()),`;
|
|
219
|
+
var indentedValidator = validatorDef.split(`
|
|
220
|
+
`).map(function (line, i) {
|
|
221
|
+
return i === 0 ? line : ` ${line}`;
|
|
222
|
+
}).join(`
|
|
223
|
+
`);
|
|
224
|
+
return ` ${q2.name}: defineQuery(
|
|
225
|
+
${indentedValidator},
|
|
226
|
+
({ args }) => Queries.${file}.${q2.name}(args)
|
|
227
|
+
),`;
|
|
228
|
+
}).join(`
|
|
229
|
+
`);
|
|
230
|
+
return `const ${file} = {
|
|
231
|
+
${queryDefs}
|
|
232
|
+
}`;
|
|
233
|
+
}).join(`
|
|
234
|
+
|
|
235
|
+
`),
|
|
236
|
+
queriesObject = sortedFiles.map(function (file) {
|
|
237
|
+
return ` ${file},`;
|
|
238
|
+
}).join(`
|
|
239
|
+
`);
|
|
240
|
+
return `${imports}
|
|
241
|
+
${namespaceDefs}
|
|
242
|
+
|
|
243
|
+
export const queries = defineQueries({
|
|
244
|
+
${queriesObject}
|
|
245
|
+
})
|
|
246
|
+
`;
|
|
247
|
+
}
|
|
248
|
+
function columnTypeToValibot(col) {
|
|
249
|
+
var base = "v.string()";
|
|
250
|
+
switch (col.type) {
|
|
251
|
+
case "string":
|
|
252
|
+
base = "v.string()";
|
|
253
|
+
break;
|
|
254
|
+
case "number":
|
|
255
|
+
base = "v.number()";
|
|
256
|
+
break;
|
|
257
|
+
case "boolean":
|
|
258
|
+
base = "v.boolean()";
|
|
259
|
+
break;
|
|
260
|
+
case "json":
|
|
261
|
+
base = "v.unknown()";
|
|
262
|
+
break;
|
|
263
|
+
case "enum":
|
|
264
|
+
base = "v.string()";
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
return col.optional ? `v.optional(v.nullable(${base}))` : base;
|
|
268
|
+
}
|
|
269
|
+
function schemaColumnsToValibot(columns, primaryKeys, mode) {
|
|
270
|
+
var entries = [];
|
|
271
|
+
if (mode === "delete") {
|
|
272
|
+
var _iteratorNormalCompletion = !0,
|
|
273
|
+
_didIteratorError = !1,
|
|
274
|
+
_iteratorError = void 0;
|
|
275
|
+
try {
|
|
276
|
+
for (var _iterator = primaryKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
277
|
+
var pk = _step.value,
|
|
278
|
+
col = columns[pk];
|
|
279
|
+
col && entries.push(`${formatObjectKey(pk)}: ${columnTypeToValibot({
|
|
280
|
+
...col,
|
|
281
|
+
optional: !1
|
|
282
|
+
})}`);
|
|
283
|
+
}
|
|
284
|
+
} catch (err) {
|
|
285
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
286
|
+
} finally {
|
|
287
|
+
try {
|
|
288
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
289
|
+
} finally {
|
|
290
|
+
if (_didIteratorError) throw _iteratorError;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
} else if (mode === "update") {
|
|
294
|
+
var _iteratorNormalCompletion1 = !0,
|
|
295
|
+
_didIteratorError1 = !1,
|
|
296
|
+
_iteratorError1 = void 0;
|
|
297
|
+
try {
|
|
298
|
+
for (var _iterator1 = Object.entries(columns)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
|
|
299
|
+
var [name, col1] = _step1.value,
|
|
300
|
+
isPK = primaryKeys.includes(name);
|
|
301
|
+
isPK ? entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
|
|
302
|
+
...col1,
|
|
303
|
+
optional: !1
|
|
304
|
+
})}`) : entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
|
|
305
|
+
...col1,
|
|
306
|
+
optional: !0
|
|
307
|
+
})}`);
|
|
308
|
+
}
|
|
309
|
+
} catch (err) {
|
|
310
|
+
_didIteratorError1 = !0, _iteratorError1 = err;
|
|
311
|
+
} finally {
|
|
312
|
+
try {
|
|
313
|
+
!_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
|
|
314
|
+
} finally {
|
|
315
|
+
if (_didIteratorError1) throw _iteratorError1;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
} else {
|
|
319
|
+
var _iteratorNormalCompletion2 = !0,
|
|
320
|
+
_didIteratorError2 = !1,
|
|
321
|
+
_iteratorError2 = void 0;
|
|
322
|
+
try {
|
|
323
|
+
for (var _iterator2 = Object.entries(columns)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
|
|
324
|
+
var [name1, col2] = _step2.value;
|
|
325
|
+
entries.push(`${formatObjectKey(name1)}: ${columnTypeToValibot(col2)}`);
|
|
326
|
+
}
|
|
327
|
+
} catch (err) {
|
|
328
|
+
_didIteratorError2 = !0, _iteratorError2 = err;
|
|
329
|
+
} finally {
|
|
330
|
+
try {
|
|
331
|
+
!_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
|
|
332
|
+
} finally {
|
|
333
|
+
if (_didIteratorError2) throw _iteratorError2;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return `v.object({
|
|
338
|
+
${entries.join(`,
|
|
339
|
+
`)},
|
|
340
|
+
})`;
|
|
341
|
+
}
|
|
342
|
+
function extractValibotExpression(valibotCode) {
|
|
343
|
+
return valibotCode.trim() || "v.unknown()";
|
|
344
|
+
}
|
|
345
|
+
function parseColumnType(initText) {
|
|
346
|
+
var optional = initText.includes(".optional()"),
|
|
347
|
+
type = "string";
|
|
348
|
+
return initText.startsWith("number(") ? type = "number" : initText.startsWith("boolean(") ? type = "boolean" : initText.startsWith("json(") || initText.startsWith("json<") ? type = "json" : initText.startsWith("enumeration(") && (type = "enum"), {
|
|
349
|
+
type,
|
|
350
|
+
optional,
|
|
351
|
+
customType: void 0
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
function generateSyncedMutationsFile(modelMutations) {
|
|
355
|
+
var sorted = [...modelMutations].sort(function (a, b) {
|
|
356
|
+
return a.modelName.localeCompare(b.modelName);
|
|
357
|
+
}),
|
|
358
|
+
modelDefs = sorted.map(function (model) {
|
|
359
|
+
var entries = [];
|
|
360
|
+
if (model.hasCRUD && Object.keys(model.columns).length > 0) for (var _loop = function (_i2, _iter2) {
|
|
361
|
+
var mode = _iter2[_i2],
|
|
362
|
+
hasCustomOverride = model.custom.some(function (m) {
|
|
363
|
+
return m.name === mode;
|
|
364
|
+
});
|
|
365
|
+
if (hasCustomOverride) {
|
|
366
|
+
var customMut = model.custom.find(function (m) {
|
|
367
|
+
return m.name === mode;
|
|
368
|
+
});
|
|
369
|
+
customMut.valibotCode ? entries.push(` ${mode}: ${extractValibotExpression(customMut.valibotCode)},`) : entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
|
|
370
|
+
} else entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
|
|
371
|
+
}, _i = 0, _iter = ["insert", "update", "delete"]; _i < _iter.length; _i++) _loop(_i, _iter);
|
|
372
|
+
var _iteratorNormalCompletion = !0,
|
|
373
|
+
_didIteratorError = !1,
|
|
374
|
+
_iteratorError = void 0;
|
|
375
|
+
try {
|
|
376
|
+
for (var _iterator = model.custom[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
377
|
+
var mut = _step.value;
|
|
378
|
+
if (!(model.hasCRUD && ["insert", "update", "delete", "upsert"].includes(mut.name))) {
|
|
379
|
+
if (mut.paramType === "void" || !mut.valibotCode) {
|
|
380
|
+
entries.push(` ${mut.name}: v.void_(),`);
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
entries.push(` ${mut.name}: ${extractValibotExpression(mut.valibotCode)},`);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
} catch (err) {
|
|
387
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
388
|
+
} finally {
|
|
389
|
+
try {
|
|
390
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
391
|
+
} finally {
|
|
392
|
+
if (_didIteratorError) throw _iteratorError;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return ` ${model.modelName}: {
|
|
396
|
+
${entries.join(`
|
|
397
|
+
`)}
|
|
398
|
+
},`;
|
|
399
|
+
}).join(`
|
|
400
|
+
`);
|
|
401
|
+
return `// auto-generated by: on-zero generate
|
|
402
|
+
// mutation validators derived from model schemas and handler types
|
|
403
|
+
import * as v from 'valibot'
|
|
404
|
+
|
|
405
|
+
export const mutationValidators = {
|
|
406
|
+
${modelDefs}
|
|
407
|
+
}
|
|
408
|
+
`;
|
|
409
|
+
}
|
|
410
|
+
export { columnTypeToValibot, extractValibotExpression, formatObjectKey, generateGroupedQueriesFile, generateModelsFile, generateReadmeFile, generateSyncedMutationsFile, generateSyncedQueriesFile, generateTablesFile, generateTypesFile, getModelImportName, parseColumnType, parseTypeString, schemaColumnsToValibot, shouldSkipObjectKey };
|
|
411
|
+
//# sourceMappingURL=generate-helpers.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["shouldSkipObjectKey","name","startsWith","formatObjectKey","test","JSON","stringify","getModelImportName","parseTypeString","type","trim","endsWith","inner","slice","normalized","replace","entries","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","split","Symbol","iterator","_step","next","done","part","value","trimmed","match","opt","typeStr","parsed","val","push","err","return","length","join","inner1","generateModelsFile","modelNames","modelsDirName","sorted","sort","imports","map","sortedByImportName","a","b","localeCompare","modelsObj","generateTypesFile","typeExports","pascalName","charAt","toUpperCase","schemaName","generateTablesFile","exports","generateReadmeFile","generateGroupedQueriesFile","queries","sortedFiles","Set","q","sourceFile","file","generateSyncedQueriesFile","queryByFile","Map","has","set","get","Array","from","keys","namespaceDefs","fileQueries","queryDefs","q2","validatorDef","valibotCode","params","indentedValidator","line","i","queriesObject","columnTypeToValibot","col","base","optional","schemaColumnsToValibot","columns","primaryKeys","mode","pk"],"sources":["../../src/generate-helpers.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { generateGroupedQueriesFile, generateModelsFile, generateReadmeFile, generateSyncedMutationsFile, generateSyncedQueriesFile, generateTablesFile, generateTypesFile, parseColumnType, parseTypeString } from "./generate-helpers.mjs";
|
|
2
|
+
function stripTrailingSlash(s) {
|
|
3
|
+
return s.endsWith("/") ? s.slice(0, -1) : s;
|
|
4
|
+
}
|
|
5
|
+
function baseName(path, ext) {
|
|
6
|
+
const idx = path.lastIndexOf("/");
|
|
7
|
+
let base = idx >= 0 ? path.slice(idx + 1) : path;
|
|
8
|
+
return ext && base.endsWith(ext) && (base = base.slice(0, -ext.length)), base;
|
|
9
|
+
}
|
|
10
|
+
function listDirectTsFiles(files, dirPrefix) {
|
|
11
|
+
const prefix = stripTrailingSlash(dirPrefix) + "/",
|
|
12
|
+
out = [];
|
|
13
|
+
for (const path of Object.keys(files)) {
|
|
14
|
+
if (!path.startsWith(prefix)) continue;
|
|
15
|
+
const rest = path.slice(prefix.length);
|
|
16
|
+
rest.includes("/") || rest.endsWith(".ts") && (rest.endsWith(".d.ts") || out.push(path));
|
|
17
|
+
}
|
|
18
|
+
return out.sort();
|
|
19
|
+
}
|
|
20
|
+
function generateLite(opts) {
|
|
21
|
+
const {
|
|
22
|
+
files,
|
|
23
|
+
parse
|
|
24
|
+
} = opts,
|
|
25
|
+
baseDir = stripTrailingSlash(opts.dir);
|
|
26
|
+
let modelsDirName;
|
|
27
|
+
if (opts.modelsDir) modelsDirName = opts.modelsDir;else {
|
|
28
|
+
const mutationsPrefix = `${baseDir}/mutations/`;
|
|
29
|
+
modelsDirName = Object.keys(files).some(p => p.startsWith(mutationsPrefix)) ? "mutations" : "models";
|
|
30
|
+
}
|
|
31
|
+
const modelsDirPath = `${baseDir}/${modelsDirName}`,
|
|
32
|
+
queriesDirPath = `${baseDir}/queries`,
|
|
33
|
+
modelFilePaths = listDirectTsFiles(files, modelsDirPath),
|
|
34
|
+
queryFilePaths = listDirectTsFiles(files, queriesDirPath),
|
|
35
|
+
allModelMutations = [],
|
|
36
|
+
modelNamesWithSchema = [];
|
|
37
|
+
for (const filePath of modelFilePaths) {
|
|
38
|
+
const modelName = baseName(filePath, ".ts"),
|
|
39
|
+
content = files[filePath],
|
|
40
|
+
mutationExport = parse(content, filePath).mutations[0] ?? null,
|
|
41
|
+
columns = {},
|
|
42
|
+
primaryKeys = [];
|
|
43
|
+
let hasSchema = !1;
|
|
44
|
+
if (mutationExport?.schema) {
|
|
45
|
+
hasSchema = !0, modelNamesWithSchema.push(modelName);
|
|
46
|
+
for (const pk of mutationExport.schema.primaryKeys) primaryKeys.push(pk);
|
|
47
|
+
for (const col of mutationExport.schema.columns) columns[col.name] = parseColumnType(col.builderText);
|
|
48
|
+
}
|
|
49
|
+
const hasCRUD = hasSchema && mutationExport !== null,
|
|
50
|
+
custom = (mutationExport?.handlers ?? []).map(h => {
|
|
51
|
+
if (h.paramTypeText == null) return {
|
|
52
|
+
name: h.name,
|
|
53
|
+
paramType: "void",
|
|
54
|
+
valibotCode: ""
|
|
55
|
+
};
|
|
56
|
+
const paramType = h.paramTypeText.trim();
|
|
57
|
+
if (paramType === "unknown") return {
|
|
58
|
+
name: h.name,
|
|
59
|
+
paramType: "unknown",
|
|
60
|
+
valibotCode: ""
|
|
61
|
+
};
|
|
62
|
+
let valibotCode = null;
|
|
63
|
+
try {
|
|
64
|
+
valibotCode = parseTypeString(paramType);
|
|
65
|
+
} catch {
|
|
66
|
+
valibotCode = null;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
name: h.name,
|
|
70
|
+
paramType,
|
|
71
|
+
valibotCode: valibotCode ?? "v.unknown()"
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
allModelMutations.push({
|
|
75
|
+
modelName,
|
|
76
|
+
hasCRUD,
|
|
77
|
+
columns,
|
|
78
|
+
primaryKeys,
|
|
79
|
+
custom
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const allQueries = [];
|
|
83
|
+
for (const filePath of queryFilePaths) {
|
|
84
|
+
const fileBaseName = baseName(filePath, ".ts"),
|
|
85
|
+
content = files[filePath],
|
|
86
|
+
parsed = parse(content, filePath);
|
|
87
|
+
for (const q of parsed.queries) {
|
|
88
|
+
if (q.name === "permission") continue;
|
|
89
|
+
if (q.paramTypeText == null) {
|
|
90
|
+
allQueries.push({
|
|
91
|
+
name: q.name,
|
|
92
|
+
params: "void",
|
|
93
|
+
valibotCode: "",
|
|
94
|
+
sourceFile: fileBaseName
|
|
95
|
+
});
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const paramType = q.paramTypeText.trim();
|
|
99
|
+
let valibotCode = null;
|
|
100
|
+
try {
|
|
101
|
+
valibotCode = parseTypeString(paramType);
|
|
102
|
+
} catch {
|
|
103
|
+
valibotCode = null;
|
|
104
|
+
}
|
|
105
|
+
allQueries.push({
|
|
106
|
+
name: q.name,
|
|
107
|
+
params: paramType,
|
|
108
|
+
valibotCode: valibotCode ?? "v.unknown()",
|
|
109
|
+
sourceFile: fileBaseName
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const modelNames = modelFilePaths.map(p => baseName(p, ".ts")),
|
|
114
|
+
out = {};
|
|
115
|
+
out["models.ts"] = generateModelsFile(modelNames, modelsDirName), modelNamesWithSchema.length > 0 && (out["types.ts"] = generateTypesFile(modelNamesWithSchema), out["tables.ts"] = generateTablesFile(modelNamesWithSchema, modelsDirName)), out["README.md"] = generateReadmeFile(), queryFilePaths.length > 0 && (out["groupedQueries.ts"] = generateGroupedQueriesFile(allQueries), out["syncedQueries.ts"] = generateSyncedQueriesFile(allQueries)), allModelMutations.length > 0 && (out["syncedMutations.ts"] = generateSyncedMutationsFile(allModelMutations));
|
|
116
|
+
let mutationCount = 0;
|
|
117
|
+
for (const m of allModelMutations) m.hasCRUD && (mutationCount += 3), mutationCount += m.custom.filter(mut => !m.hasCRUD || !["insert", "update", "delete", "upsert"].includes(mut.name)).length;
|
|
118
|
+
return {
|
|
119
|
+
files: out,
|
|
120
|
+
modelCount: modelNames.length,
|
|
121
|
+
queryCount: allQueries.length,
|
|
122
|
+
mutationCount,
|
|
123
|
+
schemaCount: modelNamesWithSchema.length
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export { generateLite };
|
|
127
|
+
//# sourceMappingURL=generate-lite.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["generateGroupedQueriesFile","generateModelsFile","generateReadmeFile","generateSyncedMutationsFile","generateSyncedQueriesFile","generateTablesFile","generateTypesFile","parseColumnType","parseTypeString","stripTrailingSlash","s","endsWith","slice","baseName","path","ext","idx","lastIndexOf","base","length","listDirectTsFiles","files","dirPrefix","prefix","out","Object","keys","startsWith","rest","includes","push","sort","generateLite","opts","parse","baseDir","dir","modelsDirName","modelsDir","mutationsPrefix","some","p","modelsDirPath","queriesDirPath","modelFilePaths","queryFilePaths","allModelMutations","modelNamesWithSchema","filePath","modelName","content","mutationExport","mutations","columns","primaryKeys","hasSchema","schema","pk","col","name","builderText","hasCRUD","custom","handlers","map","h","paramTypeText","paramType","valibotCode","trim","allQueries","fileBaseName","parsed","q","queries","params","sourceFile","modelNames","mutationCount","m","filter","mut","modelCount","queryCount","schemaCount"],"sources":["../../src/generate-lite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|