@theia/plugin-ext 1.23.0-next.3 → 1.23.0-next.35

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 (413) hide show
  1. package/lib/common/character-classifier.js +2 -2
  2. package/lib/common/character-classifier.js.map +1 -1
  3. package/lib/common/index.js +1 -1
  4. package/lib/common/objects.js +3 -3
  5. package/lib/common/objects.js.map +1 -1
  6. package/lib/common/plugin-api-rpc-model.d.ts +13 -19
  7. package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
  8. package/lib/common/plugin-api-rpc-model.js.map +1 -1
  9. package/lib/common/plugin-api-rpc.d.ts +33 -13
  10. package/lib/common/plugin-api-rpc.d.ts.map +1 -1
  11. package/lib/common/plugin-api-rpc.js +64 -62
  12. package/lib/common/plugin-api-rpc.js.map +1 -1
  13. package/lib/common/plugin-protocol.d.ts +6 -0
  14. package/lib/common/plugin-protocol.d.ts.map +1 -1
  15. package/lib/common/plugin-protocol.js +6 -1
  16. package/lib/common/plugin-protocol.js.map +1 -1
  17. package/lib/hosted/browser/hosted-plugin-watcher.js +1 -1
  18. package/lib/hosted/browser/hosted-plugin-watcher.js.map +1 -1
  19. package/lib/hosted/browser/hosted-plugin.d.ts +3 -2
  20. package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
  21. package/lib/hosted/browser/hosted-plugin.js +53 -68
  22. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  23. package/lib/hosted/browser/plugin-worker.js +1 -1
  24. package/lib/hosted/browser/plugin-worker.js.map +1 -1
  25. package/lib/hosted/browser/worker/worker-main.js +4 -4
  26. package/lib/hosted/browser/worker/worker-main.js.map +1 -1
  27. package/lib/hosted/node/hosted-plugin-cli-contribution.js +1 -1
  28. package/lib/hosted/node/hosted-plugin-cli-contribution.js.map +1 -1
  29. package/lib/hosted/node/hosted-plugin-deployer-handler.d.ts +2 -0
  30. package/lib/hosted/node/hosted-plugin-deployer-handler.d.ts.map +1 -1
  31. package/lib/hosted/node/hosted-plugin-deployer-handler.js +25 -7
  32. package/lib/hosted/node/hosted-plugin-deployer-handler.js.map +1 -1
  33. package/lib/hosted/node/hosted-plugin-localization-service.js +3 -3
  34. package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
  35. package/lib/hosted/node/hosted-plugin-process.js +9 -9
  36. package/lib/hosted/node/hosted-plugin-process.js.map +1 -1
  37. package/lib/hosted/node/hosted-plugin.js +6 -6
  38. package/lib/hosted/node/hosted-plugin.js.map +1 -1
  39. package/lib/hosted/node/metadata-scanner.js +2 -2
  40. package/lib/hosted/node/metadata-scanner.js.map +1 -1
  41. package/lib/hosted/node/plugin-ext-hosted-backend-module.js +2 -2
  42. package/lib/hosted/node/plugin-ext-hosted-backend-module.js.map +1 -1
  43. package/lib/hosted/node/plugin-host-rpc.js +6 -6
  44. package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
  45. package/lib/hosted/node/plugin-reader.d.ts.map +1 -1
  46. package/lib/hosted/node/plugin-reader.js +9 -8
  47. package/lib/hosted/node/plugin-reader.js.map +1 -1
  48. package/lib/hosted/node/plugin-service.js +9 -9
  49. package/lib/hosted/node/plugin-service.js.map +1 -1
  50. package/lib/hosted/node/scanners/backend-init-theia.js +2 -1
  51. package/lib/hosted/node/scanners/backend-init-theia.js.map +1 -1
  52. package/lib/hosted/node/scanners/file-plugin-uri-factory.js +1 -1
  53. package/lib/hosted/node/scanners/file-plugin-uri-factory.js.map +1 -1
  54. package/lib/hosted/node/scanners/grammars-reader.js +1 -1
  55. package/lib/hosted/node/scanners/grammars-reader.js.map +1 -1
  56. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  57. package/lib/hosted/node/scanners/scanner-theia.js +9 -8
  58. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  59. package/lib/hosted/node-electron/plugin-ext-hosted-electron-backend-module.js +1 -1
  60. package/lib/hosted/node-electron/plugin-ext-hosted-electron-backend-module.js.map +1 -1
  61. package/lib/hosted/node-electron/scanner-theia-electron.d.ts.map +1 -1
  62. package/lib/hosted/node-electron/scanner-theia-electron.js +1 -1
  63. package/lib/hosted/node-electron/scanner-theia-electron.js.map +1 -1
  64. package/lib/main/browser/authentication-main.d.ts +18 -11
  65. package/lib/main/browser/authentication-main.d.ts.map +1 -1
  66. package/lib/main/browser/authentication-main.js +111 -67
  67. package/lib/main/browser/authentication-main.js.map +1 -1
  68. package/lib/main/browser/commands.js +3 -3
  69. package/lib/main/browser/commands.js.map +1 -1
  70. package/lib/main/browser/comments/comment-thread-widget.d.ts.map +1 -1
  71. package/lib/main/browser/comments/comment-thread-widget.js.map +1 -1
  72. package/lib/main/browser/comments/comments-context-key-service.d.ts +1 -1
  73. package/lib/main/browser/comments/comments-context-key-service.d.ts.map +1 -1
  74. package/lib/main/browser/comments/comments-context-key-service.js +3 -3
  75. package/lib/main/browser/comments/comments-context-key-service.js.map +1 -1
  76. package/lib/main/browser/comments/comments-contribution.js +8 -8
  77. package/lib/main/browser/comments/comments-contribution.js.map +1 -1
  78. package/lib/main/browser/comments/comments-decorator.js +1 -1
  79. package/lib/main/browser/comments/comments-decorator.js.map +1 -1
  80. package/lib/main/browser/comments/comments-main.js +1 -1
  81. package/lib/main/browser/comments/comments-main.js.map +1 -1
  82. package/lib/main/browser/comments/comments-service.js +1 -1
  83. package/lib/main/browser/comments/comments-service.js.map +1 -1
  84. package/lib/main/browser/custom-editors/custom-editor-contribution.js +2 -2
  85. package/lib/main/browser/custom-editors/custom-editor-contribution.js.map +1 -1
  86. package/lib/main/browser/custom-editors/custom-editor-opener.js +3 -3
  87. package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
  88. package/lib/main/browser/custom-editors/custom-editor-service.js +1 -1
  89. package/lib/main/browser/custom-editors/custom-editor-service.js.map +1 -1
  90. package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
  91. package/lib/main/browser/custom-editors/custom-editor-widget.js +3 -3
  92. package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
  93. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  94. package/lib/main/browser/custom-editors/paths.js +1 -1
  95. package/lib/main/browser/custom-editors/paths.js.map +1 -1
  96. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +8 -8
  97. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js.map +1 -1
  98. package/lib/main/browser/custom-editors/undo-redo-service.js +1 -1
  99. package/lib/main/browser/custom-editors/undo-redo-service.js.map +1 -1
  100. package/lib/main/browser/debug/plugin-debug-service.js +4 -4
  101. package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
  102. package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js +4 -4
  103. package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js.map +1 -1
  104. package/lib/main/browser/debug/plugin-debug-session-factory.d.ts.map +1 -1
  105. package/lib/main/browser/debug/plugin-debug-session-factory.js.map +1 -1
  106. package/lib/main/browser/dialogs/modal-notification.d.ts.map +1 -1
  107. package/lib/main/browser/dialogs/modal-notification.js +4 -4
  108. package/lib/main/browser/dialogs/modal-notification.js.map +1 -1
  109. package/lib/main/browser/dialogs-main.js.map +1 -1
  110. package/lib/main/browser/documents-main.js +1 -1
  111. package/lib/main/browser/documents-main.js.map +1 -1
  112. package/lib/main/browser/editor/untitled-resource.js +2 -2
  113. package/lib/main/browser/editor/untitled-resource.js.map +1 -1
  114. package/lib/main/browser/keybindings/keybindings-contribution-handler.js +2 -2
  115. package/lib/main/browser/keybindings/keybindings-contribution-handler.js.map +1 -1
  116. package/lib/main/browser/languages-main.d.ts +1 -0
  117. package/lib/main/browser/languages-main.d.ts.map +1 -1
  118. package/lib/main/browser/languages-main.js +23 -15
  119. package/lib/main/browser/languages-main.js.map +1 -1
  120. package/lib/main/browser/main-context.d.ts.map +1 -1
  121. package/lib/main/browser/main-context.js +3 -0
  122. package/lib/main/browser/main-context.js.map +1 -1
  123. package/lib/main/browser/main-file-system-event-service.js.map +1 -1
  124. package/lib/main/browser/menus/menus-contribution-handler.js +14 -14
  125. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  126. package/lib/main/browser/output-channel-registry-main.js +2 -2
  127. package/lib/main/browser/output-channel-registry-main.js.map +1 -1
  128. package/lib/main/browser/plugin-authentication-service.d.ts +29 -0
  129. package/lib/main/browser/plugin-authentication-service.d.ts.map +1 -0
  130. package/lib/main/browser/plugin-authentication-service.js +81 -0
  131. package/lib/main/browser/plugin-authentication-service.js.map +1 -0
  132. package/lib/main/browser/plugin-contribution-handler.d.ts +1 -1
  133. package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
  134. package/lib/main/browser/plugin-contribution-handler.js +23 -23
  135. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  136. package/lib/main/browser/plugin-ext-deploy-command.js +4 -4
  137. package/lib/main/browser/plugin-ext-deploy-command.js.map +1 -1
  138. package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
  139. package/lib/main/browser/plugin-ext-frontend-module.js +14 -10
  140. package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
  141. package/lib/main/browser/plugin-ext-widget.d.ts.map +1 -1
  142. package/lib/main/browser/plugin-ext-widget.js +6 -6
  143. package/lib/main/browser/plugin-ext-widget.js.map +1 -1
  144. package/lib/main/browser/plugin-frontend-contribution.js +3 -3
  145. package/lib/main/browser/plugin-frontend-contribution.js.map +1 -1
  146. package/lib/main/browser/plugin-frontend-view-contribution.js +1 -1
  147. package/lib/main/browser/plugin-frontend-view-contribution.js.map +1 -1
  148. package/lib/main/browser/plugin-icon-theme-service.js +11 -11
  149. package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
  150. package/lib/main/browser/plugin-shared-style.js +1 -1
  151. package/lib/main/browser/plugin-shared-style.js.map +1 -1
  152. package/lib/main/browser/plugin-storage.js.map +1 -1
  153. package/lib/main/browser/quick-open-main.js +1 -1
  154. package/lib/main/browser/quick-open-main.js.map +1 -1
  155. package/lib/main/browser/scm-main.js.map +1 -1
  156. package/lib/main/browser/selection-provider-command.js +3 -3
  157. package/lib/main/browser/selection-provider-command.js.map +1 -1
  158. package/lib/main/browser/text-editor-main.js +1 -1
  159. package/lib/main/browser/text-editor-main.js.map +1 -1
  160. package/lib/main/browser/text-editor-model-service.js +3 -3
  161. package/lib/main/browser/text-editor-model-service.js.map +1 -1
  162. package/lib/main/browser/text-editors-main.js +9 -9
  163. package/lib/main/browser/text-editors-main.js.map +1 -1
  164. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +3 -3
  165. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js.map +1 -1
  166. package/lib/main/browser/view/plugin-view-registry.d.ts +8 -4
  167. package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
  168. package/lib/main/browser/view/plugin-view-registry.js +74 -18
  169. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  170. package/lib/main/browser/view/plugin-view-widget.d.ts.map +1 -1
  171. package/lib/main/browser/view/plugin-view-widget.js +7 -7
  172. package/lib/main/browser/view/plugin-view-widget.js.map +1 -1
  173. package/lib/main/browser/view/tree-view-widget.d.ts +0 -2
  174. package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
  175. package/lib/main/browser/view/tree-view-widget.js +16 -18
  176. package/lib/main/browser/view/tree-view-widget.js.map +1 -1
  177. package/lib/main/browser/view/view-context-key-service.js +3 -3
  178. package/lib/main/browser/view/view-context-key-service.js.map +1 -1
  179. package/lib/main/browser/view-column-service.js +4 -4
  180. package/lib/main/browser/view-column-service.js.map +1 -1
  181. package/lib/main/browser/webview/webview-environment.js +3 -3
  182. package/lib/main/browser/webview/webview-environment.js.map +1 -1
  183. package/lib/main/browser/webview/webview-frontend-security-warnings.js +4 -4
  184. package/lib/main/browser/webview/webview-frontend-security-warnings.js.map +1 -1
  185. package/lib/main/browser/webview/webview-preferences.js +1 -1
  186. package/lib/main/browser/webview/webview-preferences.js.map +1 -1
  187. package/lib/main/browser/webview/webview-resource-cache.js +1 -1
  188. package/lib/main/browser/webview/webview-resource-cache.js.map +1 -1
  189. package/lib/main/browser/webview/webview-theme-data-provider.d.ts +2 -2
  190. package/lib/main/browser/webview/webview-theme-data-provider.d.ts.map +1 -1
  191. package/lib/main/browser/webview/webview-theme-data-provider.js +5 -5
  192. package/lib/main/browser/webview/webview-theme-data-provider.js.map +1 -1
  193. package/lib/main/browser/webview/webview.d.ts.map +1 -1
  194. package/lib/main/browser/webview/webview.js +17 -17
  195. package/lib/main/browser/webview/webview.js.map +1 -1
  196. package/lib/main/browser/webview-views/webview-views-main.d.ts +46 -0
  197. package/lib/main/browser/webview-views/webview-views-main.d.ts.map +1 -0
  198. package/lib/main/browser/webview-views/webview-views-main.js +127 -0
  199. package/lib/main/browser/webview-views/webview-views-main.js.map +1 -0
  200. package/lib/main/browser/webview-views/webview-views.d.ts +30 -0
  201. package/lib/main/browser/webview-views/webview-views.d.ts.map +1 -0
  202. package/lib/main/browser/webview-views/webview-views.js +23 -0
  203. package/lib/main/browser/webview-views/webview-views.js.map +1 -0
  204. package/lib/main/browser/webviews-main.js.map +1 -1
  205. package/lib/main/browser/window-state-main.js +1 -1
  206. package/lib/main/browser/window-state-main.js.map +1 -1
  207. package/lib/main/browser/workspace-main.d.ts +2 -0
  208. package/lib/main/browser/workspace-main.d.ts.map +1 -1
  209. package/lib/main/browser/workspace-main.js +6 -1
  210. package/lib/main/browser/workspace-main.js.map +1 -1
  211. package/lib/main/common/plugin-theia-environment.js +2 -2
  212. package/lib/main/common/plugin-theia-environment.js.map +1 -1
  213. package/lib/main/electron-browser/webview/electron-webview-widget-factory.d.ts.map +1 -1
  214. package/lib/main/electron-browser/webview/electron-webview-widget-factory.js.map +1 -1
  215. package/lib/main/node/handlers/plugin-theia-directory-handler.js +1 -1
  216. package/lib/main/node/handlers/plugin-theia-directory-handler.js.map +1 -1
  217. package/lib/main/node/handlers/plugin-theia-file-handler.js +3 -3
  218. package/lib/main/node/handlers/plugin-theia-file-handler.js.map +1 -1
  219. package/lib/main/node/paths/plugin-paths-service.js +7 -7
  220. package/lib/main/node/paths/plugin-paths-service.js.map +1 -1
  221. package/lib/main/node/plugin-cli-contribution.js +1 -1
  222. package/lib/main/node/plugin-cli-contribution.js.map +1 -1
  223. package/lib/main/node/plugin-deployer-contribution.js +3 -3
  224. package/lib/main/node/plugin-deployer-contribution.js.map +1 -1
  225. package/lib/main/node/plugin-deployer-impl.d.ts +3 -1
  226. package/lib/main/node/plugin-deployer-impl.d.ts.map +1 -1
  227. package/lib/main/node/plugin-deployer-impl.js +24 -19
  228. package/lib/main/node/plugin-deployer-impl.js.map +1 -1
  229. package/lib/main/node/plugin-deployer-proxy-entry-impl.js +1 -1
  230. package/lib/main/node/plugin-deployer-proxy-entry-impl.js.map +1 -1
  231. package/lib/main/node/plugin-ext-backend-module.js +1 -1
  232. package/lib/main/node/plugin-ext-backend-module.js.map +1 -1
  233. package/lib/main/node/plugin-github-resolver.js +1 -1
  234. package/lib/main/node/plugin-github-resolver.js.map +1 -1
  235. package/lib/main/node/plugin-http-resolver.js +1 -1
  236. package/lib/main/node/plugin-http-resolver.js.map +1 -1
  237. package/lib/main/node/plugin-server-handler.js +3 -3
  238. package/lib/main/node/plugin-server-handler.js.map +1 -1
  239. package/lib/main/node/plugin-service.js +2 -2
  240. package/lib/main/node/plugin-service.js.map +1 -1
  241. package/lib/main/node/plugin-theia-deployer-participant.js +2 -2
  242. package/lib/main/node/plugin-theia-deployer-participant.js.map +1 -1
  243. package/lib/main/node/plugins-key-value-storage.js +4 -4
  244. package/lib/main/node/plugins-key-value-storage.js.map +1 -1
  245. package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js +1 -1
  246. package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js.map +1 -1
  247. package/lib/main/node/resolvers/local-file-plugin-deployer-resolver.js +1 -1
  248. package/lib/main/node/resolvers/local-file-plugin-deployer-resolver.js.map +1 -1
  249. package/lib/main/node/resolvers/local-plugin-deployer-resolver.js +1 -1
  250. package/lib/main/node/resolvers/local-plugin-deployer-resolver.js.map +1 -1
  251. package/lib/main/node/webview-backend-security-warnings.js +1 -1
  252. package/lib/main/node/webview-backend-security-warnings.js.map +1 -1
  253. package/lib/plugin/authentication-ext.d.ts +23 -8
  254. package/lib/plugin/authentication-ext.d.ts.map +1 -1
  255. package/lib/plugin/authentication-ext.js +28 -24
  256. package/lib/plugin/authentication-ext.js.map +1 -1
  257. package/lib/plugin/comments.js +6 -6
  258. package/lib/plugin/comments.js.map +1 -1
  259. package/lib/plugin/decorations.js +1 -1
  260. package/lib/plugin/decorations.js.map +1 -1
  261. package/lib/plugin/document-data.js +4 -4
  262. package/lib/plugin/document-data.js.map +1 -1
  263. package/lib/plugin/documents.js +1 -1
  264. package/lib/plugin/documents.js.map +1 -1
  265. package/lib/plugin/editors-and-documents.js +6 -6
  266. package/lib/plugin/editors-and-documents.js.map +1 -1
  267. package/lib/plugin/env.js +2 -2
  268. package/lib/plugin/env.js.map +1 -1
  269. package/lib/plugin/file-system-event-service-ext-impl.js +2 -2
  270. package/lib/plugin/file-system-event-service-ext-impl.js.map +1 -1
  271. package/lib/plugin/file-system-ext-impl.js +1 -1
  272. package/lib/plugin/file-system-ext-impl.js.map +1 -1
  273. package/lib/plugin/known-commands.js +17 -16
  274. package/lib/plugin/known-commands.js.map +1 -1
  275. package/lib/plugin/known-commands.spec.js +1 -1
  276. package/lib/plugin/known-commands.spec.js.map +1 -1
  277. package/lib/plugin/languages/code-action.d.ts +7 -1
  278. package/lib/plugin/languages/code-action.d.ts.map +1 -1
  279. package/lib/plugin/languages/code-action.js +36 -2
  280. package/lib/plugin/languages/code-action.js.map +1 -1
  281. package/lib/plugin/languages/completion.js.map +1 -1
  282. package/lib/plugin/languages/declaration.js +2 -2
  283. package/lib/plugin/languages/declaration.js.map +1 -1
  284. package/lib/plugin/languages/definition.js +2 -2
  285. package/lib/plugin/languages/definition.js.map +1 -1
  286. package/lib/plugin/languages/diagnostics.js +3 -3
  287. package/lib/plugin/languages/diagnostics.js.map +1 -1
  288. package/lib/plugin/languages/implementation.js +2 -2
  289. package/lib/plugin/languages/implementation.js.map +1 -1
  290. package/lib/plugin/languages/reference.js +1 -1
  291. package/lib/plugin/languages/reference.js.map +1 -1
  292. package/lib/plugin/languages/rename.js +1 -1
  293. package/lib/plugin/languages/rename.js.map +1 -1
  294. package/lib/plugin/languages/semantic-highlighting.js +4 -4
  295. package/lib/plugin/languages/semantic-highlighting.js.map +1 -1
  296. package/lib/plugin/languages/type-definition.js +2 -2
  297. package/lib/plugin/languages/type-definition.js.map +1 -1
  298. package/lib/plugin/languages.d.ts +2 -0
  299. package/lib/plugin/languages.d.ts.map +1 -1
  300. package/lib/plugin/languages.js +8 -1
  301. package/lib/plugin/languages.js.map +1 -1
  302. package/lib/plugin/node/debug/debug.js +7 -7
  303. package/lib/plugin/node/debug/debug.js.map +1 -1
  304. package/lib/plugin/node/debug/plugin-debug-adapter-session.d.ts.map +1 -1
  305. package/lib/plugin/node/debug/plugin-debug-adapter-session.js.map +1 -1
  306. package/lib/plugin/node/debug/plugin-debug-adapter-starter.d.ts +1 -1
  307. package/lib/plugin/node/debug/plugin-debug-adapter-starter.d.ts.map +1 -1
  308. package/lib/plugin/node/debug/plugin-debug-adapter-starter.js +4 -4
  309. package/lib/plugin/node/debug/plugin-debug-adapter-starter.js.map +1 -1
  310. package/lib/plugin/node/debug/plugin-inline-debug-adapter.d.ts +34 -0
  311. package/lib/plugin/node/debug/plugin-inline-debug-adapter.d.ts.map +1 -0
  312. package/lib/plugin/node/debug/plugin-inline-debug-adapter.js +45 -0
  313. package/lib/plugin/node/debug/plugin-inline-debug-adapter.js.map +1 -0
  314. package/lib/plugin/node/env-node-ext.d.ts.map +1 -1
  315. package/lib/plugin/node/env-node-ext.js +2 -2
  316. package/lib/plugin/node/env-node-ext.js.map +1 -1
  317. package/lib/plugin/path.spec.js +3 -3
  318. package/lib/plugin/path.spec.js.map +1 -1
  319. package/lib/plugin/plugin-context.d.ts.map +1 -1
  320. package/lib/plugin/plugin-context.js +76 -32
  321. package/lib/plugin/plugin-context.js.map +1 -1
  322. package/lib/plugin/plugin-manager.d.ts.map +1 -1
  323. package/lib/plugin/plugin-manager.js +7 -6
  324. package/lib/plugin/plugin-manager.js.map +1 -1
  325. package/lib/plugin/preference-registry.js +3 -3
  326. package/lib/plugin/preference-registry.js.map +1 -1
  327. package/lib/plugin/preferences/configuration.js +1 -1
  328. package/lib/plugin/preferences/configuration.js.map +1 -1
  329. package/lib/plugin/quick-open.d.ts.map +1 -1
  330. package/lib/plugin/quick-open.js +1 -1
  331. package/lib/plugin/quick-open.js.map +1 -1
  332. package/lib/plugin/scm.js +1 -3
  333. package/lib/plugin/scm.js.map +1 -1
  334. package/lib/plugin/status-bar/status-bar-item.d.ts +3 -2
  335. package/lib/plugin/status-bar/status-bar-item.d.ts.map +1 -1
  336. package/lib/plugin/status-bar/status-bar-item.js +5 -2
  337. package/lib/plugin/status-bar/status-bar-item.js.map +1 -1
  338. package/lib/plugin/status-bar-message-registry.d.ts +1 -1
  339. package/lib/plugin/status-bar-message-registry.d.ts.map +1 -1
  340. package/lib/plugin/status-bar-message-registry.js +2 -2
  341. package/lib/plugin/status-bar-message-registry.js.map +1 -1
  342. package/lib/plugin/text-editor.js +10 -10
  343. package/lib/plugin/text-editor.js.map +1 -1
  344. package/lib/plugin/timeline.js.map +1 -1
  345. package/lib/plugin/type-converters.js +6 -5
  346. package/lib/plugin/type-converters.js.map +1 -1
  347. package/lib/plugin/type-converters.spec.js +5 -5
  348. package/lib/plugin/type-converters.spec.js.map +1 -1
  349. package/lib/plugin/types-impl.d.ts.map +1 -1
  350. package/lib/plugin/types-impl.js +34 -32
  351. package/lib/plugin/types-impl.js.map +1 -1
  352. package/lib/plugin/webview-views.d.ts +68 -0
  353. package/lib/plugin/webview-views.d.ts.map +1 -0
  354. package/lib/plugin/webview-views.js +145 -0
  355. package/lib/plugin/webview-views.js.map +1 -0
  356. package/lib/plugin/webviews.d.ts +6 -0
  357. package/lib/plugin/webviews.d.ts.map +1 -1
  358. package/lib/plugin/webviews.js +29 -6
  359. package/lib/plugin/webviews.js.map +1 -1
  360. package/lib/plugin/workspace.d.ts +6 -0
  361. package/lib/plugin/workspace.d.ts.map +1 -1
  362. package/lib/plugin/workspace.js +21 -3
  363. package/lib/plugin/workspace.js.map +1 -1
  364. package/lib/plugin-ext-backend-electron-module.js +2 -2
  365. package/lib/plugin-ext-backend-electron-module.js.map +1 -1
  366. package/lib/plugin-ext-backend-module.js +2 -2
  367. package/lib/plugin-ext-backend-module.js.map +1 -1
  368. package/package.json +23 -23
  369. package/src/common/plugin-api-rpc-model.ts +13 -17
  370. package/src/common/plugin-api-rpc.ts +46 -14
  371. package/src/common/plugin-protocol.ts +7 -0
  372. package/src/hosted/browser/hosted-plugin.ts +20 -40
  373. package/src/hosted/node/hosted-plugin-deployer-handler.ts +23 -3
  374. package/src/hosted/node/plugin-reader.ts +2 -1
  375. package/src/hosted/node/scanners/scanner-theia.ts +2 -1
  376. package/src/hosted/node-electron/scanner-theia-electron.ts +1 -1
  377. package/src/main/browser/authentication-main.ts +137 -81
  378. package/src/main/browser/comments/comment-thread-widget.tsx +12 -12
  379. package/src/main/browser/custom-editors/custom-editor-widget.ts +5 -5
  380. package/src/main/browser/debug/plugin-debug-session-factory.ts +22 -22
  381. package/src/main/browser/dialogs/modal-notification.ts +1 -1
  382. package/src/main/browser/languages-main.ts +13 -3
  383. package/src/main/browser/main-context.ts +4 -0
  384. package/src/main/browser/plugin-authentication-service.ts +71 -0
  385. package/src/main/browser/plugin-ext-frontend-module.ts +13 -8
  386. package/src/main/browser/plugin-ext-widget.tsx +1 -1
  387. package/src/main/browser/view/plugin-view-registry.ts +73 -5
  388. package/src/main/browser/view/plugin-view-widget.ts +4 -4
  389. package/src/main/browser/view/tree-view-widget.tsx +14 -17
  390. package/src/main/browser/view-column-service.ts +1 -1
  391. package/src/main/browser/webview/webview.ts +5 -5
  392. package/src/main/browser/webview-views/webview-views-main.ts +142 -0
  393. package/src/main/browser/webview-views/webview-views.ts +38 -0
  394. package/src/main/browser/workspace-main.ts +9 -1
  395. package/src/main/electron-browser/webview/electron-webview-widget-factory.ts +4 -4
  396. package/src/main/node/paths/plugin-paths-service.ts +1 -1
  397. package/src/main/node/plugin-deployer-impl.ts +11 -7
  398. package/src/plugin/authentication-ext.ts +42 -32
  399. package/src/plugin/languages/code-action.ts +46 -3
  400. package/src/plugin/languages.ts +9 -0
  401. package/src/plugin/node/debug/plugin-debug-adapter-session.ts +7 -7
  402. package/src/plugin/node/debug/plugin-debug-adapter-starter.ts +1 -1
  403. package/src/plugin/node/debug/plugin-inline-debug-adapter.ts +47 -0
  404. package/src/plugin/node/env-node-ext.ts +1 -1
  405. package/src/plugin/plugin-context.ts +64 -9
  406. package/src/plugin/plugin-manager.ts +2 -1
  407. package/src/plugin/quick-open.ts +13 -11
  408. package/src/plugin/status-bar/status-bar-item.ts +8 -2
  409. package/src/plugin/status-bar-message-registry.ts +3 -2
  410. package/src/plugin/types-impl.ts +8 -8
  411. package/src/plugin/webview-views.ts +213 -0
  412. package/src/plugin/webviews.ts +30 -0
  413. package/src/plugin/workspace.ts +23 -0
