on-zero 0.4.3 → 0.4.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.
Files changed (249) hide show
  1. package/dist/cjs/cli.cjs +46 -41
  2. package/dist/cjs/cli.native.js +48 -43
  3. package/dist/cjs/cli.native.js.map +1 -1
  4. package/dist/cjs/constants.cjs +14 -12
  5. package/dist/cjs/constants.native.js +14 -12
  6. package/dist/cjs/constants.native.js.map +1 -1
  7. package/dist/cjs/createPermissions.cjs +66 -34
  8. package/dist/cjs/createPermissions.native.js +143 -87
  9. package/dist/cjs/createPermissions.native.js.map +1 -1
  10. package/dist/cjs/createSchemaFromDrizzle.cjs +15 -13
  11. package/dist/cjs/createSchemaFromDrizzle.native.js +15 -13
  12. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
  13. package/dist/cjs/createUseQuery.cjs +48 -35
  14. package/dist/cjs/createUseQuery.native.js +52 -38
  15. package/dist/cjs/createUseQuery.native.js.map +1 -1
  16. package/dist/cjs/createZeroClient.cjs +177 -135
  17. package/dist/cjs/createZeroClient.native.js +246 -195
  18. package/dist/cjs/createZeroClient.native.js.map +1 -1
  19. package/dist/cjs/createZeroServer.cjs +175 -129
  20. package/dist/cjs/createZeroServer.native.js +170 -138
  21. package/dist/cjs/createZeroServer.native.js.map +1 -1
  22. package/dist/cjs/generate-helpers.cjs +122 -88
  23. package/dist/cjs/generate-helpers.native.js +209 -174
  24. package/dist/cjs/generate-helpers.native.js.map +1 -1
  25. package/dist/cjs/generate-lite.cjs +90 -58
  26. package/dist/cjs/generate-lite.native.js +200 -140
  27. package/dist/cjs/generate-lite.native.js.map +1 -1
  28. package/dist/cjs/generate-lite.test.cjs +229 -192
  29. package/dist/cjs/generate-lite.test.native.js +229 -194
  30. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  31. package/dist/cjs/generate.cjs +455 -291
  32. package/dist/cjs/generate.native.js +747 -565
  33. package/dist/cjs/generate.native.js.map +1 -1
  34. package/dist/cjs/generate.test.cjs +170 -106
  35. package/dist/cjs/generate.test.native.js +171 -107
  36. package/dist/cjs/generate.test.native.js.map +1 -1
  37. package/dist/cjs/helpers/batchQuery.cjs +29 -18
  38. package/dist/cjs/helpers/batchQuery.native.js +36 -21
  39. package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
  40. package/dist/cjs/helpers/clearZeroClientData.cjs +30 -21
  41. package/dist/cjs/helpers/clearZeroClientData.native.js +42 -33
  42. package/dist/cjs/helpers/clearZeroClientData.native.js.map +1 -1
  43. package/dist/cjs/helpers/createMutators.cjs +80 -42
  44. package/dist/cjs/helpers/createMutators.native.js +139 -87
  45. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  46. package/dist/cjs/helpers/didRunPermissionCheck.cjs +19 -13
  47. package/dist/cjs/helpers/didRunPermissionCheck.native.js +22 -20
  48. package/dist/cjs/helpers/didRunPermissionCheck.native.js.map +1 -1
  49. package/dist/cjs/helpers/ensureLoggedIn.cjs +16 -13
  50. package/dist/cjs/helpers/ensureLoggedIn.native.js +21 -18
  51. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  52. package/dist/cjs/helpers/getAuth.cjs +25 -15
  53. package/dist/cjs/helpers/getAuth.native.js +25 -15
  54. package/dist/cjs/helpers/getAuth.native.js.map +1 -1
  55. package/dist/cjs/helpers/mutatorContext.cjs +21 -14
  56. package/dist/cjs/helpers/mutatorContext.native.js +21 -15
  57. package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
  58. package/dist/cjs/helpers/prettyFormatZeroQuery.cjs +126 -81
  59. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js +135 -92
  60. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  61. package/dist/cjs/helpers/queryContext.cjs +12 -10
  62. package/dist/cjs/helpers/queryContext.native.js +16 -13
  63. package/dist/cjs/helpers/queryContext.native.js.map +1 -1
  64. package/dist/cjs/helpers/showZeroClientError.cjs +24 -19
  65. package/dist/cjs/helpers/showZeroClientError.native.js +38 -34
  66. package/dist/cjs/helpers/showZeroClientError.native.js.map +1 -1
  67. package/dist/cjs/helpers/useZeroDebug.cjs +82 -49
  68. package/dist/cjs/helpers/useZeroDebug.native.js +83 -55
  69. package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
  70. package/dist/cjs/index.cjs +17 -15
  71. package/dist/cjs/index.native.js +17 -15
  72. package/dist/cjs/index.native.js.map +1 -1
  73. package/dist/cjs/modelRegistry.cjs +12 -10
  74. package/dist/cjs/modelRegistry.native.js +12 -10
  75. package/dist/cjs/modelRegistry.native.js.map +1 -1
  76. package/dist/cjs/mutations.cjs +66 -42
  77. package/dist/cjs/mutations.native.js +68 -46
  78. package/dist/cjs/mutations.native.js.map +1 -1
  79. package/dist/cjs/queryRegistry.cjs +13 -10
  80. package/dist/cjs/queryRegistry.native.js +14 -11
  81. package/dist/cjs/queryRegistry.native.js.map +1 -1
  82. package/dist/cjs/resolveQuery.cjs +22 -18
  83. package/dist/cjs/resolveQuery.native.js +32 -28
  84. package/dist/cjs/resolveQuery.native.js.map +1 -1
  85. package/dist/cjs/run.cjs +35 -28
  86. package/dist/cjs/run.native.js +35 -29
  87. package/dist/cjs/run.native.js.map +1 -1
  88. package/dist/cjs/server.cjs +7 -5
  89. package/dist/cjs/serverWhere.cjs +13 -11
  90. package/dist/cjs/serverWhere.native.js +13 -11
  91. package/dist/cjs/serverWhere.native.js.map +1 -1
  92. package/dist/cjs/serverWhere.test.cjs +83 -55
  93. package/dist/cjs/serverWhere.test.native.js +72 -50
  94. package/dist/cjs/serverWhere.test.native.js.map +1 -1
  95. package/dist/cjs/state.cjs +49 -44
  96. package/dist/cjs/state.native.js +56 -53
  97. package/dist/cjs/state.native.js.map +1 -1
  98. package/dist/cjs/types.cjs +7 -5
  99. package/dist/cjs/types.native.js +7 -5
  100. package/dist/cjs/types.native.js.map +1 -1
  101. package/dist/cjs/usePermission.test.cjs +58 -45
  102. package/dist/cjs/usePermission.test.native.js +59 -48
  103. package/dist/cjs/usePermission.test.native.js.map +1 -1
  104. package/dist/cjs/vite-plugin.cjs +41 -21
  105. package/dist/cjs/vite-plugin.native.js +61 -47
  106. package/dist/cjs/vite-plugin.native.js.map +1 -1
  107. package/dist/cjs/where.cjs +39 -24
  108. package/dist/cjs/where.native.js +44 -29
  109. package/dist/cjs/where.native.js.map +1 -1
  110. package/dist/cjs/zeroRunner.cjs +18 -12
  111. package/dist/cjs/zeroRunner.native.js +22 -16
  112. package/dist/cjs/zeroRunner.native.js.map +1 -1
  113. package/dist/cjs/zql.cjs +14 -11
  114. package/dist/cjs/zql.native.js +19 -17
  115. package/dist/cjs/zql.native.js.map +1 -1
  116. package/dist/esm/cli.mjs +43 -38
  117. package/dist/esm/cli.mjs.map +1 -1
  118. package/dist/esm/cli.native.js +44 -39
  119. package/dist/esm/cli.native.js.map +1 -1
  120. package/dist/esm/constants.mjs +2 -2
  121. package/dist/esm/constants.mjs.map +1 -1
  122. package/dist/esm/constants.native.js +2 -2
  123. package/dist/esm/constants.native.js.map +1 -1
  124. package/dist/esm/createPermissions.mjs +48 -18
  125. package/dist/esm/createPermissions.mjs.map +1 -1
  126. package/dist/esm/createPermissions.native.js +125 -71
  127. package/dist/esm/createPermissions.native.js.map +1 -1
  128. package/dist/esm/createUseQuery.mjs +32 -21
  129. package/dist/esm/createUseQuery.mjs.map +1 -1
  130. package/dist/esm/createUseQuery.native.js +36 -24
  131. package/dist/esm/createUseQuery.native.js.map +1 -1
  132. package/dist/esm/createZeroClient.mjs +148 -108
  133. package/dist/esm/createZeroClient.mjs.map +1 -1
  134. package/dist/esm/createZeroClient.native.js +217 -168
  135. package/dist/esm/createZeroClient.native.js.map +1 -1
  136. package/dist/esm/createZeroServer.mjs +148 -104
  137. package/dist/esm/createZeroServer.mjs.map +1 -1
  138. package/dist/esm/createZeroServer.native.js +143 -113
  139. package/dist/esm/createZeroServer.native.js.map +1 -1
  140. package/dist/esm/generate-helpers.mjs +110 -78
  141. package/dist/esm/generate-helpers.mjs.map +1 -1
  142. package/dist/esm/generate-helpers.native.js +197 -164
  143. package/dist/esm/generate-helpers.native.js.map +1 -1
  144. package/dist/esm/generate-lite.mjs +78 -48
  145. package/dist/esm/generate-lite.mjs.map +1 -1
  146. package/dist/esm/generate-lite.native.js +188 -130
  147. package/dist/esm/generate-lite.native.js.map +1 -1
  148. package/dist/esm/generate-lite.test.mjs +227 -190
  149. package/dist/esm/generate-lite.test.mjs.map +1 -1
  150. package/dist/esm/generate-lite.test.native.js +227 -192
  151. package/dist/esm/generate-lite.test.native.js.map +1 -1
  152. package/dist/esm/generate.mjs +427 -265
  153. package/dist/esm/generate.mjs.map +1 -1
  154. package/dist/esm/generate.native.js +718 -538
  155. package/dist/esm/generate.native.js.map +1 -1
  156. package/dist/esm/generate.test.mjs +165 -101
  157. package/dist/esm/generate.test.mjs.map +1 -1
  158. package/dist/esm/generate.test.native.js +165 -101
  159. package/dist/esm/generate.test.native.js.map +1 -1
  160. package/dist/esm/helpers/batchQuery.mjs +17 -8
  161. package/dist/esm/helpers/batchQuery.mjs.map +1 -1
  162. package/dist/esm/helpers/batchQuery.native.js +24 -11
  163. package/dist/esm/helpers/batchQuery.native.js.map +1 -1
  164. package/dist/esm/helpers/clearZeroClientData.mjs +18 -11
  165. package/dist/esm/helpers/clearZeroClientData.mjs.map +1 -1
  166. package/dist/esm/helpers/clearZeroClientData.native.js +30 -23
  167. package/dist/esm/helpers/clearZeroClientData.native.js.map +1 -1
  168. package/dist/esm/helpers/createMutators.mjs +53 -17
  169. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  170. package/dist/esm/helpers/createMutators.native.js +112 -62
  171. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  172. package/dist/esm/helpers/didRunPermissionCheck.mjs +7 -3
  173. package/dist/esm/helpers/didRunPermissionCheck.mjs.map +1 -1
  174. package/dist/esm/helpers/didRunPermissionCheck.native.js +9 -9
  175. package/dist/esm/helpers/didRunPermissionCheck.native.js.map +1 -1
  176. package/dist/esm/helpers/ensureLoggedIn.mjs +2 -1
  177. package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
  178. package/dist/esm/helpers/ensureLoggedIn.native.js +2 -1
  179. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
  180. package/dist/esm/helpers/getAuth.mjs +10 -2
  181. package/dist/esm/helpers/getAuth.mjs.map +1 -1
  182. package/dist/esm/helpers/getAuth.native.js +10 -2
  183. package/dist/esm/helpers/getAuth.native.js.map +1 -1
  184. package/dist/esm/helpers/mutatorContext.mjs +9 -4
  185. package/dist/esm/helpers/mutatorContext.mjs.map +1 -1
  186. package/dist/esm/helpers/mutatorContext.native.js +8 -4
  187. package/dist/esm/helpers/mutatorContext.native.js.map +1 -1
  188. package/dist/esm/helpers/prettyFormatZeroQuery.mjs +114 -71
  189. package/dist/esm/helpers/prettyFormatZeroQuery.mjs.map +1 -1
  190. package/dist/esm/helpers/prettyFormatZeroQuery.native.js +121 -80
  191. package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  192. package/dist/esm/helpers/queryContext.native.js +2 -1
  193. package/dist/esm/helpers/queryContext.native.js.map +1 -1
  194. package/dist/esm/helpers/showZeroClientError.mjs +12 -9
  195. package/dist/esm/helpers/showZeroClientError.mjs.map +1 -1
  196. package/dist/esm/helpers/showZeroClientError.native.js +25 -23
  197. package/dist/esm/helpers/showZeroClientError.native.js.map +1 -1
  198. package/dist/esm/helpers/useZeroDebug.mjs +67 -36
  199. package/dist/esm/helpers/useZeroDebug.mjs.map +1 -1
  200. package/dist/esm/helpers/useZeroDebug.native.js +68 -42
  201. package/dist/esm/helpers/useZeroDebug.native.js.map +1 -1
  202. package/dist/esm/mutations.mjs +51 -29
  203. package/dist/esm/mutations.mjs.map +1 -1
  204. package/dist/esm/mutations.native.js +53 -33
  205. package/dist/esm/mutations.native.js.map +1 -1
  206. package/dist/esm/queryRegistry.mjs +1 -0
  207. package/dist/esm/queryRegistry.mjs.map +1 -1
  208. package/dist/esm/queryRegistry.native.js +2 -1
  209. package/dist/esm/queryRegistry.native.js.map +1 -1
  210. package/dist/esm/resolveQuery.mjs +10 -8
  211. package/dist/esm/resolveQuery.mjs.map +1 -1
  212. package/dist/esm/resolveQuery.native.js +20 -18
  213. package/dist/esm/resolveQuery.native.js.map +1 -1
  214. package/dist/esm/run.mjs +21 -16
  215. package/dist/esm/run.mjs.map +1 -1
  216. package/dist/esm/run.native.js +20 -16
  217. package/dist/esm/run.native.js.map +1 -1
  218. package/dist/esm/serverWhere.mjs +1 -1
  219. package/dist/esm/serverWhere.mjs.map +1 -1
  220. package/dist/esm/serverWhere.native.js +1 -1
  221. package/dist/esm/serverWhere.native.js.map +1 -1
  222. package/dist/esm/serverWhere.test.mjs +79 -51
  223. package/dist/esm/serverWhere.test.mjs.map +1 -1
  224. package/dist/esm/serverWhere.test.native.js +68 -46
  225. package/dist/esm/serverWhere.test.native.js.map +1 -1
  226. package/dist/esm/state.mjs +35 -32
  227. package/dist/esm/state.mjs.map +1 -1
  228. package/dist/esm/state.native.js +41 -40
  229. package/dist/esm/state.native.js.map +1 -1
  230. package/dist/esm/usePermission.test.mjs +53 -40
  231. package/dist/esm/usePermission.test.mjs.map +1 -1
  232. package/dist/esm/usePermission.test.native.js +54 -43
  233. package/dist/esm/usePermission.test.native.js.map +1 -1
  234. package/dist/esm/vite-plugin.mjs +27 -9
  235. package/dist/esm/vite-plugin.mjs.map +1 -1
  236. package/dist/esm/vite-plugin.native.js +47 -35
  237. package/dist/esm/vite-plugin.native.js.map +1 -1
  238. package/dist/esm/where.mjs +24 -11
  239. package/dist/esm/where.mjs.map +1 -1
  240. package/dist/esm/where.native.js +29 -16
  241. package/dist/esm/where.native.js.map +1 -1
  242. package/dist/esm/zeroRunner.mjs +6 -2
  243. package/dist/esm/zeroRunner.mjs.map +1 -1
  244. package/dist/esm/zeroRunner.native.js +8 -4
  245. package/dist/esm/zeroRunner.native.js.map +1 -1
  246. package/dist/esm/zql.mjs +2 -1
  247. package/dist/esm/zql.mjs.map +1 -1
  248. package/dist/esm/zql.native.js.map +1 -1
  249. package/package.json +3 -3
