@adminide-stack/extension-api 0.0.2-alpha.0

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.
Files changed (318) hide show
  1. package/LICENSE +39 -0
  2. package/README.md +9 -0
  3. package/lib/connections/jsonrpc2/connection.d.ts +55 -0
  4. package/lib/connections/jsonrpc2/connection.js +575 -0
  5. package/lib/connections/jsonrpc2/connection.js.map +1 -0
  6. package/lib/connections/jsonrpc2/connection.test.d.ts +1 -0
  7. package/lib/connections/jsonrpc2/connection.test.js +443 -0
  8. package/lib/connections/jsonrpc2/connection.test.js.map +1 -0
  9. package/lib/connections/jsonrpc2/events.d.ts +24 -0
  10. package/lib/connections/jsonrpc2/events.js +117 -0
  11. package/lib/connections/jsonrpc2/events.js.map +1 -0
  12. package/lib/connections/jsonrpc2/index.d.ts +5 -0
  13. package/lib/connections/jsonrpc2/index.js +24 -0
  14. package/lib/connections/jsonrpc2/index.js.map +1 -0
  15. package/lib/connections/jsonrpc2/linkedMap.d.ts +29 -0
  16. package/lib/connections/jsonrpc2/linkedMap.js +254 -0
  17. package/lib/connections/jsonrpc2/linkedMap.js.map +1 -0
  18. package/lib/connections/jsonrpc2/linkedMap.test.d.ts +1 -0
  19. package/lib/connections/jsonrpc2/linkedMap.test.js +62 -0
  20. package/lib/connections/jsonrpc2/linkedMap.test.js.map +1 -0
  21. package/lib/connections/jsonrpc2/messages.d.ts +117 -0
  22. package/lib/connections/jsonrpc2/messages.js +72 -0
  23. package/lib/connections/jsonrpc2/messages.js.map +1 -0
  24. package/lib/connections/jsonrpc2/test-helper.d.ts +8 -0
  25. package/lib/connections/jsonrpc2/test-helper.js +36 -0
  26. package/lib/connections/jsonrpc2/test-helper.js.map +1 -0
  27. package/lib/connections/jsonrpc2/trace.d.ts +30 -0
  28. package/lib/connections/jsonrpc2/trace.js +96 -0
  29. package/lib/connections/jsonrpc2/trace.js.map +1 -0
  30. package/lib/connections/jsonrpc2/transport.d.ts +36 -0
  31. package/lib/connections/jsonrpc2/transport.js +66 -0
  32. package/lib/connections/jsonrpc2/transport.js.map +1 -0
  33. package/lib/connections/jsonrpc2/transports/browser-websocket.d.ts +0 -0
  34. package/lib/connections/jsonrpc2/transports/browser-websocket.js +189 -0
  35. package/lib/connections/jsonrpc2/transports/browser-websocket.js.map +1 -0
  36. package/lib/connections/jsonrpc2/transports/merged.d.ts +0 -0
  37. package/lib/connections/jsonrpc2/transports/merged.js +239 -0
  38. package/lib/connections/jsonrpc2/transports/merged.js.map +1 -0
  39. package/lib/connections/jsonrpc2/transports/webSocket.d.ts +0 -0
  40. package/lib/connections/jsonrpc2/transports/webSocket.js +138 -0
  41. package/lib/connections/jsonrpc2/transports/webSocket.js.map +1 -0
  42. package/lib/connections/jsonrpc2/transports/webWorker.d.ts +22 -0
  43. package/lib/connections/jsonrpc2/transports/webWorker.js +111 -0
  44. package/lib/connections/jsonrpc2/transports/webWorker.js.map +1 -0
  45. package/lib/connections/proxy/index.d.ts +1 -0
  46. package/lib/connections/proxy/index.js +18 -0
  47. package/lib/connections/proxy/index.js.map +1 -0
  48. package/lib/connections/proxy/proxy.d.ts +49 -0
  49. package/lib/connections/proxy/proxy.js +108 -0
  50. package/lib/connections/proxy/proxy.js.map +1 -0
  51. package/lib/connections/proxy/proxy.test.d.ts +1 -0
  52. package/lib/connections/proxy/proxy.test.js +55 -0
  53. package/lib/connections/proxy/proxy.test.js.map +1 -0
  54. package/lib/connections/remote-rpc/browser-remote-rpc.d.ts +12 -0
  55. package/lib/connections/remote-rpc/browser-remote-rpc.js +62 -0
  56. package/lib/connections/remote-rpc/browser-remote-rpc.js.map +1 -0
  57. package/lib/connections/remote-rpc/browser-server-rpc.test.d.ts +0 -0
  58. package/lib/connections/remote-rpc/browser-server-rpc.test.js +317 -0
  59. package/lib/connections/remote-rpc/browser-server-rpc.test.js.map +1 -0
  60. package/lib/connections/remote-rpc/index.d.ts +1 -0
  61. package/lib/connections/remote-rpc/index.js +18 -0
  62. package/lib/connections/remote-rpc/index.js.map +1 -0
  63. package/lib/connections/remote-rpc/old-browser-remote-rpc.d.ts +12 -0
  64. package/lib/connections/remote-rpc/old-browser-remote-rpc.js +41 -0
  65. package/lib/connections/remote-rpc/old-browser-remote-rpc.js.map +1 -0
  66. package/lib/connections/remote-rpc/rxjs-websockets.d.ts +18 -0
  67. package/lib/connections/remote-rpc/rxjs-websockets.js +80 -0
  68. package/lib/connections/remote-rpc/rxjs-websockets.js.map +1 -0
  69. package/lib/constants/action-types.d.ts +30 -0
  70. package/lib/constants/action-types.js +38 -0
  71. package/lib/constants/action-types.js.map +1 -0
  72. package/lib/constants/index.d.ts +2 -0
  73. package/lib/constants/index.js +19 -0
  74. package/lib/constants/index.js.map +1 -0
  75. package/lib/constants/types.d.ts +8 -0
  76. package/lib/constants/types.js +12 -0
  77. package/lib/constants/types.js.map +1 -0
  78. package/lib/core/expr/evaluator.d.ts +27 -0
  79. package/lib/core/expr/evaluator.js +144 -0
  80. package/lib/core/expr/evaluator.js.map +1 -0
  81. package/lib/core/expr/evaluator.test.d.ts +1 -0
  82. package/lib/core/expr/evaluator.test.js +52 -0
  83. package/lib/core/expr/evaluator.test.js.map +1 -0
  84. package/lib/core/expr/index.d.ts +3 -0
  85. package/lib/core/expr/index.js +20 -0
  86. package/lib/core/expr/index.js.map +1 -0
  87. package/lib/core/expr/lexer.d.ts +114 -0
  88. package/lib/core/expr/lexer.js +418 -0
  89. package/lib/core/expr/lexer.js.map +1 -0
  90. package/lib/core/expr/parser.d.ts +52 -0
  91. package/lib/core/expr/parser.js +242 -0
  92. package/lib/core/expr/parser.js.map +1 -0
  93. package/lib/core/index.d.ts +2 -0
  94. package/lib/core/index.js +19 -0
  95. package/lib/core/index.js.map +1 -0
  96. package/lib/core/types/ext-host-types-bk.d.ts +0 -0
  97. package/lib/core/types/ext-host-types-bk.js +1275 -0
  98. package/lib/core/types/ext-host-types-bk.js.map +1 -0
  99. package/lib/core/types/ext-host-types.d.ts +32 -0
  100. package/lib/core/types/ext-host-types.js +71 -0
  101. package/lib/core/types/ext-host-types.js.map +1 -0
  102. package/lib/core/types/index.d.ts +1 -0
  103. package/lib/core/types/index.js +18 -0
  104. package/lib/core/types/index.js.map +1 -0
  105. package/lib/errors/errors.d.ts +1 -0
  106. package/lib/errors/errors.js +13 -0
  107. package/lib/errors/errors.js.map +1 -0
  108. package/lib/errors/index.d.ts +1 -0
  109. package/lib/errors/index.js +18 -0
  110. package/lib/errors/index.js.map +1 -0
  111. package/lib/index.d.ts +7 -0
  112. package/lib/index.js +24 -0
  113. package/lib/index.js.map +1 -0
  114. package/lib/interfaces/command.d.ts +28 -0
  115. package/lib/interfaces/command.js +3 -0
  116. package/lib/interfaces/command.js.map +1 -0
  117. package/lib/interfaces/configuration.d.ts +36 -0
  118. package/lib/interfaces/configuration.js +3 -0
  119. package/lib/interfaces/configuration.js.map +1 -0
  120. package/lib/interfaces/connection.d.ts +12 -0
  121. package/lib/interfaces/connection.js +3 -0
  122. package/lib/interfaces/connection.js.map +1 -0
  123. package/lib/interfaces/context.d.ts +12 -0
  124. package/lib/interfaces/context.js +3 -0
  125. package/lib/interfaces/context.js.map +1 -0
  126. package/lib/interfaces/contributions/contribution-service.d.ts +20 -0
  127. package/lib/interfaces/contributions/contribution-service.js +3 -0
  128. package/lib/interfaces/contributions/contribution-service.js.map +1 -0
  129. package/lib/interfaces/contributions/contribution.d.ts +383 -0
  130. package/lib/interfaces/contributions/contribution.js +49 -0
  131. package/lib/interfaces/contributions/contribution.js.map +1 -0
  132. package/lib/interfaces/contributions/index.d.ts +2 -0
  133. package/lib/interfaces/contributions/index.js +19 -0
  134. package/lib/interfaces/contributions/index.js.map +1 -0
  135. package/lib/interfaces/controller.d.ts +30 -0
  136. package/lib/interfaces/controller.js +3 -0
  137. package/lib/interfaces/controller.js.map +1 -0
  138. package/lib/interfaces/errors.d.ts +5 -0
  139. package/lib/interfaces/errors.js +3 -0
  140. package/lib/interfaces/errors.js.map +1 -0
  141. package/lib/interfaces/ext-services/contributon-registry.d.ts +45 -0
  142. package/lib/interfaces/ext-services/contributon-registry.js +3 -0
  143. package/lib/interfaces/ext-services/contributon-registry.js.map +1 -0
  144. package/lib/interfaces/ext-services/ext-services.d.ts +23 -0
  145. package/lib/interfaces/ext-services/ext-services.js +3 -0
  146. package/lib/interfaces/ext-services/ext-services.js.map +1 -0
  147. package/lib/interfaces/ext-services/extension-service.d.ts +8 -0
  148. package/lib/interfaces/ext-services/extension-service.js +3 -0
  149. package/lib/interfaces/ext-services/extension-service.js.map +1 -0
  150. package/lib/interfaces/ext-services/index.d.ts +8 -0
  151. package/lib/interfaces/ext-services/index.js +25 -0
  152. package/lib/interfaces/ext-services/index.js.map +1 -0
  153. package/lib/interfaces/ext-services/model-service.d.ts +89 -0
  154. package/lib/interfaces/ext-services/model-service.js +3 -0
  155. package/lib/interfaces/ext-services/model-service.js.map +1 -0
  156. package/lib/interfaces/ext-services/panel-view-registry.d.ts +21 -0
  157. package/lib/interfaces/ext-services/panel-view-registry.js +3 -0
  158. package/lib/interfaces/ext-services/panel-view-registry.js.map +1 -0
  159. package/lib/interfaces/ext-services/settings-service.d.ts +18 -0
  160. package/lib/interfaces/ext-services/settings-service.js +3 -0
  161. package/lib/interfaces/ext-services/settings-service.js.map +1 -0
  162. package/lib/interfaces/ext-services/view-service.d.ts +65 -0
  163. package/lib/interfaces/ext-services/view-service.js +4 -0
  164. package/lib/interfaces/ext-services/view-service.js.map +1 -0
  165. package/lib/interfaces/ext-services/viewer-service.d.ts +125 -0
  166. package/lib/interfaces/ext-services/viewer-service.js +5 -0
  167. package/lib/interfaces/ext-services/viewer-service.js.map +1 -0
  168. package/lib/interfaces/extension-manifest.d.ts +8 -0
  169. package/lib/interfaces/extension-manifest.js +3 -0
  170. package/lib/interfaces/extension-manifest.js.map +1 -0
  171. package/lib/interfaces/extension.d.ts +72 -0
  172. package/lib/interfaces/extension.js +3 -0
  173. package/lib/interfaces/extension.js.map +1 -0
  174. package/lib/interfaces/generated-models.d.ts +3716 -0
  175. package/lib/interfaces/generated-models.js +648 -0
  176. package/lib/interfaces/generated-models.js.map +1 -0
  177. package/lib/interfaces/graphql.d.ts +17 -0
  178. package/lib/interfaces/graphql.js +5 -0
  179. package/lib/interfaces/graphql.js.map +1 -0
  180. package/lib/interfaces/index.d.ts +21 -0
  181. package/lib/interfaces/index.js +38 -0
  182. package/lib/interfaces/index.js.map +1 -0
  183. package/lib/interfaces/languages-types.d.ts +65 -0
  184. package/lib/interfaces/languages-types.js +3 -0
  185. package/lib/interfaces/languages-types.js.map +1 -0
  186. package/lib/interfaces/model.d.ts +51 -0
  187. package/lib/interfaces/model.js +9 -0
  188. package/lib/interfaces/model.js.map +1 -0
  189. package/lib/interfaces/plain-types.d.ts +4 -0
  190. package/lib/interfaces/plain-types.js +6 -0
  191. package/lib/interfaces/plain-types.js.map +1 -0
  192. package/lib/interfaces/plainTypes.d.ts +68 -0
  193. package/lib/interfaces/plainTypes.js +3 -0
  194. package/lib/interfaces/plainTypes.js.map +1 -0
  195. package/lib/interfaces/platform-context.d.ts +82 -0
  196. package/lib/interfaces/platform-context.js +3 -0
  197. package/lib/interfaces/platform-context.js.map +1 -0
  198. package/lib/interfaces/react-props/action-item.d.ts +20 -0
  199. package/lib/interfaces/react-props/action-item.js +3 -0
  200. package/lib/interfaces/react-props/action-item.js.map +1 -0
  201. package/lib/interfaces/react-props/extension-controller.d.ts +11 -0
  202. package/lib/interfaces/react-props/extension-controller.js +3 -0
  203. package/lib/interfaces/react-props/extension-controller.js.map +1 -0
  204. package/lib/interfaces/react-props/index.d.ts +3 -0
  205. package/lib/interfaces/react-props/index.js +20 -0
  206. package/lib/interfaces/react-props/index.js.map +1 -0
  207. package/lib/interfaces/react-props/platform-context.d.ts +7 -0
  208. package/lib/interfaces/react-props/platform-context.js +3 -0
  209. package/lib/interfaces/react-props/platform-context.js.map +1 -0
  210. package/lib/interfaces/registry-extension.d.ts +21 -0
  211. package/lib/interfaces/registry-extension.js +3 -0
  212. package/lib/interfaces/registry-extension.js.map +1 -0
  213. package/lib/interfaces/settings.d.ts +51 -0
  214. package/lib/interfaces/settings.js +3 -0
  215. package/lib/interfaces/settings.js.map +1 -0
  216. package/lib/interfaces/text-document.d.ts +57 -0
  217. package/lib/interfaces/text-document.js +119 -0
  218. package/lib/interfaces/text-document.js.map +1 -0
  219. package/lib/interfaces/webview/index.d.ts +3 -0
  220. package/lib/interfaces/webview/index.js +20 -0
  221. package/lib/interfaces/webview/index.js.map +1 -0
  222. package/lib/interfaces/webview/webview-manager-service.d.ts +22 -0
  223. package/lib/interfaces/webview/webview-manager-service.js +3 -0
  224. package/lib/interfaces/webview/webview-manager-service.js.map +1 -0
  225. package/lib/interfaces/webview/webview-port-mapping.d.ts +4 -0
  226. package/lib/interfaces/webview/webview-port-mapping.js +3 -0
  227. package/lib/interfaces/webview/webview-port-mapping.js.map +1 -0
  228. package/lib/interfaces/webview/webview.d.ts +99 -0
  229. package/lib/interfaces/webview/webview.js +9 -0
  230. package/lib/interfaces/webview/webview.js.map +1 -0
  231. package/lib/main.d.ts +0 -0
  232. package/lib/main.js +3 -0
  233. package/lib/main.js.map +1 -0
  234. package/lib/protocol/client.protocol.d.ts +99 -0
  235. package/lib/protocol/client.protocol.js +8 -0
  236. package/lib/protocol/client.protocol.js.map +1 -0
  237. package/lib/protocol/common.protocol.d.ts +289 -0
  238. package/lib/protocol/common.protocol.js +68 -0
  239. package/lib/protocol/common.protocol.js.map +1 -0
  240. package/lib/protocol/editor-missing-types.d.ts +87 -0
  241. package/lib/protocol/editor-missing-types.js +10 -0
  242. package/lib/protocol/editor-missing-types.js.map +1 -0
  243. package/lib/protocol/index.d.ts +6 -0
  244. package/lib/protocol/index.js +24 -0
  245. package/lib/protocol/index.js.map +1 -0
  246. package/lib/protocol/proxy-identifier.d.ts +51 -0
  247. package/lib/protocol/proxy-identifier.js +59 -0
  248. package/lib/protocol/proxy-identifier.js.map +1 -0
  249. package/lib/protocol/rpc-logger.d.ts +8 -0
  250. package/lib/protocol/rpc-logger.js +60 -0
  251. package/lib/protocol/rpc-logger.js.map +1 -0
  252. package/lib/protocol/rpc-protocol.d.ts +148 -0
  253. package/lib/protocol/rpc-protocol.js +750 -0
  254. package/lib/protocol/rpc-protocol.js.map +1 -0
  255. package/lib/protocol/rpc-protocol.test.d.ts +1 -0
  256. package/lib/protocol/rpc-protocol.test.js +171 -0
  257. package/lib/protocol/rpc-protocol.test.js.map +1 -0
  258. package/lib/protocol/server.protocol-bk.d.ts +0 -0
  259. package/lib/protocol/server.protocol-bk.js +719 -0
  260. package/lib/protocol/server.protocol-bk.js.map +1 -0
  261. package/lib/protocol/server.protocol.d.ts +91 -0
  262. package/lib/protocol/server.protocol.js +31 -0
  263. package/lib/protocol/server.protocol.js.map +1 -0
  264. package/lib/protocol/shared/editor.d.ts +4 -0
  265. package/lib/protocol/shared/editor.js +28 -0
  266. package/lib/protocol/shared/editor.js.map +1 -0
  267. package/lib/protocol/shared/tasks.d.ts +104 -0
  268. package/lib/protocol/shared/tasks.js +4 -0
  269. package/lib/protocol/shared/tasks.js.map +1 -0
  270. package/lib/protocol/temporary-types.d.ts +198 -0
  271. package/lib/protocol/temporary-types.js +30 -0
  272. package/lib/protocol/temporary-types.js.map +1 -0
  273. package/lib/protocol/utils/index.d.ts +1 -0
  274. package/lib/protocol/utils/index.js +18 -0
  275. package/lib/protocol/utils/index.js.map +1 -0
  276. package/lib/protocol/utils/lazy-promise.d.ts +18 -0
  277. package/lib/protocol/utils/lazy-promise.js +69 -0
  278. package/lib/protocol/utils/lazy-promise.js.map +1 -0
  279. package/lib/utils/errors.d.ts +6 -0
  280. package/lib/utils/errors.js +19 -0
  281. package/lib/utils/errors.js.map +1 -0
  282. package/lib/utils/extensions.d.ts +9 -0
  283. package/lib/utils/extensions.js +25 -0
  284. package/lib/utils/extensions.js.map +1 -0
  285. package/lib/utils/helper.test.d.ts +9 -0
  286. package/lib/utils/helper.test.js +15 -0
  287. package/lib/utils/helper.test.js.map +1 -0
  288. package/lib/utils/index.d.ts +7 -0
  289. package/lib/utils/index.js +25 -0
  290. package/lib/utils/index.js.map +1 -0
  291. package/lib/utils/paths-util.d.ts +27 -0
  292. package/lib/utils/paths-util.js +127 -0
  293. package/lib/utils/paths-util.js.map +1 -0
  294. package/lib/utils/rxjs/combineLatestOrDefault.d.ts +28 -0
  295. package/lib/utils/rxjs/combineLatestOrDefault.js +111 -0
  296. package/lib/utils/rxjs/combineLatestOrDefault.js.map +1 -0
  297. package/lib/utils/rxjs/combineLatestOrDefault.test.d.ts +1 -0
  298. package/lib/utils/rxjs/combineLatestOrDefault.test.js +52 -0
  299. package/lib/utils/rxjs/combineLatestOrDefault.test.js.map +1 -0
  300. package/lib/utils/rxjs/index.d.ts +1 -0
  301. package/lib/utils/rxjs/index.js +18 -0
  302. package/lib/utils/rxjs/index.js.map +1 -0
  303. package/lib/utils/util.d.ts +19 -0
  304. package/lib/utils/util.js +57 -0
  305. package/lib/utils/util.js.map +1 -0
  306. package/lib/worker-lib/MessageTypes.d.ts +5 -0
  307. package/lib/worker-lib/MessageTypes.js +9 -0
  308. package/lib/worker-lib/MessageTypes.js.map +1 -0
  309. package/lib/worker-lib/index.d.ts +2 -0
  310. package/lib/worker-lib/index.js +19 -0
  311. package/lib/worker-lib/index.js.map +1 -0
  312. package/lib/worker-lib/webWorkerLink.d.ts +12 -0
  313. package/lib/worker-lib/webWorkerLink.js +96 -0
  314. package/lib/worker-lib/webWorkerLink.js.map +1 -0
  315. package/lib/worker-lib/workerUtils.d.ts +11 -0
  316. package/lib/worker-lib/workerUtils.js +178 -0
  317. package/lib/worker-lib/workerUtils.js.map +1 -0
  318. package/package.json +60 -0