@@ -0,0 +1,71 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2022 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 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ import { AuthenticationProvider, AuthenticationService, AuthenticationServiceImpl, AuthenticationSession } from '@theia/core/lib/browser/authentication-service';
18
+ import { inject } from '@theia/core/shared/inversify';
19
+ import { Deferred, timeoutReject } from '@theia/core/lib/common/promise-util';
20
+ import { HostedPluginSupport } from '../../hosted/browser/hosted-plugin';
21
+
22
+ export function getAuthenticationProviderActivationEvent(id: string): string { return `onAuthenticationRequest:${id}`; }
23
+
24
+ /**
25
+ * Plugin authentiction service that aims to activate additional plugins if sessions are created or queried.
26
+ */
27
+ export class PluginAuthenticationServiceImpl extends AuthenticationServiceImpl implements AuthenticationService {
28
+ @inject(HostedPluginSupport) protected readonly pluginService: HostedPluginSupport;
29
+
30
+ override async getSessions(id: string, scopes?: string[]): Promise<ReadonlyArray<AuthenticationSession>> {
31
+ await this.tryActivateProvider(id);
32
+ return super.getSessions(id, scopes);
33
+ }
34
+
35
+ override async login(id: string, scopes: string[]): Promise<AuthenticationSession> {
36
+ await this.tryActivateProvider(id);
37
+ return super.login(id, scopes);
38
+ }
39
+
40
+ protected async tryActivateProvider(providerId: string): Promise<AuthenticationProvider> {
41
+ this.pluginService.activateByEvent(getAuthenticationProviderActivationEvent(providerId));
42
+
43
+ const provider = this.authenticationProviders.get(providerId);
44
+ if (provider) {
45
+ return provider;
46
+ }
47
+
48
+ // When activate has completed, the extension has made the call to `registerAuthenticationProvider`.
49
+ // However, activate cannot block on this, so the renderer may not have gotten the event yet.
50
+ return Promise.race([
51
+ this.waitForProviderRegistration(providerId),
52
+ timeoutReject<AuthenticationProvider>(5000, 'Timed out waiting for authentication provider to register')
53
+ ]);
54
+ }
55
+
56
+ protected async waitForProviderRegistration(providerId: string): Promise<AuthenticationProvider> {
57
+ const waitForRegistration = new Deferred<AuthenticationProvider>();
58
+ const registration = this.onDidRegisterAuthenticationProvider(info => {
59
+ if (info.id === providerId) {
60
+ registration.dispose();
61
+ const provider = this.authenticationProviders.get(providerId);
62
+ if (provider) {
63
+ waitForRegistration.resolve(provider);
64
+ } else {
65
+ waitForRegistration.reject(new Error(`No authentication provider '${providerId}' is currently registered.`));
66
+ }
67
+ }
68
+ });
69
+ return waitForRegistration.promise;
70
+ }
71
+ }
@@ -21,7 +21,7 @@ import '../../../src/main/browser/style/comments.css';
21
21
  import { ContainerModule } from '@theia/core/shared/inversify';