@@ -3,20 +3,22 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
5
  var __export = (target, all) => {
6
- for (var name in all) __defProp(target, name, {
7
- get: all[name],
8
- enumerable: !0
9
- });
10
- },
11
- __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
14
  get: () => from[key],
14
15
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
16
  });
16
- return to;
17
- };
17
+ }
18
+ return to;
19
+ };
18
20
  var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
19
- value: !0
21
+ value: true
20
22
  }), mod);
21
23
  var generate_helpers_exports = {};
22
24
  __export(generate_helpers_exports, {
@@ -47,7 +49,8 @@ function getModelImportName(name) {
47
49
  return name === "user" ? "userPublic" : name;
48
50
  }
49
51
  function parseTypeString(type) {
50
- if (type = type.trim(), type === "string") return "v.string()";
52
+ type = type.trim();
53
+ if (type === "string") return "v.string()";
51
54
  if (type === "number") return "v.number()";
52
55
  if (type === "boolean") return "v.boolean()";
53
56
  if (type === "void" || type === "undefined") return "v.void_()";
@@ -56,22 +59,23 @@ function parseTypeString(type) {
56
59
  if (type.startsWith("{") && type.endsWith("}")) {
57
60
  const inner = type.slice(1, -1).trim();
58
61
  if (!inner) return "v.object({})";
59
- const normalized = inner.replace(/\n/g, "; ").replace(/;\s*;/g, ";"),
60
- entries = [];
62
+ const normalized = inner.replace(/\n/g, "; ").replace(/;\s*;/g, ";");
63
+ const entries = [];
61
64
  for (const part of normalized.split(";")) {
62
65
  const trimmed = part.trim().replace(/,\s*$/, "");
63
66
  if (!trimmed) continue;
64
67
  const match = trimmed.match(/^(?:readonly\s+)?(\w+)(\?)?:\s*(.+)$/);
65
68
  if (!match) continue;
66
- const [, name, opt, typeStr] = match,
67
- parsed = parseTypeString(typeStr.trim());
69
+ const [, name, opt, typeStr] = match;
70
+ const parsed = parseTypeString(typeStr.trim());
68
71
  if (!parsed) return null;
69
72
  let val = parsed;
70
- opt && (val = `v.optional(${val})`), entries.push(`${formatObjectKey(name)}: ${val}`);
73
+ if (opt) val = `v.optional(${val})`;
74
+ entries.push(`${formatObjectKey(name)}: ${val}`);
71
75
  }
72
- return entries.length === 0 ? "v.object({})" : `v.object({
73
- ${entries.join(`,
74
- `)},
76
+ if (entries.length === 0) return "v.object({})";
77
+ return `v.object({
78
+ ${entries.join(",\n ")},
75
79
  })`;
76
80
  }
77
81
  if (type.endsWith("[]")) {
@@ -81,12 +85,11 @@ function parseTypeString(type) {
81
85
  return null;
82
86
  }
83
87
  function generateModelsFile(modelNames, modelsDirName) {
84
- const sorted = [...modelNames].sort(),
85
- imports = sorted.map(name => `import * as ${getModelImportName(name)} from '../${modelsDirName}/${name}'`).join(`
86
- `),
87
- modelsObj = `export const models = {
88
- ${[...sorted].sort((a, b) => getModelImportName(a).localeCompare(getModelImportName(b))).map(name => ` ${getModelImportName(name)},`).join(`
89
- `)}
88
+ const sorted = [...modelNames].sort();
89
+ const imports = sorted.map(name => `import * as ${getModelImportName(name)} from '../${modelsDirName}/${name}'`).join("\n");
90
+ const sortedByImportName = [...sorted].sort((a, b) => getModelImportName(a).localeCompare(getModelImportName(b)));
91
+ const modelsObj = `export const models = {
92
+ ${sortedByImportName.map(name => ` ${getModelImportName(name)},`).join("\n")}
90
93
  }`;
91
94
  return `// auto-generated by: on-zero generate
92
95
  ${imports}
@@ -95,24 +98,25 @@ ${modelsObj}
95
98
  `;
96
99
  }
97
100
  function generateTypesFile(modelNames) {
98
- return `import type { TableInsertRow, TableUpdateRow } from 'on-zero'
99
- import type * as schema from './tables'
100
-
101
- ${[...modelNames].sort().map(name => {
102
- const pascalName = name.charAt(0).toUpperCase() + name.slice(1),
103
- schemaName = getModelImportName(name);
101
+ const sorted = [...modelNames].sort();
102
+ const typeExports = sorted.map(name => {
103
+ const pascalName = name.charAt(0).toUpperCase() + name.slice(1);
104
+ const schemaName = getModelImportName(name);
104
105
  return `export type ${pascalName} = TableInsertRow<typeof schema.${schemaName}>
105
106
  export type ${pascalName}Update = TableUpdateRow<typeof schema.${schemaName}>`;
106
- }).join(`
107
+ }).join("\n\n");
108
+ return `import type { TableInsertRow, TableUpdateRow } from 'on-zero'
109
+ import type * as schema from './tables'
107
110
 
108
- `)}
111
+ ${typeExports}
109
112
  `;
110
113
  }
111
114
  function generateTablesFile(modelNames, modelsDirName) {
115
+ const sorted = [...modelNames].sort();
116
+ const exports = sorted.map(name => `export { schema as ${getModelImportName(name)} } from '../${modelsDirName}/${name}'`).join("\n");
112
117
  return `// auto-generated by: on-zero generate
113
118
 
114
- ${[...modelNames].sort().map(name => `export { schema as ${getModelImportName(name)} } from '../${modelsDirName}/${name}'`).join(`
115
- `)}
119
+ ${exports}
116
120
  `;
117
121
  }
118
122
  function generateReadmeFile() {
@@ -176,6 +180,8 @@ see the [on-zero readme](./node_modules/on-zero/README.md) for full documentatio
176
180
  `;
177
181
  }
178
182
  function generateGroupedQueriesFile(queries) {
183
+ const sortedFiles = [...new Set(queries.map(q => q.sourceFile))].sort();
184
+ const exports = sortedFiles.map(file => `export * as ${file} from '../queries/${file}'`).join("\n");
179
185
  return `/**
180
186
  * auto-generated by: on-zero generate
181
187
  *
@@ -183,41 +189,42 @@ function generateGroupedQueriesFile(queries) {
183
189
  * this file re-exports all query modules - while this breaks tree-shaking,
184
190
  * queries are typically small and few in number even in larger apps.
185
191
  */
186
- ${[...new Set(queries.map(q => q.sourceFile))].sort().map(file => `export * as ${file} from '../queries/${file}'`).join(`
187
- `)}
192
+ ${exports}
188
193
  `;
189
194
  }
190
195
  function generateSyncedQueriesFile(queries) {
191
196
  const queryByFile = /* @__PURE__ */new Map();
192
- for (const q of queries) queryByFile.has(q.sourceFile) || queryByFile.set(q.sourceFile, []), queryByFile.get(q.sourceFile).push(q);
193
- const sortedFiles = Array.from(queryByFile.keys()).sort(),
194
- imports = `// auto-generated by: on-zero generate
197
+ for (const q of queries) {
198
+ if (!queryByFile.has(q.sourceFile)) {
199
+ queryByFile.set(q.sourceFile, []);
200
+ }
201
+ queryByFile.get(q.sourceFile).push(q);
202
+ }
203
+ const sortedFiles = Array.from(queryByFile.keys()).sort();
204
+ const imports = `// auto-generated by: on-zero generate
195
205
  // server-side query definitions with validators
196
206
  import { defineQuery, defineQueries } from '@rocicorp/zero'
197
207
  import * as v from 'valibot'
198
208
  import * as Queries from './groupedQueries'
199
- `,
200
- namespaceDefs = sortedFiles.map(file => {
201
- const queryDefs = queryByFile.get(file).sort((a, b) => a.name.localeCompare(b.name)).map(q => {
202
- const validatorDef = q.valibotCode.trim();
203
- if (q.params === "void" || !validatorDef) return ` ${q.name}: defineQuery(() => Queries.${file}.${q.name}()),`;
204
- const indentedValidator = validatorDef.split(`
205
- `).map((line, i) => i === 0 ? line : ` ${line}`).join(`
206
- `);
207
- return ` ${q.name}: defineQuery(
209
+ `;
210
+ const namespaceDefs = sortedFiles.map(file => {
211
+ const fileQueries = queryByFile.get(file).sort((a, b) => a.name.localeCompare(b.name));
212
+ const queryDefs = fileQueries.map(q => {
213
+ const validatorDef = q.valibotCode.trim();
214
+ if (q.params === "void" || !validatorDef) {
215
+ return ` ${q.name}: defineQuery(() => Queries.${file}.${q.name}()),`;
216
+ }
217
+ const indentedValidator = validatorDef.split("\n").map((line, i) => i === 0 ? line : ` ${line}`).join("\n");
218
+ return ` ${q.name}: defineQuery(
208
219
  ${indentedValidator},
209
220
  ({ args }) => Queries.${file}.${q.name}(args)
210
221
  ),`;
211
- }).join(`
212
- `);
213
- return `const ${file} = {
222
+ }).join("\n");
223
+ return `const ${file} = {
214
224
  ${queryDefs}
215
225
  }`;
216
- }).join(`
217
-
218
- `),
219
- queriesObject = sortedFiles.map(file => ` ${file},`).join(`
220
- `);
226
+ }).join("\n\n");
227
+ const queriesObject = sortedFiles.map(file => ` ${file},`).join("\n");
221
228
  return `${imports}
222
229
  ${namespaceDefs}
223
230
 
@@ -249,22 +256,36 @@ function columnTypeToValibot(col) {
249
256
  }
250
257
  function schemaColumnsToValibot(columns, primaryKeys, mode) {
251
258
  const entries = [];
252
- if (mode === "delete") for (const pk of primaryKeys) {
253
- const col = columns[pk];
254
- col && entries.push(`${formatObjectKey(pk)}: ${columnTypeToValibot({
255
- ...col,
256
- optional: !1
257
- })}`);
258
- } else if (mode === "update") for (const [name, col] of Object.entries(columns)) primaryKeys.includes(name) ? entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
259
- ...col,
260
- optional: !1
261
- })}`) : entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
262
- ...col,
263
- optional: !0
264
- })}`);else for (const [name, col] of Object.entries(columns)) entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot(col)}`);
259
+ if (mode === "delete") {
260
+ for (const pk of primaryKeys) {
261
+ const col = columns[pk];
262
+ if (col) entries.push(`${formatObjectKey(pk)}: ${columnTypeToValibot({
263
+ ...col,
264
+ optional: false
265
+ })}`);
266
+ }
267
+ } else if (mode === "update") {
268
+ for (const [name, col] of Object.entries(columns)) {
269
+ const isPK = primaryKeys.includes(name);
270
+ if (isPK) {
271
+ entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
272
+ ...col,
273
+ optional: false
274
+ })}`);
275
+ } else {
276
+ entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot({
277
+ ...col,
278
+ optional: true
279
+ })}`);
280
+ }
281
+ }
282
+ } else {
283
+ for (const [name, col] of Object.entries(columns)) {
284
+ entries.push(`${formatObjectKey(name)}: ${columnTypeToValibot(col)}`);
285
+ }
286
+ }
265
287
  return `v.object({
266
- ${entries.join(`,
267
- `)},
288
+ ${entries.join(",\n ")},
268
289
  })`;
