on-zero 0.4.1 → 0.4.3

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 (41) hide show
  1. package/dist/cjs/generate-helpers.cjs +309 -0
  2. package/dist/cjs/generate-helpers.native.js +451 -0
  3. package/dist/cjs/generate-helpers.native.js.map +1 -0
  4. package/dist/cjs/generate-lite.cjs +150 -0
  5. package/dist/cjs/generate-lite.native.js +269 -0
  6. package/dist/cjs/generate-lite.native.js.map +1 -0
  7. package/dist/cjs/generate-lite.test.cjs +229 -0
  8. package/dist/cjs/generate-lite.test.native.js +234 -0
  9. package/dist/cjs/generate-lite.test.native.js.map +1 -0
  10. package/dist/cjs/generate.cjs +16 -285
  11. package/dist/cjs/generate.native.js +18 -432
  12. package/dist/cjs/generate.native.js.map +1 -1
  13. package/dist/esm/generate-helpers.mjs +272 -0
  14. package/dist/esm/generate-helpers.mjs.map +1 -0
  15. package/dist/esm/generate-helpers.native.js +411 -0
  16. package/dist/esm/generate-helpers.native.js.map +1 -0
  17. package/dist/esm/generate-lite.mjs +127 -0
  18. package/dist/esm/generate-lite.mjs.map +1 -0
  19. package/dist/esm/generate-lite.native.js +243 -0
  20. package/dist/esm/generate-lite.native.js.map +1 -0
  21. package/dist/esm/generate-lite.test.mjs +230 -0
  22. package/dist/esm/generate-lite.test.mjs.map +1 -0
  23. package/dist/esm/generate-lite.test.native.js +232 -0
  24. package/dist/esm/generate-lite.test.native.js.map +1 -0
  25. package/dist/esm/generate.mjs +6 -275
  26. package/dist/esm/generate.mjs.map +1 -1
  27. package/dist/esm/generate.native.js +9 -423
  28. package/dist/esm/generate.native.js.map +1 -1
  29. package/package.json +7 -2
  30. package/src/generate-helpers.ts +440 -0
  31. package/src/generate-lite.test.ts +310 -0
  32. package/src/generate-lite.ts +333 -0
  33. package/src/generate.ts +23 -415
  34. package/types/generate-helpers.d.ts +42 -0
  35. package/types/generate-helpers.d.ts.map +1 -0
  36. package/types/generate-lite.d.ts +40 -0
  37. package/types/generate-lite.d.ts.map +1 -0
  38. package/types/generate-lite.test.d.ts +2 -0
  39. package/types/generate-lite.test.d.ts.map +1 -0
  40. package/types/generate.d.ts +1 -6
  41. package/types/generate.d.ts.map +1 -1
@@ -41,6 +41,7 @@ module.exports = __toCommonJS(generate_exports);
41
41
  var import_crypto = require("crypto"),
42
42
  import_fs = require("fs"),
43
43
  import_path = require("path"),
44
+ import_generate_helpers = require("./generate-helpers.native.js"),
44
45
  hash = function (s) {
45
46
  return (0, import_crypto.createHash)("sha256").update(s).digest("hex");
46
47
  },
@@ -79,209 +80,6 @@ function writeFileIfChanged(filePath, content) {
79
80
  cachedHash = generateCache[filePath];
80
81
  return cachedHash === contentHash && (0, import_fs.existsSync)(filePath) ? !1 : ((0, import_fs.writeFileSync)(filePath, content, "utf-8"), generateCache[filePath] = contentHash, !0);
81
82
  }
