on-zero 0.7.2-1784530701923 → 0.7.2

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 (260) hide show
  1. package/dist/cjs/asyncTasks.cjs +51 -0
  2. package/dist/cjs/asyncTasks.native.js +84 -0
  3. package/dist/cjs/asyncTasks.native.js.map +1 -0
  4. package/dist/cjs/createZeroDirectServer.cjs +269 -0
  5. package/dist/cjs/createZeroDirectServer.native.js +287 -0
  6. package/dist/cjs/createZeroDirectServer.native.js.map +1 -0
  7. package/dist/cjs/createZeroSQLiteServer.cjs +50 -0
  8. package/dist/cjs/createZeroSQLiteServer.native.js +58 -0
  9. package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -0
  10. package/dist/cjs/createZeroSQLiteServer.test.cjs +595 -0
  11. package/dist/cjs/createZeroSQLiteServer.test.native.js +647 -0
  12. package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -0
  13. package/dist/cjs/createZeroServer.cjs +82 -0
  14. package/dist/cjs/createZeroServer.native.js +93 -0
  15. package/dist/cjs/createZeroServer.native.js.map +1 -0
  16. package/dist/cjs/createZeroServer.test.cjs +378 -0
  17. package/dist/cjs/createZeroServer.test.native.js +448 -0
  18. package/dist/cjs/createZeroServer.test.native.js.map +1 -0
  19. package/dist/cjs/createZeroServerCore.cjs +211 -0
  20. package/dist/cjs/createZeroServerCore.native.js +355 -0
  21. package/dist/cjs/createZeroServerCore.native.js.map +1 -0
  22. package/dist/cjs/helpers/createMutators.cjs +3 -4
  23. package/dist/cjs/helpers/createMutators.native.js +3 -6
  24. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  25. package/dist/cjs/httpPull/auth.test.cjs +197 -0
  26. package/dist/cjs/httpPull/auth.test.native.js +279 -0
  27. package/dist/cjs/httpPull/auth.test.native.js.map +1 -0
  28. package/dist/cjs/httpPull/churn.test.cjs +132 -0
  29. package/dist/cjs/httpPull/churn.test.native.js +155 -0
  30. package/dist/cjs/httpPull/churn.test.native.js.map +1 -0
  31. package/dist/cjs/httpPull/completeAck.test.cjs +69 -0
  32. package/dist/cjs/httpPull/completeAck.test.native.js +76 -0
  33. package/dist/cjs/httpPull/completeAck.test.native.js.map +1 -0
  34. package/dist/cjs/httpPull/fixtureServer.cjs +340 -0
  35. package/dist/cjs/httpPull/fixtureServer.native.js +534 -0
  36. package/dist/cjs/httpPull/fixtureServer.native.js.map +1 -0
  37. package/dist/cjs/httpPull/integration.test.cjs +53 -0
  38. package/dist/cjs/httpPull/integration.test.native.js +60 -0
  39. package/dist/cjs/httpPull/integration.test.native.js.map +1 -0
  40. package/dist/cjs/httpPull/rebase.test.cjs +360 -0
  41. package/dist/cjs/httpPull/rebase.test.native.js +420 -0
  42. package/dist/cjs/httpPull/rebase.test.native.js.map +1 -0
  43. package/dist/cjs/httpPull/relations.test.cjs +107 -0
  44. package/dist/cjs/httpPull/relations.test.native.js +119 -0
  45. package/dist/cjs/httpPull/relations.test.native.js.map +1 -0
  46. package/dist/cjs/httpPull/testHarness.cjs +100 -0
  47. package/dist/cjs/httpPull/testHarness.native.js +112 -0
  48. package/dist/cjs/httpPull/testHarness.native.js.map +1 -0
  49. package/dist/cjs/index.cjs +1 -0
  50. package/dist/cjs/index.native.js +1 -0
  51. package/dist/cjs/index.native.js.map +1 -1
  52. package/dist/cjs/run.cjs +1 -1
  53. package/dist/cjs/run.native.js +1 -1
  54. package/dist/cjs/server.cjs +22 -0
  55. package/dist/cjs/server.native.js +4 -0
  56. package/dist/cjs/server.native.js.map +1 -0
  57. package/dist/cjs/sqliteRuntime.cjs +318 -0
  58. package/dist/cjs/sqliteRuntime.native.js +438 -0
  59. package/dist/cjs/sqliteRuntime.native.js.map +1 -0
  60. package/dist/cjs/state.cjs +1 -1
  61. package/dist/cjs/state.native.js +1 -1
  62. package/dist/cjs/syncHost.cjs +179 -0
  63. package/dist/cjs/syncHost.native.js +388 -0
  64. package/dist/cjs/syncHost.native.js.map +1 -0
  65. package/dist/cjs/syncHost.test.cjs +240 -0
  66. package/dist/cjs/syncHost.test.native.js +290 -0
  67. package/dist/cjs/syncHost.test.native.js.map +1 -0
  68. package/dist/cjs/zeroRunner.cjs +1 -1
  69. package/dist/cjs/zeroRunner.native.js +1 -1
  70. package/dist/esm/asyncTasks.mjs +26 -0
  71. package/dist/esm/asyncTasks.mjs.map +1 -0
  72. package/dist/esm/asyncTasks.native.js +56 -0
  73. package/dist/esm/asyncTasks.native.js.map +1 -0
  74. package/dist/esm/createZeroDirectServer.mjs +241 -0
  75. package/dist/esm/createZeroDirectServer.mjs.map +1 -0
  76. package/dist/esm/createZeroDirectServer.native.js +256 -0
  77. package/dist/esm/createZeroDirectServer.native.js.map +1 -0
  78. package/dist/esm/createZeroSQLiteServer.mjs +24 -0
  79. package/dist/esm/createZeroSQLiteServer.mjs.map +1 -0
  80. package/dist/esm/createZeroSQLiteServer.native.js +29 -0
  81. package/dist/esm/createZeroSQLiteServer.native.js.map +1 -0
  82. package/dist/esm/createZeroSQLiteServer.test.mjs +596 -0
  83. package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -0
  84. package/dist/esm/createZeroSQLiteServer.test.native.js +645 -0
  85. package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -0
  86. package/dist/esm/createZeroServer.mjs +57 -0
  87. package/dist/esm/createZeroServer.mjs.map +1 -0
  88. package/dist/esm/createZeroServer.native.js +65 -0
  89. package/dist/esm/createZeroServer.native.js.map +1 -0
  90. package/dist/esm/createZeroServer.test.mjs +379 -0
  91. package/dist/esm/createZeroServer.test.mjs.map +1 -0
  92. package/dist/esm/createZeroServer.test.native.js +446 -0
  93. package/dist/esm/createZeroServer.test.native.js.map +1 -0
  94. package/dist/esm/createZeroServerCore.mjs +186 -0
  95. package/dist/esm/createZeroServerCore.mjs.map +1 -0
  96. package/dist/esm/createZeroServerCore.native.js +327 -0
  97. package/dist/esm/createZeroServerCore.native.js.map +1 -0
  98. package/dist/esm/helpers/createMutators.mjs +3 -4
  99. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  100. package/dist/esm/helpers/createMutators.native.js +3 -6
  101. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  102. package/dist/esm/httpPull/auth.test.mjs +198 -0
  103. package/dist/esm/httpPull/auth.test.mjs.map +1 -0
  104. package/dist/esm/httpPull/auth.test.native.js +277 -0
  105. package/dist/esm/httpPull/auth.test.native.js.map +1 -0
  106. package/dist/esm/httpPull/churn.test.mjs +133 -0
  107. package/dist/esm/httpPull/churn.test.mjs.map +1 -0
  108. package/dist/esm/httpPull/churn.test.native.js +153 -0
  109. package/dist/esm/httpPull/churn.test.native.js.map +1 -0
  110. package/dist/esm/httpPull/completeAck.test.mjs +70 -0
  111. package/dist/esm/httpPull/completeAck.test.mjs.map +1 -0
  112. package/dist/esm/httpPull/completeAck.test.native.js +74 -0
  113. package/dist/esm/httpPull/completeAck.test.native.js.map +1 -0
  114. package/dist/esm/httpPull/fixtureServer.mjs +315 -0
  115. package/dist/esm/httpPull/fixtureServer.mjs.map +1 -0
  116. package/dist/esm/httpPull/fixtureServer.native.js +506 -0
  117. package/dist/esm/httpPull/fixtureServer.native.js.map +1 -0
  118. package/dist/esm/httpPull/integration.test.mjs +54 -0
  119. package/dist/esm/httpPull/integration.test.mjs.map +1 -0
  120. package/dist/esm/httpPull/integration.test.native.js +58 -0
  121. package/dist/esm/httpPull/integration.test.native.js.map +1 -0
  122. package/dist/esm/httpPull/rebase.test.mjs +361 -0
  123. package/dist/esm/httpPull/rebase.test.mjs.map +1 -0
  124. package/dist/esm/httpPull/rebase.test.native.js +418 -0
  125. package/dist/esm/httpPull/rebase.test.native.js.map +1 -0
  126. package/dist/esm/httpPull/relations.test.mjs +108 -0
  127. package/dist/esm/httpPull/relations.test.mjs.map +1 -0
  128. package/dist/esm/httpPull/relations.test.native.js +117 -0
  129. package/dist/esm/httpPull/relations.test.native.js.map +1 -0
  130. package/dist/esm/httpPull/testHarness.mjs +72 -0
  131. package/dist/esm/httpPull/testHarness.mjs.map +1 -0
  132. package/dist/esm/httpPull/testHarness.native.js +81 -0
  133. package/dist/esm/httpPull/testHarness.native.js.map +1 -0
  134. package/dist/esm/index.js +1 -0
  135. package/dist/esm/index.js.map +1 -1
  136. package/dist/esm/index.mjs +1 -0
  137. package/dist/esm/index.mjs.map +1 -1
  138. package/dist/esm/index.native.js +1 -0
  139. package/dist/esm/index.native.js.map +1 -1
  140. package/dist/esm/run.mjs +1 -1
  141. package/dist/esm/run.mjs.map +1 -1
  142. package/dist/esm/run.native.js +1 -1
  143. package/dist/esm/server.mjs +4 -0
  144. package/dist/esm/server.mjs.map +1 -0
  145. package/dist/esm/server.native.js +2 -0
  146. package/dist/esm/server.native.js.map +1 -0
  147. package/dist/esm/sqliteRuntime.mjs +289 -0
  148. package/dist/esm/sqliteRuntime.mjs.map +1 -0
  149. package/dist/esm/sqliteRuntime.native.js +406 -0
  150. package/dist/esm/sqliteRuntime.native.js.map +1 -0
  151. package/dist/esm/state.mjs +1 -1
  152. package/dist/esm/state.native.js +1 -1
  153. package/dist/esm/syncHost.mjs +153 -0
  154. package/dist/esm/syncHost.mjs.map +1 -0
  155. package/dist/esm/syncHost.native.js +359 -0
  156. package/dist/esm/syncHost.native.js.map +1 -0
  157. package/dist/esm/syncHost.test.mjs +217 -0
  158. package/dist/esm/syncHost.test.mjs.map +1 -0
  159. package/dist/esm/syncHost.test.native.js +264 -0
  160. package/dist/esm/syncHost.test.native.js.map +1 -0
  161. package/dist/esm/zeroRunner.mjs +1 -1
  162. package/dist/esm/zeroRunner.mjs.map +1 -1
  163. package/dist/esm/zeroRunner.native.js +1 -1
  164. package/package.json +23 -8
  165. package/readme.md +65 -40
  166. package/src/asyncTasks.ts +36 -0
  167. package/src/createZeroClient.tsx +1 -1
  168. package/src/createZeroDirectServer.ts +411 -0
  169. package/src/createZeroSQLiteServer.test.ts +614 -0
  170. package/src/createZeroSQLiteServer.ts +56 -0
  171. package/src/createZeroServer.test.ts +421 -0
  172. package/src/createZeroServer.ts +105 -0
  173. package/src/createZeroServerCore.ts +296 -0
  174. package/src/helpers/createMutators.ts +2 -6
  175. package/src/httpPull/auth.test.ts +208 -0
  176. package/src/httpPull/churn.test.ts +147 -0
  177. package/src/httpPull/completeAck.test.ts +80 -0
  178. package/src/httpPull/fixtureServer.ts +391 -0
  179. package/src/httpPull/integration.test.ts +57 -0
  180. package/src/httpPull/rebase.test.ts +368 -0
  181. package/src/httpPull/relations.test.ts +135 -0
  182. package/src/httpPull/testHarness.ts +95 -0
  183. package/src/index.ts +1 -0
  184. package/src/run.ts +1 -1
  185. package/src/server.native.ts +3 -0
  186. package/src/server.ts +4 -0
  187. package/src/sqliteRuntime.ts +512 -0
  188. package/src/state.ts +1 -1
  189. package/src/syncHost.test.ts +223 -0
  190. package/src/syncHost.ts +294 -0
  191. package/src/types.ts +5 -0
  192. package/src/zeroRunner.ts +1 -1
  193. package/test-fixtures/server-return-types.ts +58 -21
  194. package/types/asyncTasks.d.ts +11 -0
  195. package/types/asyncTasks.d.ts.map +1 -0
  196. package/types/createZeroDirectServer.d.ts +80 -0
  197. package/types/createZeroDirectServer.d.ts.map +1 -0
  198. package/types/createZeroSQLiteServer.d.ts +12 -0
  199. package/types/createZeroSQLiteServer.d.ts.map +1 -0
  200. package/types/createZeroSQLiteServer.test.d.ts +2 -0
  201. package/types/createZeroSQLiteServer.test.d.ts.map +1 -0
  202. package/types/createZeroServer.d.ts +18 -0
  203. package/types/createZeroServer.d.ts.map +1 -0
  204. package/types/createZeroServer.test.d.ts +2 -0
  205. package/types/createZeroServer.test.d.ts.map +1 -0
  206. package/types/createZeroServerCore.d.ts +256 -0
  207. package/types/createZeroServerCore.d.ts.map +1 -0
  208. package/types/helpers/createMutators.d.ts +1 -2
  209. package/types/helpers/createMutators.d.ts.map +1 -1
  210. package/types/httpPull/auth.test.d.ts +2 -0
  211. package/types/httpPull/auth.test.d.ts.map +1 -0
  212. package/types/httpPull/churn.test.d.ts +2 -0
  213. package/types/httpPull/churn.test.d.ts.map +1 -0
  214. package/types/httpPull/completeAck.test.d.ts +2 -0
  215. package/types/httpPull/completeAck.test.d.ts.map +1 -0
  216. package/types/httpPull/fixtureSchema.d.ts +1 -1
  217. package/types/httpPull/fixtureServer.d.ts +14 -0
  218. package/types/httpPull/fixtureServer.d.ts.map +1 -0
  219. package/types/httpPull/integration.test.d.ts +2 -0
  220. package/types/httpPull/integration.test.d.ts.map +1 -0
  221. package/types/httpPull/rebase.test.d.ts +2 -0
  222. package/types/httpPull/rebase.test.d.ts.map +1 -0
  223. package/types/httpPull/relations.test.d.ts +2 -0
  224. package/types/httpPull/relations.test.d.ts.map +1 -0
  225. package/types/httpPull/testHarness.d.ts +32 -0
  226. package/types/httpPull/testHarness.d.ts.map +1 -0
  227. package/types/index.d.ts +1 -0
  228. package/types/index.d.ts.map +1 -1
  229. package/types/server.d.ts +5 -0
  230. package/types/server.d.ts.map +1 -0
  231. package/types/server.native.d.ts +1 -0
  232. package/types/server.native.d.ts.map +1 -0
  233. package/types/sqliteRuntime.d.ts +71 -0
  234. package/types/sqliteRuntime.d.ts.map +1 -0
  235. package/types/syncHost.d.ts +42 -0
  236. package/types/syncHost.d.ts.map +1 -0
  237. package/types/syncHost.test.d.ts +2 -0
  238. package/types/syncHost.test.d.ts.map +1 -0
  239. package/types/types.d.ts +4 -0
  240. package/types/types.d.ts.map +1 -1
  241. package/dist/cjs/orez.cjs +0 -227
  242. package/dist/cjs/orez.native.js +0 -314
  243. package/dist/cjs/orez.native.js.map +0 -1
  244. package/dist/cjs/orez.test.cjs +0 -211
  245. package/dist/cjs/orez.test.native.js +0 -226
  246. package/dist/cjs/orez.test.native.js.map +0 -1
  247. package/dist/esm/orez.mjs +0 -202
  248. package/dist/esm/orez.mjs.map +0 -1
  249. package/dist/esm/orez.native.js +0 -286
  250. package/dist/esm/orez.native.js.map +0 -1
  251. package/dist/esm/orez.test.mjs +0 -188
  252. package/dist/esm/orez.test.mjs.map +0 -1
  253. package/dist/esm/orez.test.native.js +0 -200
  254. package/dist/esm/orez.test.native.js.map +0 -1
  255. package/src/orez.test.ts +0 -195
  256. package/src/orez.ts +0 -331
  257. package/types/orez.d.ts +0 -53
  258. package/types/orez.d.ts.map +0 -1
  259. package/types/orez.test.d.ts +0 -2
  260. package/types/orez.test.d.ts.map +0 -1
