@opensumi/ide-connection 2.12.1-next-079c1930

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 (50) hide show
  1. package/README.md +208 -0
  2. package/lib/browser/ws-channel-handler.d.ts +27 -0
  3. package/lib/browser/ws-channel-handler.d.ts.map +1 -0
  4. package/lib/browser/ws-channel-handler.js +134 -0
  5. package/lib/browser/ws-channel-handler.js.map +1 -0
  6. package/lib/common/message.d.ts +29 -0
  7. package/lib/common/message.d.ts.map +1 -0
  8. package/lib/common/message.js +84 -0
  9. package/lib/common/message.js.map +1 -0
  10. package/lib/common/proxy.d.ts +2 -0
  11. package/lib/common/proxy.d.ts.map +1 -0
  12. package/lib/common/proxy.js +5 -0
  13. package/lib/common/proxy.js.map +1 -0
  14. package/lib/common/rpcProtocol.d.ts +68 -0
  15. package/lib/common/rpcProtocol.d.ts.map +1 -0
  16. package/lib/common/rpcProtocol.js +279 -0
  17. package/lib/common/rpcProtocol.js.map +1 -0
  18. package/lib/common/utils.d.ts +3 -0
  19. package/lib/common/utils.d.ts.map +1 -0
  20. package/lib/common/utils.js +12 -0
  21. package/lib/common/utils.js.map +1 -0
  22. package/lib/common/ws-channel.d.ts +74 -0
  23. package/lib/common/ws-channel.d.ts.map +1 -0
  24. package/lib/common/ws-channel.js +86 -0
  25. package/lib/common/ws-channel.js.map +1 -0
  26. package/lib/index.d.ts +6 -0
  27. package/lib/index.d.ts.map +1 -0
  28. package/lib/index.js +10 -0
  29. package/lib/index.js.map +1 -0
  30. package/lib/node/center/index.d.ts +63 -0
  31. package/lib/node/center/index.d.ts.map +1 -0
  32. package/lib/node/center/index.js +198 -0
  33. package/lib/node/center/index.js.map +1 -0
  34. package/lib/node/center/proxy.d.ts +43 -0
  35. package/lib/node/center/proxy.d.ts.map +1 -0
  36. package/lib/node/center/proxy.js +210 -0
  37. package/lib/node/center/proxy.js.map +1 -0
  38. package/lib/node/common-channel-handler.d.ts +35 -0
  39. package/lib/node/common-channel-handler.d.ts.map +1 -0
  40. package/lib/node/common-channel-handler.js +210 -0
  41. package/lib/node/common-channel-handler.js.map +1 -0
  42. package/lib/node/index.d.ts +4 -0
  43. package/lib/node/index.d.ts.map +1 -0
  44. package/lib/node/index.js +7 -0
  45. package/lib/node/index.js.map +1 -0
  46. package/lib/node/ws.d.ts +21 -0
  47. package/lib/node/ws.d.ts.map +1 -0
  48. package/lib/node/ws.js +88 -0
  49. package/lib/node/ws.js.map +1 -0
  50. package/package.json +30 -0
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSocketConnection = exports.RPCServiceStub = exports.RPCServiceCenter = exports.getRPCService = exports.createRPCService = exports.initRPCService = exports.ServiceType = exports.SocketMessageWriter = exports.SocketMessageReader = void 0;
4
+ const main_1 = require("@opensumi/vscode-jsonrpc/lib/node/main");
5
+ Object.defineProperty(exports, "SocketMessageReader", { enumerable: true, get: function () { return main_1.SocketMessageReader; } });
6
+ Object.defineProperty(exports, "SocketMessageWriter", { enumerable: true, get: function () { return main_1.SocketMessageWriter; } });
7
+ const proxy_1 = require("./proxy");
8
+ var ServiceType;
9
+ (function (ServiceType) {
10
+ ServiceType[ServiceType["Service"] = 0] = "Service";
11
+ ServiceType[ServiceType["Stub"] = 1] = "Stub";
12
+ })(ServiceType = exports.ServiceType || (exports.ServiceType = {}));
13
+ function initRPCService(center) {
14
+ return {
15
+ createRPCService: (name, service) => {
16
+ const proxy = new RPCServiceStub(name, center, ServiceType.Service).getProxy();
17
+ if (service) {
18
+ proxy.onRequestService(service);
19
+ }
20
+ return proxy;
21
+ },
22
+ getRPCService: (name) => {
23
+ return new RPCServiceStub(name, center, ServiceType.Stub).getProxy();
24
+ },
25
+ };
26
+ }
27
+ exports.initRPCService = initRPCService;
28
+ function createRPCService(name, center) {
29
+ return new RPCServiceStub(name, center, ServiceType.Service).getProxy();
30
+ }
31
+ exports.createRPCService = createRPCService;
32
+ function getRPCService(name, center) {
33
+ return new RPCServiceStub(name, center, ServiceType.Stub).getProxy();
34
+ }
35
+ exports.getRPCService = getRPCService;
36
+ class RPCServiceCenter {
37
+ constructor(bench, logger) {
38
+ this.bench = bench;
39
+ this.rpcProxy = [];
40
+ this.serviceProxy = [];
41
+ this.connection = [];
42
+ this.serviceMethodMap = { client: undefined };
43
+ this.createService = [];
44
+ this.getService = [];
45
+ this.uid = 'RPCServiceCenter:' + process.pid;
46
+ this.connectionPromise = new Promise((resolve) => {
47
+ this.connectionPromiseResolve = resolve;
48
+ });
49
+ this.logger = logger || console;
50
+ }
51
+ registerService(serviceName, type) {
52
+ if (type === ServiceType.Service) {
53
+ this.createService.push(serviceName);
54
+ if (this.bench) {
55
+ this.bench.registerService(serviceName);
56
+ }
57
+ }
58
+ else if (type === ServiceType.Stub) {
59
+ this.getService.push(serviceName);
60
+ }
61
+ }
62
+ when() {
63
+ return this.connectionPromise;
64
+ }
65
+ setConnection(connection) {
66
+ if (!this.connection.length) {
67
+ this.connectionPromiseResolve();
68
+ }
69
+ this.connection.push(connection);
70
+ const rpcProxy = new proxy_1.RPCProxy(this.serviceMethodMap, this.logger);
71
+ rpcProxy.listen(connection);
72
+ this.rpcProxy.push(rpcProxy);
73
+ const serviceProxy = rpcProxy.createProxy();
74
+ this.serviceProxy.push(serviceProxy);
75
+ }
76
+ removeConnection(connection) {
77
+ const removeIndex = this.connection.indexOf(connection);
78
+ if (removeIndex !== -1) {
79
+ this.connection.splice(removeIndex, 1);
80
+ this.rpcProxy.splice(removeIndex, 1);
81
+ this.serviceProxy.splice(removeIndex, 1);
82
+ }
83
+ return removeIndex !== -1;
84
+ }
85
+ onRequest(name, method) {
86
+ if (!this.connection.length) {
87
+ this.serviceMethodMap[name] = method;
88
+ }
89
+ else {
90
+ this.rpcProxy.forEach((proxy) => {
91
+ proxy.listenService({ [name]: method });
92
+ });
93
+ }
94
+ }
95
+ broadcast(name, ...args) {
96
+ return Promise.all(this.serviceProxy.map((proxy) => {
97
+ return proxy[name](...args);
98
+ })).then((result) => {
99
+ return result.filter((res) => res !== proxy_1.NOTREGISTERMETHOD);
100
+ }).then((result) => {
101
+ return result.length === 1 ? result[0] : result;
102
+ });
103
+ }
104
+ }
105
+ exports.RPCServiceCenter = RPCServiceCenter;
106
+ class RPCServiceStub {
107
+ constructor(serviceName, center, type) {
108
+ this.serviceName = serviceName;
109
+ this.center = center;
110
+ this.type = type;
111
+ this.getProxy = () => {
112
+ return new Proxy(this, {
113
+ // 调用方
114
+ get: (target, prop) => {
115
+ if (!target[prop]) {
116
+ if (typeof prop === 'symbol') {
117
+ return Promise.resolve();
118
+ }
119
+ else {
120
+ return (...args) => {
121
+ return this.ready().then(() => {
122
+ const name = this.getMethodName(prop);
123
+ return Promise.all(this.center.serviceProxy.map((proxy) => {
124
+ return proxy[name](...args);
125
+ })).then((result) => {
126
+ return result.filter((res) => res !== proxy_1.NOTREGISTERMETHOD);
127
+ }).then((result) => {
128
+ return result.length === 1 ? result[0] : result;
129
+ });
130
+ });
131
+ };
132
+ }
133
+ }
134
+ else {
135
+ return target[prop];
136
+ }
137
+ },
138
+ });
139
+ };
140
+ if (this.type === ServiceType.Service) {
141
+ this.center.registerService(serviceName, this.type);
142
+ }
143
+ }
144
+ async ready() {
145
+ return this.center.when();
146
+ }
147
+ getNotificationName(name) {
148
+ return `on:${this.serviceName}:${name}`;
149
+ }
150
+ getRequestName(name) {
151
+ return `${this.serviceName}:${name}`;
152
+ }
153
+ // 服务方
154
+ on(name, method) {
155
+ this.onRequest(name, method);
156
+ }
157
+ getServiceMethod(service) {
158
+ let props = [];
159
+ if (/^\s*class/.test(service.constructor.toString())) {
160
+ let obj = service;
161
+ do {
162
+ props = props.concat(Object.getOwnPropertyNames(obj));
163
+ } while (obj = Object.getPrototypeOf(obj));
164
+ props = props.sort().filter((e, i, arr) => {
165
+ return e !== arr[i + 1] && typeof service[e] === 'function';
166
+ });
167
+ }
168
+ else {
169
+ for (const prop in service) {
170
+ if (service[prop] && typeof service[prop] === 'function') {
171
+ props.push(prop);
172
+ }
173
+ }
174
+ }
175
+ return props;
176
+ }
177
+ onRequestService(service) {
178
+ const methods = this.getServiceMethod(service);
179
+ for (const method of methods) {
180
+ this.onRequest(method, service[method].bind(service));
181
+ }
182
+ }
183
+ onRequest(name, method) {
184
+ this.center.onRequest(this.getMethodName(name), method);
185
+ }
186
+ broadcast(name, ...args) {
187
+ return this.center.broadcast(this.getMethodName(name), ...args);
188
+ }
189
+ getMethodName(name) {
190
+ return name.startsWith('on') ? this.getNotificationName(name) : this.getRequestName(name);
191
+ }
192
+ }
193
+ exports.RPCServiceStub = RPCServiceStub;
194
+ function createSocketConnection(socket) {
195
+ return (0, main_1.createMessageConnection)(new main_1.SocketMessageReader(socket), new main_1.SocketMessageWriter(socket));
196
+ }
197
+ exports.createSocketConnection = createSocketConnection;
198
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/center/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { MessageConnection } from '@opensumi/vscode-jsonrpc/lib/common/connection';
2
+ export declare abstract class RPCService<T = any> {
3
+ rpcClient?: T[];
4
+ rpcRegistered?: boolean;
5
+ register?(): () => Promise<T>;
6
+ get client(): T | undefined;
7
+ }
8
+ export declare const NOTREGISTERMETHOD = "$$NOTREGISTERMETHOD";
9
+ export declare class ProxyClient {
10
+ proxy: any;
11
+ reservedWords: string[];
12
+ constructor(proxy: any, reservedWords?: string[]);
13
+ getClient(): {};
14
+ }
15
+ export declare class RPCProxy {
16
+ target?: RPCService<any> | undefined;
17
+ private connectionPromise;
18
+ private connectionPromiseResolve;
19
+ private connection;
20
+ private proxyService;
21
+ private logger;
22
+ constructor(target?: RPCService<any> | undefined, logger?: any);
23
+ listenService(service: any): void;
24
+ listen(connection: MessageConnection): void;
25
+ createProxy(): any;
26
+ get(target: any, p: PropertyKey): (...args: any[]) => Promise<unknown>;
27
+ private getServiceMethod;
28
+ private bindOnRequest;
29
+ private waitForConnection;
30
+ /**
31
+ * 对于纯数组参数的情况,收到请求/通知后做展开操作
32
+ * 因为在通信层会为每个 rpc 调用添加一个 CancellationToken 参数
33
+ * 如果参数本身是数组, 在方法中如果使用 spread 运算符获取参数(...args),则会出现 [...args, MutableToken] 这种情况
34
+ * 所以发送请求时将这类参数统一再用数组包了一层,形如 [[...args]], 参考 {@link RPCProxy.get get} 方法
35
+ * 此时接收到的数组类参数固定长度为 2,且最后一项一定是 MutableToken
36
+ * @param args
37
+ * @returns args
38
+ */
39
+ private serializeArguments;
40
+ private onRequest;
41
+ private onNotification;
42
+ }
43
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/node/center/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAEnF,8BAAsB,UAAU,CAAC,CAAC,GAAG,GAAG;IACtC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC;IAC7B,IAAI,MAAM,kBAET;CACF;AAED,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD,qBAAa,WAAW;IACf,KAAK,EAAE,GAAG,CAAC;IACX,aAAa,EAAE,MAAM,EAAE,CAAC;gBAEnB,KAAK,EAAE,GAAG,EAAE,aAAa,WAAW;IAIzC,SAAS;CAWjB;AAMD,qBAAa,QAAQ;IAOA,MAAM,CAAC;IAN1B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,wBAAwB,CAA0C;IAC1E,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,MAAM,CAAM;gBAED,MAAM,CAAC,6BAAY,EAAE,MAAM,CAAC,EAAE,GAAG;IAI7C,aAAa,CAAC,OAAO,KAAA;IAerB,MAAM,CAAC,UAAU,EAAE,iBAAiB;IAUpC,WAAW,IAAI,GAAG;IAMlB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,aAGnB,GAAG,EAAE;IA8CxB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;YAaZ,SAAS;IAmBvB,OAAO,CAAC,cAAc;CAQvB"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RPCProxy = exports.ProxyClient = exports.NOTREGISTERMETHOD = exports.RPCService = void 0;
4
+ class RPCService {
5
+ get client() {
6
+ return this.rpcClient ? this.rpcClient[0] : undefined;
7
+ }
8
+ }
9
+ exports.RPCService = RPCService;
10
+ exports.NOTREGISTERMETHOD = '$$NOTREGISTERMETHOD';
11
+ class ProxyClient {
12
+ constructor(proxy, reservedWords = ['then']) {
13
+ this.proxy = proxy;
14
+ this.reservedWords = reservedWords;
15
+ }
16
+ getClient() {
17
+ return new Proxy({}, {
18
+ get: (target, prop) => {
19
+ if (this.reservedWords.includes(prop) || typeof prop === 'symbol') {
20
+ return Promise.resolve();
21
+ }
22
+ else {
23
+ return this.proxy[prop];
24
+ }
25
+ },
26
+ });
27
+ }
28
+ }
29
+ exports.ProxyClient = ProxyClient;
30
+ class RPCProxy {
31
+ constructor(target, logger) {
32
+ this.target = target;
33
+ this.proxyService = {};
34
+ this.waitForConnection();
35
+ this.logger = logger || console;
36
+ }
37
+ listenService(service) {
38
+ if (this.connection) {
39
+ const proxyService = this.proxyService;
40
+ this.bindOnRequest(service, (service, prop) => {
41
+ proxyService[prop] = service[prop].bind(service);
42
+ });
43
+ }
44
+ else {
45
+ const target = this.target || {};
46
+ const methods = this.getServiceMethod(service);
47
+ methods.forEach((method) => {
48
+ target[method] = service[method].bind(service);
49
+ });
50
+ }
51
+ }
52
+ listen(connection) {
53
+ this.connection = connection;
54
+ if (this.target) {
55
+ this.listenService(this.target);
56
+ }
57
+ this.connectionPromiseResolve(connection);
58
+ connection.listen();
59
+ }
60
+ createProxy() {
61
+ const proxy = new Proxy(this, this);
62
+ const proxyClient = new ProxyClient(proxy);
63
+ return proxyClient.getClient();
64
+ }
65
+ get(target, p) {
66
+ const prop = p.toString();
67
+ return (...args) => {
68
+ return this.connectionPromise.then((connection) => {
69
+ connection = this.connection || connection;
70
+ return new Promise((resolve, reject) => {
71
+ try {
72
+ let isSingleArray = false;
73
+ if (args.length === 1 && Array.isArray(args[0])) {
74
+ isSingleArray = true;
75
+ }
76
+ // 调用方法为 on 开头时,作为单项通知
77
+ if (prop.startsWith('on')) {
78
+ if (isSingleArray) {
79
+ connection.sendNotification(prop, [...args]);
80
+ }
81
+ else {
82
+ connection.sendNotification(prop, ...args);
83
+ }
84
+ resolve(null);
85
+ }
86
+ else {
87
+ let requestResult;
88
+ if (isSingleArray) {
89
+ requestResult = connection.sendRequest(prop, [...args]);
90
+ }
91
+ else {
92
+ requestResult = connection.sendRequest(prop, ...args);
93
+ }
94
+ requestResult.catch((err) => { reject(err); })
95
+ .then((result) => {
96
+ if (result.error) {
97
+ const error = new Error(result.data.message);
98
+ if (result.data.stack) {
99
+ error.stack = result.data.stack;
100
+ }
101
+ reject(error);
102
+ }
103
+ else {
104
+ resolve(result.data);
105
+ }
106
+ });
107
+ }
108
+ }
109
+ catch (e) { }
110
+ });
111
+ });
112
+ };
113
+ }
114
+ getServiceMethod(service) {
115
+ let props = [];
116
+ if (/^\s*class/.test(service.constructor.toString())) {
117
+ let obj = service;
118
+ do {
119
+ props = props.concat(Object.getOwnPropertyNames(obj));
120
+ } while (obj = Object.getPrototypeOf(obj));
121
+ props = props.sort().filter((e, i, arr) => {
122
+ return e !== arr[i + 1] && typeof service[e] === 'function';
123
+ });
124
+ }
125
+ else {
126
+ for (const prop in service) {
127
+ if (service[prop] && typeof service[prop] === 'function') {
128
+ props.push(prop);
129
+ }
130
+ }
131
+ }
132
+ return props;
133
+ }
134
+ bindOnRequest(service, cb) {
135
+ if (this.connection) {
136
+ const connection = this.connection;
137
+ const methods = this.getServiceMethod(service);
138
+ methods.forEach((method) => {
139
+ if (method.startsWith('on')) {
140
+ connection.onNotification(method, (...args) => this.onNotification(method, ...args));
141
+ }
142
+ else {
143
+ connection.onRequest(method, (...args) => this.onRequest(method, ...args));
144
+ }
145
+ if (cb) {
146
+ cb(service, method);
147
+ }
148
+ });
149
+ connection.onRequest((method) => {
150
+ if (!this.proxyService[method]) {
151
+ return {
152
+ error: false,
153
+ data: exports.NOTREGISTERMETHOD,
154
+ };
155
+ }
156
+ });
157
+ }
158
+ }
159
+ waitForConnection() {
160
+ this.connectionPromise = new Promise((resolve) => {
161
+ this.connectionPromiseResolve = resolve;
162
+ });
163
+ }
164
+ /**
165
+ * 对于纯数组参数的情况,收到请求/通知后做展开操作
166
+ * 因为在通信层会为每个 rpc 调用添加一个 CancellationToken 参数
167
+ * 如果参数本身是数组, 在方法中如果使用 spread 运算符获取参数(...args),则会出现 [...args, MutableToken] 这种情况
168
+ * 所以发送请求时将这类参数统一再用数组包了一层,形如 [[...args]], 参考 {@link RPCProxy.get get} 方法
169
+ * 此时接收到的数组类参数固定长度为 2,且最后一项一定是 MutableToken
170
+ * @param args
171
+ * @returns args
172
+ */
173
+ serializeArguments(args) {
174
+ const maybeCancellationToken = args[args.length - 1];
175
+ if (args.length === 2 &&
176
+ Array.isArray(args[0]) &&
177
+ maybeCancellationToken.hasOwnProperty('_isCancelled')) {
178
+ return [...args[0], maybeCancellationToken];
179
+ }
180
+ return args;
181
+ }
182
+ async onRequest(prop, ...args) {
183
+ try {
184
+ const result = await this.proxyService[prop](...this.serializeArguments(args));
185
+ return {
186
+ error: false,
187
+ data: result,
188
+ };
189
+ }
190
+ catch (e) {
191
+ return {
192
+ error: true,
193
+ data: {
194
+ message: e.message,
195
+ stack: e.stack,
196
+ },
197
+ };
198
+ }
199
+ }
200
+ onNotification(prop, ...args) {
201
+ try {
202
+ this.proxyService[prop](...this.serializeArguments(args));
203
+ }
204
+ catch (e) {
205
+ this.logger.warn('notification', e);
206
+ }
207
+ }
208
+ }
209
+ exports.RPCProxy = RPCProxy;
210
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/node/center/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { WebSocketHandler } from './ws';
2
+ import ws from 'ws';
3
+ export interface IPathHander {
4
+ dispose: (connection: any, connectionId: string) => void;
5
+ handler: (connection: any, connectionId: string, params?: any) => void;
6
+ reconnect?: (connection: any, connectionId: string) => void;
7
+ connection?: any;
8
+ }
9
+ export declare class CommonChannelPathHandler {
10
+ private handlerMap;
11
+ private paramsKey;
12
+ register(channelPath: string, handler: IPathHander): void;
13
+ getParams(channelPath: string, value: string): {};
14
+ removeHandler(channelPath: string, handler: IPathHander): void;
15
+ get(channelPath: string): IPathHander[] | undefined;
16
+ disposeConnectionClientId(connection: ws, clientId: string): void;
17
+ getAll(): IPathHander[][];
18
+ }
19
+ export declare const commonChannelPathHandler: CommonChannelPathHandler;
20
+ export declare class CommonChannelHandler extends WebSocketHandler {
21
+ private logger;
22
+ static channelId: number;
23
+ handlerId: string;
24
+ private wsServer;
25
+ private handlerRoute;
26
+ private channelMap;
27
+ private connectionMap;
28
+ private heartbeatMap;
29
+ constructor(routePath: string, logger?: any);
30
+ private hearbeat;
31
+ private initWSServer;
32
+ private channelConnectionSend;
33
+ handleUpgrade(wsPathname: string, request: any, socket: any, head: any): boolean;
34
+ }
35
+ //# sourceMappingURL=common-channel-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-channel-handler.d.ts","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvE,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,UAAU,CAAyC;IAC3D,OAAO,CAAC,SAAS,CAAkC;IAEnD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAqBlD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAU5C,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAcvD,GAAG,CAAC,WAAW,EAAE,MAAM;IAGvB,yBAAyB,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM;IAO1D,MAAM;CAGP;AAED,eAAO,MAAM,wBAAwB,0BAAiC,CAAC;AAGvE,qBAAa,oBAAqB,SAAQ,gBAAgB;IAUzB,OAAO,CAAC,MAAM;IAT7C,MAAM,CAAC,SAAS,SAAK;IAEd,SAAS,SAAoB;IACpC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA0C;gBAElD,SAAS,EAAE,MAAM,EAAU,MAAM,GAAE,GAAa;IAK5D,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,YAAY;IA0FpB,OAAO,CAAC,qBAAqB,CAU5B;IACM,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;CAiBxF"}