@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
package/src/common/types.spec.ts
CHANGED
|
@@ -1,86 +1,86 @@
|
|
|
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 * as assert from 'assert';
|
|
18
|
-
import { Prioritizeable, RecursivePartial } from './types';
|
|
19
|
-
|
|
20
|
-
describe('types', () => {
|
|
21
|
-
|
|
22
|
-
describe('recursive-partial', () => {
|
|
23
|
-
it('should handle nested arrays', () => {
|
|
24
|
-
interface Bar {
|
|
25
|
-
readonly arr: Array<string>;
|
|
26
|
-
}
|
|
27
|
-
interface Foo {
|
|
28
|
-
readonly bar: Bar;
|
|
29
|
-
}
|
|
30
|
-
const myArr: Array<string> = [];
|
|
31
|
-
const myFoo: RecursivePartial<Foo> = {};
|
|
32
|
-
if (myFoo.bar && myFoo.bar.arr) {
|
|
33
|
-
const x = Array.from(new Set(myFoo.bar.arr));
|
|
34
|
-
myArr.push(...x);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
describe('Prioritizeable', () => {
|
|
40
|
-
it('prioritizeAll #01', () => {
|
|
41
|
-
const input = [-4, 4, -3, 3, -2, 2, -1, 1, 0, -0];
|
|
42
|
-
return Prioritizeable.prioritizeAll(input, value => -value)
|
|
43
|
-
.then(values =>
|
|
44
|
-
assert.deepStrictEqual([
|
|
45
|
-
{
|
|
46
|
-
priority: 4,
|
|
47
|
-
value: -4
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
priority: 3,
|
|
51
|
-
value: -3
|
|
52
|
-
}, {
|
|
53
|
-
priority: 2,
|
|
54
|
-
value: -2
|
|
55
|
-
}, {
|
|
56
|
-
priority: 1,
|
|
57
|
-
value: -1
|
|
58
|
-
}
|
|
59
|
-
], values)
|
|
60
|
-
);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it('prioritizeAll #02', () => {
|
|
64
|
-
const input = [-4, 4, -3, 3, -2, 2, -1, 1, 0, -0].map(v => Promise.resolve(v));
|
|
65
|
-
return Prioritizeable.prioritizeAll(input, value => -value)
|
|
66
|
-
.then(values =>
|
|
67
|
-
assert.deepStrictEqual([
|
|
68
|
-
{
|
|
69
|
-
priority: 4,
|
|
70
|
-
value: -4
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
priority: 3,
|
|
74
|
-
value: -3
|
|
75
|
-
}, {
|
|
76
|
-
priority: 2,
|
|
77
|
-
value: -2
|
|
78
|
-
}, {
|
|
79
|
-
priority: 1,
|
|
80
|
-
value: -1
|
|
81
|
-
}
|
|
82
|
-
], values)
|
|
83
|
-
);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
});
|
|
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 * as assert from 'assert';
|
|
18
|
+
import { Prioritizeable, RecursivePartial } from './types';
|
|
19
|
+
|
|
20
|
+
describe('types', () => {
|
|
21
|
+
|
|
22
|
+
describe('recursive-partial', () => {
|
|
23
|
+
it('should handle nested arrays', () => {
|
|
24
|
+
interface Bar {
|
|
25
|
+
readonly arr: Array<string>;
|
|
26
|
+
}
|
|
27
|
+
interface Foo {
|
|
28
|
+
readonly bar: Bar;
|
|
29
|
+
}
|
|
30
|
+
const myArr: Array<string> = [];
|
|
31
|
+
const myFoo: RecursivePartial<Foo> = {};
|
|
32
|
+
if (myFoo.bar && myFoo.bar.arr) {
|
|
33
|
+
const x = Array.from(new Set(myFoo.bar.arr));
|
|
34
|
+
myArr.push(...x);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
describe('Prioritizeable', () => {
|
|
40
|
+
it('prioritizeAll #01', () => {
|
|
41
|
+
const input = [-4, 4, -3, 3, -2, 2, -1, 1, 0, -0];
|
|
42
|
+
return Prioritizeable.prioritizeAll(input, value => -value)
|
|
43
|
+
.then(values =>
|
|
44
|
+
assert.deepStrictEqual([
|
|
45
|
+
{
|
|
46
|
+
priority: 4,
|
|
47
|
+
value: -4
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
priority: 3,
|
|
51
|
+
value: -3
|
|
52
|
+
}, {
|
|
53
|
+
priority: 2,
|
|
54
|
+
value: -2
|
|
55
|
+
}, {
|
|
56
|
+
priority: 1,
|
|
57
|
+
value: -1
|
|
58
|
+
}
|
|
59
|
+
], values)
|
|
60
|
+
);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('prioritizeAll #02', () => {
|
|
64
|
+
const input = [-4, 4, -3, 3, -2, 2, -1, 1, 0, -0].map(v => Promise.resolve(v));
|
|
65
|
+
return Prioritizeable.prioritizeAll(input, value => -value)
|
|
66
|
+
.then(values =>
|
|
67
|
+
assert.deepStrictEqual([
|
|
68
|
+
{
|
|
69
|
+
priority: 4,
|
|
70
|
+
value: -4
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
priority: 3,
|
|
74
|
+
value: -3
|
|
75
|
+
}, {
|
|
76
|
+
priority: 2,
|
|
77
|
+
value: -2
|
|
78
|
+
}, {
|
|
79
|
+
priority: 1,
|
|
80
|
+
value: -1
|
|
81
|
+
}
|
|
82
|
+
], values)
|
|
83
|
+
);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
package/src/common/types.ts
CHANGED
|
@@ -1,140 +1,140 @@
|
|
|
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
|
-
export { ArrayUtils } from './array-utils';
|
|
18
|
-
export { Prioritizeable } from './prioritizeable';
|
|
19
|
-
|
|
20
|
-
type UnknownObject<T extends object> = Record<string | number | symbol, unknown> & { [K in keyof T]: unknown };
|
|
21
|
-
|
|
22
|
-
export type Deferred<T> = { [P in keyof T]: Promise<T[P]> };
|
|
23
|
-
export type MaybeArray<T> = T | T[];
|
|
24
|
-
export type MaybeNull<T> = { [P in keyof T]: T[P] | null };
|
|
25
|
-
export type MaybePromise<T> = T | PromiseLike<T>;
|
|
26
|
-
export type MaybeUndefined<T> = { [P in keyof T]?: T[P] | undefined };
|
|
27
|
-
export type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
|
28
|
-
export type RecursivePartial<T> = {
|
|
29
|
-
[P in keyof T]?: T[P] extends (infer I)[]
|
|
30
|
-
? RecursivePartial<I>[]
|
|
31
|
-
: RecursivePartial<T[P]>;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export function isBoolean(value: unknown): value is boolean {
|
|
35
|
-
return value === true || value === false;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export function isString(value: unknown): value is string {
|
|
39
|
-
return typeof value === 'string' || value instanceof String;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function isNumber(value: unknown): value is number {
|
|
43
|
-
return typeof value === 'number' || value instanceof Number;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export function isError(value: unknown): value is Error {
|
|
47
|
-
return value instanceof Error;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function isErrorLike(value: unknown): value is Error {
|
|
51
|
-
return isObject(value) && isString(value.name) && isString(value.message) && (isUndefined(value.stack) || isString(value.stack));
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// eslint-disable-next-line space-before-function-paren
|
|
55
|
-
export function isFunction<T extends (...args: unknown[]) => unknown>(value: unknown): value is T {
|
|
56
|
-
return typeof value === 'function';
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @returns whether the provided parameter is an empty JavaScript Object or not.
|
|
61
|
-
*/
|
|
62
|
-
export function isEmptyObject(obj: unknown): obj is object {
|
|
63
|
-
if (!isObject(obj)) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
for (const key in obj) {
|
|
68
|
-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export function isObject<T extends object>(value: unknown): value is UnknownObject<T> {
|
|
77
|
-
// eslint-disable-next-line no-null/no-null
|
|
78
|
-
return typeof value === 'object' && value !== null;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export function isUndefined(value: unknown): value is undefined {
|
|
82
|
-
return typeof value === 'undefined';
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* @param value value to check.
|
|
87
|
-
* @param every optional predicate ran on every element of the array.
|
|
88
|
-
* @param thisArg value to substitute `this` with when invoking in the predicate.
|
|
89
|
-
* @returns whether or not `value` is an array.
|
|
90
|
-
*/
|
|
91
|
-
export function isArray<T>(value: unknown, every?: (value: unknown) => unknown, thisArg?: unknown): value is T[] {
|
|
92
|
-
return Array.isArray(value) && (!isFunction(every) || value.every(every, thisArg));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export function isStringArray(value: unknown): value is string[] {
|
|
96
|
-
return isArray(value, isString);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Creates a shallow copy with all ownkeys of the original object that are `null` made `undefined`
|
|
101
|
-
*/
|
|
102
|
-
export function nullToUndefined<T>(nullable: MaybeNull<T>): MaybeUndefined<T> {
|
|
103
|
-
const undefinable = { ...nullable } as MaybeUndefined<T>;
|
|
104
|
-
for (const key in nullable) {
|
|
105
|
-
// eslint-disable-next-line no-null/no-null
|
|
106
|
-
if (nullable[key] === null && Object.prototype.hasOwnProperty.call(nullable, key)) {
|
|
107
|
-
undefinable[key] = undefined;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return undefinable;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Throws when called and statically makes sure that all variants of a type were consumed.
|
|
115
|
-
*/
|
|
116
|
-
export function unreachable(_never: never, message: string = 'unhandled case'): never {
|
|
117
|
-
throw new Error(message);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/*---------------------------------------------------------------------------------------------
|
|
121
|
-
* Copyright (c) Microsoft Corporation and others. All rights reserved.
|
|
122
|
-
* Licensed under the MIT License. See https://github.com/Microsoft/vscode/blob/master/LICENSE.txt for license information.
|
|
123
|
-
*--------------------------------------------------------------------------------------------*/
|
|
124
|
-
|
|
125
|
-
// Copied from https://github.com/microsoft/vscode/blob/1.72.2/src/vs/base/common/types.ts
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* @returns whether the provided parameter is defined.
|
|
129
|
-
*/
|
|
130
|
-
export function isDefined<T>(arg: T | null | undefined): arg is T {
|
|
131
|
-
return !isUndefinedOrNull(arg);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* @returns whether the provided parameter is undefined or null.
|
|
136
|
-
*/
|
|
137
|
-
export function isUndefinedOrNull(obj: unknown): obj is undefined | null {
|
|
138
|
-
// eslint-disable-next-line no-null/no-null
|
|
139
|
-
return (isUndefined(obj) || obj === null);
|
|
140
|
-
}
|
|
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
|
+
export { ArrayUtils } from './array-utils';
|
|
18
|
+
export { Prioritizeable } from './prioritizeable';
|
|
19
|
+
|
|
20
|
+
type UnknownObject<T extends object> = Record<string | number | symbol, unknown> & { [K in keyof T]: unknown };
|
|
21
|
+
|
|
22
|
+
export type Deferred<T> = { [P in keyof T]: Promise<T[P]> };
|
|
23
|
+
export type MaybeArray<T> = T | T[];
|
|
24
|
+
export type MaybeNull<T> = { [P in keyof T]: T[P] | null };
|
|
25
|
+
export type MaybePromise<T> = T | PromiseLike<T>;
|
|
26
|
+
export type MaybeUndefined<T> = { [P in keyof T]?: T[P] | undefined };
|
|
27
|
+
export type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
|
28
|
+
export type RecursivePartial<T> = {
|
|
29
|
+
[P in keyof T]?: T[P] extends (infer I)[]
|
|
30
|
+
? RecursivePartial<I>[]
|
|
31
|
+
: RecursivePartial<T[P]>;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export function isBoolean(value: unknown): value is boolean {
|
|
35
|
+
return value === true || value === false;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function isString(value: unknown): value is string {
|
|
39
|
+
return typeof value === 'string' || value instanceof String;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function isNumber(value: unknown): value is number {
|
|
43
|
+
return typeof value === 'number' || value instanceof Number;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function isError(value: unknown): value is Error {
|
|
47
|
+
return value instanceof Error;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function isErrorLike(value: unknown): value is Error {
|
|
51
|
+
return isObject(value) && isString(value.name) && isString(value.message) && (isUndefined(value.stack) || isString(value.stack));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// eslint-disable-next-line space-before-function-paren
|
|
55
|
+
export function isFunction<T extends (...args: unknown[]) => unknown>(value: unknown): value is T {
|
|
56
|
+
return typeof value === 'function';
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @returns whether the provided parameter is an empty JavaScript Object or not.
|
|
61
|
+
*/
|
|
62
|
+
export function isEmptyObject(obj: unknown): obj is object {
|
|
63
|
+
if (!isObject(obj)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
for (const key in obj) {
|
|
68
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function isObject<T extends object>(value: unknown): value is UnknownObject<T> {
|
|
77
|
+
// eslint-disable-next-line no-null/no-null
|
|
78
|
+
return typeof value === 'object' && value !== null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function isUndefined(value: unknown): value is undefined {
|
|
82
|
+
return typeof value === 'undefined';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @param value value to check.
|
|
87
|
+
* @param every optional predicate ran on every element of the array.
|
|
88
|
+
* @param thisArg value to substitute `this` with when invoking in the predicate.
|
|
89
|
+
* @returns whether or not `value` is an array.
|
|
90
|
+
*/
|
|
91
|
+
export function isArray<T>(value: unknown, every?: (value: unknown) => unknown, thisArg?: unknown): value is T[] {
|
|
92
|
+
return Array.isArray(value) && (!isFunction(every) || value.every(every, thisArg));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function isStringArray(value: unknown): value is string[] {
|
|
96
|
+
return isArray(value, isString);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Creates a shallow copy with all ownkeys of the original object that are `null` made `undefined`
|
|
101
|
+
*/
|
|
102
|
+
export function nullToUndefined<T>(nullable: MaybeNull<T>): MaybeUndefined<T> {
|
|
103
|
+
const undefinable = { ...nullable } as MaybeUndefined<T>;
|
|
104
|
+
for (const key in nullable) {
|
|
105
|
+
// eslint-disable-next-line no-null/no-null
|
|
106
|
+
if (nullable[key] === null && Object.prototype.hasOwnProperty.call(nullable, key)) {
|
|
107
|
+
undefinable[key] = undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return undefinable;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Throws when called and statically makes sure that all variants of a type were consumed.
|
|
115
|
+
*/
|
|
116
|
+
export function unreachable(_never: never, message: string = 'unhandled case'): never {
|
|
117
|
+
throw new Error(message);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/*---------------------------------------------------------------------------------------------
|
|
121
|
+
* Copyright (c) Microsoft Corporation and others. All rights reserved.
|
|
122
|
+
* Licensed under the MIT License. See https://github.com/Microsoft/vscode/blob/master/LICENSE.txt for license information.
|
|
123
|
+
*--------------------------------------------------------------------------------------------*/
|
|
124
|
+
|
|
125
|
+
// Copied from https://github.com/microsoft/vscode/blob/1.72.2/src/vs/base/common/types.ts
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @returns whether the provided parameter is defined.
|
|
129
|
+
*/
|
|
130
|
+
export function isDefined<T>(arg: T | null | undefined): arg is T {
|
|
131
|
+
return !isUndefinedOrNull(arg);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* @returns whether the provided parameter is undefined or null.
|
|
136
|
+
*/
|
|
137
|
+
export function isUndefinedOrNull(obj: unknown): obj is undefined | null {
|
|
138
|
+
// eslint-disable-next-line no-null/no-null
|
|
139
|
+
return (isUndefined(obj) || obj === null);
|
|
140
|
+
}
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2020 Ericsson 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 * as chai from 'chai';
|
|
18
|
-
import { SelectionService } from './selection-service';
|
|
19
|
-
import { MaybeArray } from './types';
|
|
20
|
-
import URI from './uri';
|
|
21
|
-
import { UriAwareCommandHandler, UriCommandHandler } from './uri-command-handler';
|
|
22
|
-
|
|
23
|
-
const expect = chai.expect;
|
|
24
|
-
|
|
25
|
-
interface CommandHandlerMock extends UriCommandHandler<MaybeArray<URI>> {
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
-
lastCall: any[];
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const mockHandler: CommandHandlerMock = {
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
-
execute(...args: any[]): void { this.lastCall = args; },
|
|
33
|
-
lastCall: []
|
|
34
|
-
};
|
|
35
|
-
const selectedURIs = [
|
|
36
|
-
new URI('/foo'),
|
|
37
|
-
new URI('/bar'),
|
|
38
|
-
];
|
|
39
|
-
const mockSelectionService = {
|
|
40
|
-
selection: selectedURIs.map(uri => ({ uri }))
|
|
41
|
-
} as unknown as SelectionService;
|
|
42
|
-
|
|
43
|
-
describe('URI-Aware Command Handlers', () => {
|
|
44
|
-
afterEach(() => {
|
|
45
|
-
mockHandler.lastCall = [];
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
describe('UriAwareCommandHandler', () => {
|
|
49
|
-
it('getUri returns the first argument if it is a URI (single)', () => {
|
|
50
|
-
const args = [new URI('/passed/in'), 'some', 'other', 'args'];
|
|
51
|
-
const output = UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
52
|
-
expect(output).equals(args[0]);
|
|
53
|
-
});
|
|
54
|
-
it('getUri returns the first argument if it is a URI (multi)', () => {
|
|
55
|
-
const args = [[new URI('/passed/in')], 'some', 'other', 'args'];
|
|
56
|
-
const output = UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
57
|
-
expect(output).equals(args[0]);
|
|
58
|
-
});
|
|
59
|
-
it('getUri returns an argument from the service if no URI is provided (single)', () => {
|
|
60
|
-
const args = ['some', 'other', 'args'];
|
|
61
|
-
const output = UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
62
|
-
expect(output).equals(selectedURIs[0]);
|
|
63
|
-
});
|
|
64
|
-
it('getUri returns an argument from the service if no URI is provided (multi)', () => {
|
|
65
|
-
const args = ['some', 'other', 'args'];
|
|
66
|
-
const output = UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
67
|
-
expect(output).deep.equals(selectedURIs);
|
|
68
|
-
});
|
|
69
|
-
it('calls the handler with the same args if the first argument if it is a URI (single)', () => {
|
|
70
|
-
const args = [new URI('/passed/in'), 'some', 'other', 'args'];
|
|
71
|
-
UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
72
|
-
expect(mockHandler.lastCall).deep.equals(args);
|
|
73
|
-
});
|
|
74
|
-
it('calls the handler with the same args if the first argument if it is a URI (multi)', () => {
|
|
75
|
-
const args = [[new URI('/passed/in')], 'some', 'other', 'args'];
|
|
76
|
-
UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
77
|
-
expect(mockHandler.lastCall).deep.equals(args);
|
|
78
|
-
});
|
|
79
|
-
it('calls the handler with an argument from the service if no URI is provided (single)', () => {
|
|
80
|
-
const args = ['some', 'other', 'args'];
|
|
81
|
-
UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
82
|
-
expect(mockHandler.lastCall).deep.equals([selectedURIs[0], ...args]);
|
|
83
|
-
});
|
|
84
|
-
it('calls the handler with an argument from the service if no URI is provided (multi)', () => {
|
|
85
|
-
const args = ['some', 'other', 'args'];
|
|
86
|
-
UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
87
|
-
expect(mockHandler.lastCall).deep.equals([selectedURIs, ...args]);
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
});
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2020 Ericsson 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 * as chai from 'chai';
|
|
18
|
+
import { SelectionService } from './selection-service';
|
|
19
|
+
import { MaybeArray } from './types';
|
|
20
|
+
import URI from './uri';
|
|
21
|
+
import { UriAwareCommandHandler, UriCommandHandler } from './uri-command-handler';
|
|
22
|
+
|
|
23
|
+
const expect = chai.expect;
|
|
24
|
+
|
|
25
|
+
interface CommandHandlerMock extends UriCommandHandler<MaybeArray<URI>> {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
lastCall: any[];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const mockHandler: CommandHandlerMock = {
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
+
execute(...args: any[]): void { this.lastCall = args; },
|
|
33
|
+
lastCall: []
|
|
34
|
+
};
|
|
35
|
+
const selectedURIs = [
|
|
36
|
+
new URI('/foo'),
|
|
37
|
+
new URI('/bar'),
|
|
38
|
+
];
|
|
39
|
+
const mockSelectionService = {
|
|
40
|
+
selection: selectedURIs.map(uri => ({ uri }))
|
|
41
|
+
} as unknown as SelectionService;
|
|
42
|
+
|
|
43
|
+
describe('URI-Aware Command Handlers', () => {
|
|
44
|
+
afterEach(() => {
|
|
45
|
+
mockHandler.lastCall = [];
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
describe('UriAwareCommandHandler', () => {
|
|
49
|
+
it('getUri returns the first argument if it is a URI (single)', () => {
|
|
50
|
+
const args = [new URI('/passed/in'), 'some', 'other', 'args'];
|
|
51
|
+
const output = UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
52
|
+
expect(output).equals(args[0]);
|
|
53
|
+
});
|
|
54
|
+
it('getUri returns the first argument if it is a URI (multi)', () => {
|
|
55
|
+
const args = [[new URI('/passed/in')], 'some', 'other', 'args'];
|
|
56
|
+
const output = UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
57
|
+
expect(output).equals(args[0]);
|
|
58
|
+
});
|
|
59
|
+
it('getUri returns an argument from the service if no URI is provided (single)', () => {
|
|
60
|
+
const args = ['some', 'other', 'args'];
|
|
61
|
+
const output = UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
62
|
+
expect(output).equals(selectedURIs[0]);
|
|
63
|
+
});
|
|
64
|
+
it('getUri returns an argument from the service if no URI is provided (multi)', () => {
|
|
65
|
+
const args = ['some', 'other', 'args'];
|
|
66
|
+
const output = UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['getUri'](...args);
|
|
67
|
+
expect(output).deep.equals(selectedURIs);
|
|
68
|
+
});
|
|
69
|
+
it('calls the handler with the same args if the first argument if it is a URI (single)', () => {
|
|
70
|
+
const args = [new URI('/passed/in'), 'some', 'other', 'args'];
|
|
71
|
+
UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
72
|
+
expect(mockHandler.lastCall).deep.equals(args);
|
|
73
|
+
});
|
|
74
|
+
it('calls the handler with the same args if the first argument if it is a URI (multi)', () => {
|
|
75
|
+
const args = [[new URI('/passed/in')], 'some', 'other', 'args'];
|
|
76
|
+
UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
77
|
+
expect(mockHandler.lastCall).deep.equals(args);
|
|
78
|
+
});
|
|
79
|
+
it('calls the handler with an argument from the service if no URI is provided (single)', () => {
|
|
80
|
+
const args = ['some', 'other', 'args'];
|
|
81
|
+
UriAwareCommandHandler.MonoSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
82
|
+
expect(mockHandler.lastCall).deep.equals([selectedURIs[0], ...args]);
|
|
83
|
+
});
|
|
84
|
+
it('calls the handler with an argument from the service if no URI is provided (multi)', () => {
|
|
85
|
+
const args = ['some', 'other', 'args'];
|
|
86
|
+
UriAwareCommandHandler.MultiSelect(mockSelectionService, mockHandler)['execute'](...args);
|
|
87
|
+
expect(mockHandler.lastCall).deep.equals([selectedURIs, ...args]);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
});
|