on-zero 0.6.20 → 0.6.21

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.
@@ -137,16 +137,40 @@ function _is_native_reflect_construct() {
137
137
  })();
138
138
  }
139
139
  var COOKIE_WIDTH = 20;
140
+ var ZERO_CONNECT_TIMEOUT_MS = 1e4;
141
+ var HTTP_PULL_PAGE_REGISTRY = /* @__PURE__ */Symbol.for("on-zero.http-pull.page-registry");
142
+ function isHttpPullPageRegistry(value) {
143
+ return (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && value !== null && "pageID" in value && typeof value.pageID === "string" && "nextTransportGeneration" in value && typeof value.nextTransportGeneration === "number" && "transportsByOrigin" in value && _instanceof(value.transportsByOrigin, Map);
144
+ }
145
+ function getHttpPullPageRegistry() {
146
+ var existing = Reflect.get(globalThis, HTTP_PULL_PAGE_REGISTRY);
147
+ if (isHttpPullPageRegistry(existing)) return existing;
148
+ var registry = {
149
+ pageID: `page-${Date.now().toString(36)}`,
150
+ nextTransportGeneration: 0,
151
+ transportsByOrigin: /* @__PURE__ */new Map()
152
+ };
153
+ Reflect.set(globalThis, HTTP_PULL_PAGE_REGISTRY, registry);
154
+ return registry;
155
+ }
156
+ function logHttpPullLifecycle(event) {
157
+ if (process.env.NODE_ENV === "test") return;
158
+ console.info(`[on-zero:http-pull] ${JSON.stringify(event)}`);
159
+ }
140
160
  function installHttpPullTransport(opts) {
141
161
  var _class;
162
+ var pageRegistry = getHttpPullPageRegistry();
163
+ var transportID = `${pageRegistry.pageID}:transport:${++pageRegistry.nextTransportGeneration}`;
142
164
  var previousWebSocket = globalThis.WebSocket;
143
165
  var _opts_fetch;
144
166
  var fetchImpl = (_opts_fetch = opts.fetch) !== null && _opts_fetch !== void 0 ? _opts_fetch : globalThis.fetch;
145
167
  if (!fetchImpl) {
146
168
  throw new Error("installHttpPullTransport requires a fetch implementation");
147
169
  }
148
- var _opts_pullOrigin, _opts_pushOrigin, _opts_wake;
170
+ var _opts_pullOrigin, _opts_pushOrigin, _opts_wake, _opts_lifecycle;
149
171
  var state = {
172
+ pageID: pageRegistry.pageID,
173
+ transportID,
150
174
  origin: new URL(opts.origin),
151
175
  originString: trimTrailingSlash(new URL(opts.origin).toString()),
152
176
  pullOriginString: trimTrailingSlash(new URL((_opts_pullOrigin = opts.pullOrigin) !== null && _opts_pullOrigin !== void 0 ? _opts_pullOrigin : opts.origin).toString()),
@@ -166,7 +190,7 @@ function installHttpPullTransport(opts) {
166
190
  nextSocketGeneration: 0,
167
191
  activeSocketGenerationByClient: /* @__PURE__ */new Map(),
168
192
  activeSocketByClient: /* @__PURE__ */new Map(),
169
- lifecycle: opts.lifecycle
193
+ lifecycle: (_opts_lifecycle = opts.lifecycle) !== null && _opts_lifecycle !== void 0 ? _opts_lifecycle : logHttpPullLifecycle
170
194
  };
171
195
  var Shim = (_class = function _class2(url, protocols) {
172
196
  "use strict";
@@ -181,7 +205,7 @@ function installHttpPullTransport(opts) {
181
205
  return new state.nativeWebSocket(url, protocols);
182
206
  }, _define_property(_class, "CONNECTING", 0), _define_property(_class, "OPEN", 1), _define_property(_class, "CLOSING", 2), _define_property(_class, "CLOSED", 3), _class);
183
207
  globalThis.WebSocket = Shim;
184
- return {
208
+ var transport = {
185
209
  pull: async function () {
186
210
  await Promise.all([...state.sockets].map(function (socket) {
187
211
  return socket.pull();
@@ -190,20 +214,27 @@ function installHttpPullTransport(opts) {
190
214
  get connections() {
191
215
  return state.sockets.size;
192
216
  },
217
+ pageID: state.pageID,
218
+ transportID: state.transportID,
193
219
  uninstall: function () {
194
220
  if (globalThis.WebSocket === Shim) {
195
221
  globalThis.WebSocket = previousWebSocket;
196
222
  }
223
+ var registered = pageRegistry.transportsByOrigin.get(state.originString);
224
+ if (registered === transport) {
225
+ pageRegistry.transportsByOrigin.delete(state.originString);
226
+ }
197
227
  }
198
228
  };
229
+ return transport;
199
230
  }
200
- var transportsByOrigin = /* @__PURE__ */new Map();
201
231
  function ensureHttpPullTransport(opts) {
232
+ var pageRegistry = getHttpPullPageRegistry();
202
233
  var key = trimTrailingSlash(new URL(opts.origin).toString());
203
- var existing = transportsByOrigin.get(key);
234
+ var existing = pageRegistry.transportsByOrigin.get(key);
204
235
  if (existing) return existing;
205
236
  var transport = installHttpPullTransport(opts);
206
- transportsByOrigin.set(key, transport);
237
+ pageRegistry.transportsByOrigin.set(key, transport);
207
238
  return transport;
208
239
  }
209
240
  var ZeroHttpSocket = /* @__PURE__ */function () {
@@ -212,7 +243,7 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
212
243
  function ZeroHttpSocket2(state, url, protocols) {
213
244
  var _this = this;
214
245
  _class_call_check(this, ZeroHttpSocket2);
215
- var _this_state_activeSocketByClient_get, _this_cookie, _decoded_initConnectionMessage;
246
+ var _this_cookie, _decoded_initConnectionMessage;
216
247
  _define_property(this, "state", void 0);
217
248
  _define_property(this, "CONNECTING", void 0);
218
249
  _define_property(this, "OPEN", void 0);
@@ -241,6 +272,11 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
241
272
  _define_property(this, "wakeSocket", void 0);
242
273
  _define_property(this, "wakeReconnectTimer", void 0);
243
274
  _define_property(this, "generation", void 0);
275
+ _define_property(this, "zeroInstanceID", void 0);
276
+ _define_property(this, "connectionAttemptID", void 0);
277
+ _define_property(this, "socketID", void 0);
278
+ _define_property(this, "attemptStartedAt", void 0);
279
+ _define_property(this, "settled", void 0);
244
280
  this.state = state;
245
281
  this.CONNECTING = 0;
246
282
  this.OPEN = 1;
@@ -259,6 +295,7 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
259
295
  this.sentQueryPatchLen = 0;
260
296
  this.pullAfterCurrent = false;
261
297
  this.pushChain = Promise.resolve();
298
+ this.settled = false;
262
299
  this.connectURL = toHttpURL(url);
263
300
  this.url = String(url);
264
301
  var _this_connectURL_searchParams_get;
@@ -268,9 +305,16 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
268
305
  var _this_connectURL_searchParams_get2;
269
306
  this.wsid = (_this_connectURL_searchParams_get2 = this.connectURL.searchParams.get("wsid")) !== null && _this_connectURL_searchParams_get2 !== void 0 ? _this_connectURL_searchParams_get2 : `zero-http-${Date.now()}`;
270
307
  this.generation = ++this.state.nextSocketGeneration;
271
- (_this_state_activeSocketByClient_get = this.state.activeSocketByClient.get(this.clientID)) === null || _this_state_activeSocketByClient_get === void 0 ? void 0 : _this_state_activeSocketByClient_get.supersede();
308
+ this.zeroInstanceID = `${this.state.pageID}:zero:${this.clientID}`;
309
+ this.connectionAttemptID = `${this.zeroInstanceID}:attempt:${this.wsid}`;
310
+ this.socketID = `${this.state.transportID}:socket:${this.generation}`;
311
+ var attemptStartedAtParam = this.connectURL.searchParams.get("ts");
312
+ var attemptStartedAt = Number(attemptStartedAtParam);
313
+ this.attemptStartedAt = attemptStartedAtParam !== null && Number.isFinite(attemptStartedAt) ? attemptStartedAt : void 0;
314
+ var previousSocket = this.state.activeSocketByClient.get(this.clientID);
272
315
  this.state.activeSocketGenerationByClient.set(this.clientID, this.generation);
273
316
  this.state.activeSocketByClient.set(this.clientID, this);
317
+ previousSocket === null || previousSocket === void 0 ? void 0 : previousSocket.supersede();
274
318
  this.emitLifecycle("created");
275
319
  var baseCookie = this.connectURL.searchParams.get("baseCookie");
276
320
  this.cookie = baseCookie ? baseCookie : null;
@@ -344,20 +388,10 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
344
388
  value: function close() {
345
389
  var code = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1e3,
346
390
  reason = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
347
- if (this.readyState === this.CLOSED) return;
348
- if (this.openTimer) clearTimeout(this.openTimer);
349
- if (this.pullTimer) clearInterval(this.pullTimer);
350
- this.closeWakeChannel();
351
- this.readyState = this.CLOSED;
352
- this.state.sockets.delete(this);
353
- if (this.state.activeSocketByClient.get(this.clientID) === this) {
354
- this.state.activeSocketByClient.delete(this.clientID);
355
- this.state.activeSocketGenerationByClient.delete(this.clientID);
356
- }
357
- this.emitLifecycle("close", {
391
+ if (!this.settle("close", {
358
392
  code,
359
393
  reason
360
- });
394
+ })) return;
361
395
  this.emit("close", {
362
396
  code,
363
397
  reason,
@@ -393,6 +427,20 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
393
427
  value: function open() {
394
428
  var _this = this;
395
429
  if (this.readyState !== this.CONNECTING) return;
430
+ var attemptAgeMs = this.getAttemptAgeMs();
431
+ if (attemptAgeMs !== void 0 && attemptAgeMs >= ZERO_CONNECT_TIMEOUT_MS) {
432
+ var reason = `zero-http connection attempt ${this.wsid} expired after ${Math.round(attemptAgeMs)}ms before socket construction completed`;
433
+ if (!this.settle("aborted", {
434
+ code: 1e3,
435
+ reason
436
+ })) return;
437
+ this.emit("close", {
438
+ code: 1e3,
439
+ reason,
440
+ wasClean: true
441
+ });
442
+ return;
443
+ }
396
444
  this.readyState = this.OPEN;
397
445
  this.emitLifecycle("open");
398
446
  this.emit("open", {});
@@ -771,13 +819,30 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
771
819
  }, {
772
820
  key: "supersede",
773
821
  value: function supersede() {
774
- if (this.readyState === this.CLOSED) return;
822
+ this.settle("superseded");
823
+ }
824
+ }, {
825
+ key: "settle",
826
+ value: function settle(type) {
827
+ var detail = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
828
+ if (this.settled) return false;
829
+ this.settled = true;
775
830
  if (this.openTimer !== void 0) clearTimeout(this.openTimer);
776
831
  if (this.pullTimer !== void 0) clearInterval(this.pullTimer);
777
832
  this.closeWakeChannel();
778
833
  this.readyState = this.CLOSED;
779
834
  this.state.sockets.delete(this);
780
- this.emitLifecycle("superseded");
835
+ if (this.state.activeSocketByClient.get(this.clientID) === this) {
836
+ this.state.activeSocketByClient.delete(this.clientID);
837
+ this.state.activeSocketGenerationByClient.delete(this.clientID);
838
+ }
839
+ this.emitLifecycle(type, detail);
840
+ return true;
841
+ }
842
+ }, {
843
+ key: "getAttemptAgeMs",
844
+ value: function getAttemptAgeMs() {
845
+ return this.attemptStartedAt === void 0 ? void 0 : performance.now() - this.attemptStartedAt;
781
846
  }
782
847
  }, {
783
848
  key: "emitLifecycle",
@@ -787,10 +852,19 @@ var ZeroHttpSocket = /* @__PURE__ */function () {
787
852
  var _this_state_activeSocketGenerationByClient_get;
788
853
  (_this_state_lifecycle = (_this_state = this.state).lifecycle) === null || _this_state_lifecycle === void 0 ? void 0 : _this_state_lifecycle.call(_this_state, {
789
854
  type,
855
+ pageID: this.state.pageID,
856
+ transportID: this.state.transportID,
857
+ zeroInstanceID: this.zeroInstanceID,
858
+ clientGroupID: this.clientGroupID,
859
+ connectionAttemptID: this.connectionAttemptID,
860
+ socketID: this.socketID,
790
861
  generation: this.generation,
791
862
  activeGeneration: (_this_state_activeSocketGenerationByClient_get = this.state.activeSocketGenerationByClient.get(this.clientID)) !== null && _this_state_activeSocketGenerationByClient_get !== void 0 ? _this_state_activeSocketGenerationByClient_get : this.generation,
792
863
  clientID: this.clientID,
793
864
  wsid: this.wsid,
865
+ timestamp: Date.now(),
866
+ attemptStartedAt: this.attemptStartedAt,
867
+ attemptAgeMs: this.getAttemptAgeMs(),
794
868
  ...detail
795
869
  });
796
870
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","_define_property","obj","value","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper","result","Boolean","valueOf","_","COOKIE_WIDTH","installHttpPullTransport","opts","_class","previousWebSocket","globalThis","WebSocket","_opts_fetch","fetchImpl","fetch","Error","_opts_pullOrigin","_opts_pushOrigin","_opts_wake","state","origin","URL","originString","trimTrailingSlash","pullOriginString","pullOrigin","pushOriginString","pushOrigin","nativeWebSocket","sockets","Set","pullIntervalMs","wakeEnabled","wake","queryTransform","queryForward","queryAware","nextPokeID","nextSocketGeneration","activeSocketGenerationByClient","activeSocketByClient","lifecycle","Shim","_class2","url","protocols","shouldIntercept","ZeroHttpSocket","String","pull","Promise","all","map","socket","connections","size","uninstall","transportsByOrigin","ensureHttpPullTransport","existing","transport","ZeroHttpSocket2","_this_state_activeSocketByClient_get","_this_cookie","_decoded_initConnectionMessage","CONNECTING","OPEN","CLOSING","CLOSED","readyState","listeners","open","message","close","error","pendingGotQueriesPatch","desiredQueryPatch","queryVersion","sentQueryPatchLen","pullAfterCurrent","pushChain","resolve","connectURL","toHttpURL","_this_connectURL_searchParams_get","clientID","searchParams","_this_connectURL_searchParams_get1","clientGroupID","_this_connectURL_searchParams_get2","wsid","Date","now","generation","supersede","emitLifecycle","baseCookie","cookie","suffixMatch","match","nextLocalCookieID","Number","decoded","decodeSecProtocol","authToken","queueDesiredQueries","initConnectionMessage","add","openTimer","setTimeout","addEventListener","type","listener","_this_listeners_type","removeEventListener","delete","dispatchEvent","event","emit","send","data","JSON","parse","requestPullAfterCurrent","auth","enqueuePush","emitMessage","run","answerMutationRecoveryPull","code","reason","clearTimeout","pullTimer","clearInterval","closeWakeChannel","wasClean","pullInFlight","fetchPull","then","response","applyServerGotQueries","unchanged","emitGotQueriesPatch","emitPoke","catch","fail","finally","pullAgain","timestamp","setInterval","openWakeChannel","Native","wakeSocket","wsBase","replace","encodeURIComponent","e","reconnect","wakeReconnectTimer","onmessage","onclose","onerror","body","desiredQueriesPatch","Array","isArray","gotQueriesPatch","transform","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","op","hash","inline","ast","_op_name","name","_op_args","err","return","postJSON","filterMutationResultsToClient","pushResponse","nextPush","got","gotQueries","patch","sentQueryVersion","version","splice"],"sources":["../../src/httpPullTransport.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","_define_property","obj","value","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper","result","Boolean","valueOf","_","COOKIE_WIDTH","ZERO_CONNECT_TIMEOUT_MS","HTTP_PULL_PAGE_REGISTRY","for","isHttpPullPageRegistry","pageID","nextTransportGeneration","transportsByOrigin","getHttpPullPageRegistry","existing","globalThis","registry","Date","now","logHttpPullLifecycle","event","process","env","NODE_ENV","console","info","JSON","stringify","installHttpPullTransport","opts","_class","pageRegistry","transportID","previousWebSocket","WebSocket","_opts_fetch","fetchImpl","fetch","Error","_opts_pullOrigin","_opts_pushOrigin","_opts_wake","_opts_lifecycle","state","origin","URL","originString","trimTrailingSlash","pullOriginString","pullOrigin","pushOriginString","pushOrigin","nativeWebSocket","sockets","Set","pullIntervalMs","wakeEnabled","wake","queryTransform","queryForward","queryAware","nextPokeID","nextSocketGeneration","activeSocketGenerationByClient","activeSocketByClient","lifecycle","Shim","_class2","url","protocols","shouldIntercept","ZeroHttpSocket","String","transport","pull","Promise","all","map","socket","connections","size","uninstall","registered","delete","ensureHttpPullTransport","ZeroHttpSocket2","_this_cookie","_decoded_initConnectionMessage","CONNECTING","OPEN","CLOSING","CLOSED","readyState","listeners","open","message","close","error","pendingGotQueriesPatch","desiredQueryPatch","queryVersion","sentQueryPatchLen","pullAfterCurrent","pushChain","resolve","settled","connectURL","toHttpURL","_this_connectURL_searchParams_get","clientID","searchParams","_this_connectURL_searchParams_get1","clientGroupID","_this_connectURL_searchParams_get2","wsid","generation","zeroInstanceID","connectionAttemptID","socketID","attemptStartedAtParam","attemptStartedAt","Number","isFinite","previousSocket","supersede","emitLifecycle","baseCookie","cookie","suffixMatch","match","nextLocalCookieID","decoded","decodeSecProtocol","authToken","queueDesiredQueries","initConnectionMessage","add","openTimer","setTimeout","addEventListener","type","listener","_this_listeners_type","removeEventListener","dispatchEvent","emit","send","data","parse","requestPullAfterCurrent","auth","enqueuePush","emitMessage","run","answerMutationRecoveryPull","code","reason","settle","wasClean","pullInFlight","fetchPull","then","response","applyServerGotQueries","unchanged","emitGotQueriesPatch","emitPoke","catch","fail","finally","pullAgain","attemptAgeMs","getAttemptAgeMs","Math","round","timestamp","pullTimer","setInterval","openWakeChannel","Native","wakeSocket","wsBase","replace","encodeURIComponent","e","reconnect","wakeReconnectTimer","onmessage","onclose","onerror","closeWakeChannel","clearTimeout","body","desiredQueriesPatch","Array","isArray","gotQueriesPatch","transform","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","op","hash","inline","ast","_op_name","name","_op_args","err","return","postJSON","filterMutationResultsToClient","pushResponse","nextPush","got","gotQueries","patch","sentQueryVersion","version","splice","toWebSocketCookie","_ref","requestID","lastMutationIDChanges"],"sources":["../../src/httpPullTransport.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.6.20",
3
+ "version": "0.6.21",
4
4
  "description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
5
5
  "sideEffects": false,
6
6
  "source": "src/index.ts",
@@ -100,7 +100,7 @@
100
100
  }
101
101
  },
102
102
  "dependencies": {
103
- "@take-out/helpers": "0.6.20",
103
+ "@take-out/helpers": "0.6.21",
104
104
  "chokidar": "^4.0.3",
105
105
  "citty": "^0.1.6",
106
106
  "valibot": "^1.1.0"
package/readme.md CHANGED
@@ -810,6 +810,24 @@ import { ensureAuth } from 'on-zero'
810
810
  const auth = ensureAuth() // AuthData (throws if not authenticated)
811
811
  ```
812
812
 
813
+ ## HTTP pull transport lifecycle
814
+
815
+ `ensureHttpPullTransport()` installs one transport per normalized origin in a
816
+ page-global registry. Zero instance rotation and duplicate module evaluation
817
+ therefore reuse the same WebSocket shim instead of chaining installations.
818
+
819
+ Every socket lifecycle event carries stable `pageID`, `transportID`,
820
+ `zeroInstanceID`, `clientGroupID`, `connectionAttemptID`, and `socketID` fields,
821
+ plus Zero's `clientID` / `wsid`, the socket generation, and attempt age. on-zero
822
+ logs each event as one `[on-zero:http-pull]` JSON line by default. Pass
823
+ `lifecycle(event)` to collect the same events yourself instead.
824
+
825
+ `close`, `superseded`, and `aborted` are mutually exclusive terminal events for
826
+ one socket generation. An attempt whose Zero `ts` is already beyond the stock
827
+ connection deadline is aborted through `close` without emitting `open`; this
828
+ prevents delayed socket construction from opening after Zero has discarded that
829
+ attempt's connection state.
830
+
813
831
  ## recovery
814
832
 
815
833
  on-zero self-heals a client whose local sync state is lost or rejected. this is
@@ -517,6 +517,71 @@ describe('zero-http transport', () => {
517
517
  ).toBe(false)
518
518
  })
519
519
 
520
+ test('a pull 500 cannot let a timed-out socket construction open on the abandoned attempt', async () => {
521
+ vi.useFakeTimers()
522
+ const lifecycle: HttpPullLifecycleEvent[] = []
523
+ let pullCount = 0
524
+ const fetch = vi.fn(async (input: RequestInfo | URL, init?: RequestInit) => {
525
+ const request = recordRequest(input, init)
526
+ pullCount++
527
+ if (pullCount === 1) {
528
+ return jsonResponse({ error: 'injected pull outage' }, { status: 500 })
529
+ }
530
+ return jsonResponse({ cookie: request.body.cookie, unchanged: true })
531
+ })
532
+ const transport = installHttpPullTransport({
533
+ origin: ORIGIN,
534
+ fetch,
535
+ lifecycle: (event) => lifecycle.push(event),
536
+ })
537
+ transports.push(transport)
538
+ const first = openRawSocketWithMessages({ wsid: 'before-pull-500' })
539
+ await vi.advanceTimersByTimeAsync(1)
540
+ expect(first.socket.readyState).toBe(first.socket.CLOSED)
541
+
542
+ let delayedOpened = false
543
+ let delayedClosed = 0
544
+ const delayed = openRawSocketWithMessages({
545
+ wsid: 'delayed-reconnect',
546
+ attemptStartedAt: performance.now() - 10_001,
547
+ })
548
+ delayed.socket.addEventListener('open', () => {
549
+ delayedOpened = true
550
+ })
551
+ delayed.socket.addEventListener('close', () => {
552
+ delayedClosed++
553
+ })
554
+ await vi.advanceTimersByTimeAsync(1)
555
+
556
+ expect(delayedOpened).toBe(false)
557
+ expect(delayedClosed).toBe(1)
558
+ expect(lifecycle.filter((event) => event.type === 'open')).toHaveLength(1)
559
+ const aborted = lifecycle.find((event) => event.type === 'aborted')
560
+ expect(aborted).toMatchObject({
561
+ pageID: transport.pageID,
562
+ transportID: transport.transportID,
563
+ zeroInstanceID: `${transport.pageID}:zero:c1`,
564
+ clientID: 'c1',
565
+ clientGroupID: 'cg1',
566
+ connectionAttemptID: `${transport.pageID}:zero:c1:attempt:delayed-reconnect`,
567
+ socketID: `${transport.transportID}:socket:2`,
568
+ wsid: 'delayed-reconnect',
569
+ generation: 2,
570
+ activeGeneration: 2,
571
+ code: 1000,
572
+ })
573
+ expect(aborted?.attemptAgeMs).toBeGreaterThanOrEqual(10_000)
574
+ expect(
575
+ lifecycle.filter(
576
+ (event) =>
577
+ event.generation === 2 &&
578
+ (event.type === 'aborted' ||
579
+ event.type === 'close' ||
580
+ event.type === 'superseded'),
581
+ ),
582
+ ).toHaveLength(1)
583
+ })
584
+
520
585
  test('a replacement socket supersedes stale open and connected events for the same client', async () => {
521
586
  vi.useFakeTimers()
522
587
  const lifecycle: HttpPullLifecycleEvent[] = []
@@ -557,8 +622,22 @@ describe('zero-http transport', () => {
557
622
  ]),
558
623
  ).toEqual([[2, 2, 'current']])
559
624
  expect(lifecycle).toContainEqual(
560
- expect.objectContaining({ type: 'superseded', generation: 1, wsid: 'stale' }),
625
+ expect.objectContaining({
626
+ type: 'superseded',
627
+ generation: 1,
628
+ activeGeneration: 2,
629
+ wsid: 'stale',
630
+ }),
561
631
  )
632
+ expect(
633
+ lifecycle.filter(
634
+ (event) =>
635
+ event.generation === 1 &&
636
+ (event.type === 'aborted' ||
637
+ event.type === 'close' ||
638
+ event.type === 'superseded'),
639
+ ),
640
+ ).toHaveLength(1)
562
641
  expect(errors).toEqual([])
563
642
  })
564
643
 
@@ -589,12 +668,18 @@ describe('zero-http transport', () => {
589
668
  globalThis.WebSocket = previous
590
669
  })
591
670
 
592
- test('ensureHttpPullTransport installs once per origin', () => {
593
- // unique origin: the ensure registry is module-global and page-lifetime
671
+ test('ensureHttpPullTransport installs once per origin across module evaluation', async () => {
672
+ // unique origin: the ensure registry is page-global and page-lifetime
594
673
  const origin = 'http://127.0.0.1:65501'
595
674
  const first = ensureHttpPullTransport({ origin, fetch: vi.fn() })
596
- const second = ensureHttpPullTransport({ origin, fetch: vi.fn() })
675
+ vi.resetModules()
676
+ const reloaded = await import('../httpPullTransport')
677
+ const second = reloaded.ensureHttpPullTransport({ origin, fetch: vi.fn() })
597
678
  expect(second).toBe(first)
679
+ expect(first.pageID).toMatch(/^page-/)
680
+ expect(first.transportID).toMatch(
681
+ new RegExp(`^${first.pageID}:transport:[1-9][0-9]*$`),
682
+ )
598
683
  first.uninstall()
599
684
  })
600
685
 
@@ -771,6 +856,7 @@ function openRawSocketWithMessages(opts?: {
771
856
  authToken?: string
772
857
  desiredQueriesPatch?: unknown[]
773
858
  wsid?: string
859
+ attemptStartedAt?: number
774
860
  }) {
775
861
  const url = new URL(`${ORIGIN}/sync/v51/connect`)
776
862
  url.protocol = 'wss:'
@@ -780,6 +866,9 @@ function openRawSocketWithMessages(opts?: {
780
866
  url.searchParams.set('baseCookie', '')
781
867
  url.searchParams.set('lmid', '0')
782
868
  url.searchParams.set('wsid', opts?.wsid ?? 'ws-test')
869
+ if (opts?.attemptStartedAt !== undefined) {
870
+ url.searchParams.set('ts', String(opts.attemptStartedAt))
871
+ }
783
872
  const messages: Array<[string, any]> = []
784
873
  const socket = new WebSocket(
785
874
  url,