@@ -0,0 +1,100 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var testHarness_exports = {};
24
+ __export(testHarness_exports, {
25
+ eventually: () => eventually,
26
+ sleep: () => sleep,
27
+ startZeroHttpHarness: () => startZeroHttpHarness,
28
+ waitForComplete: () => waitForComplete
29
+ });
30
+ module.exports = __toCommonJS(testHarness_exports);
31
+ var import_zero = require("@rocicorp/zero");
32
+ var import_fixtureSchema = require("./fixtureSchema.cjs");
33
+ var import_fixtureServer = require("./fixtureServer.cjs");
34
+ var import_httpPullTransport = require("../httpPullTransport.cjs");
35
+ let storageID = 0;
36
+ async function startZeroHttpHarness(opts) {
37
+ const server = await (0, import_fixtureServer.startZeroHttpServer)({
38
+ seed: opts?.seed
39
+ });
40
+ const baseFetch = (input, init) => globalThis.fetch(input, init);
41
+ const transportFetch = opts?.interceptFetch ? opts.interceptFetch(baseFetch) : baseFetch;
42
+ const transport = (0, import_httpPullTransport.installHttpPullTransport)({
43
+ origin: server.url,
44
+ fetch: transportFetch
45
+ });
46
+ const clients = [];
47
+ return {
48
+ server,
49
+ transport,
50
+ createZero(userID, createOpts) {
51
+ const zero = new import_zero.Zero({
52
+ server: server.url,
53
+ userID,
54
+ auth: `token-${userID}`,
55
+ schema: import_fixtureSchema.zeroHttpFixtureSchema,
56
+ kvStore: "mem",
57
+ storageKey: createOpts?.storageKey ?? `zero-http-harness-${++storageID}`,
58
+ mutators: import_fixtureSchema.zeroHttpFixtureMutators,
59
+ pingTimeoutMs: createOpts?.pingTimeoutMs
60
+ });
61
+ clients.push(zero);
62
+ return zero;
63
+ },
64
+ async close() {
65
+ await transport.pull().catch(() => {});
66
+ while (clients.length) await clients.pop()?.close();
67
+ transport.uninstall();
68
+ await server.close();
69
+ }
70
+ };
71
+ }
72
+ function waitForComplete(view) {
73
+ return new Promise((resolve, reject) => {
74
+ const timeout = setTimeout(() => reject(new Error("timed out waiting for complete query")), 5e3);
75
+ let cleanup = () => {};
76
+ cleanup = view.addListener((data, resultType) => {
77
+ if (resultType !== "complete") return;
78
+ clearTimeout(timeout);
79
+ cleanup();
80
+ resolve(JSON.parse(JSON.stringify(data)));
81
+ });
82
+ });
83
+ }
84
+ async function eventually(assertion, timeout = 3e3) {
85
+ const started = Date.now();
86
+ let lastError;
87
+ while (Date.now() - started < timeout) {
88
+ try {
89
+ await assertion();
90
+ return;
91
+ } catch (error) {
92
+ lastError = error;
93
+ await sleep(10);
94
+ }
95
+ }
96
+ throw lastError;
97
+ }
98
+ function sleep(ms) {
99
+ return new Promise(resolve => setTimeout(resolve, ms));
100
+ }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var testHarness_exports = {};
26
+ __export(testHarness_exports, {
27
+ eventually: () => eventually,
28
+ sleep: () => sleep,
29
+ startZeroHttpHarness: () => startZeroHttpHarness,
30
+ waitForComplete: () => waitForComplete
31
+ });
32
+ module.exports = __toCommonJS(testHarness_exports);
33
+ var import_zero = require("@rocicorp/zero");
34
+ var import_fixtureSchema = require("./fixtureSchema.native.js");
35
+ var import_fixtureServer = require("./fixtureServer.native.js");
36
+ var import_httpPullTransport = require("../httpPullTransport.native.js");
37
+ var storageID = 0;
38
+ async function startZeroHttpHarness(opts) {
39
+ var server = await (0, import_fixtureServer.startZeroHttpServer)({
40
+ seed: opts === null || opts === void 0 ? void 0 : opts.seed
41
+ });
42
+ var baseFetch = function (input, init) {
43
+ return globalThis.fetch(input, init);
44
+ };
45
+ var transportFetch = (opts === null || opts === void 0 ? void 0 : opts.interceptFetch) ? opts.interceptFetch(baseFetch) : baseFetch;
46
+ var transport = (0, import_httpPullTransport.installHttpPullTransport)({
47
+ origin: server.url,
48
+ fetch: transportFetch
49
+ });
50
+ var clients = [];
51
+ return {
52
+ server,
53
+ transport,
54
+ createZero(userID, createOpts) {
55
+ var _createOpts_storageKey;
56
+ var zero = new import_zero.Zero({
57
+ server: server.url,
58
+ userID,
59
+ auth: `token-${userID}`,
60
+ schema: import_fixtureSchema.zeroHttpFixtureSchema,
61
+ kvStore: "mem",
62
+ storageKey: (_createOpts_storageKey = createOpts === null || createOpts === void 0 ? void 0 : createOpts.storageKey) !== null && _createOpts_storageKey !== void 0 ? _createOpts_storageKey : `zero-http-harness-${++storageID}`,
63
+ mutators: import_fixtureSchema.zeroHttpFixtureMutators,
64
+ pingTimeoutMs: createOpts === null || createOpts === void 0 ? void 0 : createOpts.pingTimeoutMs
65
+ });
66
+ clients.push(zero);
67
+ return zero;
68
+ },
69
+ async close() {
70
+ var _clients_pop;
71
+ await transport.pull().catch(function () {});
72
+ while (clients.length) await ((_clients_pop = clients.pop()) === null || _clients_pop === void 0 ? void 0 : _clients_pop.close());
73
+ transport.uninstall();
74
+ await server.close();
75
+ }
76
+ };
77
+ }
78
+ function waitForComplete(view) {
79
+ return new Promise(function (resolve, reject) {
80
+ var timeout = setTimeout(function () {
81
+ return reject(new Error("timed out waiting for complete query"));
82
+ }, 5e3);
83
+ var cleanup = function () {};
84
+ cleanup = view.addListener(function (data, resultType) {
85
+ if (resultType !== "complete") return;
86
+ clearTimeout(timeout);
87
+ cleanup();
88
+ resolve(JSON.parse(JSON.stringify(data)));
89
+ });
90
+ });
91
+ }
92
+ async function eventually(assertion) {
93
+ var timeout = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 3e3;
94
+ var started = Date.now();
95
+ var lastError;
96
+ while (Date.now() - started < timeout) {
97
+ try {
98
+ await assertion();
99
+ return;
100
+ } catch (error) {
101
+ lastError = error;
102
+ await sleep(10);
103
+ }
104
+ }
105
+ throw lastError;
106
+ }
107
+ function sleep(ms) {
108
+ return new Promise(function (resolve) {
109
+ return setTimeout(resolve, ms);
110
+ });
111
+ }
112
+ //# sourceMappingURL=testHarness.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","testHarness_exports","__export","eventually","sleep","startZeroHttpHarness","waitForComplete","module","exports","import_zero","require","import_fixtureSchema","import_fixtureServer","import_httpPullTransport","storageID","opts","server","startZeroHttpServer","seed","baseFetch","input","init","globalThis","fetch","transportFetch","interceptFetch","transport","installHttpPullTransport","origin","url","clients","createZero","userID","createOpts","_createOpts_storageKey","zero","Zero","auth","schema","zeroHttpFixtureSchema","kvStore","storageKey","mutators","zeroHttpFixtureMutators","pingTimeoutMs","push","close","_clients_pop","pull","catch","length","pop","uninstall","view","Promise","resolve","reject","timeout","setTimeout","Error","cleanup","addListener","data","resultType","clearTimeout","JSON","parse","stringify","assertion","arguments","started","Date","now","lastError","error"],"sources":["../../../src/httpPull/testHarness.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -41,6 +41,7 @@ __export(index_exports, {
41
41
  });
