@theia/core 1.53.0-next.4 → 1.53.0-next.55
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 +7 -7
- package/i18n/nls.cs.json +582 -552
- package/i18n/nls.de.json +582 -552
- package/i18n/nls.es.json +582 -552
- package/i18n/nls.fr.json +582 -552
- package/i18n/nls.hu.json +582 -552
- package/i18n/nls.it.json +582 -552
- package/i18n/nls.ja.json +582 -552
- package/i18n/nls.json +582 -552
- package/i18n/nls.ko.json +582 -0
- package/i18n/nls.pl.json +582 -552
- package/i18n/nls.pt-br.json +582 -552
- package/i18n/nls.ru.json +582 -552
- package/i18n/nls.tr.json +582 -0
- package/i18n/nls.zh-cn.json +582 -552
- package/i18n/nls.zh-tw.json +582 -0
- package/lib/browser/authentication-service.d.ts +15 -14
- package/lib/browser/authentication-service.d.ts.map +1 -1
- package/lib/browser/authentication-service.js +5 -5
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/catalog.json +6889 -0
- package/lib/browser/common-frontend-contribution.js +3 -3
- package/lib/browser/common-styling-participants.js +166 -166
- package/lib/browser/context-key-service.d.ts +3 -2
- package/lib/browser/context-key-service.d.ts.map +1 -1
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +9 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/json-schema-store.d.ts +0 -3
- package/lib/browser/json-schema-store.d.ts.map +1 -1
- package/lib/browser/json-schema-store.js +2 -12
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +13 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +48 -9
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +8 -0
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js +18 -3
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/progress-location-service.spec.js +7 -7
- package/lib/browser/saveable-service.d.ts.map +1 -1
- package/lib/browser/saveable-service.js +6 -2
- package/lib/browser/saveable-service.js.map +1 -1
- package/lib/browser/saveable.d.ts +17 -1
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +62 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +5 -4
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +2 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +6 -16
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +12 -29
- 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-types.d.ts +43 -78
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +8 -39
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +10 -10
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +43 -32
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/storage-service.js +3 -3
- package/lib/browser/tree/tree.spec.js +75 -75
- package/lib/browser/view-container.d.ts +2 -2
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-open-handler.d.ts +4 -1
- package/lib/browser/widget-open-handler.d.ts.map +1 -1
- package/lib/browser/widget-open-handler.js.map +1 -1
- package/lib/browser/widgets/extractable-widget.js +1 -1
- package/lib/browser/widgets/extractable-widget.js.map +1 -1
- package/lib/browser/widgets/index.d.ts +1 -0
- package/lib/browser/widgets/index.d.ts.map +1 -1
- package/lib/browser/widgets/index.js +1 -0
- package/lib/browser/widgets/index.js.map +1 -1
- package/lib/browser/widgets/split-widget.d.ts +45 -0
- package/lib/browser/widgets/split-widget.d.ts.map +1 -0
- package/lib/browser/widgets/split-widget.js +126 -0
- package/lib/browser/widgets/split-widget.js.map +1 -0
- package/lib/common/event.d.ts +2 -0
- package/lib/common/event.d.ts.map +1 -1
- package/lib/common/event.js +4 -0
- package/lib/common/event.js.map +1 -1
- package/lib/common/glob.d.ts +4 -4
- package/lib/common/json-schema.d.ts +2 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/menu/menu-types.d.ts.map +1 -1
- package/lib/common/menu/menu-types.js.map +1 -1
- package/lib/electron-browser/electron-uri-handler.d.ts +6 -0
- package/lib/electron-browser/electron-uri-handler.d.ts.map +1 -0
- package/lib/electron-browser/electron-uri-handler.js +49 -0
- package/lib/electron-browser/electron-uri-handler.js.map +1 -0
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +6 -6
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +12 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +3 -0
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts +2 -0
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +27 -3
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +5 -3
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +57 -14
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/theia-electron-window.d.ts +1 -0
- package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
- package/lib/electron-main/theia-electron-window.js +3 -0
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.d.ts.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.js +12 -8
- package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
- package/lib/node/process-utils.spec.js +8 -8
- package/package.json +10 -8
- package/shared/ajv/index.d.ts +2 -2
- package/shared/markdown-it.d.ts +2 -2
- package/shared/markdown-it.js +1 -1
- package/shared/reflect-metadata/index.d.ts +1 -1
- package/shared/reflect-metadata/index.js +1 -1
- package/shared/vscode-languageserver-types/index.d.ts +1 -1
- package/src/browser/about-dialog.tsx +137 -137
- package/src/browser/authentication-service.ts +467 -468
- package/src/browser/breadcrumbs/breadcrumb-popup-container.ts +101 -101
- package/src/browser/breadcrumbs/breadcrumb-renderer.tsx +41 -41
- package/src/browser/breadcrumbs/breadcrumbs-constants.ts +79 -79
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +185 -185
- package/src/browser/breadcrumbs/breadcrumbs-service.ts +108 -108
- package/src/browser/breadcrumbs/index.ts +21 -21
- package/src/browser/browser-clipboard-service.ts +122 -122
- package/src/browser/browser.ts +239 -239
- package/src/browser/clipboard-service.ts +23 -23
- package/src/browser/color-application-contribution.ts +110 -110
- package/src/browser/color-registry.ts +60 -60
- package/src/browser/command-open-handler.ts +54 -54
- package/src/browser/common-frontend-contribution.ts +2680 -2680
- package/src/browser/common-styling-participants.ts +361 -361
- package/src/browser/connection-status-service.spec.ts +200 -200
- package/src/browser/connection-status-service.ts +216 -216
- package/src/browser/context-key-service.ts +142 -142
- package/src/browser/context-menu-renderer.ts +124 -124
- package/src/browser/core-preferences.ts +343 -334
- package/src/browser/credentials-service.ts +106 -106
- package/src/browser/decoration-style.ts +65 -65
- package/src/browser/decorations-service.ts +209 -209
- package/src/browser/dialogs/react-dialog.tsx +56 -56
- package/src/browser/dialogs.ts +534 -534
- package/src/browser/diff-uris.ts +117 -117
- package/src/browser/encoding-registry.ts +97 -97
- package/src/browser/endpoint.spec.ts +148 -148
- package/src/browser/endpoint.ts +136 -136
- package/src/browser/external-uri-service.ts +79 -79
- package/src/browser/file-icons-js.d.ts +20 -20
- package/src/browser/frontend-application-bindings.ts +62 -62
- package/src/browser/frontend-application-config-provider.spec.ts +45 -45
- package/src/browser/frontend-application-config-provider.ts +50 -50
- package/src/browser/frontend-application-contribution.ts +110 -110
- package/src/browser/frontend-application-module.ts +474 -475
- package/src/browser/frontend-application-state.ts +74 -74
- package/src/browser/frontend-application.ts +326 -326
- package/src/browser/hover-service.ts +218 -218
- package/src/browser/http-open-handler.ts +49 -49
- package/src/browser/i18n/i18n-frontend-module.ts +27 -27
- package/src/browser/i18n/language-quick-pick-service.ts +130 -130
- package/src/browser/icon-registry.ts +87 -87
- package/src/browser/icon-theme-contribution.ts +64 -64
- package/src/browser/icon-theme-service.ts +217 -217
- package/src/browser/icons/CollapseAll.svg +7 -7
- package/src/browser/icons/CollapseAll_inverse.svg +7 -7
- package/src/browser/icons/Refresh.svg +7 -7
- package/src/browser/icons/Refresh_inverse.svg +7 -7
- package/src/browser/icons/add-inverse.svg +4 -4
- package/src/browser/icons/add.svg +4 -4
- package/src/browser/icons/arrow-down-bright.svg +6 -6
- package/src/browser/icons/arrow-down-dark.svg +6 -6
- package/src/browser/icons/arrow-up-bright.svg +6 -6
- package/src/browser/icons/arrow-up-dark.svg +6 -6
- package/src/browser/icons/case-sensitive-dark.svg +16 -16
- package/src/browser/icons/case-sensitive.svg +16 -16
- package/src/browser/icons/chevron-right-dark.svg +5 -5
- package/src/browser/icons/chevron-right-light.svg +6 -6
- package/src/browser/icons/circle-bright.svg +7 -7
- package/src/browser/icons/circle-dark.svg +7 -7
- package/src/browser/icons/clear-search-results-dark.svg +7 -7
- package/src/browser/icons/clear-search-results.svg +7 -7
- package/src/browser/icons/close-all-bright.svg +7 -7
- package/src/browser/icons/close-all-dark.svg +7 -7
- package/src/browser/icons/close-bright.svg +7 -7
- package/src/browser/icons/close-dark.svg +7 -7
- package/src/browser/icons/collapse.svg +4 -4
- package/src/browser/icons/edit-json-dark.svg +6 -6
- package/src/browser/icons/edit-json.svg +6 -6
- package/src/browser/icons/expand.svg +4 -4
- package/src/browser/icons/loading-dark.svg +6 -6
- package/src/browser/icons/loading-light.svg +6 -6
- package/src/browser/icons/open-change-bright.svg +3 -3
- package/src/browser/icons/open-change-dark.svg +4 -4
- package/src/browser/icons/open-file-bright.svg +4 -4
- package/src/browser/icons/open-file-dark.svg +4 -4
- package/src/browser/icons/preview-bright.svg +3 -3
- package/src/browser/icons/preview-dark.svg +3 -3
- package/src/browser/icons/regex-dark.svg +10 -10
- package/src/browser/icons/regex.svg +10 -10
- package/src/browser/icons/remove-all-inverse.svg +4 -4
- package/src/browser/icons/remove-all.svg +4 -4
- package/src/browser/icons/replace-all-inverse.svg +13 -13
- package/src/browser/icons/replace-all.svg +13 -13
- package/src/browser/icons/replace-inverse.svg +15 -15
- package/src/browser/icons/replace.svg +15 -15
- package/src/browser/icons/whole-word-dark.svg +19 -19
- package/src/browser/icons/whole-word.svg +19 -19
- package/src/browser/index.ts +50 -50
- package/src/browser/json-schema-store.ts +118 -127
- package/src/browser/keybinding.spec.ts +554 -554
- package/src/browser/keybinding.ts +759 -759
- package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +108 -108
- package/src/browser/keyboard/browser-keyboard-layout-provider.spec.ts +171 -171
- package/src/browser/keyboard/browser-keyboard-layout-provider.ts +469 -469
- package/src/browser/keyboard/browser-keyboard-module.ts +30 -30
- package/src/browser/keyboard/index.ts +20 -20
- package/src/browser/keyboard/keyboard-layout-service.spec.ts +121 -121
- package/src/browser/keyboard/keyboard-layout-service.ts +455 -455
- package/src/browser/keyboard/keys.spec.ts +258 -258
- package/src/browser/keyboard/keys.ts +20 -20
- package/src/browser/keys.ts +21 -21
- package/src/browser/label-parser.spec.ts +165 -165
- package/src/browser/label-parser.ts +108 -108
- package/src/browser/label-provider.spec.ts +62 -62
- package/src/browser/label-provider.ts +385 -385
- package/src/browser/language-icon-provider.ts +55 -55
- package/src/browser/language-service.ts +77 -77
- package/src/browser/logger-frontend-module.ts +65 -65
- package/src/browser/markdown-rendering/markdown-renderer.ts +98 -98
- package/src/browser/menu/browser-context-menu-renderer.ts +48 -48
- package/src/browser/menu/browser-menu-module.ts +28 -28
- package/src/browser/menu/browser-menu-plugin.ts +491 -491
- package/src/browser/menu/context-menu-context.ts +41 -41
- package/src/browser/messaging/connection-source.ts +26 -26
- package/src/browser/messaging/frontend-id-provider.ts +37 -37
- package/src/browser/messaging/index.ts +18 -18
- package/src/browser/messaging/messaging-frontend-module.ts +41 -41
- package/src/browser/messaging/service-connection-provider.ts +140 -140
- package/src/browser/messaging/ws-connection-provider.ts +49 -49
- package/src/browser/messaging/ws-connection-source.ts +230 -230
- package/src/browser/mime-service.ts +30 -30
- package/src/browser/navigatable-types.ts +81 -81
- package/src/browser/navigatable.ts +39 -39
- package/src/browser/open-with-service.ts +140 -93
- package/src/browser/opener-service.spec.ts +49 -49
- package/src/browser/opener-service.ts +169 -146
- package/src/browser/performance/frontend-stopwatch.ts +65 -65
- package/src/browser/performance/index.ts +18 -18
- package/src/browser/performance/measurement-frontend-bindings.ts +31 -31
- package/src/browser/preferences/index.ts +23 -23
- package/src/browser/preferences/injectable-preference-proxy.ts +283 -283
- package/src/browser/preferences/preference-configurations.ts +82 -82
- package/src/browser/preferences/preference-contribution.ts +436 -436
- package/src/browser/preferences/preference-language-override-service.ts +111 -111
- package/src/browser/preferences/preference-provider.spec.ts +36 -36
- package/src/browser/preferences/preference-provider.ts +277 -277
- package/src/browser/preferences/preference-proxy.spec.ts +367 -367
- package/src/browser/preferences/preference-proxy.ts +367 -367
- package/src/browser/preferences/preference-schema-provider.spec.ts +130 -130
- package/src/browser/preferences/preference-scope.ts +18 -18
- package/src/browser/preferences/preference-service.spec.ts +613 -613
- package/src/browser/preferences/preference-service.ts +594 -594
- package/src/browser/preferences/preference-validation-service.spec.ts +334 -334
- package/src/browser/preferences/preference-validation-service.ts +358 -358
- package/src/browser/preferences/test/index.ts +19 -19
- package/src/browser/preferences/test/mock-preference-provider.ts +50 -50
- package/src/browser/preferences/test/mock-preference-proxy.ts +48 -48
- package/src/browser/preferences/test/mock-preference-service.ts +63 -63
- package/src/browser/preload/i18n-preload-contribution.ts +50 -50
- package/src/browser/preload/os-preload-contribution.ts +37 -37
- package/src/browser/preload/preload-module.ts +45 -45
- package/src/browser/preload/preloader.ts +37 -37
- package/src/browser/preload/theme-preload-contribution.ts +31 -31
- package/src/browser/progress-bar-factory.ts +29 -29
- package/src/browser/progress-bar.ts +76 -76
- package/src/browser/progress-client.ts +53 -53
- package/src/browser/progress-location-service.spec.ts +50 -50
- package/src/browser/progress-location-service.ts +96 -96
- package/src/browser/progress-status-bar-item.ts +83 -83
- package/src/browser/quick-input/index.ts +23 -23
- package/src/browser/quick-input/quick-access.ts +75 -75
- package/src/browser/quick-input/quick-command-frontend-contribution.ts +89 -89
- package/src/browser/quick-input/quick-command-service.ts +246 -246
- package/src/browser/quick-input/quick-help-service.ts +87 -87
- package/src/browser/quick-input/quick-input-frontend-contribution.ts +33 -33
- package/src/browser/quick-input/quick-input-service.spec.ts +176 -176
- package/src/browser/quick-input/quick-input-service.ts +17 -17
- package/src/browser/quick-input/quick-pick-service-impl.ts +69 -69
- package/src/browser/quick-input/quick-view-service.ts +83 -83
- package/src/browser/request/browser-request-module.ts +23 -23
- package/src/browser/request/browser-request-service.ts +172 -172
- package/src/browser/resource-context-key.ts +77 -77
- package/src/browser/saveable-service.ts +332 -328
- package/src/browser/saveable.ts +395 -327
- package/src/browser/secondary-window-handler.ts +211 -211
- package/src/browser/shell/additional-views-menu-widget.tsx +71 -71
- package/src/browser/shell/application-shell-mouse-tracker.ts +103 -103
- package/src/browser/shell/application-shell.ts +2271 -2271
- package/src/browser/shell/current-widget-command-adapter.ts +57 -57
- package/src/browser/shell/index.ts +23 -23
- package/src/browser/shell/shell-layout-restorer.ts +399 -399
- package/src/browser/shell/side-panel-handler.ts +794 -794
- package/src/browser/shell/side-panel-toolbar.ts +111 -111
- package/src/browser/shell/sidebar-bottom-menu-widget.tsx +39 -39
- package/src/browser/shell/sidebar-menu-widget.tsx +183 -183
- package/src/browser/shell/sidebar-top-menu-widget.tsx +26 -26
- package/src/browser/shell/split-panels.ts +191 -191
- package/src/browser/shell/tab-bar-decorator.ts +106 -106
- package/src/browser/shell/tab-bar-toolbar/index.ts +19 -19
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.ts +31 -31
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +242 -256
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +149 -207
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +62 -62
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +443 -428
- package/src/browser/shell/tab-bars.spec.ts +63 -63
- package/src/browser/shell/tab-bars.ts +1468 -1468
- package/src/browser/shell/theia-dock-panel.ts +265 -265
- package/src/browser/shell/view-column-service.ts +125 -125
- package/src/browser/shell/view-contribution.ts +178 -178
- package/src/browser/source-tree/index.ts +19 -19
- package/src/browser/source-tree/source-tree-widget.tsx +107 -107
- package/src/browser/source-tree/source-tree.ts +146 -146
- package/src/browser/source-tree/tree-source.ts +73 -73
- package/src/browser/status-bar/index.ts +29 -29
- package/src/browser/status-bar/status-bar-types.ts +97 -97
- package/src/browser/status-bar/status-bar-view-model.ts +209 -209
- package/src/browser/status-bar/status-bar.tsx +189 -189
- package/src/browser/storage-service.spec.ts +76 -76
- package/src/browser/storage-service.ts +129 -129
- package/src/browser/style/about.css +36 -36
- package/src/browser/style/alert-messages.css +62 -62
- package/src/browser/style/ansi.css +88 -88
- package/src/browser/style/breadcrumbs.css +130 -130
- package/src/browser/style/dialog.css +126 -126
- package/src/browser/style/dockpanel.css +76 -76
- package/src/browser/style/hover-service.css +101 -101
- package/src/browser/style/icons.css +61 -61
- package/src/browser/style/index.css +353 -351
- package/src/browser/style/materialcolors.css +278 -278
- package/src/browser/style/menus.css +230 -230
- package/src/browser/style/notification.css +39 -39
- package/src/browser/style/os.css +87 -87
- package/src/browser/style/progress-bar.css +43 -43
- package/src/browser/style/quick-title-bar.css +45 -45
- package/src/browser/style/scrollbars.css +172 -172
- package/src/browser/style/search-box.css +123 -123
- package/src/browser/style/select-component.css +107 -107
- package/src/browser/style/sidepanel.css +367 -367
- package/src/browser/style/split-widget.css +38 -0
- package/src/browser/style/status-bar.css +127 -127
- package/src/browser/style/tabs.css +647 -658
- package/src/browser/style/tooltip.css +28 -28
- package/src/browser/style/tree-decorators.css +81 -81
- package/src/browser/style/tree.css +232 -232
- package/src/browser/style/view-container.css +187 -194
- package/src/browser/style/widget.css +19 -19
- package/src/browser/styling-service.ts +96 -96
- package/src/browser/supported-encodings.ts +262 -262
- package/src/browser/test/jsdom.ts +69 -69
- package/src/browser/test/mock-connection-status-service.ts +33 -33
- package/src/browser/test/mock-env-variables-server.ts +47 -47
- package/src/browser/test/mock-opener-service.ts +34 -34
- package/src/browser/test/mock-storage-service.ts +49 -49
- package/src/browser/theming.ts +206 -206
- package/src/browser/tooltip-service.tsx +96 -96
- package/src/browser/tree/fuzzy-search.spec.ts +99 -99
- package/src/browser/tree/fuzzy-search.ts +136 -136
- package/src/browser/tree/index.ts +29 -29
- package/src/browser/tree/search-box-debounce.ts +96 -96
- package/src/browser/tree/search-box.ts +355 -355
- package/src/browser/tree/test/mock-selectable-tree-model.ts +109 -109
- package/src/browser/tree/test/mock-tree-model.ts +136 -136
- package/src/browser/tree/test/tree-test-container.ts +50 -50
- package/src/browser/tree/tree-compression/compressed-tree-expansion-service.ts +46 -46
- package/src/browser/tree/tree-compression/compressed-tree-model.ts +88 -88
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +203 -203
- package/src/browser/tree/tree-compression/index.ts +20 -20
- package/src/browser/tree/tree-compression/tree-compression-service.ts +125 -125
- package/src/browser/tree/tree-compression/tree-compression.css +28 -28
- package/src/browser/tree/tree-consistency.spec.ts +105 -105
- package/src/browser/tree/tree-container.spec.ts +45 -45
- package/src/browser/tree/tree-container.ts +155 -155
- package/src/browser/tree/tree-decorator.spec.ts +162 -162
- package/src/browser/tree/tree-decorator.ts +238 -238
- package/src/browser/tree/tree-expansion.spec.ts +173 -173
- package/src/browser/tree/tree-expansion.ts +165 -165
- package/src/browser/tree/tree-focus-service.ts +55 -55
- package/src/browser/tree/tree-iterator.spec.ts +170 -170
- package/src/browser/tree/tree-iterator.ts +256 -256
- package/src/browser/tree/tree-label-provider.ts +40 -40
- package/src/browser/tree/tree-model.ts +562 -562
- package/src/browser/tree/tree-navigation.ts +58 -58
- package/src/browser/tree/tree-preference.ts +50 -50
- package/src/browser/tree/tree-search.ts +128 -128
- package/src/browser/tree/tree-selectable.spec.ts +152 -152
- package/src/browser/tree/tree-selection-impl.ts +176 -176
- package/src/browser/tree/tree-selection-state.spec.ts +462 -462
- package/src/browser/tree/tree-selection-state.ts +245 -245
- package/src/browser/tree/tree-selection.ts +159 -159
- package/src/browser/tree/tree-view-welcome-widget.tsx +263 -263
- package/src/browser/tree/tree-widget-selection.ts +45 -45
- package/src/browser/tree/tree-widget.tsx +1591 -1591
- package/src/browser/tree/tree.spec.ts +241 -241
- package/src/browser/tree/tree.ts +425 -425
- package/src/browser/undo-redo-handler.ts +85 -85
- package/src/browser/user-working-directory-provider.ts +77 -77
- package/src/browser/view-container.ts +1640 -1640
- package/src/browser/widget-decoration.ts +358 -358
- package/src/browser/widget-manager.spec.ts +102 -102
- package/src/browser/widget-manager.ts +318 -318
- package/src/browser/widget-open-handler.ts +168 -165
- package/src/browser/widgets/alert-message.tsx +56 -56
- package/src/browser/widgets/enhanced-preview-widget.ts +27 -27
- package/src/browser/widgets/extractable-widget.ts +33 -33
- package/src/browser/widgets/index.ts +21 -20
- package/src/browser/widgets/previewable-widget.ts +31 -31
- package/src/browser/widgets/react-renderer.tsx +53 -53
- package/src/browser/widgets/react-widget.tsx +51 -51
- package/src/browser/widgets/select-component.tsx +367 -367
- package/src/browser/widgets/split-widget.ts +163 -0
- package/src/browser/widgets/widget.ts +406 -406
- package/src/browser/window/browser-window-module.ts +32 -32
- package/src/browser/window/default-secondary-window-service.ts +189 -189
- package/src/browser/window/default-window-service.spec.ts +78 -78
- package/src/browser/window/default-window-service.ts +171 -171
- package/src/browser/window/secondary-window-service.ts +39 -39
- package/src/browser/window/test/mock-window-service.ts +29 -29
- package/src/browser/window/window-service.ts +78 -78
- package/src/browser/window/window-title-service.ts +107 -107
- package/src/browser/window/window-title-updater.ts +95 -95
- package/src/browser/window-contribution.ts +64 -64
- package/src/browser-only/frontend-only-application-module.ts +116 -116
- package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -37
- package/src/browser-only/logger-frontend-only-module.ts +63 -63
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -39
- package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -42
- package/src/browser-only/preload/frontend-only-preload-module.ts +49 -49
- package/src/common/accessibility.ts +33 -33
- package/src/common/application-error.spec.ts +27 -27
- package/src/common/application-error.ts +76 -76
- package/src/common/application-protocol.ts +42 -42
- package/src/common/array-utils.ts +129 -129
- package/src/common/buffer.ts +228 -228
- package/src/common/cancellation.ts +163 -163
- package/src/common/char-code.ts +438 -438
- package/src/common/collections.ts +125 -125
- package/src/common/color.ts +103 -103
- package/src/common/command.spec.ts +208 -208
- package/src/common/command.ts +489 -489
- package/src/common/contribution-filter/contribution-filter-registry.ts +79 -79
- package/src/common/contribution-filter/contribution-filter.ts +64 -64
- package/src/common/contribution-filter/filter.ts +23 -23
- package/src/common/contribution-filter/index.ts +19 -19
- package/src/common/contribution-provider.ts +96 -96
- package/src/common/disposable.spec.ts +94 -94
- package/src/common/disposable.ts +188 -188
- package/src/common/encoding-service.ts +380 -380
- package/src/common/encodings.ts +24 -24
- package/src/common/env-variables/env-variables-protocol.ts +38 -38
- package/src/common/env-variables/index.ts +17 -17
- package/src/common/event.spec.ts +32 -32
- package/src/common/event.ts +493 -487
- package/src/common/file-uri.ts +61 -61
- package/src/common/frontend-application-state.ts +38 -38
- package/src/common/glob.ts +741 -741
- package/src/common/hash.ts +85 -85
- package/src/common/i18n/localization-server.ts +25 -25
- package/src/common/i18n/localization.ts +80 -80
- package/src/common/i18n/nls.metadata.json +34112 -34112
- package/src/common/index.ts +51 -51
- package/src/common/json-schema.ts +108 -106
- package/src/common/key-store.ts +26 -26
- package/src/common/keybinding.ts +152 -152
- package/src/common/keyboard/keyboard-layout-provider.ts +51 -51
- package/src/common/keys.ts +694 -694
- package/src/common/label-protocol.ts +35 -35
- package/src/common/logger-protocol.ts +119 -119
- package/src/common/logger-watcher.ts +48 -48
- package/src/common/logger.spec.ts +46 -46
- package/src/common/logger.ts +389 -389
- package/src/common/lsp-types.ts +34 -34
- package/src/common/markdown-rendering/icon-utilities.ts +30 -30
- package/src/common/markdown-rendering/index.ts +18 -18
- package/src/common/markdown-rendering/markdown-string.ts +152 -152
- package/src/common/menu/action-menu-node.ts +65 -65
- package/src/common/menu/composite-menu-node.spec.ts +67 -67
- package/src/common/menu/composite-menu-node.ts +114 -114
- package/src/common/menu/index.ts +21 -21
- package/src/common/menu/menu-adapter.ts +103 -103
- package/src/common/menu/menu-model-registry.ts +374 -374
- package/src/common/menu/menu-types.ts +220 -219
- package/src/common/menu/menu.spec.ts +101 -101
- package/src/common/message-rpc/channel.spec.ts +88 -88
- package/src/common/message-rpc/channel.ts +300 -300
- package/src/common/message-rpc/index.ts +22 -22
- package/src/common/message-rpc/message-buffer.ts +105 -105
- package/src/common/message-rpc/msg-pack-extension-manager.ts +70 -70
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +65 -65
- package/src/common/message-rpc/rpc-message-encoder.ts +190 -190
- package/src/common/message-rpc/rpc-protocol.ts +255 -255
- package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -41
- package/src/common/message-rpc/uint8-array-message-buffer.ts +213 -213
- package/src/common/message-service-protocol.ts +148 -148
- package/src/common/message-service.ts +226 -226
- package/src/common/messaging/connection-error-handler.ts +73 -73
- package/src/common/messaging/connection-management.ts +43 -43
- package/src/common/messaging/handler.ts +26 -26
- package/src/common/messaging/index.ts +19 -19
- package/src/common/messaging/proxy-factory.spec.ts +108 -108
- package/src/common/messaging/proxy-factory.ts +336 -336
- package/src/common/messaging/socket-write-buffer.ts +52 -52
- package/src/common/messaging/web-socket-channel.ts +76 -76
- package/src/common/nls.ts +151 -151
- package/src/common/numbers.ts +21 -21
- package/src/common/objects.spec.ts +112 -112
- package/src/common/objects.ts +123 -123
- package/src/common/os.ts +82 -82
- package/src/common/path.spec.ts +415 -415
- package/src/common/path.ts +334 -334
- package/src/common/paths.ts +250 -250
- package/src/common/performance/index.ts +19 -19
- package/src/common/performance/measurement-protocol.ts +104 -104
- package/src/common/performance/measurement.ts +130 -130
- package/src/common/performance/stopwatch.ts +183 -183
- package/src/common/preferences/preference-schema.ts +101 -101
- package/src/common/preferences/preference-scope.spec.ts +48 -48
- package/src/common/preferences/preference-scope.ts +68 -68
- package/src/common/prioritizeable.ts +58 -58
- package/src/common/progress-service-protocol.ts +35 -35
- package/src/common/progress-service.ts +82 -82
- package/src/common/promise-util.spec.ts +102 -102
- package/src/common/promise-util.ts +143 -143
- package/src/common/quick-pick-service.ts +353 -353
- package/src/common/reference.spec.ts +145 -145
- package/src/common/reference.ts +230 -230
- package/src/common/resource.ts +430 -430
- package/src/common/selection-command-handler.ts +101 -101
- package/src/common/selection-service.spec.ts +43 -43
- package/src/common/selection-service.ts +49 -49
- package/src/common/selection.ts +50 -50
- package/src/common/severity.ts +111 -111
- package/src/common/stream.ts +718 -718
- package/src/common/strings.ts +231 -231
- package/src/common/telemetry.ts +45 -45
- package/src/common/ternary-search-tree.ts +417 -417
- package/src/common/test/expect.ts +34 -34
- package/src/common/test/mock-logger.ts +118 -118
- package/src/common/test/mock-menu.ts +35 -35
- package/src/common/test/mock-resource-provider.ts +33 -33
- package/src/common/theme.ts +68 -68
- package/src/common/types.spec.ts +86 -86
- package/src/common/types.ts +140 -140
- package/src/common/uri-command-handler.spec.ts +90 -90
- package/src/common/uri-command-handler.ts +148 -148
- package/src/common/uri.spec.ts +278 -278
- package/src/common/uri.ts +279 -279
- package/src/common/uuid.ts +45 -45
- package/src/common/version.ts +17 -17
- package/src/common/view-column.ts +33 -33
- package/src/common/window.ts +34 -34
- package/src/electron-browser/electron-clipboard-service.ts +32 -32
- package/src/electron-browser/electron-uri-handler.ts +42 -0
- package/src/electron-browser/keyboard/electron-keyboard-layout-change-notifier.ts +39 -39
- package/src/electron-browser/keyboard/electron-keyboard-module.ts +28 -28
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +122 -122
- package/src/electron-browser/menu/electron-main-menu-factory.ts +339 -338
- package/src/electron-browser/menu/electron-menu-contribution.ts +506 -506
- package/src/electron-browser/menu/electron-menu-module.ts +40 -40
- package/src/electron-browser/menu/electron-menu-style.css +110 -110
- package/src/electron-browser/messaging/electron-frontend-id-provider.ts +25 -25
- package/src/electron-browser/messaging/electron-ipc-connection-source.ts +65 -65
- package/src/electron-browser/messaging/electron-local-ws-connection-source.ts +45 -45
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +78 -78
- package/src/electron-browser/messaging/electron-ws-connection-source.ts +38 -38
- package/src/electron-browser/preload.ts +264 -249
- package/src/electron-browser/request/electron-browser-request-module.ts +26 -26
- package/src/electron-browser/token/electron-token-frontend-module.ts +22 -22
- package/src/electron-browser/window/electron-frontend-application-state.ts +26 -26
- package/src/electron-browser/window/electron-secondary-window-service.ts +35 -35
- package/src/electron-browser/window/electron-window-module.ts +48 -45
- package/src/electron-browser/window/electron-window-preferences.ts +76 -76
- package/src/electron-browser/window/electron-window-service.ts +109 -109
- package/src/electron-browser/window/external-app-open-handler.ts +42 -42
- package/src/electron-common/electron-api.ts +157 -154
- package/src/electron-common/electron-main-window-service.ts +24 -24
- package/src/electron-common/electron-token.ts +27 -27
- package/src/electron-main/electron-api-main.ts +373 -347
- package/src/electron-main/electron-main-application-module.ts +65 -65
- package/src/electron-main/electron-main-application.ts +860 -818
- package/src/electron-main/electron-main-constants.ts +23 -23
- package/src/electron-main/electron-main-window-service-impl.ts +44 -44
- package/src/electron-main/electron-security-token-service.ts +36 -36
- package/src/electron-main/event-utils.ts +36 -36
- package/src/electron-main/messaging/electron-connection-handler.ts +21 -21
- package/src/electron-main/messaging/electron-messaging-contribution.ts +143 -143
- package/src/electron-main/messaging/electron-messaging-service.ts +35 -35
- package/src/electron-main/theia-electron-window.ts +219 -214
- package/src/electron-node/cli/electron-backend-cli-module.ts +24 -24
- package/src/electron-node/cli/electron-cli-contribution.ts +35 -35
- package/src/electron-node/hosting/electron-backend-hosting-module.ts +24 -24
- package/src/electron-node/hosting/electron-ws-origin-validator.ts +37 -37
- package/src/electron-node/keyboard/electron-backend-keyboard-module.ts +30 -30
- package/src/electron-node/keyboard/electron-keyboard-layout-provider.ts +35 -35
- package/src/electron-node/request/electron-backend-request-module.ts +23 -23
- package/src/electron-node/request/electron-backend-request-service.ts +78 -78
- package/src/electron-node/token/electron-token-backend-contribution.ts +48 -48
- package/src/electron-node/token/electron-token-backend-module.ts +28 -28
- package/src/electron-node/token/electron-token-validator.ts +93 -93
- package/src/node/application-server.ts +59 -59
- package/src/node/backend-application-config-provider.spec.ts +29 -29
- package/src/node/backend-application-config-provider.ts +48 -48
- package/src/node/backend-application-module.ts +139 -139
- package/src/node/backend-application.ts +374 -374
- package/src/node/cli.spec.ts +94 -94
- package/src/node/cli.ts +63 -63
- package/src/node/console-logger-server.spec.ts +59 -59
- package/src/node/console-logger-server.ts +76 -76
- package/src/node/debug.ts +30 -30
- package/src/node/dynamic-require.ts +56 -56
- package/src/node/env-variables/env-variables-server.ts +123 -123
- package/src/node/env-variables/index.ts +17 -17
- package/src/node/environment-utils.spec.ts +92 -92
- package/src/node/environment-utils.ts +66 -66
- package/src/node/file-uri.spec.ts +76 -76
- package/src/node/filesystem-locking.ts +77 -77
- package/src/node/hosting/backend-application-hosts.ts +60 -60
- package/src/node/hosting/backend-hosting-module.ts +26 -26
- package/src/node/hosting/ws-origin-validator.ts +36 -36
- package/src/node/i18n/i18n-backend-module.ts +42 -42
- package/src/node/i18n/localization-contribution.ts +112 -112
- package/src/node/i18n/localization-provider.ts +125 -125
- package/src/node/i18n/localization-server.ts +52 -52
- package/src/node/i18n/theia-localization-contribution.ts +40 -36
- package/src/node/index.ts +22 -22
- package/src/node/key-store-server.ts +162 -162
- package/src/node/logger-backend-module.ts +88 -88
- package/src/node/logger-cli-contribution.spec.ts +245 -245
- package/src/node/logger-cli-contribution.ts +168 -168
- package/src/node/main.ts +33 -33
- package/src/node/messaging/binary-message-pipe.ts +168 -168
- package/src/node/messaging/connection-container-module.ts +96 -96
- package/src/node/messaging/default-messaging-service.ts +129 -129
- package/src/node/messaging/frontend-connection-service.ts +24 -24
- package/src/node/messaging/index.ts +19 -19
- package/src/node/messaging/ipc-bootstrap.ts +27 -27
- package/src/node/messaging/ipc-channel.ts +77 -77
- package/src/node/messaging/ipc-connection-provider.ts +107 -107
- package/src/node/messaging/ipc-protocol.ts +76 -76
- package/src/node/messaging/messaging-backend-module.ts +52 -52
- package/src/node/messaging/messaging-listeners.ts +52 -52
- package/src/node/messaging/messaging-service.ts +46 -46
- package/src/node/messaging/test/test-web-socket-channel.ts +61 -61
- package/src/node/messaging/websocket-endpoint.ts +79 -79
- package/src/node/messaging/websocket-frontend-connection-service.ts +186 -186
- package/src/node/os-backend-provider.ts +25 -25
- package/src/node/performance/index.ts +18 -18
- package/src/node/performance/measurement-backend-bindings.ts +35 -35
- package/src/node/performance/node-stopwatch.ts +40 -40
- package/src/node/process-utils.spec.ts +48 -48
- package/src/node/process-utils.ts +102 -102
- package/src/node/remote/backend-remote-service.ts +25 -25
- package/src/node/remote/remote-cli-contribution.ts +34 -34
- package/src/node/remote/remote-copy-contribution.ts +45 -45
- package/src/node/request/backend-request-facade.ts +39 -39
- package/src/node/request/backend-request-module.ts +25 -25
- package/src/node/request/proxy-cli-contribution.ts +65 -65
- package/src/node/ws-request-validators.ts +56 -56
- package/src/typings/native-keymap.d.ts +108 -108
- package/i18n/nls.pt-pt.json +0 -552
|
@@ -1,226 +1,226 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2017 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 { injectable, inject } from 'inversify';
|
|
18
|
-
import {
|
|
19
|
-
MessageClient,
|
|
20
|
-
MessageType,
|
|
21
|
-
MessageOptions,
|
|
22
|
-
Progress,
|
|
23
|
-
ProgressUpdate,
|
|
24
|
-
ProgressMessage
|
|
25
|
-
} from './message-service-protocol';
|
|
26
|
-
import { CancellationTokenSource } from './cancellation';
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Service to log and categorize messages, show progress information and offer actions.
|
|
30
|
-
*
|
|
31
|
-
* The messages are processed by this service and forwarded to an injected {@link MessageClient}.
|
|
32
|
-
* For example "@theia/messages" provides such a client, rendering messages as notifications
|
|
33
|
-
* in the frontend.
|
|
34
|
-
*
|
|
35
|
-
* ### Example usage
|
|
36
|
-
*
|
|
37
|
-
* ```typescript
|
|
38
|
-
* @inject(MessageService)
|
|
39
|
-
* protected readonly messageService: MessageService;
|
|
40
|
-
*
|
|
41
|
-
* messageService.warn("Typings not available");
|
|
42
|
-
*
|
|
43
|
-
* messageService.error("Could not restore state", ["Rollback", "Ignore"])
|
|
44
|
-
* .then(action => action === "Rollback" && rollback());
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
@injectable()
|
|
48
|
-
export class MessageService {
|
|
49
|
-
|
|
50
|
-
constructor(
|
|
51
|
-
@inject(MessageClient) protected readonly client: MessageClient
|
|
52
|
-
) { }
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Logs the message and, if given, offers actions to act on it.
|
|
56
|
-
* @param message the message to log.
|
|
57
|
-
* @param actions the actions to offer. Can be omitted.
|
|
58
|
-
*
|
|
59
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
60
|
-
*/
|
|
61
|
-
log<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
62
|
-
/**
|
|
63
|
-
* Logs the message and, if given, offers actions to act on it.
|
|
64
|
-
* @param message the message to log.
|
|
65
|
-
* @param options additional options. Can be omitted
|
|
66
|
-
* @param actions the actions to offer. Can be omitted.
|
|
67
|
-
*
|
|
68
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
69
|
-
*/
|
|
70
|
-
log<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
-
log(message: string, ...args: any[]): Promise<string | undefined> {
|
|
73
|
-
return this.processMessage(MessageType.Log, message, args);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Logs the message as "info" and, if given, offers actions to act on it.
|
|
78
|
-
* @param message the message to log.
|
|
79
|
-
* @param actions the actions to offer. Can be omitted.
|
|
80
|
-
*
|
|
81
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
82
|
-
*/
|
|
83
|
-
info<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
84
|
-
/**
|
|
85
|
-
* Logs the message as "info" and, if given, offers actions to act on it.
|
|
86
|
-
* @param message the message to log.
|
|
87
|
-
* @param options additional options. Can be omitted
|
|
88
|
-
* @param actions the actions to offer. Can be omitted.
|
|
89
|
-
*
|
|
90
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
91
|
-
*/
|
|
92
|
-
info<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
93
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
-
info(message: string, ...args: any[]): Promise<string | undefined> {
|
|
95
|
-
return this.processMessage(MessageType.Info, message, args);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Logs the message as "warning" and, if given, offers actions to act on it.
|
|
100
|
-
* @param message the message to log.
|
|
101
|
-
* @param actions the actions to offer. Can be omitted.
|
|
102
|
-
*
|
|
103
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
104
|
-
*/
|
|
105
|
-
warn<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
106
|
-
/**
|
|
107
|
-
* Logs the message as "warning" and, if given, offers actions to act on it.
|
|
108
|
-
* @param message the message to log.
|
|
109
|
-
* @param options additional options. Can be omitted
|
|
110
|
-
* @param actions the actions to offer. Can be omitted.
|
|
111
|
-
*
|
|
112
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
113
|
-
*/
|
|
114
|
-
warn<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
115
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
|
-
warn(message: string, ...args: any[]): Promise<string | undefined> {
|
|
117
|
-
return this.processMessage(MessageType.Warning, message, args);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Logs the message as "error" and, if given, offers actions to act on it.
|
|
122
|
-
* @param message the message to log.
|
|
123
|
-
* @param actions the actions to offer. Can be omitted.
|
|
124
|
-
*
|
|
125
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
126
|
-
*/
|
|
127
|
-
error<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
128
|
-
/**
|
|
129
|
-
* Logs the message as "error" and, if given, offers actions to act on it.
|
|
130
|
-
* @param message the message to log.
|
|
131
|
-
* @param options additional options. Can be omitted
|
|
132
|
-
* @param actions the actions to offer. Can be omitted.
|
|
133
|
-
*
|
|
134
|
-
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
135
|
-
*/
|
|
136
|
-
error<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
137
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
138
|
-
error(message: string, ...args: any[]): Promise<string | undefined> {
|
|
139
|
-
return this.processMessage(MessageType.Error, message, args);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
|
-
protected processMessage(type: MessageType, text: string, args?: any[]): Promise<string | undefined> {
|
|
144
|
-
if (!!args && args.length > 0) {
|
|
145
|
-
const first = args[0];
|
|
146
|
-
const actions = Array.from(new Set<string>(args.filter(a => typeof a === 'string')));
|
|
147
|
-
const options = (typeof first === 'object' && !Array.isArray(first))
|
|
148
|
-
? <MessageOptions>first
|
|
149
|
-
: undefined;
|
|
150
|
-
return this.client.showMessage({ type, options, text, actions });
|
|
151
|
-
}
|
|
152
|
-
return this.client.showMessage({ type, text });
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Shows the given message as a progress.
|
|
157
|
-
*
|
|
158
|
-
* @param message the message to show for the progress.
|
|
159
|
-
* @param onDidCancel an optional callback which will be invoked if the progress indicator was canceled.
|
|
160
|
-
*
|
|
161
|
-
* @returns a promise resolving to a {@link Progress} object with which the progress can be updated.
|
|
162
|
-
*
|
|
163
|
-
* ### Example usage
|
|
164
|
-
*
|
|
165
|
-
* ```typescript
|
|
166
|
-
* @inject(MessageService)
|
|
167
|
-
* protected readonly messageService: MessageService;
|
|
168
|
-
*
|
|
169
|
-
* // this will show "Progress" as a cancelable message
|
|
170
|
-
* this.messageService.showProgress({text: 'Progress'});
|
|
171
|
-
*
|
|
172
|
-
* // this will show "Rolling back" with "Cancel" and an additional "Skip" action
|
|
173
|
-
* this.messageService.showProgress({
|
|
174
|
-
* text: `Rolling back`,
|
|
175
|
-
* actions: ["Skip"],
|
|
176
|
-
* },
|
|
177
|
-
* () => console.log("canceled"))
|
|
178
|
-
* .then((progress) => {
|
|
179
|
-
* // register if interested in the result (only necessary for custom actions)
|
|
180
|
-
* progress.result.then((result) => {
|
|
181
|
-
* // will be 'Cancel', 'Skip' or `undefined`
|
|
182
|
-
* console.log("result is", result);
|
|
183
|
-
* });
|
|
184
|
-
* progress.report({message: "Cleaning references", work: {done: 10, total: 100}});
|
|
185
|
-
* progress.report({message: "Restoring previous state", work: {done: 80, total: 100}});
|
|
186
|
-
* progress.report({message: "Complete", work: {done: 100, total: 100}});
|
|
187
|
-
* // we are done so we can cancel the progress message, note that this will also invoke `onDidCancel`
|
|
188
|
-
* progress.cancel();
|
|
189
|
-
* });
|
|
190
|
-
* ```
|
|
191
|
-
*/
|
|
192
|
-
async showProgress(message: ProgressMessage, onDidCancel?: () => void): Promise<Progress> {
|
|
193
|
-
const id = this.newProgressId();
|
|
194
|
-
const cancellationSource = new CancellationTokenSource();
|
|
195
|
-
const report = (update: ProgressUpdate) => {
|
|
196
|
-
this.client.reportProgress(id, update, message, cancellationSource.token);
|
|
197
|
-
};
|
|
198
|
-
const type = message.type ?? MessageType.Progress;
|
|
199
|
-
const actions = new Set<string>(message.actions);
|
|
200
|
-
if (ProgressMessage.isCancelable(message)) {
|
|
201
|
-
actions.delete(ProgressMessage.Cancel);
|
|
202
|
-
actions.add(ProgressMessage.Cancel);
|
|
203
|
-
}
|
|
204
|
-
const clientMessage = { ...message, type, actions: Array.from(actions) };
|
|
205
|
-
const result = this.client.showProgress(id, clientMessage, cancellationSource.token);
|
|
206
|
-
if (ProgressMessage.isCancelable(message) && typeof onDidCancel === 'function') {
|
|
207
|
-
result.then(value => {
|
|
208
|
-
if (value === ProgressMessage.Cancel) {
|
|
209
|
-
onDidCancel();
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
return {
|
|
214
|
-
id,
|
|
215
|
-
cancel: () => cancellationSource.cancel(),
|
|
216
|
-
result,
|
|
217
|
-
report
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
private progressIdPrefix = Math.random().toString(36).substring(5);
|
|
222
|
-
private counter = 0;
|
|
223
|
-
protected newProgressId(): string {
|
|
224
|
-
return `${this.progressIdPrefix}-${++this.counter}`;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2017 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 { injectable, inject } from 'inversify';
|
|
18
|
+
import {
|
|
19
|
+
MessageClient,
|
|
20
|
+
MessageType,
|
|
21
|
+
MessageOptions,
|
|
22
|
+
Progress,
|
|
23
|
+
ProgressUpdate,
|
|
24
|
+
ProgressMessage
|
|
25
|
+
} from './message-service-protocol';
|
|
26
|
+
import { CancellationTokenSource } from './cancellation';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Service to log and categorize messages, show progress information and offer actions.
|
|
30
|
+
*
|
|
31
|
+
* The messages are processed by this service and forwarded to an injected {@link MessageClient}.
|
|
32
|
+
* For example "@theia/messages" provides such a client, rendering messages as notifications
|
|
33
|
+
* in the frontend.
|
|
34
|
+
*
|
|
35
|
+
* ### Example usage
|
|
36
|
+
*
|
|
37
|
+
* ```typescript
|
|
38
|
+
* @inject(MessageService)
|
|
39
|
+
* protected readonly messageService: MessageService;
|
|
40
|
+
*
|
|
41
|
+
* messageService.warn("Typings not available");
|
|
42
|
+
*
|
|
43
|
+
* messageService.error("Could not restore state", ["Rollback", "Ignore"])
|
|
44
|
+
* .then(action => action === "Rollback" && rollback());
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
@injectable()
|
|
48
|
+
export class MessageService {
|
|
49
|
+
|
|
50
|
+
constructor(
|
|
51
|
+
@inject(MessageClient) protected readonly client: MessageClient
|
|
52
|
+
) { }
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Logs the message and, if given, offers actions to act on it.
|
|
56
|
+
* @param message the message to log.
|
|
57
|
+
* @param actions the actions to offer. Can be omitted.
|
|
58
|
+
*
|
|
59
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
60
|
+
*/
|
|
61
|
+
log<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
62
|
+
/**
|
|
63
|
+
* Logs the message and, if given, offers actions to act on it.
|
|
64
|
+
* @param message the message to log.
|
|
65
|
+
* @param options additional options. Can be omitted
|
|
66
|
+
* @param actions the actions to offer. Can be omitted.
|
|
67
|
+
*
|
|
68
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
69
|
+
*/
|
|
70
|
+
log<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
log(message: string, ...args: any[]): Promise<string | undefined> {
|
|
73
|
+
return this.processMessage(MessageType.Log, message, args);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Logs the message as "info" and, if given, offers actions to act on it.
|
|
78
|
+
* @param message the message to log.
|
|
79
|
+
* @param actions the actions to offer. Can be omitted.
|
|
80
|
+
*
|
|
81
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
82
|
+
*/
|
|
83
|
+
info<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
84
|
+
/**
|
|
85
|
+
* Logs the message as "info" and, if given, offers actions to act on it.
|
|
86
|
+
* @param message the message to log.
|
|
87
|
+
* @param options additional options. Can be omitted
|
|
88
|
+
* @param actions the actions to offer. Can be omitted.
|
|
89
|
+
*
|
|
90
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
91
|
+
*/
|
|
92
|
+
info<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
+
info(message: string, ...args: any[]): Promise<string | undefined> {
|
|
95
|
+
return this.processMessage(MessageType.Info, message, args);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Logs the message as "warning" and, if given, offers actions to act on it.
|
|
100
|
+
* @param message the message to log.
|
|
101
|
+
* @param actions the actions to offer. Can be omitted.
|
|
102
|
+
*
|
|
103
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
104
|
+
*/
|
|
105
|
+
warn<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
106
|
+
/**
|
|
107
|
+
* Logs the message as "warning" and, if given, offers actions to act on it.
|
|
108
|
+
* @param message the message to log.
|
|
109
|
+
* @param options additional options. Can be omitted
|
|
110
|
+
* @param actions the actions to offer. Can be omitted.
|
|
111
|
+
*
|
|
112
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
113
|
+
*/
|
|
114
|
+
warn<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
|
+
warn(message: string, ...args: any[]): Promise<string | undefined> {
|
|
117
|
+
return this.processMessage(MessageType.Warning, message, args);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Logs the message as "error" and, if given, offers actions to act on it.
|
|
122
|
+
* @param message the message to log.
|
|
123
|
+
* @param actions the actions to offer. Can be omitted.
|
|
124
|
+
*
|
|
125
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
126
|
+
*/
|
|
127
|
+
error<T extends string>(message: string, ...actions: T[]): Promise<T | undefined>;
|
|
128
|
+
/**
|
|
129
|
+
* Logs the message as "error" and, if given, offers actions to act on it.
|
|
130
|
+
* @param message the message to log.
|
|
131
|
+
* @param options additional options. Can be omitted
|
|
132
|
+
* @param actions the actions to offer. Can be omitted.
|
|
133
|
+
*
|
|
134
|
+
* @returns the selected action if there is any, `undefined` when there was no action or none was selected.
|
|
135
|
+
*/
|
|
136
|
+
error<T extends string>(message: string, options?: MessageOptions, ...actions: T[]): Promise<T | undefined>;
|
|
137
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
138
|
+
error(message: string, ...args: any[]): Promise<string | undefined> {
|
|
139
|
+
return this.processMessage(MessageType.Error, message, args);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
|
+
protected processMessage(type: MessageType, text: string, args?: any[]): Promise<string | undefined> {
|
|
144
|
+
if (!!args && args.length > 0) {
|
|
145
|
+
const first = args[0];
|
|
146
|
+
const actions = Array.from(new Set<string>(args.filter(a => typeof a === 'string')));
|
|
147
|
+
const options = (typeof first === 'object' && !Array.isArray(first))
|
|
148
|
+
? <MessageOptions>first
|
|
149
|
+
: undefined;
|
|
150
|
+
return this.client.showMessage({ type, options, text, actions });
|
|
151
|
+
}
|
|
152
|
+
return this.client.showMessage({ type, text });
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Shows the given message as a progress.
|
|
157
|
+
*
|
|
158
|
+
* @param message the message to show for the progress.
|
|
159
|
+
* @param onDidCancel an optional callback which will be invoked if the progress indicator was canceled.
|
|
160
|
+
*
|
|
161
|
+
* @returns a promise resolving to a {@link Progress} object with which the progress can be updated.
|
|
162
|
+
*
|
|
163
|
+
* ### Example usage
|
|
164
|
+
*
|
|
165
|
+
* ```typescript
|
|
166
|
+
* @inject(MessageService)
|
|
167
|
+
* protected readonly messageService: MessageService;
|
|
168
|
+
*
|
|
169
|
+
* // this will show "Progress" as a cancelable message
|
|
170
|
+
* this.messageService.showProgress({text: 'Progress'});
|
|
171
|
+
*
|
|
172
|
+
* // this will show "Rolling back" with "Cancel" and an additional "Skip" action
|
|
173
|
+
* this.messageService.showProgress({
|
|
174
|
+
* text: `Rolling back`,
|
|
175
|
+
* actions: ["Skip"],
|
|
176
|
+
* },
|
|
177
|
+
* () => console.log("canceled"))
|
|
178
|
+
* .then((progress) => {
|
|
179
|
+
* // register if interested in the result (only necessary for custom actions)
|
|
180
|
+
* progress.result.then((result) => {
|
|
181
|
+
* // will be 'Cancel', 'Skip' or `undefined`
|
|
182
|
+
* console.log("result is", result);
|
|
183
|
+
* });
|
|
184
|
+
* progress.report({message: "Cleaning references", work: {done: 10, total: 100}});
|
|
185
|
+
* progress.report({message: "Restoring previous state", work: {done: 80, total: 100}});
|
|
186
|
+
* progress.report({message: "Complete", work: {done: 100, total: 100}});
|
|
187
|
+
* // we are done so we can cancel the progress message, note that this will also invoke `onDidCancel`
|
|
188
|
+
* progress.cancel();
|
|
189
|
+
* });
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
async showProgress(message: ProgressMessage, onDidCancel?: () => void): Promise<Progress> {
|
|
193
|
+
const id = this.newProgressId();
|
|
194
|
+
const cancellationSource = new CancellationTokenSource();
|
|
195
|
+
const report = (update: ProgressUpdate) => {
|
|
196
|
+
this.client.reportProgress(id, update, message, cancellationSource.token);
|
|
197
|
+
};
|
|
198
|
+
const type = message.type ?? MessageType.Progress;
|
|
199
|
+
const actions = new Set<string>(message.actions);
|
|
200
|
+
if (ProgressMessage.isCancelable(message)) {
|
|
201
|
+
actions.delete(ProgressMessage.Cancel);
|
|
202
|
+
actions.add(ProgressMessage.Cancel);
|
|
203
|
+
}
|
|
204
|
+
const clientMessage = { ...message, type, actions: Array.from(actions) };
|
|
205
|
+
const result = this.client.showProgress(id, clientMessage, cancellationSource.token);
|
|
206
|
+
if (ProgressMessage.isCancelable(message) && typeof onDidCancel === 'function') {
|
|
207
|
+
result.then(value => {
|
|
208
|
+
if (value === ProgressMessage.Cancel) {
|
|
209
|
+
onDidCancel();
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
id,
|
|
215
|
+
cancel: () => cancellationSource.cancel(),
|
|
216
|
+
result,
|
|
217
|
+
report
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
private progressIdPrefix = Math.random().toString(36).substring(5);
|
|
222
|
+
private counter = 0;
|
|
223
|
+
protected newProgressId(): string {
|
|
224
|
+
return `${this.progressIdPrefix}-${++this.counter}`;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2017 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 { ILogger } from '../../common';
|
|
18
|
-
|
|
19
|
-
export interface ResolvedConnectionErrorHandlerOptions {
|
|
20
|
-
readonly serverName: string
|
|
21
|
-
readonly logger: ILogger
|
|
22
|
-
/**
|
|
23
|
-
* The maximum amount of errors allowed before stopping the server.
|
|
24
|
-
*/
|
|
25
|
-
readonly maxErrors: number
|
|
26
|
-
/**
|
|
27
|
-
* The minimum amount of restarts allowed in the restart interval.
|
|
28
|
-
*/
|
|
29
|
-
readonly maxRestarts: number
|
|
30
|
-
/**
|
|
31
|
-
* In minutes.
|
|
32
|
-
*/
|
|
33
|
-
readonly restartInterval: number
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export type ConnectionErrorHandlerOptions = Partial<ResolvedConnectionErrorHandlerOptions> & {
|
|
37
|
-
readonly serverName: string
|
|
38
|
-
readonly logger: ILogger
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export class ConnectionErrorHandler {
|
|
42
|
-
|
|
43
|
-
protected readonly options: ResolvedConnectionErrorHandlerOptions;
|
|
44
|
-
constructor(options: ConnectionErrorHandlerOptions) {
|
|
45
|
-
this.options = {
|
|
46
|
-
maxErrors: 3,
|
|
47
|
-
maxRestarts: 5,
|
|
48
|
-
restartInterval: 3,
|
|
49
|
-
...options
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
shouldStop(error: Error, count?: number): boolean {
|
|
54
|
-
return !count || count > this.options.maxErrors;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
protected readonly restarts: number[] = [];
|
|
58
|
-
shouldRestart(): boolean {
|
|
59
|
-
this.restarts.push(Date.now());
|
|
60
|
-
if (this.restarts.length <= this.options.maxRestarts) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
const diff = this.restarts[this.restarts.length - 1] - this.restarts[0];
|
|
64
|
-
if (diff <= this.options.restartInterval * 60 * 1000) {
|
|
65
|
-
// eslint-disable-next-line max-len
|
|
66
|
-
this.options.logger.error(`The ${this.options.serverName} server crashed ${this.options.maxRestarts} times in the last ${this.options.restartInterval} minutes. The server will not be restarted.`);
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
this.restarts.shift();
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2017 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 { ILogger } from '../../common';
|
|
18
|
+
|
|
19
|
+
export interface ResolvedConnectionErrorHandlerOptions {
|
|
20
|
+
readonly serverName: string
|
|
21
|
+
readonly logger: ILogger
|
|
22
|
+
/**
|
|
23
|
+
* The maximum amount of errors allowed before stopping the server.
|
|
24
|
+
*/
|
|
25
|
+
readonly maxErrors: number
|
|
26
|
+
/**
|
|
27
|
+
* The minimum amount of restarts allowed in the restart interval.
|
|
28
|
+
*/
|
|
29
|
+
readonly maxRestarts: number
|
|
30
|
+
/**
|
|
31
|
+
* In minutes.
|
|
32
|
+
*/
|
|
33
|
+
readonly restartInterval: number
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type ConnectionErrorHandlerOptions = Partial<ResolvedConnectionErrorHandlerOptions> & {
|
|
37
|
+
readonly serverName: string
|
|
38
|
+
readonly logger: ILogger
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export class ConnectionErrorHandler {
|
|
42
|
+
|
|
43
|
+
protected readonly options: ResolvedConnectionErrorHandlerOptions;
|
|
44
|
+
constructor(options: ConnectionErrorHandlerOptions) {
|
|
45
|
+
this.options = {
|
|
46
|
+
maxErrors: 3,
|
|
47
|
+
maxRestarts: 5,
|
|
48
|
+
restartInterval: 3,
|
|
49
|
+
...options
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
shouldStop(error: Error, count?: number): boolean {
|
|
54
|
+
return !count || count > this.options.maxErrors;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
protected readonly restarts: number[] = [];
|
|
58
|
+
shouldRestart(): boolean {
|
|
59
|
+
this.restarts.push(Date.now());
|
|
60
|
+
if (this.restarts.length <= this.options.maxRestarts) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
const diff = this.restarts[this.restarts.length - 1] - this.restarts[0];
|
|
64
|
+
if (diff <= this.options.restartInterval * 60 * 1000) {
|
|
65
|
+
// eslint-disable-next-line max-len
|
|
66
|
+
this.options.logger.error(`The ${this.options.serverName} server crashed ${this.options.maxRestarts} times in the last ${this.options.restartInterval} minutes. The server will not be restarted.`);
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
this.restarts.shift();
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
}
|