orez 0.4.10 → 0.4.12

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.
@@ -0,0 +1,425 @@
1
+ const COOKIE_WIDTH = 20;
2
+ export function installZeroHttpTransport(opts) {
3
+ const previousWebSocket = globalThis.WebSocket;
4
+ const fetchImpl = opts.fetch ?? globalThis.fetch;
5
+ if (!fetchImpl) {
6
+ throw new Error('installZeroHttpTransport requires a fetch implementation');
7
+ }
8
+ const state = {
9
+ origin: new URL(opts.origin),
10
+ originString: trimTrailingSlash(new URL(opts.origin).toString()),
11
+ fetch: fetchImpl,
12
+ nativeWebSocket: previousWebSocket,
13
+ sockets: new Set(),
14
+ nextPokeID: 0,
15
+ };
16
+ const Shim = class {
17
+ static CONNECTING = 0;
18
+ static OPEN = 1;
19
+ static CLOSING = 2;
20
+ static CLOSED = 3;
21
+ constructor(url, protocols) {
22
+ if (shouldIntercept(state.origin, url)) {
23
+ return new ZeroHttpSocket(state, url, protocols);
24
+ }
25
+ if (!state.nativeWebSocket) {
26
+ throw new Error(`No native WebSocket available for ${String(url)}`);
27
+ }
28
+ return new state.nativeWebSocket(url, protocols);
29
+ }
30
+ };
31
+ globalThis.WebSocket = Shim;
32
+ return {
33
+ pull: async () => {
34
+ await Promise.all([...state.sockets].map((socket) => socket.pull()));
35
+ },
36
+ get connections() {
37
+ return state.sockets.size;
38
+ },
39
+ uninstall: () => {
40
+ if (globalThis.WebSocket === Shim) {
41
+ globalThis.WebSocket = previousWebSocket;
42
+ }
43
+ },
44
+ };
45
+ }
46
+ class ZeroHttpSocket {
47
+ state;
48
+ CONNECTING = 0;
49
+ OPEN = 1;
50
+ CLOSING = 2;
51
+ CLOSED = 3;
52
+ url;
53
+ readyState = this.CONNECTING;
54
+ connectURL;
55
+ authToken;
56
+ listeners = {
57
+ open: new Set(),
58
+ message: new Set(),
59
+ close: new Set(),
60
+ error: new Set(),
61
+ };
62
+ clientID;
63
+ clientGroupID;
64
+ wsid;
65
+ cookie;
66
+ pendingGotQueriesPatch = [];
67
+ pullInFlight;
68
+ pullAfterCurrent = false;
69
+ pushChain = Promise.resolve();
70
+ nextLocalCookieID = 0;
71
+ openTimer;
72
+ constructor(state, url, protocols) {
73
+ this.state = state;
74
+ this.connectURL = toHttpURL(url);
75
+ this.url = String(url);
76
+ this.clientID = this.connectURL.searchParams.get('clientID') ?? '';
77
+ this.clientGroupID = this.connectURL.searchParams.get('clientGroupID') ?? '';
78
+ this.wsid = this.connectURL.searchParams.get('wsid') ?? `zero-http-${Date.now()}`;
79
+ const baseCookie = this.connectURL.searchParams.get('baseCookie');
80
+ this.cookie = baseCookie ? baseCookie : null;
81
+ const decoded = decodeSecProtocol(protocols);
82
+ this.authToken = decoded.authToken;
83
+ this.queueDesiredQueries(decoded.initConnectionMessage?.[1]);
84
+ this.state.sockets.add(this);
85
+ this.openTimer = setTimeout(() => this.open(), 0);
86
+ }
87
+ addEventListener(type, listener) {
88
+ if (listener)
89
+ this.listeners[type]?.add(listener);
90
+ }
91
+ removeEventListener(type, listener) {
92
+ if (listener)
93
+ this.listeners[type]?.delete(listener);
94
+ }
95
+ dispatchEvent(event) {
96
+ this.emit(event.type, event);
97
+ return true;
98
+ }
99
+ send(data) {
100
+ if (this.readyState !== this.OPEN) {
101
+ throw new Error('cannot send on a socket that is not open');
102
+ }
103
+ const message = JSON.parse(data);
104
+ switch (message[0]) {
105
+ case 'initConnection':
106
+ case 'changeDesiredQueries':
107
+ this.queueDesiredQueries(message[1]);
108
+ this.requestPullAfterCurrent();
109
+ return;
110
+ case 'updateAuth':
111
+ this.authToken = message[1].auth;
112
+ return;
113
+ case 'push':
114
+ this.enqueuePush(message[1]);
115
+ return;
116
+ case 'ping':
117
+ this.emitMessage(['pong', {}]);
118
+ return;
119
+ case 'pull':
120
+ this.run(this.answerMutationRecoveryPull(message[1]));
121
+ return;
122
+ case 'deleteClients':
123
+ case 'ackMutationResponses':
124
+ return;
125
+ default:
126
+ throw new Error(`unsupported zero-http upstream message ${message[0]}`);
127
+ }
128
+ }
129
+ close(code = 1000, reason = '') {
130
+ if (this.readyState === this.CLOSED)
131
+ return;
132
+ if (this.openTimer)
133
+ clearTimeout(this.openTimer);
134
+ this.readyState = this.CLOSED;
135
+ this.state.sockets.delete(this);
136
+ this.emit('close', { code, reason, wasClean: code <= 1001 });
137
+ }
138
+ pull() {
139
+ if (this.readyState === this.CLOSED)
140
+ return Promise.resolve();
141
+ if (this.pullInFlight)
142
+ return this.pullInFlight;
143
+ this.pullInFlight = this.fetchPull(this.clientGroupID, this.cookie)
144
+ .then((response) => {
145
+ if (response.unchanged) {
146
+ this.emitGotQueriesPatch(response.cookie);
147
+ return;
148
+ }
149
+ this.emitPoke(response);
150
+ })
151
+ .catch((error) => {
152
+ this.fail(error);
153
+ throw error;
154
+ })
155
+ .finally(async () => {
156
+ const pullAgain = this.pullAfterCurrent;
157
+ this.pullAfterCurrent = false;
158
+ this.pullInFlight = undefined;
159
+ if (pullAgain && this.readyState !== this.CLOSED)
160
+ await this.pull();
161
+ });
162
+ return this.pullInFlight;
163
+ }
164
+ open() {
165
+ if (this.readyState !== this.CONNECTING)
166
+ return;
167
+ this.readyState = this.OPEN;
168
+ this.emit('open', {});
169
+ this.emitMessage(['connected', { wsid: this.wsid, timestamp: Date.now() }]);
170
+ setTimeout(() => this.run(this.pull()), 0);
171
+ }
172
+ queueDesiredQueries(body) {
173
+ const desiredQueriesPatch = body
174
+ ?.desiredQueriesPatch;
175
+ if (!Array.isArray(desiredQueriesPatch))
176
+ return;
177
+ this.pendingGotQueriesPatch.push(...gotQueriesPatch(desiredQueriesPatch));
178
+ }
179
+ async push(body) {
180
+ const response = (await this.postJSON('/push', body));
181
+ this.emitMessage(['pushResponse', response.pushResponse]);
182
+ this.requestPullAfterCurrent();
183
+ }
184
+ enqueuePush(body) {
185
+ const nextPush = this.pushChain.then(async () => {
186
+ if (this.readyState === this.CLOSED)
187
+ return;
188
+ await this.push(body);
189
+ });
190
+ this.pushChain = nextPush.catch(() => { });
191
+ this.run(nextPush);
192
+ }
193
+ requestPullAfterCurrent() {
194
+ if (this.pullInFlight) {
195
+ this.pullAfterCurrent = true;
196
+ return;
197
+ }
198
+ this.run(this.pull());
199
+ }
200
+ async answerMutationRecoveryPull(body) {
201
+ const response = await this.fetchPull(body.clientGroupID, body.cookie);
202
+ const cookie = toWebSocketCookie(response.cookie);
203
+ this.emitMessage([
204
+ 'pull',
205
+ {
206
+ requestID: body.requestID,
207
+ cookie: cookie ?? this.cookie ?? '0',
208
+ lastMutationIDChanges: response.unchanged ? {} : response.lastMutationIDChanges,
209
+ },
210
+ ]);
211
+ }
212
+ async fetchPull(clientGroupID, cookie) {
213
+ return (await this.postJSON('/pull', {
214
+ clientID: this.clientID,
215
+ clientGroupID,
216
+ cookie: toHttpCookie(cookie),
217
+ }));
218
+ }
219
+ async postJSON(path, body) {
220
+ const response = await this.state.fetch(`${this.state.originString}${path}`, {
221
+ method: 'POST',
222
+ headers: {
223
+ authorization: this.authToken ? `Bearer ${this.authToken}` : '',
224
+ 'content-type': 'application/json',
225
+ },
226
+ body: JSON.stringify(body),
227
+ });
228
+ if (!response.ok) {
229
+ throw new ZeroHttpResponseError(path, response.status);
230
+ }
231
+ return response.json();
232
+ }
233
+ run(promise) {
234
+ void promise.catch((error) => this.fail(error));
235
+ }
236
+ fail(error) {
237
+ if (this.readyState === this.CLOSED)
238
+ return;
239
+ if (isAuthHTTPError(error)) {
240
+ this.emitMessage([
241
+ 'error',
242
+ {
243
+ kind: 'Unauthorized',
244
+ message: error.message,
245
+ origin: 'server',
246
+ },
247
+ ]);
248
+ if (this.readyState !== this.CLOSED)
249
+ this.close(1000, error.message);
250
+ return;
251
+ }
252
+ this.emit('error', { error });
253
+ this.close(1011, errorMessage(error));
254
+ }
255
+ emitPoke(response) {
256
+ const nextCookie = toWebSocketCookie(response.cookie);
257
+ if (isStaleCookie(this.cookie, response.cookie)) {
258
+ throw new Error(`zero-http pull returned stale cookie ${response.cookie} for ${this.cookie}`);
259
+ }
260
+ const pokeID = `zero-http-${++this.state.nextPokeID}`;
261
+ const gotQueries = this.pendingGotQueriesPatch;
262
+ this.pendingGotQueriesPatch = [];
263
+ this.emitMessage([
264
+ 'pokeStart',
265
+ {
266
+ pokeID,
267
+ baseCookie: this.cookie,
268
+ schemaVersions: {
269
+ minSupportedVersion: 1,
270
+ maxSupportedVersion: 1,
271
+ },
272
+ timestamp: Date.now(),
273
+ },
274
+ ]);
275
+ this.emitMessage([
276
+ 'pokePart',
277
+ {
278
+ pokeID,
279
+ lastMutationIDChanges: response.lastMutationIDChanges,
280
+ rowsPatch: response.rowsPatch,
281
+ },
282
+ ]);
283
+ if (gotQueries.length > 0) {
284
+ this.emitMessage([
285
+ 'pokePart',
286
+ {
287
+ pokeID,
288
+ gotQueriesPatch: gotQueries,
289
+ },
290
+ ]);
291
+ }
292
+ this.emitMessage(['pokeEnd', { pokeID, cookie: nextCookie }]);
293
+ this.cookie = nextCookie;
294
+ }
295
+ emitGotQueriesPatch(cookie) {
296
+ if (this.pendingGotQueriesPatch.length === 0)
297
+ return;
298
+ const serverCookie = cookie ?? toHttpCookie(this.cookie);
299
+ if (serverCookie === null)
300
+ return;
301
+ const nextCookie = toLocalWebSocketCookie(serverCookie, ++this.nextLocalCookieID);
302
+ const pokeID = `zero-http-${++this.state.nextPokeID}`;
303
+ const gotQueries = this.pendingGotQueriesPatch;
304
+ this.pendingGotQueriesPatch = [];
305
+ this.emitMessage([
306
+ 'pokeStart',
307
+ {
308
+ pokeID,
309
+ baseCookie: this.cookie,
310
+ schemaVersions: {
311
+ minSupportedVersion: 1,
312
+ maxSupportedVersion: 1,
313
+ },
314
+ timestamp: Date.now(),
315
+ },
316
+ ]);
317
+ this.emitMessage([
318
+ 'pokePart',
319
+ {
320
+ pokeID,
321
+ gotQueriesPatch: gotQueries,
322
+ },
323
+ ]);
324
+ this.emitMessage(['pokeEnd', { pokeID, cookie: nextCookie }]);
325
+ this.cookie = nextCookie;
326
+ }
327
+ emitMessage(message) {
328
+ if (this.readyState !== this.OPEN)
329
+ return;
330
+ this.emit('message', { data: JSON.stringify(message) });
331
+ }
332
+ emit(type, event) {
333
+ const handler = this[`on${type}`];
334
+ if (typeof handler === 'function')
335
+ handler.call(this, event);
336
+ for (const listener of this.listeners[type]) {
337
+ if (typeof listener === 'function')
338
+ listener(event);
339
+ else
340
+ listener.handleEvent(event);
341
+ }
342
+ }
343
+ }
344
+ function shouldIntercept(origin, url) {
345
+ const candidate = toHttpURL(url);
346
+ if (candidate.origin !== origin.origin)
347
+ return false;
348
+ return candidate.pathname === `${trimTrailingSlash(origin.pathname)}/sync/v51/connect`;
349
+ }
350
+ function toHttpURL(url) {
351
+ const parsed = new URL(url);
352
+ if (parsed.protocol === 'ws:')
353
+ parsed.protocol = 'http:';
354
+ if (parsed.protocol === 'wss:')
355
+ parsed.protocol = 'https:';
356
+ return parsed;
357
+ }
358
+ function trimTrailingSlash(value) {
359
+ return value.endsWith('/') ? value.slice(0, -1) : value;
360
+ }
361
+ function decodeSecProtocol(protocols) {
362
+ const protocol = Array.isArray(protocols) ? protocols[0] : protocols;
363
+ if (!protocol)
364
+ return {};
365
+ try {
366
+ const decoded = decodeURIComponent(protocol);
367
+ const json = new TextDecoder().decode(Uint8Array.from(globalThis.atob(decoded), (char) => char.charCodeAt(0)));
368
+ const parsed = JSON.parse(json);
369
+ return {
370
+ authToken: parsed.authToken,
371
+ initConnectionMessage: Array.isArray(parsed.initConnectionMessage)
372
+ ? parsed.initConnectionMessage
373
+ : undefined,
374
+ };
375
+ }
376
+ catch {
377
+ return {};
378
+ }
379
+ }
380
+ function gotQueriesPatch(patch) {
381
+ const got = [];
382
+ for (const op of patch) {
383
+ if (op.op === 'clear')
384
+ got.push({ op: 'clear' });
385
+ else if (op.hash)
386
+ got.push({ op: op.op, hash: op.hash });
387
+ }
388
+ return got;
389
+ }
390
+ function toHttpCookie(cookie) {
391
+ if (cookie === null || cookie === '')
392
+ return null;
393
+ const parsed = Number(cookie.slice(0, COOKIE_WIDTH));
394
+ if (!Number.isFinite(parsed)) {
395
+ throw new Error(`zero-http cookie is not numeric: ${cookie}`);
396
+ }
397
+ return parsed;
398
+ }
399
+ function toWebSocketCookie(cookie) {
400
+ return cookie === null ? null : String(cookie).padStart(COOKIE_WIDTH, '0');
401
+ }
402
+ function toLocalWebSocketCookie(cookie, localID) {
403
+ return `${String(cookie).padStart(COOKIE_WIDTH, '0')}#${String(localID).padStart(6, '0')}`;
404
+ }
405
+ function isStaleCookie(current, next) {
406
+ const currentNumber = toHttpCookie(current);
407
+ return currentNumber !== null && next <= currentNumber;
408
+ }
409
+ function errorMessage(error) {
410
+ return error instanceof Error ? error.message : String(error);
411
+ }
412
+ class ZeroHttpResponseError extends Error {
413
+ path;
414
+ status;
415
+ constructor(path, status) {
416
+ super(`zero-http ${path} failed with ${status}`);
417
+ this.path = path;
418
+ this.status = status;
419
+ }
420
+ }
421
+ function isAuthHTTPError(error) {
422
+ return (error instanceof ZeroHttpResponseError &&
423
+ (error.status === 401 || error.status === 403));
424
+ }
425
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/zero-http/transport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orez",
3
- "version": "0.4.10",
3
+ "version": "0.4.12",
4
4
  "description": "PGlite-powered zero-sync development backend. No Docker required.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -87,7 +87,7 @@
87
87
  "@electric-sql/pglite": "0.4.1",
88
88
  "@electric-sql/pglite-tools": "^0.3.1",
89
89
  "@pgsql/traverse": "17.2.6",
90
- "bedrock-sqlite": "0.4.10",
90
+ "bedrock-sqlite": "0.4.12",
91
91
  "citty": "^0.2.0",
92
92
  "pg-gateway": "0.3.0-beta.4",
93
93
  "pgsql-parser": "^17.9.11",