on-zero 0.4.36 → 0.4.38

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 (83) hide show
  1. package/dist/cjs/combineZeroClients.native.js.map +1 -1
  2. package/dist/cjs/createUseQuery.cjs +7 -97
  3. package/dist/cjs/createUseQuery.native.js +7 -133
  4. package/dist/cjs/createUseQuery.native.js.map +1 -1
  5. package/dist/cjs/createUseQueryDirect.cjs +229 -0
  6. package/dist/cjs/createUseQueryDirect.native.js +335 -0
  7. package/dist/cjs/createUseQueryDirect.native.js.map +1 -0
  8. package/dist/cjs/createZeroClient.cjs +61 -17
  9. package/dist/cjs/createZeroClient.native.js +65 -17
  10. package/dist/cjs/createZeroClient.native.js.map +1 -1
  11. package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
  12. package/dist/cjs/index.cjs +2 -2
  13. package/dist/cjs/index.native.js +2 -2
  14. package/dist/cjs/index.native.js.map +1 -1
  15. package/dist/cjs/multi.cjs +38 -0
  16. package/dist/cjs/multi.native.js +41 -0
  17. package/dist/cjs/multi.native.js.map +1 -0
  18. package/dist/cjs/multiInstanceNested.test.cjs +92 -12
  19. package/dist/cjs/multiInstanceNested.test.native.js +108 -12
  20. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
  21. package/dist/cjs/testSetup.cjs +26 -0
  22. package/dist/cjs/testSetup.native.js +32 -0
  23. package/dist/cjs/testSetup.native.js.map +1 -0
  24. package/dist/esm/combineZeroClients.mjs.map +1 -1
  25. package/dist/esm/combineZeroClients.native.js.map +1 -1
  26. package/dist/esm/createUseQuery.mjs +8 -98
  27. package/dist/esm/createUseQuery.mjs.map +1 -1
  28. package/dist/esm/createUseQuery.native.js +8 -134
  29. package/dist/esm/createUseQuery.native.js.map +1 -1
  30. package/dist/esm/createUseQueryDirect.mjs +204 -0
  31. package/dist/esm/createUseQueryDirect.mjs.map +1 -0
  32. package/dist/esm/createUseQueryDirect.native.js +307 -0
  33. package/dist/esm/createUseQueryDirect.native.js.map +1 -0
  34. package/dist/esm/createZeroClient.mjs +62 -19
  35. package/dist/esm/createZeroClient.mjs.map +1 -1
  36. package/dist/esm/createZeroClient.native.js +66 -19
  37. package/dist/esm/createZeroClient.native.js.map +1 -1
  38. package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
  39. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  40. package/dist/esm/index.js +2 -3
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/index.mjs +2 -3
  43. package/dist/esm/index.mjs.map +1 -1
  44. package/dist/esm/index.native.js +2 -3
  45. package/dist/esm/index.native.js.map +1 -1
  46. package/dist/esm/multi.mjs +12 -0
  47. package/dist/esm/multi.mjs.map +1 -0
  48. package/dist/esm/multi.native.js +12 -0
  49. package/dist/esm/multi.native.js.map +1 -0
  50. package/dist/esm/multiInstanceNested.test.mjs +85 -5
  51. package/dist/esm/multiInstanceNested.test.mjs.map +1 -1
  52. package/dist/esm/multiInstanceNested.test.native.js +101 -5
  53. package/dist/esm/multiInstanceNested.test.native.js.map +1 -1
  54. package/dist/esm/testSetup.mjs +27 -0
  55. package/dist/esm/testSetup.mjs.map +1 -0
  56. package/dist/esm/testSetup.native.js +30 -0
  57. package/dist/esm/testSetup.native.js.map +1 -0
  58. package/package.json +9 -3
  59. package/readme.md +10 -8
  60. package/src/combineZeroClients.tsx +4 -6
  61. package/src/createUseQuery.tsx +20 -190
  62. package/src/createUseQueryDirect.tsx +309 -0
  63. package/src/createZeroClient.tsx +158 -54
  64. package/src/helpers/recoverZeroClient.test.ts +8 -2
  65. package/src/index.ts +6 -2
  66. package/src/multi.ts +24 -0
  67. package/src/multiInstanceNested.test.tsx +79 -4
  68. package/src/testSetup.ts +26 -0
  69. package/types/combineZeroClients.d.ts.map +1 -1
  70. package/types/createUseQuery.d.ts +4 -15
  71. package/types/createUseQuery.d.ts.map +1 -1
  72. package/types/createUseQueryDirect.d.ts +29 -0
  73. package/types/createUseQueryDirect.d.ts.map +1 -0
  74. package/types/createZeroClient.d.ts +53 -7
  75. package/types/createZeroClient.d.ts.map +1 -1
  76. package/types/index.d.ts +1 -2
  77. package/types/index.d.ts.map +1 -1
  78. package/types/multi.d.ts +6 -0
  79. package/types/multi.d.ts.map +1 -0
  80. package/types/multiInstanceNested.test.d.ts.map +1 -1
  81. package/types/testSetup.d.ts +1 -0
  82. package/types/testSetup.d.ts.map +1 -0
  83. package/vitest.config.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"names":["createSchema","string","table","act","StrictMode","createRoot","afterEach","beforeEach","expect","test","combineZeroClients","createZeroClient","zql","jsx","globalThis","IS_REACT_ACT_ENVIRONMENT","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","controlModels","user","mutate","seed","ctx","row","tx","upsert","ctlUserById","args","where","one","control","models","groupedQueries","ctlUser","byId","instanceName","projectModels","prjSeed","seedUser","prjTaskById","task","project","prjTask","combined","root","container","resetProbe","document","createElement","body","appendChild","unmount","remove","render","ui","waitFor","condition","what","i","Promise","resolve","setTimeout","Error","probe","data","renders","ControlUserProbe","useQuery","seedControl","zero","client","seedProject","ProvideZero","server","userID","children","toBe","App","showInner"],"sources":["../../src/multiInstanceNested.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createSchema","string","table","useZero","act","StrictMode","createRoot","afterEach","beforeEach","expect","test","createZeroClient","combineZeroClients","createZeroClientWithDirectQueries","zql","Fragment","jsx","jsxs","globalThis","IS_REACT_ACT_ENVIRONMENT","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","controlModels","user","mutate","seed","ctx","row","tx","upsert","ctlUserById","args","where","one","control","models","groupedQueries","ctlUser","byId","instanceName","projectModels","prjSeed","seedUser","prjTaskById","task","project","prjTask","combined","root","container","resetProbe","document","createElement","body","appendChild","unmount","Promise","resolve","setTimeout","remove","render","ui","waitFor","condition","what","i","Error","probe","data","renders","materializeProbe","materializeTtls","updateTtls","destroys","ControlUserProbe","ttl","useQuery","MaterializeProbe","zero","__onZeroMaterializeProbe","materialize","bind","push","view","updateTTL","destroy","seedControl","client","seedProject","ProvideZero","server","userID","children","toBe","App","showInner","showSubscribers","toEqual"],"sources":["../../src/multiInstanceNested.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,11 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { createSchema, string, table } from "@rocicorp/zero";
3
+ import { useZero } from "@rocicorp/zero/react";
3
4
  import { act, StrictMode } from "react";
4
5
  import { createRoot } from "react-dom/client";
5
6
  import { afterEach, beforeEach, expect, test } from "vitest";
6
- import { combineZeroClients } from "./combineZeroClients.native.js";
7
7
  import { createZeroClient } from "./createZeroClient.native.js";
8
+ import { combineZeroClients, createZeroClientWithDirectQueries } from "./multi.native.js";
8
9
  import { zql } from "./zql.native.js";
9
10
  globalThis.IS_REACT_ACT_ENVIRONMENT = true;
10
11
  var userTable = table("user").columns({
@@ -30,7 +31,7 @@ var controlModels = {
30
31
  var ctlUserById = function (args) {
31
32
  return zql.user.where("id", args.id).one();
32
33
  };
33
- var control = createZeroClient({
34
+ var control = createZeroClientWithDirectQueries({
34
35
  schema,
35
36
  models: controlModels,
36
37
  groupedQueries: {
@@ -75,6 +76,11 @@ afterEach(async function () {
75
76
  await act(async function () {
76
77
  return root.unmount();
77
78
  });
79
+ await act(async function () {
80
+ await new Promise(function (resolve) {
81
+ return setTimeout(resolve, 20);
82
+ });
83
+ });
78
84
  container.remove();
79
85
  });
80
86
  var render = function (ui) {
@@ -97,21 +103,61 @@ var probe = {
97
103
  data: void 0,
98
104
  renders: 0
99
105
  };
106
+ var materializeProbe = {
107
+ materializeTtls: [],
108
+ updateTtls: [],
109
+ destroys: 0
110
+ };
100
111
  function resetProbe() {
101
112
  probe.data = void 0;
102
113
  probe.renders = 0;
114
+ materializeProbe.materializeTtls = [];
115
+ materializeProbe.updateTtls = [];
116
+ materializeProbe.destroys = 0;
103
117
  }
104
118
  function ControlUserProbe(param) {
105
119
  var {
106
- id
120
+ id,
121
+ ttl
107
122
  } = param;
108
- var [data] = combined.useQuery(ctlUserById, {
123
+ var [data] = ttl === void 0 ? combined.useQuery(ctlUserById, {
124
+ id
125
+ }) : combined.useQuery(ctlUserById, {
109
126
  id
127
+ }, {
128
+ ttl
110
129
  });
111
130
  probe.data = data !== null && data !== void 0 ? data : void 0;
112
131
  probe.renders++;
113
132
  return null;
114
133
  }
134
+ function MaterializeProbe() {
135
+ var zero = useZero();
136
+ if (!zero.__onZeroMaterializeProbe) {
137
+ zero.__onZeroMaterializeProbe = true;
138
+ var materialize = zero.materialize.bind(zero);
139
+ zero.materialize = function () {
140
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
141
+ args[_key] = arguments[_key];
142
+ }
143
+ var _args_;
144
+ materializeProbe.materializeTtls.push((_args_ = args[1]) === null || _args_ === void 0 ? void 0 : _args_.ttl);
145
+ var view = materialize(...args);
146
+ var updateTTL = view.updateTTL.bind(view);
147
+ view.updateTTL = function (ttl) {
148
+ materializeProbe.updateTtls.push(ttl);
149
+ return updateTTL(ttl);
150
+ };
151
+ var destroy = view.destroy.bind(view);
152
+ view.destroy = function () {
153
+ materializeProbe.destroys++;
154
+ return destroy();
155
+ };
156
+ return view;
157
+ };
158
+ }
159
+ return null;
160
+ }
115
161
  var seedControl = async function (row) {
116
162
  await act(async function () {
117
163
  await control.zero.mutate.user.seed(row).client;
@@ -241,6 +287,56 @@ test("StrictMode: direct views survive the effect double-invoke", async function
241
287
  return ((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name) === "strict-v2";
242
288
  }, "second update still live");
243
289
  });
290
+ test("direct-path subscribers share one materialized view", async function () {
291
+ var App = function (param) {
292
+ var {
293
+ showSubscribers
294
+ } = param;
295
+ return /* @__PURE__ */_jsxs(control.ProvideZero, {
296
+ server: null,
297
+ userID: "t5-ctl",
298
+ children: [/* @__PURE__ */_jsx(MaterializeProbe, {}), /* @__PURE__ */_jsx(project.ProvideZero, {
299
+ server: null,
300
+ userID: "t5-prj",
301
+ children: showSubscribers ? /* @__PURE__ */_jsxs(_Fragment, {
302
+ children: [/* @__PURE__ */_jsx(ControlUserProbe, {
303
+ id: "u5",
304
+ ttl: 1e3
305
+ }), /* @__PURE__ */_jsx(ControlUserProbe, {
306
+ id: "u5",
307
+ ttl: 2e3
308
+ })]
309
+ }) : null
310
+ })]
311
+ });
312
+ };
313
+ await render(/* @__PURE__ */_jsx(App, {
314
+ showSubscribers: true
315
+ }));
316
+ await waitFor(function () {
317
+ return probe.renders >= 2;
318
+ }, "both probes mount");
319
+ expect(materializeProbe.materializeTtls).toEqual([1e3]);
320
+ expect(materializeProbe.updateTtls).toEqual([2e3]);
321
+ await seedControl({
322
+ id: "u5",
323
+ name: "shared-v1"
324
+ });
325
+ await waitFor(function () {
326
+ var _probe_data;
327
+ return ((_probe_data = probe.data) === null || _probe_data === void 0 ? void 0 : _probe_data.name) === "shared-v1";
328
+ }, "shared view update visible");
329
+ expect(materializeProbe.materializeTtls).toEqual([1e3]);
330
+ await render(/* @__PURE__ */_jsx(App, {
331
+ showSubscribers: false
332
+ }));
333
+ await act(async function () {
334
+ await new Promise(function (resolve) {
335
+ return setTimeout(resolve, 20);
336
+ });
337
+ });
338
+ expect(materializeProbe.destroys).toBe(1);
339
+ });
244
340
  test("direct-path views re-materialize when the owning instance rotates", async function () {
245
341
  var App = function (param) {
246
342
  var {
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","createSchema","string","table","act","StrictMode","createRoot","afterEach","beforeEach","expect","test","combineZeroClients","createZeroClient","zql","globalThis","IS_REACT_ACT_ENVIRONMENT","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","controlModels","user","mutate","seed","ctx","row","tx","upsert","ctlUserById","args","where","one","control","models","groupedQueries","ctlUser","byId","instanceName","projectModels","prjSeed","seedUser","prjTaskById","task","project","prjTask","combined","root","container","resetProbe","document","createElement","body","appendChild","unmount","remove","render","ui","waitFor","condition","what","i","Promise","resolve","setTimeout","Error","probe","data","renders","ControlUserProbe","param","useQuery","seedControl","zero","client","seedProject","_probe_data","ProvideZero","server","userID","children"],"sources":["../../src/multiInstanceNested.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","createSchema","string","table","useZero","act","StrictMode","createRoot","afterEach","beforeEach","expect","test","createZeroClient","combineZeroClients","createZeroClientWithDirectQueries","zql","globalThis","IS_REACT_ACT_ENVIRONMENT","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","controlModels","user","mutate","seed","ctx","row","tx","upsert","ctlUserById","args","where","one","control","models","groupedQueries","ctlUser","byId","instanceName","projectModels","prjSeed","seedUser","prjTaskById","task","project","prjTask","combined","root","container","resetProbe","document","createElement","body","appendChild","unmount","Promise","resolve","setTimeout","remove","render","ui","waitFor","condition","what","i","Error","probe","data","renders","materializeProbe","materializeTtls","updateTtls","destroys","ControlUserProbe","param","ttl","useQuery","MaterializeProbe","zero","__onZeroMaterializeProbe","materialize","bind","_len","arguments","length","Array","_key","_args_","push","view","updateTTL","destroy","seedControl","client","seedProject","_probe_data","ProvideZero","server","userID","children"],"sources":["../../src/multiInstanceNested.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ if (typeof globalThis.localStorage?.getItem !== "function") {
2
+ const store = /* @__PURE__ */new Map();
3
+ Object.defineProperty(globalThis, "localStorage", {
4
+ configurable: true,
5
+ value: {
6
+ get length() {
7
+ return store.size;
8
+ },
9
+ clear() {
10
+ store.clear();
11
+ },
12
+ getItem(key) {
13
+ return store.get(String(key)) ?? null;
14
+ },
15
+ key(index) {
16
+ return Array.from(store.keys())[index] ?? null;
17
+ },
18
+ removeItem(key) {
19
+ store.delete(String(key));
20
+ },
21
+ setItem(key, value) {
22
+ store.set(String(key), String(value));
23
+ }
24
+ }
25
+ });
26
+ }
27
+ //# sourceMappingURL=testSetup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["globalThis","localStorage","getItem","store","Map","Object","defineProperty","configurable","value","length","size","clear","key","get","String","index","Array","from","keys","removeItem","delete","setItem","set"],"sources":["../../src/testSetup.ts"],"sourcesContent":[null],"mappings":"AAAA,IAAI,OAAOA,UAAA,CAAWC,YAAA,EAAcC,OAAA,KAAY,YAAY;EAC1D,MAAMC,KAAA,GAAQ,mBAAIC,GAAA,CAAoB;EACtCC,MAAA,CAAOC,cAAA,CAAeN,UAAA,EAAY,gBAAgB;IAChDO,YAAA,EAAc;IACdC,KAAA,EAAO;MACL,IAAIC,OAAA,EAAS;QACX,OAAON,KAAA,CAAMO,IAAA;MACf;MACAC,MAAA,EAAQ;QACNR,KAAA,CAAMQ,KAAA,CAAM;MACd;MACAT,QAAQU,GAAA,EAAa;QACnB,OAAOT,KAAA,CAAMU,GAAA,CAAIC,MAAA,CAAOF,GAAG,CAAC,KAAK;MACnC;MACAA,IAAIG,KAAA,EAAe;QACjB,OAAOC,KAAA,CAAMC,IAAA,CAAKd,KAAA,CAAMe,IAAA,CAAK,CAAC,EAAEH,KAAK,KAAK;MAC5C;MACAI,WAAWP,GAAA,EAAa;QACtBT,KAAA,CAAMiB,MAAA,CAAON,MAAA,CAAOF,GAAG,CAAC;MAC1B;MACAS,QAAQT,GAAA,EAAaJ,KAAA,EAAe;QAClCL,KAAA,CAAMmB,GAAA,CAAIR,MAAA,CAAOF,GAAG,GAAGE,MAAA,CAAON,KAAK,CAAC;MACtC;IACF;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ var _globalThis_localStorage;
2
+ if (typeof ((_globalThis_localStorage = globalThis.localStorage) === null || _globalThis_localStorage === void 0 ? void 0 : _globalThis_localStorage.getItem) !== "function") {
3
+ var store = /* @__PURE__ */new Map();
4
+ Object.defineProperty(globalThis, "localStorage", {
5
+ configurable: true,
6
+ value: {
7
+ get length() {
8
+ return store.size;
9
+ },
10
+ clear() {
11
+ store.clear();
12
+ },
13
+ getItem(key) {
14
+ var _store_get;
15
+ return (_store_get = store.get(String(key))) !== null && _store_get !== void 0 ? _store_get : null;
16
+ },
17
+ key(index) {
18
+ var _Array_from_index;
19
+ return (_Array_from_index = Array.from(store.keys())[index]) !== null && _Array_from_index !== void 0 ? _Array_from_index : null;
20
+ },
21
+ removeItem(key) {
22
+ store.delete(String(key));
23
+ },
24
+ setItem(key, value) {
25
+ store.set(String(key), String(value));
26
+ }
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=testSetup.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_globalThis_localStorage","globalThis","localStorage","getItem","store","Map","Object","defineProperty","configurable","value","length","size","clear","key","_store_get","get","String","index","_Array_from_index","Array","from","keys","removeItem","delete","setItem","set"],"sources":["../../src/testSetup.ts"],"sourcesContent":[null],"mappings":"AAAA,IAAIA,wBAAkB;AACpB,YAAM,CAAAA,wBAAY,GAAoBC,UAAA,CAAAC,YAAA,cAAAF,wBAAA,uBAAAA,wBAAA,CAAAG,OAAA;EACtC,IAAAC,KAAO,kBAAe,IAAAC,GAAY;EAAgBC,MAChD,CAAAC,cAAc,CAAAN,UAAA;IACdO,YAAO;IAAAC,KACL,EAAI;MACF,IAAAC,MAAOA,CAAA;QACT,OAAAN,KAAA,CAAAO,IAAA;MACA;MACEC,MAAA,EAAM;QACRR,KAAA,CAAAQ,KAAA;MACA;MACET,QAAAU,GAAO;QACT,IAAAC,UAAA;QACA,OAAI,CAAAA,UAAe,GAAAV,KAAA,CAAAW,GAAA,CAAAC,MAAA,CAAAH,GAAA,gBAAAC,UAAA,cAAAA,UAAA;MACjB;MACFD,IAAAI,KAAA;QACA,IAAAC,iBAAwB;QACtB,OAAM,CAAAA,iBAAkB,GAAAC,KAAA,CAAAC,IAAA,CAAAhB,KAAA,CAAAiB,IAAA,IAAAJ,KAAA,eAAAC,iBAAA,cAAAA,iBAAA;MAC1B;MACAI,UAAQA,CAAAT,GAAa;QACnBT,KAAA,CAAMmB,MAAI,CAAAP,MAAO,CAAGH,GAAG;MACzB;MACFW,QAAAX,GAAA,EAAAJ,KAAA;QACDL,KAAA,CAAAqB,GAAA,CAAAT,MAAA,CAAAH,GAAA,GAAAG,MAAA,CAAAP,KAAA;MACH","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.4.36",
3
+ "version": "0.4.38",
4
4
  "description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
5
5
  "sideEffects": false,
6
6
  "source": "src/index.ts",
@@ -65,6 +65,12 @@
65
65
  "import": "./dist/esm/vite-plugin.mjs",
66
66
  "require": "./dist/cjs/vite-plugin.cjs"
67
67
  },
68
+ "./multi": {
69
+ "react-native": "./dist/esm/multi.native.js",
70
+ "types": "./types/multi.d.ts",
71
+ "import": "./dist/esm/multi.mjs",
72
+ "require": "./dist/cjs/multi.cjs"
73
+ },
68
74
  "./drizzle": {
69
75
  "types": "./types/createSchemaFromDrizzle.d.ts",
70
76
  "import": "./dist/esm/createSchemaFromDrizzle.mjs",
@@ -77,7 +83,7 @@
77
83
  }
78
84
  },
79
85
  "dependencies": {
80
- "@take-out/helpers": "0.4.36",
86
+ "@take-out/helpers": "0.4.38",
81
87
  "chokidar": "^4.0.3",
82
88
  "citty": "^0.1.6",
83
89
  "valibot": "^1.1.0"
@@ -105,7 +111,7 @@
105
111
  }
106
112
  },
107
113
  "devDependencies": {
108
- "@tamagui/build": "2.3.0",
114
+ "@tamagui/build": "2.3.1",
109
115
  "@types/node": "25.2.0",
110
116
  "@types/pg": "^8.11.10",
111
117
  "@types/react": "^19.0.0",
package/readme.md CHANGED
@@ -526,9 +526,10 @@ exactly one instance — duplicate claims throw at create time. then combine
526
526
  them into one consumer surface:
527
527
 
528
528
  ```tsx
529
- import { combineZeroClients, createZeroClient } from 'on-zero'
529
+ import { createZeroClient } from 'on-zero'
530
+ import { combineZeroClients, createZeroClientWithDirectQueries } from 'on-zero/multi'
530
531
 
531
- const control = createZeroClient({
532
+ const control = createZeroClientWithDirectQueries({
532
533
  schema,
533
534
  models: controlModels,
534
535
  groupedQueries: controlQueries,
@@ -551,8 +552,8 @@ export const { useQuery, zero, run, preload, getQuery, zeroEvents } =
551
552
  // client passed to combineZeroClients (or the `inner` option) must be the
552
553
  // INNERMOST provider — zero-react's useQuery resolves the nearest provider's
553
554
  // instance from context, so only the inner instance rides that path. all
554
- // other instances' useQuery/usePermission go through a context-free direct
555
- // materialize on their own mounted zero.
555
+ // other instances must opt into the context-free direct adapter through
556
+ // createZeroClientWithDirectQueries.
556
557
  ;<control.ProvideZero server={controlUrl} userID={user.id}>
557
558
  <project.ProvideZero server={projectUrl} userID={`${user.id}:${projectId}`}>
558
559
  <App />
@@ -565,11 +566,12 @@ constraints:
565
566
  - each instance needs its own client-group identity (separate `userID` /
566
567
  storage key / server url) — never swap the backing namespace under a live
567
568
  instance.
569
+ - most apps should use plain `createZeroClient`; the `on-zero/multi` entrypoint
570
+ is only for this nested-provider edge case.
568
571
  - give the INNER slot to the instance owning the bulk of the subscriptions —
569
- inner queries keep zero-react's viewStore dedup + ttl. outer instances use
570
- the direct path, which has no cross-component view dedup (each hook
571
- materializes its own view), so keep outer instances on bounded, tiny
572
- queries (current user, settings, directories).
572
+ inner queries use zero-react's native context path. outer instances use the
573
+ direct adapter on their own mounted zero, so keep those instances on bounded,
574
+ low-fanout queries (current user, settings, directories).
573
575
  - a mutator may only read/write tables owned by its own instance. its
574
576
  transaction runs on that instance alone; cross-instance writes are not
575
577
  detectable at registration and will silently miss the other store.
@@ -19,12 +19,10 @@ import type { ReactNode } from 'react'
19
19
  // provider is mounted INNERMOST — may use the upstream context path. by
20
20
  // default that is the LAST client passed here (override via the `inner`
21
21
  // option); the first client is primary and its provider is expected OUTER.
22
- // the inner instance's queries ride zero-react's useQuery unchanged, keeping
23
- // viewStore dedup + ttl give that slot to the instance owning the bulk of
24
- // the subscriptions. every other instance's useQuery/usePermission route
25
- // through the context-free direct hooks (useQueryDirect), which materialize
26
- // on the owning instance but skip view dedup — keep those instances on
27
- // bounded, tiny queries.
22
+ // the inner instance's queries ride zero-react's useQuery unchanged. every
23
+ // other instance must be created through `createZeroClientWithDirectQueries`
24
+ // from `on-zero/multi`, which opts into the context-free adapter for this
25
+ // nested-provider edge case. keep those non-inner instances bounded.
28
26
 
29
27
  type ControlQueriesProps = {
30
28
  children: ReactNode
@@ -1,13 +1,5 @@
1
1
  import { useQuery as zeroUseQuery } from '@rocicorp/zero/react'
2
- import { useEmitterValue, type Emitter } from '@take-out/helpers'
3
- import {
4
- useContext,
5
- useEffect,
6
- useMemo,
7
- useRef,
8
- useSyncExternalStore,
9
- type Context,
10
- } from 'react'
2
+ import { useContext, useMemo, useRef, type Context } from 'react'
11
3
 
12
4
  import { useZeroDebug } from './helpers/useZeroDebug'
13
5
  import { resolveQuery, type PlainQueryFn } from './resolveQuery'
@@ -50,7 +42,7 @@ export type UseQueryHook<Schema extends ZeroSchema> = {
50
42
  const EMPTY_RESPONSE = [null, { type: 'unknown' }] as never
51
43
 
52
44
  // determine if useQuery-style args are (fn, params, options) or (fn, options)
53
- function parseUseQueryArgs(paramsOrOptions: any, optionsArg: any) {
45
+ export function parseUseQueryArgs(paramsOrOptions: any, optionsArg: any) {
54
46
  const hasParams =
55
47
  optionsArg !== undefined ||
56
48
  (paramsOrOptions &&
@@ -72,6 +64,12 @@ export function createUseQuery<Schema extends ZeroSchema>({
72
64
  customQueries: AnyQueryRegistry
73
65
  }): UseQueryHook<Schema> {
74
66
  function useQuery(...args: any[]): any {
67
+ // SSG: skip every hook below. on-zero's bundled React copy isn't the same
68
+ // one the SSG build's renderer initialises, so hook dispatch returns null.
69
+ // an empty response matches how the wrapper behaves under DisabledContext
70
+ // anyway, so consumers see the same shape across SSG and the disabled
71
+ // client path.
72
+ if (typeof window === 'undefined') return EMPTY_RESPONSE
75
73
  const disableMode = useContext(DisabledContext)
76
74
  const lastRef = useRef<any>(EMPTY_RESPONSE)
77
75
  const [fn, paramsOrOptions, optionsArg] = args
@@ -83,7 +81,18 @@ export function createUseQuery<Schema extends ZeroSchema>({
83
81
  return { queryRequest, options: opts }
84
82
  }, [fn, paramsOrOptions, optionsArg])
85
83
 
86
- const out = zeroUseQuery(queryRequest, options)
84
+ // when disabled, force enabled=false through to zero's useQuery so its
85
+ // viewStore returns a disabled view (no zero.clientID read, no view
86
+ // subscription) and the stub Zero handed in by ProvideZero stays inert.
87
+ // we still call zeroUseQuery unconditionally so hook order stays stable
88
+ // across DisabledContext changes — the disable check after only affects
89
+ // the return value.
90
+ const effectiveOptions = disableMode
91
+ ? typeof options === 'boolean'
92
+ ? false
93
+ : { ...(options ?? {}), enabled: false }
94
+ : options
95
+ const out = zeroUseQuery(queryRequest, effectiveOptions)
87
96
 
88
97
  if (process.env.NODE_ENV === 'development') {
89
98
  if (process.env.DEBUG_ZERO_QUERIES === '1')
@@ -105,182 +114,3 @@ export function createUseQuery<Schema extends ZeroSchema>({
105
114
 
106
115
  return useQuery as UseQueryHook<Schema>
107
116
  }
108
-
109
- // --- direct (context-free) query path -------------------------------------
110
-
111
- // zero-react's useQuery resolves its zero instance via useZero() → react
112
- // context, i.e. the NEAREST mounted ZeroProvider. with multiple client
113
- // instances nested on one page, every context-path query would materialize
114
- // against the innermost provider's instance regardless of which instance owns
115
- // the query. this hook is the context-free counterpart: it materializes the
116
- // resolved query directly on the owning instance's mounted zero.
117
- //
118
- // tradeoffs vs the context path (acceptable for the bounded, tiny queries the
119
- // non-inner instances own — see combineZeroClients):
120
- // - no cross-component view dedup (zero-react's viewStore): each hook
121
- // instance materializes its own view.
122
- // - no strict-mode double-render protection: a discarded render's view is
123
- // not destroyed until the owning zero closes.
124
-
125
- const DISABLED_SUBSCRIBE = () => () => {}
126
- // upstream zero-react returns [undefined, {type:'unknown'}] when disabled
127
- const DISABLED_SNAPSHOT: readonly [undefined, { type: 'unknown' }] = [
128
- undefined,
129
- { type: 'unknown' },
130
- ]
131
- const getDisabledSnapshot = () => DISABLED_SNAPSHOT
132
-
133
- type DirectView = {
134
- subscribe: (notify: () => void) => () => void
135
- getSnapshot: () => readonly [unknown, { type: string }]
136
- destroy: () => void
137
- }
138
-
139
- // method syntax for bivariant param checks — the real Zero['materialize']
140
- // generic signature must remain assignable to this structural slice. ttl is
141
- // untyped pass-through here, matching the context path (zeroUseQuery's
142
- // options are equally unchecked against upstream's TTL type).
143
- type MaterializableZero = {
144
- materialize(
145
- query: any,
146
- options?: { ttl?: any },
147
- ): {
148
- addListener(cb: (data: any, resultType: string) => void): void
149
- destroy(): void
150
- }
151
- }
152
-
153
- function createDirectView(
154
- getZero: () => MaterializableZero | null,
155
- queryRequest: unknown,
156
- ttl: UseQueryOptions['ttl'],
157
- ): DirectView {
158
- let snapshot: readonly [unknown, { type: string }] = DISABLED_SNAPSHOT
159
- const listeners = new Set<() => void>()
160
- let view: { destroy(): void } | null = null
161
-
162
- const materialize = () => {
163
- const zero = getZero()
164
- if (!zero) return
165
- // zero.materialize accepts a QueryRequest (it applies the instance context
166
- // itself) — the same public api the upstream ViewWrapper uses
167
- const next = zero.materialize(queryRequest, ttl === undefined ? undefined : { ttl })
168
- view = next
169
-
170
- // addListener fires immediately with current data, so the snapshot is
171
- // populated before react's first getSnapshot. data must be cloned: the
172
- // underlying view mutates it in place, and useSyncExternalStore requires
173
- // immutable snapshots to detect changes.
174
- next.addListener((data, resultType) => {
175
- snapshot = [
176
- data === undefined ? undefined : structuredClone(data),
177
- { type: resultType },
178
- ]
179
- for (const listener of listeners) {
180
- listener()
181
- }
182
- })
183
- }
184
-
185
- // eager: snapshot is warm before react's first getSnapshot
186
- materialize()
187
-
188
- return {
189
- subscribe: (notify) => {
190
- listeners.add(notify)
191
- // react runs effect cleanup + re-setup with unchanged deps under
192
- // StrictMode double-invoke and suspense hide/reveal — the cleanup
193
- // destroyed the view while this memoized store survived, so the
194
- // resubscribe must re-materialize or the snapshot freezes forever
195
- if (view === null) {
196
- materialize()
197
- }
198
- return () => listeners.delete(notify)
199
- },
200
- getSnapshot: () => snapshot,
201
- destroy: () => {
202
- const current = view
203
- view = null
204
- if (!current) return
205
- // identity rotation closes the owning zero before react runs this
206
- // cleanup (the version bump that swaps the view is post-commit) — the
207
- // closed instance already removed the view's ttl connection record, so
208
- // zero's destroy asserts ("Connection not found"). destroy-after-close
209
- // is semantically a no-op; swallow it instead of killing the route.
210
- try {
211
- current.destroy()
212
- } catch {
213
- // instance closed first — nothing left to tear down
214
- }
215
- },
216
- }
217
- }
218
-
219
- export function createUseQueryDirect<Schema extends ZeroSchema>({
220
- DisabledContext,
221
- customQueries,
222
- getZero,
223
- zeroVersion,
224
- }: {
225
- DisabledContext: Context<QueryControlMode>
226
- customQueries: AnyQueryRegistry
227
- // the owning instance's mounted zero (null before its provider mounts)
228
- getZero: () => MaterializableZero | null
229
- // bumps after commit whenever the mounted zero changes (mount, rotation)
230
- zeroVersion: Emitter<number>
231
- }): UseQueryHook<Schema> {
232
- function useQueryDirect(...args: any[]): any {
233
- const disableMode = useContext(DisabledContext)
234
- const lastRef = useRef<any>(EMPTY_RESPONSE)
235
- const [fn, paramsOrOptions, optionsArg] = args
236
-
237
- const version = useEmitterValue(zeroVersion)
238
- const { params, options } = parseUseQueryArgs(paramsOrOptions, optionsArg)
239
-
240
- let enabled = true
241
- let ttl: UseQueryOptions['ttl']
242
- if (typeof options === 'boolean') {
243
- enabled = options
244
- } else if (options) {
245
- enabled = options.enabled !== false
246
- ttl = options.ttl
247
- }
248
-
249
- // key the view by VALUE (serialized params), not params object identity —
250
- // there is no view dedup on this path, so an unstable inline params object
251
- // must not re-materialize every render
252
- const paramsKey = params === undefined ? '' : JSON.stringify(params)
253
-
254
- const view = useMemo((): DirectView | null => {
255
- if (!enabled || !getZero()) return null
256
- const queryRequest = resolveQuery({ customQueries, fn, params })
257
- return createDirectView(getZero, queryRequest, ttl)
258
- // params is keyed by paramsKey; version re-materializes on a new zero
259
- // eslint-disable-next-line react-hooks/exhaustive-deps
260
- }, [fn, paramsKey, enabled, ttl, version])
261
-
262
- useEffect(() => {
263
- if (!view) return
264
- return () => view.destroy()
265
- }, [view])
266
-
267
- const out = useSyncExternalStore(
268
- view ? view.subscribe : DISABLED_SUBSCRIBE,
269
- view ? view.getSnapshot : getDisabledSnapshot,
270
- view ? view.getSnapshot : getDisabledSnapshot,
271
- )
272
-
273
- if (!disableMode) {
274
- lastRef.current = out
275
- return out
276
- }
277
-
278
- if (disableMode === 'last-value') {
279
- return lastRef.current
280
- }
281
-
282
- return EMPTY_RESPONSE
283
- }
284
-
285
- return useQueryDirect as UseQueryHook<Schema>
286
- }