@theia/plugin-ext 1.45.1 → 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/lib/common/plugin-api-rpc.d.ts +9 -4
  2. package/lib/common/plugin-api-rpc.d.ts.map +1 -1
  3. package/lib/common/plugin-api-rpc.js +3 -1
  4. package/lib/common/plugin-api-rpc.js.map +1 -1
  5. package/lib/common/plugin-ext-api-contribution.d.ts +35 -5
  6. package/lib/common/plugin-ext-api-contribution.d.ts.map +1 -1
  7. package/lib/common/plugin-ext-api-contribution.js.map +1 -1
  8. package/lib/common/plugin-protocol.d.ts +5 -2
  9. package/lib/common/plugin-protocol.d.ts.map +1 -1
  10. package/lib/common/plugin-protocol.js +1 -0
  11. package/lib/common/plugin-protocol.js.map +1 -1
  12. package/lib/common/proxy-handler.d.ts +7 -0
  13. package/lib/common/proxy-handler.d.ts.map +1 -1
  14. package/lib/common/proxy-handler.js +5 -1
  15. package/lib/common/proxy-handler.js.map +1 -1
  16. package/lib/common/rpc-protocol.d.ts +10 -0
  17. package/lib/common/rpc-protocol.d.ts.map +1 -1
  18. package/lib/common/rpc-protocol.js +32 -3
  19. package/lib/common/rpc-protocol.js.map +1 -1
  20. package/lib/hosted/browser/hosted-plugin.d.ts +16 -74
  21. package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
  22. package/lib/hosted/browser/hosted-plugin.js +41 -314
  23. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  24. package/lib/hosted/browser/worker/debug-stub.d.ts +2 -2
  25. package/lib/hosted/browser/worker/debug-stub.d.ts.map +1 -1
  26. package/lib/hosted/browser/worker/debug-stub.js +3 -3
  27. package/lib/hosted/browser/worker/debug-stub.js.map +1 -1
  28. package/lib/hosted/browser/worker/worker-env-ext.d.ts +1 -2
  29. package/lib/hosted/browser/worker/worker-env-ext.d.ts.map +1 -1
  30. package/lib/hosted/browser/worker/worker-env-ext.js +18 -4
  31. package/lib/hosted/browser/worker/worker-env-ext.js.map +1 -1
  32. package/lib/hosted/browser/worker/worker-main.js +20 -32
  33. package/lib/hosted/browser/worker/worker-main.js.map +1 -1
  34. package/lib/hosted/browser/worker/worker-plugin-module.d.ts +5 -0
  35. package/lib/hosted/browser/worker/worker-plugin-module.d.ts.map +1 -0
  36. package/lib/hosted/browser/worker/worker-plugin-module.js +71 -0
  37. package/lib/hosted/browser/worker/worker-plugin-module.js.map +1 -0
  38. package/lib/hosted/common/hosted-plugin.d.ts +97 -0
  39. package/lib/hosted/common/hosted-plugin.d.ts.map +1 -0
  40. package/lib/hosted/common/hosted-plugin.js +408 -0
  41. package/lib/hosted/common/hosted-plugin.js.map +1 -0
  42. package/lib/hosted/node/hosted-plugin-process.d.ts +1 -1
  43. package/lib/hosted/node/hosted-plugin-process.d.ts.map +1 -1
  44. package/lib/hosted/node/hosted-plugin-process.js +2 -2
  45. package/lib/hosted/node/hosted-plugin-process.js.map +1 -1
  46. package/lib/hosted/node/plugin-ext-hosted-backend-module.d.ts.map +1 -1
  47. package/lib/hosted/node/plugin-ext-hosted-backend-module.js +2 -0
  48. package/lib/hosted/node/plugin-ext-hosted-backend-module.js.map +1 -1
  49. package/lib/hosted/node/plugin-host-module.d.ts +5 -0
  50. package/lib/hosted/node/plugin-host-module.d.ts.map +1 -0
  51. package/lib/hosted/node/plugin-host-module.js +68 -0
  52. package/lib/hosted/node/plugin-host-module.js.map +1 -0
  53. package/lib/hosted/node/plugin-host-rpc.d.ts +93 -7
  54. package/lib/hosted/node/plugin-host-rpc.d.ts.map +1 -1
  55. package/lib/hosted/node/plugin-host-rpc.js +202 -53
  56. package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
  57. package/lib/hosted/node/plugin-host.js +6 -5
  58. package/lib/hosted/node/plugin-host.js.map +1 -1
  59. package/lib/hosted/node/plugin-reader.d.ts.map +1 -1
  60. package/lib/hosted/node/plugin-reader.js +3 -0
  61. package/lib/hosted/node/plugin-reader.js.map +1 -1
  62. package/lib/hosted/node/plugin-service.d.ts +8 -0
  63. package/lib/hosted/node/plugin-service.d.ts.map +1 -1
  64. package/lib/hosted/node/plugin-service.js +14 -4
  65. package/lib/hosted/node/plugin-service.js.map +1 -1
  66. package/lib/hosted/node/scanners/file-plugin-uri-factory.js +1 -1
  67. package/lib/hosted/node/scanners/file-plugin-uri-factory.js.map +1 -1
  68. package/lib/hosted/node/scanners/scanner-theia.d.ts +17 -3
  69. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  70. package/lib/hosted/node/scanners/scanner-theia.js +48 -19
  71. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  72. package/lib/main/browser/authentication-main.d.ts.map +1 -1
  73. package/lib/main/browser/authentication-main.js +3 -1
  74. package/lib/main/browser/authentication-main.js.map +1 -1
  75. package/lib/main/browser/env-main.d.ts +1 -10
  76. package/lib/main/browser/env-main.d.ts.map +1 -1
  77. package/lib/main/browser/env-main.js +2 -21
  78. package/lib/main/browser/env-main.js.map +1 -1
  79. package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
  80. package/lib/main/browser/menus/menus-contribution-handler.js +6 -3
  81. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  82. package/lib/main/browser/menus/plugin-menu-command-adapter.js +1 -1
  83. package/lib/main/browser/menus/plugin-menu-command-adapter.js.map +1 -1
  84. package/lib/main/browser/message-registry-main.d.ts +6 -4
  85. package/lib/main/browser/message-registry-main.d.ts.map +1 -1
  86. package/lib/main/browser/message-registry-main.js +7 -19
  87. package/lib/main/browser/message-registry-main.js.map +1 -1
  88. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts +1 -0
  89. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts.map +1 -1
  90. package/lib/main/browser/notebooks/renderers/cell-output-webview.js +23 -22
  91. package/lib/main/browser/notebooks/renderers/cell-output-webview.js.map +1 -1
  92. package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts.map +1 -1
  93. package/lib/main/browser/notebooks/renderers/output-webview-internal.js +22 -14
  94. package/lib/main/browser/notebooks/renderers/output-webview-internal.js.map +1 -1
  95. package/lib/main/browser/notebooks/renderers/webview-communication.d.ts +2 -1
  96. package/lib/main/browser/notebooks/renderers/webview-communication.d.ts.map +1 -1
  97. package/lib/main/browser/notification-main.d.ts +2 -14
  98. package/lib/main/browser/notification-main.d.ts.map +1 -1
  99. package/lib/main/browser/notification-main.js +3 -52
  100. package/lib/main/browser/notification-main.js.map +1 -1
  101. package/lib/main/browser/terminal-main.d.ts +1 -1
  102. package/lib/main/browser/terminal-main.d.ts.map +1 -1
  103. package/lib/main/browser/terminal-main.js +2 -2
  104. package/lib/main/browser/terminal-main.js.map +1 -1
  105. package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
  106. package/lib/main/browser/view/plugin-view-registry.js +5 -2
  107. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  108. package/lib/main/browser/webview/webview-context-keys.d.ts +5 -1
  109. package/lib/main/browser/webview/webview-context-keys.d.ts.map +1 -1
  110. package/lib/main/browser/webview/webview-context-keys.js +13 -4
  111. package/lib/main/browser/webview/webview-context-keys.js.map +1 -1
  112. package/lib/main/browser/webview/webview-widget-factory.d.ts.map +1 -1
  113. package/lib/main/browser/webview/webview-widget-factory.js +2 -1
  114. package/lib/main/browser/webview/webview-widget-factory.js.map +1 -1
  115. package/lib/main/browser/webview/webview.d.ts +1 -0
  116. package/lib/main/browser/webview/webview.d.ts.map +1 -1
  117. package/lib/main/browser/webview/webview.js +1 -0
  118. package/lib/main/browser/webview/webview.js.map +1 -1
  119. package/lib/main/browser/webviews-main.d.ts.map +1 -1
  120. package/lib/main/browser/webviews-main.js +7 -2
  121. package/lib/main/browser/webviews-main.js.map +1 -1
  122. package/lib/main/common/basic-message-registry-main.d.ts +14 -0
  123. package/lib/main/common/basic-message-registry-main.d.ts.map +1 -0
  124. package/lib/main/common/basic-message-registry-main.js +50 -0
  125. package/lib/main/common/basic-message-registry-main.js.map +1 -0
  126. package/lib/main/common/basic-notification-main.d.ts +19 -0
  127. package/lib/main/common/basic-notification-main.d.ts.map +1 -0
  128. package/lib/main/common/basic-notification-main.js +75 -0
  129. package/lib/main/common/basic-notification-main.js.map +1 -0
  130. package/lib/main/common/env-main.d.ts +11 -0
  131. package/lib/main/common/env-main.d.ts.map +1 -0
  132. package/lib/main/common/env-main.js +40 -0
  133. package/lib/main/common/env-main.js.map +1 -0
  134. package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts +8 -3
  135. package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts.map +1 -1
  136. package/lib/main/node/handlers/plugin-theia-directory-handler.js +38 -20
  137. package/lib/main/node/handlers/plugin-theia-directory-handler.js.map +1 -1
  138. package/lib/main/node/handlers/plugin-theia-file-handler.js +1 -1
  139. package/lib/main/node/handlers/plugin-theia-file-handler.js.map +1 -1
  140. package/lib/main/node/plugin-deployer-impl.d.ts.map +1 -1
  141. package/lib/main/node/plugin-deployer-impl.js +5 -1
  142. package/lib/main/node/plugin-deployer-impl.js.map +1 -1
  143. package/lib/main/node/plugins-key-value-storage.js +1 -1
  144. package/lib/main/node/plugins-key-value-storage.js.map +1 -1
  145. package/lib/plugin/clipboard-ext.d.ts +3 -2
  146. package/lib/plugin/clipboard-ext.d.ts.map +1 -1
  147. package/lib/plugin/clipboard-ext.js +28 -4
  148. package/lib/plugin/clipboard-ext.js.map +1 -1
  149. package/lib/plugin/debug/debug-ext.d.ts +3 -1
  150. package/lib/plugin/debug/debug-ext.d.ts.map +1 -1
  151. package/lib/plugin/debug/debug-ext.js +31 -4
  152. package/lib/plugin/debug/debug-ext.js.map +1 -1
  153. package/lib/plugin/documents.js +2 -2
  154. package/lib/plugin/documents.js.map +1 -1
  155. package/lib/plugin/editors-and-documents.d.ts +1 -2
  156. package/lib/plugin/editors-and-documents.d.ts.map +1 -1
  157. package/lib/plugin/editors-and-documents.js +21 -4
  158. package/lib/plugin/editors-and-documents.js.map +1 -1
  159. package/lib/plugin/env.d.ts +6 -2
  160. package/lib/plugin/env.d.ts.map +1 -1
  161. package/lib/plugin/env.js +37 -4
  162. package/lib/plugin/env.js.map +1 -1
  163. package/lib/plugin/localization-ext.d.ts +3 -2
  164. package/lib/plugin/localization-ext.d.ts.map +1 -1
  165. package/lib/plugin/localization-ext.js +30 -4
  166. package/lib/plugin/localization-ext.js.map +1 -1
  167. package/lib/plugin/message-registry.d.ts +2 -1
  168. package/lib/plugin/message-registry.d.ts.map +1 -1
  169. package/lib/plugin/message-registry.js +28 -4
  170. package/lib/plugin/message-registry.js.map +1 -1
  171. package/lib/plugin/node/debug/debug.spec.js +21 -1
  172. package/lib/plugin/node/debug/debug.spec.js.map +1 -1
  173. package/lib/plugin/node/env-node-ext.d.ts +1 -6
  174. package/lib/plugin/node/env-node-ext.d.ts.map +1 -1
  175. package/lib/plugin/node/env-node-ext.js +18 -10
  176. package/lib/plugin/node/env-node-ext.js.map +1 -1
  177. package/lib/plugin/node/plugin-container-module.d.ts +75 -0
  178. package/lib/plugin/node/plugin-container-module.d.ts.map +1 -0
  179. package/lib/plugin/node/plugin-container-module.js +115 -0
  180. package/lib/plugin/node/plugin-container-module.js.map +1 -0
  181. package/lib/plugin/notebook/notebook-kernels.d.ts.map +1 -1
  182. package/lib/plugin/notebook/notebook-kernels.js +0 -1
  183. package/lib/plugin/notebook/notebook-kernels.js.map +1 -1
  184. package/lib/plugin/plugin-context.d.ts.map +1 -1
  185. package/lib/plugin/plugin-context.js +9 -1
  186. package/lib/plugin/plugin-context.js.map +1 -1
  187. package/lib/plugin/plugin-manager.d.ts +26 -17
  188. package/lib/plugin/plugin-manager.d.ts.map +1 -1
  189. package/lib/plugin/plugin-manager.js +107 -37
  190. package/lib/plugin/plugin-manager.js.map +1 -1
  191. package/lib/plugin/plugin-storage.d.ts +11 -3
  192. package/lib/plugin/plugin-storage.d.ts.map +1 -1
  193. package/lib/plugin/plugin-storage.js +25 -5
  194. package/lib/plugin/plugin-storage.js.map +1 -1
  195. package/lib/plugin/preference-registry.d.ts +3 -2
  196. package/lib/plugin/preference-registry.d.ts.map +1 -1
  197. package/lib/plugin/preference-registry.js +35 -5
  198. package/lib/plugin/preference-registry.js.map +1 -1
  199. package/lib/plugin/preference-registry.spec.js +8 -1
  200. package/lib/plugin/preference-registry.spec.js.map +1 -1
  201. package/lib/plugin/quick-open.js +3 -3
  202. package/lib/plugin/quick-open.js.map +1 -1
  203. package/lib/plugin/secrets-ext.d.ts +16 -7
  204. package/lib/plugin/secrets-ext.d.ts.map +1 -1
  205. package/lib/plugin/secrets-ext.js +23 -3
  206. package/lib/plugin/secrets-ext.js.map +1 -1
  207. package/lib/plugin/terminal-ext.d.ts +1 -1
  208. package/lib/plugin/terminal-ext.d.ts.map +1 -1
  209. package/lib/plugin/terminal-ext.js +26 -6
  210. package/lib/plugin/terminal-ext.js.map +1 -1
  211. package/lib/plugin/types-impl.d.ts +22 -2
  212. package/lib/plugin/types-impl.d.ts.map +1 -1
  213. package/lib/plugin/types-impl.js +22 -6
  214. package/lib/plugin/types-impl.js.map +1 -1
  215. package/lib/plugin/webview-views.d.ts.map +1 -1
  216. package/lib/plugin/webview-views.js +2 -1
  217. package/lib/plugin/webview-views.js.map +1 -1
  218. package/lib/plugin/webviews.d.ts +7 -5
  219. package/lib/plugin/webviews.d.ts.map +1 -1
  220. package/lib/plugin/webviews.js +46 -12
  221. package/lib/plugin/webviews.js.map +1 -1
  222. package/lib/plugin/workspace.d.ts +4 -3
  223. package/lib/plugin/workspace.d.ts.map +1 -1
  224. package/lib/plugin/workspace.js +40 -6
  225. package/lib/plugin/workspace.js.map +1 -1
  226. package/package.json +29 -29
  227. package/src/common/plugin-api-rpc.ts +10 -6
  228. package/src/common/plugin-ext-api-contribution.ts +38 -5
  229. package/src/common/plugin-protocol.ts +7 -2
  230. package/src/common/proxy-handler.ts +14 -1
  231. package/src/common/rpc-protocol.ts +41 -3
  232. package/src/hosted/browser/hosted-plugin.ts +47 -337
  233. package/src/hosted/browser/worker/debug-stub.ts +4 -3
  234. package/src/hosted/browser/worker/worker-env-ext.ts +5 -4
  235. package/src/hosted/browser/worker/worker-main.ts +103 -115
  236. package/src/hosted/browser/worker/worker-plugin-module.ts +73 -0
  237. package/src/hosted/common/hosted-plugin.ts +456 -0
  238. package/src/hosted/node/hosted-plugin-process.ts +4 -4
  239. package/src/hosted/node/plugin-ext-hosted-backend-module.ts +3 -1
  240. package/src/hosted/node/plugin-host-module.ts +69 -0
  241. package/src/hosted/node/plugin-host-rpc.ts +232 -73
  242. package/src/hosted/node/plugin-host.ts +9 -7
  243. package/src/hosted/node/plugin-reader.ts +3 -0
  244. package/src/hosted/node/plugin-service.ts +21 -4
  245. package/src/hosted/node/scanners/file-plugin-uri-factory.ts +1 -1
  246. package/src/hosted/node/scanners/scanner-theia.ts +46 -12
  247. package/src/main/browser/authentication-main.ts +3 -1
  248. package/src/main/browser/env-main.ts +1 -28
  249. package/src/main/browser/menus/menus-contribution-handler.ts +8 -3
  250. package/src/main/browser/menus/plugin-menu-command-adapter.ts +1 -1
  251. package/src/main/browser/message-registry-main.ts +10 -23
  252. package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +26 -24
  253. package/src/main/browser/notebooks/renderers/output-webview-internal.ts +22 -13
  254. package/src/main/browser/notebooks/renderers/webview-communication.ts +2 -1
  255. package/src/main/browser/notification-main.ts +4 -64
  256. package/src/main/browser/terminal-main.ts +2 -2
  257. package/src/main/browser/view/plugin-view-registry.ts +6 -3
  258. package/src/main/browser/webview/webview-context-keys.ts +17 -4
  259. package/src/main/browser/webview/webview-widget-factory.ts +2 -1
  260. package/src/main/browser/webview/webview.ts +2 -0
  261. package/src/main/browser/webviews-main.ts +7 -2
  262. package/src/main/common/basic-message-registry-main.ts +53 -0
  263. package/src/main/common/basic-notification-main.ts +86 -0
  264. package/src/main/common/env-main.ts +44 -0
  265. package/src/main/node/handlers/plugin-theia-directory-handler.ts +38 -16
  266. package/src/main/node/handlers/plugin-theia-file-handler.ts +1 -1
  267. package/src/main/node/plugin-deployer-impl.ts +5 -1
  268. package/src/main/node/plugins-key-value-storage.ts +1 -1
  269. package/src/plugin/clipboard-ext.ts +9 -3
  270. package/src/plugin/debug/debug-ext.ts +11 -2
  271. package/src/plugin/documents.ts +2 -2
  272. package/src/plugin/editors-and-documents.ts +5 -3
  273. package/src/plugin/env.ts +19 -3
  274. package/src/plugin/localization-ext.ts +8 -3
  275. package/src/plugin/message-registry.ts +7 -2
  276. package/src/plugin/node/debug/debug.spec.ts +5 -1
  277. package/src/plugin/node/env-node-ext.ts +5 -10
  278. package/src/plugin/node/plugin-container-module.ts +165 -0
  279. package/src/plugin/notebook/notebook-kernels.ts +0 -1
  280. package/src/plugin/plugin-context.ts +11 -2
  281. package/src/plugin/plugin-manager.ts +99 -45
  282. package/src/plugin/plugin-storage.ts +22 -4
  283. package/src/plugin/preference-registry.spec.ts +6 -1
  284. package/src/plugin/preference-registry.ts +11 -5
  285. package/src/plugin/quick-open.ts +3 -3
  286. package/src/plugin/secrets-ext.ts +25 -5
  287. package/src/plugin/terminal-ext.ts +5 -3
  288. package/src/plugin/types-impl.ts +30 -2
  289. package/src/plugin/webview-views.ts +2 -1
  290. package/src/plugin/webviews.ts +22 -13
  291. package/src/plugin/workspace.ts +14 -4
