@theia/core 1.24.0-next.75 → 1.24.0-next.76

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,9 +86,9 @@ 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.24.0-next.75+55d7aec2612`](https://www.npmjs.com/package/@theia/application-package/v/1.24.0-next.75))
90
- - `@theia/application-package/lib/api` (from [`@theia/application-package@1.24.0-next.75+55d7aec2612`](https://www.npmjs.com/package/@theia/application-package/v/1.24.0-next.75))
91
- - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.24.0-next.75+55d7aec2612`](https://www.npmjs.com/package/@theia/application-package/v/1.24.0-next.75))
89
+ - `@theia/application-package` (from [`@theia/application-package@1.24.0-next.76+14b114ceeda`](https://www.npmjs.com/package/@theia/application-package/v/1.24.0-next.76))
90
+ - `@theia/application-package/lib/api` (from [`@theia/application-package@1.24.0-next.76+14b114ceeda`](https://www.npmjs.com/package/@theia/application-package/v/1.24.0-next.76))
91
+ - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.24.0-next.76+14b114ceeda`](https://www.npmjs.com/package/@theia/application-package/v/1.24.0-next.76))
92
92
  - `fs-extra` (from [`fs-extra@^4.0.2`](https://www.npmjs.com/package/fs-extra))
93
93
  - `fuzzy` (from [`fuzzy@^0.1.3`](https://www.npmjs.com/package/fuzzy))
94
94
  - `inversify` (from [`inversify@^5.1.1`](https://www.npmjs.com/package/inversify))
@@ -300,6 +300,43 @@ describe('Preference Proxy', () => {
300
300
  (0, chai_1.expect)(events).to.have.length(3, 'One event for base, one for each override');
301
301
  (0, chai_1.expect)(events.every(event => event.newValue === 'foo'), 'Should have returned the default in case of garbage.');
302
302
  });
303
+ it("Validated proxies don't retain old values for overrides after a change (no emitter).", async () => {
304
+ const { proxy, validationCallCounter } = await prepareValidationTest();
305
+ prefSchema.registerOverrideIdentifier('swift');
306
+ const initialValue = proxy.get({ preferenceName: 'my.pref', overrideIdentifier: 'swift' });
307
+ (0, chai_1.expect)(initialValue).to.equal('foo', 'Proxy should start with default value.');
308
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(1, 'Retrieval should validate (1).');
309
+ await prefService.set('my.pref', 'bar', preference_scope_1.PreferenceScope.User);
310
+ (0, chai_1.expect)(proxy.get('my.pref')).to.equal('bar', 'The base should have been updated.');
311
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(2, 'Retrieval should validate (2).');
312
+ (0, chai_1.expect)(proxy.get({ preferenceName: 'my.pref', overrideIdentifier: 'swift' })).to.equal('bar', 'Proxy should update empty overrides on change.');
313
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(3, 'Retrieval should validate (3).');
314
+ });
315
+ // The scenario with a listener differs because the proxy will start caching known valid values when a listener is attached.
316
+ it("Validated proxies don't retain old values for overrides after a change (with emitter)", async () => {
317
+ const { proxy, validationCallCounter } = await prepareValidationTest();
318
+ prefSchema.registerOverrideIdentifier('swift');
319
+ const override = { preferenceName: 'my.pref', overrideIdentifier: 'swift' };
320
+ proxy.onPreferenceChanged; // Initialize the listeners.
321
+ const initialValue = proxy.get(override);
322
+ (0, chai_1.expect)(initialValue).to.equal('foo', 'Proxy should start with default value.');
323
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(1, 'Retrieval should validate.');
324
+ await prefService.set('my.pref', 'bar', preference_scope_1.PreferenceScope.User);
325
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(2, 'Event should trigger validation (1).');
326
+ (0, chai_1.expect)(proxy.get('my.pref')).to.equal('bar', 'The base should have been updated.');
327
+ (0, chai_1.expect)(proxy.get(override)).to.equal('bar', 'Proxy should update empty overrides on change.');
328
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(2, 'Subsequent retrievals should not trigger validation. (1)');
329
+ await prefService.set(prefService.overridePreferenceName(override), 'baz', preference_scope_1.PreferenceScope.User);
330
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(3, 'Event should trigger validation (2).');
331
+ (0, chai_1.expect)(proxy.get('my.pref')).to.equal('bar', 'Base should not have been updated.');
332
+ (0, chai_1.expect)(proxy.get(override)).to.equal('baz', 'Override should have been updated');
333
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(3, 'Subsequent retrievals should not trigger validation. (2)');
334
+ await prefService.set('my.pref', 'boom', preference_scope_1.PreferenceScope.User);
335
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(4, 'Event should trigger validation (3).');
336
+ (0, chai_1.expect)(proxy.get('my.pref')).to.equal('boom', 'Base should have been updated.');
337
+ (0, chai_1.expect)(proxy.get(override)).to.equal('baz', 'Override should not have been updated');
338
+ (0, chai_1.expect)(validationCallCounter.calls).to.equal(4, 'Subsequent retrievals should not trigger validation. (3)');
339
+ });
303
340
  }
304
341
  it('toJSON with deep', async () => {
305
342
  const { proxy, promisedSchema } = getProxy({
@@ -1 +1 @@
1
- {"version":3,"file":"preference-proxy.spec.js","sourceRoot":"","sources":["../../../src/browser/preferences/preference-proxy.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preference-proxy.spec.js","sourceRoot":"","sources":["../../../src/browser/preferences/preference-proxy.spec.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,21 @@
1
1
  import { JSONValue } from '@phosphor/coreutils';
2
- import { PreferenceValidationService } from '.';
3
2
  import { InjectablePreferenceProxy } from './injectable-preference-proxy';
4
3
  import { OverridePreferenceName } from './preference-language-override-service';
5
4
  import { PreferenceChanges } from './preference-service';
5
+ import { PreferenceValidationService } from './preference-validation-service';
6
6
  export declare class ValidatedPreferenceProxy<T extends Record<string, JSONValue>> extends InjectablePreferenceProxy<T> {
7
7
  protected readonly validator: PreferenceValidationService;
8
- protected validPreferences: Map<string, JSONValue>;
8
+ /**
9
+ * This map should be initialized only when the proxy starts listening to events from the PreferenceService in {@link ValidatedPreferenceProxy.subscribeToChangeEvents}.
10
+ * Otherwise, it can't guarantee that the cache will remain up-to-date and is better off just retrieving the value.
11
+ */
12
+ protected validPreferences?: Map<string, JSONValue>;
9
13
  protected handlePreferenceChanges(changes: PreferenceChanges): void;
10
14
  getValue<K extends keyof T & string>(preferenceIdentifier: K | (OverridePreferenceName & {
11
15
  preferenceName: K;
12
16
  }), defaultValue: T[K], resourceUri?: string | undefined): T[K];
13
17
  protected ensureValid<K extends keyof T & string>(preferenceName: K, getCandidate: () => T[K], isChange?: boolean): T[K];
18
+ protected subscribeToChangeEvents(): void;
14
19
  dispose(): void;
15
20
  }
16
21
  //# sourceMappingURL=validated-preference-proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validated-preference-proxy.d.ts","sourceRoot":"","sources":["../../../src/browser/preferences/validated-preference-proxy.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,2BAA2B,EAAE,MAAM,GAAG,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBACa,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAE,SAAQ,yBAAyB,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAE/F,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;cAE5C,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAqCnE,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACxC,oBAAoB,EAAE,CAAC,GAAG,CAAC,sBAAsB,GAAG;QAAE,cAAc,EAAE,CAAC,CAAC;KAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,qBAAmB,GAChI,CAAC,CAAC,CAAC,CAAC;IAKP,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAU/G,OAAO,IAAI,IAAI;CAM3B"}
1
+ {"version":3,"file":"validated-preference-proxy.d.ts","sourceRoot":"","sources":["../../../src/browser/preferences/validated-preference-proxy.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAE9E,qBACa,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAE,SAAQ,yBAAyB,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAE/F;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;cAEjC,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAgDnE,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACxC,oBAAoB,EAAE,CAAC,GAAG,CAAC,sBAAsB,GAAG;QAAE,cAAc,EAAE,CAAC,CAAC;KAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,qBAAmB,GAChI,CAAC,CAAC,CAAC,CAAC;IAKP,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;cAUrG,uBAAuB,IAAI,IAAI;IAKzC,OAAO,IAAI,IAAI;CAM3B"}
@@ -26,14 +26,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.ValidatedPreferenceProxy = void 0;
28
28
  const inversify_1 = require("inversify");
29
- const _1 = require(".");
30
29
  const injectable_preference_proxy_1 = require("./injectable-preference-proxy");
31
30
  const preference_language_override_service_1 = require("./preference-language-override-service");
31
+ const preference_provider_1 = require("./preference-provider");
32
+ const preference_validation_service_1 = require("./preference-validation-service");
32
33
  let ValidatedPreferenceProxy = class ValidatedPreferenceProxy extends injectable_preference_proxy_1.InjectablePreferenceProxy {
33
- constructor() {
34
- super(...arguments);
35
- this.validPreferences = new Map();
36
- }
37
34
  handlePreferenceChanges(changes) {
38
35
  var _a, _b;
39
36
  if (this.schema) {
@@ -44,29 +41,40 @@ let ValidatedPreferenceProxy = class ValidatedPreferenceProxy extends injectable
44
41
  if (this.isRelevantChange(change, overridden)) {
45
42
  let doSet = false;
46
43
  const baseName = (_a = overridden === null || overridden === void 0 ? void 0 : overridden.preferenceName) !== null && _a !== void 0 ? _a : change.preferenceName;
47
- const tracker = (_b = overrideTracker.get(baseName)) !== null && _b !== void 0 ? _b : (doSet = true, { value: undefined, overrides: [] });
44
+ const tracker = (_b = overrideTracker.get(baseName)) !== null && _b !== void 0 ? _b : (doSet = true, { overrides: [] });
48
45
  if (overridden) {
49
46
  tracker.overrides.push(overridden);
50
47
  }
51
- else {
52
- tracker.value = change.newValue;
53
- }
54
48
  if (doSet) {
55
49
  overrideTracker.set(baseName, tracker);
56
50
  }
57
51
  }
58
52
  }
59
53
  for (const [baseName, tracker] of overrideTracker.entries()) {
60
- const configuredValue = tracker.value;
61
- const validatedValue = this.ensureValid(baseName, () => configuredValue, true);
54
+ const validated = [];
55
+ // This could go wrong if someone sets a lot of different, complex values for different language overrides simultaneously.
56
+ // In the normal case, we'll just be doing strict equal checks on primitives.
57
+ const getValidValue = (name) => {
58
+ var _a;
59
+ const configuredForCurrent = changes[name].newValue;
60
+ const existingValue = validated.find(([configuredForValid]) => preference_provider_1.PreferenceProvider.deepEqual(configuredForValid, configuredForCurrent));
61
+ if (existingValue) {
62
+ (_a = this.validPreferences) === null || _a === void 0 ? void 0 : _a.set(name, existingValue[1]);
63
+ return existingValue[1];
64
+ }
65
+ const validValue = this.ensureValid(name, () => configuredForCurrent, true);
66
+ validated.push([configuredForCurrent, validValue]);
67
+ return validValue;
68
+ };
62
69
  if (baseName in changes && this.isRelevantChange(changes[baseName])) {
70
+ const newValue = getValidValue(baseName);
63
71
  const { domain, oldValue, preferenceName, scope } = changes[baseName];
64
- this.fireChangeEvent(this.buildNewChangeEvent({ domain, oldValue, preferenceName, scope, newValue: validatedValue }));
72
+ this.fireChangeEvent(this.buildNewChangeEvent({ domain, oldValue, preferenceName, scope, newValue }));
65
73
  }
66
74
  for (const override of tracker.overrides) {
67
75
  const name = this.preferences.overridePreferenceName(override);
68
76
  const { domain, oldValue, preferenceName, scope } = changes[name];
69
- const newValue = changes[name].newValue === configuredValue ? validatedValue : this.ensureValid(name, () => changes[name].newValue, true);
77
+ const newValue = getValidValue(name);
70
78
  this.fireChangeEvent(this.buildNewChangeEvent({ domain, oldValue, preferenceName, scope, newValue }, override));
71
79
  }
72
80
  }
@@ -77,24 +85,31 @@ let ValidatedPreferenceProxy = class ValidatedPreferenceProxy extends injectable
77
85
  return this.ensureValid(preferenceName, () => { var _a; return ((_a = super.getValue(preferenceIdentifier, defaultValue, resourceUri)) !== null && _a !== void 0 ? _a : defaultValue); }, false);
78
86
  }
79
87
  ensureValid(preferenceName, getCandidate, isChange) {
80
- if (!isChange && this.validPreferences.has(preferenceName)) {
88
+ var _a, _b;
89
+ if (!isChange && ((_a = this.validPreferences) === null || _a === void 0 ? void 0 : _a.has(preferenceName))) {
81
90
  return this.validPreferences.get(preferenceName);
82
91
  }
83
92
  const candidate = getCandidate();
84
93
  const valid = this.validator.validateByName(preferenceName, candidate);
85
- this.validPreferences.set(preferenceName, valid);
94
+ (_b = this.validPreferences) === null || _b === void 0 ? void 0 : _b.set(preferenceName, valid);
86
95
  return valid;
87
96
  }
97
+ subscribeToChangeEvents() {
98
+ var _a;
99
+ (_a = this.validPreferences) !== null && _a !== void 0 ? _a : (this.validPreferences = new Map());
100
+ super.subscribeToChangeEvents();
101
+ }
88
102
  dispose() {
103
+ var _a;
89
104
  super.dispose();
90
105
  if (this.options.isDisposable) {
91
- this.validPreferences.clear();
106
+ (_a = this.validPreferences) === null || _a === void 0 ? void 0 : _a.clear();
92
107
  }
93
108
  }
94
109
  };
95
110
  __decorate([
96
- (0, inversify_1.inject)(_1.PreferenceValidationService),
97
- __metadata("design:type", _1.PreferenceValidationService)
111
+ (0, inversify_1.inject)(preference_validation_service_1.PreferenceValidationService),
112
+ __metadata("design:type", preference_validation_service_1.PreferenceValidationService)
98
113
  ], ValidatedPreferenceProxy.prototype, "validator", void 0);
99
114
  ValidatedPreferenceProxy = __decorate([
100
115
  (0, inversify_1.injectable)()
@@ -1 +1 @@
1
- {"version":3,"file":"validated-preference-proxy.js","sourceRoot":"","sources":["../../../src/browser/preferences/validated-preference-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validated-preference-proxy.js","sourceRoot":"","sources":["../../../src/browser/preferences/validated-preference-proxy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.24.0-next.75+55d7aec2612",
3
+ "version": "1.24.0-next.76+14b114ceeda",
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",
@@ -17,7 +17,7 @@
17
17
  "@phosphor/virtualdom": "1",
18
18
  "@phosphor/widgets": "1",
19
19
  "@primer/octicons-react": "^9.0.0",
20
- "@theia/application-package": "1.24.0-next.75+55d7aec2612",
20
+ "@theia/application-package": "1.24.0-next.76+14b114ceeda",
21
21
  "@types/body-parser": "^1.16.4",
22
22
  "@types/cookie": "^0.3.3",
23
23
  "@types/dompurify": "^2.2.2",
@@ -190,5 +190,5 @@
190
190
  "nyc": {
191
191
  "extends": "../../configs/nyc.json"
192
192
  },
193
- "gitHead": "55d7aec26121a1f13adbcef75362049bf9c0d9f2"
193
+ "gitHead": "14b114ceeda89fa1b5b9be036ad2e49898f17d9b"
194
194
  }
@@ -333,6 +333,48 @@ describe('Preference Proxy', () => {
333
333
  expect(events).to.have.length(3, 'One event for base, one for each override');
334
334
  expect(events.every(event => event.newValue === 'foo'), 'Should have returned the default in case of garbage.');
335
335
  });
336
+
337
+ it("Validated proxies don't retain old values for overrides after a change (no emitter).", async () => {
338
+ const { proxy, validationCallCounter } = await prepareValidationTest();
339
+ prefSchema.registerOverrideIdentifier('swift');
340
+ const initialValue = proxy.get({ preferenceName: 'my.pref', overrideIdentifier: 'swift' });
341
+ expect(initialValue).to.equal('foo', 'Proxy should start with default value.');
342
+ expect(validationCallCounter.calls).to.equal(1, 'Retrieval should validate (1).');
343
+ await prefService.set('my.pref', 'bar', PreferenceScope.User);
344
+ expect(proxy.get('my.pref')).to.equal('bar', 'The base should have been updated.');
345
+ expect(validationCallCounter.calls).to.equal(2, 'Retrieval should validate (2).');
346
+ expect(proxy.get({ preferenceName: 'my.pref', overrideIdentifier: 'swift' })).to.equal('bar', 'Proxy should update empty overrides on change.');
347
+ expect(validationCallCounter.calls).to.equal(3, 'Retrieval should validate (3).');
348
+ });
349
+
350
+ // The scenario with a listener differs because the proxy will start caching known valid values when a listener is attached.
351
+ it("Validated proxies don't retain old values for overrides after a change (with emitter)", async () => {
352
+ const { proxy, validationCallCounter } = await prepareValidationTest();
353
+ prefSchema.registerOverrideIdentifier('swift');
354
+ const override = { preferenceName: 'my.pref', overrideIdentifier: 'swift' };
355
+ proxy.onPreferenceChanged; // Initialize the listeners.
356
+ const initialValue = proxy.get(override);
357
+ expect(initialValue).to.equal('foo', 'Proxy should start with default value.');
358
+ expect(validationCallCounter.calls).to.equal(1, 'Retrieval should validate.');
359
+
360
+ await prefService.set('my.pref', 'bar', PreferenceScope.User);
361
+ expect(validationCallCounter.calls).to.equal(2, 'Event should trigger validation (1).');
362
+ expect(proxy.get('my.pref')).to.equal('bar', 'The base should have been updated.');
363
+ expect(proxy.get(override)).to.equal('bar', 'Proxy should update empty overrides on change.');
364
+ expect(validationCallCounter.calls).to.equal(2, 'Subsequent retrievals should not trigger validation. (1)');
365
+
366
+ await prefService.set(prefService.overridePreferenceName(override), 'baz', PreferenceScope.User);
367
+ expect(validationCallCounter.calls).to.equal(3, 'Event should trigger validation (2).');
368
+ expect(proxy.get('my.pref')).to.equal('bar', 'Base should not have been updated.');
369
+ expect(proxy.get(override)).to.equal('baz', 'Override should have been updated');
370
+ expect(validationCallCounter.calls).to.equal(3, 'Subsequent retrievals should not trigger validation. (2)');
371
+
372
+ await prefService.set('my.pref', 'boom', PreferenceScope.User);
373
+ expect(validationCallCounter.calls).to.equal(4, 'Event should trigger validation (3).');
374
+ expect(proxy.get('my.pref')).to.equal('boom', 'Base should have been updated.');
375
+ expect(proxy.get(override)).to.equal('baz', 'Override should not have been updated');
376
+ expect(validationCallCounter.calls).to.equal(4, 'Subsequent retrievals should not trigger validation. (3)');
377
+ });
336
378
  }
337
379
 
338
380
  it('toJSON with deep', async () => {
@@ -16,31 +16,34 @@
16
16
 
17
17
  import { JSONValue } from '@phosphor/coreutils';
18
18
  import { inject, injectable } from 'inversify';
19
- import { PreferenceValidationService } from '.';
20
19
  import { InjectablePreferenceProxy } from './injectable-preference-proxy';
21
20
  import { OverridePreferenceName } from './preference-language-override-service';
21
+ import { PreferenceProvider } from './preference-provider';
22
22
  import { PreferenceChanges } from './preference-service';
23
+ import { PreferenceValidationService } from './preference-validation-service';
23
24
 
24
25
  @injectable()
25
26
  export class ValidatedPreferenceProxy<T extends Record<string, JSONValue>> extends InjectablePreferenceProxy<T> {
26
27
  @inject(PreferenceValidationService) protected readonly validator: PreferenceValidationService;
27
28
 
28
- protected validPreferences: Map<string, JSONValue> = new Map();
29
+ /**
30
+ * This map should be initialized only when the proxy starts listening to events from the PreferenceService in {@link ValidatedPreferenceProxy.subscribeToChangeEvents}.
31
+ * Otherwise, it can't guarantee that the cache will remain up-to-date and is better off just retrieving the value.
32
+ */
33
+ protected validPreferences?: Map<string, JSONValue>;
29
34
 
30
35
  protected override handlePreferenceChanges(changes: PreferenceChanges): void {
31
36
  if (this.schema) {
32
- interface TrackedOverrides { value?: JSONValue, overrides: OverridePreferenceName[] };
37
+ interface TrackedOverrides { overrides: OverridePreferenceName[] };
33
38
  const overrideTracker: Map<string, TrackedOverrides> = new Map();
34
39
  for (const change of Object.values(changes)) {
35
40
  const overridden = this.preferences.overriddenPreferenceName(change.preferenceName);
36
41
  if (this.isRelevantChange(change, overridden)) {
37
42
  let doSet = false;
38
43
  const baseName = overridden?.preferenceName ?? change.preferenceName;
39
- const tracker: TrackedOverrides = overrideTracker.get(baseName) ?? (doSet = true, { value: undefined, overrides: [] });
44
+ const tracker: TrackedOverrides = overrideTracker.get(baseName) ?? (doSet = true, { overrides: [] });
40
45
  if (overridden) {
41
46
  tracker.overrides.push(overridden);
42
- } else {
43
- tracker.value = change.newValue;
44
47
  }
45
48
  if (doSet) {
46
49
  overrideTracker.set(baseName, tracker);
@@ -48,16 +51,29 @@ export class ValidatedPreferenceProxy<T extends Record<string, JSONValue>> exten
48
51
  }
49
52
  }
50
53
  for (const [baseName, tracker] of overrideTracker.entries()) {
51
- const configuredValue = tracker.value as T[typeof baseName];
52
- const validatedValue = this.ensureValid(baseName, () => configuredValue, true);
54
+ const validated: Array<[JSONValue, JSONValue]> = [];
55
+ // This could go wrong if someone sets a lot of different, complex values for different language overrides simultaneously.
56
+ // In the normal case, we'll just be doing strict equal checks on primitives.
57
+ const getValidValue = (name: string): JSONValue => {
58
+ const configuredForCurrent = changes[name].newValue;
59
+ const existingValue = validated.find(([configuredForValid]) => PreferenceProvider.deepEqual(configuredForValid, configuredForCurrent));
60
+ if (existingValue) {
61
+ this.validPreferences?.set(name, existingValue[1]);
62
+ return existingValue[1];
63
+ }
64
+ const validValue = this.ensureValid(name, () => configuredForCurrent, true);
65
+ validated.push([configuredForCurrent, validValue]);
66
+ return validValue;
67
+ };
53
68
  if (baseName in changes && this.isRelevantChange(changes[baseName])) {
69
+ const newValue = getValidValue(baseName);
54
70
  const { domain, oldValue, preferenceName, scope } = changes[baseName];
55
- this.fireChangeEvent(this.buildNewChangeEvent({ domain, oldValue, preferenceName, scope, newValue: validatedValue }));
71
+ this.fireChangeEvent(this.buildNewChangeEvent({ domain, oldValue, preferenceName, scope, newValue }));
56
72
  }
57
73
  for (const override of tracker.overrides) {
58
74
  const name = this.preferences.overridePreferenceName(override);
59
75
  const { domain, oldValue, preferenceName, scope } = changes[name];
60
- const newValue = changes[name].newValue === configuredValue ? validatedValue : this.ensureValid(name, () => changes[name].newValue, true);
76
+ const newValue = getValidValue(name);
61
77
  this.fireChangeEvent(this.buildNewChangeEvent({ domain, oldValue, preferenceName, scope, newValue }, override));
62
78
  }
63
79
  }
@@ -72,19 +88,24 @@ export class ValidatedPreferenceProxy<T extends Record<string, JSONValue>> exten
72
88
  }
73
89
 
74
90
  protected ensureValid<K extends keyof T & string>(preferenceName: K, getCandidate: () => T[K], isChange?: boolean): T[K] {
75
- if (!isChange && this.validPreferences.has(preferenceName)) {
91
+ if (!isChange && this.validPreferences?.has(preferenceName)) {
76
92
  return this.validPreferences.get(preferenceName) as T[K];
77
93
  }
78
94
  const candidate = getCandidate();
79
95
  const valid = this.validator.validateByName(preferenceName, candidate) as T[K];
80
- this.validPreferences.set(preferenceName, valid);
96
+ this.validPreferences?.set(preferenceName, valid);
81
97
  return valid;
82
98
  }
83
99
 
100
+ protected override subscribeToChangeEvents(): void {
101
+ this.validPreferences ??= new Map();
102
+ super.subscribeToChangeEvents();
103
+ }
104
+
84
105
  override dispose(): void {
85
106
  super.dispose();
86
107
  if (this.options.isDisposable) {
87
- this.validPreferences.clear();
108
+ this.validPreferences?.clear();
88
109
  }
89
110
  }
90
111
  }