on-zero 0.4.26 → 0.4.28

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 (123) hide show
  1. package/dist/cjs/createZeroClient.cjs +14 -1
  2. package/dist/cjs/createZeroClient.native.js +15 -1
  3. package/dist/cjs/createZeroClient.native.js.map +1 -1
  4. package/dist/cjs/httpPull/auth.test.cjs +197 -0
  5. package/dist/cjs/httpPull/auth.test.native.js +279 -0
  6. package/dist/cjs/httpPull/auth.test.native.js.map +1 -0
  7. package/dist/cjs/httpPull/churn.test.cjs +132 -0
  8. package/dist/cjs/httpPull/churn.test.native.js +155 -0
  9. package/dist/cjs/httpPull/churn.test.native.js.map +1 -0
  10. package/dist/cjs/httpPull/fixtureSchema.cjs +76 -0
  11. package/dist/cjs/httpPull/fixtureSchema.native.js +82 -0
  12. package/dist/cjs/httpPull/fixtureSchema.native.js.map +1 -0
  13. package/dist/cjs/httpPull/fixtureServer.cjs +340 -0
  14. package/dist/cjs/httpPull/fixtureServer.native.js +534 -0
  15. package/dist/cjs/httpPull/fixtureServer.native.js.map +1 -0
  16. package/dist/cjs/httpPull/integration.test.cjs +53 -0
  17. package/dist/cjs/httpPull/integration.test.native.js +60 -0
  18. package/dist/cjs/httpPull/integration.test.native.js.map +1 -0
  19. package/dist/cjs/httpPull/rebase.test.cjs +360 -0
  20. package/dist/cjs/httpPull/rebase.test.native.js +420 -0
  21. package/dist/cjs/httpPull/rebase.test.native.js.map +1 -0
  22. package/dist/cjs/httpPull/relations.test.cjs +107 -0
  23. package/dist/cjs/httpPull/relations.test.native.js +119 -0
  24. package/dist/cjs/httpPull/relations.test.native.js.map +1 -0
  25. package/dist/cjs/httpPull/testHarness.cjs +100 -0
  26. package/dist/cjs/httpPull/testHarness.native.js +112 -0
  27. package/dist/cjs/httpPull/testHarness.native.js.map +1 -0
  28. package/dist/cjs/httpPull/transport.test.cjs +588 -0
  29. package/dist/cjs/httpPull/transport.test.native.js +677 -0
  30. package/dist/cjs/httpPull/transport.test.native.js.map +1 -0
  31. package/dist/cjs/httpPullTransport.cjs +447 -0
  32. package/dist/cjs/httpPullTransport.native.js +710 -0
  33. package/dist/cjs/httpPullTransport.native.js.map +1 -0
  34. package/dist/cjs/index.cjs +1 -0
  35. package/dist/cjs/index.native.js +1 -0
  36. package/dist/cjs/index.native.js.map +1 -1
  37. package/dist/esm/createZeroClient.mjs +14 -1
  38. package/dist/esm/createZeroClient.mjs.map +1 -1
  39. package/dist/esm/createZeroClient.native.js +15 -1
  40. package/dist/esm/createZeroClient.native.js.map +1 -1
  41. package/dist/esm/httpPull/auth.test.mjs +198 -0
  42. package/dist/esm/httpPull/auth.test.mjs.map +1 -0
  43. package/dist/esm/httpPull/auth.test.native.js +277 -0
  44. package/dist/esm/httpPull/auth.test.native.js.map +1 -0
  45. package/dist/esm/httpPull/churn.test.mjs +133 -0
  46. package/dist/esm/httpPull/churn.test.mjs.map +1 -0
  47. package/dist/esm/httpPull/churn.test.native.js +153 -0
  48. package/dist/esm/httpPull/churn.test.native.js.map +1 -0
  49. package/dist/esm/httpPull/fixtureSchema.mjs +50 -0
  50. package/dist/esm/httpPull/fixtureSchema.mjs.map +1 -0
  51. package/dist/esm/httpPull/fixtureSchema.native.js +53 -0
  52. package/dist/esm/httpPull/fixtureSchema.native.js.map +1 -0
  53. package/dist/esm/httpPull/fixtureServer.mjs +315 -0
  54. package/dist/esm/httpPull/fixtureServer.mjs.map +1 -0
  55. package/dist/esm/httpPull/fixtureServer.native.js +506 -0
  56. package/dist/esm/httpPull/fixtureServer.native.js.map +1 -0
  57. package/dist/esm/httpPull/integration.test.mjs +54 -0
  58. package/dist/esm/httpPull/integration.test.mjs.map +1 -0
  59. package/dist/esm/httpPull/integration.test.native.js +58 -0
  60. package/dist/esm/httpPull/integration.test.native.js.map +1 -0
  61. package/dist/esm/httpPull/rebase.test.mjs +361 -0
  62. package/dist/esm/httpPull/rebase.test.mjs.map +1 -0
  63. package/dist/esm/httpPull/rebase.test.native.js +418 -0
  64. package/dist/esm/httpPull/rebase.test.native.js.map +1 -0
  65. package/dist/esm/httpPull/relations.test.mjs +108 -0
  66. package/dist/esm/httpPull/relations.test.mjs.map +1 -0
  67. package/dist/esm/httpPull/relations.test.native.js +117 -0
  68. package/dist/esm/httpPull/relations.test.native.js.map +1 -0
  69. package/dist/esm/httpPull/testHarness.mjs +72 -0
  70. package/dist/esm/httpPull/testHarness.mjs.map +1 -0
  71. package/dist/esm/httpPull/testHarness.native.js +81 -0
  72. package/dist/esm/httpPull/testHarness.native.js.map +1 -0
  73. package/dist/esm/httpPull/transport.test.mjs +589 -0
  74. package/dist/esm/httpPull/transport.test.mjs.map +1 -0
  75. package/dist/esm/httpPull/transport.test.native.js +675 -0
  76. package/dist/esm/httpPull/transport.test.native.js.map +1 -0
  77. package/dist/esm/httpPullTransport.mjs +421 -0
  78. package/dist/esm/httpPullTransport.mjs.map +1 -0
  79. package/dist/esm/httpPullTransport.native.js +681 -0
  80. package/dist/esm/httpPullTransport.native.js.map +1 -0
  81. package/dist/esm/index.js +1 -0
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/index.mjs +1 -0
  84. package/dist/esm/index.mjs.map +1 -1
  85. package/dist/esm/index.native.js +1 -0
  86. package/dist/esm/index.native.js.map +1 -1
  87. package/package.json +2 -2
  88. package/src/createZeroClient.tsx +22 -0
  89. package/src/httpPull/auth.test.ts +208 -0
  90. package/src/httpPull/churn.test.ts +147 -0
  91. package/src/httpPull/fixtureSchema.ts +82 -0
  92. package/src/httpPull/fixtureServer.ts +391 -0
  93. package/src/httpPull/integration.test.ts +57 -0
  94. package/src/httpPull/rebase.test.ts +368 -0
  95. package/src/httpPull/relations.test.ts +135 -0
  96. package/src/httpPull/testHarness.ts +95 -0
  97. package/src/httpPull/transport.test.ts +603 -0
  98. package/src/httpPullTransport.ts +587 -0
  99. package/src/index.ts +1 -0
  100. package/types/createZeroClient.d.ts +3 -1
  101. package/types/createZeroClient.d.ts.map +1 -1
  102. package/types/httpPull/auth.test.d.ts +2 -0
  103. package/types/httpPull/auth.test.d.ts.map +1 -0
  104. package/types/httpPull/churn.test.d.ts +2 -0
  105. package/types/httpPull/churn.test.d.ts.map +1 -0
  106. package/types/httpPull/fixtureSchema.d.ts +111 -0
  107. package/types/httpPull/fixtureSchema.d.ts.map +1 -0
  108. package/types/httpPull/fixtureServer.d.ts +14 -0
  109. package/types/httpPull/fixtureServer.d.ts.map +1 -0
  110. package/types/httpPull/integration.test.d.ts +2 -0
  111. package/types/httpPull/integration.test.d.ts.map +1 -0
  112. package/types/httpPull/rebase.test.d.ts +2 -0
  113. package/types/httpPull/rebase.test.d.ts.map +1 -0
  114. package/types/httpPull/relations.test.d.ts +2 -0
  115. package/types/httpPull/relations.test.d.ts.map +1 -0
  116. package/types/httpPull/testHarness.d.ts +32 -0
  117. package/types/httpPull/testHarness.d.ts.map +1 -0
  118. package/types/httpPull/transport.test.d.ts +2 -0
  119. package/types/httpPull/transport.test.d.ts.map +1 -0
  120. package/types/httpPullTransport.d.ts +13 -0
  121. package/types/httpPullTransport.d.ts.map +1 -0
  122. package/types/index.d.ts +1 -0
  123. package/types/index.d.ts.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_zero","require","import_vitest","import_fixtureSchema","import_httpPullTransport","_class_call_check","instance","Constructor","TypeError","_define_property","obj","key","value","Object","defineProperty","enumerable","configurable","writable","ORIGIN","zeros","transports","storageID","afterEach","_zeros_pop","_transports_pop","length","pop","close","uninstall","vi","useRealTimers","describe","test","requests","cookie","fetch","fn","input","init","request","recordRequest","push","expect","path","toBe","headers","authorization","jsonResponse","lastMutationIDChanges","rowsPatch","op","tableName","id","name","ownerId","projectId","userId","transport","install","zero","createZero","view","query","project","related","materialize","data","waitForComplete","destroy","connections","toEqual","members","body","toBeNull","clientID","any","String","clientGroupID","unchanged","mutation2","mutations","pushResponse","result","eventually","filter","pullsBeforePush","mutation","mutate","create","client","server","find","toMatchObject","pushVersion","requestID","type","args","_requests_at","socket","openRawSocketWithMessages","authToken","send","JSON","stringify","auth","pull","at","firstPushStarted","defer","releaseFirstPush","pushIDs","mutationID","resolve","promise","map","messages","some","message","pushBody","sleep","toHaveLength","responses","deferred","inFlight","maxInFlight","Math","max","response","shift","Error","openRawSocket","findMessage","baseCookie","startsWith","concurrentA","concurrentB","Promise","all","projectView","userView","user","users","pingTimeoutMs","connection","state","current","error","status","emissions","cleanup","addListener","resultType","parse","toBeGreaterThan","flatMap","emission","previous","globalThis","WebSocket","NativeWebSocket","NativeWebSocket2","url","protocols"],"sources":["../../../src/httpPull/transport.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,447 @@
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 httpPullTransport_exports = {};
24
+ __export(httpPullTransport_exports, {
25
+ ensureHttpPullTransport: () => ensureHttpPullTransport,
26
+ installHttpPullTransport: () => installHttpPullTransport
27
+ });
28
+ module.exports = __toCommonJS(httpPullTransport_exports);
29
+ const COOKIE_WIDTH = 20;
30
+ function installHttpPullTransport(opts) {
31
+ const previousWebSocket = globalThis.WebSocket;
32
+ const fetchImpl = opts.fetch ?? globalThis.fetch;
33
+ if (!fetchImpl) {
34
+ throw new Error("installHttpPullTransport requires a fetch implementation");
35
+ }
36
+ const state = {
37
+ origin: new URL(opts.origin),
38
+ originString: trimTrailingSlash(new URL(opts.origin).toString()),
39
+ // the transport invokes this as `state.fetch(...)` — without binding,
40
+ // window.fetch sees `state` as its receiver and browsers throw
41
+ // "Illegal invocation" (node's fetch doesn't care, so tests can't catch it)
42
+ fetch: fetchImpl.bind(globalThis),
43
+ nativeWebSocket: previousWebSocket,
44
+ sockets: /* @__PURE__ */new Set(),
45
+ pullIntervalMs: opts.pullIntervalMs,
46
+ nextPokeID: 0
47
+ };
48
+ const Shim = class {
49
+ static CONNECTING = 0;
50
+ static OPEN = 1;
51
+ static CLOSING = 2;
52
+ static CLOSED = 3;
53
+ constructor(url, protocols) {
54
+ if (shouldIntercept(state.origin, url)) {
55
+ return new ZeroHttpSocket(state, url, protocols);
56
+ }
57
+ if (!state.nativeWebSocket) {
58
+ throw new Error(`No native WebSocket available for ${String(url)}`);
59
+ }
60
+ return new state.nativeWebSocket(url, protocols);
61
+ }
62
+ };
63
+ globalThis.WebSocket = Shim;
64
+ return {
65
+ pull: async () => {
66
+ await Promise.all([...state.sockets].map(socket => socket.pull()));
67
+ },
68
+ get connections() {
69
+ return state.sockets.size;
70
+ },
71
+ uninstall: () => {
72
+ if (globalThis.WebSocket === Shim) {
73
+ globalThis.WebSocket = previousWebSocket;
74
+ }
75
+ }
76
+ };
77
+ }
78
+ const transportsByOrigin = /* @__PURE__ */new Map();
79
+ function ensureHttpPullTransport(opts) {
80
+ const key = trimTrailingSlash(new URL(opts.origin).toString());
81
+ const existing = transportsByOrigin.get(key);
82
+ if (existing) return existing;
83
+ const transport = installHttpPullTransport(opts);
84
+ transportsByOrigin.set(key, transport);
85
+ return transport;
86
+ }
87
+ class ZeroHttpSocket {
88
+ constructor(state, url, protocols) {
89
+ this.state = state;
90
+ this.connectURL = toHttpURL(url);
91
+ this.url = String(url);
92
+ this.clientID = this.connectURL.searchParams.get("clientID") ?? "";
93
+ this.clientGroupID = this.connectURL.searchParams.get("clientGroupID") ?? "";
94
+ this.wsid = this.connectURL.searchParams.get("wsid") ?? `zero-http-${Date.now()}`;
95
+ const baseCookie = this.connectURL.searchParams.get("baseCookie");
96
+ this.cookie = baseCookie ? baseCookie : null;
97
+ const decoded = decodeSecProtocol(protocols);
98
+ this.authToken = decoded.authToken;
99
+ this.queueDesiredQueries(decoded.initConnectionMessage?.[1]);
100
+ this.state.sockets.add(this);
101
+ this.openTimer = setTimeout(() => this.open(), 0);
102
+ }
103
+ CONNECTING = 0;
104
+ OPEN = 1;
105
+ CLOSING = 2;
106
+ CLOSED = 3;
107
+ url;
108
+ readyState = this.CONNECTING;
109
+ connectURL;
110
+ authToken;
111
+ listeners = {
112
+ open: /* @__PURE__ */new Set(),
113
+ message: /* @__PURE__ */new Set(),
114
+ close: /* @__PURE__ */new Set(),
115
+ error: /* @__PURE__ */new Set()
116
+ };
117
+ clientID;
118
+ clientGroupID;
119
+ wsid;
120
+ cookie;
121
+ pendingGotQueriesPatch = [];
122
+ pullInFlight;
123
+ pullAfterCurrent = false;
124
+ pushChain = Promise.resolve();
125
+ nextLocalCookieID = 0;
126
+ openTimer;
127
+ pullTimer;
128
+ addEventListener(type, listener) {
129
+ if (listener) this.listeners[type]?.add(listener);
130
+ }
131
+ removeEventListener(type, listener) {
132
+ if (listener) this.listeners[type]?.delete(listener);
133
+ }
134
+ dispatchEvent(event) {
135
+ this.emit(event.type, event);
136
+ return true;
137
+ }
138
+ send(data) {
139
+ if (this.readyState !== this.OPEN) {
140
+ throw new Error("cannot send on a socket that is not open");
141
+ }
142
+ const message = JSON.parse(data);
143
+ switch (message[0]) {
144
+ case "initConnection":
145
+ case "changeDesiredQueries":
146
+ this.queueDesiredQueries(message[1]);
147
+ this.requestPullAfterCurrent();
148
+ return;
149
+ case "updateAuth":
150
+ this.authToken = message[1].auth;
151
+ return;
152
+ case "push":
153
+ this.enqueuePush(message[1]);
154
+ return;
155
+ case "ping":
156
+ this.emitMessage(["pong", {}]);
157
+ return;
158
+ case "pull":
159
+ this.run(this.answerMutationRecoveryPull(message[1]));
160
+ return;
161
+ case "deleteClients":
162
+ case "ackMutationResponses":
163
+ return;
164
+ default:
165
+ throw new Error(`unsupported zero-http upstream message ${message[0]}`);
166
+ }
167
+ }
168
+ close(code = 1e3, reason = "") {
169
+ if (this.readyState === this.CLOSED) return;
170
+ if (this.openTimer) clearTimeout(this.openTimer);
171
+ if (this.pullTimer) clearInterval(this.pullTimer);
172
+ this.readyState = this.CLOSED;
173
+ this.state.sockets.delete(this);
174
+ this.emit("close", {
175
+ code,
176
+ reason,
177
+ wasClean: code <= 1001
178
+ });
179
+ }
180
+ pull() {
181
+ if (this.readyState === this.CLOSED) return Promise.resolve();
182
+ if (this.pullInFlight) return this.pullInFlight;
183
+ this.pullInFlight = this.fetchPull(this.clientGroupID, this.cookie).then(response => {
184
+ if (response.unchanged) {
185
+ this.emitGotQueriesPatch(response.cookie);
186
+ return;
187
+ }
188
+ this.emitPoke(response);
189
+ }).catch(error => {
190
+ this.fail(error);
191
+ throw error;
192
+ }).finally(async () => {
193
+ const pullAgain = this.pullAfterCurrent;
194
+ this.pullAfterCurrent = false;
195
+ this.pullInFlight = void 0;
196
+ if (pullAgain && this.readyState !== this.CLOSED) await this.pull();
197
+ });
198
+ return this.pullInFlight;
199
+ }
200
+ open() {
201
+ if (this.readyState !== this.CONNECTING) return;
202
+ this.readyState = this.OPEN;
203
+ this.emit("open", {});
204
+ this.emitMessage(["connected", {
205
+ wsid: this.wsid,
206
+ timestamp: Date.now()
207
+ }]);
208
+ setTimeout(() => this.run(this.pull()), 0);
209
+ if (this.state.pullIntervalMs) {
210
+ this.pullTimer = setInterval(() => {
211
+ this.run(this.pull());
212
+ }, this.state.pullIntervalMs);
213
+ }
214
+ }
215
+ queueDesiredQueries(body) {
216
+ const desiredQueriesPatch = body?.desiredQueriesPatch;
217
+ if (!Array.isArray(desiredQueriesPatch)) return;
218
+ this.pendingGotQueriesPatch.push(...gotQueriesPatch(desiredQueriesPatch));
219
+ }
220
+ async push(body) {
221
+ const response = await this.postJSON("/push", body);
222
+ this.emitMessage(["pushResponse", response.pushResponse]);
223
+ this.requestPullAfterCurrent();
224
+ }
225
+ enqueuePush(body) {
226
+ const nextPush = this.pushChain.then(async () => {
227
+ if (this.readyState === this.CLOSED) return;
228
+ await this.push(body);
229
+ });
230
+ this.pushChain = nextPush.catch(() => {});
231
+ this.run(nextPush);
232
+ }
233
+ requestPullAfterCurrent() {
234
+ if (this.pullInFlight) {
235
+ this.pullAfterCurrent = true;
236
+ return;
237
+ }
238
+ this.run(this.pull());
239
+ }
240
+ async answerMutationRecoveryPull(body) {
241
+ const response = await this.fetchPull(body.clientGroupID, body.cookie);
242
+ const cookie = toWebSocketCookie(response.cookie);
243
+ this.emitMessage(["pull", {
244
+ requestID: body.requestID,
245
+ cookie: cookie ?? this.cookie ?? "0",
246
+ lastMutationIDChanges: response.unchanged ? {} : response.lastMutationIDChanges
247
+ }]);
248
+ }
249
+ async fetchPull(clientGroupID, cookie) {
250
+ return await this.postJSON("/pull", {
251
+ clientID: this.clientID,
252
+ clientGroupID,
253
+ cookie: toHttpCookie(cookie)
254
+ });
255
+ }
256
+ async postJSON(path, body) {
257
+ const response = await this.state.fetch(`${this.state.originString}${path}`, {
258
+ method: "POST",
259
+ headers: {
260
+ authorization: this.authToken ? `Bearer ${this.authToken}` : "",
261
+ "content-type": "application/json"
262
+ },
263
+ body: JSON.stringify(body)
264
+ });
265
+ if (!response.ok) {
266
+ throw new ZeroHttpResponseError(path, response.status);
267
+ }
268
+ return response.json();
269
+ }
270
+ run(promise) {
271
+ void promise.catch(error => this.fail(error));
272
+ }
273
+ fail(error) {
274
+ if (this.readyState === this.CLOSED) return;
275
+ if (isAuthHTTPError(error)) {
276
+ this.emitMessage(["error", {
277
+ kind: "Unauthorized",
278
+ message: error.message,
279
+ origin: "server"
280
+ }]);
281
+ if (this.readyState !== this.CLOSED) this.close(1e3, error.message);
282
+ return;
283
+ }
284
+ if (isStaleClientCookieError(error)) {
285
+ this.emitMessage(["error", {
286
+ kind: "InvalidConnectionRequestBaseCookie",
287
+ message: error.message,
288
+ origin: "server"
289
+ }]);
290
+ if (this.readyState !== this.CLOSED) this.close(1e3, error.message);
291
+ return;
292
+ }
293
+ this.emit("error", {
294
+ error
295
+ });
296
+ this.close(1011, errorMessage(error));
297
+ }
298
+ emitPoke(response) {
299
+ const nextCookie = toWebSocketCookie(response.cookie);
300
+ if (isStaleCookie(this.cookie, response.cookie)) {
301
+ throw new Error(`zero-http pull returned stale cookie ${response.cookie} for ${this.cookie}`);
302
+ }
303
+ const pokeID = `zero-http-${++this.state.nextPokeID}`;
304
+ const gotQueries = this.pendingGotQueriesPatch;
305
+ this.pendingGotQueriesPatch = [];
306
+ this.emitMessage(["pokeStart", {
307
+ pokeID,
308
+ baseCookie: this.cookie,
309
+ schemaVersions: {
310
+ minSupportedVersion: 1,
311
+ maxSupportedVersion: 1
312
+ },
313
+ timestamp: Date.now()
314
+ }]);
315
+ this.emitMessage(["pokePart", {
316
+ pokeID,
317
+ lastMutationIDChanges: response.lastMutationIDChanges,
318
+ rowsPatch: response.rowsPatch
319
+ }]);
320
+ if (gotQueries.length > 0) {
321
+ this.emitMessage(["pokePart", {
322
+ pokeID,
323
+ gotQueriesPatch: gotQueries
324
+ }]);
325
+ }
326
+ this.emitMessage(["pokeEnd", {
327
+ pokeID,
328
+ cookie: nextCookie
329
+ }]);
330
+ this.cookie = nextCookie;
331
+ }
332
+ emitGotQueriesPatch(cookie) {
333
+ if (this.pendingGotQueriesPatch.length === 0) return;
334
+ const serverCookie = cookie ?? toHttpCookie(this.cookie);
335
+ if (serverCookie === null) return;
336
+ const nextCookie = toLocalWebSocketCookie(serverCookie, ++this.nextLocalCookieID);
337
+ const pokeID = `zero-http-${++this.state.nextPokeID}`;
338
+ const gotQueries = this.pendingGotQueriesPatch;
339
+ this.pendingGotQueriesPatch = [];
340
+ this.emitMessage(["pokeStart", {
341
+ pokeID,
342
+ baseCookie: this.cookie,
343
+ schemaVersions: {
344
+ minSupportedVersion: 1,
345
+ maxSupportedVersion: 1
346
+ },
347
+ timestamp: Date.now()
348
+ }]);
349
+ this.emitMessage(["pokePart", {
350
+ pokeID,
351
+ gotQueriesPatch: gotQueries
352
+ }]);
353
+ this.emitMessage(["pokeEnd", {
354
+ pokeID,
355
+ cookie: nextCookie
356
+ }]);
357
+ this.cookie = nextCookie;
358
+ }
359
+ emitMessage(message) {
360
+ if (this.readyState !== this.OPEN) return;
361
+ this.emit("message", {
362
+ data: JSON.stringify(message)
363
+ });
364
+ }
365
+ emit(type, event) {
366
+ const handler = this[`on${type}`];
367
+ if (typeof handler === "function") handler.call(this, event);
368
+ for (const listener of this.listeners[type]) {
369
+ if (typeof listener === "function") listener(event);else listener.handleEvent(event);
370
+ }
371
+ }
372
+ }
373
+ function shouldIntercept(origin, url) {
374
+ const candidate = toHttpURL(url);
375
+ if (candidate.origin !== origin.origin) return false;
376
+ return candidate.pathname === `${trimTrailingSlash(origin.pathname)}/sync/v51/connect`;
377
+ }
378
+ function toHttpURL(url) {
379
+ const parsed = new URL(url);
380
+ if (parsed.protocol === "ws:") parsed.protocol = "http:";
381
+ if (parsed.protocol === "wss:") parsed.protocol = "https:";
382
+ return parsed;
383
+ }
384
+ function trimTrailingSlash(value) {
385
+ return value.endsWith("/") ? value.slice(0, -1) : value;
386
+ }
387
+ function decodeSecProtocol(protocols) {
388
+ const protocol = Array.isArray(protocols) ? protocols[0] : protocols;
389
+ if (!protocol) return {};
390
+ try {
391
+ const decoded = decodeURIComponent(protocol);
392
+ const json = new TextDecoder().decode(Uint8Array.from(globalThis.atob(decoded), char => char.charCodeAt(0)));
393
+ const parsed = JSON.parse(json);
394
+ return {
395
+ authToken: parsed.authToken,
396
+ initConnectionMessage: Array.isArray(parsed.initConnectionMessage) ? parsed.initConnectionMessage : void 0
397
+ };
398
+ } catch {
399
+ return {};
400
+ }
401
+ }
402
+ function gotQueriesPatch(patch) {
403
+ const got = [];
404
+ for (const op of patch) {
405
+ if (op.op === "clear") got.push({
406
+ op: "clear"
407
+ });else if (op.hash) got.push({
408
+ op: op.op,
409
+ hash: op.hash
410
+ });
411
+ }
412
+ return got;
413
+ }
414
+ function toHttpCookie(cookie) {
415
+ if (cookie === null || cookie === "") return null;
416
+ const parsed = Number(cookie.slice(0, COOKIE_WIDTH));
417
+ if (!Number.isFinite(parsed)) {
418
+ throw new Error(`zero-http cookie is not numeric: ${cookie}`);
419
+ }
420
+ return parsed;
421
+ }
422
+ function toWebSocketCookie(cookie) {
423
+ return cookie === null ? null : String(cookie).padStart(COOKIE_WIDTH, "0");
424
+ }
425
+ function toLocalWebSocketCookie(cookie, localID) {
426
+ return `${String(cookie).padStart(COOKIE_WIDTH, "0")}#${String(localID).padStart(6, "0")}`;
427
+ }
428
+ function isStaleCookie(current, next) {
429
+ const currentNumber = toHttpCookie(current);
430
+ return currentNumber !== null && next <= currentNumber;
431
+ }
432
+ function errorMessage(error) {
433
+ return error instanceof Error ? error.message : String(error);
434
+ }
435
+ class ZeroHttpResponseError extends Error {
436
+ constructor(path, status) {
437
+ super(`zero-http ${path} failed with ${status}`);
438
+ this.path = path;
439
+ this.status = status;
440
+ }
441
+ }
442
+ function isAuthHTTPError(error) {
443
+ return error instanceof ZeroHttpResponseError && (error.status === 401 || error.status === 403);
444
+ }
445
+ function isStaleClientCookieError(error) {
446
+ return error instanceof ZeroHttpResponseError && error.path === "/pull" && error.status === 409;
447
+ }