@theia/core 1.65.0-next.19 → 1.65.0-next.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
- package/lib/browser/catalog.json +13 -4
- package/lib/browser/common-frontend-contribution.d.ts +2 -3
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +3 -4
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/encoding-registry.d.ts +1 -1
- package/lib/browser/encoding-registry.d.ts.map +1 -1
- package/lib/browser/encoding-registry.js +1 -1
- package/lib/browser/encoding-registry.js.map +1 -1
- package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
- package/lib/browser/frontend-application-bindings.js +10 -17
- package/lib/browser/frontend-application-bindings.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +4 -5
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application.d.ts +1 -1
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +1 -1
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/hover-service.d.ts +1 -2
- package/lib/browser/hover-service.d.ts.map +1 -1
- package/lib/browser/hover-service.js +1 -2
- package/lib/browser/hover-service.js.map +1 -1
- package/lib/browser/icon-theme-service.d.ts +3 -2
- package/lib/browser/icon-theme-service.d.ts.map +1 -1
- package/lib/browser/icon-theme-service.js +4 -3
- package/lib/browser/icon-theme-service.js.map +1 -1
- package/lib/browser/index.d.ts +0 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/keybinding.d.ts +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +1 -1
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +1 -1
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts +2 -2
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +2 -3
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +1 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +3 -3
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +1 -2
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +6 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js +60 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -0
- package/lib/browser/preferences/index.d.ts +0 -5
- package/lib/browser/preferences/index.d.ts.map +1 -1
- package/lib/browser/preferences/index.js +0 -5
- package/lib/browser/preferences/index.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +0 -96
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +14 -355
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +25 -17
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +21 -34
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +57 -80
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +24 -26
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-validation-service.js +40 -20
- package/lib/browser/preferences/preference-validation-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js +10 -6
- package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.d.ts +2 -3
- package/lib/browser/preferences/test/mock-preference-provider.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.js +5 -7
- package/lib/browser/preferences/test/mock-preference-provider.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.d.ts +1 -4
- package/lib/browser/preferences/test/mock-preference-service.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +1 -1
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/request/browser-request-service.d.ts +1 -1
- package/lib/browser/request/browser-request-service.d.ts.map +1 -1
- package/lib/browser/request/browser-request-service.js +2 -2
- package/lib/browser/request/browser-request-service.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +1 -1
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +1 -1
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +1 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts +1 -1
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js +1 -1
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/theming.d.ts +5 -4
- package/lib/browser/theming.d.ts.map +1 -1
- package/lib/browser/theming.js +7 -6
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tooltip-service.d.ts +1 -1
- package/lib/browser/tooltip-service.d.ts.map +1 -1
- package/lib/browser/tooltip-service.js +1 -1
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/index.d.ts +0 -1
- package/lib/browser/tree/index.d.ts.map +1 -1
- package/lib/browser/tree/index.js +0 -1
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +2 -2
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +3 -3
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.d.ts +1 -2
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +1 -2
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.d.ts +1 -1
- package/lib/browser/window/default-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-window-service.js +1 -1
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.spec.js +1 -1
- package/lib/browser/window/default-window-service.spec.js.map +1 -1
- package/lib/browser/window/window-title-service.d.ts +1 -1
- package/lib/browser/window/window-title-service.d.ts.map +1 -1
- package/lib/browser/window/window-title-service.js +1 -1
- package/lib/browser/window/window-title-service.js.map +1 -1
- package/lib/{browser → common}/core-preferences.d.ts +2 -1
- package/lib/common/core-preferences.d.ts.map +1 -0
- package/lib/{browser → common}/core-preferences.js +17 -18
- package/lib/common/core-preferences.js.map +1 -0
- package/lib/common/index.d.ts +4 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +4 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/inversify-utils.d.ts +31 -0
- package/lib/common/inversify-utils.d.ts.map +1 -0
- package/lib/common/inversify-utils.js +60 -0
- package/lib/common/inversify-utils.js.map +1 -0
- package/lib/common/json-schema.d.ts +1 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/preferences/defaults-preference-provider.d.ts +21 -0
- package/lib/common/preferences/defaults-preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/defaults-preference-provider.js +99 -0
- package/lib/common/preferences/defaults-preference-provider.js.map +1 -0
- package/lib/common/preferences/index.d.ts +12 -0
- package/lib/common/preferences/index.d.ts.map +1 -0
- package/lib/common/preferences/index.js +30 -0
- package/lib/common/preferences/index.js.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.d.ts +1 -1
- package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.js +2 -2
- package/lib/common/preferences/injectable-preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-configurations.d.ts.map +1 -0
- package/lib/common/preferences/preference-configurations.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.d.ts +4 -13
- package/lib/common/preferences/preference-language-override-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.js +14 -30
- package/lib/common/preferences/preference-language-override-service.js.map +1 -0
- package/lib/common/preferences/preference-provider-impl.d.ts +52 -0
- package/lib/common/preferences/preference-provider-impl.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-provider.js → common/preferences/preference-provider-impl.js} +23 -95
- package/lib/common/preferences/preference-provider-impl.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.d.ts +34 -59
- package/lib/common/preferences/preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/preference-provider.js +71 -0
- package/lib/common/preferences/preference-provider.js.map +1 -0
- package/lib/common/preferences/preference-provider.spec.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.spec.js +4 -4
- package/lib/common/preferences/preference-provider.spec.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.d.ts +2 -2
- package/lib/common/preferences/preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.js +10 -10
- package/lib/common/preferences/preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-schema-service.d.ts +55 -0
- package/lib/common/preferences/preference-schema-service.d.ts.map +1 -0
- package/lib/common/preferences/preference-schema-service.js +402 -0
- package/lib/common/preferences/preference-schema-service.js.map +1 -0
- package/lib/common/preferences/preference-schema.d.ts +145 -43
- package/lib/common/preferences/preference-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.js +3 -41
- package/lib/common/preferences/preference-schema.js.map +1 -1
- package/lib/common/preferences/preference-scope.d.ts +4 -1
- package/lib/common/preferences/preference-scope.d.ts.map +1 -1
- package/lib/common/preferences/preference-scope.js +5 -14
- package/lib/common/preferences/preference-scope.js.map +1 -1
- package/lib/{browser → common}/preferences/preference-service.d.ts +9 -10
- package/lib/common/preferences/preference-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-service.js +65 -60
- package/lib/common/preferences/preference-service.js.map +1 -0
- package/lib/common/supported-encodings.d.ts.map +1 -0
- package/lib/common/supported-encodings.js.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.d.ts +1 -1
- package/lib/common/tree-preference.d.ts.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.js +3 -5
- package/lib/common/tree-preference.js.map +1 -0
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -2
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -2
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +6 -6
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +1 -1
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +1 -1
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.d.ts +2 -1
- package/lib/electron-common/electron-window-preferences.d.ts.map +1 -0
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.js +7 -7
- package/lib/electron-common/electron-window-preferences.js.map +1 -0
- package/lib/electron-node/window/electron-window-module.d.ts +4 -0
- package/lib/electron-node/window/electron-window-module.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-scope.js → electron-node/window/electron-window-module.js} +7 -5
- package/lib/electron-node/window/electron-window-module.js.map +1 -0
- package/lib/node/backend-application-module.d.ts.map +1 -1
- package/lib/node/backend-application-module.js +13 -0
- package/lib/node/backend-application-module.js.map +1 -1
- package/package.json +6 -5
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +1 -1
- package/src/browser/common-frontend-contribution.ts +2 -3
- package/src/browser/encoding-registry.ts +1 -1
- package/src/browser/frontend-application-bindings.ts +8 -13
- package/src/browser/frontend-application-module.ts +4 -4
- package/src/browser/frontend-application.ts +1 -1
- package/src/browser/hover-service.ts +1 -2
- package/src/browser/icon-theme-service.ts +3 -2
- package/src/browser/index.ts +0 -1
- package/src/browser/keybinding.spec.ts +1 -1
- package/src/browser/keybinding.ts +1 -1
- package/src/browser/menu/browser-menu-plugin.ts +4 -4
- package/src/browser/open-with-service.ts +1 -1
- package/src/browser/opener-service.ts +1 -2
- package/src/browser/preferences/frontend-config-preference-contributions.ts +52 -0
- package/src/browser/preferences/index.ts +0 -5
- package/src/browser/preferences/preference-contribution.ts +16 -398
- package/src/browser/preferences/preference-proxy.spec.ts +27 -17
- package/src/browser/preferences/preference-schema-provider.spec.ts +25 -37
- package/src/browser/preferences/preference-service.spec.ts +32 -56
- package/src/browser/preferences/preference-validation-service.spec.ts +27 -19
- package/src/browser/preferences/preference-validation-service.ts +60 -41
- package/src/browser/preferences/test/mock-preference-provider.ts +2 -5
- package/src/browser/preferences/test/mock-preference-proxy.ts +1 -2
- package/src/browser/preferences/test/mock-preference-service.ts +1 -4
- package/src/browser/quick-input/quick-command-service.ts +1 -1
- package/src/browser/request/browser-request-service.ts +4 -4
- package/src/browser/shell/application-shell.ts +1 -1
- package/src/browser/shell/tab-bars.ts +1 -1
- package/src/browser/shell/theia-dock-panel.ts +1 -1
- package/src/browser/status-bar/status-bar.tsx +1 -1
- package/src/browser/theming.ts +7 -6
- package/src/browser/tooltip-service.tsx +1 -1
- package/src/browser/tree/index.ts +0 -1
- package/src/browser/tree/tree-widget.tsx +4 -4
- package/src/browser/window/default-secondary-window-service.ts +1 -2
- package/src/browser/window/default-window-service.spec.ts +1 -1
- package/src/browser/window/default-window-service.ts +1 -1
- package/src/browser/window/window-title-service.ts +1 -1
- package/src/{browser → common}/core-preferences.ts +16 -17
- package/src/common/index.ts +4 -0
- package/src/common/inversify-utils.ts +63 -0
- package/src/common/json-schema.ts +1 -0
- package/src/common/preferences/defaults-preference-provider.ts +91 -0
- package/src/common/preferences/index.ts +27 -0
- package/src/{browser → common}/preferences/injectable-preference-proxy.ts +3 -3
- package/src/{browser → common}/preferences/preference-language-override-service.ts +12 -29
- package/src/common/preferences/preference-provider-impl.ts +165 -0
- package/src/{browser → common}/preferences/preference-provider.spec.ts +6 -5
- package/src/common/preferences/preference-provider.ts +164 -0
- package/src/{browser → common}/preferences/preference-proxy.ts +15 -14
- package/src/common/preferences/preference-schema-service.ts +434 -0
- package/src/common/preferences/preference-schema.ts +156 -64
- package/src/common/preferences/preference-scope.ts +5 -13
- package/src/{browser → common}/preferences/preference-service.ts +71 -65
- package/src/{browser/tree → common}/tree-preference.ts +2 -4
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -1
- package/src/electron-browser/menu/electron-main-menu-factory.ts +2 -2
- package/src/electron-browser/menu/electron-menu-contribution.ts +9 -6
- package/src/electron-browser/window/electron-window-module.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +1 -1
- package/src/{electron-browser/window → electron-common}/electron-window-preferences.ts +6 -6
- package/src/{browser/preferences/preference-scope.ts → electron-node/window/electron-window-module.ts} +7 -3
- package/src/node/backend-application-module.ts +28 -1
- package/lib/browser/core-preferences.d.ts.map +0 -1
- package/lib/browser/core-preferences.js.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-configurations.d.ts.map +0 -1
- package/lib/browser/preferences/preference-configurations.js.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.js.map +0 -1
- package/lib/browser/preferences/preference-provider.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.js.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.js.map +0 -1
- package/lib/browser/preferences/preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-scope.d.ts +0 -3
- package/lib/browser/preferences/preference-scope.d.ts.map +0 -1
- package/lib/browser/preferences/preference-scope.js.map +0 -1
- package/lib/browser/preferences/preference-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-service.js.map +0 -1
- package/lib/browser/supported-encodings.d.ts.map +0 -1
- package/lib/browser/supported-encodings.js.map +0 -1
- package/lib/browser/tree/tree-preference.d.ts.map +0 -1
- package/lib/browser/tree/tree-preference.js.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.d.ts.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.js.map +0 -1
- package/src/browser/preferences/preference-provider.ts +0 -277
- /package/lib/{browser → common}/preferences/preference-configurations.d.ts +0 -0
- /package/lib/{browser → common}/preferences/preference-configurations.js +0 -0
- /package/lib/{browser → common}/preferences/preference-provider.spec.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.js +0 -0
- /package/src/{browser → common}/preferences/preference-configurations.ts +0 -0
- /package/src/{browser → common}/supported-encodings.ts +0 -0
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.PreferenceSchemaServiceImpl = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const inversify_1 = require("inversify");
|
|
21
|
+
const disposable_1 = require("../disposable");
|
|
22
|
+
const event_1 = require("../event");
|
|
23
|
+
const preference_schema_1 = require("./preference-schema");
|
|
24
|
+
const preference_scope_1 = require("./preference-scope");
|
|
25
|
+
const preference_provider_1 = require("./preference-provider");
|
|
26
|
+
const contribution_provider_1 = require("../contribution-provider");
|
|
27
|
+
const promise_util_1 = require("../promise-util");
|
|
28
|
+
const NO_OVERRIDE = {};
|
|
29
|
+
const OVERRIDE_PROPERTY = '\\[(.*)\\]$';
|
|
30
|
+
let PreferenceSchemaServiceImpl = class PreferenceSchemaServiceImpl {
|
|
31
|
+
constructor() {
|
|
32
|
+
// Storage structures
|
|
33
|
+
this.schemas = new Set();
|
|
34
|
+
this.properties = new Map();
|
|
35
|
+
/**
|
|
36
|
+
* This map stores default overrides. The primary map key is the base preference name.
|
|
37
|
+
* The preference name maps to a second map keyed by the override identifier or a special object value `NO_OVERRIDE',
|
|
38
|
+
* representing default overrides for the base property. The value in this second map is an array
|
|
39
|
+
* of entries in reverse order of their insertion. This is necessary becuaus multiple clients might register
|
|
40
|
+
* overrides for the same preference key/override combination. The elements in this array consist of a unique, generated
|
|
41
|
+
* identifier and the actual override value. This allows us to always return the last registerd override even
|
|
42
|
+
* when overrides are later removed.
|
|
43
|
+
*/
|
|
44
|
+
this.defaultOverrides = new Map();
|
|
45
|
+
this._overrideIdentifiers = new Set();
|
|
46
|
+
this.jsonSchemas = [];
|
|
47
|
+
this._ready = new promise_util_1.Deferred();
|
|
48
|
+
this.nextSchemaTitle = 1;
|
|
49
|
+
this.nextOverrideValueId = 1;
|
|
50
|
+
// Event emitters
|
|
51
|
+
this.defaultValueChangedEmitter = new event_1.Emitter();
|
|
52
|
+
this.schemaChangedEmitter = new event_1.Emitter();
|
|
53
|
+
// Public events
|
|
54
|
+
this.onDidChangeDefaultValue = this.defaultValueChangedEmitter.event;
|
|
55
|
+
this.onDidChangeSchema = this.schemaChangedEmitter.event;
|
|
56
|
+
}
|
|
57
|
+
get ready() {
|
|
58
|
+
return this._ready.promise;
|
|
59
|
+
}
|
|
60
|
+
get overrideIdentifiers() {
|
|
61
|
+
return this._overrideIdentifiers;
|
|
62
|
+
}
|
|
63
|
+
getSchemaProperties() {
|
|
64
|
+
return this.properties;
|
|
65
|
+
}
|
|
66
|
+
init() {
|
|
67
|
+
for (const scope of this.validScopes) {
|
|
68
|
+
this.jsonSchemas[scope] = {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {},
|
|
71
|
+
patternProperties: {},
|
|
72
|
+
additionalProperties: false
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const promises = [];
|
|
76
|
+
this.preferenceContributions.getContributions().forEach(contrib => {
|
|
77
|
+
if (contrib.schema) {
|
|
78
|
+
this.addSchema(contrib.schema);
|
|
79
|
+
}
|
|
80
|
+
if (contrib.initSchema) {
|
|
81
|
+
promises.push(contrib.initSchema(this));
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
Promise.all(promises).then(() => this._ready.resolve());
|
|
85
|
+
}
|
|
86
|
+
dispose() {
|
|
87
|
+
this.defaultValueChangedEmitter.dispose();
|
|
88
|
+
this.schemaChangedEmitter.dispose();
|
|
89
|
+
}
|
|
90
|
+
registerOverrideIdentifier(overrideIdentifier) {
|
|
91
|
+
if (!this._overrideIdentifiers.has(overrideIdentifier)) {
|
|
92
|
+
this.addOverrideToJsonSchema(overrideIdentifier);
|
|
93
|
+
this._overrideIdentifiers.add(overrideIdentifier);
|
|
94
|
+
this.schemaChangedEmitter.fire();
|
|
95
|
+
return disposable_1.Disposable.create(() => {
|
|
96
|
+
if (this._overrideIdentifiers.delete(overrideIdentifier)) {
|
|
97
|
+
this.schemaChangedEmitter.fire();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return disposable_1.Disposable.NULL;
|
|
102
|
+
}
|
|
103
|
+
addSchema(schema) {
|
|
104
|
+
this.schemas.add(schema);
|
|
105
|
+
for (const [key, property] of Object.entries(schema.properties)) {
|
|
106
|
+
if (this.properties.has(key)) {
|
|
107
|
+
throw new Error(`Property with id '${key}' already exists`);
|
|
108
|
+
}
|
|
109
|
+
if (property.scope === undefined) {
|
|
110
|
+
property.scope = schema.scope;
|
|
111
|
+
}
|
|
112
|
+
if (property.overridable === undefined) {
|
|
113
|
+
property.overridable = schema.defaultOverridable;
|
|
114
|
+
}
|
|
115
|
+
this.properties.set(key, property);
|
|
116
|
+
this.setJSONSchemasProperty(key, property);
|
|
117
|
+
if (property.default !== undefined) {
|
|
118
|
+
this.defaultValueChangedEmitter.fire(this.changeFor(key, undefined, this.defaultOverrides.get(key), undefined, property.default));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
this.schemaChangedEmitter.fire();
|
|
122
|
+
return disposable_1.Disposable.create(() => {
|
|
123
|
+
if (this.schemas.delete(schema)) {
|
|
124
|
+
for (const [key, property] of Object.entries(schema.properties)) {
|
|
125
|
+
this.deleteFromJSONSchemas(key, property);
|
|
126
|
+
this.properties.delete(key);
|
|
127
|
+
const overrides = this.defaultOverrides.get(key);
|
|
128
|
+
const baseOverride = overrides === null || overrides === void 0 ? void 0 : overrides.get(NO_OVERRIDE);
|
|
129
|
+
if (baseOverride !== undefined) {
|
|
130
|
+
this.defaultValueChangedEmitter.fire(this.changeFor(key, undefined, overrides, baseOverride, undefined));
|
|
131
|
+
}
|
|
132
|
+
else if (property.default !== undefined) {
|
|
133
|
+
this.defaultValueChangedEmitter.fire(this.changeFor(key, undefined, overrides, property.default, undefined));
|
|
134
|
+
}
|
|
135
|
+
if (overrides) {
|
|
136
|
+
for (const [overrideKey, value] of overrides) {
|
|
137
|
+
if (typeof overrideKey === 'string') {
|
|
138
|
+
this.defaultValueChangedEmitter.fire(this.changeFor(key, overrideKey, overrides, value[0][1], undefined));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
this.schemaChangedEmitter.fire();
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
isValidInScope(preferenceName, scope) {
|
|
148
|
+
const property = this.properties.get(preferenceName);
|
|
149
|
+
if (!property) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
// A property is valid in a scope if:
|
|
153
|
+
// 1. It is included (undefined or true)
|
|
154
|
+
// 2. Its scope is not defined (valid in all scopes) or its scope includes the given scope
|
|
155
|
+
return (property.included !== false) &&
|
|
156
|
+
(property.scope === undefined || property.scope >= scope);
|
|
157
|
+
}
|
|
158
|
+
getSchemaProperty(key) {
|
|
159
|
+
return this.properties.get(key);
|
|
160
|
+
}
|
|
161
|
+
updateSchemaProperty(key, property) {
|
|
162
|
+
var _a;
|
|
163
|
+
const existing = this.properties.get(key);
|
|
164
|
+
if (existing) {
|
|
165
|
+
// Update the property with new values
|
|
166
|
+
const updatedProperty = { ...existing, ...property };
|
|
167
|
+
this.properties.set(key, updatedProperty);
|
|
168
|
+
const hasNoBaseOverrideValue = ((_a = this.defaultOverrides.get(key)) === null || _a === void 0 ? void 0 : _a.get(NO_OVERRIDE)) === undefined;
|
|
169
|
+
if (hasNoBaseOverrideValue && !preference_provider_1.PreferenceUtils.deepEqual(property.default, existing.default)) {
|
|
170
|
+
this.defaultValueChangedEmitter.fire(this.changeFor(key, undefined, this.defaultOverrides.get(key), undefined, property.default));
|
|
171
|
+
}
|
|
172
|
+
this.setJSONSchemasProperty(key, updatedProperty);
|
|
173
|
+
this.schemaChangedEmitter.fire();
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
console.warn(`Trying to update non-existent property ${key}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
registerOverride(key, overrideIdentifier, value) {
|
|
180
|
+
const overrideId = overrideIdentifier || NO_OVERRIDE;
|
|
181
|
+
const property = this.properties.get(key);
|
|
182
|
+
if (!property) {
|
|
183
|
+
console.warn(`Trying to register default override for non-existent preference: ${key}`);
|
|
184
|
+
}
|
|
185
|
+
else if (!property.overridable && overrideIdentifier) {
|
|
186
|
+
console.warn(`Trying to register default override for identifier ${overrideIdentifier} for non-overridable preference: ${key}`);
|
|
187
|
+
}
|
|
188
|
+
let overrides = this.defaultOverrides.get(key);
|
|
189
|
+
if (!overrides) {
|
|
190
|
+
overrides = new Map();
|
|
191
|
+
this.defaultOverrides.set(key, overrides);
|
|
192
|
+
}
|
|
193
|
+
const oldValue = this.getDefaultValue(key, overrideIdentifier);
|
|
194
|
+
const overrideValueId = this.nextOverrideValueId;
|
|
195
|
+
let override = overrides.get(overrideId);
|
|
196
|
+
if (!override) {
|
|
197
|
+
override = [];
|
|
198
|
+
overrides.set(overrideId, override);
|
|
199
|
+
}
|
|
200
|
+
override.unshift([overrideValueId, value]);
|
|
201
|
+
// Fire event only if the value actually changed
|
|
202
|
+
if (!preference_provider_1.PreferenceUtils.deepEqual(oldValue, value)) {
|
|
203
|
+
const evt = this.changeFor(key, overrideIdentifier, overrides, oldValue, value);
|
|
204
|
+
this.defaultValueChangedEmitter.fire(evt);
|
|
205
|
+
}
|
|
206
|
+
if (property) {
|
|
207
|
+
this.setJSONSchemasProperty(key, property);
|
|
208
|
+
}
|
|
209
|
+
return disposable_1.Disposable.create(() => {
|
|
210
|
+
this.removeOverride(key, overrideIdentifier, overrideValueId);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
changeFor(key, overrideIdentifier, overrides, oldValue, newValue) {
|
|
214
|
+
const affectedOverrides = [];
|
|
215
|
+
if (!overrideIdentifier) {
|
|
216
|
+
for (const id of this._overrideIdentifiers) {
|
|
217
|
+
if (!(overrides === null || overrides === void 0 ? void 0 : overrides.has(id))) {
|
|
218
|
+
affectedOverrides.push(id);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
key,
|
|
224
|
+
overrideIdentifier: overrideIdentifier,
|
|
225
|
+
otherAffectedOverrides: affectedOverrides,
|
|
226
|
+
oldValue,
|
|
227
|
+
newValue
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
removeOverride(key, overrideIdentifier, overrideValueId) {
|
|
231
|
+
const overrideId = overrideIdentifier || NO_OVERRIDE;
|
|
232
|
+
const overrides = this.defaultOverrides.get(key);
|
|
233
|
+
if (overrides) {
|
|
234
|
+
const values = overrides.get(overrideId);
|
|
235
|
+
if (values) {
|
|
236
|
+
const index = values.findIndex(v => v[0] === overrideValueId);
|
|
237
|
+
if (index) {
|
|
238
|
+
const oldValue = this.getDefaultValue(key, overrideIdentifier);
|
|
239
|
+
values.splice(index, 1);
|
|
240
|
+
const newValue = this.getDefaultValue(key, overrideIdentifier);
|
|
241
|
+
if (!preference_provider_1.PreferenceUtils.deepEqual(oldValue, newValue)) {
|
|
242
|
+
const affectedOverrides = [];
|
|
243
|
+
if (!overrideIdentifier) {
|
|
244
|
+
for (const id of this._overrideIdentifiers) {
|
|
245
|
+
if (!overrides.has(id)) {
|
|
246
|
+
affectedOverrides.push(id);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
this.defaultValueChangedEmitter.fire({
|
|
251
|
+
key,
|
|
252
|
+
overrideIdentifier,
|
|
253
|
+
otherAffectedOverrides: affectedOverrides,
|
|
254
|
+
oldValue,
|
|
255
|
+
newValue
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if (values.length === 0) {
|
|
260
|
+
overrides.delete(overrideId);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (overrides.size === 0) {
|
|
264
|
+
this.defaultOverrides.delete(key);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
getDefaultValue(key, overrideIdentifier) {
|
|
269
|
+
const overrideId = overrideIdentifier || NO_OVERRIDE;
|
|
270
|
+
const overrides = this.defaultOverrides.get(key);
|
|
271
|
+
if (overrides) {
|
|
272
|
+
const values = overrides.get(overrideId);
|
|
273
|
+
if (values) {
|
|
274
|
+
return values[0][1]; // there will be no empty values arrays in the data structure
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
const property = this.properties.get(key);
|
|
278
|
+
return property === null || property === void 0 ? void 0 : property.default;
|
|
279
|
+
}
|
|
280
|
+
inspectDefaultValue(key, overrideIdentifier) {
|
|
281
|
+
const overrideId = overrideIdentifier || NO_OVERRIDE;
|
|
282
|
+
const overrides = this.defaultOverrides.get(key);
|
|
283
|
+
if (overrides) {
|
|
284
|
+
const values = overrides.get(overrideId);
|
|
285
|
+
if (values) {
|
|
286
|
+
return values[0][1]; // there will be no empty values arrays in the data structure
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
if (!overrideIdentifier) {
|
|
290
|
+
const property = this.properties.get(key);
|
|
291
|
+
return property === null || property === void 0 ? void 0 : property.default;
|
|
292
|
+
}
|
|
293
|
+
return undefined;
|
|
294
|
+
}
|
|
295
|
+
getJSONSchema(scope) {
|
|
296
|
+
return this.jsonSchemas[scope];
|
|
297
|
+
}
|
|
298
|
+
setJSONSchemasProperty(key, property) {
|
|
299
|
+
for (const scope of this.validScopes) {
|
|
300
|
+
if (this.isValidInScope(key, scope)) {
|
|
301
|
+
this.setJSONSchemaProperty(this.jsonSchemas[scope], key, property);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
deleteFromJSONSchemas(key, property) {
|
|
306
|
+
for (const scope of this.validScopes) {
|
|
307
|
+
if (this.isValidInScope(key, scope)) {
|
|
308
|
+
const schema = this.jsonSchemas[scope];
|
|
309
|
+
for (const name of Object.keys(schema.properties)) {
|
|
310
|
+
if (name.match(OVERRIDE_PROPERTY)) {
|
|
311
|
+
const value = schema.properties[name];
|
|
312
|
+
delete value.properties[key];
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
delete schema.properties[key];
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
setJSONSchemaProperty(schema, key, property) {
|
|
322
|
+
// Add property to the schema
|
|
323
|
+
const prop = { ...property, default: this.getDefaultValue(key, undefined) };
|
|
324
|
+
schema.properties[key] = prop;
|
|
325
|
+
delete prop['scope'];
|
|
326
|
+
delete prop['overridable'];
|
|
327
|
+
if (property.overridable) {
|
|
328
|
+
for (const overrideIdentifier of this._overrideIdentifiers) {
|
|
329
|
+
const overrideSchema = schema.properties[`[${overrideIdentifier}]`] || {
|
|
330
|
+
type: 'object',
|
|
331
|
+
properties: {},
|
|
332
|
+
patternProperties: {},
|
|
333
|
+
additionalProperties: false
|
|
334
|
+
};
|
|
335
|
+
schema.properties[`[${overrideIdentifier}]`] = overrideSchema;
|
|
336
|
+
overrideSchema.properties[key] = { ...property, default: this.getDefaultValue(key, overrideIdentifier) };
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
addOverrideToJsonSchema(overrideIdentifier) {
|
|
341
|
+
for (const scope of this.validScopes) {
|
|
342
|
+
const schema = this.jsonSchemas[scope];
|
|
343
|
+
const overrideSchema = {
|
|
344
|
+
type: 'object',
|
|
345
|
+
properties: {},
|
|
346
|
+
patternProperties: {},
|
|
347
|
+
additionalProperties: false
|
|
348
|
+
};
|
|
349
|
+
schema.properties[`[${overrideIdentifier}]`] = overrideSchema;
|
|
350
|
+
for (const [key, property] of this.properties.entries()) {
|
|
351
|
+
if (property.overridable && this.isValidInScope(key, scope)) {
|
|
352
|
+
overrideSchema.properties[key] = { ...property, default: this.getDefaultValue(key, overrideIdentifier) };
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
getDefaultValues() {
|
|
358
|
+
const result = {};
|
|
359
|
+
for (const [key, property] of this.properties.entries()) {
|
|
360
|
+
if (this.isValidInScope(key, preference_scope_1.PreferenceScope.Default)) {
|
|
361
|
+
if (property.default !== undefined) {
|
|
362
|
+
result[key] = property.default;
|
|
363
|
+
}
|
|
364
|
+
const overrides = this.defaultOverrides.get(key);
|
|
365
|
+
if (overrides) {
|
|
366
|
+
for (const [overrideId, values] of overrides.entries()) {
|
|
367
|
+
if (overrideId === NO_OVERRIDE) {
|
|
368
|
+
result[key] = values[0][1];
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
const overrideKey = `[${overrideId}]`;
|
|
372
|
+
const target = result[overrideKey] || {};
|
|
373
|
+
target[key] = values[0][1];
|
|
374
|
+
result[overrideKey] = target;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return result;
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
exports.PreferenceSchemaServiceImpl = PreferenceSchemaServiceImpl;
|
|
384
|
+
tslib_1.__decorate([
|
|
385
|
+
(0, inversify_1.inject)(preference_scope_1.ValidPreferenceScopes),
|
|
386
|
+
tslib_1.__metadata("design:type", Array)
|
|
387
|
+
], PreferenceSchemaServiceImpl.prototype, "validScopes", void 0);
|
|
388
|
+
tslib_1.__decorate([
|
|
389
|
+
(0, inversify_1.inject)(contribution_provider_1.ContributionProvider),
|
|
390
|
+
(0, inversify_1.named)(preference_schema_1.PreferenceContribution),
|
|
391
|
+
tslib_1.__metadata("design:type", Object)
|
|
392
|
+
], PreferenceSchemaServiceImpl.prototype, "preferenceContributions", void 0);
|
|
393
|
+
tslib_1.__decorate([
|
|
394
|
+
(0, inversify_1.postConstruct)(),
|
|
395
|
+
tslib_1.__metadata("design:type", Function),
|
|
396
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
397
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
398
|
+
], PreferenceSchemaServiceImpl.prototype, "init", null);
|
|
399
|
+
exports.PreferenceSchemaServiceImpl = PreferenceSchemaServiceImpl = tslib_1.__decorate([
|
|
400
|
+
(0, inversify_1.injectable)()
|
|
401
|
+
], PreferenceSchemaServiceImpl);
|
|
402
|
+
//# sourceMappingURL=preference-schema-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preference-schema-service.js","sourceRoot":"","sources":["../../../src/common/preferences/preference-schema-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +1,164 @@
|
|
|
1
|
-
import { JSONValue } from '@lumino/coreutils';
|
|
1
|
+
import { JSONObject, JSONValue } from '@lumino/coreutils';
|
|
2
2
|
import { IJSONSchema } from '../json-schema';
|
|
3
3
|
import { PreferenceScope } from './preference-scope';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
import { Event } from '../event';
|
|
5
|
+
import { Disposable } from '../disposable';
|
|
6
|
+
export declare const PreferenceContribution: unique symbol;
|
|
7
|
+
/**
|
|
8
|
+
* A {@link PreferenceContribution} allows adding additional custom preferences.
|
|
9
|
+
* For this, the {@link PreferenceContribution} has to provide a valid `PrefernceSchema` specifying which preferences
|
|
10
|
+
* are available including their types and description.
|
|
11
|
+
*
|
|
12
|
+
* ### Example usage
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const MyPreferencesSchema: PreferenceSchema = {
|
|
15
|
+
* 'scope': PreferenceScope.Folder,
|
|
16
|
+
* 'properties': {
|
|
17
|
+
* 'myext.decorations.enabled': {
|
|
18
|
+
* 'type': 'boolean',
|
|
19
|
+
* 'description': 'Show file status',
|
|
20
|
+
* 'default': true
|
|
21
|
+
* },
|
|
22
|
+
* // [...]
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* @injectable()
|
|
26
|
+
* export class MyPreferenceContribution implements PreferenceContribution{
|
|
27
|
+
* schema= MyPreferencesSchema;
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export interface PreferenceContribution {
|
|
32
|
+
readonly schema?: PreferenceSchema;
|
|
8
33
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
34
|
+
* Allows to do additional intialisation of the preference schema, for example registering overrides
|
|
35
|
+
* @param service the preference schema service
|
|
11
36
|
*/
|
|
12
|
-
|
|
13
|
-
properties: PreferenceSchemaProperties;
|
|
14
|
-
}
|
|
15
|
-
export declare namespace PreferenceSchema {
|
|
16
|
-
function is(obj: unknown): obj is PreferenceSchema;
|
|
17
|
-
function getDefaultScope(schema: PreferenceSchema): PreferenceScope;
|
|
18
|
-
}
|
|
19
|
-
export interface PreferenceSchemaProperties {
|
|
20
|
-
[name: string]: PreferenceSchemaProperty;
|
|
37
|
+
initSchema?(service: PreferenceSchemaService): Promise<void>;
|
|
21
38
|
}
|
|
22
|
-
export
|
|
23
|
-
|
|
39
|
+
export interface IndexedAccess<T> {
|
|
40
|
+
[name: string]: T;
|
|
24
41
|
}
|
|
25
|
-
export interface
|
|
26
|
-
|
|
42
|
+
export interface PreferenceSchema {
|
|
43
|
+
/** The default scope for properties in this schema */
|
|
27
44
|
scope?: PreferenceScope;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
};
|
|
45
|
+
/** Optional title to be used in UI */
|
|
46
|
+
title?: string;
|
|
47
|
+
/** Whether properties in this schema are overridable by default. Defaults to false. */
|
|
48
|
+
defaultOverridable?: boolean;
|
|
49
|
+
properties: IndexedAccess<PreferenceDataProperty>;
|
|
34
50
|
}
|
|
35
|
-
export interface
|
|
51
|
+
export interface PreferenceDataProperty extends IJSONSchema {
|
|
36
52
|
/**
|
|
37
|
-
*
|
|
53
|
+
* Whether distinct values can be defined for language override identifers. E.g. values valid when editing typescript files vs.
|
|
54
|
+
* when editing Java files
|
|
38
55
|
*/
|
|
39
|
-
defaultValue?: JSONValue;
|
|
40
56
|
overridable?: boolean;
|
|
41
|
-
/** If false, the preference will not be included in the schema or the UI. */
|
|
57
|
+
/** If false, the preference will not be included in the schema or the UI. E.g. OS-Specific prefs */
|
|
42
58
|
included?: boolean;
|
|
43
59
|
/** If true, this item will registered as part of the preference schema, but hidden in the preference editor UI. */
|
|
44
60
|
hidden?: boolean;
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
export interface PreferenceSchemaProperty extends PreferenceItem {
|
|
48
|
-
description?: string;
|
|
49
|
-
markdownDescription?: string;
|
|
50
|
-
scope?: 'application' | 'machine' | 'window' | 'resource' | 'language-overridable' | 'machine-overridable' | PreferenceScope;
|
|
51
|
-
tags?: string[];
|
|
52
|
-
}
|
|
53
|
-
export interface PreferenceDataProperty extends PreferenceItem {
|
|
54
|
-
description?: string;
|
|
55
|
-
markdownDescription?: string;
|
|
61
|
+
/** The maximum scope where values for this property can be set. */
|
|
56
62
|
scope?: PreferenceScope;
|
|
63
|
+
/** Metadata intended for custom renderers */
|
|
57
64
|
typeDetails?: any;
|
|
65
|
+
/** Tags can be searched for in the UI */
|
|
66
|
+
tags?: string[];
|
|
67
|
+
}
|
|
68
|
+
export interface DefaultValueChangedEvent {
|
|
69
|
+
/** The preference key */
|
|
70
|
+
key: string;
|
|
71
|
+
/** The override identifier that the default changed for */
|
|
72
|
+
overrideIdentifier?: string;
|
|
73
|
+
/**
|
|
74
|
+
* When the default for the base property changes, indicates which override identifiers will be affected
|
|
75
|
+
*/
|
|
76
|
+
otherAffectedOverrides: string[];
|
|
77
|
+
oldValue: JSONValue | undefined;
|
|
78
|
+
newValue: JSONValue | undefined;
|
|
58
79
|
}
|
|
59
|
-
export declare
|
|
60
|
-
|
|
80
|
+
export declare const PreferenceSchemaService: unique symbol;
|
|
81
|
+
export interface PreferenceSchemaService {
|
|
82
|
+
/**
|
|
83
|
+
* Resolves after static contributions have been processed
|
|
84
|
+
*/
|
|
85
|
+
readonly ready: Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Register an override identifier for language specific preferences
|
|
88
|
+
* @param overrideIdentifier The identifier to register
|
|
89
|
+
* @returns A disposable to unregister the identifier
|
|
90
|
+
*/
|
|
91
|
+
registerOverrideIdentifier(overrideIdentifier: string): Disposable;
|
|
92
|
+
readonly overrideIdentifiers: ReadonlySet<string>;
|
|
93
|
+
/**
|
|
94
|
+
* Add a preference schema. It is an error to register the same property in two different schemas
|
|
95
|
+
* @param schema The schema to add
|
|
96
|
+
* @returns A disposable to remove the schema
|
|
97
|
+
*/
|
|
98
|
+
addSchema(schema: PreferenceSchema): Disposable;
|
|
99
|
+
/**
|
|
100
|
+
* The scopes which this preference schema service handles. Any properties that are not applicable within the
|
|
101
|
+
* valid scopes will be ignored
|
|
102
|
+
*/
|
|
103
|
+
readonly validScopes: readonly PreferenceScope[];
|
|
104
|
+
/**
|
|
105
|
+
* Check if a preference is valid in a specific scope
|
|
106
|
+
* @param preferenceName The preference name
|
|
107
|
+
* @param scope The scope to check
|
|
108
|
+
* @returns True if the preference is valid in the given scope
|
|
109
|
+
*/
|
|
110
|
+
isValidInScope(preferenceName: string, scope: PreferenceScope): boolean;
|
|
111
|
+
getSchemaProperty(key: string): PreferenceDataProperty | undefined;
|
|
112
|
+
getSchemaProperties(): ReadonlyMap<string, PreferenceDataProperty>;
|
|
113
|
+
/**
|
|
114
|
+
* Update a property in the schema. The corresponding JSON Schemas, etc. will be updated
|
|
115
|
+
* @param key The property key
|
|
116
|
+
* @param property The updated property
|
|
117
|
+
*/
|
|
118
|
+
updateSchemaProperty(key: string, property: PreferenceDataProperty): void;
|
|
119
|
+
/**
|
|
120
|
+
* Register an override for a preference default value. If multiple overrides are registered for the same value,
|
|
121
|
+
* the last override will be in effect. Removing the last override will make the second-to-last override active, etc.
|
|
122
|
+
* @param key The preference key
|
|
123
|
+
* @param overrideIdentifier The override identifier, undefined for global default
|
|
124
|
+
* @param value The default value
|
|
125
|
+
* @returns A disposable to unregister the override
|
|
126
|
+
*/
|
|
127
|
+
registerOverride(key: string, overrideIdentifier: string | undefined, value: JSONValue): Disposable;
|
|
128
|
+
/**
|
|
129
|
+
* Get the default value for a preference. This is the value a client will see for the given key/override
|
|
130
|
+
* @param key The preference key
|
|
131
|
+
* @param overrideIdentifier The override identifier, undefined for global default
|
|
132
|
+
* @returns The default value or undefined if not found
|
|
133
|
+
*/
|
|
134
|
+
getDefaultValue(key: string, overrideIdentifier: string | undefined): JSONValue | undefined;
|
|
135
|
+
/**
|
|
136
|
+
* Gets the default value for a preference. This method not fall back to the global value if no override is given
|
|
137
|
+
* @param key The preference key
|
|
138
|
+
* @param overrideIdentifier The override identifier, undefined for global default
|
|
139
|
+
* @returns The default value or undefined if not found
|
|
140
|
+
*/
|
|
141
|
+
inspectDefaultValue(key: string, overrideIdentifier: string | undefined): JSONValue | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* Gets a JSON schema a preference.json file for the given scope.
|
|
144
|
+
* @param scope The scope to generate schema for
|
|
145
|
+
* @returns The JSON schema
|
|
146
|
+
*/
|
|
147
|
+
getJSONSchema(scope: PreferenceScope): IJSONSchema;
|
|
148
|
+
/**
|
|
149
|
+
* Get the collection of all defined default values as JSONObject of the form like in a preferences.json
|
|
150
|
+
*
|
|
151
|
+
* #### Example usage
|
|
152
|
+
* ```json
|
|
153
|
+
* {
|
|
154
|
+
* "my.preference": "a string default",
|
|
155
|
+
* "[typescript]": {
|
|
156
|
+
* "another.preference": 39
|
|
157
|
+
* }
|
|
158
|
+
* }
|
|
159
|
+
*/
|
|
160
|
+
getDefaultValues(): JSONObject;
|
|
161
|
+
onDidChangeDefaultValue: Event<DefaultValueChangedEvent>;
|
|
162
|
+
onDidChangeSchema: Event<void>;
|
|
61
163
|
}
|
|
62
164
|
//# sourceMappingURL=preference-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preference-schema.d.ts","sourceRoot":"","sources":["../../../src/common/preferences/preference-schema.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"preference-schema.d.ts","sourceRoot":"","sources":["../../../src/common/preferences/preference-schema.ts"],"names":[],"mappings":"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"}
|