@theia/core 1.65.0-next.19 → 1.65.0-next.28
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/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
- package/lib/browser/catalog.json +13 -4
- package/lib/browser/common-frontend-contribution.d.ts +2 -3
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +3 -4
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/encoding-registry.d.ts +1 -1
- package/lib/browser/encoding-registry.d.ts.map +1 -1
- package/lib/browser/encoding-registry.js +1 -1
- package/lib/browser/encoding-registry.js.map +1 -1
- package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
- package/lib/browser/frontend-application-bindings.js +10 -17
- package/lib/browser/frontend-application-bindings.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +4 -5
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application.d.ts +1 -1
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +1 -1
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/hover-service.d.ts +1 -2
- package/lib/browser/hover-service.d.ts.map +1 -1
- package/lib/browser/hover-service.js +1 -2
- package/lib/browser/hover-service.js.map +1 -1
- package/lib/browser/icon-theme-service.d.ts +3 -2
- package/lib/browser/icon-theme-service.d.ts.map +1 -1
- package/lib/browser/icon-theme-service.js +4 -3
- package/lib/browser/icon-theme-service.js.map +1 -1
- package/lib/browser/index.d.ts +0 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/keybinding.d.ts +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +1 -1
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +1 -1
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts +2 -2
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +2 -3
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +1 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +3 -3
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +1 -2
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +6 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js +60 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -0
- package/lib/browser/preferences/index.d.ts +0 -5
- package/lib/browser/preferences/index.d.ts.map +1 -1
- package/lib/browser/preferences/index.js +0 -5
- package/lib/browser/preferences/index.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +0 -96
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +14 -355
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +25 -17
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +21 -34
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +57 -80
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +24 -26
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-validation-service.js +40 -20
- package/lib/browser/preferences/preference-validation-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js +10 -6
- package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.d.ts +2 -3
- package/lib/browser/preferences/test/mock-preference-provider.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.js +5 -7
- package/lib/browser/preferences/test/mock-preference-provider.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.d.ts +1 -4
- package/lib/browser/preferences/test/mock-preference-service.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +1 -1
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/request/browser-request-service.d.ts +1 -1
- package/lib/browser/request/browser-request-service.d.ts.map +1 -1
- package/lib/browser/request/browser-request-service.js +2 -2
- package/lib/browser/request/browser-request-service.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +1 -1
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +1 -1
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +1 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts +1 -1
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js +1 -1
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/theming.d.ts +5 -4
- package/lib/browser/theming.d.ts.map +1 -1
- package/lib/browser/theming.js +7 -6
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tooltip-service.d.ts +1 -1
- package/lib/browser/tooltip-service.d.ts.map +1 -1
- package/lib/browser/tooltip-service.js +1 -1
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/index.d.ts +0 -1
- package/lib/browser/tree/index.d.ts.map +1 -1
- package/lib/browser/tree/index.js +0 -1
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +2 -2
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +3 -3
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.d.ts +1 -2
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +1 -2
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.d.ts +1 -1
- package/lib/browser/window/default-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-window-service.js +1 -1
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.spec.js +1 -1
- package/lib/browser/window/default-window-service.spec.js.map +1 -1
- package/lib/browser/window/window-title-service.d.ts +1 -1
- package/lib/browser/window/window-title-service.d.ts.map +1 -1
- package/lib/browser/window/window-title-service.js +1 -1
- package/lib/browser/window/window-title-service.js.map +1 -1
- package/lib/{browser → common}/core-preferences.d.ts +2 -1
- package/lib/common/core-preferences.d.ts.map +1 -0
- package/lib/{browser → common}/core-preferences.js +17 -18
- package/lib/common/core-preferences.js.map +1 -0
- package/lib/common/index.d.ts +4 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +4 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/inversify-utils.d.ts +31 -0
- package/lib/common/inversify-utils.d.ts.map +1 -0
- package/lib/common/inversify-utils.js +60 -0
- package/lib/common/inversify-utils.js.map +1 -0
- package/lib/common/json-schema.d.ts +1 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/preferences/defaults-preference-provider.d.ts +21 -0
- package/lib/common/preferences/defaults-preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/defaults-preference-provider.js +99 -0
- package/lib/common/preferences/defaults-preference-provider.js.map +1 -0
- package/lib/common/preferences/index.d.ts +12 -0
- package/lib/common/preferences/index.d.ts.map +1 -0
- package/lib/common/preferences/index.js +30 -0
- package/lib/common/preferences/index.js.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.d.ts +1 -1
- package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.js +2 -2
- package/lib/common/preferences/injectable-preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-configurations.d.ts.map +1 -0
- package/lib/common/preferences/preference-configurations.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.d.ts +4 -13
- package/lib/common/preferences/preference-language-override-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.js +14 -30
- package/lib/common/preferences/preference-language-override-service.js.map +1 -0
- package/lib/common/preferences/preference-provider-impl.d.ts +52 -0
- package/lib/common/preferences/preference-provider-impl.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-provider.js → common/preferences/preference-provider-impl.js} +23 -95
- package/lib/common/preferences/preference-provider-impl.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.d.ts +34 -59
- package/lib/common/preferences/preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/preference-provider.js +71 -0
- package/lib/common/preferences/preference-provider.js.map +1 -0
- package/lib/common/preferences/preference-provider.spec.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.spec.js +4 -4
- package/lib/common/preferences/preference-provider.spec.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.d.ts +2 -2
- package/lib/common/preferences/preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.js +10 -10
- package/lib/common/preferences/preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-schema-service.d.ts +55 -0
- package/lib/common/preferences/preference-schema-service.d.ts.map +1 -0
- package/lib/common/preferences/preference-schema-service.js +402 -0
- package/lib/common/preferences/preference-schema-service.js.map +1 -0
- package/lib/common/preferences/preference-schema.d.ts +145 -43
- package/lib/common/preferences/preference-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.js +3 -41
- package/lib/common/preferences/preference-schema.js.map +1 -1
- package/lib/common/preferences/preference-scope.d.ts +4 -1
- package/lib/common/preferences/preference-scope.d.ts.map +1 -1
- package/lib/common/preferences/preference-scope.js +5 -14
- package/lib/common/preferences/preference-scope.js.map +1 -1
- package/lib/{browser → common}/preferences/preference-service.d.ts +9 -10
- package/lib/common/preferences/preference-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-service.js +65 -60
- package/lib/common/preferences/preference-service.js.map +1 -0
- package/lib/common/supported-encodings.d.ts.map +1 -0
- package/lib/common/supported-encodings.js.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.d.ts +1 -1
- package/lib/common/tree-preference.d.ts.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.js +3 -5
- package/lib/common/tree-preference.js.map +1 -0
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -2
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -2
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +6 -6
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +1 -1
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +1 -1
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.d.ts +2 -1
- package/lib/electron-common/electron-window-preferences.d.ts.map +1 -0
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.js +7 -7
- package/lib/electron-common/electron-window-preferences.js.map +1 -0
- package/lib/electron-node/window/electron-window-module.d.ts +4 -0
- package/lib/electron-node/window/electron-window-module.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-scope.js → electron-node/window/electron-window-module.js} +7 -5
- package/lib/electron-node/window/electron-window-module.js.map +1 -0
- package/lib/node/backend-application-module.d.ts.map +1 -1
- package/lib/node/backend-application-module.js +13 -0
- package/lib/node/backend-application-module.js.map +1 -1
- package/package.json +6 -5
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +1 -1
- package/src/browser/common-frontend-contribution.ts +2 -3
- package/src/browser/encoding-registry.ts +1 -1
- package/src/browser/frontend-application-bindings.ts +8 -13
- package/src/browser/frontend-application-module.ts +4 -4
- package/src/browser/frontend-application.ts +1 -1
- package/src/browser/hover-service.ts +1 -2
- package/src/browser/icon-theme-service.ts +3 -2
- package/src/browser/index.ts +0 -1
- package/src/browser/keybinding.spec.ts +1 -1
- package/src/browser/keybinding.ts +1 -1
- package/src/browser/menu/browser-menu-plugin.ts +4 -4
- package/src/browser/open-with-service.ts +1 -1
- package/src/browser/opener-service.ts +1 -2
- package/src/browser/preferences/frontend-config-preference-contributions.ts +52 -0
- package/src/browser/preferences/index.ts +0 -5
- package/src/browser/preferences/preference-contribution.ts +16 -398
- package/src/browser/preferences/preference-proxy.spec.ts +27 -17
- package/src/browser/preferences/preference-schema-provider.spec.ts +25 -37
- package/src/browser/preferences/preference-service.spec.ts +32 -56
- package/src/browser/preferences/preference-validation-service.spec.ts +27 -19
- package/src/browser/preferences/preference-validation-service.ts +60 -41
- package/src/browser/preferences/test/mock-preference-provider.ts +2 -5
- package/src/browser/preferences/test/mock-preference-proxy.ts +1 -2
- package/src/browser/preferences/test/mock-preference-service.ts +1 -4
- package/src/browser/quick-input/quick-command-service.ts +1 -1
- package/src/browser/request/browser-request-service.ts +4 -4
- package/src/browser/shell/application-shell.ts +1 -1
- package/src/browser/shell/tab-bars.ts +1 -1
- package/src/browser/shell/theia-dock-panel.ts +1 -1
- package/src/browser/status-bar/status-bar.tsx +1 -1
- package/src/browser/theming.ts +7 -6
- package/src/browser/tooltip-service.tsx +1 -1
- package/src/browser/tree/index.ts +0 -1
- package/src/browser/tree/tree-widget.tsx +4 -4
- package/src/browser/window/default-secondary-window-service.ts +1 -2
- package/src/browser/window/default-window-service.spec.ts +1 -1
- package/src/browser/window/default-window-service.ts +1 -1
- package/src/browser/window/window-title-service.ts +1 -1
- package/src/{browser → common}/core-preferences.ts +16 -17
- package/src/common/index.ts +4 -0
- package/src/common/inversify-utils.ts +63 -0
- package/src/common/json-schema.ts +1 -0
- package/src/common/preferences/defaults-preference-provider.ts +91 -0
- package/src/common/preferences/index.ts +27 -0
- package/src/{browser → common}/preferences/injectable-preference-proxy.ts +3 -3
- package/src/{browser → common}/preferences/preference-language-override-service.ts +12 -29
- package/src/common/preferences/preference-provider-impl.ts +165 -0
- package/src/{browser → common}/preferences/preference-provider.spec.ts +6 -5
- package/src/common/preferences/preference-provider.ts +164 -0
- package/src/{browser → common}/preferences/preference-proxy.ts +15 -14
- package/src/common/preferences/preference-schema-service.ts +434 -0
- package/src/common/preferences/preference-schema.ts +156 -64
- package/src/common/preferences/preference-scope.ts +5 -13
- package/src/{browser → common}/preferences/preference-service.ts +71 -65
- package/src/{browser/tree → common}/tree-preference.ts +2 -4
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -1
- package/src/electron-browser/menu/electron-main-menu-factory.ts +2 -2
- package/src/electron-browser/menu/electron-menu-contribution.ts +9 -6
- package/src/electron-browser/window/electron-window-module.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +1 -1
- package/src/{electron-browser/window → electron-common}/electron-window-preferences.ts +6 -6
- package/src/{browser/preferences/preference-scope.ts → electron-node/window/electron-window-module.ts} +7 -3
- package/src/node/backend-application-module.ts +28 -1
- package/lib/browser/core-preferences.d.ts.map +0 -1
- package/lib/browser/core-preferences.js.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-configurations.d.ts.map +0 -1
- package/lib/browser/preferences/preference-configurations.js.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.js.map +0 -1
- package/lib/browser/preferences/preference-provider.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.js.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.js.map +0 -1
- package/lib/browser/preferences/preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-scope.d.ts +0 -3
- package/lib/browser/preferences/preference-scope.d.ts.map +0 -1
- package/lib/browser/preferences/preference-scope.js.map +0 -1
- package/lib/browser/preferences/preference-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-service.js.map +0 -1
- package/lib/browser/supported-encodings.d.ts.map +0 -1
- package/lib/browser/supported-encodings.js.map +0 -1
- package/lib/browser/tree/tree-preference.d.ts.map +0 -1
- package/lib/browser/tree/tree-preference.js.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.d.ts.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.js.map +0 -1
- package/src/browser/preferences/preference-provider.ts +0 -277
- /package/lib/{browser → common}/preferences/preference-configurations.d.ts +0 -0
- /package/lib/{browser → common}/preferences/preference-configurations.js +0 -0
- /package/lib/{browser → common}/preferences/preference-provider.spec.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.js +0 -0
- /package/src/{browser → common}/preferences/preference-configurations.ts +0 -0
- /package/src/{browser → common}/supported-encodings.ts +0 -0
|
@@ -24,14 +24,10 @@ import * as assert from 'assert';
|
|
|
24
24
|
import { Container } from 'inversify';
|
|
25
25
|
import { bindPreferenceService } from '../frontend-application-bindings';
|
|
26
26
|
import { bindMockPreferenceProviders, MockPreferenceProvider } from './test';
|
|
27
|
-
import {
|
|
28
|
-
import { PreferenceSchemaProvider, PreferenceSchema } from './preference-contribution';
|
|
29
|
-
import { PreferenceScope } from './preference-scope';
|
|
30
|
-
import { PreferenceProvider } from './preference-provider';
|
|
27
|
+
import { PreferenceScope } from '../../common/preferences/preference-scope';
|
|
31
28
|
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
32
|
-
import { PreferenceProxyOptions, PreferenceProxy, PreferenceChangeEvent, createPreferenceProxy } from '
|
|
33
|
-
import { PreferenceProxyFactory } from '
|
|
34
|
-
import { waitForEvent } from '../../common/promise-util';
|
|
29
|
+
import { PreferenceProxyOptions, PreferenceProxy, PreferenceChangeEvent, createPreferenceProxy } from '../../common/preferences/preference-proxy';
|
|
30
|
+
import { PreferenceProxyFactory } from '../../common/preferences/injectable-preference-proxy';
|
|
35
31
|
|
|
36
32
|
disableJSDOM();
|
|
37
33
|
|
|
@@ -41,6 +37,10 @@ process.on('unhandledRejection', (reason, promise) => {
|
|
|
41
37
|
});
|
|
42
38
|
|
|
43
39
|
import { expect } from 'chai';
|
|
40
|
+
import { PreferenceProvider } from '../../common/preferences/preference-provider';
|
|
41
|
+
import { PreferenceSchema, PreferenceSchemaService } from '../../common/preferences/preference-schema';
|
|
42
|
+
import { PreferenceService, PreferenceServiceImpl } from '../../common/preferences';
|
|
43
|
+
import { waitForEvent } from '../../common/promise-util';
|
|
44
44
|
let testContainer: Container;
|
|
45
45
|
|
|
46
46
|
function createTestContainer(): Container {
|
|
@@ -52,7 +52,7 @@ function createTestContainer(): Container {
|
|
|
52
52
|
|
|
53
53
|
describe('Preference Proxy', () => {
|
|
54
54
|
let prefService: PreferenceServiceImpl;
|
|
55
|
-
let prefSchema:
|
|
55
|
+
let prefSchema: PreferenceSchemaService;
|
|
56
56
|
|
|
57
57
|
before(() => {
|
|
58
58
|
disableJSDOM = enableJSDOM();
|
|
@@ -65,7 +65,7 @@ describe('Preference Proxy', () => {
|
|
|
65
65
|
|
|
66
66
|
beforeEach(async () => {
|
|
67
67
|
testContainer = createTestContainer();
|
|
68
|
-
prefSchema = testContainer.get(
|
|
68
|
+
prefSchema = testContainer.get(PreferenceSchemaService);
|
|
69
69
|
prefService = testContainer.get<PreferenceService>(PreferenceService) as PreferenceServiceImpl;
|
|
70
70
|
getProvider(PreferenceScope.User).markReady();
|
|
71
71
|
getProvider(PreferenceScope.Workspace).markReady();
|
|
@@ -100,24 +100,25 @@ describe('Preference Proxy', () => {
|
|
|
100
100
|
promisedSchema?: Promise<PreferenceSchema>
|
|
101
101
|
} {
|
|
102
102
|
const s: PreferenceSchema = schema || {
|
|
103
|
+
scope: PreferenceScope.Folder,
|
|
103
104
|
properties: {
|
|
104
105
|
'my.pref': {
|
|
105
106
|
type: 'string',
|
|
106
|
-
|
|
107
|
+
default: 'foo'
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
};
|
|
110
111
|
if (testOptions.asyncSchema) {
|
|
111
112
|
const promisedSchema = new Promise<PreferenceSchema>(resolve => setTimeout(() => {
|
|
112
|
-
prefSchema.
|
|
113
|
+
prefSchema.addSchema(s);
|
|
113
114
|
resolve(s);
|
|
114
|
-
},
|
|
115
|
+
}, 500));
|
|
115
116
|
const proxy = testOptions.useFactory
|
|
116
117
|
? testContainer.get<PreferenceProxyFactory>(PreferenceProxyFactory)(promisedSchema, options)
|
|
117
118
|
: createPreferenceProxy(prefService, promisedSchema, options);
|
|
118
119
|
return { proxy, promisedSchema };
|
|
119
120
|
} else {
|
|
120
|
-
prefSchema.
|
|
121
|
+
prefSchema.addSchema(s);
|
|
121
122
|
const proxy = testOptions.useFactory
|
|
122
123
|
? testContainer.get<PreferenceProxyFactory>(PreferenceProxyFactory)(s, options)
|
|
123
124
|
: createPreferenceProxy(prefService, s, options);
|
|
@@ -141,6 +142,7 @@ describe('Preference Proxy', () => {
|
|
|
141
142
|
expect(Object.keys(proxy).length).to.equal(0);
|
|
142
143
|
// Once the schema is resolved, operations should be working:
|
|
143
144
|
await promisedSchema!;
|
|
145
|
+
changed = 0;
|
|
144
146
|
expect(proxy['my.pref']).to.equal('bar');
|
|
145
147
|
expect(Object.keys(proxy)).members(['my.pref']);
|
|
146
148
|
await getProvider(PreferenceScope.User).setPreference('my.pref', 'fizz');
|
|
@@ -185,6 +187,7 @@ describe('Preference Proxy', () => {
|
|
|
185
187
|
if (promisedSchema) {
|
|
186
188
|
await promisedSchema;
|
|
187
189
|
}
|
|
190
|
+
await waitForEvent(prefService.onPreferenceChanged, 500);
|
|
188
191
|
let theChange: PreferenceChangeEvent<{ [key: string]: any }>;
|
|
189
192
|
proxy.onPreferenceChanged(change => {
|
|
190
193
|
expect(theChange).to.equal(undefined);
|
|
@@ -208,10 +211,11 @@ describe('Preference Proxy', () => {
|
|
|
208
211
|
|
|
209
212
|
it("should not forward changes that don't match the proxy's language override", async () => {
|
|
210
213
|
const { proxy, promisedSchema } = getProxy({
|
|
214
|
+
scope: PreferenceScope.User,
|
|
211
215
|
properties: {
|
|
212
216
|
'my.pref': {
|
|
213
217
|
type: 'string',
|
|
214
|
-
|
|
218
|
+
default: 'foo',
|
|
215
219
|
overridable: true,
|
|
216
220
|
}
|
|
217
221
|
}
|
|
@@ -222,7 +226,8 @@ describe('Preference Proxy', () => {
|
|
|
222
226
|
prefSchema.registerOverrideIdentifier('swift');
|
|
223
227
|
prefSchema.registerOverrideIdentifier('typescript');
|
|
224
228
|
// The service will emit events related to updating the overrides - those are irrelevant
|
|
225
|
-
await waitForEvent(prefService.
|
|
229
|
+
await waitForEvent(prefService.onPreferenceChanged, 500);
|
|
230
|
+
|
|
226
231
|
prefService.onPreferencesChanged(() => changeEventsEmittedByService++);
|
|
227
232
|
proxy.onPreferenceChanged(() => changeEventsEmittedByProxy++);
|
|
228
233
|
await prefService.set(prefService.overridePreferenceName({ overrideIdentifier: 'swift', preferenceName: 'my.pref' }), 'boo', PreferenceScope.User);
|
|
@@ -241,10 +246,11 @@ describe('Preference Proxy', () => {
|
|
|
241
246
|
|
|
242
247
|
it('`affects` should only return `true` if the language overrides match', async () => {
|
|
243
248
|
const { proxy, promisedSchema } = getProxy({
|
|
249
|
+
scope: PreferenceScope.User,
|
|
244
250
|
properties: {
|
|
245
251
|
'my.pref': {
|
|
246
252
|
type: 'string',
|
|
247
|
-
|
|
253
|
+
default: 'foo',
|
|
248
254
|
overridable: true,
|
|
249
255
|
}
|
|
250
256
|
}
|
|
@@ -268,6 +274,7 @@ describe('Preference Proxy', () => {
|
|
|
268
274
|
|
|
269
275
|
it('toJSON with deep', async () => {
|
|
270
276
|
const { proxy, promisedSchema } = getProxy({
|
|
277
|
+
scope: PreferenceScope.Default,
|
|
271
278
|
properties: {
|
|
272
279
|
'foo.baz': {
|
|
273
280
|
type: 'number',
|
|
@@ -290,7 +297,9 @@ describe('Preference Proxy', () => {
|
|
|
290
297
|
if (promisedSchema) {
|
|
291
298
|
await promisedSchema;
|
|
292
299
|
}
|
|
293
|
-
|
|
300
|
+
|
|
301
|
+
const result = JSON.stringify(proxy, undefined, 2);
|
|
302
|
+
assert.equal(result, JSON.stringify({
|
|
294
303
|
foo: {
|
|
295
304
|
baz: 4,
|
|
296
305
|
bar: {
|
|
@@ -304,6 +313,7 @@ describe('Preference Proxy', () => {
|
|
|
304
313
|
|
|
305
314
|
it('get nested default', async () => {
|
|
306
315
|
const { proxy, promisedSchema } = getProxy({
|
|
316
|
+
scope: PreferenceScope.Default,
|
|
307
317
|
properties: {
|
|
308
318
|
'foo': {
|
|
309
319
|
'anyOf': [
|
|
@@ -21,8 +21,9 @@ let disableJSDOM = enableJSDOM();
|
|
|
21
21
|
import * as assert from 'assert';
|
|
22
22
|
import { Container } from 'inversify';
|
|
23
23
|
import { bindPreferenceService } from '../frontend-application-bindings';
|
|
24
|
-
import { PreferenceSchemaProperties, PreferenceSchemaProvider } from './preference-contribution';
|
|
25
24
|
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
25
|
+
import { IndexedAccess, PreferenceDataProperty, PreferenceSchemaService } from '../../common/preferences/preference-schema';
|
|
26
|
+
import { PreferenceProvider, PreferenceProviderProvider, PreferenceScope } from '../../common/preferences';
|
|
26
27
|
|
|
27
28
|
disableJSDOM();
|
|
28
29
|
|
|
@@ -40,14 +41,14 @@ function createTestContainer(): Container {
|
|
|
40
41
|
return result;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
const EDITOR_FONT_SIZE_PROPERTIES:
|
|
44
|
+
const EDITOR_FONT_SIZE_PROPERTIES: IndexedAccess<PreferenceDataProperty> = {
|
|
44
45
|
'editor.fontSize': {
|
|
45
46
|
type: 'number',
|
|
46
47
|
default: 14,
|
|
47
48
|
overridable: true
|
|
48
49
|
},
|
|
49
50
|
};
|
|
50
|
-
const EDITOR_INSERT_SPACES_PROPERTIES:
|
|
51
|
+
const EDITOR_INSERT_SPACES_PROPERTIES: IndexedAccess<PreferenceDataProperty> = {
|
|
51
52
|
'editor.insertSpaces': {
|
|
52
53
|
type: 'boolean',
|
|
53
54
|
default: true,
|
|
@@ -56,7 +57,8 @@ const EDITOR_INSERT_SPACES_PROPERTIES: PreferenceSchemaProperties = {
|
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
describe('Preference Schema Provider', () => {
|
|
59
|
-
let prefSchema:
|
|
60
|
+
let prefSchema: PreferenceSchemaService;
|
|
61
|
+
let prefDefaults: PreferenceProvider;
|
|
60
62
|
|
|
61
63
|
before(() => {
|
|
62
64
|
disableJSDOM = enableJSDOM();
|
|
@@ -74,57 +76,43 @@ describe('Preference Schema Provider', () => {
|
|
|
74
76
|
|
|
75
77
|
beforeEach(async () => {
|
|
76
78
|
testContainer = createTestContainer();
|
|
77
|
-
prefSchema = testContainer.get(
|
|
79
|
+
prefSchema = testContainer.get(PreferenceSchemaService);
|
|
80
|
+
await prefSchema.ready;
|
|
81
|
+
prefSchema.registerOverrideIdentifier('typescript');
|
|
82
|
+
const providerProvider: PreferenceProviderProvider = testContainer.get(PreferenceProviderProvider);
|
|
83
|
+
prefDefaults = providerProvider(PreferenceScope.Default)!;
|
|
84
|
+
await prefDefaults.ready;
|
|
78
85
|
});
|
|
79
86
|
|
|
80
87
|
it('Should load all preferences specified in the frontend config.', () => {
|
|
81
|
-
assert.strictEqual(
|
|
82
|
-
assert.strictEqual(
|
|
88
|
+
assert.strictEqual(prefDefaults.get('editor.fontSize'), 20);
|
|
89
|
+
assert.strictEqual(prefDefaults.get('[typescript].editor.fontSize'), 24);
|
|
83
90
|
});
|
|
84
91
|
|
|
85
92
|
it('Should favor the default specified in the package.json over a default registered by a schema', () => {
|
|
86
|
-
prefSchema.
|
|
93
|
+
prefSchema.addSchema({
|
|
94
|
+
scope: PreferenceScope.User,
|
|
87
95
|
properties: {
|
|
88
96
|
...EDITOR_FONT_SIZE_PROPERTIES
|
|
89
97
|
}
|
|
90
98
|
});
|
|
91
99
|
|
|
92
|
-
assert.strictEqual(
|
|
100
|
+
assert.strictEqual(prefDefaults.get('editor.fontSize'), 20);
|
|
93
101
|
});
|
|
94
102
|
|
|
95
103
|
it('Should merge language-specific overrides from schemas and the package.json', () => {
|
|
96
|
-
prefSchema.
|
|
104
|
+
prefSchema.addSchema({
|
|
97
105
|
properties: {
|
|
98
106
|
...EDITOR_FONT_SIZE_PROPERTIES,
|
|
99
107
|
...EDITOR_INSERT_SPACES_PROPERTIES,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
default: {
|
|
103
|
-
'editor.insertSpaces': false
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
108
|
+
},
|
|
109
|
+
scope: PreferenceScope.Default
|
|
107
110
|
});
|
|
108
|
-
assert.strictEqual(prefSchema.get('editor.insertSpaces'), true);
|
|
109
|
-
assert.strictEqual(prefSchema.get('[typescript].editor.insertSpaces'), false);
|
|
110
|
-
assert.strictEqual(prefSchema.get('[typescript].editor.fontSize'), 24);
|
|
111
|
-
});
|
|
112
111
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
'[typescript]': {
|
|
119
|
-
type: 'object',
|
|
120
|
-
default: {
|
|
121
|
-
'editor.insertSpaces': false,
|
|
122
|
-
'editor.fontSize': 36,
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
assert.strictEqual(prefSchema.get('[typescript].editor.insertSpaces'), false);
|
|
128
|
-
assert.strictEqual(prefSchema.get('[typescript].editor.fontSize'), 24);
|
|
112
|
+
prefSchema.registerOverride('editor.insertSpaces', 'typescript', false);
|
|
113
|
+
|
|
114
|
+
assert.strictEqual(prefDefaults.get('editor.insertSpaces'), true);
|
|
115
|
+
assert.strictEqual(prefDefaults.get('[typescript].editor.insertSpaces'), false);
|
|
116
|
+
assert.strictEqual(prefDefaults.get('[typescript].editor.fontSize'), 24);
|
|
129
117
|
});
|
|
130
118
|
});
|
|
@@ -22,14 +22,12 @@ let disableJSDOM = enableJSDOM();
|
|
|
22
22
|
|
|
23
23
|
import * as assert from 'assert';
|
|
24
24
|
import { Container } from 'inversify';
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import { PreferenceService, PreferenceServiceImpl, PreferenceChange, PreferenceChanges } from './preference-service';
|
|
28
|
-
import { PreferenceSchemaProvider, PreferenceSchema } from './preference-contribution';
|
|
29
|
-
import { PreferenceScope } from './preference-scope';
|
|
30
|
-
import { PreferenceProvider } from './preference-provider';
|
|
25
|
+
import { PreferenceChange, PreferenceChanges, PreferenceProvider, PreferenceScope, PreferenceService, PreferenceServiceImpl } from '../../common/preferences';
|
|
26
|
+
import { PreferenceSchema, PreferenceSchemaService } from '../../common/preferences/preference-schema';
|
|
31
27
|
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
32
|
-
import {
|
|
28
|
+
import { bindMockPreferenceProviders, MockPreferenceProvider } from './test';
|
|
29
|
+
import { PreferenceChangeEvent, createPreferenceProxy } from '../../common/preferences/preference-proxy';
|
|
30
|
+
import { bindPreferenceService } from '../frontend-application-bindings';
|
|
33
31
|
|
|
34
32
|
disableJSDOM();
|
|
35
33
|
|
|
@@ -50,7 +48,7 @@ function createTestContainer(): Container {
|
|
|
50
48
|
|
|
51
49
|
describe('Preference Service', () => {
|
|
52
50
|
let prefService: PreferenceServiceImpl;
|
|
53
|
-
let prefSchema:
|
|
51
|
+
let prefSchema: PreferenceSchemaService;
|
|
54
52
|
|
|
55
53
|
before(() => {
|
|
56
54
|
disableJSDOM = enableJSDOM();
|
|
@@ -63,7 +61,7 @@ describe('Preference Service', () => {
|
|
|
63
61
|
|
|
64
62
|
beforeEach(async () => {
|
|
65
63
|
testContainer = createTestContainer();
|
|
66
|
-
prefSchema = testContainer.get(
|
|
64
|
+
prefSchema = testContainer.get(PreferenceSchemaService);
|
|
67
65
|
prefService = testContainer.get<PreferenceService>(PreferenceService) as PreferenceServiceImpl;
|
|
68
66
|
getProvider(PreferenceScope.User).markReady();
|
|
69
67
|
getProvider(PreferenceScope.Workspace).markReady();
|
|
@@ -85,11 +83,11 @@ describe('Preference Service', () => {
|
|
|
85
83
|
}
|
|
86
84
|
|
|
87
85
|
it('should return the preference from the more specific scope (user > workspace)', () => {
|
|
88
|
-
prefSchema.
|
|
86
|
+
prefSchema.addSchema({
|
|
87
|
+
scope: PreferenceScope.Folder,
|
|
89
88
|
properties: {
|
|
90
89
|
'test.number': {
|
|
91
90
|
type: 'number',
|
|
92
|
-
scope: 'resource'
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
93
|
});
|
|
@@ -109,14 +107,14 @@ describe('Preference Service', () => {
|
|
|
109
107
|
});
|
|
110
108
|
|
|
111
109
|
it('should throw a TypeError if the preference (reference object) is modified', () => {
|
|
112
|
-
prefSchema.
|
|
110
|
+
prefSchema.addSchema({
|
|
111
|
+
scope: PreferenceScope.Folder,
|
|
113
112
|
properties: {
|
|
114
113
|
'test.immutable': {
|
|
115
114
|
type: 'array',
|
|
116
115
|
items: {
|
|
117
116
|
type: 'string'
|
|
118
117
|
},
|
|
119
|
-
scope: 'resource'
|
|
120
118
|
}
|
|
121
119
|
}
|
|
122
120
|
});
|
|
@@ -132,11 +130,11 @@ describe('Preference Service', () => {
|
|
|
132
130
|
});
|
|
133
131
|
|
|
134
132
|
it('should still report the more specific preference even though the less specific one changed', () => {
|
|
135
|
-
prefSchema.
|
|
133
|
+
prefSchema.addSchema({
|
|
134
|
+
scope: PreferenceScope.Folder,
|
|
136
135
|
properties: {
|
|
137
136
|
'test.number': {
|
|
138
137
|
type: 'number',
|
|
139
|
-
scope: 'resource'
|
|
140
138
|
}
|
|
141
139
|
}
|
|
142
140
|
});
|
|
@@ -155,21 +153,18 @@ describe('Preference Service', () => {
|
|
|
155
153
|
prefService.onPreferenceChanged(event => events.push(event));
|
|
156
154
|
prefSchema.registerOverrideIdentifier('go');
|
|
157
155
|
|
|
158
|
-
const toUnset = prefSchema.
|
|
156
|
+
const toUnset = prefSchema.addSchema({
|
|
157
|
+
scope: PreferenceScope.User,
|
|
159
158
|
properties: {
|
|
160
159
|
'editor.insertSpaces': {
|
|
161
160
|
type: 'boolean',
|
|
162
161
|
default: true,
|
|
163
162
|
overridable: true
|
|
164
|
-
},
|
|
165
|
-
'[go]': {
|
|
166
|
-
type: 'object',
|
|
167
|
-
default: {
|
|
168
|
-
'editor.insertSpaces': false
|
|
169
|
-
}
|
|
170
163
|
}
|
|
171
164
|
}
|
|
172
165
|
});
|
|
166
|
+
|
|
167
|
+
prefSchema.registerOverride('editor.insertSpaces', 'go', false);
|
|
173
168
|
assert.deepStrictEqual([], events.map(e => ({
|
|
174
169
|
preferenceName: e.preferenceName,
|
|
175
170
|
newValue: e.newValue,
|
|
@@ -185,8 +180,8 @@ describe('Preference Service', () => {
|
|
|
185
180
|
newValue: e.newValue,
|
|
186
181
|
oldValue: e.oldValue
|
|
187
182
|
})), 'events after unset in the same tick');
|
|
188
|
-
assert.strictEqual(prefService.get('editor.insertSpaces'), undefined, 'get after');
|
|
189
|
-
assert.strictEqual(prefService.get('[go].editor.insertSpaces'),
|
|
183
|
+
assert.strictEqual(prefService.get('editor.insertSpaces'), undefined, 'get after'); // removing the schema does not removes the default value
|
|
184
|
+
assert.strictEqual(prefService.get('[go].editor.insertSpaces'), false, 'get after overridden'); // but not the override
|
|
190
185
|
|
|
191
186
|
assert.deepStrictEqual([], events.map(e => ({
|
|
192
187
|
preferenceName: e.preferenceName,
|
|
@@ -199,21 +194,17 @@ describe('Preference Service', () => {
|
|
|
199
194
|
prefSchema.registerOverrideIdentifier('go');
|
|
200
195
|
|
|
201
196
|
let pending = new Promise<PreferenceChanges>(resolve => prefService.onPreferencesChanged(resolve));
|
|
202
|
-
const toUnset = prefSchema.
|
|
197
|
+
const toUnset = prefSchema.addSchema({
|
|
198
|
+
scope: PreferenceScope.User,
|
|
203
199
|
properties: {
|
|
204
200
|
'editor.insertSpaces': {
|
|
205
201
|
type: 'boolean',
|
|
206
202
|
default: true,
|
|
207
203
|
overridable: true
|
|
208
|
-
},
|
|
209
|
-
'[go]': {
|
|
210
|
-
type: 'object',
|
|
211
|
-
default: {
|
|
212
|
-
'editor.insertSpaces': false
|
|
213
|
-
}
|
|
214
204
|
}
|
|
215
205
|
}
|
|
216
206
|
});
|
|
207
|
+
prefSchema.registerOverride('editor.insertSpaces', 'go', false);
|
|
217
208
|
let changes = await pending;
|
|
218
209
|
|
|
219
210
|
assert.deepStrictEqual([{
|
|
@@ -248,20 +239,21 @@ describe('Preference Service', () => {
|
|
|
248
239
|
return { preferenceName, newValue, oldValue };
|
|
249
240
|
}), 'events after');
|
|
250
241
|
assert.strictEqual(prefService.get('editor.insertSpaces'), undefined, 'get after');
|
|
251
|
-
assert.strictEqual(prefService.get('[go].editor.insertSpaces'),
|
|
242
|
+
assert.strictEqual(prefService.get('[go].editor.insertSpaces'), false, 'get after overridden');
|
|
252
243
|
});
|
|
253
244
|
|
|
254
245
|
function prepareServices(options?: { schema: PreferenceSchema }): {
|
|
255
246
|
preferences: PreferenceServiceImpl;
|
|
256
|
-
schema:
|
|
247
|
+
schema: PreferenceSchemaService;
|
|
257
248
|
} {
|
|
258
|
-
prefSchema.
|
|
249
|
+
prefSchema.addSchema(options && options.schema || {
|
|
250
|
+
scope: PreferenceScope.User,
|
|
259
251
|
properties: {
|
|
260
252
|
'editor.tabSize': {
|
|
261
253
|
type: 'number',
|
|
254
|
+
default: 4,
|
|
262
255
|
description: '',
|
|
263
256
|
overridable: true,
|
|
264
|
-
default: 4
|
|
265
257
|
}
|
|
266
258
|
}
|
|
267
259
|
});
|
|
@@ -355,15 +347,10 @@ describe('Preference Service', () => {
|
|
|
355
347
|
describe('overridden preferences', () => {
|
|
356
348
|
|
|
357
349
|
it('get #0', () => {
|
|
358
|
-
const { preferences
|
|
350
|
+
const { preferences } = prepareServices();
|
|
359
351
|
|
|
360
352
|
preferences.set('[json].editor.tabSize', 2, PreferenceScope.User);
|
|
361
353
|
|
|
362
|
-
expect(preferences.get('editor.tabSize')).to.equal(4);
|
|
363
|
-
expect(preferences.get('[json].editor.tabSize')).to.equal(undefined);
|
|
364
|
-
|
|
365
|
-
schema.registerOverrideIdentifier('json');
|
|
366
|
-
|
|
367
354
|
expect(preferences.get('editor.tabSize')).to.equal(4);
|
|
368
355
|
expect(preferences.get('[json].editor.tabSize')).to.equal(2);
|
|
369
356
|
});
|
|
@@ -532,7 +519,7 @@ describe('Preference Service', () => {
|
|
|
532
519
|
await preferences.set('editor.tabSize', 3, PreferenceScope.User);
|
|
533
520
|
|
|
534
521
|
const events: PreferenceChangeEvent<{ [key: string]: any }>[] = [];
|
|
535
|
-
const proxy = createPreferenceProxy<{ [key: string]: any }>(preferences, schema.
|
|
522
|
+
const proxy = createPreferenceProxy<{ [key: string]: any }>(preferences, schema.getJSONSchema(PreferenceScope.Folder), { overrideIdentifier: 'json' });
|
|
536
523
|
proxy.onPreferenceChanged(event => events.push(event));
|
|
537
524
|
|
|
538
525
|
await preferences.set('[javascript].editor.tabSize', 4, PreferenceScope.User);
|
|
@@ -567,6 +554,7 @@ describe('Preference Service', () => {
|
|
|
567
554
|
it('defaultOverrides [go].editor.formatOnSave', () => {
|
|
568
555
|
const { preferences, schema } = prepareServices({
|
|
569
556
|
schema: {
|
|
557
|
+
scope: PreferenceScope.Folder,
|
|
570
558
|
properties: {
|
|
571
559
|
'editor.insertSpaces': {
|
|
572
560
|
type: 'boolean',
|
|
@@ -588,20 +576,8 @@ describe('Preference Service', () => {
|
|
|
588
576
|
assert.strictEqual(undefined, preferences.get('[go].editor.formatOnSave'));
|
|
589
577
|
|
|
590
578
|
schema.registerOverrideIdentifier('go');
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
title: 'Default Configuration Overrides',
|
|
594
|
-
properties: {
|
|
595
|
-
'[go]': {
|
|
596
|
-
type: 'object',
|
|
597
|
-
default: {
|
|
598
|
-
'editor.insertSpaces': false,
|
|
599
|
-
'editor.formatOnSave': true
|
|
600
|
-
},
|
|
601
|
-
description: 'Configure editor settings to be overridden for go language.'
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
});
|
|
579
|
+
prefSchema.registerOverride('editor.insertSpaces', 'go', false);
|
|
580
|
+
prefSchema.registerOverride('editor.formatOnSave', 'go', true);
|
|
605
581
|
|
|
606
582
|
assert.strictEqual(true, preferences.get('editor.insertSpaces'));
|
|
607
583
|
assert.strictEqual(false, preferences.get('[go].editor.insertSpaces'));
|
|
@@ -16,20 +16,28 @@
|
|
|
16
16
|
|
|
17
17
|
import { Container } from 'inversify';
|
|
18
18
|
import { PreferenceValidationService } from './preference-validation-service';
|
|
19
|
-
import { PreferenceItem, PreferenceSchemaProvider } from './preference-contribution';
|
|
20
|
-
import { PreferenceLanguageOverrideService } from './preference-language-override-service';
|
|
21
19
|
import * as assert from 'assert';
|
|
22
20
|
import { JSONValue } from '@lumino/coreutils';
|
|
23
21
|
import { IJSONSchema, JsonType } from '../../common/json-schema';
|
|
22
|
+
import {
|
|
23
|
+
DefaultsPreferenceProvider, Disposable, PreferenceDataProperty, PreferenceProvider,
|
|
24
|
+
PreferenceSchemaService, PreferenceSchemaServiceImpl, PreferenceScope
|
|
25
|
+
} from '../../common';
|
|
26
|
+
import { PreferenceLanguageOverrideService } from '../../common/preferences/preference-language-override-service';
|
|
24
27
|
|
|
25
28
|
/* eslint-disable no-null/no-null */
|
|
26
29
|
|
|
27
30
|
describe('Preference Validation Service', () => {
|
|
28
31
|
const container = new Container();
|
|
29
|
-
container.bind(
|
|
30
|
-
|
|
32
|
+
container.bind(PreferenceSchemaService).toConstantValue({
|
|
33
|
+
getDefaultValue: PreferenceSchemaServiceImpl.prototype.getDefaultValue,
|
|
34
|
+
onDidChangeDefaultValue: () => Disposable.NULL
|
|
35
|
+
} as unknown as PreferenceSchemaService);
|
|
36
|
+
container.bind(PreferenceLanguageOverrideService).to(PreferenceLanguageOverrideService).inSingletonScope();
|
|
37
|
+
container.bind(PreferenceProvider).to(DefaultsPreferenceProvider).inSingletonScope().whenTargetNamed(PreferenceScope.Default);
|
|
38
|
+
|
|
31
39
|
const validator = container.resolve(PreferenceValidationService);
|
|
32
|
-
const validateBySchema: (value: JSONValue, schema:
|
|
40
|
+
const validateBySchema: (value: JSONValue, schema: PreferenceDataProperty) => JSONValue = validator.validateBySchema.bind(validator, 'dummy');
|
|
33
41
|
|
|
34
42
|
describe('should validate strings', () => {
|
|
35
43
|
const expected = 'expected';
|
|
@@ -137,7 +145,7 @@ describe('Preference Validation Service', () => {
|
|
|
137
145
|
assert.strictEqual(actual, expected);
|
|
138
146
|
});
|
|
139
147
|
it('bad value -> should return default value', () => {
|
|
140
|
-
const actual = validateBySchema('not-in-enum', { enum: options, defaultValue });
|
|
148
|
+
const actual = validateBySchema('not-in-enum', { enum: options, default: defaultValue });
|
|
141
149
|
assert.strictEqual(actual, defaultValue);
|
|
142
150
|
});
|
|
143
151
|
it('bad value -> should return first value if no default or bad default', () => {
|
|
@@ -155,29 +163,29 @@ describe('Preference Validation Service', () => {
|
|
|
155
163
|
assert.deepStrictEqual(validateBySchema(3, schema), {});
|
|
156
164
|
});
|
|
157
165
|
it('should reject objects that are missing required fields', () => {
|
|
158
|
-
const schema:
|
|
166
|
+
const schema: PreferenceDataProperty = { type: 'object', properties: { 'required': { type: 'string' }, 'not-required': { type: 'number' } }, required: ['required'] };
|
|
159
167
|
assert.deepStrictEqual(validateBySchema({ 'not-required': 3 }, schema), {});
|
|
160
168
|
const defaultValue = { required: 'present' };
|
|
161
|
-
assert.deepStrictEqual(validateBySchema({ 'not-required': 3 }, { ...schema, defaultValue }), defaultValue);
|
|
169
|
+
assert.deepStrictEqual(validateBySchema({ 'not-required': 3 }, { ...schema, default: defaultValue }), defaultValue);
|
|
162
170
|
});
|
|
163
171
|
it('should reject objects that have impermissible extra properties', () => {
|
|
164
|
-
const schema:
|
|
172
|
+
const schema: PreferenceDataProperty = { type: 'object', properties: { 'required': { type: 'string' } }, additionalProperties: false };
|
|
165
173
|
assert.deepStrictEqual(validateBySchema({ 'required': 'hello', 'not-required': 3 }, schema), {});
|
|
166
174
|
});
|
|
167
175
|
it('should accept objects with extra properties if extra properties are not forbidden', () => {
|
|
168
176
|
const input = { 'required': 'hello', 'not-forbidden': 3 };
|
|
169
|
-
const schema:
|
|
177
|
+
const schema: PreferenceDataProperty = { type: 'object', properties: { 'required': { type: 'string' } }, additionalProperties: true };
|
|
170
178
|
assert.deepStrictEqual(validateBySchema(input, schema), input);
|
|
171
179
|
assert.deepStrictEqual(validateBySchema(input, { ...schema, additionalProperties: undefined }), input);
|
|
172
180
|
});
|
|
173
181
|
it("should reject objects with properties that violate the property's rules", () => {
|
|
174
182
|
const input = { required: 'not-a-number!' };
|
|
175
|
-
const schema:
|
|
183
|
+
const schema: PreferenceDataProperty = { type: 'object', properties: { required: { type: 'number' } } };
|
|
176
184
|
assert.deepStrictEqual(validateBySchema(input, schema), {});
|
|
177
185
|
});
|
|
178
186
|
it('should reject objects with extra properties that violate the extra property rules', () => {
|
|
179
187
|
const input = { required: 3, 'not-required': 'not-a-number!' };
|
|
180
|
-
const schema:
|
|
188
|
+
const schema: PreferenceDataProperty = { type: 'object', properties: { required: { type: 'number' } }, additionalProperties: { type: 'number' } };
|
|
181
189
|
assert.deepStrictEqual(validateBySchema(input, schema), {});
|
|
182
190
|
});
|
|
183
191
|
});
|
|
@@ -196,7 +204,7 @@ describe('Preference Validation Service', () => {
|
|
|
196
204
|
});
|
|
197
205
|
});
|
|
198
206
|
describe('should validate tuples', () => {
|
|
199
|
-
const schema:
|
|
207
|
+
const schema: PreferenceDataProperty & { items: IJSONSchema[] } = {
|
|
200
208
|
'type': 'array',
|
|
201
209
|
'items': [{
|
|
202
210
|
'type': 'number',
|
|
@@ -218,7 +226,7 @@ describe('Preference Validation Service', () => {
|
|
|
218
226
|
assert.strictEqual(validateBySchema([2, ['second fails']], withDefault), defaultValue);
|
|
219
227
|
});
|
|
220
228
|
it('bad input -> in the absence of a default, it should return any good values or the default for each subschema', () => {
|
|
221
|
-
const withSubDefault:
|
|
229
|
+
const withSubDefault: PreferenceDataProperty = { ...schema, items: [{ type: 'string', default: 'cool' }, ...schema.items] };
|
|
222
230
|
assert.deepStrictEqual(validateBySchema('not an array', withSubDefault), ['cool', 0, '']);
|
|
223
231
|
assert.deepStrictEqual(validateBySchema([2, 8, null], withSubDefault), ['cool', 8, '']);
|
|
224
232
|
});
|
|
@@ -252,7 +260,7 @@ describe('Preference Validation Service', () => {
|
|
|
252
260
|
});
|
|
253
261
|
});
|
|
254
262
|
describe('should validate anyOfs', () => {
|
|
255
|
-
const schema:
|
|
263
|
+
const schema: PreferenceDataProperty = { anyOf: [{ type: 'number', minimum: 1 }, { type: 'array', items: { type: 'string' } }], default: 5 };
|
|
256
264
|
it('good input -> returns same value', () => {
|
|
257
265
|
assert.strictEqual(validateBySchema(3, schema), 3);
|
|
258
266
|
const goodArray = ['a string', 'here too'];
|
|
@@ -268,7 +276,7 @@ describe('Preference Validation Service', () => {
|
|
|
268
276
|
});
|
|
269
277
|
describe('should validate oneOfs', () => {
|
|
270
278
|
// Between 4 and 6 should be rejected
|
|
271
|
-
const schema:
|
|
279
|
+
const schema: PreferenceDataProperty = { oneOf: [{ type: 'number', minimum: 1, maximum: 6 }, { type: 'number', minimum: 4, maximum: 10 }], default: 8 };
|
|
272
280
|
it('good input -> returns same value', () => {
|
|
273
281
|
assert.strictEqual(validateBySchema(2, schema), 2);
|
|
274
282
|
assert.strictEqual(validateBySchema(7, schema), 7);
|
|
@@ -281,7 +289,7 @@ describe('Preference Validation Service', () => {
|
|
|
281
289
|
});
|
|
282
290
|
});
|
|
283
291
|
describe('should validate consts', () => {
|
|
284
|
-
const schema:
|
|
292
|
+
const schema: PreferenceDataProperty = { const: { 'the only': 'possible value' }, default: 'ignore-the-default' };
|
|
285
293
|
const goodValue = { 'the only': 'possible value' };
|
|
286
294
|
it('good input -> returns same value', () => {
|
|
287
295
|
assert.strictEqual(validateBySchema(goodValue, schema), goodValue);
|
|
@@ -292,7 +300,7 @@ describe('Preference Validation Service', () => {
|
|
|
292
300
|
});
|
|
293
301
|
});
|
|
294
302
|
describe('should maintain triple equality for valid object types', () => {
|
|
295
|
-
const arraySchema:
|
|
303
|
+
const arraySchema: PreferenceDataProperty = { type: 'array', items: { type: 'string' } };
|
|
296
304
|
it('maintains triple equality for arrays', () => {
|
|
297
305
|
const input = ['one-string', 'two-string'];
|
|
298
306
|
assert(validateBySchema(input, arraySchema) === input);
|
|
@@ -302,7 +310,7 @@ describe('Preference Validation Service', () => {
|
|
|
302
310
|
assert.notStrictEqual(validateBySchema(input, arraySchema), input);
|
|
303
311
|
});
|
|
304
312
|
it('maintains triple equality for objects', () => {
|
|
305
|
-
const schema:
|
|
313
|
+
const schema: PreferenceDataProperty = {
|
|
306
314
|
'type': 'object',
|
|
307
315
|
properties: {
|
|
308
316
|
primitive: { type: 'string' },
|