@theia/plugin-ext 1.45.1 → 1.46.0-next.137
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/lib/common/index.js +4 -13
- package/lib/common/index.js.map +1 -1
- package/lib/common/plugin-api-rpc-model.d.ts +1 -1
- package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.d.ts +69 -24
- package/lib/common/plugin-api-rpc.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.js +15 -2
- package/lib/common/plugin-api-rpc.js.map +1 -1
- package/lib/common/plugin-ext-api-contribution.d.ts +35 -5
- package/lib/common/plugin-ext-api-contribution.d.ts.map +1 -1
- package/lib/common/plugin-ext-api-contribution.js.map +1 -1
- package/lib/common/plugin-protocol.d.ts +15 -2
- package/lib/common/plugin-protocol.d.ts.map +1 -1
- package/lib/common/plugin-protocol.js +1 -0
- package/lib/common/plugin-protocol.js.map +1 -1
- package/lib/common/proxy-handler.d.ts +7 -0
- package/lib/common/proxy-handler.d.ts.map +1 -1
- package/lib/common/proxy-handler.js +5 -1
- package/lib/common/proxy-handler.js.map +1 -1
- package/lib/common/rpc-protocol.d.ts +10 -0
- package/lib/common/rpc-protocol.d.ts.map +1 -1
- package/lib/common/rpc-protocol.js +32 -3
- package/lib/common/rpc-protocol.js.map +1 -1
- package/lib/common/uri-components.d.ts +1 -2
- package/lib/common/uri-components.d.ts.map +1 -1
- package/lib/common/uri-components.js +1 -5
- package/lib/common/uri-components.js.map +1 -1
- package/lib/hosted/browser/hosted-plugin-watcher.js +2 -7
- package/lib/hosted/browser/hosted-plugin-watcher.js.map +1 -1
- package/lib/hosted/browser/hosted-plugin.d.ts +16 -74
- package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
- package/lib/hosted/browser/hosted-plugin.js +98 -378
- package/lib/hosted/browser/hosted-plugin.js.map +1 -1
- package/lib/hosted/browser/plugin-worker.js +3 -11
- package/lib/hosted/browser/plugin-worker.js.map +1 -1
- package/lib/hosted/browser/worker/debug-stub.d.ts +2 -2
- package/lib/hosted/browser/worker/debug-stub.d.ts.map +1 -1
- package/lib/hosted/browser/worker/debug-stub.js +3 -3
- package/lib/hosted/browser/worker/debug-stub.js.map +1 -1
- package/lib/hosted/browser/worker/worker-env-ext.d.ts +1 -2
- package/lib/hosted/browser/worker/worker-env-ext.d.ts.map +1 -1
- package/lib/hosted/browser/worker/worker-env-ext.js +10 -4
- package/lib/hosted/browser/worker/worker-env-ext.js.map +1 -1
- package/lib/hosted/browser/worker/worker-main.js +20 -32
- package/lib/hosted/browser/worker/worker-main.js.map +1 -1
- package/lib/hosted/browser/worker/worker-plugin-module.d.ts +5 -0
- package/lib/hosted/browser/worker/worker-plugin-module.d.ts.map +1 -0
- package/lib/hosted/browser/worker/worker-plugin-module.js +78 -0
- package/lib/hosted/browser/worker/worker-plugin-module.js.map +1 -0
- package/lib/hosted/common/hosted-plugin.d.ts +97 -0
- package/lib/hosted/common/hosted-plugin.d.ts.map +1 -0
- package/lib/hosted/common/hosted-plugin.js +400 -0
- package/lib/hosted/common/hosted-plugin.js.map +1 -0
- package/lib/hosted/node/hosted-plugin-cli-contribution.js +2 -7
- package/lib/hosted/node/hosted-plugin-cli-contribution.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-deployer-handler.js +14 -22
- package/lib/hosted/node/hosted-plugin-deployer-handler.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-localization-service.js +8 -16
- package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-process.d.ts +1 -1
- package/lib/hosted/node/hosted-plugin-process.d.ts.map +1 -1
- package/lib/hosted/node/hosted-plugin-process.js +16 -24
- package/lib/hosted/node/hosted-plugin-process.js.map +1 -1
- package/lib/hosted/node/hosted-plugin.js +12 -20
- package/lib/hosted/node/hosted-plugin.js.map +1 -1
- package/lib/hosted/node/metadata-scanner.js +6 -17
- package/lib/hosted/node/metadata-scanner.js.map +1 -1
- package/lib/hosted/node/plugin-ext-hosted-backend-module.d.ts.map +1 -1
- package/lib/hosted/node/plugin-ext-hosted-backend-module.js +2 -0
- package/lib/hosted/node/plugin-ext-hosted-backend-module.js.map +1 -1
- package/lib/hosted/node/plugin-host-module.d.ts +5 -0
- package/lib/hosted/node/plugin-host-module.d.ts.map +1 -0
- package/lib/hosted/node/plugin-host-module.js +68 -0
- package/lib/hosted/node/plugin-host-module.js.map +1 -0
- package/lib/hosted/node/plugin-host-rpc.d.ts +93 -7
- package/lib/hosted/node/plugin-host-rpc.d.ts.map +1 -1
- package/lib/hosted/node/plugin-host-rpc.js +191 -53
- package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
- package/lib/hosted/node/plugin-host.js +6 -5
- package/lib/hosted/node/plugin-host.js.map +1 -1
- package/lib/hosted/node/plugin-language-pack-service.js +2 -7
- package/lib/hosted/node/plugin-language-pack-service.js.map +1 -1
- package/lib/hosted/node/plugin-reader.d.ts.map +1 -1
- package/lib/hosted/node/plugin-reader.js +11 -16
- package/lib/hosted/node/plugin-reader.js.map +1 -1
- package/lib/hosted/node/plugin-service.d.ts +8 -0
- package/lib/hosted/node/plugin-service.d.ts.map +1 -1
- package/lib/hosted/node/plugin-service.js +34 -35
- package/lib/hosted/node/plugin-service.js.map +1 -1
- package/lib/hosted/node/scanners/file-plugin-uri-factory.js +3 -8
- package/lib/hosted/node/scanners/file-plugin-uri-factory.js.map +1 -1
- package/lib/hosted/node/scanners/grammars-reader.js +2 -7
- package/lib/hosted/node/scanners/grammars-reader.js.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.d.ts +17 -3
- package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.js +58 -31
- package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
- package/lib/hosted/node-electron/scanner-theia-electron.js +2 -7
- package/lib/hosted/node-electron/scanner-theia-electron.js.map +1 -1
- package/lib/main/browser/authentication-main.d.ts.map +1 -1
- package/lib/main/browser/authentication-main.js +3 -1
- package/lib/main/browser/authentication-main.js.map +1 -1
- package/lib/main/browser/command-registry-main.d.ts +1 -0
- package/lib/main/browser/command-registry-main.d.ts.map +1 -1
- package/lib/main/browser/command-registry-main.js +6 -1
- package/lib/main/browser/command-registry-main.js.map +1 -1
- package/lib/main/browser/commands.js +5 -16
- package/lib/main/browser/commands.js.map +1 -1
- package/lib/main/browser/comments/comments-context-key-service.js +8 -16
- package/lib/main/browser/comments/comments-context-key-service.js.map +1 -1
- package/lib/main/browser/comments/comments-contribution.d.ts.map +1 -1
- package/lib/main/browser/comments/comments-contribution.js +17 -25
- package/lib/main/browser/comments/comments-contribution.js.map +1 -1
- package/lib/main/browser/comments/comments-decorator.js +3 -11
- package/lib/main/browser/comments/comments-decorator.js.map +1 -1
- package/lib/main/browser/comments/comments-main.js +2 -2
- package/lib/main/browser/comments/comments-main.js.map +1 -1
- package/lib/main/browser/comments/comments-service.js +2 -7
- package/lib/main/browser/comments/comments-service.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-contribution.js +4 -12
- package/lib/main/browser/custom-editors/custom-editor-contribution.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.js +7 -18
- package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-service.js +2 -7
- package/lib/main/browser/custom-editors/custom-editor-service.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.js +15 -21
- package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.js +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
- package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +18 -26
- package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js.map +1 -1
- package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts +2 -2
- package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts.map +1 -1
- package/lib/main/browser/data-transfer/data-transfer-type-converters.js +2 -4
- package/lib/main/browser/data-transfer/data-transfer-type-converters.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-service.js +10 -18
- package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js +8 -16
- package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js.map +1 -1
- package/lib/main/browser/dialogs/modal-notification.js +3 -11
- package/lib/main/browser/dialogs/modal-notification.js.map +1 -1
- package/lib/main/browser/documents-main.d.ts +2 -1
- package/lib/main/browser/documents-main.d.ts.map +1 -1
- package/lib/main/browser/documents-main.js +2 -1
- package/lib/main/browser/documents-main.js.map +1 -1
- package/lib/main/browser/editors-and-documents-main.d.ts +5 -1
- package/lib/main/browser/editors-and-documents-main.d.ts.map +1 -1
- package/lib/main/browser/editors-and-documents-main.js +22 -3
- package/lib/main/browser/editors-and-documents-main.js.map +1 -1
- package/lib/main/browser/env-main.d.ts +1 -10
- package/lib/main/browser/env-main.d.ts.map +1 -1
- package/lib/main/browser/env-main.js +2 -21
- package/lib/main/browser/env-main.js.map +1 -1
- package/lib/main/browser/file-system-main-impl.d.ts +2 -1
- package/lib/main/browser/file-system-main-impl.d.ts.map +1 -1
- package/lib/main/browser/file-system-main-impl.js +5 -3
- package/lib/main/browser/file-system-main-impl.js.map +1 -1
- package/lib/main/browser/keybindings/keybindings-contribution-handler.js +4 -12
- package/lib/main/browser/keybindings/keybindings-contribution-handler.js.map +1 -1
- package/lib/main/browser/languages-main.d.ts +2 -2
- package/lib/main/browser/languages-main.d.ts.map +1 -1
- package/lib/main/browser/languages-main.js +19 -28
- package/lib/main/browser/languages-main.js.map +1 -1
- package/lib/main/browser/main-context.d.ts.map +1 -1
- package/lib/main/browser/main-context.js +5 -13
- package/lib/main/browser/main-context.js.map +1 -1
- package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
- package/lib/main/browser/menus/menus-contribution-handler.js +29 -34
- package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
- package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts.map +1 -1
- package/lib/main/browser/menus/plugin-menu-command-adapter.js +20 -25
- package/lib/main/browser/menus/plugin-menu-command-adapter.js.map +1 -1
- package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts +2 -2
- package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts.map +1 -1
- package/lib/main/browser/menus/vscode-theia-menu-mappings.js +11 -9
- package/lib/main/browser/menus/vscode-theia-menu-mappings.js.map +1 -1
- package/lib/main/browser/message-registry-main.d.ts +6 -4
- package/lib/main/browser/message-registry-main.d.ts.map +1 -1
- package/lib/main/browser/message-registry-main.js +7 -19
- package/lib/main/browser/message-registry-main.js.map +1 -1
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts +0 -1
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts.map +1 -1
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js +5 -7
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js.map +1 -1
- package/lib/main/browser/notebooks/notebook-documents-main.d.ts +11 -5
- package/lib/main/browser/notebooks/notebook-documents-main.d.ts.map +1 -1
- package/lib/main/browser/notebooks/notebook-documents-main.js +11 -0
- package/lib/main/browser/notebooks/notebook-documents-main.js.map +1 -1
- package/lib/main/browser/notebooks/notebook-kernels-main.d.ts +1 -0
- package/lib/main/browser/notebooks/notebook-kernels-main.d.ts.map +1 -1
- package/lib/main/browser/notebooks/notebook-kernels-main.js +57 -14
- package/lib/main/browser/notebooks/notebook-kernels-main.js.map +1 -1
- package/lib/main/browser/notebooks/notebooks-main.d.ts +12 -10
- package/lib/main/browser/notebooks/notebooks-main.d.ts.map +1 -1
- package/lib/main/browser/notebooks/notebooks-main.js +36 -7
- package/lib/main/browser/notebooks/notebooks-main.js.map +1 -1
- package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts +8 -2
- package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts.map +1 -1
- package/lib/main/browser/notebooks/renderers/cell-output-webview.js +120 -68
- package/lib/main/browser/notebooks/renderers/cell-output-webview.js.map +1 -1
- package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts +1 -0
- package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts.map +1 -1
- package/lib/main/browser/notebooks/renderers/output-webview-internal.js +103 -15
- package/lib/main/browser/notebooks/renderers/output-webview-internal.js.map +1 -1
- package/lib/main/browser/notebooks/renderers/webview-communication.d.ts +12 -3
- package/lib/main/browser/notebooks/renderers/webview-communication.d.ts.map +1 -1
- package/lib/main/browser/notification-main.d.ts +2 -14
- package/lib/main/browser/notification-main.d.ts.map +1 -1
- package/lib/main/browser/notification-main.js +3 -52
- package/lib/main/browser/notification-main.js.map +1 -1
- package/lib/main/browser/output-channel-registry-main.js +4 -12
- package/lib/main/browser/output-channel-registry-main.js.map +1 -1
- package/lib/main/browser/plugin-authentication-service.js +3 -11
- package/lib/main/browser/plugin-authentication-service.js.map +1 -1
- package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
- package/lib/main/browser/plugin-contribution-handler.js +66 -69
- package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
- package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
- package/lib/main/browser/plugin-ext-frontend-module.js +6 -1
- package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
- package/lib/main/browser/plugin-ext-widget.js +11 -19
- package/lib/main/browser/plugin-ext-widget.js.map +1 -1
- package/lib/main/browser/plugin-frontend-contribution.js +4 -12
- package/lib/main/browser/plugin-frontend-contribution.js.map +1 -1
- package/lib/main/browser/plugin-frontend-view-contribution.js +3 -11
- package/lib/main/browser/plugin-frontend-view-contribution.js.map +1 -1
- package/lib/main/browser/plugin-icon-service.d.ts +2 -5
- package/lib/main/browser/plugin-icon-service.d.ts.map +1 -1
- package/lib/main/browser/plugin-icon-service.js +10 -77
- package/lib/main/browser/plugin-icon-service.js.map +1 -1
- package/lib/main/browser/plugin-icon-theme-service.js +22 -30
- package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
- package/lib/main/browser/plugin-shared-style.js +8 -16
- package/lib/main/browser/plugin-shared-style.js.map +1 -1
- package/lib/main/browser/plugin-terminal-registry.js +2 -7
- package/lib/main/browser/plugin-terminal-registry.js.map +1 -1
- package/lib/main/browser/quick-open-main.d.ts +8 -7
- package/lib/main/browser/quick-open-main.d.ts.map +1 -1
- package/lib/main/browser/quick-open-main.js +57 -17
- package/lib/main/browser/quick-open-main.js.map +1 -1
- package/lib/main/browser/scm-main.js +3 -3
- package/lib/main/browser/scm-main.js.map +1 -1
- package/lib/main/browser/selection-provider-command.d.ts.map +1 -1
- package/lib/main/browser/selection-provider-command.js +5 -14
- package/lib/main/browser/selection-provider-command.js.map +1 -1
- package/lib/main/browser/terminal-main.d.ts +12 -2
- package/lib/main/browser/terminal-main.d.ts.map +1 -1
- package/lib/main/browser/terminal-main.js +39 -2
- package/lib/main/browser/terminal-main.js.map +1 -1
- package/lib/main/browser/test-main.d.ts +3 -1
- package/lib/main/browser/test-main.d.ts.map +1 -1
- package/lib/main/browser/test-main.js +29 -30
- package/lib/main/browser/test-main.js.map +1 -1
- package/lib/main/browser/text-editor-main.d.ts.map +1 -1
- package/lib/main/browser/text-editor-main.js +6 -0
- package/lib/main/browser/text-editor-main.js.map +1 -1
- package/lib/main/browser/text-editor-model-service.js +5 -16
- package/lib/main/browser/text-editor-model-service.js.map +1 -1
- package/lib/main/browser/text-editors-main.d.ts +7 -7
- package/lib/main/browser/text-editors-main.d.ts.map +1 -1
- package/lib/main/browser/text-editors-main.js +30 -12
- package/lib/main/browser/text-editors-main.js.map +1 -1
- package/lib/main/browser/theme-icon-override.js +13 -19
- package/lib/main/browser/theme-icon-override.js.map +1 -1
- package/lib/main/browser/view/dnd-file-content-store.js +2 -7
- package/lib/main/browser/view/dnd-file-content-store.js.map +1 -1
- package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +8 -16
- package/lib/main/browser/view/plugin-tree-view-node-label-provider.js.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.d.ts +2 -0
- package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.js +53 -45
- package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
- package/lib/main/browser/view/plugin-view-widget.d.ts.map +1 -1
- package/lib/main/browser/view/plugin-view-widget.js +16 -25
- package/lib/main/browser/view/plugin-view-widget.js.map +1 -1
- package/lib/main/browser/view/tree-view-decorator-service.js +6 -17
- package/lib/main/browser/view/tree-view-decorator-service.js.map +1 -1
- package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
- package/lib/main/browser/view/tree-view-widget.js +41 -50
- package/lib/main/browser/view/tree-view-widget.js.map +1 -1
- package/lib/main/browser/view/view-context-key-service.js +8 -16
- package/lib/main/browser/view/view-context-key-service.js.map +1 -1
- package/lib/main/browser/view-column-service.js +4 -15
- package/lib/main/browser/view-column-service.js.map +1 -1
- package/lib/main/browser/webview/webview-context-keys.d.ts +5 -1
- package/lib/main/browser/webview/webview-context-keys.d.ts.map +1 -1
- package/lib/main/browser/webview/webview-context-keys.js +23 -22
- package/lib/main/browser/webview/webview-context-keys.js.map +1 -1
- package/lib/main/browser/webview/webview-environment.js +8 -16
- package/lib/main/browser/webview/webview-environment.js.map +1 -1
- package/lib/main/browser/webview/webview-frontend-security-warnings.js +8 -16
- package/lib/main/browser/webview/webview-frontend-security-warnings.js.map +1 -1
- package/lib/main/browser/webview/webview-resource-cache.js +3 -11
- package/lib/main/browser/webview/webview-resource-cache.js.map +1 -1
- package/lib/main/browser/webview/webview-secondary-window-support.d.ts +8 -0
- package/lib/main/browser/webview/webview-secondary-window-support.d.ts.map +1 -0
- package/lib/main/browser/webview/webview-secondary-window-support.js +52 -0
- package/lib/main/browser/webview/webview-secondary-window-support.js.map +1 -0
- package/lib/main/browser/webview/webview-theme-data-provider.js +14 -22
- package/lib/main/browser/webview/webview-theme-data-provider.js.map +1 -1
- package/lib/main/browser/webview/webview-widget-factory.d.ts.map +1 -1
- package/lib/main/browser/webview/webview-widget-factory.js +2 -1
- package/lib/main/browser/webview/webview-widget-factory.js.map +1 -1
- package/lib/main/browser/webview/webview.d.ts +1 -0
- package/lib/main/browser/webview/webview.d.ts.map +1 -1
- package/lib/main/browser/webview/webview.js +38 -45
- package/lib/main/browser/webview/webview.js.map +1 -1
- package/lib/main/browser/webview-views/webview-views-main.js +3 -11
- package/lib/main/browser/webview-views/webview-views-main.js.map +1 -1
- package/lib/main/browser/webviews-main.d.ts.map +1 -1
- package/lib/main/browser/webviews-main.js +7 -2
- package/lib/main/browser/webviews-main.js.map +1 -1
- package/lib/main/browser/workspace-main.js +2 -7
- package/lib/main/browser/workspace-main.js.map +1 -1
- package/lib/main/common/basic-message-registry-main.d.ts +14 -0
- package/lib/main/common/basic-message-registry-main.d.ts.map +1 -0
- package/lib/main/common/basic-message-registry-main.js +50 -0
- package/lib/main/common/basic-message-registry-main.js.map +1 -0
- package/lib/main/common/basic-notification-main.d.ts +19 -0
- package/lib/main/common/basic-notification-main.d.ts.map +1 -0
- package/lib/main/common/basic-notification-main.js +75 -0
- package/lib/main/common/basic-notification-main.js.map +1 -0
- package/lib/main/common/env-main.d.ts +11 -0
- package/lib/main/common/env-main.d.ts.map +1 -0
- package/lib/main/common/env-main.js +40 -0
- package/lib/main/common/env-main.js.map +1 -0
- package/lib/main/common/plugin-theia-environment.js +4 -12
- package/lib/main/common/plugin-theia-environment.js.map +1 -1
- package/lib/main/node/errors.spec.js +2 -2
- package/lib/main/node/errors.spec.js.map +1 -1
- package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts +8 -3
- package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts.map +1 -1
- package/lib/main/node/handlers/plugin-theia-directory-handler.js +42 -32
- package/lib/main/node/handlers/plugin-theia-directory-handler.js.map +1 -1
- package/lib/main/node/handlers/plugin-theia-file-handler.js +6 -14
- package/lib/main/node/handlers/plugin-theia-file-handler.js.map +1 -1
- package/lib/main/node/paths/plugin-paths-service.js +10 -18
- package/lib/main/node/paths/plugin-paths-service.js.map +1 -1
- package/lib/main/node/plugin-cli-contribution.js +2 -7
- package/lib/main/node/plugin-cli-contribution.js.map +1 -1
- package/lib/main/node/plugin-deployer-contribution.js +6 -14
- package/lib/main/node/plugin-deployer-contribution.js.map +1 -1
- package/lib/main/node/plugin-deployer-impl.d.ts.map +1 -1
- package/lib/main/node/plugin-deployer-impl.js +23 -27
- package/lib/main/node/plugin-deployer-impl.js.map +1 -1
- package/lib/main/node/plugin-deployer-proxy-entry-impl.js +3 -11
- package/lib/main/node/plugin-deployer-proxy-entry-impl.js.map +1 -1
- package/lib/main/node/plugin-github-resolver.js +5 -13
- package/lib/main/node/plugin-github-resolver.js.map +1 -1
- package/lib/main/node/plugin-http-resolver.js +5 -13
- package/lib/main/node/plugin-http-resolver.js.map +1 -1
- package/lib/main/node/plugin-localization-server.js +4 -12
- package/lib/main/node/plugin-localization-server.js.map +1 -1
- package/lib/main/node/plugin-mgmt-cli-contribution.js +4 -12
- package/lib/main/node/plugin-mgmt-cli-contribution.js.map +1 -1
- package/lib/main/node/plugin-server-handler.js +6 -14
- package/lib/main/node/plugin-server-handler.js.map +1 -1
- package/lib/main/node/plugin-service.js +10 -18
- package/lib/main/node/plugin-service.js.map +1 -1
- package/lib/main/node/plugin-theia-deployer-participant.js +4 -12
- package/lib/main/node/plugin-theia-deployer-participant.js.map +1 -1
- package/lib/main/node/plugin-uninstallation-manager.js +2 -7
- package/lib/main/node/plugin-uninstallation-manager.js.map +1 -1
- package/lib/main/node/plugins-key-value-storage.js +13 -21
- package/lib/main/node/plugins-key-value-storage.js.map +1 -1
- package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js +2 -7
- package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js.map +1 -1
- package/lib/main/node/resolvers/local-plugin-deployer-resolver.js +2 -7
- package/lib/main/node/resolvers/local-plugin-deployer-resolver.js.map +1 -1
- package/lib/main/node/webview-backend-security-warnings.js +2 -7
- package/lib/main/node/webview-backend-security-warnings.js.map +1 -1
- package/lib/plugin/clipboard-ext.d.ts +3 -2
- package/lib/plugin/clipboard-ext.d.ts.map +1 -1
- package/lib/plugin/clipboard-ext.js +20 -4
- package/lib/plugin/clipboard-ext.js.map +1 -1
- package/lib/plugin/custom-editors.js +1 -1
- package/lib/plugin/custom-editors.js.map +1 -1
- package/lib/plugin/debug/debug-ext.d.ts +3 -1
- package/lib/plugin/debug/debug-ext.d.ts.map +1 -1
- package/lib/plugin/debug/debug-ext.js +25 -6
- package/lib/plugin/debug/debug-ext.js.map +1 -1
- package/lib/plugin/dialogs.js +1 -1
- package/lib/plugin/dialogs.js.map +1 -1
- package/lib/plugin/documents.js +2 -2
- package/lib/plugin/documents.js.map +1 -1
- package/lib/plugin/editors-and-documents.d.ts +1 -2
- package/lib/plugin/editors-and-documents.d.ts.map +1 -1
- package/lib/plugin/editors-and-documents.js +13 -4
- package/lib/plugin/editors-and-documents.js.map +1 -1
- package/lib/plugin/env.d.ts +6 -2
- package/lib/plugin/env.d.ts.map +1 -1
- package/lib/plugin/env.js +32 -7
- package/lib/plugin/env.js.map +1 -1
- package/lib/plugin/file-system-ext-impl.d.ts +2 -1
- package/lib/plugin/file-system-ext-impl.d.ts.map +1 -1
- package/lib/plugin/file-system-ext-impl.js +13 -1
- package/lib/plugin/file-system-ext-impl.js.map +1 -1
- package/lib/plugin/known-commands.d.ts.map +1 -1
- package/lib/plugin/known-commands.js +1 -0
- package/lib/plugin/known-commands.js.map +1 -1
- package/lib/plugin/languages/diagnostics.js +2 -2
- package/lib/plugin/languages/diagnostics.js.map +1 -1
- package/lib/plugin/languages/link-provider.d.ts.map +1 -1
- package/lib/plugin/languages/link-provider.js +3 -1
- package/lib/plugin/languages/link-provider.js.map +1 -1
- package/lib/plugin/localization-ext.d.ts +3 -2
- package/lib/plugin/localization-ext.d.ts.map +1 -1
- package/lib/plugin/localization-ext.js +22 -4
- package/lib/plugin/localization-ext.js.map +1 -1
- package/lib/plugin/markdown-string.d.ts +3 -3
- package/lib/plugin/markdown-string.d.ts.map +1 -1
- package/lib/plugin/markdown-string.js +17 -36
- package/lib/plugin/markdown-string.js.map +1 -1
- package/lib/plugin/message-registry.d.ts +2 -1
- package/lib/plugin/message-registry.d.ts.map +1 -1
- package/lib/plugin/message-registry.js +20 -4
- package/lib/plugin/message-registry.js.map +1 -1
- package/lib/plugin/node/debug/debug.spec.js +21 -1
- package/lib/plugin/node/debug/debug.spec.js.map +1 -1
- package/lib/plugin/node/env-node-ext.d.ts +1 -6
- package/lib/plugin/node/env-node-ext.d.ts.map +1 -1
- package/lib/plugin/node/env-node-ext.js +12 -12
- package/lib/plugin/node/env-node-ext.js.map +1 -1
- package/lib/plugin/node/plugin-container-module.d.ts +75 -0
- package/lib/plugin/node/plugin-container-module.d.ts.map +1 -0
- package/lib/plugin/node/plugin-container-module.js +115 -0
- package/lib/plugin/node/plugin-container-module.js.map +1 -0
- package/lib/plugin/notebook/notebook-document.d.ts.map +1 -1
- package/lib/plugin/notebook/notebook-document.js +16 -0
- package/lib/plugin/notebook/notebook-document.js.map +1 -1
- package/lib/plugin/notebook/notebook-kernels.d.ts +9 -7
- package/lib/plugin/notebook/notebook-kernels.d.ts.map +1 -1
- package/lib/plugin/notebook/notebook-kernels.js +38 -28
- package/lib/plugin/notebook/notebook-kernels.js.map +1 -1
- package/lib/plugin/notebook/notebook-renderers.d.ts.map +1 -1
- package/lib/plugin/notebook/notebook-renderers.js.map +1 -1
- package/lib/plugin/notebook/notebooks.d.ts +1 -0
- package/lib/plugin/notebook/notebooks.d.ts.map +1 -1
- package/lib/plugin/notebook/notebooks.js +37 -1
- package/lib/plugin/notebook/notebooks.js.map +1 -1
- package/lib/plugin/plugin-context.d.ts.map +1 -1
- package/lib/plugin/plugin-context.js +32 -23
- package/lib/plugin/plugin-context.js.map +1 -1
- package/lib/plugin/plugin-manager.d.ts +26 -17
- package/lib/plugin/plugin-manager.d.ts.map +1 -1
- package/lib/plugin/plugin-manager.js +99 -37
- package/lib/plugin/plugin-manager.js.map +1 -1
- package/lib/plugin/plugin-storage.d.ts +11 -3
- package/lib/plugin/plugin-storage.d.ts.map +1 -1
- package/lib/plugin/plugin-storage.js +14 -5
- package/lib/plugin/plugin-storage.js.map +1 -1
- package/lib/plugin/preference-registry.d.ts +3 -2
- package/lib/plugin/preference-registry.d.ts.map +1 -1
- package/lib/plugin/preference-registry.js +33 -11
- package/lib/plugin/preference-registry.js.map +1 -1
- package/lib/plugin/preference-registry.spec.js +8 -1
- package/lib/plugin/preference-registry.spec.js.map +1 -1
- package/lib/plugin/quick-open.d.ts +2 -9
- package/lib/plugin/quick-open.d.ts.map +1 -1
- package/lib/plugin/quick-open.js +9 -26
- package/lib/plugin/quick-open.js.map +1 -1
- package/lib/plugin/secrets-ext.d.ts +16 -7
- package/lib/plugin/secrets-ext.d.ts.map +1 -1
- package/lib/plugin/secrets-ext.js +12 -3
- package/lib/plugin/secrets-ext.js.map +1 -1
- package/lib/plugin/terminal-ext.d.ts +4 -1
- package/lib/plugin/terminal-ext.d.ts.map +1 -1
- package/lib/plugin/terminal-ext.js +36 -8
- package/lib/plugin/terminal-ext.js.map +1 -1
- package/lib/plugin/test-item.js +17 -25
- package/lib/plugin/test-item.js.map +1 -1
- package/lib/plugin/tests.d.ts +8 -1
- package/lib/plugin/tests.d.ts.map +1 -1
- package/lib/plugin/tests.js +35 -21
- package/lib/plugin/tests.js.map +1 -1
- package/lib/plugin/text-editors.d.ts +2 -0
- package/lib/plugin/text-editors.d.ts.map +1 -1
- package/lib/plugin/text-editors.js +6 -0
- package/lib/plugin/text-editors.js.map +1 -1
- package/lib/plugin/type-converters.d.ts +10 -1
- package/lib/plugin/type-converters.d.ts.map +1 -1
- package/lib/plugin/type-converters.js +52 -12
- package/lib/plugin/type-converters.js.map +1 -1
- package/lib/plugin/types-impl.d.ts +26 -5
- package/lib/plugin/types-impl.d.ts.map +1 -1
- package/lib/plugin/types-impl.js +188 -184
- package/lib/plugin/types-impl.js.map +1 -1
- package/lib/plugin/webview-views.d.ts.map +1 -1
- package/lib/plugin/webview-views.js +2 -1
- package/lib/plugin/webview-views.js.map +1 -1
- package/lib/plugin/webviews.d.ts +23 -6
- package/lib/plugin/webviews.d.ts.map +1 -1
- package/lib/plugin/webviews.js +64 -15
- package/lib/plugin/webviews.js.map +1 -1
- package/lib/plugin/workspace.d.ts +4 -3
- package/lib/plugin/workspace.d.ts.map +1 -1
- package/lib/plugin/workspace.js +32 -6
- package/lib/plugin/workspace.js.map +1 -1
- package/package.json +31 -31
- package/src/common/plugin-api-rpc-model.ts +1 -1
- package/src/common/plugin-api-rpc.ts +75 -26
- package/src/common/plugin-ext-api-contribution.ts +38 -5
- package/src/common/plugin-protocol.ts +19 -3
- package/src/common/proxy-handler.ts +14 -1
- package/src/common/rpc-protocol.ts +41 -3
- package/src/common/uri-components.ts +1 -5
- package/src/hosted/browser/hosted-plugin.ts +49 -338
- package/src/hosted/browser/worker/debug-stub.ts +4 -3
- package/src/hosted/browser/worker/worker-env-ext.ts +5 -4
- package/src/hosted/browser/worker/worker-main.ts +103 -115
- package/src/hosted/browser/worker/worker-plugin-module.ts +80 -0
- package/src/hosted/common/hosted-plugin.ts +456 -0
- package/src/hosted/node/hosted-plugin-deployer-handler.ts +2 -2
- package/src/hosted/node/hosted-plugin-process.ts +4 -4
- package/src/hosted/node/plugin-ext-hosted-backend-module.ts +3 -1
- package/src/hosted/node/plugin-host-module.ts +69 -0
- package/src/hosted/node/plugin-host-rpc.ts +232 -73
- package/src/hosted/node/plugin-host.ts +9 -7
- package/src/hosted/node/plugin-reader.ts +3 -0
- package/src/hosted/node/plugin-service.ts +21 -4
- package/src/hosted/node/scanners/file-plugin-uri-factory.ts +1 -1
- package/src/hosted/node/scanners/scanner-theia.ts +54 -14
- package/src/main/browser/authentication-main.ts +3 -1
- package/src/main/browser/command-registry-main.ts +7 -0
- package/src/main/browser/comments/comments-contribution.ts +7 -3
- package/src/main/browser/comments/comments-main.ts +2 -2
- package/src/main/browser/custom-editors/custom-editor-opener.tsx +2 -2
- package/src/main/browser/custom-editors/custom-editor-widget.ts +3 -1
- package/src/main/browser/custom-editors/custom-editors-main.ts +1 -1
- package/src/main/browser/data-transfer/data-transfer-type-converters.ts +4 -6
- package/src/main/browser/documents-main.ts +4 -0
- package/src/main/browser/editors-and-documents-main.ts +27 -5
- package/src/main/browser/env-main.ts +1 -28
- package/src/main/browser/file-system-main-impl.ts +9 -5
- package/src/main/browser/languages-main.ts +9 -6
- package/src/main/browser/main-context.ts +7 -13
- package/src/main/browser/menus/menus-contribution-handler.ts +9 -4
- package/src/main/browser/menus/plugin-menu-command-adapter.ts +4 -1
- package/src/main/browser/menus/vscode-theia-menu-mappings.ts +10 -2
- package/src/main/browser/message-registry-main.ts +10 -23
- package/src/main/browser/notebooks/notebook-documents-and-editors-main.ts +5 -8
- package/src/main/browser/notebooks/notebook-documents-main.ts +20 -5
- package/src/main/browser/notebooks/notebook-kernels-main.ts +61 -15
- package/src/main/browser/notebooks/notebooks-main.ts +41 -12
- package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +117 -47
- package/src/main/browser/notebooks/renderers/output-webview-internal.ts +123 -15
- package/src/main/browser/notebooks/renderers/webview-communication.ts +14 -3
- package/src/main/browser/notification-main.ts +4 -64
- package/src/main/browser/plugin-contribution-handler.ts +9 -1
- package/src/main/browser/plugin-ext-frontend-module.ts +9 -2
- package/src/main/browser/plugin-icon-service.ts +8 -72
- package/src/main/browser/quick-open-main.ts +82 -30
- package/src/main/browser/scm-main.ts +1 -1
- package/src/main/browser/selection-provider-command.ts +1 -2
- package/src/main/browser/terminal-main.ts +48 -2
- package/src/main/browser/test-main.ts +11 -2
- package/src/main/browser/text-editor-main.ts +7 -1
- package/src/main/browser/text-editors-main.ts +40 -13
- package/src/main/browser/theme-icon-override.ts +13 -19
- package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +1 -1
- package/src/main/browser/view/plugin-view-registry.ts +26 -8
- package/src/main/browser/view/plugin-view-widget.ts +0 -1
- package/src/main/browser/view/tree-view-widget.tsx +2 -3
- package/src/main/browser/webview/pre/main.js +2 -2
- package/src/main/browser/webview/webview-context-keys.ts +17 -4
- package/src/main/browser/webview/webview-secondary-window-support.ts +47 -0
- package/src/main/browser/webview/webview-widget-factory.ts +2 -1
- package/src/main/browser/webview/webview.ts +2 -0
- package/src/main/browser/webviews-main.ts +7 -2
- package/src/main/common/basic-message-registry-main.ts +53 -0
- package/src/main/common/basic-notification-main.ts +86 -0
- package/src/main/common/env-main.ts +44 -0
- package/src/main/node/errors.spec.ts +2 -2
- package/src/main/node/handlers/plugin-theia-directory-handler.ts +38 -16
- package/src/main/node/handlers/plugin-theia-file-handler.ts +1 -1
- package/src/main/node/plugin-deployer-impl.ts +5 -1
- package/src/main/node/plugins-key-value-storage.ts +1 -1
- package/src/plugin/clipboard-ext.ts +9 -3
- package/src/plugin/custom-editors.ts +1 -1
- package/src/plugin/debug/debug-ext.ts +13 -4
- package/src/plugin/dialogs.ts +1 -1
- package/src/plugin/documents.ts +2 -2
- package/src/plugin/editors-and-documents.ts +5 -3
- package/src/plugin/env.ts +22 -6
- package/src/plugin/file-system-ext-impl.ts +15 -2
- package/src/plugin/known-commands.ts +1 -0
- package/src/plugin/languages/diagnostics.ts +2 -2
- package/src/plugin/languages/link-provider.ts +3 -1
- package/src/plugin/localization-ext.ts +8 -3
- package/src/plugin/markdown-string.ts +3 -3
- package/src/plugin/message-registry.ts +7 -2
- package/src/plugin/node/debug/debug.spec.ts +5 -1
- package/src/plugin/node/env-node-ext.ts +7 -12
- package/src/plugin/node/plugin-container-module.ts +165 -0
- package/src/plugin/notebook/notebook-document.ts +14 -1
- package/src/plugin/notebook/notebook-kernels.ts +45 -32
- package/src/plugin/notebook/notebook-renderers.ts +0 -1
- package/src/plugin/notebook/notebooks.ts +39 -2
- package/src/plugin/plugin-context.ts +30 -6
- package/src/plugin/plugin-manager.ts +99 -45
- package/src/plugin/plugin-storage.ts +22 -4
- package/src/plugin/preference-registry.spec.ts +6 -1
- package/src/plugin/preference-registry.ts +17 -11
- package/src/plugin/quick-open.ts +13 -28
- package/src/plugin/secrets-ext.ts +25 -5
- package/src/plugin/terminal-ext.ts +26 -5
- package/src/plugin/tests.ts +33 -4
- package/src/plugin/text-editors.ts +9 -2
- package/src/plugin/type-converters.ts +49 -13
- package/src/plugin/types-impl.ts +36 -7
- package/src/plugin/webview-views.ts +2 -1
- package/src/plugin/webviews.ts +51 -16
- package/src/plugin/workspace.ts +14 -4
|
@@ -15,15 +15,21 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import * as theia from '@theia/plugin';
|
|
18
|
+
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
|
|
18
19
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
19
20
|
import { PLUGIN_RPC_CONTEXT, ClipboardMain } from '../common';
|
|
20
21
|
|
|
22
|
+
@injectable()
|
|
21
23
|
export class ClipboardExt implements theia.Clipboard {
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
@inject(RPCProtocol)
|
|
26
|
+
protected readonly rpc: RPCProtocol;
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
protected proxy: ClipboardMain;
|
|
29
|
+
|
|
30
|
+
@postConstruct()
|
|
31
|
+
initialize(): void {
|
|
32
|
+
this.proxy = this.rpc.getProxy(PLUGIN_RPC_CONTEXT.CLIPBOARD_MAIN);
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
readText(): Promise<string> {
|
|
@@ -129,7 +129,7 @@ export class CustomEditorsExtImpl implements CustomEditorsExt {
|
|
|
129
129
|
if (!entry) {
|
|
130
130
|
throw new Error(`No provider found for '${viewType}'`);
|
|
131
131
|
}
|
|
132
|
-
const panel = this.webviewExt.createWebviewPanel(viewType, title, {}, options, entry.plugin, handler);
|
|
132
|
+
const panel = this.webviewExt.createWebviewPanel(viewType, title, {}, options, entry.plugin, handler, false);
|
|
133
133
|
const webviewOptions = WebviewImpl.toWebviewOptions(options, this.workspace, entry.plugin);
|
|
134
134
|
await this.proxy.$createCustomEditorPanel(handler, title, widgetOpenerOptions, webviewOptions);
|
|
135
135
|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
//
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
|
+
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
|
|
16
17
|
import { Emitter } from '@theia/core/lib/common/event';
|
|
17
18
|
import { Path } from '@theia/core/lib/common/path';
|
|
18
19
|
import * as theia from '@theia/plugin';
|
|
@@ -27,7 +28,7 @@ import { DEBUG_SCHEME, SCHEME_PATTERN } from '@theia/debug/lib/common/debug-uri-
|
|
|
27
28
|
import { Disposable, Breakpoint as BreakpointExt, SourceBreakpoint, FunctionBreakpoint, Location, Range, URI as URIImpl } from '../types-impl';
|
|
28
29
|
import { PluginDebugAdapterSession } from './plugin-debug-adapter-session';
|
|
29
30
|
import { PluginDebugAdapterTracker } from './plugin-debug-adapter-tracker';
|
|
30
|
-
import
|
|
31
|
+
import { generateUuid } from '@theia/core/lib/common/uuid';
|
|
31
32
|
import { DebugAdapter } from '@theia/debug/lib/common/debug-model';
|
|
32
33
|
import { PluginDebugAdapterCreator } from './plugin-debug-adapter-creator';
|
|
33
34
|
import { NodeDebugAdapterCreator } from '../node/debug/plugin-node-debug-adapter-creator';
|
|
@@ -43,7 +44,11 @@ interface ConfigurationProviderRecord {
|
|
|
43
44
|
|
|
44
45
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
45
46
|
|
|
47
|
+
@injectable()
|
|
46
48
|
export class DebugExtImpl implements DebugExt {
|
|
49
|
+
@inject(RPCProtocol)
|
|
50
|
+
protected readonly rpc: RPCProtocol;
|
|
51
|
+
|
|
47
52
|
// debug sessions by sessionId
|
|
48
53
|
private sessions = new Map<string, PluginDebugAdapterSession>();
|
|
49
54
|
private configurationProviderHandleGenerator: number;
|
|
@@ -83,8 +88,7 @@ export class DebugExtImpl implements DebugExt {
|
|
|
83
88
|
return [...this._breakpoints.values()];
|
|
84
89
|
}
|
|
85
90
|
|
|
86
|
-
constructor(
|
|
87
|
-
this.proxy = rpc.getProxy(Ext.DEBUG_MAIN);
|
|
91
|
+
constructor() {
|
|
88
92
|
this.activeDebugConsole = {
|
|
89
93
|
append: (value: string) => this.proxy.$appendToDebugConsole(value),
|
|
90
94
|
appendLine: (value: string) => this.proxy.$appendLineToDebugConsole(value)
|
|
@@ -93,6 +97,11 @@ export class DebugExtImpl implements DebugExt {
|
|
|
93
97
|
this.configurationProviders = [];
|
|
94
98
|
}
|
|
95
99
|
|
|
100
|
+
@postConstruct()
|
|
101
|
+
initialize(): void {
|
|
102
|
+
this.proxy = this.rpc.getProxy(Ext.DEBUG_MAIN);
|
|
103
|
+
}
|
|
104
|
+
|
|
96
105
|
/**
|
|
97
106
|
* Sets dependencies.
|
|
98
107
|
*/
|
|
@@ -336,7 +345,7 @@ export class DebugExtImpl implements DebugExt {
|
|
|
336
345
|
}
|
|
337
346
|
|
|
338
347
|
async $createDebugSession(debugConfiguration: DebugConfiguration, workspaceFolderUri: string | undefined): Promise<string> {
|
|
339
|
-
const sessionId =
|
|
348
|
+
const sessionId = generateUuid();
|
|
340
349
|
|
|
341
350
|
const parentSession = debugConfiguration.parentSessionId ? this.sessions.get(debugConfiguration.parentSessionId) : undefined;
|
|
342
351
|
const theiaSession: theia.DebugSession = {
|
package/src/plugin/dialogs.ts
CHANGED
package/src/plugin/documents.ts
CHANGED
|
@@ -158,7 +158,7 @@ export class DocumentsExtImpl implements DocumentsExt {
|
|
|
158
158
|
const uriString = uri.toString();
|
|
159
159
|
const data = this.editorsAndDocuments.getDocument(uriString);
|
|
160
160
|
if (!data) {
|
|
161
|
-
throw new Error('unknown document');
|
|
161
|
+
throw new Error('unknown document: ' + uriString);
|
|
162
162
|
}
|
|
163
163
|
data.acceptIsDirty(isDirty);
|
|
164
164
|
this._onDidChangeDocument.fire({
|
|
@@ -172,7 +172,7 @@ export class DocumentsExtImpl implements DocumentsExt {
|
|
|
172
172
|
const uriString = uri.toString();
|
|
173
173
|
const data = this.editorsAndDocuments.getDocument(uriString);
|
|
174
174
|
if (!data) {
|
|
175
|
-
throw new Error('unknown document');
|
|
175
|
+
throw new Error('unknown document: ' + uriString);
|
|
176
176
|
}
|
|
177
177
|
data.acceptIsDirty(isDirty);
|
|
178
178
|
data.onEvents(e);
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
17
18
|
import { EditorsAndDocumentsExt, EditorsAndDocumentsDelta, PLUGIN_RPC_CONTEXT } from '../common/plugin-api-rpc';
|
|
18
19
|
import { TextEditorExt } from './text-editor';
|
|
19
20
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
@@ -24,7 +25,11 @@ import * as Converter from './type-converters';
|
|
|
24
25
|
import { dispose } from '../common/disposable-util';
|
|
25
26
|
import { URI } from './types-impl';
|
|
26
27
|
|
|
28
|
+
@injectable()
|
|
27
29
|
export class EditorsAndDocumentsExtImpl implements EditorsAndDocumentsExt {
|
|
30
|
+
@inject(RPCProtocol)
|
|
31
|
+
protected readonly rpc: RPCProtocol;
|
|
32
|
+
|
|
28
33
|
private activeEditorId: string | null = null;
|
|
29
34
|
|
|
30
35
|
private readonly _onDidAddDocuments = new Emitter<DocumentDataExt[]>();
|
|
@@ -40,9 +45,6 @@ export class EditorsAndDocumentsExtImpl implements EditorsAndDocumentsExt {
|
|
|
40
45
|
private readonly documents = new Map<string, DocumentDataExt>();
|
|
41
46
|
private readonly editors = new Map<string, TextEditorExt>();
|
|
42
47
|
|
|
43
|
-
constructor(private readonly rpc: RPCProtocol) {
|
|
44
|
-
}
|
|
45
|
-
|
|
46
48
|
async $acceptEditorsAndDocumentsDelta(delta: EditorsAndDocumentsDelta): Promise<void> {
|
|
47
49
|
const removedDocuments = new Array<DocumentDataExt>();
|
|
48
50
|
const addedDocuments = new Array<DocumentDataExt>();
|
package/src/plugin/env.ts
CHANGED
|
@@ -14,13 +14,18 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
|
|
17
18
|
import * as theia from '@theia/plugin';
|
|
18
19
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
19
20
|
import { EnvMain, PLUGIN_RPC_CONTEXT } from '../common/plugin-api-rpc';
|
|
20
21
|
import { QueryParameters } from '../common/env';
|
|
21
|
-
import {
|
|
22
|
+
import { generateUuid } from '@theia/core/lib/common/uuid';
|
|
22
23
|
|
|
24
|
+
@injectable()
|
|
23
25
|
export abstract class EnvExtImpl {
|
|
26
|
+
@inject(RPCProtocol)
|
|
27
|
+
protected readonly rpc: RPCProtocol;
|
|
28
|
+
|
|
24
29
|
private proxy: EnvMain;
|
|
25
30
|
private queryParameters: QueryParameters;
|
|
26
31
|
private lang: string;
|
|
@@ -29,15 +34,20 @@ export abstract class EnvExtImpl {
|
|
|
29
34
|
private envMachineId: string;
|
|
30
35
|
private envSessionId: string;
|
|
31
36
|
private host: string;
|
|
37
|
+
private applicationRoot: string;
|
|
32
38
|
private _remoteName: string | undefined;
|
|
33
39
|
|
|
34
|
-
constructor(
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
this.envMachineId = v4();
|
|
40
|
+
constructor() {
|
|
41
|
+
this.envSessionId = generateUuid();
|
|
42
|
+
this.envMachineId = generateUuid();
|
|
38
43
|
this._remoteName = undefined;
|
|
39
44
|
}
|
|
40
45
|
|
|
46
|
+
@postConstruct()
|
|
47
|
+
initialize(): void {
|
|
48
|
+
this.proxy = this.rpc.getProxy(PLUGIN_RPC_CONTEXT.ENV_MAIN);
|
|
49
|
+
}
|
|
50
|
+
|
|
41
51
|
getEnvVariable(envVarName: string): Promise<string | undefined> {
|
|
42
52
|
return this.proxy.$getEnvVariable(envVarName).then(x => {
|
|
43
53
|
if (x === null) {
|
|
@@ -75,6 +85,10 @@ export abstract class EnvExtImpl {
|
|
|
75
85
|
this.host = appHost;
|
|
76
86
|
}
|
|
77
87
|
|
|
88
|
+
setAppRoot(appRoot: string): void {
|
|
89
|
+
this.applicationRoot = appRoot;
|
|
90
|
+
}
|
|
91
|
+
|
|
78
92
|
getClientOperatingSystem(): Promise<theia.OperatingSystem> {
|
|
79
93
|
return this.proxy.$getClientOperatingSystem();
|
|
80
94
|
}
|
|
@@ -83,7 +97,9 @@ export abstract class EnvExtImpl {
|
|
|
83
97
|
return this.applicationName;
|
|
84
98
|
}
|
|
85
99
|
|
|
86
|
-
|
|
100
|
+
get appRoot(): string {
|
|
101
|
+
return this.applicationRoot;
|
|
102
|
+
}
|
|
87
103
|
|
|
88
104
|
abstract get isNewAppInstall(): boolean;
|
|
89
105
|
|
|
@@ -41,6 +41,7 @@ import { commonPrefixLength } from '@theia/core/lib/common/strings';
|
|
|
41
41
|
import { CharCode } from '@theia/core/lib/common/char-code';
|
|
42
42
|
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
43
43
|
import { Emitter } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
44
|
+
import { MarkdownString } from '../common/plugin-api-rpc-model';
|
|
44
45
|
|
|
45
46
|
type IDisposable = vscode.Disposable;
|
|
46
47
|
|
|
@@ -223,7 +224,7 @@ export class FileSystemExtImpl implements FileSystemExt {
|
|
|
223
224
|
this.onWillRegisterFileSystemProviderEmitter.dispose();
|
|
224
225
|
}
|
|
225
226
|
|
|
226
|
-
registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, options: { isCaseSensitive?: boolean, isReadonly?: boolean } = {}) {
|
|
227
|
+
registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, options: { isCaseSensitive?: boolean, isReadonly?: boolean | MarkdownString } = {}) {
|
|
227
228
|
|
|
228
229
|
if (this._usedSchemes.has(scheme)) {
|
|
229
230
|
throw new Error(`a provider for the scheme '${scheme}' is already registered`);
|
|
@@ -252,7 +253,19 @@ export class FileSystemExtImpl implements FileSystemExt {
|
|
|
252
253
|
capabilities += files.FileSystemProviderCapabilities.FileOpenReadWriteClose;
|
|
253
254
|
}
|
|
254
255
|
|
|
255
|
-
|
|
256
|
+
let readonlyMessage: MarkdownString | undefined;
|
|
257
|
+
if (options.isReadonly && MarkdownString.is(options.isReadonly)) {
|
|
258
|
+
readonlyMessage = {
|
|
259
|
+
value: options.isReadonly.value,
|
|
260
|
+
isTrusted: options.isReadonly.isTrusted,
|
|
261
|
+
supportThemeIcons: options.isReadonly.supportThemeIcons,
|
|
262
|
+
supportHtml: options.isReadonly.supportHtml,
|
|
263
|
+
baseUri: options.isReadonly.baseUri,
|
|
264
|
+
uris: options.isReadonly.uris
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
this._proxy.$registerFileSystemProvider(handle, scheme, capabilities, readonlyMessage);
|
|
256
269
|
|
|
257
270
|
const subscription = provider.onDidChangeFile(event => {
|
|
258
271
|
const mapped: IFileChangeDto[] = [];
|
|
@@ -261,6 +261,7 @@ export namespace KnownCommands {
|
|
|
261
261
|
mappings['closeReferenceSearch'] = ['closeReferenceSearch', CONVERT_VSCODE_TO_MONACO];
|
|
262
262
|
mappings['goToNextReference'] = ['goToNextReference', CONVERT_VSCODE_TO_MONACO];
|
|
263
263
|
mappings['goToPreviousReference'] = ['goToPreviousReference', CONVERT_VSCODE_TO_MONACO];
|
|
264
|
+
mappings['setContext'] = ['_setContext', CONVERT_VSCODE_TO_MONACO];
|
|
264
265
|
|
|
265
266
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
266
267
|
const CONVERT_MONACO_TO_VSCODE = (args: any | undefined) => {
|
|
@@ -22,7 +22,7 @@ import { MarkerData } from '../../common/plugin-api-rpc-model';
|
|
|
22
22
|
import { RPCProtocol } from '../../common/rpc-protocol';
|
|
23
23
|
import { PLUGIN_RPC_CONTEXT, LanguagesMain } from '../../common/plugin-api-rpc';
|
|
24
24
|
import { URI } from '@theia/core/shared/vscode-uri';
|
|
25
|
-
import {
|
|
25
|
+
import { generateUuid } from '@theia/core/lib/common/uuid';
|
|
26
26
|
|
|
27
27
|
export class DiagnosticCollection implements theia.DiagnosticCollection {
|
|
28
28
|
private static DIAGNOSTICS_PRIORITY = [
|
|
@@ -288,7 +288,7 @@ export class Diagnostics {
|
|
|
288
288
|
}
|
|
289
289
|
|
|
290
290
|
private getNextId(): string {
|
|
291
|
-
return
|
|
291
|
+
return generateUuid();
|
|
292
292
|
}
|
|
293
293
|
|
|
294
294
|
private getAllDiagnosticsForResource(uri: URI): theia.Diagnostic[] {
|
|
@@ -33,7 +33,9 @@ export class LinkProviderAdapter {
|
|
|
33
33
|
provideLinks(resource: URI, token: theia.CancellationToken): Promise<DocumentLink[] | undefined> {
|
|
34
34
|
const document = this.documents.getDocumentData(resource);
|
|
35
35
|
if (!document) {
|
|
36
|
-
|
|
36
|
+
// not all documents are replicated to the plugin host (e.g. breakpoint input)
|
|
37
|
+
console.warn(`There is no document for ${resource}`);
|
|
38
|
+
return Promise.resolve(undefined);
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
const doc = document.document;
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
18
|
|
|
19
|
+
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
|
|
19
20
|
import { nls } from '@theia/core';
|
|
20
21
|
import { Localization } from '@theia/core/lib/common/i18n/localization';
|
|
21
22
|
import { LocalizationExt, LocalizationMain, Plugin, PLUGIN_RPC_CONTEXT, StringDetails } from '../common';
|
|
@@ -23,15 +24,19 @@ import { LanguagePackBundle } from '../common/language-pack-service';
|
|
|
23
24
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
24
25
|
import { URI } from './types-impl';
|
|
25
26
|
|
|
27
|
+
@injectable()
|
|
26
28
|
export class LocalizationExtImpl implements LocalizationExt {
|
|
29
|
+
@inject(RPCProtocol)
|
|
30
|
+
protected readonly rpc: RPCProtocol;
|
|
27
31
|
|
|
28
|
-
private
|
|
32
|
+
private _proxy: LocalizationMain;
|
|
29
33
|
private currentLanguage?: string;
|
|
30
34
|
private isDefaultLanguage = true;
|
|
31
35
|
private readonly bundleCache = new Map<string, LanguagePackBundle | undefined>();
|
|
32
36
|
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
@postConstruct()
|
|
38
|
+
initialize(): void {
|
|
39
|
+
this._proxy = this.rpc.getProxy(PLUGIN_RPC_CONTEXT.LOCALIZATION_MAIN);
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
translateMessage(pluginId: string, details: StringDetails): string {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { Mutable } from '@theia/core';
|
|
18
|
-
import { MarkdownStringImpl as BaseMarkdownString, MarkdownString as MarkdownStringInterface } from '@theia/core/lib/common/markdown-rendering';
|
|
18
|
+
import { MarkdownStringImpl as BaseMarkdownString, MarkdownString as MarkdownStringInterface, MarkdownStringTrustedOptions } from '@theia/core/lib/common/markdown-rendering';
|
|
19
19
|
import * as pluginAPI from '@theia/plugin';
|
|
20
20
|
import { es5ClassCompat } from '../common/types';
|
|
21
21
|
import { URI } from './types-impl';
|
|
@@ -49,11 +49,11 @@ export class MarkdownString implements pluginAPI.MarkdownString {
|
|
|
49
49
|
this.#delegate.value = value;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
get isTrusted(): boolean | undefined {
|
|
52
|
+
get isTrusted(): boolean | MarkdownStringTrustedOptions | undefined {
|
|
53
53
|
return this.#delegate.isTrusted;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
set isTrusted(value: boolean | undefined) {
|
|
56
|
+
set isTrusted(value: boolean | MarkdownStringTrustedOptions | undefined) {
|
|
57
57
|
this.#delegate.isTrusted = value;
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -13,18 +13,23 @@
|
|
|
13
13
|
//
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
|
+
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
|
|
16
17
|
import {
|
|
17
18
|
PLUGIN_RPC_CONTEXT as Ext, MessageRegistryMain, MainMessageOptions, MainMessageType
|
|
18
19
|
} from '../common/plugin-api-rpc';
|
|
19
20
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
20
21
|
import { MessageItem, MessageOptions } from '@theia/plugin';
|
|
21
22
|
|
|
23
|
+
@injectable()
|
|
22
24
|
export class MessageRegistryExt {
|
|
25
|
+
@inject(RPCProtocol)
|
|
26
|
+
protected readonly rpc: RPCProtocol;
|
|
23
27
|
|
|
24
28
|
private proxy: MessageRegistryMain;
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
@postConstruct()
|
|
31
|
+
initialize(): void {
|
|
32
|
+
this.proxy = this.rpc.getProxy(Ext.MESSAGE_REGISTRY_MAIN);
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
async showMessage(type: MainMessageType, message: string,
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Container } from '@theia/core/shared/inversify';
|
|
16
17
|
import { DebugSession } from '@theia/plugin';
|
|
17
18
|
import * as chai from 'chai';
|
|
18
19
|
import { ProxyIdentifier, RPCProtocol } from '../../../common/rpc-protocol';
|
|
@@ -37,7 +38,10 @@ describe('Debug API', () => {
|
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
40
|
|
|
40
|
-
const
|
|
41
|
+
const container = new Container();
|
|
42
|
+
container.bind(RPCProtocol).toConstantValue(mockRPCProtocol);
|
|
43
|
+
container.bind(DebugExtImpl).toSelf().inSingletonScope();
|
|
44
|
+
const debug = container.get(DebugExtImpl);
|
|
41
45
|
|
|
42
46
|
it('should use sourceReference, path and sessionId', () => {
|
|
43
47
|
const source = {
|
|
@@ -14,27 +14,29 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { injectable } from '@theia/core/shared/inversify';
|
|
17
18
|
import * as mac from 'macaddress';
|
|
18
19
|
import { EnvExtImpl } from '../env';
|
|
19
|
-
import { RPCProtocol } from '../../common/rpc-protocol';
|
|
20
20
|
import { createHash } from 'crypto';
|
|
21
|
-
import {
|
|
21
|
+
import { generateUuid } from '@theia/core/lib/common/uuid';
|
|
22
22
|
import fs = require('fs');
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Provides machineId using mac address. It's only possible on node side
|
|
26
26
|
* Extending the common class
|
|
27
27
|
*/
|
|
28
|
+
@injectable()
|
|
28
29
|
export class EnvNodeExtImpl extends EnvExtImpl {
|
|
29
30
|
|
|
30
31
|
private macMachineId: string;
|
|
31
32
|
private _isNewAppInstall: boolean;
|
|
32
33
|
|
|
33
|
-
constructor(
|
|
34
|
-
super(
|
|
34
|
+
constructor() {
|
|
35
|
+
super();
|
|
36
|
+
|
|
35
37
|
mac.one((err, macAddress) => {
|
|
36
38
|
if (err) {
|
|
37
|
-
this.macMachineId =
|
|
39
|
+
this.macMachineId = generateUuid();
|
|
38
40
|
} else {
|
|
39
41
|
this.macMachineId = createHash('sha256').update(macAddress, 'utf8').digest('hex');
|
|
40
42
|
}
|
|
@@ -49,13 +51,6 @@ export class EnvNodeExtImpl extends EnvExtImpl {
|
|
|
49
51
|
return this.macMachineId;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
/**
|
|
53
|
-
* Provides application root.
|
|
54
|
-
*/
|
|
55
|
-
get appRoot(): string {
|
|
56
|
-
return __dirname;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
54
|
get isNewAppInstall(): boolean {
|
|
60
55
|
return this._isNewAppInstall;
|
|
61
56
|
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2024 EclipseSource 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 { interfaces, ContainerModule } from '@theia/core/shared/inversify';
|
|
18
|
+
import { Plugin, PluginManager, emptyPlugin } from '../../common';
|
|
19
|
+
|
|
20
|
+
export type ApiFactory<T extends object> = (plugin: Plugin) => T;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Bind a service identifier for the factory function creating API objects of
|
|
24
|
+
* type `T` for a client plugin to a class providing a `call()` method that
|
|
25
|
+
* implements that factory function.
|
|
26
|
+
*
|
|
27
|
+
* @template T the API object type that the factory creates
|
|
28
|
+
* @param serviceIdentifier the injection key identifying the API factory function
|
|
29
|
+
* @param factoryClass the class implementing the API factory function via its `call()` method
|
|
30
|
+
*/
|
|
31
|
+
export type BindApiFactory = <T extends object>(
|
|
32
|
+
apiModuleName: string,
|
|
33
|
+
serviceIdentifier: interfaces.ServiceIdentifier<ApiFactory<T>>,
|
|
34
|
+
factoryClass: new () => { createApi: ApiFactory<T>}) => void;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* An analogue of the callback function in the constructor of the Inversify
|
|
38
|
+
* `ContainerModule` providing a registry that, in addition to the standard
|
|
39
|
+
* binding-related functions, includes a custom function for binding an
|
|
40
|
+
* API factory.
|
|
41
|
+
*/
|
|
42
|
+
export type PluginContainerModuleCallBack = (registry: {
|
|
43
|
+
bind: interfaces.Bind;
|
|
44
|
+
unbind: interfaces.Unbind;
|
|
45
|
+
isBound: interfaces.IsBound;
|
|
46
|
+
rebind: interfaces.Rebind;
|
|
47
|
+
bindApiFactory: BindApiFactory;
|
|
48
|
+
}) => void;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Factory for an Inversify `ContainerModule` that supports registration of the plugin's
|
|
52
|
+
* API factory. Use the `PluginContainerModule`'s `create()` method to create the container
|
|
53
|
+
* module; its `callback` function provides a `registry` of Inversify binding functions that
|
|
54
|
+
* includes a `bindApiFactory` function for binding the API factory.
|
|
55
|
+
*/
|
|
56
|
+
export const PluginContainerModule: symbol & { create(callback: PluginContainerModuleCallBack): ContainerModule } = Object.assign(Symbol('PluginContainerModule'), {
|
|
57
|
+
create(callback: PluginContainerModuleCallBack): ContainerModule {
|
|
58
|
+
const result: InternalPluginContainerModule = new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
59
|
+
const bindApiFactory: BindApiFactory = (apiModuleName, serviceIdentifier, factoryClass) => {
|
|
60
|
+
result.initializeApi = container => {
|
|
61
|
+
const apiCache = new PluginApiCache(apiModuleName, serviceIdentifier);
|
|
62
|
+
apiCache.initializeApi(container);
|
|
63
|
+
return apiCache;
|
|
64
|
+
};
|
|
65
|
+
bind(factoryClass).toSelf().inSingletonScope();
|
|
66
|
+
bind(serviceIdentifier).toDynamicValue(({ container }) => {
|
|
67
|
+
const factory = container.get(factoryClass);
|
|
68
|
+
return factory.createApi.bind(factory);
|
|
69
|
+
}).inSingletonScope();
|
|
70
|
+
};
|
|
71
|
+
callback({ bind, unbind, isBound, rebind, bindApiFactory });
|
|
72
|
+
});
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Definition of additional API provided by the `ContainerModule` created by the
|
|
79
|
+
* {@link PluginContainerModule} factory function that is for internal use by Theia.
|
|
80
|
+
*/
|
|
81
|
+
export type InternalPluginContainerModule = ContainerModule & {
|
|
82
|
+
/** Use my API factory binding to initialize the plugin API in some `container`. */
|
|
83
|
+
initializeApi?: (container: interfaces.Container) => PluginApiCache<object>;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* An object that creates and caches the instance of the plugin API created by the
|
|
88
|
+
* factory binding in a {@link PluginContainerModule} in some plugin host.
|
|
89
|
+
*
|
|
90
|
+
* @template T the custom API object's type
|
|
91
|
+
*/
|
|
92
|
+
export class PluginApiCache<T extends object> {
|
|
93
|
+
|
|
94
|
+
private apiFactory: ApiFactory<T>;
|
|
95
|
+
private pluginManager: PluginManager;
|
|
96
|
+
private defaultApi: T;
|
|
97
|
+
private pluginsApiImpl = new Map<string, T>();
|
|
98
|
+
private hookedModuleLoader = false;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Initializes me with the module name by which plugins import the API
|
|
102
|
+
* and the service identifier to look up in the Inversify `Container` to
|
|
103
|
+
* obtain the {@link ApiFactory} that will instantiate it.
|
|
104
|
+
*/
|
|
105
|
+
constructor(private readonly apiModuleName: string,
|
|
106
|
+
private readonly serviceIdentifier: interfaces.ServiceIdentifier<ApiFactory<T>>) {}
|
|
107
|
+
|
|
108
|
+
// Called by Theia to do any prep work needed for dishing out the API object
|
|
109
|
+
// when it's requested. The key part of that is hooking into the node module
|
|
110
|
+
// loader. This is called every time a plugin-host process is forked.
|
|
111
|
+
initializeApi(container: interfaces.Container): void {
|
|
112
|
+
this.apiFactory = container.get(this.serviceIdentifier);
|
|
113
|
+
this.pluginManager = container.get(PluginManager);
|
|
114
|
+
|
|
115
|
+
if (!this.hookedModuleLoader) {
|
|
116
|
+
this.hookedModuleLoader = true;
|
|
117
|
+
this.overrideInternalLoad();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Hook into the override chain of JavaScript's `module` loading function
|
|
123
|
+
* to implement ourselves, using the API provider's registered factory,
|
|
124
|
+
* the construction of its default exports object.
|
|
125
|
+
*/
|
|
126
|
+
private overrideInternalLoad(): void {
|
|
127
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
128
|
+
const module = require('module');
|
|
129
|
+
|
|
130
|
+
const internalLoad = module._load;
|
|
131
|
+
const self = this;
|
|
132
|
+
|
|
133
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
134
|
+
module._load = function (request: string, parent: any, isMain: any): any {
|
|
135
|
+
if (request !== self.apiModuleName) {
|
|
136
|
+
// Pass the request to the next implementation down the chain
|
|
137
|
+
return internalLoad.call(this, request, parent, isMain);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const plugin = self.findPlugin(parent.filename);
|
|
141
|
+
if (plugin) {
|
|
142
|
+
let apiImpl = self.pluginsApiImpl.get(plugin.model.id);
|
|
143
|
+
if (!apiImpl) {
|
|
144
|
+
apiImpl = self.apiFactory(plugin);
|
|
145
|
+
self.pluginsApiImpl.set(plugin.model.id, apiImpl);
|
|
146
|
+
}
|
|
147
|
+
return apiImpl;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
console.warn(
|
|
151
|
+
`Extension module ${parent.filename} did an import of '${self.apiModuleName}' but our cache ` +
|
|
152
|
+
' has no knowledge of that extension. Returning a generic API object; some functionality might not work correctly.'
|
|
153
|
+
);
|
|
154
|
+
if (!self.defaultApi) {
|
|
155
|
+
self.defaultApi = self.apiFactory(emptyPlugin);
|
|
156
|
+
}
|
|
157
|
+
return self.defaultApi;
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Search all loaded plugins to see which one has the given file (absolute path)
|
|
162
|
+
protected findPlugin(filePath: string): Plugin | undefined {
|
|
163
|
+
return this.pluginManager.getAllPlugins().find(plugin => filePath.startsWith(plugin.pluginFolder));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -287,7 +287,8 @@ export class NotebookDocument implements Disposable {
|
|
|
287
287
|
} else if (rawEvent.kind === notebookCommon.NotebookCellsChangeType.Output) {
|
|
288
288
|
this.setCellOutputs(rawEvent.index, rawEvent.outputs);
|
|
289
289
|
relaxedCellChanges.push({ cell: this.cells[rawEvent.index].apiCell, outputs: this.cells[rawEvent.index].apiCell.outputs });
|
|
290
|
-
|
|
290
|
+
} else if (rawEvent.kind === notebookCommon.NotebookCellsChangeType.ChangeDocumentMetadata) {
|
|
291
|
+
this.metadata = result.metadata ?? {};
|
|
291
292
|
// } else if (rawEvent.kind === notebookCommon.NotebookCellsChangeType.OutputItem) {
|
|
292
293
|
// this._setCellOutputItems(rawEvent.index, rawEvent.outputId, rawEvent.append, rawEvent.outputItems);
|
|
293
294
|
// relaxedCellChanges.push({ cell: this.cells[rawEvent.index].apiCell, outputs: this.cells[rawEvent.index].apiCell.outputs });
|
|
@@ -357,6 +358,18 @@ export class NotebookDocument implements Disposable {
|
|
|
357
358
|
const extCell = new Cell(this, this.editorsAndDocuments, cell);
|
|
358
359
|
if (!initialization) {
|
|
359
360
|
addedCellDocuments.push(Cell.asModelAddData(this.apiNotebook, cell));
|
|
361
|
+
this.editorsAndDocuments.$acceptEditorsAndDocumentsDelta({
|
|
362
|
+
addedDocuments: [
|
|
363
|
+
{
|
|
364
|
+
uri: cell.uri,
|
|
365
|
+
versionId: 1,
|
|
366
|
+
lines: cell.source,
|
|
367
|
+
EOL: cell.eol,
|
|
368
|
+
modeId: '',
|
|
369
|
+
isDirty: false
|
|
370
|
+
}
|
|
371
|
+
]
|
|
372
|
+
});
|
|
360
373
|
}
|
|
361
374
|
return extCell;
|
|
362
375
|
});
|