22
22
  import {
23
23
  FrontendApplicationContribution, WidgetFactory, bindViewContribution,
24
- ViewContainerIdentifier, ViewContainer, createTreeContainer, TreeImpl, TreeWidget, TreeModelImpl, LabelProviderContribution
24
+ ViewContainerIdentifier, ViewContainer, createTreeContainer, TreeWidget, LabelProviderContribution
25
25
  } from '@theia/core/lib/browser';
26
26
  import { MaybePromise, CommandContribution, ResourceResolver, bindContributionProvider } from '@theia/core/lib/common';
27
27
  import { WebSocketConnectionProvider } from '@theia/core/lib/browser/messaging';
@@ -76,6 +76,8 @@ import { CustomEditorWidget } from './custom-editors/custom-editor-widget';
76
76
  import { CustomEditorService } from './custom-editors/custom-editor-service';
77
77
  import { UndoRedoService } from './custom-editors/undo-redo-service';
78
78
  import { WebviewFrontendSecurityWarnings } from './webview/webview-frontend-security-warnings';
79
+ import { PluginAuthenticationServiceImpl } from './plugin-authentication-service';
80
+ import { AuthenticationService } from '@theia/core/lib/browser/authentication-service';
79
81
 
80
82
  export default new ContainerModule((bind, unbind, isBound, rebind) => {
81
83
 
@@ -145,21 +147,21 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
145
147
  bind(WidgetFactory).toDynamicValue(({ container }) => ({
146
148
  id: PLUGIN_VIEW_DATA_FACTORY_ID,
147
149
  createWidget: (identifier: TreeViewWidgetIdentifier) => {
148
- const child = createTreeContainer(container, {
150
+ const props = {
149
151
  contextMenuPath: VIEW_ITEM_CONTEXT_MENU,
150
152
  expandOnlyOnExpansionToggleClick: true,
151
153
  expansionTogglePadding: 22,
152
154
  globalSelection: true,
153
155
  leftPadding: 8,
154
156
  search: true
157
+ };
158
+ const child = createTreeContainer(container, {
159
+ props,
160
+ tree: PluginTree,
161
+ model: PluginTreeModel,
162
+ widget: TreeViewWidget,
155
163
  });
156
164
  child.bind(TreeViewWidgetIdentifier).toConstantValue(identifier);
157
- child.bind(PluginTree).toSelf();
158
- child.rebind(TreeImpl).toService(PluginTree);
159
- child.bind(PluginTreeModel).toSelf();
160
- child.rebind(TreeModelImpl).toService(PluginTreeModel);
161
- child.bind(TreeViewWidget).toSelf();
162
- child.rebind(TreeWidget).toService(TreeViewWidget);
163
165
  return child.get(TreeWidget);
164
166
  }
165
167
  })).inSingletonScope();
@@ -234,4 +236,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
234
236
 
235
237
  bind(WebviewFrontendSecurityWarnings).toSelf().inSingletonScope();
236
238
  bind(FrontendApplicationContribution).toService(WebviewFrontendSecurityWarnings);
239
+
240
+ bind(PluginAuthenticationServiceImpl).toSelf().inSingletonScope();
241
+ rebind(AuthenticationService).toService(PluginAuthenticationServiceImpl);
237
242
  });
@@ -52,7 +52,7 @@ export class PluginWidget extends ReactWidget {
52
52
  this.toDispose.push(this.pluginService.onDidChangePlugins(() => this.update()));
53
53
  }
54
54
 
55
- protected onActivateRequest(msg: Message): void {
55
+ protected override onActivateRequest(msg: Message): void {
56
56
  super.onActivateRequest(msg);
57
57
  this.node.focus();
58
58
  }
@@ -20,7 +20,7 @@ import {
20
20
  ViewContainerIdentifier, ViewContainerTitleOptions, Widget, FrontendApplicationContribution,
21
21
  StatefulWidget, CommonMenus, BaseWidget, TreeViewWelcomeWidget, codicon, ViewContainerPart
22
22
  } from '@theia/core/lib/browser';
23
- import { ViewContainer, View, ViewWelcome } from '../../../common';
23
+ import { ViewContainer, View, ViewWelcome, PluginViewType } from '../../../common';
24
24
  import { PluginSharedStyle } from '../plugin-shared-style';
25
25
  import { DebugWidget } from '@theia/debug/lib/browser/view/debug-widget';
26
26
  import { PluginViewWidget, PluginViewWidgetIdentifier } from './plugin-view-widget';
@@ -31,7 +31,7 @@ import { DebugFrontendApplicationContribution } from '@theia/debug/lib/browser/d
31
31
  import { Disposable, DisposableCollection } from '@theia/core/lib/common/disposable';
32
32
  import { CommandRegistry } from '@theia/core/lib/common/command';
33
33
  import { MenuModelRegistry } from '@theia/core/lib/common/menu';
34
- import { Emitter } from '@theia/core/lib/common/event';
34
+ import { Emitter, Event } from '@theia/core/lib/common/event';
35
35
  import { ContextKeyService } from '@theia/core/lib/browser/context-key-service';
36
36
  import { ViewContextKeyService } from './view-context-key-service';
37
37
  import { PROBLEMS_WIDGET_ID } from '@theia/markers/lib/browser/problem/problem-widget';
@@ -41,6 +41,11 @@ import { TERMINAL_WIDGET_FACTORY_ID } from '@theia/terminal/lib/browser/terminal
41
41
  import { TreeViewWidget } from './tree-view-widget';
42
42
  import { SEARCH_VIEW_CONTAINER_ID } from '@theia/search-in-workspace/lib/browser/search-in-workspace-factory';
43
43
 
44
+ import { WebviewView, WebviewViewResolver } from '../webview-views/webview-views';
45
+ import { WebviewWidget, WebviewWidgetIdentifier } from '../webview/webview';
46
+ import { CancellationToken } from '@theia/core/lib/common/cancellation';
47
+ import { v4 } from 'uuid';
48
+
44
49
  export const PLUGIN_VIEW_FACTORY_ID = 'plugin-view';
45
50
  export const PLUGIN_VIEW_CONTAINER_FACTORY_ID = 'plugin-view-container';
46
51
  export const PLUGIN_VIEW_DATA_FACTORY_ID = 'plugin-view-data';
@@ -95,6 +100,8 @@ export class PluginViewRegistry implements FrontendApplicationContribution {
95
100
  private readonly viewDataProviders = new Map<string, ViewDataProvider>();
96
101
  private readonly viewDataState = new Map<string, object>();
97
102
 
103
+ private readonly webviewViewResolvers = new Map<string, WebviewViewResolver>();
104
+
98
105
  @postConstruct()
99
106
  protected init(): void {
100
107
  // VS Code Viewlets
@@ -333,6 +340,63 @@ export class PluginViewRegistry implements FrontendApplicationContribution {
333
340
  return toDispose;
334
341
  }
335
342
 
343
+ async registerWebviewView(viewId: string, resolver: WebviewViewResolver): Promise<Disposable> {
344
+ if (this.webviewViewResolvers.has(viewId)) {
345
+ throw new Error(`View resolver already registered for ${viewId}`);
346
+ }
347
+ this.webviewViewResolvers.set(viewId, resolver);
348
+
349
+ const webviewView = await this.createNewWebviewView();
350
+ const token = CancellationToken.None;
351
+ this.getView(viewId).then(async view => {
352
+ if (view) {
353
+ if (view.isVisible) {
354
+ await this.prepareView(view, webviewView.webview.identifier.id);
355
+ } else {
356
+ const toDisposeOnDidExpandView = new DisposableCollection(this.onDidExpandView(async id => {
357
+ if (id === viewId) {
358
+ dispose();
359
+ await this.prepareView(view, webviewView.webview.identifier.id);
360
+ }
361
+ }));
362
+ const dispose = () => toDisposeOnDidExpandView.dispose();
363
+ view.disposed.connect(dispose);
364
+ toDisposeOnDidExpandView.push(Disposable.create(() => view.disposed.disconnect(dispose)));
365
+ }
366
+ }
367
+ });
368
+
369
+ resolver.resolve(webviewView, token);
370
+
371
+ return Disposable.create(() => {
372
+ this.webviewViewResolvers.delete(viewId);
373
+ });
374
+ }
375
+
376
+ async createNewWebviewView(): Promise<WebviewView> {
377
+ const webview = await this.widgetManager.getOrCreateWidget<WebviewWidget>(
378
+ WebviewWidget.FACTORY_ID, <WebviewWidgetIdentifier>{ id: v4() });
379
+ webview.setContentOptions({ allowScripts: true });
380
+
381
+ let _description: string | undefined;
382
+
383
+ return {
384
+ webview,
385
+
386
+ get onDidChangeVisibility(): Event<boolean> { return webview.onDidChangeVisibility; },
387
+ get onDidDispose(): Event<void> { return webview.onDidDispose; },
388
+
389
+ get title(): string | undefined { return webview.title.label; },
390
+ set title(value: string | undefined) { webview.title.label = value || ''; },
391
+
392
+ get description(): string | undefined { return _description; },
393
+ set description(value: string | undefined) { _description = value; },
394
+
395
+ dispose: webview.dispose,
396
+ show: webview.show
397
+ };
398
+ }
399
+
336
400
  registerViewWelcome(viewWelcome: ViewWelcome): Disposable {
337
401
  const toDispose = new DisposableCollection();
338
402
 
@@ -409,7 +473,7 @@ export class PluginViewRegistry implements FrontendApplicationContribution {
409
473
  return this.getView(viewId);
410
474
  }
411
475
 
412
- protected async prepareView(widget: PluginViewWidget): Promise<void> {
476
+ protected async prepareView(widget: PluginViewWidget, webviewId?: string): Promise<void> {
413
477
  const data = this.views.get(widget.options.viewId);
414
478
  if (!data) {
415
479
  return;
@@ -419,7 +483,7 @@ export class PluginViewRegistry implements FrontendApplicationContribution {
419
483
  widget.title.label = view.name;
420
484
  }
421
485
  const currentDataWidget = widget.widgets[0];
422
- const viewDataWidget = await this.createViewDataWidget(view.id);
486
+ const viewDataWidget = await this.createViewDataWidget(view.id, webviewId);
423
487
  if (widget.isDisposed) {
424
488
  // eslint-disable-next-line no-unused-expressions
425
489
  viewDataWidget?.dispose();
@@ -701,8 +765,12 @@ export class PluginViewRegistry implements FrontendApplicationContribution {
701
765
  return toDispose;
702
766
  }
703
767
 
704
- protected async createViewDataWidget(viewId: string): Promise<Widget | undefined> {
768
+ protected async createViewDataWidget(viewId: string, webviewId?: string): Promise<Widget | undefined> {
705
769
  const view = this.views.get(viewId);
770
+ if (view?.[1]?.type === PluginViewType.Webview) {
771
+ const webviewWidget = this.widgetManager.getWidget(WebviewWidget.FACTORY_ID, <WebviewWidgetIdentifier>{ id: webviewId });
772
+ return webviewWidget;
773
+ }
706
774
  const provider = this.viewDataProviders.get(viewId);
707
775
  if (!view || !provider) {
708
776
  return undefined;
@@ -66,7 +66,7 @@ export class PluginViewWidget extends Panel implements StatefulWidget, Descripti
66
66
  this.toDispose.push(localContext);
67
67
  }
68
68
 
69
- protected onActivateRequest(msg: Message): void {
69
+ protected override onActivateRequest(msg: Message): void {
70
70
  super.onActivateRequest(msg);
71
71
  const widget = this.widgets[0];
72
72
  if (widget) {
@@ -144,17 +144,17 @@ export class PluginViewWidget extends Panel implements StatefulWidget, Descripti
144
144
  }
145
145
  }
146
146
 
147
- addWidget(widget: Widget): void {
147
+ override addWidget(widget: Widget): void {
148
148
  super.addWidget(widget);
149
149
  this.updateWidgetMessage();
150
150
  }
151
151
 
152
- insertWidget(index: number, widget: Widget): void {
152
+ override insertWidget(index: number, widget: Widget): void {
153
153
  super.insertWidget(index, widget);
154
154
  this.updateWidgetMessage();
155
155
  }
156
156
 
157
- dispose(): void {
157
+ override dispose(): void {
158
158
  this.toDispose.dispose();
159
159
  super.dispose();
160
160
  }
@@ -118,7 +118,7 @@ export class PluginTree extends TreeImpl {
118
118
  return this._isEmpty;
119
119
  }
120
120
 
121
- protected async resolveChildren(parent: CompositeTreeNode): Promise<TreeNode[]> {
121
+ protected override async resolveChildren(parent: CompositeTreeNode): Promise<TreeNode[]> {
122
122
  if (!this._proxy) {
123
123
  return super.resolveChildren(parent);
124
124
  }
@@ -204,7 +204,7 @@ export class PluginTree extends TreeImpl {
204
204
  export class PluginTreeModel extends TreeModelImpl {
205
205
 
206
206
  @inject(PluginTree)
207
- protected readonly tree: PluginTree;
207
+ protected override readonly tree: PluginTree;
208
208
 
209
209
  set proxy(proxy: TreeViewsExt | undefined) {
210
210
  this.tree.proxy = proxy;
@@ -242,7 +242,7 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
242
242
  readonly identifier: TreeViewWidgetIdentifier;
243
243
 
244
244
  @inject(PluginTreeModel)
245
- readonly model: PluginTreeModel;
245
+ override readonly model: PluginTreeModel;
246
246
 
247
247
  @inject(ContextKeyService)
248
248
  protected readonly contextKeyService: ContextKeyService;
@@ -250,11 +250,8 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
250
250
  @inject(TooltipService)
251
251
  protected readonly tooltipService: TooltipService;
252
252
 
253
- protected readonly onDidChangeVisibilityEmitter = new Emitter<boolean>();
254
- readonly onDidChangeVisibility = this.onDidChangeVisibilityEmitter.event;
255
-
256
253
  @postConstruct()
257
- protected init(): void {
254
+ protected override init(): void {
258
255
  super.init();
259
256
  this.id = this.identifier.id;
260
257
  this.addClass('theia-tree-view');
@@ -265,7 +262,7 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
265
262
  this.toDispose.push(this.onDidChangeVisibilityEmitter);
266
263
  }
267
264
 
268
- protected renderIcon(node: TreeNode, props: NodeProps): React.ReactNode {
265
+ protected override renderIcon(node: TreeNode, props: NodeProps): React.ReactNode {
269
266
  const icon = this.toNodeIcon(node);
270
267
  if (icon) {
271
268
  return <div className={icon + ' theia-tree-view-icon'}></div>;
@@ -273,7 +270,7 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
273
270
  return undefined;
274
271
  }
275
272
 
276
- protected renderCaption(node: TreeViewNode, props: NodeProps): React.ReactNode {
273
+ protected override renderCaption(node: TreeViewNode, props: NodeProps): React.ReactNode {
277
274
  const classes = [TREE_NODE_SEGMENT_CLASS];
278
275
  if (!this.hasTrailingSuffixes(node)) {
279
276
  classes.push(TREE_NODE_SEGMENT_GROW_CLASS);
@@ -325,7 +322,7 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
325
322
  return React.createElement('div', attrs, ...children);
326
323
  }
327
324
 
328
- protected renderTailDecorations(node: TreeViewNode, props: NodeProps): React.ReactNode {
325
+ protected override renderTailDecorations(node: TreeViewNode, props: NodeProps): React.ReactNode {
329
326
  return this.contextKeys.with({ view: this.id, viewItem: node.contextValue }, () => {
330
327
  const menu = this.menus.getMenu(VIEW_ITEM_INLINE_MENU);
331
328
  const arg = this.toTreeViewSelection(node);
@@ -352,30 +349,30 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
352
349
  }} />;
353
350
  }
354
351
 
355
- protected toContextMenuArgs(node: SelectableTreeNode): [TreeViewSelection] {
352
+ protected override toContextMenuArgs(node: SelectableTreeNode): [TreeViewSelection] {
356
353
  return [this.toTreeViewSelection(node)];
357
354
  }
358
355
 
359
- setFlag(flag: Widget.Flag): void {
356
+ override setFlag(flag: Widget.Flag): void {
360
357
  super.setFlag(flag);
361
358
  if (flag === Widget.Flag.IsVisible) {
362
359
  this.onDidChangeVisibilityEmitter.fire(this.isVisible);
363
360
  }
364
361
  }
365
362
 
366
- clearFlag(flag: Widget.Flag): void {
363
+ override clearFlag(flag: Widget.Flag): void {
367
364
  super.clearFlag(flag);
368
365
  if (flag === Widget.Flag.IsVisible) {
369
366
  this.onDidChangeVisibilityEmitter.fire(this.isVisible);
370
367
  }
371
368
  }
372
369
 
373
- handleEnter(event: KeyboardEvent): void {
370
+ override handleEnter(event: KeyboardEvent): void {
374
371
  super.handleEnter(event);
375
372
  this.tryExecuteCommand();
376
373
  }
377
374
 
378
- handleClickEvent(node: TreeNode, event: React.MouseEvent<HTMLElement>): void {
375
+ override handleClickEvent(node: TreeNode, event: React.MouseEvent<HTMLElement>): void {
379
376
  super.handleClickEvent(node, event);
380
377
  // If clicked on item (not collapsable icon) - execute command or toggle expansion if item has no command
381
378
  const commandMap = this.findCommands(node);
@@ -418,7 +415,7 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
418
415
  this.update();
419
416
  }
420
417
 
421
- protected render(): React.ReactNode {
418
+ protected override render(): React.ReactNode {
422
419
  const node = React.createElement('div', this.createContainerAttributes(), this.renderSearchInfo(), this.renderTree(this.model));
423
420
  this.tooltipService.update();
424
421
  return node;
@@ -431,7 +428,7 @@ export class TreeViewWidget extends TreeViewWelcomeWidget {
431
428
  return undefined;
432
429
  }
433
430
 
434
- shouldShowWelcomeView(): boolean {
431
+ override shouldShowWelcomeView(): boolean {
435
432
  return (this.model.proxy === undefined || this.model.isTreeEmpty) && this.message === undefined;
436
433
  }
437
434
  }
@@ -32,7 +32,7 @@ export class ViewColumnService {
32
32
  ) {
33
33
  let oldColumnValues = new Map<string, number>();
34
34
  const update = async () => {
35
- await new Promise((resolve => setTimeout(() => resolve())));
35
+ await new Promise<void>((resolve => setTimeout(resolve)));
36
36
  this.updateViewColumns();
37
37
  this.viewColumnIds.forEach((ids: string[], viewColumn: number) => {
38
38
  ids.forEach((id: string) => {
@@ -198,14 +198,14 @@ export class WebviewWidget extends BaseWidget implements StatefulWidget {
198
198
  }));
199
199
  }
200
200
 
201
- protected onBeforeAttach(msg: Message): void {
201
+ protected override onBeforeAttach(msg: Message): void {
202
202
  super.onBeforeAttach(msg);
203
203
  this.doShow();
204
204
  // iframe has to be reloaded when moved to another DOM element
205
205
  this.toDisposeOnDetach.push(Disposable.create(() => this.forceHide()));
206
206
  }
207
207
 
208
- protected onAfterAttach(msg: Message): void {
208
+ protected override onAfterAttach(msg: Message): void {
209
209
  super.onAfterAttach(msg);
210
210
  this.addEventListener(this.node, 'focus', () => {
211
211
  if (this.element) {
@@ -214,12 +214,12 @@ export class WebviewWidget extends BaseWidget implements StatefulWidget {
214
214
  });
215
215
  }
216
216
 
217
- protected onBeforeShow(msg: Message): void {
217
+ protected override onBeforeShow(msg: Message): void {
218
218
  super.onBeforeShow(msg);
219
219
  this.doShow();
220
220
  }
221
221
 
222
- protected onAfterHide(msg: Message): void {
222
+ protected override onAfterHide(msg: Message): void {
223
223
  super.onAfterHide(msg);
224
224
  this.doHide();
225
225
  }
@@ -410,7 +410,7 @@ export class WebviewWidget extends BaseWidget implements StatefulWidget {
410
410
  });
411
411
  }
412
412
 
413
- protected onActivateRequest(msg: Message): void {
413
+ protected override onActivateRequest(msg: Message): void {
414
414
  super.onActivateRequest(msg);
415
415
  this.node.focus();
416
416
  }
@@ -0,0 +1,142 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2021 SAP SE or an SAP affiliate company 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
+ * Copyright (c) Microsoft Corporation. All rights reserved.
18
+ * Licensed under the MIT License. See License.txt in the project root for license information.
19
+ *--------------------------------------------------------------------------------------------*/
20
+ // some code copied and modified from https://github.com/microsoft/vscode/blob/e1f0f8f51390dea5df9096718fb6b647ed5a9534/src/vs/workbench/api/browser/mainThreadWebviewViews.ts
21
+
22
+ import { inject, interfaces } from '@theia/core/shared/inversify';
23
+ import { WebviewViewsMain, MAIN_RPC_CONTEXT, WebviewViewsExt } from '../../../common/plugin-api-rpc';
24
+ import { RPCProtocol } from '../../../common/rpc-protocol';
25
+ import { Disposable, DisposableCollection, ILogger } from '@theia/core';
26
+ import { WebviewView } from './webview-views';
27
+ import { CancellationToken } from '@theia/core/lib/common/cancellation';
28
+ import { WebviewsMainImpl } from '../webviews-main';
29
+ import { Widget, WidgetManager } from '@theia/core/lib/browser';
30
+ import { PluginViewRegistry } from '../view/plugin-view-registry';
31
+
32
+ export class WebviewViewsMainImpl implements WebviewViewsMain, Disposable {
33
+
34
+ protected readonly proxy: WebviewViewsExt;
35
+ protected readonly toDispose = new DisposableCollection(
36
+ Disposable.create(() => { /* mark as not disposed */ })
37
+ );
38
+
39
+ protected readonly webviewViews = new Map<string, WebviewView>();
40
+ protected readonly webviewViewProviders = new Map<string, Disposable>();
41
+ protected readonly widgetManager: WidgetManager;
42
+ protected readonly pluginViewRegistry: PluginViewRegistry;
43
+
44
+ @inject(ILogger)
45
+ protected readonly logger: ILogger;
46
+
47
+ constructor(rpc: RPCProtocol,
48
+ container: interfaces.Container,
49
+ readonly webviewsMain: WebviewsMainImpl
50
+ ) {
51
+ this.proxy = rpc.getProxy(MAIN_RPC_CONTEXT.WEBVIEW_VIEWS_EXT);
52
+ this.widgetManager = container.get(WidgetManager);
53
+ this.pluginViewRegistry = container.get(PluginViewRegistry);
54
+ }
55
+
56
+ dispose(): void {
57
+ this.toDispose.dispose();
58
+ }
59
+
60
+ async $registerWebviewViewProvider(viewType: string, options: { retainContextWhenHidden?: boolean, serializeBuffersForPostMessage: boolean }): Promise<void> {
61
+
62
+ if (this.webviewViewProviders.has(viewType)) {
63
+ throw new Error(`View provider for ${viewType} already registered`);
64
+ }
65
+
66
+ const registration = await this.pluginViewRegistry.registerWebviewView(viewType, {
67
+ resolve: async (webviewView: WebviewView, cancellation: CancellationToken) => {
68
+ const handle = webviewView.webview.identifier.id;
69
+ this.webviewViews.set(handle, webviewView);
70
+ this.webviewsMain.hookWebview(webviewView.webview);
71
+
72
+ let state: string | undefined;
73
+ if (webviewView.webview.state) {
74
+ try {
75
+ state = JSON.parse(webviewView.webview.state);
76
+ console.log(state);
77
+ } catch (e) {
78
+ console.error('Could not load webview state', e, webviewView.webview.state);
79
+ }
80
+ }
81
+ if (options) {
82
+ webviewView.webview.options = options;
83
+ }
84
+
85
+ webviewView.onDidChangeVisibility(visible => {
86
+ this.proxy.$onDidChangeWebviewViewVisibility(handle, visible);
87
+ });
88
+
89
+ webviewView.onDidDispose(() => {
90
+ this.proxy.$disposeWebviewView(handle);
91
+ this.webviewViews.delete(handle);
92
+ });
93
+
94
+ try {
95
+ this.proxy.$resolveWebviewView(handle, viewType, webviewView.title, state, cancellation);
96
+ } catch (error) {
97
+ this.logger.error(`Error resolving webview view '${viewType}': ${error}`);
98
+ webviewView.webview.setHTML('failed to load plugin webview view');
99
+ }
100
+ }
101
+ });
102
+
103
+ this.webviewViewProviders.set(viewType, registration);
104
+ }
105
+
106
+ protected getWebview(handle: string): Widget | undefined {
107
+ return this.widgetManager.tryGetWidget(handle);
108
+ }
109
+
110
+ $unregisterWebviewViewProvider(viewType: string): void {
111
+ const provider = this.webviewViewProviders.get(viewType);
112
+ if (!provider) {
113
+ throw new Error(`No view provider for ${viewType} registered`);
114
+ }
115
+ provider.dispose();
116
+ this.webviewViewProviders.delete(viewType);
117
+ }
118
+
119
+ $setWebviewViewTitle(handle: string, value: string | undefined): void {
120
+ const webviewView = this.getWebviewView(handle);
121
+ webviewView.title = value;
122
+ }
123
+
124
+ $setWebviewViewDescription(handle: string, value: string | undefined): void {
125
+ const webviewView = this.getWebviewView(handle);
126
+ webviewView.description = value;
127
+ }
128
+
129
+ $show(handle: string, preserveFocus: boolean): void {
130
+ const webviewView = this.getWebviewView(handle);
131
+ webviewView.show(preserveFocus);
132
+ }
133
+
134
+ protected getWebviewView(handle: string): WebviewView {
135
+ const webviewView = this.webviewViews.get(handle);
136
+ if (!webviewView) {
137
+ throw new Error(`No webview view registered for handle '${handle}'`);
138
+ }
139
+ return webviewView;
140
+ }
141
+
142
+ }
@@ -0,0 +1,38 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2021 SAP SE or an SAP affiliate company 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
+ * Copyright (c) Microsoft Corporation. All rights reserved.
18
+ * Licensed under the MIT License. See License.txt in the project root for license information.
19
+ *--------------------------------------------------------------------------------------------*/
20
+ // copied and modified from https://github.com/microsoft/vscode/blob/a4a4cf5ace4472bc4f5176396bb290cafa15c518/src/vs/workbench/contrib/webviewView/browser/webviewViewService.ts
21
+
22
+ import { CancellationToken, Event } from '@theia/core/lib/common';
23
+ import { WebviewWidget } from '../webview/webview';
24
+
25
+ export interface WebviewView {
26
+ title?: string;
27
+ description?: string;
28
+ readonly webview: WebviewWidget;
29
+ readonly onDidChangeVisibility: Event<boolean>;
30
+ readonly onDidDispose: Event<void>;
31
+
32
+ dispose(): void;
33
+ show(preserveFocus: boolean): void;
34
+ }
35
+
36
+ export interface WebviewViewResolver {
37
+ resolve(webviewView: WebviewView, cancellation: CancellationToken): Promise<void>;
38
+ }