@@ -15,13 +15,12 @@
15
15
  // *****************************************************************************
16
16
  // eslint-disable-next-line import/no-extraneous-dependencies
17
17
  import 'reflect-metadata';
18
- import { BasicChannel } from '@theia/core/lib/common/message-rpc/channel';
19
- import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '@theia/core/lib/common/message-rpc/uint8-array-message-buffer';
18
+ import { Container } from '@theia/core/shared/inversify';
20
19
  import * as theia from '@theia/plugin';
21
- import { emptyPlugin, MAIN_RPC_CONTEXT, Plugin, TerminalServiceExt } from '../../../common/plugin-api-rpc';
20
+ import { emptyPlugin, MAIN_RPC_CONTEXT, Plugin } from '../../../common/plugin-api-rpc';
22
21
  import { ExtPluginApi } from '../../../common/plugin-ext-api-contribution';
23
22
  import { getPluginId, PluginMetadata } from '../../../common/plugin-protocol';
24
- import { RPCProtocolImpl } from '../../../common/rpc-protocol';
23
+ import { RPCProtocol, RPCProtocolImpl } from '../../../common/rpc-protocol';
25
24
  import { ClipboardExt } from '../../../plugin/clipboard-ext';
26
25
  import { EditorsAndDocumentsExtImpl } from '../../../plugin/editors-and-documents';
