@theia/core 1.45.0 → 1.46.0-next.106
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 +20 -3
- package/i18n/nls.de.json +20 -3
- package/i18n/nls.es.json +20 -3
- package/i18n/nls.fr.json +20 -3
- package/i18n/nls.hu.json +20 -3
- package/i18n/nls.it.json +20 -3
- package/i18n/nls.ja.json +20 -3
- package/i18n/nls.json +20 -3
- package/i18n/nls.pl.json +20 -3
- package/i18n/nls.pt-br.json +20 -3
- package/i18n/nls.pt-pt.json +20 -3
- package/i18n/nls.ru.json +20 -3
- package/i18n/nls.zh-cn.json +20 -3
- package/lib/browser/about-dialog.js +13 -24
- package/lib/browser/about-dialog.js.map +1 -1
- package/lib/browser/authentication-service.js +12 -20
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +12 -20
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js +2 -7
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +14 -22
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-service.js +10 -18
- package/lib/browser/breadcrumbs/breadcrumbs-service.js.map +1 -1
- package/lib/browser/breadcrumbs/index.js +6 -15
- package/lib/browser/breadcrumbs/index.js.map +1 -1
- package/lib/browser/browser-clipboard-service.js +6 -14
- package/lib/browser/browser-clipboard-service.js.map +1 -1
- package/lib/browser/browser.d.ts +3 -0
- package/lib/browser/browser.d.ts.map +1 -1
- package/lib/browser/browser.js +5 -1
- package/lib/browser/browser.js.map +1 -1
- package/lib/browser/color-application-contribution.js +8 -16
- package/lib/browser/color-application-contribution.js.map +1 -1
- package/lib/browser/color-registry.js +2 -7
- package/lib/browser/color-registry.js.map +1 -1
- package/lib/browser/command-open-handler.js +4 -12
- package/lib/browser/command-open-handler.js.map +1 -1
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +49 -60
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/common-styling-participants.js +9 -14
- package/lib/browser/common-styling-participants.js.map +1 -1
- package/lib/browser/connection-status-service.js +22 -33
- package/lib/browser/connection-status-service.js.map +1 -1
- package/lib/browser/context-key-service.d.ts +1 -2
- package/lib/browser/context-key-service.d.ts.map +1 -1
- package/lib/browser/context-key-service.js +2 -7
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/context-menu-renderer.d.ts +0 -1
- package/lib/browser/context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/context-menu-renderer.js +3 -12
- package/lib/browser/context-menu-renderer.js.map +1 -1
- package/lib/browser/core-preferences.d.ts +1 -0
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +5 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/credentials-service.js +4 -15
- package/lib/browser/credentials-service.js.map +1 -1
- package/lib/browser/decorations-service.js +6 -12
- package/lib/browser/decorations-service.js.map +1 -1
- package/lib/browser/dialogs/react-dialog.js +4 -15
- package/lib/browser/dialogs/react-dialog.js.map +1 -1
- package/lib/browser/dialogs.js +18 -29
- package/lib/browser/dialogs.js.map +1 -1
- package/lib/browser/diff-uris.js +4 -15
- package/lib/browser/diff-uris.js.map +1 -1
- package/lib/browser/encoding-registry.js +6 -14
- package/lib/browser/encoding-registry.js.map +1 -1
- package/lib/browser/external-uri-service.js +2 -7
- package/lib/browser/external-uri-service.js.map +1 -1
- package/lib/browser/frontend-application-contribution.js +2 -7
- package/lib/browser/frontend-application-contribution.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +4 -2
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application-state.js +4 -12
- package/lib/browser/frontend-application-state.js.map +1 -1
- package/lib/browser/frontend-application.js +21 -32
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/hover-service.js +6 -14
- package/lib/browser/hover-service.js.map +1 -1
- package/lib/browser/http-open-handler.js +6 -14
- package/lib/browser/http-open-handler.js.map +1 -1
- package/lib/browser/i18n/language-quick-pick-service.js +8 -16
- package/lib/browser/i18n/language-quick-pick-service.js.map +1 -1
- package/lib/browser/icon-registry.d.ts +1 -7
- package/lib/browser/icon-registry.d.ts.map +1 -1
- package/lib/browser/icon-registry.js.map +1 -1
- package/lib/browser/icon-theme-contribution.js +7 -15
- package/lib/browser/icon-theme-contribution.js.map +1 -1
- package/lib/browser/icon-theme-service.js +13 -21
- package/lib/browser/icon-theme-service.js.map +1 -1
- package/lib/browser/index.js +32 -41
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/json-schema-store.js +7 -15
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +21 -26
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +4 -9
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +6 -14
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js +10 -18
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +2 -7
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
- package/lib/browser/keyboard/index.js +5 -14
- package/lib/browser/keyboard/index.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.js +8 -16
- package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.spec.js +2 -7
- package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
- package/lib/browser/keyboard/keys.js +2 -11
- package/lib/browser/keyboard/keys.js.map +1 -1
- package/lib/browser/label-parser.js +2 -7
- package/lib/browser/label-parser.js.map +1 -1
- package/lib/browser/label-provider.js +11 -19
- package/lib/browser/label-provider.js.map +1 -1
- package/lib/browser/language-icon-provider.js +10 -18
- package/lib/browser/language-icon-provider.js.map +1 -1
- package/lib/browser/language-service.js +2 -7
- package/lib/browser/language-service.js.map +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts.map +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.js +8 -16
- package/lib/browser/markdown-rendering/markdown-renderer.js.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.js +4 -15
- package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +23 -34
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/menu/context-menu-context.js +3 -11
- package/lib/browser/menu/context-menu-context.js.map +1 -1
- package/lib/browser/messaging/frontend-id-provider.js +2 -7
- package/lib/browser/messaging/frontend-id-provider.js.map +1 -1
- package/lib/browser/messaging/index.js +2 -11
- package/lib/browser/messaging/index.js.map +1 -1
- package/lib/browser/messaging/service-connection-provider.js +8 -16
- package/lib/browser/messaging/service-connection-provider.js.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +4 -12
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/messaging/ws-connection-source.d.ts +2 -0
- package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-source.js +47 -39
- package/lib/browser/messaging/ws-connection-source.js.map +1 -1
- package/lib/browser/mime-service.js +2 -7
- package/lib/browser/mime-service.js.map +1 -1
- package/lib/browser/navigatable.js +2 -11
- package/lib/browser/navigatable.js.map +1 -1
- package/lib/browser/opener-service.js +5 -16
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/performance/frontend-stopwatch.js +3 -11
- package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
- package/lib/browser/performance/index.js +3 -12
- package/lib/browser/performance/index.js.map +1 -1
- package/lib/browser/preferences/index.js +8 -17
- package/lib/browser/preferences/index.js.map +1 -1
- package/lib/browser/preferences/injectable-preference-proxy.js +14 -22
- package/lib/browser/preferences/injectable-preference-proxy.js.map +1 -1
- package/lib/browser/preferences/preference-configurations.js +4 -12
- package/lib/browser/preferences/preference-configurations.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +10 -18
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-language-override-service.js +2 -7
- package/lib/browser/preferences/preference-language-override-service.js.map +1 -1
- package/lib/browser/preferences/preference-provider.js +5 -13
- package/lib/browser/preferences/preference-provider.js.map +1 -1
- package/lib/browser/preferences/preference-service.js +14 -22
- package/lib/browser/preferences/preference-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.js +6 -14
- package/lib/browser/preferences/preference-validation-service.js.map +1 -1
- package/lib/browser/preferences/test/index.js +4 -13
- package/lib/browser/preferences/test/index.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js +3 -11
- package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
- package/lib/browser/preload/i18n-preload-contribution.js +4 -12
- package/lib/browser/preload/i18n-preload-contribution.js.map +1 -1
- package/lib/browser/preload/os-preload-contribution.js +4 -12
- package/lib/browser/preload/os-preload-contribution.js.map +1 -1
- package/lib/browser/preload/preloader.js +4 -12
- package/lib/browser/preload/preloader.js.map +1 -1
- package/lib/browser/preload/theme-preload-contribution.js +2 -7
- package/lib/browser/preload/theme-preload-contribution.js.map +1 -1
- package/lib/browser/progress-bar.js +11 -19
- package/lib/browser/progress-bar.js.map +1 -1
- package/lib/browser/progress-client.js +6 -14
- package/lib/browser/progress-client.js.map +1 -1
- package/lib/browser/progress-location-service.js +2 -7
- package/lib/browser/progress-location-service.js.map +1 -1
- package/lib/browser/progress-status-bar-item.js +4 -12
- package/lib/browser/progress-status-bar-item.js.map +1 -1
- package/lib/browser/quick-input/index.js +9 -18
- package/lib/browser/quick-input/index.js.map +1 -1
- package/lib/browser/quick-input/quick-command-frontend-contribution.js +6 -14
- package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +12 -20
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/quick-input/quick-help-service.js +6 -14
- package/lib/browser/quick-input/quick-help-service.js.map +1 -1
- package/lib/browser/quick-input/quick-input-frontend-contribution.js +4 -12
- package/lib/browser/quick-input/quick-input-frontend-contribution.js.map +1 -1
- package/lib/browser/quick-input/quick-input-service.js +2 -11
- package/lib/browser/quick-input/quick-input-service.js.map +1 -1
- package/lib/browser/quick-input/quick-pick-service-impl.js +4 -12
- package/lib/browser/quick-input/quick-pick-service-impl.js.map +1 -1
- package/lib/browser/quick-input/quick-view-service.js +6 -14
- package/lib/browser/quick-input/quick-view-service.js.map +1 -1
- package/lib/browser/request/browser-request-service.js +12 -20
- package/lib/browser/request/browser-request-service.js.map +1 -1
- package/lib/browser/resource-context-key.js +10 -18
- package/lib/browser/resource-context-key.js.map +1 -1
- package/lib/browser/save-resource-service.d.ts +3 -3
- package/lib/browser/save-resource-service.d.ts.map +1 -1
- package/lib/browser/save-resource-service.js +6 -13
- package/lib/browser/save-resource-service.js.map +1 -1
- package/lib/browser/secondary-window-handler.js +12 -20
- package/lib/browser/secondary-window-handler.js.map +1 -1
- package/lib/browser/shell/additional-views-menu-widget.js +6 -14
- package/lib/browser/shell/additional-views-menu-widget.js.map +1 -1
- package/lib/browser/shell/application-shell-mouse-tracker.js +4 -12
- package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +40 -46
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/index.js +8 -17
- package/lib/browser/shell/index.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +12 -23
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/side-panel-handler.js +22 -30
- package/lib/browser/shell/side-panel-handler.js.map +1 -1
- package/lib/browser/shell/sidebar-bottom-menu-widget.js +2 -7
- package/lib/browser/shell/sidebar-bottom-menu-widget.js.map +1 -1
- package/lib/browser/shell/sidebar-menu-widget.js +7 -15
- package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
- package/lib/browser/shell/sidebar-top-menu-widget.js +2 -7
- package/lib/browser/shell/sidebar-top-menu-widget.js.map +1 -1
- package/lib/browser/shell/split-panels.js +2 -7
- package/lib/browser/shell/split-panels.js.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.d.ts +7 -2
- package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.js +39 -16
- package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/index.js +4 -13
- package/lib/browser/shell/tab-bar-toolbar/index.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +10 -18
- 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 +23 -31
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +4 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +39 -4
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/shell/view-contribution.js +9 -17
- package/lib/browser/shell/view-contribution.js.map +1 -1
- package/lib/browser/source-tree/index.js +4 -13
- package/lib/browser/source-tree/index.js.map +1 -1
- package/lib/browser/source-tree/source-tree-widget.js +6 -14
- package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
- package/lib/browser/source-tree/source-tree.js +2 -7
- package/lib/browser/source-tree/source-tree.js.map +1 -1
- package/lib/browser/source-tree/tree-source.js +4 -15
- package/lib/browser/source-tree/tree-source.js.map +1 -1
- package/lib/browser/status-bar/index.js +4 -13
- package/lib/browser/status-bar/index.js.map +1 -1
- package/lib/browser/status-bar/status-bar-view-model.js +2 -7
- package/lib/browser/status-bar/status-bar-view-model.js.map +1 -1
- package/lib/browser/status-bar/status-bar.js +9 -20
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/storage-service.js +12 -20
- package/lib/browser/storage-service.js.map +1 -1
- package/lib/browser/styling-service.js +8 -16
- package/lib/browser/styling-service.js.map +1 -1
- package/lib/browser/test/mock-opener-service.js +2 -7
- package/lib/browser/test/mock-opener-service.js.map +1 -1
- package/lib/browser/test/mock-storage-service.js +2 -7
- package/lib/browser/test/mock-storage-service.js.map +1 -1
- package/lib/browser/theming.js +10 -18
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tooltip-service.js +13 -24
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/fuzzy-search.js +2 -7
- package/lib/browser/tree/fuzzy-search.js.map +1 -1
- package/lib/browser/tree/index.d.ts +1 -0
- package/lib/browser/tree/index.d.ts.map +1 -1
- package/lib/browser/tree/index.js +14 -22
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/test/mock-selectable-tree-model.d.ts +15 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.d.ts.map +1 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.js +103 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.js.map +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js +6 -14
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.js +6 -14
- package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js +10 -21
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
- package/lib/browser/tree/tree-compression/index.js +5 -14
- package/lib/browser/tree/tree-compression/index.js.map +1 -1
- package/lib/browser/tree/tree-compression/tree-compression-service.js +2 -7
- package/lib/browser/tree/tree-compression/tree-compression-service.js.map +1 -1
- package/lib/browser/tree/tree-consistency.spec.js +2 -7
- package/lib/browser/tree/tree-consistency.spec.js.map +1 -1
- package/lib/browser/tree/tree-decorator.js +4 -12
- package/lib/browser/tree/tree-decorator.js.map +1 -1
- package/lib/browser/tree/tree-expansion.js +8 -16
- package/lib/browser/tree/tree-expansion.js.map +1 -1
- package/lib/browser/tree/tree-focus-service.js +4 -12
- package/lib/browser/tree/tree-focus-service.js.map +1 -1
- package/lib/browser/tree/tree-label-provider.js +2 -7
- package/lib/browser/tree/tree-label-provider.js.map +1 -1
- package/lib/browser/tree/tree-model.d.ts +24 -0
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +66 -28
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-navigation.js +2 -7
- package/lib/browser/tree/tree-navigation.js.map +1 -1
- package/lib/browser/tree/tree-preference.d.ts +11 -0
- package/lib/browser/tree/tree-preference.d.ts.map +1 -0
- package/lib/browser/tree/tree-preference.js +47 -0
- package/lib/browser/tree/tree-preference.js.map +1 -0
- package/lib/browser/tree/tree-search.js +12 -20
- package/lib/browser/tree/tree-search.js.map +1 -1
- package/lib/browser/tree/tree-selectable.spec.d.ts +2 -0
- package/lib/browser/tree/tree-selectable.spec.d.ts.map +1 -0
- package/lib/browser/tree/tree-selectable.spec.js +147 -0
- package/lib/browser/tree/tree-selectable.spec.js.map +1 -0
- package/lib/browser/tree/tree-selection-impl.js +10 -18
- package/lib/browser/tree/tree-selection-impl.js.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.js +8 -16
- package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +6 -3
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +48 -38
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +7 -12
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/user-working-directory-provider.js +6 -14
- package/lib/browser/user-working-directory-provider.js.map +1 -1
- package/lib/browser/view-container.js +31 -39
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-manager.d.ts +9 -0
- package/lib/browser/widget-manager.d.ts.map +1 -1
- package/lib/browser/widget-manager.js +29 -14
- package/lib/browser/widget-manager.js.map +1 -1
- package/lib/browser/widget-open-handler.js +10 -18
- package/lib/browser/widget-open-handler.js.map +1 -1
- package/lib/browser/widgets/index.js +5 -14
- package/lib/browser/widgets/index.js.map +1 -1
- package/lib/browser/widgets/react-renderer.js +5 -16
- package/lib/browser/widgets/react-renderer.js.map +1 -1
- package/lib/browser/widgets/react-widget.js +4 -15
- package/lib/browser/widgets/react-widget.js.map +1 -1
- package/lib/browser/widgets/select-component.d.ts.map +1 -1
- package/lib/browser/widgets/select-component.js +1 -0
- package/lib/browser/widgets/select-component.js.map +1 -1
- package/lib/browser/widgets/widget.d.ts +2 -0
- package/lib/browser/widgets/widget.d.ts.map +1 -1
- package/lib/browser/widgets/widget.js +14 -24
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +10 -18
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.js +6 -14
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/test/mock-window-service.js +2 -7
- package/lib/browser/window/test/mock-window-service.js.map +1 -1
- package/lib/browser/window/window-service.d.ts +6 -2
- package/lib/browser/window/window-service.d.ts.map +1 -1
- package/lib/browser/window/window-service.js.map +1 -1
- package/lib/browser/window/window-title-service.js +8 -16
- package/lib/browser/window/window-title-service.js.map +1 -1
- package/lib/browser/window/window-title-updater.js +6 -14
- package/lib/browser/window/window-title-updater.js.map +1 -1
- package/lib/browser/window-contribution.js +4 -12
- package/lib/browser/window-contribution.js.map +1 -1
- package/lib/browser-only/frontend-only-application-module.d.ts +5 -0
- package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -0
- package/lib/browser-only/frontend-only-application-module.js +115 -0
- package/lib/browser-only/frontend-only-application-module.js.map +1 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts +4 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.js +35 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.js.map +1 -0
- package/lib/browser-only/logger-frontend-only-module.d.ts +3 -0
- package/lib/browser-only/logger-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/logger-frontend-only-module.js +61 -0
- package/lib/browser-only/logger-frontend-only-module.js.map +1 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +14 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +52 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts +3 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.js +48 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.js.map +1 -0
- package/lib/browser-only/preload/frontend-only-preload-module.d.ts +4 -0
- package/lib/browser-only/preload/frontend-only-preload-module.d.ts.map +1 -0
- package/lib/browser-only/preload/frontend-only-preload-module.js +52 -0
- package/lib/browser-only/preload/frontend-only-preload-module.js.map +1 -0
- package/lib/common/application-protocol.d.ts +1 -0
- package/lib/common/application-protocol.d.ts.map +1 -1
- package/lib/common/command.js +5 -16
- package/lib/common/command.js.map +1 -1
- package/lib/common/contribution-filter/contribution-filter-registry.js +5 -16
- package/lib/common/contribution-filter/contribution-filter-registry.js.map +1 -1
- package/lib/common/contribution-filter/index.js +4 -13
- package/lib/common/contribution-filter/index.js.map +1 -1
- package/lib/common/disposable.d.ts +37 -0
- package/lib/common/disposable.d.ts.map +1 -1
- package/lib/common/disposable.js +54 -1
- package/lib/common/disposable.js.map +1 -1
- package/lib/common/disposable.spec.js +51 -0
- package/lib/common/disposable.spec.js.map +1 -1
- package/lib/common/encoding-service.js +2 -7
- package/lib/common/encoding-service.js.map +1 -1
- package/lib/common/env-variables/index.js +2 -11
- package/lib/common/env-variables/index.js.map +1 -1
- package/lib/{node → common}/file-uri.d.ts +1 -1
- package/lib/common/file-uri.d.ts.map +1 -0
- package/lib/{node → common}/file-uri.js +2 -2
- package/lib/common/file-uri.js.map +1 -0
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +34 -42
- package/lib/common/index.js.map +1 -1
- package/lib/common/logger-protocol.js +2 -7
- package/lib/common/logger-protocol.js.map +1 -1
- package/lib/common/logger-watcher.js +2 -7
- package/lib/common/logger-watcher.js.map +1 -1
- package/lib/common/logger.js +14 -22
- package/lib/common/logger.js.map +1 -1
- package/lib/common/markdown-rendering/index.js +3 -12
- package/lib/common/markdown-rendering/index.js.map +1 -1
- package/lib/common/markdown-rendering/markdown-string.d.ts +5 -2
- package/lib/common/markdown-rendering/markdown-string.d.ts.map +1 -1
- package/lib/common/markdown-rendering/markdown-string.js.map +1 -1
- package/lib/common/menu/composite-menu-node.js +5 -5
- package/lib/common/menu/composite-menu-node.js.map +1 -1
- package/lib/common/menu/composite-menu-node.spec.d.ts +2 -0
- package/lib/common/menu/composite-menu-node.spec.d.ts.map +1 -0
- package/lib/common/menu/composite-menu-node.spec.js +68 -0
- package/lib/common/menu/composite-menu-node.spec.js.map +1 -0
- package/lib/common/menu/index.js +6 -15
- package/lib/common/menu/index.js.map +1 -1
- package/lib/common/menu/menu-adapter.js +7 -15
- package/lib/common/menu/menu-adapter.js.map +1 -1
- package/lib/common/menu/menu-model-registry.d.ts +2 -2
- package/lib/common/menu/menu-model-registry.d.ts.map +1 -1
- package/lib/common/menu/menu-model-registry.js +22 -19
- package/lib/common/menu/menu-model-registry.js.map +1 -1
- package/lib/common/menu/menu.spec.js +28 -1
- package/lib/common/menu/menu.spec.js.map +1 -1
- package/lib/common/message-rpc/msg-pack-extension-manager.d.ts +1 -1
- package/lib/common/message-rpc/msg-pack-extension-manager.js +1 -1
- package/lib/common/message-rpc/rpc-protocol.d.ts +3 -1
- package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -1
- package/lib/common/message-rpc/rpc-protocol.js +19 -1
- package/lib/common/message-rpc/rpc-protocol.js.map +1 -1
- package/lib/common/message-service-protocol.js +2 -7
- package/lib/common/message-service-protocol.js.map +1 -1
- package/lib/common/message-service.js +4 -15
- package/lib/common/message-service.js.map +1 -1
- package/lib/common/messaging/index.js +4 -13
- package/lib/common/messaging/index.js.map +1 -1
- package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.js +1 -8
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/nls.js +3 -1
- package/lib/common/nls.js.map +1 -1
- package/lib/common/performance/index.js +4 -13
- package/lib/common/performance/index.js.map +1 -1
- package/lib/common/performance/measurement-protocol.js +5 -13
- package/lib/common/performance/measurement-protocol.js.map +1 -1
- package/lib/common/performance/stopwatch.js +5 -13
- package/lib/common/performance/stopwatch.js.map +1 -1
- package/lib/common/progress-service.js +6 -14
- package/lib/common/progress-service.js.map +1 -1
- package/lib/common/promise-util.spec.js +31 -6
- package/lib/common/promise-util.spec.js.map +1 -1
- package/lib/common/quick-pick-service.d.ts +16 -26
- package/lib/common/quick-pick-service.d.ts.map +1 -1
- package/lib/common/quick-pick-service.js +1 -26
- package/lib/common/quick-pick-service.js.map +1 -1
- package/lib/common/reference.d.ts +55 -0
- package/lib/common/reference.d.ts.map +1 -1
- package/lib/common/reference.js +55 -0
- package/lib/common/reference.js.map +1 -1
- package/lib/common/resource.d.ts +3 -1
- package/lib/common/resource.d.ts.map +1 -1
- package/lib/common/resource.js +8 -19
- package/lib/common/resource.js.map +1 -1
- package/lib/common/selection-service.js +2 -7
- package/lib/common/selection-service.js.map +1 -1
- package/lib/common/test/mock-logger.js +2 -7
- package/lib/common/test/mock-logger.js.map +1 -1
- package/lib/common/test/mock-resource-provider.js +3 -11
- package/lib/common/test/mock-resource-provider.js.map +1 -1
- package/lib/common/theme.d.ts +25 -0
- package/lib/common/theme.d.ts.map +1 -1
- package/lib/common/theme.js.map +1 -1
- package/lib/common/uri.d.ts +1 -0
- package/lib/common/uri.d.ts.map +1 -1
- package/lib/common/uri.js +1 -1
- package/lib/common/uri.js.map +1 -1
- package/lib/common/uuid.d.ts +7 -1
- package/lib/common/uuid.d.ts.map +1 -1
- package/lib/common/uuid.js +17 -58
- package/lib/common/uuid.js.map +1 -1
- package/lib/electron-browser/electron-clipboard-service.js +2 -7
- package/lib/electron-browser/electron-clipboard-service.js.map +1 -1
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js +6 -14
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +15 -26
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +8 -16
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +33 -35
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/messaging/electron-frontend-id-provider.js +2 -7
- package/lib/electron-browser/messaging/electron-frontend-id-provider.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js +2 -7
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -1
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js +2 -7
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js.map +1 -1
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +3 -3
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-source.js +3 -11
- package/lib/electron-browser/messaging/electron-ws-connection-source.js.map +1 -1
- package/lib/electron-browser/window/electron-frontend-application-state.js +2 -7
- package/lib/electron-browser/window/electron-frontend-application-state.js.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.js +2 -7
- package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +2 -1
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +23 -24
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/electron-main/electron-api-main.js +4 -12
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application-module.js +2 -2
- package/lib/electron-main/electron-main-application-module.js.map +1 -1
- package/lib/electron-main/electron-main-application.js +16 -24
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/electron-main-window-service-impl.js +4 -12
- package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
- package/lib/electron-main/electron-security-token-service.js +4 -12
- package/lib/electron-main/electron-security-token-service.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +10 -18
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/lib/electron-main/theia-electron-window.js +13 -21
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/electron-node/hosting/electron-ws-origin-validator.js +4 -12
- package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js +2 -7
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js.map +1 -1
- package/lib/electron-node/request/electron-backend-request-service.js +2 -7
- package/lib/electron-node/request/electron-backend-request-service.js.map +1 -1
- package/lib/electron-node/token/electron-token-backend-contribution.js +4 -12
- package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
- package/lib/electron-node/token/electron-token-validator.js +6 -14
- package/lib/electron-node/token/electron-token-validator.js.map +1 -1
- package/lib/node/application-server.d.ts +1 -0
- package/lib/node/application-server.d.ts.map +1 -1
- package/lib/node/application-server.js +11 -13
- package/lib/node/application-server.js.map +1 -1
- package/lib/node/backend-application.js +17 -28
- package/lib/node/backend-application.js.map +1 -1
- package/lib/node/backend-remote-service.js +2 -7
- package/lib/node/backend-remote-service.js.map +1 -1
- package/lib/node/cli.js +5 -16
- package/lib/node/cli.js.map +1 -1
- package/lib/node/console-logger-server.js +10 -18
- package/lib/node/console-logger-server.js.map +1 -1
- package/lib/node/console-logger-server.spec.js +6 -14
- package/lib/node/console-logger-server.spec.js.map +1 -1
- package/lib/node/env-variables/env-variables-server.js +4 -12
- package/lib/node/env-variables/env-variables-server.js.map +1 -1
- package/lib/node/env-variables/index.js +2 -11
- package/lib/node/env-variables/index.js.map +1 -1
- package/lib/node/environment-utils.js +2 -7
- package/lib/node/environment-utils.js.map +1 -1
- package/lib/node/file-uri.spec.js +1 -1
- package/lib/node/file-uri.spec.js.map +1 -1
- package/lib/node/filesystem-locking.js +2 -7
- package/lib/node/filesystem-locking.js.map +1 -1
- package/lib/node/hosting/backend-application-hosts.js +6 -14
- package/lib/node/hosting/backend-application-hosts.js.map +1 -1
- package/lib/node/hosting/ws-origin-validator.js +4 -12
- package/lib/node/hosting/ws-origin-validator.js.map +1 -1
- package/lib/node/i18n/localization-contribution.js +6 -14
- package/lib/node/i18n/localization-contribution.js.map +1 -1
- package/lib/node/i18n/localization-provider.js +2 -7
- package/lib/node/i18n/localization-provider.js.map +1 -1
- package/lib/node/i18n/localization-server.js +6 -14
- package/lib/node/i18n/localization-server.js.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.js +2 -7
- package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
- package/lib/node/index.d.ts +1 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +6 -15
- package/lib/node/index.js.map +1 -1
- package/lib/node/key-store-server.js +2 -7
- package/lib/node/key-store-server.js.map +1 -1
- package/lib/node/logger-cli-contribution.js +2 -7
- package/lib/node/logger-cli-contribution.js.map +1 -1
- package/lib/node/messaging/default-messaging-service.js +10 -18
- package/lib/node/messaging/default-messaging-service.js.map +1 -1
- package/lib/node/messaging/index.js +4 -13
- package/lib/node/messaging/index.js.map +1 -1
- package/lib/node/messaging/ipc-connection-provider.js +4 -12
- package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
- package/lib/node/messaging/messaging-listeners.js +4 -12
- package/lib/node/messaging/messaging-listeners.js.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.js +3 -11
- package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
- package/lib/node/messaging/websocket-endpoint.js +6 -14
- package/lib/node/messaging/websocket-endpoint.js.map +1 -1
- package/lib/node/messaging/websocket-frontend-connection-service.d.ts +2 -1
- package/lib/node/messaging/websocket-frontend-connection-service.d.ts.map +1 -1
- package/lib/node/messaging/websocket-frontend-connection-service.js +12 -15
- package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -1
- package/lib/node/os-backend-provider.js +2 -7
- package/lib/node/os-backend-provider.js.map +1 -1
- package/lib/node/performance/index.js +3 -12
- package/lib/node/performance/index.js.map +1 -1
- package/lib/node/performance/node-stopwatch.js +3 -11
- package/lib/node/performance/node-stopwatch.js.map +1 -1
- package/lib/node/process-utils.js +2 -7
- package/lib/node/process-utils.js.map +1 -1
- package/lib/node/request/backend-request-facade.js +4 -12
- package/lib/node/request/backend-request-facade.js.map +1 -1
- package/lib/node/request/proxy-cli-contribution.js +4 -12
- package/lib/node/request/proxy-cli-contribution.js.map +1 -1
- package/lib/node/ws-request-validators.js +4 -12
- package/lib/node/ws-request-validators.js.map +1 -1
- package/package.json +14 -8
- package/src/browser/browser.ts +6 -1
- package/src/browser/common-frontend-contribution.ts +3 -3
- package/src/browser/context-key-service.ts +1 -2
- package/src/browser/context-menu-renderer.ts +0 -4
- package/src/browser/core-preferences.ts +6 -0
- package/src/browser/decorations-service.ts +4 -4
- package/src/browser/frontend-application-module.ts +5 -2
- package/src/browser/icon-registry.ts +1 -10
- package/src/browser/keybinding.ts +3 -0
- package/src/browser/markdown-rendering/markdown-renderer.ts +1 -1
- package/src/browser/messaging/ws-connection-source.ts +41 -21
- package/src/browser/save-resource-service.ts +5 -4
- package/src/browser/shell/application-shell.ts +8 -3
- package/src/browser/shell/tab-bar-decorator.ts +36 -6
- package/src/browser/shell/tab-bars.ts +41 -5
- package/src/browser/style/index.css +153 -148
- package/src/browser/style/select-component.css +12 -13
- package/src/browser/style/tabs.css +6 -0
- package/src/browser/tooltip-service.tsx +2 -2
- package/src/browser/tree/index.ts +1 -0
- package/src/browser/tree/test/mock-selectable-tree-model.ts +109 -0
- package/src/browser/tree/tree-model.ts +74 -0
- package/src/browser/tree/tree-preference.ts +50 -0
- package/src/browser/tree/tree-selectable.spec.ts +152 -0
- package/src/browser/tree/tree-widget.tsx +24 -5
- package/src/browser/tree/tree.ts +2 -1
- package/src/browser/widget-manager.ts +25 -0
- package/src/browser/widgets/select-component.tsx +1 -0
- package/src/browser/widgets/widget.ts +8 -0
- package/src/browser/window/window-service.ts +7 -2
- package/src/browser-only/frontend-only-application-module.ts +115 -0
- package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -0
- package/src/browser-only/logger-frontend-only-module.ts +63 -0
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -0
- package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -0
- package/src/browser-only/preload/frontend-only-preload-module.ts +49 -0
- package/src/common/application-protocol.ts +1 -0
- package/src/common/disposable.spec.ts +66 -1
- package/src/common/disposable.ts +53 -0
- package/src/{node → common}/file-uri.ts +2 -2
- package/src/common/index.ts +1 -0
- package/src/common/markdown-rendering/markdown-string.ts +6 -3
- package/src/common/menu/composite-menu-node.spec.ts +67 -0
- package/src/common/menu/composite-menu-node.ts +5 -5
- package/src/common/menu/menu-model-registry.ts +22 -5
- package/src/common/menu/menu.spec.ts +30 -2
- package/src/common/message-rpc/msg-pack-extension-manager.ts +1 -1
- package/src/common/message-rpc/rpc-protocol.ts +22 -2
- package/src/common/messaging/proxy-factory.ts +1 -8
- package/src/common/nls.ts +3 -1
- package/src/common/promise-util.spec.ts +48 -18
- package/src/common/quick-pick-service.ts +13 -34
- package/src/common/reference.ts +55 -0
- package/src/common/resource.ts +5 -1
- package/src/common/theme.ts +32 -0
- package/src/common/uri.ts +4 -2
- package/src/common/uuid.ts +15 -69
- package/src/electron-browser/menu/electron-menu-contribution.ts +9 -1
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +12 -3
- package/src/electron-main/electron-main-application-module.ts +2 -2
- package/src/electron-main/electron-main-application.ts +1 -1
- package/src/electron-main/theia-electron-window.ts +1 -1
- package/src/node/application-server.ts +8 -1
- package/src/node/env-variables/env-variables-server.ts +1 -1
- package/src/node/file-uri.spec.ts +1 -1
- package/src/node/index.ts +1 -1
- package/src/node/messaging/websocket-frontend-connection-service.ts +10 -5
- package/lib/node/file-uri.d.ts.map +0 -1
- package/lib/node/file-uri.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 EclipseSource 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 { ContainerModule } from 'inversify';
|
|
18
|
+
import { AsyncLocalizationProvider, LanguageInfo, Localization } from '../../common/i18n/localization';
|
|
19
|
+
import { LanguageQuickPickService } from '../../browser/i18n/language-quick-pick-service';
|
|
20
|
+
|
|
21
|
+
export default new ContainerModule(bind => {
|
|
22
|
+
const i18nMock: AsyncLocalizationProvider = {
|
|
23
|
+
getCurrentLanguage: async (): Promise<string> => 'en',
|
|
24
|
+
setCurrentLanguage: async (_languageId: string): Promise<void> => {
|
|
25
|
+
|
|
26
|
+
},
|
|
27
|
+
getAvailableLanguages: async (): Promise<LanguageInfo[]> =>
|
|
28
|
+
[]
|
|
29
|
+
,
|
|
30
|
+
loadLocalization: async (_languageId: string): Promise<Localization> => ({
|
|
31
|
+
translations: {},
|
|
32
|
+
languageId: 'en'
|
|
33
|
+
})
|
|
34
|
+
};
|
|
35
|
+
bind(AsyncLocalizationProvider).toConstantValue(i18nMock);
|
|
36
|
+
bind(LanguageQuickPickService).toSelf().inSingletonScope();
|
|
37
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 EclipseSource 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 { ContainerModule, Container } from 'inversify';
|
|
18
|
+
import { ILoggerServer, ILoggerClient, LogLevel, ConsoleLogger } from '../common/logger-protocol';
|
|
19
|
+
import { ILogger, Logger, LoggerFactory, LoggerName } from '../common/logger';
|
|
20
|
+
|
|
21
|
+
// is loaded directly after the regular logger frontend module
|
|
22
|
+
export const loggerFrontendOnlyModule = new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
23
|
+
const logger: ILoggerServer = {
|
|
24
|
+
setLogLevel: async (_name: string, _logLevel: number): Promise<void> => { },
|
|
25
|
+
getLogLevel: async (_name: string): Promise<number> => LogLevel.INFO,
|
|
26
|
+
log: async (name: string, logLevel: number, message: string, params: unknown[]): Promise<void> => {
|
|
27
|
+
ConsoleLogger.log(name, logLevel, message, params);
|
|
28
|
+
|
|
29
|
+
},
|
|
30
|
+
child: async (_name: string): Promise<void> => { },
|
|
31
|
+
dispose: (): void => {
|
|
32
|
+
},
|
|
33
|
+
setClient: (_client: ILoggerClient | undefined): void => {
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
if (isBound(ILoggerServer)) {
|
|
37
|
+
rebind(ILoggerServer).toConstantValue(logger);
|
|
38
|
+
} else {
|
|
39
|
+
bind(ILoggerServer).toConstantValue(logger);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (isBound(ILoggerServer)) {
|
|
43
|
+
rebind(LoggerFactory).toFactory(ctx =>
|
|
44
|
+
(name: string) => {
|
|
45
|
+
const child = new Container({ defaultScope: 'Singleton' });
|
|
46
|
+
child.parent = ctx.container;
|
|
47
|
+
child.bind(ILogger).to(Logger).inTransientScope();
|
|
48
|
+
child.bind(LoggerName).toConstantValue(name);
|
|
49
|
+
return child.get(ILogger);
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
} else {
|
|
53
|
+
bind(LoggerFactory).toFactory(ctx =>
|
|
54
|
+
(name: string) => {
|
|
55
|
+
const child = new Container({ defaultScope: 'Singleton' });
|
|
56
|
+
child.parent = ctx.container;
|
|
57
|
+
child.bind(ILogger).to(Logger).inTransientScope();
|
|
58
|
+
child.bind(LoggerName).toConstantValue(name);
|
|
59
|
+
return child.get(ILogger);
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 EclipseSource 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
|
+
import { Event, RpcProxy, Channel, RpcProxyFactory, Emitter } from '../../common';
|
|
17
|
+
import { injectable } from 'inversify';
|
|
18
|
+
import { ServiceConnectionProvider } from '../../browser/messaging/service-connection-provider';
|
|
19
|
+
import { ConnectionSource } from '../../browser/messaging/connection-source';
|
|
20
|
+
|
|
21
|
+
@injectable()
|
|
22
|
+
export class FrontendOnlyConnectionSource implements ConnectionSource {
|
|
23
|
+
onConnectionDidOpen = new Emitter<Channel>().event;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@injectable()
|
|
27
|
+
export class FrontendOnlyServiceConnectionProvider extends ServiceConnectionProvider {
|
|
28
|
+
onSocketDidOpen = Event.None;
|
|
29
|
+
onSocketDidClose = Event.None;
|
|
30
|
+
onIncomingMessageActivity = Event.None;
|
|
31
|
+
override createProxy<T extends object>(path: unknown, target?: unknown): RpcProxy<T> {
|
|
32
|
+
console.debug(`[Frontend-Only Fallback] Created proxy connection for ${path}`);
|
|
33
|
+
const factory = target instanceof RpcProxyFactory ? target : new RpcProxyFactory<T>(target);
|
|
34
|
+
return factory.createProxy();
|
|
35
|
+
}
|
|
36
|
+
override listen(path: string, handler: ServiceConnectionProvider.ConnectionHandler, reconnect: boolean): void {
|
|
37
|
+
console.debug('[Frontend-Only Fallback] Listen to websocket connection requested');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 EclipseSource 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
|
+
import { ContainerModule } from 'inversify';
|
|
17
|
+
import { WebSocketConnectionSource } from '../../browser/messaging/ws-connection-source';
|
|
18
|
+
import { FrontendOnlyConnectionSource, FrontendOnlyServiceConnectionProvider } from './frontend-only-service-connection-provider';
|
|
19
|
+
import { ConnectionSource } from '../../browser/messaging/connection-source';
|
|
20
|
+
import { LocalConnectionProvider, RemoteConnectionProvider } from '../../browser/messaging/service-connection-provider';
|
|
21
|
+
|
|
22
|
+
// is loaded directly after the regular message frontend module
|
|
23
|
+
export const messagingFrontendOnlyModule = new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
24
|
+
unbind(WebSocketConnectionSource);
|
|
25
|
+
bind(FrontendOnlyConnectionSource).toSelf().inSingletonScope();
|
|
26
|
+
if (isBound(ConnectionSource)) {
|
|
27
|
+
rebind(ConnectionSource).toService(FrontendOnlyConnectionSource);
|
|
28
|
+
} else {
|
|
29
|
+
bind(ConnectionSource).toService(FrontendOnlyConnectionSource);
|
|
30
|
+
}
|
|
31
|
+
bind(FrontendOnlyServiceConnectionProvider).toSelf().inSingletonScope();
|
|
32
|
+
if (isBound(LocalConnectionProvider)) {
|
|
33
|
+
rebind(LocalConnectionProvider).toService(FrontendOnlyServiceConnectionProvider);
|
|
34
|
+
} else {
|
|
35
|
+
bind(LocalConnectionProvider).toService(FrontendOnlyServiceConnectionProvider);
|
|
36
|
+
}
|
|
37
|
+
if (isBound(RemoteConnectionProvider)) {
|
|
38
|
+
rebind(RemoteConnectionProvider).toService(FrontendOnlyServiceConnectionProvider);
|
|
39
|
+
} else {
|
|
40
|
+
bind(RemoteConnectionProvider).toService(FrontendOnlyServiceConnectionProvider);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
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 { ContainerModule } from 'inversify';
|
|
18
|
+
import { LocalizationServer } from '../../common/i18n/localization-server';
|
|
19
|
+
import { OS, OSBackendProvider } from '../../common/os';
|
|
20
|
+
import { Localization } from '../../common/i18n/localization';
|
|
21
|
+
|
|
22
|
+
// loaded after regular preload module
|
|
23
|
+
export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
24
|
+
const frontendOnlyLocalizationServer: LocalizationServer = {
|
|
25
|
+
loadLocalization: async (languageId: string): Promise<Localization> => ({ translations: {}, languageId })
|
|
26
|
+
};
|
|
27
|
+
if (isBound(LocalizationServer)) {
|
|
28
|
+
rebind(LocalizationServer).toConstantValue(frontendOnlyLocalizationServer);
|
|
29
|
+
} else {
|
|
30
|
+
bind(LocalizationServer).toConstantValue(frontendOnlyLocalizationServer);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const frontendOnlyOSBackendProvider: OSBackendProvider = {
|
|
34
|
+
getBackendOS: async (): Promise<OS.Type> => {
|
|
35
|
+
if (window.navigator.platform.startsWith('Win')) {
|
|
36
|
+
return OS.Type.Windows;
|
|
37
|
+
} else if (window.navigator.platform.startsWith('Mac')) {
|
|
38
|
+
return OS.Type.OSX;
|
|
39
|
+
} else {
|
|
40
|
+
return OS.Type.Linux;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
if (isBound(OSBackendProvider)) {
|
|
45
|
+
rebind(OSBackendProvider).toConstantValue(frontendOnlyOSBackendProvider);
|
|
46
|
+
} else {
|
|
47
|
+
bind(OSBackendProvider).toConstantValue(frontendOnlyOSBackendProvider);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
@@ -23,6 +23,7 @@ export const ApplicationServer = Symbol('ApplicationServer');
|
|
|
23
23
|
export interface ApplicationServer {
|
|
24
24
|
getExtensionsInfos(): Promise<ExtensionInfo[]>;
|
|
25
25
|
getApplicationInfo(): Promise<ApplicationInfo | undefined>;
|
|
26
|
+
getApplicationRoot(): Promise<string>;
|
|
26
27
|
/**
|
|
27
28
|
* @deprecated since 1.25.0. Use `OS.backend.type()` instead.
|
|
28
29
|
*/
|
|
@@ -14,8 +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 { expect } from 'chai';
|
|
17
|
+
import { expect, spy, use } from 'chai';
|
|
18
18
|
import { DisposableCollection, Disposable } from './disposable';
|
|
19
|
+
import * as spies from 'chai-spies';
|
|
20
|
+
|
|
21
|
+
use(spies);
|
|
19
22
|
|
|
20
23
|
describe('Disposables', () => {
|
|
21
24
|
it('Is safe to use Disposable.NULL', () => {
|
|
@@ -26,4 +29,66 @@ describe('Disposables', () => {
|
|
|
26
29
|
expect(collectionA.disposed, 'A should be disposed after being disposed.').to.be.true;
|
|
27
30
|
expect(collectionB.disposed, 'B should not be disposed because A was disposed.').to.be.false;
|
|
28
31
|
});
|
|
32
|
+
|
|
33
|
+
it('Collection is auto-pruned when an element is disposed', () => {
|
|
34
|
+
const onDispose = spy(() => { });
|
|
35
|
+
const elementDispose = () => { };
|
|
36
|
+
|
|
37
|
+
const collection = new DisposableCollection();
|
|
38
|
+
collection.onDispose(onDispose);
|
|
39
|
+
|
|
40
|
+
const disposable1 = Disposable.create(elementDispose);
|
|
41
|
+
collection.push(disposable1);
|
|
42
|
+
expect(collection['disposables']).to.have.lengthOf(1);
|
|
43
|
+
|
|
44
|
+
const disposable2 = Disposable.create(elementDispose);
|
|
45
|
+
collection.push(disposable2);
|
|
46
|
+
expect(collection['disposables']).to.have.lengthOf(2);
|
|
47
|
+
|
|
48
|
+
disposable1.dispose();
|
|
49
|
+
expect(collection['disposables']).to.have.lengthOf(1);
|
|
50
|
+
expect(onDispose).to.have.not.been.called();
|
|
51
|
+
expect(collection.disposed).is.false;
|
|
52
|
+
|
|
53
|
+
// Test that calling dispose on an already disposed element doesn't
|
|
54
|
+
// alter the collection state
|
|
55
|
+
disposable1.dispose();
|
|
56
|
+
expect(collection['disposables']).to.have.lengthOf(1);
|
|
57
|
+
expect(onDispose).to.have.not.been.called();
|
|
58
|
+
expect(collection.disposed).is.false;
|
|
59
|
+
|
|
60
|
+
disposable2.dispose();
|
|
61
|
+
expect(collection['disposables']).to.be.empty;
|
|
62
|
+
expect(collection.disposed).is.true;
|
|
63
|
+
expect(onDispose).to.have.been.called.once;
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('onDispose is only called once on actual disposal of elements', () => {
|
|
67
|
+
const onDispose = spy(() => { });
|
|
68
|
+
const elementDispose = spy(() => { });
|
|
69
|
+
|
|
70
|
+
const collection = new DisposableCollection();
|
|
71
|
+
collection.onDispose(onDispose);
|
|
72
|
+
|
|
73
|
+
// if the collection is empty 'onDispose' is not called
|
|
74
|
+
collection.dispose();
|
|
75
|
+
expect(onDispose).to.not.have.been.called();
|
|
76
|
+
|
|
77
|
+
// 'onDispose' is called because we actually dispose an element
|
|
78
|
+
collection.push(Disposable.create(elementDispose));
|
|
79
|
+
collection.dispose();
|
|
80
|
+
expect(elementDispose).to.have.been.called.once;
|
|
81
|
+
expect(onDispose).to.have.been.called.once;
|
|
82
|
+
|
|
83
|
+
// if the collection is empty 'onDispose' is not called and no further element is disposed
|
|
84
|
+
collection.dispose();
|
|
85
|
+
expect(elementDispose).to.have.been.called.once;
|
|
86
|
+
expect(onDispose).to.have.been.called.once;
|
|
87
|
+
|
|
88
|
+
// 'onDispose' is not called again even if we actually dispose an element
|
|
89
|
+
collection.push(Disposable.create(elementDispose));
|
|
90
|
+
collection.dispose();
|
|
91
|
+
expect(elementDispose).to.have.been.called.twice;
|
|
92
|
+
expect(onDispose).to.have.been.called.once;
|
|
93
|
+
});
|
|
29
94
|
});
|
package/src/common/disposable.ts
CHANGED
|
@@ -47,6 +47,34 @@ Object.defineProperty(Disposable, 'NULL', {
|
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Utility for tracking a collection of Disposable objects.
|
|
52
|
+
*
|
|
53
|
+
* This utility provides a number of benefits over just using an array of
|
|
54
|
+
* Disposables:
|
|
55
|
+
*
|
|
56
|
+
* - the collection is auto-pruned when an element it contains is disposed by
|
|
57
|
+
* any code that has a reference to it
|
|
58
|
+
* - you can register to be notified when all elements in the collection have
|
|
59
|
+
* been disposed [1]
|
|
60
|
+
* - you can conveniently dispose all elements by calling dispose()
|
|
61
|
+
* on the collection
|
|
62
|
+
*
|
|
63
|
+
* Unlike an array, however, this utility does not give you direct access to
|
|
64
|
+
* its elements.
|
|
65
|
+
*
|
|
66
|
+
* Being notified when all elements are disposed is simple:
|
|
67
|
+
* ```
|
|
68
|
+
* const dc = new DisposableCollection(myDisposables);
|
|
69
|
+
* dc.onDispose(() => {
|
|
70
|
+
* console.log('All elements in the collection have been disposed');
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* [1] The collection will notify only once. It will continue to function in so
|
|
75
|
+
* far as accepting new Disposables and pruning them when they are disposed, but
|
|
76
|
+
* such activity will never result in another notification.
|
|
77
|
+
*/
|
|
50
78
|
export class DisposableCollection implements Disposable {
|
|
51
79
|
|
|
52
80
|
protected readonly disposables: Disposable[] = [];
|
|
@@ -133,3 +161,28 @@ export function disposableTimeout(...args: Parameters<typeof setTimeout>): Dispo
|
|
|
133
161
|
const handle = setTimeout(...args);
|
|
134
162
|
return { dispose: () => clearTimeout(handle) };
|
|
135
163
|
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Wrapper for a {@link Disposable} that is not available immediately.
|
|
167
|
+
*/
|
|
168
|
+
export class DisposableWrapper implements Disposable {
|
|
169
|
+
|
|
170
|
+
private disposed = false;
|
|
171
|
+
private disposable: Disposable | undefined = undefined;
|
|
172
|
+
|
|
173
|
+
set(disposable: Disposable): void {
|
|
174
|
+
if (this.disposed) {
|
|
175
|
+
disposable.dispose();
|
|
176
|
+
} else {
|
|
177
|
+
this.disposable = disposable;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
dispose(): void {
|
|
182
|
+
this.disposed = true;
|
|
183
|
+
if (this.disposable) {
|
|
184
|
+
this.disposable.dispose();
|
|
185
|
+
this.disposable = undefined;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { URI as Uri } from 'vscode-uri';
|
|
18
|
-
import URI from '
|
|
19
|
-
import { isWindows } from '
|
|
18
|
+
import URI from './uri';
|
|
19
|
+
import { isWindows } from './os';
|
|
20
20
|
|
|
21
21
|
export namespace FileUri {
|
|
22
22
|
|
package/src/common/index.ts
CHANGED
|
@@ -19,9 +19,13 @@ import { UriComponents } from '../uri';
|
|
|
19
19
|
import { escapeIcons } from './icon-utilities';
|
|
20
20
|
import { isObject, isString } from '../types';
|
|
21
21
|
|
|
22
|
+
export interface MarkdownStringTrustedOptions {
|
|
23
|
+
readonly enabledCommands: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
|
|
22
26
|
export interface MarkdownString {
|
|
23
27
|
readonly value: string;
|
|
24
|
-
readonly isTrusted?: boolean;
|
|
28
|
+
readonly isTrusted?: boolean | MarkdownStringTrustedOptions;
|
|
25
29
|
readonly supportThemeIcons?: boolean;
|
|
26
30
|
readonly supportHtml?: boolean;
|
|
27
31
|
readonly baseUri?: UriComponents;
|
|
@@ -45,9 +49,8 @@ export namespace MarkdownString {
|
|
|
45
49
|
// Copied from https://github.com/microsoft/vscode/blob/7d9b1c37f8e5ae3772782ba3b09d827eb3fdd833/src/vs/base/common/htmlContent.ts
|
|
46
50
|
|
|
47
51
|
export class MarkdownStringImpl implements MarkdownString {
|
|
48
|
-
|
|
49
52
|
public value: string;
|
|
50
|
-
public isTrusted?: boolean;
|
|
53
|
+
public isTrusted?: boolean | MarkdownStringTrustedOptions;
|
|
51
54
|
public supportThemeIcons?: boolean;
|
|
52
55
|
public supportHtml?: boolean;
|
|
53
56
|
public baseUri?: UriComponents;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2024 EclipseSource 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
|
+
import { expect } from 'chai';
|
|
17
|
+
import { CompositeMenuNode } from './composite-menu-node';
|
|
18
|
+
import { CompoundMenuNodeRole } from './menu-types';
|
|
19
|
+
|
|
20
|
+
describe('composite-menu-node', () => {
|
|
21
|
+
describe('updateOptions', () => {
|
|
22
|
+
it('should update undefined node properties', () => {
|
|
23
|
+
const node = new CompositeMenuNode('test-id');
|
|
24
|
+
node.updateOptions({ label: 'node-label', icon: 'icon', order: 'a', role: CompoundMenuNodeRole.Flat, when: 'node-condition' });
|
|
25
|
+
expect(node.label).to.equal('node-label');
|
|
26
|
+
expect(node.icon).to.equal('icon');
|
|
27
|
+
expect(node.order).to.equal('a');
|
|
28
|
+
expect(node.role).to.equal(CompoundMenuNodeRole.Flat);
|
|
29
|
+
expect(node.when).to.equal('node-condition');
|
|
30
|
+
});
|
|
31
|
+
it('should update existing node properties', () => {
|
|
32
|
+
const node = new CompositeMenuNode('test-id', 'test-label', { icon: 'test-icon', order: 'a1', role: CompoundMenuNodeRole.Submenu, when: 'test-condition' });
|
|
33
|
+
node.updateOptions({ label: 'NEW-label', icon: 'NEW-icon', order: 'a2', role: CompoundMenuNodeRole.Flat, when: 'NEW-condition' });
|
|
34
|
+
expect(node.label).to.equal('NEW-label');
|
|
35
|
+
expect(node.icon).to.equal('NEW-icon');
|
|
36
|
+
expect(node.order).to.equal('a2');
|
|
37
|
+
expect(node.role).to.equal(CompoundMenuNodeRole.Flat);
|
|
38
|
+
expect(node.when).to.equal('NEW-condition');
|
|
39
|
+
});
|
|
40
|
+
it('should update only the icon without affecting other properties', () => {
|
|
41
|
+
const node = new CompositeMenuNode('test-id', 'test-label', { icon: 'test-icon', order: 'a' });
|
|
42
|
+
node.updateOptions({ icon: 'NEW-icon' });
|
|
43
|
+
expect(node.label).to.equal('test-label');
|
|
44
|
+
expect(node.icon).to.equal('NEW-icon');
|
|
45
|
+
expect(node.order).to.equal('a');
|
|
46
|
+
});
|
|
47
|
+
it('should not allow to unset properties', () => {
|
|
48
|
+
const node = new CompositeMenuNode('test-id', 'test-label', { icon: 'test-icon', order: 'a' });
|
|
49
|
+
node.updateOptions({ icon: undefined });
|
|
50
|
+
expect(node.label).to.equal('test-label');
|
|
51
|
+
expect(node.icon).to.equal('test-icon');
|
|
52
|
+
expect(node.order).to.equal('a');
|
|
53
|
+
});
|
|
54
|
+
it('should allow to set empty strings in properties', () => {
|
|
55
|
+
const node = new CompositeMenuNode('test-id', 'test-label');
|
|
56
|
+
node.updateOptions({ label: '' });
|
|
57
|
+
expect(node.label).to.equal('');
|
|
58
|
+
});
|
|
59
|
+
it('should not cause side effects when updating a property to its existing value', () => {
|
|
60
|
+
const node = new CompositeMenuNode('test-id', 'test-label', { icon: 'test-icon', order: 'a' });
|
|
61
|
+
node.updateOptions({ icon: 'test-icon' });
|
|
62
|
+
expect(node.label).to.equal('test-label');
|
|
63
|
+
expect(node.icon).to.equal('test-icon');
|
|
64
|
+
expect(node.order).to.equal('a');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -63,11 +63,11 @@ export class CompositeMenuNode implements MutableCompoundMenuNode {
|
|
|
63
63
|
|
|
64
64
|
updateOptions(options?: SubMenuOptions): void {
|
|
65
65
|
if (options) {
|
|
66
|
-
this.iconClass
|
|
67
|
-
this.label
|
|
68
|
-
this.order
|
|
69
|
-
this._role
|
|
70
|
-
this._when
|
|
66
|
+
this.iconClass = options.icon ?? options.iconClass ?? this.iconClass;
|
|
67
|
+
this.label = options.label ?? this.label;
|
|
68
|
+
this.order = options.order ?? this.order;
|
|
69
|
+
this._role = options.role ?? this._role;
|
|
70
|
+
this._when = options.when ?? this._when;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { CommandRegistry, Command } from '../command';
|
|
17
|
+
import { inject, injectable, named } from 'inversify';
|
|
18
|
+
import { Command, CommandRegistry } from '../command';
|
|
20
19
|
import { ContributionProvider } from '../contribution-provider';
|
|
21
|
-
import {
|
|
22
|
-
import { CompoundMenuNode, MenuAction, MenuNode, MenuPath, MutableCompoundMenuNode, SubMenuOptions } from './menu-types';
|
|
20
|
+
import { Disposable } from '../disposable';
|
|
23
21
|
import { ActionMenuNode } from './action-menu-node';
|
|
22
|
+
import { CompositeMenuNode, CompositeMenuNodeWrapper } from './composite-menu-node';
|
|
23
|
+
import { CompoundMenuNode, MenuAction, MenuNode, MenuNodeMetadata, MenuPath, MutableCompoundMenuNode, SubMenuOptions } from './menu-types';
|
|
24
24
|
|
|
25
25
|
export const MenuContribution = Symbol('MenuContribution');
|
|
26
26
|
|
|
@@ -157,6 +157,23 @@ export class MenuModelRegistry {
|
|
|
157
157
|
linkSubmenu(parentPath: MenuPath | string, childId: string | MenuPath, options?: SubMenuOptions, group?: string): Disposable {
|
|
158
158
|
const child = this.getMenuNode(childId);
|
|
159
159
|
const parent = this.getMenuNode(parentPath, group);
|
|
160
|
+
|
|
161
|
+
const isRecursive = (node: MenuNodeMetadata, childNode: MenuNodeMetadata): boolean => {
|
|
162
|
+
if (node.id === childNode.id) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
if (node.parent) {
|
|
166
|
+
return isRecursive(node.parent, childNode);
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// check for menu contribution recursion
|
|
172
|
+
if (isRecursive(parent, child)) {
|
|
173
|
+
console.warn(`Recursive menu contribution detected: ${child.id} is already in hierarchy of ${parent.id}.`);
|
|
174
|
+
return Disposable.NULL;
|
|
175
|
+
}
|
|
176
|
+
|
|
160
177
|
const wrapper = new CompositeMenuNodeWrapper(child, parent, options);
|
|
161
178
|
return parent.addNode(wrapper);
|
|
162
179
|
}
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { CommandContribution, CommandRegistry } from '../command';
|
|
18
|
-
import { MenuContribution, MenuModelRegistry } from './menu-model-registry';
|
|
19
17
|
import * as chai from 'chai';
|
|
18
|
+
import { CommandContribution, CommandRegistry } from '../command';
|
|
20
19
|
import { CompositeMenuNode } from './composite-menu-node';
|
|
20
|
+
import { MenuContribution, MenuModelRegistry } from './menu-model-registry';
|
|
21
21
|
|
|
22
22
|
const expect = chai.expect;
|
|
23
23
|
|
|
@@ -61,6 +61,25 @@ describe('menu-model-registry', () => {
|
|
|
61
61
|
expect(openGroup.children.length).equals(2);
|
|
62
62
|
expect(openGroup.label).undefined;
|
|
63
63
|
});
|
|
64
|
+
|
|
65
|
+
it('Should not allow to register cyclic menus.', () => {
|
|
66
|
+
const fileMenu = ['main', 'File'];
|
|
67
|
+
const fileOpenMenu = [...fileMenu, '0_open'];
|
|
68
|
+
const fileCloseMenu = [...fileMenu, '1_close'];
|
|
69
|
+
const service = createMenuRegistry({
|
|
70
|
+
registerMenus(menuRegistry: MenuModelRegistry): void {
|
|
71
|
+
menuRegistry.registerSubmenu(fileMenu, 'File');
|
|
72
|
+
// open menu should not be added to open menu
|
|
73
|
+
menuRegistry.linkSubmenu(fileOpenMenu, fileOpenMenu);
|
|
74
|
+
// close menu should be added
|
|
75
|
+
menuRegistry.linkSubmenu(fileOpenMenu, fileCloseMenu);
|
|
76
|
+
}
|
|
77
|
+
}, {
|
|
78
|
+
registerCommands(reg: CommandRegistry): void { }
|
|
79
|
+
});
|
|
80
|
+
const all = service.getMenu() as CompositeMenuNode;
|
|
81
|
+
expect(menuStructureToString(all.children[0] as CompositeMenuNode)).equals('File(0_open(1_close),1_close())');
|
|
82
|
+
});
|
|
64
83
|
});
|
|
65
84
|
});
|
|
66
85
|
|
|
@@ -71,3 +90,12 @@ function createMenuRegistry(menuContrib: MenuContribution, commandContrib: Comma
|
|
|
71
90
|
menuReg.onStart();
|
|
72
91
|
return menuReg;
|
|
73
92
|
}
|
|
93
|
+
|
|
94
|
+
function menuStructureToString(node: CompositeMenuNode): string {
|
|
95
|
+
return node.children.map(c => {
|
|
96
|
+
if (c instanceof CompositeMenuNode) {
|
|
97
|
+
return `${c.id}(${menuStructureToString(c)})`;
|
|
98
|
+
}
|
|
99
|
+
return c.id;
|
|
100
|
+
}).join(',');
|
|
101
|
+
}
|
|
@@ -21,7 +21,7 @@ import { addExtension } from 'msgpackr';
|
|
|
21
21
|
* required for the default RPC communication. MsgPackR extensions
|
|
22
22
|
* are installed globally on both ends of the communication channel.
|
|
23
23
|
* (frontend-backend, pluginExt-pluginMain).
|
|
24
|
-
* Is implemented as singleton as it is
|
|
24
|
+
* Is implemented as singleton as it is also used in plugin child processes which have no access to inversify.
|
|
25
25
|
*/
|
|
26
26
|
export class MsgPackExtensionManager {
|
|
27
27
|
private static readonly INSTANCE = new MsgPackExtensionManager();
|