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.
- package/dist/cjs/httpPull/transport.test.cjs +98 -2
- package/dist/cjs/httpPull/transport.test.native.js +108 -2
- package/dist/cjs/httpPull/transport.test.native.js.map +1 -1
- package/dist/cjs/httpPullTransport.cjs +88 -20
- package/dist/cjs/httpPullTransport.native.js +96 -22
- package/dist/cjs/httpPullTransport.native.js.map +1 -1
- package/dist/esm/httpPull/transport.test.mjs +74 -2
- package/dist/esm/httpPull/transport.test.mjs.map +1 -1
- package/dist/esm/httpPull/transport.test.native.js +84 -2
- package/dist/esm/httpPull/transport.test.native.js.map +1 -1
- package/dist/esm/httpPullTransport.mjs +88 -20
- package/dist/esm/httpPullTransport.mjs.map +1 -1
- package/dist/esm/httpPullTransport.native.js +96 -22
- package/dist/esm/httpPullTransport.native.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +18 -0
- package/src/httpPull/transport.test.ts +93 -4
- package/src/httpPullTransport.ts +132 -25
- package/types/httpPullTransport.d.ts +12 -1
- package/types/httpPullTransport.d.ts.map +1 -1
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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({
|
|
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
|
|
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
|
-
|
|
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,
|