42
42
  module.exports = __toCommonJS(index_exports);
43
43
  __reExport(index_exports, require("./createPermissions.cjs"), module.exports);
44
+ __reExport(index_exports, require("./asyncTasks.cjs"), module.exports);
44
45
  __reExport(index_exports, require("./queryRegistry.cjs"), module.exports);
45
46
  __reExport(index_exports, require("./helpers/batchQuery.cjs"), module.exports);
46
47
  __reExport(index_exports, require("./helpers/createMutators.cjs"), module.exports);
@@ -43,6 +43,7 @@ __export(index_exports, {
43
43
  });
44
44
  module.exports = __toCommonJS(index_exports);
45
45
  __reExport(index_exports, require("./createPermissions.native.js"), module.exports);
46
+ __reExport(index_exports, require("./asyncTasks.native.js"), module.exports);
46
47
  __reExport(index_exports, require("./queryRegistry.native.js"), module.exports);
47
48
  __reExport(index_exports, require("./helpers/batchQuery.native.js"), module.exports);
48
49
  __reExport(index_exports, require("./helpers/createMutators.native.js"), module.exports);
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","classifyZeroRecoveryLog","import_recoverZeroClient","clearZeroClientData","import_clearZeroClientData","composeRecoveryLogSink","createZeroClient","import_createZeroClient","defineQueries","import_zero","defineQuery","ensureAuth","import_getAuth","getAuth","isRecoverableZeroStalePokeMessage","makeZeroRecovery","resetShownZeroClientError","import_showZeroClientError","setAuthData","import_state","setEnvironment","setRunner","import_zeroRunner","showZeroClientErrorOnce","module","exports","__reExport","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","classifyZeroRecoveryLog","import_recoverZeroClient","clearZeroClientData","import_clearZeroClientData","composeRecoveryLogSink","createZeroClient","import_createZeroClient","defineQueries","import_zero","defineQuery","ensureAuth","import_getAuth","getAuth","isRecoverableZeroStalePokeMessage","makeZeroRecovery","resetShownZeroClientError","import_showZeroClientError","setAuthData","import_state","setEnvironment","setRunner","import_zeroRunner","showZeroClientErrorOnce","module","exports","__reExport","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/cjs/run.cjs CHANGED
@@ -36,7 +36,7 @@ function setCustomQueries(queries) {
36
36
  }
