@theia/core 1.22.1 → 1.23.0-next.26
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 +5 -5
- package/lib/browser/about-dialog.js +5 -5
- package/lib/browser/about-dialog.js.map +1 -1
- package/lib/browser/authentication-service.d.ts +52 -22
- package/lib/browser/authentication-service.d.ts.map +1 -1
- package/lib/browser/authentication-service.js +49 -44
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +5 -5
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js +1 -1
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +6 -6
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-service.js +5 -5
- package/lib/browser/breadcrumbs/breadcrumbs-service.js.map +1 -1
- package/lib/browser/breadcrumbs/index.js +1 -1
- package/lib/browser/browser-clipboard-service.js +3 -3
- package/lib/browser/browser-clipboard-service.js.map +1 -1
- package/lib/browser/color-application-contribution.js +4 -4
- package/lib/browser/color-application-contribution.js.map +1 -1
- package/lib/browser/color-registry.js +2 -2
- package/lib/browser/color-registry.js.map +1 -1
- package/lib/browser/command-open-handler.js +2 -2
- package/lib/browser/command-open-handler.js.map +1 -1
- package/lib/browser/common-frontend-contribution.js +24 -24
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/connection-status-service.js +15 -13
- package/lib/browser/connection-status-service.js.map +1 -1
- package/lib/browser/connection-status-service.spec.js +18 -18
- package/lib/browser/connection-status-service.spec.js.map +1 -1
- package/lib/browser/context-key-service.js +1 -1
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/context-menu-renderer.js +1 -1
- package/lib/browser/context-menu-renderer.js.map +1 -1
- package/lib/browser/core-preferences.js +1 -1
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/credentials-service.js +2 -2
- package/lib/browser/credentials-service.js.map +1 -1
- package/lib/browser/decorations-service.js +1 -1
- package/lib/browser/decorations-service.js.map +1 -1
- package/lib/browser/dialogs/react-dialog.js +2 -2
- package/lib/browser/dialogs/react-dialog.js.map +1 -1
- package/lib/browser/dialogs.js +11 -11
- package/lib/browser/dialogs.js.map +1 -1
- package/lib/browser/diff-uris.js +3 -3
- package/lib/browser/diff-uris.js.map +1 -1
- package/lib/browser/encoding-registry.js +3 -3
- package/lib/browser/encoding-registry.js.map +1 -1
- package/lib/browser/external-uri-service.js +1 -1
- package/lib/browser/external-uri-service.js.map +1 -1
- package/lib/browser/frontend-application-bindings.js +2 -2
- package/lib/browser/frontend-application-bindings.js.map +1 -1
- package/lib/browser/frontend-application-config-provider.js +1 -1
- package/lib/browser/frontend-application-config-provider.js.map +1 -1
- package/lib/browser/frontend-application-config-provider.spec.js +7 -7
- package/lib/browser/frontend-application-config-provider.spec.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +23 -20
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application-state.js +2 -2
- package/lib/browser/frontend-application-state.js.map +1 -1
- package/lib/browser/frontend-application.d.ts +4 -2
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +30 -36
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/http-open-handler.js +3 -3
- package/lib/browser/http-open-handler.js.map +1 -1
- package/lib/browser/icon-theme-contribution.js +5 -5
- package/lib/browser/icon-theme-contribution.js.map +1 -1
- package/lib/browser/icon-theme-service.js +4 -4
- package/lib/browser/icon-theme-service.js.map +1 -1
- package/lib/browser/index.js +1 -1
- package/lib/browser/json-schema-store.js +5 -5
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/keybinding.js +11 -11
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +9 -9
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +4 -4
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js +4 -4
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +3 -3
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
- package/lib/browser/keyboard/index.js +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.js +5 -5
- package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.spec.js +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
- package/lib/browser/keyboard/keys.js +1 -1
- package/lib/browser/keyboard/keys.spec.js +2 -2
- package/lib/browser/keyboard/keys.spec.js.map +1 -1
- package/lib/browser/label-parser.js +1 -1
- package/lib/browser/label-parser.js.map +1 -1
- package/lib/browser/label-parser.spec.js +38 -38
- package/lib/browser/label-parser.spec.js.map +1 -1
- package/lib/browser/label-provider.js +8 -8
- package/lib/browser/label-provider.js.map +1 -1
- package/lib/browser/label-provider.spec.js +5 -5
- package/lib/browser/label-provider.spec.js.map +1 -1
- package/lib/browser/language-service.js +1 -1
- package/lib/browser/language-service.js.map +1 -1
- package/lib/browser/logger-frontend-module.js +1 -1
- package/lib/browser/logger-frontend-module.js.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.js +3 -3
- package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +13 -13
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/menu/context-menu-context.js +1 -1
- package/lib/browser/menu/context-menu-context.js.map +1 -1
- package/lib/browser/messaging/index.js +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +7 -7
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/mime-service.js +1 -1
- package/lib/browser/mime-service.js.map +1 -1
- package/lib/browser/navigatable.js +1 -1
- package/lib/browser/opener-service.js +3 -2
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/performance/frontend-stopwatch.d.ts +21 -0
- package/lib/browser/performance/frontend-stopwatch.d.ts.map +1 -0
- package/lib/browser/performance/frontend-stopwatch.js +71 -0
- package/lib/browser/performance/frontend-stopwatch.js.map +1 -0
- package/lib/browser/performance/index.d.ts +18 -0
- package/lib/browser/performance/index.d.ts.map +1 -0
- package/lib/browser/performance/index.js +30 -0
- package/lib/browser/performance/index.js.map +1 -0
- package/lib/browser/performance/measurement-frontend-bindings.d.ts +20 -0
- package/lib/browser/performance/measurement-frontend-bindings.d.ts.map +1 -0
- package/lib/browser/performance/measurement-frontend-bindings.js +33 -0
- package/lib/browser/performance/measurement-frontend-bindings.js.map +1 -0
- package/lib/browser/preferences/index.js +1 -1
- package/lib/browser/preferences/preference-configurations.js +4 -4
- package/lib/browser/preferences/preference-configurations.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +8 -8
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-language-override-service.d.ts +11 -0
- package/lib/browser/preferences/preference-language-override-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-language-override-service.js +21 -7
- package/lib/browser/preferences/preference-language-override-service.js.map +1 -1
- package/lib/browser/preferences/preference-provider.js +2 -2
- package/lib/browser/preferences/preference-provider.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +6 -6
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +3 -3
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-service.js +8 -8
- package/lib/browser/preferences/preference-service.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +5 -5
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/preferences/test/index.js +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
- package/lib/browser/progress-bar.js +4 -4
- package/lib/browser/progress-bar.js.map +1 -1
- package/lib/browser/progress-client.js +3 -3
- package/lib/browser/progress-client.js.map +1 -1
- package/lib/browser/progress-location-service.js +1 -1
- package/lib/browser/progress-location-service.js.map +1 -1
- package/lib/browser/progress-location-service.spec.js +1 -1
- package/lib/browser/progress-location-service.spec.js.map +1 -1
- package/lib/browser/progress-status-bar-item.js +2 -2
- package/lib/browser/progress-status-bar-item.js.map +1 -1
- package/lib/browser/quick-input/index.js +1 -1
- package/lib/browser/quick-input/quick-command-frontend-contribution.js +5 -5
- package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +9 -9
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/quick-input/quick-help-service.js +3 -3
- package/lib/browser/quick-input/quick-help-service.js.map +1 -1
- package/lib/browser/quick-input/quick-input-frontend-contribution.js +3 -3
- package/lib/browser/quick-input/quick-input-frontend-contribution.js.map +1 -1
- package/lib/browser/quick-input/quick-input-service.js +1 -1
- package/lib/browser/quick-input/quick-input-service.spec.js +15 -15
- package/lib/browser/quick-input/quick-input-service.spec.js.map +1 -1
- package/lib/browser/quick-input/quick-pick-service-impl.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-pick-service-impl.js +3 -3
- package/lib/browser/quick-input/quick-pick-service-impl.js.map +1 -1
- package/lib/browser/quick-input/quick-view-service.js +4 -4
- package/lib/browser/quick-input/quick-view-service.js.map +1 -1
- package/lib/browser/resource-context-key.js +4 -4
- package/lib/browser/resource-context-key.js.map +1 -1
- package/lib/browser/saveable.d.ts +17 -2
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +71 -24
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/application-shell-mouse-tracker.js +5 -5
- package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +16 -1
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +76 -64
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/current-widget-command-adapter.js.map +1 -1
- package/lib/browser/shell/index.js +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +7 -7
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/side-panel-handler.d.ts +1 -0
- package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
- package/lib/browser/shell/side-panel-handler.js +26 -14
- package/lib/browser/shell/side-panel-handler.js.map +1 -1
- package/lib/browser/shell/side-panel-toolbar.js.map +1 -1
- package/lib/browser/shell/sidebar-bottom-menu-widget.js +1 -1
- package/lib/browser/shell/sidebar-bottom-menu-widget.js.map +1 -1
- package/lib/browser/shell/sidebar-menu-widget.js +2 -2
- package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
- package/lib/browser/shell/sidebar-top-menu-widget.js +1 -1
- package/lib/browser/shell/sidebar-top-menu-widget.js.map +1 -1
- package/lib/browser/shell/split-panels.js +1 -1
- package/lib/browser/shell/split-panels.js.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.js +3 -3
- package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar.js +12 -12
- package/lib/browser/shell/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar.spec.js +14 -14
- package/lib/browser/shell/tab-bar-toolbar.spec.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +1 -0
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/shell/tab-bars.spec.js +9 -9
- package/lib/browser/shell/tab-bars.spec.js.map +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts +3 -2
- package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.js +4 -4
- package/lib/browser/shell/theia-dock-panel.js.map +1 -1
- package/lib/browser/shell/view-contribution.js +5 -5
- package/lib/browser/shell/view-contribution.js.map +1 -1
- package/lib/browser/source-tree/index.js +1 -1
- package/lib/browser/source-tree/source-tree-widget.d.ts.map +1 -1
- package/lib/browser/source-tree/source-tree-widget.js +7 -8
- package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
- package/lib/browser/source-tree/source-tree.d.ts.map +1 -1
- package/lib/browser/source-tree/source-tree.js +2 -1
- package/lib/browser/source-tree/source-tree.js.map +1 -1
- package/lib/browser/source-tree/tree-source.js +2 -2
- package/lib/browser/source-tree/tree-source.js.map +1 -1
- package/lib/browser/status-bar/index.js +1 -1
- package/lib/browser/status-bar/status-bar.js +6 -6
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/storage-service.js +5 -5
- package/lib/browser/storage-service.js.map +1 -1
- package/lib/browser/storage-service.spec.js +4 -4
- package/lib/browser/storage-service.spec.js.map +1 -1
- package/lib/browser/test/mock-opener-service.js +1 -1
- package/lib/browser/test/mock-opener-service.js.map +1 -1
- package/lib/browser/test/mock-storage-service.js +1 -1
- package/lib/browser/test/mock-storage-service.js.map +1 -1
- package/lib/browser/theming.js +1 -1
- package/lib/browser/tooltip-service.js +6 -5
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/fuzzy-search.js +1 -1
- package/lib/browser/tree/fuzzy-search.js.map +1 -1
- package/lib/browser/tree/fuzzy-search.spec.js +2 -2
- package/lib/browser/tree/fuzzy-search.spec.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 +2 -1
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/test/tree-test-container.js +1 -1
- package/lib/browser/tree/test/tree-test-container.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.d.ts +24 -0
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.d.ts.map +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js +68 -0
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js.map +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts +39 -0
- package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts.map +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-model.js +96 -0
- package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts +55 -0
- package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js +194 -0
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -0
- package/lib/browser/tree/tree-compression/index.d.ts +20 -0
- package/lib/browser/tree/tree-compression/index.d.ts.map +1 -0
- package/lib/browser/tree/tree-compression/index.js +32 -0
- package/lib/browser/tree/tree-compression/index.js.map +1 -0
- package/lib/browser/tree/tree-compression/tree-compression-service.d.ts +73 -0
- package/lib/browser/tree/tree-compression/tree-compression-service.d.ts.map +1 -0
- package/lib/browser/tree/tree-compression/tree-compression-service.js +100 -0
- package/lib/browser/tree/tree-compression/tree-compression-service.js.map +1 -0
- package/lib/browser/tree/tree-consistency.spec.js +2 -2
- package/lib/browser/tree/tree-consistency.spec.js.map +1 -1
- package/lib/browser/tree/tree-container.d.ts +46 -1
- package/lib/browser/tree/tree-container.d.ts.map +1 -1
- package/lib/browser/tree/tree-container.js +67 -20
- package/lib/browser/tree/tree-container.js.map +1 -1
- package/lib/browser/tree/tree-decorator.js +2 -2
- package/lib/browser/tree/tree-decorator.js.map +1 -1
- package/lib/browser/tree/tree-decorator.spec.js +10 -10
- package/lib/browser/tree/tree-decorator.spec.js.map +1 -1
- package/lib/browser/tree/tree-expansion.d.ts +1 -1
- package/lib/browser/tree/tree-expansion.d.ts.map +1 -1
- package/lib/browser/tree/tree-expansion.js +3 -3
- package/lib/browser/tree/tree-expansion.js.map +1 -1
- package/lib/browser/tree/tree-expansion.spec.js +15 -15
- package/lib/browser/tree/tree-expansion.spec.js.map +1 -1
- package/lib/browser/tree/tree-iterator.spec.js +22 -22
- package/lib/browser/tree/tree-iterator.spec.js.map +1 -1
- package/lib/browser/tree/tree-label-provider.js +1 -1
- package/lib/browser/tree/tree-label-provider.js.map +1 -1
- package/lib/browser/tree/tree-model.d.ts +2 -1
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +20 -19
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-navigation.js +1 -1
- package/lib/browser/tree/tree-navigation.js.map +1 -1
- package/lib/browser/tree/tree-search.js +5 -5
- package/lib/browser/tree/tree-search.js.map +1 -1
- package/lib/browser/tree/tree-selection-impl.js +3 -3
- package/lib/browser/tree/tree-selection-impl.js.map +1 -1
- package/lib/browser/tree/tree-selection-state.spec.js +6 -6
- package/lib/browser/tree/tree-selection-state.spec.js.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.js +6 -6
- package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +6 -1
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +33 -20
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts +1 -1
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +3 -3
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/tree/tree.spec.js +11 -11
- package/lib/browser/tree/tree.spec.js.map +1 -1
- package/lib/browser/view-container.d.ts +1 -1
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +60 -56
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-manager.js +4 -4
- package/lib/browser/widget-manager.js.map +1 -1
- package/lib/browser/widget-manager.spec.js +3 -3
- package/lib/browser/widget-manager.spec.js.map +1 -1
- package/lib/browser/widget-open-handler.d.ts.map +1 -1
- package/lib/browser/widget-open-handler.js +5 -6
- package/lib/browser/widget-open-handler.js.map +1 -1
- package/lib/browser/widgets/alert-message.js +4 -4
- package/lib/browser/widgets/alert-message.js.map +1 -1
- package/lib/browser/widgets/index.js +1 -1
- package/lib/browser/widgets/react-renderer.js +3 -2
- package/lib/browser/widgets/react-renderer.js.map +1 -1
- package/lib/browser/widgets/react-widget.js +2 -2
- package/lib/browser/widgets/react-widget.js.map +1 -1
- package/lib/browser/widgets/widget.js +4 -4
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/browser/window/default-window-service.js +5 -5
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/test/mock-window-service.js +1 -1
- package/lib/browser/window/test/mock-window-service.js.map +1 -1
- package/lib/browser/window-contribution.js +2 -2
- package/lib/browser/window-contribution.js.map +1 -1
- package/lib/common/command.js +3 -2
- package/lib/common/command.js.map +1 -1
- package/lib/common/contribution-filter/contribution-filter-registry.d.ts +1 -1
- package/lib/common/contribution-filter/contribution-filter-registry.d.ts.map +1 -1
- package/lib/common/contribution-filter/contribution-filter-registry.js +3 -2
- package/lib/common/contribution-filter/contribution-filter-registry.js.map +1 -1
- package/lib/common/contribution-filter/index.js +1 -1
- package/lib/common/encoding-service.js +2 -2
- package/lib/common/encoding-service.js.map +1 -1
- package/lib/common/env-variables/index.js +1 -1
- package/lib/common/event.js.map +1 -1
- package/lib/common/event.spec.js +2 -2
- package/lib/common/event.spec.js.map +1 -1
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +2 -1
- package/lib/common/index.js.map +1 -1
- package/lib/common/keybinding.js.map +1 -1
- package/lib/common/logger-protocol.js +1 -1
- package/lib/common/logger-protocol.js.map +1 -1
- package/lib/common/logger-watcher.js +1 -1
- package/lib/common/logger-watcher.js.map +1 -1
- package/lib/common/logger.js +5 -5
- package/lib/common/logger.js.map +1 -1
- package/lib/common/logger.spec.js +6 -6
- package/lib/common/logger.spec.js.map +1 -1
- package/lib/common/menu.js +4 -3
- package/lib/common/menu.js.map +1 -1
- package/lib/common/message-service-protocol.js +1 -1
- package/lib/common/message-service-protocol.js.map +1 -1
- package/lib/common/message-service.js +2 -2
- package/lib/common/message-service.js.map +1 -1
- package/lib/common/messaging/abstract-connection-provider.js +2 -2
- package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
- package/lib/common/messaging/index.js +1 -1
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/messaging/proxy-factory.spec.js +2 -2
- package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
- package/lib/common/path.spec.js +16 -16
- package/lib/common/path.spec.js.map +1 -1
- package/lib/common/performance/index.d.ts +19 -0
- package/lib/common/performance/index.d.ts.map +1 -0
- package/lib/common/performance/index.js +31 -0
- package/lib/common/performance/index.js.map +1 -0
- package/lib/common/performance/measurement-protocol.d.ts +65 -0
- package/lib/common/performance/measurement-protocol.d.ts.map +1 -0
- package/lib/common/performance/measurement-protocol.js +79 -0
- package/lib/common/performance/measurement-protocol.js.map +1 -0
- package/lib/common/performance/measurement.d.ts +91 -0
- package/lib/common/performance/measurement.d.ts.map +1 -0
- package/lib/common/performance/measurement.js +18 -0
- package/lib/common/performance/measurement.js.map +1 -0
- package/lib/common/performance/stopwatch.d.ts +68 -0
- package/lib/common/performance/stopwatch.d.ts.map +1 -0
- package/lib/common/performance/stopwatch.js +134 -0
- package/lib/common/performance/stopwatch.js.map +1 -0
- package/lib/common/progress-service.js +3 -3
- package/lib/common/progress-service.js.map +1 -1
- package/lib/common/promise-util.d.ts +11 -0
- package/lib/common/promise-util.d.ts.map +1 -1
- package/lib/common/promise-util.js +18 -2
- package/lib/common/promise-util.js.map +1 -1
- package/lib/common/promise-util.spec.js +2 -2
- package/lib/common/promise-util.spec.js.map +1 -1
- package/lib/common/resource.js +5 -4
- package/lib/common/resource.js.map +1 -1
- package/lib/common/selection-service.js +1 -1
- package/lib/common/selection-service.js.map +1 -1
- package/lib/common/stream.js.map +1 -1
- package/lib/common/ternary-search-tree.js +6 -6
- package/lib/common/ternary-search-tree.js.map +1 -1
- package/lib/common/test/expect.js +1 -1
- package/lib/common/test/expect.js.map +1 -1
- package/lib/common/test/mock-logger.js +1 -1
- package/lib/common/test/mock-logger.js.map +1 -1
- package/lib/common/test/mock-resource-provider.js +1 -1
- package/lib/common/test/mock-resource-provider.js.map +1 -1
- package/lib/common/types.d.ts +23 -1
- package/lib/common/types.d.ts.map +1 -1
- package/lib/common/types.js +26 -2
- package/lib/common/types.js.map +1 -1
- package/lib/common/uri.spec.js.map +1 -1
- package/lib/electron-browser/electron-clipboard-service.js +1 -1
- package/lib/electron-browser/electron-clipboard-service.js.map +1 -1
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js +2 -2
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +8 -8
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +5 -5
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +7 -7
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.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-preferences.js +1 -1
- package/lib/electron-browser/window/electron-window-preferences.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +4 -4
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/electron-main/electron-main-application-module.js +4 -4
- package/lib/electron-main/electron-main-application-module.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +0 -4
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +9 -29
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/electron-main-window-service-impl.js +2 -2
- package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
- package/lib/electron-main/electron-native-keymap.js +1 -1
- package/lib/electron-main/electron-native-keymap.js.map +1 -1
- package/lib/electron-main/electron-security-token-service.js +2 -2
- package/lib/electron-main/electron-security-token-service.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +8 -8
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/lib/electron-node/hosting/electron-ws-origin-validator.js +1 -1
- package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js +1 -1
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js.map +1 -1
- package/lib/electron-node/token/electron-token-backend-contribution.js +2 -2
- package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
- package/lib/electron-node/token/electron-token-messaging-contribution.js +2 -2
- package/lib/electron-node/token/electron-token-messaging-contribution.js.map +1 -1
- package/lib/electron-node/token/electron-token-validator.js +2 -2
- package/lib/electron-node/token/electron-token-validator.js.map +1 -1
- package/lib/node/application-server.js +2 -2
- package/lib/node/application-server.js.map +1 -1
- package/lib/node/backend-application-config-provider.js +1 -1
- package/lib/node/backend-application-config-provider.js.map +1 -1
- package/lib/node/backend-application-config-provider.spec.js +1 -1
- package/lib/node/backend-application-config-provider.spec.js.map +1 -1
- package/lib/node/backend-application-module.d.ts.map +1 -1
- package/lib/node/backend-application-module.js +7 -4
- package/lib/node/backend-application-module.js.map +1 -1
- package/lib/node/backend-application.d.ts +2 -2
- package/lib/node/backend-application.d.ts.map +1 -1
- package/lib/node/backend-application.js +17 -35
- package/lib/node/backend-application.js.map +1 -1
- package/lib/node/cli.js +3 -2
- package/lib/node/cli.js.map +1 -1
- package/lib/node/console-logger-server.js +4 -4
- package/lib/node/console-logger-server.js.map +1 -1
- package/lib/node/console-logger-server.spec.js +5 -5
- package/lib/node/console-logger-server.spec.js.map +1 -1
- package/lib/node/env-variables/env-variables-server.js +3 -3
- package/lib/node/env-variables/env-variables-server.js.map +1 -1
- package/lib/node/env-variables/index.js +1 -1
- package/lib/node/environment-utils.js +1 -1
- package/lib/node/environment-utils.js.map +1 -1
- package/lib/node/hosting/backend-application-hosts.js +2 -2
- package/lib/node/hosting/backend-application-hosts.js.map +1 -1
- package/lib/node/hosting/ws-origin-validator.js +2 -2
- package/lib/node/hosting/ws-origin-validator.js.map +1 -1
- package/lib/node/i18n/i18n-backend-module.js +1 -1
- package/lib/node/i18n/i18n-backend-module.js.map +1 -1
- package/lib/node/i18n/localization-backend-contribution.js +3 -3
- package/lib/node/i18n/localization-backend-contribution.js.map +1 -1
- package/lib/node/i18n/localization-contribution.js +4 -4
- package/lib/node/i18n/localization-contribution.js.map +1 -1
- package/lib/node/i18n/localization-provider.js +1 -1
- package/lib/node/i18n/localization-provider.js.map +1 -1
- package/lib/node/index.js +1 -1
- package/lib/node/keytar-server.js +1 -1
- package/lib/node/keytar-server.js.map +1 -1
- package/lib/node/logger-backend-module.js +1 -1
- package/lib/node/logger-backend-module.js.map +1 -1
- package/lib/node/logger-cli-contribution.js +1 -1
- package/lib/node/logger-cli-contribution.js.map +1 -1
- package/lib/node/logger-cli-contribution.spec.js +13 -13
- package/lib/node/logger-cli-contribution.spec.js.map +1 -1
- package/lib/node/main.js +1 -1
- package/lib/node/main.js.map +1 -1
- package/lib/node/messaging/http-websocket-adapter.js +3 -3
- package/lib/node/messaging/http-websocket-adapter.js.map +1 -1
- package/lib/node/messaging/index.js +1 -1
- package/lib/node/messaging/ipc-bootstrap.js +3 -3
- package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
- package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
- package/lib/node/messaging/ipc-connection-provider.js +11 -7
- package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
- package/lib/node/messaging/messaging-backend-module.js +3 -3
- package/lib/node/messaging/messaging-backend-module.js.map +1 -1
- package/lib/node/messaging/messaging-contribution.js +14 -14
- package/lib/node/messaging/messaging-contribution.js.map +1 -1
- package/lib/node/messaging/messaging-listeners.js +3 -3
- package/lib/node/messaging/messaging-listeners.js.map +1 -1
- package/lib/node/performance/index.d.ts +18 -0
- package/lib/node/performance/index.d.ts.map +1 -0
- package/lib/node/performance/index.js +30 -0
- package/lib/node/performance/index.js.map +1 -0
- package/lib/node/performance/measurement-backend-bindings.d.ts +20 -0
- package/lib/node/performance/measurement-backend-bindings.d.ts.map +1 -0
- package/lib/node/performance/measurement-backend-bindings.js +31 -0
- package/lib/node/performance/measurement-backend-bindings.js.map +1 -0
- package/lib/node/performance/node-stopwatch.d.ts +21 -0
- package/lib/node/performance/node-stopwatch.d.ts.map +1 -0
- package/lib/node/performance/node-stopwatch.js +52 -0
- package/lib/node/performance/node-stopwatch.js.map +1 -0
- package/lib/node/process-utils.js +1 -1
- package/lib/node/process-utils.js.map +1 -1
- package/lib/node/process-utils.spec.js +1 -1
- package/lib/node/process-utils.spec.js.map +1 -1
- package/lib/node/ws-request-validators.js +3 -3
- package/lib/node/ws-request-validators.js.map +1 -1
- package/package.json +3 -3
- package/src/browser/authentication-service.ts +103 -59
- package/src/browser/frontend-application-module.ts +4 -0
- package/src/browser/frontend-application.ts +17 -22
- package/src/browser/performance/frontend-stopwatch.ts +62 -0
- package/src/browser/performance/index.ts +18 -0
- package/src/browser/performance/measurement-frontend-bindings.ts +31 -0
- package/src/browser/preferences/preference-language-override-service.ts +17 -3
- package/src/browser/saveable.ts +84 -27
- package/src/browser/shell/application-shell.ts +42 -28
- package/src/browser/shell/side-panel-handler.ts +12 -0
- package/src/browser/shell/tab-bars.ts +1 -0
- package/src/browser/source-tree/source-tree-widget.tsx +6 -9
- package/src/browser/source-tree/source-tree.ts +6 -4
- package/src/browser/style/sidepanel.css +4 -0
- package/src/browser/style/view-container.css +0 -8
- package/src/browser/tree/index.ts +1 -0
- package/src/browser/tree/tree-compression/compressed-tree-expansion-service.ts +46 -0
- package/src/browser/tree/tree-compression/compressed-tree-model.ts +82 -0
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +181 -0
- package/src/browser/tree/tree-compression/index.ts +20 -0
- package/src/browser/tree/tree-compression/tree-compression-service.ts +121 -0
- package/src/browser/tree/tree-compression/tree-compression.css +28 -0
- package/src/browser/tree/tree-container.ts +107 -29
- package/src/browser/tree/tree-expansion.ts +1 -1
- package/src/browser/tree/tree-model.ts +13 -11
- package/src/browser/tree/tree-widget.tsx +30 -12
- package/src/browser/tree/tree.ts +2 -2
- package/src/browser/view-container.ts +27 -23
- package/src/browser/widget-open-handler.ts +1 -3
- package/src/common/event.ts +2 -2
- package/src/common/index.ts +1 -0
- package/src/common/messaging/proxy-factory.ts +1 -1
- package/src/common/performance/index.ts +19 -0
- package/src/common/performance/measurement-protocol.ts +104 -0
- package/src/common/performance/measurement.ts +104 -0
- package/src/common/performance/stopwatch.ts +157 -0
- package/src/common/promise-util.ts +16 -0
- package/src/common/types.ts +41 -1
- package/src/electron-browser/menu/electron-menu-contribution.ts +1 -1
- package/src/electron-main/electron-main-application.ts +1 -22
- package/src/node/backend-application-module.ts +4 -0
- package/src/node/backend-application.ts +10 -33
- package/src/node/messaging/ipc-connection-provider.ts +9 -5
- package/src/node/performance/index.ts +18 -0
- package/src/node/performance/measurement-backend-bindings.ts +35 -0
- package/src/node/performance/node-stopwatch.ts +40 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2021 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License 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 WITH Classpath-exception-2.0
|
|
15
|
+
*******************************************************************************/
|
|
16
|
+
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
+
|
|
19
|
+
import { inject, injectable } from 'inversify';
|
|
20
|
+
import { Measurement, MeasurementOptions } from './measurement';
|
|
21
|
+
import { Stopwatch } from './stopwatch';
|
|
22
|
+
|
|
23
|
+
export const BackendStopwatch = Symbol('BackendStopwatch');
|
|
24
|
+
|
|
25
|
+
/** API path of the stopwatch service that exposes the back-end stopwatch to clients. */
|
|
26
|
+
export const stopwatchPath = '/services/stopwatch';
|
|
27
|
+
|
|
28
|
+
/** Token representing a remote measurement in the {@link BackendStopwatch} protocol. */
|
|
29
|
+
export type RemoteMeasurement = number;
|
|
30
|
+
|
|
31
|
+
export const BackendStopwatchOptions = Symbol('BackendStopwatchOptions');
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A service that exposes the back-end's {@link Stopwatch} to clients
|
|
35
|
+
* via the remote API. If you do not need this service then bind or re-bind
|
|
36
|
+
* the {@link NullBackendStopwatch} implementation to this service interface.
|
|
37
|
+
*/
|
|
38
|
+
export interface BackendStopwatch {
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Create a {@link Measurement} that will compute the time that elapsed on the back-end when logged.
|
|
42
|
+
*
|
|
43
|
+
* @param name the {@link Measurement.name measurement name}
|
|
44
|
+
* @param options optional configuration of the new measurement
|
|
45
|
+
* @returns a token identifying an unique self-timing measurement relative to the back-end's timeline
|
|
46
|
+
*/
|
|
47
|
+
start(name: string, options?: MeasurementOptions): Promise<RemoteMeasurement>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Stop a measurement previously {@link start started} and log in the back-end a measurement of
|
|
51
|
+
* its duration relative to the back-end's timeline.
|
|
52
|
+
*
|
|
53
|
+
* @param measurement token identifying a measurement previously {@link start started}
|
|
54
|
+
* @param message a message to log
|
|
55
|
+
* @param messageArgs optional arguments to the `message`
|
|
56
|
+
*/
|
|
57
|
+
stop(measurement: RemoteMeasurement, message: string, messageArgs: any[]): Promise<void>;
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Default implementation of the (remote) back-end stopwatch service.
|
|
63
|
+
*/
|
|
64
|
+
@injectable()
|
|
65
|
+
export class DefaultBackendStopwatch {
|
|
66
|
+
|
|
67
|
+
readonly measurements = new Map<number, Measurement>();
|
|
68
|
+
|
|
69
|
+
protected idSequence: number = 0;
|
|
70
|
+
|
|
71
|
+
@inject(Stopwatch)
|
|
72
|
+
protected readonly stopwatch: Stopwatch;
|
|
73
|
+
|
|
74
|
+
start(name: string, options?: MeasurementOptions): RemoteMeasurement {
|
|
75
|
+
const result = ++this.idSequence;
|
|
76
|
+
this.measurements.set(result, this.stopwatch.start(name, options));
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
stop(measurementToken: RemoteMeasurement, message: string, messageArgs: any[]): void {
|
|
81
|
+
const measurement = this.measurements.get(measurementToken);
|
|
82
|
+
if (measurement) {
|
|
83
|
+
this.measurements.delete(measurementToken);
|
|
84
|
+
measurement.log(message, ...messageArgs);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* No-op implementation of the (remote) back-end stopwatch service.
|
|
92
|
+
*/
|
|
93
|
+
@injectable()
|
|
94
|
+
export class NullBackendStopwatch implements BackendStopwatch {
|
|
95
|
+
|
|
96
|
+
start(): Promise<RemoteMeasurement> {
|
|
97
|
+
return Promise.resolve(0);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
stop(): Promise<void> {
|
|
101
|
+
return Promise.resolve();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2021 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License 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 WITH Classpath-exception-2.0
|
|
15
|
+
*******************************************************************************/
|
|
16
|
+
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
+
|
|
19
|
+
import { LogLevel } from '../logger';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A `Measurement` counts the time elapsed between its creation when the {@link Stopwatch}
|
|
23
|
+
* is {@link Stopwatch.start started} and when it is {@link stop stopped}.
|
|
24
|
+
*/
|
|
25
|
+
export interface Measurement {
|
|
26
|
+
/**
|
|
27
|
+
* Compute the elapsed time, in milliseconds, if not already done (only has effect on the first invocation).
|
|
28
|
+
* A `NaN` result indicates that the watch was stopped but failed to make a measurement.
|
|
29
|
+
*/
|
|
30
|
+
stop(): number;
|
|
31
|
+
|
|
32
|
+
/** The measurement name. This may show up in the performance measurement framework appropriate to the application context. */
|
|
33
|
+
name: string;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The elapsed time measured, if it has been {@link stop stopped} and measured, or `NaN` if the platform disabled
|
|
37
|
+
* performance measurement.
|
|
38
|
+
*/
|
|
39
|
+
elapsed?: number;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Compute the elapsed time and log a message annotated with that timing information.
|
|
43
|
+
* The message is logged at the level determined by the {@link MeasurementOptions}.
|
|
44
|
+
*
|
|
45
|
+
* @param detail a message detailing what activity was measured
|
|
46
|
+
* @param optionalArgs optional message arguments as per the usual console API
|
|
47
|
+
*/
|
|
48
|
+
log(detail: string, ...optionalArgs: any[]): void;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Compute the elapsed time and log a debug message annotated with that timing information.
|
|
52
|
+
*
|
|
53
|
+
* @param detail a message detailing what activity was measured
|
|
54
|
+
* @param optionalArgs optional message arguments as per the usual console API
|
|
55
|
+
*/
|
|
56
|
+
debug(detail: string, ...optionalArgs: any[]): void;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Compute the elapsed time and log an info message annotated with that timing information.
|
|
60
|
+
*
|
|
61
|
+
* @param detail a message detailing what activity was measured
|
|
62
|
+
* @param optionalArgs optional message arguments as per the usual console API
|
|
63
|
+
*/
|
|
64
|
+
info(detail: string, ...optionalArgs: any[]): void;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Compute the elapsed time and log a warning message annotated with that timing information.
|
|
68
|
+
*
|
|
69
|
+
* @param detail a message detailing what activity was measured
|
|
70
|
+
* @param optionalArgs optional message arguments as per the usual console API
|
|
71
|
+
*/
|
|
72
|
+
warn(detail: string, ...optionalArgs: any[]): void;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Compute the elapsed time and log an error message annotated with that timing information.
|
|
76
|
+
*
|
|
77
|
+
* @param detail a message detailing what activity was measured
|
|
78
|
+
* @param optionalArgs optional message arguments as per the usual console API
|
|
79
|
+
*/
|
|
80
|
+
error(detail: string, ...optionalArgs: any[]): void;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Optional configuration of a {@link Measurement} specified at the time of its creation.
|
|
85
|
+
*/
|
|
86
|
+
export interface MeasurementOptions {
|
|
87
|
+
/**
|
|
88
|
+
* A specific context of the application in which an activity was measured.
|
|
89
|
+
* Results in logs being emitted with a "[<context>]" qualified at the head.
|
|
90
|
+
*/
|
|
91
|
+
context?: string;
|
|
92
|
+
|
|
93
|
+
/** An optional logging level at which to emit the log message. The default value is {@link LogLevel.INFO}. */
|
|
94
|
+
defaultLogLevel?: LogLevel;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Some measurements are measured against a threshold (in millis) that they should not exceed.
|
|
98
|
+
* If omitted, the implied threshold is unlimited time (no threshold).
|
|
99
|
+
*
|
|
100
|
+
* @see {@link Stopwatch.startAsync}
|
|
101
|
+
* @see {@link thresholdLogLevel}
|
|
102
|
+
*/
|
|
103
|
+
thresholdMillis?: number;
|
|
104
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2021 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License 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 WITH Classpath-exception-2.0
|
|
15
|
+
*******************************************************************************/
|
|
16
|
+
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
+
|
|
19
|
+
import { inject, injectable } from 'inversify';
|
|
20
|
+
import { ILogger, LogLevel } from '../logger';
|
|
21
|
+
import { MaybePromise } from '../types';
|
|
22
|
+
import { Measurement, MeasurementOptions } from './measurement';
|
|
23
|
+
|
|
24
|
+
/** The default log level for measurements that are not otherwise configured with a default. */
|
|
25
|
+
const DEFAULT_LOG_LEVEL = LogLevel.INFO;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Configuration of the log messages written by a {@link Measurement}.
|
|
29
|
+
*/
|
|
30
|
+
interface LogOptions extends MeasurementOptions {
|
|
31
|
+
/** A function that computes the current time, in millis, since the start of the application. */
|
|
32
|
+
now: () => number;
|
|
33
|
+
|
|
34
|
+
/** An optional label for the application the start of which (in real time) is the basis of all measurements. */
|
|
35
|
+
owner?: string;
|
|
36
|
+
|
|
37
|
+
/** An optional log level to override any default or dynamic log level for a specific log message. */
|
|
38
|
+
levelOverride?: LogLevel;
|
|
39
|
+
|
|
40
|
+
/** Optional arguments to the log message. The 'optionalArgs' coming in from the {@link Measurement} API are slotted in here. */
|
|
41
|
+
arguments?: any[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* A factory of {@link Measurement}s for performance logging.
|
|
46
|
+
*/
|
|
47
|
+
@injectable()
|
|
48
|
+
export abstract class Stopwatch {
|
|
49
|
+
|
|
50
|
+
@inject(ILogger)
|
|
51
|
+
protected readonly logger: ILogger;
|
|
52
|
+
|
|
53
|
+
protected constructor(protected readonly defaultLogOptions: LogOptions) {
|
|
54
|
+
if (!defaultLogOptions.defaultLogLevel) {
|
|
55
|
+
defaultLogOptions.defaultLogLevel = DEFAULT_LOG_LEVEL;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Create a {@link Measurement} that will compute its elapsed time when logged.
|
|
61
|
+
*
|
|
62
|
+
* @param name the {@link Measurement.name measurement name}
|
|
63
|
+
* @param options optional configuration of the new measurement
|
|
64
|
+
* @returns a self-timing measurement
|
|
65
|
+
*/
|
|
66
|
+
public abstract start(name: string, options?: MeasurementOptions): Measurement;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Wrap an asynchronous function in a {@link Measurement} that logs itself on completion.
|
|
70
|
+
* If obtaining and awaiting the `computation` runs too long according to the threshold
|
|
71
|
+
* set in the `options`, then the log message is a warning, otherwise a debug log.
|
|
72
|
+
*
|
|
73
|
+
* @param name the {@link Measurement.name name of the measurement} to wrap around the function
|
|
74
|
+
* @param description a description of what the function does, to be included in the log
|
|
75
|
+
* @param computation a supplier of the asynchronous function to wrap
|
|
76
|
+
* @param options optional addition configuration as for {@link measure}
|
|
77
|
+
* @returns the wrapped `computation`
|
|
78
|
+
*
|
|
79
|
+
* @see {@link MeasurementOptions.thresholdMillis}
|
|
80
|
+
*/
|
|
81
|
+
public async startAsync<T>(name: string, description: string, computation: () => MaybePromise<T>, options?: MeasurementOptions): Promise<T> {
|
|
82
|
+
const threshold = options?.thresholdMillis ?? Number.POSITIVE_INFINITY;
|
|
83
|
+
|
|
84
|
+
const measure = this.start(name, options);
|
|
85
|
+
const result = await computation();
|
|
86
|
+
if (measure.stop() > threshold) {
|
|
87
|
+
measure.warn(`${description} took longer than the expected maximum ${threshold} milliseconds`);
|
|
88
|
+
} else {
|
|
89
|
+
measure.log(description);
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
protected createMeasurement(name: string, measurement: () => number, options?: MeasurementOptions): Measurement {
|
|
95
|
+
const logOptions = this.mergeLogOptions(options);
|
|
96
|
+
|
|
97
|
+
const result: Measurement = {
|
|
98
|
+
name,
|
|
99
|
+
stop: () => {
|
|
100
|
+
if (result.elapsed === undefined) {
|
|
101
|
+
result.elapsed = measurement();
|
|
102
|
+
}
|
|
103
|
+
return result.elapsed;
|
|
104
|
+
},
|
|
105
|
+
log: (activity: string, ...optionalArgs: any[]) => this.log(result, activity, this.atLevel(logOptions, undefined, optionalArgs)),
|
|
106
|
+
debug: (activity: string, ...optionalArgs: any[]) => this.log(result, activity, this.atLevel(logOptions, LogLevel.DEBUG, optionalArgs)),
|
|
107
|
+
info: (activity: string, ...optionalArgs: any[]) => this.log(result, activity, this.atLevel(logOptions, LogLevel.INFO, optionalArgs)),
|
|
108
|
+
warn: (activity: string, ...optionalArgs: any[]) => this.log(result, activity, this.atLevel(logOptions, LogLevel.WARN, optionalArgs)),
|
|
109
|
+
error: (activity: string, ...optionalArgs: any[]) => this.log(result, activity, this.atLevel(logOptions, LogLevel.ERROR, optionalArgs)),
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
protected mergeLogOptions(logOptions?: Partial<LogOptions>): LogOptions {
|
|
116
|
+
const result: LogOptions = { ...this.defaultLogOptions };
|
|
117
|
+
if (logOptions) {
|
|
118
|
+
Object.assign(result, logOptions);
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
protected atLevel(logOptions: LogOptions, levelOverride?: LogLevel, optionalArgs?: any[]): LogOptions {
|
|
124
|
+
return { ...logOptions, levelOverride, arguments: optionalArgs };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
protected logLevel(elapsed: number, options?: Partial<LogOptions>): LogLevel {
|
|
128
|
+
if (options?.levelOverride) {
|
|
129
|
+
return options.levelOverride;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return options?.defaultLogLevel ?? this.defaultLogOptions.defaultLogLevel ?? DEFAULT_LOG_LEVEL;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
protected log(measurement: Measurement, activity: string, options: LogOptions): void {
|
|
136
|
+
const elapsed = measurement.stop();
|
|
137
|
+
const level = this.logLevel(elapsed, options);
|
|
138
|
+
|
|
139
|
+
if (Number.isNaN(elapsed)) {
|
|
140
|
+
switch (level) {
|
|
141
|
+
case LogLevel.ERROR:
|
|
142
|
+
case LogLevel.FATAL:
|
|
143
|
+
// Always log errors, even if NaN duration from native API preventing a measurement
|
|
144
|
+
break;
|
|
145
|
+
default:
|
|
146
|
+
// Measurement was prevented by native API, do not log NaN duration
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const start = options.owner ? `${options.owner} start` : 'start';
|
|
152
|
+
const timeFromStart = `Finished ${(options.now() / 1000).toFixed(3)} s after ${start}`;
|
|
153
|
+
const whatWasMeasured = options.context ? `[${options.context}] ${activity}` : activity;
|
|
154
|
+
this.logger.log(level, `${whatWasMeasured}: ${elapsed.toFixed(1)} ms [${timeFromStart}]`, ...(options.arguments ?? []));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
}
|
|
@@ -57,6 +57,22 @@ export function timeout(ms: number, token = CancellationToken.None): Promise<voi
|
|
|
57
57
|
return deferred.promise;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Creates a promise that is rejected after the given amount of time. A typical use case is to wait for another promise until a specified timeout using:
|
|
62
|
+
* ```
|
|
63
|
+
* Promise.race([ promiseToPerform, timeoutReject(timeout, 'Timeout error message') ]);
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @param ms timeout in milliseconds
|
|
67
|
+
* @param message error message on promise rejection
|
|
68
|
+
* @returns rejection promise
|
|
69
|
+
*/
|
|
70
|
+
export function timeoutReject<T>(ms: number, message?: string): Promise<T> {
|
|
71
|
+
const deferred = new Deferred<T>();
|
|
72
|
+
setTimeout(() => deferred.reject(new Error(message)), ms);
|
|
73
|
+
return deferred.promise;
|
|
74
|
+
}
|
|
75
|
+
|
|
60
76
|
export async function retry<T>(task: () => Promise<T>, retryDelay: number, retries: number): Promise<T> {
|
|
61
77
|
let lastError: Error | undefined;
|
|
62
78
|
|
package/src/common/types.ts
CHANGED
|
@@ -68,8 +68,48 @@ export namespace Prioritizeable {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
export namespace ArrayUtils {
|
|
72
|
+
export interface Head<T> extends Array<T> {
|
|
73
|
+
head(): T;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface Tail<T> extends Array<T> {
|
|
77
|
+
tail(): T;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface Children<T> extends Array<T> {
|
|
81
|
+
children(): Tail<T>
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export const TailImpl = {
|
|
85
|
+
tail<T>(this: Array<T>): T {
|
|
86
|
+
return this[this.length - 1];
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const HeadAndChildrenImpl = {
|
|
91
|
+
head<T>(this: Array<T>): T {
|
|
92
|
+
return this[0];
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
children<T>(this: Array<T>): Tail<T> {
|
|
96
|
+
return Object.assign(this.slice(1), TailImpl);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export interface HeadAndTail<T> extends Head<T>, Tail<T>, Children<T> { }
|
|
101
|
+
|
|
102
|
+
export function asTail<T>(array: Array<T>): Tail<T> {
|
|
103
|
+
return Object.assign(array, TailImpl);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function asHeadAndTail<T>(array: Array<T>): HeadAndTail<T> {
|
|
107
|
+
return Object.assign(array, HeadAndChildrenImpl, TailImpl);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
71
111
|
/**
|
|
72
|
-
* Throws when called and statically
|
|
112
|
+
* Throws when called and statically makes sure that all variants of a type were consumed.
|
|
73
113
|
*/
|
|
74
114
|
export function unreachable(_never: never, message: string = 'unhandled case'): never {
|
|
75
115
|
throw new Error(message);
|
|
@@ -267,7 +267,7 @@ export class ElectronMenuContribution extends BrowserMenuBarContribution impleme
|
|
|
267
267
|
});
|
|
268
268
|
|
|
269
269
|
registry.registerCommand(ElectronCommands.RELOAD, {
|
|
270
|
-
execute: () =>
|
|
270
|
+
execute: () => this.windowService.reload()
|
|
271
271
|
});
|
|
272
272
|
registry.registerCommand(ElectronCommands.CLOSE_WINDOW, {
|
|
273
273
|
execute: () => currentWindow.close()
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { inject, injectable, named } from 'inversify';
|
|
18
18
|
import * as electronRemoteMain from '../../electron-shared/@electron/remote/main';
|
|
19
|
-
import { screen,
|
|
19
|
+
import { screen, ipcMain, app, BrowserWindow, BrowserWindowConstructorOptions, Event as ElectronEvent } from '../../electron-shared/electron';
|
|
20
20
|
import * as path from 'path';
|
|
21
21
|
import { Argv } from 'yargs';
|
|
22
22
|
import { AddressInfo } from 'net';
|
|
@@ -266,7 +266,6 @@ export class ElectronMainApplication {
|
|
|
266
266
|
electronWindow.setMenuBarVisibility(false);
|
|
267
267
|
this.attachReadyToShow(electronWindow);
|
|
268
268
|
this.attachSaveWindowState(electronWindow);
|
|
269
|
-
this.attachGlobalShortcuts(electronWindow);
|
|
270
269
|
this.restoreMaximizedState(electronWindow, options);
|
|
271
270
|
this.attachCloseListeners(electronWindow, options);
|
|
272
271
|
electronRemoteMain.enable(electronWindow.webContents);
|
|
@@ -445,26 +444,6 @@ export class ElectronMainApplication {
|
|
|
445
444
|
).sort().join('-');
|
|
446
445
|
}
|
|
447
446
|
|
|
448
|
-
/**
|
|
449
|
-
* Catch certain keybindings to prevent reloading the window using keyboard shortcuts.
|
|
450
|
-
*/
|
|
451
|
-
protected attachGlobalShortcuts(electronWindow: BrowserWindow): void {
|
|
452
|
-
const handler = this.config.electron?.disallowReloadKeybinding
|
|
453
|
-
? () => { }
|
|
454
|
-
: () => this.reload(electronWindow);
|
|
455
|
-
const accelerators = ['CmdOrCtrl+R', 'F5'];
|
|
456
|
-
electronWindow.on('focus', () => {
|
|
457
|
-
for (const accelerator of accelerators) {
|
|
458
|
-
globalShortcut.register(accelerator, handler);
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
electronWindow.on('blur', () => {
|
|
462
|
-
for (const accelerator of accelerators) {
|
|
463
|
-
globalShortcut.unregister(accelerator);
|
|
464
|
-
}
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
|
|
468
447
|
protected restoreMaximizedState(electronWindow: BrowserWindow, options: TheiaBrowserWindowOptions): void {
|
|
469
448
|
if (options.isMaximized) {
|
|
470
449
|
electronWindow.maximize();
|
|
@@ -35,6 +35,7 @@ import { KeytarServiceImpl } from './keytar-server';
|
|
|
35
35
|
import { ContributionFilterRegistry, ContributionFilterRegistryImpl } from '../common/contribution-filter';
|
|
36
36
|
import { EnvironmentUtils } from './environment-utils';
|
|
37
37
|
import { ProcessUtils } from './process-utils';
|
|
38
|
+
import { bindNodeStopwatch, bindBackendStopwatchServer } from './performance';
|
|
38
39
|
|
|
39
40
|
decorate(injectable(), ApplicationPackage);
|
|
40
41
|
|
|
@@ -109,4 +110,7 @@ export const backendApplicationModule = new ContainerModule(bind => {
|
|
|
109
110
|
|
|
110
111
|
bind(EnvironmentUtils).toSelf().inSingletonScope();
|
|
111
112
|
bind(ProcessUtils).toSelf().inSingletonScope();
|
|
113
|
+
|
|
114
|
+
bindNodeStopwatch(bind);
|
|
115
|
+
bindBackendStopwatchServer(bind);
|
|
112
116
|
});
|
|
@@ -20,9 +20,8 @@ import * as https from 'https';
|
|
|
20
20
|
import * as express from 'express';
|
|
21
21
|
import * as yargs from 'yargs';
|
|
22
22
|
import * as fs from 'fs-extra';
|
|
23
|
-
import { performance, PerformanceObserver } from 'perf_hooks';
|
|
24
23
|
import { inject, named, injectable, postConstruct } from 'inversify';
|
|
25
|
-
import { ContributionProvider, MaybePromise } from '../common';
|
|
24
|
+
import { ContributionProvider, MaybePromise, Stopwatch } from '../common';
|
|
26
25
|
import { CliContribution } from './cli';
|
|
27
26
|
import { Deferred } from '../common/promise-util';
|
|
28
27
|
import { environment } from '../common/index';
|
|
@@ -152,13 +151,13 @@ export class BackendApplication {
|
|
|
152
151
|
@inject(ProcessUtils)
|
|
153
152
|
protected readonly processUtils: ProcessUtils;
|
|
154
153
|
|
|
155
|
-
|
|
154
|
+
@inject(Stopwatch)
|
|
155
|
+
protected readonly stopwatch: Stopwatch;
|
|
156
156
|
|
|
157
157
|
constructor(
|
|
158
158
|
@inject(ContributionProvider) @named(BackendApplicationContribution)
|
|
159
159
|
protected readonly contributionsProvider: ContributionProvider<BackendApplicationContribution>,
|
|
160
|
-
@inject(BackendApplicationCliContribution) protected readonly cliParams: BackendApplicationCliContribution
|
|
161
|
-
) {
|
|
160
|
+
@inject(BackendApplicationCliContribution) protected readonly cliParams: BackendApplicationCliContribution) {
|
|
162
161
|
process.on('uncaughtException', error => {
|
|
163
162
|
if (error) {
|
|
164
163
|
console.error('Uncaught Exception: ', error.toString());
|
|
@@ -185,23 +184,6 @@ export class BackendApplication {
|
|
|
185
184
|
process.on('SIGINT', signalHandler);
|
|
186
185
|
// Handles `kill pid`.
|
|
187
186
|
process.on('SIGTERM', signalHandler);
|
|
188
|
-
|
|
189
|
-
// Create performance observer
|
|
190
|
-
this._performanceObserver = new PerformanceObserver(list => {
|
|
191
|
-
for (const item of list.getEntries()) {
|
|
192
|
-
const contribution = `Backend ${item.name}`;
|
|
193
|
-
if (item.duration > TIMER_WARNING_THRESHOLD) {
|
|
194
|
-
console.warn(`${contribution} is slow, took: ${item.duration.toFixed(1)} ms`);
|
|
195
|
-
} else {
|
|
196
|
-
console.debug(`${contribution} took: ${item.duration.toFixed(1)} ms`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
this._performanceObserver.observe({
|
|
201
|
-
entryTypes: ['measure']
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
this.initialize();
|
|
205
187
|
}
|
|
206
188
|
|
|
207
189
|
protected async initialize(): Promise<void> {
|
|
@@ -220,6 +202,10 @@ export class BackendApplication {
|
|
|
220
202
|
|
|
221
203
|
@postConstruct()
|
|
222
204
|
protected async configure(): Promise<void> {
|
|
205
|
+
// Do not await the initialization because contributions are expected to handle
|
|
206
|
+
// concurrent initialize/configure in undefined order if they provide both
|
|
207
|
+
this.initialize();
|
|
208
|
+
|
|
223
209
|
this.app.get('*.js', this.serveGzipped.bind(this, 'text/javascript'));
|
|
224
210
|
this.app.get('*.js.map', this.serveGzipped.bind(this, 'application/json'));
|
|
225
211
|
this.app.get('*.css', this.serveGzipped.bind(this, 'text/css'));
|
|
@@ -309,7 +295,7 @@ export class BackendApplication {
|
|
|
309
295
|
}
|
|
310
296
|
}
|
|
311
297
|
}
|
|
312
|
-
return deferred.promise;
|
|
298
|
+
return this.stopwatch.startAsync('server', 'Finished starting backend application', () => deferred.promise);
|
|
313
299
|
}
|
|
314
300
|
|
|
315
301
|
protected onStop(): void {
|
|
@@ -324,7 +310,6 @@ export class BackendApplication {
|
|
|
324
310
|
}
|
|
325
311
|
}
|
|
326
312
|
console.info('<<< All backend contributions have been stopped.');
|
|
327
|
-
this._performanceObserver.disconnect();
|
|
328
313
|
this.processUtils.terminateProcessTree(process.pid);
|
|
329
314
|
}
|
|
330
315
|
|
|
@@ -347,15 +332,7 @@ export class BackendApplication {
|
|
|
347
332
|
}
|
|
348
333
|
|
|
349
334
|
protected async measure<T>(name: string, fn: () => MaybePromise<T>): Promise<T> {
|
|
350
|
-
|
|
351
|
-
const endMark = name + '-end';
|
|
352
|
-
performance.mark(startMark);
|
|
353
|
-
const result = await fn();
|
|
354
|
-
performance.mark(endMark);
|
|
355
|
-
performance.measure(name, startMark, endMark);
|
|
356
|
-
// Observer should immediately log the measurement, so we can clear it
|
|
357
|
-
performance.clearMarks(name);
|
|
358
|
-
return result;
|
|
335
|
+
return this.stopwatch.startAsync(name, `Backend ${name}`, fn, { thresholdMillis: TIMER_WARNING_THRESHOLD });
|
|
359
336
|
}
|
|
360
337
|
|
|
361
338
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import * as cp from 'child_process';
|
|
18
18
|
import * as path from 'path';
|
|
19
19
|
import { injectable, inject } from 'inversify';
|
|
20
|
-
import { Trace, IPCMessageReader, IPCMessageWriter, createMessageConnection, MessageConnection, Message } from 'vscode-ws-jsonrpc';
|
|
20
|
+
import { Trace, Tracer, IPCMessageReader, IPCMessageWriter, createMessageConnection, MessageConnection, Message } from 'vscode-ws-jsonrpc';
|
|
21
21
|
import { ILogger, ConnectionErrorHandler, DisposableCollection, Disposable } from '../../common';
|
|
22
22
|
import { createIpcEnv } from './ipc-protocol';
|
|
23
23
|
|
|
@@ -83,10 +83,14 @@ export class IPCConnectionProvider {
|
|
|
83
83
|
info: (message: string) => this.logger.info(`[${options.serverName}: ${childProcess.pid}] ${message}`),
|
|
84
84
|
log: (message: string) => this.logger.info(`[${options.serverName}: ${childProcess.pid}] ${message}`)
|
|
85
85
|
});
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
const tracer: Tracer = {
|
|
87
|
+
log: (message: unknown, data?: string) => this.logger.debug(`[${options.serverName}: ${childProcess.pid}] ${message}` + (typeof data === 'string' ? ' ' + data : ''))
|
|
88
|
+
};
|
|
89
|
+
connection.trace(Trace.Verbose, tracer);
|
|
90
|
+
this.logger.isDebug().then(isDebug => {
|
|
91
|
+
if (!isDebug) {
|
|
92
|
+
connection.trace(Trace.Off, tracer);
|
|
93
|
+
}
|
|
90
94
|
});
|
|
91
95
|
return connection;
|
|
92
96
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (C) 2021 STMicroelectronics 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 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
|
|
17
|
+
export * from './node-stopwatch';
|
|
18
|
+
export * from './measurement-backend-bindings';
|