@theia/core 1.65.0-next.6 → 1.65.1
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 +227 -32
- 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 +68 -58
- 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 +76 -63
- 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
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
import { inject, injectable, postConstruct } from 'inversify';
|
|
18
18
|
import { PreferenceSchema } from '../../common/preferences/preference-schema';
|
|
19
|
-
import { Disposable, DisposableCollection, Emitter, Event, isObject, MaybePromise } from '../../common';
|
|
19
|
+
import { Disposable, DisposableCollection, Emitter, Event, isObject, MaybePromise, PreferenceScope } from '../../common';
|
|
20
20
|
import { PreferenceChangeEvent, PreferenceEventEmitter, PreferenceProxy, PreferenceProxyOptions, PreferenceRetrieval } from './preference-proxy';
|
|
21
|
-
import { PreferenceChange, PreferenceChangeImpl, PreferenceChanges,
|
|
21
|
+
import { PreferenceChange, PreferenceChangeImpl, PreferenceChanges, PreferenceService } from './preference-service';
|
|
22
22
|
import { JSONValue } from '@lumino/coreutils';
|
|
23
23
|
import { PreferenceProviderDataChange } from './preference-provider';
|
|
24
|
-
import { OverridePreferenceName } from '
|
|
24
|
+
import { OverridePreferenceName } from '../../common/preferences/preference-language-override-service';
|
|
25
25
|
|
|
26
26
|
export const PreferenceProxySchema = Symbol('PreferenceProxySchema');
|
|
27
27
|
export interface PreferenceProxyFactory {
|
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { injectable } from 'inversify';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { isObject } from '../types';
|
|
19
|
+
import { IndexedAccess, PreferenceSchemaService } from './preference-schema';
|
|
20
|
+
import { escapeRegExpCharacters } from '../strings';
|
|
21
|
+
import { JSONValue } from '@lumino/coreutils';
|
|
20
22
|
|
|
21
23
|
export interface OverridePreferenceName {
|
|
22
24
|
preferenceName: string
|
|
@@ -34,10 +36,11 @@ export const getOverridePattern = (identifier: string) => `\\[(${identifier})\\]
|
|
|
34
36
|
|
|
35
37
|
@injectable()
|
|
36
38
|
export class PreferenceLanguageOverrideService {
|
|
37
|
-
|
|
39
|
+
@inject(PreferenceSchemaService)
|
|
40
|
+
protected readonly preferenceSchemaService: PreferenceSchemaService;
|
|
38
41
|
|
|
39
|
-
testOverrideValue(name: string, value: unknown): value is
|
|
40
|
-
return
|
|
42
|
+
static testOverrideValue(name: string, value: unknown): value is IndexedAccess<JSONValue> {
|
|
43
|
+
return isObject(value) && OVERRIDE_PROPERTY_PATTERN.test(name);
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
/**
|
|
@@ -65,7 +68,7 @@ export class PreferenceLanguageOverrideService {
|
|
|
65
68
|
}
|
|
66
69
|
const matches = name.substring(0, index).match(OVERRIDE_PROPERTY_PATTERN);
|
|
67
70
|
const overrideIdentifier = matches && matches[1];
|
|
68
|
-
if (!overrideIdentifier || !this.overrideIdentifiers.has(overrideIdentifier)) {
|
|
71
|
+
if (!overrideIdentifier || !this.preferenceSchemaService.overrideIdentifiers.has(overrideIdentifier)) {
|
|
69
72
|
return undefined;
|
|
70
73
|
}
|
|
71
74
|
const preferenceName = name.substring(index + 1);
|
|
@@ -74,7 +77,7 @@ export class PreferenceLanguageOverrideService {
|
|
|
74
77
|
|
|
75
78
|
computeOverridePatternPropertiesKey(): string | undefined {
|
|
76
79
|
let param: string = '';
|
|
77
|
-
for (const overrideIdentifier of this.overrideIdentifiers) {
|
|
80
|
+
for (const overrideIdentifier of this.preferenceSchemaService.overrideIdentifiers) {
|
|
78
81
|
if (param.length) {
|
|
79
82
|
param += '|';
|
|
80
83
|
}
|
|
@@ -84,28 +87,8 @@ export class PreferenceLanguageOverrideService {
|
|
|
84
87
|
}
|
|
85
88
|
|
|
86
89
|
*getOverridePreferenceNames(preferenceName: string): IterableIterator<string> {
|
|
87
|
-
for (const overrideIdentifier of this.overrideIdentifiers) {
|
|
90
|
+
for (const overrideIdentifier of this.preferenceSchemaService.overrideIdentifiers) {
|
|
88
91
|
yield this.overridePreferenceName({ preferenceName, overrideIdentifier });
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* @param overrideIdentifier
|
|
94
|
-
* @returns true if the addition caused a change, i.e. if the identifier was not already present in the set of identifiers, false otherwise.
|
|
95
|
-
*/
|
|
96
|
-
addOverrideIdentifier(overrideIdentifier: string): boolean {
|
|
97
|
-
const alreadyPresent = this.overrideIdentifiers.has(overrideIdentifier);
|
|
98
|
-
if (!alreadyPresent) {
|
|
99
|
-
this.overrideIdentifiers.add(overrideIdentifier);
|
|
100
|
-
}
|
|
101
|
-
return !alreadyPresent;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* @param overrideIdentifier
|
|
106
|
-
* @returns true if the deletion caused a change, i.e. if the identifier was present in the set, false otherwise.
|
|
107
|
-
*/
|
|
108
|
-
removeOverrideIdentifier(overrideIdentifier: string): boolean {
|
|
109
|
-
return this.overrideIdentifiers.delete(overrideIdentifier);
|
|
110
|
-
}
|
|
111
94
|
}
|
|
@@ -0,0 +1,165 @@
|
|
|
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 debounce = require('p-debounce');
|
|
18
|
+
import { injectable } from 'inversify';
|
|
19
|
+
import { JSONObject } from '@lumino/coreutils';
|
|
20
|
+
import URI from '../../common/uri';
|
|
21
|
+
import { DisposableCollection, Emitter, Event, isObject, PreferenceLanguageOverrideService } from '../../common';
|
|
22
|
+
import { Deferred } from '../../common/promise-util';
|
|
23
|
+
import { PreferenceScope } from './preference-scope';
|
|
24
|
+
import { PreferenceProvider, PreferenceProviderDataChange, PreferenceProviderDataChanges, PreferenceResolveResult } from './preference-provider';
|
|
25
|
+
|
|
26
|
+
export abstract class PreferenceProviderBase {
|
|
27
|
+
|
|
28
|
+
protected readonly onDidPreferencesChangedEmitter = new Emitter<PreferenceProviderDataChanges>();
|
|
29
|
+
readonly onDidPreferencesChanged: Event<PreferenceProviderDataChanges> = this.onDidPreferencesChangedEmitter.event;
|
|
30
|
+
|
|
31
|
+
protected readonly toDispose = new DisposableCollection();
|
|
32
|
+
|
|
33
|
+
protected deferredChanges: PreferenceProviderDataChanges | undefined;
|
|
34
|
+
|
|
35
|
+
constructor() {
|
|
36
|
+
this.toDispose.push(this.onDidPreferencesChangedEmitter);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Informs the listeners that one or more preferences of this provider are changed.
|
|
41
|
+
* The listeners are able to find what was changed from the emitted event.
|
|
42
|
+
*/
|
|
43
|
+
protected emitPreferencesChangedEvent(changes: PreferenceProviderDataChanges | PreferenceProviderDataChange[]): Promise<boolean> {
|
|
44
|
+
if (Array.isArray(changes)) {
|
|
45
|
+
for (const change of changes) {
|
|
46
|
+
this.mergePreferenceProviderDataChange(change);
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
for (const preferenceName of Object.keys(changes)) {
|
|
50
|
+
this.mergePreferenceProviderDataChange(changes[preferenceName]);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return this.fireDidPreferencesChanged();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
protected mergePreferenceProviderDataChange(change: PreferenceProviderDataChange): void {
|
|
57
|
+
if (!this.deferredChanges) {
|
|
58
|
+
this.deferredChanges = {};
|
|
59
|
+
}
|
|
60
|
+
const current = this.deferredChanges[change.preferenceName];
|
|
61
|
+
const { newValue, scope, domain } = change;
|
|
62
|
+
if (!current) {
|
|
63
|
+
// new
|
|
64
|
+
this.deferredChanges[change.preferenceName] = change;
|
|
65
|
+
} else if (current.oldValue === newValue) {
|
|
66
|
+
// delete
|
|
67
|
+
delete this.deferredChanges[change.preferenceName];
|
|
68
|
+
} else {
|
|
69
|
+
// update
|
|
70
|
+
Object.assign(current, { newValue, scope, domain });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
protected fireDidPreferencesChanged = debounce(() => {
|
|
75
|
+
const changes = this.deferredChanges;
|
|
76
|
+
this.deferredChanges = undefined;
|
|
77
|
+
if (changes && Object.keys(changes).length) {
|
|
78
|
+
this.onDidPreferencesChangedEmitter.fire(changes);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}, 0);
|
|
83
|
+
|
|
84
|
+
dispose(): void {
|
|
85
|
+
this.toDispose.dispose();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* The {@link PreferenceProvider} is used to store and retrieve preference values. A {@link PreferenceProvider} does not operate in a global scope but is
|
|
92
|
+
* configured for one or more {@link PreferenceScope}s. The (default implementation for the) {@link PreferenceService} aggregates all {@link PreferenceProvider}s and
|
|
93
|
+
* serves as a common facade for manipulating preference values.
|
|
94
|
+
*/
|
|
95
|
+
@injectable()
|
|
96
|
+
export abstract class PreferenceProviderImpl extends PreferenceProviderBase implements PreferenceProvider {
|
|
97
|
+
|
|
98
|
+
protected readonly _ready = new Deferred<void>();
|
|
99
|
+
|
|
100
|
+
constructor() {
|
|
101
|
+
super();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
get<T>(preferenceName: string, resourceUri?: string): T | undefined {
|
|
105
|
+
return this.resolve<T>(preferenceName, resourceUri).value;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
resolve<T>(preferenceName: string, resourceUri?: string): PreferenceResolveResult<T> {
|
|
109
|
+
const value = this.getPreferences(resourceUri)[preferenceName];
|
|
110
|
+
if (value !== undefined) {
|
|
111
|
+
return {
|
|
112
|
+
value: value as T,
|
|
113
|
+
configUri: this.getConfigUri(resourceUri)
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
return {};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
abstract getPreferences(resourceUri?: string): JSONObject;
|
|
120
|
+
abstract setPreference(key: string, value: unknown, resourceUri?: string): Promise<boolean>;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Resolved when the preference provider is ready to provide preferences
|
|
124
|
+
* It should be resolved by subclasses.
|
|
125
|
+
*/
|
|
126
|
+
get ready(): Promise<void> {
|
|
127
|
+
return this._ready.promise;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Retrieve the domain for this provider.
|
|
132
|
+
*
|
|
133
|
+
* @returns the domain or `undefined` if this provider is suitable for all domains.
|
|
134
|
+
*/
|
|
135
|
+
getDomain(): string[] | undefined {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
getConfigUri(resourceUri?: string, sectionName?: string): URI | undefined {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
getContainingConfigUri?(resourceUri?: string, sectionName?: string): URI | undefined;
|
|
144
|
+
|
|
145
|
+
protected getParsedContent(jsonData: unknown): { [key: string]: unknown } {
|
|
146
|
+
const preferences: { [key: string]: unknown } = {};
|
|
147
|
+
if (!isObject(jsonData)) {
|
|
148
|
+
return preferences;
|
|
149
|
+
}
|
|
150
|
+
for (const [preferenceName, preferenceValue] of Object.entries(jsonData)) {
|
|
151
|
+
if (PreferenceLanguageOverrideService.testOverrideValue(preferenceName, preferenceValue)) {
|
|
152
|
+
for (const [overriddenPreferenceName, overriddenValue] of Object.entries(preferenceValue)) {
|
|
153
|
+
preferences[`${preferenceName}.${overriddenPreferenceName}`] = overriddenValue;
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
preferences[preferenceName] = preferenceValue;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return preferences;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
canHandleScope(scope: PreferenceScope): boolean {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -14,20 +14,21 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { PreferenceUtils } from './preference-provider';
|
|
18
|
+
|
|
18
19
|
const { expect } = require('chai');
|
|
19
20
|
|
|
20
|
-
describe('
|
|
21
|
+
describe('PreferenceProviderImpl', () => {
|
|
21
22
|
it('should preserve extra source fields on merge', () => {
|
|
22
|
-
const result =
|
|
23
|
+
const result = PreferenceUtils.merge({ 'configurations': [], 'compounds': [] }, { 'configurations': [] });
|
|
23
24
|
expect(result).deep.equals({ 'configurations': [], 'compounds': [] });
|
|
24
25
|
});
|
|
25
26
|
it('should preserve extra target fields on merge', () => {
|
|
26
|
-
const result =
|
|
27
|
+
const result = PreferenceUtils.merge({ 'configurations': [] }, { 'configurations': [], 'compounds': [] });
|
|
27
28
|
expect(result).deep.equals({ 'configurations': [], 'compounds': [] });
|
|
28
29
|
});
|
|
29
30
|
it('should merge array values', () => {
|
|
30
|
-
const result =
|
|
31
|
+
const result = PreferenceUtils.merge(
|
|
31
32
|
{ 'configurations': [{ 'name': 'test1', 'request': 'launch' }], 'compounds': [] },
|
|
32
33
|
{ 'configurations': [{ 'name': 'test2' }] }
|
|
33
34
|
);
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 TypeFox 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 { JSONExt, JSONObject, JSONValue } from '@lumino/coreutils';
|
|
18
|
+
import { Event } from '../event';
|
|
19
|
+
import { PreferenceScope } from '../preferences/preference-scope';
|
|
20
|
+
import { URI } from '../uri';
|
|
21
|
+
import { Disposable } from 'vscode-languageserver-protocol';
|
|
22
|
+
|
|
23
|
+
export interface PreferenceProviderDataChange {
|
|
24
|
+
/**
|
|
25
|
+
* The name of the changed preference.
|
|
26
|
+
*/
|
|
27
|
+
readonly preferenceName: string;
|
|
28
|
+
/**
|
|
29
|
+
* The new value of the changed preference.
|
|
30
|
+
*/
|
|
31
|
+
readonly newValue?: JSONValue;
|
|
32
|
+
/**
|
|
33
|
+
* The old value of the changed preference.
|
|
34
|
+
*/
|
|
35
|
+
readonly oldValue?: JSONValue;
|
|
36
|
+
/**
|
|
37
|
+
* The {@link PreferenceScope} of the changed preference.
|
|
38
|
+
*/
|
|
39
|
+
readonly scope: PreferenceScope;
|
|
40
|
+
/**
|
|
41
|
+
* URIs of the scopes in which this change applies.
|
|
42
|
+
*/
|
|
43
|
+
readonly domain?: string[];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export namespace PreferenceProviderDataChange {
|
|
47
|
+
export function affects(change: PreferenceProviderDataChange, resourceUri?: string): boolean {
|
|
48
|
+
const resourcePath = resourceUri && new URI(resourceUri).path;
|
|
49
|
+
const domain = change.domain;
|
|
50
|
+
return !resourcePath || !domain || domain.some(uri => new URI(uri).path.relativity(resourcePath) >= 0);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface PreferenceResolveResult<T> {
|
|
55
|
+
configUri?: URI;
|
|
56
|
+
value?: T
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface PreferenceProviderDataChanges {
|
|
60
|
+
[preferenceName: string]: PreferenceProviderDataChange;
|
|
61
|
+
}
|
|
62
|
+
export const PreferenceProvider = Symbol('PreferenceProvider');
|
|
63
|
+
|
|
64
|
+
export interface PreferenceProvider extends Disposable {
|
|
65
|
+
readonly onDidPreferencesChanged: Event<PreferenceProviderDataChanges>;
|
|
66
|
+
ready: Promise<void>
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Whether t
|
|
70
|
+
* @param scope the scope to handle
|
|
71
|
+
*/
|
|
72
|
+
canHandleScope(scope: PreferenceScope): boolean;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Retrieve the stored value for the given preference and resource URI.
|
|
76
|
+
*
|
|
77
|
+
* @param preferenceName the preference identifier.
|
|
78
|
+
* @param resourceUri the uri of the resource for which the preference is stored. This is used to retrieve
|
|
79
|
+
* a potentially different value for the same preference for different resources, for example `files.encoding`.
|
|
80
|
+
*
|
|
81
|
+
* @returns the value stored for the given preference and resourceUri if it exists, otherwise `undefined`.
|
|
82
|
+
*/
|
|
83
|
+
get<T>(preferenceName: string, resourceUri?: string): T | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Stores a new value for the given preference key in the provider.
|
|
86
|
+
* @param key the preference key (typically the name).
|
|
87
|
+
* @param value the new preference value.
|
|
88
|
+
* @param resourceUri the URI of the resource for which the preference is stored.
|
|
89
|
+
*
|
|
90
|
+
* @returns a promise that only resolves if all changes were delivered.
|
|
91
|
+
* If changes were made then implementation must either
|
|
92
|
+
* await on `this.emitPreferencesChangedEvent(...)` or
|
|
93
|
+
* `this.pendingChanges` if changes are fired indirectly.
|
|
94
|
+
*/
|
|
95
|
+
setPreference(key: string, value: JSONValue, resourceUri?: string): Promise<boolean>
|
|
96
|
+
/**
|
|
97
|
+
* Resolve the value for the given preference and resource URI.
|
|
98
|
+
*
|
|
99
|
+
* @param preferenceName the preference identifier.
|
|
100
|
+
* @param resourceUri the URI of the resource for which this provider should resolve the preference. This is used to retrieve
|
|
101
|
+
* a potentially different value for the same preference for different resources, for example `files.encoding`.
|
|
102
|
+
*
|
|
103
|
+
* @returns an object containing the value stored for the given preference and resourceUri if it exists,
|
|
104
|
+
* otherwise `undefined`.
|
|
105
|
+
*/
|
|
106
|
+
resolve<T>(preferenceName: string, resourceUri?: string): PreferenceResolveResult<T>;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Retrieve the configuration URI for the given resource URI.
|
|
110
|
+
* @param resourceUri the uri of the resource or `undefined`.
|
|
111
|
+
* @param sectionName the section to return the URI for, e.g. `tasks` or `launch`. Defaults to settings.
|
|
112
|
+
*
|
|
113
|
+
* @returns the corresponding resource URI or `undefined` if there is no valid URI.
|
|
114
|
+
*/
|
|
115
|
+
getConfigUri?(resourceUri?: string, sectionName?: string): URI | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* Retrieves the first valid configuration URI contained by the given resource.
|
|
118
|
+
* @param resourceUri the uri of the container resource or `undefined`.
|
|
119
|
+
*
|
|
120
|
+
* @returns the first valid configuration URI contained by the given resource `undefined`
|
|
121
|
+
* if there is no valid configuration URI at all.
|
|
122
|
+
*/
|
|
123
|
+
getContainingConfigUri?(resourceUri?: string, sectionName?: string): URI | undefined;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Return a JSONObject with all preferences stored in this preference provider
|
|
127
|
+
*/
|
|
128
|
+
getPreferences(resourceUri?: string): JSONObject;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export namespace PreferenceUtils {
|
|
132
|
+
export function merge(source: JSONValue | undefined, target: JSONValue): JSONValue {
|
|
133
|
+
if (source === undefined || !JSONExt.isObject(source)) {
|
|
134
|
+
return JSONExt.deepCopy(target);
|
|
135
|
+
}
|
|
136
|
+
if (JSONExt.isPrimitive(target)) {
|
|
137
|
+
return {};
|
|
138
|
+
}
|
|
139
|
+
for (const [key, value] of Object.entries(target)) {
|
|
140
|
+
if (key in source) {
|
|
141
|
+
const sourceValue = source[key];
|
|
142
|
+
if (JSONExt.isObject(sourceValue) && JSONExt.isObject(value)) {
|
|
143
|
+
merge(sourceValue, value);
|
|
144
|
+
continue;
|
|
145
|
+
} else if (JSONExt.isArray(sourceValue) && JSONExt.isArray(value)) {
|
|
146
|
+
source[key] = [...JSONExt.deepCopy(sourceValue), ...JSONExt.deepCopy(value)];
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
source[key] = JSONExt.deepCopy(value);
|
|
151
|
+
}
|
|
152
|
+
return source;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Handles deep equality with the possibility of `undefined`
|
|
157
|
+
*/
|
|
158
|
+
export function deepEqual(a: JSONValue | undefined, b: JSONValue | undefined): boolean {
|
|
159
|
+
if (a === b) { return true; }
|
|
160
|
+
if (a === undefined || b === undefined) { return false; }
|
|
161
|
+
return JSONExt.deepEqual(a, b);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
}
|
|
@@ -18,9 +18,10 @@
|
|
|
18
18
|
|
|
19
19
|
import { Disposable, Event, isObject, MaybePromise } from '../../common';
|
|
20
20
|
import { PreferenceService } from './preference-service';
|
|
21
|
-
import { PreferenceSchema } from './preference-contribution';
|
|
22
21
|
import { PreferenceScope } from './preference-scope';
|
|
23
|
-
import {
|
|
22
|
+
import { IJSONSchema } from '../../common/json-schema';
|
|
23
|
+
import { isThenable } from '../../common/promise-util';
|
|
24
|
+
import { OverridePreferenceName } from '../../common/preferences/preference-language-override-service';
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* It is worth explaining the type for `PreferenceChangeEvent`:
|
|
@@ -174,29 +175,29 @@ export interface PreferenceProxyOptions {
|
|
|
174
175
|
*
|
|
175
176
|
* @deprecated @since 1.23.0 use `PreferenceProxyFactory` instead.
|
|
176
177
|
*/
|
|
177
|
-
export function createPreferenceProxy<T>(preferences: PreferenceService, promisedSchema: MaybePromise<
|
|
178
|
+
export function createPreferenceProxy<T>(preferences: PreferenceService, promisedSchema: MaybePromise<IJSONSchema>, options?: PreferenceProxyOptions): PreferenceProxy<T> {
|
|
178
179
|
const opts = options || {};
|
|
179
180
|
const prefix = opts.prefix || '';
|
|
180
181
|
const style = opts.style || 'flat';
|
|
181
182
|
const isDeep = style === 'deep' || style === 'both';
|
|
182
183
|
const isFlat = style === 'both' || style === 'flat';
|
|
183
|
-
let schema:
|
|
184
|
-
if (
|
|
185
|
-
schema = promisedSchema;
|
|
184
|
+
let schema: IJSONSchema | undefined;
|
|
185
|
+
if (!isThenable(promisedSchema)) {
|
|
186
|
+
schema = promisedSchema as IJSONSchema;
|
|
186
187
|
} else {
|
|
187
|
-
promisedSchema.then(s => schema = s);
|
|
188
|
+
promisedSchema.then((s: IJSONSchema) => schema = s);
|
|
188
189
|
}
|
|
189
190
|
const onPreferenceChanged = (listener: (e: PreferenceChangeEvent<T>) => any, thisArgs?: any, disposables?: Disposable[]) => preferences.onPreferencesChanged(changes => {
|
|
190
191
|
if (schema) {
|
|
191
192
|
for (const key of Object.keys(changes)) {
|
|
192
193
|
const e = changes[key];
|
|
193
194
|
const overridden = preferences.overriddenPreferenceName(e.preferenceName);
|
|
194
|
-
const preferenceName
|
|
195
|
+
const preferenceName = overridden ? overridden.preferenceName : e.preferenceName;
|
|
195
196
|
if (preferenceName.startsWith(prefix) && (!opts.overrideIdentifier || overridden?.overrideIdentifier === opts.overrideIdentifier)) {
|
|
196
|
-
if (schema.properties[preferenceName]) {
|
|
197
|
+
if (schema.properties && schema.properties[preferenceName]) {
|
|
197
198
|
const { newValue, oldValue } = e;
|
|
198
199
|
listener({
|
|
199
|
-
newValue, oldValue, preferenceName,
|
|
200
|
+
newValue: newValue as T[keyof T], oldValue: oldValue as T[keyof T], preferenceName: preferenceName as keyof T,
|
|
200
201
|
affects: (resourceUri, overrideIdentifier) => {
|
|
201
202
|
if (overrideIdentifier !== overridden?.overrideIdentifier) {
|
|
202
203
|
return false;
|
|
@@ -223,7 +224,7 @@ export function createPreferenceProxy<T>(preferences: PreferenceService, promise
|
|
|
223
224
|
|
|
224
225
|
const ownKeys: () => string[] = () => {
|
|
225
226
|
const properties = [];
|
|
226
|
-
if (schema) {
|
|
227
|
+
if (schema && schema.properties) {
|
|
227
228
|
for (const p of Object.keys(schema.properties)) {
|
|
228
229
|
if (p.startsWith(prefix)) {
|
|
229
230
|
const idx = p.indexOf('.', prefix.length);
|
|
@@ -250,7 +251,7 @@ export function createPreferenceProxy<T>(preferences: PreferenceService, promise
|
|
|
250
251
|
if (style === 'deep' && property.indexOf('.') !== -1) {
|
|
251
252
|
return false;
|
|
252
253
|
}
|
|
253
|
-
if (schema) {
|
|
254
|
+
if (schema && schema.properties) {
|
|
254
255
|
const fullProperty = prefix ? prefix + property : property;
|
|
255
256
|
if (schema.properties[fullProperty]) {
|
|
256
257
|
preferences.set(fullProperty, value, PreferenceScope.Default);
|
|
@@ -279,7 +280,7 @@ export function createPreferenceProxy<T>(preferences: PreferenceService, promise
|
|
|
279
280
|
throw new Error(`unexpected property: ${String(property)}`);
|
|
280
281
|
}
|
|
281
282
|
const fullProperty = prefix ? prefix + property : property;
|
|
282
|
-
if (schema) {
|
|
283
|
+
if (schema && schema.properties) {
|
|
283
284
|
if (isFlat || property.indexOf('.') === -1) {
|
|
284
285
|
if (schema.properties[fullProperty]) {
|
|
285
286
|
let value;
|
|
@@ -311,7 +312,7 @@ export function createPreferenceProxy<T>(preferences: PreferenceService, promise
|
|
|
311
312
|
if (property === 'toJSON') {
|
|
312
313
|
return toJSON();
|
|
313
314
|
}
|
|
314
|
-
if (schema && isDeep) {
|
|
315
|
+
if (schema && schema.properties && isDeep) {
|
|
315
316
|
const newPrefix = fullProperty + '.';
|
|
316
317
|
for (const p of Object.keys(schema.properties)) {
|
|
317
318
|
if (p.startsWith(newPrefix)) {
|