@theia/core 1.53.0-next.55 → 1.53.0-next.64
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 +6 -6
- package/i18n/nls.cs.json +582 -582
- package/i18n/nls.de.json +582 -582
- package/i18n/nls.es.json +582 -582
- package/i18n/nls.fr.json +582 -582
- package/i18n/nls.hu.json +582 -582
- package/i18n/nls.it.json +582 -582
- package/i18n/nls.ja.json +582 -582
- package/i18n/nls.json +582 -582
- package/i18n/nls.ko.json +582 -582
- package/i18n/nls.pl.json +582 -582
- package/i18n/nls.pt-br.json +582 -582
- package/i18n/nls.ru.json +582 -582
- package/i18n/nls.tr.json +582 -582
- package/i18n/nls.zh-cn.json +582 -582
- package/i18n/nls.zh-tw.json +582 -582
- package/lib/browser/catalog.json +54 -6
- package/lib/browser/common-frontend-contribution.js +3 -3
- package/lib/browser/common-styling-participants.js +166 -166
- package/lib/browser/progress-location-service.spec.js +7 -7
- package/lib/browser/storage-service.js +3 -3
- package/lib/browser/tree/tree.spec.js +75 -75
- package/lib/node/process-utils.spec.js +8 -8
- package/package.json +4 -4
- 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 -467
- 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 -343
- 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 -474
- 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 -118
- 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 -140
- package/src/browser/opener-service.spec.ts +49 -49
- package/src/browser/opener-service.ts +169 -169
- 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 -332
- package/src/browser/saveable.ts +395 -395
- 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 -242
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +149 -149
- 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 -443
- 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 -353
- 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 -38
- package/src/browser/style/status-bar.css +127 -127
- package/src/browser/style/tabs.css +647 -647
- 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 -187
- 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 -168
- 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 -21
- 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 -163
- 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 -493
- 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 -108
- 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 -220
- 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 -42
- 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 -339
- 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 -264
- 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 -48
- 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 -157
- 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 -373
- package/src/electron-main/electron-main-application-module.ts +65 -65
- package/src/electron-main/electron-main-application.ts +860 -860
- 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 -219
- 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 -40
- 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
|
@@ -1,107 +1,107 @@
|
|
|
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 cp from 'child_process';
|
|
18
|
-
import { inject, injectable } from 'inversify';
|
|
19
|
-
import * as path from 'path';
|
|
20
|
-
import { createInterface } from 'readline';
|
|
21
|
-
import { Channel, ConnectionErrorHandler, Disposable, DisposableCollection, ILogger } from '../../common';
|
|
22
|
-
import { IPCChannel } from './ipc-channel';
|
|
23
|
-
import { createIpcEnv } from './ipc-protocol';
|
|
24
|
-
|
|
25
|
-
export interface ResolvedIPCConnectionOptions {
|
|
26
|
-
readonly serverName: string
|
|
27
|
-
readonly entryPoint: string
|
|
28
|
-
readonly logger: ILogger
|
|
29
|
-
readonly args: string[]
|
|
30
|
-
readonly errorHandler?: ConnectionErrorHandler
|
|
31
|
-
readonly env?: NodeJS.ProcessEnv
|
|
32
|
-
}
|
|
33
|
-
export type IPCConnectionOptions = Partial<ResolvedIPCConnectionOptions> & {
|
|
34
|
-
readonly serverName: string
|
|
35
|
-
readonly entryPoint: string
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
@injectable()
|
|
39
|
-
export class IPCConnectionProvider {
|
|
40
|
-
|
|
41
|
-
@inject(ILogger)
|
|
42
|
-
protected readonly logger: ILogger;
|
|
43
|
-
|
|
44
|
-
listen(options: IPCConnectionOptions, acceptor: (connection: Channel) => void): Disposable {
|
|
45
|
-
return this.doListen({
|
|
46
|
-
logger: this.logger,
|
|
47
|
-
args: [],
|
|
48
|
-
...options
|
|
49
|
-
}, acceptor);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
protected doListen(options: ResolvedIPCConnectionOptions, acceptor: (connection: Channel) => void): Disposable {
|
|
53
|
-
const childProcess = this.fork(options);
|
|
54
|
-
const channel = new IPCChannel(childProcess);
|
|
55
|
-
const toStop = new DisposableCollection();
|
|
56
|
-
const toCancelStop = toStop.push(Disposable.create(() => childProcess.kill()));
|
|
57
|
-
const errorHandler = options.errorHandler;
|
|
58
|
-
if (errorHandler) {
|
|
59
|
-
let errorCount = 0;
|
|
60
|
-
channel.onError((err: Error) => {
|
|
61
|
-
errorCount++;
|
|
62
|
-
if (errorHandler.shouldStop(err, errorCount)) {
|
|
63
|
-
toStop.dispose();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
channel.onClose(() => {
|
|
67
|
-
if (toStop.disposed) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
if (errorHandler.shouldRestart()) {
|
|
71
|
-
toCancelStop.dispose();
|
|
72
|
-
toStop.push(this.doListen(options, acceptor));
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
acceptor(channel);
|
|
77
|
-
return toStop;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
protected fork(options: ResolvedIPCConnectionOptions): cp.ChildProcess {
|
|
81
|
-
const forkOptions: cp.ForkOptions = {
|
|
82
|
-
env: createIpcEnv(options),
|
|
83
|
-
execArgv: [],
|
|
84
|
-
// 5th element MUST be 'overlapped' for it to work properly on Windows.
|
|
85
|
-
// 'overlapped' works just like 'pipe' on non-Windows platforms.
|
|
86
|
-
// See: https://nodejs.org/docs/latest-v14.x/api/child_process.html#child_process_options_stdio
|
|
87
|
-
// Note: For some reason `@types/node` does not know about 'overlapped'.
|
|
88
|
-
stdio: ['pipe', 'pipe', 'pipe', 'ipc', 'overlapped' as 'pipe']
|
|
89
|
-
};
|
|
90
|
-
const inspectArgPrefix = `--${options.serverName}-inspect`;
|
|
91
|
-
const inspectArg = process.argv.find(v => v.startsWith(inspectArgPrefix));
|
|
92
|
-
if (inspectArg !== undefined) {
|
|
93
|
-
forkOptions.execArgv = ['--nolazy', `--inspect${inspectArg.substring(inspectArgPrefix.length)}`];
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const childProcess = cp.fork(path.join(__dirname, 'ipc-bootstrap'), options.args, forkOptions);
|
|
97
|
-
|
|
98
|
-
createInterface(childProcess.stdout!).on('line', line => this.logger.info(`[${options.serverName}: ${childProcess.pid}] ${line}`));
|
|
99
|
-
createInterface(childProcess.stderr!).on('line', line => this.logger.error(`[${options.serverName}: ${childProcess.pid}] ${line}`));
|
|
100
|
-
|
|
101
|
-
this.logger.debug(`[${options.serverName}: ${childProcess.pid}] IPC started`);
|
|
102
|
-
childProcess.once('exit', () => this.logger.debug(`[${options.serverName}: ${childProcess.pid}] IPC exited`));
|
|
103
|
-
|
|
104
|
-
return childProcess;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
}
|
|
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 cp from 'child_process';
|
|
18
|
+
import { inject, injectable } from 'inversify';
|
|
19
|
+
import * as path from 'path';
|
|
20
|
+
import { createInterface } from 'readline';
|
|
21
|
+
import { Channel, ConnectionErrorHandler, Disposable, DisposableCollection, ILogger } from '../../common';
|
|
22
|
+
import { IPCChannel } from './ipc-channel';
|
|
23
|
+
import { createIpcEnv } from './ipc-protocol';
|
|
24
|
+
|
|
25
|
+
export interface ResolvedIPCConnectionOptions {
|
|
26
|
+
readonly serverName: string
|
|
27
|
+
readonly entryPoint: string
|
|
28
|
+
readonly logger: ILogger
|
|
29
|
+
readonly args: string[]
|
|
30
|
+
readonly errorHandler?: ConnectionErrorHandler
|
|
31
|
+
readonly env?: NodeJS.ProcessEnv
|
|
32
|
+
}
|
|
33
|
+
export type IPCConnectionOptions = Partial<ResolvedIPCConnectionOptions> & {
|
|
34
|
+
readonly serverName: string
|
|
35
|
+
readonly entryPoint: string
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
@injectable()
|
|
39
|
+
export class IPCConnectionProvider {
|
|
40
|
+
|
|
41
|
+
@inject(ILogger)
|
|
42
|
+
protected readonly logger: ILogger;
|
|
43
|
+
|
|
44
|
+
listen(options: IPCConnectionOptions, acceptor: (connection: Channel) => void): Disposable {
|
|
45
|
+
return this.doListen({
|
|
46
|
+
logger: this.logger,
|
|
47
|
+
args: [],
|
|
48
|
+
...options
|
|
49
|
+
}, acceptor);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
protected doListen(options: ResolvedIPCConnectionOptions, acceptor: (connection: Channel) => void): Disposable {
|
|
53
|
+
const childProcess = this.fork(options);
|
|
54
|
+
const channel = new IPCChannel(childProcess);
|
|
55
|
+
const toStop = new DisposableCollection();
|
|
56
|
+
const toCancelStop = toStop.push(Disposable.create(() => childProcess.kill()));
|
|
57
|
+
const errorHandler = options.errorHandler;
|
|
58
|
+
if (errorHandler) {
|
|
59
|
+
let errorCount = 0;
|
|
60
|
+
channel.onError((err: Error) => {
|
|
61
|
+
errorCount++;
|
|
62
|
+
if (errorHandler.shouldStop(err, errorCount)) {
|
|
63
|
+
toStop.dispose();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
channel.onClose(() => {
|
|
67
|
+
if (toStop.disposed) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (errorHandler.shouldRestart()) {
|
|
71
|
+
toCancelStop.dispose();
|
|
72
|
+
toStop.push(this.doListen(options, acceptor));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
acceptor(channel);
|
|
77
|
+
return toStop;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
protected fork(options: ResolvedIPCConnectionOptions): cp.ChildProcess {
|
|
81
|
+
const forkOptions: cp.ForkOptions = {
|
|
82
|
+
env: createIpcEnv(options),
|
|
83
|
+
execArgv: [],
|
|
84
|
+
// 5th element MUST be 'overlapped' for it to work properly on Windows.
|
|
85
|
+
// 'overlapped' works just like 'pipe' on non-Windows platforms.
|
|
86
|
+
// See: https://nodejs.org/docs/latest-v14.x/api/child_process.html#child_process_options_stdio
|
|
87
|
+
// Note: For some reason `@types/node` does not know about 'overlapped'.
|
|
88
|
+
stdio: ['pipe', 'pipe', 'pipe', 'ipc', 'overlapped' as 'pipe']
|
|
89
|
+
};
|
|
90
|
+
const inspectArgPrefix = `--${options.serverName}-inspect`;
|
|
91
|
+
const inspectArg = process.argv.find(v => v.startsWith(inspectArgPrefix));
|
|
92
|
+
if (inspectArg !== undefined) {
|
|
93
|
+
forkOptions.execArgv = ['--nolazy', `--inspect${inspectArg.substring(inspectArgPrefix.length)}`];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const childProcess = cp.fork(path.join(__dirname, 'ipc-bootstrap'), options.args, forkOptions);
|
|
97
|
+
|
|
98
|
+
createInterface(childProcess.stdout!).on('line', line => this.logger.info(`[${options.serverName}: ${childProcess.pid}] ${line}`));
|
|
99
|
+
createInterface(childProcess.stderr!).on('line', line => this.logger.error(`[${options.serverName}: ${childProcess.pid}] ${line}`));
|
|
100
|
+
|
|
101
|
+
this.logger.debug(`[${options.serverName}: ${childProcess.pid}] IPC started`);
|
|
102
|
+
childProcess.once('exit', () => this.logger.debug(`[${options.serverName}: ${childProcess.pid}] IPC exited`));
|
|
103
|
+
|
|
104
|
+
return childProcess;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
}
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
// *****************************************************************************
|
|
3
|
-
// Copyright (C) 2017 TypeFox and others.
|
|
4
|
-
//
|
|
5
|
-
// This program and the accompanying materials are made available under the
|
|
6
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
-
//
|
|
9
|
-
// This Source Code may also be made available under the following Secondary
|
|
10
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
-
// with the GNU Classpath Exception which is available at
|
|
13
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
-
//
|
|
15
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
-
// *****************************************************************************
|
|
17
|
-
|
|
18
|
-
import { Channel } from '../../common/message-rpc/channel';
|
|
19
|
-
|
|
20
|
-
const THEIA_PARENT_PID = 'THEIA_PARENT_PID';
|
|
21
|
-
const THEIA_ENTRY_POINT = 'THEIA_ENTRY_POINT';
|
|
22
|
-
|
|
23
|
-
export const ipcEntryPoint: string | undefined = process.env[THEIA_ENTRY_POINT];
|
|
24
|
-
|
|
25
|
-
export type IPCEntryPoint = (connection: Channel) => void;
|
|
26
|
-
export namespace IPCEntryPoint {
|
|
27
|
-
/**
|
|
28
|
-
* Throws if `THEIA_ENTRY_POINT` is undefined or empty.
|
|
29
|
-
*/
|
|
30
|
-
export function getScriptFromEnv(): string {
|
|
31
|
-
if (!ipcEntryPoint) {
|
|
32
|
-
throw new Error(`"${THEIA_ENTRY_POINT}" is missing from the environment`);
|
|
33
|
-
}
|
|
34
|
-
return ipcEntryPoint;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Exit the current process if the parent process is not alive.
|
|
40
|
-
* Relevant only for some OS, like Windows
|
|
41
|
-
*/
|
|
42
|
-
export function checkParentAlive(): void {
|
|
43
|
-
if (process.env[THEIA_PARENT_PID]) {
|
|
44
|
-
const parentPid = Number(process.env[THEIA_PARENT_PID]);
|
|
45
|
-
|
|
46
|
-
if (typeof parentPid === 'number' && !isNaN(parentPid)) {
|
|
47
|
-
setInterval(() => {
|
|
48
|
-
try {
|
|
49
|
-
// throws an exception if the main process doesn't exist anymore.
|
|
50
|
-
process.kill(parentPid, 0);
|
|
51
|
-
} catch {
|
|
52
|
-
process.exit();
|
|
53
|
-
}
|
|
54
|
-
}, 5000).unref(); // we don't want this timeout to keep the process alive
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export function createIpcEnv(options?: {
|
|
60
|
-
entryPoint?: string
|
|
61
|
-
env?: NodeJS.ProcessEnv
|
|
62
|
-
}): NodeJS.ProcessEnv {
|
|
63
|
-
const op = Object.assign({}, options);
|
|
64
|
-
const childEnv = Object.assign({}, op.env);
|
|
65
|
-
|
|
66
|
-
for (const key of Object.keys(childEnv)) {
|
|
67
|
-
if (key.startsWith('THEIA_')) {
|
|
68
|
-
delete childEnv[key];
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
childEnv[THEIA_PARENT_PID] = String(process.pid);
|
|
73
|
-
childEnv[THEIA_ENTRY_POINT] = op.entryPoint;
|
|
74
|
-
|
|
75
|
-
return childEnv;
|
|
76
|
-
}
|
|
1
|
+
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2017 TypeFox and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
|
|
18
|
+
import { Channel } from '../../common/message-rpc/channel';
|
|
19
|
+
|
|
20
|
+
const THEIA_PARENT_PID = 'THEIA_PARENT_PID';
|
|
21
|
+
const THEIA_ENTRY_POINT = 'THEIA_ENTRY_POINT';
|
|
22
|
+
|
|
23
|
+
export const ipcEntryPoint: string | undefined = process.env[THEIA_ENTRY_POINT];
|
|
24
|
+
|
|
25
|
+
export type IPCEntryPoint = (connection: Channel) => void;
|
|
26
|
+
export namespace IPCEntryPoint {
|
|
27
|
+
/**
|
|
28
|
+
* Throws if `THEIA_ENTRY_POINT` is undefined or empty.
|
|
29
|
+
*/
|
|
30
|
+
export function getScriptFromEnv(): string {
|
|
31
|
+
if (!ipcEntryPoint) {
|
|
32
|
+
throw new Error(`"${THEIA_ENTRY_POINT}" is missing from the environment`);
|
|
33
|
+
}
|
|
34
|
+
return ipcEntryPoint;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Exit the current process if the parent process is not alive.
|
|
40
|
+
* Relevant only for some OS, like Windows
|
|
41
|
+
*/
|
|
42
|
+
export function checkParentAlive(): void {
|
|
43
|
+
if (process.env[THEIA_PARENT_PID]) {
|
|
44
|
+
const parentPid = Number(process.env[THEIA_PARENT_PID]);
|
|
45
|
+
|
|
46
|
+
if (typeof parentPid === 'number' && !isNaN(parentPid)) {
|
|
47
|
+
setInterval(() => {
|
|
48
|
+
try {
|
|
49
|
+
// throws an exception if the main process doesn't exist anymore.
|
|
50
|
+
process.kill(parentPid, 0);
|
|
51
|
+
} catch {
|
|
52
|
+
process.exit();
|
|
53
|
+
}
|
|
54
|
+
}, 5000).unref(); // we don't want this timeout to keep the process alive
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function createIpcEnv(options?: {
|
|
60
|
+
entryPoint?: string
|
|
61
|
+
env?: NodeJS.ProcessEnv
|
|
62
|
+
}): NodeJS.ProcessEnv {
|
|
63
|
+
const op = Object.assign({}, options);
|
|
64
|
+
const childEnv = Object.assign({}, op.env);
|
|
65
|
+
|
|
66
|
+
for (const key of Object.keys(childEnv)) {
|
|
67
|
+
if (key.startsWith('THEIA_')) {
|
|
68
|
+
delete childEnv[key];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
childEnv[THEIA_PARENT_PID] = String(process.pid);
|
|
73
|
+
childEnv[THEIA_ENTRY_POINT] = op.entryPoint;
|
|
74
|
+
|
|
75
|
+
return childEnv;
|
|
76
|
+
}
|
|
@@ -1,52 +1,52 @@
|
|
|
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 { ContainerModule } from 'inversify';
|
|
18
|
-
import { ConnectionHandler, RpcConnectionHandler, bindContributionProvider } from '../../common';
|
|
19
|
-
// import { BackendApplicationContribution } from '../backend-application';
|
|
20
|
-
import { DefaultMessagingService, MessagingContainer } from './default-messaging-service';
|
|
21
|
-
import { ConnectionContainerModule } from './connection-container-module';
|
|
22
|
-
import { MessagingService } from './messaging-service';
|
|
23
|
-
import { MessagingListener, MessagingListenerContribution } from './messaging-listeners';
|
|
24
|
-
import { FrontendConnectionService } from './frontend-connection-service';
|
|
25
|
-
import { BackendApplicationContribution } from '../backend-application';
|
|
26
|
-
import { connectionCloseServicePath } from '../../common/messaging/connection-management';
|
|
27
|
-
import { WebsocketFrontendConnectionService } from './websocket-frontend-connection-service';
|
|
28
|
-
import { WebsocketEndpoint } from './websocket-endpoint';
|
|
29
|
-
|
|
30
|
-
export const messagingBackendModule = new ContainerModule(bind => {
|
|
31
|
-
bindContributionProvider(bind, ConnectionContainerModule);
|
|
32
|
-
bindContributionProvider(bind, MessagingService.Contribution);
|
|
33
|
-
bind(DefaultMessagingService).toSelf().inSingletonScope();
|
|
34
|
-
bind(MessagingService.Identifier).toService(DefaultMessagingService);
|
|
35
|
-
bind(BackendApplicationContribution).toService(DefaultMessagingService);
|
|
36
|
-
bind(MessagingContainer).toDynamicValue(({ container }) => container).inSingletonScope();
|
|
37
|
-
bind(WebsocketEndpoint).toSelf().inSingletonScope();
|
|
38
|
-
bind(BackendApplicationContribution).toService(WebsocketEndpoint);
|
|
39
|
-
bind(WebsocketFrontendConnectionService).toSelf().inSingletonScope();
|
|
40
|
-
bind(FrontendConnectionService).toService(WebsocketFrontendConnectionService);
|
|
41
|
-
bind(MessagingListener).toSelf().inSingletonScope();
|
|
42
|
-
bindContributionProvider(bind, MessagingListenerContribution);
|
|
43
|
-
|
|
44
|
-
bind(ConnectionHandler).toDynamicValue(context => {
|
|
45
|
-
const connectionService = context.container.get<WebsocketFrontendConnectionService>(FrontendConnectionService);
|
|
46
|
-
return new RpcConnectionHandler<object>(connectionCloseServicePath, () => ({
|
|
47
|
-
markForClose: (channelId: string) => {
|
|
48
|
-
connectionService.markForClose(channelId);
|
|
49
|
-
}
|
|
50
|
-
}));
|
|
51
|
-
}).inSingletonScope();
|
|
52
|
-
});
|
|
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 { ContainerModule } from 'inversify';
|
|
18
|
+
import { ConnectionHandler, RpcConnectionHandler, bindContributionProvider } from '../../common';
|
|
19
|
+
// import { BackendApplicationContribution } from '../backend-application';
|
|
20
|
+
import { DefaultMessagingService, MessagingContainer } from './default-messaging-service';
|
|
21
|
+
import { ConnectionContainerModule } from './connection-container-module';
|
|
22
|
+
import { MessagingService } from './messaging-service';
|
|
23
|
+
import { MessagingListener, MessagingListenerContribution } from './messaging-listeners';
|
|
24
|
+
import { FrontendConnectionService } from './frontend-connection-service';
|
|
25
|
+
import { BackendApplicationContribution } from '../backend-application';
|
|
26
|
+
import { connectionCloseServicePath } from '../../common/messaging/connection-management';
|
|
27
|
+
import { WebsocketFrontendConnectionService } from './websocket-frontend-connection-service';
|
|
28
|
+
import { WebsocketEndpoint } from './websocket-endpoint';
|
|
29
|
+
|
|
30
|
+
export const messagingBackendModule = new ContainerModule(bind => {
|
|
31
|
+
bindContributionProvider(bind, ConnectionContainerModule);
|
|
32
|
+
bindContributionProvider(bind, MessagingService.Contribution);
|
|
33
|
+
bind(DefaultMessagingService).toSelf().inSingletonScope();
|
|
34
|
+
bind(MessagingService.Identifier).toService(DefaultMessagingService);
|
|
35
|
+
bind(BackendApplicationContribution).toService(DefaultMessagingService);
|
|
36
|
+
bind(MessagingContainer).toDynamicValue(({ container }) => container).inSingletonScope();
|
|
37
|
+
bind(WebsocketEndpoint).toSelf().inSingletonScope();
|
|
38
|
+
bind(BackendApplicationContribution).toService(WebsocketEndpoint);
|
|
39
|
+
bind(WebsocketFrontendConnectionService).toSelf().inSingletonScope();
|
|
40
|
+
bind(FrontendConnectionService).toService(WebsocketFrontendConnectionService);
|
|
41
|
+
bind(MessagingListener).toSelf().inSingletonScope();
|
|
42
|
+
bindContributionProvider(bind, MessagingListenerContribution);
|
|
43
|
+
|
|
44
|
+
bind(ConnectionHandler).toDynamicValue(context => {
|
|
45
|
+
const connectionService = context.container.get<WebsocketFrontendConnectionService>(FrontendConnectionService);
|
|
46
|
+
return new RpcConnectionHandler<object>(connectionCloseServicePath, () => ({
|
|
47
|
+
markForClose: (channelId: string) => {
|
|
48
|
+
connectionService.markForClose(channelId);
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
}).inSingletonScope();
|
|
52
|
+
});
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2021 MayStreet 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
|
-
|
|
17
|
-
import { inject, injectable, named } from 'inversify';
|
|
18
|
-
import { ContributionProvider, MaybePromise } from '../../common';
|
|
19
|
-
import { Socket } from 'socket.io';
|
|
20
|
-
|
|
21
|
-
import * as http from 'http';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Bind components to this symbol to subscribe to WebSocket events.
|
|
25
|
-
*/
|
|
26
|
-
export const MessagingListenerContribution = Symbol('MessagingListenerContribution');
|
|
27
|
-
export interface MessagingListenerContribution {
|
|
28
|
-
/**
|
|
29
|
-
* Function invoked when a HTTP connection is upgraded to a websocket.
|
|
30
|
-
*
|
|
31
|
-
* @param request The HTTP connection upgrade request received by the server.
|
|
32
|
-
* @param socket The WebSocket that the connection was upgraded to.
|
|
33
|
-
*/
|
|
34
|
-
onDidWebSocketUpgrade(request: http.IncomingMessage, socket: Socket): MaybePromise<void>;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Handler of Theia messaging system events, dispatching to MessagingListenerContribution instances.
|
|
39
|
-
*/
|
|
40
|
-
@injectable()
|
|
41
|
-
export class MessagingListener {
|
|
42
|
-
|
|
43
|
-
@inject(ContributionProvider) @named(MessagingListenerContribution)
|
|
44
|
-
protected readonly messagingListenerContributions: ContributionProvider<MessagingListenerContribution>;
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Notify all the subscribed `MessagingListenerContribution`s that the Websocket was upgraded.
|
|
48
|
-
*/
|
|
49
|
-
async onDidWebSocketUpgrade(request: http.IncomingMessage, socket: Socket): Promise<void> {
|
|
50
|
-
await Promise.all(Array.from(this.messagingListenerContributions.getContributions(), async messagingListener => messagingListener.onDidWebSocketUpgrade(request, socket)));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2021 MayStreet 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
|
+
|
|
17
|
+
import { inject, injectable, named } from 'inversify';
|
|
18
|
+
import { ContributionProvider, MaybePromise } from '../../common';
|
|
19
|
+
import { Socket } from 'socket.io';
|
|
20
|
+
|
|
21
|
+
import * as http from 'http';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Bind components to this symbol to subscribe to WebSocket events.
|
|
25
|
+
*/
|
|
26
|
+
export const MessagingListenerContribution = Symbol('MessagingListenerContribution');
|
|
27
|
+
export interface MessagingListenerContribution {
|
|
28
|
+
/**
|
|
29
|
+
* Function invoked when a HTTP connection is upgraded to a websocket.
|
|
30
|
+
*
|
|
31
|
+
* @param request The HTTP connection upgrade request received by the server.
|
|
32
|
+
* @param socket The WebSocket that the connection was upgraded to.
|
|
33
|
+
*/
|
|
34
|
+
onDidWebSocketUpgrade(request: http.IncomingMessage, socket: Socket): MaybePromise<void>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Handler of Theia messaging system events, dispatching to MessagingListenerContribution instances.
|
|
39
|
+
*/
|
|
40
|
+
@injectable()
|
|
41
|
+
export class MessagingListener {
|
|
42
|
+
|
|
43
|
+
@inject(ContributionProvider) @named(MessagingListenerContribution)
|
|
44
|
+
protected readonly messagingListenerContributions: ContributionProvider<MessagingListenerContribution>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Notify all the subscribed `MessagingListenerContribution`s that the Websocket was upgraded.
|
|
48
|
+
*/
|
|
49
|
+
async onDidWebSocketUpgrade(request: http.IncomingMessage, socket: Socket): Promise<void> {
|
|
50
|
+
await Promise.all(Array.from(this.messagingListenerContributions.getContributions(), async messagingListener => messagingListener.onDidWebSocketUpgrade(request, socket)));
|
|
51
|
+
}
|
|
52
|
+
}
|