27
26
  import { MessageRegistryExt } from '../../../plugin/message-registry';
@@ -29,14 +28,13 @@ import { createAPIFactory } from '../../../plugin/plugin-context';
29
28
  import { PluginManagerExtImpl } from '../../../plugin/plugin-manager';
30
29
  import { KeyValueStorageProxy } from '../../../plugin/plugin-storage';
31
30
  import { PreferenceRegistryExtImpl } from '../../../plugin/preference-registry';
32
- import { SecretsExtImpl } from '../../../plugin/secrets-ext';
33
- import { TerminalServiceExtImpl } from '../../../plugin/terminal-ext';
34
31
  import { WebviewsExtImpl } from '../../../plugin/webviews';
35
32
  import { WorkspaceExtImpl } from '../../../plugin/workspace';
36
- import { createDebugExtStub } from './debug-stub';
37
33
  import { loadManifest } from './plugin-manifest-loader';
38
- import { WorkerEnvExtImpl } from './worker-env-ext';
34
+ import { EnvExtImpl } from '../../../plugin/env';
35
+ import { DebugExtImpl } from '../../../plugin/debug/debug-ext';
39
36
  import { LocalizationExtImpl } from '../../../plugin/localization-ext';
37
+ import pluginHostModule from './worker-plugin-module';
40
38
 
