@theia/core 1.27.0-next.9 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/README.md +6 -7
  2. package/i18n/nls.cs.json +52 -6
  3. package/i18n/nls.de.json +52 -6
  4. package/i18n/nls.es.json +52 -6
  5. package/i18n/nls.fr.json +52 -6
  6. package/i18n/nls.hu.json +55 -9
  7. package/i18n/nls.it.json +52 -6
  8. package/i18n/nls.ja.json +52 -6
  9. package/i18n/nls.json +52 -6
  10. package/i18n/nls.pl.json +52 -6
  11. package/i18n/nls.pt-br.json +52 -6
  12. package/i18n/nls.pt-pt.json +52 -6
  13. package/i18n/nls.ru.json +52 -6
  14. package/i18n/nls.zh-cn.json +52 -6
  15. package/lib/browser/color-application-contribution.d.ts +2 -2
  16. package/lib/browser/color-application-contribution.d.ts.map +1 -1
  17. package/lib/browser/color-application-contribution.js +15 -16
  18. package/lib/browser/color-application-contribution.js.map +1 -1
  19. package/lib/browser/color-registry.d.ts +0 -4
  20. package/lib/browser/color-registry.d.ts.map +1 -1
  21. package/lib/browser/color-registry.js +0 -14
  22. package/lib/browser/color-registry.js.map +1 -1
  23. package/lib/browser/common-frontend-contribution.d.ts +4 -0
  24. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  25. package/lib/browser/common-frontend-contribution.js +157 -163
  26. package/lib/browser/common-frontend-contribution.js.map +1 -1
  27. package/lib/browser/common-styling-participants.d.ts +28 -0
  28. package/lib/browser/common-styling-participants.d.ts.map +1 -0
  29. package/lib/browser/common-styling-participants.js +319 -0
  30. package/lib/browser/common-styling-participants.js.map +1 -0
  31. package/lib/browser/connection-status-service.d.ts.map +1 -1
  32. package/lib/browser/connection-status-service.js +2 -2
  33. package/lib/browser/connection-status-service.js.map +1 -1
  34. package/lib/browser/connection-status-service.spec.js +1 -2
  35. package/lib/browser/connection-status-service.spec.js.map +1 -1
  36. package/lib/browser/context-menu-renderer.d.ts +1 -5
  37. package/lib/browser/context-menu-renderer.d.ts.map +1 -1
  38. package/lib/browser/context-menu-renderer.js +10 -30
  39. package/lib/browser/context-menu-renderer.js.map +1 -1
  40. package/lib/browser/core-preferences.d.ts +1 -0
  41. package/lib/browser/core-preferences.d.ts.map +1 -1
  42. package/lib/browser/core-preferences.js +5 -0
  43. package/lib/browser/core-preferences.js.map +1 -1
  44. package/lib/browser/decoration-style.d.ts +1 -0
  45. package/lib/browser/decoration-style.d.ts.map +1 -1
  46. package/lib/browser/decoration-style.js +6 -2
  47. package/lib/browser/decoration-style.js.map +1 -1
  48. package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
  49. package/lib/browser/frontend-application-bindings.js +1 -3
  50. package/lib/browser/frontend-application-bindings.js.map +1 -1
  51. package/lib/browser/frontend-application-config-provider.d.ts +1 -0
  52. package/lib/browser/frontend-application-config-provider.d.ts.map +1 -1
  53. package/lib/browser/frontend-application-config-provider.js +2 -1
  54. package/lib/browser/frontend-application-config-provider.js.map +1 -1
  55. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  56. package/lib/browser/frontend-application-module.js +9 -3
  57. package/lib/browser/frontend-application-module.js.map +1 -1
  58. package/lib/browser/i18n/i18n-frontend-module.d.ts.map +1 -1
  59. package/lib/browser/i18n/i18n-frontend-module.js +2 -0
  60. package/lib/browser/i18n/i18n-frontend-module.js.map +1 -1
  61. package/lib/browser/i18n/language-quick-pick-service.d.ts +17 -0
  62. package/lib/browser/i18n/language-quick-pick-service.d.ts.map +1 -0
  63. package/lib/browser/i18n/language-quick-pick-service.js +142 -0
  64. package/lib/browser/i18n/language-quick-pick-service.js.map +1 -0
  65. package/lib/browser/index.d.ts +1 -0
  66. package/lib/browser/index.d.ts.map +1 -1
  67. package/lib/browser/index.js +1 -0
  68. package/lib/browser/index.js.map +1 -1
  69. package/lib/browser/keybinding.d.ts.map +1 -1
  70. package/lib/browser/keybinding.js +2 -1
  71. package/lib/browser/keybinding.js.map +1 -1
  72. package/lib/browser/keybinding.spec.js +18 -21
  73. package/lib/browser/keybinding.spec.js.map +1 -1
  74. package/lib/browser/label-provider.d.ts +0 -12
  75. package/lib/browser/label-provider.d.ts.map +1 -1
  76. package/lib/browser/label-provider.js +1 -13
  77. package/lib/browser/label-provider.js.map +1 -1
  78. package/lib/browser/logger-frontend-module.d.ts.map +1 -1
  79. package/lib/browser/logger-frontend-module.js +8 -1
  80. package/lib/browser/logger-frontend-module.js.map +1 -1
  81. package/lib/browser/messaging/ws-connection-provider.d.ts +5 -4
  82. package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
  83. package/lib/browser/messaging/ws-connection-provider.js +30 -23
  84. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  85. package/lib/browser/preferences/preference-contribution.d.ts +2 -19
  86. package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
  87. package/lib/browser/preferences/preference-contribution.js +1 -24
  88. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  89. package/lib/browser/preferences/preference-proxy.d.ts +0 -4
  90. package/lib/browser/preferences/preference-proxy.d.ts.map +1 -1
  91. package/lib/browser/preferences/preference-proxy.js.map +1 -1
  92. package/lib/browser/preferences/preference-proxy.spec.js +3 -102
  93. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  94. package/lib/browser/preferences/preference-schema-provider.spec.js +4 -3
  95. package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
  96. package/lib/browser/preferences/preference-service.spec.js +1 -2
  97. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  98. package/lib/browser/preferences/preference-validation-service.d.ts +2 -2
  99. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  100. package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
  101. package/lib/browser/preloader.d.ts.map +1 -1
  102. package/lib/browser/preloader.js +7 -1
  103. package/lib/browser/preloader.js.map +1 -1
  104. package/lib/browser/progress-status-bar-item.d.ts +1 -1
  105. package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
  106. package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
  107. package/lib/browser/quick-input/quick-command-service.js +2 -2
  108. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  109. package/lib/browser/saveable.d.ts.map +1 -1
  110. package/lib/browser/saveable.js +5 -4
  111. package/lib/browser/saveable.js.map +1 -1
  112. package/lib/browser/shell/application-shell.d.ts +4 -0
  113. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  114. package/lib/browser/shell/application-shell.js +42 -36
  115. package/lib/browser/shell/application-shell.js.map +1 -1
  116. package/lib/browser/shell/shell-layout-restorer.d.ts +2 -0
  117. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  118. package/lib/browser/shell/shell-layout-restorer.js +5 -1
  119. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  120. package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
  121. package/lib/browser/shell/side-panel-handler.js +3 -2
  122. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  123. package/lib/browser/shell/tab-bars.d.ts +4 -2
  124. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  125. package/lib/browser/shell/tab-bars.js +12 -4
  126. package/lib/browser/shell/tab-bars.js.map +1 -1
  127. package/lib/browser/source-tree/source-tree-widget.js +1 -1
  128. package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
  129. package/lib/browser/source-tree/tree-source.d.ts +2 -1
  130. package/lib/browser/source-tree/tree-source.d.ts.map +1 -1
  131. package/lib/browser/source-tree/tree-source.js.map +1 -1
  132. package/lib/browser/styling-service.d.ts +26 -0
  133. package/lib/browser/styling-service.d.ts.map +1 -0
  134. package/lib/browser/styling-service.js +76 -0
  135. package/lib/browser/styling-service.js.map +1 -0
  136. package/lib/browser/theming.d.ts +4 -8
  137. package/lib/browser/theming.d.ts.map +1 -1
  138. package/lib/browser/theming.js +38 -53
  139. package/lib/browser/theming.js.map +1 -1
  140. package/lib/browser/tree/search-box.d.ts.map +1 -1
  141. package/lib/browser/tree/search-box.js +5 -4
  142. package/lib/browser/tree/search-box.js.map +1 -1
  143. package/lib/browser/tree/test/tree-test-container.d.ts.map +1 -1
  144. package/lib/browser/tree/test/tree-test-container.js +2 -0
  145. package/lib/browser/tree/test/tree-test-container.js.map +1 -1
  146. package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts +1 -1
  147. package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts.map +1 -1
  148. package/lib/browser/tree/tree-compression/compressed-tree-model.js +4 -2
  149. package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
  150. package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -1
  151. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +4 -2
  152. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
  153. package/lib/browser/tree/tree-container.d.ts +2 -0
  154. package/lib/browser/tree/tree-container.d.ts.map +1 -1
  155. package/lib/browser/tree/tree-container.js +3 -0
  156. package/lib/browser/tree/tree-container.js.map +1 -1
  157. package/lib/browser/tree/tree-focus-service.d.ts +20 -0
  158. package/lib/browser/tree/tree-focus-service.d.ts.map +1 -0
  159. package/lib/browser/tree/tree-focus-service.js +62 -0
  160. package/lib/browser/tree/tree-focus-service.js.map +1 -0
  161. package/lib/browser/tree/tree-model.d.ts +11 -2
  162. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  163. package/lib/browser/tree/tree-model.js +29 -8
  164. package/lib/browser/tree/tree-model.js.map +1 -1
  165. package/lib/browser/tree/tree-selection-impl.d.ts +4 -1
  166. package/lib/browser/tree/tree-selection-impl.d.ts.map +1 -1
  167. package/lib/browser/tree/tree-selection-impl.js +13 -2
  168. package/lib/browser/tree/tree-selection-impl.js.map +1 -1
  169. package/lib/browser/tree/tree-selection-state.d.ts +1 -0
  170. package/lib/browser/tree/tree-selection-state.d.ts.map +1 -1
  171. package/lib/browser/tree/tree-selection-state.js +8 -2
  172. package/lib/browser/tree/tree-selection-state.js.map +1 -1
  173. package/lib/browser/tree/tree-selection.d.ts +9 -0
  174. package/lib/browser/tree/tree-selection.d.ts.map +1 -1
  175. package/lib/browser/tree/tree-selection.js +3 -0
  176. package/lib/browser/tree/tree-selection.js.map +1 -1
  177. package/lib/browser/tree/tree-widget-selection.d.ts.map +1 -1
  178. package/lib/browser/tree/tree-widget-selection.js +9 -1
  179. package/lib/browser/tree/tree-widget-selection.js.map +1 -1
  180. package/lib/browser/tree/tree-widget.d.ts +14 -0
  181. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  182. package/lib/browser/tree/tree-widget.js +80 -40
  183. package/lib/browser/tree/tree-widget.js.map +1 -1
  184. package/lib/browser/tree/tree.d.ts +2 -1
  185. package/lib/browser/tree/tree.d.ts.map +1 -1
  186. package/lib/browser/tree/tree.js +12 -2
  187. package/lib/browser/tree/tree.js.map +1 -1
  188. package/lib/browser/view-container.d.ts +9 -4
  189. package/lib/browser/view-container.d.ts.map +1 -1
  190. package/lib/browser/view-container.js +36 -6
  191. package/lib/browser/view-container.js.map +1 -1
  192. package/lib/common/cancellation.d.ts +1 -0
  193. package/lib/common/cancellation.d.ts.map +1 -1
  194. package/lib/common/cancellation.js +8 -0
  195. package/lib/common/cancellation.js.map +1 -1
  196. package/lib/common/command.d.ts +1 -1
  197. package/lib/common/command.d.ts.map +1 -1
  198. package/lib/common/command.js +13 -16
  199. package/lib/common/command.js.map +1 -1
  200. package/lib/common/index.d.ts +1 -0
  201. package/lib/common/index.d.ts.map +1 -1
  202. package/lib/common/index.js +1 -0
  203. package/lib/common/index.js.map +1 -1
  204. package/lib/common/message-rpc/channel.d.ts +106 -0
  205. package/lib/common/message-rpc/channel.d.ts.map +1 -0
  206. package/lib/common/message-rpc/channel.js +195 -0
  207. package/lib/common/message-rpc/channel.js.map +1 -0
  208. package/lib/common/message-rpc/channel.spec.d.ts +9 -0
  209. package/lib/common/message-rpc/channel.spec.d.ts.map +1 -0
  210. package/lib/common/message-rpc/channel.spec.js +80 -0
  211. package/lib/common/message-rpc/channel.spec.js.map +1 -0
  212. package/lib/common/message-rpc/index.d.ts +4 -0
  213. package/lib/common/message-rpc/index.d.ts.map +1 -0
  214. package/lib/{node/messaging/logger.js → common/message-rpc/index.js} +6 -19
  215. package/lib/common/message-rpc/index.js.map +1 -0
  216. package/lib/common/message-rpc/message-buffer.d.ts +50 -0
  217. package/lib/common/message-rpc/message-buffer.d.ts.map +1 -0
  218. package/lib/common/message-rpc/message-buffer.js +56 -0
  219. package/lib/common/message-rpc/message-buffer.js.map +1 -0
  220. package/lib/common/message-rpc/rpc-message-encoder.d.ts +171 -0
  221. package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -0
  222. package/lib/common/message-rpc/rpc-message-encoder.js +409 -0
  223. package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -0
  224. package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts +2 -0
  225. package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts.map +1 -0
  226. package/lib/common/message-rpc/rpc-message-encoder.spec.js +49 -0
  227. package/lib/common/message-rpc/rpc-message-encoder.spec.js.map +1 -0
  228. package/lib/common/message-rpc/rpc-protocol.d.ts +61 -0
  229. package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -0
  230. package/lib/common/message-rpc/rpc-protocol.js +183 -0
  231. package/lib/common/message-rpc/rpc-protocol.js.map +1 -0
  232. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +52 -0
  233. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -0
  234. package/lib/common/message-rpc/uint8-array-message-buffer.js +169 -0
  235. package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -0
  236. package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts +2 -0
  237. package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts.map +1 -0
  238. package/lib/common/message-rpc/uint8-array-message-buffer.spec.js +39 -0
  239. package/lib/common/message-rpc/uint8-array-message-buffer.spec.js.map +1 -0
  240. package/lib/common/messaging/abstract-connection-provider.d.ts +9 -8
  241. package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
  242. package/lib/common/messaging/abstract-connection-provider.js +20 -35
  243. package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
  244. package/lib/common/messaging/connection-error-handler.d.ts +1 -2
  245. package/lib/common/messaging/connection-error-handler.d.ts.map +1 -1
  246. package/lib/common/messaging/connection-error-handler.js +1 -1
  247. package/lib/common/messaging/connection-error-handler.js.map +1 -1
  248. package/lib/common/messaging/handler.d.ts +2 -2
  249. package/lib/common/messaging/handler.d.ts.map +1 -1
  250. package/lib/common/messaging/proxy-factory.d.ts +13 -7
  251. package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
  252. package/lib/common/messaging/proxy-factory.js +18 -13
  253. package/lib/common/messaging/proxy-factory.js.map +1 -1
  254. package/lib/common/messaging/proxy-factory.spec.js +4 -15
  255. package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
  256. package/lib/common/messaging/web-socket-channel.d.ts +54 -48
  257. package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
  258. package/lib/common/messaging/web-socket-channel.js +41 -105
  259. package/lib/common/messaging/web-socket-channel.js.map +1 -1
  260. package/lib/common/nls.d.ts +2 -0
  261. package/lib/common/nls.d.ts.map +1 -1
  262. package/lib/common/nls.js +11 -0
  263. package/lib/common/nls.js.map +1 -1
  264. package/lib/common/preferences/preference-schema.d.ts +1 -5
  265. package/lib/common/preferences/preference-schema.d.ts.map +1 -1
  266. package/lib/common/preferences/preference-schema.js.map +1 -1
  267. package/lib/common/promise-util.d.ts +2 -1
  268. package/lib/common/promise-util.d.ts.map +1 -1
  269. package/lib/common/promise-util.js +8 -13
  270. package/lib/common/promise-util.js.map +1 -1
  271. package/lib/common/resource.d.ts +5 -0
  272. package/lib/common/resource.d.ts.map +1 -1
  273. package/lib/common/resource.js +28 -1
  274. package/lib/common/resource.js.map +1 -1
  275. package/lib/common/theme.d.ts +3 -2
  276. package/lib/common/theme.d.ts.map +1 -1
  277. package/lib/common/theme.js +5 -0
  278. package/lib/common/theme.js.map +1 -1
  279. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +2 -2
  280. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +1 -1
  281. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +18 -7
  282. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
  283. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +2 -2
  284. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +1 -1
  285. package/lib/electron-browser/messaging/electron-ws-connection-provider.js +5 -7
  286. package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +1 -1
  287. package/lib/electron-main/event-utils.d.ts +1 -1
  288. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +37 -9
  289. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
  290. package/lib/electron-main/messaging/electron-messaging-contribution.js +83 -68
  291. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  292. package/lib/electron-main/messaging/electron-messaging-service.d.ts +2 -8
  293. package/lib/electron-main/messaging/electron-messaging-service.d.ts.map +1 -1
  294. package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
  295. package/lib/node/messaging/binary-message-pipe.d.ts +45 -0
  296. package/lib/node/messaging/binary-message-pipe.d.ts.map +1 -0
  297. package/lib/node/messaging/binary-message-pipe.js +152 -0
  298. package/lib/node/messaging/binary-message-pipe.js.map +1 -0
  299. package/lib/node/messaging/ipc-bootstrap.js +2 -11
  300. package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
  301. package/lib/node/messaging/ipc-channel.d.ts +26 -0
  302. package/lib/node/messaging/ipc-channel.d.ts.map +1 -0
  303. package/lib/node/messaging/ipc-channel.js +86 -0
  304. package/lib/node/messaging/ipc-channel.js.map +1 -0
  305. package/lib/node/messaging/ipc-connection-provider.d.ts +3 -5
  306. package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
  307. package/lib/node/messaging/ipc-connection-provider.js +14 -31
  308. package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
  309. package/lib/node/messaging/ipc-protocol.d.ts +2 -2
  310. package/lib/node/messaging/ipc-protocol.d.ts.map +1 -1
  311. package/lib/node/messaging/messaging-contribution.d.ts +6 -9
  312. package/lib/node/messaging/messaging-contribution.d.ts.map +1 -1
  313. package/lib/node/messaging/messaging-contribution.js +23 -68
  314. package/lib/node/messaging/messaging-contribution.js.map +1 -1
  315. package/lib/node/messaging/messaging-service.d.ts +4 -23
  316. package/lib/node/messaging/messaging-service.d.ts.map +1 -1
  317. package/lib/node/messaging/messaging-service.js +1 -15
  318. package/lib/node/messaging/messaging-service.js.map +1 -1
  319. package/lib/node/messaging/test/test-web-socket-channel.d.ts +4 -2
  320. package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
  321. package/lib/node/messaging/test/test-web-socket-channel.js +25 -12
  322. package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
  323. package/lib/node/request/proxy-cli-contribution.js +1 -1
  324. package/lib/node/request/proxy-cli-contribution.js.map +1 -1
  325. package/package.json +7 -10
  326. package/src/browser/color-application-contribution.ts +10 -17
  327. package/src/browser/color-registry.ts +0 -5
  328. package/src/browser/common-frontend-contribution.ts +26 -33
  329. package/src/browser/common-styling-participants.ts +307 -0
  330. package/src/browser/connection-status-service.spec.ts +1 -4
  331. package/src/browser/connection-status-service.ts +3 -3
  332. package/src/browser/context-menu-renderer.ts +13 -29
  333. package/src/browser/core-preferences.ts +6 -0
  334. package/src/browser/decoration-style.ts +6 -2
  335. package/src/browser/frontend-application-bindings.ts +1 -3
  336. package/src/browser/frontend-application-config-provider.ts +2 -0
  337. package/src/browser/frontend-application-module.ts +11 -4
  338. package/src/browser/i18n/i18n-frontend-module.ts +2 -0
  339. package/src/browser/i18n/language-quick-pick-service.ts +128 -0
  340. package/src/browser/index.ts +1 -0
  341. package/src/browser/keybinding.spec.ts +22 -27
  342. package/src/browser/keybinding.ts +2 -1
  343. package/src/browser/label-provider.ts +0 -13
  344. package/src/browser/logger-frontend-module.ts +8 -1
  345. package/src/browser/messaging/ws-connection-provider.ts +34 -25
  346. package/src/browser/preferences/preference-contribution.ts +3 -28
  347. package/src/browser/preferences/preference-proxy.spec.ts +3 -113
  348. package/src/browser/preferences/preference-proxy.ts +0 -4
  349. package/src/browser/preferences/preference-schema-provider.spec.ts +1 -4
  350. package/src/browser/preferences/preference-service.spec.ts +1 -5
  351. package/src/browser/preferences/preference-validation-service.spec.ts +2 -2
  352. package/src/browser/preferences/preference-validation-service.ts +2 -2
  353. package/src/browser/preloader.ts +9 -2
  354. package/src/browser/progress-status-bar-item.ts +1 -1
  355. package/src/browser/quick-input/quick-command-service.ts +3 -3
  356. package/src/browser/saveable.ts +5 -4
  357. package/src/browser/shell/application-shell.ts +42 -35
  358. package/src/browser/shell/shell-layout-restorer.ts +4 -6
  359. package/src/browser/shell/side-panel-handler.ts +3 -2
  360. package/src/browser/shell/tab-bars.ts +14 -4
  361. package/src/browser/source-tree/source-tree-widget.tsx +1 -1
  362. package/src/browser/source-tree/tree-source.ts +2 -1
  363. package/src/browser/style/breadcrumbs.css +0 -1
  364. package/src/browser/style/index.css +66 -29
  365. package/src/browser/style/menus.css +4 -2
  366. package/src/browser/style/select-component.css +2 -0
  367. package/src/browser/style/sidepanel.css +11 -25
  368. package/src/browser/style/status-bar.css +8 -17
  369. package/src/browser/style/tabs.css +0 -16
  370. package/src/browser/style/tooltip.css +3 -3
  371. package/src/browser/style/tree.css +27 -11
  372. package/src/browser/style/view-container.css +4 -0
  373. package/src/browser/styling-service.ts +76 -0
  374. package/src/browser/theming.ts +18 -45
  375. package/src/browser/tree/search-box.ts +5 -4
  376. package/src/browser/tree/test/tree-test-container.ts +2 -0
  377. package/src/browser/tree/tree-compression/compressed-tree-model.ts +8 -2
  378. package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +4 -2
  379. package/src/browser/tree/tree-container.ts +4 -0
  380. package/src/browser/tree/tree-focus-service.ts +55 -0
  381. package/src/browser/tree/tree-model.ts +32 -8
  382. package/src/browser/tree/tree-selection-impl.ts +13 -4
  383. package/src/browser/tree/tree-selection-state.ts +7 -2
  384. package/src/browser/tree/tree-selection.ts +10 -0
  385. package/src/browser/tree/tree-widget-selection.ts +10 -1
  386. package/src/browser/tree/tree-widget.tsx +83 -43
  387. package/src/browser/tree/tree.ts +8 -2
  388. package/src/browser/view-container.ts +41 -4
  389. package/src/common/cancellation.ts +8 -0
  390. package/src/common/command.ts +14 -16
  391. package/src/common/index.ts +1 -0
  392. package/src/common/message-rpc/channel.spec.ts +88 -0
  393. package/src/common/message-rpc/channel.ts +260 -0
  394. package/src/{node/messaging/logger.ts → common/message-rpc/index.ts} +4 -23
  395. package/src/common/message-rpc/message-buffer.ts +99 -0
  396. package/src/common/message-rpc/rpc-message-encoder.spec.ts +55 -0
  397. package/src/common/message-rpc/rpc-message-encoder.ts +552 -0
  398. package/src/common/message-rpc/rpc-protocol.ts +217 -0
  399. package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -0
  400. package/src/common/message-rpc/uint8-array-message-buffer.ts +206 -0
  401. package/src/common/messaging/abstract-connection-provider.ts +28 -37
  402. package/src/common/messaging/connection-error-handler.ts +1 -2
  403. package/src/common/messaging/handler.ts +2 -2
  404. package/src/common/messaging/proxy-factory.spec.ts +4 -17
  405. package/src/common/messaging/proxy-factory.ts +27 -16
  406. package/src/common/messaging/web-socket-channel.ts +79 -135
  407. package/src/common/nls.ts +11 -0
  408. package/src/common/preferences/preference-schema.ts +1 -6
  409. package/src/common/promise-util.ts +13 -14
  410. package/src/common/resource.ts +29 -2
  411. package/src/common/theme.ts +6 -2
  412. package/src/electron-browser/messaging/electron-ipc-connection-provider.ts +21 -7
  413. package/src/electron-browser/messaging/electron-ws-connection-provider.ts +5 -8
  414. package/src/electron-main/messaging/electron-messaging-contribution.ts +87 -65
  415. package/src/electron-main/messaging/electron-messaging-service.ts +2 -8
  416. package/src/node/messaging/binary-message-pipe.ts +168 -0
  417. package/src/node/messaging/ipc-bootstrap.ts +3 -11
  418. package/src/node/messaging/ipc-channel.ts +97 -0
  419. package/src/node/messaging/ipc-connection-provider.ts +18 -35
  420. package/src/node/messaging/ipc-protocol.ts +2 -2
  421. package/src/node/messaging/messaging-contribution.ts +29 -74
  422. package/src/node/messaging/messaging-service.ts +4 -31
  423. package/src/node/messaging/test/test-web-socket-channel.ts +26 -17
  424. package/src/node/request/proxy-cli-contribution.ts +1 -1
  425. package/lib/browser/preferences/validated-preference-proxy.d.ts +0 -21
  426. package/lib/browser/preferences/validated-preference-proxy.d.ts.map +0 -1
  427. package/lib/browser/preferences/validated-preference-proxy.js +0 -118
  428. package/lib/browser/preferences/validated-preference-proxy.js.map +0 -1
  429. package/lib/node/messaging/logger.d.ts +0 -8
  430. package/lib/node/messaging/logger.d.ts.map +0 -1
  431. package/lib/node/messaging/logger.js.map +0 -1
  432. package/shared/vscode-ws-jsonrpc/index.d.ts +0 -1
  433. package/shared/vscode-ws-jsonrpc/index.js +0 -1
  434. package/src/browser/preferences/validated-preference-proxy.ts +0 -111
  435. package/src/browser/style/variables-bright.useable.css +0 -93
  436. package/src/browser/style/variables-dark.useable.css +0 -93
