@theia/core 1.73.0-next.9 → 1.74.0-next.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 (259) hide show
  1. package/README.md +26 -16
  2. package/i18n/nls.cs.json +268 -36
  3. package/i18n/nls.de.json +268 -36
  4. package/i18n/nls.es.json +268 -36
  5. package/i18n/nls.fr.json +268 -36
  6. package/i18n/nls.hu.json +268 -36
  7. package/i18n/nls.it.json +268 -36
  8. package/i18n/nls.ja.json +268 -36
  9. package/i18n/nls.json +268 -36
  10. package/i18n/nls.ko.json +268 -36
  11. package/i18n/nls.pl.json +268 -36
  12. package/i18n/nls.pt-br.json +268 -36
  13. package/i18n/nls.ru.json +268 -36
  14. package/i18n/nls.tr.json +268 -36
  15. package/i18n/nls.zh-cn.json +268 -36
  16. package/i18n/nls.zh-tw.json +268 -36
  17. package/lib/browser/authentication-service.d.ts +2 -0
  18. package/lib/browser/authentication-service.d.ts.map +1 -1
  19. package/lib/browser/authentication-service.js +8 -2
  20. package/lib/browser/authentication-service.js.map +1 -1
  21. package/lib/browser/catalog.json +269 -72
  22. package/lib/browser/frontend-application.d.ts +2 -0
  23. package/lib/browser/frontend-application.d.ts.map +1 -1
  24. package/lib/browser/frontend-application.js +15 -9
  25. package/lib/browser/frontend-application.js.map +1 -1
  26. package/lib/browser/json-schema-store.d.ts +2 -0
  27. package/lib/browser/json-schema-store.d.ts.map +1 -1
  28. package/lib/browser/json-schema-store.js +8 -2
  29. package/lib/browser/json-schema-store.js.map +1 -1
  30. package/lib/browser/keybinding.js +2 -1
  31. package/lib/browser/keybinding.js.map +1 -1
  32. package/lib/browser/markdown-rendering/markdown.d.ts +1 -1
  33. package/lib/browser/markdown-rendering/markdown.d.ts.map +1 -1
  34. package/lib/browser/markdown-rendering/markdown.js +1 -1
  35. package/lib/browser/markdown-rendering/markdown.js.map +1 -1
  36. package/lib/browser/menu/composite-menu-node.js +4 -4
  37. package/lib/browser/menu/composite-menu-node.js.map +1 -1
  38. package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -1
  39. package/lib/browser/messaging/ws-connection-source.js +1 -6
  40. package/lib/browser/messaging/ws-connection-source.js.map +1 -1
  41. package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +2 -0
  42. package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -1
  43. package/lib/browser/preferences/frontend-config-preference-contributions.js +7 -1
  44. package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -1
  45. package/lib/browser/preferences/preference-proxy.spec.js +7 -0
  46. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  47. package/lib/browser/preferences/preference-schema-provider.spec.js +3 -0
  48. package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
  49. package/lib/browser/preferences/preference-validation-service.d.ts +2 -0
  50. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  51. package/lib/browser/preferences/preference-validation-service.js +11 -5
  52. package/lib/browser/preferences/preference-validation-service.js.map +1 -1
  53. package/lib/browser/preferences/preference-validation-service.spec.js +2 -0
  54. package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
  55. package/lib/browser/secondary-window-handler.d.ts +2 -0
  56. package/lib/browser/secondary-window-handler.d.ts.map +1 -1
  57. package/lib/browser/secondary-window-handler.js +12 -6
  58. package/lib/browser/secondary-window-handler.js.map +1 -1
  59. package/lib/browser/shell/application-shell.d.ts +2 -0
  60. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  61. package/lib/browser/shell/application-shell.js +9 -3
  62. package/lib/browser/shell/application-shell.js.map +1 -1
  63. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +6 -6
  64. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
  65. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +2 -2
  66. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
  67. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js +131 -0
  68. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js.map +1 -1
  69. package/lib/browser/status-bar/status-bar.d.ts +2 -2
  70. package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
  71. package/lib/browser/status-bar/status-bar.js.map +1 -1
  72. package/lib/browser/test/jsdom.d.ts +4 -0
  73. package/lib/browser/test/jsdom.d.ts.map +1 -1
  74. package/lib/browser/test/jsdom.js +18 -0
  75. package/lib/browser/test/jsdom.js.map +1 -1
  76. package/lib/browser/tree/tree-container.spec.js +4 -0
  77. package/lib/browser/tree/tree-container.spec.js.map +1 -1
  78. package/lib/browser/tree/tree-model.d.ts +1 -0
  79. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  80. package/lib/browser/tree/tree-model.js +3 -0
  81. package/lib/browser/tree/tree-model.js.map +1 -1
  82. package/lib/browser/tree/tree-view-welcome-widget.d.ts +1 -0
  83. package/lib/browser/tree/tree-view-welcome-widget.d.ts.map +1 -1
  84. package/lib/browser/tree/tree-view-welcome-widget.js +8 -6
  85. package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
  86. package/lib/browser/tree/tree-view-welcome-widget.spec.d.ts +2 -0
  87. package/lib/browser/tree/tree-view-welcome-widget.spec.d.ts.map +1 -0
  88. package/lib/browser/tree/tree-view-welcome-widget.spec.js +68 -0
  89. package/lib/browser/tree/tree-view-welcome-widget.spec.js.map +1 -0
  90. package/lib/browser/tree/tree-widget.js +2 -2
  91. package/lib/browser/tree/tree-widget.js.map +1 -1
  92. package/lib/browser/tree/tree.d.ts +24 -2
  93. package/lib/browser/tree/tree.d.ts.map +1 -1
  94. package/lib/browser/tree/tree.js +20 -2
  95. package/lib/browser/tree/tree.js.map +1 -1
  96. package/lib/browser/tree/tree.spec.js +27 -0
  97. package/lib/browser/tree/tree.spec.js.map +1 -1
  98. package/lib/browser/window/default-window-service.d.ts +2 -1
  99. package/lib/browser/window/default-window-service.d.ts.map +1 -1
  100. package/lib/browser/window/default-window-service.js +10 -5
  101. package/lib/browser/window/default-window-service.js.map +1 -1
  102. package/lib/browser/window/default-window-service.spec.js +2 -0
  103. package/lib/browser/window/default-window-service.spec.js.map +1 -1
  104. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +2 -0
  105. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -1
  106. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +8 -2
  107. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -1
  108. package/lib/common/command.d.ts +2 -0
  109. package/lib/common/command.d.ts.map +1 -1
  110. package/lib/common/command.js +10 -4
  111. package/lib/common/command.js.map +1 -1
  112. package/lib/common/preferences/injectable-preference-proxy.d.ts +3 -3
  113. package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -1
  114. package/lib/common/preferences/injectable-preference-proxy.js +6 -1
  115. package/lib/common/preferences/injectable-preference-proxy.js.map +1 -1
  116. package/lib/common/preferences/preference-proxy.d.ts.map +1 -1
  117. package/lib/common/preferences/preference-proxy.js +6 -1
  118. package/lib/common/preferences/preference-proxy.js.map +1 -1
  119. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  120. package/lib/electron-main/electron-main-application.js +4 -2
  121. package/lib/electron-main/electron-main-application.js.map +1 -1
  122. package/lib/electron-node/hosting/electron-ws-origin-validator.d.ts.map +1 -1
  123. package/lib/electron-node/hosting/electron-ws-origin-validator.js +5 -2
  124. package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
  125. package/lib/electron-node/hosting/electron-ws-origin-validator.spec.d.ts +2 -0
  126. package/lib/electron-node/hosting/electron-ws-origin-validator.spec.d.ts.map +1 -0
  127. package/lib/electron-node/hosting/electron-ws-origin-validator.spec.js +59 -0
  128. package/lib/electron-node/hosting/electron-ws-origin-validator.spec.js.map +1 -0
  129. package/lib/electron-node/request/electron-backend-request-service.d.ts +2 -0
  130. package/lib/electron-node/request/electron-backend-request-service.d.ts.map +1 -1
  131. package/lib/electron-node/request/electron-backend-request-service.js +7 -1
  132. package/lib/electron-node/request/electron-backend-request-service.js.map +1 -1
  133. package/lib/electron-node/token/electron-token-backend-contribution.d.ts +2 -0
  134. package/lib/electron-node/token/electron-token-backend-contribution.d.ts.map +1 -1
  135. package/lib/electron-node/token/electron-token-backend-contribution.js +7 -1
  136. package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
  137. package/lib/electron-node/token/electron-token-validator.d.ts +2 -0
  138. package/lib/electron-node/token/electron-token-validator.d.ts.map +1 -1
  139. package/lib/electron-node/token/electron-token-validator.js +7 -1
  140. package/lib/electron-node/token/electron-token-validator.js.map +1 -1
  141. package/lib/node/backend-application-module.d.ts.map +1 -1
  142. package/lib/node/backend-application-module.js +2 -0
  143. package/lib/node/backend-application-module.js.map +1 -1
  144. package/lib/node/backend-application.d.ts +11 -0
  145. package/lib/node/backend-application.d.ts.map +1 -1
  146. package/lib/node/backend-application.js +40 -12
  147. package/lib/node/backend-application.js.map +1 -1
  148. package/lib/node/backend-application.spec.js +4 -2
  149. package/lib/node/backend-application.spec.js.map +1 -1
  150. package/lib/node/hosting/backend-hosting-module.d.ts.map +1 -1
  151. package/lib/node/hosting/backend-hosting-module.js +7 -0
  152. package/lib/node/hosting/backend-hosting-module.js.map +1 -1
  153. package/lib/node/hosting/browser-connection-token.d.ts +46 -0
  154. package/lib/node/hosting/browser-connection-token.d.ts.map +1 -0
  155. package/lib/node/hosting/browser-connection-token.js +120 -0
  156. package/lib/node/hosting/browser-connection-token.js.map +1 -0
  157. package/lib/node/hosting/browser-connection-token.spec.d.ts +2 -0
  158. package/lib/node/hosting/browser-connection-token.spec.d.ts.map +1 -0
  159. package/lib/node/hosting/browser-connection-token.spec.js +128 -0
  160. package/lib/node/hosting/browser-connection-token.spec.js.map +1 -0
  161. package/lib/node/hosting/ws-origin-validator.d.ts.map +1 -1
  162. package/lib/node/hosting/ws-origin-validator.js +21 -4
  163. package/lib/node/hosting/ws-origin-validator.js.map +1 -1
  164. package/lib/node/hosting/ws-origin-validator.spec.d.ts +2 -0
  165. package/lib/node/hosting/ws-origin-validator.spec.d.ts.map +1 -0
  166. package/lib/node/hosting/ws-origin-validator.spec.js +131 -0
  167. package/lib/node/hosting/ws-origin-validator.spec.js.map +1 -0
  168. package/lib/node/index.d.ts +1 -0
  169. package/lib/node/index.d.ts.map +1 -1
  170. package/lib/node/index.js +3 -1
  171. package/lib/node/index.js.map +1 -1
  172. package/lib/node/logger-cli-contribution.d.ts +6 -0
  173. package/lib/node/logger-cli-contribution.d.ts.map +1 -1
  174. package/lib/node/logger-cli-contribution.js +28 -5
  175. package/lib/node/logger-cli-contribution.js.map +1 -1
  176. package/lib/node/logger-cli-contribution.spec.js +54 -0
  177. package/lib/node/logger-cli-contribution.spec.js.map +1 -1
  178. package/lib/node/messaging/default-messaging-service.d.ts +2 -0
  179. package/lib/node/messaging/default-messaging-service.d.ts.map +1 -1
  180. package/lib/node/messaging/default-messaging-service.js +8 -2
  181. package/lib/node/messaging/default-messaging-service.js.map +1 -1
  182. package/lib/node/messaging/test/default-messaging-service.spec.js +2 -0
  183. package/lib/node/messaging/test/default-messaging-service.spec.js.map +1 -1
  184. package/lib/node/messaging/websocket-endpoint.d.ts +7 -0
  185. package/lib/node/messaging/websocket-endpoint.d.ts.map +1 -1
  186. package/lib/node/messaging/websocket-endpoint.js +21 -6
  187. package/lib/node/messaging/websocket-endpoint.js.map +1 -1
  188. package/lib/node/process-utils.d.ts +2 -0
  189. package/lib/node/process-utils.d.ts.map +1 -1
  190. package/lib/node/process-utils.js +8 -2
  191. package/lib/node/process-utils.js.map +1 -1
  192. package/lib/node/process-utils.spec.js +11 -9
  193. package/lib/node/process-utils.spec.js.map +1 -1
  194. package/lib/node/request/backend-request-facade.d.ts +19 -0
  195. package/lib/node/request/backend-request-facade.d.ts.map +1 -1
  196. package/lib/node/request/backend-request-facade.js +93 -3
  197. package/lib/node/request/backend-request-facade.js.map +1 -1
  198. package/lib/node/request/backend-request-facade.spec.d.ts +2 -0
  199. package/lib/node/request/backend-request-facade.spec.d.ts.map +1 -0
  200. package/lib/node/request/backend-request-facade.spec.js +171 -0
  201. package/lib/node/request/backend-request-facade.spec.js.map +1 -0
  202. package/package.json +29 -20
  203. package/src/browser/authentication-service.ts +6 -3
  204. package/src/browser/frontend-application.ts +13 -9
  205. package/src/browser/json-schema-store.ts +6 -2
  206. package/src/browser/keybinding.ts +2 -2
  207. package/src/browser/markdown-rendering/markdown.tsx +2 -2
  208. package/src/browser/menu/composite-menu-node.ts +4 -4
  209. package/src/browser/messaging/ws-connection-source.ts +1 -6
  210. package/src/browser/preferences/frontend-config-preference-contributions.ts +7 -2
  211. package/src/browser/preferences/preference-proxy.spec.ts +8 -0
  212. package/src/browser/preferences/preference-schema-provider.spec.ts +5 -0
  213. package/src/browser/preferences/preference-validation-service.spec.ts +3 -1
  214. package/src/browser/preferences/preference-validation-service.ts +9 -6
  215. package/src/browser/secondary-window-handler.ts +11 -7
  216. package/src/browser/shell/application-shell.ts +8 -4
  217. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +6 -6
  218. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +2 -2
  219. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +159 -1
  220. package/src/browser/status-bar/status-bar.tsx +3 -3
  221. package/src/browser/test/jsdom.ts +18 -0
  222. package/src/browser/tree/tree-container.spec.ts +6 -0
  223. package/src/browser/tree/tree-model.ts +4 -0
  224. package/src/browser/tree/tree-view-welcome-widget.spec.ts +82 -0
  225. package/src/browser/tree/tree-view-welcome-widget.tsx +10 -11
  226. package/src/browser/tree/tree-widget.tsx +2 -2
  227. package/src/browser/tree/tree.spec.ts +30 -0
  228. package/src/browser/tree/tree.ts +31 -4
  229. package/src/browser/window/default-window-service.spec.ts +3 -1
  230. package/src/browser/window/default-window-service.ts +9 -6
  231. package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +8 -3
  232. package/src/common/command.ts +8 -4
  233. package/src/common/i18n/nls.metadata.json +2659 -374
  234. package/src/common/preferences/injectable-preference-proxy.ts +10 -4
  235. package/src/common/preferences/preference-proxy.ts +10 -4
  236. package/src/electron-main/electron-main-application.ts +4 -2
  237. package/src/electron-node/hosting/electron-ws-origin-validator.spec.ts +69 -0
  238. package/src/electron-node/hosting/electron-ws-origin-validator.ts +5 -2
  239. package/src/electron-node/request/electron-backend-request-service.ts +6 -2
  240. package/src/electron-node/token/electron-token-backend-contribution.ts +6 -2
  241. package/src/electron-node/token/electron-token-validator.ts +6 -2
  242. package/src/node/backend-application-module.ts +4 -2
  243. package/src/node/backend-application.spec.ts +5 -3
  244. package/src/node/backend-application.ts +33 -11
  245. package/src/node/hosting/backend-hosting-module.ts +10 -0
  246. package/src/node/hosting/browser-connection-token.spec.ts +167 -0
  247. package/src/node/hosting/browser-connection-token.ts +126 -0
  248. package/src/node/hosting/ws-origin-validator.spec.ts +193 -0
  249. package/src/node/hosting/ws-origin-validator.ts +23 -4
  250. package/src/node/index.ts +1 -0
  251. package/src/node/logger-cli-contribution.spec.ts +65 -0
  252. package/src/node/logger-cli-contribution.ts +32 -5
  253. package/src/node/messaging/default-messaging-service.ts +6 -2
  254. package/src/node/messaging/test/default-messaging-service.spec.ts +3 -1
  255. package/src/node/messaging/websocket-endpoint.ts +23 -7
  256. package/src/node/process-utils.spec.ts +12 -9
  257. package/src/node/process-utils.ts +7 -3
  258. package/src/node/request/backend-request-facade.spec.ts +203 -0
  259. package/src/node/request/backend-request-facade.ts +108 -3