@@ -0,0 +1,750 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArgType = exports.MessageType = exports.MessageIO = exports.MessageBuffer = exports.RPCProtocol = exports.ResponsiveState = exports.RequestInitiator = exports.safeStringify = void 0;
4
+ /* tslint:disable */
5
+ const async_1 = require("@vscode-alt/monaco-editor/esm/vs/base/common/async");
6
+ const cancellation_1 = require("@vscode-alt/monaco-editor/esm/vs/base/common/cancellation");
7
+ const errors = require("@vscode-alt/monaco-editor/esm/vs/base/common/errors");
8
+ const event_1 = require("@vscode-alt/monaco-editor/esm/vs/base/common/event");
9
+ const lifecycle_1 = require("@vscode-alt/monaco-editor/esm/vs/base/common/lifecycle");
10
+ const uriIpc_1 = require("@vscode-alt/monaco-editor/esm/vs/base/common/uriIpc");
11
+ const utils_1 = require("./utils");
12
+ const proxy_identifier_1 = require("./proxy-identifier");
13
+ const buffer_1 = require("@vscode-alt/monaco-editor/esm/vs/base/common/buffer");
14
+ function safeStringify(obj, replacer) {
15
+ try {
16
+ return JSON.stringify(obj, replacer);
17
+ }
18
+ catch (err) {
19
+ return 'null';
20
+ }
21
+ }
22
+ exports.safeStringify = safeStringify;
23
+ function createURIReplacer(transformer) {
24
+ if (!transformer) {
25
+ return null;
26
+ }
27
+ return (key, value) => {
28
+ if (value && value.$mid === 1) {
29
+ return transformer.transformOutgoing(value);
30
+ }
31
+ return value;
32
+ };
33
+ }
34
+ var RequestInitiator;
35
+ (function (RequestInitiator) {
36
+ RequestInitiator[RequestInitiator["LocalSide"] = 0] = "LocalSide";
37
+ RequestInitiator[RequestInitiator["OtherSide"] = 1] = "OtherSide";
38
+ })(RequestInitiator = exports.RequestInitiator || (exports.RequestInitiator = {}));
39
+ var ResponsiveState;
40
+ (function (ResponsiveState) {
41
+ ResponsiveState[ResponsiveState["Responsive"] = 0] = "Responsive";
42
+ ResponsiveState[ResponsiveState["Unresponsive"] = 1] = "Unresponsive";
43
+ })(ResponsiveState = exports.ResponsiveState || (exports.ResponsiveState = {}));
44
+ const noop = () => { };
45
+ class RPCProtocol extends lifecycle_1.Disposable {
46
+ constructor(protocol, _localHostId = null, logger = null, transformer = null) {
47
+ super();
48
+ this._onDidChangeResponsiveState = this._register(new event_1.Emitter());
49
+ this.onDidChangeResponsiveState = this._onDidChangeResponsiveState.event;
50
+ this.localHostId = _localHostId;
51
+ this._protocol = protocol;
52
+ this._logger = logger;
53
+ this._uriTransformer = transformer;
54
+ this._uriReplacer = createURIReplacer(this._uriTransformer);
55
+ this._isDisposed = false;
56
+ this._locals = [];
57
+ this._proxies = [];
58
+ for (let i = 0, len = proxy_identifier_1.ProxyIdentifier.count; i < len; i++) {
59
+ this._locals[i] = null;
60
+ this._proxies[i] = null;
61
+ }
62
+ this._lastMessageId = 0;
63
+ this._cancelInvokedHandlers = Object.create(null);
64
+ this._pendingRPCReplies = {};
65
+ this._responsiveState = 0 /* ResponsiveState.Responsive */;
66
+ this._unacknowledgedCount = 0;
67
+ this._unresponsiveTime = 0;
68
+ this._asyncCheckUresponsive = this._register(new async_1.RunOnceScheduler(() => this._checkUnresponsive(), 1000));
69
+ this._protocol.onMessage((msg) => this._receiveOneMessage(msg));
70
+ }
71
+ dispose() {
72
+ this._isDisposed = true;
73
+ // Release all outstanding promises with a canceled error
74
+ Object.keys(this._pendingRPCReplies).forEach((msgId) => {
75
+ const pending = this._pendingRPCReplies[msgId];
76
+ pending.resolveErr(errors.canceled());
77
+ });
78
+ }
79
+ _onWillSendRequest(req) {
80
+ if (this._unacknowledgedCount === 0) {
81
+ // Since this is the first request we are sending in a while,
82
+ // mark this moment as the start for the countdown to unresponsive time
83
+ this._unresponsiveTime = Date.now() + RPCProtocol.UNRESPONSIVE_TIME;
84
+ }
85
+ this._unacknowledgedCount++;
86
+ if (!this._asyncCheckUresponsive.isScheduled()) {
87
+ this._asyncCheckUresponsive.schedule();
88
+ }
89
+ }
90
+ _onDidReceiveAcknowledge(req) {
91
+ // The next possible unresponsive time is now + delta.
92
+ this._unresponsiveTime = Date.now() + RPCProtocol.UNRESPONSIVE_TIME;
93
+ this._unacknowledgedCount--;
94
+ if (this._unacknowledgedCount === 0) {
95
+ // No more need to check for unresponsive
96
+ this._asyncCheckUresponsive.cancel();
97
+ }
98
+ // The ext host is responsive!
99
+ this._setResponsiveState(0 /* ResponsiveState.Responsive */);
100
+ }
101
+ _checkUnresponsive() {
102
+ if (this._unacknowledgedCount === 0) {
103
+ // Not waiting for anything => cannot say if it is responsive or not
104
+ return;
105
+ }
106
+ if (Date.now() > this._unresponsiveTime) {
107
+ // Unresponsive!!
108
+ this._setResponsiveState(1 /* ResponsiveState.Unresponsive */);
109
+ }
110
+ else {
111
+ // Not (yet) unresponsive, be sure to check again soon
112
+ this._asyncCheckUresponsive.schedule();
113
+ }
114
+ }
115
+ _setResponsiveState(newResponsiveState) {
116
+ if (this._responsiveState === newResponsiveState) {
117
+ // no change
118
+ return;
119
+ }
120
+ this._responsiveState = newResponsiveState;
121
+ this._onDidChangeResponsiveState.fire(this._responsiveState);
122
+ }
123
+ get responsiveState() {
124
+ return this._responsiveState;
125
+ }
126
+ transformIncomingURIs(obj) {
127
+ if (!this._uriTransformer) {
128
+ return obj;
129
+ }
130
+ return (0, uriIpc_1.transformIncomingURIs)(obj, this._uriTransformer);
131
+ }
132
+ getProxy(identifier) {
133
+ const rpcId = identifier.nid;
134
+ if (!this._proxies[rpcId]) {
135
+ this._proxies[rpcId] = this._createProxy(rpcId, identifier.hostId);
136
+ }
137
+ return this._proxies[rpcId];
138
+ }
139
+ _createProxy(rpcId, destId) {
140
+ let handler = {
141
+ get: (target, name) => {
142
+ // @sri due to some issue we need to do this way
143
+ // if (!target[name] && name.charCodeAt(0) === CharCode.DollarSign) {
144
+ if (!target[name] && name[0] === '$') {
145
+ target[name] = (...myArgs) => {
146
+ return this._remoteCall(destId, rpcId, name, myArgs);
147
+ };
148
+ }
149
+ return target[name];
150
+ }
151
+ };
152
+ return new Proxy(Object.create(null), handler);
153
+ }
154
+ set(identifier, value) {
155
+ this._locals[identifier.nid] = value;
156
+ return value;
157
+ }
158
+ assertRegistered(identifiers) {
159
+ for (let i = 0, len = identifiers.length; i < len; i++) {
160
+ const identifier = identifiers[i];
161
+ if (!this._locals[identifier.nid]) {
162
+ // @sri to log missing identifier
163
+ console.log('identifer missing', identifier);
164
+ throw new Error(`Missing actor ${identifier.sid} (isMain: ${identifier.isMain})`);
165
+ }
166
+ }
167
+ }
168
+ _receiveOneMessage(rawmsg) {
169
+ if (this._isDisposed) {
170
+ return;
171
+ }
172
+ let senderHost = null;
173
+ let destHostId = null;
174
+ let leadNum = 0;
175
+ if (this.localHostId !== null) {
176
+ destHostId = rawmsg.readUInt8(0);
177
+ if (destHostId !== this.localHostId) {
178
+ return this._protocol.forward(rawmsg, destHostId);
179
+ }
180
+ leadNum = 2;
181
+ senderHost = rawmsg.readUInt8(1);
182
+ }
183
+ const msgLength = rawmsg.byteLength - leadNum;
184
+ const buff = MessageBuffer.read(rawmsg, leadNum);
185
+ const messageType = buff.readUInt8();
186
+ const req = buff.readUInt32();
187
+ switch (messageType) {
188
+ case 1 /* MessageType.RequestJSONArgs */:
189
+ case 2 /* MessageType.RequestJSONArgsWithCancellation */: {
190
+ let { rpcId, method, args } = MessageIO.deserializeRequestJSONArgs(buff);
191
+ if (this._uriTransformer) {
192
+ args = (0, uriIpc_1.transformIncomingURIs)(args, this._uriTransformer);
193
+ }
194
+ // @sri add senderHost for identification
195
+ this._receiveRequest(senderHost, msgLength, req, rpcId, method, args, (messageType === 2 /* MessageType.RequestJSONArgsWithCancellation */));
196
+ break;
197
+ }
198
+ case 3 /* MessageType.RequestMixedArgs */:
199
+ case 4 /* MessageType.RequestMixedArgsWithCancellation */: {
200
+ let { rpcId, method, args } = MessageIO.deserializeRequestMixedArgs(buff);
201
+ if (this._uriTransformer) {
202
+ args = (0, uriIpc_1.transformIncomingURIs)(args, this._uriTransformer);
203
+ }
204
+ // @sri add senderHost as identifier
205
+ this._receiveRequest(senderHost, msgLength, req, rpcId, method, args, (messageType === 4 /* MessageType.RequestMixedArgsWithCancellation */));
206
+ break;
207
+ }
208
+ case 5 /* MessageType.Acknowledged */: {
209
+ if (this._logger) {
210
+ this._logger.logIncoming(msgLength, req, 0 /* RequestInitiator.LocalSide */, `ack`);
211
+ }
212
+ this._onDidReceiveAcknowledge(req);
213
+ break;
214
+ }
215
+ case 6 /* MessageType.Cancel */: {
216
+ this._receiveCancel(msgLength, req);
217
+ break;
218
+ }
219
+ case 7 /* MessageType.ReplyOKEmpty */: {
220
+ this._receiveReply(msgLength, req, undefined);
221
+ break;
222
+ }
223
+ case 9 /* MessageType.ReplyOKJSON */: {
224
+ let value = MessageIO.deserializeReplyOKJSON(buff);
225
+ if (this._uriTransformer) {
226
+ value = (0, uriIpc_1.transformIncomingURIs)(value, this._uriTransformer);
227
+ }
228
+ this._receiveReply(msgLength, req, value);
229
+ break;
230
+ }
231
+ case 8 /* MessageType.ReplyOKBuffer */: {
232
+ let value = MessageIO.deserializeReplyOKBuffer(buff);
233
+ this._receiveReply(msgLength, req, value);
234
+ break;
235
+ }
236
+ case 8 /* MessageType.ReplyOKVSBuffer */: {
237
+ let value = MessageIO.deserializeReplyOKVSBuffer(buff);
238
+ this._receiveReply(msgLength, req, value);
239
+ break;
240
+ }
241
+ case 10 /* MessageType.ReplyErrError */: {
242
+ let err = MessageIO.deserializeReplyErrError(buff);
243
+ if (this._uriTransformer) {
244
+ err = (0, uriIpc_1.transformIncomingURIs)(err, this._uriTransformer);
245
+ }
246
+ this._receiveReplyErr(msgLength, req, err);
247
+ break;
248
+ }
249
+ case 11 /* MessageType.ReplyErrEmpty */: {
250
+ this._receiveReplyErr(msgLength, req, undefined);
251
+ break;
252
+ }
253
+ default:
254
+ console.error(`received unexpected message`);
255
+ console.error(rawmsg);
256
+ }
257
+ }
258
+ //@sri added destId for identification
259
+ _receiveRequest(destId, msgLength, req, rpcId, method, args, usesCancellationToken) {
260
+ if (this._logger) {
261
+ this._logger.logIncoming(msgLength, req, 1 /* RequestInitiator.OtherSide */, `receiveRequest ${(0, proxy_identifier_1.getStringIdentifierForProxy)(rpcId)}.${method}(`, args);
262
+ }
263
+ const callId = String(req);
264
+ let promise;
265
+ let cancel;
266
+ if (usesCancellationToken) {
267
+ const cancellationTokenSource = new cancellation_1.CancellationTokenSource();
268
+ args.push(cancellationTokenSource.token);
269
+ promise = this._invokeHandler(rpcId, method, args);
270
+ cancel = () => cancellationTokenSource.cancel();
271
+ }
272
+ else {
273
+ // cannot be cancelled
274
+ promise = this._invokeHandler(rpcId, method, args);
275
+ cancel = noop;
276
+ }
277
+ this._cancelInvokedHandlers[callId] = cancel;
278
+ // Acknowledge the request
279
+ const msg = MessageIO.serializeAcknowledged(req);
280
+ if (this._logger) {
281
+ this._logger.logOutgoing(msg.byteLength, req, 1 /* RequestInitiator.OtherSide */, `ack`);
282
+ }
283
+ this._protocol.send(msg, destId);
284
+ promise.then((r) => {
285
+ delete this._cancelInvokedHandlers[callId];
286
+ const msg = MessageIO.serializeReplyOK(req, r, this._uriReplacer);
287
+ if (this._logger) {
288
+ this._logger.logOutgoing(msg.byteLength, req, 1 /* RequestInitiator.OtherSide */, `reply:`, r);
289
+ }
290
+ this._protocol.send(msg, destId);
291
+ }, (err) => {
292
+ delete this._cancelInvokedHandlers[callId];
293
+ const msg = MessageIO.serializeReplyErr(req, err);
294
+ if (this._logger) {
295
+ this._logger.logOutgoing(msg.byteLength, req, 1 /* RequestInitiator.OtherSide */, `replyErr:`, err);
296
+ }
297
+ this._protocol.send(msg, destId);
298
+ });
299
+ }
300
+ _receiveCancel(msgLength, req) {
301
+ if (this._logger) {
302
+ this._logger.logIncoming(msgLength, req, 1 /* RequestInitiator.OtherSide */, `receiveCancel`);
303
+ }
304
+ const callId = String(req);
305
+ if (this._cancelInvokedHandlers[callId]) {
306
+ this._cancelInvokedHandlers[callId]();
307
+ }
308
+ }
309
+ _receiveReply(msgLength, req, value) {
310
+ if (this._logger) {
311
+ this._logger.logIncoming(msgLength, req, 0 /* RequestInitiator.LocalSide */, `receiveReply:`, value);
312
+ }
313
+ const callId = String(req);
314
+ if (!this._pendingRPCReplies.hasOwnProperty(callId)) {
315
+ return;
316
+ }
317
+ const pendingReply = this._pendingRPCReplies[callId];
318
+ delete this._pendingRPCReplies[callId];
319
+ pendingReply.resolveOk(value);
320
+ }
321
+ _receiveReplyErr(msgLength, req, value) {
322
+ if (this._logger) {
323
+ this._logger.logIncoming(msgLength, req, 0 /* RequestInitiator.LocalSide */, `receiveReplyErr:`, value);
324
+ }
325
+ const callId = String(req);
326
+ if (!this._pendingRPCReplies.hasOwnProperty(callId)) {
327
+ return;
328
+ }
329
+ const pendingReply = this._pendingRPCReplies[callId];
330
+ delete this._pendingRPCReplies[callId];
331
+ let err = null;
332
+ if (value && value.$isError) {
333
+ err = new Error();
334
+ err.name = value.name;
335
+ err.message = value.message;
336
+ err.stack = value.stack;
337
+ }
338
+ pendingReply.resolveErr(err);
339
+ }
340
+ _invokeHandler(rpcId, methodName, args) {
341
+ try {
342
+ return Promise.resolve(this._doInvokeHandler(rpcId, methodName, args));
343
+ }
344
+ catch (err) {
345
+ return Promise.reject(err);
346
+ }
347
+ }
348
+ _doInvokeHandler(rpcId, methodName, args) {
349
+ const actor = this._locals[rpcId];
350
+ if (!actor) {
351
+ // @sri add logging
352
+ console.log('Unknown actor: ', { actor: this._locals[0], exists: this._locals.hasOwnProperty(rpcId), actors: Object.keys(this._locals), rpcId });
353
+ throw new Error('Unknown actor ' + (0, proxy_identifier_1.getStringIdentifierForProxy)(rpcId));
354
+ }
355
+ let method = actor[methodName];
356
+ if (typeof method !== 'function') {
357
+ throw new Error('Unknown method ' + methodName + ' on actor ' + (0, proxy_identifier_1.getStringIdentifierForProxy)(rpcId));
358
+ }
359
+ return method.apply(actor, args);
360
+ }
361
+ _remoteCall(destId, rpcId, methodName, args) {
362
+ if (this._isDisposed) {
363
+ return Promise.reject(errors.canceled());
364
+ }
365
+ let cancellationToken = null;
366
+ if (args.length > 0 && cancellation_1.CancellationToken.isCancellationToken(args[args.length - 1])) {
367
+ cancellationToken = args.pop();
368
+ }
369
+ if (cancellationToken && cancellationToken.isCancellationRequested) {
370
+ // No need to do anything...
371
+ return Promise.reject(errors.canceled());
372
+ }
373
+ const req = ++this._lastMessageId;
374
+ const callId = String(req);
375
+ const result = new utils_1.LazyPromise();
376
+ if (cancellationToken) {
377
+ cancellationToken.onCancellationRequested(() => {
378
+ const msg = MessageIO.serializeCancel(req);
379
+ if (this._logger) {
380
+ this._logger.logOutgoing(msg.byteLength, req, 0 /* RequestInitiator.LocalSide */, `cancel`);
381
+ }
382
+ this._protocol.send(MessageIO.serializeCancel(req), destId);
383
+ });
384
+ }
385
+ this._pendingRPCReplies[callId] = result;
386
+ this._onWillSendRequest(req);
387
+ const msg = MessageIO.serializeRequest(req, rpcId, methodName, args, !!cancellationToken, this._uriReplacer);
388
+ if (this._logger) {
389
+ this._logger.logOutgoing(msg.byteLength, req, 0 /* RequestInitiator.LocalSide */, `request: ${(0, proxy_identifier_1.getStringIdentifierForProxy)(rpcId)}.${methodName}(`, args);
390
+ }
391
+ this._protocol.send(msg, destId);
392
+ return result;
393
+ }
394
+ }
395
+ exports.RPCProtocol = RPCProtocol;
396
+ RPCProtocol.UNRESPONSIVE_TIME = 3 * 1000; // 3s
397
+ class MessageBuffer {
398
+ constructor(buff, offset) {
399
+ this._buff = buff;
400
+ this._offset = offset;
401
+ }
402
+ static alloc(type, req, messageSize) {
403
+ let result = new MessageBuffer(buffer_1.VSBuffer.alloc(messageSize + 1 /* type */ + 4 /* req */), 0);
404
+ result.writeUInt8(type);
405
+ result.writeUInt32(req);
406
+ return result;
407
+ }
408
+ static read(buff, offset) {
409
+ return new MessageBuffer(buff, offset);
410
+ }
411
+ get buffer() {
412
+ return this._buff;
413
+ }
414
+ static sizeUInt8() {
415
+ return 1;
416
+ }
417
+ writeUInt8(n) {
418
+ this._buff.writeUInt8(n, this._offset);
419
+ this._offset += 1;
420
+ }
421
+ readUInt8() {
422
+ const n = this._buff.readUInt8(this._offset);
423
+ this._offset += 1;
424
+ return n;
425
+ }
426
+ writeUInt32(n) {
427
+ this._buff.writeUInt32BE(n, this._offset);
428
+ this._offset += 4;
429
+ }
430
+ readUInt32() {
431
+ const n = this._buff.readUInt32BE(this._offset);
432
+ this._offset += 4;
433
+ return n;
434
+ }
435
+ static sizeShortString(str) {
436
+ return 1 /* string length */ + str.byteLength /* actual string */;
437
+ }
438
+ writeShortString(str) {
439
+ this._buff.writeUInt8(str.byteLength, this._offset);
440
+ this._offset += 1;
441
+ this._buff.set(str, this._offset);
442
+ this._offset += str.byteLength;
443
+ }
444
+ readShortString() {
445
+ const strByteLength = this._buff.readUInt8(this._offset);
446
+ this._offset += 1;
447
+ const strBuff = this._buff.slice(this._offset, this._offset + strByteLength);
448
+ const str = strBuff.toString();
449
+ this._offset += strByteLength;
450
+ return str;
451
+ }
452
+ static sizeLongString(str) {
453
+ return 4 /* string length */ + str.byteLength /* actual string */;
454
+ }
455
+ writeLongString(str) {
456
+ this._buff.writeUInt32BE(str.byteLength, this._offset);
457
+ this._offset += 4;
458
+ this._buff.set(str, this._offset);
459
+ this._offset += str.byteLength;
460
+ }
461
+ readLongString() {
462
+ const strByteLength = this._buff.readUInt32BE(this._offset);
463
+ this._offset += 4;
464
+ const strBuff = this._buff.slice(this._offset, this._offset + strByteLength);
465
+ const str = strBuff.toString();
466
+ this._offset += strByteLength;
467
+ return str;
468
+ }
469
+ static sizeBuffer(buff) {
470
+ return 4 /* buffer length */ + buff.byteLength /* actual buffer */;
471
+ }
472
+ writeBuffer(buff) {
473
+ this._buff.writeUInt32BE(buff.byteLength, this._offset);
474
+ this._offset += 4;
475
+ this._buff.set(buff, this._offset);
476
+ this._offset += buff.byteLength;
477
+ }
478
+ readBuffer() {
479
+ const buffLength = this._buff.readUInt32BE(this._offset);
480
+ this._offset += 4;
481
+ const buff = this._buff.slice(this._offset, this._offset + buffLength);
482
+ this._offset += buffLength;
483
+ return buff.buffer;
484
+ }
485
+ static sizeVSBuffer(buff) {
486
+ return 4 /* buffer length */ + buff.byteLength /* actual buffer */;
487
+ }
488
+ writeVSBuffer(buff) {
489
+ this._buff.writeUInt32BE(buff.byteLength, this._offset);
490
+ this._offset += 4;
491
+ this._buff.set(buff, this._offset);
492
+ this._offset += buff.byteLength;
493
+ }
494
+ readVSBuffer() {
495
+ const buffLength = this._buff.readUInt32BE(this._offset);
496
+ this._offset += 4;
497
+ const buff = this._buff.slice(this._offset, this._offset + buffLength);
498
+ this._offset += buffLength;
499
+ return buff;
500
+ }
501
+ static sizeMixedArray(arr, arrType) {
502
+ let size = 0;
503
+ size += 1; // arr length
504
+ for (let i = 0, len = arr.length; i < len; i++) {
505
+ const el = arr[i];
506
+ const elType = arrType[i];
507
+ size += 1; // arg type
508
+ if (elType === 1 /* ArgType.String */) {
509
+ size += this.sizeLongString(el);
510
+ }
511
+ else if (elType === 2 /* ArgType.Buffer */) {
512
+ size += this.sizeBuffer(el);
513
+ }
514
+ else {
515
+ size += this.sizeVSBuffer(el);
516
+ }
517
+ }
518
+ return size;
519
+ }
520
+ writeMixedArray(arr, arrType) {
521
+ this._buff.writeUInt8(arr.length, this._offset);
522
+ this._offset += 1;
523
+ for (let i = 0, len = arr.length; i < len; i++) {
524
+ const el = arr[i];
525
+ const elType = arrType[i];
526
+ if (elType === 1 /* ArgType.String */) {
527
+ this.writeUInt8(1 /* ArgType.String */);
528
+ this.writeLongString(el);
529
+ }
530
+ else if (elType === 2 /* ArgType.Buffer */) {
531
+ this.writeUInt8(2 /* ArgType.Buffer */);
532
+ this.writeVSBuffer(el);
533
+ }
534
+ else {
535
+ this.writeUInt8(3 /* ArgType.VSBuffer */);
536
+ this.writeVSBuffer(el);
537
+ }
538
+ }
539
+ }
540
+ readMixedArray() {
541
+ const arrLen = this._buff.readUInt8(this._offset);
542
+ this._offset += 1;
543
+ let arr = new Array(arrLen);
544
+ for (let i = 0; i < arrLen; i++) {
545
+ const argType = this.readUInt8();
546
+ switch (argType) {
547
+ case 1 /* ArgType.String */:
548
+ arr[i] = this.readLongString();
549
+ break;
550
+ case 2 /* ArgType.Buffer */:
551
+ arr[i] = this.readBuffer();
552
+ break;
553
+ case 3 /* ArgType.VSBuffer */:
554
+ arr[i] = this.readVSBuffer();
555
+ break;
556
+ }
557
+ }
558
+ return arr;
559
+ }
560
+ }
561
+ exports.MessageBuffer = MessageBuffer;
562
+ class MessageIO {
563
+ static _arrayContainsBuffer(arr) {
564
+ for (let i = 0, len = arr.length; i < len; i++) {
565
+ if (Buffer.isBuffer(arr[i])) {
566
+ return true;
567
+ }
568
+ if (arr[i] instanceof buffer_1.VSBuffer) {
569
+ return true;
570
+ }
571
+ }
572
+ return false;
573
+ }
574
+ static serializeRequest(req, rpcId, method, args, usesCancellationToken, replacer) {
575
+ if (this._arrayContainsBuffer(args)) {
576
+ let massagedArgs = [];
577
+ let massagedArgsType = [];
578
+ for (let i = 0, len = args.length; i < len; i++) {
579
+ const arg = args[i];
580
+ if (Buffer.isBuffer(arg)) {
581
+ massagedArgs[i] = buffer_1.VSBuffer.wrap(arg);
582
+ massagedArgsType[i] = 2 /* ArgType.Buffer */;
583
+ }
584
+ else if (arg instanceof buffer_1.VSBuffer) {
585
+ massagedArgs[i] = arg;
586
+ massagedArgsType[i] = 3 /* ArgType.VSBuffer */;
587
+ }
588
+ else {
589
+ massagedArgs[i] = buffer_1.VSBuffer.fromString(safeStringify(arg, replacer));
590
+ massagedArgsType[i] = 1 /* ArgType.String */;
591
+ }
592
+ }
593
+ return this._requestMixedArgs(req, rpcId, method, massagedArgs, massagedArgsType, usesCancellationToken);
594
+ }
595
+ return this._requestJSONArgs(req, rpcId, method, safeStringify(args, replacer), usesCancellationToken);
596
+ }
597
+ static _requestJSONArgs(req, rpcId, method, args, usesCancellationToken) {
598
+ const methodBuff = buffer_1.VSBuffer.fromString(method);
599
+ const argsBuff = buffer_1.VSBuffer.fromString(args);
600
+ let len = 0;
601
+ len += MessageBuffer.sizeUInt8();
602
+ len += MessageBuffer.sizeShortString(methodBuff);
603
+ len += MessageBuffer.sizeLongString(argsBuff);
604
+ let result = MessageBuffer.alloc(usesCancellationToken ? 2 /* MessageType.RequestJSONArgsWithCancellation */ : 1 /* MessageType.RequestJSONArgs */, req, len);
605
+ result.writeUInt8(rpcId);
606
+ result.writeShortString(methodBuff);
607
+ result.writeLongString(argsBuff);
608
+ return result.buffer;
609
+ }
610
+ static deserializeRequestJSONArgs(buff) {
611
+ const rpcId = buff.readUInt8();
612
+ const method = buff.readShortString();
613
+ const args = buff.readLongString();
614
+ return {
615
+ rpcId: rpcId,
616
+ method: method,
617
+ args: JSON.parse(args)
618
+ };
619
+ }
620
+ static _requestMixedArgs(req, rpcId, method, args, argsType, usesCancellationToken) {
621
+ const methodBuff = buffer_1.VSBuffer.fromString(method);
622
+ let len = 0;
623
+ len += MessageBuffer.sizeUInt8();
624
+ len += MessageBuffer.sizeShortString(methodBuff);
625
+ len += MessageBuffer.sizeMixedArray(args, argsType);
626
+ let result = MessageBuffer.alloc(usesCancellationToken ? 4 /* MessageType.RequestMixedArgsWithCancellation */ : 3 /* MessageType.RequestMixedArgs */, req, len);
627
+ result.writeUInt8(rpcId);
628
+ result.writeShortString(methodBuff);
629
+ result.writeMixedArray(args, argsType);
630
+ return result.buffer;
631
+ }
632
+ static deserializeRequestMixedArgs(buff) {
633
+ const rpcId = buff.readUInt8();
634
+ const method = buff.readShortString();
635
+ const rawargs = buff.readMixedArray();
636
+ const args = new Array(rawargs.length);
637
+ for (let i = 0, len = rawargs.length; i < len; i++) {
638
+ const rawarg = rawargs[i];
639
+ if (typeof rawarg === 'string') {
640
+ args[i] = JSON.parse(rawarg);
641
+ }
642
+ else {
643
+ args[i] = rawarg;
644
+ }
645
+ }
646
+ return {
647
+ rpcId: rpcId,
648
+ method: method,
649
+ args: args
650
+ };
651
+ }
652
+ static serializeAcknowledged(req) {
653
+ return MessageBuffer.alloc(5 /* MessageType.Acknowledged */, req, 0).buffer;
654
+ }
655
+ static serializeCancel(req) {
656
+ return MessageBuffer.alloc(6 /* MessageType.Cancel */, req, 0).buffer;
657
+ }
658
+ static serializeReplyOK(req, res, replacer) {
659
+ if (typeof res === 'undefined') {
660
+ return this._serializeReplyOKEmpty(req);
661
+ }
662
+ if (Buffer.isBuffer(res)) {
663
+ return this._serializeReplyOKBuffer(req, res);
664
+ }
665
+ if (res instanceof buffer_1.VSBuffer) {
666
+ return this._serializeReplyOKVSBuffer(req, res);
667
+ }
668
+ return this._serializeReplyOKJSON(req, safeStringify(res, replacer));
669
+ }
670
+ static _serializeReplyOKEmpty(req) {
671
+ return MessageBuffer.alloc(7 /* MessageType.ReplyOKEmpty */, req, 0).buffer;
672
+ }
673
+ static _serializeReplyOKBuffer(req, res) {
674
+ const buff = buffer_1.VSBuffer.wrap(res);
675
+ let len = 0;
676
+ len += MessageBuffer.sizeBuffer(buff);
677
+ let result = MessageBuffer.alloc(8 /* MessageType.ReplyOKBuffer */, req, len);
678
+ result.writeBuffer(buff);
679
+ return result.buffer;
680
+ }
681
+ static _serializeReplyOKVSBuffer(req, res) {
682
+ let len = 0;
683
+ len += MessageBuffer.sizeVSBuffer(res);
684
+ let result = MessageBuffer.alloc(8 /* MessageType.ReplyOKVSBuffer */, req, len);
685
+ result.writeVSBuffer(res);
686
+ return result.buffer;
687
+ }
688
+ static deserializeReplyOKBuffer(buff) {
689
+ return buff.readBuffer();
690
+ }
691
+ static deserializeReplyOKVSBuffer(buff) {
692
+ return buff.readVSBuffer();
693
+ }
694
+ static _serializeReplyOKJSON(req, res) {
695
+ const resBuff = buffer_1.VSBuffer.fromString(res);
696
+ let len = 0;
697
+ len += MessageBuffer.sizeLongString(resBuff);
698
+ let result = MessageBuffer.alloc(9 /* MessageType.ReplyOKJSON */, req, len);
699
+ result.writeLongString(resBuff);
700
+ return result.buffer;
701
+ }
702
+ static deserializeReplyOKJSON(buff) {
703
+ const res = buff.readLongString();
704
+ return JSON.parse(res);
705
+ }
706
+ static serializeReplyErr(req, err) {
707
+ if (err instanceof Error) {
708
+ return this._serializeReplyErrEror(req, err);
709
+ }
710
+ return this._serializeReplyErrEmpty(req);
711
+ }
712
+ static _serializeReplyErrEror(req, _err) {
713
+ const errBuff = buffer_1.VSBuffer.fromString(safeStringify(errors.transformErrorForSerialization(_err), null));
714
+ let len = 0;
715
+ len += MessageBuffer.sizeLongString(errBuff);
716
+ let result = MessageBuffer.alloc(10 /* MessageType.ReplyErrError */, req, len);
717
+ result.writeLongString(errBuff);
718
+ return result.buffer;
719
+ }
720
+ static deserializeReplyErrError(buff) {
721
+ const err = buff.readLongString();
722
+ return JSON.parse(err);
723
+ }
724
+ static _serializeReplyErrEmpty(req) {
725
+ return MessageBuffer.alloc(11 /* MessageType.ReplyErrEmpty */, req, 0).buffer;
726
+ }
727
+ }
728
+ exports.MessageIO = MessageIO;
729
+ var MessageType;
730
+ (function (MessageType) {
731
+ MessageType[MessageType["RequestJSONArgs"] = 1] = "RequestJSONArgs";
732
+ MessageType[MessageType["RequestJSONArgsWithCancellation"] = 2] = "RequestJSONArgsWithCancellation";
733
+ MessageType[MessageType["RequestMixedArgs"] = 3] = "RequestMixedArgs";
734
+ MessageType[MessageType["RequestMixedArgsWithCancellation"] = 4] = "RequestMixedArgsWithCancellation";
735
+ MessageType[MessageType["Acknowledged"] = 5] = "Acknowledged";
736
+ MessageType[MessageType["Cancel"] = 6] = "Cancel";
737
+ MessageType[MessageType["ReplyOKEmpty"] = 7] = "ReplyOKEmpty";
738
+ MessageType[MessageType["ReplyOKBuffer"] = 8] = "ReplyOKBuffer";
739
+ MessageType[MessageType["ReplyOKVSBuffer"] = 8] = "ReplyOKVSBuffer";
740
+ MessageType[MessageType["ReplyOKJSON"] = 9] = "ReplyOKJSON";
741
+ MessageType[MessageType["ReplyErrError"] = 10] = "ReplyErrError";
742
+ MessageType[MessageType["ReplyErrEmpty"] = 11] = "ReplyErrEmpty";
743
+ })(MessageType = exports.MessageType || (exports.MessageType = {}));
744
+ var ArgType;
745
+ (function (ArgType) {
746
+ ArgType[ArgType["String"] = 1] = "String";
747
+ ArgType[ArgType["Buffer"] = 2] = "Buffer";
748
+ ArgType[ArgType["VSBuffer"] = 3] = "VSBuffer";
749
+ })(ArgType = exports.ArgType || (exports.ArgType = {}));
750
+ //# sourceMappingURL=rpc-protocol.js.map