41
39
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
40
  const ctx = self as any;
@@ -44,20 +42,6 @@ const ctx = self as any;
44
42
  const pluginsApiImpl = new Map<string, typeof theia>();
45
43
  const pluginsModulesNames = new Map<string, Plugin>();
46
44
 
47
- const channel = new BasicChannel(() => {
48
- const writeBuffer = new Uint8ArrayWriteBuffer();
49
- writeBuffer.onCommit(buffer => {
50
- ctx.postMessage(buffer);
51
- });
52
- return writeBuffer;
53
- });
54
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
- addEventListener('message', (message: any) => {
56
- channel.onMessageEmitter.fire(() => new Uint8ArrayReadBuffer(message.data));
57
- });
58
-
59
- const rpc = new RPCProtocolImpl(channel);
60
-
61
45
  const scripts = new Set<string>();
62
46
 
63
47
  function initialize(contextPath: string, pluginMetadata: PluginMetadata): void {
@@ -68,112 +52,116 @@ function initialize(contextPath: string, pluginMetadata: PluginMetadata): void {
68
52
  scripts.add(path);
69
53
  }
70
54
  }
71
- const envExt = new WorkerEnvExtImpl(rpc);
72
- const storageProxy = new KeyValueStorageProxy(rpc);
73
- const editorsAndDocuments = new EditorsAndDocumentsExtImpl(rpc);
74
- const messageRegistryExt = new MessageRegistryExt(rpc);
75
- const workspaceExt = new WorkspaceExtImpl(rpc, editorsAndDocuments, messageRegistryExt);
76
- const preferenceRegistryExt = new PreferenceRegistryExtImpl(rpc, workspaceExt);
77
- const debugExt = createDebugExtStub(rpc);
78
- const clipboardExt = new ClipboardExt(rpc);
79
- const webviewExt = new WebviewsExtImpl(rpc, workspaceExt);
80
- const secretsExt = new SecretsExtImpl(rpc);
81
- const localizationExt = new LocalizationExtImpl(rpc);
82
- const terminalService: TerminalServiceExt = new TerminalServiceExtImpl(rpc);
83
-
84
- const pluginManager = new PluginManagerExtImpl({
85
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
- loadPlugin(plugin: Plugin): any {
87
- if (plugin.pluginPath) {
88
- if (isElectron()) {
89
- ctx.importScripts(plugin.pluginPath);
90
- } else {
91
- if (plugin.lifecycle.frontendModuleName) {
92
- // Set current module name being imported
93
- ctx.frontendModuleName = plugin.lifecycle.frontendModuleName;
94
- }
95
55
 
96
- ctx.importScripts('/hostedPlugin/' + getPluginId(plugin.model) + '/' + plugin.pluginPath);
97
- }
98
- }
56
+ const container = new Container();
57
+ container.load(pluginHostModule);
58
+
59
+ const rpc: RPCProtocol = container.get(RPCProtocolImpl);
60
+ const pluginManager = container.get(PluginManagerExtImpl);
61
+ pluginManager.setPluginHost({
62
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
+ loadPlugin(plugin: Plugin): any {
64
+ if (plugin.pluginPath) {
65
+ if (isElectron()) {
66
+ ctx.importScripts(plugin.pluginPath);
67
+ } else {
68
+ if (plugin.lifecycle.frontendModuleName) {
69
+ // Set current module name being imported
70
+ ctx.frontendModuleName = plugin.lifecycle.frontendModuleName;
71
+ }
99
72
 
100
- if (plugin.lifecycle.frontendModuleName) {
101
- if (!ctx[plugin.lifecycle.frontendModuleName]) {
102
- console.error(`WebWorker: Cannot start plugin "${plugin.model.name}". Frontend plugin not found: "${plugin.lifecycle.frontendModuleName}"`);
103
- return;
73
+ ctx.importScripts('/hostedPlugin/' + getPluginId(plugin.model) + '/' + plugin.pluginPath);
74
+ }
104
75
  }
105
- return ctx[plugin.lifecycle.frontendModuleName];
106
- }
107
- },
108
- async init(rawPluginData: PluginMetadata[]): Promise<[Plugin[], Plugin[]]> {
109
- const result: Plugin[] = [];
110
- const foreign: Plugin[] = [];
111
- // Process the plugins concurrently, making sure to keep the order.
112
- const plugins = await Promise.all<{
113
- /** Where to push the plugin: `result` or `foreign` */
114
- target: Plugin[],
115
- plugin: Plugin
116
- }>(rawPluginData.map(async plg => {
117
- const pluginModel = plg.model;
118
- const pluginLifecycle = plg.lifecycle;
119
- if (pluginModel.entryPoint!.frontend) {
120
- let frontendInitPath = pluginLifecycle.frontendInitPath;
121
- if (frontendInitPath) {
122
- initialize(frontendInitPath, plg);
123
- } else {
124
- frontendInitPath = '';
76
+
77
+ if (plugin.lifecycle.frontendModuleName) {
78
+ if (!ctx[plugin.lifecycle.frontendModuleName]) {
79
+ console.error(`WebWorker: Cannot start plugin "${plugin.model.name}". Frontend plugin not found: "${plugin.lifecycle.frontendModuleName}"`);
80
+ return;
125
81
  }
126
- const rawModel = await loadManifest(pluginModel);
127
- const plugin: Plugin = {
128
- pluginPath: pluginModel.entryPoint.frontend!,
129
- pluginFolder: pluginModel.packagePath,
130
- pluginUri: pluginModel.packageUri,
131
- model: pluginModel,
132
- lifecycle: pluginLifecycle,
133
- rawModel,
134
- isUnderDevelopment: !!plg.isUnderDevelopment
135
- };
136
- const apiImpl = apiFactory(plugin);
137
- pluginsApiImpl.set(plugin.model.id, apiImpl);
138
- pluginsModulesNames.set(plugin.lifecycle.frontendModuleName!, plugin);
139
- return { target: result, plugin };
140
- } else {
141
- return {
142
- target: foreign,
143
- plugin: {
144
- pluginPath: pluginModel.entryPoint.backend,
82
+ return ctx[plugin.lifecycle.frontendModuleName];
83
+ }
84
+ },
85
+ async init(rawPluginData: PluginMetadata[]): Promise<[Plugin[], Plugin[]]> {
86
+ const result: Plugin[] = [];
87
+ const foreign: Plugin[] = [];
88
+ // Process the plugins concurrently, making sure to keep the order.
89
+ const plugins = await Promise.all<{
90
+ /** Where to push the plugin: `result` or `foreign` */
91
+ target: Plugin[],
92
+ plugin: Plugin
93
+ }>(rawPluginData.map(async plg => {
94
+ const pluginModel = plg.model;
95
+ const pluginLifecycle = plg.lifecycle;
96
+ if (pluginModel.entryPoint!.frontend) {
97
+ let frontendInitPath = pluginLifecycle.frontendInitPath;
98
+ if (frontendInitPath) {
99
+ initialize(frontendInitPath, plg);
100
+ } else {
101
+ frontendInitPath = '';
102
+ }
103
+ const rawModel = await loadManifest(pluginModel);
104
+ const plugin: Plugin = {
105
+ pluginPath: pluginModel.entryPoint.frontend!,
145
106
  pluginFolder: pluginModel.packagePath,
146
107
  pluginUri: pluginModel.packageUri,
147
108
  model: pluginModel,
148
109
  lifecycle: pluginLifecycle,
149
- get rawModel(): never {
150
- throw new Error('not supported');
151
- },
110
+ rawModel,
152
111
  isUnderDevelopment: !!plg.isUnderDevelopment
153
- }
154
- };
155
- }
156
- }));
157
- // Collect the ordered plugins and insert them in the target array:
158
- for (const { target, plugin } of plugins) {
159
- target.push(plugin);
160
- }
161
- return [result, foreign];
162
- },
163
- initExtApi(extApi: ExtPluginApi[]): void {
164
- for (const api of extApi) {
165
- try {
166
- if (api.frontendExtApi) {
167
- ctx.importScripts(api.frontendExtApi.initPath);
168
- ctx[api.frontendExtApi.initVariable][api.frontendExtApi.initFunction](rpc, pluginsModulesNames);
112
+ };
113
+ const apiImpl = apiFactory(plugin);
114
+ pluginsApiImpl.set(plugin.model.id, apiImpl);
115
+ pluginsModulesNames.set(plugin.lifecycle.frontendModuleName!, plugin);
116
+ return { target: result, plugin };
117
+ } else {
118
+ return {
119
+ target: foreign,
120
+ plugin: {
121
+ pluginPath: pluginModel.entryPoint.backend,
122
+ pluginFolder: pluginModel.packagePath,
123
+ pluginUri: pluginModel.packageUri,
124
+ model: pluginModel,
125
+ lifecycle: pluginLifecycle,
126
+ get rawModel(): never {
127
+ throw new Error('not supported');
128
+ },
129
+ isUnderDevelopment: !!plg.isUnderDevelopment
130
+ }
131
+ };
169
132
  }
133
+ }));
134
+ // Collect the ordered plugins and insert them in the target array:
135
+ for (const { target, plugin } of plugins) {
136
+ target.push(plugin);
137
+ }
138
+ return [result, foreign];
139
+ },
140
+ initExtApi(extApi: ExtPluginApi[]): void {
141
+ for (const api of extApi) {
142
+ try {
143
+ if (api.frontendExtApi) {
144
+ ctx.importScripts(api.frontendExtApi.initPath);
145
+ ctx[api.frontendExtApi.initVariable][api.frontendExtApi.initFunction](rpc, pluginsModulesNames);
146
+ }
170
147
 
171
- } catch (e) {
172
- console.error(e);
148
+ } catch (e) {
149
+ console.error(e);
150
+ }
173
151
  }
174
152
  }
175
- }
176
- }, envExt, terminalService, storageProxy, secretsExt, preferenceRegistryExt, webviewExt, localizationExt, rpc);
153
+ });
154
+
155
+ const envExt = container.get(EnvExtImpl);
156
+ const debugExt = container.get(DebugExtImpl);
157
+ const preferenceRegistryExt = container.get(PreferenceRegistryExtImpl);
158
+ const editorsAndDocuments = container.get(EditorsAndDocumentsExtImpl);
159
+ const workspaceExt = container.get(WorkspaceExtImpl);
160
+ const messageRegistryExt = container.get(MessageRegistryExt);
161
+ const clipboardExt = container.get(ClipboardExt);
162
+ const webviewExt = container.get(WebviewsExtImpl);
163
+ const localizationExt = container.get(LocalizationExtImpl);
164
+ const storageProxy = container.get(KeyValueStorageProxy);
177
165
 
178
166
  const apiFactory = createAPIFactory(
179
167
  rpc,
@@ -0,0 +1,73 @@
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
+ // eslint-disable-next-line import/no-extraneous-dependencies
17
+ import 'reflect-metadata';
18
+ import { ContainerModule } from '@theia/core/shared/inversify';
19
+ import { BasicChannel } from '@theia/core/lib/common/message-rpc/channel';
20
+ import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '@theia/core/lib/common/message-rpc/uint8-array-message-buffer';
21
+ import { LocalizationExt } from '../../../common/plugin-api-rpc';
22
+ import { RPCProtocol, RPCProtocolImpl } from '../../../common/rpc-protocol';
23
+ import { ClipboardExt } from '../../../plugin/clipboard-ext';
24
+ import { EditorsAndDocumentsExtImpl } from '../../../plugin/editors-and-documents';
25
+ import { MessageRegistryExt } from '../../../plugin/message-registry';
26
+ import { PluginManagerExtImpl } from '../../../plugin/plugin-manager';
27
+ import { KeyValueStorageProxy } from '../../../plugin/plugin-storage';
28
+ import { PreferenceRegistryExtImpl } from '../../../plugin/preference-registry';
29
+ import { SecretsExtImpl } from '../../../plugin/secrets-ext';
30
+ import { TerminalServiceExtImpl } from '../../../plugin/terminal-ext';
31
+ import { WebviewsExtImpl } from '../../../plugin/webviews';
32
+ import { WorkspaceExtImpl } from '../../../plugin/workspace';
33
+ import { createDebugExtStub } from './debug-stub';
34
+ import { EnvExtImpl } from '../../../plugin/env';
35
+ import { WorkerEnvExtImpl } from './worker-env-ext';
36
+ import { DebugExtImpl } from '../../../plugin/debug/debug-ext';
37
+ import { LocalizationExtImpl } from '../../../plugin/localization-ext';
38
+
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ const ctx = self as any;
41
+
42
+ export default new ContainerModule(bind => {
43
+ const channel = new BasicChannel(() => {
44
+ const writeBuffer = new Uint8ArrayWriteBuffer();
45
+ writeBuffer.onCommit(buffer => {
46
+ ctx.postMessage(buffer);
47
+ });
48
+ return writeBuffer;
49
+ });
50
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
+ addEventListener('message', (message: any) => {
52
+ channel.onMessageEmitter.fire(() => new Uint8ArrayReadBuffer(message.data));
53
+ });
54
+
55
+ const rpc = new RPCProtocolImpl(channel);
56
+
57
+ bind(RPCProtocol).toConstantValue(rpc);
58
+
59
+ bind(PluginManagerExtImpl).toSelf().inSingletonScope();
60
+ bind(EnvExtImpl).to(WorkerEnvExtImpl).inSingletonScope();
61
+ bind(LocalizationExt).to(LocalizationExtImpl).inSingletonScope();
62
+ bind(KeyValueStorageProxy).toSelf().inSingletonScope();
63
+ bind(SecretsExtImpl).toSelf().inSingletonScope();
64
+ bind(PreferenceRegistryExtImpl).toSelf().inSingletonScope();
65
+ bind(DebugExtImpl).toDynamicValue(({ container }) => createDebugExtStub(container))
66
+ .inSingletonScope();
67
+ bind(EditorsAndDocumentsExtImpl).toSelf().inSingletonScope();
68
+ bind(WorkspaceExtImpl).toSelf().inSingletonScope();
69
+ bind(MessageRegistryExt).toSelf().inSingletonScope();
70
+ bind(ClipboardExt).toSelf().inSingletonScope();
71
+ bind(WebviewsExtImpl).toSelf().inSingletonScope();
72
+ bind(TerminalServiceExtImpl).toSelf().inSingletonScope();
73
+ });