@@ -120,6 +120,36 @@ describe('Tree', () => {
120
120
  }`, node);
121
121
  });
122
122
 
123
+ it('removeChild - clears parent and sibling pointers on the removed node', () => {
124
+ const node = getNode();
125
+ const middle = node.children[1];
126
+ CompositeTreeNode.removeChild(node, middle);
127
+ expect(middle.parent).to.be.undefined;
128
+ expect(middle.previousSibling).to.be.undefined;
129
+ expect(middle.nextSibling).to.be.undefined;
130
+ });
131
+
132
+ it('removeChild - purges the detached subtree from the tree index when a tree is provided', () => {
133
+ const target = model.getNode('1.2');
134
+ expect(target).to.not.be.undefined;
135
+ const parent = target!.parent!;
136
+ expect(model.getNode('1.2.1')).to.not.be.undefined;
137
+ CompositeTreeNode.removeChild(parent, target!, model);
138
+ expect(model.getNode('1.2')).to.be.undefined;
139
+ expect(model.getNode('1.2.1')).to.be.undefined;
140
+ });
141
+
142
+ it('removeChild - leaves the index untouched when no tree is provided', () => {
143
+ const target = model.getNode('1.2')!;
144
+ const parent = target.parent!;
145
+ CompositeTreeNode.removeChild(parent, target);
146
+ // Until the caller explicitly purges, the orphan is still in the index.
147
+ expect(model.getNode('1.2')).to.equal(target);
148
+ // Explicit purge cleans it up.
149
+ model.removeNode(target);
150
+ expect(model.getNode('1.2')).to.be.undefined;
151
+ });
152
+
123
153
  let model: TreeModel;
124
154
  beforeEach(() => {
125
155
  model = createTreeModel();
@@ -14,13 +14,14 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { injectable } from 'inversify';
17
+ import { injectable, inject, named } from 'inversify';
18
18
  import { Event, Emitter, WaitUntilEvent } from '../../common/event';
19
19
  import { Disposable, DisposableCollection } from '../../common/disposable';
20
20
  import { CancellationToken, CancellationTokenSource } from '../../common/cancellation';
21
21
  import { timeout } from '../../common/promise-util';
22
22
  import { isObject, Mutable } from '../../common';
23
23
  import { AccessibilityInformation } from '../../common/accessibility';
24
+ import { ILogger } from '../../common/logger';
24
25
 
25
26
  export const Tree = Symbol('Tree');
26
27
 
@@ -78,6 +79,17 @@ export interface Tree extends Disposable {
78
79
  readonly onDidUpdate: Event<TreeNode[]>;
79
80
 
80
81
  markAsChecked(node: TreeNode, checked: boolean): void;
82
+
83
+ /**
84
+ * Remove the given node and all of its descendants from the tree's internal
85
+ * id-to-node index. Safe to call on already-detached subtrees.
86
+ *
87
+ * Callers that mutate the tree structure directly via
88
+ * {@link CompositeTreeNode.removeChild} should invoke this (or pass the tree
89
+ * to `removeChild`) to keep {@link getNode} and {@link validateNode} from
90
+ * returning orphaned nodes.
91
+ */
92
+ removeNode(node: TreeNode | undefined): void;
81
93
  }
82
94
 
83
95
  export interface TreeViewItemCheckboxInfo {
@@ -215,7 +227,17 @@ export namespace CompositeTreeNode {
215
227
  return parent;
216
228
  }
217
229
 
218
- export function removeChild(parent: CompositeTreeNode, child: TreeNode): void {
230
+ /**
231
+ * Detach the given `child` from the `parent`.
232
+ *
233
+ * After this call, the child's `parent`, `previousSibling`, and
234
+ * `nextSibling` references are cleared, symmetric with `setParent`. If a
235
+ * `tree` is provided, the child and its descendants are also purged from
236
+ * the tree's id-to-node index so that {@link Tree.getNode} no longer
237
+ * returns the detached subtree. Otherwise the index entries persist and
238
+ * the caller is responsible for cleanup (e.g., via `tree.removeNode`).
239
+ */
240
+ export function removeChild(parent: CompositeTreeNode, child: TreeNode, tree?: Tree): void {
219
241
  const children = parent.children as TreeNode[];
220
242
  const index = children.findIndex(value => value.id === child.id);
221
243
  if (index === -1) {
@@ -229,6 +251,8 @@ export namespace CompositeTreeNode {
229
251
  if (nextSibling) {
230
252
  Object.assign(nextSibling, { previousSibling });
231
253
  }
254
+ Object.assign(child, { parent: undefined, previousSibling: undefined, nextSibling: undefined });
255
+ tree?.removeNode(child);
232
256
  }
233
257
 
234
258
  export function setParent(child: TreeNode, index: number, parent: CompositeTreeNode): void {
@@ -250,6 +274,9 @@ export namespace CompositeTreeNode {
250
274
  @injectable()
251
275
  export class TreeImpl implements Tree {
252
276
 
277
+ @inject(ILogger) @named('core:TreeImpl')
278
+ protected readonly logger: ILogger;
279
+
253
280
  protected _root: TreeNode | undefined;
254
281
  protected readonly onChangedEmitter = new Emitter<void>();
255
282
  protected readonly onNodeRefreshedEmitter = new Emitter<CompositeTreeNode & WaitUntilEvent>();
@@ -344,7 +371,7 @@ export class TreeImpl implements Tree {
344
371
  protected async setChildren(parent: CompositeTreeNode, children: TreeNode[]): Promise<CompositeTreeNode | undefined> {
345
372
  const root = this.getRootNode(parent);
346
373
  if (this.nodes[root.id] && this.nodes[root.id] !== root) {
347
- console.error(`Child node '${parent.id}' does not belong to this '${root.id}' tree.`);
374
+ this.logger.error(`Child node '${parent.id}' does not belong to this '${root.id}' tree.`);
348
375
  return undefined;
349
376
  }
350
377
  this.removeNode(parent);
@@ -354,7 +381,7 @@ export class TreeImpl implements Tree {
354
381
  return parent;
355
382
  }
356
383
 
357
- protected removeNode(node: TreeNode | undefined): void {
384
+ removeNode(node: TreeNode | undefined): void {
358
385
  if (CompositeTreeNode.is(node)) {
359
386
  node.children.forEach(child => this.removeNode(child));
360
387
  }
@@ -15,11 +15,12 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { Container } from 'inversify';
18
- import { ContributionProvider } from '../../common';
18
+ import { ContributionProvider, ILogger } from '../../common';
19
19
  import { CorePreferences } from '../../common/core-preferences';
20
20
  import { FrontendApplicationContribution } from '../frontend-application-contribution';
21
21
  import { DefaultWindowService } from './default-window-service';
22
22
  import assert = require('assert');
23
+ import { MockLogger } from '../../common/test/mock-logger';
23
24
 
24
25
  describe('DefaultWindowService', () => {
25
26
  class TestFrontendApplicationContribution implements FrontendApplicationContribution {
@@ -42,6 +43,7 @@ describe('DefaultWindowService', () => {
42
43
  .toConstantValue({
43
44
  'application.confirmExit': confirmExit,
44
45
  });
46
+ container.bind(ILogger).to(MockLogger).inSingletonScope();
45
47
  return container.get(DefaultWindowService);
46
48
  }
47
49
  it('onWillStop should be called on every contribution (never)', () => {
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { inject, injectable, named } from 'inversify';
18
- import { Event, Emitter } from '../../common';
18
+ import { Event, Emitter, ILogger } from '../../common';
19
19
  import { CorePreferences } from '../../common/core-preferences';
20
20
  import { ContributionProvider } from '../../common/contribution-provider';
21
21
  import { FrontendApplicationContribution, OnWillStopAction } from '../frontend-application-contribution';
@@ -43,6 +43,9 @@ export class DefaultWindowService implements WindowService, FrontendApplicationC
43
43
  @named(FrontendApplicationContribution)
44
44
  protected readonly contributions: ContributionProvider<FrontendApplicationContribution>;
45
45
 
46
+ @inject(ILogger) @named('core:DefaultWindowService')
47
+ protected readonly logger: ILogger;
48
+
46
49
  onStart(app: FrontendApplication): void {
47
50
  this.frontendApplication = app;
48
51
  this.registerUnloadListeners();
@@ -114,7 +117,7 @@ export class DefaultWindowService implements WindowService, FrontendApplicationC
114
117
  return true;
115
118
  }
116
119
  const preparedValues = await Promise.all(vetoes.map(e => e.prepare?.(stopReason)));
117
- console.debug('Shutdown prevented by', vetoes.map(({ reason }) => reason).join(', '));
120
+ this.logger.debug('Shutdown prevented by', vetoes.map(({ reason }) => reason).join(', '));
118
121
  for (let i = 0; i < vetoes.length; i++) {
119
122
  try {
120
123
  const result = await vetoes[i].action(preparedValues[i], stopReason);
@@ -122,10 +125,10 @@ export class DefaultWindowService implements WindowService, FrontendApplicationC
122
125
  return false;
123
126
  }
124
127
  } catch (e) {
125
- console.error(e);
128
+ this.logger.error(e);
126
129
  }
127
130
  }
128
- console.debug('OnWillStop actions resolved; allowing shutdown');
131
+ this.logger.debug('OnWillStop actions resolved; allowing shutdown');
129
132
  this.allowVetoes = false;
130
133
  return true;
131
134
  }
@@ -145,10 +148,10 @@ export class DefaultWindowService implements WindowService, FrontendApplicationC
145
148
  const vetoes = this.collectContributionUnloadVetoes();
146
149
  if (vetoes.length) {
147
150
  // In the browser, we don't call the functions because this has to finish in a single tick, so we treat any desired action as a veto.
148
- console.debug('Shutdown prevented by', vetoes.map(({ reason }) => reason).join(', '));
151
+ this.logger.debug('Shutdown prevented by', vetoes.map(({ reason }) => reason).join(', '));
149
152
  return this.preventUnload(event);
150
153
  }
151
- console.debug('Shutdown will proceed.');
154
+ this.logger.debug('Shutdown will proceed.');
152
155
  }
153
156
 
154
157
  /**
@@ -14,8 +14,9 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
  import { Event, RpcProxy, Channel, RpcProxyFactory, Emitter } from '../../common';
17
- import { injectable } from 'inversify';
17
+ import { injectable, inject, named } from 'inversify';
18
18
  import { ServiceConnectionProvider } from '../../browser/messaging/service-connection-provider';
19
+ import { ILogger } from '../../common/logger';
19
20
  import { ConnectionSource } from '../../browser/messaging/connection-source';
20
21
 
21
22
  @injectable()
@@ -25,15 +26,19 @@ export class FrontendOnlyConnectionSource implements ConnectionSource {
25
26
 
26
27
  @injectable()
27
28
  export class FrontendOnlyServiceConnectionProvider extends ServiceConnectionProvider {
29
+
30
+ @inject(ILogger) @named('core:FrontendOnlyServiceConnectionProvider')
31
+ protected readonly logger: ILogger;
32
+
28
33
  onSocketDidOpen = Event.None;
29
34
  onSocketDidClose = Event.None;
30
35
  onIncomingMessageActivity = Event.None;
31
36
  override createProxy<T extends object>(path: unknown, target?: unknown): RpcProxy<T> {
32
- console.debug(`[Frontend-Only Fallback] Created proxy connection for ${path}`);
37
+ this.logger.debug(`[Frontend-Only Fallback] Created proxy connection for ${path}`);
33
38
  const factory = target instanceof RpcProxyFactory ? target : new RpcProxyFactory<T>(target);
34
39
  return factory.createProxy();
35
40
  }
36
41
  override listen(path: string, handler: ServiceConnectionProvider.ConnectionHandler, reconnect: boolean): void {
37
- console.debug('[Frontend-Only Fallback] Listen to websocket connection requested');
42
+ this.logger.debug('[Frontend-Only Fallback] Listen to websocket connection requested');
38
43
  }
39
44
  }
@@ -21,6 +21,7 @@ import { ContributionProvider } from './contribution-provider';
21
21
  import { nls } from './nls';
22
22
  import debounce = require('p-debounce');
23
23
  import { isObject } from './types';
24
+ import { ILogger } from './logger';
24
25
 
25
26
  /**
26
27
  * A command is a unique identifier of a function
@@ -190,6 +191,9 @@ export interface CommandService {
190
191
  @injectable()
191
192
  export class CommandRegistry implements CommandService {
192
193
 
194
+ @inject(ILogger) @named('core:CommandRegistry')
195
+ protected readonly logger: ILogger;
196
+
193
197
  protected readonly _commands: { [id: string]: Command } = {};
194
198
  protected readonly _handlers: { [id: string]: CommandHandler[] } = {};
195
199
 
@@ -232,7 +236,7 @@ export class CommandRegistry implements CommandService {
232
236
  */
233
237
  registerCommand(command: Command, handler?: CommandHandler): Disposable {
234
238
  if (this._commands[command.id]) {
235
- console.warn(`A command ${command.id} is already registered.`);
239
+ this.logger.warn(`A command ${command.id} is already registered.`);
236
240
  return Disposable.NULL;
237
241
  }
238
242
  const toDispose = new DisposableCollection(this.doRegisterCommand(command));
@@ -363,7 +367,7 @@ export class CommandRegistry implements CommandService {
363
367
  return handler;
364
368
  }
365
369
  } catch (error) {
366
- console.error(error);
370
+ this.logger.error(error);
367
371
  }
368
372
  }
369
373
  }
@@ -383,7 +387,7 @@ export class CommandRegistry implements CommandService {
383
387
  return handler;
384
388
  }
385
389
  } catch (error) {
386
- console.error(error);
390
+ this.logger.error(error);
387
391
  }
388
392
  }
389
393
  }
@@ -403,7 +407,7 @@ export class CommandRegistry implements CommandService {
403
407
  return handler;
404
408
  }
405
409
  } catch (error) {
406
- console.error(error);
410
+ this.logger.error(error);
407
411
  }
408
412
  }
409
413
  }