on-zero 0.12.21 → 0.13.0

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 (203) hide show
  1. package/README.md +3 -0
  2. package/dist/cjs/cli.native.js.map +1 -1
  3. package/dist/cjs/combineZeroClients.native.js.map +1 -1
  4. package/dist/cjs/config.native.js.map +1 -1
  5. package/dist/cjs/createPermissions.native.js.map +1 -1
  6. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
  7. package/dist/cjs/createUseQuery.native.js.map +1 -1
  8. package/dist/cjs/createUseQueryDirect.native.js.map +1 -1
  9. package/dist/cjs/createZeroClient.authData.test.native.js.map +1 -1
  10. package/dist/cjs/createZeroClient.cjs +24 -6
  11. package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
  12. package/dist/cjs/createZeroClient.headless.test.cjs +55 -0
  13. package/dist/cjs/createZeroClient.headless.test.native.js +64 -0
  14. package/dist/cjs/createZeroClient.headless.test.native.js.map +1 -1
  15. package/dist/cjs/createZeroClient.native.js +22 -4
  16. package/dist/cjs/createZeroClient.native.js.map +1 -1
  17. package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
  18. package/dist/cjs/generate-helpers.cjs +17 -0
  19. package/dist/cjs/generate-helpers.native.js +23 -0
  20. package/dist/cjs/generate-helpers.native.js.map +1 -1
  21. package/dist/cjs/generate-helpers.test.native.js.map +1 -1
  22. package/dist/cjs/generate-layout.cjs +47 -4
  23. package/dist/cjs/generate-layout.native.js +191 -81
  24. package/dist/cjs/generate-layout.native.js.map +1 -1
  25. package/dist/cjs/generate-lite.cjs +25 -5
  26. package/dist/cjs/generate-lite.native.js +205 -163
  27. package/dist/cjs/generate-lite.native.js.map +1 -1
  28. package/dist/cjs/generate-lite.test.cjs +58 -0
  29. package/dist/cjs/generate-lite.test.native.js +59 -0
  30. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  31. package/dist/cjs/generate.cjs +9 -1
  32. package/dist/cjs/generate.native.js +13 -1
  33. package/dist/cjs/generate.native.js.map +1 -1
  34. package/dist/cjs/generate.test.cjs +16 -0
  35. package/dist/cjs/generate.test.native.js +16 -0
  36. package/dist/cjs/generate.test.native.js.map +1 -1
  37. package/dist/cjs/helpers/NullToOptional.native.js.map +1 -1
  38. package/dist/cjs/helpers/asyncContext.hostStorage.test.native.js.map +1 -1
  39. package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
  40. package/dist/cjs/helpers/clearZeroClientData.native.js.map +1 -1
  41. package/dist/cjs/helpers/createMutators.cjs +3 -3
  42. package/dist/cjs/helpers/createMutators.native.js +3 -3
  43. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  44. package/dist/cjs/helpers/createMutators.test.cjs +6 -6
  45. package/dist/cjs/helpers/createMutators.test.native.js +6 -6
  46. package/dist/cjs/helpers/createMutators.test.native.js.map +1 -1
  47. package/dist/cjs/helpers/ellipsis.native.js.map +1 -1
  48. package/dist/cjs/helpers/emitter.native.js.map +1 -1
  49. package/dist/cjs/helpers/ensure.native.js.map +1 -1
  50. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  51. package/dist/cjs/helpers/errors.native.js.map +1 -1
  52. package/dist/cjs/helpers/getAuth.native.js.map +1 -1
  53. package/dist/cjs/helpers/getCurrentComponentStack.native.js.map +1 -1
  54. package/dist/cjs/helpers/globalValue.native.js.map +1 -1
  55. package/dist/cjs/helpers/hostStorageScope.native.js.map +1 -1
  56. package/dist/cjs/helpers/mapObject.native.js.map +1 -1
  57. package/dist/cjs/helpers/mutationLifecycle.native.js.map +1 -1
  58. package/dist/cjs/helpers/mutationLifecycle.test.native.js.map +1 -1
  59. package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
  60. package/dist/cjs/helpers/mutatorContext.test.native.js.map +1 -1
  61. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  62. package/dist/cjs/helpers/queryContext.native.js.map +1 -1
  63. package/dist/cjs/helpers/recoverZeroClient.cjs +27 -3
  64. package/dist/cjs/helpers/recoverZeroClient.native.js +28 -4
  65. package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
  66. package/dist/cjs/helpers/recoverZeroClient.test.cjs +32 -2
  67. package/dist/cjs/helpers/recoverZeroClient.test.native.js +38 -2
  68. package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
  69. package/dist/cjs/helpers/showZeroClientError.native.js.map +1 -1
  70. package/dist/cjs/helpers/sleep.native.js.map +1 -1
  71. package/dist/cjs/helpers/time.native.js.map +1 -1
  72. package/dist/cjs/helpers/tuple.native.js.map +1 -1
  73. package/dist/cjs/helpers/useMutation.cjs +27 -2
  74. package/dist/cjs/helpers/useMutation.native.js +71 -6
  75. package/dist/cjs/helpers/useMutation.native.js.map +1 -1
  76. package/dist/cjs/helpers/useMutation.test.cjs +16 -0
  77. package/dist/cjs/helpers/useMutation.test.native.js +18 -0
  78. package/dist/cjs/helpers/useMutation.test.native.js.map +1 -1
  79. package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
  80. package/dist/cjs/index.native.js.map +1 -1
  81. package/dist/cjs/instanceRegistry.native.js.map +1 -1
  82. package/dist/cjs/modelRegistry.native.js.map +1 -1
  83. package/dist/cjs/multi.cjs +1 -1
  84. package/dist/cjs/multi.native.js +1 -1
  85. package/dist/cjs/multi.native.js.map +1 -1
  86. package/dist/cjs/multiInstance.test.native.js.map +1 -1
  87. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
  88. package/dist/cjs/multiPartition.test.native.js.map +1 -1
  89. package/dist/cjs/mutations.native.js.map +1 -1
  90. package/dist/cjs/mutations.test.native.js.map +1 -1
  91. package/dist/cjs/provideZero.hydration.test.native.js.map +1 -1
  92. package/dist/cjs/queryRegistry.native.js.map +1 -1
  93. package/dist/cjs/resolveQuery.native.js.map +1 -1
  94. package/dist/cjs/run.native.js.map +1 -1
  95. package/dist/cjs/server.native.js.map +1 -1
  96. package/dist/cjs/server.test.native.js.map +1 -1
  97. package/dist/cjs/serverWhere.native.js.map +1 -1
  98. package/dist/cjs/serverWhere.test.native.js.map +1 -1
  99. package/dist/cjs/state.native.js.map +1 -1
  100. package/dist/cjs/streaming.native.js.map +1 -1
  101. package/dist/cjs/testSetup.native.js.map +1 -1
  102. package/dist/cjs/types.native.js.map +1 -1
  103. package/dist/cjs/usePermission.test.native.js.map +1 -1
  104. package/dist/cjs/useQuery.empty.test.native.js.map +1 -1
  105. package/dist/cjs/useQuery.ssr.test.native.js.map +1 -1
  106. package/dist/cjs/useStreamingField.loop.test.native.js.map +1 -1
  107. package/dist/cjs/useStreamingField.native.js.map +1 -1
  108. package/dist/cjs/vite-plugin.native.js.map +1 -1
  109. package/dist/cjs/where.native.js.map +1 -1
  110. package/dist/cjs/zeroRunner.native.js.map +1 -1
  111. package/dist/cjs/zql.native.js.map +1 -1
  112. package/dist/esm/createZeroClient.headless.test.mjs +55 -0
  113. package/dist/esm/createZeroClient.headless.test.mjs.map +1 -1
  114. package/dist/esm/createZeroClient.headless.test.native.js +64 -0
  115. package/dist/esm/createZeroClient.headless.test.native.js.map +1 -1
  116. package/dist/esm/createZeroClient.mjs +24 -6
  117. package/dist/esm/createZeroClient.mjs.map +1 -1
  118. package/dist/esm/createZeroClient.native.js +22 -4
  119. package/dist/esm/createZeroClient.native.js.map +1 -1
  120. package/dist/esm/generate-helpers.mjs +17 -1
  121. package/dist/esm/generate-helpers.mjs.map +1 -1
  122. package/dist/esm/generate-helpers.native.js +23 -1
  123. package/dist/esm/generate-helpers.native.js.map +1 -1
  124. package/dist/esm/generate-layout.mjs +47 -4
  125. package/dist/esm/generate-layout.mjs.map +1 -1
  126. package/dist/esm/generate-layout.native.js +191 -81
  127. package/dist/esm/generate-layout.native.js.map +1 -1
  128. package/dist/esm/generate-lite.mjs +26 -6
  129. package/dist/esm/generate-lite.mjs.map +1 -1
  130. package/dist/esm/generate-lite.native.js +206 -164
  131. package/dist/esm/generate-lite.native.js.map +1 -1
  132. package/dist/esm/generate-lite.test.mjs +58 -0
  133. package/dist/esm/generate-lite.test.mjs.map +1 -1
  134. package/dist/esm/generate-lite.test.native.js +59 -0
  135. package/dist/esm/generate-lite.test.native.js.map +1 -1
  136. package/dist/esm/generate.mjs +10 -2
  137. package/dist/esm/generate.mjs.map +1 -1
  138. package/dist/esm/generate.native.js +14 -2
  139. package/dist/esm/generate.native.js.map +1 -1
  140. package/dist/esm/generate.test.mjs +16 -0
  141. package/dist/esm/generate.test.mjs.map +1 -1
  142. package/dist/esm/generate.test.native.js +16 -0
  143. package/dist/esm/generate.test.native.js.map +1 -1
  144. package/dist/esm/helpers/createMutators.mjs +3 -3
  145. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  146. package/dist/esm/helpers/createMutators.native.js +3 -3
  147. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  148. package/dist/esm/helpers/createMutators.test.mjs +5 -5
  149. package/dist/esm/helpers/createMutators.test.mjs.map +1 -1
  150. package/dist/esm/helpers/createMutators.test.native.js +5 -5
  151. package/dist/esm/helpers/createMutators.test.native.js.map +1 -1
  152. package/dist/esm/helpers/recoverZeroClient.mjs +27 -3
  153. package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
  154. package/dist/esm/helpers/recoverZeroClient.native.js +28 -4
  155. package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
  156. package/dist/esm/helpers/recoverZeroClient.test.mjs +32 -2
  157. package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
  158. package/dist/esm/helpers/recoverZeroClient.test.native.js +38 -2
  159. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  160. package/dist/esm/helpers/useMutation.mjs +27 -3
  161. package/dist/esm/helpers/useMutation.mjs.map +1 -1
  162. package/dist/esm/helpers/useMutation.native.js +71 -7
  163. package/dist/esm/helpers/useMutation.native.js.map +1 -1
  164. package/dist/esm/helpers/useMutation.test.mjs +16 -0
  165. package/dist/esm/helpers/useMutation.test.mjs.map +1 -1
  166. package/dist/esm/helpers/useMutation.test.native.js +18 -0
  167. package/dist/esm/helpers/useMutation.test.native.js.map +1 -1
  168. package/dist/esm/multi.mjs +1 -1
  169. package/dist/esm/multi.mjs.map +1 -1
  170. package/dist/esm/multi.native.js +1 -1
  171. package/dist/esm/multi.native.js.map +1 -1
  172. package/package.json +2 -2
  173. package/src/createZeroClient.headless.test.tsx +58 -0
  174. package/src/createZeroClient.tsx +28 -7
  175. package/src/generate-helpers.ts +29 -0
  176. package/src/generate-layout.ts +80 -11
  177. package/src/generate-lite.test.ts +56 -0
  178. package/src/generate-lite.ts +38 -9
  179. package/src/generate.test.ts +19 -0
  180. package/src/generate.ts +19 -2
  181. package/src/helpers/createMutators.test.ts +5 -5
  182. package/src/helpers/createMutators.ts +7 -5
  183. package/src/helpers/recoverZeroClient.test.ts +34 -5
  184. package/src/helpers/recoverZeroClient.ts +38 -8
  185. package/src/helpers/useMutation.test.ts +15 -0
  186. package/src/helpers/useMutation.tsx +41 -2
  187. package/src/multi.ts +3 -3
  188. package/types/createZeroClient.d.ts +3 -3
  189. package/types/createZeroClient.d.ts.map +1 -1
  190. package/types/generate-helpers.d.ts +4 -0
  191. package/types/generate-helpers.d.ts.map +1 -1
  192. package/types/generate-layout.d.ts +2 -0
  193. package/types/generate-layout.d.ts.map +1 -1
  194. package/types/generate-lite.d.ts.map +1 -1
  195. package/types/generate.d.ts.map +1 -1
  196. package/types/helpers/createMutators.d.ts +3 -3
  197. package/types/helpers/createMutators.d.ts.map +1 -1
  198. package/types/helpers/recoverZeroClient.d.ts +2 -1
  199. package/types/helpers/recoverZeroClient.d.ts.map +1 -1
  200. package/types/helpers/useMutation.d.ts +1 -0
  201. package/types/helpers/useMutation.d.ts.map +1 -1
  202. package/types/multi.d.ts +2 -2
  203. package/types/multi.d.ts.map +1 -1
