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
@@ -288,7 +288,8 @@ function discoverLiteLayout(files, baseDir, parse, explicitConfigPath) {
288
288
  name: baseName(path, ".ts"),
289
289
  instance: instance.name,
290
290
  queryPath: path,
291
- modelPath: path
291
+ modelPath: path,
292
+ aggregatePath: null
292
293
  });
293
294
  }
294
295
  } catch (err) {
@@ -341,7 +342,8 @@ function discoverLiteLayout(files, baseDir, parse, explicitConfigPath) {
341
342
  if (folder === `${baseDir}/generated` || instanceDirs.has(folder)) continue;
342
343
  var queries = `${folder}/queries.ts`;
343
344
  var mutations = `${folder}/mutations.ts`;
344
- if (!(queries in files) && !(mutations in files)) {
345
+ var aggregates = `${folder}/aggregates.ts`;
346
+ if (!(queries in files) && !(mutations in files) && !(aggregates in files)) {
345
347
  var oldName = baseName(folder);
346
348
  if (["models", "mutations", "queries"].includes(oldName) && listDirectTsFiles(files, folder).length > 0) {
347
349
  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`);
@@ -352,7 +354,8 @@ function discoverLiteLayout(files, baseDir, parse, explicitConfigPath) {
352
354
  name: baseName(folder),
353
355
  instance: instance.name,
354
356
  queryPath: queries in files ? queries : null,
355
- modelPath: mutations in files ? mutations : null
357
+ modelPath: mutations in files ? mutations : null,
358
+ aggregatePath: aggregates in files ? aggregates : null
356
359
  });
357
360
  }
358
361
  } catch (err) {
@@ -428,8 +431,8 @@ function generateLite(opts) {
428
431
  var namespaces = instances.flatMap(function (instance2) {
429
432
  return instance2.namespaces;
430
433
  });
431
- var modelNamespaces = namespaces.filter(function (namespace3) {
432
- return namespace3.modelPath !== null;
434
+ var modelNamespaces = namespaces.filter(function (namespace4) {
435
+ return namespace4.modelPath !== null;
433
436
  });
434
437
  var relations = /* @__PURE__ */new Map();
435
438
  var tableColumns = /* @__PURE__ */new Map();
@@ -507,6 +510,7 @@ function generateLite(opts) {
507
510
  }
508
511
  var allModelMutations = [];
509
512
  var modelNamesWithSchema = [];
513
+ var modelTables = /* @__PURE__ */new Map();
510
514
  var _iteratorNormalCompletion3 = true,
511
515
  _didIteratorError3 = false,
512
516
  _iteratorError3 = void 0;
@@ -514,11 +518,13 @@ function generateLite(opts) {
514
518
  for (var _iterator3 = modelNamespaces[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
515
519
  var namespace = _step3.value;
516
520
  var _parsed_mutations_, _ref;
521
+ var _mutationExport_schema;
517
522
  var filePath = namespace.modelPath;
518
523
  var modelName = namespace.name;
519
524
  var content = files[filePath];
520
525
  var parsed1 = parse(content, filePath);
521
526
  var mutationExport = (_parsed_mutations_ = parsed1.mutations[0]) !== null && _parsed_mutations_ !== void 0 ? _parsed_mutations_ : null;
527
+ 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);
522
528
  var columns = {};
523
529
  var primaryKeys = [];
524
530
  var hasSchema = false;
@@ -632,8 +638,8 @@ function generateLite(opts) {
632
638
  _didIteratorError6 = false,
633
639
  _iteratorError6 = void 0;
634
640
  try {
635
- for (var _iterator6 = namespaces.filter(function (namespace3) {
636
- return namespace3.queryPath !== null;
641
+ for (var _iterator6 = namespaces.filter(function (namespace4) {
642
+ return namespace4.queryPath !== null;
637
643
  })[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
638
644
  var namespace1 = _step6.value;
639
645
  var filePath1 = namespace1.queryPath;
@@ -711,156 +717,181 @@ function generateLite(opts) {
711
717
  }
712
718
  }
713
719
  }
714
- var owners = new Map(modelNamespaces.map(function (namespace3) {
715
- return [namespace3.name, namespace3.instance];
716
- }));
717
- var relatedOwners = /* @__PURE__ */new Map();
718
- var directTables = /* @__PURE__ */new Map();
719
- var syncTables = /* @__PURE__ */new Map();
720
+ var owners = /* @__PURE__ */new Map();
720
721
  var _iteratorNormalCompletion8 = true,
721
722
  _didIteratorError8 = false,
722
723
  _iteratorError8 = void 0;
723
724
  try {
724
- for (var _iterator8 = instances[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
725
- var instance = _step8.value;
726
- var direct = new Set(instance.namespaces.filter(function (namespace3) {
727
- return namespace3.modelPath !== null;
728
- }).map(function (namespace3) {
729
- return namespace3.name;
725
+ for (var _iterator8 = modelNamespaces[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
726
+ var namespace2 = _step8.value;
727
+ var table1 = modelTables.get(namespace2.name);
728
+ var owner = owners.get(table1);
729
+ if (owner && owner !== namespace2.instance) {
730
+ throw new Error(`[on-zero] table '${table1}' is claimed by instances '${owner}' and '${namespace2.instance}'`);
731
+ }
732
+ owners.set(table1, namespace2.instance);
733
+ }
734
+ } catch (err) {
735
+ _didIteratorError8 = true;
736
+ _iteratorError8 = err;
737
+ } finally {
738
+ try {
739
+ if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
740
+ _iterator8.return();
741
+ }
742
+ } finally {
743
+ if (_didIteratorError8) {
744
+ throw _iteratorError8;
745
+ }
746
+ }
747
+ }
748
+ var relatedOwners = /* @__PURE__ */new Map();
749
+ var directTables = /* @__PURE__ */new Map();
750
+ var syncTables = /* @__PURE__ */new Map();
751
+ var _iteratorNormalCompletion9 = true,
752
+ _didIteratorError9 = false,
753
+ _iteratorError9 = void 0;
754
+ try {
755
+ for (var _iterator9 = instances[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
756
+ var instance = _step9.value;
757
+ var direct = new Set(instance.namespaces.filter(function (namespace4) {
758
+ return namespace4.modelPath !== null;
759
+ }).map(function (namespace4) {
760
+ return modelTables.get(namespace4.name);
730
761
  }));
731
762
  var synced = new Set(direct);
732
- var _iteratorNormalCompletion9 = true,
733
- _didIteratorError9 = false,
734
- _iteratorError9 = void 0;
763
+ var _iteratorNormalCompletion10 = true,
764
+ _didIteratorError10 = false,
765
+ _iteratorError10 = void 0;
735
766
  try {
736
- for (var _iterator9 = instance.namespaces[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
737
- var namespace2 = _step9.value;
767
+ for (var _iterator10 = instance.namespaces[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
768
+ var namespace3 = _step10.value;
738
769
  var _queryPaths_get1;
739
- var _iteratorNormalCompletion10 = true,
740
- _didIteratorError10 = false,
741
- _iteratorError10 = void 0;
770
+ var _iteratorNormalCompletion11 = true,
771
+ _didIteratorError11 = false,
772
+ _iteratorError11 = void 0;
742
773
  try {
743
- 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) {
744
- var query = _step10.value;
774
+ 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) {
775
+ var query = _step11.value;
745
776
  var _owners_get;
746
777
  var rootOwner = (_owners_get = owners.get(query.rootTable)) !== null && _owners_get !== void 0 ? _owners_get : relatedOwners.get(query.rootTable);
747
778
  if (rootOwner && rootOwner !== instance.name) {
748
- throw new Error(`[on-zero] ${namespace2.name}.${query.query} in instance '${instance.name}' reaches table '${query.rootTable}' owned by instance '${rootOwner}'`);
779
+ throw new Error(`[on-zero] ${namespace3.name}.${query.query} in instance '${instance.name}' reaches table '${query.rootTable}' owned by instance '${rootOwner}'`);
749
780
  }
750
781
  relatedOwners.set(query.rootTable, instance.name);
751
782
  direct.add(query.rootTable);
752
783
  synced.add(query.rootTable);
753
- var _iteratorNormalCompletion11 = true,
754
- _didIteratorError11 = false,
755
- _iteratorError11 = void 0;
784
+ var _iteratorNormalCompletion12 = true,
785
+ _didIteratorError12 = false,
786
+ _iteratorError12 = void 0;
756
787
  try {
757
- for (var _iterator11 = query.paths[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
758
- var path1 = _step11.value;
788
+ for (var _iterator12 = query.paths[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
789
+ var path1 = _step12.value;
759
790
  var sourceTable = query.rootTable;
760
- var _iteratorNormalCompletion12 = true,
761
- _didIteratorError12 = false,
762
- _iteratorError12 = void 0;
791
+ var _iteratorNormalCompletion13 = true,
792
+ _didIteratorError13 = false,
793
+ _iteratorError13 = void 0;
763
794
  try {
764
- for (var _iterator12 = path1[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
765
- var relationName = _step12.value;
795
+ for (var _iterator13 = path1[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
796
+ var relationName = _step13.value;
766
797
  var _owners_get1;
767
798
  var _relations_get1;
768
799
  var target = (_relations_get1 = relations.get(sourceTable)) === null || _relations_get1 === void 0 ? void 0 : _relations_get1.get(relationName);
769
800
  if (!target) {
770
- throw new Error(`[on-zero] ${namespace2.name}.${query.query} related('${relationName}') cannot be resolved from table '${sourceTable}' through relations.ts`);
801
+ throw new Error(`[on-zero] ${namespace3.name}.${query.query} related('${relationName}') cannot be resolved from table '${sourceTable}' through relations.ts`);
771
802
  }
772
- var owner = (_owners_get1 = owners.get(target)) !== null && _owners_get1 !== void 0 ? _owners_get1 : relatedOwners.get(target);
773
- if (owner && owner !== instance.name) {
774
- throw new Error(`[on-zero] ${namespace2.name}.${query.query} in instance '${instance.name}' reaches table '${target}' owned by instance '${owner}'`);
803
+ var owner1 = (_owners_get1 = owners.get(target)) !== null && _owners_get1 !== void 0 ? _owners_get1 : relatedOwners.get(target);
804
+ if (owner1 && owner1 !== instance.name) {
805
+ throw new Error(`[on-zero] ${namespace3.name}.${query.query} in instance '${instance.name}' reaches table '${target}' owned by instance '${owner1}'`);
775
806
  }
776
807
  relatedOwners.set(target, instance.name);
777
808
  synced.add(target);
778
809
  sourceTable = target;
779
810
  }
780
811
  } catch (err) {
781
- _didIteratorError12 = true;
782
- _iteratorError12 = err;
812
+ _didIteratorError13 = true;
813
+ _iteratorError13 = err;
783
814
  } finally {
784
815
  try {
785
- if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
786
- _iterator12.return();
816
+ if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
817
+ _iterator13.return();
787
818
  }
788
819
  } finally {
789
- if (_didIteratorError12) {
790
- throw _iteratorError12;
820
+ if (_didIteratorError13) {
821
+ throw _iteratorError13;
791
822
  }
792
823
  }
793
824
  }
794
825
  }
795
826
  } catch (err) {
796
- _didIteratorError11 = true;
797
- _iteratorError11 = err;
827
+ _didIteratorError12 = true;
828
+ _iteratorError12 = err;
798
829
  } finally {
799
830
  try {
800
- if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
801
- _iterator11.return();
831
+ if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
832
+ _iterator12.return();
802
833
  }
803
834
  } finally {
804
- if (_didIteratorError11) {
805
- throw _iteratorError11;
835
+ if (_didIteratorError12) {
836
+ throw _iteratorError12;
806
837
  }
807
838
  }
808
839
  }
809
840
  }
810
841
  } catch (err) {
811
- _didIteratorError10 = true;
812
- _iteratorError10 = err;
842
+ _didIteratorError11 = true;
843
+ _iteratorError11 = err;
813
844
  } finally {
814
845
  try {
815
- if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
816
- _iterator10.return();
846
+ if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
847
+ _iterator11.return();
817
848
  }
818
849
  } finally {
819
- if (_didIteratorError10) {
820
- throw _iteratorError10;
850
+ if (_didIteratorError11) {
851
+ throw _iteratorError11;
821
852
  }
822
853
  }
823
854
  }
824
855
  }
825
856
  } catch (err) {
826
- _didIteratorError9 = true;
827
- _iteratorError9 = err;
857
+ _didIteratorError10 = true;
858
+ _iteratorError10 = err;
828
859
  } finally {
829
860
  try {
830
- if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
831
- _iterator9.return();
861
+ if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
862
+ _iterator10.return();
832
863
  }
833
864
  } finally {
834
- if (_didIteratorError9) {
835
- throw _iteratorError9;
865
+ if (_didIteratorError10) {
866
+ throw _iteratorError10;
836
867
  }
837
868
  }
838
869
  }
839
870
  directTables.set(instance.name, [...direct].sort());
840
871
  var tables = [...synced].sort();
841
872
  if (instance.scope) {
842
- var _iteratorNormalCompletion13 = true,
843
- _didIteratorError13 = false,
844
- _iteratorError13 = void 0;
873
+ var _iteratorNormalCompletion14 = true,
874
+ _didIteratorError14 = false,
875
+ _iteratorError14 = void 0;
845
876
  try {
846
- for (var _iterator13 = tables[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
847
- var table1 = _step13.value;
877
+ for (var _iterator14 = tables[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
878
+ var table2 = _step14.value;
848
879
  var _tableColumns_get;
849
- if (!((_tableColumns_get = tableColumns.get(table1)) === null || _tableColumns_get === void 0 ? void 0 : _tableColumns_get.has(instance.scope))) {
850
- throw new Error(`[on-zero] table '${table1}' in instance '${instance.name}' is missing scope column '${instance.scope}'`);
880
+ if (!((_tableColumns_get = tableColumns.get(table2)) === null || _tableColumns_get === void 0 ? void 0 : _tableColumns_get.has(instance.scope))) {
881
+ throw new Error(`[on-zero] table '${table2}' in instance '${instance.name}' is missing scope column '${instance.scope}'`);
851
882
  }
852
883
  }
853
884
  } catch (err) {
854
- _didIteratorError13 = true;
855
- _iteratorError13 = err;
885
+ _didIteratorError14 = true;
886
+ _iteratorError14 = err;
856
887
  } finally {
857
888
  try {
858
- if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
859
- _iterator13.return();
889
+ if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
890
+ _iterator14.return();
860
891
  }
861
892
  } finally {
862
- if (_didIteratorError13) {
863
- throw _iteratorError13;
893
+ if (_didIteratorError14) {
894
+ throw _iteratorError14;
864
895
  }
865
896
  }
866
897
  }
@@ -868,34 +899,34 @@ function generateLite(opts) {
868
899
  syncTables.set(instance.name, tables);
869
900
  }
870
901
  } catch (err) {
871
- _didIteratorError8 = true;
872
- _iteratorError8 = err;
902
+ _didIteratorError9 = true;
903
+ _iteratorError9 = err;
873
904
  } finally {
874
905
  try {
875
- if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
876
- _iterator8.return();
906
+ if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
907
+ _iterator9.return();
877
908
  }
878
909
  } finally {
879
- if (_didIteratorError8) {
880
- throw _iteratorError8;
910
+ if (_didIteratorError9) {
911
+ throw _iteratorError9;
881
912
  }
882
913
  }
883
914
  }
884
915
  var supportTables = /* @__PURE__ */new Map();
885
- var _iteratorNormalCompletion14 = true,
886
- _didIteratorError14 = false,
887
- _iteratorError14 = void 0;
916
+ var _iteratorNormalCompletion15 = true,
917
+ _didIteratorError15 = false,
918
+ _iteratorError15 = void 0;
888
919
  try {
889
920
  var _loop = function () {
890
- var instance2 = _step14.value;
921
+ var instance2 = _step15.value;
891
922
  var supported = new Set(instance2.declaredSupportTables);
892
- var _iteratorNormalCompletion16 = true,
893
- _didIteratorError16 = false,
894
- _iteratorError16 = void 0;
923
+ var _iteratorNormalCompletion17 = true,
924
+ _didIteratorError17 = false,
925
+ _iteratorError17 = void 0;
895
926
  try {
896
927
  var _loop2 = function () {
897
- var namespace3 = _step16.value;
898
- if (!namespace3.modelPath) return "continue";
928
+ var namespace4 = _step17.value;
929
+ if (!namespace4.modelPath) return "continue";
899
930
  var visited = /* @__PURE__ */new Set();
900
931
  var scan = function scan1(path2) {
901
932
  var _parsed_supportTables, _parsed_imports;
@@ -905,37 +936,37 @@ function generateLite(opts) {
905
936
  if (parsed3.parseError) {
906
937
  throw new Error(`[on-zero] unable to derive mutation dependencies from ${path2}: ${parsed3.parseError}`);
907
938
  }
908
- var _iteratorNormalCompletion17 = true,
909
- _didIteratorError17 = false,
910
- _iteratorError17 = void 0;
939
+ var _iteratorNormalCompletion18 = true,
940
+ _didIteratorError18 = false,
941
+ _iteratorError18 = void 0;
911
942
  try {
912
- for (var _iterator17 = ((_parsed_supportTables = parsed3.supportTables) !== null && _parsed_supportTables !== void 0 ? _parsed_supportTables : [])[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) {
913
- var table2 = _step17.value;
914
- if (owners.has(table2) || relatedOwners.has(table2)) continue;
915
- if (!syncTables.get(instance2.name).includes(table2)) {
916
- supported.add(table2);
943
+ for (var _iterator18 = ((_parsed_supportTables = parsed3.supportTables) !== null && _parsed_supportTables !== void 0 ? _parsed_supportTables : [])[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {
944
+ var table3 = _step18.value;
945
+ if (owners.has(table3) || relatedOwners.has(table3)) continue;
946
+ if (!syncTables.get(instance2.name).includes(table3)) {
947
+ supported.add(table3);
917
948
  }
918
949
  }
919
950
  } catch (err) {
920
- _didIteratorError17 = true;
921
- _iteratorError17 = err;
951
+ _didIteratorError18 = true;
952
+ _iteratorError18 = err;
922
953
  } finally {
923
954
  try {
924
- if (!_iteratorNormalCompletion17 && _iterator17.return != null) {
925
- _iterator17.return();
955
+ if (!_iteratorNormalCompletion18 && _iterator18.return != null) {
956
+ _iterator18.return();
926
957
  }
927
958
  } finally {
928
- if (_didIteratorError17) {
929
- throw _iteratorError17;
959
+ if (_didIteratorError18) {
960
+ throw _iteratorError18;
930
961
  }
931
962
  }
932
963
  }
933
- var _iteratorNormalCompletion18 = true,
934
- _didIteratorError18 = false,
935
- _iteratorError18 = void 0;
964
+ var _iteratorNormalCompletion19 = true,
965
+ _didIteratorError19 = false,
966
+ _iteratorError19 = void 0;
936
967
  try {
937
- for (var _iterator18 = ((_parsed_imports = parsed3.imports) !== null && _parsed_imports !== void 0 ? _parsed_imports : [])[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {
938
- var specifier = _step18.value;
968
+ for (var _iterator19 = ((_parsed_imports = parsed3.imports) !== null && _parsed_imports !== void 0 ? _parsed_imports : [])[Symbol.iterator](), _step19; !(_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done); _iteratorNormalCompletion19 = true) {
969
+ var specifier = _step19.value;
939
970
  var unresolved = specifier.startsWith("~/data/") ? `${baseDir}/${specifier.slice("~/data/".length)}` : specifier.startsWith(".") ? `${parentDir(path2)}/${specifier}` : null;
940
971
  if (!unresolved) continue;
941
972
  var normalized = resolvePath(unresolved);
@@ -947,72 +978,72 @@ function generateLite(opts) {
947
978
  if (dependency) scan(dependency);
948
979
  }
949
980
  } catch (err) {
950
- _didIteratorError18 = true;
951
- _iteratorError18 = err;
981
+ _didIteratorError19 = true;
982
+ _iteratorError19 = err;
952
983
  } finally {
953
984
  try {
954
- if (!_iteratorNormalCompletion18 && _iterator18.return != null) {
955
- _iterator18.return();
985
+ if (!_iteratorNormalCompletion19 && _iterator19.return != null) {
986
+ _iterator19.return();
956
987
  }
957
988
  } finally {
958
- if (_didIteratorError18) {
959
- throw _iteratorError18;
989
+ if (_didIteratorError19) {
990
+ throw _iteratorError19;
960
991
  }
961
992
  }
962
993
  }
963
994
  };
964
- scan(namespace3.modelPath);
995
+ scan(namespace4.modelPath);
965
996
  };
966
- for (var _iterator16 = instance2.namespaces[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) _loop2();
997
+ for (var _iterator17 = instance2.namespaces[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) _loop2();
967
998
  } catch (err) {
968
- _didIteratorError16 = true;
969
- _iteratorError16 = err;
999
+ _didIteratorError17 = true;
1000
+ _iteratorError17 = err;
970
1001
  } finally {
971
1002
  try {
972
- if (!_iteratorNormalCompletion16 && _iterator16.return != null) {
973
- _iterator16.return();
1003
+ if (!_iteratorNormalCompletion17 && _iterator17.return != null) {
1004
+ _iterator17.return();
974
1005
  }
975
1006
  } finally {
976
- if (_didIteratorError16) {
977
- throw _iteratorError16;
1007
+ if (_didIteratorError17) {
1008
+ throw _iteratorError17;
978
1009
  }
979
1010
  }
980
1011
  }
981
1012
  supportTables.set(instance2.name, [...supported].sort());
982
1013
  };
983
- for (var _iterator14 = instances[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) _loop();
1014
+ for (var _iterator15 = instances[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) _loop();
984
1015
  } catch (err) {
985
- _didIteratorError14 = true;
986
- _iteratorError14 = err;
1016
+ _didIteratorError15 = true;
1017
+ _iteratorError15 = err;
987
1018
  } finally {
988
1019
  try {
989
- if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
990
- _iterator14.return();
1020
+ if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
1021
+ _iterator15.return();
991
1022
  }
992
1023
  } finally {
993
- if (_didIteratorError14) {
994
- throw _iteratorError14;
1024
+ if (_didIteratorError15) {
1025
+ throw _iteratorError15;
995
1026
  }
996
1027
  }
997
1028
  }
998
- var modelNames = modelNamespaces.map(function (namespace3) {
999
- return namespace3.name;
1029
+ var modelNames = modelNamespaces.map(function (namespace4) {
1030
+ return namespace4.name;
1000
1031
  });
1001
1032
  var out = {};
1002
- out["models.ts"] = (0, import_generate_helpers.generateModelsFile)(modelNamespaces.map(function (namespace3) {
1033
+ out["models.ts"] = (0, import_generate_helpers.generateModelsFile)(modelNamespaces.map(function (namespace4) {
1003
1034
  return {
1004
- name: namespace3.name,
1005
- importPath: `../${relativePath(baseDir, namespace3.modelPath).replace(/\.ts$/, "")}`
1035
+ name: namespace4.name,
1036
+ importPath: `../${relativePath(baseDir, namespace4.modelPath).replace(/\.ts$/, "")}`
1006
1037
  };
1007
1038
  }));
1008
1039
  if (modelNamesWithSchema.length > 0) {
1009
1040
  out["types.ts"] = (0, import_generate_helpers.generateTypesFile)(modelNamesWithSchema);
1010
- out["tables.ts"] = (0, import_generate_helpers.generateTablesFile)(modelNamespaces.filter(function (namespace3) {
1011
- return modelNamesWithSchema.includes(namespace3.name);
1012
- }).map(function (namespace3) {
1041
+ out["tables.ts"] = (0, import_generate_helpers.generateTablesFile)(modelNamespaces.filter(function (namespace4) {
1042
+ return modelNamesWithSchema.includes(namespace4.name);
1043
+ }).map(function (namespace4) {
1013
1044
  return {
1014
- name: namespace3.name,
1015
- importPath: `../${relativePath(baseDir, namespace3.modelPath).replace(/\.ts$/, "")}`
1045
+ name: namespace4.name,
1046
+ importPath: `../${relativePath(baseDir, namespace4.modelPath).replace(/\.ts$/, "")}`
1016
1047
  };
1017
1048
  }));
1018
1049
  }
@@ -1023,17 +1054,17 @@ function generateLite(opts) {
1023
1054
  return {
1024
1055
  name: instance2.name,
1025
1056
  scope: instance2.scope,
1026
- queryNames: instance2.namespaces.map(function (namespace3) {
1027
- return namespace3.name;
1057
+ queryNames: instance2.namespaces.map(function (namespace4) {
1058
+ return namespace4.name;
1028
1059
  }).filter(function (name) {
1029
1060
  return allQueries.some(function (query2) {
1030
1061
  return query2.sourceFile === name;
1031
1062
  });
1032
1063
  }),
1033
- modelNames: instance2.namespaces.filter(function (namespace3) {
1034
- return namespace3.modelPath;
1035
- }).map(function (namespace3) {
1036
- return namespace3.name;
1064
+ modelNames: instance2.namespaces.filter(function (namespace4) {
1065
+ return namespace4.modelPath;
1066
+ }).map(function (namespace4) {
1067
+ return namespace4.name;
1037
1068
  }),
1038
1069
  tables: directTables.get(instance2.name),
1039
1070
  syncTables: syncTables.get(instance2.name),
@@ -1043,30 +1074,41 @@ function generateLite(opts) {
1043
1074
  if (allModelMutations.length > 0) {
1044
1075
  out["syncedMutations.ts"] = (0, import_generate_helpers.generateSyncedMutationsFile)(allModelMutations);
1045
1076
  }
1077
+ var aggregateNamespaces = namespaces.filter(function (namespace4) {
1078
+ return namespace4.aggregatePath !== null;
1079
+ });
1080
+ if (aggregateNamespaces.length > 0) {
1081
+ out["aggregates.ts"] = (0, import_generate_helpers.generateAggregatesFile)(aggregateNamespaces.map(function (namespace4) {
1082
+ return {
1083
+ name: namespace4.name,
1084
+ importPath: `../${relativePath(baseDir, namespace4.aggregatePath).replace(/\.ts$/, "")}`
1085
+ };
1086
+ }));
1087
+ }
1046
1088
  var mutationCount = 0;
1047
- var _iteratorNormalCompletion15 = true,
1048
- _didIteratorError15 = false,
1049
- _iteratorError15 = void 0;
1089
+ var _iteratorNormalCompletion16 = true,
1090
+ _didIteratorError16 = false,
1091
+ _iteratorError16 = void 0;
1050
1092
  try {
1051
1093
  var _loop1 = function () {
1052
- var m = _step15.value;
1094
+ var m = _step16.value;
1053
1095
  if (m.hasCRUD) mutationCount += 3;
1054
1096
  mutationCount += m.custom.filter(function (mut) {
1055
1097
  return !m.hasCRUD || !["insert", "update", "delete", "upsert"].includes(mut.name);
1056
1098
  }).length;
1057
1099
  };
1058
- for (var _iterator15 = allModelMutations[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) _loop1();
1100
+ for (var _iterator16 = allModelMutations[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) _loop1();
1059
1101
  } catch (err) {
1060
- _didIteratorError15 = true;
1061
- _iteratorError15 = err;
1102
+ _didIteratorError16 = true;
1103
+ _iteratorError16 = err;
1062
1104
  } finally {
1063
1105
  try {
1064
- if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
1065
- _iterator15.return();
1106
+ if (!_iteratorNormalCompletion16 && _iterator16.return != null) {
1107
+ _iterator16.return();
1066
1108
  }
1067
1109
  } finally {
1068
- if (_didIteratorError15) {
1069
- throw _iteratorError15;
1110
+ if (_didIteratorError16) {
1111
+ throw _iteratorError16;
1070
1112
  }
1071
1113
  }
1072
1114
  }