@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
@@ -0,0 +1,61 @@
1
+ import { CancellationTokenSource } from '../cancellation';
2
+ import { DisposableCollection } from '../disposable';
3
+ import { Emitter, Event } from '../event';
4
+ import { Deferred } from '../promise-util';
5
+ import { Channel } from './channel';
6
+ import { RpcMessage, RpcMessageDecoder, RpcMessageEncoder } from './rpc-message-encoder';
7
+ /**
8
+ * Handles request messages received by the {@link RpcServer}.
9
+ */
10
+ export declare type RequestHandler = (method: string, args: any[]) => Promise<any>;
11
+ /**
12
+ * Initialization options for a {@link RpcProtocol}.
13
+ */
14
+ export interface RpcProtocolOptions {
15
+ /**
16
+ * The message encoder that should be used. If `undefined` the default {@link RpcMessageEncoder} will be used.
17
+ */
18
+ encoder?: RpcMessageEncoder;
19
+ /**
20
+ * The message decoder that should be used. If `undefined` the default {@link RpcMessageDecoder} will be used.
21
+ */
22
+ decoder?: RpcMessageDecoder;
23
+ }
24
+ /**
25
+ * Establish a bi-directional RPC protocol on top of a given channel. Bi-directional means to send
26
+ * sends requests and notifications to the remote side as well as receiving requests and notifications from the remote side.
27
+ * Clients can get a promise for a remote request result that will be either resolved or
28
+ * rejected depending on the success of the request. Keeps track of outstanding requests and matches replies to the appropriate request
29
+ * Currently, there is no timeout handling for long running requests implemented.
30
+ */
31
+ export declare class RpcProtocol {
32
+ readonly channel: Channel;
33
+ readonly requestHandler: RequestHandler;
34
+ static readonly CANCELLATION_TOKEN_KEY = "add.cancellation.token";
35
+ protected readonly pendingRequests: Map<number, Deferred<any>>;
36
+ protected nextMessageId: number;
37
+ protected readonly encoder: RpcMessageEncoder;
38
+ protected readonly decoder: RpcMessageDecoder;
39
+ protected readonly onNotificationEmitter: Emitter<{
40
+ method: string;
41
+ args: any[];
42
+ }>;
43
+ protected readonly cancellationTokenSources: Map<number, CancellationTokenSource>;
44
+ get onNotification(): Event<{
45
+ method: string;
46
+ args: any[];
47
+ }>;
48
+ protected toDispose: DisposableCollection;
49
+ constructor(channel: Channel, requestHandler: RequestHandler, options?: RpcProtocolOptions);
50
+ handleMessage(message: RpcMessage): void;
51
+ protected handleReply(id: number, value: any): void;
52
+ protected handleReplyErr(id: number, error: any): void;
53
+ sendRequest<T>(method: string, args: any[]): Promise<T>;
54
+ sendNotification(method: string, args: any[]): void;
55
+ sendCancel(requestId: number): void;
56
+ cancelError(): Error;
57
+ protected handleCancel(id: number): void;
58
+ protected handleRequest(id: number, method: string, args: any[]): Promise<void>;
59
+ protected handleNotify(id: number, method: string, args: any[]): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=rpc-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-protocol.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-protocol.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAqB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAkB,MAAM,uBAAuB,CAAC;AAGzG;;GAEG;AACH,oBAAY,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;aAmBQ,OAAO,EAAE,OAAO;aAAkB,cAAc,EAAE,cAAc;IAlB5F,MAAM,CAAC,QAAQ,CAAC,sBAAsB,4BAA4B;IAElE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAa;IAE3E,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IAEpC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAE9C,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAC;KAAE,CAAC,CAAiB;IACpG,SAAS,CAAC,QAAQ,CAAC,wBAAwB,uCAA8C;IAEzF,IAAI,cAAc,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAC;KAAE,CAAC,CAE5D;IAED,SAAS,CAAC,SAAS,uBAA8B;gBAErB,OAAO,EAAE,OAAO,EAAkB,cAAc,EAAE,cAAc,EAAE,OAAO,GAAE,kBAAuB;IAQ9H,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAyBxC,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAUnD,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IActD,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMnD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMnC,WAAW,IAAI,KAAK;IAMpB,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;cAQxB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cA8BrE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAMvF"}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2021 Red Hat, Inc. 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
+ /* eslint-disable @typescript-eslint/no-explicit-any */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.RpcProtocol = void 0;
20
+ const cancellation_1 = require("../cancellation");
21
+ const disposable_1 = require("../disposable");
22
+ const event_1 = require("../event");
23
+ const promise_util_1 = require("../promise-util");
24
+ const rpc_message_encoder_1 = require("./rpc-message-encoder");
25
+ const uint8_array_message_buffer_1 = require("./uint8-array-message-buffer");
26
+ /**
27
+ * Establish a bi-directional RPC protocol on top of a given channel. Bi-directional means to send
28
+ * sends requests and notifications to the remote side as well as receiving requests and notifications from the remote side.
29
+ * Clients can get a promise for a remote request result that will be either resolved or
30
+ * rejected depending on the success of the request. Keeps track of outstanding requests and matches replies to the appropriate request
31
+ * Currently, there is no timeout handling for long running requests implemented.
32
+ */
33
+ class RpcProtocol {
34
+ constructor(channel, requestHandler, options = {}) {
35
+ var _a, _b;
36
+ this.channel = channel;
37
+ this.requestHandler = requestHandler;
38
+ this.pendingRequests = new Map();
39
+ this.nextMessageId = 0;
40
+ this.onNotificationEmitter = new event_1.Emitter();
41
+ this.cancellationTokenSources = new Map();
42
+ this.toDispose = new disposable_1.DisposableCollection();
43
+ this.encoder = (_a = options.encoder) !== null && _a !== void 0 ? _a : new rpc_message_encoder_1.RpcMessageEncoder();
44
+ this.decoder = (_b = options.decoder) !== null && _b !== void 0 ? _b : new rpc_message_encoder_1.RpcMessageDecoder();
45
+ this.toDispose.push(this.onNotificationEmitter);
46
+ this.toDispose.push(channel.onMessage(readBuffer => this.handleMessage(this.decoder.parse(readBuffer()))));
47
+ channel.onClose(() => this.toDispose.dispose());
48
+ }
49
+ get onNotification() {
50
+ return this.onNotificationEmitter.event;
51
+ }
52
+ handleMessage(message) {
53
+ switch (message.type) {
54
+ case 5 /* Cancel */: {
55
+ this.handleCancel(message.id);
56
+ break;
57
+ }
58
+ case 1 /* Request */: {
59
+ this.handleRequest(message.id, message.method, message.args);
60
+ break;
61
+ }
62
+ case 2 /* Notification */: {
63
+ this.handleNotify(message.id, message.method, message.args);
64
+ break;
65
+ }
66
+ case 3 /* Reply */: {
67
+ this.handleReply(message.id, message.res);
68
+ break;
69
+ }
70
+ case 4 /* ReplyErr */: {
71
+ this.handleReplyErr(message.id, message.err);
72
+ break;
73
+ }
74
+ }
75
+ }
76
+ handleReply(id, value) {
77
+ const replyHandler = this.pendingRequests.get(id);
78
+ if (replyHandler) {
79
+ this.pendingRequests.delete(id);
80
+ replyHandler.resolve(value);
81
+ }
82
+ else {
83
+ throw new Error(`No reply handler for reply with id: ${id}`);
84
+ }
85
+ }
86
+ handleReplyErr(id, error) {
87
+ try {
88
+ const replyHandler = this.pendingRequests.get(id);
89
+ if (replyHandler) {
90
+ this.pendingRequests.delete(id);
91
+ replyHandler.reject(error);
92
+ }
93
+ else {
94
+ throw new Error(`No reply handler for error reply with id: ${id}`);
95
+ }
96
+ }
97
+ catch (err) {
98
+ throw err;
99
+ }
100
+ }
101
+ sendRequest(method, args) {
102
+ const id = this.nextMessageId++;
103
+ const reply = new promise_util_1.Deferred();
104
+ // The last element of the request args might be a cancellation token. As these tokens are not serializable we have to remove it from the
105
+ // args array and the `CANCELLATION_TOKEN_KEY` string instead.
106
+ const cancellationToken = args.length && cancellation_1.CancellationToken.is(args[args.length - 1]) ? args.pop() : undefined;
107
+ if (cancellationToken && cancellationToken.isCancellationRequested) {
108
+ return Promise.reject(this.cancelError());
109
+ }
110
+ if (cancellationToken) {
111
+ args.push(RpcProtocol.CANCELLATION_TOKEN_KEY);
112
+ cancellationToken.onCancellationRequested(() => {
113
+ var _a;
114
+ this.sendCancel(id);
115
+ (_a = this.pendingRequests.get(id)) === null || _a === void 0 ? void 0 : _a.reject(this.cancelError());
116
+ });
117
+ }
118
+ this.pendingRequests.set(id, reply);
119
+ const output = this.channel.getWriteBuffer();
120
+ this.encoder.request(output, id, method, args);
121
+ output.commit();
122
+ return reply.promise;
123
+ }
124
+ sendNotification(method, args) {
125
+ const output = this.channel.getWriteBuffer();
126
+ this.encoder.notification(output, this.nextMessageId++, method, args);
127
+ output.commit();
128
+ }
129
+ sendCancel(requestId) {
130
+ const output = this.channel.getWriteBuffer();
131
+ this.encoder.cancel(output, requestId);
132
+ output.commit();
133
+ }
134
+ cancelError() {
135
+ const error = new Error('"Request has already been canceled by the sender"');
136
+ error.name = 'Cancel';
137
+ return error;
138
+ }
139
+ handleCancel(id) {
140
+ const cancellationTokenSource = this.cancellationTokenSources.get(id);
141
+ if (cancellationTokenSource) {
142
+ this.cancellationTokenSources.delete(id);
143
+ cancellationTokenSource.cancel();
144
+ }
145
+ }
146
+ async handleRequest(id, method, args) {
147
+ const output = this.channel.getWriteBuffer();
148
+ // Check if the last argument of the received args is the key for indicating that a cancellation token should be used
149
+ // If so remove the key from the args and create a new cancellation token.
150
+ const addToken = args.length && args[args.length - 1] === RpcProtocol.CANCELLATION_TOKEN_KEY ? args.pop() : false;
151
+ if (addToken) {
152
+ const tokenSource = new cancellation_1.CancellationTokenSource();
153
+ this.cancellationTokenSources.set(id, tokenSource);
154
+ args.push(tokenSource.token);
155
+ }
156
+ try {
157
+ const result = await this.requestHandler(method, args);
158
+ this.cancellationTokenSources.delete(id);
159
+ this.encoder.replyOK(output, id, result);
160
+ output.commit();
161
+ }
162
+ catch (err) {
163
+ // In case of an error the output buffer might already contains parts of an message.
164
+ // => Dispose the current buffer and retrieve a new, clean one for writing the response error.
165
+ if (output instanceof uint8_array_message_buffer_1.Uint8ArrayWriteBuffer) {
166
+ output.dispose();
167
+ }
168
+ const errorOutput = this.channel.getWriteBuffer();
169
+ this.cancellationTokenSources.delete(id);
170
+ this.encoder.replyErr(errorOutput, id, err);
171
+ errorOutput.commit();
172
+ }
173
+ }
174
+ async handleNotify(id, method, args) {
175
+ if (this.toDispose.disposed) {
176
+ return;
177
+ }
178
+ this.onNotificationEmitter.fire({ method, args });
179
+ }
180
+ }
181
+ exports.RpcProtocol = RpcProtocol;
182
+ RpcProtocol.CANCELLATION_TOKEN_KEY = 'add.cancellation.token';
183
+ //# sourceMappingURL=rpc-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-protocol.js","sourceRoot":"","sources":["../../../src/common/message-rpc/rpc-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { Disposable } from '../disposable';
2
+ import { Event } from '../event';
3
+ import { ReadBuffer, WriteBuffer } from './message-buffer';
4
+ /**
5
+ * The default {@link WriteBuffer} implementation. Uses a {@link Uint8Array} for buffering.
6
+ * The {@link Uint8ArrayWriteBuffer.onCommit} hook can be used to rect to on-commit events.
7
+ * After the {@link Uint8ArrayWriteBuffer.commit} method has been called the buffer is disposed
8
+ * and can no longer be used for writing data. If the writer buffer is no longer needed but the message
9
+ * has not been committed yet it has to be disposed manually.
10
+ */
11
+ export declare class Uint8ArrayWriteBuffer implements WriteBuffer, Disposable {
12
+ private buffer;
13
+ private encoder;
14
+ private msg;
15
+ private isDisposed;
16
+ private offset;
17
+ constructor(buffer?: Uint8Array, writePosition?: number);
18
+ ensureCapacity(value: number): this;
19
+ writeLength(length: number): this;
20
+ writeNumber(value: number): this;
21
+ writeUint8(value: number): this;
22
+ writeUint16(value: number): this;
23
+ writeUint32(value: number): this;
24
+ writeString(value: string): this;
25
+ writeBytes(value: Uint8Array): this;
26
+ private onCommitEmitter;
27
+ get onCommit(): Event<Uint8Array>;
28
+ commit(): void;
29
+ getCurrentContents(): Uint8Array;
30
+ dispose(): void;
31
+ }
32
+ /**
33
+ * The default {@link ReadBuffer} implementation. Uses a {@link Uint8Array} for buffering.
34
+ * Is for single message read. A message can only be read once.
35
+ */
36
+ export declare class Uint8ArrayReadBuffer implements ReadBuffer {
37
+ private readonly buffer;
38
+ private offset;
39
+ private msg;
40
+ private decoder;
41
+ constructor(buffer: Uint8Array, readPosition?: number);
42
+ readUint8(): number;
43
+ readUint16(): number;
44
+ readUint32(): number;
45
+ readLength(): number;
46
+ readNumber(): number;
47
+ readString(): string;
48
+ private decodeString;
49
+ readBytes(): Uint8Array;
50
+ sliceAtReadPosition(): ReadBuffer;
51
+ }
52
+ //# sourceMappingURL=uint8-array-message-buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8-array-message-buffer.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/uint8-array-message-buffer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAW,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,WAAW,EAAE,UAAU;IAOrD,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;gBAEH,MAAM,GAAE,UAAiC,EAAE,aAAa,GAAE,MAAU;IAKxF,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAcnC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAajC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOhC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOhC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOhC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQnC,OAAO,CAAC,eAAe,CAA6B;IACpD,IAAI,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,CAEhC;IAED,MAAM,IAAI,IAAI;IAQd,kBAAkB,IAAI,UAAU;IAIhC,OAAO,IAAI,IAAI;CAOlB;AACD;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,OAAO,CAAqB;gBAEP,MAAM,EAAE,UAAU,EAAE,YAAY,SAAI;IAKjE,SAAS,IAAI,MAAM;IAInB,UAAU,IAAI,MAAM;IAMpB,UAAU,IAAI,MAAM;IAMpB,UAAU,IAAI,MAAM;IAYpB,UAAU,IAAI,MAAM;IAMpB,UAAU,IAAI,MAAM;IAQpB,OAAO,CAAC,YAAY;IAIpB,SAAS,IAAI,UAAU;IAQvB,mBAAmB,IAAI,UAAU;CAIpC"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Uint8ArrayReadBuffer = exports.Uint8ArrayWriteBuffer = void 0;
4
+ const event_1 = require("../event");
5
+ /**
6
+ * The default {@link WriteBuffer} implementation. Uses a {@link Uint8Array} for buffering.
7
+ * The {@link Uint8ArrayWriteBuffer.onCommit} hook can be used to rect to on-commit events.
8
+ * After the {@link Uint8ArrayWriteBuffer.commit} method has been called the buffer is disposed
9
+ * and can no longer be used for writing data. If the writer buffer is no longer needed but the message
10
+ * has not been committed yet it has to be disposed manually.
11
+ */
12
+ class Uint8ArrayWriteBuffer {
13
+ constructor(buffer = new Uint8Array(1024), writePosition = 0) {
14
+ this.buffer = buffer;
15
+ this.encoder = new TextEncoder();
16
+ this.isDisposed = false;
17
+ this.onCommitEmitter = new event_1.Emitter();
18
+ this.offset = buffer.byteOffset + writePosition;
19
+ this.msg = new DataView(buffer.buffer);
20
+ }
21
+ ensureCapacity(value) {
22
+ let newLength = this.buffer.byteLength;
23
+ while (newLength < this.offset + value) {
24
+ newLength *= 2;
25
+ }
26
+ if (newLength !== this.buffer.byteLength) {
27
+ const newBuffer = new Uint8Array(newLength);
28
+ newBuffer.set(this.buffer);
29
+ this.buffer = newBuffer;
30
+ this.msg = new DataView(this.buffer.buffer);
31
+ }
32
+ return this;
33
+ }
34
+ writeLength(length) {
35
+ if (length < 0 || (length % 1) !== 0) {
36
+ throw new Error(`Could not write the given length value. '${length}' is not an integer >= 0`);
37
+ }
38
+ if (length < 127) {
39
+ this.writeUint8(length);
40
+ }
41
+ else {
42
+ this.writeUint8(128 + (length & 127));
43
+ this.writeLength(length >> 7);
44
+ }
45
+ return this;
46
+ }
47
+ writeNumber(value) {
48
+ this.ensureCapacity(8);
49
+ this.msg.setFloat64(this.offset, value);
50
+ this.offset += 8;
51
+ return this;
52
+ }
53
+ writeUint8(value) {
54
+ this.ensureCapacity(1);
55
+ this.buffer[this.offset++] = value;
56
+ return this;
57
+ }
58
+ writeUint16(value) {
59
+ this.ensureCapacity(2);
60
+ this.msg.setUint16(this.offset, value);
61
+ this.offset += 2;
62
+ return this;
63
+ }
64
+ writeUint32(value) {
65
+ this.ensureCapacity(4);
66
+ this.msg.setUint32(this.offset, value);
67
+ this.offset += 4;
68
+ return this;
69
+ }
70
+ writeString(value) {
71
+ this.ensureCapacity(4 * value.length);
72
+ const result = this.encoder.encodeInto(value, this.buffer.subarray(this.offset + 4));
73
+ this.msg.setUint32(this.offset, result.written);
74
+ this.offset += 4 + result.written;
75
+ return this;
76
+ }
77
+ writeBytes(value) {
78
+ this.writeLength(value.byteLength);
79
+ this.ensureCapacity(value.length);
80
+ this.buffer.set(value, this.offset);
81
+ this.offset += value.length;
82
+ return this;
83
+ }
84
+ get onCommit() {
85
+ return this.onCommitEmitter.event;
86
+ }
87
+ commit() {
88
+ if (this.isDisposed) {
89
+ throw new Error("Could not invoke 'commit'. The WriteBuffer is already disposed.");
90
+ }
91
+ this.onCommitEmitter.fire(this.getCurrentContents());
92
+ this.dispose();
93
+ }
94
+ getCurrentContents() {
95
+ return this.buffer.slice(this.buffer.byteOffset, this.offset);
96
+ }
97
+ dispose() {
98
+ if (!this.isDisposed) {
99
+ this.onCommitEmitter.dispose();
100
+ this.isDisposed = true;
101
+ }
102
+ }
103
+ }
104
+ exports.Uint8ArrayWriteBuffer = Uint8ArrayWriteBuffer;
105
+ /**
106
+ * The default {@link ReadBuffer} implementation. Uses a {@link Uint8Array} for buffering.
107
+ * Is for single message read. A message can only be read once.
108
+ */
109
+ class Uint8ArrayReadBuffer {
110
+ constructor(buffer, readPosition = 0) {
111
+ this.buffer = buffer;
112
+ this.offset = 0;
113
+ this.decoder = new TextDecoder();
114
+ this.offset = buffer.byteOffset + readPosition;
115
+ this.msg = new DataView(buffer.buffer);
116
+ }
117
+ readUint8() {
118
+ return this.msg.getUint8(this.offset++);
119
+ }
120
+ readUint16() {
121
+ const result = this.msg.getUint16(this.offset);
122
+ this.offset += 2;
123
+ return result;
124
+ }
125
+ readUint32() {
126
+ const result = this.msg.getUint32(this.offset);
127
+ this.offset += 4;
128
+ return result;
129
+ }
130
+ readLength() {
131
+ let shift = 0;
132
+ let byte = this.readUint8();
133
+ let value = (byte & 127) << shift;
134
+ while (byte > 127) {
135
+ shift += 7;
136
+ byte = this.readUint8();
137
+ value = value + ((byte & 127) << shift);
138
+ }
139
+ return value;
140
+ }
141
+ readNumber() {
142
+ const result = this.msg.getFloat64(this.offset);
143
+ this.offset += 8;
144
+ return result;
145
+ }
146
+ readString() {
147
+ const len = this.readUint32();
148
+ const sliceOffset = this.offset - this.buffer.byteOffset;
149
+ const result = this.decodeString(this.buffer.slice(sliceOffset, sliceOffset + len));
150
+ this.offset += len;
151
+ return result;
152
+ }
153
+ decodeString(buf) {
154
+ return this.decoder.decode(buf);
155
+ }
156
+ readBytes() {
157
+ const length = this.readLength();
158
+ const sliceOffset = this.offset - this.buffer.byteOffset;
159
+ const result = this.buffer.slice(sliceOffset, sliceOffset + length);
160
+ this.offset += length;
161
+ return result;
162
+ }
163
+ sliceAtReadPosition() {
164
+ const sliceOffset = this.offset - this.buffer.byteOffset;
165
+ return new Uint8ArrayReadBuffer(this.buffer, sliceOffset);
166
+ }
167
+ }
168
+ exports.Uint8ArrayReadBuffer = Uint8ArrayReadBuffer;
169
+ //# sourceMappingURL=uint8-array-message-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8-array-message-buffer.js","sourceRoot":"","sources":["../../../src/common/message-rpc/uint8-array-message-buffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=uint8-array-message-buffer.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8-array-message-buffer.spec.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/uint8-array-message-buffer.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // *****************************************************************************
4
+ // Copyright (C) 2021 Red Hat, Inc. and others.
5
+ //
6
+ // This program and the accompanying materials are made available under the
7
+ // terms of the Eclipse Public License v. 2.0 which is available at
8
+ // http://www.eclipse.org/legal/epl-2.0.
9
+ //
10
+ // This Source Code may also be made available under the following Secondary
11
+ // Licenses when the conditions for such availability set forth in the Eclipse
12
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
13
+ // with the GNU Classpath Exception which is available at
14
+ // https://www.gnu.org/software/classpath/license.html.
15
+ //
16
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
17
+ // *****************************************************************************
18
+ const chai_1 = require("chai");
19
+ const uint8_array_message_buffer_1 = require("./uint8-array-message-buffer");
20
+ describe('array message buffer tests', () => {
21
+ it('basic read write test', () => {
22
+ const buffer = new Uint8Array(1024);
23
+ const writer = new uint8_array_message_buffer_1.Uint8ArrayWriteBuffer(buffer);
24
+ writer.writeUint8(8);
25
+ writer.writeUint32(10000);
26
+ writer.writeBytes(new Uint8Array([1, 2, 3, 4]));
27
+ writer.writeString('this is a string');
28
+ writer.writeString('another string');
29
+ writer.commit();
30
+ const written = writer.getCurrentContents();
31
+ const reader = new uint8_array_message_buffer_1.Uint8ArrayReadBuffer(written);
32
+ (0, chai_1.expect)(reader.readUint8()).equal(8);
33
+ (0, chai_1.expect)(reader.readUint32()).equal(10000);
34
+ (0, chai_1.expect)(reader.readBytes()).deep.equal(new Uint8Array([1, 2, 3, 4]));
35
+ (0, chai_1.expect)(reader.readString()).equal('this is a string');
36
+ (0, chai_1.expect)(reader.readString()).equal('another string');
37
+ });
38
+ });
39
+ //# sourceMappingURL=uint8-array-message-buffer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8-array-message-buffer.spec.js","sourceRoot":"","sources":["../../../src/common/message-rpc/uint8-array-message-buffer.spec.ts"],"names":[],"mappings":";;AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,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;AAChF,+BAA8B;AAC9B,6EAA2F;AAE3F,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,kDAAqB,CAAC,MAAM,CAAC,CAAC;QAEjD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,EAAE,CAAC;QAEhB,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAI,iDAAoB,CAAC,OAAO,CAAC,CAAC;QAEjD,IAAA,aAAM,EAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,IAAA,aAAM,EAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAA,aAAM,EAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtD,IAAA,aAAM,EAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,9 +1,8 @@
1
1
  import { interfaces } from 'inversify';
2
- import { Logger } from 'vscode-ws-jsonrpc';
3
2
  import { Emitter, Event } from '../event';
4
3
  import { ConnectionHandler } from './handler';
5
4
  import { JsonRpcProxy, JsonRpcProxyFactory } from './proxy-factory';
6
- import { WebSocketChannel } from './web-socket-channel';
5
+ import { Channel, ChannelMultiplexer } from '../message-rpc/channel';
7
6
  /**
8
7
  * Factor common logic according to `ElectronIpcConnectionProvider` and
9
8
  * `WebSocketConnectionProvider`. This class handles channels in a somewhat
@@ -15,8 +14,6 @@ export declare abstract class AbstractConnectionProvider<AbstractOptions extends
15
14
  * over an electron ipc connection for the given path and proxy factory.
16
15
  */
17
16
  static createProxy<T extends object>(container: interfaces.Container, path: string, factory: JsonRpcProxyFactory<T>): JsonRpcProxy<T>;
18
- protected channelIdSeq: number;
19
- protected readonly channels: Map<number, WebSocketChannel>;
20
17
  protected readonly onIncomingMessageActivityEmitter: Emitter<void>;
21
18
  get onIncomingMessageActivity(): Event<void>;
22
19
  /**
@@ -32,13 +29,17 @@ export declare abstract class AbstractConnectionProvider<AbstractOptions extends
32
29
  * notifications and requests from a remote side.
33
30
  */
34
31
  createProxy<T extends object>(path: string, target?: object): JsonRpcProxy<T>;
32
+ protected channelMultiPlexer?: ChannelMultiplexer;
33
+ protected reconnectChannelOpeners: Array<() => Promise<void>>;
34
+ protected initializeMultiplexer(): void;
35
35
  /**
36
36
  * Install a connection handler for the given path.
37
37
  */
38
38
  listen(handler: ConnectionHandler, options?: AbstractOptions): void;
39
- openChannel(path: string, handler: (channel: WebSocketChannel) => void, options?: AbstractOptions): void;
40
- protected abstract createChannel(id: number): WebSocketChannel;
41
- protected handleIncomingRawMessage(data: string): void;
42
- protected createLogger(): Logger;
39
+ openChannel(path: string, handler: (channel: Channel) => void, options?: AbstractOptions): Promise<void>;
40
+ /**
41
+ * Create the main connection that is used for multiplexing all service channels.
42
+ */
43
+ protected abstract createMainChannel(): Channel;
43
44
  }
