@theia/plugin-ext 1.53.0-next.5 → 1.53.0-next.55

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 (466) hide show
  1. package/README.md +54 -54
  2. package/lib/common/plugin-api-rpc.d.ts +19 -4
  3. package/lib/common/plugin-api-rpc.d.ts.map +1 -1
  4. package/lib/common/plugin-api-rpc.js +4 -2
  5. package/lib/common/plugin-api-rpc.js.map +1 -1
  6. package/lib/common/rpc-protocol.d.ts +14 -13
  7. package/lib/common/rpc-protocol.d.ts.map +1 -1
  8. package/lib/common/rpc-protocol.js +56 -53
  9. package/lib/common/rpc-protocol.js.map +1 -1
  10. package/lib/hosted/browser/hosted-plugin.d.ts +1 -0
  11. package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
  12. package/lib/hosted/browser/hosted-plugin.js +22 -12
  13. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  14. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  15. package/lib/hosted/node/scanners/scanner-theia.js +13 -1
  16. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  17. package/lib/main/browser/authentication-main.d.ts +6 -5
  18. package/lib/main/browser/authentication-main.d.ts.map +1 -1
  19. package/lib/main/browser/authentication-main.js +15 -9
  20. package/lib/main/browser/authentication-main.js.map +1 -1
  21. package/lib/main/browser/custom-editors/custom-editor-opener.d.ts +9 -3
  22. package/lib/main/browser/custom-editors/custom-editor-opener.d.ts.map +1 -1
  23. package/lib/main/browser/custom-editors/custom-editor-opener.js +120 -31
  24. package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
  25. package/lib/main/browser/custom-editors/custom-editor-widget.d.ts +7 -4
  26. package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
  27. package/lib/main/browser/custom-editors/custom-editor-widget.js +21 -7
  28. package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
  29. package/lib/main/browser/custom-editors/custom-editors-main.d.ts +3 -4
  30. package/lib/main/browser/custom-editors/custom-editors-main.d.ts.map +1 -1
  31. package/lib/main/browser/custom-editors/custom-editors-main.js +5 -55
  32. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  33. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.d.ts +4 -3
  34. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.d.ts.map +1 -1
  35. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +24 -16
  36. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js.map +1 -1
  37. package/lib/main/browser/main-context.d.ts.map +1 -1
  38. package/lib/main/browser/main-context.js +3 -0
  39. package/lib/main/browser/main-context.js.map +1 -1
  40. package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
  41. package/lib/main/browser/menus/menus-contribution-handler.js +1 -1
  42. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  43. package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts +1 -0
  44. package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts.map +1 -1
  45. package/lib/main/browser/menus/plugin-menu-command-adapter.js +22 -1
  46. package/lib/main/browser/menus/plugin-menu-command-adapter.js.map +1 -1
  47. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts +2 -2
  48. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts.map +1 -1
  49. package/lib/main/browser/menus/vscode-theia-menu-mappings.js +2 -0
  50. package/lib/main/browser/menus/vscode-theia-menu-mappings.js.map +1 -1
  51. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js +1 -1
  52. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js.map +1 -1
  53. package/lib/main/browser/notebooks/notebook-documents-main.d.ts.map +1 -1
  54. package/lib/main/browser/notebooks/notebook-documents-main.js +22 -3
  55. package/lib/main/browser/notebooks/notebook-documents-main.js.map +1 -1
  56. package/lib/main/browser/notebooks/notebook-editors-main.d.ts +1 -1
  57. package/lib/main/browser/notebooks/notebook-editors-main.d.ts.map +1 -1
  58. package/lib/main/browser/notebooks/notebook-editors-main.js +16 -2
  59. package/lib/main/browser/notebooks/notebook-editors-main.js.map +1 -1
  60. package/lib/main/browser/notebooks/renderers/cell-output-webview.js +86 -86
  61. package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
  62. package/lib/main/browser/plugin-ext-frontend-module.js +18 -0
  63. package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
  64. package/lib/main/browser/plugin-icon-theme-service.js +20 -20
  65. package/lib/main/browser/plugin-shared-style.js +14 -14
  66. package/lib/main/browser/uri-main.d.ts +16 -0
  67. package/lib/main/browser/uri-main.d.ts.map +1 -0
  68. package/lib/main/browser/uri-main.js +64 -0
  69. package/lib/main/browser/uri-main.js.map +1 -0
  70. package/lib/main/browser/view/plugin-view-registry.js +3 -3
  71. package/lib/main/browser/webview/webview-frontend-security-warnings.js +2 -2
  72. package/lib/main/browser/webview/webview-secondary-window-support.js +10 -10
  73. package/lib/main/browser/webview/webview.d.ts +1 -3
  74. package/lib/main/browser/webview/webview.d.ts.map +1 -1
  75. package/lib/main/browser/webview/webview.js +5 -4
  76. package/lib/main/browser/webview/webview.js.map +1 -1
  77. package/lib/main/browser/webviews-main.d.ts.map +1 -1
  78. package/lib/main/browser/webviews-main.js +6 -1
  79. package/lib/main/browser/webviews-main.js.map +1 -1
  80. package/lib/main/browser/workspace-main.d.ts +2 -0
  81. package/lib/main/browser/workspace-main.d.ts.map +1 -1
  82. package/lib/main/node/plugin-service.d.ts +1 -1
  83. package/lib/main/node/webview-backend-security-warnings.js +6 -6
  84. package/lib/plugin/authentication-ext.d.ts +3 -2
  85. package/lib/plugin/authentication-ext.d.ts.map +1 -1
  86. package/lib/plugin/authentication-ext.js +8 -5
  87. package/lib/plugin/authentication-ext.js.map +1 -1
  88. package/lib/plugin/custom-editors.d.ts +2 -4
  89. package/lib/plugin/custom-editors.d.ts.map +1 -1
  90. package/lib/plugin/custom-editors.js +5 -7
  91. package/lib/plugin/custom-editors.js.map +1 -1
  92. package/lib/plugin/env.d.ts +2 -0
  93. package/lib/plugin/env.d.ts.map +1 -1
  94. package/lib/plugin/env.js +4 -1
  95. package/lib/plugin/env.js.map +1 -1
  96. package/lib/plugin/known-commands.d.ts.map +1 -1
  97. package/lib/plugin/known-commands.js +1 -0
  98. package/lib/plugin/known-commands.js.map +1 -1
  99. package/lib/plugin/languages.d.ts +1 -0
  100. package/lib/plugin/languages.d.ts.map +1 -1
  101. package/lib/plugin/notebook/notebook-kernels.d.ts +2 -0
  102. package/lib/plugin/notebook/notebook-kernels.d.ts.map +1 -1
  103. package/lib/plugin/plugin-context.d.ts.map +1 -1
  104. package/lib/plugin/plugin-context.js +17 -6
  105. package/lib/plugin/plugin-context.js.map +1 -1
  106. package/lib/plugin/plugin-manager.d.ts.map +1 -1
  107. package/lib/plugin/plugin-manager.js +2 -1
  108. package/lib/plugin/plugin-manager.js.map +1 -1
  109. package/lib/plugin/scm.d.ts +1 -0
  110. package/lib/plugin/scm.d.ts.map +1 -1
  111. package/lib/plugin/terminal-ext.d.ts +3 -0
  112. package/lib/plugin/terminal-ext.d.ts.map +1 -1
  113. package/lib/plugin/terminal-ext.js +2 -0
  114. package/lib/plugin/terminal-ext.js.map +1 -1
  115. package/lib/plugin/type-converters.d.ts +6 -0
  116. package/lib/plugin/type-converters.d.ts.map +1 -1
  117. package/lib/plugin/type-converters.js +24 -3
  118. package/lib/plugin/type-converters.js.map +1 -1
  119. package/lib/plugin/types-impl.d.ts +8 -2
  120. package/lib/plugin/types-impl.d.ts.map +1 -1
  121. package/lib/plugin/types-impl.js +9 -1
  122. package/lib/plugin/types-impl.js.map +1 -1
  123. package/lib/plugin/uri-ext.d.ts +37 -0
  124. package/lib/plugin/uri-ext.d.ts.map +1 -0
  125. package/lib/plugin/uri-ext.js +50 -0
  126. package/lib/plugin/uri-ext.js.map +1 -0
  127. package/lib/plugin/webviews.js +1 -1
  128. package/lib/plugin/webviews.js.map +1 -1
  129. package/lib/plugin/workspace.d.ts +4 -0
  130. package/lib/plugin/workspace.d.ts.map +1 -1
  131. package/package.json +29 -29
  132. package/src/common/arrays.ts +70 -70
  133. package/src/common/assert.ts +23 -23
  134. package/src/common/cache.ts +51 -51
  135. package/src/common/character-classifier.ts +73 -73
  136. package/src/common/collections.ts +54 -54
  137. package/src/common/commands.ts +19 -19
  138. package/src/common/connection.ts +137 -137
  139. package/src/common/disposable-util.ts +39 -39
  140. package/src/common/editor-options.ts +74 -74
  141. package/src/common/env.ts +19 -19
  142. package/src/common/errors.ts +63 -63
  143. package/src/common/id-generator.ts +26 -26
  144. package/src/common/index.ts +24 -24
  145. package/src/common/language-pack-service.ts +34 -34
  146. package/src/common/link-computer.ts +354 -354
  147. package/src/common/object-identifier.ts +33 -33
  148. package/src/common/objects.ts +50 -50
  149. package/src/common/paths-util.ts +158 -158
  150. package/src/common/plugin-api-rpc-model.ts +907 -907
  151. package/src/common/plugin-api-rpc.ts +2752 -2738
  152. package/src/common/plugin-ext-api-contribution.ts +115 -115
  153. package/src/common/plugin-identifiers.ts +84 -84
  154. package/src/common/plugin-protocol.ts +1094 -1094
  155. package/src/common/reference-map.ts +38 -38
  156. package/src/common/rpc-protocol.ts +306 -310
  157. package/src/common/semantic-tokens-dto.ts +182 -182
  158. package/src/common/test-types.ts +154 -154
  159. package/src/common/types.ts +129 -129
  160. package/src/common/uint.ts +37 -37
  161. package/src/common/uri-components.ts +81 -81
  162. package/src/hosted/browser/hosted-plugin-watcher.ts +54 -54
  163. package/src/hosted/browser/hosted-plugin.ts +635 -624
  164. package/src/hosted/browser/plugin-worker.ts +52 -52
  165. package/src/hosted/browser/worker/debug-stub.ts +29 -29
  166. package/src/hosted/browser/worker/plugin-manifest-loader.ts +114 -114
  167. package/src/hosted/browser/worker/worker-env-ext.ts +40 -40
  168. package/src/hosted/browser/worker/worker-main.ts +212 -212
  169. package/src/hosted/browser/worker/worker-plugin-module.ts +80 -80
  170. package/src/hosted/common/hosted-plugin.ts +456 -456
  171. package/src/hosted/node/hosted-plugin-cli-contribution.ts +75 -75
  172. package/src/hosted/node/hosted-plugin-deployer-handler.ts +274 -274
  173. package/src/hosted/node/hosted-plugin-localization-service.ts +410 -410
  174. package/src/hosted/node/hosted-plugin-process.ts +248 -248
  175. package/src/hosted/node/hosted-plugin-protocol.ts +49 -49
  176. package/src/hosted/node/hosted-plugin.ts +116 -116
  177. package/src/hosted/node/metadata-scanner.ts +64 -64
  178. package/src/hosted/node/plugin-activation-events.ts +112 -112
  179. package/src/hosted/node/plugin-ext-hosted-backend-module.ts +94 -94
  180. package/src/hosted/node/plugin-host-module.ts +69 -69
  181. package/src/hosted/node/plugin-host-proxy.ts +82 -82
  182. package/src/hosted/node/plugin-host-rpc.ts +377 -377
  183. package/src/hosted/node/plugin-host.ts +110 -110
  184. package/src/hosted/node/plugin-language-pack-service.ts +43 -43
  185. package/src/hosted/node/plugin-manifest-loader.ts +32 -32
  186. package/src/hosted/node/plugin-reader.ts +136 -136
  187. package/src/hosted/node/plugin-service.ts +197 -197
  188. package/src/hosted/node/scanners/backend-init-theia.ts +71 -71
  189. package/src/hosted/node/scanners/file-plugin-uri-factory.ts +32 -32
  190. package/src/hosted/node/scanners/grammars-reader.ts +57 -57
  191. package/src/hosted/node/scanners/plugin-uri-factory.ts +33 -33
  192. package/src/hosted/node/scanners/scanner-theia.ts +963 -952
  193. package/src/hosted/node-electron/plugin-ext-hosted-electron-backend-module.ts +26 -26
  194. package/src/hosted/node-electron/scanner-theia-electron.ts +32 -32
  195. package/src/main/browser/authentication-main.ts +401 -388
  196. package/src/main/browser/clipboard-main.ts +38 -38
  197. package/src/main/browser/command-registry-main.ts +130 -130
  198. package/src/main/browser/commands.ts +104 -104
  199. package/src/main/browser/comments/comment-glyph-widget.ts +66 -66
  200. package/src/main/browser/comments/comment-thread-widget.tsx +696 -696
  201. package/src/main/browser/comments/comments-context-key-service.ts +68 -68
  202. package/src/main/browser/comments/comments-contribution.ts +268 -268
  203. package/src/main/browser/comments/comments-decorator.ts +110 -110
  204. package/src/main/browser/comments/comments-main.ts +482 -482
  205. package/src/main/browser/comments/comments-service.ts +205 -205
  206. package/src/main/browser/custom-editors/custom-editor-opener.tsx +205 -105
  207. package/src/main/browser/custom-editors/custom-editor-service.ts +108 -108
  208. package/src/main/browser/custom-editors/custom-editor-undo-redo-handler.ts +41 -41
  209. package/src/main/browser/custom-editors/custom-editor-widget-factory.ts +44 -44
  210. package/src/main/browser/custom-editors/custom-editor-widget.ts +127 -118
  211. package/src/main/browser/custom-editors/custom-editors-main.ts +526 -585
  212. package/src/main/browser/custom-editors/plugin-custom-editor-registry.ts +126 -120
  213. package/src/main/browser/data-transfer/data-transfer-type-converters.ts +68 -68
  214. package/src/main/browser/debug/debug-main.ts +397 -397
  215. package/src/main/browser/debug/plugin-debug-adapter-contribution.ts +48 -48
  216. package/src/main/browser/debug/plugin-debug-configuration-provider.ts +63 -63
  217. package/src/main/browser/debug/plugin-debug-service.ts +427 -427
  218. package/src/main/browser/debug/plugin-debug-session-contribution-registry.ts +76 -76
  219. package/src/main/browser/debug/plugin-debug-session-factory.ts +115 -115
  220. package/src/main/browser/decorations/decorations-main.ts +146 -146
  221. package/src/main/browser/dialogs/modal-notification.ts +112 -112
  222. package/src/main/browser/dialogs/style/modal-notification.css +123 -123
  223. package/src/main/browser/dialogs-main.ts +185 -185
  224. package/src/main/browser/documents-main.ts +275 -275
  225. package/src/main/browser/editors-and-documents-main.ts +425 -425
  226. package/src/main/browser/env-main.ts +60 -60
  227. package/src/main/browser/file-system-main-impl.ts +267 -267
  228. package/src/main/browser/hierarchy/hierarchy-types-converters.ts +189 -189
  229. package/src/main/browser/keybindings/keybindings-contribution-handler.ts +66 -66
  230. package/src/main/browser/label-service-main.ts +51 -51
  231. package/src/main/browser/languages-main.ts +1439 -1439
  232. package/src/main/browser/localization-main.ts +34 -34
  233. package/src/main/browser/main-context.ts +210 -206
  234. package/src/main/browser/main-file-system-event-service.ts +76 -76
  235. package/src/main/browser/menus/menus-contribution-handler.ts +172 -171
  236. package/src/main/browser/menus/plugin-menu-command-adapter.ts +358 -337
  237. package/src/main/browser/menus/vscode-theia-menu-mappings.ts +118 -116
  238. package/src/main/browser/message-registry-main.ts +43 -43
  239. package/src/main/browser/notebooks/notebook-documents-and-editors-main.ts +249 -249
  240. package/src/main/browser/notebooks/notebook-documents-main.ts +202 -182
  241. package/src/main/browser/notebooks/notebook-dto.ts +131 -131
  242. package/src/main/browser/notebooks/notebook-editors-main.ts +88 -75
  243. package/src/main/browser/notebooks/notebook-kernels-main.ts +339 -339
  244. package/src/main/browser/notebooks/notebook-renderers-main.ts +47 -47
  245. package/src/main/browser/notebooks/notebooks-main.ts +164 -164
  246. package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +452 -452
  247. package/src/main/browser/notebooks/renderers/output-webview-internal.ts +636 -636
  248. package/src/main/browser/notebooks/renderers/webview-communication.ts +107 -107
  249. package/src/main/browser/notification-main.ts +26 -26
  250. package/src/main/browser/output-channel-registry-main.ts +53 -53
  251. package/src/main/browser/plugin-authentication-service.ts +71 -71
  252. package/src/main/browser/plugin-contribution-handler.ts +698 -698
  253. package/src/main/browser/plugin-ext-frontend-module.ts +291 -272
  254. package/src/main/browser/plugin-ext-widget.tsx +132 -132
  255. package/src/main/browser/plugin-frontend-contribution.ts +70 -70
  256. package/src/main/browser/plugin-frontend-view-contribution.ts +38 -38
  257. package/src/main/browser/plugin-icon-service.ts +92 -92
  258. package/src/main/browser/plugin-icon-theme-service.ts +625 -625
  259. package/src/main/browser/plugin-shared-style.ts +154 -154
  260. package/src/main/browser/plugin-storage.ts +55 -55
  261. package/src/main/browser/plugin-terminal-registry.ts +27 -27
  262. package/src/main/browser/preference-registry-main.ts +123 -123
  263. package/src/main/browser/quick-open-main.ts +367 -367
  264. package/src/main/browser/scm-main.ts +472 -472
  265. package/src/main/browser/secrets-main.ts +82 -82
  266. package/src/main/browser/selection-provider-command.ts +45 -45
  267. package/src/main/browser/status-bar-message-registry-main.ts +90 -90
  268. package/src/main/browser/style/comments.css +345 -345
  269. package/src/main/browser/style/index.css +84 -84
  270. package/src/main/browser/style/plugin-sidebar.css +73 -73
  271. package/src/main/browser/style/tree.css +54 -54
  272. package/src/main/browser/style/webview.css +55 -55
  273. package/src/main/browser/tabs/tabs-main.ts +384 -384
  274. package/src/main/browser/tasks-main.ts +268 -268
  275. package/src/main/browser/terminal-main.ts +370 -370
  276. package/src/main/browser/test-main.ts +632 -632
  277. package/src/main/browser/text-editor-main.ts +478 -478
  278. package/src/main/browser/text-editor-model-service.ts +111 -111
  279. package/src/main/browser/text-editors-main.ts +234 -234
  280. package/src/main/browser/theme-icon-override.ts +246 -246
  281. package/src/main/browser/theming-main.ts +42 -42
  282. package/src/main/browser/timeline-main.ts +80 -80
  283. package/src/main/browser/uri-main.ts +72 -0
  284. package/src/main/browser/view/dnd-file-content-store.ts +42 -42
  285. package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +81 -81
  286. package/src/main/browser/view/plugin-view-registry.ts +967 -967
  287. package/src/main/browser/view/plugin-view-widget.ts +221 -221
  288. package/src/main/browser/view/tree-view-decorator-service.ts +51 -51
  289. package/src/main/browser/view/tree-view-widget.tsx +931 -931
  290. package/src/main/browser/view/tree-views-main.ts +205 -205
  291. package/src/main/browser/view/view-context-key-service.ts +64 -64
  292. package/src/main/browser/webview/pre/fake.html +14 -14
  293. package/src/main/browser/webview/pre/host.js +130 -130
  294. package/src/main/browser/webview/pre/index.html +17 -17
  295. package/src/main/browser/webview/pre/main.js +682 -682
  296. package/src/main/browser/webview/pre/service-worker.js +296 -295
  297. package/src/main/browser/webview/webview-context-keys.ts +62 -62
  298. package/src/main/browser/webview/webview-environment.ts +87 -87
  299. package/src/main/browser/webview/webview-frontend-security-warnings.ts +59 -59
  300. package/src/main/browser/webview/webview-preferences.ts +72 -72
  301. package/src/main/browser/webview/webview-resource-cache.ts +88 -88
  302. package/src/main/browser/webview/webview-secondary-window-support.ts +47 -47
  303. package/src/main/browser/webview/webview-theme-data-provider.ts +124 -124
  304. package/src/main/browser/webview/webview.ts +718 -719
  305. package/src/main/browser/webview-views/webview-views-main.ts +154 -154
  306. package/src/main/browser/webview-views/webview-views.ts +43 -43
  307. package/src/main/browser/webviews-main.ts +287 -282
  308. package/src/main/browser/window-activity-tracker.ts +96 -96
  309. package/src/main/browser/window-state-main.ts +85 -85
  310. package/src/main/browser/workspace-main.ts +424 -424
  311. package/src/main/common/basic-message-registry-main.ts +53 -53
  312. package/src/main/common/basic-notification-main.ts +86 -86
  313. package/src/main/common/env-main.ts +44 -44
  314. package/src/main/common/plugin-paths-protocol.ts +26 -26
  315. package/src/main/common/plugin-theia-environment.ts +36 -36
  316. package/src/main/common/webview-protocol.ts +28 -28
  317. package/src/main/electron-browser/plugin-ext-frontend-electron-module.ts +25 -25
  318. package/src/main/electron-browser/webview/electron-webview-widget-factory.ts +59 -59
  319. package/src/main/node/errors.spec.ts +37 -37
  320. package/src/main/node/handlers/plugin-theia-directory-handler.ts +137 -137
  321. package/src/main/node/handlers/plugin-theia-file-handler.ts +66 -66
  322. package/src/main/node/paths/const.ts +21 -21
  323. package/src/main/node/paths/plugin-paths-service.ts +163 -163
  324. package/src/main/node/plugin-cli-contribution.ts +85 -85
  325. package/src/main/node/plugin-deployer-contribution.ts +35 -35
  326. package/src/main/node/plugin-deployer-directory-handler-context-impl.ts +45 -45
  327. package/src/main/node/plugin-deployer-entry-impl.ts +132 -132
  328. package/src/main/node/plugin-deployer-file-handler-context-impl.ts +33 -33
  329. package/src/main/node/plugin-deployer-impl.ts +375 -375
  330. package/src/main/node/plugin-deployer-proxy-entry-impl.ts +96 -96
  331. package/src/main/node/plugin-deployer-resolver-context-impl.ts +55 -55
  332. package/src/main/node/plugin-ext-backend-module.ts +106 -106
  333. package/src/main/node/plugin-github-resolver.ts +139 -139
  334. package/src/main/node/plugin-http-resolver.ts +92 -92
  335. package/src/main/node/plugin-localization-server.ts +42 -42
  336. package/src/main/node/plugin-mgmt-cli-contribution.ts +64 -64
  337. package/src/main/node/plugin-remote-cli-contribution.ts +36 -36
  338. package/src/main/node/plugin-remote-copy-contribution.ts +36 -36
  339. package/src/main/node/plugin-server-handler.ts +69 -69
  340. package/src/main/node/plugin-service.ts +97 -97
  341. package/src/main/node/plugin-theia-deployer-participant.ts +32 -32
  342. package/src/main/node/plugin-uninstallation-manager.ts +74 -74
  343. package/src/main/node/plugins-key-value-storage.spec.ts +110 -110
  344. package/src/main/node/plugins-key-value-storage.ts +161 -161
  345. package/src/main/node/resolvers/local-directory-plugin-deployer-resolver.ts +37 -37
  346. package/src/main/node/resolvers/local-plugin-deployer-resolver.ts +56 -56
  347. package/src/main/node/temp-dir-util.ts +36 -36
  348. package/src/main/node/webview-backend-security-warnings.ts +45 -45
  349. package/src/main/style/status-bar.css +35 -35
  350. package/src/plugin/authentication-ext.ts +140 -136
  351. package/src/plugin/clipboard-ext.ts +43 -43
  352. package/src/plugin/command-registry.ts +219 -219
  353. package/src/plugin/comments.ts +549 -549
  354. package/src/plugin/custom-editors.ts +334 -336
  355. package/src/plugin/debug/debug-ext.ts +549 -549
  356. package/src/plugin/debug/plugin-debug-adapter-creator.ts +50 -50
  357. package/src/plugin/debug/plugin-debug-adapter-session.ts +106 -106
  358. package/src/plugin/debug/plugin-debug-adapter-tracker.ts +85 -85
  359. package/src/plugin/decorations.ts +140 -140
  360. package/src/plugin/dialogs.ts +96 -96
  361. package/src/plugin/document-data.ts +366 -366
  362. package/src/plugin/documents.ts +283 -283
  363. package/src/plugin/editors-and-documents.ts +176 -176
  364. package/src/plugin/env.ts +134 -129
  365. package/src/plugin/file-system-event-service-ext-impl.ts +256 -256
  366. package/src/plugin/file-system-ext-impl.ts +415 -415
  367. package/src/plugin/known-commands.spec.ts +50 -50
  368. package/src/plugin/known-commands.ts +429 -428
  369. package/src/plugin/label-service.ts +36 -36
  370. package/src/plugin/languages/call-hierarchy.ts +124 -124
  371. package/src/plugin/languages/code-action.ts +162 -162
  372. package/src/plugin/languages/color.ts +75 -75
  373. package/src/plugin/languages/completion.ts +183 -183
  374. package/src/plugin/languages/declaration.ts +72 -72
  375. package/src/plugin/languages/definition.ts +73 -73
  376. package/src/plugin/languages/diagnostics.ts +325 -325
  377. package/src/plugin/languages/document-drop-edit.ts +44 -44
  378. package/src/plugin/languages/document-formatting.ts +47 -47
  379. package/src/plugin/languages/document-highlight.ts +61 -61
  380. package/src/plugin/languages/evaluatable-expression.ts +47 -47
  381. package/src/plugin/languages/folding.ts +46 -46
  382. package/src/plugin/languages/hover.ts +58 -58
  383. package/src/plugin/languages/implementation.ts +73 -73
  384. package/src/plugin/languages/inlay-hints.ts +149 -149
  385. package/src/plugin/languages/inline-completion.ts +126 -126
  386. package/src/plugin/languages/inline-values.ts +50 -50
  387. package/src/plugin/languages/lens.ts +102 -102
  388. package/src/plugin/languages/link-provider.ts +81 -81
  389. package/src/plugin/languages/linked-editing-range.ts +48 -48
  390. package/src/plugin/languages/on-type-formatting.ts +50 -50
  391. package/src/plugin/languages/outline.ts +126 -126
  392. package/src/plugin/languages/range-formatting.ts +48 -48
  393. package/src/plugin/languages/reference.ts +58 -58
  394. package/src/plugin/languages/rename.ts +130 -130
  395. package/src/plugin/languages/selection-range.ts +80 -80
  396. package/src/plugin/languages/semantic-highlighting.ts +211 -211
  397. package/src/plugin/languages/signature.ts +82 -82
  398. package/src/plugin/languages/type-definition.ts +73 -73
  399. package/src/plugin/languages/type-hierarchy.ts +117 -117
  400. package/src/plugin/languages/util.ts +26 -26
  401. package/src/plugin/languages/workspace-symbol.ts +66 -66
  402. package/src/plugin/languages-utils.ts +68 -68
  403. package/src/plugin/languages.ts +1022 -1022
  404. package/src/plugin/localization-ext.ts +89 -89
  405. package/src/plugin/markdown-string.ts +115 -115
  406. package/src/plugin/message-registry.ts +70 -70
  407. package/src/plugin/node/debug/debug.spec.ts +98 -98
  408. package/src/plugin/node/debug/plugin-node-debug-adapter-creator.ts +167 -167
  409. package/src/plugin/node/env-node-ext.ts +64 -64
  410. package/src/plugin/node/plugin-container-module.ts +165 -165
  411. package/src/plugin/notebook/notebook-document.ts +446 -446
  412. package/src/plugin/notebook/notebook-documents.ts +58 -58
  413. package/src/plugin/notebook/notebook-editor.ts +116 -116
  414. package/src/plugin/notebook/notebook-editors.ts +71 -71
  415. package/src/plugin/notebook/notebook-kernels.ts +631 -631
  416. package/src/plugin/notebook/notebook-renderers.ts +71 -71
  417. package/src/plugin/notebook/notebooks.ts +449 -449
  418. package/src/plugin/notification.ts +80 -80
  419. package/src/plugin/output-channel/log-output-channel.ts +108 -108
  420. package/src/plugin/output-channel/output-channel-item.ts +73 -73
  421. package/src/plugin/output-channel-registry.ts +52 -52
  422. package/src/plugin/path.spec.ts +40 -40
  423. package/src/plugin/path.ts +68 -68
  424. package/src/plugin/plugin-context.ts +1606 -1595
  425. package/src/plugin/plugin-icon-path.ts +53 -53
  426. package/src/plugin/plugin-manager.ts +508 -507
  427. package/src/plugin/plugin-storage.ts +138 -138
  428. package/src/plugin/preference-registry.spec.ts +288 -288
  429. package/src/plugin/preference-registry.ts +335 -335
  430. package/src/plugin/prefix-sum-computer.ts +218 -218
  431. package/src/plugin/quick-open.ts +735 -735
  432. package/src/plugin/scm.ts +919 -919
  433. package/src/plugin/secrets-ext.ts +104 -104
  434. package/src/plugin/status-bar/status-bar-item.ts +193 -193
  435. package/src/plugin/status-bar-message-registry.ts +103 -103
  436. package/src/plugin/tabs.ts +431 -431
  437. package/src/plugin/tasks/task-provider.ts +57 -57
  438. package/src/plugin/tasks/tasks.ts +252 -252
  439. package/src/plugin/telemetry-ext.ts +298 -298
  440. package/src/plugin/terminal-ext.ts +569 -566
  441. package/src/plugin/test-item.ts +174 -174
  442. package/src/plugin/tests.ts +545 -545
  443. package/src/plugin/text-editor.ts +581 -581
  444. package/src/plugin/text-editors.ts +157 -157
  445. package/src/plugin/theming.ts +73 -73
  446. package/src/plugin/timeline.ts +186 -186
  447. package/src/plugin/tree/tree-views.ts +682 -682
  448. package/src/plugin/type-converters.spec.ts +476 -476
  449. package/src/plugin/type-converters.ts +1768 -1748
  450. package/src/plugin/types-impl.spec.ts +85 -85
  451. package/src/plugin/types-impl.ts +4011 -4001
  452. package/src/plugin/uri-ext.ts +60 -0
  453. package/src/plugin/webview-views.ts +228 -228
  454. package/src/plugin/webviews.ts +468 -468
  455. package/src/plugin/window-state.ts +75 -75
  456. package/src/plugin/word-helper.ts +162 -162
  457. package/src/plugin/workspace.ts +505 -505
  458. package/src/plugin-ext-backend-electron-module.ts +24 -24
  459. package/src/plugin-ext-backend-module.ts +24 -24
  460. package/src/plugin-ext-frontend-electron-module.ts +19 -19
  461. package/src/plugin-ext-frontend-module.ts +19 -19
  462. package/lib/common/proxy-handler.d.ts +0 -73
  463. package/lib/common/proxy-handler.d.ts.map +0 -1
  464. package/lib/common/proxy-handler.js +0 -106
  465. package/lib/common/proxy-handler.js.map +0 -1
  466. package/src/common/proxy-handler.ts +0 -143
