@dxos/websocket-rpc 0.1.53 → 0.1.54-main.561047f
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.
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "@dxos/node-std/globals"
|
|
1
|
+
import "@dxos/node-std/globals";
|
|
2
2
|
|
|
3
3
|
// packages/core/mesh/websocket-rpc/src/client.ts
|
|
4
4
|
import WebSocket from "isomorphic-ws";
|
|
5
5
|
import { Event, Trigger } from "@dxos/async";
|
|
6
6
|
import { log, logInfo } from "@dxos/log";
|
|
7
7
|
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
8
|
-
|
|
8
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
9
9
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
10
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
11
11
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -14,7 +14,8 @@ var __decorate = function(decorators, target, key, desc) {
|
|
|
14
14
|
if (d = decorators[i])
|
|
15
15
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
16
16
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
17
|
-
}
|
|
17
|
+
}
|
|
18
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/websocket-rpc/src/client.ts";
|
|
18
19
|
var WebsocketRpcClient = class {
|
|
19
20
|
// prettier-ignore
|
|
20
21
|
constructor(_params) {
|
|
@@ -49,19 +50,19 @@ var WebsocketRpcClient = class {
|
|
|
49
50
|
async open() {
|
|
50
51
|
this._socket = new WebSocket(this._params.url);
|
|
51
52
|
this._socket.onopen = async () => {
|
|
52
|
-
log("Socket open",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
log("Socket open", void 0, {
|
|
54
|
+
F: __dxlog_file,
|
|
55
|
+
L: 59,
|
|
56
|
+
S: this,
|
|
57
|
+
C: (f, a) => f(...a)
|
|
57
58
|
});
|
|
58
59
|
try {
|
|
59
60
|
await this._rpc.open();
|
|
60
|
-
log(`RPC open ${this._params.url}`,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
log(`RPC open ${this._params.url}`, void 0, {
|
|
62
|
+
F: __dxlog_file,
|
|
63
|
+
L: 62,
|
|
64
|
+
S: this,
|
|
65
|
+
C: (f, a) => f(...a)
|
|
65
66
|
});
|
|
66
67
|
this.connected.emit();
|
|
67
68
|
this._connectTrigger.wake();
|
|
@@ -70,11 +71,11 @@ var WebsocketRpcClient = class {
|
|
|
70
71
|
}
|
|
71
72
|
};
|
|
72
73
|
this._socket.onclose = async () => {
|
|
73
|
-
log(`Disconnected ${this._params.url}`,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
log(`Disconnected ${this._params.url}`, void 0, {
|
|
75
|
+
F: __dxlog_file,
|
|
76
|
+
L: 71,
|
|
77
|
+
S: this,
|
|
78
|
+
C: (f, a) => f(...a)
|
|
78
79
|
});
|
|
79
80
|
this.disconnected.emit();
|
|
80
81
|
await this.close();
|
|
@@ -84,10 +85,10 @@ var WebsocketRpcClient = class {
|
|
|
84
85
|
log.error((_a = event.message) != null ? _a : "Socket error", {
|
|
85
86
|
url: this._params.url
|
|
86
87
|
}, {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
F: __dxlog_file,
|
|
89
|
+
L: 77,
|
|
90
|
+
S: this,
|
|
91
|
+
C: (f, a) => f(...a)
|
|
91
92
|
});
|
|
92
93
|
const error = (_b = event.error) != null ? _b : new Error(event.message);
|
|
93
94
|
this.error.emit(error);
|
|
@@ -100,11 +101,11 @@ var WebsocketRpcClient = class {
|
|
|
100
101
|
try {
|
|
101
102
|
await ((_a = this._rpc) == null ? void 0 : _a.close());
|
|
102
103
|
} catch (err) {
|
|
103
|
-
log.catch(err,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
log.catch(err, void 0, {
|
|
105
|
+
F: __dxlog_file,
|
|
106
|
+
L: 90,
|
|
107
|
+
S: this,
|
|
108
|
+
C: (f, a) => f(...a)
|
|
108
109
|
});
|
|
109
110
|
}
|
|
110
111
|
(_b = this._socket) == null ? void 0 : _b.close();
|
|
@@ -113,7 +114,7 @@ var WebsocketRpcClient = class {
|
|
|
113
114
|
return this._rpc.rpc;
|
|
114
115
|
}
|
|
115
116
|
};
|
|
116
|
-
|
|
117
|
+
_ts_decorate([
|
|
117
118
|
logInfo
|
|
118
119
|
], WebsocketRpcClient.prototype, "url", null);
|
|
119
120
|
|
|
@@ -121,6 +122,7 @@ __decorate([
|
|
|
121
122
|
import WebSocket2 from "isomorphic-ws";
|
|
122
123
|
import { log as log2 } from "@dxos/log";
|
|
123
124
|
import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
|
|
125
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/websocket-rpc/src/server.ts";
|
|
124
126
|
var WebsocketRpcServer = class {
|
|
125
127
|
constructor(_params) {
|
|
126
128
|
this._params = _params;
|
|
@@ -133,10 +135,10 @@ var WebsocketRpcServer = class {
|
|
|
133
135
|
log2("connection", {
|
|
134
136
|
request
|
|
135
137
|
}, {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
F: __dxlog_file2,
|
|
139
|
+
L: 34,
|
|
140
|
+
S: this,
|
|
141
|
+
C: (f, a) => f(...a)
|
|
140
142
|
});
|
|
141
143
|
const info = {
|
|
142
144
|
request
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/client.ts", "../../../src/server.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Event, Trigger } from '@dxos/async';\nimport { log, logInfo } from '@dxos/log';\nimport { createProtoRpcPeer, ProtoRpcPeer, ProtoRpcPeerOptions } from '@dxos/rpc';\n\nexport type WebsocketRpcClientParams<C, S> = {\n url: string;\n} & Pick<ProtoRpcPeerOptions<C, S>, 'requested' | 'exposed' | 'handlers'>;\n\nexport class WebsocketRpcClient<C, S> {\n private _socket?: WebSocket;\n private _rpc?: ProtoRpcPeer<C>;\n private readonly _connectTrigger = new Trigger();\n\n readonly connected = new Event();\n readonly disconnected = new Event();\n readonly error = new Event<Error>();\n\n // prettier-ignore\n constructor(\n private readonly _params: WebsocketRpcClientParams<C, S>\n ) {\n\n this._rpc = createProtoRpcPeer({\n requested: this._params.requested,\n exposed: this._params.exposed,\n handlers: this._params.handlers,\n port: {\n send: (msg) => {\n this._socket!.send(msg);\n },\n subscribe: (cb) => {\n this._socket!.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n }\n }\n });\n }\n\n @logInfo\n get url() {\n return this._params.url;\n }\n\n async open() {\n this._socket = new WebSocket(this._params.url);\n\n this._socket.onopen = async () => {\n log('Socket open');\n try {\n await this._rpc!.open();\n log(`RPC open ${this._params.url}`);\n this.connected.emit();\n this._connectTrigger.wake();\n } catch (err: any) {\n this.error.emit(err);\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._params.url}`);\n this.disconnected.emit();\n await this.close();\n };\n\n this._socket.onerror = (event: WebSocket.ErrorEvent) => {\n log.error(event.message ?? 'Socket error', { url: this._params.url });\n const error = event.error ?? new Error(event.message);\n this.error.emit(error);\n this._connectTrigger.throw(error);\n };\n\n await this._connectTrigger.wait();\n }\n\n async close() {\n try {\n await this._rpc?.close();\n } catch (err) {\n log.catch(err);\n }\n this._socket?.close();\n }\n\n get rpc() {\n return this._rpc!.rpc;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { IncomingMessage } from 'http';\nimport WebSocket from 'isomorphic-ws';\n\nimport { log } from '@dxos/log';\nimport { createProtoRpcPeer, ProtoRpcPeer, ProtoRpcPeerOptions } from '@dxos/rpc';\n\nexport type ConnectionInfo = {\n request: IncomingMessage;\n};\n\nexport type ConnectionHandler<C, S> = {\n onOpen?: (rpc: ProtoRpcPeer<C>) => Promise<void>;\n onClose?: (rpc: ProtoRpcPeer<C>) => Promise<void>;\n} & Pick<ProtoRpcPeerOptions<C, S>, 'requested' | 'exposed' | 'handlers'>;\n\nexport type WebsocketRpcServerParams<C, S> = {\n onConnection: (info: ConnectionInfo) => Promise<ConnectionHandler<C, S>>;\n} & WebSocket.ServerOptions;\n\nexport class WebsocketRpcServer<C, S> {\n private _server?: WebSocket.Server;\n\n constructor(private readonly _params: WebsocketRpcServerParams<C, S>) {}\n\n async open() {\n this._server = new WebSocket.Server({\n ...this._params,\n });\n this._server.on('connection', async (socket, request) => {\n log('connection', { request });\n const info: ConnectionInfo = {\n request,\n };\n const { onOpen, onClose, ...options } = await this._params.onConnection(info);\n const rpc = createProtoRpcPeer<C, S>({\n ...options,\n port: {\n send: (msg) => {\n socket.send(msg);\n },\n subscribe: (cb) => {\n socket.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n },\n },\n });\n\n await rpc.open();\n await onOpen?.(rpc);\n socket.onclose = async () => {\n await onClose?.(rpc);\n await rpc.close();\n };\n });\n }\n\n async close() {\n this._server?.close();\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,eAAe;AAEtB,SAASC,OAAOC,eAAe;AAC/B,SAASC,KAAKC,eAAe;AAC7B,SAASC,0BAA6D
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["WebSocket", "Event", "Trigger", "log", "logInfo", "createProtoRpcPeer", "WebsocketRpcClient", "constructor", "_params", "_connectTrigger", "connected", "disconnected", "error", "_rpc", "requested", "exposed", "handlers", "port", "send", "msg", "_socket", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "url", "open", "onopen", "emit", "wake", "err", "onclose", "close", "onerror", "event", "message", "Error", "throw", "wait", "catch", "rpc", "WebSocket", "log", "createProtoRpcPeer", "WebsocketRpcServer", "constructor", "_params", "open", "_server", "Server", "on", "socket", "request", "info", "onOpen", "onClose", "options", "onConnection", "rpc", "port", "send", "msg", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "onclose", "close"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/websocket-rpc/src/client.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/core/mesh/websocket-rpc/src/client.ts":{"bytes":10873,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}]},"packages/core/mesh/websocket-rpc/src/server.ts":{"bytes":6350,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}]},"packages/core/mesh/websocket-rpc/src/index.ts":{"bytes":552,"imports":[{"path":"packages/core/mesh/websocket-rpc/src/client.ts","kind":"import-statement","original":"./client"},{"path":"packages/core/mesh/websocket-rpc/src/server.ts","kind":"import-statement","original":"./server"}]}},"outputs":{"packages/core/mesh/websocket-rpc/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8053},"packages/core/mesh/websocket-rpc/dist/lib/browser/index.mjs":{"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["WebsocketRpcClient","WebsocketRpcServer"],"entryPoint":"packages/core/mesh/websocket-rpc/src/index.ts","inputs":{"packages/core/mesh/websocket-rpc/src/client.ts":{"bytesInOutput":3421},"packages/core/mesh/websocket-rpc/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/websocket-rpc/src/server.ts":{"bytesInOutput":1567}},"bytes":5213}}}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -40,7 +40,7 @@ var import_isomorphic_ws = __toESM(require("isomorphic-ws"));
|
|
|
40
40
|
var import_async = require("@dxos/async");
|
|
41
41
|
var import_log = require("@dxos/log");
|
|
42
42
|
var import_rpc = require("@dxos/rpc");
|
|
43
|
-
|
|
43
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
44
44
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
45
45
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
46
46
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -49,7 +49,8 @@ var __decorate = function(decorators, target, key, desc) {
|
|
|
49
49
|
if (d = decorators[i])
|
|
50
50
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
51
51
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
52
|
-
}
|
|
52
|
+
}
|
|
53
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/websocket-rpc/src/client.ts";
|
|
53
54
|
var WebsocketRpcClient = class {
|
|
54
55
|
// prettier-ignore
|
|
55
56
|
constructor(_params) {
|
|
@@ -84,19 +85,19 @@ var WebsocketRpcClient = class {
|
|
|
84
85
|
async open() {
|
|
85
86
|
this._socket = new import_isomorphic_ws.default(this._params.url);
|
|
86
87
|
this._socket.onopen = async () => {
|
|
87
|
-
(0, import_log.log)("Socket open",
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
(0, import_log.log)("Socket open", void 0, {
|
|
89
|
+
F: __dxlog_file,
|
|
90
|
+
L: 59,
|
|
91
|
+
S: this,
|
|
92
|
+
C: (f, a) => f(...a)
|
|
92
93
|
});
|
|
93
94
|
try {
|
|
94
95
|
await this._rpc.open();
|
|
95
|
-
(0, import_log.log)(`RPC open ${this._params.url}`,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
(0, import_log.log)(`RPC open ${this._params.url}`, void 0, {
|
|
97
|
+
F: __dxlog_file,
|
|
98
|
+
L: 62,
|
|
99
|
+
S: this,
|
|
100
|
+
C: (f, a) => f(...a)
|
|
100
101
|
});
|
|
101
102
|
this.connected.emit();
|
|
102
103
|
this._connectTrigger.wake();
|
|
@@ -105,11 +106,11 @@ var WebsocketRpcClient = class {
|
|
|
105
106
|
}
|
|
106
107
|
};
|
|
107
108
|
this._socket.onclose = async () => {
|
|
108
|
-
(0, import_log.log)(`Disconnected ${this._params.url}`,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
(0, import_log.log)(`Disconnected ${this._params.url}`, void 0, {
|
|
110
|
+
F: __dxlog_file,
|
|
111
|
+
L: 71,
|
|
112
|
+
S: this,
|
|
113
|
+
C: (f, a) => f(...a)
|
|
113
114
|
});
|
|
114
115
|
this.disconnected.emit();
|
|
115
116
|
await this.close();
|
|
@@ -119,10 +120,10 @@ var WebsocketRpcClient = class {
|
|
|
119
120
|
import_log.log.error((_a = event.message) != null ? _a : "Socket error", {
|
|
120
121
|
url: this._params.url
|
|
121
122
|
}, {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
F: __dxlog_file,
|
|
124
|
+
L: 77,
|
|
125
|
+
S: this,
|
|
126
|
+
C: (f, a) => f(...a)
|
|
126
127
|
});
|
|
127
128
|
const error = (_b = event.error) != null ? _b : new Error(event.message);
|
|
128
129
|
this.error.emit(error);
|
|
@@ -135,11 +136,11 @@ var WebsocketRpcClient = class {
|
|
|
135
136
|
try {
|
|
136
137
|
await ((_a = this._rpc) == null ? void 0 : _a.close());
|
|
137
138
|
} catch (err) {
|
|
138
|
-
import_log.log.catch(err,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
import_log.log.catch(err, void 0, {
|
|
140
|
+
F: __dxlog_file,
|
|
141
|
+
L: 90,
|
|
142
|
+
S: this,
|
|
143
|
+
C: (f, a) => f(...a)
|
|
143
144
|
});
|
|
144
145
|
}
|
|
145
146
|
(_b = this._socket) == null ? void 0 : _b.close();
|
|
@@ -148,7 +149,7 @@ var WebsocketRpcClient = class {
|
|
|
148
149
|
return this._rpc.rpc;
|
|
149
150
|
}
|
|
150
151
|
};
|
|
151
|
-
|
|
152
|
+
_ts_decorate([
|
|
152
153
|
import_log.logInfo
|
|
153
154
|
], WebsocketRpcClient.prototype, "url", null);
|
|
154
155
|
|
|
@@ -156,6 +157,7 @@ __decorate([
|
|
|
156
157
|
var import_isomorphic_ws2 = __toESM(require("isomorphic-ws"));
|
|
157
158
|
var import_log2 = require("@dxos/log");
|
|
158
159
|
var import_rpc2 = require("@dxos/rpc");
|
|
160
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/websocket-rpc/src/server.ts";
|
|
159
161
|
var WebsocketRpcServer = class {
|
|
160
162
|
constructor(_params) {
|
|
161
163
|
this._params = _params;
|
|
@@ -168,10 +170,10 @@ var WebsocketRpcServer = class {
|
|
|
168
170
|
(0, import_log2.log)("connection", {
|
|
169
171
|
request
|
|
170
172
|
}, {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
F: __dxlog_file2,
|
|
174
|
+
L: 34,
|
|
175
|
+
S: this,
|
|
176
|
+
C: (f, a) => f(...a)
|
|
175
177
|
});
|
|
176
178
|
const info = {
|
|
177
179
|
request
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/index.ts", "../../../src/client.ts", "../../../src/server.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nexport * from './client';\nexport * from './server';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Event, Trigger } from '@dxos/async';\nimport { log, logInfo } from '@dxos/log';\nimport { createProtoRpcPeer, ProtoRpcPeer, ProtoRpcPeerOptions } from '@dxos/rpc';\n\nexport type WebsocketRpcClientParams<C, S> = {\n url: string;\n} & Pick<ProtoRpcPeerOptions<C, S>, 'requested' | 'exposed' | 'handlers'>;\n\nexport class WebsocketRpcClient<C, S> {\n private _socket?: WebSocket;\n private _rpc?: ProtoRpcPeer<C>;\n private readonly _connectTrigger = new Trigger();\n\n readonly connected = new Event();\n readonly disconnected = new Event();\n readonly error = new Event<Error>();\n\n // prettier-ignore\n constructor(\n private readonly _params: WebsocketRpcClientParams<C, S>\n ) {\n\n this._rpc = createProtoRpcPeer({\n requested: this._params.requested,\n exposed: this._params.exposed,\n handlers: this._params.handlers,\n port: {\n send: (msg) => {\n this._socket!.send(msg);\n },\n subscribe: (cb) => {\n this._socket!.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n }\n }\n });\n }\n\n @logInfo\n get url() {\n return this._params.url;\n }\n\n async open() {\n this._socket = new WebSocket(this._params.url);\n\n this._socket.onopen = async () => {\n log('Socket open');\n try {\n await this._rpc!.open();\n log(`RPC open ${this._params.url}`);\n this.connected.emit();\n this._connectTrigger.wake();\n } catch (err: any) {\n this.error.emit(err);\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._params.url}`);\n this.disconnected.emit();\n await this.close();\n };\n\n this._socket.onerror = (event: WebSocket.ErrorEvent) => {\n log.error(event.message ?? 'Socket error', { url: this._params.url });\n const error = event.error ?? new Error(event.message);\n this.error.emit(error);\n this._connectTrigger.throw(error);\n };\n\n await this._connectTrigger.wait();\n }\n\n async close() {\n try {\n await this._rpc?.close();\n } catch (err) {\n log.catch(err);\n }\n this._socket?.close();\n }\n\n get rpc() {\n return this._rpc!.rpc;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { IncomingMessage } from 'http';\nimport WebSocket from 'isomorphic-ws';\n\nimport { log } from '@dxos/log';\nimport { createProtoRpcPeer, ProtoRpcPeer, ProtoRpcPeerOptions } from '@dxos/rpc';\n\nexport type ConnectionInfo = {\n request: IncomingMessage;\n};\n\nexport type ConnectionHandler<C, S> = {\n onOpen?: (rpc: ProtoRpcPeer<C>) => Promise<void>;\n onClose?: (rpc: ProtoRpcPeer<C>) => Promise<void>;\n} & Pick<ProtoRpcPeerOptions<C, S>, 'requested' | 'exposed' | 'handlers'>;\n\nexport type WebsocketRpcServerParams<C, S> = {\n onConnection: (info: ConnectionInfo) => Promise<ConnectionHandler<C, S>>;\n} & WebSocket.ServerOptions;\n\nexport class WebsocketRpcServer<C, S> {\n private _server?: WebSocket.Server;\n\n constructor(private readonly _params: WebsocketRpcServerParams<C, S>) {}\n\n async open() {\n this._server = new WebSocket.Server({\n ...this._params,\n });\n this._server.on('connection', async (socket, request) => {\n log('connection', { request });\n const info: ConnectionInfo = {\n request,\n };\n const { onOpen, onClose, ...options } = await this._params.onConnection(info);\n const rpc = createProtoRpcPeer<C, S>({\n ...options,\n port: {\n send: (msg) => {\n socket.send(msg);\n },\n subscribe: (cb) => {\n socket.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n },\n },\n });\n\n await rpc.open();\n await onOpen?.(rpc);\n socket.onclose = async () => {\n await onClose?.(rpc);\n await rpc.close();\n };\n });\n }\n\n async close() {\n this._server?.close();\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;ACIA,2BAAsB;AAEtB,mBAA+B;AAC/B,iBAA6B;AAC7B,iBAAsE
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["WebsocketRpcClient", "constructor", "_params", "_connectTrigger", "Trigger", "connected", "Event", "disconnected", "error", "_rpc", "createProtoRpcPeer", "requested", "exposed", "handlers", "port", "send", "msg", "_socket", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "url", "open", "WebSocket", "onopen", "log", "emit", "wake", "err", "onclose", "close", "onerror", "event", "message", "Error", "throw", "wait", "catch", "rpc", "logInfo", "import_isomorphic_ws", "import_log", "import_rpc", "WebsocketRpcServer", "constructor", "_params", "open", "_server", "WebSocket", "Server", "on", "socket", "request", "log", "info", "onOpen", "onClose", "options", "onConnection", "rpc", "createProtoRpcPeer", "port", "send", "msg", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "onclose", "close"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/websocket-rpc/src/client.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/core/mesh/websocket-rpc/src/client.ts":{"bytes":10873,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}]},"packages/core/mesh/websocket-rpc/src/server.ts":{"bytes":6350,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}]},"packages/core/mesh/websocket-rpc/src/index.ts":{"bytes":552,"imports":[{"path":"packages/core/mesh/websocket-rpc/src/client.ts","kind":"import-statement","original":"./client"},{"path":"packages/core/mesh/websocket-rpc/src/server.ts","kind":"import-statement","original":"./server"}]}},"outputs":{"packages/core/mesh/websocket-rpc/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8243},"packages/core/mesh/websocket-rpc/dist/lib/node/index.cjs":{"imports":[{"path":"isomorphic-ws","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/rpc","kind":"require-call","external":true},{"path":"isomorphic-ws","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/rpc","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/core/mesh/websocket-rpc/src/index.ts","inputs":{"packages/core/mesh/websocket-rpc/src/index.ts":{"bytesInOutput":189},"packages/core/mesh/websocket-rpc/src/client.ts":{"bytesInOutput":3597},"packages/core/mesh/websocket-rpc/src/server.ts":{"bytesInOutput":1609}},"bytes":7112}}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/websocket-rpc",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.54-main.561047f",
|
|
4
4
|
"description": "websocket-rpc",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"isomorphic-ws": "^4.0.1",
|
|
21
21
|
"ws": "^7.4.4",
|
|
22
|
-
"@dxos/async": "0.1.
|
|
23
|
-
"@dxos/codec-protobuf": "0.1.
|
|
24
|
-
"@dxos/context": "0.1.
|
|
25
|
-
"@dxos/keys": "0.1.
|
|
26
|
-
"@dxos/log": "0.1.
|
|
27
|
-
"@dxos/node-std": "0.1.
|
|
28
|
-
"@dxos/protocols": "0.1.
|
|
29
|
-
"@dxos/rpc": "0.1.
|
|
30
|
-
"@dxos/util": "0.1.
|
|
22
|
+
"@dxos/async": "0.1.54-main.561047f",
|
|
23
|
+
"@dxos/codec-protobuf": "0.1.54-main.561047f",
|
|
24
|
+
"@dxos/context": "0.1.54-main.561047f",
|
|
25
|
+
"@dxos/keys": "0.1.54-main.561047f",
|
|
26
|
+
"@dxos/log": "0.1.54-main.561047f",
|
|
27
|
+
"@dxos/node-std": "0.1.54-main.561047f",
|
|
28
|
+
"@dxos/protocols": "0.1.54-main.561047f",
|
|
29
|
+
"@dxos/rpc": "0.1.54-main.561047f",
|
|
30
|
+
"@dxos/util": "0.1.54-main.561047f"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^18.11.9",
|