@@ -1 +1 @@
1
- {"version":3,"file":"electron-ws-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ws-connection-provider.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AAErF;;;;GAIG;AACH,qBACa,mCAAoC,SAAQ,2BAA4B,YAAW,+BAA+B;IAE3H;;OAEG;IACH,SAAS,CAAC,QAAQ,UAAS;IAE3B,MAAM,IAAI,IAAI;IAWL,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;CAMrH"}
1
+ {"version":3,"file":"electron-ws-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ws-connection-provider.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;GAIG;AACH,qBACa,mCAAoC,SAAQ,2BAA4B,YAAW,+BAA+B;IAE3H;;OAEG;IACH,SAAS,CAAC,QAAQ,UAAS;IAE3B,MAAM,IAAI,IAAI;IAQC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAM3H"}
@@ -38,16 +38,14 @@ let ElectronWebSocketConnectionProvider = class ElectronWebSocketConnectionProvi
38
38
  this.stopping = false;
39
39
  }
40
40
  onStop() {
41
+ var _a;
41
42
  this.stopping = true;
42
- // Close the websocket connection `onStop`. Otherwise, the channels will be closed with 30 sec (`MessagingContribution#checkAliveTimeout`) delay.
43
+ // Manually close the websocket connections `onStop`. Otherwise, the channels will be closed with 30 sec (`MessagingContribution#checkAliveTimeout`) delay.
43
44
  // https://github.com/eclipse-theia/theia/issues/6499
44
- for (const channel of [...this.channels.values()]) {
45
- // `1001` indicates that an endpoint is "going away", such as a server going down or a browser having navigated away from a page.
46
- // But we cannot use `1001`: https://github.com/TypeFox/vscode-ws-jsonrpc/issues/15
47
- channel.close(1000, 'The frontend is "going away"...');
48
- }
45
+ // `1001` indicates that an endpoint is "going away", such as a server going down or a browser having navigated away from a page.
46
+ (_a = this.channelMultiPlexer) === null || _a === void 0 ? void 0 : _a.onUnderlyingChannelClose({ reason: 'The frontend is "going away"', code: 1001 });
49
47
  }
