on-zero 0.4.22 → 0.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/cjs/combineZeroClients.cjs +101 -0
  2. package/dist/cjs/combineZeroClients.native.js +150 -0
  3. package/dist/cjs/combineZeroClients.native.js.map +1 -0
  4. package/dist/cjs/createUseQuery.cjs +92 -4
  5. package/dist/cjs/createUseQuery.native.js +130 -4
  6. package/dist/cjs/createUseQuery.native.js.map +1 -1
  7. package/dist/cjs/createZeroClient.cjs +89 -12
  8. package/dist/cjs/createZeroClient.native.js +134 -43
  9. package/dist/cjs/createZeroClient.native.js.map +1 -1
  10. package/dist/cjs/index.cjs +1 -0
  11. package/dist/cjs/index.native.js +1 -0
  12. package/dist/cjs/index.native.js.map +1 -1
  13. package/dist/cjs/instanceRegistry.cjs +65 -0
  14. package/dist/cjs/instanceRegistry.native.js +111 -0
  15. package/dist/cjs/instanceRegistry.native.js.map +1 -0
  16. package/dist/cjs/multiInstance.test.cjs +322 -0
  17. package/dist/cjs/multiInstance.test.native.js +387 -0
  18. package/dist/cjs/multiInstance.test.native.js.map +1 -0
  19. package/dist/cjs/multiInstanceNested.test.cjs +206 -0
  20. package/dist/cjs/multiInstanceNested.test.native.js +254 -0
  21. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -0
  22. package/dist/cjs/run.cjs +5 -5
  23. package/dist/cjs/run.native.js +6 -5
  24. package/dist/cjs/run.native.js.map +1 -1
  25. package/dist/cjs/zeroRunner.cjs +4 -1
  26. package/dist/cjs/zeroRunner.native.js +4 -1
  27. package/dist/cjs/zeroRunner.native.js.map +1 -1
  28. package/dist/esm/combineZeroClients.mjs +76 -0
  29. package/dist/esm/combineZeroClients.mjs.map +1 -0
  30. package/dist/esm/combineZeroClients.native.js +122 -0
  31. package/dist/esm/combineZeroClients.native.js.map +1 -0
  32. package/dist/esm/createUseQuery.mjs +92 -5
  33. package/dist/esm/createUseQuery.mjs.map +1 -1
  34. package/dist/esm/createUseQuery.native.js +130 -5
  35. package/dist/esm/createUseQuery.native.js.map +1 -1
  36. package/dist/esm/createZeroClient.mjs +93 -16
  37. package/dist/esm/createZeroClient.mjs.map +1 -1
  38. package/dist/esm/createZeroClient.native.js +138 -47
  39. package/dist/esm/createZeroClient.native.js.map +1 -1
  40. package/dist/esm/index.js +1 -0
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/index.mjs +1 -0
  43. package/dist/esm/index.mjs.map +1 -1
  44. package/dist/esm/index.native.js +1 -0
  45. package/dist/esm/index.native.js.map +1 -1
  46. package/dist/esm/instanceRegistry.mjs +38 -0
  47. package/dist/esm/instanceRegistry.mjs.map +1 -0
  48. package/dist/esm/instanceRegistry.native.js +81 -0
  49. package/dist/esm/instanceRegistry.native.js.map +1 -0
  50. package/dist/esm/multiInstance.test.mjs +323 -0
  51. package/dist/esm/multiInstance.test.mjs.map +1 -0
  52. package/dist/esm/multiInstance.test.native.js +385 -0
  53. package/dist/esm/multiInstance.test.native.js.map +1 -0
  54. package/dist/esm/multiInstanceNested.test.mjs +207 -0
  55. package/dist/esm/multiInstanceNested.test.mjs.map +1 -0
  56. package/dist/esm/multiInstanceNested.test.native.js +252 -0
  57. package/dist/esm/multiInstanceNested.test.native.js.map +1 -0
  58. package/dist/esm/run.mjs +5 -5
  59. package/dist/esm/run.mjs.map +1 -1
  60. package/dist/esm/run.native.js +6 -5
  61. package/dist/esm/run.native.js.map +1 -1
  62. package/dist/esm/zeroRunner.mjs +4 -1
  63. package/dist/esm/zeroRunner.mjs.map +1 -1
  64. package/dist/esm/zeroRunner.native.js +4 -1
  65. package/dist/esm/zeroRunner.native.js.map +1 -1
  66. package/package.json +5 -3
  67. package/readme.md +59 -0
  68. package/src/combineZeroClients.tsx +186 -0
  69. package/src/createUseQuery.tsx +175 -12
  70. package/src/createZeroClient.tsx +227 -54
  71. package/src/index.ts +1 -0
  72. package/src/instanceRegistry.ts +75 -0
  73. package/src/multiInstance.test.tsx +284 -0
  74. package/src/multiInstanceNested.test.tsx +205 -0
  75. package/src/run.ts +7 -6
  76. package/src/zeroRunner.ts +7 -1
  77. package/types/combineZeroClients.d.ts +38 -0
  78. package/types/combineZeroClients.d.ts.map +1 -0
  79. package/types/createUseQuery.d.ts +15 -0
  80. package/types/createUseQuery.d.ts.map +1 -1
  81. package/types/createZeroClient.d.ts +10 -4
  82. package/types/createZeroClient.d.ts.map +1 -1
  83. package/types/index.d.ts +1 -0
  84. package/types/index.d.ts.map +1 -1
  85. package/types/instanceRegistry.d.ts +15 -0
  86. package/types/instanceRegistry.d.ts.map +1 -0
  87. package/types/multiInstance.test.d.ts +2 -0
  88. package/types/multiInstance.test.d.ts.map +1 -0
  89. package/types/multiInstanceNested.test.d.ts +5 -0
  90. package/types/multiInstanceNested.test.d.ts.map +1 -0
  91. package/types/run.d.ts.map +1 -1
  92. package/types/zeroRunner.d.ts +3 -1
  93. package/types/zeroRunner.d.ts.map +1 -1
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+
3
+ var import_jsx_runtime = require("react/jsx-runtime");
4
+ var import_zero = require("@rocicorp/zero");
5
+ var import_react = require("react");
6
+ var import_client = require("react-dom/client");
7
+ var import_vitest = require("vitest");
8
+ var import_combineZeroClients = require("./combineZeroClients.native.js");
9
+ var import_createZeroClient = require("./createZeroClient.native.js");
10
+ var import_zql = require("./zql.native.js");
11
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
12
+ var userTable = (0, import_zero.table)("user").columns({
13
+ id: (0, import_zero.string)(),
14
+ name: (0, import_zero.string)()
15
+ }).primaryKey("id");
16
+ var taskTable = (0, import_zero.table)("task").columns({
17
+ id: (0, import_zero.string)(),
18
+ title: (0, import_zero.string)()
19
+ }).primaryKey("id");
20
+ var schema = (0, import_zero.createSchema)({
21
+ tables: [userTable, taskTable]
22
+ });
23
+ var controlModels = {
24
+ user: {
25
+ mutate: {
26
+ seed: async function (ctx, row) {
27
+ await ctx.tx.mutate.user.upsert(row);
28
+ }
29
+ }
30
+ }
31
+ };
32
+ var ctlUserById = function (args) {
33
+ return import_zql.zql.user.where("id", args.id).one();
34
+ };
35
+ var control = (0, import_createZeroClient.createZeroClient)({
36
+ schema,
37
+ models: controlModels,
38
+ groupedQueries: {
39
+ ctlUser: {
40
+ byId: ctlUserById
41
+ }
42
+ },
43
+ instanceName: "nested-control"
44
+ });
45
+ var projectModels = {
46
+ prjSeed: {
47
+ mutate: {
48
+ seedUser: async function (ctx, row) {
49
+ await ctx.tx.mutate.user.upsert(row);
50
+ }
51
+ }
52
+ }
53
+ };
54
+ var prjTaskById = function (args) {
55
+ return import_zql.zql.task.where("id", args.id).one();
56
+ };
57
+ var project = (0, import_createZeroClient.createZeroClient)({
58
+ schema,
59
+ models: projectModels,
60
+ groupedQueries: {
61
+ prjTask: {
62
+ byId: prjTaskById
63
+ }
64
+ },
65
+ instanceName: "nested-project"
66
+ });
67
+ var combined = (0, import_combineZeroClients.combineZeroClients)(control, project);
68
+ var root;
69
+ var container;
70
+ (0, import_vitest.beforeEach)(function () {
71
+ resetProbe();
72
+ container = document.createElement("div");
73
+ document.body.appendChild(container);
74
+ root = (0, import_client.createRoot)(container);
75
+ });
76
+ (0, import_vitest.afterEach)(async function () {
77
+ await (0, import_react.act)(async function () {
78
+ return root.unmount();
79
+ });
80
+ container.remove();
81
+ });
82
+ var render = function (ui) {
83
+ return (0, import_react.act)(async function () {
84
+ return root.render(ui);
85
+ });
86
+ };
87
+ async function waitFor(condition, what) {
88
+ for (var i = 0; i < 200; i++) {
89
+ if (condition()) return;
90
+ await (0, import_react.act)(async function () {
91
+ await new Promise(function (resolve) {
92
+ return setTimeout(resolve, 5);
93
+ });
94
+ });
95
+ }
96
+ throw new Error(`timed out waiting for ${what}`);
97
+ }
98
+ var probe = {
99
+ data: void 0,
100
+ renders: 0
101
+ };
102
+ function resetProbe() {
103
+ probe.data = void 0;
104
+ probe.renders = 0;
105
+ }
106
+ function ControlUserProbe(param) {
107
+ var {
108
+ id
109
+ } = param;
110
+ var [data] = combined.useQuery(ctlUserById, {
111
+ id
112
+ });
113
+ probe.data = data !== null && data !== void 0 ? data : void 0;
114
+ probe.renders++;
115
+ return null;
116
+ }
117
+ var seedControl = async function (row) {
118
+ await (0, import_react.act)(async function () {
119
+ await control.zero.mutate.user.seed(row).client;
120
+ });
121
+ };
122
+ var seedProject = async function (row) {
123
+ await (0, import_react.act)(async function () {
124
+ await project.zero.mutate.prjSeed.seedUser(row).client;
125
+ });
126
+ };
127
+ (0, import_vitest.test)("outer-instance query reads the OUTER store under nested providers", async function () {
128
+ var _probe_data;
129
+ await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(control.ProvideZero, {
130
+ server: null,
131
+ userID: "t1-ctl",
132
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(project.ProvideZero, {
133
+ server: null,
134
+ userID: "t1-prj",
135
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(ControlUserProbe, {
136
+ id: "u1"
137
+ })
138
+ })
139
+ }));
140
+ await waitFor(function () {
141
+ return probe.renders > 0;
142
+ }, "probe mount");
143
+ await seedControl({
144
+ id: "u1",
145
+ name: "from-control"
146
+ });
147
+ await seedProject({
148
+ id: "u1",
149
+ name: "from-project"
150
+ });
151
+ await waitFor(function () {
152
+ return probe.data !== void 0;
153
+ }, "control row visible");
154
+ (0, import_vitest.expect)((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name).toBe("from-control");
155
+ });
156
+ (0, import_vitest.test)("inner provider unmount/remount does not break outer-instance subscriptions", async function () {
157
+ var App = function (param) {
158
+ var {
159
+ showInner
160
+ } = param;
161
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(control.ProvideZero, {
162
+ server: null,
163
+ userID: "t2-ctl",
164
+ children: showInner ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(project.ProvideZero, {
165
+ server: null,
166
+ userID: "t2-prj",
167
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(ControlUserProbe, {
168
+ id: "u2"
169
+ })
170
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(ControlUserProbe, {
171
+ id: "u2"
172
+ })
173
+ });
174
+ };
175
+ await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(App, {
176
+ showInner: true
177
+ }));
178
+ await waitFor(function () {
179
+ return probe.renders > 0;
180
+ }, "probe mount");
181
+ await seedControl({
182
+ id: "u2",
183
+ name: "v1"
184
+ });
185
+ await waitFor(function () {
186
+ var _probe_data;
187
+ return ((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name) === "v1";
188
+ }, "v1 visible");
189
+ await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(App, {
190
+ showInner: false
191
+ }));
192
+ await seedControl({
193
+ id: "u2",
194
+ name: "v2"
195
+ });
196
+ await waitFor(function () {
197
+ var _probe_data;
198
+ return ((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name) === "v2";
199
+ }, "v2 visible after inner unmount");
200
+ await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(App, {
201
+ showInner: true
202
+ }));
203
+ await seedControl({
204
+ id: "u2",
205
+ name: "v3"
206
+ });
207
+ await waitFor(function () {
208
+ var _probe_data;
209
+ return ((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name) === "v3";
210
+ }, "v3 visible after inner remount");
211
+ });
212
+ (0, import_vitest.test)("direct-path views re-materialize when the owning instance rotates", async function () {
213
+ var App = function (param) {
214
+ var {
215
+ userID
216
+ } = param;
217
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(control.ProvideZero, {
218
+ server: null,
219
+ userID,
220
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(ControlUserProbe, {
221
+ id: "u3"
222
+ })
223
+ });
224
+ };
225
+ await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(App, {
226
+ userID: "rot-1"
227
+ }));
228
+ await waitFor(function () {
229
+ return probe.renders > 0;
230
+ }, "probe mount");
231
+ await seedControl({
232
+ id: "u3",
233
+ name: "before-rotation"
234
+ });
235
+ await waitFor(function () {
236
+ var _probe_data;
237
+ return ((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name) === "before-rotation";
238
+ }, "pre-rotation row");
239
+ await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(App, {
240
+ userID: "rot-2"
241
+ }));
242
+ await waitFor(function () {
243
+ return probe.data === void 0;
244
+ }, "view reset to the new empty store");
245
+ await seedControl({
246
+ id: "u3",
247
+ name: "after-rotation"
248
+ });
249
+ await waitFor(function () {
250
+ var _probe_data;
251
+ return ((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name) === "after-rotation";
252
+ }, "post-rotation row");
253
+ });
254
+ //# sourceMappingURL=multiInstanceNested.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_jsx_runtime","require","import_zero","import_react","import_client","import_vitest","import_combineZeroClients","import_createZeroClient","import_zql","globalThis","IS_REACT_ACT_ENVIRONMENT","userTable","table","columns","id","string","name","primaryKey","taskTable","title","schema","createSchema","tables","controlModels","user","mutate","seed","ctx","row","tx","upsert","ctlUserById","args","zql","where","one","control","createZeroClient","models","groupedQueries","ctlUser","byId","instanceName","projectModels","prjSeed","seedUser","prjTaskById","task","project","prjTask","combined","combineZeroClients","root","container","beforeEach","resetProbe","document","createElement","body","appendChild","createRoot","afterEach","act","unmount","remove","render","ui","waitFor","condition","what","i","Promise","resolve","setTimeout","Error","probe","data","renders","ControlUserProbe","param","useQuery","seedControl","zero","client","seedProject"],"sources":["../../src/multiInstanceNested.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/cjs/run.cjs CHANGED
@@ -26,6 +26,7 @@ __export(run_exports, {
26
26
  setCustomQueries: () => setCustomQueries
27
27
  });
28
28
  module.exports = __toCommonJS(run_exports);
29
+ var import_instanceRegistry = require("./instanceRegistry.cjs");
29
30
  var import_resolveQuery = require("./resolveQuery.cjs");
30
31
  var import_zeroRunner = require("./zeroRunner.cjs");
31
32
  let customQueriesRef = null;
@@ -42,19 +43,18 @@ function run(queryOrFn, paramsOrMode, modeArg) {
42
43
  const hasParams = modeArg !== void 0 || paramsOrMode && paramsOrMode !== "complete";
43
44
  const params = hasParams ? paramsOrMode : void 0;
44
45
  const mode = hasParams ? modeArg : paramsOrMode;
45
- const runner = (0, import_zeroRunner.getRunner)();
46
46
  const options = mode === "complete" ? {
47
47
  type: "complete"
48
48
  } : void 0;
49
49
  if (queryOrFn && queryOrFn["ast"]) {
50
- return runner(queryOrFn, options);
50
+ return (0, import_zeroRunner.getRunner)()(queryOrFn, options);
51
51
  }
52
- const customQueries = getCustomQueries();
52
+ const instance = (0, import_instanceRegistry.getInstanceForQueryFn)(queryOrFn);
53
+ const customQueries = instance?.customQueries ?? getCustomQueries();
53
54
  const queryRequest = (0, import_resolveQuery.resolveQuery)({
54
55
  customQueries,
55
56
  fn: queryOrFn,
56
57
  params
57
58
  });
58
- const out = runner(queryRequest, options);
59
- return out;
59
+ return (0, import_zeroRunner.getRunner)(instance)(queryRequest, options);
60
60
  }
@@ -28,6 +28,7 @@ __export(run_exports, {
28
28
  setCustomQueries: () => setCustomQueries
29
29
  });
30
30
  module.exports = __toCommonJS(run_exports);
31
+ var import_instanceRegistry = require("./instanceRegistry.native.js");
31
32
  var import_resolveQuery = require("./resolveQuery.native.js");
32
33
  var import_zeroRunner = require("./zeroRunner.native.js");
33
34
  var customQueriesRef = null;
@@ -44,20 +45,20 @@ function run(queryOrFn, paramsOrMode, modeArg) {
44
45
  var hasParams = modeArg !== void 0 || paramsOrMode && paramsOrMode !== "complete";
45
46
  var params = hasParams ? paramsOrMode : void 0;
46
47
  var mode = hasParams ? modeArg : paramsOrMode;
47
- var runner = (0, import_zeroRunner.getRunner)();
48
48
  var options = mode === "complete" ? {
49
49
  type: "complete"
50
50
  } : void 0;
51
51
  if (queryOrFn && queryOrFn["ast"]) {
52
- return runner(queryOrFn, options);
52
+ return (0, import_zeroRunner.getRunner)()(queryOrFn, options);
53
53
  }
54
- var customQueries = getCustomQueries();
54
+ var instance = (0, import_instanceRegistry.getInstanceForQueryFn)(queryOrFn);
55
+ var _instance_customQueries;
56
+ var customQueries = (_instance_customQueries = instance === null || instance === void 0 ? void 0 : instance.customQueries) !== null && _instance_customQueries !== void 0 ? _instance_customQueries : getCustomQueries();
55
57
  var queryRequest = (0, import_resolveQuery.resolveQuery)({
56
58
  customQueries,
57
59
  fn: queryOrFn,
58
60
  params
59
61
  });
60
- var out = runner(queryRequest, options);
61
- return out;
62
+ return (0, import_zeroRunner.getRunner)(instance)(queryRequest, options);
62
63
  }
63
64
  //# sourceMappingURL=run.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","run_exports","__export","run","setCustomQueries","module","exports","import_resolveQuery","require","import_zeroRunner","customQueriesRef","queries","getCustomQueries","Error","queryOrFn","paramsOrMode","modeArg","hasParams","params","mode","runner","getRunner","options","type","customQueries","queryRequest","resolveQuery","fn"],"sources":["../../src/run.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,WAAA;AAAAC,QAAA,CAAAD,WAAA;EAAAE,GAAA,EAAAA,CAAA,KAAAA,GAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAgD,CAAAK,WAAA;AAChD,IAAAM,mBAAA,GAA0BC,OAAA;AAS1B,IAAIC,iBAAA,GAA4CD,OAAA;AAEzC,IAAAE,gBAAS,OAAiB;AAC/B,SAAAN,gBAAmBA,CAAAO,OAAA;EACrBD,gBAAA,GAAAC,OAAA;AAEA;AACE,SAAKC,gBAAkBA,CAAA;EACrB,KAAAF,gBAAU;IAAA,MACR,IAAAG,KAAA;EAAA;EAEJ,OAAAH,gBAAA;AACA;AACF,SAAAP,IAAAW,SAAA,EAAAC,YAAA,EAAAC,OAAA;EAiCO,IAAAC,SACL,GAAAD,OACA,eACAD,YACc,IAAAA,YAAA;EACd,IAAAG,MAAM,GAAAD,SAAY,GAAAF,YAAY,GAAc;EAC5C,IAAAI,IAAM,GAAAF,SAAS,GAAAD,OAAY,GAAAD,YAAe;EAC1C,IAAAK,MAAM,GAAO,IAAAX,iBAAY,CAAUY,SAAA;EACnC,IAAAC,OAAM,GAAAH,IAAA,KAAS;IACfI,IAAM;EAEC,IACC,KAAM;EACR,IACAT,SAAA,IAAAA,SAAA;IAEN,OAAIM,MAAA,CAAAN,SAAa,EAAUQ,OAAK,CAAG;EAEjC;EACF,IAAAE,aAAA,GAAAZ,gBAAA;EAEA,IAAAa,YAAM,OAAgBlB,mBAAiB,CAAAmB,YAAA;IACvCF,aAAM;IAENG,EAAA,EAAMb,SAAM;IAEZI;EACF","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","run_exports","__export","run","setCustomQueries","module","exports","import_instanceRegistry","require","import_resolveQuery","import_zeroRunner","customQueriesRef","queries","getCustomQueries","Error","queryOrFn","paramsOrMode","modeArg","hasParams","params","mode","options","type","getRunner","instance","getInstanceForQueryFn","_instance_customQueries","customQueries","queryRequest","resolveQuery","fn"],"sources":["../../src/run.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,WAAA;AAAAC,QAAA,CAAAD,WAAA;EAAAE,GAAA,EAAAA,CAAA,KAAAA,GAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAA,CAAsCK,WAAA;AACtC,IAAAM,uBAAgD,GAAAC,OAAA;AAChD,IAAAC,mBAAA,GAA0BD,OAAA;AAS1B,IAAIE,iBAAA,GAA4CF,OAAA;AAEzC,IAAAG,gBAAS,OAAiB;AAC/B,SAAAP,gBAAmBA,CAAAQ,OAAA;EACrBD,gBAAA,GAAAC,OAAA;AAEA;AACE,SAAKC,gBAAkBA,CAAA;EACrB,KAAAF,gBAAU;IAAA,MACR,IAAAG,KAAA;EAAA;EAEJ,OAAAH,gBAAA;AACA;AACF,SAAAR,IAAAY,SAAA,EAAAC,YAAA,EAAAC,OAAA;EAiCO,IAAAC,SACL,GAAAD,OACA,eACAD,YACc,IAAAA,YAAA;EACd,IAAAG,MAAM,GAAAD,SAAY,GAAAF,YAAY,GAAc;EAC5C,IAAAI,IAAM,GAAAF,SAAS,GAAAD,OAAY,GAAAD,YAAe;EAC1C,IAAAK,OAAM,GAAOD,IAAA,eAAY,GAAU;IACnCE,IAAM;EAEC,IACC,KAAM;EACR,IACAP,SAAA,IAAAA,SAAA;IAEN,OAAI,IAAAL,iBAAuB,CAAAa,SAAQ,IAAAR,SAAA,EAAAM,OAAA;EAEjC;EACF,IAAAG,QAAA,OAAAjB,uBAAA,CAAAkB,qBAAA,EAAAV,SAAA;EAIA,IAAAW,uBAAiB;EACjB,IAAAC,aAAM,IAAAD,uBAA0B,GAAAF,QAAiB,aAAiBA,QAAA,uBAAAA,QAAA,CAAAG,aAAA,cAAAD,uBAAA,cAAAA,uBAAA,GAAAb,gBAAA;EAClE,IAAAe,YAAM,OAAAnB,mBAAe,CAAAoB,YAAA;IAErBF,aAAO;IACTG,EAAA,EAAAf,SAAA","ignoreList":[]}
@@ -31,10 +31,13 @@ let runner = null;
31
31
  function setRunner(r) {
32
32
  runner = r;
33
33
  }
34
- function getRunner() {
34
+ function getRunner(instance) {
35
35
  if ((0, import_mutatorContext.isInZeroMutation)()) {
36
36
  return (q, o) => (0, import_mutatorContext.mutatorContext)().tx.run(q, o);
37
37
  }
38
+ if (instance?.runner) {
39
+ return instance.runner;
40
+ }
38
41
  if (!runner) {
39
42
  throw new Error("Zero runner not initialized. Ensure ProvideZero is mounted (client) or createZeroServer is called (server).");
40
43
  }
@@ -33,12 +33,15 @@ var runner = null;
33
33
  function setRunner(r) {
34
34
  runner = r;
35
35
  }
36
- function getRunner() {
36
+ function getRunner(instance) {
37
37
  if ((0, import_mutatorContext.isInZeroMutation)()) {
38
38
  return function (q, o) {
39
39
  return (0, import_mutatorContext.mutatorContext)().tx.run(q, o);
40
40
  };
41
41
  }
42
+ if (instance === null || instance === void 0 ? void 0 : instance.runner) {
43
+ return instance.runner;
44
+ }
42
45
  if (!runner) {
43
46
  throw new Error("Zero runner not initialized. Ensure ProvideZero is mounted (client) or createZeroServer is called (server).");
44
47
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","zeroRunner_exports","__export","getRunner","setRunner","module","exports","import_mutatorContext","require","runner","r","isInZeroMutation","q","o","mutatorContext","tx","run","Error"],"sources":["../../src/zeroRunner.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAiD,CAAAK,kBAAA;AAgBjD,IAAIM,qBAA4B,GAAAC,OAAA;AAEzB,IAAAC,MAAS;AACd,SAAAL,SAASA,CAAAM,CAAA;EACXD,MAAA,GAAAC,CAAA;AAEO;AACL,SAAAP,SAAIA,CAAA;EACF,QAAAI,qBAAiB,CAAAI,gBAAA;IACnB,iBAAAC,CAAA,EAAAC,CAAA;MAEI,OAAC,EAAQ,EAAAN,qBAAA,CAAAO,cAAA,IAAAC,EAAA,CAAAC,GAAA,CAAAJ,CAAA,EAAAC,CAAA;IACX;EAAU;EACR,IACF,CAAAJ,MAAA;IACF,UAAAQ,KAAA;EAEA;EACF,OAAAR,MAAA","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","zeroRunner_exports","__export","getRunner","setRunner","module","exports","import_mutatorContext","require","runner","r","instance","isInZeroMutation","q","o","mutatorContext","tx","run","Error"],"sources":["../../src/zeroRunner.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAiD,CAAAK,kBAAA;AAgBjD,IAAIM,qBAA4B,GAAAC,OAAA;AAEzB,IAAAC,MAAS;AACd,SAAAL,SAASA,CAAAM,CAAA;EACXD,MAAA,GAAAC,CAAA;AAEO;AACL,SAAAP,SAAIA,CAAAQ,QAAA;EACF,QAAAJ,qBAAiB,CAAAK,gBAAA;IACnB,iBAAAC,CAAA,EAAAC,CAAA;MAII,WAAUP,qBAAQ,CAAAQ,cAAA,IAAAC,EAAA,CAAAC,GAAA,CAAAJ,CAAA,EAAAC,CAAA;IACpB;EACF;EAEA,IAAIH,QAAC,KAAQ,QAAAA,QAAA,uBAAAA,QAAA,CAAAF,MAAA;IACX,OAAME,QAAI,CAAAF,MAAA;EAAA;EACR,IACF,CAAAA,MAAA;IACF,UAAAS,KAAA;EAEA;EACF,OAAAT,MAAA","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ import { createEmitter } from "@take-out/helpers";
2
+ import { getInstanceForNamespace, getInstanceForQueryFn } from "./instanceRegistry.mjs";
3
+ import { run } from "./run.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function combineZeroClients(...clientsAndOptions) {
6
+ const last = clientsAndOptions[clientsAndOptions.length - 1];
7
+ const hasOptions = typeof last.instanceName !== "string";
8
+ const clients = hasOptions ? clientsAndOptions.slice(0, -1) : clientsAndOptions;
9
+ const options = hasOptions ? last : {};
10
+ const primary = clients[0];
11
+ const innerName = options.inner ?? clients[clients.length - 1].instanceName;
12
+ const clientsByName = new Map(clients.map(client => [client.instanceName, client]));
13
+ if (!clientsByName.has(innerName)) {
14
+ throw new Error(`[on-zero] combineZeroClients inner instance '${innerName}' is not one of the passed clients`);
15
+ }
16
+ const ownerOfNamespace = namespace => {
17
+ const owner = getInstanceForNamespace(namespace);
18
+ return owner && clientsByName.get(owner.name) || primary;
19
+ };
20
+ const ownerOfQueryFn = fn => {
21
+ const owner = getInstanceForQueryFn(fn);
22
+ return owner && clientsByName.get(owner.name) || primary;
23
+ };
24
+ function useQuery(...args) {
25
+ const owner = ownerOfQueryFn(args[0]);
26
+ return owner.instanceName === innerName ? owner.useQuery(...args) : owner.useQueryDirect(...args);
27
+ }
28
+ function usePermission(...args) {
29
+ const owner = ownerOfNamespace(String(args[0]));
30
+ return owner.instanceName === innerName ? owner.usePermission(...args) : owner.usePermissionDirect(...args);
31
+ }
32
+ const mutate = new Proxy({}, {
33
+ get(_, key) {
34
+ if (typeof key !== "string") return void 0;
35
+ return ownerOfNamespace(key).zero.mutate[key];
36
+ }
37
+ });
38
+ const zero = new Proxy({}, {
39
+ get(_, key) {
40
+ if (key === "mutate") {
41
+ return mutate;
42
+ }
43
+ return primary.zero[key];
44
+ }
45
+ });
46
+ function preload(...args) {
47
+ return ownerOfQueryFn(args[0]).preload(...args);
48
+ }
49
+ function getQuery(...args) {
50
+ return ownerOfQueryFn(args[0]).getQuery(...args);
51
+ }
52
+ const zeroEvents = createEmitter(`zero:combined(${clients.map(client => client.instanceName).join("+")})`, null);
53
+ for (const client of clients) {
54
+ client.zeroEvents.listen(event => zeroEvents.emit(event));
55
+ }
56
+ const ControlQueries = ({
57
+ children,
58
+ ...props
59
+ }) => clients.reduceRight((inner, client) => /* @__PURE__ */jsx(client.ControlQueries, {
60
+ ...props,
61
+ children: inner
62
+ }), children);
63
+ const combined = {
64
+ useQuery,
65
+ usePermission,
66
+ zero,
67
+ preload,
68
+ getQuery,
69
+ run,
70
+ zeroEvents,
71
+ ControlQueries
72
+ };
73
+ return combined;
74
+ }
75
+ export { combineZeroClients };
76
+ //# sourceMappingURL=combineZeroClients.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createEmitter","getInstanceForNamespace","getInstanceForQueryFn","run","jsx","combineZeroClients","clientsAndOptions","last","length","hasOptions","instanceName","clients","slice","options","primary","innerName","inner","clientsByName","Map","map","client","has","Error","ownerOfNamespace","namespace","owner","get","name","ownerOfQueryFn","fn","useQuery","args","useQueryDirect","usePermission","String","usePermissionDirect","mutate","Proxy","_","key","zero","preload","getQuery","zeroEvents","join","listen","event","emit","ControlQueries","children","props","reduceRight","combined"],"sources":["../../src/combineZeroClients.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createEmitter } from "@take-out/helpers";
3
+ import { getInstanceForNamespace, getInstanceForQueryFn } from "./instanceRegistry.native.js";
4
+ import { run } from "./run.native.js";
5
+ function combineZeroClients() {
6
+ for (var _len = arguments.length, clientsAndOptions = new Array(_len), _key = 0; _key < _len; _key++) {
7
+ clientsAndOptions[_key] = arguments[_key];
8
+ }
9
+ var last = clientsAndOptions[clientsAndOptions.length - 1];
10
+ var hasOptions = typeof last.instanceName !== "string";
11
+ var clients = hasOptions ? clientsAndOptions.slice(0, -1) : clientsAndOptions;
12
+ var options = hasOptions ? last : {};
13
+ var primary = clients[0];
14
+ var _options_inner;
15
+ var innerName = (_options_inner = options.inner) !== null && _options_inner !== void 0 ? _options_inner : clients[clients.length - 1].instanceName;
16
+ var clientsByName = new Map(clients.map(function (client2) {
17
+ return [client2.instanceName, client2];
18
+ }));
19
+ if (!clientsByName.has(innerName)) {
20
+ throw new Error(`[on-zero] combineZeroClients inner instance '${innerName}' is not one of the passed clients`);
21
+ }
22
+ var ownerOfNamespace = function (namespace) {
23
+ var owner = getInstanceForNamespace(namespace);
24
+ return owner && clientsByName.get(owner.name) || primary;
25
+ };
26
+ var ownerOfQueryFn = function (fn) {
27
+ var owner = getInstanceForQueryFn(fn);
28
+ return owner && clientsByName.get(owner.name) || primary;
29
+ };
30
+ function useQuery() {
31
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
32
+ args[_key2] = arguments[_key2];
33
+ }
34
+ var owner = ownerOfQueryFn(args[0]);
35
+ return owner.instanceName === innerName ? owner.useQuery(...args) : owner.useQueryDirect(...args);
36
+ }
37
+ function usePermission() {
38
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
39
+ args[_key2] = arguments[_key2];
40
+ }
41
+ var owner = ownerOfNamespace(String(args[0]));
42
+ return owner.instanceName === innerName ? owner.usePermission(...args) : owner.usePermissionDirect(...args);
43
+ }
44
+ var mutate = new Proxy({}, {
45
+ get(_, key) {
46
+ if (typeof key !== "string") return void 0;
47
+ return ownerOfNamespace(key).zero.mutate[key];
48
+ }
49
+ });
50
+ var zero = new Proxy({}, {
51
+ get(_, key) {
52
+ if (key === "mutate") {
53
+ return mutate;
54
+ }
55
+ return primary.zero[key];
56
+ }
57
+ });
58
+ function preload() {
59
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
60
+ args[_key2] = arguments[_key2];
61
+ }
62
+ return ownerOfQueryFn(args[0]).preload(...args);
63
+ }
64
+ function getQuery() {
65
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
66
+ args[_key2] = arguments[_key2];
67
+ }
68
+ return ownerOfQueryFn(args[0]).getQuery(...args);
69
+ }
70
+ var zeroEvents = createEmitter(`zero:combined(${clients.map(function (client2) {
71
+ return client2.instanceName;
72
+ }).join("+")})`, null);
73
+ var _iteratorNormalCompletion = true,
74
+ _didIteratorError = false,
75
+ _iteratorError = void 0;
76
+ try {
77
+ for (var _iterator = clients[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
78
+ var client = _step.value;
79
+ client.zeroEvents.listen(function (event) {
80
+ return zeroEvents.emit(event);
81
+ });
82
+ }
83
+ } catch (err) {
84
+ _didIteratorError = true;
85
+ _iteratorError = err;
86
+ } finally {
87
+ try {
88
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
89
+ _iterator.return();
90
+ }
91
+ } finally {
92
+ if (_didIteratorError) {
93
+ throw _iteratorError;
94
+ }
95
+ }
96
+ }
97
+ var ControlQueries = function (param) {
98
+ var {
99
+ children,
100
+ ...props
101
+ } = param;
102
+ return clients.reduceRight(function (inner, client2) {
103
+ return /* @__PURE__ */_jsx(client2.ControlQueries, {
104
+ ...props,
105
+ children: inner
106
+ });
107
+ }, children);
108
+ };
109
+ var combined = {
110
+ useQuery,
111
+ usePermission,
112
+ zero,
113
+ preload,
114
+ getQuery,
115
+ run,
116
+ zeroEvents,
117
+ ControlQueries
118
+ };
119
+ return combined;
120
+ }
121
+ export { combineZeroClients };
122
+ //# sourceMappingURL=combineZeroClients.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","createEmitter","getInstanceForNamespace","getInstanceForQueryFn","run","combineZeroClients","_len","arguments","length","clientsAndOptions","Array","_key","last","hasOptions","instanceName","clients","slice","options","primary","_options_inner","innerName","inner","clientsByName","Map","map","client2","has","Error","ownerOfNamespace","namespace","owner","get","name","ownerOfQueryFn","fn","useQuery","_len2","args","_key2","useQueryDirect","usePermission","String","usePermissionDirect","mutate","Proxy","_","key","zero","preload","getQuery","zeroEvents","join","_iteratorNormalCompletion","_didIteratorError","_iteratorError"],"sources":["../../src/combineZeroClients.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}