@theia/core 1.27.0-next.48 → 1.27.0-next.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/lib/browser/logger-frontend-module.d.ts.map +1 -1
- package/lib/browser/logger-frontend-module.js +8 -1
- package/lib/browser/logger-frontend-module.js.map +1 -1
- package/lib/common/message-rpc/rpc-message-encoder.d.ts +17 -5
- package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -1
- package/lib/common/message-rpc/rpc-message-encoder.js +72 -25
- package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -1
- package/lib/common/message-rpc/rpc-message-encoder.spec.js +13 -1
- package/lib/common/message-rpc/rpc-message-encoder.spec.js.map +1 -1
- package/package.json +4 -4
- package/src/browser/logger-frontend-module.ts +8 -1
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +15 -2
- package/src/common/message-rpc/rpc-message-encoder.ts +82 -27
package/README.md
CHANGED
|
@@ -86,12 +86,12 @@ export class SomeClass {
|
|
|
86
86
|
- `@phosphor/signaling` (from [`@phosphor/signaling@1`](https://www.npmjs.com/package/@phosphor/signaling))
|
|
87
87
|
- `@phosphor/virtualdom` (from [`@phosphor/virtualdom@1`](https://www.npmjs.com/package/@phosphor/virtualdom))
|
|
88
88
|
- `@phosphor/widgets` (from [`@phosphor/widgets@1`](https://www.npmjs.com/package/@phosphor/widgets))
|
|
89
|
-
- `@theia/application-package` (from [`@theia/application-package@1.27.0-next.
|
|
90
|
-
- `@theia/application-package/lib/api` (from [`@theia/application-package@1.27.0-next.
|
|
91
|
-
- `@theia/application-package/lib/environment` (from [`@theia/application-package@1.27.0-next.
|
|
92
|
-
- `@theia/request` (from [`@theia/request@1.27.0-next.
|
|
93
|
-
- `@theia/request/lib/proxy` (from [`@theia/request@1.27.0-next.
|
|
94
|
-
- `@theia/request/lib/node-request-service` (from [`@theia/request@1.27.0-next.
|
|
89
|
+
- `@theia/application-package` (from [`@theia/application-package@1.27.0-next.51+9da47d03e4e`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0-next.51))
|
|
90
|
+
- `@theia/application-package/lib/api` (from [`@theia/application-package@1.27.0-next.51+9da47d03e4e`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0-next.51))
|
|
91
|
+
- `@theia/application-package/lib/environment` (from [`@theia/application-package@1.27.0-next.51+9da47d03e4e`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0-next.51))
|
|
92
|
+
- `@theia/request` (from [`@theia/request@1.27.0-next.51+9da47d03e4e`](https://www.npmjs.com/package/@theia/request/v/1.27.0-next.51))
|
|
93
|
+
- `@theia/request/lib/proxy` (from [`@theia/request@1.27.0-next.51+9da47d03e4e`](https://www.npmjs.com/package/@theia/request/v/1.27.0-next.51))
|
|
94
|
+
- `@theia/request/lib/node-request-service` (from [`@theia/request@1.27.0-next.51+9da47d03e4e`](https://www.npmjs.com/package/@theia/request/v/1.27.0-next.51))
|
|
95
95
|
- `fs-extra` (from [`fs-extra@^4.0.2`](https://www.npmjs.com/package/fs-extra))
|
|
96
96
|
- `fuzzy` (from [`fuzzy@^0.1.3`](https://www.npmjs.com/package/fuzzy))
|
|
97
97
|
- `inversify` (from [`inversify@^5.1.1`](https://www.npmjs.com/package/inversify))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/logger-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAa,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"logger-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/logger-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAa,MAAM,WAAW,CAAC;AAQvD,eAAO,MAAM,oBAAoB,iBAwC/B,CAAC"}
|
|
@@ -22,6 +22,7 @@ const logger_1 = require("../common/logger");
|
|
|
22
22
|
const logger_watcher_1 = require("../common/logger-watcher");
|
|
23
23
|
const messaging_1 = require("./messaging");
|
|
24
24
|
const frontend_application_1 = require("./frontend-application");
|
|
25
|
+
const rpc_message_encoder_1 = require("../common/message-rpc/rpc-message-encoder");
|
|
25
26
|
exports.loggerFrontendModule = new inversify_1.ContainerModule(bind => {
|
|
26
27
|
bind(frontend_application_1.FrontendApplicationContribution).toDynamicValue(ctx => ({
|
|
27
28
|
initialize() {
|
|
@@ -39,7 +40,13 @@ exports.loggerFrontendModule = new inversify_1.ContainerModule(bind => {
|
|
|
39
40
|
if (property === 'log') {
|
|
40
41
|
return (name, logLevel, message, params) => {
|
|
41
42
|
logger_protocol_1.ConsoleLogger.log(name, logLevel, message, params);
|
|
42
|
-
return target.log(name, logLevel, message, params)
|
|
43
|
+
return target.log(name, logLevel, message, params).catch(err => {
|
|
44
|
+
if (err instanceof rpc_message_encoder_1.EncodingError) {
|
|
45
|
+
// In case of an EncodingError no RPC call is sent to the backend `ILoggerServer`. Nevertheless, we want to continue normally.
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
throw err;
|
|
49
|
+
});
|
|
43
50
|
};
|
|
44
51
|
}
|
|
45
52
|
return target[property];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-frontend-module.js","sourceRoot":"","sources":["../../src/browser/logger-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAEhF,yCAAuD;AACvD,+DAAqF;AACrF,6CAA6G;AAC7G,6DAAyD;AACzD,2CAA0D;AAC1D,iEAAyE;
|
|
1
|
+
{"version":3,"file":"logger-frontend-module.js","sourceRoot":"","sources":["../../src/browser/logger-frontend-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,13 +69,16 @@ export declare enum ObjectType {
|
|
|
69
69
|
Boolean = 6,
|
|
70
70
|
Number = 7,
|
|
71
71
|
ResponseError = 8,
|
|
72
|
-
Error = 9
|
|
72
|
+
Error = 9,
|
|
73
|
+
Map = 10,
|
|
74
|
+
Set = 11,
|
|
75
|
+
Function = 12
|
|
73
76
|
}
|
|
74
77
|
/**
|
|
75
78
|
* A value encoder writes javascript values to a write buffer. Encoders will be asked
|
|
76
79
|
* in turn (ordered by their tag value, descending) whether they can encode a given value
|
|
77
80
|
* This means encoders with higher tag values have priority. Since the default encoders
|
|
78
|
-
* have tag values from 1-
|
|
81
|
+
* have tag values from 1-12, they can be easily overridden.
|
|
79
82
|
*/
|
|
80
83
|
export interface ValueEncoder {
|
|
81
84
|
/**
|
|
@@ -87,11 +90,12 @@ export interface ValueEncoder {
|
|
|
87
90
|
* Write the given value to the buffer. Will only be called if {@link is(value)} returns true.
|
|
88
91
|
* @param buf The buffer to write to
|
|
89
92
|
* @param value The value to be written
|
|
93
|
+
* @param visitedObjects The collection of already visited (i.e. encoded) objects. Used to detect circular references
|
|
90
94
|
* @param recursiveEncode A function that will use the encoders registered on the {@link MessageEncoder}
|
|
91
95
|
* to write a value to the underlying buffer. This is used mostly to write structures like an array
|
|
92
96
|
* without having to know how to encode the values in the array
|
|
93
97
|
*/
|
|
94
|
-
write(buf: WriteBuffer, value: any, recursiveEncode?: (buf: WriteBuffer, value: any) => void): void;
|
|
98
|
+
write(buf: WriteBuffer, value: any, visitedObjects: WeakSet<object>, recursiveEncode?: (buf: WriteBuffer, value: any, visitedObjects: WeakSet<object>) => void): void;
|
|
95
99
|
}
|
|
96
100
|
/**
|
|
97
101
|
* Reads javascript values from a read buffer
|
|
@@ -107,12 +111,20 @@ export interface ValueDecoder {
|
|
|
107
111
|
*/
|
|
108
112
|
read(buf: ReadBuffer, recursiveDecode: (buf: ReadBuffer) => unknown): unknown;
|
|
109
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Custom error thrown by the {@link RpcMessageEncoder} if an error occurred during the encoding and the
|
|
116
|
+
* object could not be written to the given {@link WriteBuffer}
|
|
117
|
+
*/
|
|
118
|
+
export declare class EncodingError extends Error {
|
|
119
|
+
constructor(msg: string);
|
|
120
|
+
}
|
|
110
121
|
/**
|
|
111
122
|
* A `RpcMessageDecoder` parses a a binary message received via {@link ReadBuffer} into a {@link RpcMessage}
|
|
112
123
|
*/
|
|
113
124
|
export declare class RpcMessageDecoder {
|
|
114
125
|
protected decoders: Map<number, ValueDecoder>;
|
|
115
126
|
constructor();
|
|
127
|
+
registerDecoders(): void;
|
|
116
128
|
/**
|
|
117
129
|
* Registers a new {@link ValueDecoder} for the given tag.
|
|
118
130
|
* After the successful registration the {@link tagIntType} is recomputed
|
|
@@ -153,7 +165,7 @@ export declare class RpcMessageEncoder {
|
|
|
153
165
|
request(buf: WriteBuffer, requestId: number, method: string, args: any[]): void;
|
|
154
166
|
replyOK(buf: WriteBuffer, requestId: number, res: any): void;
|
|
155
167
|
replyErr(buf: WriteBuffer, requestId: number, err: any): void;
|
|
156
|
-
writeTypedValue(buf: WriteBuffer, value: any): void;
|
|
157
|
-
writeArray(buf: WriteBuffer, value: any[]): void;
|
|
168
|
+
writeTypedValue(buf: WriteBuffer, value: any, visitedObjects: WeakSet<object>): void;
|
|
169
|
+
writeArray(buf: WriteBuffer, value: any[], visitedObjects: WeakSet<object>): void;
|
|
158
170
|
}
|
|
159
171
|
//# sourceMappingURL=rpc-message-encoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-message-encoder.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-message-encoder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;GAMG;AAEH,oBAAY,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,mBAAmB,CAAC;AAE/G,0BAAkB,cAAc;IAC5B,OAAO,IAAI;IACX,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,MAAM,IAAI;CACb;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAmB,QAAQ,CAAC,IAAI,EAAE,GAAG;gBAAjD,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAW,IAAI,EAAE,GAAG;CAGzE;AAED;;GAEG;AAEH,oBAAY,UAAU;IAClB,IAAI,IAAI;IACR,SAAS,IAAI;IACb,WAAW,IAAI;IACf,SAAS,IAAI;IACb,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,MAAM,IAAI;IAEV,aAAa,IAAI;IACjB,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"rpc-message-encoder.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-message-encoder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;GAMG;AAEH,oBAAY,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,mBAAmB,CAAC;AAE/G,0BAAkB,cAAc;IAC5B,OAAO,IAAI;IACX,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,MAAM,IAAI;CACb;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAmB,QAAQ,CAAC,IAAI,EAAE,GAAG;gBAAjD,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAW,IAAI,EAAE,GAAG;CAGzE;AAED;;GAEG;AAEH,oBAAY,UAAU;IAClB,IAAI,IAAI;IACR,SAAS,IAAI;IACb,WAAW,IAAI;IACf,SAAS,IAAI;IACb,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,MAAM,IAAI;IAEV,aAAa,IAAI;IACjB,KAAK,IAAI;IACT,GAAG,KAAK;IACR,GAAG,KAAK;IACR,QAAQ,KAAK;CAEhB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB;;;OAGG;IACH,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC;IACxB;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;CACzK;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,GAAG,OAAO,CAAC;CACjF;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBACxB,GAAG,EAAE,MAAM;CAG1B;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE1B,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAa;;IAM1D,gBAAgB,IAAI,IAAI;IAyExB;;;;;;OAMG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAMzD,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAwBlC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa;IAQrD,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc;IAavD,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,mBAAmB;IAajE,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY;IAUzC,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe;IAY/C,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,GAAG,EAAE;IASjC,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,GAAG;CAQvC;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAE1B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAM;IAC3D,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;;IAM3D,SAAS,CAAC,gBAAgB,IAAI,IAAI;IA0GlC;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAQ5D,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKjD,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAOpF,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAO/E,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAM5D,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAM7D,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IA0BpF,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;CAMpF"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.RpcMessageEncoder = exports.RpcMessageDecoder = exports.ObjectType = exports.ResponseError = void 0;
|
|
19
|
+
exports.RpcMessageEncoder = exports.RpcMessageDecoder = exports.EncodingError = exports.ObjectType = exports.ResponseError = void 0;
|
|
20
20
|
/**
|
|
21
21
|
* A special error that can be returned in case a request
|
|
22
22
|
* has failed. Provides additional information i.e. an error code
|
|
@@ -46,13 +46,29 @@ var ObjectType;
|
|
|
46
46
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
47
47
|
ObjectType[ObjectType["ResponseError"] = 8] = "ResponseError";
|
|
48
48
|
ObjectType[ObjectType["Error"] = 9] = "Error";
|
|
49
|
+
ObjectType[ObjectType["Map"] = 10] = "Map";
|
|
50
|
+
ObjectType[ObjectType["Set"] = 11] = "Set";
|
|
51
|
+
ObjectType[ObjectType["Function"] = 12] = "Function";
|
|
49
52
|
})(ObjectType = exports.ObjectType || (exports.ObjectType = {}));
|
|
53
|
+
/**
|
|
54
|
+
* Custom error thrown by the {@link RpcMessageEncoder} if an error occurred during the encoding and the
|
|
55
|
+
* object could not be written to the given {@link WriteBuffer}
|
|
56
|
+
*/
|
|
57
|
+
class EncodingError extends Error {
|
|
58
|
+
constructor(msg) {
|
|
59
|
+
super(msg);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.EncodingError = EncodingError;
|
|
50
63
|
/**
|
|
51
64
|
* A `RpcMessageDecoder` parses a a binary message received via {@link ReadBuffer} into a {@link RpcMessage}
|
|
52
65
|
*/
|
|
53
66
|
class RpcMessageDecoder {
|
|
54
67
|
constructor() {
|
|
55
68
|
this.decoders = new Map();
|
|
69
|
+
this.registerDecoders();
|
|
70
|
+
}
|
|
71
|
+
registerDecoders() {
|
|
56
72
|
this.registerDecoder(ObjectType.JSON, {
|
|
57
73
|
read: buf => {
|
|
58
74
|
const json = buf.readString();
|
|
@@ -103,6 +119,15 @@ class RpcMessageDecoder {
|
|
|
103
119
|
this.registerDecoder(ObjectType.Number, {
|
|
104
120
|
read: buf => buf.readNumber()
|
|
105
121
|
});
|
|
122
|
+
this.registerDecoder(ObjectType.Map, {
|
|
123
|
+
read: buf => new Map(this.readArray(buf))
|
|
124
|
+
});
|
|
125
|
+
this.registerDecoder(ObjectType.Set, {
|
|
126
|
+
read: buf => new Set(this.readArray(buf))
|
|
127
|
+
});
|
|
128
|
+
this.registerDecoder(ObjectType.Function, {
|
|
129
|
+
read: () => ({})
|
|
130
|
+
});
|
|
106
131
|
}
|
|
107
132
|
/**
|
|
108
133
|
* Registers a new {@link ValueDecoder} for the given tag.
|
|
@@ -150,9 +175,7 @@ class RpcMessageDecoder {
|
|
|
150
175
|
parseRequest(msg) {
|
|
151
176
|
const callId = msg.readUint32();
|
|
152
177
|
const method = msg.readString();
|
|
153
|
-
|
|
154
|
-
// convert `null` to `undefined`, since we don't use `null` in internal plugin APIs
|
|
155
|
-
args = args.map(arg => arg === null ? undefined : arg); // eslint-disable-line no-null/no-null
|
|
178
|
+
const args = this.readArray(msg);
|
|
156
179
|
return {
|
|
157
180
|
type: 1 /* Request */,
|
|
158
181
|
id: callId,
|
|
@@ -163,9 +186,7 @@ class RpcMessageDecoder {
|
|
|
163
186
|
parseNotification(msg) {
|
|
164
187
|
const callId = msg.readUint32();
|
|
165
188
|
const method = msg.readString();
|
|
166
|
-
|
|
167
|
-
// convert `null` to `undefined`, since we don't use `null` in internal plugin APIs
|
|
168
|
-
args = args.map(arg => arg === null ? undefined : arg); // eslint-disable-line no-null/no-null
|
|
189
|
+
const args = this.readArray(msg);
|
|
169
190
|
return {
|
|
170
191
|
type: 2 /* Notification */,
|
|
171
192
|
id: callId,
|
|
@@ -228,9 +249,13 @@ class RpcMessageEncoder {
|
|
|
228
249
|
buf.writeString(JSON.stringify(value));
|
|
229
250
|
}
|
|
230
251
|
});
|
|
252
|
+
this.registerEncoder(ObjectType.Function, {
|
|
253
|
+
is: value => typeof value === 'function',
|
|
254
|
+
write: () => { }
|
|
255
|
+
});
|
|
231
256
|
this.registerEncoder(ObjectType.Object, {
|
|
232
257
|
is: value => typeof value === 'object',
|
|
233
|
-
write: (buf, object, recursiveEncode) => {
|
|
258
|
+
write: (buf, object, visitedObjects, recursiveEncode) => {
|
|
234
259
|
const properties = Object.keys(object);
|
|
235
260
|
const relevant = [];
|
|
236
261
|
for (const property of properties) {
|
|
@@ -242,7 +267,7 @@ class RpcMessageEncoder {
|
|
|
242
267
|
buf.writeLength(relevant.length);
|
|
243
268
|
for (const [property, value] of relevant) {
|
|
244
269
|
buf.writeString(property);
|
|
245
|
-
recursiveEncode === null || recursiveEncode === void 0 ? void 0 : recursiveEncode(buf, value);
|
|
270
|
+
recursiveEncode === null || recursiveEncode === void 0 ? void 0 : recursiveEncode(buf, value, visitedObjects);
|
|
246
271
|
}
|
|
247
272
|
}
|
|
248
273
|
});
|
|
@@ -264,6 +289,14 @@ class RpcMessageEncoder {
|
|
|
264
289
|
is: value => value instanceof ResponseError,
|
|
265
290
|
write: (buf, value) => buf.writeString(JSON.stringify(value))
|
|
266
291
|
});
|
|
292
|
+
this.registerEncoder(ObjectType.Map, {
|
|
293
|
+
is: value => value instanceof Map,
|
|
294
|
+
write: (buf, value, visitedObjects) => this.writeArray(buf, Array.from(value.entries()), visitedObjects)
|
|
295
|
+
});
|
|
296
|
+
this.registerEncoder(ObjectType.Set, {
|
|
297
|
+
is: value => value instanceof Set,
|
|
298
|
+
write: (buf, value, visitedObjects) => this.writeArray(buf, [...value], visitedObjects)
|
|
299
|
+
});
|
|
267
300
|
this.registerEncoder(ObjectType.Undefined, {
|
|
268
301
|
// eslint-disable-next-line no-null/no-null
|
|
269
302
|
is: value => value == null,
|
|
@@ -271,8 +304,8 @@ class RpcMessageEncoder {
|
|
|
271
304
|
});
|
|
272
305
|
this.registerEncoder(ObjectType.ObjectArray, {
|
|
273
306
|
is: value => Array.isArray(value),
|
|
274
|
-
write: (buf, value) => {
|
|
275
|
-
this.writeArray(buf, value);
|
|
307
|
+
write: (buf, value, visitedObjects) => {
|
|
308
|
+
this.writeArray(buf, value, visitedObjects);
|
|
276
309
|
}
|
|
277
310
|
});
|
|
278
311
|
this.registerEncoder(ObjectType.ByteArray, {
|
|
@@ -322,39 +355,53 @@ class RpcMessageEncoder {
|
|
|
322
355
|
buf.writeUint8(2 /* Notification */);
|
|
323
356
|
buf.writeUint32(requestId);
|
|
324
357
|
buf.writeString(method);
|
|
325
|
-
this.writeArray(buf, args);
|
|
358
|
+
this.writeArray(buf, args, new WeakSet());
|
|
326
359
|
}
|
|
327
360
|
request(buf, requestId, method, args) {
|
|
328
361
|
buf.writeUint8(1 /* Request */);
|
|
329
362
|
buf.writeUint32(requestId);
|
|
330
363
|
buf.writeString(method);
|
|
331
|
-
this.writeArray(buf, args);
|
|
364
|
+
this.writeArray(buf, args, new WeakSet());
|
|
332
365
|
}
|
|
333
366
|
replyOK(buf, requestId, res) {
|
|
334
367
|
buf.writeUint8(3 /* Reply */);
|
|
335
368
|
buf.writeUint32(requestId);
|
|
336
|
-
this.writeTypedValue(buf, res);
|
|
369
|
+
this.writeTypedValue(buf, res, new WeakSet());
|
|
337
370
|
}
|
|
338
371
|
replyErr(buf, requestId, err) {
|
|
339
372
|
buf.writeUint8(4 /* ReplyErr */);
|
|
340
373
|
buf.writeUint32(requestId);
|
|
341
|
-
this.writeTypedValue(buf, err);
|
|
374
|
+
this.writeTypedValue(buf, err, new WeakSet());
|
|
342
375
|
}
|
|
343
|
-
writeTypedValue(buf, value) {
|
|
344
|
-
|
|
345
|
-
if (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
376
|
+
writeTypedValue(buf, value, visitedObjects) {
|
|
377
|
+
if (value && typeof value === 'object') {
|
|
378
|
+
if (visitedObjects.has(value)) {
|
|
379
|
+
throw new EncodingError('Object to encode contains circular references!');
|
|
380
|
+
}
|
|
381
|
+
visitedObjects.add(value);
|
|
382
|
+
}
|
|
383
|
+
try {
|
|
384
|
+
for (let i = this.encoders.length - 1; i >= 0; i--) {
|
|
385
|
+
if (this.encoders[i][1].is(value)) {
|
|
386
|
+
buf.writeUint8(this.encoders[i][0]);
|
|
387
|
+
this.encoders[i][1].write(buf, value, visitedObjects, (innerBuffer, innerValue, _visitedObjects) => {
|
|
388
|
+
this.writeTypedValue(innerBuffer, innerValue, _visitedObjects);
|
|
389
|
+
});
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
throw new EncodingError(`No suitable value encoder found for ${value}`);
|
|
394
|
+
}
|
|
395
|
+
finally {
|
|
396
|
+
if (value && typeof value === 'object') {
|
|
397
|
+
visitedObjects.delete(value);
|
|
351
398
|
}
|
|
352
399
|
}
|
|
353
400
|
}
|
|
354
|
-
writeArray(buf, value) {
|
|
401
|
+
writeArray(buf, value, visitedObjects) {
|
|
355
402
|
buf.writeLength(value.length);
|
|
356
403
|
for (let i = 0; i < value.length; i++) {
|
|
357
|
-
this.writeTypedValue(buf, value[i]);
|
|
404
|
+
this.writeTypedValue(buf, value[i], visitedObjects);
|
|
358
405
|
}
|
|
359
406
|
}
|
|
360
407
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-message-encoder.js","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-message-encoder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpc-message-encoder.js","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-message-encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,13 +25,25 @@ describe('PPC Message Codex', () => {
|
|
|
25
25
|
const writer = new uint8_array_message_buffer_1.Uint8ArrayWriteBuffer(buffer);
|
|
26
26
|
const encoder = new rpc_message_encoder_1.RpcMessageEncoder();
|
|
27
27
|
const jsonMangled = JSON.parse(JSON.stringify(encoder));
|
|
28
|
-
|
|
28
|
+
// The RpcMessageEncoder can decode/encode collections, whereas JSON.parse can't. => We have to manually restore the set
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
+
jsonMangled.registeredTags = encoder.registeredTags;
|
|
31
|
+
encoder.writeTypedValue(writer, encoder, new WeakSet());
|
|
29
32
|
const written = writer.getCurrentContents();
|
|
30
33
|
const reader = new uint8_array_message_buffer_1.Uint8ArrayReadBuffer(written);
|
|
31
34
|
const decoder = new rpc_message_encoder_1.RpcMessageDecoder();
|
|
32
35
|
const decoded = decoder.readTypedValue(reader);
|
|
33
36
|
(0, chai_1.expect)(decoded).deep.equal(jsonMangled);
|
|
34
37
|
});
|
|
38
|
+
it('should fail with an EncodingError when trying to encode the object ', () => {
|
|
39
|
+
const x = new Set();
|
|
40
|
+
const y = new Set();
|
|
41
|
+
x.add(y);
|
|
42
|
+
y.add(x);
|
|
43
|
+
const encoder = new rpc_message_encoder_1.RpcMessageEncoder();
|
|
44
|
+
const writer = new uint8_array_message_buffer_1.Uint8ArrayWriteBuffer();
|
|
45
|
+
(0, chai_1.expect)(() => encoder.writeTypedValue(writer, x, new WeakSet())).to.throw(rpc_message_encoder_1.EncodingError);
|
|
46
|
+
});
|
|
35
47
|
});
|
|
36
48
|
});
|
|
37
49
|
//# sourceMappingURL=rpc-message-encoder.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-message-encoder.spec.js","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-message-encoder.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;AAEhF,+BAA8B;AAC9B,6EAA2F;AAC3F,+
|
|
1
|
+
{"version":3,"file":"rpc-message-encoder.spec.js","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-message-encoder.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;AAEhF,+BAA8B;AAC9B,6EAA2F;AAC3F,+DAA4F;AAE5F,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,+FAA+F,EAAE,GAAG,EAAE;YACrG,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,kDAAqB,CAAC,MAAM,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,IAAI,uCAAiB,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,wHAAwH;YACxH,8DAA8D;YAC9D,WAAW,CAAC,cAAc,GAAI,OAAe,CAAC,cAAc,CAAC;YAE7D,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;YAExD,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAE5C,MAAM,MAAM,GAAG,IAAI,iDAAoB,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,IAAI,uCAAiB,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC3E,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACT,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACT,MAAM,OAAO,GAAG,IAAI,uCAAiB,EAAE,CAAC;YAExC,MAAM,MAAM,GAAG,IAAI,kDAAqB,EAAE,CAAC;YAC3C,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mCAAa,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/core",
|
|
3
|
-
"version": "1.27.0-next.
|
|
3
|
+
"version": "1.27.0-next.51+9da47d03e4e",
|
|
4
4
|
"description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
|
|
5
5
|
"main": "lib/common/index.js",
|
|
6
6
|
"typings": "lib/common/index.d.ts",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"@phosphor/signaling": "1",
|
|
17
17
|
"@phosphor/virtualdom": "1",
|
|
18
18
|
"@phosphor/widgets": "1",
|
|
19
|
-
"@theia/application-package": "1.27.0-next.
|
|
20
|
-
"@theia/request": "1.27.0-next.
|
|
19
|
+
"@theia/application-package": "1.27.0-next.51+9da47d03e4e",
|
|
20
|
+
"@theia/request": "1.27.0-next.51+9da47d03e4e",
|
|
21
21
|
"@types/body-parser": "^1.16.4",
|
|
22
22
|
"@types/cookie": "^0.3.3",
|
|
23
23
|
"@types/dompurify": "^2.2.2",
|
|
@@ -200,5 +200,5 @@
|
|
|
200
200
|
"nyc": {
|
|
201
201
|
"extends": "../../configs/nyc.json"
|
|
202
202
|
},
|
|
203
|
-
"gitHead": "
|
|
203
|
+
"gitHead": "9da47d03e4e527ff2f54bab0e930b566ef4799e2"
|
|
204
204
|
}
|
|
@@ -20,6 +20,7 @@ import { ILogger, Logger, LoggerFactory, setRootLogger, LoggerName, rootLoggerNa
|
|
|
20
20
|
import { LoggerWatcher } from '../common/logger-watcher';
|
|
21
21
|
import { WebSocketConnectionProvider } from './messaging';
|
|
22
22
|
import { FrontendApplicationContribution } from './frontend-application';
|
|
23
|
+
import { EncodingError } from '../common/message-rpc/rpc-message-encoder';
|
|
23
24
|
|
|
24
25
|
export const loggerFrontendModule = new ContainerModule(bind => {
|
|
25
26
|
bind(FrontendApplicationContribution).toDynamicValue(ctx => ({
|
|
@@ -39,7 +40,13 @@ export const loggerFrontendModule = new ContainerModule(bind => {
|
|
|
39
40
|
if (property === 'log') {
|
|
40
41
|
return (name, logLevel, message, params) => {
|
|
41
42
|
ConsoleLogger.log(name, logLevel, message, params);
|
|
42
|
-
return target.log(name, logLevel, message, params)
|
|
43
|
+
return target.log(name, logLevel, message, params).catch(err => {
|
|
44
|
+
if (err instanceof EncodingError) {
|
|
45
|
+
// In case of an EncodingError no RPC call is sent to the backend `ILoggerServer`. Nevertheless, we want to continue normally.
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
throw err;
|
|
49
|
+
});
|
|
43
50
|
};
|
|
44
51
|
}
|
|
45
52
|
return target[property];
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { expect } from 'chai';
|
|
18
18
|
import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from './uint8-array-message-buffer';
|
|
19
|
-
import { RpcMessageDecoder, RpcMessageEncoder } from './rpc-message-encoder';
|
|
19
|
+
import { EncodingError, RpcMessageDecoder, RpcMessageEncoder } from './rpc-message-encoder';
|
|
20
20
|
|
|
21
21
|
describe('PPC Message Codex', () => {
|
|
22
22
|
describe('RPC Message Encoder & Decoder', () => {
|
|
@@ -26,8 +26,11 @@ describe('PPC Message Codex', () => {
|
|
|
26
26
|
|
|
27
27
|
const encoder = new RpcMessageEncoder();
|
|
28
28
|
const jsonMangled = JSON.parse(JSON.stringify(encoder));
|
|
29
|
+
// The RpcMessageEncoder can decode/encode collections, whereas JSON.parse can't. => We have to manually restore the set
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
jsonMangled.registeredTags = (encoder as any).registeredTags;
|
|
29
32
|
|
|
30
|
-
encoder.writeTypedValue(writer, encoder);
|
|
33
|
+
encoder.writeTypedValue(writer, encoder, new WeakSet());
|
|
31
34
|
|
|
32
35
|
const written = writer.getCurrentContents();
|
|
33
36
|
|
|
@@ -38,5 +41,15 @@ describe('PPC Message Codex', () => {
|
|
|
38
41
|
|
|
39
42
|
expect(decoded).deep.equal(jsonMangled);
|
|
40
43
|
});
|
|
44
|
+
it('should fail with an EncodingError when trying to encode the object ', () => {
|
|
45
|
+
const x = new Set();
|
|
46
|
+
const y = new Set();
|
|
47
|
+
x.add(y);
|
|
48
|
+
y.add(x);
|
|
49
|
+
const encoder = new RpcMessageEncoder();
|
|
50
|
+
|
|
51
|
+
const writer = new Uint8ArrayWriteBuffer();
|
|
52
|
+
expect(() => encoder.writeTypedValue(writer, x, new WeakSet())).to.throw(EncodingError);
|
|
53
|
+
});
|
|
41
54
|
});
|
|
42
55
|
});
|
|
@@ -99,7 +99,10 @@ export enum ObjectType {
|
|
|
99
99
|
Number = 7,
|
|
100
100
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
101
101
|
ResponseError = 8,
|
|
102
|
-
Error = 9
|
|
102
|
+
Error = 9,
|
|
103
|
+
Map = 10,
|
|
104
|
+
Set = 11,
|
|
105
|
+
Function = 12
|
|
103
106
|
|
|
104
107
|
}
|
|
105
108
|
|
|
@@ -107,7 +110,7 @@ export enum ObjectType {
|
|
|
107
110
|
* A value encoder writes javascript values to a write buffer. Encoders will be asked
|
|
108
111
|
* in turn (ordered by their tag value, descending) whether they can encode a given value
|
|
109
112
|
* This means encoders with higher tag values have priority. Since the default encoders
|
|
110
|
-
* have tag values from 1-
|
|
113
|
+
* have tag values from 1-12, they can be easily overridden.
|
|
111
114
|
*/
|
|
112
115
|
export interface ValueEncoder {
|
|
113
116
|
/**
|
|
@@ -119,11 +122,12 @@ export interface ValueEncoder {
|
|
|
119
122
|
* Write the given value to the buffer. Will only be called if {@link is(value)} returns true.
|
|
120
123
|
* @param buf The buffer to write to
|
|
121
124
|
* @param value The value to be written
|
|
125
|
+
* @param visitedObjects The collection of already visited (i.e. encoded) objects. Used to detect circular references
|
|
122
126
|
* @param recursiveEncode A function that will use the encoders registered on the {@link MessageEncoder}
|
|
123
127
|
* to write a value to the underlying buffer. This is used mostly to write structures like an array
|
|
124
128
|
* without having to know how to encode the values in the array
|
|
125
129
|
*/
|
|
126
|
-
write(buf: WriteBuffer, value: any, recursiveEncode?: (buf: WriteBuffer, value: any) => void): void;
|
|
130
|
+
write(buf: WriteBuffer, value: any, visitedObjects: WeakSet<object>, recursiveEncode?: (buf: WriteBuffer, value: any, visitedObjects: WeakSet<object>) => void): void;
|
|
127
131
|
}
|
|
128
132
|
|
|
129
133
|
/**
|
|
@@ -141,6 +145,16 @@ export interface ValueDecoder {
|
|
|
141
145
|
read(buf: ReadBuffer, recursiveDecode: (buf: ReadBuffer) => unknown): unknown;
|
|
142
146
|
}
|
|
143
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Custom error thrown by the {@link RpcMessageEncoder} if an error occurred during the encoding and the
|
|
150
|
+
* object could not be written to the given {@link WriteBuffer}
|
|
151
|
+
*/
|
|
152
|
+
export class EncodingError extends Error {
|
|
153
|
+
constructor(msg: string) {
|
|
154
|
+
super(msg);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
144
158
|
/**
|
|
145
159
|
* A `RpcMessageDecoder` parses a a binary message received via {@link ReadBuffer} into a {@link RpcMessage}
|
|
146
160
|
*/
|
|
@@ -149,6 +163,10 @@ export class RpcMessageDecoder {
|
|
|
149
163
|
protected decoders: Map<number, ValueDecoder> = new Map();
|
|
150
164
|
|
|
151
165
|
constructor() {
|
|
166
|
+
this.registerDecoders();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
registerDecoders(): void {
|
|
152
170
|
this.registerDecoder(ObjectType.JSON, {
|
|
153
171
|
read: buf => {
|
|
154
172
|
const json = buf.readString();
|
|
@@ -207,6 +225,18 @@ export class RpcMessageDecoder {
|
|
|
207
225
|
read: buf => buf.readNumber()
|
|
208
226
|
});
|
|
209
227
|
|
|
228
|
+
this.registerDecoder(ObjectType.Map, {
|
|
229
|
+
read: buf => new Map(this.readArray(buf))
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
this.registerDecoder(ObjectType.Set, {
|
|
233
|
+
read: buf => new Set(this.readArray(buf))
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
this.registerDecoder(ObjectType.Function, {
|
|
237
|
+
read: () => ({})
|
|
238
|
+
});
|
|
239
|
+
|
|
210
240
|
}
|
|
211
241
|
|
|
212
242
|
/**
|
|
@@ -257,9 +287,7 @@ export class RpcMessageDecoder {
|
|
|
257
287
|
protected parseRequest(msg: ReadBuffer): RequestMessage {
|
|
258
288
|
const callId = msg.readUint32();
|
|
259
289
|
const method = msg.readString();
|
|
260
|
-
|
|
261
|
-
// convert `null` to `undefined`, since we don't use `null` in internal plugin APIs
|
|
262
|
-
args = args.map(arg => arg === null ? undefined : arg); // eslint-disable-line no-null/no-null
|
|
290
|
+
const args = this.readArray(msg);
|
|
263
291
|
|
|
264
292
|
return {
|
|
265
293
|
type: RpcMessageType.Request,
|
|
@@ -272,9 +300,7 @@ export class RpcMessageDecoder {
|
|
|
272
300
|
protected parseNotification(msg: ReadBuffer): NotificationMessage {
|
|
273
301
|
const callId = msg.readUint32();
|
|
274
302
|
const method = msg.readString();
|
|
275
|
-
|
|
276
|
-
// convert `null` to `undefined`, since we don't use `null` in internal plugin APIs
|
|
277
|
-
args = args.map(arg => arg === null ? undefined : arg); // eslint-disable-line no-null/no-null
|
|
303
|
+
const args = this.readArray(msg);
|
|
278
304
|
|
|
279
305
|
return {
|
|
280
306
|
type: RpcMessageType.Notification,
|
|
@@ -348,9 +374,14 @@ export class RpcMessageEncoder {
|
|
|
348
374
|
}
|
|
349
375
|
});
|
|
350
376
|
|
|
377
|
+
this.registerEncoder(ObjectType.Function, {
|
|
378
|
+
is: value => typeof value === 'function',
|
|
379
|
+
write: () => { }
|
|
380
|
+
});
|
|
381
|
+
|
|
351
382
|
this.registerEncoder(ObjectType.Object, {
|
|
352
383
|
is: value => typeof value === 'object',
|
|
353
|
-
write: (buf, object, recursiveEncode) => {
|
|
384
|
+
write: (buf, object, visitedObjects, recursiveEncode) => {
|
|
354
385
|
const properties = Object.keys(object);
|
|
355
386
|
const relevant = [];
|
|
356
387
|
for (const property of properties) {
|
|
@@ -363,7 +394,7 @@ export class RpcMessageEncoder {
|
|
|
363
394
|
buf.writeLength(relevant.length);
|
|
364
395
|
for (const [property, value] of relevant) {
|
|
365
396
|
buf.writeString(property);
|
|
366
|
-
recursiveEncode?.(buf, value);
|
|
397
|
+
recursiveEncode?.(buf, value, visitedObjects);
|
|
367
398
|
}
|
|
368
399
|
}
|
|
369
400
|
});
|
|
@@ -388,6 +419,16 @@ export class RpcMessageEncoder {
|
|
|
388
419
|
write: (buf, value) => buf.writeString(JSON.stringify(value))
|
|
389
420
|
});
|
|
390
421
|
|
|
422
|
+
this.registerEncoder(ObjectType.Map, {
|
|
423
|
+
is: value => value instanceof Map,
|
|
424
|
+
write: (buf, value: Map<any, any>, visitedObjects) => this.writeArray(buf, Array.from(value.entries()), visitedObjects)
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
this.registerEncoder(ObjectType.Set, {
|
|
428
|
+
is: value => value instanceof Set,
|
|
429
|
+
write: (buf, value: Set<any>, visitedObjects) => this.writeArray(buf, [...value], visitedObjects)
|
|
430
|
+
});
|
|
431
|
+
|
|
391
432
|
this.registerEncoder(ObjectType.Undefined, {
|
|
392
433
|
// eslint-disable-next-line no-null/no-null
|
|
393
434
|
is: value => value == null,
|
|
@@ -396,8 +437,8 @@ export class RpcMessageEncoder {
|
|
|
396
437
|
|
|
397
438
|
this.registerEncoder(ObjectType.ObjectArray, {
|
|
398
439
|
is: value => Array.isArray(value),
|
|
399
|
-
write: (buf, value) => {
|
|
400
|
-
this.writeArray(buf, value);
|
|
440
|
+
write: (buf, value, visitedObjects) => {
|
|
441
|
+
this.writeArray(buf, value, visitedObjects);
|
|
401
442
|
}
|
|
402
443
|
});
|
|
403
444
|
|
|
@@ -454,44 +495,58 @@ export class RpcMessageEncoder {
|
|
|
454
495
|
buf.writeUint8(RpcMessageType.Notification);
|
|
455
496
|
buf.writeUint32(requestId);
|
|
456
497
|
buf.writeString(method);
|
|
457
|
-
this.writeArray(buf, args);
|
|
498
|
+
this.writeArray(buf, args, new WeakSet());
|
|
458
499
|
}
|
|
459
500
|
|
|
460
501
|
request(buf: WriteBuffer, requestId: number, method: string, args: any[]): void {
|
|
461
502
|
buf.writeUint8(RpcMessageType.Request);
|
|
462
503
|
buf.writeUint32(requestId);
|
|
463
504
|
buf.writeString(method);
|
|
464
|
-
this.writeArray(buf, args);
|
|
505
|
+
this.writeArray(buf, args, new WeakSet());
|
|
465
506
|
}
|
|
466
507
|
|
|
467
508
|
replyOK(buf: WriteBuffer, requestId: number, res: any): void {
|
|
468
509
|
buf.writeUint8(RpcMessageType.Reply);
|
|
469
510
|
buf.writeUint32(requestId);
|
|
470
|
-
this.writeTypedValue(buf, res);
|
|
511
|
+
this.writeTypedValue(buf, res, new WeakSet());
|
|
471
512
|
}
|
|
472
513
|
|
|
473
514
|
replyErr(buf: WriteBuffer, requestId: number, err: any): void {
|
|
474
515
|
buf.writeUint8(RpcMessageType.ReplyErr);
|
|
475
516
|
buf.writeUint32(requestId);
|
|
476
|
-
this.writeTypedValue(buf, err);
|
|
517
|
+
this.writeTypedValue(buf, err, new WeakSet());
|
|
477
518
|
}
|
|
478
519
|
|
|
479
|
-
writeTypedValue(buf: WriteBuffer, value: any): void {
|
|
480
|
-
|
|
481
|
-
if (
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
520
|
+
writeTypedValue(buf: WriteBuffer, value: any, visitedObjects: WeakSet<object>): void {
|
|
521
|
+
if (value && typeof value === 'object') {
|
|
522
|
+
if (visitedObjects.has(value)) {
|
|
523
|
+
throw new EncodingError('Object to encode contains circular references!');
|
|
524
|
+
}
|
|
525
|
+
visitedObjects.add(value);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
try {
|
|
529
|
+
for (let i: number = this.encoders.length - 1; i >= 0; i--) {
|
|
530
|
+
if (this.encoders[i][1].is(value)) {
|
|
531
|
+
buf.writeUint8(this.encoders[i][0]);
|
|
532
|
+
this.encoders[i][1].write(buf, value, visitedObjects, (innerBuffer, innerValue, _visitedObjects) => {
|
|
533
|
+
this.writeTypedValue(innerBuffer, innerValue, _visitedObjects);
|
|
534
|
+
});
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
throw new EncodingError(`No suitable value encoder found for ${value}`);
|
|
539
|
+
} finally {
|
|
540
|
+
if (value && typeof value === 'object') {
|
|
541
|
+
visitedObjects.delete(value);
|
|
487
542
|
}
|
|
488
543
|
}
|
|
489
544
|
}
|
|
490
545
|
|
|
491
|
-
writeArray(buf: WriteBuffer, value: any[]): void {
|
|
546
|
+
writeArray(buf: WriteBuffer, value: any[], visitedObjects: WeakSet<object>): void {
|
|
492
547
|
buf.writeLength(value.length);
|
|
493
548
|
for (let i = 0; i < value.length; i++) {
|
|
494
|
-
this.writeTypedValue(buf, value[i]);
|
|
549
|
+
this.writeTypedValue(buf, value[i], visitedObjects);
|
|
495
550
|
}
|
|
496
551
|
}
|
|
497
552
|
}
|