hypha-rpc 0.20.42 → 0.20.44
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 +49 -10
- 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 +49 -10
- package/dist/hypha-rpc-websocket.mjs.map +1 -1
- package/package.json +1 -1
- package/src/rpc.js +49 -10
|
@@ -36,7 +36,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
const API_VERSION =
|
|
39
|
+
const API_VERSION = 2;
|
|
40
40
|
const CHUNK_SIZE = 1024 * 500;
|
|
41
41
|
|
|
42
42
|
const ArrayBufferView = Object.getPrototypeOf(
|
|
@@ -325,7 +325,11 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
325
325
|
id: "built-in",
|
|
326
326
|
type: "built-in",
|
|
327
327
|
name: `Built-in services for ${this._local_workspace}/${this._client_id}`,
|
|
328
|
-
config: {
|
|
328
|
+
config: {
|
|
329
|
+
require_context: true,
|
|
330
|
+
visibility: "public",
|
|
331
|
+
api_version: API_VERSION,
|
|
332
|
+
},
|
|
329
333
|
ping: this._ping.bind(this),
|
|
330
334
|
get_service: this.get_local_service.bind(this),
|
|
331
335
|
message_cache: {
|
|
@@ -474,6 +478,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
474
478
|
Object.assign(main, {
|
|
475
479
|
from: context.from,
|
|
476
480
|
to: context.to,
|
|
481
|
+
ws: context.ws,
|
|
477
482
|
user: context.user,
|
|
478
483
|
});
|
|
479
484
|
main["ctx"] = JSON.parse(JSON.stringify(main));
|
|
@@ -844,13 +849,11 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
844
849
|
let method_id = `${session_id}.${name}`;
|
|
845
850
|
let encoded = {
|
|
846
851
|
_rtype: "method",
|
|
847
|
-
_rserver: this._server_base_url,
|
|
848
852
|
_rtarget: local_workspace
|
|
849
853
|
? `${local_workspace}/${this._client_id}`
|
|
850
854
|
: this._client_id,
|
|
851
855
|
_rmethod: method_id,
|
|
852
856
|
_rpromise: false,
|
|
853
|
-
_rdoc: `callback: ${method_id}, context: (${description})`,
|
|
854
857
|
};
|
|
855
858
|
|
|
856
859
|
const self = this;
|
|
@@ -994,7 +997,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
994
997
|
encoded_method._rtarget = target_id;
|
|
995
998
|
}
|
|
996
999
|
let method_id = encoded_method._rmethod;
|
|
997
|
-
let with_promise = encoded_method._rpromise;
|
|
1000
|
+
let with_promise = encoded_method._rpromise || false;
|
|
998
1001
|
const description = `method: ${method_id}, docs: ${encoded_method._rdoc}`;
|
|
999
1002
|
const self = this;
|
|
1000
1003
|
|
|
@@ -1081,7 +1084,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1081
1084
|
break;
|
|
1082
1085
|
}
|
|
1083
1086
|
}
|
|
1084
|
-
|
|
1087
|
+
const promiseData = await self._encode_promise(
|
|
1085
1088
|
resolve,
|
|
1086
1089
|
reject,
|
|
1087
1090
|
local_session_id,
|
|
@@ -1090,6 +1093,15 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1090
1093
|
local_workspace,
|
|
1091
1094
|
description,
|
|
1092
1095
|
);
|
|
1096
|
+
|
|
1097
|
+
if (with_promise === true) {
|
|
1098
|
+
extra_data["promise"] = promiseData;
|
|
1099
|
+
} else if (with_promise === "*") {
|
|
1100
|
+
extra_data["promise"] = "*";
|
|
1101
|
+
extra_data["t"] = self._method_timeout / 2;
|
|
1102
|
+
} else {
|
|
1103
|
+
throw new Error(`Unsupported promise type: ${with_promise}`);
|
|
1104
|
+
}
|
|
1093
1105
|
}
|
|
1094
1106
|
// The message consists of two segments, the main message and extra data
|
|
1095
1107
|
let message_package = (0,_msgpack_msgpack__WEBPACK_IMPORTED_MODULE_3__.encode)(main_message);
|
|
@@ -1098,7 +1110,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1098
1110
|
message_package = new Uint8Array([...message_package, ...extra]);
|
|
1099
1111
|
}
|
|
1100
1112
|
const total_size = message_package.length;
|
|
1101
|
-
if (total_size <= CHUNK_SIZE + 1024) {
|
|
1113
|
+
if (total_size <= CHUNK_SIZE + 1024 || remote_method.__no_chunk__) {
|
|
1102
1114
|
self
|
|
1103
1115
|
._emit_message(message_package)
|
|
1104
1116
|
.then(function () {
|
|
@@ -1145,6 +1157,9 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1145
1157
|
remote_method.__doc__ =
|
|
1146
1158
|
encoded_method._rdoc || `Remote method: ${method_id}`;
|
|
1147
1159
|
remote_method.__schema__ = encoded_method._rschema;
|
|
1160
|
+
// Prevent circular chunk sending
|
|
1161
|
+
remote_method.__no_chunk__ =
|
|
1162
|
+
encoded_method._rmethod === "services.built-in.message_cache.append";
|
|
1148
1163
|
return remote_method;
|
|
1149
1164
|
}
|
|
1150
1165
|
|
|
@@ -1195,7 +1210,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1195
1210
|
// Decode the promise with the remote session id
|
|
1196
1211
|
// Such that the session id will be passed to the remote as a parent session id
|
|
1197
1212
|
const promise = await this._decode(
|
|
1198
|
-
data.promise,
|
|
1213
|
+
data.promise === "*" ? this._expand_promise(data) : data.promise,
|
|
1199
1214
|
data.session,
|
|
1200
1215
|
local_parent,
|
|
1201
1216
|
remote_workspace,
|
|
@@ -1434,7 +1449,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1434
1449
|
_rserver: this._server_base_url,
|
|
1435
1450
|
_rtarget: this._client_id,
|
|
1436
1451
|
_rmethod: annotation.method_id,
|
|
1437
|
-
_rpromise:
|
|
1452
|
+
_rpromise: "*",
|
|
1438
1453
|
};
|
|
1439
1454
|
} else {
|
|
1440
1455
|
(0,_utils__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof session_id === "string");
|
|
@@ -1449,7 +1464,7 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1449
1464
|
_rserver: this._server_base_url,
|
|
1450
1465
|
_rtarget: this._client_id,
|
|
1451
1466
|
_rmethod: `${session_id}.${object_id}`,
|
|
1452
|
-
_rpromise:
|
|
1467
|
+
_rpromise: "*",
|
|
1453
1468
|
};
|
|
1454
1469
|
let store = this._get_session_store(session_id, true);
|
|
1455
1470
|
(0,_utils__WEBPACK_IMPORTED_MODULE_0__.assert)(
|
|
@@ -1798,6 +1813,30 @@ class RPC extends _utils__WEBPACK_IMPORTED_MODULE_0__.MessageEmitter {
|
|
|
1798
1813
|
}
|
|
1799
1814
|
return bObject;
|
|
1800
1815
|
}
|
|
1816
|
+
|
|
1817
|
+
_expand_promise(data) {
|
|
1818
|
+
return {
|
|
1819
|
+
heartbeat: {
|
|
1820
|
+
_rtype: "method",
|
|
1821
|
+
_rtarget: data.from.split("/")[1],
|
|
1822
|
+
_rmethod: data.session + ".heartbeat",
|
|
1823
|
+
_rdoc: `heartbeat callback for method: ${data.method}`,
|
|
1824
|
+
},
|
|
1825
|
+
resolve: {
|
|
1826
|
+
_rtype: "method",
|
|
1827
|
+
_rtarget: data.from.split("/")[1],
|
|
1828
|
+
_rmethod: data.session + ".resolve",
|
|
1829
|
+
_rdoc: `resolve callback for method: ${data.method}`,
|
|
1830
|
+
},
|
|
1831
|
+
reject: {
|
|
1832
|
+
_rtype: "method",
|
|
1833
|
+
_rtarget: data.from.split("/")[1],
|
|
1834
|
+
_rmethod: data.session + ".reject",
|
|
1835
|
+
_rdoc: `reject callback for method: ${data.method}`,
|
|
1836
|
+
},
|
|
1837
|
+
interval: data.t,
|
|
1838
|
+
};
|
|
1839
|
+
}
|
|
1801
1840
|
}
|
|
1802
1841
|
|
|
1803
1842
|
|