269
290
  }
270
291
  function extractValibotExpression(valibotCode) {
@@ -273,25 +294,34 @@ function extractValibotExpression(valibotCode) {
273
294
  function parseColumnType(initText) {
274
295
  const optional = initText.includes(".optional()");
275
296
  let type = "string";
276
- return initText.startsWith("number(") ? type = "number" : initText.startsWith("boolean(") ? type = "boolean" : initText.startsWith("json(") || initText.startsWith("json<") ? type = "json" : initText.startsWith("enumeration(") && (type = "enum"), {
297
+ if (initText.startsWith("number(")) type = "number";else if (initText.startsWith("boolean(")) type = "boolean";else if (initText.startsWith("json(") || initText.startsWith("json<")) type = "json";else if (initText.startsWith("enumeration(")) type = "enum";
298
+ return {
277
299
  type,
278
300
  optional,
279
301
  customType: void 0
280
302
  };
281
303
  }
282
304
  function generateSyncedMutationsFile(modelMutations) {
283
- return `// auto-generated by: on-zero generate
284
- // mutation validators derived from model schemas and handler types
285
- import * as v from 'valibot'
286
-
287
- export const mutationValidators = {
288
- ${[...modelMutations].sort((a, b) => a.modelName.localeCompare(b.modelName)).map(model => {
305
+ const sorted = [...modelMutations].sort((a, b) => a.modelName.localeCompare(b.modelName));
306
+ const modelDefs = sorted.map(model => {
289
307
  const entries = [];
290
- if (model.hasCRUD && Object.keys(model.columns).length > 0) for (const mode of ["insert", "update", "delete"]) if (model.custom.some(m => m.name === mode)) {
291
- const customMut = model.custom.find(m => m.name === mode);
292
- customMut.valibotCode ? entries.push(` ${mode}: ${extractValibotExpression(customMut.valibotCode)},`) : entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
293
- } else entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
294
- for (const mut of model.custom) if (!(model.hasCRUD && ["insert", "update", "delete", "upsert"].includes(mut.name))) {
308
+ if (model.hasCRUD && Object.keys(model.columns).length > 0) {
309
+ for (const mode of ["insert", "update", "delete"]) {
310
+ const hasCustomOverride = model.custom.some(m => m.name === mode);
311
+ if (hasCustomOverride) {
312
+ const customMut = model.custom.find(m => m.name === mode);
313
+ if (customMut.valibotCode) {
314
+ entries.push(` ${mode}: ${extractValibotExpression(customMut.valibotCode)},`);
315
+ } else {
316
+ entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
317
+ }
318
+ } else {
319
+ entries.push(` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`);
320
+ }
321
+ }
322
+ }
323
+ for (const mut of model.custom) {
324
+ if (model.hasCRUD && ["insert", "update", "delete", "upsert"].includes(mut.name)) continue;
295
325
  if (mut.paramType === "void" || !mut.valibotCode) {
296
326
  entries.push(` ${mut.name}: v.void_(),`);
297
327
  continue;
@@ -299,11 +329,15 @@ ${[...modelMutations].sort((a, b) => a.modelName.localeCompare(b.modelName)).map
299
329
  entries.push(` ${mut.name}: ${extractValibotExpression(mut.valibotCode)},`);
300
330
  }
301
331
  return ` ${model.modelName}: {
302
- ${entries.join(`
303
- `)}
332
+ ${entries.join("\n")}
304
333
  },`;
305
- }).join(`
306
- `)}
334
+ }).join("\n");
335
+ return `// auto-generated by: on-zero generate
336
+ // mutation validators derived from model schemas and handler types
337
+ import * as v from 'valibot'
338
+
339
+ export const mutationValidators = {
340
+ ${modelDefs}
307
341
  }
308
342
  `;
309
343
  }