37
37
  function getCustomQueries() {
38
38
  if (!customQueriesRef) {
39
- throw new Error("Custom queries not initialized. Ensure client or server bindings have been created.");
39
+ throw new Error("Custom queries not initialized. Ensure createZeroClient or createZeroServer has been called.");
40
40
  }
41
41
  return customQueriesRef;
42
42
  }
@@ -38,7 +38,7 @@ function setCustomQueries(queries) {
38
38
  }
39
39
  function getCustomQueries() {
40
40
  if (!customQueriesRef) {
41
- throw new Error("Custom queries not initialized. Ensure client or server bindings have been created.");
41
+ throw new Error("Custom queries not initialized. Ensure createZeroClient or createZeroServer has been called.");
42
42
  }
43
43
  return customQueriesRef;
44
44
  }
@@ -0,0 +1,22 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
8
+ get: () => from[key],
9
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
10
+ });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
16
+ value: true
17
+ }), mod);
18
+ var server_exports = {};
19
+ module.exports = __toCommonJS(server_exports);
20
+ __reExport(server_exports, require("./createZeroServer.cjs"), module.exports);
21
+ __reExport(server_exports, require("./createZeroSQLiteServer.cjs"), module.exports);
22
+ __reExport(server_exports, require("./asyncTasks.cjs"), module.exports);
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ throw new Error("on-zero/server is not available on native");
4
+ //# sourceMappingURL=server.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Error"],"sources":["../../src/server.native.ts"],"sourcesContent":[null],"mappings":";;AAEA,MAAM,IAAIA,KAAA,CAAM,2CAA2C","ignoreList":[]}
@@ -0,0 +1,318 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var sqliteRuntime_exports = {};
24
+ __export(sqliteRuntime_exports, {
25
+ createSQLiteDatabase: () => createSQLiteDatabase,
26
+ createZeroSQLiteTransaction: () => createZeroSQLiteTransaction,
27
+ defaultLedgerTables: () => defaultLedgerTables,
28
+ encodeSQLiteValue: () => encodeSQLiteValue,
29
+ persistAlreadyProcessedMutationResults: () => persistAlreadyProcessedMutationResults
30
+ });
31
+ module.exports = __toCommonJS(sqliteRuntime_exports);
32
+ var import_zero = require("@rocicorp/zero");
33
+ var import_bindings = require("@rocicorp/zero/bindings");
34
+ function createSQLiteDatabase(options) {
35
+ return {
36
+ async transaction(callback, input) {
37
+ let committedLedgers = /* @__PURE__ */new Set();
38
+ const value = await options.transactionProvider(async executor => {
39
+ const attemptLedgers = /* @__PURE__ */new Set();
40
+ const ensureLedger = async upstreamSchema => {
41
+ const tables = options.ledgerTables(upstreamSchema);
42
+ const key = ledgerKey(tables);
43
+ if (options.initializedLedgers.has(key) || attemptLedgers.has(key)) {
44
+ return;
45
+ }
46
+ await createLedgerTables(executor, tables);
47
+ attemptLedgers.add(key);
48
+ };
49
+ const transaction = createZeroSQLiteTransaction(options, executor, input);
50
+ const result = await callback(transaction, createLedgerHooks(options, executor, ensureLedger, input));
51
+ committedLedgers = attemptLedgers;
52
+ return result;
53
+ });
54
+ for (const key of committedLedgers) options.initializedLedgers.add(key);
55
+ return value;
56
+ }
57
+ };
58
+ }
59
+ function createZeroSQLiteTransaction(options, executor, input) {
60
+ const transactionOptions = {
61
+ encodeValue: options.encodeValue ?? encodeSQLiteValue,
62
+ schema: options.schema
63
+ };
64
+ const clientID = input?.clientID ?? "";
65
+ const mutationID = input?.mutationID ?? 0;
66
+ const mutate = new Proxy({}, {
67
+ get(_target, tableKey) {
68
+ const tableName = String(tableKey);
69
+ if (!options.schema.tables[tableName]) {
70
+ throw new Error(`unknown SQLite mutation table ${tableName}`);
71
+ }
72
+ return new Proxy({}, {
73
+ get(_innerTarget, kindKey) {
74
+ const kind = String(kindKey);
75
+ if (!isCrudKind(kind)) return;
76
+ return value => executeCrud(transactionOptions, executor, tableName, kind, value);
77
+ }
78
+ });
79
+ }
80
+ });
81
+ const runQuery = (ast, format, queryName) => Promise.resolve(executor.queryAst(ast, format, queryName));
82
+ const dbTransaction = {
83
+ wrappedTransaction: executor,
84
+ query: (sql, args) => executor.query(sql, args),
85
+ runQuery
86
+ };
87
+ return {
88
+ clientID,
89
+ dbTransaction,
90
+ location: "server",
91
+ mutate,
92
+ mutationID,
93
+ query: transactionOptions.schema.enableLegacyQueries ? createLegacyQueryBuilder(transactionOptions.schema, query => {
94
+ const internals = (0, import_bindings.asQueryInternals)(query);
95
+ return runQuery(internals.ast, internals.format, internals.customQueryID?.name);
96
+ }) : void 0,
97
+ reason: "authoritative",
98
+ async run(query) {
99
+ const internals = (0, import_bindings.asQueryInternals)(query);
100
+ return runQuery(internals.ast, internals.format, internals.customQueryID?.name);
101
+ }
102
+ };
103
+ }
104
+ function isCrudKind(value) {
105
+ return value === "delete" || value === "insert" || value === "update" || value === "upsert";
106
+ }
107
+ async function executeCrud(options, executor, tableName, kind, raw) {
108
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
109
+ throw new Error(`${tableName}.${kind} expects an object`);
110
+ }
111
+ const table = options.schema.tables[tableName];
112
+ const values = Object.fromEntries(Object.entries(raw).filter(([, value]) => value !== void 0));
113
+ for (const columnName of Object.keys(values)) {
114
+ if (!table.columns[columnName]) {
115
+ throw new Error(`unknown SQLite column ${tableName}.${columnName}`);
116
+ }
117
+ }
118
+ const primaryValues = table.primaryKey.map(columnName => {
119
+ if (!(columnName in values)) {
120
+ throw new Error(`${tableName}.${kind} is missing primary key ${columnName}`);
121
+ }
122
+ return encodeColumn(options, tableName, columnName, values[columnName]);
123
+ });
124
+ const primaryWhere = table.primaryKey.map(columnName => `${quoteSQLiteIdentifier(serverColumn(table, columnName))} = ?`).join(" AND ");
125
+ const serverTableName = quoteSQLiteIdentifier(table.serverName ?? table.name);
126
+ if (kind === "delete") {
127
+ await executor.exec(`DELETE FROM ${serverTableName} WHERE ${primaryWhere}`, primaryValues, {
128
+ table: table.serverName ?? table.name,
129
+ publicTable: tableName,
130
+ kind
131
+ });
132
+ return;
133
+ }
134
+ const columnNames = Object.keys(values);
135
+ if (columnNames.length === 0) {
136
+ throw new Error(`${tableName}.${kind} has no values`);
137
+ }
138
+ const serverColumns = columnNames.map(columnName => quoteSQLiteIdentifier(serverColumn(table, columnName)));
139
+ const params = columnNames.map(columnName => encodeColumn(options, tableName, columnName, values[columnName]));
140
+ const insert = `INSERT INTO ${serverTableName} (${serverColumns.join(", ")}) VALUES (${columnNames.map(() => "?").join(", ")})`;
141
+ const conflictColumns = table.primaryKey.map(columnName => quoteSQLiteIdentifier(serverColumn(table, columnName))).join(", ");
142
+ if (kind === "insert") {
143
+ await executor.exec(`${insert} ON CONFLICT (${conflictColumns}) DO NOTHING`, params, {
144
+ table: table.serverName ?? table.name,
145
+ publicTable: tableName,
146
+ kind
147
+ });
148
+ return;
149
+ }
150
+ if (kind === "upsert") {
151
+ const mutableColumns2 = columnNames.filter(columnName => !table.primaryKey.includes(columnName));
152
+ const conflictAction = mutableColumns2.length === 0 ? "DO NOTHING" : `DO UPDATE SET ${mutableColumns2.map(columnName => {
153
+ const column = quoteSQLiteIdentifier(serverColumn(table, columnName));
154
+ return `${column} = excluded.${column}`;
155
+ }).join(", ")}`;
156
+ await executor.exec(`${insert} ON CONFLICT (${conflictColumns}) ${conflictAction}`, params, {
157
+ table: table.serverName ?? table.name,
158
+ publicTable: tableName,
159
+ kind
160
+ });
161
+ return;
162
+ }
163
+ const mutableColumns = columnNames.filter(columnName => !table.primaryKey.includes(columnName));
164
+ if (mutableColumns.length === 0) return;
165
+ await executor.exec(`UPDATE ${serverTableName} SET ${mutableColumns.map(columnName => `${quoteSQLiteIdentifier(serverColumn(table, columnName))} = ?`).join(", ")} WHERE ${primaryWhere}`, [...mutableColumns.map(columnName => encodeColumn(options, tableName, columnName, values[columnName])), ...primaryValues], {
166
+ table: table.serverName ?? table.name,
167
+ publicTable: tableName,
168
+ kind
169
+ });
170
+ }
171
+ function serverColumn(table, columnName) {
172
+ const column = table.columns[columnName];
173
+ if (!column) throw new Error(`unknown SQLite column ${table.name}.${columnName}`);
174
+ return column.serverName ?? columnName;
175
+ }
176
+ function encodeColumn(options, tableName, columnName, value) {
177
+ return options.encodeValue(value, {
178
+ column: options.schema.tables[tableName].columns[columnName],
179
+ columnName,
180
+ tableName
181
+ });
182
+ }
183
+ function createLegacyQueryBuilder(schema, run) {
184
+ const builder = (0, import_zero.createBuilder)(schema);
185
+ return new Proxy(builder, {
186
+ get(target, property) {
187
+ return makeRunnableQuery(Reflect.get(target, property, target), run);
188
+ }
189
+ });
190
+ }
191
+ function makeRunnableQuery(query, run) {
192
+ if (!isQueryBuilder(query)) return query;
193
+ return new Proxy(query, {
194
+ get(target, property) {
195
+ if (property === "run") return () => run(target);
196
+ if (property === "materialize" || property === "preload") {
197
+ return () => {
198
+ throw new Error(`${String(property)}() is not supported in server transactions`);
199
+ };
200
+ }
201
+ const value = Reflect.get(target, property, target);
202
+ if (typeof value !== "function") return value;
203
+ return (...args) => makeRunnableQuery(Reflect.apply(value, target, args), run);
204
+ }
205
+ });
206
+ }
207
+ function isQueryBuilder(value) {
208
+ if (!value || typeof value !== "object") return false;
209
+ try {
210
+ (0, import_bindings.asQueryInternals)(value);
211
+ return true;
212
+ } catch {
213
+ return false;
214
+ }
215
+ }
216
+ function createLedgerHooks(options, executor, ensureLedger, input) {
217
+ const upstreamSchema = input?.upstreamSchema ?? "";
218
+ const clientGroupID = input?.clientGroupID ?? "";
219
+ const clientID = input?.clientID ?? "";
220
+ const tables = options.ledgerTables(upstreamSchema);
221
+ const clientsTable = quoteSQLiteIdentifier(tables.clients);
222
+ const mutationsTable = quoteSQLiteIdentifier(tables.mutations);
223
+ return {
224
+ async updateClientMutationID() {
225
+ await ensureLedger(upstreamSchema);
226
+ const rows = await executor.query(`INSERT INTO ${clientsTable}
227
+ (clientGroupID, clientID, lastMutationID)
228
+ VALUES (?, ?, 1)
229
+ ON CONFLICT (clientGroupID, clientID)
230
+ DO UPDATE SET lastMutationID = lastMutationID + 1
231
+ RETURNING lastMutationID`, [clientGroupID, clientID]);
232
+ const lastMutationID = rows[0]?.lastMutationID;
233
+ if (typeof lastMutationID !== "number" && typeof lastMutationID !== "bigint") {
234
+ throw new Error("SQLite mutation ledger returned no lastMutationID");
235
+ }
236
+ return {
237
+ lastMutationID
238
+ };
239
+ },
240
+ async writeMutationResult(result) {
241
+ await ensureLedger(upstreamSchema);
242
+ await executor.exec(`INSERT INTO ${mutationsTable}
243
+ (clientGroupID, clientID, mutationID, result)
244
+ VALUES (?, ?, ?, ?)`, [clientGroupID, result.id.clientID, result.id.id, JSON.stringify(result.result)]);
245
+ },
246
+ async deleteMutationResults(args) {
247
+ await ensureLedger(upstreamSchema);
248
+ if ("type" in args && args.type === "bulk") {
249
+ if (args.clientIDs.length === 0) return;
250
+ await executor.exec(`DELETE FROM ${mutationsTable}
251
+ WHERE clientGroupID = ?
252
+ AND clientID IN (${args.clientIDs.map(() => "?").join(", ")})`, [args.clientGroupID, ...args.clientIDs]);
253
+ return;
254
+ }
255
+ await executor.exec(`DELETE FROM ${mutationsTable}
256
+ WHERE clientGroupID = ?
257
+ AND clientID = ?
258
+ AND mutationID <= ?`, [args.clientGroupID, args.clientID, args.upToMutationID]);
259
+ }
260
+ };
261
+ }
262
+ async function persistAlreadyProcessedMutationResults(options, {
263
+ clientGroupID,
264
+ mutations,
265
+ upstreamSchema
266
+ }) {
267
+ const tables = options.ledgerTables(upstreamSchema);
268
+ const table = quoteSQLiteIdentifier(tables.mutations);
269
+ const key = ledgerKey(tables);
270
+ await options.transactionProvider(async executor => {
271
+ if (!options.initializedLedgers.has(key)) {
272
+ await createLedgerTables(executor, tables);
273
+ }
274
+ for (const mutation of mutations) {
275
+ await executor.exec(`INSERT INTO ${table}
276
+ (clientGroupID, clientID, mutationID, result)
277
+ VALUES (?, ?, ?, ?)
278
+ ON CONFLICT (clientGroupID, clientID, mutationID) DO NOTHING`, [clientGroupID, mutation.id.clientID, mutation.id.id, JSON.stringify(mutation.result)]);
279
+ }
280
+ });
281
+ options.initializedLedgers.add(key);
282
+ }
283
+ async function createLedgerTables(executor, tables) {
284
+ await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.clients)} (
285
+ clientGroupID TEXT NOT NULL,
286
+ clientID TEXT NOT NULL,
287
+ lastMutationID INTEGER NOT NULL,
288
+ PRIMARY KEY (clientGroupID, clientID)
289
+ )`);
290
+ await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.mutations)} (
291
+ clientGroupID TEXT NOT NULL,
292
+ clientID TEXT NOT NULL,
293
+ mutationID INTEGER NOT NULL,
294
+ result TEXT NOT NULL,
295
+ PRIMARY KEY (clientGroupID, clientID, mutationID)
296
+ )`);
297
+ }
298
+ function ledgerKey(tables) {
299
+ return `${tables.clients}\0${tables.mutations}`;
300
+ }
301
+ function defaultLedgerTables(upstreamSchema) {
302
+ const prefix = upstreamSchema ? `${upstreamSchema}_` : "";
303
+ return {
304
+ clients: `${prefix}clients`,
305
+ mutations: `${prefix}mutations`
306
+ };
307
+ }
308
+ function encodeSQLiteValue(value, {
309
+ column
310
+ }) {
311
+ if (value === null) return null;
312
+ if (column.type === "boolean") return value ? 1 : 0;
313
+ if (column.type === "json") return JSON.stringify(value);
314
+ return value;
315
+ }
316
+ function quoteSQLiteIdentifier(value) {
317
+ return `"${value.replaceAll('"', '""')}"`;
318
+ }