@theia/plugin-ext 1.34.3 → 1.34.4
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/LICENSE +641 -641
- package/README.md +54 -54
- package/lib/common/arrays.d.ts +19 -19
- package/lib/common/arrays.js +46 -46
- package/lib/common/assert.d.ts +1 -1
- package/lib/common/assert.js +25 -25
- package/lib/common/cache.d.ts +11 -11
- package/lib/common/cache.js +47 -47
- package/lib/common/character-classifier.d.ts +18 -18
- package/lib/common/character-classifier.js +60 -60
- package/lib/common/collections.d.ts +4 -4
- package/lib/common/collections.js +39 -39
- package/lib/common/connection.d.ts +54 -54
- package/lib/common/connection.js +107 -107
- package/lib/common/disposable-util.d.ts +6 -6
- package/lib/common/disposable-util.js +37 -37
- package/lib/common/editor-options.d.ts +30 -30
- package/lib/common/editor-options.js +72 -72
- package/lib/common/env.d.ts +3 -3
- package/lib/common/env.js +17 -17
- package/lib/common/errors.d.ts +3 -3
- package/lib/common/errors.js +42 -42
- package/lib/common/id-generator.d.ts +6 -6
- package/lib/common/id-generator.js +28 -28
- package/lib/common/index.d.ts +3 -3
- package/lib/common/index.js +33 -33
- package/lib/common/link-computer.d.ts +41 -41
- package/lib/common/link-computer.js +275 -275
- package/lib/common/object-identifier.d.ts +8 -8
- package/lib/common/object-identifier.js +32 -32
- package/lib/common/objects.d.ts +1 -1
- package/lib/common/objects.js +46 -46
- package/lib/common/paths-util.d.ts +3 -3
- package/lib/common/paths-util.js +144 -144
- package/lib/common/plugin-api-rpc-model.d.ts +728 -728
- package/lib/common/plugin-api-rpc-model.js +173 -173
- package/lib/common/plugin-api-rpc.d.ts +1710 -1710
- package/lib/common/plugin-api-rpc.js +279 -279
- package/lib/common/plugin-ext-api-contribution.d.ts +58 -58
- package/lib/common/plugin-ext-api-contribution.js +5 -5
- package/lib/common/plugin-identifiers.d.ts +40 -40
- package/lib/common/plugin-identifiers.js +80 -80
- package/lib/common/plugin-protocol.d.ts +840 -840
- package/lib/common/plugin-protocol.js +67 -67
- package/lib/common/proxy-handler.d.ts +65 -65
- package/lib/common/proxy-handler.js +97 -97
- package/lib/common/reference-map.d.ts +7 -7
- package/lib/common/reference-map.js +39 -39
- package/lib/common/rpc-protocol.d.ts +65 -65
- package/lib/common/rpc-protocol.js +229 -229
- package/lib/common/semantic-tokens-dto.d.ts +18 -18
- package/lib/common/semantic-tokens-dto.js +162 -162
- package/lib/common/types.d.ts +37 -37
- package/lib/common/types.js +121 -121
- package/lib/common/uint.d.ts +7 -7
- package/lib/common/uint.js +33 -33
- package/lib/common/uri-components.d.ts +39 -39
- package/lib/common/uri-components.js +66 -66
- package/lib/hosted/browser/hosted-plugin-watcher.d.ts +15 -15
- package/lib/hosted/browser/hosted-plugin-watcher.js +59 -59
- package/lib/hosted/browser/hosted-plugin.d.ts +145 -145
- package/lib/hosted/browser/hosted-plugin.js +787 -787
- package/lib/hosted/browser/plugin-worker.d.ts +6 -6
- package/lib/hosted/browser/plugin-worker.js +57 -57
- package/lib/hosted/browser/worker/debug-stub.d.ts +3 -3
- package/lib/hosted/browser/worker/debug-stub.js +29 -29
- package/lib/hosted/browser/worker/plugin-manifest-loader.d.ts +2 -2
- package/lib/hosted/browser/worker/plugin-manifest-loader.js +107 -107
- package/lib/hosted/browser/worker/worker-env-ext.d.ts +14 -14
- package/lib/hosted/browser/worker/worker-env-ext.js +38 -38
- package/lib/hosted/browser/worker/worker-main.d.ts +1 -1
- package/lib/hosted/browser/worker/worker-main.js +192 -192
- package/lib/hosted/node/hosted-plugin-cli-contribution.d.ts +16 -16
- package/lib/hosted/node/hosted-plugin-cli-contribution.js +76 -76
- package/lib/hosted/node/hosted-plugin-deployer-handler.d.ts +42 -42
- package/lib/hosted/node/hosted-plugin-deployer-handler.js +264 -264
- package/lib/hosted/node/hosted-plugin-localization-service.d.ts +34 -34
- package/lib/hosted/node/hosted-plugin-localization-service.js +239 -239
- package/lib/hosted/node/hosted-plugin-process.d.ts +47 -47
- package/lib/hosted/node/hosted-plugin-process.js +224 -224
- package/lib/hosted/node/hosted-plugin-protocol.d.ts +21 -21
- package/lib/hosted/node/hosted-plugin-protocol.js +36 -36
- package/lib/hosted/node/hosted-plugin.d.ts +36 -36
- package/lib/hosted/node/hosted-plugin.js +118 -118
- package/lib/hosted/node/metadata-scanner.d.ts +17 -17
- package/lib/hosted/node/metadata-scanner.js +82 -82
- package/lib/hosted/node/plugin-ext-hosted-backend-module.d.ts +3 -3
- package/lib/hosted/node/plugin-ext-hosted-backend-module.js +73 -73
- package/lib/hosted/node/plugin-host-proxy.d.ts +17 -17
- package/lib/hosted/node/plugin-host-proxy.js +69 -69
- package/lib/hosted/node/plugin-host-rpc.d.ts +21 -21
- package/lib/hosted/node/plugin-host-rpc.js +216 -216
- package/lib/hosted/node/plugin-host.d.ts +1 -1
- package/lib/hosted/node/plugin-host.js +101 -101
- package/lib/hosted/node/plugin-manifest-loader.d.ts +1 -1
- package/lib/hosted/node/plugin-manifest-loader.js +34 -34
- package/lib/hosted/node/plugin-reader.d.ts +25 -25
- package/lib/hosted/node/plugin-reader.js +141 -141
- package/lib/hosted/node/plugin-service.d.ts +39 -39
- package/lib/hosted/node/plugin-service.js +193 -193
- package/lib/hosted/node/scanners/backend-init-theia.d.ts +2 -2
- package/lib/hosted/node/scanners/backend-init-theia.js +60 -60
- package/lib/hosted/node/scanners/file-plugin-uri-factory.d.ts +10 -10
- package/lib/hosted/node/scanners/file-plugin-uri-factory.js +40 -40
- package/lib/hosted/node/scanners/grammars-reader.d.ts +5 -5
- package/lib/hosted/node/scanners/grammars-reader.js +63 -63
- package/lib/hosted/node/scanners/plugin-uri-factory.d.ts +16 -16
- package/lib/hosted/node/scanners/plugin-uri-factory.js +19 -19
- package/lib/hosted/node/scanners/scanner-theia.d.ts +56 -56
- package/lib/hosted/node/scanners/scanner-theia.js +842 -842
- package/lib/hosted/node-electron/plugin-ext-hosted-electron-backend-module.d.ts +2 -2
- package/lib/hosted/node-electron/plugin-ext-hosted-electron-backend-module.js +26 -26
- package/lib/hosted/node-electron/scanner-theia-electron.d.ts +5 -5
- package/lib/hosted/node-electron/scanner-theia-electron.js +40 -40
- package/lib/main/browser/authentication-main.d.ts +51 -51
- package/lib/main/browser/authentication-main.js +299 -299
- package/lib/main/browser/clipboard-main.d.ts +9 -9
- package/lib/main/browser/clipboard-main.js +32 -32
- package/lib/main/browser/command-registry-main.d.ts +23 -23
- package/lib/main/browser/command-registry-main.js +97 -97
- package/lib/main/browser/commands.d.ts +12 -12
- package/lib/main/browser/commands.js +102 -102
- package/lib/main/browser/comments/comment-glyph-widget.d.ts +12 -12
- package/lib/main/browser/comments/comment-glyph-widget.js +42 -42
- package/lib/main/browser/comments/comment-thread-widget.d.ts +153 -153
- package/lib/main/browser/comments/comment-thread-widget.js +466 -466
- package/lib/main/browser/comments/comments-context-key-service.d.ts +17 -17
- package/lib/main/browser/comments/comments-context-key-service.js +80 -80
- package/lib/main/browser/comments/comments-contribution.d.ts +31 -31
- package/lib/main/browser/comments/comments-contribution.js +264 -264
- package/lib/main/browser/comments/comments-decorator.d.ts +15 -15
- package/lib/main/browser/comments/comments-decorator.js +107 -107
- package/lib/main/browser/comments/comments-main.d.ts +106 -106
- package/lib/main/browser/comments/comments-main.js +341 -341
- package/lib/main/browser/comments/comments-service.d.ts +75 -75
- package/lib/main/browser/comments/comments-service.js +120 -120
- package/lib/main/browser/custom-editors/custom-editor-contribution.d.ts +6 -6
- package/lib/main/browser/custom-editors/custom-editor-contribution.js +50 -50
- package/lib/main/browser/custom-editors/custom-editor-opener.d.ts +21 -21
- package/lib/main/browser/custom-editors/custom-editor-opener.js +111 -111
- package/lib/main/browser/custom-editors/custom-editor-service.d.ts +16 -16
- package/lib/main/browser/custom-editors/custom-editor-service.js +102 -102
- package/lib/main/browser/custom-editors/custom-editor-widget-factory.d.ts +9 -9
- package/lib/main/browser/custom-editors/custom-editor-widget-factory.js +39 -39
- package/lib/main/browser/custom-editors/custom-editor-widget.d.ts +36 -36
- package/lib/main/browser/custom-editors/custom-editor-widget.js +115 -115
- package/lib/main/browser/custom-editors/custom-editors-main.d.ts +120 -120
- package/lib/main/browser/custom-editors/custom-editors-main.js +447 -447
- package/lib/main/browser/custom-editors/plugin-custom-editor-registry.d.ts +23 -23
- package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +142 -142
- package/lib/main/browser/custom-editors/undo-redo-service.d.ts +23 -23
- package/lib/main/browser/custom-editors/undo-redo-service.js +110 -110
- package/lib/main/browser/debug/debug-main.d.ts +48 -48
- package/lib/main/browser/debug/debug-main.js +295 -295
- package/lib/main/browser/debug/plugin-debug-adapter-contribution.d.ts +18 -18
- package/lib/main/browser/debug/plugin-debug-adapter-contribution.js +42 -42
- package/lib/main/browser/debug/plugin-debug-configuration-provider.d.ts +12 -12
- package/lib/main/browser/debug/plugin-debug-configuration-provider.js +38 -38
- package/lib/main/browser/debug/plugin-debug-service.d.ts +52 -52
- package/lib/main/browser/debug/plugin-debug-service.js +283 -283
- package/lib/main/browser/debug/plugin-debug-session-contribution-registry.d.ts +30 -30
- package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js +75 -75
- package/lib/main/browser/debug/plugin-debug-session-factory.d.ts +55 -55
- package/lib/main/browser/debug/plugin-debug-session-factory.js +70 -70
- package/lib/main/browser/decorations/decorations-main.d.ts +15 -15
- package/lib/main/browser/decorations/decorations-main.js +119 -119
- package/lib/main/browser/dialogs/modal-notification.d.ts +18 -18
- package/lib/main/browser/dialogs/modal-notification.js +107 -107
- package/lib/main/browser/dialogs-main.d.ts +16 -16
- package/lib/main/browser/dialogs-main.js +162 -162
- package/lib/main/browser/documents-main.d.ts +50 -50
- package/lib/main/browser/documents-main.js +249 -249
- package/lib/main/browser/editors-and-documents-main.d.ts +32 -32
- package/lib/main/browser/editors-and-documents-main.js +301 -301
- package/lib/main/browser/env-main.d.ts +15 -15
- package/lib/main/browser/env-main.js +82 -82
- package/lib/main/browser/file-system-main-impl.d.ts +27 -27
- package/lib/main/browser/file-system-main-impl.js +199 -199
- package/lib/main/browser/hierarchy/hierarchy-types-converters.d.ts +24 -24
- package/lib/main/browser/hierarchy/hierarchy-types-converters.js +174 -174
- package/lib/main/browser/keybindings/keybindings-contribution-handler.d.ts +9 -9
- package/lib/main/browser/keybindings/keybindings-contribution-handler.js +77 -77
- package/lib/main/browser/label-service-main.d.ts +10 -10
- package/lib/main/browser/label-service-main.js +46 -46
- package/lib/main/browser/languages-main.d.ts +136 -136
- package/lib/main/browser/languages-main.js +1116 -1116
- package/lib/main/browser/main-context.d.ts +3 -3
- package/lib/main/browser/main-context.js +137 -137
- package/lib/main/browser/main-file-system-event-service.d.ts +7 -7
- package/lib/main/browser/main-file-system-event-service.js +65 -65
- package/lib/main/browser/menus/menus-contribution-handler.d.ts +29 -29
- package/lib/main/browser/menus/menus-contribution-handler.js +194 -194
- package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts +43 -43
- package/lib/main/browser/menus/plugin-menu-command-adapter.js +279 -279
- package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts +17 -17
- package/lib/main/browser/menus/vscode-theia-menu-mappings.js +93 -93
- package/lib/main/browser/message-registry-main.d.ts +8 -8
- package/lib/main/browser/message-registry-main.js +52 -52
- package/lib/main/browser/notification-main.d.ts +18 -18
- package/lib/main/browser/notification-main.js +75 -75
- package/lib/main/browser/output-channel-registry-main.d.ts +10 -10
- package/lib/main/browser/output-channel-registry-main.js +60 -60
- package/lib/main/browser/plugin-authentication-service.d.ts +13 -13
- package/lib/main/browser/plugin-authentication-service.js +80 -80
- package/lib/main/browser/plugin-contribution-handler.d.ts +66 -66
- package/lib/main/browser/plugin-contribution-handler.js +580 -580
- package/lib/main/browser/plugin-ext-frontend-module.d.ts +7 -7
- package/lib/main/browser/plugin-ext-frontend-module.js +216 -216
- package/lib/main/browser/plugin-ext-widget.d.ts +28 -28
- package/lib/main/browser/plugin-ext-widget.js +129 -129
- package/lib/main/browser/plugin-frontend-contribution.d.ts +6 -6
- package/lib/main/browser/plugin-frontend-contribution.js +45 -45
- package/lib/main/browser/plugin-frontend-view-contribution.d.ts +6 -6
- package/lib/main/browser/plugin-frontend-view-contribution.js +50 -50
- package/lib/main/browser/plugin-icon-theme-service.d.ts +135 -135
- package/lib/main/browser/plugin-icon-theme-service.js +519 -519
- package/lib/main/browser/plugin-shared-style.d.ts +36 -36
- package/lib/main/browser/plugin-shared-style.js +126 -126
- package/lib/main/browser/plugin-storage.d.ts +13 -13
- package/lib/main/browser/plugin-storage.js +46 -46
- package/lib/main/browser/plugin-terminal-registry.d.ts +4 -4
- package/lib/main/browser/plugin-terminal-registry.js +34 -34
- package/lib/main/browser/preference-registry-main.d.ts +19 -19
- package/lib/main/browser/preference-registry-main.js +104 -104
- package/lib/main/browser/quick-open-main.d.ts +31 -31
- package/lib/main/browser/quick-open-main.js +274 -274
- package/lib/main/browser/scm-main.d.ts +100 -100
- package/lib/main/browser/scm-main.js +330 -330
- package/lib/main/browser/secrets-main.d.ts +12 -12
- package/lib/main/browser/secrets-main.js +67 -67
- package/lib/main/browser/selection-provider-command.d.ts +12 -12
- package/lib/main/browser/selection-provider-command.js +57 -57
- package/lib/main/browser/status-bar-message-registry-main.d.ts +16 -16
- package/lib/main/browser/status-bar-message-registry-main.js +55 -55
- package/lib/main/browser/tabs/tabs-main.d.ts +40 -40
- package/lib/main/browser/tabs/tabs-main.js +282 -282
- package/lib/main/browser/tasks-main.d.ts +33 -33
- package/lib/main/browser/tasks-main.js +205 -205
- package/lib/main/browser/terminal-main.d.ts +49 -49
- package/lib/main/browser/terminal-main.js +268 -268
- package/lib/main/browser/text-editor-main.d.ts +47 -47
- package/lib/main/browser/text-editor-main.js +374 -374
- package/lib/main/browser/text-editor-model-service.d.ts +28 -28
- package/lib/main/browser/text-editor-model-service.js +108 -108
- package/lib/main/browser/text-editors-main.d.ts +38 -38
- package/lib/main/browser/text-editors-main.js +158 -158
- package/lib/main/browser/theme-icon-override.d.ts +1 -1
- package/lib/main/browser/theme-icon-override.js +247 -247
- package/lib/main/browser/theming-main.d.ts +9 -9
- package/lib/main/browser/theming-main.js +35 -35
- package/lib/main/browser/timeline-main.d.ts +13 -13
- package/lib/main/browser/timeline-main.js +46 -46
- package/lib/main/browser/view/dnd-file-content-store.d.ts +7 -7
- package/lib/main/browser/view/dnd-file-content-store.js +51 -51
- package/lib/main/browser/view/plugin-tree-view-node-label-provider.d.ts +11 -11
- package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +90 -90
- package/lib/main/browser/view/plugin-view-registry.d.ts +106 -106
- package/lib/main/browser/view/plugin-view-registry.js +836 -836
- package/lib/main/browser/view/plugin-view-widget.d.ts +50 -50
- package/lib/main/browser/view/plugin-view-widget.js +166 -166
- package/lib/main/browser/view/tree-view-decorator-service.d.ts +30 -30
- package/lib/main/browser/view/tree-view-decorator-service.js +68 -68
- package/lib/main/browser/view/tree-view-widget.d.ts +160 -160
- package/lib/main/browser/view/tree-view-widget.js +761 -761
- package/lib/main/browser/view/tree-views-main.d.ts +31 -31
- package/lib/main/browser/view/tree-views-main.js +163 -163
- package/lib/main/browser/view/view-context-key-service.d.ts +30 -30
- package/lib/main/browser/view/view-context-key-service.js +84 -84
- package/lib/main/browser/view-column-service.d.ts +23 -23
- package/lib/main/browser/view-column-service.js +129 -129
- package/lib/main/browser/webview/webview-environment.d.ts +15 -15
- package/lib/main/browser/webview/webview-environment.js +93 -93
- package/lib/main/browser/webview/webview-frontend-security-warnings.d.ts +11 -11
- package/lib/main/browser/webview/webview-frontend-security-warnings.js +73 -73
- package/lib/main/browser/webview/webview-preferences.d.ts +12 -12
- package/lib/main/browser/webview/webview-preferences.js +57 -57
- package/lib/main/browser/webview/webview-resource-cache.d.ts +17 -17
- package/lib/main/browser/webview/webview-resource-cache.js +90 -90
- package/lib/main/browser/webview/webview-theme-data-provider.d.ts +30 -30
- package/lib/main/browser/webview/webview-theme-data-provider.js +132 -132
- package/lib/main/browser/webview/webview-widget-factory.d.ts +8 -8
- package/lib/main/browser/webview/webview-widget-factory.js +38 -38
- package/lib/main/browser/webview/webview.d.ts +130 -130
- package/lib/main/browser/webview/webview.js +549 -549
- package/lib/main/browser/webview-views/webview-views-main.d.ts +30 -30
- package/lib/main/browser/webview-views/webview-views-main.js +126 -126
- package/lib/main/browser/webview-views/webview-views.d.ts +14 -14
- package/lib/main/browser/webview-views/webview-views.js +22 -22
- package/lib/main/browser/webviews-main.d.ts +39 -39
- package/lib/main/browser/webviews-main.js +231 -231
- package/lib/main/browser/window-state-main.d.ts +16 -16
- package/lib/main/browser/window-state-main.js +61 -61
- package/lib/main/browser/workspace-main.d.ts +69 -69
- package/lib/main/browser/workspace-main.js +316 -316
- package/lib/main/common/plugin-paths-protocol.d.ts +8 -8
- package/lib/main/common/plugin-paths-protocol.js +21 -21
- package/lib/main/common/plugin-theia-environment.d.ts +7 -7
- package/lib/main/common/plugin-theia-environment.js +47 -47
- package/lib/main/common/webview-protocol.d.ts +12 -12
- package/lib/main/common/webview-protocol.js +31 -31
- package/lib/main/electron-browser/plugin-ext-frontend-electron-module.d.ts +3 -3
- package/lib/main/electron-browser/plugin-ext-frontend-electron-module.js +25 -25
- package/lib/main/electron-browser/webview/electron-webview-widget-factory.d.ts +22 -22
- package/lib/main/electron-browser/webview/electron-webview-widget-factory.js +64 -64
- package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts +10 -10
- package/lib/main/node/handlers/plugin-theia-directory-handler.js +113 -113
- package/lib/main/node/handlers/plugin-theia-file-handler.d.ts +9 -9
- package/lib/main/node/handlers/plugin-theia-file-handler.js +66 -66
- package/lib/main/node/paths/const.d.ts +5 -5
- package/lib/main/node/paths/const.js +24 -24
- package/lib/main/node/paths/plugin-paths-service.d.ts +23 -23
- package/lib/main/node/paths/plugin-paths-service.js +169 -169
- package/lib/main/node/plugin-cli-contribution.d.ts +21 -21
- package/lib/main/node/plugin-cli-contribution.js +84 -84
- package/lib/main/node/plugin-deployer-contribution.d.ts +8 -8
- package/lib/main/node/plugin-deployer-contribution.js +47 -47
- package/lib/main/node/plugin-deployer-directory-handler-context-impl.d.ts +7 -7
- package/lib/main/node/plugin-deployer-directory-handler-context-impl.js +44 -44
- package/lib/main/node/plugin-deployer-entry-impl.d.ts +34 -34
- package/lib/main/node/plugin-deployer-entry-impl.js +109 -109
- package/lib/main/node/plugin-deployer-file-handler-context-impl.d.ts +7 -7
- package/lib/main/node/plugin-deployer-file-handler-context-impl.js +31 -31
- package/lib/main/node/plugin-deployer-impl.d.ts +61 -61
- package/lib/main/node/plugin-deployer-impl.js +341 -341
- package/lib/main/node/plugin-deployer-proxy-entry-impl.d.ts +29 -29
- package/lib/main/node/plugin-deployer-proxy-entry-impl.js +98 -98
- package/lib/main/node/plugin-deployer-resolver-context-impl.d.ts +15 -15
- package/lib/main/node/plugin-deployer-resolver-context-impl.js +42 -42
- package/lib/main/node/plugin-ext-backend-module.d.ts +2 -2
- package/lib/main/node/plugin-ext-backend-module.js +70 -70
- package/lib/main/node/plugin-github-resolver.d.ts +21 -21
- package/lib/main/node/plugin-github-resolver.js +142 -142
- package/lib/main/node/plugin-http-resolver.d.ts +18 -18
- package/lib/main/node/plugin-http-resolver.js +91 -91
- package/lib/main/node/plugin-localization-backend-contribution.d.ts +9 -9
- package/lib/main/node/plugin-localization-backend-contribution.js +58 -58
- package/lib/main/node/plugin-server-handler.d.ts +16 -16
- package/lib/main/node/plugin-server-handler.js +74 -74
- package/lib/main/node/plugin-service.d.ts +19 -19
- package/lib/main/node/plugin-service.js +91 -91
- package/lib/main/node/plugin-theia-deployer-participant.d.ts +6 -6
- package/lib/main/node/plugin-theia-deployer-participant.js +43 -43
- package/lib/main/node/plugin-uninstallation-manager.d.ts +14 -14
- package/lib/main/node/plugin-uninstallation-manager.js +84 -84
- package/lib/main/node/plugins-key-value-storage.d.ts +15 -15
- package/lib/main/node/plugins-key-value-storage.js +128 -128
- package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.d.ts +7 -7
- package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js +43 -43
- package/lib/main/node/resolvers/local-plugin-deployer-resolver.d.ts +8 -8
- package/lib/main/node/resolvers/local-plugin-deployer-resolver.js +59 -59
- package/lib/main/node/temp-dir-util.d.ts +1 -1
- package/lib/main/node/temp-dir-util.js +30 -30
- package/lib/main/node/webview-backend-security-warnings.d.ts +5 -5
- package/lib/main/node/webview-backend-security-warnings.js +51 -51
- package/lib/plugin/authentication-ext.d.ts +34 -34
- package/lib/plugin/authentication-ext.js +94 -94
- package/lib/plugin/clipboard-ext.d.ts +9 -9
- package/lib/plugin/clipboard-ext.js +31 -31
- package/lib/plugin/command-registry.d.ts +43 -43
- package/lib/plugin/command-registry.js +176 -176
- package/lib/plugin/comments.d.ts +89 -89
- package/lib/plugin/comments.js +368 -368
- package/lib/plugin/custom-editors.d.ts +47 -47
- package/lib/plugin/custom-editors.js +255 -255
- package/lib/plugin/debug/debug-ext.d.ts +86 -86
- package/lib/plugin/debug/debug-ext.js +391 -391
- package/lib/plugin/debug/plugin-debug-adapter-creator.d.ts +10 -10
- package/lib/plugin/debug/plugin-debug-adapter-creator.js +41 -41
- package/lib/plugin/debug/plugin-debug-adapter-session.d.ts +26 -26
- package/lib/plugin/debug/plugin-debug-adapter-session.js +96 -96
- package/lib/plugin/debug/plugin-debug-adapter-tracker.d.ts +12 -12
- package/lib/plugin/debug/plugin-debug-adapter-tracker.js +77 -77
- package/lib/plugin/decorations.d.ts +14 -14
- package/lib/plugin/decorations.js +112 -112
- package/lib/plugin/dialogs.d.ts +10 -10
- package/lib/plugin/dialogs.js +91 -91
- package/lib/plugin/document-data.d.ts +38 -38
- package/lib/plugin/document-data.js +309 -309
- package/lib/plugin/documents.d.ts +56 -56
- package/lib/plugin/documents.js +253 -253
- package/lib/plugin/editors-and-documents.d.ts +26 -26
- package/lib/plugin/editors-and-documents.js +137 -137
- package/lib/plugin/env.d.ts +42 -42
- package/lib/plugin/env.js +101 -101
- package/lib/plugin/file-system-event-service-ext-impl.d.ts +40 -40
- package/lib/plugin/file-system-event-service-ext-impl.js +203 -203
- package/lib/plugin/file-system-ext-impl.d.ts +50 -50
- package/lib/plugin/file-system-ext-impl.js +354 -354
- package/lib/plugin/known-commands.d.ts +5 -5
- package/lib/plugin/known-commands.js +386 -386
- package/lib/plugin/known-commands.spec.d.ts +1 -1
- package/lib/plugin/known-commands.spec.js +42 -42
- package/lib/plugin/label-service.d.ts +11 -11
- package/lib/plugin/label-service.js +35 -35
- package/lib/plugin/languages/call-hierarchy.d.ts +20 -20
- package/lib/plugin/languages/call-hierarchy.js +101 -101
- package/lib/plugin/languages/code-action.d.ts +24 -24
- package/lib/plugin/languages/code-action.js +137 -137
- package/lib/plugin/languages/color.d.ts +12 -12
- package/lib/plugin/languages/color.js +58 -58
- package/lib/plugin/languages/completion.d.ts +20 -20
- package/lib/plugin/languages/completion.js +161 -161
- package/lib/plugin/languages/declaration.d.ts +11 -11
- package/lib/plugin/languages/declaration.js +58 -58
- package/lib/plugin/languages/definition.d.ts +11 -11
- package/lib/plugin/languages/definition.js +58 -58
- package/lib/plugin/languages/diagnostics.d.ts +49 -49
- package/lib/plugin/languages/diagnostics.js +281 -281
- package/lib/plugin/languages/document-formatting.d.ts +10 -10
- package/lib/plugin/languages/document-formatting.js +40 -40
- package/lib/plugin/languages/document-highlight.d.ts +12 -12
- package/lib/plugin/languages/document-highlight.js +50 -50
- package/lib/plugin/languages/evaluatable-expression.d.ts +11 -11
- package/lib/plugin/languages/evaluatable-expression.js +40 -40
- package/lib/plugin/languages/folding.d.ts +10 -10
- package/lib/plugin/languages/folding.js +39 -39
- package/lib/plugin/languages/hover.d.ts +11 -11
- package/lib/plugin/languages/hover.js +48 -48
- package/lib/plugin/languages/implementation.d.ts +11 -11
- package/lib/plugin/languages/implementation.js +58 -58
- package/lib/plugin/languages/inlay-hints.d.ts +19 -19
- package/lib/plugin/languages/inlay-hints.js +127 -127
- package/lib/plugin/languages/inline-completion.d.ts +20 -20
- package/lib/plugin/languages/inline-completion.js +93 -93
- package/lib/plugin/languages/inline-values.d.ts +10 -10
- package/lib/plugin/languages/inline-values.js +44 -44
- package/lib/plugin/languages/lens.d.ts +19 -19
- package/lib/plugin/languages/lens.js +89 -89
- package/lib/plugin/languages/link-provider.d.ts +14 -14
- package/lib/plugin/languages/link-provider.js +71 -71
- package/lib/plugin/languages/linked-editing-range.d.ts +11 -11
- package/lib/plugin/languages/linked-editing-range.js +40 -40
- package/lib/plugin/languages/on-type-formatting.d.ts +11 -11
- package/lib/plugin/languages/on-type-formatting.js +41 -41
- package/lib/plugin/languages/outline.d.ts +20 -20
- package/lib/plugin/languages/outline.js +115 -115
- package/lib/plugin/languages/range-formatting.d.ts +10 -10
- package/lib/plugin/languages/range-formatting.js +41 -41
- package/lib/plugin/languages/reference.d.ts +11 -11
- package/lib/plugin/languages/reference.js +47 -47
- package/lib/plugin/languages/rename.d.ts +14 -14
- package/lib/plugin/languages/rename.js +114 -114
- package/lib/plugin/languages/selection-range.d.ts +11 -11
- package/lib/plugin/languages/selection-range.js +65 -65
- package/lib/plugin/languages/semantic-highlighting.d.ts +28 -28
- package/lib/plugin/languages/semantic-highlighting.js +175 -175
- package/lib/plugin/languages/signature.d.ts +15 -15
- package/lib/plugin/languages/signature.js +71 -71
- package/lib/plugin/languages/type-definition.d.ts +11 -11
- package/lib/plugin/languages/type-definition.js +58 -58
- package/lib/plugin/languages/type-hierarchy.d.ts +18 -18
- package/lib/plugin/languages/type-hierarchy.js +95 -95
- package/lib/plugin/languages/util.d.ts +4 -4
- package/lib/plugin/languages/util.js +27 -27
- package/lib/plugin/languages/workspace-symbol.d.ts +8 -8
- package/lib/plugin/languages/workspace-symbol.js +61 -61
- package/lib/plugin/languages-utils.d.ts +5 -5
- package/lib/plugin/languages-utils.js +52 -52
- package/lib/plugin/languages.d.ts +118 -118
- package/lib/plugin/languages.js +679 -679
- package/lib/plugin/markdown-string.d.ts +24 -24
- package/lib/plugin/markdown-string.js +124 -124
- package/lib/plugin/message-registry.d.ts +8 -8
- package/lib/plugin/message-registry.js +60 -60
- package/lib/plugin/node/debug/debug.spec.d.ts +1 -1
- package/lib/plugin/node/debug/debug.spec.js +67 -67
- package/lib/plugin/node/debug/plugin-node-debug-adapter-creator.d.ts +17 -17
- package/lib/plugin/node/debug/plugin-node-debug-adapter-creator.js +154 -154
- package/lib/plugin/node/env-node-ext.d.ts +21 -21
- package/lib/plugin/node/env-node-ext.js +63 -63
- package/lib/plugin/notification.d.ts +17 -17
- package/lib/plugin/notification.js +67 -67
- package/lib/plugin/output-channel/output-channel-item.d.ts +17 -17
- package/lib/plugin/output-channel/output-channel-item.js +51 -51
- package/lib/plugin/output-channel-registry.d.ts +8 -8
- package/lib/plugin/output-channel-registry.js +35 -35
- package/lib/plugin/path.d.ts +2 -2
- package/lib/plugin/path.js +59 -59
- package/lib/plugin/path.spec.d.ts +1 -1
- package/lib/plugin/path.spec.js +34 -34
- package/lib/plugin/plugin-context.d.ts +56 -56
- package/lib/plugin/plugin-context.js +1072 -1072
- package/lib/plugin/plugin-icon-path.d.ts +11 -11
- package/lib/plugin/plugin-icon-path.js +49 -49
- package/lib/plugin/plugin-manager.d.ts +80 -80
- package/lib/plugin/plugin-manager.js +366 -366
- package/lib/plugin/plugin-storage.d.ts +36 -36
- package/lib/plugin/plugin-storage.js +99 -99
- package/lib/plugin/preference-registry.d.ts +36 -36
- package/lib/plugin/preference-registry.js +295 -295
- package/lib/plugin/preference-registry.spec.d.ts +1 -1
- package/lib/plugin/preference-registry.spec.js +251 -251
- package/lib/plugin/prefix-sum-computer.d.ts +30 -30
- package/lib/plugin/prefix-sum-computer.js +172 -172
- package/lib/plugin/quick-open.d.ts +202 -202
- package/lib/plugin/quick-open.js +637 -637
- package/lib/plugin/scm.d.ts +53 -53
- package/lib/plugin/scm.js +713 -713
- package/lib/plugin/secrets-ext.d.ts +30 -30
- package/lib/plugin/secrets-ext.js +68 -68
- package/lib/plugin/status-bar/status-bar-item.d.ts +44 -44
- package/lib/plugin/status-bar/status-bar-item.js +122 -122
- package/lib/plugin/status-bar-message-registry.d.ts +20 -20
- package/lib/plugin/status-bar-message-registry.js +84 -84
- package/lib/plugin/stubs/tests-api.d.ts +22 -22
- package/lib/plugin/stubs/tests-api.js +66 -66
- package/lib/plugin/tabs.d.ts +22 -22
- package/lib/plugin/tabs.js +358 -358
- package/lib/plugin/tasks/task-provider.d.ts +8 -8
- package/lib/plugin/tasks/task-provider.js +56 -56
- package/lib/plugin/tasks/tasks.d.ts +45 -45
- package/lib/plugin/tasks/tasks.js +210 -210
- package/lib/plugin/terminal-ext.d.ts +101 -101
- package/lib/plugin/terminal-ext.js +422 -422
- package/lib/plugin/text-editor.d.ts +100 -100
- package/lib/plugin/text-editor.js +409 -409
- package/lib/plugin/text-editors.d.ts +37 -37
- package/lib/plugin/text-editors.js +126 -126
- package/lib/plugin/theming.d.ts +15 -15
- package/lib/plugin/theming.js +61 -61
- package/lib/plugin/timeline.d.ts +20 -20
- package/lib/plugin/timeline.js +152 -152
- package/lib/plugin/tree/tree-views.d.ts +93 -93
- package/lib/plugin/tree/tree-views.js +523 -523
- package/lib/plugin/type-converters.d.ts +131 -131
- package/lib/plugin/type-converters.js +1292 -1292
- package/lib/plugin/type-converters.spec.d.ts +1 -1
- package/lib/plugin/type-converters.spec.js +391 -391
- package/lib/plugin/types-impl.d.ts +1464 -1464
- package/lib/plugin/types-impl.js +2956 -2956
- package/lib/plugin/types-impl.spec.d.ts +1 -1
- package/lib/plugin/types-impl.spec.js +78 -78
- package/lib/plugin/webview-views.d.ts +52 -52
- package/lib/plugin/webview-views.js +144 -144
- package/lib/plugin/webviews.d.ts +95 -95
- package/lib/plugin/webviews.js +340 -340
- package/lib/plugin/window-state.d.ts +16 -16
- package/lib/plugin/window-state.js +55 -55
- package/lib/plugin/word-helper.d.ts +21 -21
- package/lib/plugin/word-helper.js +125 -125
- package/lib/plugin/workspace.d.ts +53 -53
- package/lib/plugin/workspace.js +371 -371
- package/lib/plugin-ext-backend-electron-module.d.ts +3 -3
- package/lib/plugin-ext-backend-electron-module.js +24 -24
- package/lib/plugin-ext-backend-module.d.ts +3 -3
- package/lib/plugin-ext-backend-module.js +24 -24
- package/lib/plugin-ext-frontend-electron-module.d.ts +2 -2
- package/lib/plugin-ext-frontend-electron-module.js +19 -19
- package/lib/plugin-ext-frontend-module.d.ts +2 -2
- package/lib/plugin-ext-frontend-module.js +19 -19
- package/package.json +27 -27
- package/src/common/arrays.ts +54 -54
- package/src/common/assert.ts +23 -23
- package/src/common/cache.ts +51 -51
- package/src/common/character-classifier.ts +73 -73
- package/src/common/collections.ts +37 -37
- package/src/common/connection.ts +137 -137
- package/src/common/disposable-util.ts +39 -39
- package/src/common/editor-options.ts +74 -74
- package/src/common/env.ts +19 -19
- package/src/common/errors.ts +37 -37
- package/src/common/id-generator.ts +26 -26
- package/src/common/index.ts +24 -24
- package/src/common/link-computer.ts +354 -354
- package/src/common/object-identifier.ts +33 -33
- package/src/common/objects.ts +50 -50
- package/src/common/paths-util.ts +158 -158
- package/src/common/plugin-api-rpc-model.ts +864 -864
- package/src/common/plugin-api-rpc.ts +2202 -2202
- package/src/common/plugin-ext-api-contribution.ts +82 -82
- package/src/common/plugin-identifiers.ts +84 -84
- package/src/common/plugin-protocol.ts +987 -987
- package/src/common/proxy-handler.ts +126 -126
- package/src/common/reference-map.ts +38 -38
- package/src/common/rpc-protocol.ts +272 -272
- package/src/common/semantic-tokens-dto.ts +182 -182
- package/src/common/types.ts +129 -129
- package/src/common/uint.ts +37 -37
- package/src/common/uri-components.ts +85 -85
- package/src/hosted/browser/hosted-plugin-watcher.ts +54 -54
- package/src/hosted/browser/hosted-plugin.ts +830 -830
- package/src/hosted/browser/plugin-worker.ts +52 -52
- package/src/hosted/browser/worker/debug-stub.ts +28 -28
- package/src/hosted/browser/worker/plugin-manifest-loader.ts +114 -114
- package/src/hosted/browser/worker/worker-env-ext.ts +41 -41
- package/src/hosted/browser/worker/worker-main.ts +221 -221
- package/src/hosted/node/hosted-plugin-cli-contribution.ts +75 -75
- package/src/hosted/node/hosted-plugin-deployer-handler.ts +261 -261
- package/src/hosted/node/hosted-plugin-localization-service.ts +254 -254
- package/src/hosted/node/hosted-plugin-process.ts +248 -248
- package/src/hosted/node/hosted-plugin-protocol.ts +49 -49
- package/src/hosted/node/hosted-plugin.ts +116 -116
- package/src/hosted/node/metadata-scanner.ts +64 -64
- package/src/hosted/node/plugin-ext-hosted-backend-module.ts +80 -80
- package/src/hosted/node/plugin-host-proxy.ts +80 -80
- package/src/hosted/node/plugin-host-rpc.ts +245 -245
- package/src/hosted/node/plugin-host.ts +108 -108
- package/src/hosted/node/plugin-manifest-loader.ts +31 -31
- package/src/hosted/node/plugin-reader.ts +131 -131
- package/src/hosted/node/plugin-service.ts +175 -175
- package/src/hosted/node/scanners/backend-init-theia.ts +71 -71
- package/src/hosted/node/scanners/file-plugin-uri-factory.ts +32 -32
- package/src/hosted/node/scanners/grammars-reader.ts +56 -56
- package/src/hosted/node/scanners/plugin-uri-factory.ts +33 -33
- package/src/hosted/node/scanners/scanner-theia.ts +938 -938
- package/src/hosted/node-electron/plugin-ext-hosted-electron-backend-module.ts +26 -26
- package/src/hosted/node-electron/scanner-theia-electron.ts +32 -32
- package/src/main/browser/authentication-main.ts +369 -369
- package/src/main/browser/clipboard-main.ts +38 -38
- package/src/main/browser/command-registry-main.ts +110 -110
- package/src/main/browser/commands.ts +104 -104
- package/src/main/browser/comments/comment-glyph-widget.ts +66 -66
- package/src/main/browser/comments/comment-thread-widget.tsx +691 -691
- package/src/main/browser/comments/comments-context-key-service.ts +68 -68
- package/src/main/browser/comments/comments-contribution.ts +264 -264
- package/src/main/browser/comments/comments-decorator.ts +110 -110
- package/src/main/browser/comments/comments-main.ts +465 -465
- package/src/main/browser/comments/comments-service.ts +205 -205
- package/src/main/browser/custom-editors/custom-editor-contribution.ts +38 -38
- package/src/main/browser/custom-editors/custom-editor-opener.tsx +105 -105
- package/src/main/browser/custom-editors/custom-editor-service.ts +108 -108
- package/src/main/browser/custom-editors/custom-editor-widget-factory.ts +44 -44
- package/src/main/browser/custom-editors/custom-editor-widget.ts +127 -127
- package/src/main/browser/custom-editors/custom-editors-main.ts +606 -606
- package/src/main/browser/custom-editors/plugin-custom-editor-registry.ts +142 -142
- package/src/main/browser/custom-editors/undo-redo-service.ts +120 -120
- package/src/main/browser/debug/debug-main.ts +373 -373
- package/src/main/browser/debug/plugin-debug-adapter-contribution.ts +48 -48
- package/src/main/browser/debug/plugin-debug-configuration-provider.ts +63 -63
- package/src/main/browser/debug/plugin-debug-service.ts +338 -338
- package/src/main/browser/debug/plugin-debug-session-contribution-registry.ts +76 -76
- package/src/main/browser/debug/plugin-debug-session-factory.ts +105 -105
- package/src/main/browser/decorations/decorations-main.ts +146 -146
- package/src/main/browser/dialogs/modal-notification.ts +110 -110
- package/src/main/browser/dialogs/style/modal-notification.css +123 -123
- package/src/main/browser/dialogs-main.ts +185 -185
- package/src/main/browser/documents-main.ts +289 -289
- package/src/main/browser/editors-and-documents-main.ts +394 -394
- package/src/main/browser/env-main.ts +87 -87
- package/src/main/browser/file-system-main-impl.ts +263 -263
- package/src/main/browser/hierarchy/hierarchy-types-converters.ts +189 -189
- package/src/main/browser/keybindings/keybindings-contribution-handler.ts +66 -66
- package/src/main/browser/label-service-main.ts +51 -51
- package/src/main/browser/languages-main.ts +1387 -1387
- package/src/main/browser/main-context.ts +187 -187
- package/src/main/browser/main-file-system-event-service.ts +76 -76
- package/src/main/browser/menus/menus-contribution-handler.ts +162 -162
- package/src/main/browser/menus/plugin-menu-command-adapter.ts +264 -264
- package/src/main/browser/menus/vscode-theia-menu-mappings.ts +91 -91
- package/src/main/browser/message-registry-main.ts +56 -56
- package/src/main/browser/notification-main.ts +86 -86
- package/src/main/browser/output-channel-registry-main.ts +53 -53
- package/src/main/browser/plugin-authentication-service.ts +71 -71
- package/src/main/browser/plugin-contribution-handler.ts +609 -609
- package/src/main/browser/plugin-ext-frontend-module.ts +249 -249
- package/src/main/browser/plugin-ext-widget.tsx +132 -132
- package/src/main/browser/plugin-frontend-contribution.ts +35 -35
- package/src/main/browser/plugin-frontend-view-contribution.ts +38 -38
- package/src/main/browser/plugin-icon-theme-service.ts +585 -585
- package/src/main/browser/plugin-shared-style.ts +133 -133
- package/src/main/browser/plugin-storage.ts +55 -55
- package/src/main/browser/plugin-terminal-registry.ts +27 -27
- package/src/main/browser/preference-registry-main.ts +123 -123
- package/src/main/browser/quick-open-main.ts +324 -324
- package/src/main/browser/scm-main.ts +453 -453
- package/src/main/browser/secrets-main.ts +82 -82
- package/src/main/browser/selection-provider-command.ts +46 -46
- package/src/main/browser/status-bar-message-registry-main.ts +90 -90
- package/src/main/browser/style/comments.css +345 -345
- package/src/main/browser/style/index.css +85 -85
- package/src/main/browser/style/plugin-sidebar.css +73 -73
- package/src/main/browser/style/test.svg +13 -13
- package/src/main/browser/style/tree.css +52 -52
- package/src/main/browser/style/webview.css +53 -53
- package/src/main/browser/tabs/tabs-main.ts +323 -323
- package/src/main/browser/tasks-main.ts +268 -268
- package/src/main/browser/terminal-main.ts +301 -301
- package/src/main/browser/text-editor-main.ts +463 -463
- package/src/main/browser/text-editor-model-service.ts +102 -102
- package/src/main/browser/text-editors-main.ts +206 -206
- package/src/main/browser/theme-icon-override.ts +252 -252
- package/src/main/browser/theming-main.ts +42 -42
- package/src/main/browser/timeline-main.ts +80 -80
- package/src/main/browser/view/dnd-file-content-store.ts +42 -42
- package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +81 -81
- package/src/main/browser/view/plugin-view-registry.ts +885 -885
- package/src/main/browser/view/plugin-view-widget.ts +173 -173
- package/src/main/browser/view/tree-view-decorator-service.ts +51 -51
- package/src/main/browser/view/tree-view-widget.tsx +859 -859
- package/src/main/browser/view/tree-views-main.ts +191 -191
- package/src/main/browser/view/view-context-key-service.ts +77 -77
- package/src/main/browser/view-column-service.ts +125 -125
- package/src/main/browser/webview/pre/fake.html +14 -14
- package/src/main/browser/webview/pre/host.js +130 -130
- package/src/main/browser/webview/pre/index.html +17 -17
- package/src/main/browser/webview/pre/main.js +632 -632
- package/src/main/browser/webview/pre/service-worker.js +295 -295
- package/src/main/browser/webview/webview-environment.ts +83 -83
- package/src/main/browser/webview/webview-frontend-security-warnings.ts +59 -59
- package/src/main/browser/webview/webview-preferences.ts +72 -72
- package/src/main/browser/webview/webview-resource-cache.ts +88 -88
- package/src/main/browser/webview/webview-theme-data-provider.ts +124 -124
- package/src/main/browser/webview/webview-widget-factory.ts +43 -43
- package/src/main/browser/webview/webview.ts +629 -629
- package/src/main/browser/webview-views/webview-views-main.ts +142 -142
- package/src/main/browser/webview-views/webview-views.ts +38 -38
- package/src/main/browser/webviews-main.ts +269 -269
- package/src/main/browser/window-state-main.ts +76 -76
- package/src/main/browser/workspace-main.ts +383 -383
- package/src/main/common/plugin-paths-protocol.ts +26 -26
- package/src/main/common/plugin-theia-environment.ts +36 -36
- package/src/main/common/webview-protocol.ts +28 -28
- package/src/main/electron-browser/plugin-ext-frontend-electron-module.ts +25 -25
- package/src/main/electron-browser/webview/electron-webview-widget-factory.ts +70 -70
- package/src/main/node/handlers/plugin-theia-directory-handler.ts +105 -105
- package/src/main/node/handlers/plugin-theia-file-handler.ts +54 -54
- package/src/main/node/paths/const.ts +21 -21
- package/src/main/node/paths/plugin-paths-service.ts +170 -170
- package/src/main/node/plugin-cli-contribution.ts +85 -85
- package/src/main/node/plugin-deployer-contribution.ts +34 -34
- package/src/main/node/plugin-deployer-directory-handler-context-impl.ts +45 -45
- package/src/main/node/plugin-deployer-entry-impl.ts +130 -130
- package/src/main/node/plugin-deployer-file-handler-context-impl.ts +33 -33
- package/src/main/node/plugin-deployer-impl.ts +367 -367
- package/src/main/node/plugin-deployer-proxy-entry-impl.ts +96 -96
- package/src/main/node/plugin-deployer-resolver-context-impl.ts +55 -55
- package/src/main/node/plugin-ext-backend-module.ts +93 -93
- package/src/main/node/plugin-github-resolver.ts +148 -148
- package/src/main/node/plugin-http-resolver.ts +91 -91
- package/src/main/node/plugin-localization-backend-contribution.ts +42 -42
- package/src/main/node/plugin-server-handler.ts +69 -69
- package/src/main/node/plugin-service.ts +82 -82
- package/src/main/node/plugin-theia-deployer-participant.ts +32 -32
- package/src/main/node/plugin-uninstallation-manager.ts +74 -74
- package/src/main/node/plugins-key-value-storage.ts +117 -117
- package/src/main/node/resolvers/local-directory-plugin-deployer-resolver.ts +37 -37
- package/src/main/node/resolvers/local-plugin-deployer-resolver.ts +56 -56
- package/src/main/node/temp-dir-util.ts +27 -27
- package/src/main/node/webview-backend-security-warnings.ts +45 -45
- package/src/main/style/status-bar.css +35 -35
- package/src/plugin/authentication-ext.ts +125 -125
- package/src/plugin/clipboard-ext.ts +37 -37
- package/src/plugin/command-registry.ts +218 -218
- package/src/plugin/comments.ts +518 -518
- package/src/plugin/custom-editors.ts +336 -336
- package/src/plugin/debug/debug-ext.ts +487 -487
- package/src/plugin/debug/plugin-debug-adapter-creator.ts +50 -50
- package/src/plugin/debug/plugin-debug-adapter-session.ts +106 -106
- package/src/plugin/debug/plugin-debug-adapter-tracker.ts +85 -85
- package/src/plugin/decorations.ts +140 -140
- package/src/plugin/dialogs.ts +96 -96
- package/src/plugin/document-data.ts +366 -366
- package/src/plugin/documents.ts +283 -283
- package/src/plugin/editors-and-documents.ts +170 -170
- package/src/plugin/env.ts +134 -134
- package/src/plugin/file-system-event-service-ext-impl.ts +256 -256
- package/src/plugin/file-system-ext-impl.ts +412 -412
- package/src/plugin/known-commands.spec.ts +50 -50
- package/src/plugin/known-commands.ts +412 -412
- package/src/plugin/label-service.ts +36 -36
- package/src/plugin/languages/call-hierarchy.ts +124 -124
- package/src/plugin/languages/code-action.ts +162 -162
- package/src/plugin/languages/color.ts +75 -75
- package/src/plugin/languages/completion.ts +179 -179
- package/src/plugin/languages/declaration.ts +72 -72
- package/src/plugin/languages/definition.ts +73 -73
- package/src/plugin/languages/diagnostics.ts +325 -325
- package/src/plugin/languages/document-formatting.ts +47 -47
- package/src/plugin/languages/document-highlight.ts +61 -61
- package/src/plugin/languages/evaluatable-expression.ts +47 -47
- package/src/plugin/languages/folding.ts +46 -46
- package/src/plugin/languages/hover.ts +58 -58
- package/src/plugin/languages/implementation.ts +73 -73
- package/src/plugin/languages/inlay-hints.ts +149 -149
- package/src/plugin/languages/inline-completion.ts +126 -126
- package/src/plugin/languages/inline-values.ts +50 -50
- package/src/plugin/languages/lens.ts +102 -102
- package/src/plugin/languages/link-provider.ts +79 -79
- package/src/plugin/languages/linked-editing-range.ts +48 -48
- package/src/plugin/languages/on-type-formatting.ts +50 -50
- package/src/plugin/languages/outline.ts +126 -126
- package/src/plugin/languages/range-formatting.ts +48 -48
- package/src/plugin/languages/reference.ts +58 -58
- package/src/plugin/languages/rename.ts +130 -130
- package/src/plugin/languages/selection-range.ts +80 -80
- package/src/plugin/languages/semantic-highlighting.ts +211 -211
- package/src/plugin/languages/signature.ts +82 -82
- package/src/plugin/languages/type-definition.ts +73 -73
- package/src/plugin/languages/type-hierarchy.ts +117 -117
- package/src/plugin/languages/util.ts +26 -26
- package/src/plugin/languages/workspace-symbol.ts +66 -66
- package/src/plugin/languages-utils.ts +56 -56
- package/src/plugin/languages.ts +969 -969
- package/src/plugin/markdown-string.ts +115 -115
- package/src/plugin/message-registry.ts +65 -65
- package/src/plugin/node/debug/debug.spec.ts +94 -94
- package/src/plugin/node/debug/plugin-node-debug-adapter-creator.ts +167 -167
- package/src/plugin/node/env-node-ext.ts +69 -69
- package/src/plugin/notification.ts +80 -80
- package/src/plugin/output-channel/output-channel-item.ts +73 -73
- package/src/plugin/output-channel-registry.ts +39 -39
- package/src/plugin/path.spec.ts +40 -40
- package/src/plugin/path.ts +68 -68
- package/src/plugin/plugin-context.ts +1387 -1387
- package/src/plugin/plugin-icon-path.ts +50 -50
- package/src/plugin/plugin-manager.ts +446 -446
- package/src/plugin/plugin-storage.ts +120 -120
- package/src/plugin/preference-registry.spec.ts +299 -299
- package/src/plugin/preference-registry.ts +337 -337
- package/src/plugin/prefix-sum-computer.ts +218 -218
- package/src/plugin/quick-open.ts +772 -772
- package/src/plugin/scm.ts +910 -910
- package/src/plugin/secrets-ext.ts +84 -84
- package/src/plugin/status-bar/status-bar-item.ts +193 -193
- package/src/plugin/status-bar-message-registry.ts +103 -103
- package/src/plugin/stubs/tests-api.ts +96 -96
- package/src/plugin/tabs.ts +426 -426
- package/src/plugin/tasks/task-provider.ts +60 -60
- package/src/plugin/tasks/tasks.ts +247 -247
- package/src/plugin/terminal-ext.ts +494 -494
- package/src/plugin/text-editor.ts +522 -522
- package/src/plugin/text-editors.ts +150 -150
- package/src/plugin/theming.ts +73 -73
- package/src/plugin/timeline.ts +186 -186
- package/src/plugin/tree/tree-views.ts +612 -612
- package/src/plugin/type-converters.spec.ts +476 -476
- package/src/plugin/type-converters.ts +1350 -1350
- package/src/plugin/types-impl.spec.ts +85 -85
- package/src/plugin/types-impl.ts +3407 -3407
- package/src/plugin/webview-views.ts +213 -213
- package/src/plugin/webviews.ts +433 -433
- package/src/plugin/window-state.ts +68 -68
- package/src/plugin/word-helper.ts +162 -162
- package/src/plugin/workspace.ts +448 -448
- package/src/plugin-ext-backend-electron-module.ts +24 -24
- package/src/plugin-ext-backend-module.ts +24 -24
- package/src/plugin-ext-frontend-electron-module.ts +19 -19
- package/src/plugin-ext-frontend-module.ts +19 -19
- package/src/typings/index.d.ts +25 -25
|
@@ -1,367 +1,367 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2018 Red Hat, Inc. and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
-
|
|
19
|
-
import { injectable, optional, multiInject, inject, named } from '@theia/core/shared/inversify';
|
|
20
|
-
import * as semver from 'semver';
|
|
21
|
-
import {
|
|
22
|
-
PluginDeployerResolver, PluginDeployerFileHandler, PluginDeployerDirectoryHandler,
|
|
23
|
-
PluginDeployerEntry, PluginDeployer, PluginDeployerParticipant, PluginDeployerStartContext,
|
|
24
|
-
PluginDeployerResolverInit, PluginDeployerFileHandlerContext,
|
|
25
|
-
PluginDeployerDirectoryHandlerContext, PluginDeployerEntryType, PluginDeployerHandler, PluginType, UnresolvedPluginEntry, PluginIdentifiers, PluginDeployOptions
|
|
26
|
-
} from '../../common/plugin-protocol';
|
|
27
|
-
import { PluginDeployerEntryImpl } from './plugin-deployer-entry-impl';
|
|
28
|
-
import {
|
|
29
|
-
PluginDeployerResolverContextImpl,
|
|
30
|
-
PluginDeployerResolverInitImpl
|
|
31
|
-
} from './plugin-deployer-resolver-context-impl';
|
|
32
|
-
import { ProxyPluginDeployerEntry } from './plugin-deployer-proxy-entry-impl';
|
|
33
|
-
import { PluginDeployerFileHandlerContextImpl } from './plugin-deployer-file-handler-context-impl';
|
|
34
|
-
import { PluginDeployerDirectoryHandlerContextImpl } from './plugin-deployer-directory-handler-context-impl';
|
|
35
|
-
import { ILogger, Emitter, ContributionProvider } from '@theia/core';
|
|
36
|
-
import { PluginCliContribution } from './plugin-cli-contribution';
|
|
37
|
-
import { Measurement, Stopwatch } from '@theia/core/lib/common';
|
|
38
|
-
|
|
39
|
-
@injectable()
|
|
40
|
-
export class PluginDeployerImpl implements PluginDeployer {
|
|
41
|
-
|
|
42
|
-
protected readonly onDidDeployEmitter = new Emitter<void>();
|
|
43
|
-
readonly onDidDeploy = this.onDidDeployEmitter.event;
|
|
44
|
-
|
|
45
|
-
@inject(ILogger)
|
|
46
|
-
protected readonly logger: ILogger;
|
|
47
|
-
|
|
48
|
-
@inject(PluginDeployerHandler)
|
|
49
|
-
protected readonly pluginDeployerHandler: PluginDeployerHandler;
|
|
50
|
-
|
|
51
|
-
@inject(PluginCliContribution)
|
|
52
|
-
protected readonly cliContribution: PluginCliContribution;
|
|
53
|
-
|
|
54
|
-
@inject(Stopwatch)
|
|
55
|
-
protected readonly stopwatch: Stopwatch;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Inject all plugin resolvers found at runtime.
|
|
59
|
-
*/
|
|
60
|
-
@optional() @multiInject(PluginDeployerResolver)
|
|
61
|
-
private pluginResolvers: PluginDeployerResolver[];
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Inject all file handler for local resolved plugins.
|
|
65
|
-
*/
|
|
66
|
-
@optional() @multiInject(PluginDeployerFileHandler)
|
|
67
|
-
private pluginDeployerFileHandlers: PluginDeployerFileHandler[];
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Inject all directory handler for local resolved plugins.
|
|
71
|
-
*/
|
|
72
|
-
@optional() @multiInject(PluginDeployerDirectoryHandler)
|
|
73
|
-
private pluginDeployerDirectoryHandlers: PluginDeployerDirectoryHandler[];
|
|
74
|
-
|
|
75
|
-
@inject(ContributionProvider) @named(PluginDeployerParticipant)
|
|
76
|
-
protected readonly participants: ContributionProvider<PluginDeployerParticipant>;
|
|
77
|
-
|
|
78
|
-
public start(): void {
|
|
79
|
-
this.logger.debug('Starting the deployer with the list of resolvers', this.pluginResolvers);
|
|
80
|
-
this.doStart();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public async initResolvers(): Promise<Array<void>> {
|
|
84
|
-
|
|
85
|
-
// call init on each resolver
|
|
86
|
-
const pluginDeployerResolverInit: PluginDeployerResolverInit = new PluginDeployerResolverInitImpl();
|
|
87
|
-
const promises = this.pluginResolvers.map(async pluginResolver => {
|
|
88
|
-
if (pluginResolver.init) {
|
|
89
|
-
pluginResolver.init(pluginDeployerResolverInit);
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
return Promise.all(promises);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
protected async doStart(): Promise<void> {
|
|
96
|
-
|
|
97
|
-
// init resolvers
|
|
98
|
-
await this.initResolvers();
|
|
99
|
-
|
|
100
|
-
// check THEIA_DEFAULT_PLUGINS or THEIA_PLUGINS env var
|
|
101
|
-
const defaultPluginsValue = process.env.THEIA_DEFAULT_PLUGINS || undefined;
|
|
102
|
-
const pluginsValue = process.env.THEIA_PLUGINS || undefined;
|
|
103
|
-
// check the `--plugins` CLI option
|
|
104
|
-
const defaultPluginsValueViaCli = this.cliContribution.localDir();
|
|
105
|
-
|
|
106
|
-
this.logger.debug('Found the list of default plugins ID on env:', defaultPluginsValue);
|
|
107
|
-
this.logger.debug('Found the list of plugins ID on env:', pluginsValue);
|
|
108
|
-
this.logger.debug('Found the list of default plugins ID from CLI:', defaultPluginsValueViaCli);
|
|
109
|
-
|
|
110
|
-
// transform it to array
|
|
111
|
-
const defaultPluginIdList = defaultPluginsValue ? defaultPluginsValue.split(',') : [];
|
|
112
|
-
const pluginIdList = pluginsValue ? pluginsValue.split(',') : [];
|
|
113
|
-
const systemEntries = defaultPluginIdList.concat(pluginIdList).concat(defaultPluginsValueViaCli ? defaultPluginsValueViaCli.split(',') : []);
|
|
114
|
-
|
|
115
|
-
const userEntries: string[] = [];
|
|
116
|
-
const context: PluginDeployerStartContext = { userEntries, systemEntries };
|
|
117
|
-
|
|
118
|
-
for (const contribution of this.participants.getContributions()) {
|
|
119
|
-
if (contribution.onWillStart) {
|
|
120
|
-
await contribution.onWillStart(context);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const deployPlugins = this.measure('deployPlugins');
|
|
125
|
-
const unresolvedUserEntries = context.userEntries.map(id => ({
|
|
126
|
-
id,
|
|
127
|
-
type: PluginType.User
|
|
128
|
-
}));
|
|
129
|
-
const unresolvedSystemEntries = context.systemEntries.map(id => ({
|
|
130
|
-
id,
|
|
131
|
-
type: PluginType.System
|
|
132
|
-
}));
|
|
133
|
-
const plugins = await this.resolvePlugins([...unresolvedUserEntries, ...unresolvedSystemEntries]);
|
|
134
|
-
deployPlugins.log('Resolve plugins list');
|
|
135
|
-
await this.deployPlugins(plugins);
|
|
136
|
-
deployPlugins.log('Deploy plugins list');
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
async uninstall(pluginId: PluginIdentifiers.VersionedId): Promise<void> {
|
|
140
|
-
await this.pluginDeployerHandler.uninstallPlugin(pluginId);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
async undeploy(pluginId: PluginIdentifiers.VersionedId): Promise<void> {
|
|
144
|
-
if (await this.pluginDeployerHandler.undeployPlugin(pluginId)) {
|
|
145
|
-
this.onDidDeployEmitter.fire();
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
async deploy(plugin: UnresolvedPluginEntry, options?: PluginDeployOptions): Promise<number> {
|
|
150
|
-
const deploy = this.measure('deploy');
|
|
151
|
-
const numDeployedPlugins = await this.deployMultipleEntries([plugin], options);
|
|
152
|
-
deploy.log(`Deploy plugin ${plugin.id}`);
|
|
153
|
-
return numDeployedPlugins;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
protected async deployMultipleEntries(plugins: UnresolvedPluginEntry[], options?: PluginDeployOptions): Promise<number> {
|
|
157
|
-
const pluginsToDeploy = await this.resolvePlugins(plugins, options);
|
|
158
|
-
return this.deployPlugins(pluginsToDeploy);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Resolves plugins for the given type.
|
|
163
|
-
*
|
|
164
|
-
* Only call it a single time before triggering a single deploy to prevent re-resolving of extension dependencies, i.e.
|
|
165
|
-
* ```ts
|
|
166
|
-
* const deployer: PluginDeployer;
|
|
167
|
-
* deployer.deployPlugins(await deployer.resolvePlugins(allPluginEntries));
|
|
168
|
-
* ```
|
|
169
|
-
*/
|
|
170
|
-
async resolvePlugins(plugins: UnresolvedPluginEntry[], options?: PluginDeployOptions): Promise<PluginDeployerEntry[]> {
|
|
171
|
-
const visited = new Set<string>();
|
|
172
|
-
const hasBeenVisited = (id: string) => visited.has(id) || (visited.add(id), false);
|
|
173
|
-
const pluginsToDeploy = new Map<PluginIdentifiers.VersionedId, PluginDeployerEntry>();
|
|
174
|
-
const unversionedIdsHandled = new Map<PluginIdentifiers.UnversionedId, string[]>();
|
|
175
|
-
|
|
176
|
-
const queue: UnresolvedPluginEntry[] = [...plugins];
|
|
177
|
-
while (queue.length) {
|
|
178
|
-
const pendingDependencies: Array<{
|
|
179
|
-
dependencies: Map<string, string>
|
|
180
|
-
type: PluginType
|
|
181
|
-
}> = [];
|
|
182
|
-
await Promise.all(queue.map(async entry => {
|
|
183
|
-
if (hasBeenVisited(entry.id)) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
const type = entry.type ?? PluginType.System;
|
|
187
|
-
try {
|
|
188
|
-
const pluginDeployerEntries = await this.resolveAndHandle(entry.id, type, options);
|
|
189
|
-
for (const deployerEntry of pluginDeployerEntries) {
|
|
190
|
-
const pluginData = await this.pluginDeployerHandler.getPluginDependencies(deployerEntry);
|
|
191
|
-
const versionedId = pluginData && PluginIdentifiers.componentsToVersionedId(pluginData.metadata.model);
|
|
192
|
-
const unversionedId = versionedId && PluginIdentifiers.componentsToUnversionedId(pluginData.metadata.model);
|
|
193
|
-
if (unversionedId && !pluginsToDeploy.has(versionedId)) {
|
|
194
|
-
pluginsToDeploy.set(versionedId, deployerEntry);
|
|
195
|
-
if (pluginData.mapping) {
|
|
196
|
-
pendingDependencies.push({ dependencies: pluginData.mapping, type });
|
|
197
|
-
}
|
|
198
|
-
const otherVersions = unversionedIdsHandled.get(unversionedId) ?? [];
|
|
199
|
-
otherVersions.push(pluginData.metadata.model.version);
|
|
200
|
-
if (otherVersions.length === 1) {
|
|
201
|
-
unversionedIdsHandled.set(unversionedId, otherVersions);
|
|
202
|
-
} else {
|
|
203
|
-
this.findBestVersion(unversionedId, otherVersions, pluginsToDeploy);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
} catch (e) {
|
|
208
|
-
console.error(`Failed to resolve plugins from '${entry.id}'`, e);
|
|
209
|
-
}
|
|
210
|
-
}));
|
|
211
|
-
queue.length = 0;
|
|
212
|
-
for (const { dependencies, type } of pendingDependencies) {
|
|
213
|
-
for (const [dependency, deployableDependency] of dependencies) {
|
|
214
|
-
if (!unversionedIdsHandled.has(dependency as PluginIdentifiers.UnversionedId)) {
|
|
215
|
-
queue.push({
|
|
216
|
-
id: deployableDependency,
|
|
217
|
-
type
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
return [...pluginsToDeploy.values()];
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
protected async resolveAndHandle(id: string, type: PluginType, options?: PluginDeployOptions): Promise<PluginDeployerEntry[]> {
|
|
227
|
-
const entries = await this.resolvePlugin(id, type, options);
|
|
228
|
-
await this.applyFileHandlers(entries);
|
|
229
|
-
await this.applyDirectoryFileHandlers(entries);
|
|
230
|
-
return entries;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
protected findBestVersion(unversionedId: PluginIdentifiers.UnversionedId, versions: string[], knownPlugins: Map<PluginIdentifiers.VersionedId, PluginDeployerEntry>): void {
|
|
234
|
-
// If left better, return negative. Then best is index 0.
|
|
235
|
-
versions.map(version => ({ version, plugin: knownPlugins.get(PluginIdentifiers.idAndVersionToVersionedId({ version, id: unversionedId })) }))
|
|
236
|
-
.sort((left, right) => {
|
|
237
|
-
const leftPlugin = left.plugin;
|
|
238
|
-
const rightPlugin = right.plugin;
|
|
239
|
-
if (!leftPlugin && !rightPlugin) {
|
|
240
|
-
return 0;
|
|
241
|
-
}
|
|
242
|
-
if (!rightPlugin) {
|
|
243
|
-
return -1;
|
|
244
|
-
}
|
|
245
|
-
if (!leftPlugin) {
|
|
246
|
-
return 1;
|
|
247
|
-
}
|
|
248
|
-
if (leftPlugin.type === PluginType.System && rightPlugin.type === PluginType.User) {
|
|
249
|
-
return -1;
|
|
250
|
-
}
|
|
251
|
-
if (leftPlugin.type === PluginType.User && rightPlugin.type === PluginType.System) {
|
|
252
|
-
return 1;
|
|
253
|
-
}
|
|
254
|
-
if (semver.gtr(left.version, right.version)) {
|
|
255
|
-
return -1;
|
|
256
|
-
}
|
|
257
|
-
return 1;
|
|
258
|
-
}).forEach((versionedEntry, index) => {
|
|
259
|
-
if (index !== 0) {
|
|
260
|
-
// Mark as not accepted to prevent deployment of all but the winner.
|
|
261
|
-
versionedEntry.plugin?.accept();
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* deploy all plugins that have been accepted
|
|
268
|
-
*/
|
|
269
|
-
async deployPlugins(pluginsToDeploy: PluginDeployerEntry[]): Promise<number> {
|
|
270
|
-
const acceptedPlugins = pluginsToDeploy.filter(pluginDeployerEntry => pluginDeployerEntry.isAccepted());
|
|
271
|
-
const acceptedFrontendPlugins = pluginsToDeploy.filter(pluginDeployerEntry => pluginDeployerEntry.isAccepted(PluginDeployerEntryType.FRONTEND));
|
|
272
|
-
const acceptedBackendPlugins = pluginsToDeploy.filter(pluginDeployerEntry => pluginDeployerEntry.isAccepted(PluginDeployerEntryType.BACKEND));
|
|
273
|
-
|
|
274
|
-
this.logger.debug('the accepted plugins are', acceptedPlugins);
|
|
275
|
-
this.logger.debug('the acceptedFrontendPlugins plugins are', acceptedFrontendPlugins);
|
|
276
|
-
this.logger.debug('the acceptedBackendPlugins plugins are', acceptedBackendPlugins);
|
|
277
|
-
|
|
278
|
-
acceptedPlugins.forEach(plugin => {
|
|
279
|
-
this.logger.debug('will deploy plugin', plugin.id(), 'with changes', JSON.stringify(plugin.getChanges()), 'and this plugin has been resolved by', plugin.resolvedBy());
|
|
280
|
-
});
|
|
281
|
-
|
|
282
|
-
// local path to launch
|
|
283
|
-
const pluginPaths = acceptedBackendPlugins.map(pluginEntry => pluginEntry.path());
|
|
284
|
-
this.logger.debug('local path to deploy on remote instance', pluginPaths);
|
|
285
|
-
|
|
286
|
-
const deployments = await Promise.all([
|
|
287
|
-
// start the backend plugins
|
|
288
|
-
this.pluginDeployerHandler.deployBackendPlugins(acceptedBackendPlugins),
|
|
289
|
-
this.pluginDeployerHandler.deployFrontendPlugins(acceptedFrontendPlugins)
|
|
290
|
-
]);
|
|
291
|
-
this.onDidDeployEmitter.fire(undefined);
|
|
292
|
-
return deployments.reduce<number>((accumulated, current) => accumulated += current ?? 0, 0);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* If there are some single files, try to see if we can work on these files (like unpacking it, etc)
|
|
297
|
-
*/
|
|
298
|
-
public async applyFileHandlers(pluginDeployerEntries: PluginDeployerEntry[]): Promise<any> {
|
|
299
|
-
const waitPromises: Array<Promise<any>> = [];
|
|
300
|
-
|
|
301
|
-
pluginDeployerEntries.filter(pluginDeployerEntry => pluginDeployerEntry.isResolved()).map(pluginDeployerEntry => {
|
|
302
|
-
this.pluginDeployerFileHandlers.map(pluginFileHandler => {
|
|
303
|
-
const proxyPluginDeployerEntry = new ProxyPluginDeployerEntry(pluginFileHandler, (pluginDeployerEntry) as PluginDeployerEntryImpl);
|
|
304
|
-
if (pluginFileHandler.accept(proxyPluginDeployerEntry)) {
|
|
305
|
-
const pluginDeployerFileHandlerContext: PluginDeployerFileHandlerContext = new PluginDeployerFileHandlerContextImpl(proxyPluginDeployerEntry);
|
|
306
|
-
const promise: Promise<void> = pluginFileHandler.handle(pluginDeployerFileHandlerContext);
|
|
307
|
-
waitPromises.push(promise);
|
|
308
|
-
}
|
|
309
|
-
});
|
|
310
|
-
|
|
311
|
-
});
|
|
312
|
-
return Promise.all(waitPromises);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
/**
|
|
316
|
-
* Check for all registered directories to see if there are some plugins that can be accepted to be deployed.
|
|
317
|
-
*/
|
|
318
|
-
public async applyDirectoryFileHandlers(pluginDeployerEntries: PluginDeployerEntry[]): Promise<any> {
|
|
319
|
-
const waitPromises: Array<Promise<any>> = [];
|
|
320
|
-
|
|
321
|
-
pluginDeployerEntries.filter(pluginDeployerEntry => pluginDeployerEntry.isResolved()).map(pluginDeployerEntry => {
|
|
322
|
-
this.pluginDeployerDirectoryHandlers.map(pluginDirectoryHandler => {
|
|
323
|
-
const proxyPluginDeployerEntry = new ProxyPluginDeployerEntry(pluginDirectoryHandler, (pluginDeployerEntry) as PluginDeployerEntryImpl);
|
|
324
|
-
if (pluginDirectoryHandler.accept(proxyPluginDeployerEntry)) {
|
|
325
|
-
const pluginDeployerDirectoryHandlerContext: PluginDeployerDirectoryHandlerContext = new PluginDeployerDirectoryHandlerContextImpl(proxyPluginDeployerEntry);
|
|
326
|
-
const promise: Promise<void> = pluginDirectoryHandler.handle(pluginDeployerDirectoryHandlerContext);
|
|
327
|
-
waitPromises.push(promise);
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
});
|
|
332
|
-
return Promise.all(waitPromises);
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Check a plugin ID see if there are some resolvers that can handle it. If there is a matching resolver, then we resolve the plugin
|
|
337
|
-
*/
|
|
338
|
-
public async resolvePlugin(pluginId: string, type: PluginType = PluginType.System, options?: PluginDeployOptions): Promise<PluginDeployerEntry[]> {
|
|
339
|
-
const pluginDeployerEntries: PluginDeployerEntry[] = [];
|
|
340
|
-
const foundPluginResolver = this.pluginResolvers.find(pluginResolver => pluginResolver.accept(pluginId));
|
|
341
|
-
// there is a resolver for the input
|
|
342
|
-
if (foundPluginResolver) {
|
|
343
|
-
|
|
344
|
-
// create context object
|
|
345
|
-
const context = new PluginDeployerResolverContextImpl(foundPluginResolver, pluginId);
|
|
346
|
-
|
|
347
|
-
await foundPluginResolver.resolve(context, options);
|
|
348
|
-
|
|
349
|
-
context.getPlugins().forEach(entry => {
|
|
350
|
-
entry.type = type;
|
|
351
|
-
pluginDeployerEntries.push(entry);
|
|
352
|
-
});
|
|
353
|
-
} else {
|
|
354
|
-
// log it for now
|
|
355
|
-
this.logger.error('No plugin resolver found for the entry', pluginId);
|
|
356
|
-
const unresolvedEntry = new PluginDeployerEntryImpl(pluginId, pluginId);
|
|
357
|
-
unresolvedEntry.type = type;
|
|
358
|
-
pluginDeployerEntries.push(unresolvedEntry);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
return pluginDeployerEntries;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
protected measure(name: string): Measurement {
|
|
365
|
-
return this.stopwatch.start(name);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2018 Red Hat, Inc. and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
+
|
|
19
|
+
import { injectable, optional, multiInject, inject, named } from '@theia/core/shared/inversify';
|
|
20
|
+
import * as semver from 'semver';
|
|
21
|
+
import {
|
|
22
|
+
PluginDeployerResolver, PluginDeployerFileHandler, PluginDeployerDirectoryHandler,
|
|
23
|
+
PluginDeployerEntry, PluginDeployer, PluginDeployerParticipant, PluginDeployerStartContext,
|
|
24
|
+
PluginDeployerResolverInit, PluginDeployerFileHandlerContext,
|
|
25
|
+
PluginDeployerDirectoryHandlerContext, PluginDeployerEntryType, PluginDeployerHandler, PluginType, UnresolvedPluginEntry, PluginIdentifiers, PluginDeployOptions
|
|
26
|
+
} from '../../common/plugin-protocol';
|
|
27
|
+
import { PluginDeployerEntryImpl } from './plugin-deployer-entry-impl';
|
|
28
|
+
import {
|
|
29
|
+
PluginDeployerResolverContextImpl,
|
|
30
|
+
PluginDeployerResolverInitImpl
|
|
31
|
+
} from './plugin-deployer-resolver-context-impl';
|
|
32
|
+
import { ProxyPluginDeployerEntry } from './plugin-deployer-proxy-entry-impl';
|
|
33
|
+
import { PluginDeployerFileHandlerContextImpl } from './plugin-deployer-file-handler-context-impl';
|
|
34
|
+
import { PluginDeployerDirectoryHandlerContextImpl } from './plugin-deployer-directory-handler-context-impl';
|
|
35
|
+
import { ILogger, Emitter, ContributionProvider } from '@theia/core';
|
|
36
|
+
import { PluginCliContribution } from './plugin-cli-contribution';
|
|
37
|
+
import { Measurement, Stopwatch } from '@theia/core/lib/common';
|
|
38
|
+
|
|
39
|
+
@injectable()
|
|
40
|
+
export class PluginDeployerImpl implements PluginDeployer {
|
|
41
|
+
|
|
42
|
+
protected readonly onDidDeployEmitter = new Emitter<void>();
|
|
43
|
+
readonly onDidDeploy = this.onDidDeployEmitter.event;
|
|
44
|
+
|
|
45
|
+
@inject(ILogger)
|
|
46
|
+
protected readonly logger: ILogger;
|
|
47
|
+
|
|
48
|
+
@inject(PluginDeployerHandler)
|
|
49
|
+
protected readonly pluginDeployerHandler: PluginDeployerHandler;
|
|
50
|
+
|
|
51
|
+
@inject(PluginCliContribution)
|
|
52
|
+
protected readonly cliContribution: PluginCliContribution;
|
|
53
|
+
|
|
54
|
+
@inject(Stopwatch)
|
|
55
|
+
protected readonly stopwatch: Stopwatch;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Inject all plugin resolvers found at runtime.
|
|
59
|
+
*/
|
|
60
|
+
@optional() @multiInject(PluginDeployerResolver)
|
|
61
|
+
private pluginResolvers: PluginDeployerResolver[];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Inject all file handler for local resolved plugins.
|
|
65
|
+
*/
|
|
66
|
+
@optional() @multiInject(PluginDeployerFileHandler)
|
|
67
|
+
private pluginDeployerFileHandlers: PluginDeployerFileHandler[];
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Inject all directory handler for local resolved plugins.
|
|
71
|
+
*/
|
|
72
|
+
@optional() @multiInject(PluginDeployerDirectoryHandler)
|
|
73
|
+
private pluginDeployerDirectoryHandlers: PluginDeployerDirectoryHandler[];
|
|
74
|
+
|
|
75
|
+
@inject(ContributionProvider) @named(PluginDeployerParticipant)
|
|
76
|
+
protected readonly participants: ContributionProvider<PluginDeployerParticipant>;
|
|
77
|
+
|
|
78
|
+
public start(): void {
|
|
79
|
+
this.logger.debug('Starting the deployer with the list of resolvers', this.pluginResolvers);
|
|
80
|
+
this.doStart();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public async initResolvers(): Promise<Array<void>> {
|
|
84
|
+
|
|
85
|
+
// call init on each resolver
|
|
86
|
+
const pluginDeployerResolverInit: PluginDeployerResolverInit = new PluginDeployerResolverInitImpl();
|
|
87
|
+
const promises = this.pluginResolvers.map(async pluginResolver => {
|
|
88
|
+
if (pluginResolver.init) {
|
|
89
|
+
pluginResolver.init(pluginDeployerResolverInit);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return Promise.all(promises);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
protected async doStart(): Promise<void> {
|
|
96
|
+
|
|
97
|
+
// init resolvers
|
|
98
|
+
await this.initResolvers();
|
|
99
|
+
|
|
100
|
+
// check THEIA_DEFAULT_PLUGINS or THEIA_PLUGINS env var
|
|
101
|
+
const defaultPluginsValue = process.env.THEIA_DEFAULT_PLUGINS || undefined;
|
|
102
|
+
const pluginsValue = process.env.THEIA_PLUGINS || undefined;
|
|
103
|
+
// check the `--plugins` CLI option
|
|
104
|
+
const defaultPluginsValueViaCli = this.cliContribution.localDir();
|
|
105
|
+
|
|
106
|
+
this.logger.debug('Found the list of default plugins ID on env:', defaultPluginsValue);
|
|
107
|
+
this.logger.debug('Found the list of plugins ID on env:', pluginsValue);
|
|
108
|
+
this.logger.debug('Found the list of default plugins ID from CLI:', defaultPluginsValueViaCli);
|
|
109
|
+
|
|
110
|
+
// transform it to array
|
|
111
|
+
const defaultPluginIdList = defaultPluginsValue ? defaultPluginsValue.split(',') : [];
|
|
112
|
+
const pluginIdList = pluginsValue ? pluginsValue.split(',') : [];
|
|
113
|
+
const systemEntries = defaultPluginIdList.concat(pluginIdList).concat(defaultPluginsValueViaCli ? defaultPluginsValueViaCli.split(',') : []);
|
|
114
|
+
|
|
115
|
+
const userEntries: string[] = [];
|
|
116
|
+
const context: PluginDeployerStartContext = { userEntries, systemEntries };
|
|
117
|
+
|
|
118
|
+
for (const contribution of this.participants.getContributions()) {
|
|
119
|
+
if (contribution.onWillStart) {
|
|
120
|
+
await contribution.onWillStart(context);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const deployPlugins = this.measure('deployPlugins');
|
|
125
|
+
const unresolvedUserEntries = context.userEntries.map(id => ({
|
|
126
|
+
id,
|
|
127
|
+
type: PluginType.User
|
|
128
|
+
}));
|
|
129
|
+
const unresolvedSystemEntries = context.systemEntries.map(id => ({
|
|
130
|
+
id,
|
|
131
|
+
type: PluginType.System
|
|
132
|
+
}));
|
|
133
|
+
const plugins = await this.resolvePlugins([...unresolvedUserEntries, ...unresolvedSystemEntries]);
|
|
134
|
+
deployPlugins.log('Resolve plugins list');
|
|
135
|
+
await this.deployPlugins(plugins);
|
|
136
|
+
deployPlugins.log('Deploy plugins list');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
async uninstall(pluginId: PluginIdentifiers.VersionedId): Promise<void> {
|
|
140
|
+
await this.pluginDeployerHandler.uninstallPlugin(pluginId);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
async undeploy(pluginId: PluginIdentifiers.VersionedId): Promise<void> {
|
|
144
|
+
if (await this.pluginDeployerHandler.undeployPlugin(pluginId)) {
|
|
145
|
+
this.onDidDeployEmitter.fire();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
async deploy(plugin: UnresolvedPluginEntry, options?: PluginDeployOptions): Promise<number> {
|
|
150
|
+
const deploy = this.measure('deploy');
|
|
151
|
+
const numDeployedPlugins = await this.deployMultipleEntries([plugin], options);
|
|
152
|
+
deploy.log(`Deploy plugin ${plugin.id}`);
|
|
153
|
+
return numDeployedPlugins;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
protected async deployMultipleEntries(plugins: UnresolvedPluginEntry[], options?: PluginDeployOptions): Promise<number> {
|
|
157
|
+
const pluginsToDeploy = await this.resolvePlugins(plugins, options);
|
|
158
|
+
return this.deployPlugins(pluginsToDeploy);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Resolves plugins for the given type.
|
|
163
|
+
*
|
|
164
|
+
* Only call it a single time before triggering a single deploy to prevent re-resolving of extension dependencies, i.e.
|
|
165
|
+
* ```ts
|
|
166
|
+
* const deployer: PluginDeployer;
|
|
167
|
+
* deployer.deployPlugins(await deployer.resolvePlugins(allPluginEntries));
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
async resolvePlugins(plugins: UnresolvedPluginEntry[], options?: PluginDeployOptions): Promise<PluginDeployerEntry[]> {
|
|
171
|
+
const visited = new Set<string>();
|
|
172
|
+
const hasBeenVisited = (id: string) => visited.has(id) || (visited.add(id), false);
|
|
173
|
+
const pluginsToDeploy = new Map<PluginIdentifiers.VersionedId, PluginDeployerEntry>();
|
|
174
|
+
const unversionedIdsHandled = new Map<PluginIdentifiers.UnversionedId, string[]>();
|
|
175
|
+
|
|
176
|
+
const queue: UnresolvedPluginEntry[] = [...plugins];
|
|
177
|
+
while (queue.length) {
|
|
178
|
+
const pendingDependencies: Array<{
|
|
179
|
+
dependencies: Map<string, string>
|
|
180
|
+
type: PluginType
|
|
181
|
+
}> = [];
|
|
182
|
+
await Promise.all(queue.map(async entry => {
|
|
183
|
+
if (hasBeenVisited(entry.id)) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const type = entry.type ?? PluginType.System;
|
|
187
|
+
try {
|
|
188
|
+
const pluginDeployerEntries = await this.resolveAndHandle(entry.id, type, options);
|
|
189
|
+
for (const deployerEntry of pluginDeployerEntries) {
|
|
190
|
+
const pluginData = await this.pluginDeployerHandler.getPluginDependencies(deployerEntry);
|
|
191
|
+
const versionedId = pluginData && PluginIdentifiers.componentsToVersionedId(pluginData.metadata.model);
|
|
192
|
+
const unversionedId = versionedId && PluginIdentifiers.componentsToUnversionedId(pluginData.metadata.model);
|
|
193
|
+
if (unversionedId && !pluginsToDeploy.has(versionedId)) {
|
|
194
|
+
pluginsToDeploy.set(versionedId, deployerEntry);
|
|
195
|
+
if (pluginData.mapping) {
|
|
196
|
+
pendingDependencies.push({ dependencies: pluginData.mapping, type });
|
|
197
|
+
}
|
|
198
|
+
const otherVersions = unversionedIdsHandled.get(unversionedId) ?? [];
|
|
199
|
+
otherVersions.push(pluginData.metadata.model.version);
|
|
200
|
+
if (otherVersions.length === 1) {
|
|
201
|
+
unversionedIdsHandled.set(unversionedId, otherVersions);
|
|
202
|
+
} else {
|
|
203
|
+
this.findBestVersion(unversionedId, otherVersions, pluginsToDeploy);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
} catch (e) {
|
|
208
|
+
console.error(`Failed to resolve plugins from '${entry.id}'`, e);
|
|
209
|
+
}
|
|
210
|
+
}));
|
|
211
|
+
queue.length = 0;
|
|
212
|
+
for (const { dependencies, type } of pendingDependencies) {
|
|
213
|
+
for (const [dependency, deployableDependency] of dependencies) {
|
|
214
|
+
if (!unversionedIdsHandled.has(dependency as PluginIdentifiers.UnversionedId)) {
|
|
215
|
+
queue.push({
|
|
216
|
+
id: deployableDependency,
|
|
217
|
+
type
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return [...pluginsToDeploy.values()];
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
protected async resolveAndHandle(id: string, type: PluginType, options?: PluginDeployOptions): Promise<PluginDeployerEntry[]> {
|
|
227
|
+
const entries = await this.resolvePlugin(id, type, options);
|
|
228
|
+
await this.applyFileHandlers(entries);
|
|
229
|
+
await this.applyDirectoryFileHandlers(entries);
|
|
230
|
+
return entries;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
protected findBestVersion(unversionedId: PluginIdentifiers.UnversionedId, versions: string[], knownPlugins: Map<PluginIdentifiers.VersionedId, PluginDeployerEntry>): void {
|
|
234
|
+
// If left better, return negative. Then best is index 0.
|
|
235
|
+
versions.map(version => ({ version, plugin: knownPlugins.get(PluginIdentifiers.idAndVersionToVersionedId({ version, id: unversionedId })) }))
|
|
236
|
+
.sort((left, right) => {
|
|
237
|
+
const leftPlugin = left.plugin;
|
|
238
|
+
const rightPlugin = right.plugin;
|
|
239
|
+
if (!leftPlugin && !rightPlugin) {
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
242
|
+
if (!rightPlugin) {
|
|
243
|
+
return -1;
|
|
244
|
+
}
|
|
245
|
+
if (!leftPlugin) {
|
|
246
|
+
return 1;
|
|
247
|
+
}
|
|
248
|
+
if (leftPlugin.type === PluginType.System && rightPlugin.type === PluginType.User) {
|
|
249
|
+
return -1;
|
|
250
|
+
}
|
|
251
|
+
if (leftPlugin.type === PluginType.User && rightPlugin.type === PluginType.System) {
|
|
252
|
+
return 1;
|
|
253
|
+
}
|
|
254
|
+
if (semver.gtr(left.version, right.version)) {
|
|
255
|
+
return -1;
|
|
256
|
+
}
|
|
257
|
+
return 1;
|
|
258
|
+
}).forEach((versionedEntry, index) => {
|
|
259
|
+
if (index !== 0) {
|
|
260
|
+
// Mark as not accepted to prevent deployment of all but the winner.
|
|
261
|
+
versionedEntry.plugin?.accept();
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* deploy all plugins that have been accepted
|
|
268
|
+
*/
|
|
269
|
+
async deployPlugins(pluginsToDeploy: PluginDeployerEntry[]): Promise<number> {
|
|
270
|
+
const acceptedPlugins = pluginsToDeploy.filter(pluginDeployerEntry => pluginDeployerEntry.isAccepted());
|
|
271
|
+
const acceptedFrontendPlugins = pluginsToDeploy.filter(pluginDeployerEntry => pluginDeployerEntry.isAccepted(PluginDeployerEntryType.FRONTEND));
|
|
272
|
+
const acceptedBackendPlugins = pluginsToDeploy.filter(pluginDeployerEntry => pluginDeployerEntry.isAccepted(PluginDeployerEntryType.BACKEND));
|
|
273
|
+
|
|
274
|
+
this.logger.debug('the accepted plugins are', acceptedPlugins);
|
|
275
|
+
this.logger.debug('the acceptedFrontendPlugins plugins are', acceptedFrontendPlugins);
|
|
276
|
+
this.logger.debug('the acceptedBackendPlugins plugins are', acceptedBackendPlugins);
|
|
277
|
+
|
|
278
|
+
acceptedPlugins.forEach(plugin => {
|
|
279
|
+
this.logger.debug('will deploy plugin', plugin.id(), 'with changes', JSON.stringify(plugin.getChanges()), 'and this plugin has been resolved by', plugin.resolvedBy());
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
// local path to launch
|
|
283
|
+
const pluginPaths = acceptedBackendPlugins.map(pluginEntry => pluginEntry.path());
|
|
284
|
+
this.logger.debug('local path to deploy on remote instance', pluginPaths);
|
|
285
|
+
|
|
286
|
+
const deployments = await Promise.all([
|
|
287
|
+
// start the backend plugins
|
|
288
|
+
this.pluginDeployerHandler.deployBackendPlugins(acceptedBackendPlugins),
|
|
289
|
+
this.pluginDeployerHandler.deployFrontendPlugins(acceptedFrontendPlugins)
|
|
290
|
+
]);
|
|
291
|
+
this.onDidDeployEmitter.fire(undefined);
|
|
292
|
+
return deployments.reduce<number>((accumulated, current) => accumulated += current ?? 0, 0);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* If there are some single files, try to see if we can work on these files (like unpacking it, etc)
|
|
297
|
+
*/
|
|
298
|
+
public async applyFileHandlers(pluginDeployerEntries: PluginDeployerEntry[]): Promise<any> {
|
|
299
|
+
const waitPromises: Array<Promise<any>> = [];
|
|
300
|
+
|
|
301
|
+
pluginDeployerEntries.filter(pluginDeployerEntry => pluginDeployerEntry.isResolved()).map(pluginDeployerEntry => {
|
|
302
|
+
this.pluginDeployerFileHandlers.map(pluginFileHandler => {
|
|
303
|
+
const proxyPluginDeployerEntry = new ProxyPluginDeployerEntry(pluginFileHandler, (pluginDeployerEntry) as PluginDeployerEntryImpl);
|
|
304
|
+
if (pluginFileHandler.accept(proxyPluginDeployerEntry)) {
|
|
305
|
+
const pluginDeployerFileHandlerContext: PluginDeployerFileHandlerContext = new PluginDeployerFileHandlerContextImpl(proxyPluginDeployerEntry);
|
|
306
|
+
const promise: Promise<void> = pluginFileHandler.handle(pluginDeployerFileHandlerContext);
|
|
307
|
+
waitPromises.push(promise);
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
});
|
|
312
|
+
return Promise.all(waitPromises);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Check for all registered directories to see if there are some plugins that can be accepted to be deployed.
|
|
317
|
+
*/
|
|
318
|
+
public async applyDirectoryFileHandlers(pluginDeployerEntries: PluginDeployerEntry[]): Promise<any> {
|
|
319
|
+
const waitPromises: Array<Promise<any>> = [];
|
|
320
|
+
|
|
321
|
+
pluginDeployerEntries.filter(pluginDeployerEntry => pluginDeployerEntry.isResolved()).map(pluginDeployerEntry => {
|
|
322
|
+
this.pluginDeployerDirectoryHandlers.map(pluginDirectoryHandler => {
|
|
323
|
+
const proxyPluginDeployerEntry = new ProxyPluginDeployerEntry(pluginDirectoryHandler, (pluginDeployerEntry) as PluginDeployerEntryImpl);
|
|
324
|
+
if (pluginDirectoryHandler.accept(proxyPluginDeployerEntry)) {
|
|
325
|
+
const pluginDeployerDirectoryHandlerContext: PluginDeployerDirectoryHandlerContext = new PluginDeployerDirectoryHandlerContextImpl(proxyPluginDeployerEntry);
|
|
326
|
+
const promise: Promise<void> = pluginDirectoryHandler.handle(pluginDeployerDirectoryHandlerContext);
|
|
327
|
+
waitPromises.push(promise);
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
});
|
|
332
|
+
return Promise.all(waitPromises);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Check a plugin ID see if there are some resolvers that can handle it. If there is a matching resolver, then we resolve the plugin
|
|
337
|
+
*/
|
|
338
|
+
public async resolvePlugin(pluginId: string, type: PluginType = PluginType.System, options?: PluginDeployOptions): Promise<PluginDeployerEntry[]> {
|
|
339
|
+
const pluginDeployerEntries: PluginDeployerEntry[] = [];
|
|
340
|
+
const foundPluginResolver = this.pluginResolvers.find(pluginResolver => pluginResolver.accept(pluginId));
|
|
341
|
+
// there is a resolver for the input
|
|
342
|
+
if (foundPluginResolver) {
|
|
343
|
+
|
|
344
|
+
// create context object
|
|
345
|
+
const context = new PluginDeployerResolverContextImpl(foundPluginResolver, pluginId);
|
|
346
|
+
|
|
347
|
+
await foundPluginResolver.resolve(context, options);
|
|
348
|
+
|
|
349
|
+
context.getPlugins().forEach(entry => {
|
|
350
|
+
entry.type = type;
|
|
351
|
+
pluginDeployerEntries.push(entry);
|
|
352
|
+
});
|
|
353
|
+
} else {
|
|
354
|
+
// log it for now
|
|
355
|
+
this.logger.error('No plugin resolver found for the entry', pluginId);
|
|
356
|
+
const unresolvedEntry = new PluginDeployerEntryImpl(pluginId, pluginId);
|
|
357
|
+
unresolvedEntry.type = type;
|
|
358
|
+
pluginDeployerEntries.push(unresolvedEntry);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return pluginDeployerEntries;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
protected measure(name: string): Measurement {
|
|
365
|
+
return this.stopwatch.start(name);
|
|
366
|
+
}
|
|
367
|
+
}
|