@theia/core 1.53.0-next.5 → 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 -352
- 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,102 +1,102 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2021 Red Hat and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
import * as assert from 'assert/strict';
|
|
17
|
-
import { Deferred, firstTrue, waitForEvent } from './promise-util';
|
|
18
|
-
import { Emitter } from './event';
|
|
19
|
-
import { CancellationError } from './cancellation';
|
|
20
|
-
|
|
21
|
-
describe('promise-util', () => {
|
|
22
|
-
|
|
23
|
-
describe('waitForEvent', () => {
|
|
24
|
-
it('should time out', async () => {
|
|
25
|
-
const emitter = new Emitter<string>();
|
|
26
|
-
await assert.rejects(waitForEvent(emitter.event, 1000), reason => reason instanceof CancellationError);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('should get event', async () => {
|
|
30
|
-
const emitter = new Emitter<string>();
|
|
31
|
-
setTimeout(() => {
|
|
32
|
-
emitter.fire('abcd');
|
|
33
|
-
}, 500);
|
|
34
|
-
assert.strictEqual(await waitForEvent(emitter.event, 1000), 'abcd');
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
type ExecutionHandler<T> = (resolve: (value: T) => void, reject: (error: unknown) => void) => void;
|
|
39
|
-
|
|
40
|
-
describe('firstTrue', () => {
|
|
41
|
-
function createSequentialPromises<T>(...executionHandlers: ExecutionHandler<T>[]): Promise<T>[] {
|
|
42
|
-
const deferreds: Deferred<T>[] = [];
|
|
43
|
-
let i = 0;
|
|
44
|
-
for (let k = 0; k < executionHandlers.length; k++) {
|
|
45
|
-
deferreds.push(new Deferred<T>());
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const resolveNext = () => {
|
|
49
|
-
if (i < executionHandlers.length) {
|
|
50
|
-
executionHandlers[i](value => deferreds[i].resolve(value), error => deferreds[i].reject(error));
|
|
51
|
-
i++;
|
|
52
|
-
}
|
|
53
|
-
if (i < executionHandlers.length) {
|
|
54
|
-
setTimeout(resolveNext, 1);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
setTimeout(resolveNext, 1);
|
|
59
|
-
return deferreds.map(deferred => deferred.promise);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
it('should resolve to false when the promises arg is empty', async () => {
|
|
63
|
-
const actual = await firstTrue();
|
|
64
|
-
assert.strictEqual(actual, false);
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it('should resolve to true when the first promise resolves to true', async () => {
|
|
68
|
-
const signals: string[] = [];
|
|
69
|
-
|
|
70
|
-
function createHandler(signal: string, result?: boolean): ExecutionHandler<boolean> {
|
|
71
|
-
return (resolve: (value: boolean) => void, reject: (error: unknown) => void) => {
|
|
72
|
-
signals.push(signal);
|
|
73
|
-
if (typeof result !== 'undefined') {
|
|
74
|
-
resolve(result);
|
|
75
|
-
} else {
|
|
76
|
-
reject(undefined);
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const actual = await firstTrue(...createSequentialPromises(
|
|
82
|
-
createHandler('a', false),
|
|
83
|
-
createHandler('b', false),
|
|
84
|
-
createHandler('c', true),
|
|
85
|
-
createHandler('d', false),
|
|
86
|
-
createHandler('e', true)
|
|
87
|
-
));
|
|
88
|
-
assert.strictEqual(actual, true);
|
|
89
|
-
assert.deepStrictEqual(signals, ['a', 'b', 'c']);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('should reject when one of the promises rejects', async () => {
|
|
93
|
-
await assert.rejects(firstTrue(...createSequentialPromises<boolean>(
|
|
94
|
-
(resolve, _) => resolve(false),
|
|
95
|
-
resolve => resolve(false),
|
|
96
|
-
(_, reject) => reject(new Error('my test error')),
|
|
97
|
-
resolve => resolve(true),
|
|
98
|
-
)), /Error: my test error/);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
});
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2021 Red Hat and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
import * as assert from 'assert/strict';
|
|
17
|
+
import { Deferred, firstTrue, waitForEvent } from './promise-util';
|
|
18
|
+
import { Emitter } from './event';
|
|
19
|
+
import { CancellationError } from './cancellation';
|
|
20
|
+
|
|
21
|
+
describe('promise-util', () => {
|
|
22
|
+
|
|
23
|
+
describe('waitForEvent', () => {
|
|
24
|
+
it('should time out', async () => {
|
|
25
|
+
const emitter = new Emitter<string>();
|
|
26
|
+
await assert.rejects(waitForEvent(emitter.event, 1000), reason => reason instanceof CancellationError);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('should get event', async () => {
|
|
30
|
+
const emitter = new Emitter<string>();
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
emitter.fire('abcd');
|
|
33
|
+
}, 500);
|
|
34
|
+
assert.strictEqual(await waitForEvent(emitter.event, 1000), 'abcd');
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
type ExecutionHandler<T> = (resolve: (value: T) => void, reject: (error: unknown) => void) => void;
|
|
39
|
+
|
|
40
|
+
describe('firstTrue', () => {
|
|
41
|
+
function createSequentialPromises<T>(...executionHandlers: ExecutionHandler<T>[]): Promise<T>[] {
|
|
42
|
+
const deferreds: Deferred<T>[] = [];
|
|
43
|
+
let i = 0;
|
|
44
|
+
for (let k = 0; k < executionHandlers.length; k++) {
|
|
45
|
+
deferreds.push(new Deferred<T>());
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const resolveNext = () => {
|
|
49
|
+
if (i < executionHandlers.length) {
|
|
50
|
+
executionHandlers[i](value => deferreds[i].resolve(value), error => deferreds[i].reject(error));
|
|
51
|
+
i++;
|
|
52
|
+
}
|
|
53
|
+
if (i < executionHandlers.length) {
|
|
54
|
+
setTimeout(resolveNext, 1);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
setTimeout(resolveNext, 1);
|
|
59
|
+
return deferreds.map(deferred => deferred.promise);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
it('should resolve to false when the promises arg is empty', async () => {
|
|
63
|
+
const actual = await firstTrue();
|
|
64
|
+
assert.strictEqual(actual, false);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('should resolve to true when the first promise resolves to true', async () => {
|
|
68
|
+
const signals: string[] = [];
|
|
69
|
+
|
|
70
|
+
function createHandler(signal: string, result?: boolean): ExecutionHandler<boolean> {
|
|
71
|
+
return (resolve: (value: boolean) => void, reject: (error: unknown) => void) => {
|
|
72
|
+
signals.push(signal);
|
|
73
|
+
if (typeof result !== 'undefined') {
|
|
74
|
+
resolve(result);
|
|
75
|
+
} else {
|
|
76
|
+
reject(undefined);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const actual = await firstTrue(...createSequentialPromises(
|
|
82
|
+
createHandler('a', false),
|
|
83
|
+
createHandler('b', false),
|
|
84
|
+
createHandler('c', true),
|
|
85
|
+
createHandler('d', false),
|
|
86
|
+
createHandler('e', true)
|
|
87
|
+
));
|
|
88
|
+
assert.strictEqual(actual, true);
|
|
89
|
+
assert.deepStrictEqual(signals, ['a', 'b', 'c']);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('should reject when one of the promises rejects', async () => {
|
|
93
|
+
await assert.rejects(firstTrue(...createSequentialPromises<boolean>(
|
|
94
|
+
(resolve, _) => resolve(false),
|
|
95
|
+
resolve => resolve(false),
|
|
96
|
+
(_, reject) => reject(new Error('my test error')),
|
|
97
|
+
resolve => resolve(true),
|
|
98
|
+
)), /Error: my test error/);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
});
|
|
@@ -1,143 +1,143 @@
|
|
|
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 { Disposable } from './disposable';
|
|
18
|
-
import { Event } from './event';
|
|
19
|
-
import { CancellationToken, CancellationError, cancelled } from './cancellation';
|
|
20
|
-
import { isFunction, isObject } from './types';
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Simple implementation of the deferred pattern.
|
|
24
|
-
* An object that exposes a promise and functions to resolve and reject it.
|
|
25
|
-
*/
|
|
26
|
-
export class Deferred<T = void> {
|
|
27
|
-
state: 'resolved' | 'rejected' | 'unresolved' = 'unresolved';
|
|
28
|
-
resolve: (value: T | PromiseLike<T>) => void;
|
|
29
|
-
reject: (err?: unknown) => void;
|
|
30
|
-
|
|
31
|
-
promise = new Promise<T>((resolve, reject) => {
|
|
32
|
-
this.resolve = resolve;
|
|
33
|
-
this.reject = reject;
|
|
34
|
-
}).then(
|
|
35
|
-
res => (this.setState('resolved'), res),
|
|
36
|
-
err => (this.setState('rejected'), Promise.reject(err)),
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
protected setState(state: 'resolved' | 'rejected'): void {
|
|
40
|
-
if (this.state === 'unresolved') {
|
|
41
|
-
this.state = state;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @returns resolves after a specified number of milliseconds
|
|
48
|
-
* @throws cancelled if a given token is cancelled before a specified number of milliseconds
|
|
49
|
-
*/
|
|
50
|
-
export function timeout(ms: number, token = CancellationToken.None): Promise<void> {
|
|
51
|
-
const deferred = new Deferred<void>();
|
|
52
|
-
const handle = setTimeout(() => deferred.resolve(), ms);
|
|
53
|
-
token.onCancellationRequested(() => {
|
|
54
|
-
clearTimeout(handle);
|
|
55
|
-
deferred.reject(cancelled());
|
|
56
|
-
});
|
|
57
|
-
return deferred.promise;
|
|
58
|
-
}
|
|
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
|
-
|
|
76
|
-
export async function retry<T>(task: () => Promise<T>, retryDelay: number, retries: number): Promise<T> {
|
|
77
|
-
let lastError: Error | undefined;
|
|
78
|
-
|
|
79
|
-
for (let i = 0; i < retries; i++) {
|
|
80
|
-
try {
|
|
81
|
-
return await task();
|
|
82
|
-
} catch (error) {
|
|
83
|
-
lastError = error;
|
|
84
|
-
|
|
85
|
-
await timeout(retryDelay);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
throw lastError;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* A function to allow a promise resolution to be delayed by a number of milliseconds. Usage is as follows:
|
|
94
|
-
*
|
|
95
|
-
* `const stringValue = await myPromise.then(delay(600)).then(value => value.toString());`
|
|
96
|
-
*
|
|
97
|
-
* @param ms the number of millisecond to delay
|
|
98
|
-
* @returns a function that returns a promise that returns the given value, but delayed
|
|
99
|
-
*/
|
|
100
|
-
export function delay<T>(ms: number): (value: T) => Promise<T> {
|
|
101
|
-
return value => new Promise((resolve, reject) => { setTimeout(() => resolve(value), ms); });
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Constructs a promise that will resolve after a given delay.
|
|
106
|
-
* @param ms the number of milliseconds to wait
|
|
107
|
-
*/
|
|
108
|
-
export async function wait(ms: number): Promise<void> {
|
|
109
|
-
await delay(ms)(undefined);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
113
|
-
export function waitForEvent<T>(event: Event<T>, ms: number, thisArg?: any, disposables?: Disposable[]): Promise<T> {
|
|
114
|
-
return new Promise<T>((resolve, reject) => {
|
|
115
|
-
const registration = setTimeout(() => {
|
|
116
|
-
listener.dispose();
|
|
117
|
-
reject(new CancellationError());
|
|
118
|
-
}, ms);
|
|
119
|
-
|
|
120
|
-
const listener = event((evt: T) => {
|
|
121
|
-
clearTimeout(registration);
|
|
122
|
-
listener.dispose();
|
|
123
|
-
resolve(evt);
|
|
124
|
-
}, thisArg, disposables);
|
|
125
|
-
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export function isThenable<T>(obj: unknown): obj is Promise<T> {
|
|
130
|
-
return isObject<Promise<unknown>>(obj) && isFunction(obj.then);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Returns with a promise that waits until the first promise resolves to `true`.
|
|
135
|
-
*/
|
|
136
|
-
// Based on https://stackoverflow.com/a/51160727/5529090
|
|
137
|
-
export function firstTrue(...promises: readonly Promise<boolean>[]): Promise<boolean> {
|
|
138
|
-
const newPromises = promises.map(promise => new Promise<boolean>(
|
|
139
|
-
(resolve, reject) => promise.then(result => result && resolve(true), reject)
|
|
140
|
-
));
|
|
141
|
-
newPromises.push(Promise.all(promises).then(() => false));
|
|
142
|
-
return Promise.race(newPromises);
|
|
143
|
-
}
|
|
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 { Disposable } from './disposable';
|
|
18
|
+
import { Event } from './event';
|
|
19
|
+
import { CancellationToken, CancellationError, cancelled } from './cancellation';
|
|
20
|
+
import { isFunction, isObject } from './types';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Simple implementation of the deferred pattern.
|
|
24
|
+
* An object that exposes a promise and functions to resolve and reject it.
|
|
25
|
+
*/
|
|
26
|
+
export class Deferred<T = void> {
|
|
27
|
+
state: 'resolved' | 'rejected' | 'unresolved' = 'unresolved';
|
|
28
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
29
|
+
reject: (err?: unknown) => void;
|
|
30
|
+
|
|
31
|
+
promise = new Promise<T>((resolve, reject) => {
|
|
32
|
+
this.resolve = resolve;
|
|
33
|
+
this.reject = reject;
|
|
34
|
+
}).then(
|
|
35
|
+
res => (this.setState('resolved'), res),
|
|
36
|
+
err => (this.setState('rejected'), Promise.reject(err)),
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
protected setState(state: 'resolved' | 'rejected'): void {
|
|
40
|
+
if (this.state === 'unresolved') {
|
|
41
|
+
this.state = state;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @returns resolves after a specified number of milliseconds
|
|
48
|
+
* @throws cancelled if a given token is cancelled before a specified number of milliseconds
|
|
49
|
+
*/
|
|
50
|
+
export function timeout(ms: number, token = CancellationToken.None): Promise<void> {
|
|
51
|
+
const deferred = new Deferred<void>();
|
|
52
|
+
const handle = setTimeout(() => deferred.resolve(), ms);
|
|
53
|
+
token.onCancellationRequested(() => {
|
|
54
|
+
clearTimeout(handle);
|
|
55
|
+
deferred.reject(cancelled());
|
|
56
|
+
});
|
|
57
|
+
return deferred.promise;
|
|
58
|
+
}
|
|
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
|
+
|
|
76
|
+
export async function retry<T>(task: () => Promise<T>, retryDelay: number, retries: number): Promise<T> {
|
|
77
|
+
let lastError: Error | undefined;
|
|
78
|
+
|
|
79
|
+
for (let i = 0; i < retries; i++) {
|
|
80
|
+
try {
|
|
81
|
+
return await task();
|
|
82
|
+
} catch (error) {
|
|
83
|
+
lastError = error;
|
|
84
|
+
|
|
85
|
+
await timeout(retryDelay);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
throw lastError;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A function to allow a promise resolution to be delayed by a number of milliseconds. Usage is as follows:
|
|
94
|
+
*
|
|
95
|
+
* `const stringValue = await myPromise.then(delay(600)).then(value => value.toString());`
|
|
96
|
+
*
|
|
97
|
+
* @param ms the number of millisecond to delay
|
|
98
|
+
* @returns a function that returns a promise that returns the given value, but delayed
|
|
99
|
+
*/
|
|
100
|
+
export function delay<T>(ms: number): (value: T) => Promise<T> {
|
|
101
|
+
return value => new Promise((resolve, reject) => { setTimeout(() => resolve(value), ms); });
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Constructs a promise that will resolve after a given delay.
|
|
106
|
+
* @param ms the number of milliseconds to wait
|
|
107
|
+
*/
|
|
108
|
+
export async function wait(ms: number): Promise<void> {
|
|
109
|
+
await delay(ms)(undefined);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
113
|
+
export function waitForEvent<T>(event: Event<T>, ms: number, thisArg?: any, disposables?: Disposable[]): Promise<T> {
|
|
114
|
+
return new Promise<T>((resolve, reject) => {
|
|
115
|
+
const registration = setTimeout(() => {
|
|
116
|
+
listener.dispose();
|
|
117
|
+
reject(new CancellationError());
|
|
118
|
+
}, ms);
|
|
119
|
+
|
|
120
|
+
const listener = event((evt: T) => {
|
|
121
|
+
clearTimeout(registration);
|
|
122
|
+
listener.dispose();
|
|
123
|
+
resolve(evt);
|
|
124
|
+
}, thisArg, disposables);
|
|
125
|
+
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export function isThenable<T>(obj: unknown): obj is Promise<T> {
|
|
130
|
+
return isObject<Promise<unknown>>(obj) && isFunction(obj.then);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Returns with a promise that waits until the first promise resolves to `true`.
|
|
135
|
+
*/
|
|
136
|
+
// Based on https://stackoverflow.com/a/51160727/5529090
|
|
137
|
+
export function firstTrue(...promises: readonly Promise<boolean>[]): Promise<boolean> {
|
|
138
|
+
const newPromises = promises.map(promise => new Promise<boolean>(
|
|
139
|
+
(resolve, reject) => promise.then(result => result && resolve(true), reject)
|
|
140
|
+
));
|
|
141
|
+
newPromises.push(Promise.all(promises).then(() => false));
|
|
142
|
+
return Promise.race(newPromises);
|
|
143
|
+
}
|