on-zero 0.1.22 → 0.1.24

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.
Files changed (56) hide show
  1. package/dist/cjs/cli.cjs +17 -424
  2. package/dist/cjs/cli.js +7 -402
  3. package/dist/cjs/cli.js.map +2 -2
  4. package/dist/cjs/cli.native.js +15 -519
  5. package/dist/cjs/cli.native.js.map +1 -1
  6. package/dist/cjs/generate.cjs +370 -0
  7. package/dist/cjs/generate.js +339 -0
  8. package/dist/cjs/generate.js.map +6 -0
  9. package/dist/cjs/generate.native.js +464 -0
  10. package/dist/cjs/generate.native.js.map +1 -0
  11. package/dist/cjs/generate.test.cjs +113 -0
  12. package/dist/cjs/generate.test.js +126 -0
  13. package/dist/cjs/generate.test.js.map +6 -0
  14. package/dist/cjs/generate.test.native.js +116 -0
  15. package/dist/cjs/generate.test.native.js.map +1 -0
  16. package/dist/cjs/vite-plugin.cjs +37 -121
  17. package/dist/cjs/vite-plugin.js +41 -100
  18. package/dist/cjs/vite-plugin.js.map +1 -1
  19. package/dist/cjs/vite-plugin.native.js +47 -157
  20. package/dist/cjs/vite-plugin.native.js.map +1 -1
  21. package/dist/esm/cli.js +8 -388
  22. package/dist/esm/cli.js.map +2 -2
  23. package/dist/esm/cli.mjs +17 -402
  24. package/dist/esm/cli.mjs.map +1 -1
  25. package/dist/esm/cli.native.js +15 -497
  26. package/dist/esm/cli.native.js.map +1 -1
  27. package/dist/esm/generate.js +317 -0
  28. package/dist/esm/generate.js.map +6 -0
  29. package/dist/esm/generate.mjs +335 -0
  30. package/dist/esm/generate.mjs.map +1 -0
  31. package/dist/esm/generate.native.js +426 -0
  32. package/dist/esm/generate.native.js.map +1 -0
  33. package/dist/esm/generate.test.js +130 -0
  34. package/dist/esm/generate.test.js.map +6 -0
  35. package/dist/esm/generate.test.mjs +114 -0
  36. package/dist/esm/generate.test.mjs.map +1 -0
  37. package/dist/esm/generate.test.native.js +114 -0
  38. package/dist/esm/generate.test.native.js.map +1 -0
  39. package/dist/esm/vite-plugin.js +42 -102
  40. package/dist/esm/vite-plugin.js.map +1 -1
  41. package/dist/esm/vite-plugin.mjs +37 -121
  42. package/dist/esm/vite-plugin.mjs.map +1 -1
  43. package/dist/esm/vite-plugin.native.js +47 -157
  44. package/dist/esm/vite-plugin.native.js.map +1 -1
  45. package/package.json +6 -3
  46. package/readme.md +0 -29
  47. package/src/cli.ts +9 -646
  48. package/src/generate.test.ts +201 -0
  49. package/src/generate.ts +491 -0
  50. package/src/vite-plugin.ts +61 -189
  51. package/types/generate.d.ts +21 -0
  52. package/types/generate.d.ts.map +1 -0
  53. package/types/generate.test.d.ts +2 -0
  54. package/types/generate.test.d.ts.map +1 -0
  55. package/types/vite-plugin.d.ts +6 -29
  56. package/types/vite-plugin.d.ts.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createHash","existsSync","mkdirSync","readFileSync","readdirSync","writeFileSync","basename","resolve","hash","s","update","digest","generateCache","generateCachePath","getCacheDir","dir","process","cwd","nm","cacheDir","recursive","loadCache","JSON","parse","saveCache","stringify","writeFileIfChanged","filePath","content","contentHash","generateModelsFile","modelFiles","modelNames","map","f","sort","getImportName","name","imports","join","modelsObj","a","b","localeCompare","generateTypesFile","getSchemaName","pascalName","charAt","toUpperCase","slice","schemaName","generateTablesFile","getExportName","generateReadmeFile","generateGroupedQueriesFile","queries","Set","q","sourceFile","file","generateSyncedQueriesFile","queryByFile","Map","has","set","get","push","sortedFiles","Array","from","keys","namespaceDefs","queryDefs","lines","valibotCode","split","filter","l","trim","schemaLineIndex","findIndex","startsWith","validatorDef","schemaLines","openBraces","started","i","length","line","cleaned","replace","match","params","indentedValidator","queriesObject","generate","options","after","silent","baseDir","modelsDir","generatedDir","queriesDir","allModelFiles","endsWith","filesWithSchema","includes","filesChanged","Boolean","queryCount","ts","ModelToValibot","TypeScriptToModel","queryFiles","allQueries","fileBaseName","createSourceFile","ScriptTarget","Latest","forEachChild","node","isVariableStatement","modifiers","find","m","kind","SyntaxKind","ExportKeyword","declaration","declarationList","declarations","isVariableDeclaration","getText","initializer","isArrowFunction","parameters","paramType","type","typeString","model","Generate","err","console","error","groupedChanged","syncedChanged","info","execSync","stdio","env","ON_ZERO_GENERATED_DIR","modelCount","schemaCount","watch","debounce","chokidar","debounceTimer","debouncedRegenerate","path","event","clearTimeout","setTimeout","watcher","persistent","ignoreInitial","ignored","on"],"sources":["../../src/generate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,426 @@
