@theia/core 1.22.1 → 1.23.0-next.26

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 (603) hide show
  1. package/README.md +5 -5
  2. package/lib/browser/about-dialog.js +5 -5
  3. package/lib/browser/about-dialog.js.map +1 -1
  4. package/lib/browser/authentication-service.d.ts +52 -22
  5. package/lib/browser/authentication-service.d.ts.map +1 -1
  6. package/lib/browser/authentication-service.js +49 -44
  7. package/lib/browser/authentication-service.js.map +1 -1
  8. package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +5 -5
  9. package/lib/browser/breadcrumbs/breadcrumb-popup-container.js.map +1 -1
  10. package/lib/browser/breadcrumbs/breadcrumb-renderer.js +1 -1
  11. package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -1
  12. package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
  13. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +6 -6
  14. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
  15. package/lib/browser/breadcrumbs/breadcrumbs-service.js +5 -5
  16. package/lib/browser/breadcrumbs/breadcrumbs-service.js.map +1 -1
  17. package/lib/browser/breadcrumbs/index.js +1 -1
  18. package/lib/browser/browser-clipboard-service.js +3 -3
  19. package/lib/browser/browser-clipboard-service.js.map +1 -1
  20. package/lib/browser/color-application-contribution.js +4 -4
  21. package/lib/browser/color-application-contribution.js.map +1 -1
  22. package/lib/browser/color-registry.js +2 -2
  23. package/lib/browser/color-registry.js.map +1 -1
  24. package/lib/browser/command-open-handler.js +2 -2
  25. package/lib/browser/command-open-handler.js.map +1 -1
  26. package/lib/browser/common-frontend-contribution.js +24 -24
  27. package/lib/browser/common-frontend-contribution.js.map +1 -1
  28. package/lib/browser/connection-status-service.js +15 -13
  29. package/lib/browser/connection-status-service.js.map +1 -1
  30. package/lib/browser/connection-status-service.spec.js +18 -18
  31. package/lib/browser/connection-status-service.spec.js.map +1 -1
  32. package/lib/browser/context-key-service.js +1 -1
  33. package/lib/browser/context-key-service.js.map +1 -1
  34. package/lib/browser/context-menu-renderer.js +1 -1
  35. package/lib/browser/context-menu-renderer.js.map +1 -1
  36. package/lib/browser/core-preferences.js +1 -1
  37. package/lib/browser/core-preferences.js.map +1 -1
  38. package/lib/browser/credentials-service.js +2 -2
  39. package/lib/browser/credentials-service.js.map +1 -1
  40. package/lib/browser/decorations-service.js +1 -1
  41. package/lib/browser/decorations-service.js.map +1 -1
  42. package/lib/browser/dialogs/react-dialog.js +2 -2
  43. package/lib/browser/dialogs/react-dialog.js.map +1 -1
  44. package/lib/browser/dialogs.js +11 -11
  45. package/lib/browser/dialogs.js.map +1 -1
  46. package/lib/browser/diff-uris.js +3 -3
  47. package/lib/browser/diff-uris.js.map +1 -1
  48. package/lib/browser/encoding-registry.js +3 -3
  49. package/lib/browser/encoding-registry.js.map +1 -1
  50. package/lib/browser/external-uri-service.js +1 -1
  51. package/lib/browser/external-uri-service.js.map +1 -1
  52. package/lib/browser/frontend-application-bindings.js +2 -2
  53. package/lib/browser/frontend-application-bindings.js.map +1 -1
  54. package/lib/browser/frontend-application-config-provider.js +1 -1
  55. package/lib/browser/frontend-application-config-provider.js.map +1 -1
  56. package/lib/browser/frontend-application-config-provider.spec.js +7 -7
  57. package/lib/browser/frontend-application-config-provider.spec.js.map +1 -1
  58. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  59. package/lib/browser/frontend-application-module.js +23 -20
  60. package/lib/browser/frontend-application-module.js.map +1 -1
  61. package/lib/browser/frontend-application-state.js +2 -2
  62. package/lib/browser/frontend-application-state.js.map +1 -1
  63. package/lib/browser/frontend-application.d.ts +4 -2
  64. package/lib/browser/frontend-application.d.ts.map +1 -1
  65. package/lib/browser/frontend-application.js +30 -36
  66. package/lib/browser/frontend-application.js.map +1 -1
  67. package/lib/browser/http-open-handler.js +3 -3
  68. package/lib/browser/http-open-handler.js.map +1 -1
  69. package/lib/browser/icon-theme-contribution.js +5 -5
  70. package/lib/browser/icon-theme-contribution.js.map +1 -1
  71. package/lib/browser/icon-theme-service.js +4 -4
  72. package/lib/browser/icon-theme-service.js.map +1 -1
  73. package/lib/browser/index.js +1 -1
  74. package/lib/browser/json-schema-store.js +5 -5
  75. package/lib/browser/json-schema-store.js.map +1 -1
  76. package/lib/browser/keybinding.js +11 -11
  77. package/lib/browser/keybinding.js.map +1 -1
  78. package/lib/browser/keybinding.spec.js +9 -9
  79. package/lib/browser/keybinding.spec.js.map +1 -1
  80. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +4 -4
  81. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
  82. package/lib/browser/keyboard/browser-keyboard-layout-provider.js +4 -4
  83. package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
  84. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +3 -3
  85. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
  86. package/lib/browser/keyboard/index.js +1 -1
  87. package/lib/browser/keyboard/keyboard-layout-service.js +5 -5
  88. package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
  89. package/lib/browser/keyboard/keyboard-layout-service.spec.js +1 -1
  90. package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
  91. package/lib/browser/keyboard/keys.js +1 -1
  92. package/lib/browser/keyboard/keys.spec.js +2 -2
  93. package/lib/browser/keyboard/keys.spec.js.map +1 -1
  94. package/lib/browser/label-parser.js +1 -1
  95. package/lib/browser/label-parser.js.map +1 -1
  96. package/lib/browser/label-parser.spec.js +38 -38
  97. package/lib/browser/label-parser.spec.js.map +1 -1
  98. package/lib/browser/label-provider.js +8 -8
  99. package/lib/browser/label-provider.js.map +1 -1
  100. package/lib/browser/label-provider.spec.js +5 -5
  101. package/lib/browser/label-provider.spec.js.map +1 -1
  102. package/lib/browser/language-service.js +1 -1
  103. package/lib/browser/language-service.js.map +1 -1
  104. package/lib/browser/logger-frontend-module.js +1 -1
  105. package/lib/browser/logger-frontend-module.js.map +1 -1
  106. package/lib/browser/menu/browser-context-menu-renderer.js +3 -3
  107. package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
  108. package/lib/browser/menu/browser-menu-plugin.js +13 -13
  109. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  110. package/lib/browser/menu/context-menu-context.js +1 -1
  111. package/lib/browser/menu/context-menu-context.js.map +1 -1
  112. package/lib/browser/messaging/index.js +1 -1
  113. package/lib/browser/messaging/ws-connection-provider.js +7 -7
  114. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  115. package/lib/browser/mime-service.js +1 -1
  116. package/lib/browser/mime-service.js.map +1 -1
  117. package/lib/browser/navigatable.js +1 -1
  118. package/lib/browser/opener-service.js +3 -2
  119. package/lib/browser/opener-service.js.map +1 -1
  120. package/lib/browser/performance/frontend-stopwatch.d.ts +21 -0
  121. package/lib/browser/performance/frontend-stopwatch.d.ts.map +1 -0
  122. package/lib/browser/performance/frontend-stopwatch.js +71 -0
  123. package/lib/browser/performance/frontend-stopwatch.js.map +1 -0
  124. package/lib/browser/performance/index.d.ts +18 -0
  125. package/lib/browser/performance/index.d.ts.map +1 -0
  126. package/lib/browser/performance/index.js +30 -0
  127. package/lib/browser/performance/index.js.map +1 -0
  128. package/lib/browser/performance/measurement-frontend-bindings.d.ts +20 -0
  129. package/lib/browser/performance/measurement-frontend-bindings.d.ts.map +1 -0
  130. package/lib/browser/performance/measurement-frontend-bindings.js +33 -0
  131. package/lib/browser/performance/measurement-frontend-bindings.js.map +1 -0
  132. package/lib/browser/preferences/index.js +1 -1
  133. package/lib/browser/preferences/preference-configurations.js +4 -4
  134. package/lib/browser/preferences/preference-configurations.js.map +1 -1
  135. package/lib/browser/preferences/preference-contribution.js +8 -8
  136. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  137. package/lib/browser/preferences/preference-language-override-service.d.ts +11 -0
  138. package/lib/browser/preferences/preference-language-override-service.d.ts.map +1 -1
  139. package/lib/browser/preferences/preference-language-override-service.js +21 -7
  140. package/lib/browser/preferences/preference-language-override-service.js.map +1 -1
  141. package/lib/browser/preferences/preference-provider.js +2 -2
  142. package/lib/browser/preferences/preference-provider.js.map +1 -1
  143. package/lib/browser/preferences/preference-proxy.spec.js +6 -6
  144. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  145. package/lib/browser/preferences/preference-schema-provider.spec.js +3 -3
  146. package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
  147. package/lib/browser/preferences/preference-service.js +8 -8
  148. package/lib/browser/preferences/preference-service.js.map +1 -1
  149. package/lib/browser/preferences/preference-service.spec.js +5 -5
  150. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  151. package/lib/browser/preferences/test/index.js +1 -1
  152. package/lib/browser/preferences/test/mock-preference-service.js +1 -1
  153. package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
  154. package/lib/browser/progress-bar.js +4 -4
  155. package/lib/browser/progress-bar.js.map +1 -1
  156. package/lib/browser/progress-client.js +3 -3
  157. package/lib/browser/progress-client.js.map +1 -1
  158. package/lib/browser/progress-location-service.js +1 -1
  159. package/lib/browser/progress-location-service.js.map +1 -1
  160. package/lib/browser/progress-location-service.spec.js +1 -1
  161. package/lib/browser/progress-location-service.spec.js.map +1 -1
  162. package/lib/browser/progress-status-bar-item.js +2 -2
  163. package/lib/browser/progress-status-bar-item.js.map +1 -1
  164. package/lib/browser/quick-input/index.js +1 -1
  165. package/lib/browser/quick-input/quick-command-frontend-contribution.js +5 -5
  166. package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
  167. package/lib/browser/quick-input/quick-command-service.js +9 -9
  168. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  169. package/lib/browser/quick-input/quick-help-service.js +3 -3
  170. package/lib/browser/quick-input/quick-help-service.js.map +1 -1
  171. package/lib/browser/quick-input/quick-input-frontend-contribution.js +3 -3
  172. package/lib/browser/quick-input/quick-input-frontend-contribution.js.map +1 -1
  173. package/lib/browser/quick-input/quick-input-service.js +1 -1
  174. package/lib/browser/quick-input/quick-input-service.spec.js +15 -15
  175. package/lib/browser/quick-input/quick-input-service.spec.js.map +1 -1
  176. package/lib/browser/quick-input/quick-pick-service-impl.d.ts.map +1 -1
  177. package/lib/browser/quick-input/quick-pick-service-impl.js +3 -3
  178. package/lib/browser/quick-input/quick-pick-service-impl.js.map +1 -1
  179. package/lib/browser/quick-input/quick-view-service.js +4 -4
  180. package/lib/browser/quick-input/quick-view-service.js.map +1 -1
  181. package/lib/browser/resource-context-key.js +4 -4
  182. package/lib/browser/resource-context-key.js.map +1 -1
  183. package/lib/browser/saveable.d.ts +17 -2
  184. package/lib/browser/saveable.d.ts.map +1 -1
  185. package/lib/browser/saveable.js +71 -24
  186. package/lib/browser/saveable.js.map +1 -1
  187. package/lib/browser/shell/application-shell-mouse-tracker.js +5 -5
  188. package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
  189. package/lib/browser/shell/application-shell.d.ts +16 -1
  190. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  191. package/lib/browser/shell/application-shell.js +76 -64
  192. package/lib/browser/shell/application-shell.js.map +1 -1
  193. package/lib/browser/shell/current-widget-command-adapter.js.map +1 -1
  194. package/lib/browser/shell/index.js +1 -1
  195. package/lib/browser/shell/shell-layout-restorer.js +7 -7
  196. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  197. package/lib/browser/shell/side-panel-handler.d.ts +1 -0
  198. package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
  199. package/lib/browser/shell/side-panel-handler.js +26 -14
  200. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  201. package/lib/browser/shell/side-panel-toolbar.js.map +1 -1
  202. package/lib/browser/shell/sidebar-bottom-menu-widget.js +1 -1
  203. package/lib/browser/shell/sidebar-bottom-menu-widget.js.map +1 -1
  204. package/lib/browser/shell/sidebar-menu-widget.js +2 -2
  205. package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
  206. package/lib/browser/shell/sidebar-top-menu-widget.js +1 -1
  207. package/lib/browser/shell/sidebar-top-menu-widget.js.map +1 -1
  208. package/lib/browser/shell/split-panels.js +1 -1
  209. package/lib/browser/shell/split-panels.js.map +1 -1
  210. package/lib/browser/shell/tab-bar-decorator.js +3 -3
  211. package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
  212. package/lib/browser/shell/tab-bar-toolbar.d.ts.map +1 -1
  213. package/lib/browser/shell/tab-bar-toolbar.js +12 -12
  214. package/lib/browser/shell/tab-bar-toolbar.js.map +1 -1
  215. package/lib/browser/shell/tab-bar-toolbar.spec.js +14 -14
  216. package/lib/browser/shell/tab-bar-toolbar.spec.js.map +1 -1
  217. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  218. package/lib/browser/shell/tab-bars.js +1 -0
  219. package/lib/browser/shell/tab-bars.js.map +1 -1
  220. package/lib/browser/shell/tab-bars.spec.js +9 -9
  221. package/lib/browser/shell/tab-bars.spec.js.map +1 -1
  222. package/lib/browser/shell/theia-dock-panel.d.ts +3 -2
  223. package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
  224. package/lib/browser/shell/theia-dock-panel.js +4 -4
  225. package/lib/browser/shell/theia-dock-panel.js.map +1 -1
  226. package/lib/browser/shell/view-contribution.js +5 -5
  227. package/lib/browser/shell/view-contribution.js.map +1 -1
  228. package/lib/browser/source-tree/index.js +1 -1
  229. package/lib/browser/source-tree/source-tree-widget.d.ts.map +1 -1
  230. package/lib/browser/source-tree/source-tree-widget.js +7 -8
  231. package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
  232. package/lib/browser/source-tree/source-tree.d.ts.map +1 -1
  233. package/lib/browser/source-tree/source-tree.js +2 -1
  234. package/lib/browser/source-tree/source-tree.js.map +1 -1
  235. package/lib/browser/source-tree/tree-source.js +2 -2
  236. package/lib/browser/source-tree/tree-source.js.map +1 -1
  237. package/lib/browser/status-bar/index.js +1 -1
  238. package/lib/browser/status-bar/status-bar.js +6 -6
  239. package/lib/browser/status-bar/status-bar.js.map +1 -1
  240. package/lib/browser/storage-service.js +5 -5
  241. package/lib/browser/storage-service.js.map +1 -1
  242. package/lib/browser/storage-service.spec.js +4 -4
  243. package/lib/browser/storage-service.spec.js.map +1 -1
  244. package/lib/browser/test/mock-opener-service.js +1 -1
  245. package/lib/browser/test/mock-opener-service.js.map +1 -1
  246. package/lib/browser/test/mock-storage-service.js +1 -1
  247. package/lib/browser/test/mock-storage-service.js.map +1 -1
  248. package/lib/browser/theming.js +1 -1
  249. package/lib/browser/tooltip-service.js +6 -5
  250. package/lib/browser/tooltip-service.js.map +1 -1
  251. package/lib/browser/tree/fuzzy-search.js +1 -1
  252. package/lib/browser/tree/fuzzy-search.js.map +1 -1
  253. package/lib/browser/tree/fuzzy-search.spec.js +2 -2
  254. package/lib/browser/tree/fuzzy-search.spec.js.map +1 -1
  255. package/lib/browser/tree/index.d.ts +1 -0
  256. package/lib/browser/tree/index.d.ts.map +1 -1
  257. package/lib/browser/tree/index.js +2 -1
  258. package/lib/browser/tree/index.js.map +1 -1
  259. package/lib/browser/tree/test/tree-test-container.js +1 -1
  260. package/lib/browser/tree/test/tree-test-container.js.map +1 -1
  261. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.d.ts +24 -0
  262. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.d.ts.map +1 -0
  263. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js +68 -0
  264. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js.map +1 -0
  265. package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts +39 -0
  266. package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts.map +1 -0
  267. package/lib/browser/tree/tree-compression/compressed-tree-model.js +96 -0
  268. package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -0
  269. package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts +55 -0
  270. package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -0
  271. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +194 -0
  272. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -0
  273. package/lib/browser/tree/tree-compression/index.d.ts +20 -0
  274. package/lib/browser/tree/tree-compression/index.d.ts.map +1 -0
  275. package/lib/browser/tree/tree-compression/index.js +32 -0
  276. package/lib/browser/tree/tree-compression/index.js.map +1 -0
  277. package/lib/browser/tree/tree-compression/tree-compression-service.d.ts +73 -0
  278. package/lib/browser/tree/tree-compression/tree-compression-service.d.ts.map +1 -0
  279. package/lib/browser/tree/tree-compression/tree-compression-service.js +100 -0
  280. package/lib/browser/tree/tree-compression/tree-compression-service.js.map +1 -0
  281. package/lib/browser/tree/tree-consistency.spec.js +2 -2
  282. package/lib/browser/tree/tree-consistency.spec.js.map +1 -1
  283. package/lib/browser/tree/tree-container.d.ts +46 -1
  284. package/lib/browser/tree/tree-container.d.ts.map +1 -1
  285. package/lib/browser/tree/tree-container.js +67 -20
  286. package/lib/browser/tree/tree-container.js.map +1 -1
  287. package/lib/browser/tree/tree-decorator.js +2 -2
  288. package/lib/browser/tree/tree-decorator.js.map +1 -1
  289. package/lib/browser/tree/tree-decorator.spec.js +10 -10
  290. package/lib/browser/tree/tree-decorator.spec.js.map +1 -1
  291. package/lib/browser/tree/tree-expansion.d.ts +1 -1
  292. package/lib/browser/tree/tree-expansion.d.ts.map +1 -1
  293. package/lib/browser/tree/tree-expansion.js +3 -3
  294. package/lib/browser/tree/tree-expansion.js.map +1 -1
  295. package/lib/browser/tree/tree-expansion.spec.js +15 -15
  296. package/lib/browser/tree/tree-expansion.spec.js.map +1 -1
  297. package/lib/browser/tree/tree-iterator.spec.js +22 -22
  298. package/lib/browser/tree/tree-iterator.spec.js.map +1 -1
  299. package/lib/browser/tree/tree-label-provider.js +1 -1
  300. package/lib/browser/tree/tree-label-provider.js.map +1 -1
  301. package/lib/browser/tree/tree-model.d.ts +2 -1
  302. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  303. package/lib/browser/tree/tree-model.js +20 -19
  304. package/lib/browser/tree/tree-model.js.map +1 -1
  305. package/lib/browser/tree/tree-navigation.js +1 -1
  306. package/lib/browser/tree/tree-navigation.js.map +1 -1
  307. package/lib/browser/tree/tree-search.js +5 -5
  308. package/lib/browser/tree/tree-search.js.map +1 -1
  309. package/lib/browser/tree/tree-selection-impl.js +3 -3
  310. package/lib/browser/tree/tree-selection-impl.js.map +1 -1
  311. package/lib/browser/tree/tree-selection-state.spec.js +6 -6
  312. package/lib/browser/tree/tree-selection-state.spec.js.map +1 -1
  313. package/lib/browser/tree/tree-view-welcome-widget.d.ts.map +1 -1
  314. package/lib/browser/tree/tree-view-welcome-widget.js +6 -6
  315. package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
  316. package/lib/browser/tree/tree-widget.d.ts +6 -1
  317. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  318. package/lib/browser/tree/tree-widget.js +33 -20
  319. package/lib/browser/tree/tree-widget.js.map +1 -1
  320. package/lib/browser/tree/tree.d.ts +1 -1
  321. package/lib/browser/tree/tree.d.ts.map +1 -1
  322. package/lib/browser/tree/tree.js +3 -3
  323. package/lib/browser/tree/tree.js.map +1 -1
  324. package/lib/browser/tree/tree.spec.js +11 -11
  325. package/lib/browser/tree/tree.spec.js.map +1 -1
  326. package/lib/browser/view-container.d.ts +1 -1
  327. package/lib/browser/view-container.d.ts.map +1 -1
  328. package/lib/browser/view-container.js +60 -56
  329. package/lib/browser/view-container.js.map +1 -1
  330. package/lib/browser/widget-manager.js +4 -4
  331. package/lib/browser/widget-manager.js.map +1 -1
  332. package/lib/browser/widget-manager.spec.js +3 -3
  333. package/lib/browser/widget-manager.spec.js.map +1 -1
  334. package/lib/browser/widget-open-handler.d.ts.map +1 -1
  335. package/lib/browser/widget-open-handler.js +5 -6
  336. package/lib/browser/widget-open-handler.js.map +1 -1
  337. package/lib/browser/widgets/alert-message.js +4 -4
  338. package/lib/browser/widgets/alert-message.js.map +1 -1
  339. package/lib/browser/widgets/index.js +1 -1
  340. package/lib/browser/widgets/react-renderer.js +3 -2
  341. package/lib/browser/widgets/react-renderer.js.map +1 -1
  342. package/lib/browser/widgets/react-widget.js +2 -2
  343. package/lib/browser/widgets/react-widget.js.map +1 -1
  344. package/lib/browser/widgets/widget.js +4 -4
  345. package/lib/browser/widgets/widget.js.map +1 -1
  346. package/lib/browser/window/default-window-service.js +5 -5
  347. package/lib/browser/window/default-window-service.js.map +1 -1
  348. package/lib/browser/window/test/mock-window-service.js +1 -1
  349. package/lib/browser/window/test/mock-window-service.js.map +1 -1
  350. package/lib/browser/window-contribution.js +2 -2
  351. package/lib/browser/window-contribution.js.map +1 -1
  352. package/lib/common/command.js +3 -2
  353. package/lib/common/command.js.map +1 -1
  354. package/lib/common/contribution-filter/contribution-filter-registry.d.ts +1 -1
  355. package/lib/common/contribution-filter/contribution-filter-registry.d.ts.map +1 -1
  356. package/lib/common/contribution-filter/contribution-filter-registry.js +3 -2
  357. package/lib/common/contribution-filter/contribution-filter-registry.js.map +1 -1
  358. package/lib/common/contribution-filter/index.js +1 -1
  359. package/lib/common/encoding-service.js +2 -2
  360. package/lib/common/encoding-service.js.map +1 -1
  361. package/lib/common/env-variables/index.js +1 -1
  362. package/lib/common/event.js.map +1 -1
  363. package/lib/common/event.spec.js +2 -2
  364. package/lib/common/event.spec.js.map +1 -1
  365. package/lib/common/index.d.ts +1 -0
  366. package/lib/common/index.d.ts.map +1 -1
  367. package/lib/common/index.js +2 -1
  368. package/lib/common/index.js.map +1 -1
  369. package/lib/common/keybinding.js.map +1 -1
  370. package/lib/common/logger-protocol.js +1 -1
  371. package/lib/common/logger-protocol.js.map +1 -1
  372. package/lib/common/logger-watcher.js +1 -1
  373. package/lib/common/logger-watcher.js.map +1 -1
  374. package/lib/common/logger.js +5 -5
  375. package/lib/common/logger.js.map +1 -1
  376. package/lib/common/logger.spec.js +6 -6
  377. package/lib/common/logger.spec.js.map +1 -1
  378. package/lib/common/menu.js +4 -3
  379. package/lib/common/menu.js.map +1 -1
  380. package/lib/common/message-service-protocol.js +1 -1
  381. package/lib/common/message-service-protocol.js.map +1 -1
  382. package/lib/common/message-service.js +2 -2
  383. package/lib/common/message-service.js.map +1 -1
  384. package/lib/common/messaging/abstract-connection-provider.js +2 -2
  385. package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
  386. package/lib/common/messaging/index.js +1 -1
  387. package/lib/common/messaging/proxy-factory.js.map +1 -1
  388. package/lib/common/messaging/proxy-factory.spec.js +2 -2
  389. package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
  390. package/lib/common/path.spec.js +16 -16
  391. package/lib/common/path.spec.js.map +1 -1
  392. package/lib/common/performance/index.d.ts +19 -0
  393. package/lib/common/performance/index.d.ts.map +1 -0
  394. package/lib/common/performance/index.js +31 -0
  395. package/lib/common/performance/index.js.map +1 -0
  396. package/lib/common/performance/measurement-protocol.d.ts +65 -0
  397. package/lib/common/performance/measurement-protocol.d.ts.map +1 -0
  398. package/lib/common/performance/measurement-protocol.js +79 -0
  399. package/lib/common/performance/measurement-protocol.js.map +1 -0
  400. package/lib/common/performance/measurement.d.ts +91 -0
  401. package/lib/common/performance/measurement.d.ts.map +1 -0
  402. package/lib/common/performance/measurement.js +18 -0
  403. package/lib/common/performance/measurement.js.map +1 -0
  404. package/lib/common/performance/stopwatch.d.ts +68 -0
  405. package/lib/common/performance/stopwatch.d.ts.map +1 -0
  406. package/lib/common/performance/stopwatch.js +134 -0
  407. package/lib/common/performance/stopwatch.js.map +1 -0
  408. package/lib/common/progress-service.js +3 -3
  409. package/lib/common/progress-service.js.map +1 -1
  410. package/lib/common/promise-util.d.ts +11 -0
  411. package/lib/common/promise-util.d.ts.map +1 -1
  412. package/lib/common/promise-util.js +18 -2
  413. package/lib/common/promise-util.js.map +1 -1
  414. package/lib/common/promise-util.spec.js +2 -2
  415. package/lib/common/promise-util.spec.js.map +1 -1
  416. package/lib/common/resource.js +5 -4
  417. package/lib/common/resource.js.map +1 -1
  418. package/lib/common/selection-service.js +1 -1
  419. package/lib/common/selection-service.js.map +1 -1
  420. package/lib/common/stream.js.map +1 -1
  421. package/lib/common/ternary-search-tree.js +6 -6
  422. package/lib/common/ternary-search-tree.js.map +1 -1
  423. package/lib/common/test/expect.js +1 -1
  424. package/lib/common/test/expect.js.map +1 -1
  425. package/lib/common/test/mock-logger.js +1 -1
  426. package/lib/common/test/mock-logger.js.map +1 -1
  427. package/lib/common/test/mock-resource-provider.js +1 -1
  428. package/lib/common/test/mock-resource-provider.js.map +1 -1
  429. package/lib/common/types.d.ts +23 -1
  430. package/lib/common/types.d.ts.map +1 -1
  431. package/lib/common/types.js +26 -2
  432. package/lib/common/types.js.map +1 -1
  433. package/lib/common/uri.spec.js.map +1 -1
  434. package/lib/electron-browser/electron-clipboard-service.js +1 -1
  435. package/lib/electron-browser/electron-clipboard-service.js.map +1 -1
  436. package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js +2 -2
  437. package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js.map +1 -1
  438. package/lib/electron-browser/menu/electron-context-menu-renderer.js +8 -8
  439. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  440. package/lib/electron-browser/menu/electron-main-menu-factory.js +5 -5
  441. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  442. package/lib/electron-browser/menu/electron-menu-contribution.js +7 -7
  443. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  444. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +1 -1
  445. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
  446. package/lib/electron-browser/messaging/electron-ws-connection-provider.js +1 -1
  447. package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +1 -1
  448. package/lib/electron-browser/window/electron-window-module.js +1 -1
  449. package/lib/electron-browser/window/electron-window-module.js.map +1 -1
  450. package/lib/electron-browser/window/electron-window-preferences.js +1 -1
  451. package/lib/electron-browser/window/electron-window-preferences.js.map +1 -1
  452. package/lib/electron-browser/window/electron-window-service.js +4 -4
  453. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  454. package/lib/electron-main/electron-main-application-module.js +4 -4
  455. package/lib/electron-main/electron-main-application-module.js.map +1 -1
  456. package/lib/electron-main/electron-main-application.d.ts +0 -4
  457. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  458. package/lib/electron-main/electron-main-application.js +9 -29
  459. package/lib/electron-main/electron-main-application.js.map +1 -1
  460. package/lib/electron-main/electron-main-window-service-impl.js +2 -2
  461. package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
  462. package/lib/electron-main/electron-native-keymap.js +1 -1
  463. package/lib/electron-main/electron-native-keymap.js.map +1 -1
  464. package/lib/electron-main/electron-security-token-service.js +2 -2
  465. package/lib/electron-main/electron-security-token-service.js.map +1 -1
  466. package/lib/electron-main/messaging/electron-messaging-contribution.js +8 -8
  467. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  468. package/lib/electron-node/hosting/electron-ws-origin-validator.js +1 -1
  469. package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
  470. package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js +1 -1
  471. package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js.map +1 -1
  472. package/lib/electron-node/token/electron-token-backend-contribution.js +2 -2
  473. package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
  474. package/lib/electron-node/token/electron-token-messaging-contribution.js +2 -2
  475. package/lib/electron-node/token/electron-token-messaging-contribution.js.map +1 -1
  476. package/lib/electron-node/token/electron-token-validator.js +2 -2
  477. package/lib/electron-node/token/electron-token-validator.js.map +1 -1
  478. package/lib/node/application-server.js +2 -2
  479. package/lib/node/application-server.js.map +1 -1
  480. package/lib/node/backend-application-config-provider.js +1 -1
  481. package/lib/node/backend-application-config-provider.js.map +1 -1
  482. package/lib/node/backend-application-config-provider.spec.js +1 -1
  483. package/lib/node/backend-application-config-provider.spec.js.map +1 -1
  484. package/lib/node/backend-application-module.d.ts.map +1 -1
  485. package/lib/node/backend-application-module.js +7 -4
  486. package/lib/node/backend-application-module.js.map +1 -1
  487. package/lib/node/backend-application.d.ts +2 -2
  488. package/lib/node/backend-application.d.ts.map +1 -1
  489. package/lib/node/backend-application.js +17 -35
  490. package/lib/node/backend-application.js.map +1 -1
  491. package/lib/node/cli.js +3 -2
  492. package/lib/node/cli.js.map +1 -1
  493. package/lib/node/console-logger-server.js +4 -4
  494. package/lib/node/console-logger-server.js.map +1 -1
  495. package/lib/node/console-logger-server.spec.js +5 -5
  496. package/lib/node/console-logger-server.spec.js.map +1 -1
  497. package/lib/node/env-variables/env-variables-server.js +3 -3
  498. package/lib/node/env-variables/env-variables-server.js.map +1 -1
  499. package/lib/node/env-variables/index.js +1 -1
  500. package/lib/node/environment-utils.js +1 -1
  501. package/lib/node/environment-utils.js.map +1 -1
  502. package/lib/node/hosting/backend-application-hosts.js +2 -2
  503. package/lib/node/hosting/backend-application-hosts.js.map +1 -1
  504. package/lib/node/hosting/ws-origin-validator.js +2 -2
  505. package/lib/node/hosting/ws-origin-validator.js.map +1 -1
  506. package/lib/node/i18n/i18n-backend-module.js +1 -1
  507. package/lib/node/i18n/i18n-backend-module.js.map +1 -1
  508. package/lib/node/i18n/localization-backend-contribution.js +3 -3
  509. package/lib/node/i18n/localization-backend-contribution.js.map +1 -1
  510. package/lib/node/i18n/localization-contribution.js +4 -4
  511. package/lib/node/i18n/localization-contribution.js.map +1 -1
  512. package/lib/node/i18n/localization-provider.js +1 -1
  513. package/lib/node/i18n/localization-provider.js.map +1 -1
  514. package/lib/node/index.js +1 -1
  515. package/lib/node/keytar-server.js +1 -1
  516. package/lib/node/keytar-server.js.map +1 -1
  517. package/lib/node/logger-backend-module.js +1 -1
  518. package/lib/node/logger-backend-module.js.map +1 -1
  519. package/lib/node/logger-cli-contribution.js +1 -1
  520. package/lib/node/logger-cli-contribution.js.map +1 -1
  521. package/lib/node/logger-cli-contribution.spec.js +13 -13
  522. package/lib/node/logger-cli-contribution.spec.js.map +1 -1
  523. package/lib/node/main.js +1 -1
  524. package/lib/node/main.js.map +1 -1
  525. package/lib/node/messaging/http-websocket-adapter.js +3 -3
  526. package/lib/node/messaging/http-websocket-adapter.js.map +1 -1
  527. package/lib/node/messaging/index.js +1 -1
  528. package/lib/node/messaging/ipc-bootstrap.js +3 -3
  529. package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
  530. package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
  531. package/lib/node/messaging/ipc-connection-provider.js +11 -7
  532. package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
  533. package/lib/node/messaging/messaging-backend-module.js +3 -3
  534. package/lib/node/messaging/messaging-backend-module.js.map +1 -1
  535. package/lib/node/messaging/messaging-contribution.js +14 -14
  536. package/lib/node/messaging/messaging-contribution.js.map +1 -1
  537. package/lib/node/messaging/messaging-listeners.js +3 -3
  538. package/lib/node/messaging/messaging-listeners.js.map +1 -1
  539. package/lib/node/performance/index.d.ts +18 -0
  540. package/lib/node/performance/index.d.ts.map +1 -0
  541. package/lib/node/performance/index.js +30 -0
  542. package/lib/node/performance/index.js.map +1 -0
  543. package/lib/node/performance/measurement-backend-bindings.d.ts +20 -0
  544. package/lib/node/performance/measurement-backend-bindings.d.ts.map +1 -0
  545. package/lib/node/performance/measurement-backend-bindings.js +31 -0
  546. package/lib/node/performance/measurement-backend-bindings.js.map +1 -0
  547. package/lib/node/performance/node-stopwatch.d.ts +21 -0
  548. package/lib/node/performance/node-stopwatch.d.ts.map +1 -0
  549. package/lib/node/performance/node-stopwatch.js +52 -0
  550. package/lib/node/performance/node-stopwatch.js.map +1 -0
  551. package/lib/node/process-utils.js +1 -1
  552. package/lib/node/process-utils.js.map +1 -1
  553. package/lib/node/process-utils.spec.js +1 -1
  554. package/lib/node/process-utils.spec.js.map +1 -1
  555. package/lib/node/ws-request-validators.js +3 -3
  556. package/lib/node/ws-request-validators.js.map +1 -1
  557. package/package.json +3 -3
  558. package/src/browser/authentication-service.ts +103 -59
  559. package/src/browser/frontend-application-module.ts +4 -0
  560. package/src/browser/frontend-application.ts +17 -22
  561. package/src/browser/performance/frontend-stopwatch.ts +62 -0
  562. package/src/browser/performance/index.ts +18 -0
  563. package/src/browser/performance/measurement-frontend-bindings.ts +31 -0
  564. package/src/browser/preferences/preference-language-override-service.ts +17 -3
  565. package/src/browser/saveable.ts +84 -27
  566. package/src/browser/shell/application-shell.ts +42 -28
  567. package/src/browser/shell/side-panel-handler.ts +12 -0
  568. package/src/browser/shell/tab-bars.ts +1 -0
  569. package/src/browser/source-tree/source-tree-widget.tsx +6 -9
  570. package/src/browser/source-tree/source-tree.ts +6 -4
  571. package/src/browser/style/sidepanel.css +4 -0
  572. package/src/browser/style/view-container.css +0 -8
  573. package/src/browser/tree/index.ts +1 -0
  574. package/src/browser/tree/tree-compression/compressed-tree-expansion-service.ts +46 -0
  575. package/src/browser/tree/tree-compression/compressed-tree-model.ts +82 -0
  576. package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +181 -0
  577. package/src/browser/tree/tree-compression/index.ts +20 -0
  578. package/src/browser/tree/tree-compression/tree-compression-service.ts +121 -0
  579. package/src/browser/tree/tree-compression/tree-compression.css +28 -0
  580. package/src/browser/tree/tree-container.ts +107 -29
  581. package/src/browser/tree/tree-expansion.ts +1 -1
  582. package/src/browser/tree/tree-model.ts +13 -11
  583. package/src/browser/tree/tree-widget.tsx +30 -12
  584. package/src/browser/tree/tree.ts +2 -2
  585. package/src/browser/view-container.ts +27 -23
  586. package/src/browser/widget-open-handler.ts +1 -3
  587. package/src/common/event.ts +2 -2
  588. package/src/common/index.ts +1 -0
  589. package/src/common/messaging/proxy-factory.ts +1 -1
  590. package/src/common/performance/index.ts +19 -0
  591. package/src/common/performance/measurement-protocol.ts +104 -0
  592. package/src/common/performance/measurement.ts +104 -0
  593. package/src/common/performance/stopwatch.ts +157 -0
  594. package/src/common/promise-util.ts +16 -0
  595. package/src/common/types.ts +41 -1
  596. package/src/electron-browser/menu/electron-menu-contribution.ts +1 -1
  597. package/src/electron-main/electron-main-application.ts +1 -22
  598. package/src/node/backend-application-module.ts +4 -0
  599. package/src/node/backend-application.ts +10 -33
  600. package/src/node/messaging/ipc-connection-provider.ts +9 -5
  601. package/src/node/performance/index.ts +18 -0
  602. package/src/node/performance/measurement-backend-bindings.ts +35 -0
  603. package/src/node/performance/node-stopwatch.ts +40 -0
