on-zero 0.4.25 → 0.4.27

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 (140) hide show
  1. package/dist/cjs/createUseQuery.cjs +28 -16
  2. package/dist/cjs/createUseQuery.native.js +42 -30
  3. package/dist/cjs/createUseQuery.native.js.map +1 -1
  4. package/dist/cjs/createZeroClient.cjs +13 -1
  5. package/dist/cjs/createZeroClient.native.js +13 -1
  6. package/dist/cjs/createZeroClient.native.js.map +1 -1
  7. package/dist/cjs/httpPull/auth.test.cjs +197 -0
  8. package/dist/cjs/httpPull/auth.test.native.js +279 -0
  9. package/dist/cjs/httpPull/auth.test.native.js.map +1 -0
  10. package/dist/cjs/httpPull/churn.test.cjs +132 -0
  11. package/dist/cjs/httpPull/churn.test.native.js +155 -0
  12. package/dist/cjs/httpPull/churn.test.native.js.map +1 -0
  13. package/dist/cjs/httpPull/fixtureSchema.cjs +76 -0
  14. package/dist/cjs/httpPull/fixtureSchema.native.js +82 -0
  15. package/dist/cjs/httpPull/fixtureSchema.native.js.map +1 -0
  16. package/dist/cjs/httpPull/fixtureServer.cjs +340 -0
  17. package/dist/cjs/httpPull/fixtureServer.native.js +534 -0
  18. package/dist/cjs/httpPull/fixtureServer.native.js.map +1 -0
  19. package/dist/cjs/httpPull/integration.test.cjs +53 -0
  20. package/dist/cjs/httpPull/integration.test.native.js +60 -0
  21. package/dist/cjs/httpPull/integration.test.native.js.map +1 -0
  22. package/dist/cjs/httpPull/rebase.test.cjs +360 -0
  23. package/dist/cjs/httpPull/rebase.test.native.js +420 -0
  24. package/dist/cjs/httpPull/rebase.test.native.js.map +1 -0
  25. package/dist/cjs/httpPull/relations.test.cjs +107 -0
  26. package/dist/cjs/httpPull/relations.test.native.js +119 -0
  27. package/dist/cjs/httpPull/relations.test.native.js.map +1 -0
  28. package/dist/cjs/httpPull/testHarness.cjs +100 -0
  29. package/dist/cjs/httpPull/testHarness.native.js +112 -0
  30. package/dist/cjs/httpPull/testHarness.native.js.map +1 -0
  31. package/dist/cjs/httpPull/transport.test.cjs +568 -0
  32. package/dist/cjs/httpPull/transport.test.native.js +655 -0
  33. package/dist/cjs/httpPull/transport.test.native.js.map +1 -0
  34. package/dist/cjs/httpPullTransport.cjs +432 -0
  35. package/dist/cjs/httpPullTransport.native.js +695 -0
  36. package/dist/cjs/httpPullTransport.native.js.map +1 -0
  37. package/dist/cjs/index.cjs +1 -0
  38. package/dist/cjs/index.native.js +1 -0
  39. package/dist/cjs/index.native.js.map +1 -1
  40. package/dist/cjs/multiInstanceNested.test.cjs +26 -0
  41. package/dist/cjs/multiInstanceNested.test.native.js +34 -0
  42. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
  43. package/dist/esm/createUseQuery.mjs +28 -16
  44. package/dist/esm/createUseQuery.mjs.map +1 -1
  45. package/dist/esm/createUseQuery.native.js +42 -30
  46. package/dist/esm/createUseQuery.native.js.map +1 -1
  47. package/dist/esm/createZeroClient.mjs +13 -1
  48. package/dist/esm/createZeroClient.mjs.map +1 -1
  49. package/dist/esm/createZeroClient.native.js +13 -1
  50. package/dist/esm/createZeroClient.native.js.map +1 -1
  51. package/dist/esm/httpPull/auth.test.mjs +198 -0
  52. package/dist/esm/httpPull/auth.test.mjs.map +1 -0
  53. package/dist/esm/httpPull/auth.test.native.js +277 -0
  54. package/dist/esm/httpPull/auth.test.native.js.map +1 -0
  55. package/dist/esm/httpPull/churn.test.mjs +133 -0
  56. package/dist/esm/httpPull/churn.test.mjs.map +1 -0
  57. package/dist/esm/httpPull/churn.test.native.js +153 -0
  58. package/dist/esm/httpPull/churn.test.native.js.map +1 -0
  59. package/dist/esm/httpPull/fixtureSchema.mjs +50 -0
  60. package/dist/esm/httpPull/fixtureSchema.mjs.map +1 -0
  61. package/dist/esm/httpPull/fixtureSchema.native.js +53 -0
  62. package/dist/esm/httpPull/fixtureSchema.native.js.map +1 -0
  63. package/dist/esm/httpPull/fixtureServer.mjs +315 -0
  64. package/dist/esm/httpPull/fixtureServer.mjs.map +1 -0
  65. package/dist/esm/httpPull/fixtureServer.native.js +506 -0
  66. package/dist/esm/httpPull/fixtureServer.native.js.map +1 -0
  67. package/dist/esm/httpPull/integration.test.mjs +54 -0
  68. package/dist/esm/httpPull/integration.test.mjs.map +1 -0
  69. package/dist/esm/httpPull/integration.test.native.js +58 -0
  70. package/dist/esm/httpPull/integration.test.native.js.map +1 -0
  71. package/dist/esm/httpPull/rebase.test.mjs +361 -0
  72. package/dist/esm/httpPull/rebase.test.mjs.map +1 -0
  73. package/dist/esm/httpPull/rebase.test.native.js +418 -0
  74. package/dist/esm/httpPull/rebase.test.native.js.map +1 -0
  75. package/dist/esm/httpPull/relations.test.mjs +108 -0
  76. package/dist/esm/httpPull/relations.test.mjs.map +1 -0
  77. package/dist/esm/httpPull/relations.test.native.js +117 -0
  78. package/dist/esm/httpPull/relations.test.native.js.map +1 -0
  79. package/dist/esm/httpPull/testHarness.mjs +72 -0
  80. package/dist/esm/httpPull/testHarness.mjs.map +1 -0
  81. package/dist/esm/httpPull/testHarness.native.js +81 -0
  82. package/dist/esm/httpPull/testHarness.native.js.map +1 -0
  83. package/dist/esm/httpPull/transport.test.mjs +569 -0
  84. package/dist/esm/httpPull/transport.test.mjs.map +1 -0
  85. package/dist/esm/httpPull/transport.test.native.js +653 -0
  86. package/dist/esm/httpPull/transport.test.native.js.map +1 -0
  87. package/dist/esm/httpPullTransport.mjs +406 -0
  88. package/dist/esm/httpPullTransport.mjs.map +1 -0
  89. package/dist/esm/httpPullTransport.native.js +666 -0
  90. package/dist/esm/httpPullTransport.native.js.map +1 -0
  91. package/dist/esm/index.js +1 -0
  92. package/dist/esm/index.js.map +1 -1
  93. package/dist/esm/index.mjs +1 -0
  94. package/dist/esm/index.mjs.map +1 -1
  95. package/dist/esm/index.native.js +1 -0
  96. package/dist/esm/index.native.js.map +1 -1
  97. package/dist/esm/multiInstanceNested.test.mjs +27 -1
  98. package/dist/esm/multiInstanceNested.test.mjs.map +1 -1
  99. package/dist/esm/multiInstanceNested.test.native.js +35 -1
  100. package/dist/esm/multiInstanceNested.test.native.js.map +1 -1
  101. package/package.json +2 -2
  102. package/src/createUseQuery.tsx +40 -22
  103. package/src/createZeroClient.tsx +19 -0
  104. package/src/httpPull/auth.test.ts +208 -0
  105. package/src/httpPull/churn.test.ts +147 -0
  106. package/src/httpPull/fixtureSchema.ts +82 -0
  107. package/src/httpPull/fixtureServer.ts +391 -0
  108. package/src/httpPull/integration.test.ts +57 -0
  109. package/src/httpPull/rebase.test.ts +368 -0
  110. package/src/httpPull/relations.test.ts +135 -0
  111. package/src/httpPull/testHarness.ts +95 -0
  112. package/src/httpPull/transport.test.ts +577 -0
  113. package/src/httpPullTransport.ts +559 -0
  114. package/src/index.ts +1 -0
  115. package/src/multiInstanceNested.test.tsx +25 -1
  116. package/types/createUseQuery.d.ts.map +1 -1
  117. package/types/createZeroClient.d.ts +3 -1
  118. package/types/createZeroClient.d.ts.map +1 -1
  119. package/types/httpPull/auth.test.d.ts +2 -0
  120. package/types/httpPull/auth.test.d.ts.map +1 -0
  121. package/types/httpPull/churn.test.d.ts +2 -0
  122. package/types/httpPull/churn.test.d.ts.map +1 -0
  123. package/types/httpPull/fixtureSchema.d.ts +111 -0
  124. package/types/httpPull/fixtureSchema.d.ts.map +1 -0
  125. package/types/httpPull/fixtureServer.d.ts +14 -0
  126. package/types/httpPull/fixtureServer.d.ts.map +1 -0
  127. package/types/httpPull/integration.test.d.ts +2 -0
  128. package/types/httpPull/integration.test.d.ts.map +1 -0
  129. package/types/httpPull/rebase.test.d.ts +2 -0
  130. package/types/httpPull/rebase.test.d.ts.map +1 -0
  131. package/types/httpPull/relations.test.d.ts +2 -0
  132. package/types/httpPull/relations.test.d.ts.map +1 -0
  133. package/types/httpPull/testHarness.d.ts +32 -0
  134. package/types/httpPull/testHarness.d.ts.map +1 -0
  135. package/types/httpPull/transport.test.d.ts +2 -0
  136. package/types/httpPull/transport.test.d.ts.map +1 -0
  137. package/types/httpPullTransport.d.ts +13 -0
  138. package/types/httpPullTransport.d.ts.map +1 -0
  139. package/types/index.d.ts +1 -0
  140. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,72 @@