@@ -1,1094 +1,1094 @@
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-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
- import { RpcServer } from '@theia/core/lib/common/messaging/proxy-factory';
17
- import { RPCProtocol } from './rpc-protocol';
18
- import { Disposable } from '@theia/core/lib/common/disposable';
19
- import { LogPart, KeysToAnyValues, KeysToKeysToAnyValue } from './types';
20
- import { CharacterPair, CommentRule, PluginAPIFactory, Plugin, ThemeIcon } from './plugin-api-rpc';
21
- import { ExtPluginApi } from './plugin-ext-api-contribution';
22
- import { IJSONSchema, IJSONSchemaSnippet } from '@theia/core/lib/common/json-schema';
23
- import { RecursivePartial } from '@theia/core/lib/common/types';
24
- import { PreferenceSchema, PreferenceSchemaProperties } from '@theia/core/lib/common/preferences/preference-schema';
25
- import { ProblemMatcherContribution, ProblemPatternContribution, TaskDefinition } from '@theia/task/lib/common';
26
- import { ColorDefinition } from '@theia/core/lib/common/color';
27
- import { ResourceLabelFormatter } from '@theia/core/lib/common/label-protocol';
28
- import { PluginIdentifiers } from './plugin-identifiers';
29
-
30
- export { PluginIdentifiers };
31
- export const hostedServicePath = '/services/hostedPlugin';
32
-
33
- /**
34
- * Plugin engine (API) type, i.e. 'theiaPlugin', 'vscode', 'theiaHeadlessPlugin', etc.
35
- */
36
- export type PluginEngine = string;
37
-
38
- /**
39
- * This interface describes a package.json object.
40
- */
41
- export interface PluginPackage {
42
- name: string;
43
- // The publisher is not guaranteed to be defined for unpublished plugins. https://github.com/microsoft/vscode-vsce/commit/a38657ece04c20e4fbde15d5ac1ed39ca51cb856
44
- publisher: string | undefined;
45
- version: string;
46
- engines: {
47
- [type in PluginEngine]: string;
48
- };
49
- theiaPlugin?: {
50
- frontend?: string;
51
- backend?: string;
52
- /* Requires the `@theia/plugin-ext-headless` extension. */
53
- headless?: string;
54
- };
55
- main?: string;
56
- browser?: string;
57
- displayName: string;
58
- description: string;
59
- contributes?: PluginPackageContribution;
60
- packagePath: string;
61
- activationEvents?: string[];
62
- extensionDependencies?: string[];
63
- extensionPack?: string[];
64
- l10n?: string;
65
- icon?: string;
66
- extensionKind?: Array<'ui' | 'workspace'>
67
- }
68
- export namespace PluginPackage {
69
- export function toPluginUrl(pck: PluginPackage | PluginModel, relativePath: string): string {
70
- return `hostedPlugin/${getPluginId(pck)}/${encodeURIComponent(relativePath)}`;
71
- }
72
- }
73
-
74
- /**
75
- * This interface describes a package.json contribution section object.
76
- */
77
- export interface PluginPackageContribution {
78
- authentication?: PluginPackageAuthenticationProvider[];
79
- configuration?: RecursivePartial<PreferenceSchema> | RecursivePartial<PreferenceSchema>[];
80
- configurationDefaults?: RecursivePartial<PreferenceSchemaProperties>;
81
- languages?: PluginPackageLanguageContribution[];
82
- grammars?: PluginPackageGrammarsContribution[];
83
- customEditors?: PluginPackageCustomEditor[];
84
- viewsContainers?: { [location: string]: PluginPackageViewContainer[] };
85
- views?: { [location: string]: PluginPackageView[] };
86
- viewsWelcome?: PluginPackageViewWelcome[];
87
- commands?: PluginPackageCommand | PluginPackageCommand[];
88
- menus?: { [location: string]: PluginPackageMenu[] };
89
- submenus?: PluginPackageSubmenu[];
90
- keybindings?: PluginPackageKeybinding | PluginPackageKeybinding[];
91
- debuggers?: PluginPackageDebuggersContribution[];
92
- snippets?: PluginPackageSnippetsContribution[];
93
- themes?: PluginThemeContribution[];
94
- iconThemes?: PluginIconThemeContribution[];
95
- icons?: PluginIconContribution[];
96
- colors?: PluginColorContribution[];
97
- taskDefinitions?: PluginTaskDefinitionContribution[];
98
- problemMatchers?: PluginProblemMatcherContribution[];
99
- problemPatterns?: PluginProblemPatternContribution[];
100
- jsonValidation?: PluginJsonValidationContribution[];
101
- resourceLabelFormatters?: ResourceLabelFormatter[];
102
- localizations?: PluginPackageLocalization[];
103
- terminal?: PluginPackageTerminal;
104
- notebooks?: PluginPackageNotebook[];
105
- notebookRenderer?: PluginNotebookRendererContribution[];
106
- notebookPreload?: PluginPackageNotebookPreload[];
107
- }
108
-
109
- export interface PluginPackageNotebook {
110
- type: string;
111
- displayName: string;
112
- selector?: readonly { filenamePattern?: string; excludeFileNamePattern?: string }[];
113
- priority?: string;
114
- }
115
-
116
- export interface PluginNotebookRendererContribution {
117
- readonly id: string;
118
- readonly displayName: string;
119
- readonly mimeTypes: string[];
120
- readonly entrypoint: string | { readonly extends: string; readonly path: string };
121
- readonly requiresMessaging?: 'always' | 'optional' | 'never'
122
- }
123
-
124
- export interface PluginPackageNotebookPreload {
125
- type: string;
126
- entrypoint: string;
127
- }
128
-
129
- export interface PluginPackageAuthenticationProvider {
130
- id: string;
131
- label: string;
132
- }
133
-
134
- export interface PluginPackageTerminalProfile {
135
- title: string;
136
- id: string;
137
- icon?: string;
138
- }
139
-
140
- export interface PluginPackageTerminal {
141
- profiles: PluginPackageTerminalProfile[];
142
- }
143
-
144
- export interface PluginPackageLocalization {
145
- languageId: string;
146
- languageName?: string;
147
- localizedLanguageName?: string;
148
- translations: PluginPackageTranslation[];
149
- minimalTranslations?: { [key: string]: string };
150
- }
151
-
152
- export interface PluginPackageTranslation {
153
- id: string;
154
- path: string;
155
- }
156
-
157
- export interface PluginPackageCustomEditor {
158
- viewType: string;
159
- displayName: string;
160
- selector?: CustomEditorSelector[];
161
- priority?: CustomEditorPriority;
162
- }
163
-
164
- export interface CustomEditorSelector {
165
- readonly filenamePattern?: string;
166
- }
167
-
168
- export enum CustomEditorPriority {
169
- default = 'default',
170
- builtin = 'builtin',
171
- option = 'option',
172
- }
173
-
174
- export interface PluginPackageViewContainer {
175
- id: string;
176
- title: string;
177
- icon: string;
178
- }
179
-
180
- export enum PluginViewType {
181
- Tree = 'tree',
182
- Webview = 'webview'
183
- }
184
-
185
- export interface PluginPackageView {
186
- id: string;
187
- name: string;
188
- when?: string;
189
- type?: string;
190
- }
191
-
192
- export interface PluginPackageViewWelcome {
193
- view: string;
194
- contents: string;
195
- when?: string;
196
- }
197
-
198
- export interface PluginPackageCommand {
199
- command: string;
200
- title: string;
201
- shortTitle?: string;
202
- original?: string;
203
- category?: string;
204
- icon?: string | { light: string; dark: string; };
205
- enablement?: string;
206
- }
207
-
208
- export interface PluginPackageMenu {
209
- command?: string;
210
- submenu?: string;
211
- alt?: string;
212
- group?: string;
213
- when?: string;
214
- }
215
-
216
- export interface PluginPackageSubmenu {
217
- id: string;
218
- label: string;
219
- icon: IconUrl;
220
- }
221
-
222
- export interface PluginPackageKeybinding {
223
- key?: string;
224
- command: string;
225
- when?: string;
226
- mac?: string;
227
- linux?: string;
228
- win?: string;
229
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
- args?: any;
231
- }
232
-
233
- export interface PluginPackageGrammarsContribution {
234
- language?: string;
235
- scopeName: string;
236
- path: string;
237
- embeddedLanguages?: ScopeMap;
238
- tokenTypes?: ScopeMap;
239
- injectTo?: string[];
240
- }
241
-
242
- export interface ScopeMap {
243
- [scopeName: string]: string;
244
- }
245
-
246
- export interface PluginPackageSnippetsContribution {
247
- language?: string;
248
- path?: string;
249
- }
250
-
251
- export interface PluginColorContribution {
252
- id?: string;
253
- description?: string;
254
- defaults?: { light?: string, dark?: string, highContrast?: string };
255
- }
256
-
257
- export type PluginUiTheme = 'vs' | 'vs-dark' | 'hc-black';
258
-
259
- export interface PluginThemeContribution {
260
- id?: string;
261
- label?: string;
262
- description?: string;
263
- path?: string;
264
- uiTheme?: PluginUiTheme;
265
- }
266
-
267
- export interface PluginIconThemeContribution {
268
- id?: string;
269
- label?: string;
270
- description?: string;
271
- path?: string;
272
- uiTheme?: PluginUiTheme;
273
- }
274
-
275
- export interface PluginIconContribution {
276
- [id: string]: {
277
- description: string;
278
- default: { fontPath: string; fontCharacter: string } | string;
279
- };
280
- }
281
-
282
- export interface PlatformSpecificAdapterContribution {
283
- program?: string;
284
- args?: string[];
285
- runtime?: string;
286
- runtimeArgs?: string[];
287
- }
288
-
289
- /**
290
- * This interface describes a package.json debuggers contribution section object.
291
- */
292
- export interface PluginPackageDebuggersContribution extends PlatformSpecificAdapterContribution {
293
- type: string;
294
- label?: string;
295
- languages?: string[];
296
- enableBreakpointsFor?: { languageIds: string[] };
297
- configurationAttributes: { [request: string]: IJSONSchema };
298
- configurationSnippets: IJSONSchemaSnippet[];
299
- variables?: ScopeMap;
300
- adapterExecutableCommand?: string;
301
- win?: PlatformSpecificAdapterContribution;
302
- winx86?: PlatformSpecificAdapterContribution;
303
- windows?: PlatformSpecificAdapterContribution;
304
- osx?: PlatformSpecificAdapterContribution;
305
- linux?: PlatformSpecificAdapterContribution;
306
- }
307
-
308
- /**
309
- * This interface describes a package.json languages contribution section object.
310
- */
311
- export interface PluginPackageLanguageContribution {
312
- id: string;
313
- extensions?: string[];
314
- filenames?: string[];
315
- filenamePatterns?: string[];
316
- firstLine?: string;
317
- aliases?: string[];
318
- mimetypes?: string[];
319
- configuration?: string;
320
- icon?: IconUrl;
321
- }
322
-
323
- export interface PluginPackageLanguageContributionConfiguration {
324
- comments?: CommentRule;
325
- brackets?: CharacterPair[];
326
- autoClosingPairs?: (CharacterPair | AutoClosingPairConditional)[];
327
- surroundingPairs?: (CharacterPair | AutoClosingPair)[];
328
- wordPattern?: string;
329
- indentationRules?: IndentationRules;
330
- folding?: FoldingRules;
331
- onEnterRules?: OnEnterRule[];
332
- }
333
-
334
- export interface PluginTaskDefinitionContribution {
335
- type: string;
336
- required: string[];
337
- properties?: IJSONSchema['properties'];
338
- }
339
-
340
- export interface PluginProblemMatcherContribution extends ProblemMatcherContribution {
341
- name: string;
342
- }
343
-
344
- export interface PluginProblemPatternContribution extends ProblemPatternContribution {
345
- name: string;
346
- }
347
-
348
- export interface PluginJsonValidationContribution {
349
- fileMatch: string | string[];
350
- url: string;
351
- }
352
-
353
- export const PluginScanner = Symbol('PluginScanner');
354
- /**
355
- * This scanner process package.json object and returns plugin metadata objects.
356
- */
357
- export interface PluginScanner {
358
- /**
359
- * The type of plugin's API (engine name)
360
- */
361
- apiType: PluginEngine;
362
-
363
- /**
364
- * Creates plugin's model.
365
- *
366
- * @param {PluginPackage} plugin
367
- * @returns {PluginModel}
368
- */
369
- getModel(plugin: PluginPackage): PluginModel;
370
-
371
- /**
372
- * Creates plugin's lifecycle.
373
- *
374
- * @returns {PluginLifecycle}
375
- */
376
- getLifecycle(plugin: PluginPackage): PluginLifecycle;
377
-
378
- getContribution(plugin: PluginPackage): Promise<PluginContribution | undefined>;
379
-
380
- /**
381
- * A mapping between a dependency as its defined in package.json
382
- * and its deployable form, e.g. `publisher.name` -> `vscode:extension/publisher.name`
383
- */
384
- getDependencies(plugin: PluginPackage): Map<string, string> | undefined;
385
- }
386
-
387
- /**
388
- * A plugin resolver is handling how to resolve a plugin link into a local resource.
389
- */
390
- export const PluginDeployerResolver = Symbol('PluginDeployerResolver');
391
- /**
392
- * A resolver handle a set of resource
393
- */
394
- export interface PluginDeployerResolver {
395
-
396
- init?(pluginDeployerResolverInit: PluginDeployerResolverInit): void;
397
-
398
- accept(pluginSourceId: string): boolean;
399
-
400
- resolve(pluginResolverContext: PluginDeployerResolverContext, options?: PluginDeployOptions): Promise<void>;
401
-
402
- }
403
-
404
- export const PluginDeployerDirectoryHandler = Symbol('PluginDeployerDirectoryHandler');
405
- export interface PluginDeployerDirectoryHandler {
406
- accept(pluginDeployerEntry: PluginDeployerEntry): Promise<boolean>;
407
-
408
- handle(context: PluginDeployerDirectoryHandlerContext): Promise<void>;
409
- }
410
-
411
- export const PluginDeployerFileHandler = Symbol('PluginDeployerFileHandler');
412
- export interface PluginDeployerFileHandler {
413
-
414
- accept(pluginDeployerEntry: PluginDeployerEntry): Promise<boolean>;
415
-
416
- handle(context: PluginDeployerFileHandlerContext): Promise<void>;
417
- }
418
-
419
- export interface PluginDeployerResolverInit {
420
-
421
- }
422
-
423
- export interface PluginDeployerResolverContext {
424
-
425
- addPlugin(pluginId: string, path: string): void;
426
-
427
- getPlugins(): PluginDeployerEntry[];
428
-
429
- getOriginId(): string;
430
-
431
- }
432
-
433
- export interface PluginDeployerStartContext {
434
- readonly userEntries: string[]
435
- readonly systemEntries: string[]
436
- }
437
-
438
- export const PluginDeployer = Symbol('PluginDeployer');
439
- export interface PluginDeployer {
440
-
441
- start(): Promise<void>;
442
-
443
- }
444
-
445
- export const PluginDeployerParticipant = Symbol('PluginDeployerParticipant');
446
- /**
447
- * A participant can hook into the plugin deployer lifecycle.
448
- */
449
- export interface PluginDeployerParticipant {
450
- onWillStart?(context: PluginDeployerStartContext): Promise<void>;
451
- }
452
-
453
- export enum PluginDeployerEntryType {
454
-
455
- FRONTEND,
456
-
457
- BACKEND,
458
-
459
- HEADLESS // Deployed in the Theia Node server outside the context of a frontend/backend connection
460
- }
461
-
462
- /**
463
- * Whether a plugin installed by a user or system.
464
- */
465
- export enum PluginType {
466
- System,
467
- User
468
- };
469
-
470
- export interface UnresolvedPluginEntry {
471
- id: string;
472
- type?: PluginType;
473
- }
474
-
475
- export interface PluginDeployerEntry {
476
-
477
- /**
478
- * ID (before any resolution)
479
- */
480
- id(): string;
481
-
482
- /**
483
- * Original resolved path
484
- */
485
- originalPath(): string;
486
-
487
- /**
488
- * Local path on the filesystem.
489
- */
490
- path(): string;
491
-
492
- /**
493
- * Get a specific entry
494
- */
495
- getValue<T>(key: string): T;
496
-
497
- /**
498
- * Store a value
499
- */
500
- storeValue<T>(key: string, value: T): void;
501
-
502
- /**
503
- * Update path
504
- */
505
- updatePath(newPath: string): void;
506
-
507
- getChanges(): string[];
508
-
509
- isFile(): Promise<boolean>;
510
-
511
- isDirectory(): Promise<boolean>;
512
-
513
- /**
514
- * Resolved if a resolver has handle this plugin
515
- */
516
- isResolved(): boolean;
517
-
518
- resolvedBy(): string;
519
-
520
- /**
521
- * Accepted when a handler is telling this location can go live
522
- */
523
- isAccepted(...types: PluginDeployerEntryType[]): boolean;
524
-
525
- accept(...types: PluginDeployerEntryType[]): void;
526
-
527
- hasError(): boolean;
528
-
529
- type: PluginType
530
- /**
531
- * A fs path to a directory where a plugin is located.
532
- * Depending on a plugin format it can be different from `path`.
533
- * Use `path` if you want to resolve something within a plugin, like `README.md` file.
534
- * Use `rootPath` if you want to manipulate the entire plugin location, like delete or move it.
535
- */
536
- rootPath: string
537
- }
538
-
539
- export interface PluginDeployerFileHandlerContext {
540
-
541
- unzip(sourcePath: string, destPath: string): Promise<void>;
542
-
543
- pluginEntry(): PluginDeployerEntry;
544
-
545
- }
546
-
547
- export interface PluginDeployerDirectoryHandlerContext {
548
-
549
- copy(origin: string, target: string): Promise<void>;
550
-
551
- pluginEntry(): PluginDeployerEntry;
552
-
553
- }
554
-
555
- /**
556
- * This interface describes a plugin model object, which is populated from package.json.
557
- */
558
- export interface PluginModel {
559
- id: string;
560
- name: string;
561
- publisher: string;
562
- version: string;
563
- displayName: string;
564
- description: string;
565
- engine: {
566
- type: PluginEngine;
567
- version: string;
568
- };
569
- entryPoint: PluginEntryPoint;
570
- packageUri: string;
571
- /**
572
- * @deprecated since 1.1.0 - because it lead to problems with getting a relative path
573
- * needed by Icon Themes to correctly load Fonts, use packageUri instead.
574
- */
575
- packagePath: string;
576
- iconUrl?: string;
577
- l10n?: string;
578
- readmeUrl?: string;
579
- licenseUrl?: string;
580
- }
581
-
582
- export interface PluginEntryPoint {
583
- frontend?: string;
584
- backend?: string;
585
- headless?: string;
586
- }
587
-
588
- /**
589
- * This interface describes some static plugin contributions.
590
- */
591
- export interface PluginContribution {
592
- activationEvents?: string[];
593
- authentication?: AuthenticationProviderInformation[];
594
- configuration?: PreferenceSchema[];
595
- configurationDefaults?: PreferenceSchemaProperties;
596
- languages?: LanguageContribution[];
597
- grammars?: GrammarsContribution[];
598
- customEditors?: CustomEditor[];
599
- viewsContainers?: { [location: string]: ViewContainer[] };
600
- views?: { [location: string]: View[] };
601
- viewsWelcome?: ViewWelcome[];
602
- commands?: PluginCommand[];
603
- menus?: { [location: string]: Menu[] };
604
- submenus?: Submenu[];
605
- keybindings?: Keybinding[];
606
- debuggers?: DebuggerContribution[];
607
- snippets?: SnippetContribution[];
608
- themes?: ThemeContribution[];
609
- iconThemes?: IconThemeContribution[];
610
- icons?: IconContribution[];
611
- colors?: ColorDefinition[];
612
- taskDefinitions?: TaskDefinition[];
613
- problemMatchers?: ProblemMatcherContribution[];
614
- problemPatterns?: ProblemPatternContribution[];
615
- resourceLabelFormatters?: ResourceLabelFormatter[];
616
- localizations?: Localization[];
617
- terminalProfiles?: TerminalProfile[];
618
- notebooks?: NotebookContribution[];
619
- notebookRenderer?: NotebookRendererContribution[];
620
- notebookPreload?: notebookPreloadContribution[];
621
- }
622
- export interface NotebookContribution {
623
- type: string;
624
- displayName: string;
625
- selector?: readonly { filenamePattern?: string; excludeFileNamePattern?: string }[];
626
- priority?: string;
627
- }
628
-
629
- export interface NotebookRendererContribution {
630
- readonly id: string;
631
- readonly displayName: string;
632
- readonly mimeTypes: string[];
633
- readonly entrypoint: string | { readonly extends: string; readonly path: string };
634
- readonly requiresMessaging?: 'always' | 'optional' | 'never'
635
- }
636
-
637
- export interface notebookPreloadContribution {
638
- type: string;
639
- entrypoint: string;
640
- }
641
-
642
- export interface AuthenticationProviderInformation {
643
- id: string;
644
- label: string;
645
- }
646
-
647
- export interface TerminalProfile {
648
- title: string,
649
- id: string,
650
- icon?: string
651
- }
652
-
653
- export interface Localization {
654
- languageId: string;
655
- languageName?: string;
656
- localizedLanguageName?: string;
657
- translations: Translation[];
658
- minimalTranslations?: { [key: string]: string };
659
- }
660
-
661
- export interface Translation {
662
- id: string;
663
- path: string;
664
- cachedContents?: { [scope: string]: { [key: string]: string } };
665
- }
666
-
667
- export interface SnippetContribution {
668
- uri: string
669
- source: string
670
- language?: string
671
- }
672
-
673
- export type UiTheme = 'vs' | 'vs-dark' | 'hc-black';
674
-
675
- export interface ThemeContribution {
676
- id?: string;
677
- label?: string;
678
- description?: string;
679
- uri: string;
680
- uiTheme?: UiTheme;
681
- }
682
-
683
- export interface IconThemeContribution {
684
- id: string;
685
- label?: string;
686
- description?: string;
687
- uri: string;
688
- uiTheme?: UiTheme;
689
- }
690
-
691
- export interface IconDefinition {
692
- fontCharacter: string;
693
- location: string;
694
- }
695
-
696
- export type IconDefaults = ThemeIcon | IconDefinition;
697
-
698
- export interface IconContribution {
699
- id: string;
700
- extensionId: string;
701
- description: string | undefined;
702
- defaults: IconDefaults;
703
- }
704
-
705
- export namespace IconContribution {
706
- export function isIconDefinition(defaults: IconDefaults): defaults is IconDefinition {
707
- return 'fontCharacter' in defaults;
708
- }
709
- }
710
-
711
- export interface GrammarsContribution {
712
- format: 'json' | 'plist';
713
- language?: string;
714
- scope: string;
715
- grammar?: string | object;
716
- grammarLocation?: string;
717
- embeddedLanguages?: ScopeMap;
718
- tokenTypes?: ScopeMap;
719
- injectTo?: string[];
720
- balancedBracketScopes?: string[];
721
- unbalancedBracketScopes?: string[];
722
- }
723
-
724
- /**
725
- * The language contribution
726
- */
727
- export interface LanguageContribution {
728
- id: string;
729
- extensions?: string[];
730
- filenames?: string[];
731
- filenamePatterns?: string[];
732
- firstLine?: string;
733
- aliases?: string[];
734
- mimetypes?: string[];
735
- configuration?: LanguageConfiguration;
736
- /**
737
- * @internal
738
- */
739
- icon?: IconUrl;
740
- }
741
-
742
- export interface RegExpOptions {
743
- pattern: string;
744
- flags?: string;
745
- }
746
-
747
- export interface LanguageConfiguration {
748
- brackets?: CharacterPair[];
749
- indentationRules?: IndentationRules;
750
- surroundingPairs?: AutoClosingPair[];
751
- autoClosingPairs?: AutoClosingPairConditional[];
752
- comments?: CommentRule;
753
- folding?: FoldingRules;
754
- wordPattern?: string | RegExpOptions;
755
- onEnterRules?: OnEnterRule[];
756
- }
757
-
758
- /**
759
- * This interface describes a package.json debuggers contribution section object.
760
- */
761
- export interface DebuggerContribution extends PlatformSpecificAdapterContribution {
762
- type: string,
763
- label?: string,
764
- languages?: string[],
765
- enableBreakpointsFor?: {
766
- languageIds: string[]
767
- },
768
- configurationAttributes?: {
769
- [request: string]: IJSONSchema
770
- },
771
- configurationSnippets?: IJSONSchemaSnippet[],
772
- variables?: ScopeMap,
773
- adapterExecutableCommand?: string
774
- win?: PlatformSpecificAdapterContribution;
775
- winx86?: PlatformSpecificAdapterContribution;
776
- windows?: PlatformSpecificAdapterContribution;
777
- osx?: PlatformSpecificAdapterContribution;
778
- linux?: PlatformSpecificAdapterContribution;
779
- }
780
-
781
- export interface IndentationRules {
782
- increaseIndentPattern: string | RegExpOptions;
783
- decreaseIndentPattern: string | RegExpOptions;
784
- unIndentedLinePattern?: string | RegExpOptions;
785
- indentNextLinePattern?: string | RegExpOptions;
786
- }
787
- export interface AutoClosingPair {
788
- close: string;
789
- open: string;
790
- }
791
-
792
- export interface AutoClosingPairConditional extends AutoClosingPair {
793
- notIn?: string[];
794
- }
795
-
796
- export interface FoldingMarkers {
797
- start: string | RegExpOptions;
798
- end: string | RegExpOptions;
799
- }
800
-
801
- export interface FoldingRules {
802
- offSide?: boolean;
803
- markers?: FoldingMarkers;
804
- }
805
-
806
- export interface OnEnterRule {
807
- beforeText: string | RegExpOptions;
808
- afterText?: string | RegExpOptions;
809
- previousLineText?: string | RegExpOptions;
810
- action: EnterAction;
811
- }
812
-
813
- export interface EnterAction {
814
- indent: 'none' | 'indent' | 'outdent' | 'indentOutdent';
815
- appendText?: string;
816
- removeText?: number;
817
- }
818
-
819
- /**
820
- * Custom Editors contribution
821
- */
822
- export interface CustomEditor {
823
- viewType: string;
824
- displayName: string;
825
- selector: CustomEditorSelector[];
826
- priority: CustomEditorPriority;
827
- }
828
-
829
- /**
830
- * Views Containers contribution
831
- */
832
- export interface ViewContainer {
833
- id: string;
834
- title: string;
835
- iconUrl: string;
836
- themeIcon?: string;
837
- }
838
-
839
- /**
840
- * View contribution
841
- */
842
- export interface View {
843
- id: string;
844
- name: string;
845
- when?: string;
846
- type?: string;
847
- }
848
-
849
- /**
850
- * View Welcome contribution
851
- */
852
- export interface ViewWelcome {
853
- view: string;
854
- content: string;
855
- when?: string;
856
- order: number;
857
- }
858
-
859
- export interface PluginCommand {
860
- command: string;
861
- title: string;
862
- shortTitle?: string;
863
- originalTitle?: string;
864
- category?: string;
865
- iconUrl?: IconUrl;
866
- themeIcon?: string;
867
- enablement?: string;
868
- }
869
-
870
- export type IconUrl = string | { light: string; dark: string; };
871
-
872
- /**
873
- * Menu contribution
874
- */
875
- export interface Menu {
876
- command?: string;
877
- submenu?: string
878
- alt?: string;
879
- group?: string;
880
- when?: string;
881
- }
882
-
883
- export interface Submenu {
884
- id: string;
885
- label: string;
886
- icon?: IconUrl;
887
- }
888
-
889
- /**
890
- * Keybinding contribution
891
- */
892
- export interface Keybinding {
893
- keybinding?: string;
894
- command: string;
895
- when?: string;
896
- mac?: string;
897
- linux?: string;
898
- win?: string;
899
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
900
- args?: any;
901
- }
902
-
903
- /**
904
- * This interface describes a plugin lifecycle object.
905
- */
906
- export interface PluginLifecycle {
907
- startMethod: string;
908
- stopMethod: string;
909
- /**
910
- * Frontend module name, frontend plugin should expose this name.
911
- */
912
- frontendModuleName?: string;
913
- /**
914
- * Path to the script which should do some initialization before frontend plugin is loaded.
915
- */
916
- frontendInitPath?: string;
917
- /**
918
- * Path to the script which should do some initialization before backend plugin is loaded.
919
- */
920
- backendInitPath?: string;
921
- }
922
-
923
- /**
924
- * The export function of initialization module of backend plugin.
925
- */
926
- export interface BackendInitializationFn {
927
- (apiFactory: PluginAPIFactory, plugin: Plugin): void;
928
- }
929
-
930
- export interface BackendLoadingFn {
931
- (rpc: RPCProtocol, plugin: Plugin): void;
932
- }
933
-
934
- export interface PluginContext {
935
- subscriptions: Disposable[];
936
- }
937
-
938
- export interface ExtensionContext {
939
- subscriptions: Disposable[];
940
- }
941
-
942
- export interface PluginMetadata {
943
- host: string;
944
- model: PluginModel;
945
- lifecycle: PluginLifecycle;
946
- isUnderDevelopment?: boolean;
947
- outOfSync: boolean;
948
- }
949
-
950
- export const MetadataProcessor = Symbol('MetadataProcessor');
951
- export interface MetadataProcessor {
952
- process(pluginMetadata: PluginMetadata): void;
953
- }
954
-
955
- export function getPluginId(plugin: PluginPackage | PluginModel): string {
956
- return `${plugin.publisher}_${plugin.name}`.replace(/\W/g, '_');
957
- }
958
-
959
- export function buildFrontendModuleName(plugin: PluginPackage | PluginModel): string {
960
- return `${plugin.publisher}_${plugin.name}`.replace(/\W/g, '_');
961
- }
962
-
963
- export const HostedPluginClient = Symbol('HostedPluginClient');
964
- export interface HostedPluginClient {
965
- postMessage(pluginHost: string, buffer: Uint8Array): Promise<void>;
966
-
967
- log(logPart: LogPart): void;
968
-
969
- onDidDeploy(): void;
970
- }
971
-
972
- export interface PluginDependencies {
973
- metadata: PluginMetadata
974
- /**
975
- * Actual listing of plugin dependencies.
976
- * Mapping from {@link PluginIdentifiers.UnversionedId external representation} of plugin identity to a string
977
- * that can be used to identify the resolver for the specific plugin case, e.g. with scheme `vscode://<id>`.
978
- */
979
- mapping?: Map<string, string>
980
- }
981
-
982
- export const PluginDeployerHandler = Symbol('PluginDeployerHandler');
983
- export interface PluginDeployerHandler {
984
- deployFrontendPlugins(frontendPlugins: PluginDeployerEntry[]): Promise<number | undefined>;
985
- deployBackendPlugins(backendPlugins: PluginDeployerEntry[]): Promise<number | undefined>;
986
-
987
- getDeployedPlugins(): Promise<DeployedPlugin[]>;
988
- getDeployedPluginsById(pluginId: string): DeployedPlugin[];
989
-
990
- getDeployedPlugin(pluginId: PluginIdentifiers.VersionedId): DeployedPlugin | undefined;
991
- /**
992
- * Removes the plugin from the location it originally resided on disk.
993
- * Unless `--uncompressed-plugins-in-place` is passed to the CLI, this operation is safe.
994
- */
995
- uninstallPlugin(pluginId: PluginIdentifiers.VersionedId): Promise<boolean>;
996
- /**
997
- * Removes the plugin from the locations to which it had been deployed.
998
- * This operation is not safe - references to deleted assets may remain.
999
- */
1000
- undeployPlugin(pluginId: PluginIdentifiers.VersionedId): Promise<boolean>;
1001
-
1002
- getPluginDependencies(pluginToBeInstalled: PluginDeployerEntry): Promise<PluginDependencies | undefined>;
1003
- }
1004
-
1005
- export interface GetDeployedPluginsParams {
1006
- pluginIds: PluginIdentifiers.VersionedId[]
1007
- }
1008
-
1009
- export interface DeployedPlugin {
1010
- /**
1011
- * defaults to system
1012
- */
1013
- type?: PluginType;
1014
- metadata: PluginMetadata;
1015
- contributes?: PluginContribution;
1016
- }
1017
-
1018
- export const HostedPluginServer = Symbol('HostedPluginServer');
1019
- export interface HostedPluginServer extends RpcServer<HostedPluginClient> {
1020
-
1021
- getDeployedPluginIds(): Promise<PluginIdentifiers.VersionedId[]>;
1022
-
1023
- getUninstalledPluginIds(): Promise<readonly PluginIdentifiers.VersionedId[]>;
1024
-
1025
- getDeployedPlugins(params: GetDeployedPluginsParams): Promise<DeployedPlugin[]>;
1026
-
1027
- getExtPluginAPI(): Promise<ExtPluginApi[]>;
1028
-
1029
- onMessage(targetHost: string, message: Uint8Array): Promise<void>;
1030
-
1031
- }
1032
-
1033
- export const PLUGIN_HOST_BACKEND = 'main';
1034
-
1035
- export interface WorkspaceStorageKind {
1036
- workspace?: string | undefined;
1037
- roots: string[];
1038
- }
1039
- export type GlobalStorageKind = undefined;
1040
- export type PluginStorageKind = GlobalStorageKind | WorkspaceStorageKind;
1041
-
1042
- export interface PluginDeployOptions {
1043
- version: string;
1044
- /** Instructs the deployer to ignore any existing plugins with different versions */
1045
- ignoreOtherVersions?: boolean;
1046
- }
1047
-
1048
- /**
1049
- * The JSON-RPC workspace interface.
1050
- */
1051
- export const pluginServerJsonRpcPath = '/services/plugin-ext';
1052
- export const PluginServer = Symbol('PluginServer');
1053
- export interface PluginServer {
1054
-
1055
- /**
1056
- * Deploy a plugin.
1057
- *
1058
- * @param type whether a plugin is installed by a system or a user, defaults to a user
1059
- */
1060
- deploy(pluginEntry: string, type?: PluginType, options?: PluginDeployOptions): Promise<void>;
1061
- uninstall(pluginId: PluginIdentifiers.VersionedId): Promise<void>;
1062
- undeploy(pluginId: PluginIdentifiers.VersionedId): Promise<void>;
1063
-
1064
- setStorageValue(key: string, value: KeysToAnyValues, kind: PluginStorageKind): Promise<boolean>;
1065
- getStorageValue(key: string, kind: PluginStorageKind): Promise<KeysToAnyValues>;
1066
- getAllStorageValues(kind: PluginStorageKind): Promise<KeysToKeysToAnyValue>;
1067
- }
1068
-
1069
- export const ServerPluginRunner = Symbol('ServerPluginRunner');
1070
- export interface ServerPluginRunner {
1071
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1072
- acceptMessage(pluginHostId: string, jsonMessage: Uint8Array): boolean;
1073
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1074
- onMessage(pluginHostId: string, jsonMessage: Uint8Array): void;
1075
- setClient(client: HostedPluginClient): void;
1076
- setDefault(defaultRunner: ServerPluginRunner): void;
1077
- clientClosed(): void;
1078
-
1079
- /**
1080
- * Provides additional deployed plugins.
1081
- */
1082
- getExtraDeployedPlugins(): Promise<DeployedPlugin[]>;
1083
-
1084
- /**
1085
- * Provides additional plugin ids.
1086
- */
1087
- getExtraDeployedPluginIds(): Promise<PluginIdentifiers.VersionedId[]>;
1088
-
1089
- }
1090
-
1091
- export const PluginHostEnvironmentVariable = Symbol('PluginHostEnvironmentVariable');
1092
- export interface PluginHostEnvironmentVariable {
1093
- process(env: NodeJS.ProcessEnv): void;
1094
- }
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-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+ import { RpcServer } from '@theia/core/lib/common/messaging/proxy-factory';
17
+ import { RPCProtocol } from './rpc-protocol';
18
+ import { Disposable } from '@theia/core/lib/common/disposable';
19
+ import { LogPart, KeysToAnyValues, KeysToKeysToAnyValue } from './types';
20
+ import { CharacterPair, CommentRule, PluginAPIFactory, Plugin, ThemeIcon } from './plugin-api-rpc';
21
+ import { ExtPluginApi } from './plugin-ext-api-contribution';
22
+ import { IJSONSchema, IJSONSchemaSnippet } from '@theia/core/lib/common/json-schema';
23
+ import { RecursivePartial } from '@theia/core/lib/common/types';
24
+ import { PreferenceSchema, PreferenceSchemaProperties } from '@theia/core/lib/common/preferences/preference-schema';
25
+ import { ProblemMatcherContribution, ProblemPatternContribution, TaskDefinition } from '@theia/task/lib/common';
26
+ import { ColorDefinition } from '@theia/core/lib/common/color';
27
+ import { ResourceLabelFormatter } from '@theia/core/lib/common/label-protocol';
28
+ import { PluginIdentifiers } from './plugin-identifiers';
29
+
30
+ export { PluginIdentifiers };
31
+ export const hostedServicePath = '/services/hostedPlugin';
32
+
33
+ /**
34
+ * Plugin engine (API) type, i.e. 'theiaPlugin', 'vscode', 'theiaHeadlessPlugin', etc.
35
+ */
36
+ export type PluginEngine = string;
37
+
38
+ /**
39
+ * This interface describes a package.json object.
40
+ */
41
+ export interface PluginPackage {
42
+ name: string;
43
+ // The publisher is not guaranteed to be defined for unpublished plugins. https://github.com/microsoft/vscode-vsce/commit/a38657ece04c20e4fbde15d5ac1ed39ca51cb856
44
+ publisher: string | undefined;
45
+ version: string;
46
+ engines: {
47
+ [type in PluginEngine]: string;
48
+ };
49
+ theiaPlugin?: {
50
+ frontend?: string;
51
+ backend?: string;
52
+ /* Requires the `@theia/plugin-ext-headless` extension. */
53
+ headless?: string;
54
+ };
55
+ main?: string;
56
+ browser?: string;
57
+ displayName: string;
58
+ description: string;
59
+ contributes?: PluginPackageContribution;
60
+ packagePath: string;
61
+ activationEvents?: string[];
62
+ extensionDependencies?: string[];
63
+ extensionPack?: string[];
64
+ l10n?: string;
65
+ icon?: string;
66
+ extensionKind?: Array<'ui' | 'workspace'>
67
+ }
68
+ export namespace PluginPackage {
69
+ export function toPluginUrl(pck: PluginPackage | PluginModel, relativePath: string): string {
70
+ return `hostedPlugin/${getPluginId(pck)}/${encodeURIComponent(relativePath)}`;
71
+ }
72
+ }
73
+
74
+ /**
75
+ * This interface describes a package.json contribution section object.
76
+ */
77
+ export interface PluginPackageContribution {
78
+ authentication?: PluginPackageAuthenticationProvider[];
79
+ configuration?: RecursivePartial<PreferenceSchema> | RecursivePartial<PreferenceSchema>[];
80
+ configurationDefaults?: RecursivePartial<PreferenceSchemaProperties>;
81
+ languages?: PluginPackageLanguageContribution[];
82
+ grammars?: PluginPackageGrammarsContribution[];
83
+ customEditors?: PluginPackageCustomEditor[];
84
+ viewsContainers?: { [location: string]: PluginPackageViewContainer[] };
85
+ views?: { [location: string]: PluginPackageView[] };
86
+ viewsWelcome?: PluginPackageViewWelcome[];
87
+ commands?: PluginPackageCommand | PluginPackageCommand[];
88
+ menus?: { [location: string]: PluginPackageMenu[] };
89
+ submenus?: PluginPackageSubmenu[];
90
+ keybindings?: PluginPackageKeybinding | PluginPackageKeybinding[];
91
+ debuggers?: PluginPackageDebuggersContribution[];
92
+ snippets?: PluginPackageSnippetsContribution[];
93
+ themes?: PluginThemeContribution[];
94
+ iconThemes?: PluginIconThemeContribution[];
95
+ icons?: PluginIconContribution[];
96
+ colors?: PluginColorContribution[];
97
+ taskDefinitions?: PluginTaskDefinitionContribution[];
98
+ problemMatchers?: PluginProblemMatcherContribution[];
99
+ problemPatterns?: PluginProblemPatternContribution[];
100
+ jsonValidation?: PluginJsonValidationContribution[];
101
+ resourceLabelFormatters?: ResourceLabelFormatter[];
102
+ localizations?: PluginPackageLocalization[];
103
+ terminal?: PluginPackageTerminal;
104
+ notebooks?: PluginPackageNotebook[];
105
+ notebookRenderer?: PluginNotebookRendererContribution[];
106
+ notebookPreload?: PluginPackageNotebookPreload[];
107
+ }
108
+
109
+ export interface PluginPackageNotebook {
110
+ type: string;
111
+ displayName: string;
112
+ selector?: readonly { filenamePattern?: string; excludeFileNamePattern?: string }[];
113
+ priority?: string;
114
+ }
115
+
116
+ export interface PluginNotebookRendererContribution {
117
+ readonly id: string;
118
+ readonly displayName: string;
119
+ readonly mimeTypes: string[];
120
+ readonly entrypoint: string | { readonly extends: string; readonly path: string };
121
+ readonly requiresMessaging?: 'always' | 'optional' | 'never'
122
+ }
123
+
124
+ export interface PluginPackageNotebookPreload {
125
+ type: string;
126
+ entrypoint: string;
127
+ }
128
+
129
+ export interface PluginPackageAuthenticationProvider {
130
+ id: string;
131
+ label: string;
132
+ }
133
+
134
+ export interface PluginPackageTerminalProfile {
135
+ title: string;
136
+ id: string;
137
+ icon?: string;
138
+ }
139
+
140
+ export interface PluginPackageTerminal {
141
+ profiles: PluginPackageTerminalProfile[];
142
+ }
143
+
144
+ export interface PluginPackageLocalization {
145
+ languageId: string;
146
+ languageName?: string;
147
+ localizedLanguageName?: string;
148
+ translations: PluginPackageTranslation[];
149
+ minimalTranslations?: { [key: string]: string };
150
+ }
151
+
152
+ export interface PluginPackageTranslation {
153
+ id: string;
154
+ path: string;
155
+ }
156
+
157
+ export interface PluginPackageCustomEditor {
158
+ viewType: string;
159
+ displayName: string;
160
+ selector?: CustomEditorSelector[];
161
+ priority?: CustomEditorPriority;
162
+ }
163
+
164
+ export interface CustomEditorSelector {
165
+ readonly filenamePattern?: string;
166
+ }
167
+
168
+ export enum CustomEditorPriority {
169
+ default = 'default',
170
+ builtin = 'builtin',
171
+ option = 'option',
172
+ }
173
+
174
+ export interface PluginPackageViewContainer {
175
+ id: string;
176
+ title: string;
177
+ icon: string;
178
+ }
179
+
180
+ export enum PluginViewType {
181
+ Tree = 'tree',
182
+ Webview = 'webview'
183
+ }
184
+
185
+ export interface PluginPackageView {
186
+ id: string;
187
+ name: string;
188
+ when?: string;
189
+ type?: string;
190
+ }
191
+
192
+ export interface PluginPackageViewWelcome {
193
+ view: string;
194
+ contents: string;
195
+ when?: string;
196
+ }
197
+
198
+ export interface PluginPackageCommand {
199
+ command: string;
200
+ title: string;
201
+ shortTitle?: string;
202
+ original?: string;
203
+ category?: string;
204
+ icon?: string | { light: string; dark: string; };
205
+ enablement?: string;
206
+ }
207
+
208
+ export interface PluginPackageMenu {
209
+ command?: string;
210
+ submenu?: string;
211
+ alt?: string;
212
+ group?: string;
213
+ when?: string;
214
+ }
215
+
216
+ export interface PluginPackageSubmenu {
217
+ id: string;
218
+ label: string;
219
+ icon: IconUrl;
220
+ }
221
+
222
+ export interface PluginPackageKeybinding {
223
+ key?: string;
224
+ command: string;
225
+ when?: string;
226
+ mac?: string;
227
+ linux?: string;
228
+ win?: string;
229
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
+ args?: any;
231
+ }
232
+
233
+ export interface PluginPackageGrammarsContribution {
234
+ language?: string;
235
+ scopeName: string;
236
+ path: string;
237
+ embeddedLanguages?: ScopeMap;
238
+ tokenTypes?: ScopeMap;
239
+ injectTo?: string[];
240
+ }
241
+
242
+ export interface ScopeMap {
243
+ [scopeName: string]: string;
244
+ }
245
+
246
+ export interface PluginPackageSnippetsContribution {
247
+ language?: string;
248
+ path?: string;
249
+ }
250
+
251
+ export interface PluginColorContribution {
252
+ id?: string;
253
+ description?: string;
254
+ defaults?: { light?: string, dark?: string, highContrast?: string };
255
+ }
256
+
257
+ export type PluginUiTheme = 'vs' | 'vs-dark' | 'hc-black';
258
+
259
+ export interface PluginThemeContribution {
260
+ id?: string;
261
+ label?: string;
262
+ description?: string;
263
+ path?: string;
264
+ uiTheme?: PluginUiTheme;
265
+ }
266
+
267
+ export interface PluginIconThemeContribution {
268
+ id?: string;
269
+ label?: string;
270
+ description?: string;
271
+ path?: string;
272
+ uiTheme?: PluginUiTheme;
273
+ }
274
+
275
+ export interface PluginIconContribution {
276
+ [id: string]: {
277
+ description: string;
278
+ default: { fontPath: string; fontCharacter: string } | string;
279
+ };
280
+ }
281
+
282
+ export interface PlatformSpecificAdapterContribution {
283
+ program?: string;
284
+ args?: string[];
285
+ runtime?: string;
286
+ runtimeArgs?: string[];
287
+ }
288
+
289
+ /**
290
+ * This interface describes a package.json debuggers contribution section object.
291
+ */
292
+ export interface PluginPackageDebuggersContribution extends PlatformSpecificAdapterContribution {
293
+ type: string;
294
+ label?: string;
295
+ languages?: string[];
296
+ enableBreakpointsFor?: { languageIds: string[] };
297
+ configurationAttributes: { [request: string]: IJSONSchema };
298
+ configurationSnippets: IJSONSchemaSnippet[];
299
+ variables?: ScopeMap;
300
+ adapterExecutableCommand?: string;
301
+ win?: PlatformSpecificAdapterContribution;
302
+ winx86?: PlatformSpecificAdapterContribution;
303
+ windows?: PlatformSpecificAdapterContribution;
304
+ osx?: PlatformSpecificAdapterContribution;
305
+ linux?: PlatformSpecificAdapterContribution;
306
+ }
307
+
308
+ /**
309
+ * This interface describes a package.json languages contribution section object.
310
+ */
311
+ export interface PluginPackageLanguageContribution {
312
+ id: string;
313
+ extensions?: string[];
314
+ filenames?: string[];
315
+ filenamePatterns?: string[];
316
+ firstLine?: string;
317
+ aliases?: string[];
318
+ mimetypes?: string[];
319
+ configuration?: string;
320
+ icon?: IconUrl;
321
+ }
322
+
323
+ export interface PluginPackageLanguageContributionConfiguration {
324
+ comments?: CommentRule;
325
+ brackets?: CharacterPair[];
326
+ autoClosingPairs?: (CharacterPair | AutoClosingPairConditional)[];
327
+ surroundingPairs?: (CharacterPair | AutoClosingPair)[];
328
+ wordPattern?: string;
329
+ indentationRules?: IndentationRules;
330
+ folding?: FoldingRules;
331
+ onEnterRules?: OnEnterRule[];
332
+ }
333
+
334
+ export interface PluginTaskDefinitionContribution {
335
+ type: string;
336
+ required: string[];
337
+ properties?: IJSONSchema['properties'];
338
+ }
339
+
340
+ export interface PluginProblemMatcherContribution extends ProblemMatcherContribution {
341
+ name: string;
342
+ }
343
+
344
+ export interface PluginProblemPatternContribution extends ProblemPatternContribution {
345
+ name: string;
346
+ }
347
+
348
+ export interface PluginJsonValidationContribution {
349
+ fileMatch: string | string[];
350
+ url: string;
351
+ }
352
+
353
+ export const PluginScanner = Symbol('PluginScanner');
354
+ /**
355
+ * This scanner process package.json object and returns plugin metadata objects.
356
+ */
357
+ export interface PluginScanner {
358
+ /**
359
+ * The type of plugin's API (engine name)
360
+ */
361
+ apiType: PluginEngine;
362
+
363
+ /**
364
+ * Creates plugin's model.
365
+ *
366
+ * @param {PluginPackage} plugin
367
+ * @returns {PluginModel}
368
+ */
369
+ getModel(plugin: PluginPackage): PluginModel;
370
+
371
+ /**
372
+ * Creates plugin's lifecycle.
373
+ *
374
+ * @returns {PluginLifecycle}
375
+ */
376
+ getLifecycle(plugin: PluginPackage): PluginLifecycle;
377
+
378
+ getContribution(plugin: PluginPackage): Promise<PluginContribution | undefined>;
379
+
380
+ /**
381
+ * A mapping between a dependency as its defined in package.json
382
+ * and its deployable form, e.g. `publisher.name` -> `vscode:extension/publisher.name`
383
+ */
384
+ getDependencies(plugin: PluginPackage): Map<string, string> | undefined;
385
+ }
386
+
387
+ /**
388
+ * A plugin resolver is handling how to resolve a plugin link into a local resource.
389
+ */
390
+ export const PluginDeployerResolver = Symbol('PluginDeployerResolver');
391
+ /**
392
+ * A resolver handle a set of resource
393
+ */
394
+ export interface PluginDeployerResolver {
395
+
396
+ init?(pluginDeployerResolverInit: PluginDeployerResolverInit): void;
397
+
398
+ accept(pluginSourceId: string): boolean;
399
+
400
+ resolve(pluginResolverContext: PluginDeployerResolverContext, options?: PluginDeployOptions): Promise<void>;
401
+
402
+ }
403
+
404
+ export const PluginDeployerDirectoryHandler = Symbol('PluginDeployerDirectoryHandler');
405
+ export interface PluginDeployerDirectoryHandler {
406
+ accept(pluginDeployerEntry: PluginDeployerEntry): Promise<boolean>;
407
+
408
+ handle(context: PluginDeployerDirectoryHandlerContext): Promise<void>;
409
+ }
410
+
411
+ export const PluginDeployerFileHandler = Symbol('PluginDeployerFileHandler');
412
+ export interface PluginDeployerFileHandler {
413
+
414
+ accept(pluginDeployerEntry: PluginDeployerEntry): Promise<boolean>;
415
+
416
+ handle(context: PluginDeployerFileHandlerContext): Promise<void>;
417
+ }
418
+
419
+ export interface PluginDeployerResolverInit {
420
+
421
+ }
422
+
423
+ export interface PluginDeployerResolverContext {
424
+
425
+ addPlugin(pluginId: string, path: string): void;
426
+
427
+ getPlugins(): PluginDeployerEntry[];
428
+
429
+ getOriginId(): string;
430
+
431
+ }
432
+
433
+ export interface PluginDeployerStartContext {
434
+ readonly userEntries: string[]
435
+ readonly systemEntries: string[]
436
+ }
437
+
438
+ export const PluginDeployer = Symbol('PluginDeployer');
439
+ export interface PluginDeployer {
440
+
441
+ start(): Promise<void>;
442
+
443
+ }
444
+
445
+ export const PluginDeployerParticipant = Symbol('PluginDeployerParticipant');
446
+ /**
447
+ * A participant can hook into the plugin deployer lifecycle.
448
+ */
449
+ export interface PluginDeployerParticipant {
450
+ onWillStart?(context: PluginDeployerStartContext): Promise<void>;
451
+ }
452
+
453
+ export enum PluginDeployerEntryType {
454
+
455
+ FRONTEND,
456
+
457
+ BACKEND,
458
+
459
+ HEADLESS // Deployed in the Theia Node server outside the context of a frontend/backend connection
460
+ }
461
+
462
+ /**
463
+ * Whether a plugin installed by a user or system.
464
+ */
465
+ export enum PluginType {
466
+ System,
467
+ User
468
+ };
469
+
470
+ export interface UnresolvedPluginEntry {
471
+ id: string;
472
+ type?: PluginType;
473
+ }
474
+
475
+ export interface PluginDeployerEntry {
476
+
477
+ /**
478
+ * ID (before any resolution)
479
+ */
480
+ id(): string;
481
+
482
+ /**
483
+ * Original resolved path
484
+ */
485
+ originalPath(): string;
486
+
487
+ /**
488
+ * Local path on the filesystem.
489
+ */
490
+ path(): string;
491
+
492
+ /**
493
+ * Get a specific entry
494
+ */
495
+ getValue<T>(key: string): T;
496
+
497
+ /**
498
+ * Store a value
499
+ */
500
+ storeValue<T>(key: string, value: T): void;
501
+
502
+ /**
503
+ * Update path
504
+ */
505
+ updatePath(newPath: string): void;
506
+
507
+ getChanges(): string[];
508
+
509
+ isFile(): Promise<boolean>;
510
+
511
+ isDirectory(): Promise<boolean>;
512
+
513
+ /**
514
+ * Resolved if a resolver has handle this plugin
515
+ */
516
+ isResolved(): boolean;
517
+
518
+ resolvedBy(): string;
519
+
520
+ /**
521
+ * Accepted when a handler is telling this location can go live
522
+ */
523
+ isAccepted(...types: PluginDeployerEntryType[]): boolean;
524
+
525
+ accept(...types: PluginDeployerEntryType[]): void;
526
+
527
+ hasError(): boolean;
528
+
529
+ type: PluginType
530
+ /**
531
+ * A fs path to a directory where a plugin is located.
532
+ * Depending on a plugin format it can be different from `path`.
533
+ * Use `path` if you want to resolve something within a plugin, like `README.md` file.
534
+ * Use `rootPath` if you want to manipulate the entire plugin location, like delete or move it.
535
+ */
536
+ rootPath: string
537
+ }
538
+
539
+ export interface PluginDeployerFileHandlerContext {
540
+
541
+ unzip(sourcePath: string, destPath: string): Promise<void>;
542
+
543
+ pluginEntry(): PluginDeployerEntry;
544
+
545
+ }
546
+
547
+ export interface PluginDeployerDirectoryHandlerContext {
548
+
549
+ copy(origin: string, target: string): Promise<void>;
550
+
551
+ pluginEntry(): PluginDeployerEntry;
552
+
553
+ }
554
+
555
+ /**
556
+ * This interface describes a plugin model object, which is populated from package.json.
557
+ */
558
+ export interface PluginModel {
559
+ id: string;
560
+ name: string;
561
+ publisher: string;
562
+ version: string;
563
+ displayName: string;
564
+ description: string;
565
+ engine: {
566
+ type: PluginEngine;
567
+ version: string;
568
+ };
569
+ entryPoint: PluginEntryPoint;
570
+ packageUri: string;
571
+ /**
572
+ * @deprecated since 1.1.0 - because it lead to problems with getting a relative path
573
+ * needed by Icon Themes to correctly load Fonts, use packageUri instead.
574
+ */
575
+ packagePath: string;
576
+ iconUrl?: string;
577
+ l10n?: string;
578
+ readmeUrl?: string;
579
+ licenseUrl?: string;
580
+ }
581
+
582
+ export interface PluginEntryPoint {
583
+ frontend?: string;
584
+ backend?: string;
585
+ headless?: string;
586
+ }
587
+
588
+ /**
589
+ * This interface describes some static plugin contributions.
590
+ */
591
+ export interface PluginContribution {
592
+ activationEvents?: string[];
593
+ authentication?: AuthenticationProviderInformation[];
594
+ configuration?: PreferenceSchema[];
595
+ configurationDefaults?: PreferenceSchemaProperties;
596
+ languages?: LanguageContribution[];
597
+ grammars?: GrammarsContribution[];
598
+ customEditors?: CustomEditor[];
599
+ viewsContainers?: { [location: string]: ViewContainer[] };
600
+ views?: { [location: string]: View[] };
601
+ viewsWelcome?: ViewWelcome[];
602
+ commands?: PluginCommand[];
603
+ menus?: { [location: string]: Menu[] };
604
+ submenus?: Submenu[];
605
+ keybindings?: Keybinding[];
606
+ debuggers?: DebuggerContribution[];
607
+ snippets?: SnippetContribution[];
608
+ themes?: ThemeContribution[];
609
+ iconThemes?: IconThemeContribution[];
610
+ icons?: IconContribution[];
611
+ colors?: ColorDefinition[];
612
+ taskDefinitions?: TaskDefinition[];
613
+ problemMatchers?: ProblemMatcherContribution[];
614
+ problemPatterns?: ProblemPatternContribution[];
615
+ resourceLabelFormatters?: ResourceLabelFormatter[];
616
+ localizations?: Localization[];
617
+ terminalProfiles?: TerminalProfile[];
618
+ notebooks?: NotebookContribution[];
619
+ notebookRenderer?: NotebookRendererContribution[];
620
+ notebookPreload?: notebookPreloadContribution[];
621
+ }
622
+ export interface NotebookContribution {
623
+ type: string;
624
+ displayName: string;
625
+ selector?: readonly { filenamePattern?: string; excludeFileNamePattern?: string }[];
626
+ priority?: string;
627
+ }
628
+
629
+ export interface NotebookRendererContribution {
630
+ readonly id: string;
631
+ readonly displayName: string;
632
+ readonly mimeTypes: string[];
633
+ readonly entrypoint: string | { readonly extends: string; readonly path: string };
634
+ readonly requiresMessaging?: 'always' | 'optional' | 'never'
635
+ }
636
+
637
+ export interface notebookPreloadContribution {
638
+ type: string;
639
+ entrypoint: string;
640
+ }
641
+
642
+ export interface AuthenticationProviderInformation {
643
+ id: string;
644
+ label: string;
645
+ }
646
+
647
+ export interface TerminalProfile {
648
+ title: string,
649
+ id: string,
650
+ icon?: string
651
+ }
652
+
653
+ export interface Localization {
654
+ languageId: string;
655
+ languageName?: string;
656
+ localizedLanguageName?: string;
657
+ translations: Translation[];
658
+ minimalTranslations?: { [key: string]: string };
659
+ }
660
+
661
+ export interface Translation {
662
+ id: string;
663
+ path: string;
664
+ cachedContents?: { [scope: string]: { [key: string]: string } };
665
+ }
666
+
667
+ export interface SnippetContribution {
668
+ uri: string
669
+ source: string
670
+ language?: string
671
+ }
672
+
673
+ export type UiTheme = 'vs' | 'vs-dark' | 'hc-black';
674
+
675
+ export interface ThemeContribution {
676
+ id?: string;
677
+ label?: string;
678
+ description?: string;
679
+ uri: string;
680
+ uiTheme?: UiTheme;
681
+ }
682
+
683
+ export interface IconThemeContribution {
684
+ id: string;
685
+ label?: string;
686
+ description?: string;
687
+ uri: string;
688
+ uiTheme?: UiTheme;
689
+ }
690
+
691
+ export interface IconDefinition {
692
+ fontCharacter: string;
693
+ location: string;
694
+ }
695
+
696
+ export type IconDefaults = ThemeIcon | IconDefinition;
697
+
698
+ export interface IconContribution {
699
+ id: string;
700
+ extensionId: string;
701
+ description: string | undefined;
702
+ defaults: IconDefaults;
703
+ }
704
+
705
+ export namespace IconContribution {
706
+ export function isIconDefinition(defaults: IconDefaults): defaults is IconDefinition {
707
+ return 'fontCharacter' in defaults;
708
+ }
709
+ }
710
+
711
+ export interface GrammarsContribution {
712
+ format: 'json' | 'plist';
713
+ language?: string;
714
+ scope: string;
715
+ grammar?: string | object;
716
+ grammarLocation?: string;
717
+ embeddedLanguages?: ScopeMap;
718
+ tokenTypes?: ScopeMap;
719
+ injectTo?: string[];
720
+ balancedBracketScopes?: string[];
721
+ unbalancedBracketScopes?: string[];
722
+ }
723
+
724
+ /**
725
+ * The language contribution
726
+ */
727
+ export interface LanguageContribution {
728
+ id: string;
729
+ extensions?: string[];
730
+ filenames?: string[];
731
+ filenamePatterns?: string[];
732
+ firstLine?: string;
733
+ aliases?: string[];
734
+ mimetypes?: string[];
735
+ configuration?: LanguageConfiguration;
736
+ /**
737
+ * @internal
738
+ */
739
+ icon?: IconUrl;
740
+ }
741
+
742
+ export interface RegExpOptions {
743
+ pattern: string;
744
+ flags?: string;
745
+ }
746
+
747
+ export interface LanguageConfiguration {
748
+ brackets?: CharacterPair[];
749
+ indentationRules?: IndentationRules;
750
+ surroundingPairs?: AutoClosingPair[];
751
+ autoClosingPairs?: AutoClosingPairConditional[];
752
+ comments?: CommentRule;
753
+ folding?: FoldingRules;
754
+ wordPattern?: string | RegExpOptions;
755
+ onEnterRules?: OnEnterRule[];
756
+ }
757
+
758
+ /**
759
+ * This interface describes a package.json debuggers contribution section object.
760
+ */
761
+ export interface DebuggerContribution extends PlatformSpecificAdapterContribution {
762
+ type: string,
763
+ label?: string,
764
+ languages?: string[],
765
+ enableBreakpointsFor?: {
766
+ languageIds: string[]
767
+ },
768
+ configurationAttributes?: {
769
+ [request: string]: IJSONSchema
770
+ },
771
+ configurationSnippets?: IJSONSchemaSnippet[],
772
+ variables?: ScopeMap,
773
+ adapterExecutableCommand?: string
774
+ win?: PlatformSpecificAdapterContribution;
775
+ winx86?: PlatformSpecificAdapterContribution;
776
+ windows?: PlatformSpecificAdapterContribution;
777
+ osx?: PlatformSpecificAdapterContribution;
778
+ linux?: PlatformSpecificAdapterContribution;
779
+ }
780
+
781
+ export interface IndentationRules {
782
+ increaseIndentPattern: string | RegExpOptions;
783
+ decreaseIndentPattern: string | RegExpOptions;
784
+ unIndentedLinePattern?: string | RegExpOptions;
785
+ indentNextLinePattern?: string | RegExpOptions;
786
+ }
787
+ export interface AutoClosingPair {
788
+ close: string;
789
+ open: string;
790
+ }
791
+
792
+ export interface AutoClosingPairConditional extends AutoClosingPair {
793
+ notIn?: string[];
794
+ }
795
+
796
+ export interface FoldingMarkers {
797
+ start: string | RegExpOptions;
798
+ end: string | RegExpOptions;
799
+ }
800
+
801
+ export interface FoldingRules {
802
+ offSide?: boolean;
803
+ markers?: FoldingMarkers;
804
+ }
805
+
806
+ export interface OnEnterRule {
807
+ beforeText: string | RegExpOptions;
808
+ afterText?: string | RegExpOptions;
809
+ previousLineText?: string | RegExpOptions;
810
+ action: EnterAction;
811
+ }
812
+
813
+ export interface EnterAction {
814
+ indent: 'none' | 'indent' | 'outdent' | 'indentOutdent';
815
+ appendText?: string;
816
+ removeText?: number;
817
+ }
818
+
819
+ /**
820
+ * Custom Editors contribution
821
+ */
822
+ export interface CustomEditor {
823
+ viewType: string;
824
+ displayName: string;
825
+ selector: CustomEditorSelector[];
826
+ priority: CustomEditorPriority;
827
+ }
828
+
829
+ /**
830
+ * Views Containers contribution
831
+ */
832
+ export interface ViewContainer {
833
+ id: string;
834
+ title: string;
835
+ iconUrl: string;
836
+ themeIcon?: string;
837
+ }
838
+
839
+ /**
840
+ * View contribution
841
+ */
842
+ export interface View {
843
+ id: string;
844
+ name: string;
845
+ when?: string;
846
+ type?: string;
847
+ }
848
+
849
+ /**
850
+ * View Welcome contribution
851
+ */
852
+ export interface ViewWelcome {
853
+ view: string;
854
+ content: string;
855
+ when?: string;
856
+ order: number;
857
+ }
858
+
859
+ export interface PluginCommand {
860
+ command: string;
861
+ title: string;
862
+ shortTitle?: string;
863
+ originalTitle?: string;
864
+ category?: string;
865
+ iconUrl?: IconUrl;
866
+ themeIcon?: string;
867
+ enablement?: string;
868
+ }
869
+
870
+ export type IconUrl = string | { light: string; dark: string; };
871
+
872
+ /**
873
+ * Menu contribution
874
+ */
875
+ export interface Menu {
876
+ command?: string;
877
+ submenu?: string
878
+ alt?: string;
879
+ group?: string;
880
+ when?: string;
881
+ }
882
+
883
+ export interface Submenu {
884
+ id: string;
885
+ label: string;
886
+ icon?: IconUrl;
887
+ }
888
+
889
+ /**
890
+ * Keybinding contribution
891
+ */
892
+ export interface Keybinding {
893
+ keybinding?: string;
894
+ command: string;
895
+ when?: string;
896
+ mac?: string;
897
+ linux?: string;
898
+ win?: string;
899
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
900
+ args?: any;
901
+ }
902
+
903
+ /**
904
+ * This interface describes a plugin lifecycle object.
905
+ */
906
+ export interface PluginLifecycle {
907
+ startMethod: string;
908
+ stopMethod: string;
909
+ /**
910
+ * Frontend module name, frontend plugin should expose this name.
911
+ */
912
+ frontendModuleName?: string;
913
+ /**
914
+ * Path to the script which should do some initialization before frontend plugin is loaded.
915
+ */
916
+ frontendInitPath?: string;
917
+ /**
918
+ * Path to the script which should do some initialization before backend plugin is loaded.
919
+ */
920
+ backendInitPath?: string;
921
+ }
922
+
923
+ /**
924
+ * The export function of initialization module of backend plugin.
925
+ */
926
+ export interface BackendInitializationFn {
927
+ (apiFactory: PluginAPIFactory, plugin: Plugin): void;
928
+ }
929
+
930
+ export interface BackendLoadingFn {
931
+ (rpc: RPCProtocol, plugin: Plugin): void;
932
+ }
933
+
934
+ export interface PluginContext {
935
+ subscriptions: Disposable[];
936
+ }
937
+
938
+ export interface ExtensionContext {
939
+ subscriptions: Disposable[];
940
+ }
941
+
942
+ export interface PluginMetadata {
943
+ host: string;
944
+ model: PluginModel;
945
+ lifecycle: PluginLifecycle;
946
+ isUnderDevelopment?: boolean;
947
+ outOfSync: boolean;
948
+ }
949
+
950
+ export const MetadataProcessor = Symbol('MetadataProcessor');
951
+ export interface MetadataProcessor {
952
+ process(pluginMetadata: PluginMetadata): void;
953
+ }
954
+
955
+ export function getPluginId(plugin: PluginPackage | PluginModel): string {
956
+ return `${plugin.publisher}_${plugin.name}`.replace(/\W/g, '_');
957
+ }
958
+
959
+ export function buildFrontendModuleName(plugin: PluginPackage | PluginModel): string {
960
+ return `${plugin.publisher}_${plugin.name}`.replace(/\W/g, '_');
961
+ }
962
+
963
+ export const HostedPluginClient = Symbol('HostedPluginClient');
964
+ export interface HostedPluginClient {
965
+ postMessage(pluginHost: string, buffer: Uint8Array): Promise<void>;
966
+
967
+ log(logPart: LogPart): void;
968
+
969
+ onDidDeploy(): void;
970
+ }
971
+
972
+ export interface PluginDependencies {
973
+ metadata: PluginMetadata
974
+ /**
975
+ * Actual listing of plugin dependencies.
976
+ * Mapping from {@link PluginIdentifiers.UnversionedId external representation} of plugin identity to a string
977
+ * that can be used to identify the resolver for the specific plugin case, e.g. with scheme `vscode://<id>`.
978
+ */
979
+ mapping?: Map<string, string>
980
+ }
981
+
982
+ export const PluginDeployerHandler = Symbol('PluginDeployerHandler');
983
+ export interface PluginDeployerHandler {
984
+ deployFrontendPlugins(frontendPlugins: PluginDeployerEntry[]): Promise<number | undefined>;
985
+ deployBackendPlugins(backendPlugins: PluginDeployerEntry[]): Promise<number | undefined>;
986
+
987
+ getDeployedPlugins(): Promise<DeployedPlugin[]>;
988
+ getDeployedPluginsById(pluginId: string): DeployedPlugin[];
989
+
990
+ getDeployedPlugin(pluginId: PluginIdentifiers.VersionedId): DeployedPlugin | undefined;
991
+ /**
992
+ * Removes the plugin from the location it originally resided on disk.
993
+ * Unless `--uncompressed-plugins-in-place` is passed to the CLI, this operation is safe.
994
+ */
995
+ uninstallPlugin(pluginId: PluginIdentifiers.VersionedId): Promise<boolean>;
996
+ /**
997
+ * Removes the plugin from the locations to which it had been deployed.
998
+ * This operation is not safe - references to deleted assets may remain.
999
+ */
1000
+ undeployPlugin(pluginId: PluginIdentifiers.VersionedId): Promise<boolean>;
1001
+
1002
+ getPluginDependencies(pluginToBeInstalled: PluginDeployerEntry): Promise<PluginDependencies | undefined>;
1003
+ }
1004
+
1005
+ export interface GetDeployedPluginsParams {
1006
+ pluginIds: PluginIdentifiers.VersionedId[]
1007
+ }
1008
+
1009
+ export interface DeployedPlugin {
1010
+ /**
1011
+ * defaults to system
1012
+ */
1013
+ type?: PluginType;
1014
+ metadata: PluginMetadata;
1015
+ contributes?: PluginContribution;
1016
+ }
1017
+
1018
+ export const HostedPluginServer = Symbol('HostedPluginServer');
1019
+ export interface HostedPluginServer extends RpcServer<HostedPluginClient> {
1020
+
1021
+ getDeployedPluginIds(): Promise<PluginIdentifiers.VersionedId[]>;
1022
+
1023
+ getUninstalledPluginIds(): Promise<readonly PluginIdentifiers.VersionedId[]>;
1024
+
1025
+ getDeployedPlugins(params: GetDeployedPluginsParams): Promise<DeployedPlugin[]>;
1026
+
1027
+ getExtPluginAPI(): Promise<ExtPluginApi[]>;
1028
+
1029
+ onMessage(targetHost: string, message: Uint8Array): Promise<void>;
1030
+
1031
+ }
1032
+
1033
+ export const PLUGIN_HOST_BACKEND = 'main';
1034
+
1035
+ export interface WorkspaceStorageKind {
1036
+ workspace?: string | undefined;
1037
+ roots: string[];
1038
+ }
1039
+ export type GlobalStorageKind = undefined;
1040
+ export type PluginStorageKind = GlobalStorageKind | WorkspaceStorageKind;
1041
+
1042
+ export interface PluginDeployOptions {
1043
+ version: string;
1044
+ /** Instructs the deployer to ignore any existing plugins with different versions */
1045
+ ignoreOtherVersions?: boolean;
1046
+ }
1047
+
1048
+ /**
1049
+ * The JSON-RPC workspace interface.
1050
+ */
1051
+ export const pluginServerJsonRpcPath = '/services/plugin-ext';
1052
+ export const PluginServer = Symbol('PluginServer');
1053
+ export interface PluginServer {
1054
+
1055
+ /**
1056
+ * Deploy a plugin.
1057
+ *
1058
+ * @param type whether a plugin is installed by a system or a user, defaults to a user
1059
+ */
1060
+ deploy(pluginEntry: string, type?: PluginType, options?: PluginDeployOptions): Promise<void>;
1061
+ uninstall(pluginId: PluginIdentifiers.VersionedId): Promise<void>;
1062
+ undeploy(pluginId: PluginIdentifiers.VersionedId): Promise<void>;
1063
+
1064
+ setStorageValue(key: string, value: KeysToAnyValues, kind: PluginStorageKind): Promise<boolean>;
1065
+ getStorageValue(key: string, kind: PluginStorageKind): Promise<KeysToAnyValues>;
1066
+ getAllStorageValues(kind: PluginStorageKind): Promise<KeysToKeysToAnyValue>;
1067
+ }
1068
+
1069
+ export const ServerPluginRunner = Symbol('ServerPluginRunner');
1070
+ export interface ServerPluginRunner {
1071
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1072
+ acceptMessage(pluginHostId: string, jsonMessage: Uint8Array): boolean;
1073
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1074
+ onMessage(pluginHostId: string, jsonMessage: Uint8Array): void;
1075
+ setClient(client: HostedPluginClient): void;
1076
+ setDefault(defaultRunner: ServerPluginRunner): void;
1077
+ clientClosed(): void;
1078
+
1079
+ /**
1080
+ * Provides additional deployed plugins.
1081
+ */
1082
+ getExtraDeployedPlugins(): Promise<DeployedPlugin[]>;
1083
+
1084
+ /**
1085
+ * Provides additional plugin ids.
1086
+ */
1087
+ getExtraDeployedPluginIds(): Promise<PluginIdentifiers.VersionedId[]>;
1088
+
1089
+ }
1090
+
1091
+ export const PluginHostEnvironmentVariable = Symbol('PluginHostEnvironmentVariable');
1092
+ export interface PluginHostEnvironmentVariable {
1093
+ process(env: NodeJS.ProcessEnv): void;
1094
+ }