@theia/core 1.53.0-next.4 → 1.53.0-next.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/i18n/nls.cs.json +582 -552
- package/i18n/nls.de.json +582 -552
- package/i18n/nls.es.json +582 -552
- package/i18n/nls.fr.json +582 -552
- package/i18n/nls.hu.json +582 -552
- package/i18n/nls.it.json +582 -552
- package/i18n/nls.ja.json +582 -552
- package/i18n/nls.json +582 -552
- package/i18n/nls.ko.json +582 -0
- package/i18n/nls.pl.json +582 -552
- package/i18n/nls.pt-br.json +582 -552
- package/i18n/nls.ru.json +582 -552
- package/i18n/nls.tr.json +582 -0
- package/i18n/nls.zh-cn.json +582 -552
- package/i18n/nls.zh-tw.json +582 -0
- package/lib/browser/authentication-service.d.ts +15 -14
- package/lib/browser/authentication-service.d.ts.map +1 -1
- package/lib/browser/authentication-service.js +5 -5
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/catalog.json +6889 -0
- package/lib/browser/common-frontend-contribution.js +3 -3
- package/lib/browser/common-styling-participants.js +166 -166
- package/lib/browser/context-key-service.d.ts +3 -2
- package/lib/browser/context-key-service.d.ts.map +1 -1
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +9 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/json-schema-store.d.ts +0 -3
- package/lib/browser/json-schema-store.d.ts.map +1 -1
- package/lib/browser/json-schema-store.js +2 -12
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +13 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +48 -9
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +8 -0
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js +18 -3
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/progress-location-service.spec.js +7 -7
- package/lib/browser/saveable-service.d.ts.map +1 -1
- package/lib/browser/saveable-service.js +6 -2
- package/lib/browser/saveable-service.js.map +1 -1
- package/lib/browser/saveable.d.ts +17 -1
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +62 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +5 -4
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +2 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +6 -16
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +12 -29
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts +43 -78
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +8 -39
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +10 -10
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +43 -32
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/storage-service.js +3 -3
- package/lib/browser/tree/tree.spec.js +75 -75
- package/lib/browser/view-container.d.ts +2 -2
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-open-handler.d.ts +4 -1
- package/lib/browser/widget-open-handler.d.ts.map +1 -1
- package/lib/browser/widget-open-handler.js.map +1 -1
- package/lib/browser/widgets/extractable-widget.js +1 -1
- package/lib/browser/widgets/extractable-widget.js.map +1 -1
- package/lib/browser/widgets/index.d.ts +1 -0
- package/lib/browser/widgets/index.d.ts.map +1 -1
- package/lib/browser/widgets/index.js +1 -0
- package/lib/browser/widgets/index.js.map +1 -1
- package/lib/browser/widgets/split-widget.d.ts +45 -0
- package/lib/browser/widgets/split-widget.d.ts.map +1 -0
- package/lib/browser/widgets/split-widget.js +126 -0
- package/lib/browser/widgets/split-widget.js.map +1 -0
- package/lib/common/event.d.ts +2 -0
- package/lib/common/event.d.ts.map +1 -1
- package/lib/common/event.js +4 -0
- package/lib/common/event.js.map +1 -1
- package/lib/common/glob.d.ts +4 -4
- package/lib/common/json-schema.d.ts +2 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/menu/menu-types.d.ts.map +1 -1
- package/lib/common/menu/menu-types.js.map +1 -1
- package/lib/electron-browser/electron-uri-handler.d.ts +6 -0
- package/lib/electron-browser/electron-uri-handler.d.ts.map +1 -0
- package/lib/electron-browser/electron-uri-handler.js +49 -0
- package/lib/electron-browser/electron-uri-handler.js.map +1 -0
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +6 -6
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +12 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +3 -0
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts +2 -0
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +27 -3
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +5 -3
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +57 -14
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/theia-electron-window.d.ts +1 -0
- package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
- package/lib/electron-main/theia-electron-window.js +3 -0
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.d.ts.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.js +12 -8
- package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
- package/lib/node/process-utils.spec.js +8 -8
- package/package.json +10 -8
- package/shared/ajv/index.d.ts +2 -2
- package/shared/markdown-it.d.ts +2 -2
- package/shared/markdown-it.js +1 -1
- package/shared/reflect-metadata/index.d.ts +1 -1
- package/shared/reflect-metadata/index.js +1 -1
- package/shared/vscode-languageserver-types/index.d.ts +1 -1
- package/src/browser/about-dialog.tsx +137 -137
- package/src/browser/authentication-service.ts +467 -468
- package/src/browser/breadcrumbs/breadcrumb-popup-container.ts +101 -101
- package/src/browser/breadcrumbs/breadcrumb-renderer.tsx +41 -41
- package/src/browser/breadcrumbs/breadcrumbs-constants.ts +79 -79
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +185 -185
- package/src/browser/breadcrumbs/breadcrumbs-service.ts +108 -108
- package/src/browser/breadcrumbs/index.ts +21 -21
- package/src/browser/browser-clipboard-service.ts +122 -122
- package/src/browser/browser.ts +239 -239
- package/src/browser/clipboard-service.ts +23 -23
- package/src/browser/color-application-contribution.ts +110 -110
- package/src/browser/color-registry.ts +60 -60
- package/src/browser/command-open-handler.ts +54 -54
- package/src/browser/common-frontend-contribution.ts +2680 -2680
- package/src/browser/common-styling-participants.ts +361 -361
- package/src/browser/connection-status-service.spec.ts +200 -200
- package/src/browser/connection-status-service.ts +216 -216
- package/src/browser/context-key-service.ts +142 -142
- package/src/browser/context-menu-renderer.ts +124 -124
- package/src/browser/core-preferences.ts +343 -334
- package/src/browser/credentials-service.ts +106 -106
- package/src/browser/decoration-style.ts +65 -65
- package/src/browser/decorations-service.ts +209 -209
- package/src/browser/dialogs/react-dialog.tsx +56 -56
- package/src/browser/dialogs.ts +534 -534
- package/src/browser/diff-uris.ts +117 -117
- package/src/browser/encoding-registry.ts +97 -97
- package/src/browser/endpoint.spec.ts +148 -148
- package/src/browser/endpoint.ts +136 -136
- package/src/browser/external-uri-service.ts +79 -79
- package/src/browser/file-icons-js.d.ts +20 -20
- package/src/browser/frontend-application-bindings.ts +62 -62
- package/src/browser/frontend-application-config-provider.spec.ts +45 -45
- package/src/browser/frontend-application-config-provider.ts +50 -50
- package/src/browser/frontend-application-contribution.ts +110 -110
- package/src/browser/frontend-application-module.ts +474 -475
- package/src/browser/frontend-application-state.ts +74 -74
- package/src/browser/frontend-application.ts +326 -326
- package/src/browser/hover-service.ts +218 -218
- package/src/browser/http-open-handler.ts +49 -49
- package/src/browser/i18n/i18n-frontend-module.ts +27 -27
- package/src/browser/i18n/language-quick-pick-service.ts +130 -130
- package/src/browser/icon-registry.ts +87 -87
- package/src/browser/icon-theme-contribution.ts +64 -64
- package/src/browser/icon-theme-service.ts +217 -217
- package/src/browser/icons/CollapseAll.svg +7 -7
- package/src/browser/icons/CollapseAll_inverse.svg +7 -7
- package/src/browser/icons/Refresh.svg +7 -7
- package/src/browser/icons/Refresh_inverse.svg +7 -7
- package/src/browser/icons/add-inverse.svg +4 -4
- package/src/browser/icons/add.svg +4 -4
- package/src/browser/icons/arrow-down-bright.svg +6 -6
- package/src/browser/icons/arrow-down-dark.svg +6 -6
- package/src/browser/icons/arrow-up-bright.svg +6 -6
- package/src/browser/icons/arrow-up-dark.svg +6 -6
- package/src/browser/icons/case-sensitive-dark.svg +16 -16
- package/src/browser/icons/case-sensitive.svg +16 -16
- package/src/browser/icons/chevron-right-dark.svg +5 -5
- package/src/browser/icons/chevron-right-light.svg +6 -6
- package/src/browser/icons/circle-bright.svg +7 -7
- package/src/browser/icons/circle-dark.svg +7 -7
- package/src/browser/icons/clear-search-results-dark.svg +7 -7
- package/src/browser/icons/clear-search-results.svg +7 -7
- package/src/browser/icons/close-all-bright.svg +7 -7
- package/src/browser/icons/close-all-dark.svg +7 -7
- package/src/browser/icons/close-bright.svg +7 -7
- package/src/browser/icons/close-dark.svg +7 -7
- package/src/browser/icons/collapse.svg +4 -4
- package/src/browser/icons/edit-json-dark.svg +6 -6
- package/src/browser/icons/edit-json.svg +6 -6
- package/src/browser/icons/expand.svg +4 -4
- package/src/browser/icons/loading-dark.svg +6 -6
- package/src/browser/icons/loading-light.svg +6 -6
- package/src/browser/icons/open-change-bright.svg +3 -3
- package/src/browser/icons/open-change-dark.svg +4 -4
- package/src/browser/icons/open-file-bright.svg +4 -4
- package/src/browser/icons/open-file-dark.svg +4 -4
- package/src/browser/icons/preview-bright.svg +3 -3
- package/src/browser/icons/preview-dark.svg +3 -3
- package/src/browser/icons/regex-dark.svg +10 -10
- package/src/browser/icons/regex.svg +10 -10
- package/src/browser/icons/remove-all-inverse.svg +4 -4
- package/src/browser/icons/remove-all.svg +4 -4
- package/src/browser/icons/replace-all-inverse.svg +13 -13
- package/src/browser/icons/replace-all.svg +13 -13
- package/src/browser/icons/replace-inverse.svg +15 -15
- package/src/browser/icons/replace.svg +15 -15
- package/src/browser/icons/whole-word-dark.svg +19 -19
- package/src/browser/icons/whole-word.svg +19 -19
- package/src/browser/index.ts +50 -50
- package/src/browser/json-schema-store.ts +118 -127
- package/src/browser/keybinding.spec.ts +554 -554
- package/src/browser/keybinding.ts +759 -759
- package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +108 -108
- package/src/browser/keyboard/browser-keyboard-layout-provider.spec.ts +171 -171
- package/src/browser/keyboard/browser-keyboard-layout-provider.ts +469 -469
- package/src/browser/keyboard/browser-keyboard-module.ts +30 -30
- package/src/browser/keyboard/index.ts +20 -20
- package/src/browser/keyboard/keyboard-layout-service.spec.ts +121 -121
- package/src/browser/keyboard/keyboard-layout-service.ts +455 -455
- package/src/browser/keyboard/keys.spec.ts +258 -258
- package/src/browser/keyboard/keys.ts +20 -20
- package/src/browser/keys.ts +21 -21
- package/src/browser/label-parser.spec.ts +165 -165
- package/src/browser/label-parser.ts +108 -108
- package/src/browser/label-provider.spec.ts +62 -62
- package/src/browser/label-provider.ts +385 -385
- package/src/browser/language-icon-provider.ts +55 -55
- package/src/browser/language-service.ts +77 -77
- package/src/browser/logger-frontend-module.ts +65 -65
- package/src/browser/markdown-rendering/markdown-renderer.ts +98 -98
- package/src/browser/menu/browser-context-menu-renderer.ts +48 -48
- package/src/browser/menu/browser-menu-module.ts +28 -28
- package/src/browser/menu/browser-menu-plugin.ts +491 -491
- package/src/browser/menu/context-menu-context.ts +41 -41
- package/src/browser/messaging/connection-source.ts +26 -26
- package/src/browser/messaging/frontend-id-provider.ts +37 -37
- package/src/browser/messaging/index.ts +18 -18
- package/src/browser/messaging/messaging-frontend-module.ts +41 -41
- package/src/browser/messaging/service-connection-provider.ts +140 -140
- package/src/browser/messaging/ws-connection-provider.ts +49 -49
- package/src/browser/messaging/ws-connection-source.ts +230 -230
- package/src/browser/mime-service.ts +30 -30
- package/src/browser/navigatable-types.ts +81 -81
- package/src/browser/navigatable.ts +39 -39
- package/src/browser/open-with-service.ts +140 -93
- package/src/browser/opener-service.spec.ts +49 -49
- package/src/browser/opener-service.ts +169 -146
- package/src/browser/performance/frontend-stopwatch.ts +65 -65
- package/src/browser/performance/index.ts +18 -18
- package/src/browser/performance/measurement-frontend-bindings.ts +31 -31
- package/src/browser/preferences/index.ts +23 -23
- package/src/browser/preferences/injectable-preference-proxy.ts +283 -283
- package/src/browser/preferences/preference-configurations.ts +82 -82
- package/src/browser/preferences/preference-contribution.ts +436 -436
- package/src/browser/preferences/preference-language-override-service.ts +111 -111
- package/src/browser/preferences/preference-provider.spec.ts +36 -36
- package/src/browser/preferences/preference-provider.ts +277 -277
- package/src/browser/preferences/preference-proxy.spec.ts +367 -367
- package/src/browser/preferences/preference-proxy.ts +367 -367
- package/src/browser/preferences/preference-schema-provider.spec.ts +130 -130
- package/src/browser/preferences/preference-scope.ts +18 -18
- package/src/browser/preferences/preference-service.spec.ts +613 -613
- package/src/browser/preferences/preference-service.ts +594 -594
- package/src/browser/preferences/preference-validation-service.spec.ts +334 -334
- package/src/browser/preferences/preference-validation-service.ts +358 -358
- package/src/browser/preferences/test/index.ts +19 -19
- package/src/browser/preferences/test/mock-preference-provider.ts +50 -50
- package/src/browser/preferences/test/mock-preference-proxy.ts +48 -48
- package/src/browser/preferences/test/mock-preference-service.ts +63 -63
- package/src/browser/preload/i18n-preload-contribution.ts +50 -50
- package/src/browser/preload/os-preload-contribution.ts +37 -37
- package/src/browser/preload/preload-module.ts +45 -45
- package/src/browser/preload/preloader.ts +37 -37
- package/src/browser/preload/theme-preload-contribution.ts +31 -31
- package/src/browser/progress-bar-factory.ts +29 -29
- package/src/browser/progress-bar.ts +76 -76
- package/src/browser/progress-client.ts +53 -53
- package/src/browser/progress-location-service.spec.ts +50 -50
- package/src/browser/progress-location-service.ts +96 -96
- package/src/browser/progress-status-bar-item.ts +83 -83
- package/src/browser/quick-input/index.ts +23 -23
- package/src/browser/quick-input/quick-access.ts +75 -75
- package/src/browser/quick-input/quick-command-frontend-contribution.ts +89 -89
- package/src/browser/quick-input/quick-command-service.ts +246 -246
- package/src/browser/quick-input/quick-help-service.ts +87 -87
- package/src/browser/quick-input/quick-input-frontend-contribution.ts +33 -33
- package/src/browser/quick-input/quick-input-service.spec.ts +176 -176
- package/src/browser/quick-input/quick-input-service.ts +17 -17
- package/src/browser/quick-input/quick-pick-service-impl.ts +69 -69
- package/src/browser/quick-input/quick-view-service.ts +83 -83
- package/src/browser/request/browser-request-module.ts +23 -23
- package/src/browser/request/browser-request-service.ts +172 -172
- package/src/browser/resource-context-key.ts +77 -77
- package/src/browser/saveable-service.ts +332 -328
- package/src/browser/saveable.ts +395 -327
- package/src/browser/secondary-window-handler.ts +211 -211
- package/src/browser/shell/additional-views-menu-widget.tsx +71 -71
- package/src/browser/shell/application-shell-mouse-tracker.ts +103 -103
- package/src/browser/shell/application-shell.ts +2271 -2271
- package/src/browser/shell/current-widget-command-adapter.ts +57 -57
- package/src/browser/shell/index.ts +23 -23
- package/src/browser/shell/shell-layout-restorer.ts +399 -399
- package/src/browser/shell/side-panel-handler.ts +794 -794
- package/src/browser/shell/side-panel-toolbar.ts +111 -111
- package/src/browser/shell/sidebar-bottom-menu-widget.tsx +39 -39
- package/src/browser/shell/sidebar-menu-widget.tsx +183 -183
- package/src/browser/shell/sidebar-top-menu-widget.tsx +26 -26
- package/src/browser/shell/split-panels.ts +191 -191
- package/src/browser/shell/tab-bar-decorator.ts +106 -106
- package/src/browser/shell/tab-bar-toolbar/index.ts +19 -19
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.ts +31 -31
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +242 -256
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +149 -207
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +62 -62
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +443 -428
- package/src/browser/shell/tab-bars.spec.ts +63 -63
- package/src/browser/shell/tab-bars.ts +1468 -1468
- package/src/browser/shell/theia-dock-panel.ts +265 -265
- package/src/browser/shell/view-column-service.ts +125 -125
- package/src/browser/shell/view-contribution.ts +178 -178
- package/src/browser/source-tree/index.ts +19 -19
- package/src/browser/source-tree/source-tree-widget.tsx +107 -107
- package/src/browser/source-tree/source-tree.ts +146 -146
- package/src/browser/source-tree/tree-source.ts +73 -73
- package/src/browser/status-bar/index.ts +29 -29
- package/src/browser/status-bar/status-bar-types.ts +97 -97
- package/src/browser/status-bar/status-bar-view-model.ts +209 -209
- package/src/browser/status-bar/status-bar.tsx +189 -189
- package/src/browser/storage-service.spec.ts +76 -76
- package/src/browser/storage-service.ts +129 -129
- package/src/browser/style/about.css +36 -36
- package/src/browser/style/alert-messages.css +62 -62
- package/src/browser/style/ansi.css +88 -88
- package/src/browser/style/breadcrumbs.css +130 -130
- package/src/browser/style/dialog.css +126 -126
- package/src/browser/style/dockpanel.css +76 -76
- package/src/browser/style/hover-service.css +101 -101
- package/src/browser/style/icons.css +61 -61
- package/src/browser/style/index.css +353 -351
- package/src/browser/style/materialcolors.css +278 -278
- package/src/browser/style/menus.css +230 -230
- package/src/browser/style/notification.css +39 -39
- package/src/browser/style/os.css +87 -87
- package/src/browser/style/progress-bar.css +43 -43
- package/src/browser/style/quick-title-bar.css +45 -45
- package/src/browser/style/scrollbars.css +172 -172
- package/src/browser/style/search-box.css +123 -123
- package/src/browser/style/select-component.css +107 -107
- package/src/browser/style/sidepanel.css +367 -367
- package/src/browser/style/split-widget.css +38 -0
- package/src/browser/style/status-bar.css +127 -127
- package/src/browser/style/tabs.css +647 -658
- package/src/browser/style/tooltip.css +28 -28
- package/src/browser/style/tree-decorators.css +81 -81
- package/src/browser/style/tree.css +232 -232
- package/src/browser/style/view-container.css +187 -194
- package/src/browser/style/widget.css +19 -19
- package/src/browser/styling-service.ts +96 -96
- package/src/browser/supported-encodings.ts +262 -262
- package/src/browser/test/jsdom.ts +69 -69
- package/src/browser/test/mock-connection-status-service.ts +33 -33
- package/src/browser/test/mock-env-variables-server.ts +47 -47
- package/src/browser/test/mock-opener-service.ts +34 -34
- package/src/browser/test/mock-storage-service.ts +49 -49
- package/src/browser/theming.ts +206 -206
- package/src/browser/tooltip-service.tsx +96 -96
- package/src/browser/tree/fuzzy-search.spec.ts +99 -99
- package/src/browser/tree/fuzzy-search.ts +136 -136
- package/src/browser/tree/index.ts +29 -29
- package/src/browser/tree/search-box-debounce.ts +96 -96
- package/src/browser/tree/search-box.ts +355 -355
- package/src/browser/tree/test/mock-selectable-tree-model.ts +109 -109
- package/src/browser/tree/test/mock-tree-model.ts +136 -136
- package/src/browser/tree/test/tree-test-container.ts +50 -50
- package/src/browser/tree/tree-compression/compressed-tree-expansion-service.ts +46 -46
- package/src/browser/tree/tree-compression/compressed-tree-model.ts +88 -88
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +203 -203
- package/src/browser/tree/tree-compression/index.ts +20 -20
- package/src/browser/tree/tree-compression/tree-compression-service.ts +125 -125
- package/src/browser/tree/tree-compression/tree-compression.css +28 -28
- package/src/browser/tree/tree-consistency.spec.ts +105 -105
- package/src/browser/tree/tree-container.spec.ts +45 -45
- package/src/browser/tree/tree-container.ts +155 -155
- package/src/browser/tree/tree-decorator.spec.ts +162 -162
- package/src/browser/tree/tree-decorator.ts +238 -238
- package/src/browser/tree/tree-expansion.spec.ts +173 -173
- package/src/browser/tree/tree-expansion.ts +165 -165
- package/src/browser/tree/tree-focus-service.ts +55 -55
- package/src/browser/tree/tree-iterator.spec.ts +170 -170
- package/src/browser/tree/tree-iterator.ts +256 -256
- package/src/browser/tree/tree-label-provider.ts +40 -40
- package/src/browser/tree/tree-model.ts +562 -562
- package/src/browser/tree/tree-navigation.ts +58 -58
- package/src/browser/tree/tree-preference.ts +50 -50
- package/src/browser/tree/tree-search.ts +128 -128
- package/src/browser/tree/tree-selectable.spec.ts +152 -152
- package/src/browser/tree/tree-selection-impl.ts +176 -176
- package/src/browser/tree/tree-selection-state.spec.ts +462 -462
- package/src/browser/tree/tree-selection-state.ts +245 -245
- package/src/browser/tree/tree-selection.ts +159 -159
- package/src/browser/tree/tree-view-welcome-widget.tsx +263 -263
- package/src/browser/tree/tree-widget-selection.ts +45 -45
- package/src/browser/tree/tree-widget.tsx +1591 -1591
- package/src/browser/tree/tree.spec.ts +241 -241
- package/src/browser/tree/tree.ts +425 -425
- package/src/browser/undo-redo-handler.ts +85 -85
- package/src/browser/user-working-directory-provider.ts +77 -77
- package/src/browser/view-container.ts +1640 -1640
- package/src/browser/widget-decoration.ts +358 -358
- package/src/browser/widget-manager.spec.ts +102 -102
- package/src/browser/widget-manager.ts +318 -318
- package/src/browser/widget-open-handler.ts +168 -165
- package/src/browser/widgets/alert-message.tsx +56 -56
- package/src/browser/widgets/enhanced-preview-widget.ts +27 -27
- package/src/browser/widgets/extractable-widget.ts +33 -33
- package/src/browser/widgets/index.ts +21 -20
- package/src/browser/widgets/previewable-widget.ts +31 -31
- package/src/browser/widgets/react-renderer.tsx +53 -53
- package/src/browser/widgets/react-widget.tsx +51 -51
- package/src/browser/widgets/select-component.tsx +367 -367
- package/src/browser/widgets/split-widget.ts +163 -0
- package/src/browser/widgets/widget.ts +406 -406
- package/src/browser/window/browser-window-module.ts +32 -32
- package/src/browser/window/default-secondary-window-service.ts +189 -189
- package/src/browser/window/default-window-service.spec.ts +78 -78
- package/src/browser/window/default-window-service.ts +171 -171
- package/src/browser/window/secondary-window-service.ts +39 -39
- package/src/browser/window/test/mock-window-service.ts +29 -29
- package/src/browser/window/window-service.ts +78 -78
- package/src/browser/window/window-title-service.ts +107 -107
- package/src/browser/window/window-title-updater.ts +95 -95
- package/src/browser/window-contribution.ts +64 -64
- package/src/browser-only/frontend-only-application-module.ts +116 -116
- package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -37
- package/src/browser-only/logger-frontend-only-module.ts +63 -63
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -39
- package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -42
- package/src/browser-only/preload/frontend-only-preload-module.ts +49 -49
- package/src/common/accessibility.ts +33 -33
- package/src/common/application-error.spec.ts +27 -27
- package/src/common/application-error.ts +76 -76
- package/src/common/application-protocol.ts +42 -42
- package/src/common/array-utils.ts +129 -129
- package/src/common/buffer.ts +228 -228
- package/src/common/cancellation.ts +163 -163
- package/src/common/char-code.ts +438 -438
- package/src/common/collections.ts +125 -125
- package/src/common/color.ts +103 -103
- package/src/common/command.spec.ts +208 -208
- package/src/common/command.ts +489 -489
- package/src/common/contribution-filter/contribution-filter-registry.ts +79 -79
- package/src/common/contribution-filter/contribution-filter.ts +64 -64
- package/src/common/contribution-filter/filter.ts +23 -23
- package/src/common/contribution-filter/index.ts +19 -19
- package/src/common/contribution-provider.ts +96 -96
- package/src/common/disposable.spec.ts +94 -94
- package/src/common/disposable.ts +188 -188
- package/src/common/encoding-service.ts +380 -380
- package/src/common/encodings.ts +24 -24
- package/src/common/env-variables/env-variables-protocol.ts +38 -38
- package/src/common/env-variables/index.ts +17 -17
- package/src/common/event.spec.ts +32 -32
- package/src/common/event.ts +493 -487
- package/src/common/file-uri.ts +61 -61
- package/src/common/frontend-application-state.ts +38 -38
- package/src/common/glob.ts +741 -741
- package/src/common/hash.ts +85 -85
- package/src/common/i18n/localization-server.ts +25 -25
- package/src/common/i18n/localization.ts +80 -80
- package/src/common/i18n/nls.metadata.json +34112 -34112
- package/src/common/index.ts +51 -51
- package/src/common/json-schema.ts +108 -106
- package/src/common/key-store.ts +26 -26
- package/src/common/keybinding.ts +152 -152
- package/src/common/keyboard/keyboard-layout-provider.ts +51 -51
- package/src/common/keys.ts +694 -694
- package/src/common/label-protocol.ts +35 -35
- package/src/common/logger-protocol.ts +119 -119
- package/src/common/logger-watcher.ts +48 -48
- package/src/common/logger.spec.ts +46 -46
- package/src/common/logger.ts +389 -389
- package/src/common/lsp-types.ts +34 -34
- package/src/common/markdown-rendering/icon-utilities.ts +30 -30
- package/src/common/markdown-rendering/index.ts +18 -18
- package/src/common/markdown-rendering/markdown-string.ts +152 -152
- package/src/common/menu/action-menu-node.ts +65 -65
- package/src/common/menu/composite-menu-node.spec.ts +67 -67
- package/src/common/menu/composite-menu-node.ts +114 -114
- package/src/common/menu/index.ts +21 -21
- package/src/common/menu/menu-adapter.ts +103 -103
- package/src/common/menu/menu-model-registry.ts +374 -374
- package/src/common/menu/menu-types.ts +220 -219
- package/src/common/menu/menu.spec.ts +101 -101
- package/src/common/message-rpc/channel.spec.ts +88 -88
- package/src/common/message-rpc/channel.ts +300 -300
- package/src/common/message-rpc/index.ts +22 -22
- package/src/common/message-rpc/message-buffer.ts +105 -105
- package/src/common/message-rpc/msg-pack-extension-manager.ts +70 -70
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +65 -65
- package/src/common/message-rpc/rpc-message-encoder.ts +190 -190
- package/src/common/message-rpc/rpc-protocol.ts +255 -255
- package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -41
- package/src/common/message-rpc/uint8-array-message-buffer.ts +213 -213
- package/src/common/message-service-protocol.ts +148 -148
- package/src/common/message-service.ts +226 -226
- package/src/common/messaging/connection-error-handler.ts +73 -73
- package/src/common/messaging/connection-management.ts +43 -43
- package/src/common/messaging/handler.ts +26 -26
- package/src/common/messaging/index.ts +19 -19
- package/src/common/messaging/proxy-factory.spec.ts +108 -108
- package/src/common/messaging/proxy-factory.ts +336 -336
- package/src/common/messaging/socket-write-buffer.ts +52 -52
- package/src/common/messaging/web-socket-channel.ts +76 -76
- package/src/common/nls.ts +151 -151
- package/src/common/numbers.ts +21 -21
- package/src/common/objects.spec.ts +112 -112
- package/src/common/objects.ts +123 -123
- package/src/common/os.ts +82 -82
- package/src/common/path.spec.ts +415 -415
- package/src/common/path.ts +334 -334
- package/src/common/paths.ts +250 -250
- package/src/common/performance/index.ts +19 -19
- package/src/common/performance/measurement-protocol.ts +104 -104
- package/src/common/performance/measurement.ts +130 -130
- package/src/common/performance/stopwatch.ts +183 -183
- package/src/common/preferences/preference-schema.ts +101 -101
- package/src/common/preferences/preference-scope.spec.ts +48 -48
- package/src/common/preferences/preference-scope.ts +68 -68
- package/src/common/prioritizeable.ts +58 -58
- package/src/common/progress-service-protocol.ts +35 -35
- package/src/common/progress-service.ts +82 -82
- package/src/common/promise-util.spec.ts +102 -102
- package/src/common/promise-util.ts +143 -143
- package/src/common/quick-pick-service.ts +353 -353
- package/src/common/reference.spec.ts +145 -145
- package/src/common/reference.ts +230 -230
- package/src/common/resource.ts +430 -430
- package/src/common/selection-command-handler.ts +101 -101
- package/src/common/selection-service.spec.ts +43 -43
- package/src/common/selection-service.ts +49 -49
- package/src/common/selection.ts +50 -50
- package/src/common/severity.ts +111 -111
- package/src/common/stream.ts +718 -718
- package/src/common/strings.ts +231 -231
- package/src/common/telemetry.ts +45 -45
- package/src/common/ternary-search-tree.ts +417 -417
- package/src/common/test/expect.ts +34 -34
- package/src/common/test/mock-logger.ts +118 -118
- package/src/common/test/mock-menu.ts +35 -35
- package/src/common/test/mock-resource-provider.ts +33 -33
- package/src/common/theme.ts +68 -68
- package/src/common/types.spec.ts +86 -86
- package/src/common/types.ts +140 -140
- package/src/common/uri-command-handler.spec.ts +90 -90
- package/src/common/uri-command-handler.ts +148 -148
- package/src/common/uri.spec.ts +278 -278
- package/src/common/uri.ts +279 -279
- package/src/common/uuid.ts +45 -45
- package/src/common/version.ts +17 -17
- package/src/common/view-column.ts +33 -33
- package/src/common/window.ts +34 -34
- package/src/electron-browser/electron-clipboard-service.ts +32 -32
- package/src/electron-browser/electron-uri-handler.ts +42 -0
- package/src/electron-browser/keyboard/electron-keyboard-layout-change-notifier.ts +39 -39
- package/src/electron-browser/keyboard/electron-keyboard-module.ts +28 -28
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +122 -122
- package/src/electron-browser/menu/electron-main-menu-factory.ts +339 -338
- package/src/electron-browser/menu/electron-menu-contribution.ts +506 -506
- package/src/electron-browser/menu/electron-menu-module.ts +40 -40
- package/src/electron-browser/menu/electron-menu-style.css +110 -110
- package/src/electron-browser/messaging/electron-frontend-id-provider.ts +25 -25
- package/src/electron-browser/messaging/electron-ipc-connection-source.ts +65 -65
- package/src/electron-browser/messaging/electron-local-ws-connection-source.ts +45 -45
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +78 -78
- package/src/electron-browser/messaging/electron-ws-connection-source.ts +38 -38
- package/src/electron-browser/preload.ts +264 -249
- package/src/electron-browser/request/electron-browser-request-module.ts +26 -26
- package/src/electron-browser/token/electron-token-frontend-module.ts +22 -22
- package/src/electron-browser/window/electron-frontend-application-state.ts +26 -26
- package/src/electron-browser/window/electron-secondary-window-service.ts +35 -35
- package/src/electron-browser/window/electron-window-module.ts +48 -45
- package/src/electron-browser/window/electron-window-preferences.ts +76 -76
- package/src/electron-browser/window/electron-window-service.ts +109 -109
- package/src/electron-browser/window/external-app-open-handler.ts +42 -42
- package/src/electron-common/electron-api.ts +157 -154
- package/src/electron-common/electron-main-window-service.ts +24 -24
- package/src/electron-common/electron-token.ts +27 -27
- package/src/electron-main/electron-api-main.ts +373 -347
- package/src/electron-main/electron-main-application-module.ts +65 -65
- package/src/electron-main/electron-main-application.ts +860 -818
- package/src/electron-main/electron-main-constants.ts +23 -23
- package/src/electron-main/electron-main-window-service-impl.ts +44 -44
- package/src/electron-main/electron-security-token-service.ts +36 -36
- package/src/electron-main/event-utils.ts +36 -36
- package/src/electron-main/messaging/electron-connection-handler.ts +21 -21
- package/src/electron-main/messaging/electron-messaging-contribution.ts +143 -143
- package/src/electron-main/messaging/electron-messaging-service.ts +35 -35
- package/src/electron-main/theia-electron-window.ts +219 -214
- package/src/electron-node/cli/electron-backend-cli-module.ts +24 -24
- package/src/electron-node/cli/electron-cli-contribution.ts +35 -35
- package/src/electron-node/hosting/electron-backend-hosting-module.ts +24 -24
- package/src/electron-node/hosting/electron-ws-origin-validator.ts +37 -37
- package/src/electron-node/keyboard/electron-backend-keyboard-module.ts +30 -30
- package/src/electron-node/keyboard/electron-keyboard-layout-provider.ts +35 -35
- package/src/electron-node/request/electron-backend-request-module.ts +23 -23
- package/src/electron-node/request/electron-backend-request-service.ts +78 -78
- package/src/electron-node/token/electron-token-backend-contribution.ts +48 -48
- package/src/electron-node/token/electron-token-backend-module.ts +28 -28
- package/src/electron-node/token/electron-token-validator.ts +93 -93
- package/src/node/application-server.ts +59 -59
- package/src/node/backend-application-config-provider.spec.ts +29 -29
- package/src/node/backend-application-config-provider.ts +48 -48
- package/src/node/backend-application-module.ts +139 -139
- package/src/node/backend-application.ts +374 -374
- package/src/node/cli.spec.ts +94 -94
- package/src/node/cli.ts +63 -63
- package/src/node/console-logger-server.spec.ts +59 -59
- package/src/node/console-logger-server.ts +76 -76
- package/src/node/debug.ts +30 -30
- package/src/node/dynamic-require.ts +56 -56
- package/src/node/env-variables/env-variables-server.ts +123 -123
- package/src/node/env-variables/index.ts +17 -17
- package/src/node/environment-utils.spec.ts +92 -92
- package/src/node/environment-utils.ts +66 -66
- package/src/node/file-uri.spec.ts +76 -76
- package/src/node/filesystem-locking.ts +77 -77
- package/src/node/hosting/backend-application-hosts.ts +60 -60
- package/src/node/hosting/backend-hosting-module.ts +26 -26
- package/src/node/hosting/ws-origin-validator.ts +36 -36
- package/src/node/i18n/i18n-backend-module.ts +42 -42
- package/src/node/i18n/localization-contribution.ts +112 -112
- package/src/node/i18n/localization-provider.ts +125 -125
- package/src/node/i18n/localization-server.ts +52 -52
- package/src/node/i18n/theia-localization-contribution.ts +40 -36
- package/src/node/index.ts +22 -22
- package/src/node/key-store-server.ts +162 -162
- package/src/node/logger-backend-module.ts +88 -88
- package/src/node/logger-cli-contribution.spec.ts +245 -245
- package/src/node/logger-cli-contribution.ts +168 -168
- package/src/node/main.ts +33 -33
- package/src/node/messaging/binary-message-pipe.ts +168 -168
- package/src/node/messaging/connection-container-module.ts +96 -96
- package/src/node/messaging/default-messaging-service.ts +129 -129
- package/src/node/messaging/frontend-connection-service.ts +24 -24
- package/src/node/messaging/index.ts +19 -19
- package/src/node/messaging/ipc-bootstrap.ts +27 -27
- package/src/node/messaging/ipc-channel.ts +77 -77
- package/src/node/messaging/ipc-connection-provider.ts +107 -107
- package/src/node/messaging/ipc-protocol.ts +76 -76
- package/src/node/messaging/messaging-backend-module.ts +52 -52
- package/src/node/messaging/messaging-listeners.ts +52 -52
- package/src/node/messaging/messaging-service.ts +46 -46
- package/src/node/messaging/test/test-web-socket-channel.ts +61 -61
- package/src/node/messaging/websocket-endpoint.ts +79 -79
- package/src/node/messaging/websocket-frontend-connection-service.ts +186 -186
- package/src/node/os-backend-provider.ts +25 -25
- package/src/node/performance/index.ts +18 -18
- package/src/node/performance/measurement-backend-bindings.ts +35 -35
- package/src/node/performance/node-stopwatch.ts +40 -40
- package/src/node/process-utils.spec.ts +48 -48
- package/src/node/process-utils.ts +102 -102
- package/src/node/remote/backend-remote-service.ts +25 -25
- package/src/node/remote/remote-cli-contribution.ts +34 -34
- package/src/node/remote/remote-copy-contribution.ts +45 -45
- package/src/node/request/backend-request-facade.ts +39 -39
- package/src/node/request/backend-request-module.ts +25 -25
- package/src/node/request/proxy-cli-contribution.ts +65 -65
- package/src/node/ws-request-validators.ts +56 -56
- package/src/typings/native-keymap.d.ts +108 -108
- package/i18n/nls.pt-pt.json +0 -552
|
@@ -1,255 +1,255 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2021 Red Hat, Inc. 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
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
17
|
-
|
|
18
|
-
import { CancellationToken, CancellationTokenSource } from '../cancellation';
|
|
19
|
-
import { DisposableWrapper, Disposable, DisposableCollection } from '../disposable';
|
|
20
|
-
import { Emitter, Event } from '../event';
|
|
21
|
-
import { Deferred } from '../promise-util';
|
|
22
|
-
import { Channel } from './channel';
|
|
23
|
-
import { MsgPackMessageDecoder, MsgPackMessageEncoder, RpcMessage, RpcMessageDecoder, RpcMessageEncoder, RpcMessageType } from './rpc-message-encoder';
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Handles request messages received by the {@link RPCProtocol}.
|
|
27
|
-
*/
|
|
28
|
-
export type RequestHandler = (method: string, args: any[]) => Promise<any>;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Initialization options for a {@link RpcProtocol}.
|
|
32
|
-
*/
|
|
33
|
-
export interface RpcProtocolOptions {
|
|
34
|
-
/**
|
|
35
|
-
* The message encoder that should be used. If `undefined` the default {@link RpcMessageEncoder} will be used.
|
|
36
|
-
*/
|
|
37
|
-
encoder?: RpcMessageEncoder,
|
|
38
|
-
/**
|
|
39
|
-
* The message decoder that should be used. If `undefined` the default {@link RpcMessageDecoder} will be used.
|
|
40
|
-
*/
|
|
41
|
-
decoder?: RpcMessageDecoder,
|
|
42
|
-
/**
|
|
43
|
-
* The runtime mode determines whether the RPC protocol is bi-directional (default) or acts as a client or server only.
|
|
44
|
-
*/
|
|
45
|
-
mode?: 'default' | 'clientOnly' | 'serverOnly'
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Establish a RPC protocol on top of a given channel. By default the rpc protocol is bi-directional, meaning it is possible to send
|
|
50
|
-
* requests and notifications to the remote side (i.e. acts as client) as well as receiving requests and notifications from the remote side (i.e. acts as a server).
|
|
51
|
-
* Clients can get a promise for a remote request result that will be either resolved or
|
|
52
|
-
* rejected depending on the success of the request. Keeps track of outstanding requests and matches replies to the appropriate request
|
|
53
|
-
* Currently, there is no timeout handling for long running requests implemented.
|
|
54
|
-
* The bi-directional mode can be reconfigured using the {@link RpcProtocolOptions} to construct an RPC protocol instance that acts only as client or server instead.
|
|
55
|
-
*/
|
|
56
|
-
export class RpcProtocol {
|
|
57
|
-
static readonly CANCELLATION_TOKEN_KEY = 'add.cancellation.token';
|
|
58
|
-
|
|
59
|
-
protected readonly pendingRequests: Map<number, Deferred<any>> = new Map();
|
|
60
|
-
protected readonly pendingRequestCancellationEventListeners: Map<number, DisposableWrapper> = new Map();
|
|
61
|
-
|
|
62
|
-
protected nextMessageId: number = 0;
|
|
63
|
-
|
|
64
|
-
protected readonly encoder: RpcMessageEncoder;
|
|
65
|
-
protected readonly decoder: RpcMessageDecoder;
|
|
66
|
-
protected readonly mode: 'default' | 'clientOnly' | 'serverOnly';
|
|
67
|
-
|
|
68
|
-
protected readonly onNotificationEmitter: Emitter<{ method: string; args: any[]; }> = new Emitter();
|
|
69
|
-
protected readonly cancellationTokenSources = new Map<number, CancellationTokenSource>();
|
|
70
|
-
|
|
71
|
-
get onNotification(): Event<{ method: string; args: any[]; }> {
|
|
72
|
-
return this.onNotificationEmitter.event;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
protected toDispose = new DisposableCollection();
|
|
76
|
-
|
|
77
|
-
constructor(public readonly channel: Channel, public readonly requestHandler: RequestHandler | undefined, options: RpcProtocolOptions = {}) {
|
|
78
|
-
this.encoder = options.encoder ?? new MsgPackMessageEncoder();
|
|
79
|
-
this.decoder = options.decoder ?? new MsgPackMessageDecoder();
|
|
80
|
-
this.toDispose.push(this.onNotificationEmitter);
|
|
81
|
-
channel.onClose(event => {
|
|
82
|
-
this.pendingRequests.forEach(pending => pending.reject(new Error(event.reason)));
|
|
83
|
-
this.pendingRequests.clear();
|
|
84
|
-
this.pendingRequestCancellationEventListeners.forEach(disposable => disposable.dispose());
|
|
85
|
-
this.pendingRequestCancellationEventListeners.clear();
|
|
86
|
-
this.toDispose.dispose();
|
|
87
|
-
});
|
|
88
|
-
this.toDispose.push(channel.onMessage(readBuffer => this.handleMessage(this.decoder.parse(readBuffer()))));
|
|
89
|
-
this.mode = options.mode ?? 'default';
|
|
90
|
-
|
|
91
|
-
if (this.mode !== 'clientOnly' && requestHandler === undefined) {
|
|
92
|
-
console.error('RPCProtocol was initialized without a request handler but was not set to clientOnly mode.');
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
handleMessage(message: RpcMessage): void {
|
|
97
|
-
if (this.mode !== 'clientOnly') {
|
|
98
|
-
switch (message.type) {
|
|
99
|
-
case RpcMessageType.Cancel: {
|
|
100
|
-
this.handleCancel(message.id);
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
case RpcMessageType.Request: {
|
|
104
|
-
this.handleRequest(message.id, message.method, message.args);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
case RpcMessageType.Notification: {
|
|
108
|
-
this.handleNotify(message.method, message.args, message.id);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
if (this.mode !== 'serverOnly') {
|
|
114
|
-
switch (message.type) {
|
|
115
|
-
case RpcMessageType.Reply: {
|
|
116
|
-
this.handleReply(message.id, message.res);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
case RpcMessageType.ReplyErr: {
|
|
120
|
-
this.handleReplyErr(message.id, message.err);
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// If the message was not handled until here, it is incompatible with the mode.
|
|
126
|
-
console.warn(`Received message incompatible with this RPCProtocol's mode '${this.mode}'. Type: ${message.type}. ID: ${message.id}.`);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
protected handleReply(id: number, value: any): void {
|
|
130
|
-
const replyHandler = this.pendingRequests.get(id);
|
|
131
|
-
if (replyHandler) {
|
|
132
|
-
this.pendingRequests.delete(id);
|
|
133
|
-
replyHandler.resolve(value);
|
|
134
|
-
} else {
|
|
135
|
-
throw new Error(`No reply handler for reply with id: ${id}`);
|
|
136
|
-
}
|
|
137
|
-
this.disposeCancellationEventListener(id);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
protected handleReplyErr(id: number, error: any): void {
|
|
141
|
-
const replyHandler = this.pendingRequests.get(id);
|
|
142
|
-
if (replyHandler) {
|
|
143
|
-
this.pendingRequests.delete(id);
|
|
144
|
-
replyHandler.reject(error);
|
|
145
|
-
} else {
|
|
146
|
-
throw new Error(`No reply handler for error reply with id: ${id}`);
|
|
147
|
-
}
|
|
148
|
-
this.disposeCancellationEventListener(id);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
protected disposeCancellationEventListener(id: number): void {
|
|
152
|
-
const toDispose = this.pendingRequestCancellationEventListeners.get(id);
|
|
153
|
-
if (toDispose) {
|
|
154
|
-
this.pendingRequestCancellationEventListeners.delete(id);
|
|
155
|
-
toDispose.dispose();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
sendRequest<T>(method: string, args: any[]): Promise<T> {
|
|
160
|
-
// The last element of the request args might be a cancellation token. As these tokens are not serializable we have to remove it from the
|
|
161
|
-
// args array and the `CANCELLATION_TOKEN_KEY` string instead.
|
|
162
|
-
const cancellationToken: CancellationToken | undefined = args.length && CancellationToken.is(args[args.length - 1]) ? args.pop() : undefined;
|
|
163
|
-
|
|
164
|
-
const id = this.nextMessageId++;
|
|
165
|
-
const reply = new Deferred<T>();
|
|
166
|
-
|
|
167
|
-
if (cancellationToken) {
|
|
168
|
-
args.push(RpcProtocol.CANCELLATION_TOKEN_KEY);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
this.pendingRequests.set(id, reply);
|
|
172
|
-
|
|
173
|
-
// register disposable before output.commit() even when not available yet
|
|
174
|
-
const disposableWrapper = new DisposableWrapper();
|
|
175
|
-
this.pendingRequestCancellationEventListeners.set(id, disposableWrapper);
|
|
176
|
-
|
|
177
|
-
const output = this.channel.getWriteBuffer();
|
|
178
|
-
this.encoder.request(output, id, method, args);
|
|
179
|
-
output.commit();
|
|
180
|
-
|
|
181
|
-
if (cancellationToken?.isCancellationRequested) {
|
|
182
|
-
this.sendCancel(id);
|
|
183
|
-
} else {
|
|
184
|
-
const disposable = cancellationToken?.onCancellationRequested(() => this.sendCancel(id));
|
|
185
|
-
if (disposable) {
|
|
186
|
-
disposableWrapper.set(disposable);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
return reply.promise;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
sendNotification(method: string, args: any[]): void {
|
|
194
|
-
// If the notification supports a CancellationToken, it needs to be treated like a request
|
|
195
|
-
// because cancellation does not work with the simplified "fire and forget" approach of simple notifications.
|
|
196
|
-
if (args.length && CancellationToken.is(args[args.length - 1])) {
|
|
197
|
-
this.sendRequest(method, args);
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
const output = this.channel.getWriteBuffer();
|
|
202
|
-
this.encoder.notification(output, method, args, this.nextMessageId++);
|
|
203
|
-
output.commit();
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
sendCancel(requestId: number): void {
|
|
207
|
-
const output = this.channel.getWriteBuffer();
|
|
208
|
-
this.encoder.cancel(output, requestId);
|
|
209
|
-
output.commit();
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
protected handleCancel(id: number): void {
|
|
213
|
-
const cancellationTokenSource = this.cancellationTokenSources.get(id);
|
|
214
|
-
if (cancellationTokenSource) {
|
|
215
|
-
cancellationTokenSource.cancel();
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
protected async handleRequest(id: number, method: string, args: any[]): Promise<void> {
|
|
220
|
-
const output = this.channel.getWriteBuffer();
|
|
221
|
-
|
|
222
|
-
// Check if the last argument of the received args is the key for indicating that a cancellation token should be used
|
|
223
|
-
// If so remove the key from the args and create a new cancellation token.
|
|
224
|
-
const addToken = args.length && args[args.length - 1] === RpcProtocol.CANCELLATION_TOKEN_KEY ? args.pop() : false;
|
|
225
|
-
if (addToken) {
|
|
226
|
-
const tokenSource = new CancellationTokenSource();
|
|
227
|
-
this.cancellationTokenSources.set(id, tokenSource);
|
|
228
|
-
args.push(tokenSource.token);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
try {
|
|
232
|
-
const result = await this.requestHandler!(method, args);
|
|
233
|
-
this.cancellationTokenSources.delete(id);
|
|
234
|
-
this.encoder.replyOK(output, id, result);
|
|
235
|
-
output.commit();
|
|
236
|
-
} catch (err) {
|
|
237
|
-
// In case of an error the output buffer might already contains parts of an message.
|
|
238
|
-
// => Dispose the current buffer and retrieve a new, clean one for writing the response error.
|
|
239
|
-
if (Disposable.is(output)) {
|
|
240
|
-
output.dispose();
|
|
241
|
-
}
|
|
242
|
-
const errorOutput = this.channel.getWriteBuffer();
|
|
243
|
-
this.cancellationTokenSources.delete(id);
|
|
244
|
-
this.encoder.replyErr(errorOutput, id, err);
|
|
245
|
-
errorOutput.commit();
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
protected async handleNotify(method: string, args: any[], id?: number): Promise<void> {
|
|
250
|
-
if (this.toDispose.disposed) {
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
this.onNotificationEmitter.fire({ method, args });
|
|
254
|
-
}
|
|
255
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2021 Red Hat, Inc. 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
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
17
|
+
|
|
18
|
+
import { CancellationToken, CancellationTokenSource } from '../cancellation';
|
|
19
|
+
import { DisposableWrapper, Disposable, DisposableCollection } from '../disposable';
|
|
20
|
+
import { Emitter, Event } from '../event';
|
|
21
|
+
import { Deferred } from '../promise-util';
|
|
22
|
+
import { Channel } from './channel';
|
|
23
|
+
import { MsgPackMessageDecoder, MsgPackMessageEncoder, RpcMessage, RpcMessageDecoder, RpcMessageEncoder, RpcMessageType } from './rpc-message-encoder';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Handles request messages received by the {@link RPCProtocol}.
|
|
27
|
+
*/
|
|
28
|
+
export type RequestHandler = (method: string, args: any[]) => Promise<any>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Initialization options for a {@link RpcProtocol}.
|
|
32
|
+
*/
|
|
33
|
+
export interface RpcProtocolOptions {
|
|
34
|
+
/**
|
|
35
|
+
* The message encoder that should be used. If `undefined` the default {@link RpcMessageEncoder} will be used.
|
|
36
|
+
*/
|
|
37
|
+
encoder?: RpcMessageEncoder,
|
|
38
|
+
/**
|
|
39
|
+
* The message decoder that should be used. If `undefined` the default {@link RpcMessageDecoder} will be used.
|
|
40
|
+
*/
|
|
41
|
+
decoder?: RpcMessageDecoder,
|
|
42
|
+
/**
|
|
43
|
+
* The runtime mode determines whether the RPC protocol is bi-directional (default) or acts as a client or server only.
|
|
44
|
+
*/
|
|
45
|
+
mode?: 'default' | 'clientOnly' | 'serverOnly'
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Establish a RPC protocol on top of a given channel. By default the rpc protocol is bi-directional, meaning it is possible to send
|
|
50
|
+
* requests and notifications to the remote side (i.e. acts as client) as well as receiving requests and notifications from the remote side (i.e. acts as a server).
|
|
51
|
+
* Clients can get a promise for a remote request result that will be either resolved or
|
|
52
|
+
* rejected depending on the success of the request. Keeps track of outstanding requests and matches replies to the appropriate request
|
|
53
|
+
* Currently, there is no timeout handling for long running requests implemented.
|
|
54
|
+
* The bi-directional mode can be reconfigured using the {@link RpcProtocolOptions} to construct an RPC protocol instance that acts only as client or server instead.
|
|
55
|
+
*/
|
|
56
|
+
export class RpcProtocol {
|
|
57
|
+
static readonly CANCELLATION_TOKEN_KEY = 'add.cancellation.token';
|
|
58
|
+
|
|
59
|
+
protected readonly pendingRequests: Map<number, Deferred<any>> = new Map();
|
|
60
|
+
protected readonly pendingRequestCancellationEventListeners: Map<number, DisposableWrapper> = new Map();
|
|
61
|
+
|
|
62
|
+
protected nextMessageId: number = 0;
|
|
63
|
+
|
|
64
|
+
protected readonly encoder: RpcMessageEncoder;
|
|
65
|
+
protected readonly decoder: RpcMessageDecoder;
|
|
66
|
+
protected readonly mode: 'default' | 'clientOnly' | 'serverOnly';
|
|
67
|
+
|
|
68
|
+
protected readonly onNotificationEmitter: Emitter<{ method: string; args: any[]; }> = new Emitter();
|
|
69
|
+
protected readonly cancellationTokenSources = new Map<number, CancellationTokenSource>();
|
|
70
|
+
|
|
71
|
+
get onNotification(): Event<{ method: string; args: any[]; }> {
|
|
72
|
+
return this.onNotificationEmitter.event;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
protected toDispose = new DisposableCollection();
|
|
76
|
+
|
|
77
|
+
constructor(public readonly channel: Channel, public readonly requestHandler: RequestHandler | undefined, options: RpcProtocolOptions = {}) {
|
|
78
|
+
this.encoder = options.encoder ?? new MsgPackMessageEncoder();
|
|
79
|
+
this.decoder = options.decoder ?? new MsgPackMessageDecoder();
|
|
80
|
+
this.toDispose.push(this.onNotificationEmitter);
|
|
81
|
+
channel.onClose(event => {
|
|
82
|
+
this.pendingRequests.forEach(pending => pending.reject(new Error(event.reason)));
|
|
83
|
+
this.pendingRequests.clear();
|
|
84
|
+
this.pendingRequestCancellationEventListeners.forEach(disposable => disposable.dispose());
|
|
85
|
+
this.pendingRequestCancellationEventListeners.clear();
|
|
86
|
+
this.toDispose.dispose();
|
|
87
|
+
});
|
|
88
|
+
this.toDispose.push(channel.onMessage(readBuffer => this.handleMessage(this.decoder.parse(readBuffer()))));
|
|
89
|
+
this.mode = options.mode ?? 'default';
|
|
90
|
+
|
|
91
|
+
if (this.mode !== 'clientOnly' && requestHandler === undefined) {
|
|
92
|
+
console.error('RPCProtocol was initialized without a request handler but was not set to clientOnly mode.');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
handleMessage(message: RpcMessage): void {
|
|
97
|
+
if (this.mode !== 'clientOnly') {
|
|
98
|
+
switch (message.type) {
|
|
99
|
+
case RpcMessageType.Cancel: {
|
|
100
|
+
this.handleCancel(message.id);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
case RpcMessageType.Request: {
|
|
104
|
+
this.handleRequest(message.id, message.method, message.args);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
case RpcMessageType.Notification: {
|
|
108
|
+
this.handleNotify(message.method, message.args, message.id);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (this.mode !== 'serverOnly') {
|
|
114
|
+
switch (message.type) {
|
|
115
|
+
case RpcMessageType.Reply: {
|
|
116
|
+
this.handleReply(message.id, message.res);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
case RpcMessageType.ReplyErr: {
|
|
120
|
+
this.handleReplyErr(message.id, message.err);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// If the message was not handled until here, it is incompatible with the mode.
|
|
126
|
+
console.warn(`Received message incompatible with this RPCProtocol's mode '${this.mode}'. Type: ${message.type}. ID: ${message.id}.`);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
protected handleReply(id: number, value: any): void {
|
|
130
|
+
const replyHandler = this.pendingRequests.get(id);
|
|
131
|
+
if (replyHandler) {
|
|
132
|
+
this.pendingRequests.delete(id);
|
|
133
|
+
replyHandler.resolve(value);
|
|
134
|
+
} else {
|
|
135
|
+
throw new Error(`No reply handler for reply with id: ${id}`);
|
|
136
|
+
}
|
|
137
|
+
this.disposeCancellationEventListener(id);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
protected handleReplyErr(id: number, error: any): void {
|
|
141
|
+
const replyHandler = this.pendingRequests.get(id);
|
|
142
|
+
if (replyHandler) {
|
|
143
|
+
this.pendingRequests.delete(id);
|
|
144
|
+
replyHandler.reject(error);
|
|
145
|
+
} else {
|
|
146
|
+
throw new Error(`No reply handler for error reply with id: ${id}`);
|
|
147
|
+
}
|
|
148
|
+
this.disposeCancellationEventListener(id);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
protected disposeCancellationEventListener(id: number): void {
|
|
152
|
+
const toDispose = this.pendingRequestCancellationEventListeners.get(id);
|
|
153
|
+
if (toDispose) {
|
|
154
|
+
this.pendingRequestCancellationEventListeners.delete(id);
|
|
155
|
+
toDispose.dispose();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
sendRequest<T>(method: string, args: any[]): Promise<T> {
|
|
160
|
+
// The last element of the request args might be a cancellation token. As these tokens are not serializable we have to remove it from the
|
|
161
|
+
// args array and the `CANCELLATION_TOKEN_KEY` string instead.
|
|
162
|
+
const cancellationToken: CancellationToken | undefined = args.length && CancellationToken.is(args[args.length - 1]) ? args.pop() : undefined;
|
|
163
|
+
|
|
164
|
+
const id = this.nextMessageId++;
|
|
165
|
+
const reply = new Deferred<T>();
|
|
166
|
+
|
|
167
|
+
if (cancellationToken) {
|
|
168
|
+
args.push(RpcProtocol.CANCELLATION_TOKEN_KEY);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
this.pendingRequests.set(id, reply);
|
|
172
|
+
|
|
173
|
+
// register disposable before output.commit() even when not available yet
|
|
174
|
+
const disposableWrapper = new DisposableWrapper();
|
|
175
|
+
this.pendingRequestCancellationEventListeners.set(id, disposableWrapper);
|
|
176
|
+
|
|
177
|
+
const output = this.channel.getWriteBuffer();
|
|
178
|
+
this.encoder.request(output, id, method, args);
|
|
179
|
+
output.commit();
|
|
180
|
+
|
|
181
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
182
|
+
this.sendCancel(id);
|
|
183
|
+
} else {
|
|
184
|
+
const disposable = cancellationToken?.onCancellationRequested(() => this.sendCancel(id));
|
|
185
|
+
if (disposable) {
|
|
186
|
+
disposableWrapper.set(disposable);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return reply.promise;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
sendNotification(method: string, args: any[]): void {
|
|
194
|
+
// If the notification supports a CancellationToken, it needs to be treated like a request
|
|
195
|
+
// because cancellation does not work with the simplified "fire and forget" approach of simple notifications.
|
|
196
|
+
if (args.length && CancellationToken.is(args[args.length - 1])) {
|
|
197
|
+
this.sendRequest(method, args);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const output = this.channel.getWriteBuffer();
|
|
202
|
+
this.encoder.notification(output, method, args, this.nextMessageId++);
|
|
203
|
+
output.commit();
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
sendCancel(requestId: number): void {
|
|
207
|
+
const output = this.channel.getWriteBuffer();
|
|
208
|
+
this.encoder.cancel(output, requestId);
|
|
209
|
+
output.commit();
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
protected handleCancel(id: number): void {
|
|
213
|
+
const cancellationTokenSource = this.cancellationTokenSources.get(id);
|
|
214
|
+
if (cancellationTokenSource) {
|
|
215
|
+
cancellationTokenSource.cancel();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
protected async handleRequest(id: number, method: string, args: any[]): Promise<void> {
|
|
220
|
+
const output = this.channel.getWriteBuffer();
|
|
221
|
+
|
|
222
|
+
// Check if the last argument of the received args is the key for indicating that a cancellation token should be used
|
|
223
|
+
// If so remove the key from the args and create a new cancellation token.
|
|
224
|
+
const addToken = args.length && args[args.length - 1] === RpcProtocol.CANCELLATION_TOKEN_KEY ? args.pop() : false;
|
|
225
|
+
if (addToken) {
|
|
226
|
+
const tokenSource = new CancellationTokenSource();
|
|
227
|
+
this.cancellationTokenSources.set(id, tokenSource);
|
|
228
|
+
args.push(tokenSource.token);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
try {
|
|
232
|
+
const result = await this.requestHandler!(method, args);
|
|
233
|
+
this.cancellationTokenSources.delete(id);
|
|
234
|
+
this.encoder.replyOK(output, id, result);
|
|
235
|
+
output.commit();
|
|
236
|
+
} catch (err) {
|
|
237
|
+
// In case of an error the output buffer might already contains parts of an message.
|
|
238
|
+
// => Dispose the current buffer and retrieve a new, clean one for writing the response error.
|
|
239
|
+
if (Disposable.is(output)) {
|
|
240
|
+
output.dispose();
|
|
241
|
+
}
|
|
242
|
+
const errorOutput = this.channel.getWriteBuffer();
|
|
243
|
+
this.cancellationTokenSources.delete(id);
|
|
244
|
+
this.encoder.replyErr(errorOutput, id, err);
|
|
245
|
+
errorOutput.commit();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
protected async handleNotify(method: string, args: any[], id?: number): Promise<void> {
|
|
250
|
+
if (this.toDispose.disposed) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
this.onNotificationEmitter.fire({ method, args });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2021 Red Hat, Inc. and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
import { expect } from 'chai';
|
|
17
|
-
import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from './uint8-array-message-buffer';
|
|
18
|
-
|
|
19
|
-
describe('array message buffer tests', () => {
|
|
20
|
-
it('basic read write test', () => {
|
|
21
|
-
const buffer = new Uint8Array(1024);
|
|
22
|
-
const writer = new Uint8ArrayWriteBuffer(buffer);
|
|
23
|
-
|
|
24
|
-
writer.writeUint8(8);
|
|
25
|
-
writer.writeUint32(10000);
|
|
26
|
-
writer.writeBytes(new Uint8Array([1, 2, 3, 4]));
|
|
27
|
-
writer.writeString('this is a string');
|
|
28
|
-
writer.writeString('another string');
|
|
29
|
-
writer.commit();
|
|
30
|
-
|
|
31
|
-
const written = writer.getCurrentContents();
|
|
32
|
-
|
|
33
|
-
const reader = new Uint8ArrayReadBuffer(written);
|
|
34
|
-
|
|
35
|
-
expect(reader.readUint8()).equal(8);
|
|
36
|
-
expect(reader.readUint32()).equal(10000);
|
|
37
|
-
expect(reader.readBytes()).deep.equal(new Uint8Array([1, 2, 3, 4]));
|
|
38
|
-
expect(reader.readString()).equal('this is a string');
|
|
39
|
-
expect(reader.readString()).equal('another string');
|
|
40
|
-
});
|
|
41
|
-
});
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2021 Red Hat, Inc. and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
import { expect } from 'chai';
|
|
17
|
+
import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from './uint8-array-message-buffer';
|
|
18
|
+
|
|
19
|
+
describe('array message buffer tests', () => {
|
|
20
|
+
it('basic read write test', () => {
|
|
21
|
+
const buffer = new Uint8Array(1024);
|
|
22
|
+
const writer = new Uint8ArrayWriteBuffer(buffer);
|
|
23
|
+
|
|
24
|
+
writer.writeUint8(8);
|
|
25
|
+
writer.writeUint32(10000);
|
|
26
|
+
writer.writeBytes(new Uint8Array([1, 2, 3, 4]));
|
|
27
|
+
writer.writeString('this is a string');
|
|
28
|
+
writer.writeString('another string');
|
|
29
|
+
writer.commit();
|
|
30
|
+
|
|
31
|
+
const written = writer.getCurrentContents();
|
|
32
|
+
|
|
33
|
+
const reader = new Uint8ArrayReadBuffer(written);
|
|
34
|
+
|
|
35
|
+
expect(reader.readUint8()).equal(8);
|
|
36
|
+
expect(reader.readUint32()).equal(10000);
|
|
37
|
+
expect(reader.readBytes()).deep.equal(new Uint8Array([1, 2, 3, 4]));
|
|
38
|
+
expect(reader.readString()).equal('this is a string');
|
|
39
|
+
expect(reader.readString()).equal('another string');
|
|
40
|
+
});
|
|
41
|
+
});
|