1
+ import { createHash } from "crypto";
2
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
3
+ import { basename, resolve } from "path";
4
+ var hash = function (s) {
5
+ return createHash("sha256").update(s).digest("hex");
6
+ },
7
+ generateCache = {},
8
+ generateCachePath = "";
9
+ function getCacheDir() {
10
+ for (var dir = process.cwd(); dir !== "/";) {
11
+ var nm = resolve(dir, "node_modules");
12
+ if (existsSync(nm)) {
13
+ var cacheDir = resolve(nm, ".on-zero");
14
+ return existsSync(cacheDir) || mkdirSync(cacheDir, {
15
+ recursive: !0
16
+ }), cacheDir;
17
+ }
18
+ dir = resolve(dir, "..");
19
+ }
20
+ return null;
21
+ }
22
+ function loadCache() {
23
+ var cacheDir = getCacheDir();
24
+ if (cacheDir) {
25
+ generateCachePath = resolve(cacheDir, "generate-cache.json");
26
+ try {
27
+ generateCache = JSON.parse(readFileSync(generateCachePath, "utf-8"));
28
+ } catch {
29
+ generateCache = {};
30
+ }
31
+ }
32
+ }
33
+ function saveCache() {
34
+ generateCachePath && writeFileSync(generateCachePath, JSON.stringify(generateCache) + `
35
+ `, "utf-8");
36
+ }
37
+ function writeFileIfChanged(filePath, content) {
38
+ var contentHash = hash(content),
39
+ cachedHash = generateCache[filePath];
40
+ return cachedHash === contentHash && existsSync(filePath) ? !1 : (writeFileSync(filePath, content, "utf-8"), generateCache[filePath] = contentHash, !0);
41
+ }
42
+ function generateModelsFile(modelFiles) {
43
+ var modelNames = modelFiles.map(function (f) {
44
+ return basename(f, ".ts");
45
+ }).sort(),
46
+ getImportName = function (name) {
47
+ return name === "user" ? "userPublic" : name;
48
+ },
49
+ imports = modelNames.map(function (name) {
50
+ return `import * as ${getImportName(name)} from '../models/${name}'`;
51
+ }).join(`
52
+ `),
53
+ sortedByImportName = [...modelNames].sort(function (a, b) {
54
+ return getImportName(a).localeCompare(getImportName(b));
55
+ }),
56
+ modelsObj = `export const models = {
57
+ ${sortedByImportName.map(function (name) {
58
+ return ` ${getImportName(name)},`;
59
+ }).join(`
60
+ `)}
61
+ }`,
62
+ hmrBoundary = `
63
+ if (import.meta.hot) {
64
+ import.meta.hot.accept()
65
+ }
66
+ `;
67
+ return `// auto-generated by: on-zero generate
68
+ ${imports}
69
+
70
+ ${modelsObj}
71
+ ${hmrBoundary}`;
72
+ }
73
+ function generateTypesFile(modelFiles) {
74
+ var modelNames = modelFiles.map(function (f) {
75
+ return basename(f, ".ts");
76
+ }).sort(),
77
+ getSchemaName = function (name) {
78
+ return name === "user" ? "userPublic" : name;
79
+ },
80
+ typeExports = modelNames.map(function (name) {
81
+ var pascalName = name.charAt(0).toUpperCase() + name.slice(1),
82
+ schemaName = getSchemaName(name);
83
+ return `export type ${pascalName} = TableInsertRow<typeof schema.${schemaName}>
84
+ export type ${pascalName}Update = TableUpdateRow<typeof schema.${schemaName}>`;
85
+ }).join(`
86
+
87
+ `);
88
+ return `import type { TableInsertRow, TableUpdateRow } from 'on-zero'
89
+ import type * as schema from './tables'
90
+
91
+ ${typeExports}
92
+ `;
93
+ }
94
+ function generateTablesFile(modelFiles) {
95
+ var modelNames = modelFiles.map(function (f) {
96
+ return basename(f, ".ts");
97
+ }).sort(),
98
+ getExportName = function (name) {
99
+ return name === "user" ? "userPublic" : name;
100
+ },
101
+ exports = modelNames.map(function (name) {
102
+ return `export { schema as ${getExportName(name)} } from '../models/${name}'`;
103
+ }).join(`
104
+ `);
105
+ return `// auto-generated by: on-zero generate
106
+ // this is separate from models as otherwise you end up with circular types :/
107
+
108
+ ${exports}
109
+ `;
110
+ }
111
+ function generateReadmeFile() {
112
+ return `# generated
113
+
114
+ this folder is auto-generated by on-zero. do not edit files here directly.
115
+
116
+ ## what's generated
117
+
118
+ - \`models.ts\` - exports all models from ../models
119
+ - \`types.ts\` - typescript types derived from table schemas
120
+ - \`tables.ts\` - exports table schemas for type inference
121
+ - \`groupedQueries.ts\` - namespaced query re-exports for client setup
122
+ - \`syncedQueries.ts\` - namespaced syncedQuery wrappers for server setup
123
+
124
+ ## usage guidelines
125
+
126
+ **do not import generated files outside of the data folder.**
127
+
128
+ ### queries
129
+
130
+ write your queries as plain functions in \`../queries/\` and import them directly:
131
+
132
+ \`\`\`ts
133
+ // \u2705 good - import from queries
134
+ import { channelMessages } from '~/data/queries/message'
135
+ \`\`\`
136
+
137
+ the generated query files are only used internally by zero client/server setup.
138
+
139
+ ### types
140
+
141
+ you can import types from this folder, but prefer re-exporting from \`../types.ts\`:
142
+
143
+ \`\`\`ts
144
+ // \u274C okay but not preferred
145
+ import type { Message } from '~/data/generated/types'
146
+
147
+ // \u2705 better - re-export from types.ts
148
+ import type { Message } from '~/data/types'
149
+ \`\`\`
150
+
151
+ ## regeneration
152
+
153
+ files are regenerated when you run:
154
+
155
+ \`\`\`bash
156
+ bun on-zero generate
157
+ \`\`\`
158
+
159
+ or in watch mode:
160
+
161
+ \`\`\`bash
162
+ bun on-zero generate --watch
163
+ \`\`\`
164
+
165
+ ## more info
166
+
167
+ see the [on-zero readme](./node_modules/on-zero/README.md) for full documentation.
168
+ `;
169
+ }
170
+ function generateGroupedQueriesFile(queries) {
171
+ var sortedFiles = [...new Set(queries.map(function (q) {
172
+ return q.sourceFile;
173
+ }))].sort(),
174
+ exports = sortedFiles.map(function (file) {
175
+ return `export * as ${file} from '../queries/${file}'`;
176
+ }).join(`
177
+ `);
178
+ return `/**
179
+ * auto-generated by: on-zero generate
180
+ *
181
+ * grouped query re-exports for minification-safe query identity.
182
+ * this file re-exports all query modules - while this breaks tree-shaking,
183
+ * queries are typically small and few in number even in larger apps.
184
+ */
185
+ ${exports}
186
+ `;
187
+ }
188
+ function generateSyncedQueriesFile(queries) {
189
+ var queryByFile = /* @__PURE__ */new Map(),
190
+ _iteratorNormalCompletion = !0,
191
+ _didIteratorError = !1,
192
+ _iteratorError = void 0;
193
+ try {
194
+ for (var _iterator = queries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
195
+ var q = _step.value;
196
+ queryByFile.has(q.sourceFile) || queryByFile.set(q.sourceFile, []), queryByFile.get(q.sourceFile).push(q);
197
+ }
198
+ } catch (err) {
199
+ _didIteratorError = !0, _iteratorError = err;
200
+ } finally {
201
+ try {
202
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
203
+ } finally {
204
+ if (_didIteratorError) throw _iteratorError;
205
+ }
206
+ }
207
+ var sortedFiles = Array.from(queryByFile.keys()).sort(),
208
+ imports = `// auto-generated by: on-zero generate
209
+ // server-side query definitions with validators
210
+ import { defineQuery, defineQueries } from '@rocicorp/zero'
211
+ import * as v from 'valibot'
212
+ import * as Queries from './groupedQueries'
213
+ `,
214
+ namespaceDefs = sortedFiles.map(function (file) {
215
+ var fileQueries = queryByFile.get(file).sort(function (a, b) {
216
+ return a.name.localeCompare(b.name);
217
+ }),
218
+ queryDefs = fileQueries.map(function (q2) {
219
+ var lines = q2.valibotCode.split(`
220
+ `).filter(function (l) {
221
+ return l.trim();
222
+ }),
223
+ schemaLineIndex = lines.findIndex(function (l) {
224
+ return l.startsWith("export const QueryParams");
225
+ }),
226
+ validatorDef = "";
227
+ if (schemaLineIndex !== -1) {
228
+ for (var schemaLines = [], openBraces = 0, started = !1, i = schemaLineIndex; i < lines.length; i++) {
229
+ var line = lines[i],
230
+ cleaned = started ? line : line.replace("export const QueryParams = ", "");
231
+ if (schemaLines.push(cleaned), started = !0, openBraces += (cleaned.match(/\{/g) || []).length, openBraces -= (cleaned.match(/\}/g) || []).length, openBraces += (cleaned.match(/\(/g) || []).length, openBraces -= (cleaned.match(/\)/g) || []).length, openBraces === 0 && schemaLines.length > 0) break;
232
+ }
233
+ validatorDef = schemaLines.join(`
234
+ `);
235
+ }
236
+ if (q2.params === "void" || !validatorDef) return ` ${q2.name}: defineQuery(() => Queries.${file}.${q2.name}()),`;
237
+ var indentedValidator = validatorDef.split(`
238
+ `).map(function (line2, i2) {
239
+ return i2 === 0 ? line2 : ` ${line2}`;
240
+ }).join(`
241
+ `);
242
+ return ` ${q2.name}: defineQuery(
243
+ ${indentedValidator},
244
+ ({ args }) => Queries.${file}.${q2.name}(args)
245
+ ),`;
246
+ }).join(`
247
+ `);
248
+ return `const ${file} = {
249
+ ${queryDefs}
250
+ }`;
251
+ }).join(`
252
+
253
+ `),
254
+ queriesObject = sortedFiles.map(function (file) {
255
+ return ` ${file},`;
256
+ }).join(`
257
+ `);
258
+ return `${imports}
259
+ ${namespaceDefs}
260
+
261
+ export const queries = defineQueries({
262
+ ${queriesObject}
263
+ })
264
+ `;
265
+ }
266
+ async function generate(options) {
267
+ var {
268
+ dir,
269
+ after,
270
+ silent
271
+ } = options,
272
+ baseDir = resolve(dir),
273
+ modelsDir = resolve(baseDir, "models"),
274
+ generatedDir = resolve(baseDir, "generated"),
275
+ queriesDir = resolve(baseDir, "queries");
276
+ existsSync(generatedDir) || mkdirSync(generatedDir, {
277
+ recursive: !0
278
+ }), loadCache();
279
+ var allModelFiles = readdirSync(modelsDir).filter(function (f) {
280
+ return f.endsWith(".ts");
281
+ }).sort(),
282
+ filesWithSchema = allModelFiles.filter(function (f) {
283
+ return readFileSync(resolve(modelsDir, f), "utf-8").includes("export const schema = table(");
284
+ }),
285
+ writeResults = [writeFileIfChanged(resolve(generatedDir, "models.ts"), generateModelsFile(allModelFiles)), writeFileIfChanged(resolve(generatedDir, "types.ts"), generateTypesFile(filesWithSchema)), writeFileIfChanged(resolve(generatedDir, "tables.ts"), generateTablesFile(filesWithSchema)), writeFileIfChanged(resolve(generatedDir, "README.md"), generateReadmeFile())],
286
+ filesChanged = writeResults.filter(Boolean).length,
287
+ queryCount = 0;
288
+ if (existsSync(queriesDir)) {
289
+ var ts = await import("typescript"),
290
+ {
291
+ ModelToValibot
292
+ } = await import("@sinclair/typebox-codegen/model/index.js"),
293
+ {
294
+ TypeScriptToModel
295
+ } = await import("@sinclair/typebox-codegen/typescript/index.js"),
296
+ queryFiles = readdirSync(queriesDir).filter(function (f) {
297
+ return f.endsWith(".ts");
298
+ }),
299
+ allQueries = [],
300
+ _iteratorNormalCompletion = !0,
301
+ _didIteratorError = !1,
302
+ _iteratorError = void 0;
303
+ try {
304
+ for (var _loop = function () {
305
+ var file = _step.value,
306
+ filePath = resolve(queriesDir, file),
307
+ fileBaseName = basename(file, ".ts");
308
+ try {
309
+ var content = readFileSync(filePath, "utf-8"),
310
+ sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, !0);
311
+ ts.forEachChild(sourceFile, function (node) {
312
+ if (ts.isVariableStatement(node)) {
313
+ var _node_modifiers,
314
+ exportModifier = (_node_modifiers = node.modifiers) === null || _node_modifiers === void 0 ? void 0 : _node_modifiers.find(function (m) {
315
+ return m.kind === ts.SyntaxKind.ExportKeyword;
316
+ });
317
+ if (!exportModifier) return;
318
+ var declaration = node.declarationList.declarations[0];
319
+ if (!declaration || !ts.isVariableDeclaration(declaration)) return;
320
+ var name = declaration.name.getText(sourceFile);
321
+ if (name === "permission") return;
322
+ if (declaration.initializer && ts.isArrowFunction(declaration.initializer)) {
323
+ var params = declaration.initializer.parameters,
324
+ paramType = "void";
325
+ if (params.length > 0) {
326
+ var _param_type,
327
+ param = params[0];
328
+ paramType = ((_param_type = param.type) === null || _param_type === void 0 ? void 0 : _param_type.getText(sourceFile)) || "unknown";
329
+ }
330
+ try {
331
+ var typeString = `type QueryParams = ${paramType}`,
332
+ model = TypeScriptToModel.Generate(typeString),
333
+ valibotCode = ModelToValibot.Generate(model);
334
+ allQueries.push({
335
+ name,
336
+ params: paramType,
337
+ valibotCode,
338
+ sourceFile: fileBaseName
339
+ });
340
+ } catch (err) {
341
+ silent || console.error(`\u2717 ${name}: ${err}`);
342
+ }
343
+ }
344
+ }
345
+ });
346
+ } catch (err) {
347
+ silent || console.error(`Error processing ${file}:`, err);
348
+ }
349
+ }, _iterator = queryFiles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) _loop();
350
+ } catch (err) {
351
+ _didIteratorError = !0, _iteratorError = err;
352
+ } finally {
353
+ try {
354
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
355
+ } finally {
356
+ if (_didIteratorError) throw _iteratorError;
357
+ }
358
+ }
359
+ queryCount = allQueries.length;
360
+ var groupedChanged = writeFileIfChanged(resolve(generatedDir, "groupedQueries.ts"), generateGroupedQueriesFile(allQueries)),
361
+ syncedChanged = writeFileIfChanged(resolve(generatedDir, "syncedQueries.ts"), generateSyncedQueriesFile(allQueries));
362
+ groupedChanged && filesChanged++, syncedChanged && filesChanged++;
363
+ }
364
+ if (filesChanged > 0 && !silent && console.info(`\u2713 ${allModelFiles.length} models (${filesWithSchema.length} schemas)${queryCount ? `, ${queryCount} queries` : ""}`), filesChanged > 0 && after) {
365
+ var {
366
+ execSync
367
+ } = await import("child_process");
368
+ try {
369
+ execSync(after, {
370
+ stdio: "inherit",
371
+ env: {
372
+ ...process.env,
373
+ ON_ZERO_GENERATED_DIR: generatedDir
374
+ }
375
+ });
376
+ } catch (err) {
377
+ silent || console.error(`Error running after command: ${err}`);
378
+ }
379
+ }
380
+ return saveCache(), {
381
+ filesChanged,
382
+ modelCount: allModelFiles.length,
383
+ schemaCount: filesWithSchema.length,
384
+ queryCount
385
+ };
386
+ }
387
+ async function watch(options) {
388
+ var {
389
+ dir,
390
+ debounce = 1e3
391
+ } = options,
392
+ baseDir = resolve(dir),
393
+ modelsDir = resolve(baseDir, "models"),
394
+ queriesDir = resolve(baseDir, "queries"),
395
+ generatedDir = resolve(baseDir, "generated");
396
+ await generate({
397
+ ...options,
398
+ silent: !0
399
+ }), console.info(`\u{1F440} watching...
400
+ `);
401
+ var chokidar = await import("chokidar"),
402
+ debounceTimer = null,
403
+ debouncedRegenerate = function (path, event) {
404
+ debounceTimer && clearTimeout(debounceTimer), console.info(`
405
+ ${event} ${path}`), debounceTimer = setTimeout(function () {
406
+ generate({
407
+ ...options,
408
+ silent: !1
409
+ });
410
+ }, debounce);
411
+ },
412
+ watcher = chokidar.watch([modelsDir, queriesDir], {
413
+ persistent: !0,
414
+ ignoreInitial: !0,
415
+ ignored: [generatedDir]
416
+ });
417
+ return watcher.on("change", function (path) {
418
+ return debouncedRegenerate(path, "\u{1F4DD}");
419
+ }), watcher.on("add", function (path) {
420
+ return debouncedRegenerate(path, "\u2795");
421
+ }), watcher.on("unlink", function (path) {
422
+ return debouncedRegenerate(path, "\u{1F5D1}\uFE0F ");
423
+ }), watcher;
424
+ }
425
+ export { generate, watch };
426
+ //# sourceMappingURL=generate.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createHash","existsSync","mkdirSync","readFileSync","readdirSync","writeFileSync","basename","resolve","hash","s","update","digest","generateCache","generateCachePath","getCacheDir","dir","process","cwd","nm","cacheDir","recursive","loadCache","JSON","parse","saveCache","stringify","writeFileIfChanged","filePath","content","contentHash","cachedHash","generateModelsFile","modelFiles","modelNames","map","f","sort","getImportName","name","imports","join","sortedByImportName","a","b","localeCompare","modelsObj","hmrBoundary","generateTypesFile","getSchemaName","typeExports","pascalName","charAt","toUpperCase","slice","schemaName","generateTablesFile","getExportName","exports","generateReadmeFile","generateGroupedQueriesFile","queries","sortedFiles","Set","q","sourceFile","file","generateSyncedQueriesFile","queryByFile","Map","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","value","has","set","get","push","err","return","Array","from","keys","namespaceDefs","fileQueries","queryDefs","q2","lines","valibotCode","split","filter","l","trim","schemaLineIndex","findIndex","startsWith","validatorDef","schemaLines","openBraces","started","i","length","line","cleaned","replace","match","params","indentedValidator","line2","i2","queriesObject","generate","options","after","silent","baseDir","modelsDir","generatedDir","queriesDir","allModelFiles","endsWith","filesWithSchema","includes","writeResults","filesChanged","Boolean","queryCount","ts","ModelToValibot","TypeScriptToModel","queryFiles","allQueries","_loop","fileBaseName","createSourceFile","ScriptTarget","Latest","forEachChild","node","isVariableStatement","_node_modifiers","exportModifier","modifiers","find","m","kind","SyntaxKind","ExportKeyword","declaration","declarationList","declarations","isVariableDeclaration","getText","initializer","isArrowFunction","parameters","paramType","_param_type","param","type","typeString","model","Generate","console","error"],"sources":["../../src/generate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,130 @@
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { afterEach, beforeEach, describe, expect, test } from "vitest";
5
+ import { generate } from "./generate";
6
+ const testDir = join(tmpdir(), "on-zero-test-" + Date.now());
7
+ beforeEach(() => {
8
+ mkdirSync(join(testDir, "models"), { recursive: !0 }), mkdirSync(join(testDir, "queries"), { recursive: !0 });
9
+ });
10
+ afterEach(() => {
11
+ rmSync(testDir, { recursive: !0, force: !0 });
12
+ });
13
+ describe("generate", () => {
14
+ test("generates models.ts, types.ts, tables.ts from model files", async () => {
15
+ writeFileSync(
16
+ join(testDir, "models/post.ts"),
17
+ `
18
+ import { table, string, boolean } from 'on-zero'
19
+
20
+ export const schema = table('post', {
21
+ id: string(),
22
+ title: string(),
23
+ published: boolean(),
24
+ })
25
+ `
26
+ ), writeFileSync(
27
+ join(testDir, "models/comment.ts"),
28
+ `
29
+ import { table, string } from 'on-zero'
30
+
31
+ export const schema = table('comment', {
32
+ id: string(),
33
+ postId: string(),
34
+ body: string(),
35
+ })
36
+ `
37
+ );
38
+ const result = await generate({ dir: testDir, silent: !0 });
39
+ expect(result.modelCount).toBe(2), expect(result.schemaCount).toBe(2), expect(result.filesChanged).toBeGreaterThan(0), expect(existsSync(join(testDir, "generated/models.ts"))).toBe(!0), expect(existsSync(join(testDir, "generated/types.ts"))).toBe(!0), expect(existsSync(join(testDir, "generated/tables.ts"))).toBe(!0);
40
+ const modelsContent = readFileSync(join(testDir, "generated/models.ts"), "utf-8");
41
+ expect(modelsContent).toContain("import * as comment from '../models/comment'"), expect(modelsContent).toContain("import * as post from '../models/post'"), expect(modelsContent).toContain("export const models = {");
42
+ const typesContent = readFileSync(join(testDir, "generated/types.ts"), "utf-8");
43
+ expect(typesContent).toContain(
44
+ "export type Post = TableInsertRow<typeof schema.post>"
45
+ ), expect(typesContent).toContain(
46
+ "export type Comment = TableInsertRow<typeof schema.comment>"
47
+ );
48
+ const tablesContent = readFileSync(join(testDir, "generated/tables.ts"), "utf-8");
49
+ expect(tablesContent).toContain("export { schema as post } from '../models/post'"), expect(tablesContent).toContain(
50
+ "export { schema as comment } from '../models/comment'"
51
+ );
52
+ }), test("generates query validators from query files", async () => {
53
+ writeFileSync(
54
+ join(testDir, "models/post.ts"),
55
+ "export const schema = table('post', { id: string() })"
56
+ ), writeFileSync(
57
+ join(testDir, "queries/post.ts"),
58
+ `
59
+ import { zero } from '../zero'
60
+
61
+ export const allPosts = () => zero.query.post
62
+
63
+ export const postById = ({ id }: { id: string }) => zero.query.post.where('id', id)
64
+
65
+ export const postsByAuthor = ({ authorId, limit }: { authorId: string; limit?: number }) =>
66
+ zero.query.post.where('authorId', authorId).limit(limit ?? 10)
67
+ `
68
+ );
69
+ const result = await generate({ dir: testDir, silent: !0 });
70
+ expect(result.queryCount).toBe(3), expect(existsSync(join(testDir, "generated/groupedQueries.ts"))).toBe(!0), expect(existsSync(join(testDir, "generated/syncedQueries.ts"))).toBe(!0);
71
+ const groupedContent = readFileSync(
72
+ join(testDir, "generated/groupedQueries.ts"),
73
+ "utf-8"
74
+ );
75
+ expect(groupedContent).toContain("export * as post from '../queries/post'");
76
+ const syncedContent = readFileSync(
77
+ join(testDir, "generated/syncedQueries.ts"),
78
+ "utf-8"
79
+ );
80
+ expect(syncedContent).toContain("allPosts: defineQuery"), expect(syncedContent).toContain("postById: defineQuery"), expect(syncedContent).toContain("postsByAuthor: defineQuery"), expect(syncedContent).toContain("v.object");
81
+ }), test("skips permission exports in queries", async () => {
82
+ writeFileSync(
83
+ join(testDir, "models/post.ts"),
84
+ "export const schema = table('post', { id: string() })"
85
+ ), writeFileSync(
86
+ join(testDir, "queries/post.ts"),
87
+ `
88
+ export const permission = () => ({ canRead: true })
89
+ export const allPosts = () => zero.query.post
90
+ `
91
+ );
92
+ const result = await generate({ dir: testDir, silent: !0 });
93
+ expect(result.queryCount).toBe(1);
94
+ const syncedContent = readFileSync(
95
+ join(testDir, "generated/syncedQueries.ts"),
96
+ "utf-8"
97
+ );
98
+ expect(syncedContent).toContain("allPosts"), expect(syncedContent).not.toContain("permission:");
99
+ }), test("handles user model special case (userPublic)", async () => {
100
+ writeFileSync(
101
+ join(testDir, "models/user.ts"),
102
+ "export const schema = table('user', { id: string(), name: string() })"
103
+ ), await generate({ dir: testDir, silent: !0 });
104
+ const modelsContent = readFileSync(join(testDir, "generated/models.ts"), "utf-8");
105
+ expect(modelsContent).toContain("import * as userPublic from '../models/user'"), expect(modelsContent).toContain("userPublic,");
106
+ const typesContent = readFileSync(join(testDir, "generated/types.ts"), "utf-8");
107
+ expect(typesContent).toContain("typeof schema.userPublic");
108
+ }), test("runs after command when files change", async () => {
109
+ writeFileSync(
110
+ join(testDir, "models/post.ts"),
111
+ "export const schema = table('post', { id: string() })"
112
+ );
113
+ const markerFile = join(testDir, "after-ran"), result = await generate({
114
+ dir: testDir,
115
+ silent: !0,
116
+ after: `touch ${markerFile}`
117
+ });
118
+ expect(result.filesChanged).toBeGreaterThan(0), expect(existsSync(markerFile)).toBe(!0);
119
+ }), test("does not regenerate when nothing changed", async () => {
120
+ writeFileSync(
121
+ join(testDir, "models/post.ts"),
122
+ "export const schema = table('post', { id: string() })"
123
+ );
124
+ const first = await generate({ dir: testDir, silent: !0 });
125
+ expect(first.filesChanged).toBeGreaterThan(0);
126
+ const second = await generate({ dir: testDir, silent: !0 });
127
+ expect(second.filesChanged).toBe(0);
128
+ });
129
+ });
130
+ //# sourceMappingURL=generate.test.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/generate.test.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }