@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 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.48+8a8f4b39b42`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0-next.48))
90
- - `@theia/application-package/lib/api` (from [`@theia/application-package@1.27.0-next.48+8a8f4b39b42`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0-next.48))
91
- - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.27.0-next.48+8a8f4b39b42`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0-next.48))
92
- - `@theia/request` (from [`@theia/request@1.27.0-next.48+8a8f4b39b42`](https://www.npmjs.com/package/@theia/request/v/1.27.0-next.48))
93
- - `@theia/request/lib/proxy` (from [`@theia/request@1.27.0-next.48+8a8f4b39b42`](https://www.npmjs.com/package/@theia/request/v/1.27.0-next.48))
94
- - `@theia/request/lib/node-request-service` (from [`@theia/request@1.27.0-next.48+8a8f4b39b42`](https://www.npmjs.com/package/@theia/request/v/1.27.0-next.48))
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;AAOvD,eAAO,MAAM,oBAAoB,iBAkC/B,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;AAE5D,QAAA,oBAAoB,GAAG,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IAC3D,IAAI,CAAC,sDAA+B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,UAAU;YACN,IAAA,sBAAa,EAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAU,gBAAO,CAAC,CAAC,CAAC;QACvD,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,mBAAU,CAAC,CAAC,eAAe,CAAC,uBAAc,CAAC,CAAC;IACjD,IAAI,CAAC,gBAAO,CAAC,CAAC,EAAE,CAAC,eAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAClE,IAAI,CAAC,8BAAa,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChD,IAAI,CAAC,+BAAa,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QACrC,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,uCAA2B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgB,4BAAU,EAAE,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC;QAClG,SAAS,GAAG,CAAgC,CAAgB,EAAE,QAAW;YACrE,IAAI,QAAQ,KAAK,KAAK,EAAE;gBACpB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;oBACvC,+BAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACnD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACvD,CAAC,CAAC;aACL;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,sBAAa,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAChC,CAAC,IAAY,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,qBAAS,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,gBAAO,CAAC,CAAC,EAAE,CAAC,eAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,mBAAU,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,gBAAO,CAAC,CAAC;IAC9B,CAAC,CACJ,CAAC;AACN,CAAC,CAAC,CAAC"}
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-7, they can be easily overridden.
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":"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"}
1
+ {"version":3,"file":"rpc-message-encoder.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-message-encoder.ts"],"names":[],"mappings":"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"}
@@ -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
- let args = this.readArray(msg);
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
- let args = this.readArray(msg);
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
- for (let i = this.encoders.length - 1; i >= 0; i--) {
345
- if (this.encoders[i][1].is(value)) {
346
- buf.writeUint8(this.encoders[i][0]);
347
- this.encoders[i][1].write(buf, value, (innerBuffer, innerValue) => {
348
- this.writeTypedValue(innerBuffer, innerValue);
349
- });
350
- return;
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
- encoder.writeTypedValue(writer, encoder);
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,+DAA6E;AAE7E,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;YAExD,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEzC,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;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
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.48+8a8f4b39b42",
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.48+8a8f4b39b42",
20
- "@theia/request": "1.27.0-next.48+8a8f4b39b42",
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": "8a8f4b39b42df825ead4c910feba9350f7146f78"
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-7, they can be easily overridden.
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
- let args = this.readArray(msg);
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
- let args = this.readArray(msg);
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
- for (let i: number = this.encoders.length - 1; i >= 0; i--) {
481
- if (this.encoders[i][1].is(value)) {
482
- buf.writeUint8(this.encoders[i][0]);
483
- this.encoders[i][1].write(buf, value, (innerBuffer, innerValue) => {
484
- this.writeTypedValue(innerBuffer, innerValue);
485
- });
486
- return;
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
  }