@@ -1,4 +1,4 @@
1
- import { generateGroupedQueriesFile, generateInstancesFile, generateModelsFile, generateReadmeFile, generateSyncedMutationsFile, generateSyncedQueriesFile, generateTablesFile, generateTypesFile, parseColumnType, parseTypeString } from "./generate-helpers.native.js";
1
+ import { generateAggregatesFile, generateGroupedQueriesFile, generateInstancesFile, generateModelsFile, generateReadmeFile, generateSyncedMutationsFile, generateSyncedQueriesFile, generateTablesFile, generateTypesFile, parseColumnType, parseTypeString } from "./generate-helpers.native.js";
2
2
  function stripTrailingSlash(s) {
3
3
  return s.endsWith("/") ? s.slice(0, -1) : s;
4
4
  }
@@ -259,7 +259,8 @@ function discoverLiteLayout(files, baseDir, parse, explicitConfigPath) {
259
259
  name: baseName(path, ".ts"),
260
260
  instance: instance.name,
261
261
  queryPath: path,
262
- modelPath: path
262
+ modelPath: path,
263
+ aggregatePath: null
263
264
  });
264
265
  }
265
266
  } catch (err) {
@@ -312,7 +313,8 @@ function discoverLiteLayout(files, baseDir, parse, explicitConfigPath) {
312
313
  if (folder === `${baseDir}/generated` || instanceDirs.has(folder)) continue;
313
314
  var queries = `${folder}/queries.ts`;
314
315
  var mutations = `${folder}/mutations.ts`;
315
- if (!(queries in files) && !(mutations in files)) {
316
+ var aggregates = `${folder}/aggregates.ts`;
317
+ if (!(queries in files) && !(mutations in files) && !(aggregates in files)) {
316
318
  var oldName = baseName(folder);
317
319
  if (["models", "mutations", "queries"].includes(oldName) && listDirectTsFiles(files, folder).length > 0) {
318
320
  throw new Error(`[on-zero] ${folder} uses the removed top-level ${oldName}/ layout; move each namespace to <name>.ts or <name>/queries.ts + mutations.ts`);
@@ -323,7 +325,8 @@ function discoverLiteLayout(files, baseDir, parse, explicitConfigPath) {
323
325
  name: baseName(folder),
324
326
  instance: instance.name,
325
327
  queryPath: queries in files ? queries : null,
326
- modelPath: mutations in files ? mutations : null
328
+ modelPath: mutations in files ? mutations : null,
329
+ aggregatePath: aggregates in files ? aggregates : null
327
330
  });
328
331
  }
329
332
  } catch (err) {
@@ -399,8 +402,8 @@ function generateLite(opts) {
399
402
  var namespaces = instances.flatMap(function (instance2) {
400
403
  return instance2.namespaces;
401
404
  });
402
- var modelNamespaces = namespaces.filter(function (namespace3) {
403
- return namespace3.modelPath !== null;
405
+ var modelNamespaces = namespaces.filter(function (namespace4) {
406
+ return namespace4.modelPath !== null;
404
407
  });
405
408
  var relations = /* @__PURE__ */new Map();
406
409
  var tableColumns = /* @__PURE__ */new Map();
@@ -478,6 +481,7 @@ function generateLite(opts) {
478
481
  }
479
482
  var allModelMutations = [];
480
483
  var modelNamesWithSchema = [];
484
+ var modelTables = /* @__PURE__ */new Map();
481
485
  var _iteratorNormalCompletion3 = true,
482
486
  _didIteratorError3 = false,
483
487
  _iteratorError3 = void 0;
@@ -485,11 +489,13 @@ function generateLite(opts) {
485
489
  for (var _iterator3 = modelNamespaces[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
486
490
  var namespace = _step3.value;
487
491
  var _parsed_mutations_, _ref;
492
+ var _mutationExport_schema;
488
493
  var filePath = namespace.modelPath;
489
494
  var modelName = namespace.name;
490
495
  var content = files[filePath];
491
496
  var parsed1 = parse(content, filePath);
492
497
  var mutationExport = (_parsed_mutations_ = parsed1.mutations[0]) !== null && _parsed_mutations_ !== void 0 ? _parsed_mutations_ : null;
498
+ modelTables.set(modelName, (mutationExport === null || mutationExport === void 0 ? void 0 : mutationExport.modelName) || (mutationExport === null || mutationExport === void 0 ? void 0 : (_mutationExport_schema = mutationExport.schema) === null || _mutationExport_schema === void 0 ? void 0 : _mutationExport_schema.tableName) || modelName);
493
499
  var columns = {};
494
500
  var primaryKeys = [];
495
501
  var hasSchema = false;
@@ -603,8 +609,8 @@ function generateLite(opts) {
603
609
  _didIteratorError6 = false,
604
610
  _iteratorError6 = void 0;
605
611
  try {
606
- for (var _iterator6 = namespaces.filter(function (namespace3) {
607
- return namespace3.queryPath !== null;
612
+ for (var _iterator6 = namespaces.filter(function (namespace4) {
613
+ return namespace4.queryPath !== null;
608
614
  })[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
609
615
  var namespace1 = _step6.value;
610
616
  var filePath1 = namespace1.queryPath;
@@ -682,156 +688,181 @@ function generateLite(opts) {
682
688
  }
683
689
  }
684
690
  }
685
- var owners = new Map(modelNamespaces.map(function (namespace3) {
686
- return [namespace3.name, namespace3.instance];
687
- }));
688
- var relatedOwners = /* @__PURE__ */new Map();
689
- var directTables = /* @__PURE__ */new Map();
690
- var syncTables = /* @__PURE__ */new Map();
691
+ var owners = /* @__PURE__ */new Map();
691
692
  var _iteratorNormalCompletion8 = true,
692
693
  _didIteratorError8 = false,
693
694
  _iteratorError8 = void 0;
694
695
  try {
695
- for (var _iterator8 = instances[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
696
- var instance = _step8.value;
697
- var direct = new Set(instance.namespaces.filter(function (namespace3) {
698
- return namespace3.modelPath !== null;
699
- }).map(function (namespace3) {
700
- return namespace3.name;
696
+ for (var _iterator8 = modelNamespaces[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
697
+ var namespace2 = _step8.value;
698
+ var table1 = modelTables.get(namespace2.name);
699
+ var owner = owners.get(table1);
700
+ if (owner && owner !== namespace2.instance) {
701
+ throw new Error(`[on-zero] table '${table1}' is claimed by instances '${owner}' and '${namespace2.instance}'`);
702
+ }
703
+ owners.set(table1, namespace2.instance);
704
+ }
705
+ } catch (err) {
706
+ _didIteratorError8 = true;
707
+ _iteratorError8 = err;
708
+ } finally {
709
+ try {
710
+ if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
711
+ _iterator8.return();
712
+ }
713
+ } finally {
714
+ if (_didIteratorError8) {
715
+ throw _iteratorError8;
716
+ }
717
+ }
718
+ }
719
+ var relatedOwners = /* @__PURE__ */new Map();
720
+ var directTables = /* @__PURE__ */new Map();
721
+ var syncTables = /* @__PURE__ */new Map();
722
+ var _iteratorNormalCompletion9 = true,
723
+ _didIteratorError9 = false,
724
+ _iteratorError9 = void 0;
725
+ try {
726
+ for (var _iterator9 = instances[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
727
+ var instance = _step9.value;
728
+ var direct = new Set(instance.namespaces.filter(function (namespace4) {
729
+ return namespace4.modelPath !== null;
730
+ }).map(function (namespace4) {
731
+ return modelTables.get(namespace4.name);
701
732
  }));
702
733
  var synced = new Set(direct);
703
- var _iteratorNormalCompletion9 = true,
704
- _didIteratorError9 = false,
705
- _iteratorError9 = void 0;
734
+ var _iteratorNormalCompletion10 = true,
735
+ _didIteratorError10 = false,
736
+ _iteratorError10 = void 0;
706
737
  try {
707
- for (var _iterator9 = instance.namespaces[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
708
- var namespace2 = _step9.value;
738
+ for (var _iterator10 = instance.namespaces[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
739
+ var namespace3 = _step10.value;
709
740
  var _queryPaths_get1;
710
- var _iteratorNormalCompletion10 = true,
711
- _didIteratorError10 = false,
712
- _iteratorError10 = void 0;
741
+ var _iteratorNormalCompletion11 = true,
742
+ _didIteratorError11 = false,
743
+ _iteratorError11 = void 0;
713
744
  try {
714
- for (var _iterator10 = ((_queryPaths_get1 = queryPaths.get(namespace2.name)) !== null && _queryPaths_get1 !== void 0 ? _queryPaths_get1 : [])[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
715
- var query = _step10.value;
745
+ for (var _iterator11 = ((_queryPaths_get1 = queryPaths.get(namespace3.name)) !== null && _queryPaths_get1 !== void 0 ? _queryPaths_get1 : [])[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
746
+ var query = _step11.value;
716
747
  var _owners_get;
717
748
  var rootOwner = (_owners_get = owners.get(query.rootTable)) !== null && _owners_get !== void 0 ? _owners_get : relatedOwners.get(query.rootTable);
718
749
  if (rootOwner && rootOwner !== instance.name) {
719
- throw new Error(`[on-zero] ${namespace2.name}.${query.query} in instance '${instance.name}' reaches table '${query.rootTable}' owned by instance '${rootOwner}'`);
750
+ throw new Error(`[on-zero] ${namespace3.name}.${query.query} in instance '${instance.name}' reaches table '${query.rootTable}' owned by instance '${rootOwner}'`);
720
751
  }
721
752
  relatedOwners.set(query.rootTable, instance.name);
722
753
  direct.add(query.rootTable);
723
754
  synced.add(query.rootTable);
724
- var _iteratorNormalCompletion11 = true,
725
- _didIteratorError11 = false,
726
- _iteratorError11 = void 0;
755
+ var _iteratorNormalCompletion12 = true,
756
+ _didIteratorError12 = false,
757
+ _iteratorError12 = void 0;
727
758
  try {
728
- for (var _iterator11 = query.paths[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
729
- var path1 = _step11.value;
759
+ for (var _iterator12 = query.paths[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
760
+ var path1 = _step12.value;
730
761
  var sourceTable = query.rootTable;
731
- var _iteratorNormalCompletion12 = true,
732
- _didIteratorError12 = false,
733
- _iteratorError12 = void 0;
762
+ var _iteratorNormalCompletion13 = true,
763
+ _didIteratorError13 = false,
764
+ _iteratorError13 = void 0;
734
765
  try {
735
- for (var _iterator12 = path1[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
736
- var relationName = _step12.value;
766
+ for (var _iterator13 = path1[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
767
+ var relationName = _step13.value;
737
768
  var _owners_get1;
738
769
  var _relations_get1;
739
770
  var target = (_relations_get1 = relations.get(sourceTable)) === null || _relations_get1 === void 0 ? void 0 : _relations_get1.get(relationName);
740
771
  if (!target) {
741
- throw new Error(`[on-zero] ${namespace2.name}.${query.query} related('${relationName}') cannot be resolved from table '${sourceTable}' through relations.ts`);
772
+ throw new Error(`[on-zero] ${namespace3.name}.${query.query} related('${relationName}') cannot be resolved from table '${sourceTable}' through relations.ts`);
742
773
  }
743
- var owner = (_owners_get1 = owners.get(target)) !== null && _owners_get1 !== void 0 ? _owners_get1 : relatedOwners.get(target);
744
- if (owner && owner !== instance.name) {
745
- throw new Error(`[on-zero] ${namespace2.name}.${query.query} in instance '${instance.name}' reaches table '${target}' owned by instance '${owner}'`);
774
+ var owner1 = (_owners_get1 = owners.get(target)) !== null && _owners_get1 !== void 0 ? _owners_get1 : relatedOwners.get(target);
775
+ if (owner1 && owner1 !== instance.name) {
776
+ throw new Error(`[on-zero] ${namespace3.name}.${query.query} in instance '${instance.name}' reaches table '${target}' owned by instance '${owner1}'`);
746
777
  }
747
778
  relatedOwners.set(target, instance.name);
748
779
  synced.add(target);
749
780
  sourceTable = target;
750
781
  }
751
782
  } catch (err) {
752
- _didIteratorError12 = true;
753
- _iteratorError12 = err;
783
+ _didIteratorError13 = true;
784
+ _iteratorError13 = err;
754
785
  } finally {
755
786
  try {
756
- if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
757
- _iterator12.return();
787
+ if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
788
+ _iterator13.return();
758
789
  }
759
790
  } finally {
760
- if (_didIteratorError12) {
761
- throw _iteratorError12;
791
+ if (_didIteratorError13) {
792
+ throw _iteratorError13;
762
793
  }
763
794
  }
764
795
  }
765
796
  }
766
797
  } catch (err) {
767
- _didIteratorError11 = true;
768
- _iteratorError11 = err;
798
+ _didIteratorError12 = true;
799
+ _iteratorError12 = err;
769
800
  } finally {
770
801
  try {
771
- if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
772
- _iterator11.return();
802
+ if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
803
+ _iterator12.return();
773
804
  }
774
805
  } finally {
775
- if (_didIteratorError11) {
776
- throw _iteratorError11;
806
+ if (_didIteratorError12) {
807
+ throw _iteratorError12;
777
808
  }
778
809
  }
779
810
  }
780
811
  }
781
812
  } catch (err) {
782
- _didIteratorError10 = true;
783
- _iteratorError10 = err;
813
+ _didIteratorError11 = true;
814
+ _iteratorError11 = err;
784
815
  } finally {
785
816
  try {
786
- if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
787
- _iterator10.return();
817
+ if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
818
+ _iterator11.return();
788
819
  }
789
820
  } finally {
790
- if (_didIteratorError10) {
791
- throw _iteratorError10;
821
+ if (_didIteratorError11) {
822
+ throw _iteratorError11;
792
823
  }
793
824
  }
794
825
  }
795
826
  }
796
827
  } catch (err) {
797
- _didIteratorError9 = true;
798
- _iteratorError9 = err;
828
+ _didIteratorError10 = true;
829
+ _iteratorError10 = err;
799
830
  } finally {
800
831
  try {
801
- if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
802
- _iterator9.return();
832
+ if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
833
+ _iterator10.return();
803
834
  }
804
835
  } finally {
805
- if (_didIteratorError9) {
806
- throw _iteratorError9;
836
+ if (_didIteratorError10) {
837
+ throw _iteratorError10;
807
838
  }
808
839
  }
809
840
  }
810
841
  directTables.set(instance.name, [...direct].sort());
811
842
  var tables = [...synced].sort();
812
843
  if (instance.scope) {
813
- var _iteratorNormalCompletion13 = true,
814
- _didIteratorError13 = false,
815
- _iteratorError13 = void 0;
844
+ var _iteratorNormalCompletion14 = true,
845
+ _didIteratorError14 = false,
846
+ _iteratorError14 = void 0;
816
847
  try {
817
- for (var _iterator13 = tables[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
818
- var table1 = _step13.value;
848
+ for (var _iterator14 = tables[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
849
+ var table2 = _step14.value;
819
850
  var _tableColumns_get;
820
- if (!((_tableColumns_get = tableColumns.get(table1)) === null || _tableColumns_get === void 0 ? void 0 : _tableColumns_get.has(instance.scope))) {
821
- throw new Error(`[on-zero] table '${table1}' in instance '${instance.name}' is missing scope column '${instance.scope}'`);
851
+ if (!((_tableColumns_get = tableColumns.get(table2)) === null || _tableColumns_get === void 0 ? void 0 : _tableColumns_get.has(instance.scope))) {
852
+ throw new Error(`[on-zero] table '${table2}' in instance '${instance.name}' is missing scope column '${instance.scope}'`);
822
853
  }
823
854
  }
824
855
  } catch (err) {
825
- _didIteratorError13 = true;
826
- _iteratorError13 = err;
856
+ _didIteratorError14 = true;
857
+ _iteratorError14 = err;
827
858
  } finally {
828
859
  try {
829
- if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
830
- _iterator13.return();
860
+ if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
861
+ _iterator14.return();
831
862
  }
832
863
  } finally {
833
- if (_didIteratorError13) {
834
- throw _iteratorError13;
864
+ if (_didIteratorError14) {
865
+ throw _iteratorError14;
835
866
  }
836
867
  }
837
868
  }
@@ -839,34 +870,34 @@ function generateLite(opts) {
839
870
  syncTables.set(instance.name, tables);
840
871
  }
841
872
  } catch (err) {
842
- _didIteratorError8 = true;
843
- _iteratorError8 = err;
873
+ _didIteratorError9 = true;
874
+ _iteratorError9 = err;
844
875
  } finally {
845
876
  try {
846
- if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
847
- _iterator8.return();
877
+ if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
878
+ _iterator9.return();
848
879
  }
849
880
  } finally {
850
- if (_didIteratorError8) {
851
- throw _iteratorError8;
881
+ if (_didIteratorError9) {
882
+ throw _iteratorError9;
852
883
  }
853
884
  }
854
885
  }
855
886
  var supportTables = /* @__PURE__ */new Map();
856
- var _iteratorNormalCompletion14 = true,
857
- _didIteratorError14 = false,
858
- _iteratorError14 = void 0;
887
+ var _iteratorNormalCompletion15 = true,
888
+ _didIteratorError15 = false,
889
+ _iteratorError15 = void 0;
859
890
  try {
860
891
  var _loop = function () {
861
- var instance2 = _step14.value;
892
+ var instance2 = _step15.value;
862
893
  var supported = new Set(instance2.declaredSupportTables);
863
- var _iteratorNormalCompletion16 = true,
864
- _didIteratorError16 = false,
865
- _iteratorError16 = void 0;
894
+ var _iteratorNormalCompletion17 = true,
895
+ _didIteratorError17 = false,
896
+ _iteratorError17 = void 0;
866
897
  try {
867
898
  var _loop2 = function () {
868
- var namespace3 = _step16.value;
869
- if (!namespace3.modelPath) return "continue";
899
+ var namespace4 = _step17.value;
900
+ if (!namespace4.modelPath) return "continue";
870
901
  var visited = /* @__PURE__ */new Set();
871
902
  var scan = function scan1(path2) {
872
903
  var _parsed_supportTables, _parsed_imports;
@@ -876,37 +907,37 @@ function generateLite(opts) {
876
907
  if (parsed3.parseError) {
877
908
  throw new Error(`[on-zero] unable to derive mutation dependencies from ${path2}: ${parsed3.parseError}`);
878
909
  }
879
- var _iteratorNormalCompletion17 = true,
880
- _didIteratorError17 = false,
881
- _iteratorError17 = void 0;
910
+ var _iteratorNormalCompletion18 = true,
911
+ _didIteratorError18 = false,
912
+ _iteratorError18 = void 0;
882
913
  try {
883
- for (var _iterator17 = ((_parsed_supportTables = parsed3.supportTables) !== null && _parsed_supportTables !== void 0 ? _parsed_supportTables : [])[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) {
884
- var table2 = _step17.value;
885
- if (owners.has(table2) || relatedOwners.has(table2)) continue;
886
- if (!syncTables.get(instance2.name).includes(table2)) {
887
- supported.add(table2);
914
+ for (var _iterator18 = ((_parsed_supportTables = parsed3.supportTables) !== null && _parsed_supportTables !== void 0 ? _parsed_supportTables : [])[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {
915
+ var table3 = _step18.value;
916
+ if (owners.has(table3) || relatedOwners.has(table3)) continue;
917
+ if (!syncTables.get(instance2.name).includes(table3)) {
918
+ supported.add(table3);
888
919
  }
889
920
  }
890
921
  } catch (err) {
891
- _didIteratorError17 = true;
892
- _iteratorError17 = err;
922
+ _didIteratorError18 = true;
923
+ _iteratorError18 = err;
893
924
  } finally {
894
925
  try {
895
- if (!_iteratorNormalCompletion17 && _iterator17.return != null) {
896
- _iterator17.return();
926
+ if (!_iteratorNormalCompletion18 && _iterator18.return != null) {
927
+ _iterator18.return();
897
928
  }
898
929
  } finally {
899
- if (_didIteratorError17) {
900
- throw _iteratorError17;
930
+ if (_didIteratorError18) {
931
+ throw _iteratorError18;
901
932
  }
902
933
  }
903
934
  }
904
- var _iteratorNormalCompletion18 = true,
905
- _didIteratorError18 = false,
906
- _iteratorError18 = void 0;
935
+ var _iteratorNormalCompletion19 = true,
936
+ _didIteratorError19 = false,
937
+ _iteratorError19 = void 0;
907
938
  try {
908
- for (var _iterator18 = ((_parsed_imports = parsed3.imports) !== null && _parsed_imports !== void 0 ? _parsed_imports : [])[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {
909
- var specifier = _step18.value;
939
+ for (var _iterator19 = ((_parsed_imports = parsed3.imports) !== null && _parsed_imports !== void 0 ? _parsed_imports : [])[Symbol.iterator](), _step19; !(_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done); _iteratorNormalCompletion19 = true) {
940
+ var specifier = _step19.value;
910
941
  var unresolved = specifier.startsWith("~/data/") ? `${baseDir}/${specifier.slice("~/data/".length)}` : specifier.startsWith(".") ? `${parentDir(path2)}/${specifier}` : null;
911
942
  if (!unresolved) continue;
912
943
  var normalized = resolvePath(unresolved);
@@ -918,72 +949,72 @@ function generateLite(opts) {
918
949
  if (dependency) scan(dependency);
919
950
  }
920
951
  } catch (err) {
921
- _didIteratorError18 = true;
922
- _iteratorError18 = err;
952
+ _didIteratorError19 = true;
953
+ _iteratorError19 = err;
923
954
  } finally {
924
955
  try {
925
- if (!_iteratorNormalCompletion18 && _iterator18.return != null) {
926
- _iterator18.return();
956
+ if (!_iteratorNormalCompletion19 && _iterator19.return != null) {
957
+ _iterator19.return();
927
958
  }
928
959
  } finally {
929
- if (_didIteratorError18) {
930
- throw _iteratorError18;
960
+ if (_didIteratorError19) {
961
+ throw _iteratorError19;
931
962
  }
932
963
  }
933
964
  }
934
965
  };
935
- scan(namespace3.modelPath);
966
+ scan(namespace4.modelPath);
936
967
  };
937
- for (var _iterator16 = instance2.namespaces[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) _loop2();
968
+ for (var _iterator17 = instance2.namespaces[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) _loop2();
938
969
  } catch (err) {
939
- _didIteratorError16 = true;
940
- _iteratorError16 = err;
970
+ _didIteratorError17 = true;
971
+ _iteratorError17 = err;
941
972
  } finally {
942
973
  try {
943
- if (!_iteratorNormalCompletion16 && _iterator16.return != null) {
944
- _iterator16.return();
974
+ if (!_iteratorNormalCompletion17 && _iterator17.return != null) {
975
+ _iterator17.return();
945
976
  }
946
977
  } finally {
947
- if (_didIteratorError16) {
948
- throw _iteratorError16;
978
+ if (_didIteratorError17) {
979
+ throw _iteratorError17;
949
980
  }
950
981
  }
951
982
  }
952
983
  supportTables.set(instance2.name, [...supported].sort());
953
984
  };
954
- for (var _iterator14 = instances[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) _loop();
985
+ for (var _iterator15 = instances[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) _loop();
955
986
  } catch (err) {
956
- _didIteratorError14 = true;
957
- _iteratorError14 = err;
987
+ _didIteratorError15 = true;
988
+ _iteratorError15 = err;
958
989
  } finally {
959
990
  try {
960
- if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
961
- _iterator14.return();
991
+ if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
992
+ _iterator15.return();
962
993
  }
963
994
  } finally {
964
- if (_didIteratorError14) {
965
- throw _iteratorError14;
995
+ if (_didIteratorError15) {
996
+ throw _iteratorError15;
966
997
  }
967
998
  }
968
999
  }
969
- var modelNames = modelNamespaces.map(function (namespace3) {
970
- return namespace3.name;
1000
+ var modelNames = modelNamespaces.map(function (namespace4) {
1001
+ return namespace4.name;
971
1002
  });
972
1003
  var out = {};
973
- out["models.ts"] = generateModelsFile(modelNamespaces.map(function (namespace3) {
1004
+ out["models.ts"] = generateModelsFile(modelNamespaces.map(function (namespace4) {
974
1005
  return {
975
- name: namespace3.name,
976
- importPath: `../${relativePath(baseDir, namespace3.modelPath).replace(/\.ts$/, "")}`
1006
+ name: namespace4.name,
1007
+ importPath: `../${relativePath(baseDir, namespace4.modelPath).replace(/\.ts$/, "")}`
977
1008
  };
978
1009
  }));
979
1010
  if (modelNamesWithSchema.length > 0) {
980
1011
  out["types.ts"] = generateTypesFile(modelNamesWithSchema);
981
- out["tables.ts"] = generateTablesFile(modelNamespaces.filter(function (namespace3) {
982
- return modelNamesWithSchema.includes(namespace3.name);
983
- }).map(function (namespace3) {
1012
+ out["tables.ts"] = generateTablesFile(modelNamespaces.filter(function (namespace4) {
1013
+ return modelNamesWithSchema.includes(namespace4.name);
1014
+ }).map(function (namespace4) {
984
1015
  return {
985
- name: namespace3.name,
986
- importPath: `../${relativePath(baseDir, namespace3.modelPath).replace(/\.ts$/, "")}`
1016
+ name: namespace4.name,
1017
+ importPath: `../${relativePath(baseDir, namespace4.modelPath).replace(/\.ts$/, "")}`
987
1018
  };
988
1019
  }));
989
1020
  }
@@ -994,17 +1025,17 @@ function generateLite(opts) {
994
1025
  return {
995
1026
  name: instance2.name,
996
1027
  scope: instance2.scope,
997
- queryNames: instance2.namespaces.map(function (namespace3) {
998
- return namespace3.name;
1028
+ queryNames: instance2.namespaces.map(function (namespace4) {
1029
+ return namespace4.name;
999
1030
  }).filter(function (name) {
1000
1031
  return allQueries.some(function (query2) {
1001
1032
  return query2.sourceFile === name;
1002
1033
  });
1003
1034
  }),
1004
- modelNames: instance2.namespaces.filter(function (namespace3) {
1005
- return namespace3.modelPath;
1006
- }).map(function (namespace3) {
1007
- return namespace3.name;
1035
+ modelNames: instance2.namespaces.filter(function (namespace4) {
1036
+ return namespace4.modelPath;
1037
+ }).map(function (namespace4) {
1038
+ return namespace4.name;
1008
1039
  }),
1009
1040
  tables: directTables.get(instance2.name),
1010
1041
  syncTables: syncTables.get(instance2.name),
@@ -1014,30 +1045,41 @@ function generateLite(opts) {
1014
1045
  if (allModelMutations.length > 0) {
1015
1046
  out["syncedMutations.ts"] = generateSyncedMutationsFile(allModelMutations);
1016
1047
  }
1048
+ var aggregateNamespaces = namespaces.filter(function (namespace4) {
1049
+ return namespace4.aggregatePath !== null;
1050
+ });
1051
+ if (aggregateNamespaces.length > 0) {
1052
+ out["aggregates.ts"] = generateAggregatesFile(aggregateNamespaces.map(function (namespace4) {
1053
+ return {
1054
+ name: namespace4.name,
1055
+ importPath: `../${relativePath(baseDir, namespace4.aggregatePath).replace(/\.ts$/, "")}`
1056
+ };
1057
+ }));
1058
+ }
1017
1059
  var mutationCount = 0;
1018
- var _iteratorNormalCompletion15 = true,
1019
- _didIteratorError15 = false,
1020
- _iteratorError15 = void 0;
1060
+ var _iteratorNormalCompletion16 = true,
1061
+ _didIteratorError16 = false,
1062
+ _iteratorError16 = void 0;
1021
1063
  try {
1022
1064
  var _loop1 = function () {
1023
- var m = _step15.value;
1065
+ var m = _step16.value;
1024
1066
  if (m.hasCRUD) mutationCount += 3;
1025
1067
  mutationCount += m.custom.filter(function (mut) {
1026
1068
  return !m.hasCRUD || !["insert", "update", "delete", "upsert"].includes(mut.name);
1027
1069
  }).length;
1028
1070
  };
1029
- for (var _iterator15 = allModelMutations[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) _loop1();
1071
+ for (var _iterator16 = allModelMutations[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) _loop1();
1030
1072
  } catch (err) {
1031
- _didIteratorError15 = true;
1032
- _iteratorError15 = err;
1073
+ _didIteratorError16 = true;
1074
+ _iteratorError16 = err;
1033
1075
  } finally {
1034
1076
  try {
1035
- if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
1036
- _iterator15.return();
1077
+ if (!_iteratorNormalCompletion16 && _iterator16.return != null) {
1078
+ _iterator16.return();
1037
1079
  }
1038
1080
  } finally {
1039
- if (_didIteratorError15) {
1040
- throw _iteratorError15;
1081
+ if (_didIteratorError16) {
1082
+ throw _iteratorError16;
1041
1083
  }
1042
1084
  }
1043
1085
  }