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
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __copyProps = (to, from, except, desc) => {
|
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
9
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
10
|
+
get: () => from[key],
|
|
11
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
22
|
+
value: mod,
|
|
23
|
+
enumerable: true
|
|
24
|
+
}) : target, mod));
|
|
1
25
|
var import_zero = require("@rocicorp/zero");
|
|
2
26
|
var import_vitest = require("vitest");
|
|
3
27
|
var import_fixtureSchema = require("./fixtureSchema.cjs");
|
|
@@ -515,6 +539,69 @@ let storageID = 0;
|
|
|
515
539
|
args
|
|
516
540
|
}) => args.some(arg => String(arg).includes("connect start time is undefined")))).toBe(false);
|
|
517
541
|
});
|
|
542
|
+
(0, import_vitest.test)("a pull 500 cannot let a timed-out socket construction open on the abandoned attempt", async () => {
|
|
543
|
+
import_vitest.vi.useFakeTimers();
|
|
544
|
+
const lifecycle = [];
|
|
545
|
+
let pullCount = 0;
|
|
546
|
+
const fetch = import_vitest.vi.fn(async (input, init) => {
|
|
547
|
+
const request = recordRequest(input, init);
|
|
548
|
+
pullCount++;
|
|
549
|
+
if (pullCount === 1) {
|
|
550
|
+
return jsonResponse({
|
|
551
|
+
error: "injected pull outage"
|
|
552
|
+
}, {
|
|
553
|
+
status: 500
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
return jsonResponse({
|
|
557
|
+
cookie: request.body.cookie,
|
|
558
|
+
unchanged: true
|
|
559
|
+
});
|
|
560
|
+
});
|
|
561
|
+
const transport = (0, import_httpPullTransport.installHttpPullTransport)({
|
|
562
|
+
origin: ORIGIN,
|
|
563
|
+
fetch,
|
|
564
|
+
lifecycle: event => lifecycle.push(event)
|
|
565
|
+
});
|
|
566
|
+
transports.push(transport);
|
|
567
|
+
const first = openRawSocketWithMessages({
|
|
568
|
+
wsid: "before-pull-500"
|
|
569
|
+
});
|
|
570
|
+
await import_vitest.vi.advanceTimersByTimeAsync(1);
|
|
571
|
+
(0, import_vitest.expect)(first.socket.readyState).toBe(first.socket.CLOSED);
|
|
572
|
+
let delayedOpened = false;
|
|
573
|
+
let delayedClosed = 0;
|
|
574
|
+
const delayed = openRawSocketWithMessages({
|
|
575
|
+
wsid: "delayed-reconnect",
|
|
576
|
+
attemptStartedAt: performance.now() - 10001
|
|
577
|
+
});
|
|
578
|
+
delayed.socket.addEventListener("open", () => {
|
|
579
|
+
delayedOpened = true;
|
|
580
|
+
});
|
|
581
|
+
delayed.socket.addEventListener("close", () => {
|
|
582
|
+
delayedClosed++;
|
|
583
|
+
});
|
|
584
|
+
await import_vitest.vi.advanceTimersByTimeAsync(1);
|
|
585
|
+
(0, import_vitest.expect)(delayedOpened).toBe(false);
|
|
586
|
+
(0, import_vitest.expect)(delayedClosed).toBe(1);
|
|
587
|
+
(0, import_vitest.expect)(lifecycle.filter(event => event.type === "open")).toHaveLength(1);
|
|
588
|
+
const aborted = lifecycle.find(event => event.type === "aborted");
|
|
589
|
+
(0, import_vitest.expect)(aborted).toMatchObject({
|
|
590
|
+
pageID: transport.pageID,
|
|
591
|
+
transportID: transport.transportID,
|
|
592
|
+
zeroInstanceID: `${transport.pageID}:zero:c1`,
|
|
593
|
+
clientID: "c1",
|
|
594
|
+
clientGroupID: "cg1",
|
|
595
|
+
connectionAttemptID: `${transport.pageID}:zero:c1:attempt:delayed-reconnect`,
|
|
596
|
+
socketID: `${transport.transportID}:socket:2`,
|
|
597
|
+
wsid: "delayed-reconnect",
|
|
598
|
+
generation: 2,
|
|
599
|
+
activeGeneration: 2,
|
|
600
|
+
code: 1e3
|
|
601
|
+
});
|
|
602
|
+
(0, import_vitest.expect)(aborted?.attemptAgeMs).toBeGreaterThanOrEqual(1e4);
|
|
603
|
+
(0, import_vitest.expect)(lifecycle.filter(event => event.generation === 2 && (event.type === "aborted" || event.type === "close" || event.type === "superseded"))).toHaveLength(1);
|
|
604
|
+
});
|
|
518
605
|
(0, import_vitest.test)("a replacement socket supersedes stale open and connected events for the same client", async () => {
|
|
519
606
|
import_vitest.vi.useFakeTimers();
|
|
520
607
|
const lifecycle = [];
|
|
@@ -557,8 +644,10 @@ let storageID = 0;
|
|
|
557
644
|
(0, import_vitest.expect)(lifecycle).toContainEqual(import_vitest.expect.objectContaining({
|
|
558
645
|
type: "superseded",
|
|
559
646
|
generation: 1,
|
|
647
|
+
activeGeneration: 2,
|
|
560
648
|
wsid: "stale"
|
|
561
649
|
}));
|
|
650
|
+
(0, import_vitest.expect)(lifecycle.filter(event => event.generation === 1 && (event.type === "aborted" || event.type === "close" || event.type === "superseded"))).toHaveLength(1);
|
|
562
651
|
(0, import_vitest.expect)(errors).toEqual([]);
|
|
563
652
|
});
|
|
564
653
|
(0, import_vitest.test)("non-origin WebSockets pass through to the native implementation", () => {
|
|
@@ -585,17 +674,21 @@ let storageID = 0;
|
|
|
585
674
|
(0, import_vitest.expect)(globalThis.WebSocket).toBe(NativeWebSocket);
|
|
586
675
|
globalThis.WebSocket = previous;
|
|
587
676
|
});
|
|
588
|
-
(0, import_vitest.test)("ensureHttpPullTransport installs once per origin", () => {
|
|
677
|
+
(0, import_vitest.test)("ensureHttpPullTransport installs once per origin across module evaluation", async () => {
|
|
589
678
|
const origin = "http://127.0.0.1:65501";
|
|
590
679
|
const first = (0, import_httpPullTransport.ensureHttpPullTransport)({
|
|
591
680
|
origin,
|
|
592
681
|
fetch: import_vitest.vi.fn()
|
|
593
682
|
});
|
|
594
|
-
|
|
683
|
+
import_vitest.vi.resetModules();
|
|
684
|
+
const reloaded = await import("../httpPullTransport");
|
|
685
|
+
const second = reloaded.ensureHttpPullTransport({
|
|
595
686
|
origin,
|
|
596
687
|
fetch: import_vitest.vi.fn()
|
|
597
688
|
});
|
|
598
689
|
(0, import_vitest.expect)(second).toBe(first);
|
|
690
|
+
(0, import_vitest.expect)(first.pageID).toMatch(/^page-/);
|
|
691
|
+
(0, import_vitest.expect)(first.transportID).toMatch(new RegExp(`^${first.pageID}:transport:[1-9][0-9]*$`));
|
|
599
692
|
first.uninstall();
|
|
600
693
|
});
|
|
601
694
|
(0, import_vitest.test)("push responses are filtered to this client \u2014 foreign (recovery) results are dropped", async () => {
|
|
@@ -743,6 +836,9 @@ function openRawSocketWithMessages(opts) {
|
|
|
743
836
|
url.searchParams.set("baseCookie", "");
|
|
744
837
|
url.searchParams.set("lmid", "0");
|
|
745
838
|
url.searchParams.set("wsid", opts?.wsid ?? "ws-test");
|
|
839
|
+
if (opts?.attemptStartedAt !== void 0) {
|
|
840
|
+
url.searchParams.set("ts", String(opts.attemptStartedAt));
|
|
841
|
+
}
|
|
746
842
|
const messages = [];
|
|
747
843
|
const socket = new WebSocket(url, encodeSecProtocol(["initConnection", {
|
|
748
844
|
desiredQueriesPatch: opts?.desiredQueriesPatch ?? []
|
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: () => from[key],
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
24
|
+
value: mod,
|
|
25
|
+
enumerable: true
|
|
26
|
+
}) : target, mod));
|
|
3
27
|
var import_zero = require("@rocicorp/zero");
|
|
4
28
|
var import_vitest = require("vitest");
|
|
5
29
|
var import_fixtureSchema = require("./fixtureSchema.native.js");
|
|
@@ -620,6 +644,77 @@ var storageID = 0;
|
|
|
620
644
|
});
|
|
621
645
|
})).toBe(false);
|
|
622
646
|
});
|
|
647
|
+
(0, import_vitest.test)("a pull 500 cannot let a timed-out socket construction open on the abandoned attempt", async function () {
|
|
648
|
+
import_vitest.vi.useFakeTimers();
|
|
649
|
+
var lifecycle = [];
|
|
650
|
+
var pullCount = 0;
|
|
651
|
+
var fetch = import_vitest.vi.fn(async function (input, init) {
|
|
652
|
+
var request = recordRequest(input, init);
|
|
653
|
+
pullCount++;
|
|
654
|
+
if (pullCount === 1) {
|
|
655
|
+
return jsonResponse({
|
|
656
|
+
error: "injected pull outage"
|
|
657
|
+
}, {
|
|
658
|
+
status: 500
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
return jsonResponse({
|
|
662
|
+
cookie: request.body.cookie,
|
|
663
|
+
unchanged: true
|
|
664
|
+
});
|
|
665
|
+
});
|
|
666
|
+
var transport = (0, import_httpPullTransport.installHttpPullTransport)({
|
|
667
|
+
origin: ORIGIN,
|
|
668
|
+
fetch,
|
|
669
|
+
lifecycle: function (event) {
|
|
670
|
+
return lifecycle.push(event);
|
|
671
|
+
}
|
|
672
|
+
});
|
|
673
|
+
transports.push(transport);
|
|
674
|
+
var first = openRawSocketWithMessages({
|
|
675
|
+
wsid: "before-pull-500"
|
|
676
|
+
});
|
|
677
|
+
await import_vitest.vi.advanceTimersByTimeAsync(1);
|
|
678
|
+
(0, import_vitest.expect)(first.socket.readyState).toBe(first.socket.CLOSED);
|
|
679
|
+
var delayedOpened = false;
|
|
680
|
+
var delayedClosed = 0;
|
|
681
|
+
var delayed = openRawSocketWithMessages({
|
|
682
|
+
wsid: "delayed-reconnect",
|
|
683
|
+
attemptStartedAt: performance.now() - 10001
|
|
684
|
+
});
|
|
685
|
+
delayed.socket.addEventListener("open", function () {
|
|
686
|
+
delayedOpened = true;
|
|
687
|
+
});
|
|
688
|
+
delayed.socket.addEventListener("close", function () {
|
|
689
|
+
delayedClosed++;
|
|
690
|
+
});
|
|
691
|
+
await import_vitest.vi.advanceTimersByTimeAsync(1);
|
|
692
|
+
(0, import_vitest.expect)(delayedOpened).toBe(false);
|
|
693
|
+
(0, import_vitest.expect)(delayedClosed).toBe(1);
|
|
694
|
+
(0, import_vitest.expect)(lifecycle.filter(function (event) {
|
|
695
|
+
return event.type === "open";
|
|
696
|
+
})).toHaveLength(1);
|
|
697
|
+
var aborted = lifecycle.find(function (event) {
|
|
698
|
+
return event.type === "aborted";
|
|
699
|
+
});
|
|
700
|
+
(0, import_vitest.expect)(aborted).toMatchObject({
|
|
701
|
+
pageID: transport.pageID,
|
|
702
|
+
transportID: transport.transportID,
|
|
703
|
+
zeroInstanceID: `${transport.pageID}:zero:c1`,
|
|
704
|
+
clientID: "c1",
|
|
705
|
+
clientGroupID: "cg1",
|
|
706
|
+
connectionAttemptID: `${transport.pageID}:zero:c1:attempt:delayed-reconnect`,
|
|
707
|
+
socketID: `${transport.transportID}:socket:2`,
|
|
708
|
+
wsid: "delayed-reconnect",
|
|
709
|
+
generation: 2,
|
|
710
|
+
activeGeneration: 2,
|
|
711
|
+
code: 1e3
|
|
712
|
+
});
|
|
713
|
+
(0, import_vitest.expect)(aborted === null || aborted === void 0 ? void 0 : aborted.attemptAgeMs).toBeGreaterThanOrEqual(1e4);
|
|
714
|
+
(0, import_vitest.expect)(lifecycle.filter(function (event) {
|
|
715
|
+
return event.generation === 2 && (event.type === "aborted" || event.type === "close" || event.type === "superseded");
|
|
716
|
+
})).toHaveLength(1);
|
|
717
|
+
});
|
|
623
718
|
(0, import_vitest.test)("a replacement socket supersedes stale open and connected events for the same client", async function () {
|
|
624
719
|
import_vitest.vi.useFakeTimers();
|
|
625
720
|
var lifecycle = [];
|
|
@@ -671,8 +766,12 @@ var storageID = 0;
|
|
|
671
766
|
(0, import_vitest.expect)(lifecycle).toContainEqual(import_vitest.expect.objectContaining({
|
|
672
767
|
type: "superseded",
|
|
673
768
|
generation: 1,
|
|
769
|
+
activeGeneration: 2,
|
|
674
770
|
wsid: "stale"
|
|
675
771
|
}));
|
|
772
|
+
(0, import_vitest.expect)(lifecycle.filter(function (event) {
|
|
773
|
+
return event.generation === 1 && (event.type === "aborted" || event.type === "close" || event.type === "superseded");
|
|
774
|
+
})).toHaveLength(1);
|
|
676
775
|
(0, import_vitest.expect)(errors).toEqual([]);
|
|
677
776
|
});
|
|
678
777
|
(0, import_vitest.test)("non-origin WebSockets pass through to the native implementation", function () {
|
|
@@ -702,17 +801,21 @@ var storageID = 0;
|
|
|
702
801
|
(0, import_vitest.expect)(globalThis.WebSocket).toBe(NativeWebSocket);
|
|
703
802
|
globalThis.WebSocket = previous;
|
|
704
803
|
});
|
|
705
|
-
(0, import_vitest.test)("ensureHttpPullTransport installs once per origin", function () {
|
|
804
|
+
(0, import_vitest.test)("ensureHttpPullTransport installs once per origin across module evaluation", async function () {
|
|
706
805
|
var origin = "http://127.0.0.1:65501";
|
|
707
806
|
var first = (0, import_httpPullTransport.ensureHttpPullTransport)({
|
|
708
807
|
origin,
|
|
709
808
|
fetch: import_vitest.vi.fn()
|
|
710
809
|
});
|
|
711
|
-
|
|
810
|
+
import_vitest.vi.resetModules();
|
|
811
|
+
var reloaded = await import("../httpPullTransport");
|
|
812
|
+
var second = reloaded.ensureHttpPullTransport({
|
|
712
813
|
origin,
|
|
713
814
|
fetch: import_vitest.vi.fn()
|
|
714
815
|
});
|
|
715
816
|
(0, import_vitest.expect)(second).toBe(first);
|
|
817
|
+
(0, import_vitest.expect)(first.pageID).toMatch(/^page-/);
|
|
818
|
+
(0, import_vitest.expect)(first.transportID).toMatch(new RegExp(`^${first.pageID}:transport:[1-9][0-9]*$`));
|
|
716
819
|
first.uninstall();
|
|
717
820
|
});
|
|
718
821
|
(0, import_vitest.test)("push responses are filtered to this client \u2014 foreign (recovery) results are dropped", async function () {
|
|
@@ -874,6 +977,9 @@ function openRawSocketWithMessages(opts) {
|
|
|
874
977
|
url.searchParams.set("lmid", "0");
|
|
875
978
|
var _opts_wsid;
|
|
876
979
|
url.searchParams.set("wsid", (_opts_wsid = opts === null || opts === void 0 ? void 0 : opts.wsid) !== null && _opts_wsid !== void 0 ? _opts_wsid : "ws-test");
|
|
980
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.attemptStartedAt) !== void 0) {
|
|
981
|
+
url.searchParams.set("ts", String(opts.attemptStartedAt));
|
|
982
|
+
}
|
|
877
983
|
var messages = [];
|
|
878
984
|
var _opts_desiredQueriesPatch, _opts_authToken;
|
|
879
985
|
var socket = new WebSocket(url, encodeSecProtocol(["initConnection", {
|
|
@@ -1 +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_find","endsWith","installHttpPullTransport","origin","pullOrigin","pushOrigin","some","url","_requests_at","socket","openRawSocketWithMessages","authToken","send","JSON","stringify","auth","pull","at","firstPushStarted","defer","releaseFirstPush","pushIDs","mutationID","resolve","promise","map","messages","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","lifecycle","zeroLogs","failPull","failPush","event","logSink","log","_level","context","_len","arguments","Array","_key","catch","opens","param","generation","activeGeneration","arg","includes","useFakeTimers","connectStart","Date","now","errors","attachStockLifecycle","addEventListener","stale","wsid","advanceTimersByTimeAsync","toContainEqual","objectContaining","previous","globalThis","WebSocket","NativeWebSocket","NativeWebSocket2","protocols","toBeInstanceOf","first","ensureHttpPullTransport","second","details"],"sources":["../../../src/httpPull/transport.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
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_find","endsWith","installHttpPullTransport","origin","pullOrigin","pushOrigin","some","url","_requests_at","socket","openRawSocketWithMessages","authToken","send","JSON","stringify","auth","pull","at","firstPushStarted","defer","releaseFirstPush","pushIDs","mutationID","resolve","promise","map","messages","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","lifecycle","zeroLogs","failPull","failPush","event","logSink","log","_level","context","_len","arguments","Array","_key","catch","opens","param","generation","activeGeneration","arg","includes","useFakeTimers","pullCount","first","wsid","advanceTimersByTimeAsync","readyState","CLOSED","delayedOpened","delayedClosed","delayed","attemptStartedAt","performance","now","addEventListener","aborted","pageID","transportID","zeroInstanceID","connectionAttemptID","socketID","code","attemptAgeMs","toBeGreaterThanOrEqual","connectStart","Date","errors","attachStockLifecycle","stale","toContainEqual","objectContaining","previous","globalThis","WebSocket","NativeWebSocket","NativeWebSocket2","protocols","toBeInstanceOf","ensureHttpPullTransport","resetModules","reloaded","second","toMatch","RegExp","details"],"sources":["../../../src/httpPull/transport.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -27,13 +27,37 @@ __export(httpPullTransport_exports, {
|
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(httpPullTransport_exports);
|
|
29
29
|
const COOKIE_WIDTH = 20;
|
|
30
|
+
const ZERO_CONNECT_TIMEOUT_MS = 1e4;
|
|
31
|
+
const HTTP_PULL_PAGE_REGISTRY = /* @__PURE__ */Symbol.for("on-zero.http-pull.page-registry");
|
|
32
|
+
function isHttpPullPageRegistry(value) {
|
|
33
|
+
return typeof value === "object" && value !== null && "pageID" in value && typeof value.pageID === "string" && "nextTransportGeneration" in value && typeof value.nextTransportGeneration === "number" && "transportsByOrigin" in value && value.transportsByOrigin instanceof Map;
|
|
34
|
+
}
|
|
35
|
+
function getHttpPullPageRegistry() {
|
|
36
|
+
const existing = Reflect.get(globalThis, HTTP_PULL_PAGE_REGISTRY);
|
|
37
|
+
if (isHttpPullPageRegistry(existing)) return existing;
|
|
38
|
+
const registry = {
|
|
39
|
+
pageID: `page-${Date.now().toString(36)}`,
|
|
40
|
+
nextTransportGeneration: 0,
|
|
41
|
+
transportsByOrigin: /* @__PURE__ */new Map()
|
|
42
|
+
};
|
|
43
|
+
Reflect.set(globalThis, HTTP_PULL_PAGE_REGISTRY, registry);
|
|
44
|
+
return registry;
|
|
45
|
+
}
|
|
46
|
+
function logHttpPullLifecycle(event) {
|
|
47
|
+
if (process.env.NODE_ENV === "test") return;
|
|
48
|
+
console.info(`[on-zero:http-pull] ${JSON.stringify(event)}`);
|
|
49
|
+
}
|
|
30
50
|
function installHttpPullTransport(opts) {
|
|
51
|
+
const pageRegistry = getHttpPullPageRegistry();
|
|
52
|
+
const transportID = `${pageRegistry.pageID}:transport:${++pageRegistry.nextTransportGeneration}`;
|
|
31
53
|
const previousWebSocket = globalThis.WebSocket;
|
|
32
54
|
const fetchImpl = opts.fetch ?? globalThis.fetch;
|
|
33
55
|
if (!fetchImpl) {
|
|
34
56
|
throw new Error("installHttpPullTransport requires a fetch implementation");
|
|
35
57
|
}
|
|
36
58
|
const state = {
|
|
59
|
+
pageID: pageRegistry.pageID,
|
|
60
|
+
transportID,
|
|
37
61
|
origin: new URL(opts.origin),
|
|
38
62
|
originString: trimTrailingSlash(new URL(opts.origin).toString()),
|
|
39
63
|
pullOriginString: trimTrailingSlash(new URL(opts.pullOrigin ?? opts.origin).toString()),
|
|
@@ -53,7 +77,7 @@ function installHttpPullTransport(opts) {
|
|
|
53
77
|
nextSocketGeneration: 0,
|
|
54
78
|
activeSocketGenerationByClient: /* @__PURE__ */new Map(),
|
|
55
79
|
activeSocketByClient: /* @__PURE__ */new Map(),
|
|
56
|
-
lifecycle: opts.lifecycle
|
|
80
|
+
lifecycle: opts.lifecycle ?? logHttpPullLifecycle
|
|
57
81
|
};
|
|
58
82
|
const Shim = class {
|
|
59
83
|
static CONNECTING = 0;
|
|
@@ -71,27 +95,34 @@ function installHttpPullTransport(opts) {
|
|
|
71
95
|
}
|
|
72
96
|
};
|
|
73
97
|
globalThis.WebSocket = Shim;
|
|
74
|
-
|
|
98
|
+
const transport = {
|
|
75
99
|
pull: async () => {
|
|
76
100
|
await Promise.all([...state.sockets].map(socket => socket.pull()));
|
|
77
101
|
},
|
|
78
102
|
get connections() {
|
|
79
103
|
return state.sockets.size;
|
|
80
104
|
},
|
|
105
|
+
pageID: state.pageID,
|
|
106
|
+
transportID: state.transportID,
|
|
81
107
|
uninstall: () => {
|
|
82
108
|
if (globalThis.WebSocket === Shim) {
|
|
83
109
|
globalThis.WebSocket = previousWebSocket;
|
|
84
110
|
}
|
|
111
|
+
const registered = pageRegistry.transportsByOrigin.get(state.originString);
|
|
112
|
+
if (registered === transport) {
|
|
113
|
+
pageRegistry.transportsByOrigin.delete(state.originString);
|
|
114
|
+
}
|
|
85
115
|
}
|
|
86
116
|
};
|
|
117
|
+
return transport;
|
|
87
118
|
}
|
|
88
|
-
const transportsByOrigin = /* @__PURE__ */new Map();
|
|
89
119
|
function ensureHttpPullTransport(opts) {
|
|
120
|
+
const pageRegistry = getHttpPullPageRegistry();
|
|
90
121
|
const key = trimTrailingSlash(new URL(opts.origin).toString());
|
|
91
|
-
const existing = transportsByOrigin.get(key);
|
|
122
|
+
const existing = pageRegistry.transportsByOrigin.get(key);
|
|
92
123
|
if (existing) return existing;
|
|
93
124
|
const transport = installHttpPullTransport(opts);
|
|
94
|
-
transportsByOrigin.set(key, transport);
|
|
125
|
+
pageRegistry.transportsByOrigin.set(key, transport);
|
|
95
126
|
return transport;
|
|
96
127
|
}
|
|
97
128
|
class ZeroHttpSocket {
|
|
@@ -103,9 +134,16 @@ class ZeroHttpSocket {
|
|
|
103
134
|
this.clientGroupID = this.connectURL.searchParams.get("clientGroupID") ?? "";
|
|
104
135
|
this.wsid = this.connectURL.searchParams.get("wsid") ?? `zero-http-${Date.now()}`;
|
|
105
136
|
this.generation = ++this.state.nextSocketGeneration;
|
|
106
|
-
this.state.
|
|
137
|
+
this.zeroInstanceID = `${this.state.pageID}:zero:${this.clientID}`;
|
|
138
|
+
this.connectionAttemptID = `${this.zeroInstanceID}:attempt:${this.wsid}`;
|
|
139
|
+
this.socketID = `${this.state.transportID}:socket:${this.generation}`;
|
|
140
|
+
const attemptStartedAtParam = this.connectURL.searchParams.get("ts");
|
|
141
|
+
const attemptStartedAt = Number(attemptStartedAtParam);
|
|
142
|
+
this.attemptStartedAt = attemptStartedAtParam !== null && Number.isFinite(attemptStartedAt) ? attemptStartedAt : void 0;
|
|
143
|
+
const previousSocket = this.state.activeSocketByClient.get(this.clientID);
|
|
107
144
|
this.state.activeSocketGenerationByClient.set(this.clientID, this.generation);
|
|
108
145
|
this.state.activeSocketByClient.set(this.clientID, this);
|
|
146
|
+
previousSocket?.supersede();
|
|
109
147
|
this.emitLifecycle("created");
|
|
110
148
|
const baseCookie = this.connectURL.searchParams.get("baseCookie");
|
|
111
149
|
this.cookie = baseCookie ? baseCookie : null;
|
|
@@ -153,6 +191,11 @@ class ZeroHttpSocket {
|
|
|
153
191
|
wakeSocket;
|
|
154
192
|
wakeReconnectTimer;
|
|
155
193
|
generation;
|
|
194
|
+
zeroInstanceID;
|
|
195
|
+
connectionAttemptID;
|
|
196
|
+
socketID;
|
|
197
|
+
attemptStartedAt;
|
|
198
|
+
settled = false;
|
|
156
199
|
addEventListener(type, listener) {
|
|
157
200
|
if (listener) {
|
|
158
201
|
this.listeners[type]?.add(listener);
|
|
@@ -199,20 +242,10 @@ class ZeroHttpSocket {
|
|
|
199
242
|
}
|
|
200
243
|
}
|
|
201
244
|
close(code = 1e3, reason = "") {
|
|
202
|
-
if (this.
|
|
203
|
-
if (this.openTimer) clearTimeout(this.openTimer);
|
|
204
|
-
if (this.pullTimer) clearInterval(this.pullTimer);
|
|
205
|
-
this.closeWakeChannel();
|
|
206
|
-
this.readyState = this.CLOSED;
|
|
207
|
-
this.state.sockets.delete(this);
|
|
208
|
-
if (this.state.activeSocketByClient.get(this.clientID) === this) {
|
|
209
|
-
this.state.activeSocketByClient.delete(this.clientID);
|
|
210
|
-
this.state.activeSocketGenerationByClient.delete(this.clientID);
|
|
211
|
-
}
|
|
212
|
-
this.emitLifecycle("close", {
|
|
245
|
+
if (!this.settle("close", {
|
|
213
246
|
code,
|
|
214
247
|
reason
|
|
215
|
-
});
|
|
248
|
+
})) return;
|
|
216
249
|
this.emit("close", {
|
|
217
250
|
code,
|
|
218
251
|
reason,
|
|
@@ -242,6 +275,20 @@ class ZeroHttpSocket {
|
|
|
242
275
|
}
|
|
243
276
|
open() {
|
|
244
277
|
if (this.readyState !== this.CONNECTING) return;
|
|
278
|
+
const attemptAgeMs = this.getAttemptAgeMs();
|
|
279
|
+
if (attemptAgeMs !== void 0 && attemptAgeMs >= ZERO_CONNECT_TIMEOUT_MS) {
|
|
280
|
+
const reason = `zero-http connection attempt ${this.wsid} expired after ${Math.round(attemptAgeMs)}ms before socket construction completed`;
|
|
281
|
+
if (!this.settle("aborted", {
|
|
282
|
+
code: 1e3,
|
|
283
|
+
reason
|
|
284
|
+
})) return;
|
|
285
|
+
this.emit("close", {
|
|
286
|
+
code: 1e3,
|
|
287
|
+
reason,
|
|
288
|
+
wasClean: true
|
|
289
|
+
});
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
245
292
|
this.readyState = this.OPEN;
|
|
246
293
|
this.emitLifecycle("open");
|
|
247
294
|
this.emit("open", {});
|
|
@@ -532,21 +579,42 @@ class ZeroHttpSocket {
|
|
|
532
579
|
}
|
|
533
580
|
}
|
|
534
581
|
supersede() {
|
|
535
|
-
|
|
582
|
+
this.settle("superseded");
|
|
583
|
+
}
|
|
584
|
+
settle(type, detail = {}) {
|
|
585
|
+
if (this.settled) return false;
|
|
586
|
+
this.settled = true;
|
|
536
587
|
if (this.openTimer !== void 0) clearTimeout(this.openTimer);
|
|
537
588
|
if (this.pullTimer !== void 0) clearInterval(this.pullTimer);
|
|
538
589
|
this.closeWakeChannel();
|
|
539
590
|
this.readyState = this.CLOSED;
|
|
540
591
|
this.state.sockets.delete(this);
|
|
541
|
-
this.
|
|
592
|
+
if (this.state.activeSocketByClient.get(this.clientID) === this) {
|
|
593
|
+
this.state.activeSocketByClient.delete(this.clientID);
|
|
594
|
+
this.state.activeSocketGenerationByClient.delete(this.clientID);
|
|
595
|
+
}
|
|
596
|
+
this.emitLifecycle(type, detail);
|
|
597
|
+
return true;
|
|
598
|
+
}
|
|
599
|
+
getAttemptAgeMs() {
|
|
600
|
+
return this.attemptStartedAt === void 0 ? void 0 : performance.now() - this.attemptStartedAt;
|
|
542
601
|
}
|
|
543
602
|
emitLifecycle(type, detail = {}) {
|
|
544
603
|
this.state.lifecycle?.({
|
|
545
604
|
type,
|
|
605
|
+
pageID: this.state.pageID,
|
|
606
|
+
transportID: this.state.transportID,
|
|
607
|
+
zeroInstanceID: this.zeroInstanceID,
|
|
608
|
+
clientGroupID: this.clientGroupID,
|
|
609
|
+
connectionAttemptID: this.connectionAttemptID,
|
|
610
|
+
socketID: this.socketID,
|
|
546
611
|
generation: this.generation,
|
|
547
612
|
activeGeneration: this.state.activeSocketGenerationByClient.get(this.clientID) ?? this.generation,
|
|
548
613
|
clientID: this.clientID,
|
|
549
614
|
wsid: this.wsid,
|
|
615
|
+
timestamp: Date.now(),
|
|
616
|
+
attemptStartedAt: this.attemptStartedAt,
|
|
617
|
+
attemptAgeMs: this.getAttemptAgeMs(),
|
|
550
618
|
...detail
|
|
551
619
|
});
|
|
552
620
|
}
|