cojson-transport-ws 0.18.30 → 0.18.32
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +15 -0
- package/dist/BatchedOutgoingMessages.d.ts +3 -2
- package/dist/BatchedOutgoingMessages.d.ts.map +1 -1
- package/dist/BatchedOutgoingMessages.js +6 -8
- package/dist/BatchedOutgoingMessages.js.map +1 -1
- package/dist/createWebSocketPeer.d.ts +3 -1
- package/dist/createWebSocketPeer.d.ts.map +1 -1
- package/dist/createWebSocketPeer.js +6 -8
- package/dist/createWebSocketPeer.js.map +1 -1
- package/package.json +2 -2
- package/src/BatchedOutgoingMessages.ts +13 -10
- package/src/createWebSocketPeer.ts +14 -11
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# cojson-transport-nodejs-ws
|
|
2
2
|
|
|
3
|
+
## 0.18.32
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2c7013a: Allow providing a custom meter for usage tracking
|
|
8
|
+
- Updated dependencies [8f47a9e]
|
|
9
|
+
- cojson@0.18.32
|
|
10
|
+
|
|
11
|
+
## 0.18.31
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [7c2b7b8]
|
|
16
|
+
- cojson@0.18.31
|
|
17
|
+
|
|
3
18
|
## 0.18.30
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Meter } from "@opentelemetry/api";
|
|
1
2
|
import type { DisconnectedError, SyncMessage } from "cojson";
|
|
2
3
|
import type { Peer } from "cojson";
|
|
3
4
|
import { type CojsonInternalTypes } from "cojson";
|
|
@@ -14,12 +15,12 @@ export declare class BatchedOutgoingMessages implements CojsonInternalTypes.Outg
|
|
|
14
15
|
private queue;
|
|
15
16
|
private processing;
|
|
16
17
|
private closed;
|
|
17
|
-
private
|
|
18
|
+
private egressBytesCounter;
|
|
18
19
|
constructor(websocket: AnyWebSocket, batching: boolean, peerRole: Peer["role"],
|
|
19
20
|
/**
|
|
20
21
|
* Additional key-value pair of attributes to add to the egress metric.
|
|
21
22
|
*/
|
|
22
|
-
meta?: Record<string, string | number> | undefined);
|
|
23
|
+
meta?: Record<string, string | number> | undefined, meter?: Meter);
|
|
23
24
|
push(msg: SyncMessage | DisconnectedError): void;
|
|
24
25
|
private processQueue;
|
|
25
26
|
private processMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchedOutgoingMessages.d.ts","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BatchedOutgoingMessages.d.ts","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EACL,KAAK,mBAAmB,EAIzB,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,eAAO,MAAM,iCAAiC,QAAS,CAAC;AAExD,qBAAa,uBACX,YAAW,mBAAmB,CAAC,mBAAmB;IAShD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAEhB;;OAEG;IACH,OAAO,CAAC,IAAI,CAAC;IAbf,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAC;gBAGjB,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,OAAO,EACzB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;IACtB;;OAEG;IACK,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA,EAC9C,KAAK,CAAC,EAAE,KAAK;IAsBf,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB;YAiB3B,YAAY;IAmC1B,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,kBAAkB;IAO1B,WAAW,CAAC,OAAO,EAAE,OAAO;IAI5B,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI;IAI5B,KAAK;CAqBN"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { metrics, ValueType } from "@opentelemetry/api";
|
|
2
2
|
import { PriorityBasedMessageQueue, cojsonInternals, logger, } from "cojson";
|
|
3
3
|
import { addMessageToBacklog } from "./serialization.js";
|
|
4
4
|
import { hasWebSocketTooMuchBufferedData, isWebSocketOpen, waitForWebSocketBufferedAmount, waitForWebSocketOpen, } from "./utils.js";
|
|
@@ -9,26 +9,24 @@ export class BatchedOutgoingMessages {
|
|
|
9
9
|
/**
|
|
10
10
|
* Additional key-value pair of attributes to add to the egress metric.
|
|
11
11
|
*/
|
|
12
|
-
meta) {
|
|
12
|
+
meta, meter) {
|
|
13
13
|
this.websocket = websocket;
|
|
14
14
|
this.batching = batching;
|
|
15
15
|
this.meta = meta;
|
|
16
16
|
this.backlog = "";
|
|
17
17
|
this.processing = false;
|
|
18
18
|
this.closed = false;
|
|
19
|
-
this.
|
|
20
|
-
|
|
21
|
-
.createCounter("jazz.usage.egress", {
|
|
19
|
+
this.closeListeners = new Set();
|
|
20
|
+
this.egressBytesCounter = (meter ?? metrics.getMeter("cojson-transport-ws")).createCounter("jazz.usage.egress", {
|
|
22
21
|
description: "Total egress bytes",
|
|
23
22
|
unit: "bytes",
|
|
24
23
|
valueType: ValueType.INT,
|
|
25
24
|
});
|
|
26
|
-
this.closeListeners = new Set();
|
|
27
25
|
this.queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.HIGH, "outgoing", {
|
|
28
26
|
peerRole: peerRole,
|
|
29
27
|
});
|
|
30
28
|
// Initialize the counter by adding 0
|
|
31
|
-
this.
|
|
29
|
+
this.egressBytesCounter.add(0, this.meta);
|
|
32
30
|
}
|
|
33
31
|
push(msg) {
|
|
34
32
|
if (msg === "Disconnected") {
|
|
@@ -70,7 +68,7 @@ export class BatchedOutgoingMessages {
|
|
|
70
68
|
}
|
|
71
69
|
processMessage(msg) {
|
|
72
70
|
if (msg.action === "content") {
|
|
73
|
-
this.
|
|
71
|
+
this.egressBytesCounter.add(getContentMessageSize(msg), this.meta);
|
|
74
72
|
}
|
|
75
73
|
if (!this.batching) {
|
|
76
74
|
this.websocket.send(JSON.stringify(msg));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchedOutgoingMessages.js","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"BatchedOutgoingMessages.js","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Meter } from "@opentelemetry/api";
|
|
1
2
|
import { type Peer } from "cojson";
|
|
2
3
|
import type { AnyWebSocket } from "./types.js";
|
|
3
4
|
export type CreateWebSocketPeerOpts = {
|
|
@@ -14,6 +15,7 @@ export type CreateWebSocketPeerOpts = {
|
|
|
14
15
|
* Additional key-value attributes to add to the ingress metric.
|
|
15
16
|
*/
|
|
16
17
|
meta?: Record<string, string | number>;
|
|
18
|
+
meter?: Meter;
|
|
17
19
|
};
|
|
18
|
-
export declare function createWebSocketPeer({ id, websocket, role, expectPings, batchingByDefault, deletePeerStateOnClose, pingTimeout, onSuccess, onClose, meta, }: CreateWebSocketPeerOpts): Peer;
|
|
20
|
+
export declare function createWebSocketPeer({ id, websocket, role, expectPings, batchingByDefault, deletePeerStateOnClose, pingTimeout, onSuccess, onClose, meter, meta, }: CreateWebSocketPeerOpts): Peer;
|
|
19
21
|
//# sourceMappingURL=createWebSocketPeer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWebSocketPeer.d.ts","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createWebSocketPeer.d.ts","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,IAAI,EAA2B,MAAM,QAAQ,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,YAAY,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAuCF,wBAAgB,mBAAmB,CAAC,EAClC,EAAE,EACF,SAAS,EACT,IAAI,EACJ,WAAkB,EAClB,iBAAwB,EACxB,sBAA8B,EAC9B,WAAoB,EACpB,SAAS,EACT,OAAO,EACP,KAAK,EACL,IAAI,GACL,EAAE,uBAAuB,GAAG,IAAI,CAwHhC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { metrics, ValueType } from "@opentelemetry/api";
|
|
2
2
|
import { cojsonInternals, logger } from "cojson";
|
|
3
3
|
import { BatchedOutgoingMessages } from "./BatchedOutgoingMessages.js";
|
|
4
4
|
import { deserializeMessages } from "./serialization.js";
|
|
@@ -32,16 +32,14 @@ function createClosedEventEmitter(callback = () => { }) {
|
|
|
32
32
|
callback();
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
export function createWebSocketPeer({ id, websocket, role, expectPings = true, batchingByDefault = true, deletePeerStateOnClose = false, pingTimeout = 10000, onSuccess, onClose, meta, }) {
|
|
36
|
-
const
|
|
37
|
-
.getMeter("cojson-transport-ws")
|
|
38
|
-
.createCounter("jazz.usage.ingress", {
|
|
35
|
+
export function createWebSocketPeer({ id, websocket, role, expectPings = true, batchingByDefault = true, deletePeerStateOnClose = false, pingTimeout = 10000, onSuccess, onClose, meter, meta, }) {
|
|
36
|
+
const ingressBytesCounter = (meter ?? metrics.getMeter("cojson-transport-ws")).createCounter("jazz.usage.ingress", {
|
|
39
37
|
description: "Total ingress bytes from peer",
|
|
40
38
|
unit: "bytes",
|
|
41
39
|
valueType: ValueType.INT,
|
|
42
40
|
});
|
|
43
41
|
// Initialize the counter by adding 0
|
|
44
|
-
|
|
42
|
+
ingressBytesCounter.add(0, meta);
|
|
45
43
|
const incoming = new ConnectedPeerChannel();
|
|
46
44
|
const emitClosedEvent = createClosedEventEmitter(onClose);
|
|
47
45
|
function handleClose() {
|
|
@@ -65,7 +63,7 @@ export function createWebSocketPeer({ id, websocket, role, expectPings = true, b
|
|
|
65
63
|
});
|
|
66
64
|
emitClosedEvent();
|
|
67
65
|
});
|
|
68
|
-
const outgoing = new BatchedOutgoingMessages(websocket, batchingByDefault, role, meta);
|
|
66
|
+
const outgoing = new BatchedOutgoingMessages(websocket, batchingByDefault, role, meta, meter);
|
|
69
67
|
let isFirstMessage = true;
|
|
70
68
|
function handleIncomingMsg(event) {
|
|
71
69
|
pingTimeoutListener.reset();
|
|
@@ -92,7 +90,7 @@ export function createWebSocketPeer({ id, websocket, role, expectPings = true, b
|
|
|
92
90
|
if (msg && "action" in msg) {
|
|
93
91
|
incoming.push(msg);
|
|
94
92
|
if (msg.action === "content") {
|
|
95
|
-
|
|
93
|
+
ingressBytesCounter.add(getContentMessageSize(msg), meta);
|
|
96
94
|
}
|
|
97
95
|
}
|
|
98
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWebSocketPeer.js","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createWebSocketPeer.js","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cojson-transport-ws",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.18.
|
|
4
|
+
"version": "0.18.32",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@opentelemetry/api": "^1.9.0",
|
|
10
|
-
"cojson": "0.18.
|
|
10
|
+
"cojson": "0.18.32"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@opentelemetry/sdk-metrics": "^2.0.0",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type Meter, metrics, ValueType } from "@opentelemetry/api";
|
|
2
2
|
import type { DisconnectedError, SyncMessage } from "cojson";
|
|
3
3
|
import type { Peer } from "cojson";
|
|
4
4
|
import {
|
|
@@ -27,13 +27,7 @@ export class BatchedOutgoingMessages
|
|
|
27
27
|
private queue: PriorityBasedMessageQueue;
|
|
28
28
|
private processing = false;
|
|
29
29
|
private closed = false;
|
|
30
|
-
private
|
|
31
|
-
.getMeter("cojson-transport-ws")
|
|
32
|
-
.createCounter("jazz.usage.egress", {
|
|
33
|
-
description: "Total egress bytes",
|
|
34
|
-
unit: "bytes",
|
|
35
|
-
valueType: ValueType.INT,
|
|
36
|
-
});
|
|
30
|
+
private egressBytesCounter;
|
|
37
31
|
|
|
38
32
|
constructor(
|
|
39
33
|
private websocket: AnyWebSocket,
|
|
@@ -43,7 +37,16 @@ export class BatchedOutgoingMessages
|
|
|
43
37
|
* Additional key-value pair of attributes to add to the egress metric.
|
|
44
38
|
*/
|
|
45
39
|
private meta?: Record<string, string | number>,
|
|
40
|
+
meter?: Meter,
|
|
46
41
|
) {
|
|
42
|
+
this.egressBytesCounter = (
|
|
43
|
+
meter ?? metrics.getMeter("cojson-transport-ws")
|
|
44
|
+
).createCounter("jazz.usage.egress", {
|
|
45
|
+
description: "Total egress bytes",
|
|
46
|
+
unit: "bytes",
|
|
47
|
+
valueType: ValueType.INT,
|
|
48
|
+
});
|
|
49
|
+
|
|
47
50
|
this.queue = new PriorityBasedMessageQueue(
|
|
48
51
|
CO_VALUE_PRIORITY.HIGH,
|
|
49
52
|
"outgoing",
|
|
@@ -53,7 +56,7 @@ export class BatchedOutgoingMessages
|
|
|
53
56
|
);
|
|
54
57
|
|
|
55
58
|
// Initialize the counter by adding 0
|
|
56
|
-
this.
|
|
59
|
+
this.egressBytesCounter.add(0, this.meta);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
push(msg: SyncMessage | DisconnectedError) {
|
|
@@ -110,7 +113,7 @@ export class BatchedOutgoingMessages
|
|
|
110
113
|
|
|
111
114
|
private processMessage(msg: SyncMessage) {
|
|
112
115
|
if (msg.action === "content") {
|
|
113
|
-
this.
|
|
116
|
+
this.egressBytesCounter.add(getContentMessageSize(msg), this.meta);
|
|
114
117
|
}
|
|
115
118
|
|
|
116
119
|
if (!this.batching) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type Peer,
|
|
1
|
+
import { type Meter, metrics, ValueType } from "@opentelemetry/api";
|
|
2
|
+
import { type Peer, cojsonInternals, logger } from "cojson";
|
|
3
3
|
import { BatchedOutgoingMessages } from "./BatchedOutgoingMessages.js";
|
|
4
4
|
import { deserializeMessages } from "./serialization.js";
|
|
5
5
|
import type { AnyWebSocket } from "./types.js";
|
|
@@ -20,6 +20,7 @@ export type CreateWebSocketPeerOpts = {
|
|
|
20
20
|
* Additional key-value attributes to add to the ingress metric.
|
|
21
21
|
*/
|
|
22
22
|
meta?: Record<string, string | number>;
|
|
23
|
+
meter?: Meter;
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
function createPingTimeoutListener(
|
|
@@ -69,18 +70,19 @@ export function createWebSocketPeer({
|
|
|
69
70
|
pingTimeout = 10_000,
|
|
70
71
|
onSuccess,
|
|
71
72
|
onClose,
|
|
73
|
+
meter,
|
|
72
74
|
meta,
|
|
73
75
|
}: CreateWebSocketPeerOpts): Peer {
|
|
74
|
-
const
|
|
75
|
-
.getMeter("cojson-transport-ws")
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
const ingressBytesCounter = (
|
|
77
|
+
meter ?? metrics.getMeter("cojson-transport-ws")
|
|
78
|
+
).createCounter("jazz.usage.ingress", {
|
|
79
|
+
description: "Total ingress bytes from peer",
|
|
80
|
+
unit: "bytes",
|
|
81
|
+
valueType: ValueType.INT,
|
|
82
|
+
});
|
|
81
83
|
|
|
82
84
|
// Initialize the counter by adding 0
|
|
83
|
-
|
|
85
|
+
ingressBytesCounter.add(0, meta);
|
|
84
86
|
|
|
85
87
|
const incoming = new ConnectedPeerChannel();
|
|
86
88
|
const emitClosedEvent = createClosedEventEmitter(onClose);
|
|
@@ -119,6 +121,7 @@ export function createWebSocketPeer({
|
|
|
119
121
|
batchingByDefault,
|
|
120
122
|
role,
|
|
121
123
|
meta,
|
|
124
|
+
meter,
|
|
122
125
|
);
|
|
123
126
|
let isFirstMessage = true;
|
|
124
127
|
|
|
@@ -155,7 +158,7 @@ export function createWebSocketPeer({
|
|
|
155
158
|
incoming.push(msg);
|
|
156
159
|
|
|
157
160
|
if (msg.action === "content") {
|
|
158
|
-
|
|
161
|
+
ingressBytesCounter.add(getContentMessageSize(msg), meta);
|
|
159
162
|
}
|
|
160
163
|
}
|
|
161
164
|
}
|