44
45
  //# sourceMappingURL=abstract-connection-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/common/messaging/abstract-connection-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAA4C,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;GAIG;AACH,8BACsB,0BAA0B,CAAC,eAAe,SAAS,MAAM;IAE3E;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAYrI,SAAS,CAAC,YAAY,SAAK;IAC3B,SAAS,CAAC,QAAQ,CAAC,QAAQ,gCAAuC;IAElE,SAAS,CAAC,QAAQ,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAiB;IACnF,IAAI,yBAAyB,IAAI,KAAK,CAAC,IAAI,CAAC,CAE3C;IAED;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAC7F;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IAU7E;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAQnE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAkBxG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB;IAE9D,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWtD,SAAS,CAAC,YAAY,IAAI,MAAM;CAInC"}
1
+ {"version":3,"file":"abstract-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/common/messaging/abstract-connection-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAErE;;;;GAIG;AACH,8BACsB,0BAA0B,CAAC,eAAe,SAAS,MAAM;IAE3E;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAYrI,SAAS,CAAC,QAAQ,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAiB;IACnF,IAAI,yBAAyB,IAAI,KAAK,CAAC,IAAI,CAAC,CAE3C;IAED;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAC7F;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IAU7E,SAAS,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAIlD,SAAS,CAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM;IAEnE,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAMvC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAM7D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9G;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO;CAElD"}