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.
@@ -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.log("Connection established, reporting services...");
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.log("Connection established", connectionInfo);
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.log(
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
- // console.log(`Start watchdog timer.`);
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.log("Reset heartbeat timer: " + data.method);
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
- // console.log("Executing method: " + method_name);
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
- return aObject.__rpc_object__;
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)()}-${aObject.__name__}`;
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(url, config = {}) {
5216
+ async function getRemoteService(serviceUri, config = {}) {
5194
5217
  const { serverUrl, workspace, clientId, serviceId, appId } =
5195
- (0,_utils__WEBPACK_IMPORTED_MODULE_1__.parseServiceUrl)(url);
5218
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.parseServiceUrl)(serviceUri);
5196
5219
  const fullServiceId = `${workspace}/${clientId}:${serviceId}@${appId}`;
5197
5220
 
5198
5221
  if (config.serverUrl) {