@@ -0,0 +1,121 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 SAP SE or an SAP affiliate company and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ import { injectable } from 'inversify';
18
+ import { ArrayUtils } from '../../../common/types';
19
+ import { TreeNode } from '../tree';
20
+ import { ExpandableTreeNode } from '../tree-expansion';
21
+
22
+ export interface CompressionParent extends ExpandableTreeNode {
23
+ children: [CompressionChild];
24
+ }
25
+
26
+ export interface CompressionChild extends ExpandableTreeNode {
27
+ parent: CompressionParent;
28
+ }
29
+
30
+ export type CompressionParticipant = CompressionChild | CompressionParent;
31
+
32
+ export interface CompressionHead extends CompressionParent {
33
+ parent: ExpandableTreeNode;
34
+ }
35
+
36
+ export interface CompressionTail extends CompressionChild { }
37
+
38
+ export const CompressionToggle = Symbol('CompressionToggle');
39
+ export interface CompressionToggle {
40
+ compress: boolean;
41
+ }
42
+
43
+ @injectable()
44
+ export class TreeCompressionService {
45
+ /**
46
+ * @returns `true` if the node has a single child that is a CompositeTreeNode
47
+ * In that case, the child can be shown in the same row as the parent.
48
+ */
49
+ isCompressionParent(node?: unknown): node is CompressionParent {
50
+ return ExpandableTreeNode.is(node) && node.children.length === 1 && ExpandableTreeNode.is(node.children[0]);
51
+ }
52
+
53
+ /**
54
+ * @returns `true` if the node is a CompositeTreeNode and is its parent's sole child
55
+ * In that case, the node can be shown in the same row as its parent.
56
+ */
57
+ isCompressionChild(node?: TreeNode): node is CompressionChild {
58
+ return this.isCompressionParent(node?.parent);
59
+ }
60
+
61
+ /**
62
+ * @returns `true` if the node is a CompositeTreeNode with a sole child, and the same is not true of its parent.
63
+ * In that case, the node will appear as the first member of a compressed row.
64
+ */
65
+ isCompressionHead(node?: unknown): node is CompressionHead {
66
+ return this.isCompressionParent(node) && !this.isCompressionParent(node.parent);
67
+ }
68
+
69
+ /**
70
+ * @returns `true` if the node's parent is a CompositeTreeNode with a sole child, and the same is not true of the node.
71
+ * In that case, the node will appear as the last member of a compressed row.
72
+ */
73
+ isCompressionTail(node?: TreeNode): node is CompressionTail {
74
+ return this.isCompressionChild(node) && !this.isCompressionParent(node);
75
+ }
76
+
77
+ /**
78
+ * @returns `true` if the node is part of a compression row, either a {@link CompressionChild} or {@link CompressionParent}
79
+ */
80
+ isCompressionParticipant(node?: TreeNode): node is CompressionParticipant {
81
+ return this.isCompressionParent(node) || this.isCompressionChild(node);
82
+ }
83
+
84
+ /**
85
+ * @returns a sequence of compressed items for the node if it is a {@link CompressionHead}.
86
+ */
87
+ getCompressedChildren(node?: CompressionHead): ArrayUtils.Tail<CompressionChild>;
88
+ getCompressedChildren(node: unknown): ArrayUtils.Tail<CompressionChild> | undefined {
89
+ if (this.isCompressionHead(node)) {
90
+ const items = [];
91
+ let next: TreeNode = node.children[0];
92
+ while (this.isCompressionChild(next)) {
93
+ items.push(next);
94
+ next = next.children[0];
95
+ }
96
+ return ArrayUtils.asTail(items);
97
+ }
98
+ }
99
+
100
+ /**
101
+ * @returns The {@link CompressionHead} of the node's compression chain, or undefined if the node is not a {@link CompressionParticipant}.
102
+ */
103
+ getCompressionHead(node?: TreeNode): CompressionHead | undefined {
104
+ while (this.isCompressionParticipant(node)) {
105
+ if (this.isCompressionHead(node)) {
106
+ return node;
107
+ }
108
+ node = node.parent;
109
+ }
110
+ }
111
+
112
+ /**
113
+ * @returns The compression chain of which the `node` is a part, or `undefined` if the `node` is not a {@link CompressionParticipant}
114
+ */
115
+ getCompressionChain(node?: TreeNode): ArrayUtils.HeadAndTail<CompressionParticipant> | undefined {
116
+ const head = this.getCompressionHead(node);
117
+ if (head) {
118
+ return ArrayUtils.asHeadAndTail([head as CompressionParticipant].concat(this.getCompressedChildren(head)));
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,28 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2022 Ericsson 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
+ .theia-tree-compressed-selected {
18
+ text-decoration: underline;
19
+ }
20
+
21
+ .theia-tree-compressed-label-separator {
22
+ padding: 0 2px;
23
+ opacity: 0.5;
24
+ }
25
+
26
+ .theia-tree-compressed-label-part:hover {
27
+ text-decoration: underline;
28
+ }
@@ -25,45 +25,123 @@ import { TreeNavigationService } from './tree-navigation';
25
25
  import { TreeDecoratorService, NoopTreeDecoratorService } from './tree-decorator';
26
26
  import { TreeSearch } from './tree-search';
27
27
  import { FuzzySearch } from './fuzzy-search';
28
- import { SearchBox, SearchBoxFactory, SearchBoxProps } from './search-box';
28
+ import { SearchBox, SearchBoxFactory } from './search-box';
29
29
  import { SearchBoxDebounce } from './search-box-debounce';
30
- import { TreeViewWelcomeWidget } from './tree-view-welcome-widget';
31
30
 
32
- export function createTreeContainer(parent: interfaces.Container, props?: Partial<TreeProps>): Container {
31
+ function isTreeServices(candidate?: Partial<TreeProps> | Partial<TreeContainerProps>): candidate is TreeContainerProps {
32
+ if (candidate) {
33
+ const maybeServices = candidate as TreeContainerProps;
34
+ for (const key of Object.keys(maybeServices)) {
35
+ if (key in defaultImplementations) {
36
+ return true;
37
+ }
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+
43
+ export function createTreeContainer(parent: interfaces.Container, props?: Partial<TreeContainerProps>): Container;
44
+ /**
45
+ * @deprecated Please use TreeContainerProps instead of TreeProps
46
+ * @since 1.23.0
47
+ */
48
+ export function createTreeContainer(parent: interfaces.Container, props?: Partial<TreeProps>): Container;
49
+ export function createTreeContainer(parent: interfaces.Container, props?: Partial<TreeProps> | Partial<TreeContainerProps>): Container {
33
50
  const child = new Container({ defaultScope: 'Singleton' });
34
51
  child.parent = parent;
52
+ const overrideServices: Partial<TreeServiceProviders> = isTreeServices(props) ? props : {};
53
+ for (const key of Object.keys(serviceIdentifiers) as (keyof TreeIdentifiers)[]) {
54
+ if (key === 'props') {
55
+ const { service, identifier } = getServiceAndIdentifier(key, overrideServices);
56
+ child.bind(identifier).toConstantValue({
57
+ ...defaultImplementations.props,
58
+ ...service
59
+ });
60
+ } else if (key === 'searchBoxFactory') {
61
+ const { service, identifier } = getServiceAndIdentifier(key, overrideServices);
62
+ child.bind(identifier).toFactory(context => service(context));
63
+ } else {
64
+ const { service, identifier } = getServiceAndIdentifier(key, overrideServices);
65
+ child.bind(service).toSelf().inSingletonScope();
66
+ if (identifier !== service) {
67
+ child.bind(identifier as interfaces.ServiceIdentifier<typeof service>).toService(service);
68
+ }
69
+ }
70
+ }
71
+ return child;
72
+ }
35
73
 
36
- child.bind(TreeImpl).toSelf();
37
- child.bind(Tree).toService(TreeImpl);
38
-
39
- child.bind(TreeSelectionServiceImpl).toSelf();
40
- child.bind(TreeSelectionService).toService(TreeSelectionServiceImpl);
74
+ function getServiceAndIdentifier<Key extends keyof TreeIdentifiers>(
75
+ key: Key, overrides: Partial<TreeContainerProps>
76
+ ): { service: TreeContainerProps[Key], identifier: TreeIdentifiers[Key] } {
77
+ const override = overrides[key] as TreeContainerProps[Key] | undefined;
78
+ const service = override ?? defaultImplementations[key];
79
+ return {
80
+ service,
81
+ identifier: serviceIdentifiers[key]
82
+ };
83
+ }
41
84
 
42
- child.bind(TreeExpansionServiceImpl).toSelf();
43
- child.bind(TreeExpansionService).toService(TreeExpansionServiceImpl);
85
+ export interface SearchBoxFactoryFactory {
86
+ (context: interfaces.Context): SearchBoxFactory;
87
+ }
44
88
 
45
- child.bind(TreeNavigationService).toSelf();
89
+ const defaultSearchBoxFactoryFactory: SearchBoxFactoryFactory = () => options => {
90
+ const debounce = new SearchBoxDebounce(options);
91
+ return new SearchBox(options, debounce);
92
+ };
46
93
 
47
- child.bind(TreeModelImpl).toSelf();
48
- child.bind(TreeModel).toService(TreeModelImpl);
94
+ interface TreeConstants {
95
+ searchBoxFactory: SearchBoxFactory,
96
+ props: TreeProps,
97
+ }
49
98
 
50
- child.bind(TreeWidget).toSelf();
51
- child.bind(TreeProps).toConstantValue({
52
- ...defaultTreeProps,
53
- ...props
54
- });
99
+ interface TreeServices {
100
+ tree: Tree,
101
+ selectionService: TreeSelectionService,
102
+ expansionService: TreeExpansionService,
103
+ navigationService: TreeNavigationService,
104
+ model: TreeModel,
105
+ widget: TreeWidget,
106
+ search: TreeSearch,
107
+ fuzzy: FuzzySearch,
108
+ decoratorService: TreeDecoratorService,
109
+ }
55
110
 
56
- child.bind(TreeViewWelcomeWidget).toSelf();
111
+ interface TreeTypes extends TreeServices, TreeConstants { }
57
112
 
58
- child.bind(TreeSearch).toSelf().inSingletonScope();
59
- child.bind(FuzzySearch).toSelf().inSingletonScope();
60
- child.bind(SearchBoxFactory).toFactory(context =>
61
- (options: SearchBoxProps) => {
62
- const debounce = new SearchBoxDebounce(options);
63
- return new SearchBox(options, debounce);
64
- }
65
- );
113
+ export type TreeIdentifiers = { [K in keyof TreeTypes]: interfaces.ServiceIdentifier<TreeTypes[K]>; };
114
+ type TreeServiceProviders = { [K in keyof TreeServices]: interfaces.Newable<TreeServices[K]> };
66
115
 
67
- child.bind(TreeDecoratorService).to(NoopTreeDecoratorService).inSingletonScope();
68
- return child;
116
+ export interface TreeContainerProps extends TreeServiceProviders {
117
+ props: Partial<TreeProps>,
118
+ searchBoxFactory: SearchBoxFactoryFactory;
69
119
  }
120
+
121
+ const defaultImplementations: TreeContainerProps & { props: TreeProps } = {
122
+ tree: TreeImpl,
123
+ selectionService: TreeSelectionServiceImpl,
124
+ expansionService: TreeExpansionServiceImpl,
125
+ navigationService: TreeNavigationService,
126
+ model: TreeModelImpl,
127
+ widget: TreeWidget,
128
+ search: TreeSearch,
129
+ fuzzy: FuzzySearch,
130
+ decoratorService: NoopTreeDecoratorService,
131
+ props: defaultTreeProps,
132
+ searchBoxFactory: defaultSearchBoxFactoryFactory,
133
+ };
134
+
135
+ const serviceIdentifiers: TreeIdentifiers = {
136
+ tree: Tree,
137
+ selectionService: TreeSelectionService,
138
+ expansionService: TreeExpansionService,
139
+ navigationService: TreeNavigationService,
140
+ model: TreeModel,
141
+ widget: TreeWidget,
142
+ props: TreeProps,
143
+ search: TreeSearch,
144
+ fuzzy: FuzzySearch,
145
+ searchBoxFactory: SearchBoxFactory,
146
+ decoratorService: TreeDecoratorService,
147
+ };
@@ -65,7 +65,7 @@ export interface ExpandableTreeNode extends CompositeTreeNode {
65
65
  }
66
66
 
67
67
  export namespace ExpandableTreeNode {
68
- export function is(node: Object | undefined): node is ExpandableTreeNode {
68
+ export function is(node: unknown): node is ExpandableTreeNode {
69
69
  return !!node && CompositeTreeNode.is(node) && 'expanded' in node;
70
70
  }
71
71
 
@@ -180,7 +180,7 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
180
180
  * Select the given node if it is the ancestor of a selected node.
181
181
  */
182
182
  protected selectIfAncestorOfSelected(node: Readonly<ExpandableTreeNode>): void {
183
- if (!node.expanded && [...this.selectedNodes].some(selectedNode => CompositeTreeNode.isAncestor(node, selectedNode))) {
183
+ if (!node.expanded && this.selectedNodes.some(selectedNode => CompositeTreeNode.isAncestor(node, selectedNode))) {
184
184
  if (SelectableTreeNode.isVisible(node)) {
185
185
  this.selectNode(node);
186
186
  }
@@ -273,7 +273,6 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
273
273
  for (const node of raw ? [raw] : this.selectedNodes) {
274
274
  if (ExpandableTreeNode.is(node)) {
275
275
  await this.expansionService.toggleNodeExpansion(node);
276
- return;
277
276
  }
278
277
  }
279
278
  }
@@ -287,7 +286,7 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
287
286
 
288
287
  getPrevSelectableNode(node: TreeNode = this.selectedNodes[0]): SelectableTreeNode | undefined {
289
288
  const iterator = this.createBackwardIterator(node);
290
- return iterator && this.doGetNextNode(iterator);
289
+ return iterator && this.doGetNextNode(iterator, this.isVisibleSelectableNode.bind(this));
291
290
  }
292
291
 
293
292
  selectNextNode(type: TreeSelection.SelectionType = TreeSelection.SelectionType.DEFAULT): void {
@@ -299,20 +298,19 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
299
298
 
300
299
  getNextSelectableNode(node: TreeNode = this.selectedNodes[0]): SelectableTreeNode | undefined {
301
300
  const iterator = this.createIterator(node);
302
- return iterator && this.doGetNextNode(iterator);
301
+ return iterator && this.doGetNextNode(iterator, this.isVisibleSelectableNode.bind(this));
303
302
  }
304
303
 
305
- protected doGetNextNode(iterator: TreeIterator): SelectableTreeNode | undefined {
304
+ protected doGetNextNode<T extends TreeNode>(iterator: TreeIterator, criterion: (node: TreeNode) => node is T): T | undefined {
306
305
  // Skip the first item. // TODO: clean this up, and skip the first item in a different way without loading everything.
307
306
  iterator.next();
308
307
  let result = iterator.next();
309
- while (!result.done && !this.isVisibleSelectableNode(result.value)) {
308
+ while (!result.done) {
309
+ if (criterion(result.value)) {
310
+ return result.value;
311
+ }
310
312
  result = iterator.next();
311
313
  }
312
- const node = result.value;
313
- if (SelectableTreeNode.isVisible(node)) {
314
- return node;
315
- }
316
314
  return undefined;
317
315
  }
318
316
 
@@ -334,7 +332,7 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
334
332
  protected createIterator(node: TreeNode | undefined): TreeIterator | undefined {
335
333
  const { filteredNodes } = this.treeSearch;
336
334
  if (filteredNodes.length === 0) {
337
- return node ? new TopDownTreeIterator(node!, { pruneCollapsed: true }) : undefined;
335
+ return node && this.createForwardIteratorForNode(node);
338
336
  }
339
337
  if (node && filteredNodes.indexOf(node) === -1) {
340
338
  return undefined;
@@ -342,6 +340,10 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
342
340
  return Iterators.cycle(filteredNodes, node);
343
341
  }
344
342
 
343
+ protected createForwardIteratorForNode(node: TreeNode): TreeIterator {
344
+ return new TopDownTreeIterator(node, { pruneCollapsed: true });
345
+ }
346
+
345
347
  openNode(raw?: TreeNode | undefined): void {
346
348
  const node = raw || this.selectedNodes[0];
347
349
  if (node) {
@@ -303,16 +303,11 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
303
303
  pruneSiblings: true
304
304
  })) {
305
305
  if (this.shouldDisplayNode(node)) {
306
- const parentDepth = depths.get(node.parent);
307
- const depth = parentDepth === undefined ? 0 : TreeNode.isVisible(node.parent) ? parentDepth + 1 : parentDepth;
306
+ const depth = this.getDepthForNode(node, depths);
308
307
  if (CompositeTreeNode.is(node)) {
309
308
  depths.set(node, depth);
310
309
  }
311
- rowsToUpdate.push([node.id, {
312
- index: index++,
313
- node,
314
- depth
315
- }]);
310
+ rowsToUpdate.push([node.id, this.toNodeRow(node, index++, depth)]);
316
311
  }
317
312
  }
318
313
  }
@@ -320,6 +315,15 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
320
315
  this.updateScrollToRow();
321
316
  }
322
317
 
318
+ protected getDepthForNode(node: TreeNode, depths: Map<CompositeTreeNode | undefined, number>): number {
319
+ const parentDepth = depths.get(node.parent);
320
+ return parentDepth === undefined ? 0 : TreeNode.isVisible(node.parent) ? parentDepth + 1 : parentDepth;
321
+ }
322
+
323
+ protected toNodeRow(node: TreeNode, index: number, depth: number): TreeWidget.NodeRow {
324
+ return { node, index, depth };
325
+ }
326
+
323
327
  protected shouldDisplayNode(node: TreeNode): boolean {
324
328
  return TreeNode.isVisible(node) && (!this.searchBox?.isFiltering || this.treeSearch.passesFilters(node));
325
329
  }
@@ -585,6 +589,12 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
585
589
  * @param props the node properties.
586
590
  */
587
591
  protected renderCaption(node: TreeNode, props: NodeProps): React.ReactNode {
592
+ const attrs = this.getCaptionAttributes(node, props);
593
+ const children = this.getCaptionChildren(node, props);
594
+ return React.createElement('div', attrs, children);
595
+ }
596
+
597
+ protected getCaptionAttributes(node: TreeNode, props: NodeProps): React.Attributes & React.HTMLAttributes<HTMLElement> {
588
598
  const tooltip = this.getDecorationData(node, 'tooltip').filter(notEmpty).join(' • ');
589
599
  const classes = [TREE_NODE_SEGMENT_CLASS];
590
600
  if (!this.hasTrailingSuffixes(node)) {
@@ -600,7 +610,11 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
600
610
  title: tooltip
601
611
  };
602
612
  }
603
- const children: React.ReactNode[] = [];
613
+ return attrs;
614
+ }
615
+
616
+ protected getCaptionChildren(node: TreeNode, props: NodeProps): React.ReactNode {
617
+ const children = [];
604
618
  const caption = this.toNodeName(node);
605
619
  const highlight = this.getDecorationData(node, 'highlight')[0];
606
620
  if (highlight) {
@@ -612,7 +626,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
612
626
  } else if (!highlight) {
613
627
  children.push(caption);
614
628
  }
615
- return React.createElement('div', attrs, ...children);
629
+ return children;
616
630
  }
617
631
 
618
632
  /**
@@ -925,7 +939,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
925
939
  if (this.isExpandable(node)) {
926
940
  classNames.push(EXPANDABLE_TREE_NODE_CLASS);
927
941
  }
928
- if (SelectableTreeNode.isSelected(node)) {
942
+ if (this.rowIsSelected(node, props)) {
929
943
  classNames.push(SELECTED_CLASS);
930
944
  }
931
945
  if (SelectableTreeNode.hasFocus(node)) {
@@ -934,6 +948,10 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
934
948
  return classNames;
935
949
  }
936
950
 
951
+ protected rowIsSelected(node: TreeNode, props: NodeProps): boolean {
952
+ return SelectableTreeNode.isSelected(node);
953
+ }
954
+
937
955
  /**
938
956
  * Get the default node style.
939
957
  * @param node the tree node.
@@ -1096,7 +1114,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
1096
1114
  if (!!this.props.multiSelect && (this.hasCtrlCmdMask(event) || this.hasShiftMask(event))) {
1097
1115
  return;
1098
1116
  }
1099
- if (! await this.model.collapseNode()) {
1117
+ if (!await this.model.collapseNode()) {
1100
1118
  this.model.selectParent();
1101
1119
  }
1102
1120
  }
@@ -1109,7 +1127,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
1109
1127
  if (!!this.props.multiSelect && (this.hasCtrlCmdMask(event) || this.hasShiftMask(event))) {
1110
1128
  return;
1111
1129
  }
1112
- if (! await this.model.expandNode()) {
1130
+ if (!await this.model.expandNode()) {
1113
1131
  this.model.selectNextNode();
1114
1132
  }
1115
1133
  }
@@ -147,8 +147,8 @@ export interface CompositeTreeNode extends TreeNode {
147
147
  }
148
148
 
149
149
  export namespace CompositeTreeNode {
150
- export function is(node: Object | undefined): node is CompositeTreeNode {
151
- return !!node && 'children' in node;
150
+ export function is(node: unknown): node is CompositeTreeNode {
151
+ return typeof node === 'object' && !!node && 'children' in node;
152
152
  }
153
153
 
154
154
  export function getFirstChild(parent: CompositeTreeNode): TreeNode | undefined {
@@ -580,6 +580,9 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
580
580
  if (this.titleOptions) {
581
581
  this.menuRegistry.registerMenuAction([...SIDE_PANEL_TOOLBAR_CONTEXT_MENU, 'navigation'], action);
582
582
  }
583
+
584
+ ViewContainer.updateSashState(SashType.TopSash, part.node.previousElementSibling, part.collapsed);
585
+ ViewContainer.updateSashState(SashType.BottomSash, part.node.nextElementSibling, part.collapsed);
583
586
  }
584
587
 
585
588
  protected unregisterPart(part: ViewContainerPart): void {
@@ -885,6 +888,27 @@ export namespace ViewContainer {
885
888
  }
886
889
  return 'vertical';
887
890
  }
891
+
892
+ export function updateSashState(sashType: SashType, sashElement: Element | null, activeContainerCollapsed: boolean): void {
893
+ if (sashElement && sashElement.className.includes('p-SplitPanel-handle')) {
894
+ // Hide the sash when the active `horizontal` container in the left panel is collapsed
895
+ sashElement.classList.toggle('sash-hidden', activeContainerCollapsed);
896
+
897
+ let adjacentContainer: Element | null;
898
+ if (sashType === SashType.TopSash) {
899
+ adjacentContainer = sashElement.previousElementSibling;
900
+ } else {
901
+ adjacentContainer = sashElement.nextElementSibling;
902
+ }
903
+
904
+ // Sash should only appear when the following two conditions are met:
905
+ // 1. the active `horizontal` container is expanded
906
+ // 2. the container that is above/below the active `horizontal` container is also expanded
907
+ if (!activeContainerCollapsed && adjacentContainer) {
908
+ sashElement.classList.toggle('sash-hidden', adjacentContainer.className.includes('collapsed'));
909
+ }
910
+ }
911
+ }
888
912
  }
889
913
 
890
914
  /**
@@ -1001,8 +1025,8 @@ export class ViewContainerPart extends BaseWidget {
1001
1025
  this.node.classList.toggle('collapsed', collapsed);
1002
1026
 
1003
1027
  // Update the sashes for the active `horizontal` container when the container is collapsed/expanded
1004
- this.updateSashState(SashType.TopSash, this.node.previousElementSibling, collapsed);
1005
- this.updateSashState(SashType.BottomSash, this.node.nextElementSibling, collapsed);
1028
+ ViewContainer.updateSashState(SashType.TopSash, this.node.previousElementSibling, collapsed);
1029
+ ViewContainer.updateSashState(SashType.BottomSash, this.node.nextElementSibling, collapsed);
1006
1030
 
1007
1031
  if (collapsed && this.wrapped.node.contains(document.activeElement)) {
1008
1032
  this.header.focus();
@@ -1239,27 +1263,6 @@ export class ViewContainerPart extends BaseWidget {
1239
1263
  this.wrapped.activate();
1240
1264
  }
1241
1265
  }
1242
-
1243
- protected updateSashState(sashType: SashType, sashElement: Element | null, activeContainerCollapsed: boolean): void {
1244
- if (sashElement && sashElement.className.includes('p-SplitPanel-handle')) {
1245
- // Hide the sash when the active `horizontal` container in the left panel is collapsed
1246
- sashElement.classList.toggle('sash-hidden', activeContainerCollapsed);
1247
-
1248
- let adjacentContainer: Element | null;
1249
- if (sashType === SashType.TopSash) {
1250
- adjacentContainer = sashElement.previousElementSibling;
1251
- } else {
1252
- adjacentContainer = sashElement.nextElementSibling;
1253
- }
1254
-
1255
- // Sash should only appear when the following two conditions are met:
1256
- // 1. the active `horizontal` container is expanded
1257
- // 2. the container that is above/below the active `horizontal` container is also expanded
1258
- if (!activeContainerCollapsed && adjacentContainer) {
1259
- sashElement.classList.toggle('sash-hidden', adjacentContainer.className.includes('collapsed'));
1260
- }
1261
- }
1262
- }
1263
1266
  }
1264
1267
 
1265
1268
  export namespace ViewContainerPart {
@@ -1307,6 +1310,7 @@ export class ViewContainerLayout extends SplitLayout {
1307
1310
  return map(this.items, item => item.widget);
1308
1311
  }
1309
1312
 
1313
+ // @ts-expect-error TS2611 `SplitLayout.widgets` is declared as `readonly widgets` but is implemented as a getter.
1310
1314
  get widgets(): ViewContainerPart[] {
1311
1315
  return toArray(this.iter());
1312
1316
  }
@@ -160,8 +160,6 @@ export abstract class WidgetOpenHandler<W extends BaseWidget> implements OpenHan
160
160
  * @returns a promise of all closed widgets that resolves after they have been closed.
161
161
  */
162
162
  async closeAll(options?: ApplicationShell.CloseOptions): Promise<W[]> {
163
- const closed = await Promise.all(this.all.map(widget => this.shell.closeWidget(widget.id, options)));
164
- return closed.filter(widget => !!widget) as W[];
163
+ return this.shell.closeMany(this.all, options) as Promise<W[]>;
165
164
  }
166
-
167
165
  }
@@ -330,7 +330,7 @@ export namespace WaitUntilEvent {
330
330
  // Asynchronous calls to `waitUntil` should fail.
331
331
  Object.freeze(waitables);
332
332
  } finally {
333
- delete asyncEvent['waitUntil'];
333
+ delete (asyncEvent as any)['waitUntil'];
334
334
  }
335
335
  if (!waitables.length) {
336
336
  return;
@@ -390,7 +390,7 @@ export class AsyncEmitter<T extends WaitUntilEvent> extends Emitter<T> {
390
390
  } catch (e) {
391
391
  console.error(e);
392
392
  } finally {
393
- delete asyncEvent['waitUntil'];
393
+ delete (asyncEvent as any)['waitUntil'];
394
394
  }
395
395
  if (!waitables.length) {
396
396
  return;
@@ -40,6 +40,7 @@ export * from './lsp-types';
40
40
  export * from './contribution-filter';
41
41
  export * from './nls';
42
42
  export * from './numbers';
43
+ export * from './performance';
43
44
 
44
45
  import { environment } from '@theia/application-package/lib/environment';
45
46
  export { environment };
@@ -236,7 +236,7 @@ export class JsonRpcProxyFactory<T extends object> implements ProxyHandler<T> {
236
236
  const method = p.toString();
237
237
  const capturedError = new Error(`Request '${method}' failed`);
238
238
  return this.connectionPromise.then(connection =>
239
- new Promise((resolve, reject) => {
239
+ new Promise<void>((resolve, reject) => {
240
240
  try {
241
241
  if (isNotify) {
242
242
  connection.sendNotification(method, ...args);
@@ -0,0 +1,19 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2021 STMicroelectronics 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
+ export * from './measurement';
18
+ export * from './stopwatch';
19
+ export * from './measurement-protocol';