1
+ import { Zero } from "@rocicorp/zero";
2
+ import { zeroHttpFixtureMutators, zeroHttpFixtureSchema } from "./fixtureSchema.mjs";
3
+ import { startZeroHttpServer } from "./fixtureServer.mjs";
4
+ import { installHttpPullTransport } from "../httpPullTransport.mjs";
5
+ let storageID = 0;
6
+ async function startZeroHttpHarness(opts) {
7
+ const server = await startZeroHttpServer({
8
+ seed: opts?.seed
9
+ });
10
+ const baseFetch = (input, init) => globalThis.fetch(input, init);
11
+ const transportFetch = opts?.interceptFetch ? opts.interceptFetch(baseFetch) : baseFetch;
12
+ const transport = installHttpPullTransport({
13
+ origin: server.url,
14
+ fetch: transportFetch
15
+ });
16
+ const clients = [];
17
+ return {
18
+ server,
19
+ transport,
20
+ createZero(userID, createOpts) {
21
+ const zero = new Zero({
22
+ server: server.url,
23
+ userID,
24
+ auth: `token-${userID}`,
25
+ schema: zeroHttpFixtureSchema,
26
+ kvStore: "mem",
27
+ storageKey: createOpts?.storageKey ?? `zero-http-harness-${++storageID}`,
28
+ mutators: zeroHttpFixtureMutators,
29
+ pingTimeoutMs: createOpts?.pingTimeoutMs
30
+ });
31
+ clients.push(zero);
32
+ return zero;
33
+ },
34
+ async close() {
35
+ await transport.pull().catch(() => {});
36
+ while (clients.length) await clients.pop()?.close();
37
+ transport.uninstall();
38
+ await server.close();
39
+ }
40
+ };
41
+ }
42
+ function waitForComplete(view) {
43
+ return new Promise((resolve, reject) => {
44
+ const timeout = setTimeout(() => reject(new Error("timed out waiting for complete query")), 5e3);
45
+ let cleanup = () => {};
46
+ cleanup = view.addListener((data, resultType) => {
47
+ if (resultType !== "complete") return;
48
+ clearTimeout(timeout);
49
+ cleanup();
50
+ resolve(JSON.parse(JSON.stringify(data)));
51
+ });
52
+ });
53
+ }
54
+ async function eventually(assertion, timeout = 3e3) {
55
+ const started = Date.now();
56
+ let lastError;
57
+ while (Date.now() - started < timeout) {
58
+ try {
59
+ await assertion();
60
+ return;
61
+ } catch (error) {
62
+ lastError = error;
63
+ await sleep(10);
64
+ }
65
+ }
66
+ throw lastError;
67
+ }
68
+ function sleep(ms) {
69
+ return new Promise(resolve => setTimeout(resolve, ms));
70
+ }
71
+ export { eventually, sleep, startZeroHttpHarness, waitForComplete };
72
+ //# sourceMappingURL=testHarness.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Zero","zeroHttpFixtureMutators","zeroHttpFixtureSchema","startZeroHttpServer","installHttpPullTransport","storageID","startZeroHttpHarness","opts","server","seed","baseFetch","input","init","globalThis","fetch","transportFetch","interceptFetch","transport","origin","url","clients","createZero","userID","createOpts","zero","auth","schema","kvStore","storageKey","mutators","pingTimeoutMs","push","close","pull","catch","length","pop","uninstall","waitForComplete","view","Promise","resolve","reject","timeout","setTimeout","Error","cleanup","addListener","data","resultType","clearTimeout","JSON","parse","stringify","eventually","assertion","started","Date","now","lastError","error","sleep","ms"],"sources":["../../../src/httpPull/testHarness.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ import { Zero } from "@rocicorp/zero";
2
+ import { zeroHttpFixtureMutators, zeroHttpFixtureSchema } from "./fixtureSchema.native.js";
3
+ import { startZeroHttpServer } from "./fixtureServer.native.js";
4
+ import { installHttpPullTransport } from "../httpPullTransport.native.js";
5
+ var storageID = 0;
6
+ async function startZeroHttpHarness(opts) {
7
+ var server = await startZeroHttpServer({
8
+ seed: opts === null || opts === void 0 ? void 0 : opts.seed
9
+ });
10
+ var baseFetch = function (input, init) {
11
+ return globalThis.fetch(input, init);
12
+ };
13
+ var transportFetch = (opts === null || opts === void 0 ? void 0 : opts.interceptFetch) ? opts.interceptFetch(baseFetch) : baseFetch;
14
+ var transport = installHttpPullTransport({
15
+ origin: server.url,
16
+ fetch: transportFetch
17
+ });
18
+ var clients = [];
19
+ return {
20
+ server,
21
+ transport,
22
+ createZero(userID, createOpts) {
23
+ var _createOpts_storageKey;
24
+ var zero = new Zero({
25
+ server: server.url,
26
+ userID,
27
+ auth: `token-${userID}`,
28
+ schema: zeroHttpFixtureSchema,
29
+ kvStore: "mem",
30
+ storageKey: (_createOpts_storageKey = createOpts === null || createOpts === void 0 ? void 0 : createOpts.storageKey) !== null && _createOpts_storageKey !== void 0 ? _createOpts_storageKey : `zero-http-harness-${++storageID}`,
31
+ mutators: zeroHttpFixtureMutators,
32
+ pingTimeoutMs: createOpts === null || createOpts === void 0 ? void 0 : createOpts.pingTimeoutMs
33
+ });
34
+ clients.push(zero);
35
+ return zero;
36
+ },
37
+ async close() {
38
+ var _clients_pop;
39
+ await transport.pull().catch(function () {});
40
+ while (clients.length) await ((_clients_pop = clients.pop()) === null || _clients_pop === void 0 ? void 0 : _clients_pop.close());
41
+ transport.uninstall();
42
+ await server.close();
43
+ }
44
+ };
45
+ }
46
+ function waitForComplete(view) {
47
+ return new Promise(function (resolve, reject) {
48
+ var timeout = setTimeout(function () {
49
+ return reject(new Error("timed out waiting for complete query"));
50
+ }, 5e3);
51
+ var cleanup = function () {};
52
+ cleanup = view.addListener(function (data, resultType) {
53
+ if (resultType !== "complete") return;
54
+ clearTimeout(timeout);
55
+ cleanup();
56
+ resolve(JSON.parse(JSON.stringify(data)));
57
+ });
58
+ });
59
+ }
60
+ async function eventually(assertion) {
61
+ var timeout = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 3e3;
62
+ var started = Date.now();
63
+ var lastError;
64
+ while (Date.now() - started < timeout) {
65
+ try {
66
+ await assertion();
67
+ return;
68
+ } catch (error) {
69
+ lastError = error;
70
+ await sleep(10);
71
+ }
72
+ }
73
+ throw lastError;
74
+ }
75
+ function sleep(ms) {
76
+ return new Promise(function (resolve) {
77
+ return setTimeout(resolve, ms);
78
+ });
79
+ }
80
+ export { eventually, sleep, startZeroHttpHarness, waitForComplete };
81
+ //# sourceMappingURL=testHarness.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Zero","zeroHttpFixtureMutators","zeroHttpFixtureSchema","startZeroHttpServer","installHttpPullTransport","storageID","startZeroHttpHarness","opts","server","seed","baseFetch","input","init","globalThis","fetch","transportFetch","interceptFetch","transport","origin","url","clients","createZero","userID","createOpts","_createOpts_storageKey","zero","auth","schema","kvStore","storageKey","mutators","pingTimeoutMs","push","close","_clients_pop","pull","catch","length","pop","uninstall","waitForComplete","view","Promise","resolve","reject","timeout","setTimeout","Error","cleanup","addListener","data","resultType","clearTimeout","JSON","parse","stringify","eventually","assertion","arguments","started","Date","now","lastError","error","sleep"],"sources":["../../../src/httpPull/testHarness.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,QAAY;AAErB,SAASC,uBAAA,EAAyBC,qBAAA,QAA6B;AAC/D,SAASC,mBAAA,QAAqC;AAC9C,SAASC,wBAAA,QAAgC;AAEzC,IAAIC,SAAA,GAAY;AAShB,eAAsBC,qBAAqBC,IAAA,EAGxC;EACD,IAAAC,MAAM,SAASL,mBAAM;IACrBM,IAAM,EAAAF,IAAA,SAA2B,IAAAA,IAAO,UAAS,SAAW,IAAMA,IAAA,CAAAE;EAClE;EACA,IAAAC,SAAM,YAAAA,CAAYC,KAAA,EAAAC,IAAA;IAChB,OAAAC,UAAe,CAAAC,KAAA,CAAAH,KAAA,EAAAC,IAAA;EAAA;EAEjB,IAACG,cAAA,IAAAR,IAAA,aAAAA,IAAA,uBAAAA,IAAA,CAAAS,cAAA,IAAAT,IAAA,CAAAS,cAAA,CAAAN,SAAA,IAAAA,SAAA;EACD,IAAAO,SAAM,GAAgDb,wBAAC;IAEvDc,MAAO,EAAAV,MAAA,CAAAW,GAAA;IACLL,KAAA,EAAAC;EAAA,EACA;EAAA,IACAK,OAAA,GACE;EAGA;IAAsBZ,MACpB;IAAeS,SACf;IAAAI,UACMA,CAAAC,MAAA,EAASC,UAAM;MAAA,IACrBC,sBAAQ;MAAA,IACRC,IAAA,GAAS,IAAAzB,IAAA;QACTQ,MAAA,EAAAA,MAAY,CAAAW,GAAA;QACZG,MAAA;QACAI,IAAA,WAAeJ,MAAA;QAChBK,MAAA,EAAAzB,qBAAA;QACD0B,OAAQ,OAAK;QACbC,UAAO,GAAAL,sBAAA,GAAAD,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAM,UAAA,cAAAL,sBAAA,cAAAA,sBAAA,0BAAAnB,SAAA;QACTyB,QAAA,EAAA7B,uBAAA;QACA8B,aAAc,EAAAR,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAQ;MACZ;MAAoCX,OAAC,CAAAY,IAAA,CAAAP,IAAA;MACrC,OAAOA,IAAA;IACP;IACA,MAAAQ,KAAMA,CAAA;MACR,IAAAC,YAAA;MACF,MAAAjB,SAAA,CAAAkB,IAAA,GAAAC,KAAA,cACF;MAIO,OAAShB,OAAA,CAAAiB,MAAmB,SAEpB,CAAAH,YAAA,GAAAd,OAAA,CAAAkB,GAAA,gBAAAJ,YAAA,uBAAAA,YAAA,CAAAD,KAAA;MACbhB,SAAW,CAAAsB,SAAY;MACrB,MAAM/B,MAAA,CAAAyB,KAAU;IAAA;EACgD;AAC9D;AAEF,SAAIO,eAAgBA,CAAAC,IAAA;EAAA,OAAC,IAAAC,OAAA,WAAAC,OAAA,EAAAC,MAAA;IACrB,IAAAC,OAAU,GAAAC,UAAK,aAAmB;MAChC,OAAIF,MAAA,KAAAG,KAAe,uCAAY;IAC/B;IACA,IAAAC,OAAQ,YAAAA,CAAA,GACR;IACFA,OAAC,GAAAP,IAAA,CAAAQ,WAAA,WAAAC,IAAA,EAAAC,UAAA;MACF,IAAAA,UAAA;MACHC,YAAA,CAAAP,OAAA;MAEAG,OAAA,EAAsB;MACpBL,OAAM,CAAAU,IAAU,CAAAC,KAAK,CAAAD,IAAI,CAAAE,SAAA,CAAAL,IAAA;IACzB,EAAI;EACJ;AACE;AACE,eAAMM,UAAUA,CAAAC,SAAA;EAChB,IAAAZ,OAAA,GAAAa,SAAA,CAAArB,MAAA,QAAAqB,SAAA,iBAAAA,SAAA;EAAA,IACFC,OAAS,GAAAC,IAAO,CAAAC,GAAA;EACd,IAAAC,SAAA;EACA,OAAAF,IAAM,CAAAC,GAAA,CAAM,IAAEF,OAAA,GAAAd,OAAA;IAChB;MACF,MAAAY,SAAA;MACA;IACF,SAAAM,KAAA;MAEOD,SAAe,GAAAC,KAAY;MAChC,MAAOC,KAAI,IAAQ;IACrB","ignoreList":[]}