@opensumi/ide-connection 2.27.3-rc-1706857131.0 → 2.27.3-rc-1708222409.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 (209) hide show
  1. package/lib/browser/ws-channel-handler.d.ts.map +1 -1
  2. package/lib/browser/ws-channel-handler.js +2 -6
  3. package/lib/browser/ws-channel-handler.js.map +1 -1
  4. package/lib/common/{connection → buffers}/buffers.d.ts +2 -1
  5. package/lib/common/buffers/buffers.d.ts.map +1 -0
  6. package/lib/common/{connection → buffers}/buffers.js +21 -3
  7. package/lib/common/buffers/buffers.js.map +1 -0
  8. package/lib/common/connection/drivers/base.d.ts +2 -2
  9. package/lib/common/connection/drivers/base.d.ts.map +1 -1
  10. package/lib/common/connection/drivers/base.js +0 -4
  11. package/lib/common/connection/drivers/base.js.map +1 -1
  12. package/lib/common/connection/drivers/frame-decoder.d.ts +34 -0
  13. package/lib/common/connection/drivers/frame-decoder.d.ts.map +1 -0
  14. package/lib/common/connection/drivers/frame-decoder.js +147 -0
  15. package/lib/common/connection/drivers/frame-decoder.js.map +1 -0
  16. package/lib/common/connection/drivers/{empty.d.ts → message-port.d.ts} +5 -2
  17. package/lib/common/connection/drivers/message-port.d.ts.map +1 -0
  18. package/lib/common/connection/drivers/message-port.js +41 -0
  19. package/lib/common/connection/drivers/message-port.js.map +1 -0
  20. package/lib/common/connection/drivers/node-message-port.d.ts +1 -0
  21. package/lib/common/connection/drivers/node-message-port.d.ts.map +1 -1
  22. package/lib/common/connection/drivers/node-message-port.js +3 -0
  23. package/lib/common/connection/drivers/node-message-port.js.map +1 -1
  24. package/lib/common/connection/drivers/reconnecting-websocket.d.ts +1 -0
  25. package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -1
  26. package/lib/common/connection/drivers/reconnecting-websocket.js +3 -0
  27. package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -1
  28. package/lib/common/connection/drivers/simple.d.ts +17 -0
  29. package/lib/common/connection/drivers/simple.d.ts.map +1 -0
  30. package/lib/common/connection/drivers/simple.js +32 -0
  31. package/lib/common/connection/drivers/simple.js.map +1 -0
  32. package/lib/common/connection/drivers/socket.d.ts +4 -2
  33. package/lib/common/connection/drivers/socket.d.ts.map +1 -1
  34. package/lib/common/connection/drivers/socket.js +10 -7
  35. package/lib/common/connection/drivers/socket.js.map +1 -1
  36. package/lib/common/connection/drivers/ws-websocket.d.ts +2 -0
  37. package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -1
  38. package/lib/common/connection/drivers/ws-websocket.js +6 -0
  39. package/lib/common/connection/drivers/ws-websocket.js.map +1 -1
  40. package/lib/common/connection/types.d.ts +1 -1
  41. package/lib/common/connection/types.d.ts.map +1 -1
  42. package/lib/common/ext-rpc-protocol.d.ts +7 -21
  43. package/lib/common/ext-rpc-protocol.d.ts.map +1 -1
  44. package/lib/common/ext-rpc-protocol.js +13 -33
  45. package/lib/common/ext-rpc-protocol.js.map +1 -1
  46. package/lib/common/fury-extends/any.d.ts +22 -0
  47. package/lib/common/fury-extends/any.d.ts.map +1 -0
  48. package/lib/common/fury-extends/any.js +143 -0
  49. package/lib/common/fury-extends/any.js.map +1 -0
  50. package/lib/common/fury-extends/one-of.d.ts +14 -0
  51. package/lib/common/fury-extends/one-of.d.ts.map +1 -0
  52. package/lib/common/fury-extends/one-of.js +50 -0
  53. package/lib/common/fury-extends/one-of.js.map +1 -0
  54. package/lib/common/fury-extends/shared.d.ts +142 -0
  55. package/lib/common/fury-extends/shared.d.ts.map +1 -0
  56. package/lib/common/fury-extends/shared.js +17 -0
  57. package/lib/common/fury-extends/shared.js.map +1 -0
  58. package/lib/common/index.d.ts +2 -1
  59. package/lib/common/index.d.ts.map +1 -1
  60. package/lib/common/index.js +2 -1
  61. package/lib/common/index.js.map +1 -1
  62. package/lib/common/protocols/common-server.d.ts +3 -0
  63. package/lib/common/protocols/common-server.d.ts.map +1 -0
  64. package/lib/common/protocols/common-server.js +18 -0
  65. package/lib/common/protocols/common-server.js.map +1 -0
  66. package/lib/common/protocols/common.d.ts +24 -0
  67. package/lib/common/protocols/common.d.ts.map +1 -0
  68. package/lib/common/protocols/common.js +12 -0
  69. package/lib/common/protocols/common.js.map +1 -0
  70. package/lib/common/rpc/connection.d.ts +44 -0
  71. package/lib/common/rpc/connection.d.ts.map +1 -0
  72. package/lib/common/rpc/connection.js +256 -0
  73. package/lib/common/rpc/connection.js.map +1 -0
  74. package/lib/common/rpc/errors.d.ts +4 -0
  75. package/lib/common/rpc/errors.d.ts.map +1 -0
  76. package/lib/common/rpc/errors.js +10 -0
  77. package/lib/common/rpc/errors.js.map +1 -0
  78. package/lib/common/rpc/index.d.ts +3 -0
  79. package/lib/common/rpc/index.d.ts.map +1 -0
  80. package/lib/common/rpc/index.js +6 -0
  81. package/lib/common/rpc/index.js.map +1 -0
  82. package/lib/common/rpc/multiplexer.d.ts +28 -0
  83. package/lib/common/rpc/multiplexer.d.ts.map +1 -0
  84. package/lib/common/rpc/multiplexer.js +82 -0
  85. package/lib/common/rpc/multiplexer.js.map +1 -0
  86. package/lib/common/rpc/packet.d.ts +65 -0
  87. package/lib/common/rpc/packet.d.ts.map +1 -0
  88. package/lib/common/rpc/packet.js +82 -0
  89. package/lib/common/rpc/packet.js.map +1 -0
  90. package/lib/common/rpc/protocol-repository.d.ts +32 -0
  91. package/lib/common/rpc/protocol-repository.d.ts.map +1 -0
  92. package/lib/common/rpc/protocol-repository.js +118 -0
  93. package/lib/common/rpc/protocol-repository.js.map +1 -0
  94. package/lib/common/rpc/types.d.ts +13 -0
  95. package/lib/common/rpc/types.d.ts.map +1 -0
  96. package/lib/common/rpc/types.js +3 -0
  97. package/lib/common/rpc/types.js.map +1 -0
  98. package/lib/common/rpc/utils.d.ts +2 -0
  99. package/lib/common/rpc/utils.d.ts.map +1 -0
  100. package/lib/common/rpc/utils.js +10 -0
  101. package/lib/common/rpc/utils.js.map +1 -0
  102. package/lib/common/rpc-service/center.d.ts +12 -5
  103. package/lib/common/rpc-service/center.d.ts.map +1 -1
  104. package/lib/common/rpc-service/center.js +47 -42
  105. package/lib/common/rpc-service/center.js.map +1 -1
  106. package/lib/common/rpc-service/index.d.ts +6 -0
  107. package/lib/common/rpc-service/index.d.ts.map +1 -1
  108. package/lib/common/rpc-service/index.js +7 -0
  109. package/lib/common/rpc-service/index.js.map +1 -1
  110. package/lib/common/rpc-service/proxy/base.d.ts +32 -0
  111. package/lib/common/rpc-service/proxy/base.d.ts.map +1 -0
  112. package/lib/common/rpc-service/proxy/base.js +93 -0
  113. package/lib/common/rpc-service/proxy/base.js.map +1 -0
  114. package/lib/common/rpc-service/proxy/index.d.ts +5 -0
  115. package/lib/common/rpc-service/proxy/index.d.ts.map +1 -0
  116. package/lib/common/rpc-service/proxy/index.js +8 -0
  117. package/lib/common/rpc-service/proxy/index.js.map +1 -0
  118. package/lib/common/rpc-service/proxy/invoker.d.ts +14 -0
  119. package/lib/common/rpc-service/proxy/invoker.d.ts.map +1 -0
  120. package/lib/common/rpc-service/proxy/invoker.js +34 -0
  121. package/lib/common/rpc-service/proxy/invoker.js.map +1 -0
  122. package/lib/common/{proxy → rpc-service/proxy}/legacy.d.ts +3 -7
  123. package/lib/common/rpc-service/proxy/legacy.d.ts.map +1 -0
  124. package/lib/common/rpc-service/proxy/legacy.js +136 -0
  125. package/lib/common/rpc-service/proxy/legacy.js.map +1 -0
  126. package/lib/common/rpc-service/proxy/registry.d.ts +18 -0
  127. package/lib/common/rpc-service/proxy/registry.d.ts.map +1 -0
  128. package/lib/common/rpc-service/proxy/registry.js +46 -0
  129. package/lib/common/rpc-service/proxy/registry.js.map +1 -0
  130. package/lib/common/rpc-service/proxy/sumi.d.ts +9 -0
  131. package/lib/common/rpc-service/proxy/sumi.d.ts.map +1 -0
  132. package/lib/common/rpc-service/proxy/sumi.js +86 -0
  133. package/lib/common/rpc-service/proxy/sumi.js.map +1 -0
  134. package/lib/common/rpc-service/stub.d.ts +0 -1
  135. package/lib/common/rpc-service/stub.d.ts.map +1 -1
  136. package/lib/common/rpc-service/stub.js +3 -11
  137. package/lib/common/rpc-service/stub.js.map +1 -1
  138. package/lib/common/types.d.ts +1 -1
  139. package/lib/common/types.d.ts.map +1 -1
  140. package/lib/common/ws-channel.d.ts +97 -32
  141. package/lib/common/ws-channel.d.ts.map +1 -1
  142. package/lib/common/ws-channel.js +75 -51
  143. package/lib/common/ws-channel.js.map +1 -1
  144. package/lib/node/common-channel-handler.js +1 -1
  145. package/lib/node/common-channel-handler.js.map +1 -1
  146. package/package.json +5 -5
  147. package/src/browser/ws-channel-handler.ts +2 -6
  148. package/src/common/{connection → buffers}/buffers.ts +24 -3
  149. package/src/common/connection/drivers/base.ts +2 -6
  150. package/src/common/connection/drivers/frame-decoder.ts +170 -0
  151. package/src/common/connection/drivers/message-port.ts +42 -0
  152. package/src/common/connection/drivers/node-message-port.ts +3 -0
  153. package/src/common/connection/drivers/reconnecting-websocket.ts +4 -0
  154. package/src/common/connection/drivers/simple.ts +33 -0
  155. package/src/common/connection/drivers/socket.ts +11 -7
  156. package/src/common/connection/drivers/ws-websocket.ts +8 -0
  157. package/src/common/connection/types.ts +1 -1
  158. package/src/common/ext-rpc-protocol.ts +16 -51
  159. package/src/common/fury-extends/any.ts +144 -0
  160. package/src/common/fury-extends/one-of.ts +61 -0
  161. package/src/common/fury-extends/shared.ts +15 -0
  162. package/src/common/index.ts +2 -1
  163. package/src/common/protocols/common-server.ts +18 -0
  164. package/src/common/protocols/common.ts +9 -0
  165. package/src/common/rpc/connection.ts +345 -0
  166. package/src/common/rpc/errors.ts +5 -0
  167. package/src/common/rpc/index.ts +2 -0
  168. package/src/common/rpc/multiplexer.ts +105 -0
  169. package/src/common/rpc/packet.ts +104 -0
  170. package/src/common/rpc/protocol-repository.ts +180 -0
  171. package/src/common/rpc/types.ts +23 -0
  172. package/src/common/rpc/utils.ts +5 -0
  173. package/src/common/rpc-service/center.ts +59 -49
  174. package/src/common/rpc-service/index.ts +9 -0
  175. package/src/common/rpc-service/proxy/base.ts +126 -0
  176. package/src/common/rpc-service/proxy/index.ts +4 -0
  177. package/src/common/rpc-service/proxy/invoker.ts +45 -0
  178. package/src/common/rpc-service/proxy/legacy.ts +150 -0
  179. package/src/common/rpc-service/proxy/registry.ts +56 -0
  180. package/src/common/rpc-service/proxy/sumi.ts +81 -0
  181. package/src/common/rpc-service/stub.ts +4 -11
  182. package/src/common/types.ts +1 -1
  183. package/src/common/ws-channel.ts +100 -61
  184. package/src/node/common-channel-handler.ts +1 -1
  185. package/lib/common/connection/buffers.d.ts.map +0 -1
  186. package/lib/common/connection/buffers.js.map +0 -1
  187. package/lib/common/connection/drivers/empty.d.ts.map +0 -1
  188. package/lib/common/connection/drivers/empty.js +0 -21
  189. package/lib/common/connection/drivers/empty.js.map +0 -1
  190. package/lib/common/connection/drivers/stream-decoder.d.ts +0 -67
  191. package/lib/common/connection/drivers/stream-decoder.d.ts.map +0 -1
  192. package/lib/common/connection/drivers/stream-decoder.js +0 -171
  193. package/lib/common/connection/drivers/stream-decoder.js.map +0 -1
  194. package/lib/common/proxy/base.d.ts +0 -22
  195. package/lib/common/proxy/base.d.ts.map +0 -1
  196. package/lib/common/proxy/base.js +0 -47
  197. package/lib/common/proxy/base.js.map +0 -1
  198. package/lib/common/proxy/index.d.ts +0 -8
  199. package/lib/common/proxy/index.d.ts.map +0 -1
  200. package/lib/common/proxy/index.js +0 -12
  201. package/lib/common/proxy/index.js.map +0 -1
  202. package/lib/common/proxy/legacy.d.ts.map +0 -1
  203. package/lib/common/proxy/legacy.js +0 -183
  204. package/lib/common/proxy/legacy.js.map +0 -1
  205. package/src/common/connection/drivers/empty.ts +0 -19
  206. package/src/common/connection/drivers/stream-decoder.ts +0 -196
  207. package/src/common/proxy/base.ts +0 -67
  208. package/src/common/proxy/index.ts +0 -10
  209. package/src/common/proxy/legacy.ts +0 -200
