hypha-rpc 0.20.25 → 0.20.27
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/hypha-rpc-websocket.js +34 -11
- package/dist/hypha-rpc-websocket.js.map +1 -1
- package/dist/hypha-rpc-websocket.min.js +1 -1
- package/dist/hypha-rpc-websocket.min.js.map +1 -1
- package/dist/hypha-rpc-websocket.min.mjs +1 -1
- package/dist/hypha-rpc-websocket.min.mjs.map +1 -1
- package/dist/hypha-rpc-websocket.mjs +34 -11
- package/dist/hypha-rpc-websocket.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/rpc.js +31 -9
- package/src/websocket-client.js +3 -2
|
@@ -295,6 +295,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
295
295
|
workspace = null,
|
|
296
296
|
silent = false,
|
|
297
297
|
app_id = null,
|
|
298
|
+
server_base_url = null,
|
|
298
299
|
},
|
|
299
300
|
) {
|
|
300
301
|
super(debug);
|
|
@@ -311,6 +312,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
311
312
|
this._max_message_buffer_size = max_message_buffer_size;
|
|
312
313
|
this._chunk_store = {};
|
|
313
314
|
this._method_timeout = method_timeout || 30;
|
|
315
|
+
this._server_base_url = server_base_url;
|
|
314
316
|
|
|
315
317
|
// make sure there is an execute function
|
|
316
318
|
this._services = {};
|
|
@@ -346,7 +348,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
346
348
|
this._connection = connection;
|
|
347
349
|
const onConnected = async (connectionInfo) => {
|
|
348
350
|
if (!this._silent && this._connection.manager_id) {
|
|
349
|
-
console.
|
|
351
|
+
console.debug("Connection established, reporting services...");
|
|
350
352
|
const manager = await this.get_manager_service({
|
|
351
353
|
timeout: 10,
|
|
352
354
|
case_conversion: "camel",
|
|
@@ -356,9 +358,14 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
356
358
|
await manager.registerService(serviceInfo);
|
|
357
359
|
}
|
|
358
360
|
} else {
|
|
359
|
-
console.
|
|
361
|
+
console.debug("Connection established", connectionInfo);
|
|
362
|
+
}
|
|
363
|
+
if (connectionInfo) {
|
|
364
|
+
if (connectionInfo.public_base_url) {
|
|
365
|
+
this._server_base_url = connectionInfo.public_base_url;
|
|
366
|
+
}
|
|
367
|
+
this._fire("connected", connectionInfo);
|
|
360
368
|
}
|
|
361
|
-
this._fire("connected", connectionInfo);
|
|
362
369
|
};
|
|
363
370
|
connection.on_connected(onConnected);
|
|
364
371
|
onConnected();
|
|
@@ -394,6 +401,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
394
401
|
|
|
395
402
|
async ping(client_id, timeout) {
|
|
396
403
|
let method = this._generate_remote_method({
|
|
404
|
+
_rserver: this._server_base_url,
|
|
397
405
|
_rtarget: client_id,
|
|
398
406
|
_rmethod: "services.built-in.ping",
|
|
399
407
|
_rpromise: true,
|
|
@@ -583,6 +591,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
583
591
|
|
|
584
592
|
try {
|
|
585
593
|
const method = this._generate_remote_method({
|
|
594
|
+
_rserver: this._server_base_url,
|
|
586
595
|
_rtarget: provider,
|
|
587
596
|
_rmethod: "services.built-in.get_service",
|
|
588
597
|
_rpromise: true,
|
|
@@ -822,6 +831,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
822
831
|
let method_id = `${session_id}.${name}`;
|
|
823
832
|
let encoded = {
|
|
824
833
|
_rtype: "method",
|
|
834
|
+
_rserver: this._server_base_url,
|
|
825
835
|
_rtarget: local_workspace
|
|
826
836
|
? `${local_workspace}/${this._client_id}`
|
|
827
837
|
: this._client_id,
|
|
@@ -915,7 +925,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
915
925
|
data.slice(start_byte, start_byte + CHUNK_SIZE),
|
|
916
926
|
!!session_id,
|
|
917
927
|
);
|
|
918
|
-
console.
|
|
928
|
+
console.debug(
|
|
919
929
|
`Sending chunk ${idx + 1}/${chunk_num} (${total_size} bytes)`,
|
|
920
930
|
);
|
|
921
931
|
}
|
|
@@ -1077,7 +1087,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1077
1087
|
._send_chunks(message_package, target_id, remote_parent)
|
|
1078
1088
|
.then(function () {
|
|
1079
1089
|
if (timer) {
|
|
1080
|
-
|
|
1090
|
+
console.debug(`Start watchdog timer.`);
|
|
1081
1091
|
// Only start the timer after we send the message successfully
|
|
1082
1092
|
timer.start();
|
|
1083
1093
|
}
|
|
@@ -1094,6 +1104,9 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1094
1104
|
remote_method.__rpc_object__ = encoded_method;
|
|
1095
1105
|
const parts = method_id.split(".");
|
|
1096
1106
|
remote_method.__name__ = parts[parts.length - 1];
|
|
1107
|
+
if (remote_method.__name__.includes("#")) {
|
|
1108
|
+
remote_method.__name__ = remote_method.__name__.split("#")[1];
|
|
1109
|
+
}
|
|
1097
1110
|
remote_method.__doc__ =
|
|
1098
1111
|
encoded_method._rdoc || `Remote method: ${method_id}`;
|
|
1099
1112
|
remote_method.__schema__ = encoded_method._rschema;
|
|
@@ -1158,7 +1171,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1158
1171
|
if (promise.heartbeat && promise.interval) {
|
|
1159
1172
|
async function heartbeat() {
|
|
1160
1173
|
try {
|
|
1161
|
-
console.
|
|
1174
|
+
console.debug("Reset heartbeat timer: " + data.method);
|
|
1162
1175
|
await promise.heartbeat();
|
|
1163
1176
|
} catch (err) {
|
|
1164
1177
|
console.error(err);
|
|
@@ -1263,7 +1276,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1263
1276
|
`Runtime Error: Invalid number of arguments for method ${method_name}, expected ${method.length} but got ${args.length}`,
|
|
1264
1277
|
);
|
|
1265
1278
|
}
|
|
1266
|
-
|
|
1279
|
+
console.debug("Executing method: " + method_name);
|
|
1267
1280
|
if (data.promise) {
|
|
1268
1281
|
const result = method.apply(null, args);
|
|
1269
1282
|
if (result instanceof Promise) {
|
|
@@ -1356,7 +1369,14 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1356
1369
|
}
|
|
1357
1370
|
// Reuse the remote object
|
|
1358
1371
|
if (aObject.__rpc_object__) {
|
|
1359
|
-
|
|
1372
|
+
const _server = aObject.__rpc_object__._rserver || this._server_base_url;
|
|
1373
|
+
if (_server === this._server_base_url) {
|
|
1374
|
+
return aObject.__rpc_object__;
|
|
1375
|
+
} else {
|
|
1376
|
+
console.debug(
|
|
1377
|
+
`Encoding remote function from a different server ${_server}, current server: ${this._server_base_url}`,
|
|
1378
|
+
);
|
|
1379
|
+
}
|
|
1360
1380
|
}
|
|
1361
1381
|
|
|
1362
1382
|
let bObject;
|
|
@@ -1376,6 +1396,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1376
1396
|
let annotation = this._method_annotations.get(aObject);
|
|
1377
1397
|
bObject = {
|
|
1378
1398
|
_rtype: "method",
|
|
1399
|
+
_rserver: this._server_base_url,
|
|
1379
1400
|
_rtarget: this._client_id,
|
|
1380
1401
|
_rmethod: annotation.method_id,
|
|
1381
1402
|
_rpromise: true,
|
|
@@ -1384,12 +1405,13 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1384
1405
|
(0,_utils__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof session_id === "string");
|
|
1385
1406
|
let object_id;
|
|
1386
1407
|
if (aObject.__name__) {
|
|
1387
|
-
object_id = `${(0,_utils__WEBPACK_IMPORTED_MODULE_0__.randId)()}
|
|
1408
|
+
object_id = `${(0,_utils__WEBPACK_IMPORTED_MODULE_0__.randId)()}#${aObject.__name__}`;
|
|
1388
1409
|
} else {
|
|
1389
1410
|
object_id = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.randId)();
|
|
1390
1411
|
}
|
|
1391
1412
|
bObject = {
|
|
1392
1413
|
_rtype: "method",
|
|
1414
|
+
_rserver: this._server_base_url,
|
|
1393
1415
|
_rtarget: this._client_id,
|
|
1394
1416
|
_rmethod: `${session_id}.${object_id}`,
|
|
1395
1417
|
_rpromise: true,
|
|
@@ -4920,6 +4942,7 @@ async function connectToServer(config) {
|
|
|
4920
4942
|
name: config.name,
|
|
4921
4943
|
method_timeout: config.method_timeout,
|
|
4922
4944
|
app_id: config.app_id,
|
|
4945
|
+
server_base_url: connection_info.public_base_url,
|
|
4923
4946
|
});
|
|
4924
4947
|
const wm = await rpc.get_manager_service({
|
|
4925
4948
|
timeout: config.method_timeout,
|
|
@@ -5190,9 +5213,9 @@ async function connectToServer(config) {
|
|
|
5190
5213
|
return wm;
|
|
5191
5214
|
}
|
|
5192
5215
|
|
|
5193
|
-
async function getRemoteService(
|
|
5216
|
+
async function getRemoteService(serviceUri, config = {}) {
|
|
5194
5217
|
const { serverUrl, workspace, clientId, serviceId, appId } =
|
|
5195
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.parseServiceUrl)(
|
|
5218
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.parseServiceUrl)(serviceUri);
|
|
5196
5219
|
const fullServiceId = `${workspace}/${clientId}:${serviceId}@${appId}`;
|
|
5197
5220
|
|
|
5198
5221
|
if (config.serverUrl) {
|