82
- function generateModelsFile(modelFiles, modelsDirName) {
83
- var modelNames = modelFiles.map(function (f) {
84
- return (0, import_path.basename)(f, ".ts");
85
- }).sort(),
86
- getImportName = function (name) {
87
- return name === "user" ? "userPublic" : name;
88
- },
89
- imports = modelNames.map(function (name) {
90
- return `import * as ${getImportName(name)} from '../${modelsDirName}/${name}'`;
91
- }).join(`
92
- `),
93
- sortedByImportName = [...modelNames].sort(function (a, b) {
94
- return getImportName(a).localeCompare(getImportName(b));
95
- }),
96
- modelsObj = `export const models = {
97
- ${sortedByImportName.map(function (name) {
98
- return ` ${getImportName(name)},`;
99
- }).join(`
100
- `)}
101
- }`;
102
- return `// auto-generated by: on-zero generate
103
- ${imports}
104
-
105
- ${modelsObj}
106
- `;
107
- }
108
- function generateTypesFile(modelFiles) {
109
- var modelNames = modelFiles.map(function (f) {
110
- return (0, import_path.basename)(f, ".ts");
111
- }).sort(),
112
- getSchemaName = function (name) {
113
- return name === "user" ? "userPublic" : name;
114
- },
115
- typeExports = modelNames.map(function (name) {
116
- var pascalName = name.charAt(0).toUpperCase() + name.slice(1),
117
- schemaName = getSchemaName(name);
118
- return `export type ${pascalName} = TableInsertRow<typeof schema.${schemaName}>
119
- export type ${pascalName}Update = TableUpdateRow<typeof schema.${schemaName}>`;
120
- }).join(`
121
-
122
- `);
123
- return `import type { TableInsertRow, TableUpdateRow } from 'on-zero'
124
- import type * as schema from './tables'
125
-
126
- ${typeExports}
127
- `;
128
- }
129
- function generateTablesFile(modelFiles, modelsDirName) {
130
- var modelNames = modelFiles.map(function (f) {
131
- return (0, import_path.basename)(f, ".ts");
132
- }).sort(),
133
- getExportName = function (name) {
134
- return name === "user" ? "userPublic" : name;
135
- },
136
- exports = modelNames.map(function (name) {
137
- return `export { schema as ${getExportName(name)} } from '../${modelsDirName}/${name}'`;
138
- }).join(`
139
- `);
140
- return `// auto-generated by: on-zero generate
141
-
142
- ${exports}
143
- `;
144
- }
145
- function generateReadmeFile() {
146
- return `# generated
147
-
148
- this folder is auto-generated by on-zero. do not edit files here directly.
149
-
150
- ## what's generated
151
-
152
- - \`models.ts\` - exports all models from ../models
153
- - \`types.ts\` - typescript types derived from table schemas
154
- - \`tables.ts\` - exports table schemas for type inference
155
- - \`groupedQueries.ts\` - namespaced query re-exports for client setup
156
- - \`syncedQueries.ts\` - namespaced syncedQuery wrappers for server setup
157
- - \`syncedMutations.ts\` - valibot validators for mutation args (server auto-validation)
158
-
159
- ## usage guidelines
160
-
161
- **do not import generated files outside of the data folder.**
162
-
163
- ### queries
164
-
165
- write your queries as plain functions in \`../queries/\` and import them directly:
166
-
167
- \`\`\`ts
168
- // \u2705 good - import from queries
169
- import { channelMessages } from '~/data/queries/message'
170
- \`\`\`
171
-
172
- the generated query files are only used internally by zero client/server setup.
173
-
174
- ### types
175
-
176
- you can import types from this folder, but prefer re-exporting from \`../types.ts\`:
177
-
178
- \`\`\`ts
179
- // \u274C okay but not preferred
180
- import type { Message } from '~/data/generated/types'
181
-
182
- // \u2705 better - re-export from types.ts
183
- import type { Message } from '~/data/types'
184
- \`\`\`
185
-
186
- ## regeneration
187
-
188
- files are regenerated when you run:
189
-
190
- \`\`\`bash
191
- bun on-zero generate
192
- \`\`\`
193
-
194
- or in watch mode:
195
-
196
- \`\`\`bash
197
- bun on-zero generate --watch
198
- \`\`\`
199
-
200
- ## more info
201
-
202
- see the [on-zero readme](./node_modules/on-zero/README.md) for full documentation.
203
- `;
204
- }
205
- function generateGroupedQueriesFile(queries) {
206
- var sortedFiles = [...new Set(queries.map(function (q) {
207
- return q.sourceFile;
208
- }))].sort(),
209
- exports = sortedFiles.map(function (file) {
210
- return `export * as ${file} from '../queries/${file}'`;
211
- }).join(`
212
- `);
213
- return `/**
214
- * auto-generated by: on-zero generate
215
- *
216
- * grouped query re-exports for minification-safe query identity.
217
- * this file re-exports all query modules - while this breaks tree-shaking,
218
- * queries are typically small and few in number even in larger apps.
219
- */
220
- ${exports}
221
- `;
222
- }
223
- function generateSyncedQueriesFile(queries) {
224
- var queryByFile = /* @__PURE__ */new Map(),
225
- _iteratorNormalCompletion = !0,
226
- _didIteratorError = !1,
227
- _iteratorError = void 0;
228
- try {
229
- for (var _iterator = queries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
230
- var q = _step.value;
231
- queryByFile.has(q.sourceFile) || queryByFile.set(q.sourceFile, []), queryByFile.get(q.sourceFile).push(q);
232
- }
233
- } catch (err) {
234
- _didIteratorError = !0, _iteratorError = err;
235
- } finally {
236
- try {
237
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
238
- } finally {
239
- if (_didIteratorError) throw _iteratorError;
240
- }
241
- }
242
- var sortedFiles = Array.from(queryByFile.keys()).sort(),
243
- imports = `// auto-generated by: on-zero generate
244
- // server-side query definitions with validators
245
- import { defineQuery, defineQueries } from '@rocicorp/zero'
246
- import * as v from 'valibot'
247
- import * as Queries from './groupedQueries'
248
- `,
249
- namespaceDefs = sortedFiles.map(function (file) {
250
- var fileQueries = queryByFile.get(file).sort(function (a, b) {
251
- return a.name.localeCompare(b.name);
252
- }),
253
- queryDefs = fileQueries.map(function (q2) {
254
- var validatorDef = q2.valibotCode.trim();
255
- if (q2.params === "void" || !validatorDef) return ` ${q2.name}: defineQuery(() => Queries.${file}.${q2.name}()),`;
256
- var indentedValidator = validatorDef.split(`
257
- `).map(function (line, i) {
258
- return i === 0 ? line : ` ${line}`;
259
- }).join(`
260
- `);
261
- return ` ${q2.name}: defineQuery(
262
- ${indentedValidator},
263
- ({ args }) => Queries.${file}.${q2.name}(args)
264
- ),`;
265
- }).join(`
266
- `);
267
- return `const ${file} = {
268
- ${queryDefs}
269
- }`;
270
- }).join(`
271
-
272
- `),
273
- queriesObject = sortedFiles.map(function (file) {
274
- return ` ${file},`;
275
- }).join(`
276
- `);
277
- return `${imports}
278
- ${namespaceDefs}
279
-
280
- export const queries = defineQueries({
281
- ${queriesObject}
282
- })
283
- `;
284
- }
285
83
  function createTypeResolver(ts, files, dir) {
286
84
  var configPath = ts.findConfigFile(dir, ts.sys.fileExists, "tsconfig.json"),
287
85
  compilerOptions = {
@@ -551,7 +349,7 @@ function extractSchemaColumns(ts, sourceFile, columns, primaryKeys) {
551
349
  var colName = (_prop_name = prop.name) === null || _prop_name === void 0 ? void 0 : _prop_name.getText(sourceFile);
552
350
  if (colName) {
553
351
  var initText = prop.initializer.getText(sourceFile),
554
- colType = parseColumnType(initText);
352
+ colType = (0, import_generate_helpers.parseColumnType)(initText);
555
353
  columns[colName] = colType;
556
354
  }
557
355
  }
@@ -572,224 +370,6 @@ function extractSchemaColumns(ts, sourceFile, columns, primaryKeys) {
572
370
  }
573
371
  visit(sourceFile);
574
372
  }
575
- function parseColumnType(initText) {
576
- var optional = initText.includes(".optional()"),
577
- type = "string";
578
- return initText.startsWith("number(") ? type = "number" : initText.startsWith("boolean(") ? type = "boolean" : initText.startsWith("json(") || initText.startsWith("json<") ? type = "json" : initText.startsWith("enumeration(") && (type = "enum"), {
579
- type,
580
- optional,
581
- customType: void 0
582
- };
583
- }
584
- function columnTypeToValibot(col) {
585
- var base = "v.string()";
586
- switch (col.type) {
587
- case "string":
588
- base = "v.string()";
589
- break;
590
- case "number":
591
- base = "v.number()";
592
- break;
593
- case "boolean":
594
- base = "v.boolean()";
595
- break;
596
- case "json":
597
- base = "v.unknown()";
598
- break;
599
- case "enum":
600
- base = "v.string()";
601
- break;
602
- }
603
- return col.optional ? `v.optional(v.nullable(${base}))` : base;
604
- }
605
- function shouldSkipObjectKey(name) {
606
- return name.startsWith("__@");
607
- }
608
- function formatObjectKey(name) {
609
- return /^[$A-Z_a-z][$\w]*$/.test(name) ? name : JSON.stringify(name);
610
- }
611
- function schemaColumnsToValibot(columns, primaryKeys, mode) {
612
- var entries = [];
613
- if (mode === "delete") {
614
- var _iteratorNormalCompletion = !0,
615
- _didIteratorError = !1,
616
- _iteratorError = void 0;
617
- try {
618
- for (var _iterator = primaryKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
619
- var pk = _step.value,
620
- col = columns[pk];
621
- col && entries.push(`${formatObjectKey(pk)}: ${columnTypeToValibot({
622
- ...col,
623
- optional: !1
624
- })}`);
625
- }
626
- } catch (err) {
627
- _didIteratorError = !0, _iteratorError = err;
628
- } finally {
629
- try {
630
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
631
- } finally {
632
- if (_didIteratorError) throw _iteratorError;
633
- }
634
- }
635
- } else if (mode === "update") {
636
- var _iteratorNormalCompletion1 = !0,
637
- _didIteratorError1 = !1,
638
- _iteratorError1 = void 0;
639
- try {
640
- for (var _iterator1 = Object.entries(columns)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
641
- var [name, col1] = _step1.value,
642
- isPK = primaryKeys.includes(name);
643
- isPK ? entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
644
- ...col1,
645
- optional: !1
646
- })}`) : entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
647
- ...col1,
648
- optional: !0
649
- })}`);
650
- }
651
- } catch (err) {
652
- _didIteratorError1 = !0, _iteratorError1 = err;
653
- } finally {
654
- try {
655
- !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
656
- } finally {
657
- if (_didIteratorError1) throw _iteratorError1;
658
- }
659
- }
660
- } else {
661
- var _iteratorNormalCompletion2 = !0,
662
- _didIteratorError2 = !1,
663
- _iteratorError2 = void 0;
664
- try {
665
- for (var _iterator2 = Object.entries(columns)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
666
- var [name1, col2] = _step2.value;
667
- entries.push(`${formatObjectKey(name1)}: ${columnTypeToValibot(col2)}`);
668
- }
669
- } catch (err) {
670
- _didIteratorError2 = !0, _iteratorError2 = err;
671
- } finally {
672
- try {
673
- !_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
674
- } finally {
675
- if (_didIteratorError2) throw _iteratorError2;
676
- }
677
- }
678
- }
679
- return `v.object({
680
- ${entries.join(`,
681
- `)},
682
- })`;
683
- }
684
- function generateSyncedMutationsFile(modelMutations) {
685
- var sorted = [...modelMutations].sort(function (a, b) {
686
- return a.modelName.localeCompare(b.modelName);
687
- }),
688
- modelDefs = sorted.map(function (model) {
689
- var entries = [];
690
- if (model.hasCRUD && Object.keys(model.columns).length > 0) for (var _loop = function (_i2, _iter2) {
691
- var mode = _iter2[_i2],
692
- hasCustomOverride = model.custom.some(function (m) {
693
- return m.name === mode;
694
- });
695
- if (hasCustomOverride) {
696
- var customMut = model.custom.find(function (m) {
697
- return m.name === mode;
698
- });
699
- customMut.valibotCode ? entries.push(` ${mode}: ${extractValibotExpression(customMut.valibotCode)},`) : entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
700
- } else entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
701
- }, _i = 0, _iter = ["insert", "update", "delete"]; _i < _iter.length; _i++) _loop(_i, _iter);
702
- var _iteratorNormalCompletion = !0,
703
- _didIteratorError = !1,
704
- _iteratorError = void 0;
705
- try {
706
- for (var _iterator = model.custom[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
707
- var mut = _step.value;
708
- if (!(model.hasCRUD && ["insert", "update", "delete", "upsert"].includes(mut.name))) {
709
- if (mut.paramType === "void" || !mut.valibotCode) {
710
- entries.push(` ${mut.name}: v.void_(),`);
711
- continue;
712
- }
713
- entries.push(` ${mut.name}: ${extractValibotExpression(mut.valibotCode)},`);
714
- }
715
- }
716
- } catch (err) {
717
- _didIteratorError = !0, _iteratorError = err;
718
- } finally {
719
- try {
720
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
721
- } finally {
722
- if (_didIteratorError) throw _iteratorError;
723
- }
724
- }
725
- return ` ${model.modelName}: {
726
- ${entries.join(`
727
- `)}
728
- },`;
729
- }).join(`
730
- `);
731
- return `// auto-generated by: on-zero generate
732
- // mutation validators derived from model schemas and handler types
733
- import * as v from 'valibot'
734
-
735
- export const mutationValidators = {
736
- ${modelDefs}
737
- }
738
- `;
739
- }
740
- function extractValibotExpression(valibotCode) {
741
- return valibotCode.trim() || "v.unknown()";
742
- }
743
- function parseTypeString(type) {
744
- if (type = type.trim(), type === "string") return "v.string()";
745
- if (type === "number") return "v.number()";
746
- if (type === "boolean") return "v.boolean()";
747
- if (type === "void" || type === "undefined") return "v.void_()";
748
- if (type === "null") return "v.null_()";
749
- if (type === "any" || type === "unknown") return "v.unknown()";
750
- if (type.startsWith("{") && type.endsWith("}")) {
751
- var inner = type.slice(1, -1).trim();
752
- if (!inner) return "v.object({})";
753
- var normalized = inner.replace(/\n/g, "; ").replace(/;\s*;/g, ";"),
754
- entries = [],
755
- _iteratorNormalCompletion = !0,
756
- _didIteratorError = !1,
757
- _iteratorError = void 0;
758
- try {
759
- for (var _iterator = normalized.split(";")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
760
- var part = _step.value,
761
- trimmed = part.trim().replace(/,\s*$/, "");
762
- if (trimmed) {
763
- var match = trimmed.match(/^(?:readonly\s+)?(\w+)(\?)?:\s*(.+)$/);
764
- if (match) {
765
- var [, name, opt, typeStr] = match,
766
- parsed = parseTypeString(typeStr.trim());
767
- if (!parsed) return null;
768
- var val = parsed;
769
- opt && (val = `v.optional(${val})`), entries.push(`${formatObjectKey(name)}: ${val}`);
770
- }
771
- }
772
- }
773
- } catch (err) {
774
- _didIteratorError = !0, _iteratorError = err;
775
- } finally {
776
- try {
777
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
778
- } finally {
779
- if (_didIteratorError) throw _iteratorError;
780
- }
781
- }
782
- return entries.length === 0 ? "v.object({})" : `v.object({
783
- ${entries.join(`,
784
- `)},
785
- })`;
786
- }
787
- if (type.endsWith("[]")) {
788
- var inner1 = parseTypeString(type.slice(0, -2).trim());
789
- return inner1 ? `v.array(${inner1})` : null;
790
- }
791
- return null;
792
- }
793
373
  function tsTypeToValibot(ts, checker, type, seen) {
794
374
  seen || (seen = /* @__PURE__ */new Set());
795
375
  var flags = type.getFlags();
@@ -851,11 +431,11 @@ function tsTypeToValibot(ts, checker, type, seen) {
851
431
  for (var _iterator = props[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
852
432
  var prop = _step.value,
853
433
  name1 = prop.getName();
854
- if (!shouldSkipObjectKey(name1)) {
434
+ if (!(0, import_generate_helpers.shouldSkipObjectKey)(name1)) {
855
435
  var propType = resolveSymbolType(prop),
856
436
  isOptional = !!(prop.getFlags() & ts.SymbolFlags.Optional),
857
437
  val = recurse(propType);
858
- isOptional && !val.startsWith("v.optional(") && (val = `v.optional(${val})`), entries.push(`${formatObjectKey(name1)}: ${val}`);
438
+ isOptional && !val.startsWith("v.optional(") && (val = `v.optional(${val})`), entries.push(`${(0, import_generate_helpers.formatObjectKey)(name1)}: ${val}`);
859
439
  }
860
440
  }
861
441
  } catch (err) {
@@ -898,11 +478,11 @@ function tsTypeToValibot(ts, checker, type, seen) {
898
478
  for (var _iterator1 = props1[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
899
479
  var prop1 = _step1.value,
900
480
  name3 = prop1.getName();
901
- if (!shouldSkipObjectKey(name3)) {
481
+ if (!(0, import_generate_helpers.shouldSkipObjectKey)(name3)) {
902
482
  var propType1 = resolveSymbolType(prop1),
903
483
  isOptional1 = !!(prop1.getFlags() & ts.SymbolFlags.Optional),
904
484
  val1 = recurse(propType1);
905
- isOptional1 && !val1.startsWith("v.optional(") && (val1 = `v.optional(${val1})`), entries1.push(`${formatObjectKey(name3)}: ${val1}`);
485
+ isOptional1 && !val1.startsWith("v.optional(") && (val1 = `v.optional(${val1})`), entries1.push(`${(0, import_generate_helpers.formatObjectKey)(name3)}: ${val1}`);
906
486
  }
907
487
  }
908
488
  } catch (err) {
@@ -1045,18 +625,24 @@ async function generate(options) {
1045
625
  filesWithSchema = allModelFiles.filter(function (f) {
1046
626
  return (0, import_fs.readFileSync)((0, import_path.resolve)(modelsDir, f), "utf-8").includes("export const schema = table(");
1047
627
  }),
1048
- writeResults = [writeFileIfChanged((0, import_path.resolve)(generatedDir, "models.ts"), generateModelsFile(allModelFiles, modelsDirName)),
628
+ allModelNames = allModelFiles.map(function (f) {
629
+ return (0, import_path.basename)(f, ".ts");
630
+ }),
631
+ schemaModelNames = filesWithSchema.map(function (f) {
632
+ return (0, import_path.basename)(f, ".ts");
633
+ }),
634
+ writeResults = [writeFileIfChanged((0, import_path.resolve)(generatedDir, "models.ts"), (0, import_generate_helpers.generateModelsFile)(allModelNames, modelsDirName)),
1049
635
  // only generate types.ts and tables.ts when model files define schemas.
1050
636
  // when using drizzle-zero CLI for schema generation, these files are
1051
637
  // managed externally and should not be overwritten.
1052
- ...(filesWithSchema.length > 0 ? [writeFileIfChanged((0, import_path.resolve)(generatedDir, "types.ts"), generateTypesFile(filesWithSchema)), writeFileIfChanged((0, import_path.resolve)(generatedDir, "tables.ts"), generateTablesFile(filesWithSchema, modelsDirName))] : []), writeFileIfChanged((0, import_path.resolve)(generatedDir, "README.md"), generateReadmeFile())],
638
+ ...(filesWithSchema.length > 0 ? [writeFileIfChanged((0, import_path.resolve)(generatedDir, "types.ts"), (0, import_generate_helpers.generateTypesFile)(schemaModelNames)), writeFileIfChanged((0, import_path.resolve)(generatedDir, "tables.ts"), (0, import_generate_helpers.generateTablesFile)(schemaModelNames, modelsDirName))] : []), writeFileIfChanged((0, import_path.resolve)(generatedDir, "README.md"), (0, import_generate_helpers.generateReadmeFile)())],
1053
639
  filesChanged = writeResults.filter(Boolean).length,
1054
640
  queryCount = 0,
1055
641
  mutationCount = 0,
1056
642
  ts = await import("typescript"),
1057
643
  typeToValibot = function (paramType) {
1058
644
  try {
1059
- return parseTypeString(paramType.trim());
645
+ return (0, import_generate_helpers.parseTypeString)(paramType.trim());
1060
646
  } catch {
1061
647
  return null;
1062
648
  }
@@ -1143,8 +729,8 @@ async function generate(options) {
1143
729
  }
1144
730
  }
1145
731
  queryCount = allQueries.length;
1146
- var groupedChanged = writeFileIfChanged((0, import_path.resolve)(generatedDir, "groupedQueries.ts"), generateGroupedQueriesFile(allQueries)),
1147
- syncedChanged = writeFileIfChanged((0, import_path.resolve)(generatedDir, "syncedQueries.ts"), generateSyncedQueriesFile(allQueries));
732
+ var groupedChanged = writeFileIfChanged((0, import_path.resolve)(generatedDir, "groupedQueries.ts"), (0, import_generate_helpers.generateGroupedQueriesFile)(allQueries)),
733
+ syncedChanged = writeFileIfChanged((0, import_path.resolve)(generatedDir, "syncedQueries.ts"), (0, import_generate_helpers.generateSyncedQueriesFile)(allQueries));
1148
734
  groupedChanged && filesChanged++, syncedChanged && filesChanged++;
1149
735
  }
1150
736
  var allModelMutations = [],
@@ -1274,7 +860,7 @@ async function generate(options) {
1274
860
  }
1275
861
  }
1276
862
  if (allModelMutations.length > 0) {
1277
- var mutationsChanged = writeFileIfChanged((0, import_path.resolve)(generatedDir, "syncedMutations.ts"), generateSyncedMutationsFile(allModelMutations));
863
+ var mutationsChanged = writeFileIfChanged((0, import_path.resolve)(generatedDir, "syncedMutations.ts"), (0, import_generate_helpers.generateSyncedMutationsFile)(allModelMutations));
1278
864
  mutationsChanged && filesChanged++;
1279
865
  }
1280
866
  if (filesChanged > 0 && !silent && console.info(`\u2713 ${allModelFiles.length} models (${filesWithSchema.length} schemas)${queryCount ? `, ${queryCount} queries` : ""}${mutationCount ? `, ${mutationCount} mutations` : ""}`), filesChanged > 0 && after) {