@adviser/cement 0.5.17 → 0.5.18
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/cjs/test-ws-pair.cjs +18 -9
- package/cjs/test-ws-pair.cjs.map +1 -1
- package/cjs/test-ws-pair.d.ts +14 -18
- package/cjs/test-ws-pair.d.ts.map +1 -1
- package/cjs/test-ws-pair.test.cjs +13 -7
- package/cjs/test-ws-pair.test.cjs.map +1 -1
- package/cjs/version.cjs +1 -1
- package/deno.json +1 -1
- package/esm/test-ws-pair.d.ts +14 -18
- package/esm/test-ws-pair.d.ts.map +1 -1
- package/esm/test-ws-pair.js +17 -9
- package/esm/test-ws-pair.js.map +1 -1
- package/esm/test-ws-pair.test.js +14 -8
- package/esm/test-ws-pair.test.js.map +1 -1
- package/esm/version.js +1 -1
- package/package.json +3 -1
- package/src/test-ws-pair.ts +26 -21
- package/ts/cjs/test-ws-pair.d.ts +14 -18
- package/ts/cjs/test-ws-pair.d.ts.map +1 -1
- package/ts/cjs/test-ws-pair.js +18 -9
- package/ts/cjs/test-ws-pair.js.map +1 -1
- package/ts/cjs/test-ws-pair.test.js +13 -7
- package/ts/cjs/test-ws-pair.test.js.map +1 -1
- package/ts/cjs/version.js +1 -1
- package/ts/esm/test-ws-pair.d.ts +14 -18
- package/ts/esm/test-ws-pair.d.ts.map +1 -1
- package/ts/esm/test-ws-pair.js +17 -9
- package/ts/esm/test-ws-pair.js.map +1 -1
- package/ts/esm/test-ws-pair.test.js +14 -8
- package/ts/esm/test-ws-pair.test.js.map +1 -1
- package/ts/esm/version.js +1 -1
package/cjs/test-ws-pair.cjs
CHANGED
|
@@ -1,35 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TestWSPair = void 0;
|
|
3
|
+
exports.TestWSPair = exports.TestWSConnection = void 0;
|
|
4
4
|
const index_js_1 = require("./index.cjs");
|
|
5
5
|
class TestWSConnection {
|
|
6
6
|
#other;
|
|
7
7
|
side;
|
|
8
|
-
|
|
8
|
+
#onopen;
|
|
9
|
+
get onopen() {
|
|
10
|
+
return this.#onopen;
|
|
11
|
+
}
|
|
12
|
+
set onopen(fn) {
|
|
13
|
+
this.#onopen = fn;
|
|
14
|
+
fn();
|
|
15
|
+
}
|
|
16
|
+
onmessage = (_e) => {
|
|
9
17
|
throw new Error("OnMessage Method not implemented.");
|
|
10
18
|
};
|
|
11
|
-
|
|
19
|
+
onerror = (_e) => {
|
|
12
20
|
throw new Error("OnError Method not implemented.");
|
|
13
21
|
};
|
|
14
|
-
|
|
22
|
+
onclose = (_e) => {
|
|
15
23
|
throw new Error("OnClose Method not implemented.");
|
|
16
24
|
};
|
|
17
|
-
|
|
18
|
-
constructor(side,
|
|
25
|
+
transfers;
|
|
26
|
+
constructor(side, transfers) {
|
|
19
27
|
this.side = side;
|
|
20
|
-
this.
|
|
28
|
+
this.transfers = transfers;
|
|
21
29
|
}
|
|
22
30
|
connect(other) {
|
|
23
31
|
this.#other = other;
|
|
24
32
|
}
|
|
25
33
|
send = (data) => {
|
|
26
34
|
const uint8 = (0, index_js_1.to_uint8)(data);
|
|
27
|
-
this.
|
|
28
|
-
this.#other.
|
|
35
|
+
this.transfers?.push({ from: this.side, data: uint8 });
|
|
36
|
+
this.#other.onmessage({
|
|
29
37
|
data: uint8,
|
|
30
38
|
});
|
|
31
39
|
};
|
|
32
40
|
}
|
|
41
|
+
exports.TestWSConnection = TestWSConnection;
|
|
33
42
|
class TestWSPair {
|
|
34
43
|
msgs = [];
|
|
35
44
|
p1 = new TestWSConnection("p1", this.msgs);
|
package/cjs/test-ws-pair.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":";;;AAAA,yCAAyD;
|
|
1
|
+
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":";;;AAAA,yCAAyD;AAQzD;IACE,MAAM,CAAwB;IACrB,IAAI,CAAS;IAEtB,OAAO,CAAc;IAErB,IAAI,MAAM,GAAe;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACrB;IACD,IAAI,MAAM,CAAC,EAAc,EAAE;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,EAAE,EAAE,CAAC;IAAA,CACN;IACD,SAAS,GAAgB,CAAI,EAAmB,EAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAAA,CACtD,CAAC;IACF,OAAO,GAAc,CAAC,EAAS,EAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IACF,OAAO,GAAc,CAAC,EAAc,EAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IAEO,SAAS,CAAwC;IAE1D,YAAY,IAAY,EAAE,SAAgD,EAAE;QAC1E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAAA,CAC5B;IACD,OAAO,CAAC,KAA2B,EAAQ;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAAA,CACrB;IAED,IAAI,GAAG,CAAC,IAAuB,EAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,KAAK;SAC2B,CAAC,CAAC;IAAA,CAC3C,CAAC;CACH;;AAED;IACW,IAAI,GAAyC,EAAE,CAAC;IACzC,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAErF,MAAM,CAAC,MAAM,GAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IAAA,CACb;IAED,cAAsB;IAAC,CAEtB;CACF"}
|
package/cjs/test-ws-pair.d.ts
CHANGED
|
@@ -1,39 +1,35 @@
|
|
|
1
1
|
import { CoerceBinaryInput } from "./index.js";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
onMessage<T>(e: MessageEvent<T>): void;
|
|
5
|
-
onClose(e: CloseEvent): void;
|
|
6
|
-
send(data: CoerceBinaryInput): void;
|
|
7
|
-
}
|
|
8
|
-
export type OnErrorFn = (e: ErrorEvent) => void;
|
|
2
|
+
export type WebSocketSimple = Pick<WebSocket, "onerror" | "onmessage" | "onclose" | "send" | "onopen">;
|
|
3
|
+
export type OnErrorFn = (e: Event) => void;
|
|
9
4
|
export type OnMessageFn = <T = unknown>(e: MessageEvent<T>) => void;
|
|
10
5
|
export type OnCloseFn = (e: CloseEvent) => void;
|
|
11
|
-
declare class TestWSConnection implements
|
|
6
|
+
export declare class TestWSConnection<WS extends WebSocketSimple = WebSocket> implements WebSocketSimple {
|
|
12
7
|
#private;
|
|
13
8
|
readonly side: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
get onopen(): () => void;
|
|
10
|
+
set onopen(fn: () => void);
|
|
11
|
+
onmessage: OnMessageFn;
|
|
12
|
+
onerror: OnErrorFn;
|
|
13
|
+
onclose: OnCloseFn;
|
|
14
|
+
readonly transfers?: {
|
|
18
15
|
from: string;
|
|
19
16
|
data: Uint8Array;
|
|
20
17
|
}[];
|
|
21
|
-
constructor(side: string,
|
|
18
|
+
constructor(side: string, transfers?: {
|
|
22
19
|
from: string;
|
|
23
20
|
data: Uint8Array;
|
|
24
21
|
}[]);
|
|
25
|
-
connect(other: TestWSConnection): void;
|
|
22
|
+
connect(other: TestWSConnection<WS>): void;
|
|
26
23
|
send: (data: CoerceBinaryInput) => void;
|
|
27
24
|
}
|
|
28
|
-
export declare class TestWSPair {
|
|
25
|
+
export declare class TestWSPair<WS extends WebSocketSimple = WebSocket> {
|
|
29
26
|
readonly msgs: {
|
|
30
27
|
from: string;
|
|
31
28
|
data: Uint8Array;
|
|
32
29
|
}[];
|
|
33
|
-
readonly p1: TestWSConnection
|
|
34
|
-
readonly p2: TestWSConnection
|
|
30
|
+
readonly p1: TestWSConnection<WS>;
|
|
31
|
+
readonly p2: TestWSConnection<WS>;
|
|
35
32
|
static create(): TestWSPair;
|
|
36
33
|
private constructor();
|
|
37
34
|
}
|
|
38
|
-
export {};
|
|
39
35
|
//# sourceMappingURL=test-ws-pair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AAEvG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;AAEhD,qBAAa,gBAAgB,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS,CAAE,YAAW,eAAe;;IAE9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAItB,IAAI,MAAM,IAAI,MAAM,IAAI,CAEvB;IACD,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,EAGxB;IACD,SAAS,EAAE,WAAW,CAEpB;IACF,OAAO,EAAE,SAAS,CAEhB;IACF,OAAO,EAAE,SAAS,CAEhB;IAEF,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAE1D,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,EAGzE;IACD,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAEzC;IAED,IAAI,oCAMF;CACH;AAED,qBAAa,UAAU,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS;IAC5D,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAM;IACzD,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IACrF,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IAErF,MAAM,CAAC,MAAM,IAAI,UAAU,CAK1B;IAED,OAAO,eAEN;CACF"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const test_ws_pair_js_1 = require("./test-ws-pair.cjs");
|
|
4
3
|
const vitest_1 = require("vitest");
|
|
4
|
+
const test_ws_pair_js_1 = require("./test-ws-pair.cjs");
|
|
5
5
|
(0, vitest_1.it)("should record messages from both sides in the msgs array", () => {
|
|
6
6
|
const pair = test_ws_pair_js_1.TestWSPair.create();
|
|
7
7
|
const receivedByP1 = [];
|
|
8
8
|
const receivedByP2 = [];
|
|
9
|
-
pair.p1.
|
|
9
|
+
pair.p1.onmessage = (e) => {
|
|
10
10
|
receivedByP1.push(e.data);
|
|
11
11
|
};
|
|
12
|
-
pair.p2.
|
|
12
|
+
pair.p2.onmessage = (e) => {
|
|
13
13
|
receivedByP2.push(e.data);
|
|
14
14
|
};
|
|
15
15
|
pair.p1.send(new Uint8Array([1, 2, 3]));
|
|
@@ -28,11 +28,17 @@ const vitest_1 = require("vitest");
|
|
|
28
28
|
(0, vitest_1.expect)(receivedByP1).toHaveLength(1);
|
|
29
29
|
(0, vitest_1.expect)(receivedByP1[0]).toEqual(new Uint8Array([4, 5, 6]));
|
|
30
30
|
});
|
|
31
|
+
(0, vitest_1.it)("should emit onopen events upon setting the handler", () => {
|
|
32
|
+
const pair = new test_ws_pair_js_1.TestWSConnection("p1", []);
|
|
33
|
+
pair.onopen = vitest_1.vi.fn(() => {
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.expect)(pair.onopen).toHaveBeenCalledTimes(1);
|
|
36
|
+
});
|
|
31
37
|
(0, vitest_1.it)("should handle string data via CoerceBinaryInput", () => {
|
|
32
38
|
const pair = test_ws_pair_js_1.TestWSPair.create();
|
|
33
|
-
pair.p1.
|
|
39
|
+
pair.p1.onmessage = (_e) => {
|
|
34
40
|
};
|
|
35
|
-
pair.p2.
|
|
41
|
+
pair.p2.onmessage = (_e) => {
|
|
36
42
|
};
|
|
37
43
|
pair.p1.send("hello");
|
|
38
44
|
pair.p2.send("world");
|
|
@@ -49,9 +55,9 @@ const vitest_1 = require("vitest");
|
|
|
49
55
|
(0, vitest_1.it)("should work when send method is passed without bind", () => {
|
|
50
56
|
const pair = test_ws_pair_js_1.TestWSPair.create();
|
|
51
57
|
const receivedByP2 = [];
|
|
52
|
-
pair.p1.
|
|
58
|
+
pair.p1.onmessage = (_e) => {
|
|
53
59
|
};
|
|
54
|
-
pair.p2.
|
|
60
|
+
pair.p2.onmessage = (e) => {
|
|
55
61
|
receivedByP2.push(e.data);
|
|
56
62
|
};
|
|
57
63
|
const unboundSend = pair.p1.send;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":"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"}
|
package/cjs/version.cjs
CHANGED
package/deno.json
CHANGED
package/esm/test-ws-pair.d.ts
CHANGED
|
@@ -1,39 +1,35 @@
|
|
|
1
1
|
import { CoerceBinaryInput } from "./index.js";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
onMessage<T>(e: MessageEvent<T>): void;
|
|
5
|
-
onClose(e: CloseEvent): void;
|
|
6
|
-
send(data: CoerceBinaryInput): void;
|
|
7
|
-
}
|
|
8
|
-
export type OnErrorFn = (e: ErrorEvent) => void;
|
|
2
|
+
export type WebSocketSimple = Pick<WebSocket, "onerror" | "onmessage" | "onclose" | "send" | "onopen">;
|
|
3
|
+
export type OnErrorFn = (e: Event) => void;
|
|
9
4
|
export type OnMessageFn = <T = unknown>(e: MessageEvent<T>) => void;
|
|
10
5
|
export type OnCloseFn = (e: CloseEvent) => void;
|
|
11
|
-
declare class TestWSConnection implements
|
|
6
|
+
export declare class TestWSConnection<WS extends WebSocketSimple = WebSocket> implements WebSocketSimple {
|
|
12
7
|
#private;
|
|
13
8
|
readonly side: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
get onopen(): () => void;
|
|
10
|
+
set onopen(fn: () => void);
|
|
11
|
+
onmessage: OnMessageFn;
|
|
12
|
+
onerror: OnErrorFn;
|
|
13
|
+
onclose: OnCloseFn;
|
|
14
|
+
readonly transfers?: {
|
|
18
15
|
from: string;
|
|
19
16
|
data: Uint8Array;
|
|
20
17
|
}[];
|
|
21
|
-
constructor(side: string,
|
|
18
|
+
constructor(side: string, transfers?: {
|
|
22
19
|
from: string;
|
|
23
20
|
data: Uint8Array;
|
|
24
21
|
}[]);
|
|
25
|
-
connect(other: TestWSConnection): void;
|
|
22
|
+
connect(other: TestWSConnection<WS>): void;
|
|
26
23
|
send: (data: CoerceBinaryInput) => void;
|
|
27
24
|
}
|
|
28
|
-
export declare class TestWSPair {
|
|
25
|
+
export declare class TestWSPair<WS extends WebSocketSimple = WebSocket> {
|
|
29
26
|
readonly msgs: {
|
|
30
27
|
from: string;
|
|
31
28
|
data: Uint8Array;
|
|
32
29
|
}[];
|
|
33
|
-
readonly p1: TestWSConnection
|
|
34
|
-
readonly p2: TestWSConnection
|
|
30
|
+
readonly p1: TestWSConnection<WS>;
|
|
31
|
+
readonly p2: TestWSConnection<WS>;
|
|
35
32
|
static create(): TestWSPair;
|
|
36
33
|
private constructor();
|
|
37
34
|
}
|
|
38
|
-
export {};
|
|
39
35
|
//# sourceMappingURL=test-ws-pair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AAEvG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;AAEhD,qBAAa,gBAAgB,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS,CAAE,YAAW,eAAe;;IAE9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAItB,IAAI,MAAM,IAAI,MAAM,IAAI,CAEvB;IACD,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,EAGxB;IACD,SAAS,EAAE,WAAW,CAEpB;IACF,OAAO,EAAE,SAAS,CAEhB;IACF,OAAO,EAAE,SAAS,CAEhB;IAEF,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAE1D,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,EAGzE;IACD,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAEzC;IAED,IAAI,oCAMF;CACH;AAED,qBAAa,UAAU,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS;IAC5D,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAM;IACzD,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IACrF,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IAErF,MAAM,CAAC,MAAM,IAAI,UAAU,CAK1B;IAED,OAAO,eAEN;CACF"}
|
package/esm/test-ws-pair.js
CHANGED
|
@@ -1,28 +1,36 @@
|
|
|
1
1
|
import { to_uint8 } from "./index.js";
|
|
2
|
-
class TestWSConnection {
|
|
2
|
+
export class TestWSConnection {
|
|
3
3
|
#other;
|
|
4
4
|
side;
|
|
5
|
-
|
|
5
|
+
#onopen;
|
|
6
|
+
get onopen() {
|
|
7
|
+
return this.#onopen;
|
|
8
|
+
}
|
|
9
|
+
set onopen(fn) {
|
|
10
|
+
this.#onopen = fn;
|
|
11
|
+
fn();
|
|
12
|
+
}
|
|
13
|
+
onmessage = (_e) => {
|
|
6
14
|
throw new Error("OnMessage Method not implemented.");
|
|
7
15
|
};
|
|
8
|
-
|
|
16
|
+
onerror = (_e) => {
|
|
9
17
|
throw new Error("OnError Method not implemented.");
|
|
10
18
|
};
|
|
11
|
-
|
|
19
|
+
onclose = (_e) => {
|
|
12
20
|
throw new Error("OnClose Method not implemented.");
|
|
13
21
|
};
|
|
14
|
-
|
|
15
|
-
constructor(side,
|
|
22
|
+
transfers;
|
|
23
|
+
constructor(side, transfers) {
|
|
16
24
|
this.side = side;
|
|
17
|
-
this.
|
|
25
|
+
this.transfers = transfers;
|
|
18
26
|
}
|
|
19
27
|
connect(other) {
|
|
20
28
|
this.#other = other;
|
|
21
29
|
}
|
|
22
30
|
send = (data) => {
|
|
23
31
|
const uint8 = to_uint8(data);
|
|
24
|
-
this.
|
|
25
|
-
this.#other.
|
|
32
|
+
this.transfers?.push({ from: this.side, data: uint8 });
|
|
33
|
+
this.#other.onmessage({
|
|
26
34
|
data: uint8,
|
|
27
35
|
});
|
|
28
36
|
};
|
package/esm/test-ws-pair.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQzD,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAwB;IACrB,IAAI,CAAS;IAEtB,OAAO,CAAc;IAErB,IAAI,MAAM,GAAe;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACrB;IACD,IAAI,MAAM,CAAC,EAAc,EAAE;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,EAAE,EAAE,CAAC;IAAA,CACN;IACD,SAAS,GAAgB,CAAI,EAAmB,EAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAAA,CACtD,CAAC;IACF,OAAO,GAAc,CAAC,EAAS,EAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IACF,OAAO,GAAc,CAAC,EAAc,EAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IAEO,SAAS,CAAwC;IAE1D,YAAY,IAAY,EAAE,SAAgD,EAAE;QAC1E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAAA,CAC5B;IACD,OAAO,CAAC,KAA2B,EAAQ;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAAA,CACrB;IAED,IAAI,GAAG,CAAC,IAAuB,EAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,KAAK;SAC2B,CAAC,CAAC;IAAA,CAC3C,CAAC;CACH;AAED,MAAM,OAAO,UAAU;IACZ,IAAI,GAAyC,EAAE,CAAC;IACzC,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAErF,MAAM,CAAC,MAAM,GAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IAAA,CACb;IAED,cAAsB;IAAC,CAEtB;CACF"}
|
package/esm/test-ws-pair.test.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { it, expect, vi } from "vitest";
|
|
2
|
+
import { TestWSConnection, TestWSPair } from "./test-ws-pair.js";
|
|
3
3
|
it("should record messages from both sides in the msgs array", () => {
|
|
4
4
|
const pair = TestWSPair.create();
|
|
5
5
|
const receivedByP1 = [];
|
|
6
6
|
const receivedByP2 = [];
|
|
7
|
-
pair.p1.
|
|
7
|
+
pair.p1.onmessage = (e) => {
|
|
8
8
|
receivedByP1.push(e.data);
|
|
9
9
|
};
|
|
10
|
-
pair.p2.
|
|
10
|
+
pair.p2.onmessage = (e) => {
|
|
11
11
|
receivedByP2.push(e.data);
|
|
12
12
|
};
|
|
13
13
|
pair.p1.send(new Uint8Array([1, 2, 3]));
|
|
@@ -26,11 +26,17 @@ it("should record messages from both sides in the msgs array", () => {
|
|
|
26
26
|
expect(receivedByP1).toHaveLength(1);
|
|
27
27
|
expect(receivedByP1[0]).toEqual(new Uint8Array([4, 5, 6]));
|
|
28
28
|
});
|
|
29
|
+
it("should emit onopen events upon setting the handler", () => {
|
|
30
|
+
const pair = new TestWSConnection("p1", []);
|
|
31
|
+
pair.onopen = vi.fn(() => {
|
|
32
|
+
});
|
|
33
|
+
expect(pair.onopen).toHaveBeenCalledTimes(1);
|
|
34
|
+
});
|
|
29
35
|
it("should handle string data via CoerceBinaryInput", () => {
|
|
30
36
|
const pair = TestWSPair.create();
|
|
31
|
-
pair.p1.
|
|
37
|
+
pair.p1.onmessage = (_e) => {
|
|
32
38
|
};
|
|
33
|
-
pair.p2.
|
|
39
|
+
pair.p2.onmessage = (_e) => {
|
|
34
40
|
};
|
|
35
41
|
pair.p1.send("hello");
|
|
36
42
|
pair.p2.send("world");
|
|
@@ -47,9 +53,9 @@ it("should start with empty msgs array", () => {
|
|
|
47
53
|
it("should work when send method is passed without bind", () => {
|
|
48
54
|
const pair = TestWSPair.create();
|
|
49
55
|
const receivedByP2 = [];
|
|
50
|
-
pair.p1.
|
|
56
|
+
pair.p1.onmessage = (_e) => {
|
|
51
57
|
};
|
|
52
|
-
pair.p2.
|
|
58
|
+
pair.p2.onmessage = (e) => {
|
|
53
59
|
receivedByP2.push(e.data);
|
|
54
60
|
};
|
|
55
61
|
const unboundSend = pair.p1.send;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":"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"}
|
package/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.5.
|
|
1
|
+
export const VERSION = "0.5.18";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adviser/cement",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.18",
|
|
4
4
|
"description": "better try/catch/finally handling",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -73,11 +73,13 @@
|
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@cloudflare/vitest-pool-workers": "^0.12.1",
|
|
76
|
+
"@cloudflare/workers-types": "^4.20260123.0",
|
|
76
77
|
"@eslint/js": "^9.39.1",
|
|
77
78
|
"@types/deno": "^2.3.0",
|
|
78
79
|
"@types/fs-extra": "^11.0.4",
|
|
79
80
|
"@types/node": "^25.0.2",
|
|
80
81
|
"@types/semver": "^7.7.1",
|
|
82
|
+
"@types/ws": "^8.18.1",
|
|
81
83
|
"@typescript-eslint/eslint-plugin": "^8.46.3",
|
|
82
84
|
"@typescript-eslint/parser": "^8.46.3",
|
|
83
85
|
"@typescript/native-preview": "7.0.0-dev.20260119.1",
|
package/src/test-ws-pair.ts
CHANGED
|
@@ -1,52 +1,57 @@
|
|
|
1
1
|
import { CoerceBinaryInput, to_uint8 } from "./index.js";
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
onError(e: ErrorEvent): void;
|
|
5
|
-
onMessage<T>(e: MessageEvent<T>): void;
|
|
6
|
-
onClose(e: CloseEvent): void;
|
|
7
|
-
send(data: CoerceBinaryInput): void;
|
|
8
|
-
}
|
|
3
|
+
export type WebSocketSimple = Pick<WebSocket, "onerror" | "onmessage" | "onclose" | "send" | "onopen">;
|
|
9
4
|
|
|
10
|
-
export type OnErrorFn = (e:
|
|
5
|
+
export type OnErrorFn = (e: Event) => void;
|
|
11
6
|
export type OnMessageFn = <T = unknown>(e: MessageEvent<T>) => void;
|
|
12
7
|
export type OnCloseFn = (e: CloseEvent) => void;
|
|
13
8
|
|
|
14
|
-
class TestWSConnection implements
|
|
15
|
-
#other!: TestWSConnection
|
|
9
|
+
export class TestWSConnection<WS extends WebSocketSimple = WebSocket> implements WebSocketSimple {
|
|
10
|
+
#other!: TestWSConnection<WS>;
|
|
16
11
|
readonly side: string;
|
|
17
|
-
|
|
12
|
+
|
|
13
|
+
#onopen!: () => void;
|
|
14
|
+
|
|
15
|
+
get onopen(): () => void {
|
|
16
|
+
return this.#onopen;
|
|
17
|
+
}
|
|
18
|
+
set onopen(fn: () => void) {
|
|
19
|
+
this.#onopen = fn;
|
|
20
|
+
fn(); // immediately invoke for testing purposes
|
|
21
|
+
}
|
|
22
|
+
onmessage: OnMessageFn = <T>(_e: MessageEvent<T>): void => {
|
|
18
23
|
throw new Error("OnMessage Method not implemented.");
|
|
19
24
|
};
|
|
20
|
-
|
|
25
|
+
onerror: OnErrorFn = (_e: Event): void => {
|
|
21
26
|
throw new Error("OnError Method not implemented.");
|
|
22
27
|
};
|
|
23
|
-
|
|
28
|
+
onclose: OnCloseFn = (_e: CloseEvent): void => {
|
|
24
29
|
throw new Error("OnClose Method not implemented.");
|
|
25
30
|
};
|
|
26
31
|
|
|
27
|
-
readonly
|
|
32
|
+
readonly transfers?: { from: string; data: Uint8Array }[];
|
|
28
33
|
|
|
29
|
-
constructor(side: string,
|
|
34
|
+
constructor(side: string, transfers?: { from: string; data: Uint8Array }[]) {
|
|
30
35
|
this.side = side;
|
|
31
|
-
this.
|
|
36
|
+
this.transfers = transfers;
|
|
32
37
|
}
|
|
33
|
-
connect(other: TestWSConnection): void {
|
|
38
|
+
connect(other: TestWSConnection<WS>): void {
|
|
34
39
|
this.#other = other;
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
send = (data: CoerceBinaryInput): void => {
|
|
38
43
|
const uint8 = to_uint8(data);
|
|
39
|
-
this.
|
|
40
|
-
this.#other.
|
|
44
|
+
this.transfers?.push({ from: this.side, data: uint8 });
|
|
45
|
+
this.#other.onmessage({
|
|
41
46
|
data: uint8,
|
|
42
47
|
} as unknown as MessageEvent<Uint8Array>);
|
|
43
48
|
};
|
|
44
49
|
}
|
|
45
50
|
|
|
46
|
-
export class TestWSPair {
|
|
51
|
+
export class TestWSPair<WS extends WebSocketSimple = WebSocket> {
|
|
47
52
|
readonly msgs: { from: string; data: Uint8Array }[] = [];
|
|
48
|
-
public readonly p1: TestWSConnection = new TestWSConnection("p1", this.msgs);
|
|
49
|
-
public readonly p2: TestWSConnection = new TestWSConnection("p2", this.msgs);
|
|
53
|
+
public readonly p1: TestWSConnection<WS> = new TestWSConnection<WS>("p1", this.msgs);
|
|
54
|
+
public readonly p2: TestWSConnection<WS> = new TestWSConnection<WS>("p2", this.msgs);
|
|
50
55
|
|
|
51
56
|
static create(): TestWSPair {
|
|
52
57
|
const pair = new TestWSPair();
|
package/ts/cjs/test-ws-pair.d.ts
CHANGED
|
@@ -1,39 +1,35 @@
|
|
|
1
1
|
import { CoerceBinaryInput } from "./index.js";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
onMessage<T>(e: MessageEvent<T>): void;
|
|
5
|
-
onClose(e: CloseEvent): void;
|
|
6
|
-
send(data: CoerceBinaryInput): void;
|
|
7
|
-
}
|
|
8
|
-
export type OnErrorFn = (e: ErrorEvent) => void;
|
|
2
|
+
export type WebSocketSimple = Pick<WebSocket, "onerror" | "onmessage" | "onclose" | "send" | "onopen">;
|
|
3
|
+
export type OnErrorFn = (e: Event) => void;
|
|
9
4
|
export type OnMessageFn = <T = unknown>(e: MessageEvent<T>) => void;
|
|
10
5
|
export type OnCloseFn = (e: CloseEvent) => void;
|
|
11
|
-
declare class TestWSConnection implements
|
|
6
|
+
export declare class TestWSConnection<WS extends WebSocketSimple = WebSocket> implements WebSocketSimple {
|
|
12
7
|
#private;
|
|
13
8
|
readonly side: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
get onopen(): () => void;
|
|
10
|
+
set onopen(fn: () => void);
|
|
11
|
+
onmessage: OnMessageFn;
|
|
12
|
+
onerror: OnErrorFn;
|
|
13
|
+
onclose: OnCloseFn;
|
|
14
|
+
readonly transfers?: {
|
|
18
15
|
from: string;
|
|
19
16
|
data: Uint8Array;
|
|
20
17
|
}[];
|
|
21
|
-
constructor(side: string,
|
|
18
|
+
constructor(side: string, transfers?: {
|
|
22
19
|
from: string;
|
|
23
20
|
data: Uint8Array;
|
|
24
21
|
}[]);
|
|
25
|
-
connect(other: TestWSConnection): void;
|
|
22
|
+
connect(other: TestWSConnection<WS>): void;
|
|
26
23
|
send: (data: CoerceBinaryInput) => void;
|
|
27
24
|
}
|
|
28
|
-
export declare class TestWSPair {
|
|
25
|
+
export declare class TestWSPair<WS extends WebSocketSimple = WebSocket> {
|
|
29
26
|
readonly msgs: {
|
|
30
27
|
from: string;
|
|
31
28
|
data: Uint8Array;
|
|
32
29
|
}[];
|
|
33
|
-
readonly p1: TestWSConnection
|
|
34
|
-
readonly p2: TestWSConnection
|
|
30
|
+
readonly p1: TestWSConnection<WS>;
|
|
31
|
+
readonly p2: TestWSConnection<WS>;
|
|
35
32
|
static create(): TestWSPair;
|
|
36
33
|
private constructor();
|
|
37
34
|
}
|
|
38
|
-
export {};
|
|
39
35
|
//# sourceMappingURL=test-ws-pair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AAEvG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;AAEhD,qBAAa,gBAAgB,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS,CAAE,YAAW,eAAe;;IAE9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAItB,IAAI,MAAM,IAAI,MAAM,IAAI,CAEvB;IACD,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,EAGxB;IACD,SAAS,EAAE,WAAW,CAEpB;IACF,OAAO,EAAE,SAAS,CAEhB;IACF,OAAO,EAAE,SAAS,CAEhB;IAEF,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAE1D,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,EAGzE;IACD,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAEzC;IAED,IAAI,oCAMF;CACH;AAED,qBAAa,UAAU,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS;IAC5D,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAM;IACzD,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IACrF,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IAErF,MAAM,CAAC,MAAM,IAAI,UAAU,CAK1B;IAED,OAAO,eAEN;CACF"}
|
package/ts/cjs/test-ws-pair.js
CHANGED
|
@@ -1,35 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TestWSPair = void 0;
|
|
3
|
+
exports.TestWSPair = exports.TestWSConnection = void 0;
|
|
4
4
|
const index_js_1 = require("./index.js");
|
|
5
5
|
class TestWSConnection {
|
|
6
6
|
#other;
|
|
7
7
|
side;
|
|
8
|
-
|
|
8
|
+
#onopen;
|
|
9
|
+
get onopen() {
|
|
10
|
+
return this.#onopen;
|
|
11
|
+
}
|
|
12
|
+
set onopen(fn) {
|
|
13
|
+
this.#onopen = fn;
|
|
14
|
+
fn();
|
|
15
|
+
}
|
|
16
|
+
onmessage = (_e) => {
|
|
9
17
|
throw new Error("OnMessage Method not implemented.");
|
|
10
18
|
};
|
|
11
|
-
|
|
19
|
+
onerror = (_e) => {
|
|
12
20
|
throw new Error("OnError Method not implemented.");
|
|
13
21
|
};
|
|
14
|
-
|
|
22
|
+
onclose = (_e) => {
|
|
15
23
|
throw new Error("OnClose Method not implemented.");
|
|
16
24
|
};
|
|
17
|
-
|
|
18
|
-
constructor(side,
|
|
25
|
+
transfers;
|
|
26
|
+
constructor(side, transfers) {
|
|
19
27
|
this.side = side;
|
|
20
|
-
this.
|
|
28
|
+
this.transfers = transfers;
|
|
21
29
|
}
|
|
22
30
|
connect(other) {
|
|
23
31
|
this.#other = other;
|
|
24
32
|
}
|
|
25
33
|
send = (data) => {
|
|
26
34
|
const uint8 = (0, index_js_1.to_uint8)(data);
|
|
27
|
-
this.
|
|
28
|
-
this.#other.
|
|
35
|
+
this.transfers?.push({ from: this.side, data: uint8 });
|
|
36
|
+
this.#other.onmessage({
|
|
29
37
|
data: uint8,
|
|
30
38
|
});
|
|
31
39
|
};
|
|
32
40
|
}
|
|
41
|
+
exports.TestWSConnection = TestWSConnection;
|
|
33
42
|
class TestWSPair {
|
|
34
43
|
msgs = [];
|
|
35
44
|
p1 = new TestWSConnection("p1", this.msgs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":";;;AAAA,yCAAyD;
|
|
1
|
+
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":";;;AAAA,yCAAyD;AAQzD;IACE,MAAM,CAAwB;IACrB,IAAI,CAAS;IAEtB,OAAO,CAAc;IAErB,IAAI,MAAM,GAAe;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACrB;IACD,IAAI,MAAM,CAAC,EAAc,EAAE;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,EAAE,EAAE,CAAC;IAAA,CACN;IACD,SAAS,GAAgB,CAAI,EAAmB,EAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAAA,CACtD,CAAC;IACF,OAAO,GAAc,CAAC,EAAS,EAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IACF,OAAO,GAAc,CAAC,EAAc,EAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IAEO,SAAS,CAAwC;IAE1D,YAAY,IAAY,EAAE,SAAgD,EAAE;QAC1E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAAA,CAC5B;IACD,OAAO,CAAC,KAA2B,EAAQ;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAAA,CACrB;IAED,IAAI,GAAG,CAAC,IAAuB,EAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,KAAK;SAC2B,CAAC,CAAC;IAAA,CAC3C,CAAC;CACH;;AAED;IACW,IAAI,GAAyC,EAAE,CAAC;IACzC,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAErF,MAAM,CAAC,MAAM,GAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IAAA,CACb;IAED,cAAsB;IAAC,CAEtB;CACF"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const test_ws_pair_js_1 = require("./test-ws-pair.js");
|
|
4
3
|
const vitest_1 = require("vitest");
|
|
4
|
+
const test_ws_pair_js_1 = require("./test-ws-pair.js");
|
|
5
5
|
(0, vitest_1.it)("should record messages from both sides in the msgs array", () => {
|
|
6
6
|
const pair = test_ws_pair_js_1.TestWSPair.create();
|
|
7
7
|
const receivedByP1 = [];
|
|
8
8
|
const receivedByP2 = [];
|
|
9
|
-
pair.p1.
|
|
9
|
+
pair.p1.onmessage = (e) => {
|
|
10
10
|
receivedByP1.push(e.data);
|
|
11
11
|
};
|
|
12
|
-
pair.p2.
|
|
12
|
+
pair.p2.onmessage = (e) => {
|
|
13
13
|
receivedByP2.push(e.data);
|
|
14
14
|
};
|
|
15
15
|
pair.p1.send(new Uint8Array([1, 2, 3]));
|
|
@@ -28,11 +28,17 @@ const vitest_1 = require("vitest");
|
|
|
28
28
|
(0, vitest_1.expect)(receivedByP1).toHaveLength(1);
|
|
29
29
|
(0, vitest_1.expect)(receivedByP1[0]).toEqual(new Uint8Array([4, 5, 6]));
|
|
30
30
|
});
|
|
31
|
+
(0, vitest_1.it)("should emit onopen events upon setting the handler", () => {
|
|
32
|
+
const pair = new test_ws_pair_js_1.TestWSConnection("p1", []);
|
|
33
|
+
pair.onopen = vitest_1.vi.fn(() => {
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.expect)(pair.onopen).toHaveBeenCalledTimes(1);
|
|
36
|
+
});
|
|
31
37
|
(0, vitest_1.it)("should handle string data via CoerceBinaryInput", () => {
|
|
32
38
|
const pair = test_ws_pair_js_1.TestWSPair.create();
|
|
33
|
-
pair.p1.
|
|
39
|
+
pair.p1.onmessage = (_e) => {
|
|
34
40
|
};
|
|
35
|
-
pair.p2.
|
|
41
|
+
pair.p2.onmessage = (_e) => {
|
|
36
42
|
};
|
|
37
43
|
pair.p1.send("hello");
|
|
38
44
|
pair.p2.send("world");
|
|
@@ -49,9 +55,9 @@ const vitest_1 = require("vitest");
|
|
|
49
55
|
(0, vitest_1.it)("should work when send method is passed without bind", () => {
|
|
50
56
|
const pair = test_ws_pair_js_1.TestWSPair.create();
|
|
51
57
|
const receivedByP2 = [];
|
|
52
|
-
pair.p1.
|
|
58
|
+
pair.p1.onmessage = (_e) => {
|
|
53
59
|
};
|
|
54
|
-
pair.p2.
|
|
60
|
+
pair.p2.onmessage = (e) => {
|
|
55
61
|
receivedByP2.push(e.data);
|
|
56
62
|
};
|
|
57
63
|
const unboundSend = pair.p1.send;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":";;AAAA,mCAAwC;AACxC,uDAAiE;AAejE,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE,CAAC;IACnE,MAAM,IAAI,GAAG,4BAAU,CAAC,MAAM,EAAE,CAAC;IAEjC,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAQ,EAAE,CAAC;QAC/B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAkB,CAAC,CAAC;IAAA,CACzC,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAQ,EAAE,CAAC;QAC/B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAkB,CAAC,CAAC;IAAA,CACzC,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAElC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC5D,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,kCAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,GAAG,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAAC,CAE1B,CAAC,CAAC;IACH,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAAA,CAC9C,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,4BAAU,CAAC,MAAM,EAAE,CAAC;IAEjC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,EAAQ,EAAE,CAAC;IAAC,CAElC,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,EAAQ,EAAE,CAAC;IAAC,CAElC,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEtB,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAAA,CACnE,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,4BAAU,CAAC,MAAM,EAAE,CAAC;IACjC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,CAC/B,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,4BAAU,CAAC,MAAM,EAAE,CAAC;IAEjC,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,EAAQ,EAAE,CAAC;IAAC,CAElC,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAQ,EAAE,CAAC;QAC/B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAkB,CAAC,CAAC;IAAA,CACzC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;IAEjC,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhE,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAAA,CAC/D,CAAC,CAAC"}
|
package/ts/cjs/version.js
CHANGED
package/ts/esm/test-ws-pair.d.ts
CHANGED
|
@@ -1,39 +1,35 @@
|
|
|
1
1
|
import { CoerceBinaryInput } from "./index.js";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
onMessage<T>(e: MessageEvent<T>): void;
|
|
5
|
-
onClose(e: CloseEvent): void;
|
|
6
|
-
send(data: CoerceBinaryInput): void;
|
|
7
|
-
}
|
|
8
|
-
export type OnErrorFn = (e: ErrorEvent) => void;
|
|
2
|
+
export type WebSocketSimple = Pick<WebSocket, "onerror" | "onmessage" | "onclose" | "send" | "onopen">;
|
|
3
|
+
export type OnErrorFn = (e: Event) => void;
|
|
9
4
|
export type OnMessageFn = <T = unknown>(e: MessageEvent<T>) => void;
|
|
10
5
|
export type OnCloseFn = (e: CloseEvent) => void;
|
|
11
|
-
declare class TestWSConnection implements
|
|
6
|
+
export declare class TestWSConnection<WS extends WebSocketSimple = WebSocket> implements WebSocketSimple {
|
|
12
7
|
#private;
|
|
13
8
|
readonly side: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
get onopen(): () => void;
|
|
10
|
+
set onopen(fn: () => void);
|
|
11
|
+
onmessage: OnMessageFn;
|
|
12
|
+
onerror: OnErrorFn;
|
|
13
|
+
onclose: OnCloseFn;
|
|
14
|
+
readonly transfers?: {
|
|
18
15
|
from: string;
|
|
19
16
|
data: Uint8Array;
|
|
20
17
|
}[];
|
|
21
|
-
constructor(side: string,
|
|
18
|
+
constructor(side: string, transfers?: {
|
|
22
19
|
from: string;
|
|
23
20
|
data: Uint8Array;
|
|
24
21
|
}[]);
|
|
25
|
-
connect(other: TestWSConnection): void;
|
|
22
|
+
connect(other: TestWSConnection<WS>): void;
|
|
26
23
|
send: (data: CoerceBinaryInput) => void;
|
|
27
24
|
}
|
|
28
|
-
export declare class TestWSPair {
|
|
25
|
+
export declare class TestWSPair<WS extends WebSocketSimple = WebSocket> {
|
|
29
26
|
readonly msgs: {
|
|
30
27
|
from: string;
|
|
31
28
|
data: Uint8Array;
|
|
32
29
|
}[];
|
|
33
|
-
readonly p1: TestWSConnection
|
|
34
|
-
readonly p2: TestWSConnection
|
|
30
|
+
readonly p1: TestWSConnection<WS>;
|
|
31
|
+
readonly p2: TestWSConnection<WS>;
|
|
35
32
|
static create(): TestWSPair;
|
|
36
33
|
private constructor();
|
|
37
34
|
}
|
|
38
|
-
export {};
|
|
39
35
|
//# sourceMappingURL=test-ws-pair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.d.ts","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AAEvG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;AAEhD,qBAAa,gBAAgB,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS,CAAE,YAAW,eAAe;;IAE9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAItB,IAAI,MAAM,IAAI,MAAM,IAAI,CAEvB;IACD,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,EAGxB;IACD,SAAS,EAAE,WAAW,CAEpB;IACF,OAAO,EAAE,SAAS,CAEhB;IACF,OAAO,EAAE,SAAS,CAEhB;IAEF,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAE1D,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,EAGzE;IACD,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAEzC;IAED,IAAI,oCAMF;CACH;AAED,qBAAa,UAAU,CAAC,EAAE,SAAS,eAAe,GAAG,SAAS;IAC5D,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAM;IACzD,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IACrF,SAAgB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAA6C;IAErF,MAAM,CAAC,MAAM,IAAI,UAAU,CAK1B;IAED,OAAO,eAEN;CACF"}
|
package/ts/esm/test-ws-pair.js
CHANGED
|
@@ -1,28 +1,36 @@
|
|
|
1
1
|
import { to_uint8 } from "./index.js";
|
|
2
|
-
class TestWSConnection {
|
|
2
|
+
export class TestWSConnection {
|
|
3
3
|
#other;
|
|
4
4
|
side;
|
|
5
|
-
|
|
5
|
+
#onopen;
|
|
6
|
+
get onopen() {
|
|
7
|
+
return this.#onopen;
|
|
8
|
+
}
|
|
9
|
+
set onopen(fn) {
|
|
10
|
+
this.#onopen = fn;
|
|
11
|
+
fn();
|
|
12
|
+
}
|
|
13
|
+
onmessage = (_e) => {
|
|
6
14
|
throw new Error("OnMessage Method not implemented.");
|
|
7
15
|
};
|
|
8
|
-
|
|
16
|
+
onerror = (_e) => {
|
|
9
17
|
throw new Error("OnError Method not implemented.");
|
|
10
18
|
};
|
|
11
|
-
|
|
19
|
+
onclose = (_e) => {
|
|
12
20
|
throw new Error("OnClose Method not implemented.");
|
|
13
21
|
};
|
|
14
|
-
|
|
15
|
-
constructor(side,
|
|
22
|
+
transfers;
|
|
23
|
+
constructor(side, transfers) {
|
|
16
24
|
this.side = side;
|
|
17
|
-
this.
|
|
25
|
+
this.transfers = transfers;
|
|
18
26
|
}
|
|
19
27
|
connect(other) {
|
|
20
28
|
this.#other = other;
|
|
21
29
|
}
|
|
22
30
|
send = (data) => {
|
|
23
31
|
const uint8 = to_uint8(data);
|
|
24
|
-
this.
|
|
25
|
-
this.#other.
|
|
32
|
+
this.transfers?.push({ from: this.side, data: uint8 });
|
|
33
|
+
this.#other.onmessage({
|
|
26
34
|
data: uint8,
|
|
27
35
|
});
|
|
28
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"test-ws-pair.js","sourceRoot":"","sources":["../../../src/test-ws-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQzD,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAwB;IACrB,IAAI,CAAS;IAEtB,OAAO,CAAc;IAErB,IAAI,MAAM,GAAe;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IAAA,CACrB;IACD,IAAI,MAAM,CAAC,EAAc,EAAE;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,EAAE,EAAE,CAAC;IAAA,CACN;IACD,SAAS,GAAgB,CAAI,EAAmB,EAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAAA,CACtD,CAAC;IACF,OAAO,GAAc,CAAC,EAAS,EAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IACF,OAAO,GAAc,CAAC,EAAc,EAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAAA,CACpD,CAAC;IAEO,SAAS,CAAwC;IAE1D,YAAY,IAAY,EAAE,SAAgD,EAAE;QAC1E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAAA,CAC5B;IACD,OAAO,CAAC,KAA2B,EAAQ;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAAA,CACrB;IAED,IAAI,GAAG,CAAC,IAAuB,EAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,KAAK;SAC2B,CAAC,CAAC;IAAA,CAC3C,CAAC;CACH;AAED,MAAM,OAAO,UAAU;IACZ,IAAI,GAAyC,EAAE,CAAC;IACzC,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,EAAE,GAAyB,IAAI,gBAAgB,CAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAErF,MAAM,CAAC,MAAM,GAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IAAA,CACb;IAED,cAAsB;IAAC,CAEtB;CACF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { it, expect, vi } from "vitest";
|
|
2
|
+
import { TestWSConnection, TestWSPair } from "./test-ws-pair.js";
|
|
3
3
|
it("should record messages from both sides in the msgs array", () => {
|
|
4
4
|
const pair = TestWSPair.create();
|
|
5
5
|
const receivedByP1 = [];
|
|
6
6
|
const receivedByP2 = [];
|
|
7
|
-
pair.p1.
|
|
7
|
+
pair.p1.onmessage = (e) => {
|
|
8
8
|
receivedByP1.push(e.data);
|
|
9
9
|
};
|
|
10
|
-
pair.p2.
|
|
10
|
+
pair.p2.onmessage = (e) => {
|
|
11
11
|
receivedByP2.push(e.data);
|
|
12
12
|
};
|
|
13
13
|
pair.p1.send(new Uint8Array([1, 2, 3]));
|
|
@@ -26,11 +26,17 @@ it("should record messages from both sides in the msgs array", () => {
|
|
|
26
26
|
expect(receivedByP1).toHaveLength(1);
|
|
27
27
|
expect(receivedByP1[0]).toEqual(new Uint8Array([4, 5, 6]));
|
|
28
28
|
});
|
|
29
|
+
it("should emit onopen events upon setting the handler", () => {
|
|
30
|
+
const pair = new TestWSConnection("p1", []);
|
|
31
|
+
pair.onopen = vi.fn(() => {
|
|
32
|
+
});
|
|
33
|
+
expect(pair.onopen).toHaveBeenCalledTimes(1);
|
|
34
|
+
});
|
|
29
35
|
it("should handle string data via CoerceBinaryInput", () => {
|
|
30
36
|
const pair = TestWSPair.create();
|
|
31
|
-
pair.p1.
|
|
37
|
+
pair.p1.onmessage = (_e) => {
|
|
32
38
|
};
|
|
33
|
-
pair.p2.
|
|
39
|
+
pair.p2.onmessage = (_e) => {
|
|
34
40
|
};
|
|
35
41
|
pair.p1.send("hello");
|
|
36
42
|
pair.p2.send("world");
|
|
@@ -47,9 +53,9 @@ it("should start with empty msgs array", () => {
|
|
|
47
53
|
it("should work when send method is passed without bind", () => {
|
|
48
54
|
const pair = TestWSPair.create();
|
|
49
55
|
const receivedByP2 = [];
|
|
50
|
-
pair.p1.
|
|
56
|
+
pair.p1.onmessage = (_e) => {
|
|
51
57
|
};
|
|
52
|
-
pair.p2.
|
|
58
|
+
pair.p2.onmessage = (e) => {
|
|
53
59
|
receivedByP2.push(e.data);
|
|
54
60
|
};
|
|
55
61
|
const unboundSend = pair.p1.send;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"test-ws-pair.test.js","sourceRoot":"","sources":["../../../src/test-ws-pair.test.ts"],"names":[],"mappings":"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"}
|
package/ts/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.5.
|
|
1
|
+
export const VERSION = "0.5.18";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|