@theia/core 1.65.0-next.6 → 1.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/i18n/nls.cs.json +117 -15
- package/i18n/nls.de.json +117 -15
- package/i18n/nls.es.json +117 -15
- package/i18n/nls.fr.json +117 -15
- package/i18n/nls.hu.json +117 -15
- package/i18n/nls.it.json +117 -15
- package/i18n/nls.ja.json +117 -15
- package/i18n/nls.json +121 -19
- package/i18n/nls.ko.json +117 -15
- package/i18n/nls.pl.json +117 -15
- package/i18n/nls.pt-br.json +117 -15
- package/i18n/nls.ru.json +117 -15
- package/i18n/nls.tr.json +117 -15
- package/i18n/nls.zh-cn.json +117 -15
- package/i18n/nls.zh-tw.json +117 -15
- 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 +202 -30
- 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/dialogs/react-dialog.d.ts.map +1 -1
- package/lib/browser/dialogs/react-dialog.js +1 -0
- package/lib/browser/dialogs/react-dialog.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 +10 -6
- 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/json-schema-store.d.ts +2 -0
- package/lib/browser/json-schema-store.d.ts.map +1 -1
- package/lib/browser/json-schema-store.js +10 -3
- package/lib/browser/json-schema-store.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 +3 -3
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +4 -5
- 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/saveable.d.ts +9 -0
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/secondary-window-handler.d.ts +21 -9
- package/lib/browser/secondary-window-handler.d.ts.map +1 -1
- package/lib/browser/secondary-window-handler.js +162 -21
- package/lib/browser/secondary-window-handler.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +7 -2
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +27 -10
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts +13 -0
- package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +8 -1
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +30 -16
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +116 -33
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +8 -3
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +2 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.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 +19 -2
- package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.js +82 -0
- package/lib/browser/shell/theia-dock-panel.js.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 +3 -2
- 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 +5 -4
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +2 -2
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widgets/extractable-widget.d.ts +3 -0
- package/lib/browser/widgets/extractable-widget.d.ts.map +1 -1
- package/lib/browser/widgets/extractable-widget.js.map +1 -1
- package/lib/browser/widgets/widget.js +4 -4
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.d.ts +10 -5
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +53 -13
- 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/secondary-window-service.d.ts +15 -2
- package/lib/browser/window/secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/secondary-window-service.js +12 -1
- package/lib/browser/window/secondary-window-service.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/menu/menu-types.d.ts +1 -0
- package/lib/common/menu/menu-types.d.ts.map +1 -1
- package/lib/common/menu/menu-types.js.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/stream.d.ts +9 -0
- package/lib/common/stream.d.ts.map +1 -1
- package/lib/common/stream.js +93 -2
- package/lib/common/stream.js.map +1 -1
- 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 +11 -10
- 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/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +3 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.js +5 -4
- package/lib/electron-browser/window/electron-secondary-window-service.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-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.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-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +9 -0
- package/lib/electron-main/electron-api-main.js.map +1 -1
- 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/lib/node/backend-application.js +1 -1
- package/lib/node/logger-cli-contribution.d.ts +7 -1
- package/lib/node/logger-cli-contribution.d.ts.map +1 -1
- package/lib/node/logger-cli-contribution.js +22 -10
- package/lib/node/logger-cli-contribution.js.map +1 -1
- package/lib/node/logger-cli-contribution.spec.js +13 -2
- package/lib/node/logger-cli-contribution.spec.js.map +1 -1
- package/package.json +8 -7
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +1 -1
- package/src/browser/common-frontend-contribution.ts +2 -3
- package/src/browser/dialogs/react-dialog.tsx +1 -0
- package/src/browser/encoding-registry.ts +1 -1
- package/src/browser/frontend-application-bindings.ts +8 -13
- package/src/browser/frontend-application-module.ts +13 -6
- 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/json-schema-store.ts +9 -1
- package/src/browser/keybinding.spec.ts +1 -1
- package/src/browser/keybinding.ts +1 -1
- package/src/browser/menu/browser-menu-plugin.ts +7 -7
- 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/saveable.ts +8 -0
- package/src/browser/secondary-window-handler.ts +189 -29
- package/src/browser/shell/application-shell.ts +36 -13
- package/src/browser/shell/shell-layout-restorer.ts +15 -0
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +139 -40
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +12 -6
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +2 -2
- package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +2 -2
- package/src/browser/shell/tab-bars.ts +1 -1
- package/src/browser/shell/theia-dock-panel.ts +101 -2
- package/src/browser/status-bar/status-bar.tsx +3 -2
- package/src/browser/style/dockpanel.css +7 -0
- 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 +6 -5
- package/src/browser/view-container.ts +5 -5
- package/src/browser/widgets/extractable-widget.ts +3 -0
- package/src/browser/widgets/widget.ts +4 -4
- package/src/browser/window/default-secondary-window-service.ts +54 -17
- 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/secondary-window-service.ts +23 -2
- 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/menu/menu-types.ts +2 -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/common/stream.ts +102 -1
- 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 +13 -11
- package/src/electron-browser/menu/electron-menu-contribution.ts +9 -6
- package/src/electron-browser/preload.ts +4 -1
- package/src/electron-browser/window/electron-secondary-window-service.ts +7 -4
- 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-common/electron-api.ts +2 -0
- package/src/{electron-browser/window → electron-common}/electron-window-preferences.ts +6 -6
- package/src/electron-main/electron-api-main.ts +11 -1
- 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/src/node/backend-application.ts +1 -1
- package/src/node/logger-cli-contribution.spec.ts +17 -2
- package/src/node/logger-cli-contribution.ts +18 -3
- 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
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2018 Ericsson and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { injectable } from 'inversify';
|
|
18
|
+
import { PreferenceContribution, PreferenceSchema, PreferenceSchemaService } from '../../common/preferences/preference-schema';
|
|
19
|
+
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
20
|
+
import { FrontendApplicationPreferenceConfig } from './preference-contribution';
|
|
21
|
+
import { PreferenceLanguageOverrideService } from '../../common/preferences/preference-language-override-service';
|
|
22
|
+
import { PreferenceScope } from '../../common/preferences';
|
|
23
|
+
import { DefaultTheme } from '@theia/application-package/lib/application-props';
|
|
24
|
+
|
|
25
|
+
@injectable()
|
|
26
|
+
export class FrontendConfigPreferenceContribution implements PreferenceContribution {
|
|
27
|
+
schema: PreferenceSchema = { scope: PreferenceScope.Folder, properties: {} };
|
|
28
|
+
async initSchema(service: PreferenceSchemaService): Promise<void> {
|
|
29
|
+
const config = FrontendApplicationConfigProvider.get();
|
|
30
|
+
if (FrontendApplicationPreferenceConfig.is(config)) {
|
|
31
|
+
service.registerOverride('workbench.colorTheme', undefined, DefaultTheme.defaultForOSTheme(config.defaultTheme));
|
|
32
|
+
if (config.defaultIconTheme) {
|
|
33
|
+
service.registerOverride('workbench.iconTheme', undefined, config.defaultIconTheme);
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
for (const [key, defaultValue] of Object.entries(config.preferences)) {
|
|
37
|
+
if (PreferenceLanguageOverrideService.testOverrideValue(key, defaultValue)) {
|
|
38
|
+
for (const [propertyName, value] of Object.entries(defaultValue)) {
|
|
39
|
+
service.registerOverride(propertyName, key.substring(1, key.length - 1), value);
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
// regular configuration override
|
|
43
|
+
service.registerOverride(key, undefined, defaultValue);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} catch (e) {
|
|
47
|
+
console.error('Failed to load preferences from frontend configuration.', e);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
@@ -14,10 +14,5 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
export * from './preference-service';
|
|
18
|
-
export * from './preference-proxy';
|
|
19
17
|
export * from './preference-contribution';
|
|
20
|
-
export * from './preference-provider';
|
|
21
|
-
export * from './preference-scope';
|
|
22
|
-
export * from './preference-language-override-service';
|
|
23
18
|
export * from './preference-validation-service';
|
|
@@ -14,61 +14,27 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { PreferenceScope } from './preference-scope';
|
|
21
|
-
import { PreferenceProvider, PreferenceProviderDataChange } from './preference-provider';
|
|
22
|
-
import {
|
|
23
|
-
PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty
|
|
24
|
-
} from '../../common/preferences/preference-schema';
|
|
25
|
-
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
17
|
+
import { interfaces } from 'inversify';
|
|
18
|
+
import { bindContributionProvider, PreferenceProvider } from '../../common';
|
|
19
|
+
import { PreferenceScope, ValidPreferenceScopes } from '../../common/preferences/preference-scope';
|
|
26
20
|
import { FrontendApplicationConfig } from '@theia/application-package/lib/application-props';
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export const PreferenceContribution = Symbol('PreferenceContribution');
|
|
36
|
-
|
|
37
|
-
export const DefaultOverridesPreferenceSchemaId = 'defaultOverrides';
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* A {@link PreferenceContribution} allows adding additional custom preferences.
|
|
41
|
-
* For this, the {@link PreferenceContribution} has to provide a valid JSON Schema specifying which preferences
|
|
42
|
-
* are available including their types and description.
|
|
43
|
-
*
|
|
44
|
-
* ### Example usage
|
|
45
|
-
* ```typescript
|
|
46
|
-
* const MyPreferencesSchema: PreferenceSchema = {
|
|
47
|
-
* 'type': 'object',
|
|
48
|
-
* 'properties': {
|
|
49
|
-
* 'myext.decorations.enabled': {
|
|
50
|
-
* 'type': 'boolean',
|
|
51
|
-
* 'description': 'Show file status',
|
|
52
|
-
* 'default': true
|
|
53
|
-
* },
|
|
54
|
-
* // [...]
|
|
55
|
-
* }
|
|
56
|
-
* }
|
|
57
|
-
* @injectable()
|
|
58
|
-
* export class MyPreferenceContribution implements PreferenceContribution{
|
|
59
|
-
* schema= MyPreferencesSchema;
|
|
60
|
-
* }
|
|
61
|
-
* ```
|
|
62
|
-
*/
|
|
63
|
-
export interface PreferenceContribution {
|
|
64
|
-
readonly schema: PreferenceSchema;
|
|
65
|
-
}
|
|
21
|
+
import { isObject } from '../../common/types';
|
|
22
|
+
import { PreferenceSchemaServiceImpl } from '../../common/preferences/preference-schema-service';
|
|
23
|
+
import { PreferenceContribution, PreferenceSchemaService } from '../../common/preferences/preference-schema';
|
|
24
|
+
import { DefaultsPreferenceProvider } from '../../common/preferences/defaults-preference-provider';
|
|
25
|
+
import { PreferenceLanguageOverrideService } from '../../common/preferences/preference-language-override-service';
|
|
26
|
+
import { FrontendConfigPreferenceContribution } from './frontend-config-preference-contributions';
|
|
27
|
+
import { bindPreferenceConfigurations } from '../../common/preferences/preference-configurations';
|
|
66
28
|
|
|
67
29
|
export function bindPreferenceSchemaProvider(bind: interfaces.Bind): void {
|
|
68
30
|
bindPreferenceConfigurations(bind);
|
|
69
|
-
bind(
|
|
31
|
+
bind(ValidPreferenceScopes).toConstantValue([PreferenceScope.Default, PreferenceScope.User, PreferenceScope.Workspace, PreferenceScope.Folder]);
|
|
32
|
+
bind(PreferenceSchemaServiceImpl).toSelf().inSingletonScope();
|
|
33
|
+
bind(PreferenceSchemaService).toService(PreferenceSchemaServiceImpl);
|
|
34
|
+
bind(PreferenceProvider).to(DefaultsPreferenceProvider).inSingletonScope().whenTargetNamed(PreferenceScope.Default);
|
|
70
35
|
bind(PreferenceLanguageOverrideService).toSelf().inSingletonScope();
|
|
71
36
|
bindContributionProvider(bind, PreferenceContribution);
|
|
37
|
+
bind(PreferenceContribution).to(FrontendConfigPreferenceContribution).inSingletonScope();
|
|
72
38
|
}
|
|
73
39
|
|
|
74
40
|
/**
|
|
@@ -77,6 +43,7 @@ export function bindPreferenceSchemaProvider(bind: interfaces.Bind): void {
|
|
|
77
43
|
*/
|
|
78
44
|
export interface FrontendApplicationPreferenceConfig extends FrontendApplicationConfig {
|
|
79
45
|
preferences: {
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
47
|
[preferenceName: string]: any
|
|
81
48
|
}
|
|
82
49
|
}
|
|
@@ -85,352 +52,3 @@ export namespace FrontendApplicationPreferenceConfig {
|
|
|
85
52
|
return isObject(config.preferences);
|
|
86
53
|
}
|
|
87
54
|
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* The {@link PreferenceSchemaProvider} collects all {@link PreferenceContribution}s and combines
|
|
91
|
-
* the preference schema provided by these contributions into one collective schema. The preferences which
|
|
92
|
-
* are provided by this {@link PreferenceProvider} are derived from this combined schema.
|
|
93
|
-
*/
|
|
94
|
-
@injectable()
|
|
95
|
-
export class PreferenceSchemaProvider extends PreferenceProvider {
|
|
96
|
-
|
|
97
|
-
protected readonly preferences: { [name: string]: any } = {};
|
|
98
|
-
protected readonly combinedSchema: PreferenceDataSchema = { properties: {}, patternProperties: {}, allowComments: true, allowTrailingCommas: true, };
|
|
99
|
-
protected readonly workspaceSchema: PreferenceDataSchema = { properties: {}, patternProperties: {}, allowComments: true, allowTrailingCommas: true, };
|
|
100
|
-
protected readonly folderSchema: PreferenceDataSchema = { properties: {}, patternProperties: {}, allowComments: true, allowTrailingCommas: true, };
|
|
101
|
-
|
|
102
|
-
@inject(ContributionProvider) @named(PreferenceContribution)
|
|
103
|
-
protected readonly preferenceContributions: ContributionProvider<PreferenceContribution>;
|
|
104
|
-
|
|
105
|
-
@inject(PreferenceConfigurations)
|
|
106
|
-
protected readonly configurations: PreferenceConfigurations;
|
|
107
|
-
|
|
108
|
-
protected readonly onDidPreferenceSchemaChangedEmitter = new Emitter<void>();
|
|
109
|
-
readonly onDidPreferenceSchemaChanged: Event<void> = this.onDidPreferenceSchemaChangedEmitter.event;
|
|
110
|
-
protected fireDidPreferenceSchemaChanged(): void {
|
|
111
|
-
this.onDidPreferenceSchemaChangedEmitter.fire(undefined);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
@postConstruct()
|
|
115
|
-
protected init(): void {
|
|
116
|
-
this.readConfiguredPreferences();
|
|
117
|
-
this.preferenceContributions.getContributions().forEach(contrib => {
|
|
118
|
-
this.doSetSchema(contrib.schema);
|
|
119
|
-
});
|
|
120
|
-
this.combinedSchema.additionalProperties = false;
|
|
121
|
-
this._ready.resolve();
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Register a new overrideIdentifier. Existing identifiers are not replaced.
|
|
126
|
-
*
|
|
127
|
-
* Allows overriding existing values while keeping both values in store.
|
|
128
|
-
* For example to store different editor settings, e.g. "[markdown].editor.autoIndent",
|
|
129
|
-
* "[json].editor.autoIndent" and "editor.autoIndent"
|
|
130
|
-
* @param overrideIdentifier the new overrideIdentifier
|
|
131
|
-
*/
|
|
132
|
-
registerOverrideIdentifier(overrideIdentifier: string): void {
|
|
133
|
-
if (this.preferenceOverrideService.addOverrideIdentifier(overrideIdentifier)) {
|
|
134
|
-
this.updateOverridePatternPropertiesKey();
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
protected readonly overridePatternProperties: Required<Pick<PreferenceDataProperty, 'properties' | 'additionalProperties'>> & PreferenceDataProperty = {
|
|
139
|
-
type: 'object',
|
|
140
|
-
description: 'Configure editor settings to be overridden for a language.',
|
|
141
|
-
errorMessage: 'Unknown Identifier. Use language identifiers',
|
|
142
|
-
properties: {},
|
|
143
|
-
additionalProperties: false
|
|
144
|
-
};
|
|
145
|
-
protected overridePatternPropertiesKey: string | undefined;
|
|
146
|
-
protected updateOverridePatternPropertiesKey(): void {
|
|
147
|
-
const oldKey = this.overridePatternPropertiesKey;
|
|
148
|
-
const newKey = this.preferenceOverrideService.computeOverridePatternPropertiesKey();
|
|
149
|
-
if (oldKey === newKey) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
if (oldKey) {
|
|
153
|
-
delete this.combinedSchema.patternProperties[oldKey];
|
|
154
|
-
}
|
|
155
|
-
this.overridePatternPropertiesKey = newKey;
|
|
156
|
-
if (newKey) {
|
|
157
|
-
this.combinedSchema.patternProperties[newKey] = this.overridePatternProperties;
|
|
158
|
-
}
|
|
159
|
-
this.fireDidPreferenceSchemaChanged();
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
protected doUnsetSchema(changes: PreferenceProviderDataChange[]): PreferenceProviderDataChange[] {
|
|
163
|
-
const inverseChanges: PreferenceProviderDataChange[] = [];
|
|
164
|
-
for (const change of changes) {
|
|
165
|
-
const preferenceName = change.preferenceName;
|
|
166
|
-
const overridden = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
167
|
-
if (overridden) {
|
|
168
|
-
delete this.overridePatternProperties.properties[`[${overridden.overrideIdentifier}]`];
|
|
169
|
-
this.removePropFromSchemas(`[${overridden.overrideIdentifier}]`);
|
|
170
|
-
} else {
|
|
171
|
-
this.removePropFromSchemas(preferenceName);
|
|
172
|
-
}
|
|
173
|
-
const newValue = change.oldValue;
|
|
174
|
-
const oldValue = change.newValue;
|
|
175
|
-
const { scope, domain } = change;
|
|
176
|
-
const inverseChange: Mutable<PreferenceProviderDataChange> = { preferenceName, oldValue, scope, domain };
|
|
177
|
-
if (typeof newValue === undefined) {
|
|
178
|
-
delete this.preferences[preferenceName];
|
|
179
|
-
} else {
|
|
180
|
-
inverseChange.newValue = newValue;
|
|
181
|
-
this.preferences[preferenceName] = newValue;
|
|
182
|
-
}
|
|
183
|
-
inverseChanges.push(inverseChange);
|
|
184
|
-
}
|
|
185
|
-
return inverseChanges;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
protected validateSchema(schema: PreferenceSchema): void {
|
|
189
|
-
const ajv = new Ajv();
|
|
190
|
-
const valid = ajv.validateSchema(schema);
|
|
191
|
-
if (!valid) {
|
|
192
|
-
const errors = !!ajv.errors ? ajv.errorsText(ajv.errors) : 'unknown validation error';
|
|
193
|
-
console.warn('A contributed preference schema has validation issues : ' + errors);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
protected doSetSchema(schema: PreferenceSchema): PreferenceProviderDataChange[] {
|
|
198
|
-
if (FrontendApplicationConfigProvider.get().validatePreferencesSchema) {
|
|
199
|
-
this.validateSchema(schema);
|
|
200
|
-
}
|
|
201
|
-
const scope = PreferenceScope.Default;
|
|
202
|
-
const domain = this.getDomain();
|
|
203
|
-
const changes: PreferenceProviderDataChange[] = [];
|
|
204
|
-
const defaultScope = PreferenceSchema.getDefaultScope(schema);
|
|
205
|
-
const overridable = schema.overridable || false;
|
|
206
|
-
for (const [preferenceName, rawSchemaProps] of Object.entries(schema.properties)) {
|
|
207
|
-
if (this.combinedSchema.properties[preferenceName] && DefaultOverridesPreferenceSchemaId !== schema.id) {
|
|
208
|
-
console.error('Preference name collision detected in the schema for property: ' + preferenceName);
|
|
209
|
-
} else {
|
|
210
|
-
let schemaProps;
|
|
211
|
-
if (this.combinedSchema.properties[preferenceName] && DefaultOverridesPreferenceSchemaId === schema.id) {
|
|
212
|
-
// update existing default value in schema
|
|
213
|
-
schemaProps = PreferenceDataProperty.fromPreferenceSchemaProperty(rawSchemaProps, defaultScope);
|
|
214
|
-
this.updateSchemaPropsDefault(preferenceName, schemaProps);
|
|
215
|
-
} else if (!rawSchemaProps.hasOwnProperty('included') || rawSchemaProps.included) {
|
|
216
|
-
// add overrides for languages
|
|
217
|
-
schemaProps = PreferenceDataProperty.fromPreferenceSchemaProperty(rawSchemaProps, defaultScope);
|
|
218
|
-
if (typeof schemaProps.overridable !== 'boolean' && overridable) {
|
|
219
|
-
schemaProps.overridable = true;
|
|
220
|
-
}
|
|
221
|
-
if (schemaProps.overridable) {
|
|
222
|
-
this.overridePatternProperties.properties[preferenceName] = schemaProps;
|
|
223
|
-
}
|
|
224
|
-
this.updateSchemaProps(preferenceName, schemaProps);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
if (schemaProps !== undefined) {
|
|
228
|
-
const schemaDefault = this.getDefaultValue(schemaProps);
|
|
229
|
-
const configuredDefault = this.getConfiguredDefault(preferenceName);
|
|
230
|
-
if (this.preferenceOverrideService.testOverrideValue(preferenceName, schemaDefault)) {
|
|
231
|
-
schemaProps.defaultValue = PreferenceSchemaProperties.is(configuredDefault)
|
|
232
|
-
? PreferenceProvider.merge(schemaDefault, configuredDefault)
|
|
233
|
-
: schemaDefault;
|
|
234
|
-
if (schemaProps.defaultValue && PreferenceSchemaProperties.is(schemaProps.defaultValue)) {
|
|
235
|
-
for (const overriddenPreferenceName in schemaProps.defaultValue) {
|
|
236
|
-
const overrideValue = schemaDefault[overriddenPreferenceName];
|
|
237
|
-
const overridePreferenceName = `${preferenceName}.${overriddenPreferenceName}`;
|
|
238
|
-
changes.push(this.doSetPreferenceValue(overridePreferenceName, overrideValue, { scope, domain }));
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
} else {
|
|
242
|
-
schemaProps.defaultValue = configuredDefault === undefined ? schemaDefault : configuredDefault;
|
|
243
|
-
changes.push(this.doSetPreferenceValue(preferenceName, schemaProps.defaultValue, { scope, domain }));
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return changes;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
protected doSetPreferenceValue(preferenceName: string, newValue: any, { scope, domain }: {
|
|
252
|
-
scope: PreferenceScope,
|
|
253
|
-
domain?: string[]
|
|
254
|
-
}): PreferenceProviderDataChange {
|
|
255
|
-
const oldValue = this.preferences[preferenceName];
|
|
256
|
-
this.preferences[preferenceName] = newValue;
|
|
257
|
-
return { preferenceName, oldValue, newValue, scope, domain };
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
getDefaultValue(property: PreferenceItem): JSONValue {
|
|
261
|
-
if (property.defaultValue !== undefined) {
|
|
262
|
-
return property.defaultValue;
|
|
263
|
-
}
|
|
264
|
-
if (property.default !== undefined) {
|
|
265
|
-
return property.default;
|
|
266
|
-
}
|
|
267
|
-
const type = Array.isArray(property.type) ? property.type[0] : property.type;
|
|
268
|
-
switch (type) {
|
|
269
|
-
case 'boolean':
|
|
270
|
-
return false;
|
|
271
|
-
case 'integer':
|
|
272
|
-
case 'number':
|
|
273
|
-
return 0;
|
|
274
|
-
case 'string':
|
|
275
|
-
return '';
|
|
276
|
-
case 'array':
|
|
277
|
-
return [];
|
|
278
|
-
case 'object':
|
|
279
|
-
return {};
|
|
280
|
-
}
|
|
281
|
-
// eslint-disable-next-line no-null/no-null
|
|
282
|
-
return null;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
protected getConfiguredDefault(preferenceName: string): any {
|
|
286
|
-
const config = FrontendApplicationConfigProvider.get();
|
|
287
|
-
if (preferenceName && FrontendApplicationPreferenceConfig.is(config) && preferenceName in config.preferences) {
|
|
288
|
-
return config.preferences[preferenceName];
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
getCombinedSchema(): PreferenceDataSchema {
|
|
293
|
-
return this.combinedSchema;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
getSchema(scope: PreferenceScope): PreferenceDataSchema {
|
|
297
|
-
switch (scope) {
|
|
298
|
-
case PreferenceScope.Default:
|
|
299
|
-
case PreferenceScope.User:
|
|
300
|
-
return this.combinedSchema;
|
|
301
|
-
case PreferenceScope.Workspace:
|
|
302
|
-
return this.workspaceSchema;
|
|
303
|
-
case PreferenceScope.Folder:
|
|
304
|
-
return this.folderSchema;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
setSchema(schema: PreferenceSchema): Disposable {
|
|
309
|
-
const changes = this.doSetSchema(schema);
|
|
310
|
-
if (!changes.length) {
|
|
311
|
-
return Disposable.NULL;
|
|
312
|
-
}
|
|
313
|
-
this.fireDidPreferenceSchemaChanged();
|
|
314
|
-
this.emitPreferencesChangedEvent(changes);
|
|
315
|
-
return Disposable.create(() => {
|
|
316
|
-
const inverseChanges = this.doUnsetSchema(changes);
|
|
317
|
-
if (!inverseChanges.length) {
|
|
318
|
-
return;
|
|
319
|
-
}
|
|
320
|
-
this.fireDidPreferenceSchemaChanged();
|
|
321
|
-
this.emitPreferencesChangedEvent(inverseChanges);
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
getPreferences(): { [name: string]: any } {
|
|
326
|
-
return this.preferences;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
async setPreference(): Promise<boolean> {
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
isValidInScope(preferenceName: string, scope: PreferenceScope): boolean {
|
|
334
|
-
let property;
|
|
335
|
-
const overridden = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
336
|
-
if (overridden) {
|
|
337
|
-
// try from overridden schema
|
|
338
|
-
property = this.overridePatternProperties[`[${overridden.overrideIdentifier}]`];
|
|
339
|
-
property = property && property[overridden.preferenceName];
|
|
340
|
-
if (!property) {
|
|
341
|
-
// try from overridden identifier
|
|
342
|
-
property = this.overridePatternProperties[overridden.preferenceName];
|
|
343
|
-
}
|
|
344
|
-
if (!property) {
|
|
345
|
-
// try from overridden value
|
|
346
|
-
property = this.combinedSchema.properties[overridden.preferenceName];
|
|
347
|
-
}
|
|
348
|
-
} else {
|
|
349
|
-
property = this.combinedSchema.properties[preferenceName];
|
|
350
|
-
}
|
|
351
|
-
return property && property.scope! >= scope;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
*getPreferenceNames(): IterableIterator<string> {
|
|
355
|
-
for (const preferenceName in this.combinedSchema.properties) {
|
|
356
|
-
yield preferenceName;
|
|
357
|
-
for (const overridePreferenceName of this.getOverridePreferenceNames(preferenceName)) {
|
|
358
|
-
yield overridePreferenceName;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
getOverridePreferenceNames(preferenceName: string): IterableIterator<string> {
|
|
364
|
-
const preference = this.combinedSchema.properties[preferenceName];
|
|
365
|
-
if (preference && preference.overridable) {
|
|
366
|
-
return this.preferenceOverrideService.getOverridePreferenceNames(preferenceName);
|
|
367
|
-
}
|
|
368
|
-
return [][Symbol.iterator]();
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
getSchemaProperty(key: string): PreferenceDataProperty | undefined {
|
|
372
|
-
return this.combinedSchema.properties[key];
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* {@link property} will be assigned to field {@link key} in the schema.
|
|
377
|
-
* Pass a new object to invalidate old schema.
|
|
378
|
-
*/
|
|
379
|
-
updateSchemaProperty(key: string, property: PreferenceDataProperty): void {
|
|
380
|
-
this.updateSchemaProps(key, property);
|
|
381
|
-
this.fireDidPreferenceSchemaChanged();
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
protected updateSchemaProps(key: string, property: PreferenceDataProperty): void {
|
|
385
|
-
this.combinedSchema.properties[key] = property;
|
|
386
|
-
|
|
387
|
-
switch (property.scope) {
|
|
388
|
-
case PreferenceScope.Folder:
|
|
389
|
-
this.folderSchema.properties[key] = property;
|
|
390
|
-
// Fall through. isValidInScope implies that User ⊃ Workspace ⊃ Folder,
|
|
391
|
-
// so anything we add to folder should be added to workspace, but not vice versa.
|
|
392
|
-
case PreferenceScope.Workspace:
|
|
393
|
-
this.workspaceSchema.properties[key] = property;
|
|
394
|
-
break;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
protected updateSchemaPropsDefault(key: string, property: PreferenceDataProperty): void {
|
|
399
|
-
this.combinedSchema.properties[key].default = property.default;
|
|
400
|
-
this.combinedSchema.properties[key].defaultValue = property.defaultValue;
|
|
401
|
-
if (this.workspaceSchema.properties[key]) {
|
|
402
|
-
this.workspaceSchema.properties[key].default = property.default;
|
|
403
|
-
this.workspaceSchema.properties[key].defaultValue = property.defaultValue;
|
|
404
|
-
}
|
|
405
|
-
if (this.folderSchema.properties[key]) {
|
|
406
|
-
this.folderSchema.properties[key].default = property.default;
|
|
407
|
-
this.folderSchema.properties[key].defaultValue = property.defaultValue;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
protected removePropFromSchemas(key: string): void {
|
|
412
|
-
// If we remove a key from combined, it should also be removed from all narrower scopes.
|
|
413
|
-
delete this.combinedSchema.properties[key];
|
|
414
|
-
delete this.workspaceSchema.properties[key];
|
|
415
|
-
delete this.folderSchema.properties[key];
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
protected readConfiguredPreferences(): void {
|
|
419
|
-
const config = FrontendApplicationConfigProvider.get();
|
|
420
|
-
if (FrontendApplicationPreferenceConfig.is(config)) {
|
|
421
|
-
try {
|
|
422
|
-
const configuredDefaults = config.preferences;
|
|
423
|
-
const parsedDefaults = this.getParsedContent(configuredDefaults);
|
|
424
|
-
Object.assign(this.preferences, parsedDefaults);
|
|
425
|
-
const scope = PreferenceScope.Default;
|
|
426
|
-
const domain = this.getDomain();
|
|
427
|
-
const changes: PreferenceProviderDataChange[] = Object.keys(this.preferences)
|
|
428
|
-
.map((key): PreferenceProviderDataChange => ({ preferenceName: key, oldValue: undefined, newValue: this.preferences[key], scope, domain }));
|
|
429
|
-
this.emitPreferencesChangedEvent(changes);
|
|
430
|
-
} catch (e) {
|
|
431
|
-
console.error('Failed to load preferences from frontend configuration.', e);
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
}
|
|
@@ -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': [
|