50
- openChannel(path, handler, options) {
48
+ async openChannel(path, handler, options) {
51
49
  if (!this.stopping) {
52
50
  super.openChannel(path, handler, options);
53
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"electron-ws-connection-provider.js","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ws-connection-provider.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;AAEhF,yCAAuC;AAEvC,2FAA+G;AAG/G;;;;GAIG;AAEH,IAAa,mCAAmC,GAAhD,MAAa,mCAAoC,SAAQ,oDAA2B;IAApF;;QAEI;;WAEG;QACO,aAAQ,GAAG,KAAK,CAAC;IAmB/B,CAAC;IAjBG,MAAM;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,iJAAiJ;QACjJ,qDAAqD;QACrD,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;YAC/C,iIAAiI;YACjI,mFAAmF;YACnF,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;SAC1D;IACL,CAAC;IAEQ,WAAW,CAAC,IAAY,EAAE,OAA4C,EAAE,OAA0B;QACvG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7C;IACL,CAAC;CAEJ,CAAA;AAxBY,mCAAmC;IAD/C,IAAA,sBAAU,GAAE;GACA,mCAAmC,CAwB/C;AAxBY,kFAAmC"}
1
+ {"version":3,"file":"electron-ws-connection-provider.js","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ws-connection-provider.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;AAEhF,yCAAuC;AACvC,2FAA+G;AAI/G;;;;GAIG;AAEH,IAAa,mCAAmC,GAAhD,MAAa,mCAAoC,SAAQ,oDAA2B;IAApF;;QAEI;;WAEG;QACO,aAAQ,GAAG,KAAK,CAAC;IAgB/B,CAAC;IAdG,MAAM;;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,2JAA2J;QAC3J,qDAAqD;QACrD,iIAAiI;QACjI,MAAA,IAAI,CAAC,kBAAkB,0CAAE,wBAAwB,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,OAAmC,EAAE,OAA0B;QACpG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7C;IACL,CAAC;CAEJ,CAAA;AArBY,mCAAmC;IAD/C,IAAA,sBAAU,GAAE;GACA,mCAAmC,CAqB/C;AArBY,kFAAmC"}
@@ -1,5 +1,5 @@
1
- /// <reference types="node" />
2
1
  /// <reference types="mocha" />
2
+ /// <reference types="node" />
3
3
  import { Disposable, DisposableCollection } from '../common';
4
4
  /**
5
5
  * @param collection If a collection is passed in, the new disposable is added to that collection. Otherwise, the new disposable is returned.
@@ -1,29 +1,57 @@
1
1
  import { IpcMainEvent, WebContents } from '@theia/electron/shared/electron';
2
- import { MessageConnection } from 'vscode-ws-jsonrpc';
3
2
  import { ContributionProvider } from '../../common/contribution-provider';
4
- import { WebSocketChannel } from '../../common/messaging/web-socket-channel';
5
3
  import { MessagingContribution } from '../../node/messaging/messaging-contribution';
6
4
  import { ElectronConnectionHandler } from '../../electron-common/messaging/electron-connection-handler';
7
5
  import { ElectronMainApplicationContribution } from '../electron-main-application';
8
6
  import { ElectronMessagingService } from './electron-messaging-service';
7
+ import { Channel, ChannelCloseEvent, ChannelMultiplexer, MessageProvider } from '../../common/message-rpc/channel';
8
+ import { Emitter, Event, WriteBuffer } from '../../common';
9
9
  /**
10
10
  * This component replicates the role filled by `MessagingContribution` but for Electron.
11
11
  * Unlike the WebSocket based implementation, we do not expect to receive
12
12
  * connection events. Instead, we'll create channels based on incoming `open`
13
13
  * events on the `ipcMain` channel.
14
- *
15
14
  * This component allows communication between renderer process (frontend) and electron main process.
16
15
  */
17
16
  export declare class ElectronMessagingContribution implements ElectronMainApplicationContribution, ElectronMessagingService {
18
17
  protected readonly messagingContributions: ContributionProvider<ElectronMessagingService.Contribution>;
19
18
  protected readonly connectionHandlers: ContributionProvider<ElectronConnectionHandler>;
20
- protected readonly channelHandlers: MessagingContribution.ConnectionHandlers<WebSocketChannel>;
21
- protected readonly windowChannels: Map<number, Map<number, WebSocketChannel>>;
19
+ protected readonly channelHandlers: MessagingContribution.ConnectionHandlers<Channel>;
20
+ /**
21
+ * Each electron window has a main chanel and its own multiplexer to route multiple client messages the same IPC connection.
22
+ */
23
+ protected readonly windowChannelMultiplexer: Map<number, {
24
+ channel: ElectronWebContentChannel;
25
+ multiPlexer: ChannelMultiplexer;
26
+ }>;
22
27
  protected init(): void;
28
+ protected handleIpcEvent(event: IpcMainEvent, data: Uint8Array): void;
29
+ protected createWindowChannelData(sender: Electron.WebContents): {
30
+ channel: ElectronWebContentChannel;
31
+ multiPlexer: ChannelMultiplexer;
32
+ };
33
+ /**
34
+ * Creates the main channel to a window.
35
+ * @param sender The window that the channel should be established to.
36
+ */
37
+ protected createWindowMainChannel(sender: WebContents): ElectronWebContentChannel;
23
38
  onStart(): void;
24
- listen(spec: string, callback: (params: ElectronMessagingService.PathParams, connection: MessageConnection) => void): void;
25
- ipcChannel(spec: string, callback: (params: any, channel: WebSocketChannel) => void): void;
26
- protected handleIpcMessage(event: IpcMainEvent, data: string): void;
27
- protected createChannel(id: number, sender: WebContents): WebSocketChannel;
39
+ ipcChannel(spec: string, callback: (params: any, channel: Channel) => void): void;
40
+ }
41
+ /**
42
+ * Used to establish a connection between the ipcMain and the Electron frontend (window).
43
+ * Messages a transferred via electron IPC.
44
+ */
45
+ export declare class ElectronWebContentChannel implements Channel {
46
+ protected readonly sender: Electron.WebContents;
47
+ protected readonly onCloseEmitter: Emitter<ChannelCloseEvent>;
48
+ get onClose(): Event<ChannelCloseEvent>;
49
+ readonly onMessageEmitter: Emitter<MessageProvider>;
50
+ get onMessage(): Event<MessageProvider>;
51
+ protected readonly onErrorEmitter: Emitter<unknown>;
52
+ get onError(): Event<unknown>;
53
+ constructor(sender: Electron.WebContents);
54
+ getWriteBuffer(): WriteBuffer;
55
+ close(): void;
28
56
  }
29
57
  //# sourceMappingURL=electron-messaging-contribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"electron-messaging-contribution.d.ts","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAW,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAErF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAEpF,OAAO,EAAE,yBAAyB,EAAmC,MAAM,6DAA6D,CAAC;AACzI,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE;;;;;;;GAOG;AACH,qBACa,6BAA8B,YAAW,mCAAmC,EAAE,wBAAwB;IAG/G,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAGvG,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAEvF,SAAS,CAAC,QAAQ,CAAC,eAAe,6DAAoE;IACtG,SAAS,CAAC,QAAQ,CAAC,cAAc,6CAAoD;IAGrF,SAAS,CAAC,IAAI,IAAI,IAAI;IAMtB,OAAO,IAAI,IAAI;IAYf,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAQ1H,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAI1F,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IA2CnE,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,gBAAgB;CAQ7E"}
1
+ {"version":3,"file":"electron-messaging-contribution.d.ts","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAW,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAmC,MAAM,6DAA6D,CAAC;AACzI,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3D;;;;;;GAMG;AAEH,qBACa,6BAA8B,YAAW,mCAAmC,EAAE,wBAAwB;IAG/G,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAGvG,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAEvF,SAAS,CAAC,QAAQ,CAAC,eAAe,oDAA2D;IAC7F;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,wBAAwB;iBAA8B,yBAAyB;qBAAe,kBAAkB;OAAM;IAGzI,SAAS,CAAC,IAAI,IAAI,IAAI;IAMtB,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAYrE,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,yBAAyB,CAAC;QAAC,WAAW,EAAE,kBAAkB,CAAA;KAAE;IAkBxI;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,yBAAyB;IAIjF,OAAO,IAAI,IAAI;IAYf,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAGpF;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,OAAO;IAiBzC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW;IAhB3D,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC9E,IAAI,OAAO,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAEtC;IAGD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAiB;IACpE,IAAI,SAAS,IAAI,KAAK,CAAC,eAAe,CAAC,CAEtC;IAED,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAiB;IACpE,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAE5B;gBAE8B,MAAM,EAAE,QAAQ,CAAC,WAAW;IAG3D,cAAc,IAAI,WAAW;IAW7B,KAAK,IAAI,IAAI;CAKhB"}
@@ -24,108 +24,86 @@ var __metadata = (this && this.__metadata) || function (k, v) {
24
24
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.ElectronMessagingContribution = void 0;
27
+ exports.ElectronWebContentChannel = exports.ElectronMessagingContribution = void 0;
28
28
  const electron_1 = require("@theia/electron/shared/electron");
29
29
  const inversify_1 = require("inversify");
30
- const connection_1 = require("vscode-ws-jsonrpc/lib/socket/connection");
31
30
  const contribution_provider_1 = require("../../common/contribution-provider");
32
- const web_socket_channel_1 = require("../../common/messaging/web-socket-channel");
33
31
  const messaging_contribution_1 = require("../../node/messaging/messaging-contribution");
34
- const logger_1 = require("../../node/messaging/logger");
35
32
  const electron_connection_handler_1 = require("../../electron-common/messaging/electron-connection-handler");
36
33
  const electron_messaging_service_1 = require("./electron-messaging-service");
34
+ const channel_1 = require("../../common/message-rpc/channel");
35
+ const common_1 = require("../../common");
36
+ const uint8_array_message_buffer_1 = require("../../common/message-rpc/uint8-array-message-buffer");
37
37
  /**
38
38
  * This component replicates the role filled by `MessagingContribution` but for Electron.
39
39
  * Unlike the WebSocket based implementation, we do not expect to receive
40
40
  * connection events. Instead, we'll create channels based on incoming `open`
41
41
  * events on the `ipcMain` channel.
42
- *
43
42
  * This component allows communication between renderer process (frontend) and electron main process.
44
43
  */
45
44
  let ElectronMessagingContribution = class ElectronMessagingContribution {
46
45
  constructor() {
47
46
  this.channelHandlers = new messaging_contribution_1.MessagingContribution.ConnectionHandlers();
48
- this.windowChannels = new Map();
47
+ /**
48
+ * Each electron window has a main chanel and its own multiplexer to route multiple client messages the same IPC connection.
49
+ */
50
+ this.windowChannelMultiplexer = new Map();
49
51
  }
50
52
  init() {
51
53
  electron_1.ipcMain.on(electron_connection_handler_1.THEIA_ELECTRON_IPC_CHANNEL_NAME, (event, data) => {
52
- this.handleIpcMessage(event, data);
54
+ this.handleIpcEvent(event, data);
53
55
  });
54
56
  }
57
+ handleIpcEvent(event, data) {
58
+ var _a;
59
+ const sender = event.sender;
60
+ // Get the multiplexer for a given window id
61
+ try {
62
+ const windowChannelData = (_a = this.windowChannelMultiplexer.get(sender.id)) !== null && _a !== void 0 ? _a : this.createWindowChannelData(sender);
63
+ windowChannelData.channel.onMessageEmitter.fire(() => new uint8_array_message_buffer_1.Uint8ArrayReadBuffer(data));
64
+ }
65
+ catch (error) {
66
+ console.error('IPC: Failed to handle message', { error, data });
67
+ }
68
+ }
69
+ // Creates a new multiplexer for a given sender/window
70
+ createWindowChannelData(sender) {
71
+ const mainChannel = this.createWindowMainChannel(sender);
72
+ const multiPlexer = new channel_1.ChannelMultiplexer(mainChannel);
73
+ multiPlexer.onDidOpenChannel(openEvent => {
74
+ const { channel, id } = openEvent;
75
+ if (this.channelHandlers.route(id, channel)) {
76
+ console.debug(`Opening channel for service path '${id}'.`);
77
+ channel.onClose(() => console.debug(`Closing channel on service path '${id}'.`));
78
+ }
79
+ });
80
+ sender.once('did-navigate', () => multiPlexer.onUnderlyingChannelClose({ reason: 'Window was refreshed' })); // When refreshing the browser window.
81
+ sender.once('destroyed', () => multiPlexer.onUnderlyingChannelClose({ reason: 'Window was closed' })); // When closing the browser window.
82
+ const data = { channel: mainChannel, multiPlexer };
83
+ this.windowChannelMultiplexer.set(sender.id, data);
84
+ return data;
85
+ }
86
+ /**
87
+ * Creates the main channel to a window.
88
+ * @param sender The window that the channel should be established to.
89
+ */
90
+ createWindowMainChannel(sender) {
91
+ return new ElectronWebContentChannel(sender);
92
+ }
55
93
  onStart() {
56
94
  for (const contribution of this.messagingContributions.getContributions()) {
57
95
  contribution.configure(this);
58
96
  }
59
97
  for (const connectionHandler of this.connectionHandlers.getContributions()) {
60
98
  this.channelHandlers.push(connectionHandler.path, (params, channel) => {
61
- const connection = (0, connection_1.createWebSocketConnection)(channel, new logger_1.ConsoleLogger());
62
- connectionHandler.onConnection(connection);
99
+ connectionHandler.onConnection(channel);
63
100
  });
64
101
  }
65
102
  }
66
- listen(spec, callback) {
67
- this.ipcChannel(spec, (params, channel) => {
68
- const connection = (0, connection_1.createWebSocketConnection)(channel, new logger_1.ConsoleLogger());
69
- callback(params, connection);
70
- });
71
- }
72
103
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
104
  ipcChannel(spec, callback) {
74
105
  this.channelHandlers.push(spec, callback);
75
106
  }
76
- handleIpcMessage(event, data) {
77
- const sender = event.sender;
78
- try {
79
- // Get the channel map for a given window id
80
- let channels = this.windowChannels.get(sender.id);
81
- if (!channels) {
82
- this.windowChannels.set(sender.id, channels = new Map());
83
- }
84
- // Start parsing the message to extract the channel id and route
85
- const message = JSON.parse(data.toString());
86
- // Someone wants to open a logical channel
87
- if (message.kind === 'open') {
88
- const { id, path } = message;
89
- const channel = this.createChannel(id, sender);
90
- if (this.channelHandlers.route(path, channel)) {
91
- channel.ready();
92
- channels.set(id, channel);
93
- channel.onClose(() => channels.delete(id));
94
- }
95
- else {
96
- console.error('Cannot find a service for the path: ' + path);
97
- }
98
- }
99
- else {
100
- const { id } = message;
101
- const channel = channels.get(id);
102
- if (channel) {
103
- channel.handleMessage(message);
104
- }
105
- else {
106
- console.error('The ipc channel does not exist', id);
107
- }
108
- }
109
- const close = () => {
110
- for (const channel of Array.from(channels.values())) {
111
- channel.close(undefined, 'webContent destroyed');
112
- }
113
- channels.clear();
114
- };
115
- sender.once('did-navigate', close); // When refreshing the browser window.
116
- sender.once('destroyed', close); // When closing the browser window.
117
- }
118
- catch (error) {
119
- console.error('IPC: Failed to handle message', { error, data });
120
- }
121
- }
122
- createChannel(id, sender) {
123
- return new web_socket_channel_1.WebSocketChannel(id, content => {
124
- if (!sender.isDestroyed()) {
125
- sender.send(electron_connection_handler_1.THEIA_ELECTRON_IPC_CHANNEL_NAME, content);
126
- }
127
- });
128
- }
129
107
  };
130
108
  __decorate([
131
109
  (0, inversify_1.inject)(contribution_provider_1.ContributionProvider),
@@ -147,4 +125,41 @@ ElectronMessagingContribution = __decorate([
147
125
  (0, inversify_1.injectable)()
148
126
  ], ElectronMessagingContribution);
149
127
  exports.ElectronMessagingContribution = ElectronMessagingContribution;
128
+ /**
129
+ * Used to establish a connection between the ipcMain and the Electron frontend (window).
130
+ * Messages a transferred via electron IPC.
131
+ */
132
+ class ElectronWebContentChannel {
133
+ constructor(sender) {
134
+ this.sender = sender;
135
+ this.onCloseEmitter = new common_1.Emitter();
136
+ // Make the message emitter public so that we can easily forward messages received from the ipcMain.
137
+ this.onMessageEmitter = new common_1.Emitter();
138
+ this.onErrorEmitter = new common_1.Emitter();
139
+ }
140
+ get onClose() {
141
+ return this.onCloseEmitter.event;
142
+ }
143
+ get onMessage() {
144
+ return this.onMessageEmitter.event;
145
+ }
146
+ get onError() {
147
+ return this.onErrorEmitter.event;
148
+ }
149
+ getWriteBuffer() {
150
+ const writer = new uint8_array_message_buffer_1.Uint8ArrayWriteBuffer();
151
+ writer.onCommit(buffer => {
152
+ if (!this.sender.isDestroyed()) {
153
+ this.sender.send(electron_connection_handler_1.THEIA_ELECTRON_IPC_CHANNEL_NAME, buffer);
154
+ }
155
+ });
156
+ return writer;
157
+ }
158
+ close() {
159
+ this.onCloseEmitter.dispose();
160
+ this.onMessageEmitter.dispose();
161
+ this.onErrorEmitter.dispose();
162
+ }
163
+ }
164
+ exports.ElectronWebContentChannel = ElectronWebContentChannel;
150
165
  //# sourceMappingURL=electron-messaging-contribution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"electron-messaging-contribution.js","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electron-messaging-contribution.js","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-contribution.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,10 @@
1
- import type { MessageConnection } from 'vscode-jsonrpc';
2
- import type { WebSocketChannel } from '../../common/messaging/web-socket-channel';
1
+ import { Channel } from '../../common/message-rpc/channel';
3
2
  export interface ElectronMessagingService {
4
- /**
5
- * Accept a JSON-RPC connection on the given path.
6
- * A path supports the route syntax: https://github.com/rcs/route-parser#what-can-i-use-in-my-routes.
7
- */
8
- listen(path: string, callback: (params: ElectronMessagingService.PathParams, connection: MessageConnection) => void): void;
9
3
  /**
10
4
  * Accept an ipc channel on the given path.
11
5
  * A path supports the route syntax: https://github.com/rcs/route-parser#what-can-i-use-in-my-routes.
12
6
  */
13
- ipcChannel(path: string, callback: (params: ElectronMessagingService.PathParams, socket: WebSocketChannel) => void): void;
7
+ ipcChannel(path: string, callback: (params: ElectronMessagingService.PathParams, socket: Channel) => void): void;
14
8
  }
15
9
  export declare namespace ElectronMessagingService {
16
10
  interface PathParams {
@@ -1 +1 @@
1
- {"version":3,"file":"electron-messaging-service.d.ts","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-service.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF,MAAM,WAAW,wBAAwB;IACrC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3H;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7H;AACD,yBAAiB,wBAAwB,CAAC;IACtC,UAAiB,UAAU;QACvB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB;IACM,MAAM,YAAY,eAAkD,CAAC;IAC5E,UAAiB,YAAY;QACzB,SAAS,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;KACtD;CACJ"}
1
+ {"version":3,"file":"electron-messaging-service.d.ts","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAE3D,MAAM,WAAW,wBAAwB;IACrC;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CACpH;AACD,yBAAiB,wBAAwB,CAAC;IACtC,UAAiB,UAAU;QACvB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB;IACM,MAAM,YAAY,eAAkD,CAAC;IAC5E,UAAiB,YAAY;QACzB,SAAS,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;KACtD;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"electron-messaging-service.js","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAiBhF,IAAiB,wBAAwB,CAQxC;AARD,WAAiB,wBAAwB;IAIxB,qCAAY,GAAG,MAAM,CAAC,uCAAuC,CAAC,CAAC;AAIhF,CAAC,EARgB,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAQxC"}
1
+ {"version":3,"file":"electron-messaging-service.js","sourceRoot":"","sources":["../../../src/electron-main/messaging/electron-messaging-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAWhF,IAAiB,wBAAwB,CAQxC;AARD,WAAiB,wBAAwB;IAIxB,qCAAY,GAAG,MAAM,CAAC,uCAAuC,CAAC,CAAC;AAIhF,CAAC,EARgB,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAQxC"}
@@ -0,0 +1,45 @@
1
+ /// <reference types="node" />
2
+ import { Duplex } from 'stream';
3
+ import { Disposable, Emitter, Event } from '../../common';
4
+ /**
5
+ * A `BinaryMessagePipe` is capable of sending and retrieving binary messages i.e. {@link Uint8Array}s over
6
+ * and underlying streamed process pipe/fd. The message length of individual messages is encoding at the beginning of
7
+ * a new message. This makes it possible to extract messages from the streamed data.
8
+ */
9
+ export declare class BinaryMessagePipe implements Disposable {
10
+ protected readonly underlyingPipe: Duplex;
11
+ static readonly MESSAGE_START_IDENTIFIER = "<MessageStart>";
12
+ protected dataHandler: (chunk: Uint8Array) => void;
13
+ protected onMessageEmitter: Emitter<Uint8Array>;
14
+ protected cachedMessageData: StreamedMessageData;
15
+ get onMessage(): Event<Uint8Array>;
16
+ constructor(underlyingPipe: Duplex);
17
+ send(message: Uint8Array): void;
18
+ protected handleChunk(chunk: Uint8Array): void;
19
+ protected handleNewMessage(chunk: Uint8Array): void;
20
+ protected handleMessageContentChunk(chunk: Uint8Array): void;
21
+ protected emitCachedMessage(): void;
22
+ /**
23
+ * Encodes the start of a new message into a {@link Uint8Array}.
24
+ * The message start consists of a identifier string and the length of the following message.
25
+ * @returns the buffer contains the encoded message start
26
+ */
27
+ protected encodeMessageStart(message: Uint8Array): Uint8Array;
28
+ protected get messageStartByteLength(): number;
29
+ /**
30
+ * Reads the start of a new message from a stream chunk (or cached message) received from the underlying pipe.
31
+ * The message start is expected to consist of an identifier string and the length of the message.
32
+ * @param chunk The stream chunk.
33
+ * @returns The length of the message content to read.
34
+ * @throws An error if the message start can not be read successfully.
35
+ */
36
+ protected readMessageStart(chunk: Uint8Array): number;
37
+ dispose(): void;
38
+ }
39
+ interface StreamedMessageData {
40
+ chunks: Uint8Array[];
41
+ missingBytes: number;
42
+ partialMessageStart?: Uint8Array;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=binary-message-pipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-message-pipe.d.ts","sourceRoot":"","sources":["../../../src/node/messaging/binary-message-pipe.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG1D;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAcpC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM;IAbrD,MAAM,CAAC,QAAQ,CAAC,wBAAwB,oBAAoB;IAC5D,SAAS,CAAC,WAAW,UAAW,UAAU,UAA6B;IAEvE,SAAS,CAAC,gBAAgB,sBAA6B;IACvD,SAAS,CAAC,iBAAiB,EAAE,mBAAmB,CAG9C;IAEF,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,CAEjC;gBAE8B,cAAc,EAAE,MAAM;IAIrD,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAK/B,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAU9C,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAyBnD,SAAS,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAsB5D,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAOnC;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAS7D,SAAS,KAAK,sBAAsB,IAAI,MAAM,CAG7C;IAED;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAcrD,OAAO,IAAI,IAAI;CASlB;AAED,UAAU,mBAAmB;IACzB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,UAAU,CAAC;CACpC"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2022 STMicroelectronics and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.BinaryMessagePipe = void 0;
19
+ const common_1 = require("../../common");
20
+ const uint8_array_message_buffer_1 = require("../../common/message-rpc/uint8-array-message-buffer");
21
+ /**
22
+ * A `BinaryMessagePipe` is capable of sending and retrieving binary messages i.e. {@link Uint8Array}s over
23
+ * and underlying streamed process pipe/fd. The message length of individual messages is encoding at the beginning of
24
+ * a new message. This makes it possible to extract messages from the streamed data.
25
+ */
26
+ class BinaryMessagePipe {
27
+ constructor(underlyingPipe) {
28
+ this.underlyingPipe = underlyingPipe;
29
+ this.dataHandler = (chunk) => this.handleChunk(chunk);
30
+ this.onMessageEmitter = new common_1.Emitter();
31
+ this.cachedMessageData = {
32
+ chunks: [],
33
+ missingBytes: 0
34
+ };
35
+ underlyingPipe.on('data', this.dataHandler);
36
+ }
37
+ get onMessage() {
38
+ return this.onMessageEmitter.event;
39
+ }
40
+ send(message) {
41
+ this.underlyingPipe.write(this.encodeMessageStart(message));
42
+ this.underlyingPipe.write(message);
43
+ }
44
+ handleChunk(chunk) {
45
+ if (this.cachedMessageData.missingBytes === 0) {
46
+ // There is no currently streamed message => We expect that the beginning of the chunk is the message start for a new message
47
+ this.handleNewMessage(chunk);
48
+ }
49
+ else {
50
+ // The chunk contains message data intended for the currently cached message
51
+ this.handleMessageContentChunk(chunk);
52
+ }
53
+ }
54
+ handleNewMessage(chunk) {
55
+ if (chunk.byteLength < this.messageStartByteLength) {
56
+ // The chunk only contains a part of the encoded message start
57
+ this.cachedMessageData.partialMessageStart = chunk;
58
+ return;
59
+ }
60
+ const messageLength = this.readMessageStart(chunk);
61
+ if (chunk.length - this.messageStartByteLength > messageLength) {
62
+ // The initial chunk contains more than one binary message => Fire `onMessage` for first message and handle remaining content
63
+ const firstMessage = chunk.slice(this.messageStartByteLength, this.messageStartByteLength + messageLength);
64
+ this.onMessageEmitter.fire(firstMessage);
65
+ this.handleNewMessage(chunk.slice(this.messageStartByteLength + messageLength));
66
+ }
67
+ else if (chunk.length - this.messageStartByteLength === messageLength) {
68
+ // The initial chunk contains exactly one complete message. => Directly fire the `onMessage` event.
69
+ this.onMessageEmitter.fire(chunk.slice(this.messageStartByteLength));
70
+ }
71
+ else {
72
+ // The initial chunk contains only part of the message content => Cache message data
73
+ this.cachedMessageData.chunks = [chunk.slice(this.messageStartByteLength)];
74
+ this.cachedMessageData.missingBytes = messageLength - chunk.byteLength + this.messageStartByteLength;
75
+ }
76
+ }
77
+ handleMessageContentChunk(chunk) {
78
+ if (this.cachedMessageData) {
79
+ if (chunk.byteLength < this.cachedMessageData.missingBytes) {
80
+ // The chunk only contains parts of the missing bytes for the cached message.
81
+ this.cachedMessageData.chunks.push(chunk);
82
+ this.cachedMessageData.missingBytes -= chunk.byteLength;
83
+ }
84
+ else if (chunk.byteLength === this.cachedMessageData.missingBytes) {
85
+ // Chunk contains exactly the missing data for the cached message
86
+ this.cachedMessageData.chunks.push(chunk);
87
+ this.emitCachedMessage();
88
+ }
89
+ else {
90
+ // Chunk contains missing data for the cached message + data for the next message
91
+ const messageEnd = this.cachedMessageData.missingBytes;
92
+ const missingData = chunk.slice(0, messageEnd);
93
+ this.cachedMessageData.chunks.push(missingData);
94
+ this.emitCachedMessage();
95
+ this.handleNewMessage(chunk.slice(messageEnd));
96
+ }
97
+ }
98
+ }
99
+ emitCachedMessage() {
100
+ const message = Buffer.concat(this.cachedMessageData.chunks);
101
+ this.onMessageEmitter.fire(message);
102
+ this.cachedMessageData.chunks = [];
103
+ this.cachedMessageData.missingBytes = 0;
104
+ }
105
+ /**
106
+ * Encodes the start of a new message into a {@link Uint8Array}.
107
+ * The message start consists of a identifier string and the length of the following message.
108
+ * @returns the buffer contains the encoded message start
109
+ */
110
+ encodeMessageStart(message) {
111
+ const writer = new uint8_array_message_buffer_1.Uint8ArrayWriteBuffer()
112
+ .writeString(BinaryMessagePipe.MESSAGE_START_IDENTIFIER)
113
+ .writeUint32(message.length);
114
+ const messageStart = writer.getCurrentContents();
115
+ writer.dispose();
116
+ return messageStart;
117
+ }
118
+ get messageStartByteLength() {
119
+ // 4 bytes for length of id + id string length + 4 bytes for length of message
120
+ return 4 + BinaryMessagePipe.MESSAGE_START_IDENTIFIER.length + 4;
121
+ }
122
+ /**
123
+ * Reads the start of a new message from a stream chunk (or cached message) received from the underlying pipe.
124
+ * The message start is expected to consist of an identifier string and the length of the message.
125
+ * @param chunk The stream chunk.
126
+ * @returns The length of the message content to read.
127
+ * @throws An error if the message start can not be read successfully.
128
+ */
129
+ readMessageStart(chunk) {
130
+ const messageData = this.cachedMessageData.partialMessageStart ? Buffer.concat([this.cachedMessageData.partialMessageStart, chunk]) : chunk;
131
+ this.cachedMessageData.partialMessageStart = undefined;
132
+ const reader = new uint8_array_message_buffer_1.Uint8ArrayReadBuffer(messageData);
133
+ const identifier = reader.readString();
134
+ if (identifier !== BinaryMessagePipe.MESSAGE_START_IDENTIFIER) {
135
+ throw new Error(`Could not read message start. The start identifier should be '${BinaryMessagePipe.MESSAGE_START_IDENTIFIER}' but was '${identifier}`);
136
+ }
137
+ const length = reader.readUint32();
138
+ return length;
139
+ }
140
+ dispose() {
141
+ this.underlyingPipe.removeListener('data', this.dataHandler);
142
+ this.underlyingPipe.end();
143
+ this.onMessageEmitter.dispose();
144
+ this.cachedMessageData = {
145
+ chunks: [],
146
+ missingBytes: 0
147
+ };
148
+ }
149
+ }
150
+ exports.BinaryMessagePipe = BinaryMessagePipe;
151
+ BinaryMessagePipe.MESSAGE_START_IDENTIFIER = '<MessageStart>';
152
+ //# sourceMappingURL=binary-message-pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-message-pipe.js","sourceRoot":"","sources":["../../../src/node/messaging/binary-message-pipe.ts"],"names":[],"mappings":"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"}
@@ -17,18 +17,9 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  require("reflect-metadata");
19
19
  const dynamic_require_1 = require("../dynamic-require");
20
- const logger_1 = require("vscode-ws-jsonrpc/lib/logger");
21
- const vscode_ws_jsonrpc_1 = require("vscode-ws-jsonrpc");
20
+ const ipc_channel_1 = require("./ipc-channel");
22
21
  const ipc_protocol_1 = require("./ipc-protocol");
23
22
  (0, ipc_protocol_1.checkParentAlive)();
24
23
  const entryPoint = ipc_protocol_1.IPCEntryPoint.getScriptFromEnv();
25
- const reader = new vscode_ws_jsonrpc_1.IPCMessageReader(process);
26
- const writer = new vscode_ws_jsonrpc_1.IPCMessageWriter(process);
27
- const logger = new logger_1.ConsoleLogger();
28
- const connection = (0, vscode_ws_jsonrpc_1.createMessageConnection)(reader, writer, logger);
29
- connection.trace(vscode_ws_jsonrpc_1.Trace.Off, {
30
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
- log: (message, data) => console.log(message, data)
32
- });
33
- (0, dynamic_require_1.dynamicRequire)(entryPoint).default(connection);
24
+ (0, dynamic_require_1.dynamicRequire)(entryPoint).default(new ipc_channel_1.IPCChannel());
34
25
  //# sourceMappingURL=ipc-bootstrap.js.map