@@ -0,0 +1,28 @@
1
+ import { BaseConnection } from '../connection';
2
+ import { ISumiConnectionOptions, SumiConnection } from './connection';
3
+ export declare class ProxyIdentifier<T = any> {
4
+ static count: number;
5
+ readonly serviceId: string;
6
+ readonly countId: number;
7
+ constructor(serviceId: string);
8
+ static for(serviceId: string): ProxyIdentifier<any>;
9
+ }
10
+ export declare const IRPCProtocol: unique symbol;
11
+ export interface IRPCProtocol {
12
+ getProxy<T>(proxyId: ProxyIdentifier<T>): T;
13
+ set<T>(identifier: ProxyIdentifier<T>, instance: T): T;
14
+ get<T>(identifier: ProxyIdentifier<T>): T;
15
+ }
16
+ export declare class SumiConnectionMultiplexer extends SumiConnection implements IRPCProtocol {
17
+ protected socket: BaseConnection<Uint8Array>;
18
+ protected options: ISumiConnectionOptions;
19
+ private readonly _locals;
20
+ private readonly _proxies;
21
+ constructor(socket: BaseConnection<Uint8Array>, options?: ISumiConnectionOptions);
22
+ set<T>(identifier: ProxyIdentifier<T>, instance: any): any;
23
+ get<T>(identifier: ProxyIdentifier<T>): any;
24
+ getProxy<T>(proxyId: ProxyIdentifier<T>): any;
25
+ private _createProxy;
26
+ private _doInvokeHandler;
27
+ }
28
+ //# sourceMappingURL=multiplexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiplexer.d.ts","sourceRoot":"","sources":["../../../src/common/rpc/multiplexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEtE,qBAAa,eAAe,CAAC,CAAC,GAAG,GAAG;IAClC,OAAc,KAAK,SAAK;IAExB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,OAAO,EAAE,MAAM,CAAC;gBACpB,SAAS,EAAE,MAAM;IAK7B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM;CAG7B;AAED,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IACvD,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC3C;AAaD,qBAAa,yBAA0B,SAAQ,cAAe,YAAW,YAAY;IAIvE,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;IAAE,SAAS,CAAC,OAAO,EAAE,sBAAsB;IAHnG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAEtB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAAY,OAAO,GAAE,sBAA2B;IAejG,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG;IAKpD,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAIrC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAQ9C,OAAO,CAAC,YAAY;YAmBN,gBAAgB;CAY/B"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SumiConnectionMultiplexer = exports.IRPCProtocol = exports.ProxyIdentifier = void 0;
4
+ const connection_1 = require("./connection");
5
+ class ProxyIdentifier {
6
+ constructor(serviceId) {
7
+ this.serviceId = serviceId;
8
+ this.countId = ++ProxyIdentifier.count;
9
+ }
10
+ static for(serviceId) {
11
+ return new ProxyIdentifier(serviceId);
12
+ }
13
+ }
14
+ exports.ProxyIdentifier = ProxyIdentifier;
15
+ ProxyIdentifier.count = 0;
16
+ exports.IRPCProtocol = Symbol('IRPCProtocol');
17
+ const SEP = '/';
18
+ function getRPCName(serviceId, methodName) {
19
+ return `${serviceId}${SEP}${methodName}`;
20
+ }
21
+ function extractServiceAndMethod(rpcId) {
22
+ const idx = rpcId.indexOf(SEP);
23
+ return [rpcId.substring(0, idx), rpcId.substring(idx + 1)];
24
+ }
25
+ class SumiConnectionMultiplexer extends connection_1.SumiConnection {
26
+ constructor(socket, options = {}) {
27
+ super(socket, options);
28
+ this.socket = socket;
29
+ this.options = options;
30
+ this._locals = new Map();
31
+ this._proxies = new Map();
32
+ this.onRequestNotFound((rpcName, args) => {
33
+ const [rpcId, methodName] = extractServiceAndMethod(rpcName);
34
+ return this._doInvokeHandler(rpcId, methodName, args);
35
+ });
36
+ // call `listen` implicitly
37
+ // compatible behavior with the RPCProtocol
38
+ this.listen();
39
+ }
40
+ set(identifier, instance) {
41
+ this._locals.set(identifier.serviceId, instance);
42
+ return instance;
43
+ }
44
+ get(identifier) {
45
+ return this._locals.get(identifier.serviceId);
46
+ }
47
+ getProxy(proxyId) {
48
+ if (!this._proxies.has(proxyId.serviceId)) {
49
+ this._proxies.set(proxyId.serviceId, this._createProxy(proxyId.serviceId));
50
+ }
51
+ return this._proxies.get(proxyId.serviceId);
52
+ }
53
+ _createProxy(rpcId) {
54
+ const handler = {
55
+ get: (target, name) => {
56
+ if (typeof name === 'symbol') {
57
+ return null;
58
+ }
59
+ // charCodeAt(0) === 36 means starts with $
60
+ if (!target[name] && name.charCodeAt(0) === 36) {
61
+ const rpcName = getRPCName(rpcId, name);
62
+ target[name] = (...args) => this.sendRequest(rpcName, ...args);
63
+ }
64
+ return target[name];
65
+ },
66
+ };
67
+ return new Proxy(Object.create(null), handler);
68
+ }
69
+ async _doInvokeHandler(rpcId, methodName, args) {
70
+ const actor = this._locals.get(rpcId);
71
+ if (!actor) {
72
+ throw new Error('Unknown actor ' + rpcId);
73
+ }
74
+ const method = await actor[methodName];
75
+ if (typeof method !== 'function') {
76
+ throw new Error('Unknown method ' + methodName + ' on actor ' + rpcId);
77
+ }
78
+ return method.apply(actor, args);
79
+ }
80
+ }
81
+ exports.SumiConnectionMultiplexer = SumiConnectionMultiplexer;
82
+ //# sourceMappingURL=multiplexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiplexer.js","sourceRoot":"","sources":["../../../src/common/rpc/multiplexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { Serializer } from '@furyjs/fury';
2
+ export declare enum OperationType {
3
+ Request = 0,
4
+ Notification = 1,
5
+ Response = 2,
6
+ Heartbeat = 3,
7
+ Cancel = 4
8
+ }
9
+ export declare enum BodyCodec {
10
+ /**
11
+ * Means no body
12
+ */
13
+ None = 0,
14
+ Text = 1,
15
+ Binary = 2,
16
+ JSON = 3
17
+ }
18
+ export declare enum ErrorCode {
19
+ OK = 0,
20
+ Err = 1
21
+ }
22
+ declare const reader: {
23
+ getCursor: () => number;
24
+ setCursor: (v: number) => number;
25
+ varInt32: () => number;
26
+ varInt64: () => bigint;
27
+ varUInt32: () => number;
28
+ varUInt64: () => bigint;
29
+ int8: () => number;
30
+ buffer: (len: number) => import("@furyjs/fury/dist/lib/platformBuffer").PlatformBuffer;
31
+ bufferRef: (len: number) => Uint8Array;
32
+ uint8: () => number;
33
+ reset: (ab: Uint8Array) => void;
34
+ stringUtf8At: (start: number, len: number) => string;
35
+ stringUtf8: (len: number) => string;
36
+ stringLatin1: (len: number) => string;
37
+ stringOfVarUInt32: () => string;
38
+ double: () => number;
39
+ float: () => number;
40
+ uint16: () => number;
41
+ int16: () => number;
42
+ uint64: () => bigint;
43
+ skip: (len: number) => void;
44
+ int64: () => bigint;
45
+ sliLong: () => bigint;
46
+ uint32: () => number;
47
+ int32: () => number;
48
+ };
49
+ export { reader };
50
+ export interface IRequestHeaders {
51
+ /**
52
+ * If set to true, the request can be canceled.
53
+ *
54
+ * the server will push a `CancellationToken` to the request arguments.
55
+ */
56
+ cancelable?: boolean;
57
+ }
58
+ export declare const requestHeadersSerializer: Serializer<any, any>;
59
+ export declare class MessageIO {
60
+ static Request(requestId: number, rpcType: number, method: string, headers: IRequestHeaders, payload: Uint8Array): import("@furyjs/fury/dist/lib/platformBuffer").PlatformBuffer;
61
+ static Cancel(requestId: number): import("@furyjs/fury/dist/lib/platformBuffer").PlatformBuffer;
62
+ static Response(requestId: number, headers: Record<string, any>, payload: Uint8Array): import("@furyjs/fury/dist/lib/platformBuffer").PlatformBuffer;
63
+ static Error(requestId: number, status: number, headers: Record<string, any>, error: any): import("@furyjs/fury/dist/lib/platformBuffer").PlatformBuffer;
64
+ }
65
+ //# sourceMappingURL=packet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../../../src/common/rpc/packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,cAAc,CAAC;AAShD,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,YAAY,IAAA;IACZ,QAAQ,IAAA;IACR,SAAS,IAAA;IACT,MAAM,IAAA;CACP;AAED,oBAAY,SAAS;IACnB;;OAEG;IACH,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,IAAI,IAAA;CACL;AAED,oBAAY,SAAS;IACnB,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAED,QAAA,MAAc,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0B,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;AAMlB,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,sBAA8D,CAAC;AAEpG,qBAAa,SAAS;IACpB,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU;IAehH,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM;IAW/B,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU;IAcpF,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG;CAYzF"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageIO = exports.requestHeadersSerializer = exports.reader = exports.ErrorCode = exports.BodyCodec = exports.OperationType = void 0;
4
+ const fury_1 = require("@furyjs/fury");
5
+ const gen_1 = require("@furyjs/fury/dist/lib/gen");
6
+ const utils_1 = require("@opensumi/ide-core-common/lib/utils");
7
+ const shared_1 = require("../fury-extends/shared");
8
+ const ProtoVersionV1 = 1;
9
+ var OperationType;
10
+ (function (OperationType) {
11
+ OperationType[OperationType["Request"] = 0] = "Request";
12
+ OperationType[OperationType["Notification"] = 1] = "Notification";
13
+ OperationType[OperationType["Response"] = 2] = "Response";
14
+ OperationType[OperationType["Heartbeat"] = 3] = "Heartbeat";
15
+ OperationType[OperationType["Cancel"] = 4] = "Cancel";
16
+ })(OperationType = exports.OperationType || (exports.OperationType = {}));
17
+ var BodyCodec;
18
+ (function (BodyCodec) {
19
+ /**
20
+ * Means no body
21
+ */
22
+ BodyCodec[BodyCodec["None"] = 0] = "None";
23
+ BodyCodec[BodyCodec["Text"] = 1] = "Text";
24
+ BodyCodec[BodyCodec["Binary"] = 2] = "Binary";
25
+ BodyCodec[BodyCodec["JSON"] = 3] = "JSON";
26
+ })(BodyCodec = exports.BodyCodec || (exports.BodyCodec = {}));
27
+ var ErrorCode;
28
+ (function (ErrorCode) {
29
+ ErrorCode[ErrorCode["OK"] = 0] = "OK";
30
+ ErrorCode[ErrorCode["Err"] = 1] = "Err";
31
+ })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));
32
+ const { fury, reader, writer } = (0, shared_1.furyFactory)();
33
+ exports.reader = reader;
34
+ const requestHeadersProto = fury_1.Type.object('headers', {
35
+ cancelable: fury_1.Type.bool(),
36
+ });
37
+ exports.requestHeadersSerializer = (0, gen_1.generateSerializer)(fury, requestHeadersProto);
38
+ class MessageIO {
39
+ static Request(requestId, rpcType, method, headers, payload) {
40
+ writer.reset();
41
+ writer.uint8(ProtoVersionV1);
42
+ writer.uint8(rpcType);
43
+ writer.uint32(requestId);
44
+ writer.uint8(BodyCodec.Binary);
45
+ writer.stringOfVarUInt32(method);
46
+ exports.requestHeadersSerializer.write(headers);
47
+ writer.varUInt32(payload.length);
48
+ writer.buffer(payload);
49
+ return writer.dump();
50
+ }
51
+ static Cancel(requestId) {
52
+ writer.reset();
53
+ writer.uint8(ProtoVersionV1);
54
+ writer.uint8(OperationType.Cancel);
55
+ writer.uint32(requestId);
56
+ writer.uint8(BodyCodec.None);
57
+ return writer.dump();
58
+ }
59
+ static Response(requestId, headers, payload) {
60
+ writer.reset();
61
+ writer.uint8(ProtoVersionV1);
62
+ writer.uint8(OperationType.Response);
63
+ writer.uint32(requestId);
64
+ writer.uint8(BodyCodec.Binary);
65
+ writer.uint16(ErrorCode.OK);
66
+ writer.varUInt32(payload.length);
67
+ writer.buffer(payload);
68
+ return writer.dump();
69
+ }
70
+ static Error(requestId, status, headers, error) {
71
+ writer.reset();
72
+ writer.uint8(ProtoVersionV1);
73
+ writer.uint8(OperationType.Response);
74
+ writer.uint32(requestId);
75
+ writer.uint8(BodyCodec.JSON);
76
+ writer.uint16(status);
77
+ writer.stringOfVarUInt32((0, utils_1.stringifyError)(error));
78
+ return writer.dump();
79
+ }
80
+ }
81
+ exports.MessageIO = MessageIO;
82
+ //# sourceMappingURL=packet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packet.js","sourceRoot":"","sources":["../../../src/common/rpc/packet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import Fury from '@furyjs/fury';
2
+ import { TSumiProtocol, TSumiProtocolMethod } from './types';
3
+ export type TRequestTransferable = ITransferable[];
4
+ export interface ITransferable {
5
+ /**
6
+ * transfer raw value
7
+ */
8
+ r: any;
9
+ /**
10
+ * value that cannot be transferred, use string instead
11
+ */
12
+ $?: string;
13
+ }
14
+ interface IProtocolProcessor {
15
+ serializeRequest(args: any[]): Uint8Array;
16
+ deserializeRequest(buffer: Uint8Array): any[];
17
+ serializeResult<T = any>(result: T): Uint8Array;
18
+ deserializeResult<T = any>(buffer: Uint8Array): T;
19
+ }
20
+ export declare class ProtocolRepository {
21
+ fury: Fury;
22
+ private processorMap;
23
+ private anyProcessor;
24
+ has(name: string): boolean;
25
+ loadProtocol(protocol: TSumiProtocol, options?: {
26
+ nameConverter?: (str: string) => string;
27
+ }): void;
28
+ loadProtocolMethod(methodProtocol: TSumiProtocolMethod): void;
29
+ getProcessor(method: string): IProtocolProcessor;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=protocol-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-repository.d.ts","sourceRoot":"","sources":["../../../src/common/rpc/protocol-repository.ts"],"names":[],"mappings":"AAAA,OAAO,IAA+B,MAAM,cAAc,CAAC;AAI3D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG,aAAa,EAAE,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,CAAC,EAAE,GAAG,CAAC;IAEP;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAID,UAAU,kBAAkB;IAC1B,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;IAC1C,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,EAAE,CAAC;IAC9C,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC;IAChD,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC;CACnD;AAiFD,qBAAa,kBAAkB;IAC7B,IAAI,OAAc;IAElB,OAAO,CAAC,YAAY,CAA4C;IAEhE,OAAO,CAAC,YAAY,CAA8B;IAElD,GAAG,CAAC,IAAI,EAAE,MAAM;IAIhB,YAAY,CACV,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;KACzC;IAmBH,kBAAkB,CAAC,cAAc,EAAE,mBAAmB;IAItD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;CAOjD"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProtocolRepository = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fury_1 = tslib_1.__importStar(require("@furyjs/fury"));
6
+ const any_1 = require("../fury-extends/any");
7
+ const createTransferable = (name, type) => {
8
+ const props = {
9
+ $: fury_1.Type.string(),
10
+ };
11
+ if (type) {
12
+ props.r = type;
13
+ }
14
+ return fury_1.Type.object(name, props);
15
+ };
16
+ class SumiProtocolProcessor {
17
+ constructor(methodProtocol, fury) {
18
+ this.fury = fury;
19
+ const methodName = methodProtocol.method;
20
+ const argsTuple = [];
21
+ for (const element of methodProtocol.request) {
22
+ argsTuple.push(createTransferable(methodName + '^' + element.name, element.type));
23
+ }
24
+ const requestProto = fury_1.Type.tuple(argsTuple);
25
+ const resultProto = createTransferable(methodName + 'v', methodProtocol.response.type);
26
+ this.requestArgsLength = argsTuple.length;
27
+ this.request = this.fury.registerSerializer(requestProto);
28
+ this.result = this.fury.registerSerializer(resultProto);
29
+ }
30
+ serializeRequest(args) {
31
+ const newArray = new Array(args.length);
32
+ for (let i = 0; i < args.length; i++) {
33
+ newArray[i] = ObjectTransfer.replacer(args[i]);
34
+ }
35
+ return this.request.serialize(newArray);
36
+ }
37
+ deserializeRequest(buffer) {
38
+ const result = new Array(this.requestArgsLength);
39
+ const argsArray = this.request.deserialize(buffer);
40
+ for (let i = 0; i < this.requestArgsLength; i++) {
41
+ result[i] = ObjectTransfer.reviver(argsArray[i]);
42
+ }
43
+ return result;
44
+ }
45
+ serializeResult(result) {
46
+ return this.result.serialize(ObjectTransfer.replacer(result));
47
+ }
48
+ deserializeResult(buffer) {
49
+ const payload = this.result.deserialize(buffer);
50
+ return ObjectTransfer.reviver(payload);
51
+ }
52
+ }
53
+ class AnyProtocolProcessor {
54
+ serializeRequest(args) {
55
+ return any_1.anySerializer.serialize(args);
56
+ }
57
+ deserializeRequest(buffer) {
58
+ return any_1.anySerializer.deserialize(buffer);
59
+ }
60
+ serializeResult(result) {
61
+ return any_1.anySerializer.serialize(result);
62
+ }
63
+ deserializeResult(buffer) {
64
+ return any_1.anySerializer.deserialize(buffer);
65
+ }
66
+ }
67
+ class ProtocolRepository {
68
+ constructor() {
69
+ this.fury = new fury_1.default();
70
+ this.processorMap = new Map();
71
+ this.anyProcessor = new AnyProtocolProcessor();
72
+ }
73
+ has(name) {
74
+ return this.processorMap.has(name);
75
+ }
76
+ loadProtocol(protocol, options) {
77
+ const { methods } = protocol;
78
+ for (const proto of methods) {
79
+ let method = proto.method;
80
+ if (options === null || options === void 0 ? void 0 : options.nameConverter) {
81
+ method = options.nameConverter(method);
82
+ }
83
+ const copy = Object.assign(Object.assign({}, proto), { method });
84
+ this.loadProtocolMethod(copy);
85
+ }
86
+ }
87
+ loadProtocolMethod(methodProtocol) {
88
+ this.processorMap.set(methodProtocol.method, new SumiProtocolProcessor(methodProtocol, this.fury));
89
+ }
90
+ getProcessor(method) {
91
+ const processor = this.processorMap.get(method);
92
+ if (processor) {
93
+ return processor;
94
+ }
95
+ return this.anyProcessor;
96
+ }
97
+ }
98
+ exports.ProtocolRepository = ProtocolRepository;
99
+ class ObjectTransfer {
100
+ static replacer(value) {
101
+ const payload = {};
102
+ if (typeof value === 'undefined') {
103
+ payload.$ = ObjectTransfer.TypeUndefined;
104
+ }
105
+ if (!payload.$) {
106
+ payload.r = value;
107
+ }
108
+ return payload;
109
+ }
110
+ static reviver(transferable) {
111
+ if (transferable.$ === ObjectTransfer.TypeUndefined) {
112
+ return undefined;
113
+ }
114
+ return transferable.r;
115
+ }
116
+ }
117
+ ObjectTransfer.TypeUndefined = '$undefined';
118
+ //# sourceMappingURL=protocol-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-repository.js","sourceRoot":"","sources":["../../../src/common/rpc/protocol-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { TypeDescription } from '@furyjs/fury';
2
+ import { RPCProtocol as _RPCProtocol, RPCProtocolMethod as _RPCProtocolMethod, Request as _Request, Response as _Response } from '@opensumi/ide-core-common/lib/types/rpc';
3
+ export type TSumiProtocol = _RPCProtocol<TypeDescription>;
4
+ export type TSumiProtocolMethod = _RPCProtocolMethod<TypeDescription>;
5
+ export type TSumiRequest = _Request<TypeDescription>;
6
+ export type TSumiResponse = _Response<TypeDescription>;
7
+ export type TRequestCallback = (headers: Record<string, any>, error?: any, payload?: Uint8Array | string | any) => void;
8
+ export type THandlerResult<R> = R | Promise<R>;
9
+ export type TGenericNotificationHandler = (...args: any[]) => void | Promise<void>;
10
+ export type TGenericRequestHandler<R> = (...args: any[]) => THandlerResult<R>;
11
+ export type TOnRequestNotFoundHandler = (method: string, args: any[]) => THandlerResult<any>;
12
+ export type TOnNotificationNotFoundHandler = (method: string, args: any[]) => THandlerResult<void>;
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/rpc/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EACL,WAAW,IAAI,YAAY,EAC3B,iBAAiB,IAAI,kBAAkB,EACvC,OAAO,IAAI,QAAQ,EACnB,QAAQ,IAAI,SAAS,EACtB,MAAM,yCAAyC,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;AAC1D,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC;AAExH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,2BAA2B,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACnF,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,yBAAyB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;AAC7F,MAAM,MAAM,8BAA8B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/rpc/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const assert: (condition: any, message: string) => void;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/common/rpc/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,cAAe,GAAG,WAAW,MAAM,SAIrD,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assert = void 0;
4
+ const assert = (condition, message) => {
5
+ if (!condition) {
6
+ throw new Error(message);
7
+ }
8
+ };
9
+ exports.assert = assert;
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/common/rpc/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAC,SAAc,EAAE,OAAe,EAAE,EAAE;IACxD,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B;AACH,CAAC,CAAC;AAJW,QAAA,MAAM,UAIjB"}
@@ -1,20 +1,27 @@
1
+ import { MessageConnection } from '@opensumi/vscode-jsonrpc';
2
+ import { TSumiProtocol } from '../rpc';
3
+ import { SumiConnection } from '../rpc/connection';
1
4
  import { IBench, ILogger, RPCServiceMethod, ServiceType } from '../types';
2
- import { WSChannel } from '../ws-channel';
3
5
  export declare class RPCServiceCenter {
4
6
  private bench?;
5
7
  uid: string;
6
8
  private invokers;
7
- private connection;
8
- private serviceMethodMap;
9
- private connectionDeferred;
9
+ private protocolRepository;
10
+ private registry;
11
+ private deferred;
10
12
  private logger;
11
13
  constructor(bench?: IBench | undefined, logger?: ILogger);
12
14
  registerService(serviceName: string, type: ServiceType): void;
13
15
  ready(): Promise<void>;
14
- setChannel(channel: WSChannel): {
16
+ loadProtocol(protocol: TSumiProtocol): void;
17
+ setSumiConnection(connection: SumiConnection): {
18
+ dispose: () => void;
19
+ };
20
+ setConnection(connection: MessageConnection): {
15
21
  dispose: () => void;
16
22
  };
17
23
  onRequest(serviceName: string, _name: string, method: RPCServiceMethod): void;
24
+ onRequestService(serviceName: string, service: any): void;
18
25
  broadcast(serviceName: string, _name: string, ...args: any[]): Promise<any>;
19
26
  }
20
27
  //# sourceMappingURL=center.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"center.d.ts","sourceRoot":"","sources":["../../../src/common/rpc-service/center.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAkB,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAyB1C,qBAAa,gBAAgB;IAWf,OAAO,CAAC,KAAK,CAAC;IAVnB,GAAG,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAwB;IAE1C,OAAO,CAAC,gBAAgB,CAAsD;IAE9E,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,MAAM,CAAU;gBAEJ,KAAK,CAAC,oBAAQ,EAAE,MAAM,CAAC,EAAE,OAAO;IAKpD,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAQ7D,KAAK;IAIL,UAAU,CAAC,OAAO,EAAE,SAAS;;;IA0B7B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;IAWhE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CA2BlF"}
1
+ {"version":3,"file":"center.d.ts","sourceRoot":"","sources":["../../../src/common/rpc-service/center.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAsB,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO1E,qBAAa,gBAAgB;IAWf,OAAO,CAAC,KAAK,CAAC;IAVnB,GAAG,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,QAAQ,CAAiB;IAEjC,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAyB;IAEzC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,MAAM,CAAU;gBAEJ,KAAK,CAAC,oBAAQ,EAAE,MAAM,CAAC,EAAE,OAAO;IAKpD,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAQ7D,KAAK;IAIL,YAAY,CAAC,QAAQ,EAAE,aAAa;IAMpC,iBAAiB,CAAC,UAAU,EAAE,cAAc;;;IAuB5C,aAAa,CAAC,UAAU,EAAE,iBAAiB;;;IAwB3C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;IAItE,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAM5C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CA6BlF"}