@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
@@ -19,10 +19,7 @@ import { enableJSDOM } from '../browser/test/jsdom';
19
19
  let disableJSDOM = enableJSDOM();
20
20
 
21
21
  import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
22
- import { ApplicationProps } from '@theia/application-package/lib/application-props';
23
- FrontendApplicationConfigProvider.set({
24
- ...ApplicationProps.DEFAULT.frontend.config
25
- });
22
+ FrontendApplicationConfigProvider.set({});
26
23
 
27
24
  import { expect } from 'chai';
28
25
  import {
@@ -20,7 +20,7 @@ import { Event, Emitter } from '../common/event';
20
20
  import { DefaultFrontendApplicationContribution } from './frontend-application';
21
21
  import { StatusBar, StatusBarAlignment } from './status-bar/status-bar';
22
22
  import { WebSocketConnectionProvider } from './messaging/ws-connection-provider';
23
- import { Disposable, DisposableCollection } from '../common';
23
+ import { Disposable, DisposableCollection, nls } from '../common';
24
24
 
25
25
  /**
26
26
  * Service for listening on backend connection changes.
@@ -205,8 +205,8 @@ export class ApplicationConnectionStatusContribution extends DefaultFrontendAppl
205
205
  protected handleOffline(): void {
206
206
  this.statusBar.setElement(this.statusbarId, {
207
207
  alignment: StatusBarAlignment.LEFT,
208
- text: 'Offline',
209
- tooltip: 'Cannot connect to backend.',
208
+ text: nls.localize('theia/core/offline', 'Offline'),
209
+ tooltip: nls.localize('theia/localize/offlineTooltip', 'Cannot connect to backend.'),
210
210
  priority: 5000
211
211
  });
212
212
  this.toDisposeOnOnline.push(Disposable.create(() => this.statusBar.removeElement(this.statusbarId)));
@@ -79,11 +79,8 @@ export abstract class ContextMenuRenderer {
79
79
  }
80
80
  }
81
81
 
82
- render(options: RenderContextMenuOptions): ContextMenuAccess;
83
- /** @deprecated since 0.7.2 pass `RenderContextMenuOptions` instead */
84
- render(menuPath: MenuPath, anchor: Anchor, onHide?: () => void): ContextMenuAccess;
85
- render(menuPathOrOptions: MenuPath | RenderContextMenuOptions, anchor?: Anchor, onHide?: () => void): ContextMenuAccess {
86
- const resolvedOptions = RenderContextMenuOptions.resolve(menuPathOrOptions, anchor, onHide);
82
+ render(options: RenderContextMenuOptions): ContextMenuAccess {
83
+ const resolvedOptions = this.resolve(options);
87
84
  const access = this.doRender(resolvedOptions);
88
85
  this.setCurrent(access);
89
86
  return access;
@@ -91,6 +88,17 @@ export abstract class ContextMenuRenderer {
91
88
 
92
89
  protected abstract doRender(options: RenderContextMenuOptions): ContextMenuAccess;
93
90
 
91
+ protected resolve(options: RenderContextMenuOptions): RenderContextMenuOptions {
92
+ const args: any[] = options.args ? options.args.slice() : [];
93
+ if (options.includeAnchorArg !== false) {
94
+ args.push(options.anchor);
95
+ }
96
+ return {
97
+ ...options,
98
+ args
99
+ };
100
+ }
101
+
94
102
  }
95
103
 
96
104
  export interface RenderContextMenuOptions {
@@ -106,27 +114,3 @@ export interface RenderContextMenuOptions {
106
114
  includeAnchorArg?: boolean;
107
115
  onHide?: () => void;
108
116
  }
109
- export namespace RenderContextMenuOptions {
110
- export function resolve(menuPathOrOptions: MenuPath | RenderContextMenuOptions, anchor?: Anchor, onHide?: () => void): RenderContextMenuOptions {
111
- let menuPath: MenuPath;
112
- let args: any[];
113
- if (Array.isArray(menuPathOrOptions)) {
114
- menuPath = menuPathOrOptions;
115
- args = [anchor!];
116
- } else {
117
- menuPath = menuPathOrOptions.menuPath;
118
- anchor = menuPathOrOptions.anchor;
119
- onHide = menuPathOrOptions.onHide;
120
- args = menuPathOrOptions.args ? menuPathOrOptions.args.slice() : [];
121
- if (menuPathOrOptions.includeAnchorArg !== false) {
122
- args.push(anchor);
123
- }
124
- }
125
- return {
126
- menuPath,
127
- anchor: anchor!,
128
- onHide,
129
- args
130
- };
131
- }
132
- }
@@ -198,6 +198,11 @@ export const corePreferenceSchema: PreferenceSchema = {
198
198
  'Controls the feedback area size in pixels of the dragging area in between views/editors. Set it to a larger value if needed.'
199
199
  )
200
200
  },
201
+ 'workbench.tab.maximize': {
202
+ type: 'boolean',
203
+ default: false,
204
+ description: nls.localize('theia/core/tabMaximize', 'Controls whether to maximize tabs on double click.')
205
+ }
201
206
  }
202
207
  };
203
208
 
@@ -220,6 +225,7 @@ export interface CoreConfiguration {
220
225
  'workbench.hover.delay': number;
221
226
  'workbench.sash.hoverDelay': number;
222
227
  'workbench.sash.size': number;
228
+ 'workbench.tab.maximize': boolean;
223
229
  }
224
230
 
225
231
  export const CorePreferenceContribution = Symbol('CorePreferenceContribution');
@@ -16,14 +16,18 @@
16
16
 
17
17
  export namespace DecorationStyle {
18
18
 
19
- export function createStyleSheet(styleId: string, container: HTMLElement = document.getElementsByTagName('head')[0]): CSSStyleSheet {
19
+ export function createStyleElement(styleId: string, container: HTMLElement = document.head): HTMLStyleElement {
20
20
  const style = document.createElement('style');
21
21
  style.id = styleId;
22
22
  style.type = 'text/css';
23
23
  style.media = 'screen';
24
24
  style.appendChild(document.createTextNode('')); // trick for webkit
25
25
  container.appendChild(style);
26
- return <CSSStyleSheet>style.sheet;
26
+ return style;
27
+ }
28
+
29
+ export function createStyleSheet(styleId: string, container?: HTMLElement): CSSStyleSheet {
30
+ return <CSSStyleSheet>createStyleElement(styleId, container).sheet;
27
31
  }
28
32
 
29
33
  function getRuleIndex(selector: string, styleSheet: CSSStyleSheet): number {
@@ -25,7 +25,6 @@ import {
25
25
  PreferenceService, PreferenceServiceImpl, PreferenceValidationService
26
26
  } from './preferences';
27
27
  import { InjectablePreferenceProxy, PreferenceProxyFactory, PreferenceProxySchema } from './preferences/injectable-preference-proxy';
28
- import { ValidatedPreferenceProxy } from './preferences/validated-preference-proxy';
29
28
 
30
29
  export function bindMessageService(bind: interfaces.Bind): interfaces.BindingWhenOnSyntax<MessageService> {
31
30
  bind(MessageClient).toSelf().inSingletonScope();
@@ -47,12 +46,11 @@ export function bindPreferenceService(bind: interfaces.Bind): void {
47
46
  bindPreferenceSchemaProvider(bind);
48
47
  bind(PreferenceValidationService).toSelf().inSingletonScope();
49
48
  bind(InjectablePreferenceProxy).toSelf();
50
- bind(ValidatedPreferenceProxy).toSelf();
51
49
  bind(PreferenceProxyFactory).toFactory(({ container }) => (schema: MaybePromise<PreferenceSchema>, options: PreferenceProxyOptions = {}) => {
52
50
  const child = container.createChild();
53
51
  child.bind(PreferenceProxyOptions).toConstantValue(options ?? {});
54
52
  child.bind(PreferenceProxySchema).toConstantValue(schema);
55
- const handler = options.validated ? child.get(ValidatedPreferenceProxy) : child.get(InjectablePreferenceProxy);
53
+ const handler = child.get(InjectablePreferenceProxy);
56
54
  return new Proxy(Object.create(null), handler); // eslint-disable-line no-null/no-null
57
55
  });
58
56
  }
@@ -16,6 +16,8 @@
16
16
 
17
17
  import { FrontendApplicationConfig, deepmerge } from '@theia/application-package/lib/application-props';
18
18
 
19
+ export const DEFAULT_BACKGROUND_COLOR_STORAGE_KEY = 'theme.background';
20
+
19
21
  export class FrontendApplicationConfigProvider {
20
22
 
21
23
  private static KEY = Symbol('FrontendApplicationConfigProvider');
@@ -126,11 +126,11 @@ import { UserWorkingDirectoryProvider } from './user-working-directory-provider'
126
126
  import { TheiaDockPanel } from './shell/theia-dock-panel';
127
127
  import { bindStatusBar } from './status-bar';
128
128
  import { MarkdownRenderer, MarkdownRendererFactory, MarkdownRendererImpl } from './markdown-rendering/markdown-renderer';
129
+ import { StylingParticipant, StylingService } from './styling-service';
130
+ import { bindCommonStylingParticipants } from './common-styling-participants';
129
131
 
130
132
  export { bindResourceProvider, bindMessageService, bindPreferenceService };
131
133
 
132
- ColorApplicationContribution.initBackground();
133
-
134
134
  export const frontendApplicationModule = new ContainerModule((bind, _unbind, _isBound, _rebind) => {
135
135
  bind(NoneIconTheme).toSelf().inSingletonScope();
136
136
  bind(LabelProviderContribution).toService(NoneIconTheme);
@@ -178,7 +178,8 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
178
178
  const iconThemeService = container.get(IconThemeService);
179
179
  const selectionService = container.get(SelectionService);
180
180
  const commandService = container.get<CommandService>(CommandService);
181
- return new TabBarRenderer(contextMenuRenderer, tabBarDecoratorService, iconThemeService, selectionService, commandService);
181
+ const corePreferences = container.get<CorePreferences>(CorePreferences);
182
+ return new TabBarRenderer(contextMenuRenderer, tabBarDecoratorService, iconThemeService, selectionService, commandService, corePreferences);
182
183
  });
183
184
  bind(TheiaDockPanel.Factory).toFactory(({ container }) => options => {
184
185
  const corePreferences = container.get<CorePreferences>(CorePreferences);
@@ -263,6 +264,8 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
263
264
  bind(serviceIdentifier).toService(CommonFrontendContribution)
264
265
  );
265
266
 
267
+ bindCommonStylingParticipants(bind);
268
+
266
269
  bind(QuickCommandFrontendContribution).toSelf().inSingletonScope();
267
270
  [CommandContribution, KeybindingContribution, MenuContribution].forEach(serviceIdentifier =>
268
271
  bind(serviceIdentifier).toService(QuickCommandFrontendContribution)
@@ -338,7 +341,7 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
338
341
  return connection.createProxy<EnvVariablesServer>(envVariablesPath);
339
342
  }).inSingletonScope();
340
343
 
341
- bind(ThemeService).toDynamicValue(() => ThemeService.get());
344
+ bind(ThemeService).toSelf().inSingletonScope();
342
345
 
343
346
  bindCorePreferences(bind);
344
347
 
@@ -417,4 +420,8 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
417
420
 
418
421
  bind(SaveResourceService).toSelf().inSingletonScope();
419
422
  bind(UserWorkingDirectoryProvider).toSelf().inSingletonScope();
423
+
424
+ bind(StylingService).toSelf().inSingletonScope();
425
+ bindContributionProvider(bind, StylingParticipant);
426
+ bind(FrontendApplicationContribution).toService(StylingService);
420
427
  });
@@ -17,9 +17,11 @@
17
17
  import { ContainerModule } from 'inversify';
18
18
  import { AsyncLocalizationProvider, localizationPath } from '../../common/i18n/localization';
19
19
  import { WebSocketConnectionProvider } from '../messaging/ws-connection-provider';
20
+ import { LanguageQuickPickService } from './language-quick-pick-service';
20
21
 
21
22
  export default new ContainerModule(bind => {
22
23
  bind(AsyncLocalizationProvider).toDynamicValue(
23
24
  ctx => ctx.container.get(WebSocketConnectionProvider).createProxy(localizationPath)
24
25
  ).inSingletonScope();
26
+ bind(LanguageQuickPickService).toSelf().inSingletonScope();
25
27
  });
@@ -0,0 +1,128 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2022 TypeFox and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { inject, injectable } from 'inversify';
18
+ import { nls } from '../../common/nls';
19
+ import { AsyncLocalizationProvider, LanguageInfo } from '../../common/i18n/localization';
20
+ import { QuickInputService, QuickPickItem, QuickPickSeparator } from '../quick-input';
21
+ import { WindowService } from '../window/window-service';
22
+
23
+ export interface LanguageQuickPickItem extends QuickPickItem {
24
+ languageId: string
25
+ execute?(): Promise<void>
26
+ }
27
+
28
+ @injectable()
29
+ export class LanguageQuickPickService {
30
+
31
+ @inject(QuickInputService) protected readonly quickInputService: QuickInputService;
32
+ @inject(AsyncLocalizationProvider) protected readonly localizationProvider: AsyncLocalizationProvider;
33
+ @inject(WindowService) protected readonly windowService: WindowService;
34
+
35
+ async pickDisplayLanguage(): Promise<string | undefined> {
36
+ const quickInput = this.quickInputService.createQuickPick<LanguageQuickPickItem>();
37
+ const installedItems = await this.getInstalledLanguages();
38
+ const quickInputItems: (LanguageQuickPickItem | QuickPickSeparator)[] = [
39
+ {
40
+ type: 'separator',
41
+ label: nls.localize('theia/core/installedLanguages', 'Installed languages')
42
+ },
43
+ ...installedItems
44
+ ];
45
+ quickInput.items = quickInputItems;
46
+ quickInput.busy = true;
47
+ const selected = installedItems.find(item => nls.isSelectedLocale(item.languageId));
48
+ if (selected) {
49
+ quickInput.activeItems = [selected];
50
+ }
51
+ quickInput.placeholder = nls.localizeByDefault('Configure Display Language');
52
+ quickInput.show();
53
+
54
+ this.getAvailableLanguages().then(availableItems => {
55
+ if (availableItems.length > 0) {
56
+ quickInputItems.push({
57
+ type: 'separator',
58
+ label: nls.localize('theia/core/availableLanguages', 'Available languages')
59
+ });
60
+ const installed = new Set(installedItems.map(e => e.languageId));
61
+ for (const available of availableItems) {
62
+ // Exclude already installed languages
63
+ if (!installed.has(available.languageId)) {
64
+ quickInputItems.push(available);
65
+ }
66
+ }
67
+ quickInput.items = quickInputItems;
68
+ }
69
+ }).finally(() => {
70
+ quickInput.busy = false;
71
+ });
72
+
73
+ return new Promise(resolve => {
74
+ quickInput.onDidAccept(async () => {
75
+ const selectedItem = quickInput.selectedItems[0];
76
+ if (selectedItem) {
77
+ // Some language quick pick items want to install additional languages
78
+ // We have to await that before returning the selected locale
79
+ await selectedItem.execute?.();
80
+ resolve(selectedItem.languageId);
81
+ } else {
82
+ resolve(undefined);
83
+ }
84
+ });
85
+ quickInput.onDidHide(() => {
86
+ resolve(undefined);
87
+ });
88
+ });
89
+ }
90
+
91
+ protected async getInstalledLanguages(): Promise<LanguageQuickPickItem[]> {
92
+ const languageInfos = await this.localizationProvider.getAvailableLanguages();
93
+ const items: LanguageQuickPickItem[] = [];
94
+ const en: LanguageInfo = {
95
+ languageId: 'en',
96
+ languageName: 'English',
97
+ localizedLanguageName: 'English'
98
+ };
99
+ languageInfos.push(en);
100
+ for (const language of languageInfos.filter(e => !!e.languageId)) {
101
+ items.push(this.createLanguageQuickPickItem(language));
102
+ }
103
+ return items;
104
+ }
105
+
106
+ protected async getAvailableLanguages(): Promise<LanguageQuickPickItem[]> {
107
+ return [];
108
+ }
109
+
110
+ protected createLanguageQuickPickItem(language: LanguageInfo): LanguageQuickPickItem {
111
+ let label: string;
112
+ let description: string | undefined;
113
+ const languageName = language.localizedLanguageName || language.languageName;
114
+ const id = language.languageId;
115
+ const idLabel = id + (nls.isSelectedLocale(id) ? ` (${nls.localizeByDefault('Current')})` : '');
116
+ if (languageName) {
117
+ label = languageName;
118
+ description = idLabel;
119
+ } else {
120
+ label = idLabel;
121
+ }
122
+ return {
123
+ label,
124
+ description,
125
+ languageId: id
126
+ };
127
+ }
128
+ }
@@ -42,3 +42,4 @@ export * from './view-container';
42
42
  export * from './breadcrumbs';
43
43
  export * from './tooltip-service';
44
44
  export * from './decoration-style';
45
+ export * from './styling-service';
@@ -14,9 +14,12 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { enableJSDOM } from '../browser/test/jsdom';
17
+ import { enableJSDOM } from './test/jsdom';
18
18
  let disableJSDOM = enableJSDOM();
19
19
 
20
+ import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
21
+ FrontendApplicationConfigProvider.set({});
22
+
20
23
  import { Container, injectable, ContainerModule } from 'inversify';
21
24
  import { bindContributionProvider } from '../common/contribution-provider';
22
25
  import { KeyboardLayoutProvider, NativeKeyboardLayout, KeyboardLayoutChangeNotifier } from '../common/keyboard/keyboard-layout-provider';
@@ -36,10 +39,8 @@ import * as chai from 'chai';
36
39
  import * as sinon from 'sinon';
37
40
  import { Emitter, Event } from '../common/event';
38
41
  import { bindPreferenceService } from './frontend-application-bindings';
39
- import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
40
- import { ApplicationProps } from '@theia/application-package/lib/';
41
- import { bindStatusBar } from './status-bar';
42
42
  import { MarkdownRenderer, MarkdownRendererFactory, MarkdownRendererImpl } from './markdown-rendering/markdown-renderer';
43
+ import { StatusBar } from './status-bar';
43
44
 
44
45
  disableJSDOM();
45
46
 
@@ -51,7 +52,11 @@ let keybindingRegistry: KeybindingRegistry;
51
52
  let commandRegistry: CommandRegistry;
52
53
  let testContainer: Container;
53
54
 
55
+ let stub: sinon.SinonStub;
56
+
54
57
  before(async () => {
58
+ disableJSDOM = enableJSDOM();
59
+
55
60
  testContainer = new Container();
56
61
  const module = new ContainerModule((bind, unbind, isBound, rebind) => {
57
62
 
@@ -84,7 +89,7 @@ before(async () => {
84
89
  }
85
90
  });
86
91
 
87
- bindStatusBar(bind);
92
+ bind(StatusBar).toConstantValue({} as StatusBar);
88
93
  bind(MarkdownRendererImpl).toSelf().inSingletonScope();
89
94
  bind(MarkdownRenderer).toService(MarkdownRendererImpl);
90
95
  bind(MarkdownRendererFactory).toFactory(({ container }) => container.get(MarkdownRenderer));
@@ -103,31 +108,21 @@ before(async () => {
103
108
 
104
109
  });
105
110
 
106
- describe('keybindings', () => {
107
-
108
- let stub: sinon.SinonStub;
109
-
110
- before(() => {
111
- disableJSDOM = enableJSDOM();
112
- FrontendApplicationConfigProvider.set({
113
- ...ApplicationProps.DEFAULT.frontend.config,
114
- 'applicationName': 'test'
115
- });
116
- });
111
+ after(() => {
112
+ disableJSDOM();
113
+ });
117
114
 
118
- after(() => {
119
- disableJSDOM();
120
- });
115
+ beforeEach(async () => {
116
+ stub = sinon.stub(os, 'isOSX').value(false);
117
+ keybindingRegistry = testContainer.get<KeybindingRegistry>(KeybindingRegistry);
118
+ await keybindingRegistry.onStart();
119
+ });
121
120
 
122
- beforeEach(async () => {
123
- stub = sinon.stub(os, 'isOSX').value(false);
124
- keybindingRegistry = testContainer.get<KeybindingRegistry>(KeybindingRegistry);
125
- await keybindingRegistry.onStart();
126
- });
121
+ afterEach(() => {
122
+ stub.restore();
123
+ });
127
124
 
128
- afterEach(() => {
129
- stub.restore();
130
- });
125
+ describe('keybindings', () => {
131
126
 
132
127
  it('should register the default keybindings', () => {
133
128
  const keybinding = keybindingRegistry.getKeybindingsForCommand(TEST_COMMAND.id);
@@ -27,6 +27,7 @@ import { StatusBarAlignment, StatusBar } from './status-bar/status-bar';
27
27
  import { ContextKeyService } from './context-key-service';
28
28
  import { CorePreferences } from './core-preferences';
29
29
  import * as common from '../common/keybinding';
30
+ import { nls } from '../common/nls';
30
31
 
31
32
  export enum KeybindingScope {
32
33
  DEFAULT,
@@ -559,7 +560,7 @@ export class KeybindingRegistry {
559
560
  event.stopPropagation();
560
561
 
561
562
  this.statusBar.setElement('keybinding-status', {
562
- text: `(${this.acceleratorForSequence(this.keySequence, '+')}) was pressed, waiting for more keys`,
563
+ text: nls.localize('theia/core/keybindingStatus', '{0} was pressed, waiting for more keys', `(${this.acceleratorForSequence(this.keySequence, '+')})`),
563
564
  alignment: StatusBarAlignment.LEFT,
564
565
  priority: 2
565
566
  });
@@ -34,19 +34,6 @@ const DEFAULT_FOLDER_ICON = `${codicon('folder')} default-folder-icon`;
34
34
  */
35
35
  const DEFAULT_FILE_ICON = `${codicon('file')} default-file-icon`;
36
36
 
37
- /**
38
- * Internal folder icon class for the default (File Icons) theme.
39
- *
40
- * @deprecated Use `LabelProvider.folderIcon` to get a folder icon class for the current icon theme.
41
- */
42
- export const FOLDER_ICON = DEFAULT_FOLDER_ICON;
43
- /**
44
- * Internal file icon class for the default (File Icons) theme.
45
- *
46
- * @deprecated Use `LabelProvider.fileIcon` to get a file icon class for the current icon theme.
47
- */
48
- export const FILE_ICON = DEFAULT_FILE_ICON;
49
-
50
37
  export const LabelProviderContribution = Symbol('LabelProviderContribution');
51
38
  /**
52
39
  * A {@link LabelProviderContribution} determines how specific elements/nodes are displayed in the workbench.
@@ -20,6 +20,7 @@ import { ILogger, Logger, LoggerFactory, setRootLogger, LoggerName, rootLoggerNa
20
20
  import { LoggerWatcher } from '../common/logger-watcher';
21
21
  import { WebSocketConnectionProvider } from './messaging';
22
22
  import { FrontendApplicationContribution } from './frontend-application';
23
+ import { EncodingError } from '../common/message-rpc/rpc-message-encoder';
23
24
 
24
25
  export const loggerFrontendModule = new ContainerModule(bind => {
25
26
  bind(FrontendApplicationContribution).toDynamicValue(ctx => ({
@@ -39,7 +40,13 @@ export const loggerFrontendModule = new ContainerModule(bind => {
39
40
  if (property === 'log') {
40
41
  return (name, logLevel, message, params) => {
41
42
  ConsoleLogger.log(name, logLevel, message, params);
42
- return target.log(name, logLevel, message, params);
43
+ return target.log(name, logLevel, message, params).catch(err => {
44
+ if (err instanceof EncodingError) {
45
+ // In case of an EncodingError no RPC call is sent to the backend `ILoggerServer`. Nevertheless, we want to continue normally.
46
+ return;
47
+ }
48
+ throw err;
49
+ });
43
50
  };
44
51
  }
45
52
  return target[property];
@@ -15,11 +15,11 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable, interfaces, decorate, unmanaged } from 'inversify';
18
- import { JsonRpcProxyFactory, JsonRpcProxy, Emitter, Event } from '../../common';
19
- import { WebSocketChannel } from '../../common/messaging/web-socket-channel';
18
+ import { JsonRpcProxyFactory, JsonRpcProxy, Emitter, Event, Channel } from '../../common';
20
19
  import { Endpoint } from '../endpoint';
21
20
  import { AbstractConnectionProvider } from '../../common/messaging/abstract-connection-provider';
22
21
  import { io, Socket } from 'socket.io-client';
22
+ import { IWebSocket, WebSocketChannel } from '../../common/messaging/web-socket-channel';
23
23
 
24
24
  decorate(injectable(), JsonRpcProxyFactory);
25
25
  decorate(unmanaged(), JsonRpcProxyFactory, 0);
@@ -53,26 +53,42 @@ export class WebSocketConnectionProvider extends AbstractConnectionProvider<WebS
53
53
  constructor() {
54
54
  super();
55
55
  const url = this.createWebSocketUrl(WebSocketChannel.wsPath);
56
- const socket = this.createWebSocket(url);
57
- socket.on('connect', () => {
58
- this.fireSocketDidOpen();
59
- });
60
- socket.on('disconnect', reason => {
61
- for (const channel of [...this.channels.values()]) {
62
- channel.close(undefined, reason);
56
+ this.socket = this.createWebSocket(url);
57
+ this.socket.on('connect', () => {
58
+ this.initializeMultiplexer();
59
+ if (this.reconnectChannelOpeners.length > 0) {
60
+ this.reconnectChannelOpeners.forEach(opener => opener());
61
+ this.reconnectChannelOpeners = [];
63
62
  }
64
- this.fireSocketDidClose();
65
- });
66
- socket.on('message', data => {
67
- this.handleIncomingRawMessage(data);
63
+ this.socket.on('disconnect', () => this.fireSocketDidClose());
64
+ this.socket.on('message', () => this.onIncomingMessageActivityEmitter.fire(undefined));
65
+ this.fireSocketDidOpen();
68
66
  });
69
- socket.connect();
70
- this.socket = socket;
67
+ this.socket.connect();
71
68
  }
72
69
 
73
- override openChannel(path: string, handler: (channel: WebSocketChannel) => void, options?: WebSocketOptions): void {
70
+ protected createMainChannel(): Channel {
71
+ return new WebSocketChannel(this.toIWebSocket(this.socket));
72
+ }
73
+
74
+ protected toIWebSocket(socket: Socket): IWebSocket {
75
+ return {
76
+ close: () => {
77
+ socket.removeAllListeners('disconnect');
78
+ socket.removeAllListeners('error');
79
+ socket.removeAllListeners('message');
80
+ },
81
+ isConnected: () => socket.connected,
82
+ onClose: cb => socket.on('disconnect', reason => cb(reason)),
83
+ onError: cb => socket.on('error', reason => cb(reason)),
84
+ onMessage: cb => socket.on('message', data => cb(data)),
85
+ send: message => socket.emit('message', message)
86
+ };
87
+ }
88
+
89
+ override async openChannel(path: string, handler: (channel: Channel) => void, options?: WebSocketOptions): Promise<void> {
74
90
  if (this.socket.connected) {
75
- super.openChannel(path, handler, options);
91
+ return super.openChannel(path, handler, options);
76
92
  } else {
77
93
  const openChannel = () => {
78
94
  this.socket.off('connect', openChannel);
@@ -82,14 +98,6 @@ export class WebSocketConnectionProvider extends AbstractConnectionProvider<WebS
82
98
  }
83
99
  }
84
100
 
85
- protected createChannel(id: number): WebSocketChannel {
86
- return new WebSocketChannel(id, content => {
87
- if (this.socket.connected) {
88
- this.socket.send(content);
89
- }
90
- });
91
- }
92
-
93
101
  /**
94
102
  * @param path The handler to reach in the backend.
95
103
  */
@@ -143,3 +151,4 @@ export class WebSocketConnectionProvider extends AbstractConnectionProvider<WebS
143
151
  this.onSocketDidCloseEmitter.fire(undefined);
144
152
  }
145
153
  }
154
+
@@ -20,21 +20,16 @@ import { ContributionProvider, bindContributionProvider, Emitter, Event, Disposa
20
20
  import { PreferenceScope } from './preference-scope';
21
21
  import { PreferenceProvider, PreferenceProviderDataChange } from './preference-provider';
22
22
  import {
23
- PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty, JsonType
23
+ PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty
24
24
  } from '../../common/preferences/preference-schema';
25
25
  import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
26
26
  import { FrontendApplicationConfig } from '@theia/application-package/lib/application-props';
27
27
  import { bindPreferenceConfigurations, PreferenceConfigurations } from './preference-configurations';
28
- export { PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty, JsonType };
28
+ export { PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty };
29
29
  import { Mutable } from '../../common/types';
30
- import { OverridePreferenceName, PreferenceLanguageOverrideService } from './preference-language-override-service';
30
+ import { PreferenceLanguageOverrideService } from './preference-language-override-service';
31
31
  import { JSONValue } from '@phosphor/coreutils';
32
32
 
33
- /**
34
- * @deprecated since 1.13.0 import from @theia/core/lib/browser/preferences/preference-language-override-service.
35
- */
36
- export { OVERRIDE_PROPERTY_PATTERN } from './preference-language-override-service';
37
-
38
33
  /* eslint-disable guard-for-in, @typescript-eslint/no-explicit-any */
39
34
 
40
35
  export const PreferenceContribution = Symbol('PreferenceContribution');
@@ -400,24 +395,4 @@ export class PreferenceSchemaProvider extends PreferenceProvider {
400
395
  }
401
396
  }
402
397
 
403
- /**
404
- * @deprecated since 1.13.0 use `PreferenceLanguageOverrideService.overridePreferenceName`
405
- */
406
- overridePreferenceName(override: OverridePreferenceName): string {
407
- return this.preferenceOverrideService.overridePreferenceName(override);
408
- }
409
-
410
- /**
411
- * @deprecated since 1.13.0 use `PreferenceLanguageOverrideService.testOverrideValue`
412
- */
413
- testOverrideValue(name: string, value: any): value is PreferenceSchemaProperties {
414
- return this.preferenceOverrideService.testOverrideValue(name, value);
415
- }
416
-
417
- /**
418
- * @deprecated since 1.13.0 use `PreferenceLanguageOverrideService.overriddenPreferenceName`
419
- */
420
- overriddenPreferenceName(name: string): OverridePreferenceName | undefined {
421
- return this.preferenceOverrideService.overriddenPreferenceName(name);
422
- }
423
398
  }