@theia/core 1.27.0-next.9 → 1.27.0
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 -7
- package/i18n/nls.cs.json +52 -6
- package/i18n/nls.de.json +52 -6
- package/i18n/nls.es.json +52 -6
- package/i18n/nls.fr.json +52 -6
- package/i18n/nls.hu.json +55 -9
- package/i18n/nls.it.json +52 -6
- package/i18n/nls.ja.json +52 -6
- package/i18n/nls.json +52 -6
- package/i18n/nls.pl.json +52 -6
- package/i18n/nls.pt-br.json +52 -6
- package/i18n/nls.pt-pt.json +52 -6
- package/i18n/nls.ru.json +52 -6
- package/i18n/nls.zh-cn.json +52 -6
- package/lib/browser/color-application-contribution.d.ts +2 -2
- package/lib/browser/color-application-contribution.d.ts.map +1 -1
- package/lib/browser/color-application-contribution.js +15 -16
- package/lib/browser/color-application-contribution.js.map +1 -1
- package/lib/browser/color-registry.d.ts +0 -4
- package/lib/browser/color-registry.d.ts.map +1 -1
- package/lib/browser/color-registry.js +0 -14
- package/lib/browser/color-registry.js.map +1 -1
- package/lib/browser/common-frontend-contribution.d.ts +4 -0
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +157 -163
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/common-styling-participants.d.ts +28 -0
- package/lib/browser/common-styling-participants.d.ts.map +1 -0
- package/lib/browser/common-styling-participants.js +319 -0
- package/lib/browser/common-styling-participants.js.map +1 -0
- package/lib/browser/connection-status-service.d.ts.map +1 -1
- package/lib/browser/connection-status-service.js +2 -2
- package/lib/browser/connection-status-service.js.map +1 -1
- package/lib/browser/connection-status-service.spec.js +1 -2
- package/lib/browser/connection-status-service.spec.js.map +1 -1
- package/lib/browser/context-menu-renderer.d.ts +1 -5
- package/lib/browser/context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/context-menu-renderer.js +10 -30
- package/lib/browser/context-menu-renderer.js.map +1 -1
- package/lib/browser/core-preferences.d.ts +1 -0
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +5 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/decoration-style.d.ts +1 -0
- package/lib/browser/decoration-style.d.ts.map +1 -1
- package/lib/browser/decoration-style.js +6 -2
- package/lib/browser/decoration-style.js.map +1 -1
- package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
- package/lib/browser/frontend-application-bindings.js +1 -3
- package/lib/browser/frontend-application-bindings.js.map +1 -1
- package/lib/browser/frontend-application-config-provider.d.ts +1 -0
- package/lib/browser/frontend-application-config-provider.d.ts.map +1 -1
- package/lib/browser/frontend-application-config-provider.js +2 -1
- package/lib/browser/frontend-application-config-provider.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +9 -3
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/i18n/i18n-frontend-module.d.ts.map +1 -1
- package/lib/browser/i18n/i18n-frontend-module.js +2 -0
- package/lib/browser/i18n/i18n-frontend-module.js.map +1 -1
- package/lib/browser/i18n/language-quick-pick-service.d.ts +17 -0
- package/lib/browser/i18n/language-quick-pick-service.d.ts.map +1 -0
- package/lib/browser/i18n/language-quick-pick-service.js +142 -0
- package/lib/browser/i18n/language-quick-pick-service.js.map +1 -0
- package/lib/browser/index.d.ts +1 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +1 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +2 -1
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +18 -21
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/label-provider.d.ts +0 -12
- package/lib/browser/label-provider.d.ts.map +1 -1
- package/lib/browser/label-provider.js +1 -13
- package/lib/browser/label-provider.js.map +1 -1
- package/lib/browser/logger-frontend-module.d.ts.map +1 -1
- package/lib/browser/logger-frontend-module.js +8 -1
- package/lib/browser/logger-frontend-module.js.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.d.ts +5 -4
- package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +30 -23
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +2 -19
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +1 -24
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.d.ts +0 -4
- package/lib/browser/preferences/preference-proxy.d.ts.map +1 -1
- package/lib/browser/preferences/preference-proxy.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +3 -102
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +4 -3
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +1 -2
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +2 -2
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
- package/lib/browser/preloader.d.ts.map +1 -1
- package/lib/browser/preloader.js +7 -1
- package/lib/browser/preloader.js.map +1 -1
- package/lib/browser/progress-status-bar-item.d.ts +1 -1
- package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +2 -2
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +5 -4
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +4 -0
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +42 -36
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts +2 -0
- package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +5 -1
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
- package/lib/browser/shell/side-panel-handler.js +3 -2
- package/lib/browser/shell/side-panel-handler.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +4 -2
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +12 -4
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/source-tree/source-tree-widget.js +1 -1
- package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
- package/lib/browser/source-tree/tree-source.d.ts +2 -1
- package/lib/browser/source-tree/tree-source.d.ts.map +1 -1
- package/lib/browser/source-tree/tree-source.js.map +1 -1
- package/lib/browser/styling-service.d.ts +26 -0
- package/lib/browser/styling-service.d.ts.map +1 -0
- package/lib/browser/styling-service.js +76 -0
- package/lib/browser/styling-service.js.map +1 -0
- package/lib/browser/theming.d.ts +4 -8
- package/lib/browser/theming.d.ts.map +1 -1
- package/lib/browser/theming.js +38 -53
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tree/search-box.d.ts.map +1 -1
- package/lib/browser/tree/search-box.js +5 -4
- package/lib/browser/tree/search-box.js.map +1 -1
- package/lib/browser/tree/test/tree-test-container.d.ts.map +1 -1
- package/lib/browser/tree/test/tree-test-container.js +2 -0
- package/lib/browser/tree/test/tree-test-container.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.js +4 -2
- package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js +4 -2
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
- package/lib/browser/tree/tree-container.d.ts +2 -0
- package/lib/browser/tree/tree-container.d.ts.map +1 -1
- package/lib/browser/tree/tree-container.js +3 -0
- package/lib/browser/tree/tree-container.js.map +1 -1
- package/lib/browser/tree/tree-focus-service.d.ts +20 -0
- package/lib/browser/tree/tree-focus-service.d.ts.map +1 -0
- package/lib/browser/tree/tree-focus-service.js +62 -0
- package/lib/browser/tree/tree-focus-service.js.map +1 -0
- package/lib/browser/tree/tree-model.d.ts +11 -2
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +29 -8
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-selection-impl.d.ts +4 -1
- package/lib/browser/tree/tree-selection-impl.d.ts.map +1 -1
- package/lib/browser/tree/tree-selection-impl.js +13 -2
- package/lib/browser/tree/tree-selection-impl.js.map +1 -1
- package/lib/browser/tree/tree-selection-state.d.ts +1 -0
- package/lib/browser/tree/tree-selection-state.d.ts.map +1 -1
- package/lib/browser/tree/tree-selection-state.js +8 -2
- package/lib/browser/tree/tree-selection-state.js.map +1 -1
- package/lib/browser/tree/tree-selection.d.ts +9 -0
- package/lib/browser/tree/tree-selection.d.ts.map +1 -1
- package/lib/browser/tree/tree-selection.js +3 -0
- package/lib/browser/tree/tree-selection.js.map +1 -1
- package/lib/browser/tree/tree-widget-selection.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget-selection.js +9 -1
- package/lib/browser/tree/tree-widget-selection.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +14 -0
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +80 -40
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts +2 -1
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +12 -2
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/view-container.d.ts +9 -4
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +36 -6
- package/lib/browser/view-container.js.map +1 -1
- package/lib/common/cancellation.d.ts +1 -0
- package/lib/common/cancellation.d.ts.map +1 -1
- package/lib/common/cancellation.js +8 -0
- package/lib/common/cancellation.js.map +1 -1
- package/lib/common/command.d.ts +1 -1
- package/lib/common/command.d.ts.map +1 -1
- package/lib/common/command.js +13 -16
- package/lib/common/command.js.map +1 -1
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/message-rpc/channel.d.ts +106 -0
- package/lib/common/message-rpc/channel.d.ts.map +1 -0
- package/lib/common/message-rpc/channel.js +195 -0
- package/lib/common/message-rpc/channel.js.map +1 -0
- package/lib/common/message-rpc/channel.spec.d.ts +9 -0
- package/lib/common/message-rpc/channel.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/channel.spec.js +80 -0
- package/lib/common/message-rpc/channel.spec.js.map +1 -0
- package/lib/common/message-rpc/index.d.ts +4 -0
- package/lib/common/message-rpc/index.d.ts.map +1 -0
- package/lib/{node/messaging/logger.js → common/message-rpc/index.js} +6 -19
- package/lib/common/message-rpc/index.js.map +1 -0
- package/lib/common/message-rpc/message-buffer.d.ts +50 -0
- package/lib/common/message-rpc/message-buffer.d.ts.map +1 -0
- package/lib/common/message-rpc/message-buffer.js +56 -0
- package/lib/common/message-rpc/message-buffer.js.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.d.ts +171 -0
- package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.js +409 -0
- package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts +2 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.js +49 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.js.map +1 -0
- package/lib/common/message-rpc/rpc-protocol.d.ts +61 -0
- package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-protocol.js +183 -0
- package/lib/common/message-rpc/rpc-protocol.js.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +52 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.js +169 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts +2 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.js +39 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.js.map +1 -0
- package/lib/common/messaging/abstract-connection-provider.d.ts +9 -8
- package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
- package/lib/common/messaging/abstract-connection-provider.js +20 -35
- package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
- package/lib/common/messaging/connection-error-handler.d.ts +1 -2
- package/lib/common/messaging/connection-error-handler.d.ts.map +1 -1
- package/lib/common/messaging/connection-error-handler.js +1 -1
- package/lib/common/messaging/connection-error-handler.js.map +1 -1
- package/lib/common/messaging/handler.d.ts +2 -2
- package/lib/common/messaging/handler.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.d.ts +13 -7
- package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.js +18 -13
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/messaging/proxy-factory.spec.js +4 -15
- package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
- package/lib/common/messaging/web-socket-channel.d.ts +54 -48
- package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
- package/lib/common/messaging/web-socket-channel.js +41 -105
- package/lib/common/messaging/web-socket-channel.js.map +1 -1
- package/lib/common/nls.d.ts +2 -0
- package/lib/common/nls.d.ts.map +1 -1
- package/lib/common/nls.js +11 -0
- package/lib/common/nls.js.map +1 -1
- package/lib/common/preferences/preference-schema.d.ts +1 -5
- package/lib/common/preferences/preference-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.js.map +1 -1
- package/lib/common/promise-util.d.ts +2 -1
- package/lib/common/promise-util.d.ts.map +1 -1
- package/lib/common/promise-util.js +8 -13
- package/lib/common/promise-util.js.map +1 -1
- package/lib/common/resource.d.ts +5 -0
- package/lib/common/resource.d.ts.map +1 -1
- package/lib/common/resource.js +28 -1
- package/lib/common/resource.js.map +1 -1
- package/lib/common/theme.d.ts +3 -2
- package/lib/common/theme.d.ts.map +1 -1
- package/lib/common/theme.js +5 -0
- package/lib/common/theme.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +2 -2
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +18 -7
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +2 -2
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js +5 -7
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +1 -1
- package/lib/electron-main/event-utils.d.ts +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +37 -9
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +83 -68
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-service.d.ts +2 -8
- package/lib/electron-main/messaging/electron-messaging-service.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
- package/lib/node/messaging/binary-message-pipe.d.ts +45 -0
- package/lib/node/messaging/binary-message-pipe.d.ts.map +1 -0
- package/lib/node/messaging/binary-message-pipe.js +152 -0
- package/lib/node/messaging/binary-message-pipe.js.map +1 -0
- package/lib/node/messaging/ipc-bootstrap.js +2 -11
- package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
- package/lib/node/messaging/ipc-channel.d.ts +26 -0
- package/lib/node/messaging/ipc-channel.d.ts.map +1 -0
- package/lib/node/messaging/ipc-channel.js +86 -0
- package/lib/node/messaging/ipc-channel.js.map +1 -0
- package/lib/node/messaging/ipc-connection-provider.d.ts +3 -5
- package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
- package/lib/node/messaging/ipc-connection-provider.js +14 -31
- package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
- package/lib/node/messaging/ipc-protocol.d.ts +2 -2
- package/lib/node/messaging/ipc-protocol.d.ts.map +1 -1
- package/lib/node/messaging/messaging-contribution.d.ts +6 -9
- package/lib/node/messaging/messaging-contribution.d.ts.map +1 -1
- package/lib/node/messaging/messaging-contribution.js +23 -68
- package/lib/node/messaging/messaging-contribution.js.map +1 -1
- package/lib/node/messaging/messaging-service.d.ts +4 -23
- package/lib/node/messaging/messaging-service.d.ts.map +1 -1
- package/lib/node/messaging/messaging-service.js +1 -15
- package/lib/node/messaging/messaging-service.js.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.d.ts +4 -2
- package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.js +25 -12
- package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
- package/lib/node/request/proxy-cli-contribution.js +1 -1
- package/lib/node/request/proxy-cli-contribution.js.map +1 -1
- package/package.json +7 -10
- package/src/browser/color-application-contribution.ts +10 -17
- package/src/browser/color-registry.ts +0 -5
- package/src/browser/common-frontend-contribution.ts +26 -33
- package/src/browser/common-styling-participants.ts +307 -0
- package/src/browser/connection-status-service.spec.ts +1 -4
- package/src/browser/connection-status-service.ts +3 -3
- package/src/browser/context-menu-renderer.ts +13 -29
- package/src/browser/core-preferences.ts +6 -0
- package/src/browser/decoration-style.ts +6 -2
- package/src/browser/frontend-application-bindings.ts +1 -3
- package/src/browser/frontend-application-config-provider.ts +2 -0
- package/src/browser/frontend-application-module.ts +11 -4
- package/src/browser/i18n/i18n-frontend-module.ts +2 -0
- package/src/browser/i18n/language-quick-pick-service.ts +128 -0
- package/src/browser/index.ts +1 -0
- package/src/browser/keybinding.spec.ts +22 -27
- package/src/browser/keybinding.ts +2 -1
- package/src/browser/label-provider.ts +0 -13
- package/src/browser/logger-frontend-module.ts +8 -1
- package/src/browser/messaging/ws-connection-provider.ts +34 -25
- package/src/browser/preferences/preference-contribution.ts +3 -28
- package/src/browser/preferences/preference-proxy.spec.ts +3 -113
- package/src/browser/preferences/preference-proxy.ts +0 -4
- package/src/browser/preferences/preference-schema-provider.spec.ts +1 -4
- package/src/browser/preferences/preference-service.spec.ts +1 -5
- package/src/browser/preferences/preference-validation-service.spec.ts +2 -2
- package/src/browser/preferences/preference-validation-service.ts +2 -2
- package/src/browser/preloader.ts +9 -2
- package/src/browser/progress-status-bar-item.ts +1 -1
- package/src/browser/quick-input/quick-command-service.ts +3 -3
- package/src/browser/saveable.ts +5 -4
- package/src/browser/shell/application-shell.ts +42 -35
- package/src/browser/shell/shell-layout-restorer.ts +4 -6
- package/src/browser/shell/side-panel-handler.ts +3 -2
- package/src/browser/shell/tab-bars.ts +14 -4
- package/src/browser/source-tree/source-tree-widget.tsx +1 -1
- package/src/browser/source-tree/tree-source.ts +2 -1
- package/src/browser/style/breadcrumbs.css +0 -1
- package/src/browser/style/index.css +66 -29
- package/src/browser/style/menus.css +4 -2
- package/src/browser/style/select-component.css +2 -0
- package/src/browser/style/sidepanel.css +11 -25
- package/src/browser/style/status-bar.css +8 -17
- package/src/browser/style/tabs.css +0 -16
- package/src/browser/style/tooltip.css +3 -3
- package/src/browser/style/tree.css +27 -11
- package/src/browser/style/view-container.css +4 -0
- package/src/browser/styling-service.ts +76 -0
- package/src/browser/theming.ts +18 -45
- package/src/browser/tree/search-box.ts +5 -4
- package/src/browser/tree/test/tree-test-container.ts +2 -0
- package/src/browser/tree/tree-compression/compressed-tree-model.ts +8 -2
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +4 -2
- package/src/browser/tree/tree-container.ts +4 -0
- package/src/browser/tree/tree-focus-service.ts +55 -0
- package/src/browser/tree/tree-model.ts +32 -8
- package/src/browser/tree/tree-selection-impl.ts +13 -4
- package/src/browser/tree/tree-selection-state.ts +7 -2
- package/src/browser/tree/tree-selection.ts +10 -0
- package/src/browser/tree/tree-widget-selection.ts +10 -1
- package/src/browser/tree/tree-widget.tsx +83 -43
- package/src/browser/tree/tree.ts +8 -2
- package/src/browser/view-container.ts +41 -4
- package/src/common/cancellation.ts +8 -0
- package/src/common/command.ts +14 -16
- package/src/common/index.ts +1 -0
- package/src/common/message-rpc/channel.spec.ts +88 -0
- package/src/common/message-rpc/channel.ts +260 -0
- package/src/{node/messaging/logger.ts → common/message-rpc/index.ts} +4 -23
- package/src/common/message-rpc/message-buffer.ts +99 -0
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +55 -0
- package/src/common/message-rpc/rpc-message-encoder.ts +552 -0
- package/src/common/message-rpc/rpc-protocol.ts +217 -0
- package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -0
- package/src/common/message-rpc/uint8-array-message-buffer.ts +206 -0
- package/src/common/messaging/abstract-connection-provider.ts +28 -37
- package/src/common/messaging/connection-error-handler.ts +1 -2
- package/src/common/messaging/handler.ts +2 -2
- package/src/common/messaging/proxy-factory.spec.ts +4 -17
- package/src/common/messaging/proxy-factory.ts +27 -16
- package/src/common/messaging/web-socket-channel.ts +79 -135
- package/src/common/nls.ts +11 -0
- package/src/common/preferences/preference-schema.ts +1 -6
- package/src/common/promise-util.ts +13 -14
- package/src/common/resource.ts +29 -2
- package/src/common/theme.ts +6 -2
- package/src/electron-browser/messaging/electron-ipc-connection-provider.ts +21 -7
- package/src/electron-browser/messaging/electron-ws-connection-provider.ts +5 -8
- package/src/electron-main/messaging/electron-messaging-contribution.ts +87 -65
- package/src/electron-main/messaging/electron-messaging-service.ts +2 -8
- package/src/node/messaging/binary-message-pipe.ts +168 -0
- package/src/node/messaging/ipc-bootstrap.ts +3 -11
- package/src/node/messaging/ipc-channel.ts +97 -0
- package/src/node/messaging/ipc-connection-provider.ts +18 -35
- package/src/node/messaging/ipc-protocol.ts +2 -2
- package/src/node/messaging/messaging-contribution.ts +29 -74
- package/src/node/messaging/messaging-service.ts +4 -31
- package/src/node/messaging/test/test-web-socket-channel.ts +26 -17
- package/src/node/request/proxy-cli-contribution.ts +1 -1
- package/lib/browser/preferences/validated-preference-proxy.d.ts +0 -21
- package/lib/browser/preferences/validated-preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/validated-preference-proxy.js +0 -118
- package/lib/browser/preferences/validated-preference-proxy.js.map +0 -1
- package/lib/node/messaging/logger.d.ts +0 -8
- package/lib/node/messaging/logger.d.ts.map +0 -1
- package/lib/node/messaging/logger.js.map +0 -1
- package/shared/vscode-ws-jsonrpc/index.d.ts +0 -1
- package/shared/vscode-ws-jsonrpc/index.js +0 -1
- package/src/browser/preferences/validated-preference-proxy.ts +0 -111
- package/src/browser/style/variables-bright.useable.css +0 -93
- package/src/browser/style/variables-dark.useable.css +0 -93
|
@@ -16,10 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
18
|
|
|
19
|
-
import {
|
|
19
|
+
import { ResponseError } from '../message-rpc/rpc-message-encoder';
|
|
20
20
|
import { ApplicationError } from '../application-error';
|
|
21
|
-
import { Event, Emitter } from '../event';
|
|
22
21
|
import { Disposable } from '../disposable';
|
|
22
|
+
import { Emitter, Event } from '../event';
|
|
23
|
+
import { Channel } from '../message-rpc/channel';
|
|
24
|
+
import { RequestHandler, RpcProtocol } from '../message-rpc/rpc-protocol';
|
|
23
25
|
import { ConnectionHandler } from './handler';
|
|
24
26
|
|
|
25
27
|
export type JsonRpcServer<Client> = Disposable & {
|
|
@@ -45,13 +47,19 @@ export class JsonRpcConnectionHandler<T extends object> implements ConnectionHan
|
|
|
45
47
|
readonly factoryConstructor: new () => JsonRpcProxyFactory<T> = JsonRpcProxyFactory
|
|
46
48
|
) { }
|
|
47
49
|
|
|
48
|
-
onConnection(connection:
|
|
50
|
+
onConnection(connection: Channel): void {
|
|
49
51
|
const factory = new this.factoryConstructor();
|
|
50
52
|
const proxy = factory.createProxy();
|
|
51
53
|
factory.target = this.targetFactory(proxy);
|
|
52
54
|
factory.listen(connection);
|
|
53
55
|
}
|
|
54
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Factory for creating a new {@link RpcConnection} for a given chanel and {@link RequestHandler}.
|
|
59
|
+
*/
|
|
60
|
+
export type RpcConnectionFactory = (channel: Channel, requestHandler: RequestHandler) => RpcProtocol;
|
|
61
|
+
|
|
62
|
+
const defaultRPCConnectionFactory: RpcConnectionFactory = (channel, requestHandler) => new RpcProtocol(channel, requestHandler);
|
|
55
63
|
|
|
56
64
|
/**
|
|
57
65
|
* Factory for JSON-RPC proxy objects.
|
|
@@ -95,13 +103,14 @@ export class JsonRpcConnectionHandler<T extends object> implements ConnectionHan
|
|
|
95
103
|
*
|
|
96
104
|
* @param <T> - The type of the object to expose to JSON-RPC.
|
|
97
105
|
*/
|
|
106
|
+
|
|
98
107
|
export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
|
|
99
108
|
|
|
100
109
|
protected readonly onDidOpenConnectionEmitter = new Emitter<void>();
|
|
101
110
|
protected readonly onDidCloseConnectionEmitter = new Emitter<void>();
|
|
102
111
|
|
|
103
|
-
protected connectionPromiseResolve: (connection:
|
|
104
|
-
protected connectionPromise: Promise<
|
|
112
|
+
protected connectionPromiseResolve: (connection: RpcProtocol) => void;
|
|
113
|
+
protected connectionPromise: Promise<RpcProtocol>;
|
|
105
114
|
|
|
106
115
|
/**
|
|
107
116
|
* Build a new JsonRpcProxyFactory.
|
|
@@ -109,7 +118,7 @@ export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
|
|
|
109
118
|
* @param target - The object to expose to JSON-RPC methods calls. If this
|
|
110
119
|
* is omitted, the proxy won't be able to handle requests, only send them.
|
|
111
120
|
*/
|
|
112
|
-
constructor(public target?: any) {
|
|
121
|
+
constructor(public target?: any, protected rpcConnectionFactory = defaultRPCConnectionFactory) {
|
|
113
122
|
this.waitForConnection();
|
|
114
123
|
}
|
|
115
124
|
|
|
@@ -118,9 +127,11 @@ export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
|
|
|
118
127
|
this.connectionPromiseResolve = resolve
|
|
119
128
|
);
|
|
120
129
|
this.connectionPromise.then(connection => {
|
|
121
|
-
connection.onClose(() =>
|
|
122
|
-
this.onDidCloseConnectionEmitter.fire(undefined)
|
|
123
|
-
|
|
130
|
+
connection.channel.onClose(() => {
|
|
131
|
+
this.onDidCloseConnectionEmitter.fire(undefined);
|
|
132
|
+
// Wait for connection in case the backend reconnects
|
|
133
|
+
this.waitForConnection();
|
|
134
|
+
});
|
|
124
135
|
this.onDidOpenConnectionEmitter.fire(undefined);
|
|
125
136
|
});
|
|
126
137
|
}
|
|
@@ -131,11 +142,10 @@ export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
|
|
|
131
142
|
* This connection will be used to send/receive JSON-RPC requests and
|
|
132
143
|
* response.
|
|
133
144
|
*/
|
|
134
|
-
listen(
|
|
135
|
-
connection.
|
|
136
|
-
connection.onNotification(
|
|
137
|
-
|
|
138
|
-
connection.listen();
|
|
145
|
+
listen(channel: Channel): void {
|
|
146
|
+
const connection = this.rpcConnectionFactory(channel, (meth, args) => this.onRequest(meth, ...args));
|
|
147
|
+
connection.onNotification(event => this.onNotification(event.method, ...event.args));
|
|
148
|
+
|
|
139
149
|
this.connectionPromiseResolve(connection);
|
|
140
150
|
}
|
|
141
151
|
|
|
@@ -239,10 +249,10 @@ export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
|
|
|
239
249
|
new Promise<void>((resolve, reject) => {
|
|
240
250
|
try {
|
|
241
251
|
if (isNotify) {
|
|
242
|
-
connection.sendNotification(method,
|
|
252
|
+
connection.sendNotification(method, args);
|
|
243
253
|
resolve(undefined);
|
|
244
254
|
} else {
|
|
245
|
-
const resultPromise = connection.sendRequest(method,
|
|
255
|
+
const resultPromise = connection.sendRequest(method, args) as Promise<any>;
|
|
246
256
|
resultPromise
|
|
247
257
|
.catch((err: any) => reject(this.deserializeError(capturedError, err)))
|
|
248
258
|
.then((result: any) => resolve(result));
|
|
@@ -293,3 +303,4 @@ export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
|
|
|
293
303
|
}
|
|
294
304
|
|
|
295
305
|
}
|
|
306
|
+
|
|
@@ -16,157 +16,101 @@
|
|
|
16
16
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
18
|
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
import { Emitter, Event } from '../event';
|
|
20
|
+
import { WriteBuffer } from '../message-rpc';
|
|
21
|
+
import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '../message-rpc/uint8-array-message-buffer';
|
|
22
|
+
import { Channel, MessageProvider, ChannelCloseEvent } from '../message-rpc/channel';
|
|
23
|
+
import { DisposableCollection } from '../disposable';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A channel that manages the main websocket connection between frontend and backend. All service channels
|
|
27
|
+
* are reusing this main channel. (multiplexing). An {@link IWebSocket} abstraction is used to keep the implementation
|
|
28
|
+
* independent of the actual websocket implementation and its execution context (backend vs. frontend).
|
|
29
|
+
*/
|
|
30
|
+
export class WebSocketChannel implements Channel {
|
|
25
31
|
static wsPath = '/services';
|
|
26
32
|
|
|
27
|
-
protected readonly
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
constructor(
|
|
31
|
-
readonly id: number,
|
|
32
|
-
protected readonly doSend: (content: string) => void
|
|
33
|
-
) { }
|
|
34
|
-
|
|
35
|
-
dispose(): void {
|
|
36
|
-
this.toDispose.dispose();
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
protected checkNotDisposed(): void {
|
|
40
|
-
if (this.toDispose.disposed) {
|
|
41
|
-
throw new Error('The channel has been disposed.');
|
|
42
|
-
}
|
|
33
|
+
protected readonly onCloseEmitter: Emitter<ChannelCloseEvent> = new Emitter();
|
|
34
|
+
get onClose(): Event<ChannelCloseEvent> {
|
|
35
|
+
return this.onCloseEmitter.event;
|
|
43
36
|
}
|
|
44
37
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
} else if (message.kind === 'data') {
|
|
49
|
-
this.fireMessage(message.content);
|
|
50
|
-
} else if (message.kind === 'close') {
|
|
51
|
-
this.fireClose(message.code, message.reason);
|
|
52
|
-
}
|
|
38
|
+
protected readonly onMessageEmitter: Emitter<MessageProvider> = new Emitter();
|
|
39
|
+
get onMessage(): Event<MessageProvider> {
|
|
40
|
+
return this.onMessageEmitter.event;
|
|
53
41
|
}
|
|
54
42
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
this.
|
|
58
|
-
kind: 'open',
|
|
59
|
-
id: this.id,
|
|
60
|
-
path
|
|
61
|
-
}));
|
|
43
|
+
protected readonly onErrorEmitter: Emitter<unknown> = new Emitter();
|
|
44
|
+
get onError(): Event<unknown> {
|
|
45
|
+
return this.onErrorEmitter.event;
|
|
62
46
|
}
|
|
63
47
|
|
|
64
|
-
|
|
65
|
-
this.checkNotDisposed();
|
|
66
|
-
this.doSend(JSON.stringify(<WebSocketChannel.ReadyMessage>{
|
|
67
|
-
kind: 'ready',
|
|
68
|
-
id: this.id
|
|
69
|
-
}));
|
|
70
|
-
}
|
|
48
|
+
protected toDispose = new DisposableCollection();
|
|
71
49
|
|
|
72
|
-
|
|
73
|
-
this.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
50
|
+
constructor(protected readonly socket: IWebSocket) {
|
|
51
|
+
this.toDispose.pushAll([this.onCloseEmitter, this.onMessageEmitter, this.onErrorEmitter]);
|
|
52
|
+
socket.onClose((reason, code) => this.onCloseEmitter.fire({ reason, code }));
|
|
53
|
+
socket.onClose(() => this.close());
|
|
54
|
+
socket.onError(error => this.onErrorEmitter.fire(error));
|
|
55
|
+
// eslint-disable-next-line arrow-body-style
|
|
56
|
+
socket.onMessage(data => this.onMessageEmitter.fire(() => {
|
|
57
|
+
// In the browser context socketIO receives binary messages as ArrayBuffers.
|
|
58
|
+
// So we have to convert them to a Uint8Array before delegating the message to the read buffer.
|
|
59
|
+
const buffer = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
|
|
60
|
+
return new Uint8ArrayReadBuffer(buffer);
|
|
78
61
|
}));
|
|
79
62
|
}
|
|
80
63
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// Do not try to close the channel if it is already closing.
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
this.checkNotDisposed();
|
|
87
|
-
this.doSend(JSON.stringify(<WebSocketChannel.CloseMessage>{
|
|
88
|
-
kind: 'close',
|
|
89
|
-
id: this.id,
|
|
90
|
-
code,
|
|
91
|
-
reason
|
|
92
|
-
}));
|
|
93
|
-
this.fireClose(code, reason);
|
|
94
|
-
}
|
|
64
|
+
getWriteBuffer(): WriteBuffer {
|
|
65
|
+
const result = new Uint8ArrayWriteBuffer();
|
|
95
66
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
this.doSend(JSON.stringify(<WebSocketChannel.CloseMessage>{
|
|
102
|
-
kind: 'close',
|
|
103
|
-
id: this.id,
|
|
104
|
-
code,
|
|
105
|
-
reason
|
|
106
|
-
}));
|
|
107
|
-
this.fireClose(code, reason);
|
|
108
|
-
}
|
|
67
|
+
result.onCommit(buffer => {
|
|
68
|
+
if (this.socket.isConnected()) {
|
|
69
|
+
this.socket.send(buffer);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
109
72
|
|
|
110
|
-
|
|
111
|
-
onOpen(cb: () => void): void {
|
|
112
|
-
this.checkNotDisposed();
|
|
113
|
-
this.fireOpen = cb;
|
|
114
|
-
this.toDispose.push(Disposable.create(() => this.fireOpen = () => { }));
|
|
73
|
+
return result;
|
|
115
74
|
}
|
|
116
75
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
this.
|
|
120
|
-
this.fireMessage = cb;
|
|
121
|
-
this.toDispose.push(Disposable.create(() => this.fireMessage = () => { }));
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
fireError: (reason: any) => void = () => { };
|
|
125
|
-
onError(cb: (reason: any) => void): void {
|
|
126
|
-
this.checkNotDisposed();
|
|
127
|
-
this.fireError = cb;
|
|
128
|
-
this.toDispose.push(Disposable.create(() => this.fireError = () => { }));
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
protected closing = false;
|
|
132
|
-
protected fireClose(code: number, reason: string): void {
|
|
133
|
-
if (this.closing) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
this.closing = true;
|
|
137
|
-
try {
|
|
138
|
-
this.closeEmitter.fire([code, reason]);
|
|
139
|
-
} finally {
|
|
140
|
-
this.closing = false;
|
|
141
|
-
}
|
|
142
|
-
this.dispose();
|
|
143
|
-
}
|
|
144
|
-
onClose(cb: (code: number, reason: string) => void): Disposable {
|
|
145
|
-
this.checkNotDisposed();
|
|
146
|
-
return this.closeEmitter.event(([code, reason]) => cb(code, reason));
|
|
76
|
+
close(): void {
|
|
77
|
+
this.toDispose.dispose();
|
|
78
|
+
this.socket.close();
|
|
147
79
|
}
|
|
148
|
-
|
|
149
80
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* An abstraction that enables reuse of the `{@link WebSocketChannel} class in the frontend and backend
|
|
84
|
+
* independent of the actual underlying socket implementation.
|
|
85
|
+
*/
|
|
86
|
+
export interface IWebSocket {
|
|
87
|
+
/**
|
|
88
|
+
* Sends the given message over the web socket in binary format.
|
|
89
|
+
* @param message The binary message.
|
|
90
|
+
*/
|
|
91
|
+
send(message: Uint8Array): void;
|
|
92
|
+
/**
|
|
93
|
+
* Closes the websocket from the local side.
|
|
94
|
+
*/
|
|
95
|
+
close(): void;
|
|
96
|
+
/**
|
|
97
|
+
* The connection state of the web socket.
|
|
98
|
+
*/
|
|
99
|
+
isConnected(): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Listener callback to handle incoming messages.
|
|
102
|
+
* @param cb The callback.
|
|
103
|
+
*/
|
|
104
|
+
onMessage(cb: (message: Uint8Array) => void): void;
|
|
105
|
+
/**
|
|
106
|
+
* Listener callback to handle socket errors.
|
|
107
|
+
* @param cb The callback.
|
|
108
|
+
*/
|
|
109
|
+
onError(cb: (reason: any) => void): void;
|
|
110
|
+
/**
|
|
111
|
+
* Listener callback to handle close events (Remote side).
|
|
112
|
+
* @param cb The callback.
|
|
113
|
+
*/
|
|
114
|
+
onClose(cb: (reason: string, code?: number) => void): void;
|
|
172
115
|
}
|
|
116
|
+
|
package/src/common/nls.ts
CHANGED
|
@@ -55,6 +55,17 @@ export namespace nls {
|
|
|
55
55
|
export function localize(key: string, defaultValue: string, ...args: FormatType[]): string {
|
|
56
56
|
return Localization.localize(localization, key, defaultValue, ...args);
|
|
57
57
|
}
|
|
58
|
+
|
|
59
|
+
export function isSelectedLocale(id: string): boolean {
|
|
60
|
+
if (locale === undefined && id === 'en') {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return locale === id;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function setLocale(id: string): void {
|
|
67
|
+
window.localStorage.setItem(localeId, id);
|
|
68
|
+
}
|
|
58
69
|
}
|
|
59
70
|
|
|
60
71
|
interface NlsKeys {
|
|
@@ -17,14 +17,9 @@
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
18
|
|
|
19
19
|
import { JSONValue } from '@phosphor/coreutils';
|
|
20
|
-
import { IJSONSchema
|
|
20
|
+
import { IJSONSchema } from '../json-schema';
|
|
21
21
|
import { PreferenceScope } from './preference-scope';
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* @deprecated since 1.22.0. Import from @theia/core/common/json-schema.ts instead.
|
|
25
|
-
*/
|
|
26
|
-
export { JsonType };
|
|
27
|
-
|
|
28
23
|
export interface PreferenceSchema {
|
|
29
24
|
[name: string]: any,
|
|
30
25
|
scope?: 'application' | 'window' | 'resource' | PreferenceScope,
|
|
@@ -25,22 +25,21 @@ import { CancellationToken, CancellationError, cancelled } from './cancellation'
|
|
|
25
25
|
export class Deferred<T = void> {
|
|
26
26
|
state: 'resolved' | 'rejected' | 'unresolved' = 'unresolved';
|
|
27
27
|
resolve: (value: T | PromiseLike<T>) => void;
|
|
28
|
-
reject: (err?:
|
|
28
|
+
reject: (err?: unknown) => void;
|
|
29
29
|
|
|
30
30
|
promise = new Promise<T>((resolve, reject) => {
|
|
31
|
-
this.resolve =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
});
|
|
31
|
+
this.resolve = resolve;
|
|
32
|
+
this.reject = reject;
|
|
33
|
+
}).then(
|
|
34
|
+
res => (this.setState('resolved'), res),
|
|
35
|
+
err => (this.setState('rejected'), Promise.reject(err)),
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
protected setState(state: 'resolved' | 'rejected'): void {
|
|
39
|
+
if (this.state === 'unresolved') {
|
|
40
|
+
this.state = state;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
/**
|
package/src/common/resource.ts
CHANGED
|
@@ -327,6 +327,14 @@ export class UntitledResourceResolver implements ResourceResolver {
|
|
|
327
327
|
|
|
328
328
|
protected readonly resources = new Map<string, UntitledResource>();
|
|
329
329
|
|
|
330
|
+
has(uri: URI): boolean {
|
|
331
|
+
if (uri.scheme !== UNTITLED_SCHEME) {
|
|
332
|
+
throw new Error('The given uri is not untitled file uri: ' + uri);
|
|
333
|
+
} else {
|
|
334
|
+
return this.resources.has(uri.toString());
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
330
338
|
async resolve(uri: URI): Promise<UntitledResource> {
|
|
331
339
|
if (uri.scheme !== UNTITLED_SCHEME) {
|
|
332
340
|
throw new Error('The given uri is not untitled file uri: ' + uri);
|
|
@@ -341,8 +349,24 @@ export class UntitledResourceResolver implements ResourceResolver {
|
|
|
341
349
|
}
|
|
342
350
|
|
|
343
351
|
async createUntitledResource(content?: string, extension?: string, uri?: URI): Promise<UntitledResource> {
|
|
344
|
-
|
|
345
|
-
|
|
352
|
+
if (!uri) {
|
|
353
|
+
uri = this.createUntitledURI(extension);
|
|
354
|
+
}
|
|
355
|
+
return new UntitledResource(this.resources, uri, content);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
createUntitledURI(extension?: string, parent?: URI): URI {
|
|
359
|
+
let counter = 1; // vscode starts at 1
|
|
360
|
+
let untitledUri;
|
|
361
|
+
do {
|
|
362
|
+
const name = `Untitled-${counter}${extension ?? ''}`;
|
|
363
|
+
if (parent) {
|
|
364
|
+
untitledUri = parent.resolve(name).withScheme(UNTITLED_SCHEME);
|
|
365
|
+
}
|
|
366
|
+
untitledUri = new URI().resolve(name).withScheme(UNTITLED_SCHEME);
|
|
367
|
+
counter++;
|
|
368
|
+
} while (this.has(untitledUri));
|
|
369
|
+
return untitledUri;
|
|
346
370
|
}
|
|
347
371
|
}
|
|
348
372
|
|
|
@@ -389,6 +413,9 @@ export class UntitledResource implements Resource {
|
|
|
389
413
|
}
|
|
390
414
|
}
|
|
391
415
|
|
|
416
|
+
/**
|
|
417
|
+
* @deprecated Since 1.27.0. Please use `UntitledResourceResolver.createUntitledURI` instead.
|
|
418
|
+
*/
|
|
392
419
|
export function createUntitledURI(extension?: string, parent?: URI): URI {
|
|
393
420
|
const name = `Untitled-${untitledResourceSequenceIndex++}${extension ?? ''}`;
|
|
394
421
|
if (parent) {
|
package/src/common/theme.ts
CHANGED
|
@@ -22,8 +22,12 @@ export interface Theme {
|
|
|
22
22
|
readonly label: string;
|
|
23
23
|
readonly description?: string;
|
|
24
24
|
readonly editorTheme?: string;
|
|
25
|
-
activate(): void;
|
|
26
|
-
deactivate(): void;
|
|
25
|
+
activate?(): void;
|
|
26
|
+
deactivate?(): void;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function isHighContrast(scheme: ThemeType): boolean {
|
|
30
|
+
return scheme === 'hc';
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
export interface ThemeChangeEvent {
|
|
@@ -17,9 +17,11 @@
|
|
|
17
17
|
import { Event as ElectronEvent, ipcRenderer } from '@theia/electron/shared/electron';
|
|
18
18
|
import { injectable, interfaces } from 'inversify';
|
|
19
19
|
import { JsonRpcProxy } from '../../common/messaging';
|
|
20
|
-
import { WebSocketChannel } from '../../common/messaging/web-socket-channel';
|
|
21
20
|
import { AbstractConnectionProvider } from '../../common/messaging/abstract-connection-provider';
|
|
22
21
|
import { THEIA_ELECTRON_IPC_CHANNEL_NAME } from '../../electron-common/messaging/electron-connection-handler';
|
|
22
|
+
import { Emitter, Event } from '../../common';
|
|
23
|
+
import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '../../common/message-rpc/uint8-array-message-buffer';
|
|
24
|
+
import { Channel, MessageProvider } from '../../common/message-rpc/channel';
|
|
23
25
|
|
|
24
26
|
export interface ElectronIpcOptions {
|
|
25
27
|
}
|
|
@@ -36,15 +38,27 @@ export class ElectronIpcConnectionProvider extends AbstractConnectionProvider<El
|
|
|
36
38
|
|
|
37
39
|
constructor() {
|
|
38
40
|
super();
|
|
39
|
-
|
|
40
|
-
this.handleIncomingRawMessage(data);
|
|
41
|
-
});
|
|
41
|
+
this.initializeMultiplexer();
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
protected
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
protected createMainChannel(): Channel {
|
|
45
|
+
const onMessageEmitter = new Emitter<MessageProvider>();
|
|
46
|
+
ipcRenderer.on(THEIA_ELECTRON_IPC_CHANNEL_NAME, (_event: ElectronEvent, data: Uint8Array) => {
|
|
47
|
+
onMessageEmitter.fire(() => new Uint8ArrayReadBuffer(data));
|
|
47
48
|
});
|
|
49
|
+
return {
|
|
50
|
+
close: () => Event.None,
|
|
51
|
+
getWriteBuffer: () => {
|
|
52
|
+
const writer = new Uint8ArrayWriteBuffer();
|
|
53
|
+
writer.onCommit(buffer =>
|
|
54
|
+
ipcRenderer.send(THEIA_ELECTRON_IPC_CHANNEL_NAME, buffer)
|
|
55
|
+
);
|
|
56
|
+
return writer;
|
|
57
|
+
},
|
|
58
|
+
onClose: Event.None,
|
|
59
|
+
onError: Event.None,
|
|
60
|
+
onMessage: onMessageEmitter.event
|
|
61
|
+
};
|
|
48
62
|
}
|
|
49
63
|
|
|
50
64
|
}
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { injectable } from 'inversify';
|
|
18
|
-
import { WebSocketChannel } from '../../common/messaging/web-socket-channel';
|
|
19
18
|
import { WebSocketConnectionProvider, WebSocketOptions } from '../../browser/messaging/ws-connection-provider';
|
|
20
19
|
import { FrontendApplicationContribution } from '../../browser/frontend-application';
|
|
20
|
+
import { Channel } from '../../common';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Customized connection provider between the frontend and the backend in electron environment.
|
|
@@ -34,16 +34,13 @@ export class ElectronWebSocketConnectionProvider extends WebSocketConnectionProv
|
|
|
34
34
|
|
|
35
35
|
onStop(): void {
|
|
36
36
|
this.stopping = true;
|
|
37
|
-
//
|
|
37
|
+
// Manually close the websocket connections `onStop`. Otherwise, the channels will be closed with 30 sec (`MessagingContribution#checkAliveTimeout`) delay.
|
|
38
38
|
// https://github.com/eclipse-theia/theia/issues/6499
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// But we cannot use `1001`: https://github.com/TypeFox/vscode-ws-jsonrpc/issues/15
|
|
42
|
-
channel.close(1000, 'The frontend is "going away"...');
|
|
43
|
-
}
|
|
39
|
+
// `1001` indicates that an endpoint is "going away", such as a server going down or a browser having navigated away from a page.
|
|
40
|
+
this.channelMultiPlexer?.onUnderlyingChannelClose({ reason: 'The frontend is "going away"', code: 1001 });
|
|
44
41
|
}
|
|
45
42
|
|
|
46
|
-
override openChannel(path: string, handler: (channel:
|
|
43
|
+
override async openChannel(path: string, handler: (channel: Channel) => void, options?: WebSocketOptions): Promise<void> {
|
|
47
44
|
if (!this.stopping) {
|
|
48
45
|
super.openChannel(path, handler, options);
|
|
49
46
|
}
|