@theia/core 1.75.0-next.8 → 1.75.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 (275) hide show
  1. package/README.md +27 -24
  2. package/i18n/nls.cs.json +334 -98
  3. package/i18n/nls.de.json +335 -99
  4. package/i18n/nls.es.json +337 -101
  5. package/i18n/nls.fr.json +335 -99
  6. package/i18n/nls.hu.json +337 -101
  7. package/i18n/nls.it.json +334 -98
  8. package/i18n/nls.ja.json +335 -99
  9. package/i18n/nls.json +338 -102
  10. package/i18n/nls.ko.json +335 -99
  11. package/i18n/nls.pl.json +335 -99
  12. package/i18n/nls.pt-br.json +338 -102
  13. package/i18n/nls.ru.json +338 -102
  14. package/i18n/nls.tr.json +337 -101
  15. package/i18n/nls.zh-cn.json +337 -101
  16. package/i18n/nls.zh-tw.json +337 -101
  17. package/lib/browser/about-dialog.js +6 -35
  18. package/lib/browser/about-dialog.js.map +1 -1
  19. package/lib/browser/authentication-service.js +1 -1
  20. package/lib/browser/authentication-service.js.map +1 -1
  21. package/lib/browser/breadcrumbs/breadcrumb-renderer.js +2 -22
  22. package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -1
  23. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +2 -17
  24. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
  25. package/lib/browser/browser-clipboard-service.js +1 -0
  26. package/lib/browser/browser-clipboard-service.js.map +1 -1
  27. package/lib/browser/catalog.json +148 -37
  28. package/lib/browser/components/card.js +4 -10
  29. package/lib/browser/components/card.js.map +1 -1
  30. package/lib/browser/connection-status-service.d.ts +1 -0
  31. package/lib/browser/connection-status-service.d.ts.map +1 -1
  32. package/lib/browser/connection-status-service.js +7 -0
  33. package/lib/browser/connection-status-service.js.map +1 -1
  34. package/lib/browser/dialogs/react-dialog.js +2 -17
  35. package/lib/browser/dialogs/react-dialog.js.map +1 -1
  36. package/lib/browser/dialogs/react-dialog.spec.js +3 -3
  37. package/lib/browser/dialogs/react-dialog.spec.js.map +1 -1
  38. package/lib/browser/dialogs.d.ts +1 -1
  39. package/lib/browser/dialogs.d.ts.map +1 -1
  40. package/lib/browser/dialogs.js +4 -3
  41. package/lib/browser/dialogs.js.map +1 -1
  42. package/lib/browser/frontend-application-state.js +1 -0
  43. package/lib/browser/frontend-application-state.js.map +1 -1
  44. package/lib/browser/hover-service.d.ts.map +1 -1
  45. package/lib/browser/hover-service.js +13 -0
  46. package/lib/browser/hover-service.js.map +1 -1
  47. package/lib/browser/icon-theme-service.d.ts +5 -3
  48. package/lib/browser/icon-theme-service.d.ts.map +1 -1
  49. package/lib/browser/icon-theme-service.js +7 -1
  50. package/lib/browser/icon-theme-service.js.map +1 -1
  51. package/lib/browser/keyboard/browser-keyboard-layout-provider.js +1 -0
  52. package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
  53. package/lib/browser/markdown-rendering/markdown-link-handler.d.ts +11 -0
  54. package/lib/browser/markdown-rendering/markdown-link-handler.d.ts.map +1 -1
  55. package/lib/browser/markdown-rendering/markdown-link-handler.js +23 -1
  56. package/lib/browser/markdown-rendering/markdown-link-handler.js.map +1 -1
  57. package/lib/browser/markdown-rendering/markdown-renderer.d.ts +11 -0
  58. package/lib/browser/markdown-rendering/markdown-renderer.d.ts.map +1 -1
  59. package/lib/browser/markdown-rendering/markdown-renderer.js +41 -0
  60. package/lib/browser/markdown-rendering/markdown-renderer.js.map +1 -1
  61. package/lib/browser/markdown-rendering/markdown-renderer.spec.d.ts +2 -0
  62. package/lib/browser/markdown-rendering/markdown-renderer.spec.d.ts.map +1 -0
  63. package/lib/browser/markdown-rendering/markdown-renderer.spec.js +79 -0
  64. package/lib/browser/markdown-rendering/markdown-renderer.spec.js.map +1 -0
  65. package/lib/browser/markdown-rendering/markdown.js +6 -5
  66. package/lib/browser/markdown-rendering/markdown.js.map +1 -1
  67. package/lib/browser/markdown-rendering/markdown.spec.js +16 -16
  68. package/lib/browser/markdown-rendering/markdown.spec.js.map +1 -1
  69. package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -1
  70. package/lib/browser/messaging/ws-connection-source.js +3 -0
  71. package/lib/browser/messaging/ws-connection-source.js.map +1 -1
  72. package/lib/browser/open-with-service.d.ts +2 -1
  73. package/lib/browser/open-with-service.d.ts.map +1 -1
  74. package/lib/browser/open-with-service.js +6 -1
  75. package/lib/browser/open-with-service.js.map +1 -1
  76. package/lib/browser/performance/frontend-stopwatch.d.ts +2 -1
  77. package/lib/browser/performance/frontend-stopwatch.d.ts.map +1 -1
  78. package/lib/browser/performance/frontend-stopwatch.js +6 -1
  79. package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
  80. package/lib/browser/perspective-service.js +1 -1
  81. package/lib/browser/perspective-service.js.map +1 -1
  82. package/lib/browser/preferences/preference-proxy.spec.js +3 -0
  83. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  84. package/lib/browser/preferences/preference-service.spec.js +3 -0
  85. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  86. package/lib/browser/preferences/preference-validation-service.js +1 -1
  87. package/lib/browser/preferences/preference-validation-service.js.map +1 -1
  88. package/lib/browser/saveable-service.d.ts +2 -1
  89. package/lib/browser/saveable-service.d.ts.map +1 -1
  90. package/lib/browser/saveable-service.js +6 -1
  91. package/lib/browser/saveable-service.js.map +1 -1
  92. package/lib/browser/shell/application-shell.js +3 -3
  93. package/lib/browser/shell/application-shell.js.map +1 -1
  94. package/lib/browser/shell/application-shell.spec.d.ts +2 -0
  95. package/lib/browser/shell/application-shell.spec.d.ts.map +1 -0
  96. package/lib/browser/shell/application-shell.spec.js +57 -0
  97. package/lib/browser/shell/application-shell.spec.js.map +1 -0
  98. package/lib/browser/shell/shell-layout-restorer.d.ts +1 -1
  99. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  100. package/lib/browser/shell/shell-layout-restorer.js +5 -4
  101. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  102. package/lib/browser/shell/sidebar-menu-widget.js +6 -7
  103. package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
  104. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
  105. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +4 -22
  106. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
  107. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +2 -1
  108. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
  109. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +6 -1
  110. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
  111. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +8 -10
  112. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  113. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js +2 -20
  114. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js.map +1 -1
  115. package/lib/browser/source-tree/source-tree-widget.js +3 -18
  116. package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
  117. package/lib/browser/status-bar/status-bar-view-model.d.ts +2 -1
  118. package/lib/browser/status-bar/status-bar-view-model.d.ts.map +1 -1
  119. package/lib/browser/status-bar/status-bar-view-model.js +6 -1
  120. package/lib/browser/status-bar/status-bar-view-model.js.map +1 -1
  121. package/lib/browser/status-bar/status-bar.js +10 -11
  122. package/lib/browser/status-bar/status-bar.js.map +1 -1
  123. package/lib/browser/storage-service.d.ts +1 -1
  124. package/lib/browser/storage-service.d.ts.map +1 -1
  125. package/lib/browser/storage-service.js +1 -0
  126. package/lib/browser/storage-service.js.map +1 -1
  127. package/lib/browser/tooltip-service.js +5 -5
  128. package/lib/browser/tooltip-service.js.map +1 -1
  129. package/lib/browser/tree/search-box.js +9 -16
  130. package/lib/browser/tree/search-box.js.map +1 -1
  131. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +7 -9
  132. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
  133. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  134. package/lib/browser/tree/tree-model.js +1 -0
  135. package/lib/browser/tree/tree-model.js.map +1 -1
  136. package/lib/browser/tree/tree-view-welcome-widget.js +8 -30
  137. package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
  138. package/lib/browser/tree/tree-widget.js +30 -42
  139. package/lib/browser/tree/tree-widget.js.map +1 -1
  140. package/lib/browser/widget-manager.js +1 -0
  141. package/lib/browser/widget-manager.js.map +1 -1
  142. package/lib/browser/widgets/alert-message.js +4 -8
  143. package/lib/browser/widgets/alert-message.js.map +1 -1
  144. package/lib/browser/widgets/react-renderer.js +5 -4
  145. package/lib/browser/widgets/react-renderer.js.map +1 -1
  146. package/lib/browser/widgets/react-widget.js +5 -4
  147. package/lib/browser/widgets/react-widget.js.map +1 -1
  148. package/lib/browser/widgets/select-component.d.ts +2 -2
  149. package/lib/browser/widgets/select-component.d.ts.map +1 -1
  150. package/lib/browser/widgets/select-component.js +14 -19
  151. package/lib/browser/widgets/select-component.js.map +1 -1
  152. package/lib/browser/window/default-secondary-window-service.d.ts +2 -1
  153. package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
  154. package/lib/browser/window/default-secondary-window-service.js +9 -4
  155. package/lib/browser/window/default-secondary-window-service.js.map +1 -1
  156. package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -1
  157. package/lib/browser-only/frontend-only-application-module.js +25 -1
  158. package/lib/browser-only/frontend-only-application-module.js.map +1 -1
  159. package/lib/common/command.d.ts +37 -0
  160. package/lib/common/command.d.ts.map +1 -1
  161. package/lib/common/command.js +74 -4
  162. package/lib/common/command.js.map +1 -1
  163. package/lib/common/command.spec.js +109 -0
  164. package/lib/common/command.spec.js.map +1 -1
  165. package/lib/common/message-service-protocol.d.ts +2 -0
  166. package/lib/common/message-service-protocol.d.ts.map +1 -1
  167. package/lib/common/message-service-protocol.js +8 -2
  168. package/lib/common/message-service-protocol.js.map +1 -1
  169. package/lib/common/performance/stopwatch.js +1 -0
  170. package/lib/common/performance/stopwatch.js.map +1 -1
  171. package/lib/common/preferences/preference-schema-service.d.ts +2 -0
  172. package/lib/common/preferences/preference-schema-service.d.ts.map +1 -1
  173. package/lib/common/preferences/preference-schema-service.js +11 -5
  174. package/lib/common/preferences/preference-schema-service.js.map +1 -1
  175. package/lib/common/preferences/preference-service.d.ts +2 -0
  176. package/lib/common/preferences/preference-service.d.ts.map +1 -1
  177. package/lib/common/preferences/preference-service.js +7 -1
  178. package/lib/common/preferences/preference-service.js.map +1 -1
  179. package/lib/electron-browser/window/window-zoom-action-bar.js +6 -11
  180. package/lib/electron-browser/window/window-zoom-action-bar.js.map +1 -1
  181. package/lib/node/backend-application.js +6 -6
  182. package/lib/node/backend-application.js.map +1 -1
  183. package/lib/node/backend-application.spec.js +6 -3
  184. package/lib/node/backend-application.spec.js.map +1 -1
  185. package/lib/node/console-logger-server.d.ts.map +1 -1
  186. package/lib/node/console-logger-server.js +2 -0
  187. package/lib/node/console-logger-server.js.map +1 -1
  188. package/lib/node/env-variables/env-variables-server.d.ts +2 -0
  189. package/lib/node/env-variables/env-variables-server.d.ts.map +1 -1
  190. package/lib/node/env-variables/env-variables-server.js +7 -1
  191. package/lib/node/env-variables/env-variables-server.js.map +1 -1
  192. package/lib/node/hosting/browser-connection-token.d.ts +2 -0
  193. package/lib/node/hosting/browser-connection-token.d.ts.map +1 -1
  194. package/lib/node/hosting/browser-connection-token.js +14 -1
  195. package/lib/node/hosting/browser-connection-token.js.map +1 -1
  196. package/lib/node/hosting/browser-connection-token.spec.js +25 -2
  197. package/lib/node/hosting/browser-connection-token.spec.js.map +1 -1
  198. package/lib/node/key-store-server.d.ts +2 -0
  199. package/lib/node/key-store-server.d.ts.map +1 -1
  200. package/lib/node/key-store-server.js +6 -1
  201. package/lib/node/key-store-server.js.map +1 -1
  202. package/lib/node/logger-cli-contribution.d.ts.map +1 -1
  203. package/lib/node/logger-cli-contribution.js.map +1 -1
  204. package/lib/node/messaging/default-messaging-service.js +1 -1
  205. package/lib/node/messaging/default-messaging-service.js.map +1 -1
  206. package/lib/node/messaging/ipc-connection-provider.js +1 -0
  207. package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
  208. package/lib/node/messaging/websocket-endpoint.js +1 -1
  209. package/lib/node/messaging/websocket-endpoint.js.map +1 -1
  210. package/lib/node/messaging/websocket-frontend-connection-service.d.ts +2 -1
  211. package/lib/node/messaging/websocket-frontend-connection-service.d.ts.map +1 -1
  212. package/lib/node/messaging/websocket-frontend-connection-service.js +11 -6
  213. package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -1
  214. package/lib/node/setting-service.js +1 -0
  215. package/lib/node/setting-service.js.map +1 -1
  216. package/package.json +32 -29
  217. package/shared/react/jsx-dev-runtime/index.d.ts +1 -0
  218. package/shared/react/jsx-dev-runtime/index.js +1 -0
  219. package/shared/react/jsx-runtime/index.d.ts +1 -0
  220. package/shared/react/jsx-runtime/index.js +1 -0
  221. package/shared/react-dom/server/index.d.ts +1 -0
  222. package/shared/react-dom/server/index.js +1 -0
  223. package/src/browser/authentication-service.ts +1 -1
  224. package/src/browser/browser-clipboard-service.ts +2 -2
  225. package/src/browser/connection-status-service.ts +7 -3
  226. package/src/browser/dialogs.ts +3 -2
  227. package/src/browser/frontend-application-state.ts +2 -2
  228. package/src/browser/hover-service.ts +13 -0
  229. package/src/browser/icon-theme-service.ts +6 -2
  230. package/src/browser/keyboard/browser-keyboard-layout-provider.ts +2 -2
  231. package/src/browser/markdown-rendering/markdown-link-handler.ts +23 -1
  232. package/src/browser/markdown-rendering/markdown-renderer.spec.ts +88 -0
  233. package/src/browser/markdown-rendering/markdown-renderer.ts +43 -0
  234. package/src/browser/messaging/ws-connection-source.ts +4 -0
  235. package/src/browser/open-with-service.ts +6 -3
  236. package/src/browser/performance/frontend-stopwatch.ts +6 -3
  237. package/src/browser/perspective-service.ts +1 -1
  238. package/src/browser/preferences/preference-proxy.spec.ts +3 -0
  239. package/src/browser/preferences/preference-service.spec.ts +3 -0
  240. package/src/browser/preferences/preference-validation-service.ts +1 -1
  241. package/src/browser/saveable-service.ts +5 -2
  242. package/src/browser/shell/application-shell.spec.ts +62 -0
  243. package/src/browser/shell/application-shell.ts +4 -4
  244. package/src/browser/shell/shell-layout-restorer.ts +6 -5
  245. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +3 -2
  246. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +5 -2
  247. package/src/browser/status-bar/status-bar-view-model.ts +7 -3
  248. package/src/browser/storage-service.ts +4 -2
  249. package/src/browser/style/sidepanel.css +2 -0
  250. package/src/browser/style/tabs.css +2 -0
  251. package/src/browser/style/view-container.css +2 -0
  252. package/src/browser/tree/tree-model.ts +4 -2
  253. package/src/browser/widget-manager.ts +1 -1
  254. package/src/browser/window/default-secondary-window-service.ts +9 -6
  255. package/src/browser-only/frontend-only-application-module.ts +25 -1
  256. package/src/common/command.spec.ts +125 -0
  257. package/src/common/command.ts +77 -4
  258. package/src/common/i18n/nls.metadata.json +3933 -1186
  259. package/src/common/message-service-protocol.ts +7 -3
  260. package/src/common/performance/stopwatch.ts +2 -2
  261. package/src/common/preferences/preference-schema-service.ts +9 -5
  262. package/src/common/preferences/preference-service.ts +6 -2
  263. package/src/node/backend-application.spec.ts +6 -3
  264. package/src/node/backend-application.ts +6 -6
  265. package/src/node/console-logger-server.ts +3 -0
  266. package/src/node/env-variables/env-variables-server.ts +6 -2
  267. package/src/node/hosting/browser-connection-token.spec.ts +30 -3
  268. package/src/node/hosting/browser-connection-token.ts +13 -2
  269. package/src/node/key-store-server.ts +6 -3
  270. package/src/node/logger-cli-contribution.ts +3 -0
  271. package/src/node/messaging/default-messaging-service.ts +1 -1
  272. package/src/node/messaging/ipc-connection-provider.ts +2 -2
  273. package/src/node/messaging/websocket-endpoint.ts +1 -1
  274. package/src/node/messaging/websocket-frontend-connection-service.ts +11 -8
  275. package/src/node/setting-service.ts +2 -2
@@ -14,9 +14,10 @@
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 { CancellationToken } from './cancellation';
19
19
  import { nls } from './nls';
20
+ import { ILogger } from './logger';
20
21
 
21
22
  export const messageServicePath = '/services/messageService';
22
23
 
@@ -115,6 +116,9 @@ export interface ProgressUpdate {
115
116
  @injectable()
116
117
  export class MessageClient {
117
118
 
119
+ @inject(ILogger) @named('core:MessageClient')
120
+ protected readonly logger: ILogger;
121
+
118
122
  /**
119
123
  * Show a message of the given type and possible actions to the user.
120
124
  * Resolve to a chosen action.
@@ -123,7 +127,7 @@ export class MessageClient {
123
127
  * To be implemented by an extension, e.g. by the messages extension.
124
128
  */
125
129
  showMessage(message: Message): Promise<string | undefined> {
126
- console.info(message.text);
130
+ this.logger.info(message.text);
127
131
  return Promise.resolve(undefined);
128
132
  }
129
133
 
@@ -133,7 +137,7 @@ export class MessageClient {
133
137
  * To be implemented by an extension, e.g. by the messages extension.
134
138
  */
135
139
  showProgress(progressId: string, message: ProgressMessage, cancellationToken: CancellationToken): Promise<string | undefined> {
136
- console.info(message.text);
140
+ this.logger.info(message.text);
137
141
  return Promise.resolve(undefined);
138
142
  }
139
143
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
18
18
 
19
- import { inject, injectable, unmanaged } from 'inversify';
19
+ import { inject, injectable, unmanaged, named } from 'inversify';
20
20
  import { ILogger, LogLevel } from '../logger';
21
21
  import { MaybePromise } from '../types';
22
22
  import { Measurement, MeasurementOptions, MeasurementResult } from './measurement';
@@ -48,7 +48,7 @@ interface LogOptions extends MeasurementOptions {
48
48
  @injectable()
49
49
  export abstract class Stopwatch {
50
50
 
51
- @inject(ILogger)
51
+ @inject(ILogger) @named('core:Stopwatch')
52
52
  protected readonly logger: ILogger;
53
53
 
54
54
  protected _storedMeasurements: MeasurementResult[] = [];
@@ -24,6 +24,7 @@ import { PreferenceScope, ValidPreferenceScopes } from './preference-scope';
24
24
  import { PreferenceUtils } from './preference-provider';
25
25
  import { ContributionProvider } from '../contribution-provider';
26
26
  import { Deferred } from '../promise-util';
27
+ import { ILogger } from '../logger';
27
28
 
28
29
  export const NO_OVERRIDE = {};
29
30
  export const OVERRIDE_PROPERTY = '\\[(.*)\\]$';
@@ -78,6 +79,9 @@ export class PreferenceSchemaServiceImpl implements PreferenceSchemaService {
78
79
  @inject(ContributionProvider) @named(PreferenceContribution)
79
80
  protected readonly preferenceContributions: ContributionProvider<PreferenceContribution>;
80
81
 
82
+ @inject(ILogger) @named('core:PreferenceSchemaServiceImpl')
83
+ protected readonly logger: ILogger;
84
+
81
85
  @postConstruct()
82
86
  protected init(): void {
83
87
  for (const scope of this.validScopes) {
@@ -128,7 +132,7 @@ export class PreferenceSchemaServiceImpl implements PreferenceSchemaService {
128
132
 
129
133
  for (const [key, property] of Object.entries(schema.properties)) {
130
134
  if (this.properties.has(key)) {
131
- console.warn(`Property with id '${key}' already exists`);
135
+ this.logger.warn(`Property with id '${key}' already exists`);
132
136
  continue;
133
137
  }
134
138
  this.pendingDefaultRegistrationWarnings?.delete(key);
@@ -210,14 +214,14 @@ export class PreferenceSchemaServiceImpl implements PreferenceSchemaService {
210
214
  this.setJSONSchemasProperty(key, updatedProperty);
211
215
  this.schemaChangedEmitter.fire();
212
216
  } else {
213
- console.warn(`Trying to update non-existent property ${key}`);
217
+ this.logger.warn(`Trying to update non-existent property ${key}`);
214
218
  }
215
219
  }
216
220
 
217
221
  protected pendingDefaultRegistrationWarnings: Set<string> | undefined = new Set();
218
222
  protected logDefaultRegistrationWarnings(): void {
219
223
  if (this.pendingDefaultRegistrationWarnings?.size) {
220
- console.warn('Default overrides registered for these keys, but preferences not registered', Array.from(this.pendingDefaultRegistrationWarnings));
224
+ this.logger.warn('Default overrides registered for these keys, but preferences not registered', Array.from(this.pendingDefaultRegistrationWarnings));
221
225
  }
222
226
  this.pendingDefaultRegistrationWarnings = undefined;
223
227
  }
@@ -226,7 +230,7 @@ export class PreferenceSchemaServiceImpl implements PreferenceSchemaService {
226
230
  if (this.pendingDefaultRegistrationWarnings) {
227
231
  this.pendingDefaultRegistrationWarnings.add(key);
228
232
  } else {
229
- console.warn(`Trying to register default override for non-existent preference: ${key}`);
233
+ this.logger.warn(`Trying to register default override for non-existent preference: ${key}`);
230
234
  }
231
235
  }
232
236
 
@@ -236,7 +240,7 @@ export class PreferenceSchemaServiceImpl implements PreferenceSchemaService {
236
240
  if (!property) {
237
241
  this.logDefaultRegistrationWarning(key);
238
242
  } else if (!property.overridable && overrideIdentifier) {
239
- console.warn(`Trying to register default override for identifier ${overrideIdentifier} for non-overridable preference: ${key}`);
243
+ this.logger.warn(`Trying to register default override for identifier ${overrideIdentifier} for non-overridable preference: ${key}`);
240
244
  }
241
245
 
242
246
  let overrides = this.defaultOverrides.get(key);
@@ -17,7 +17,7 @@
17
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
18
18
 
19
19
  import { JSONValue } from '@lumino/coreutils';
20
- import { inject, injectable, postConstruct } from 'inversify';
20
+ import { inject, injectable, postConstruct, named } from 'inversify';
21
21
  import { Disposable, DisposableCollection } from '../disposable';
22
22
  import { Emitter, Event } from '../event';
23
23
  import { Deferred } from '../promise-util';
@@ -29,6 +29,7 @@ import { PreferenceScope } from './preference-scope';
29
29
  import { PreferenceConfigurations } from './preference-configurations';
30
30
  import { deepFreeze } from '../objects';
31
31
  import { unreachable } from '../types';
32
+ import { ILogger } from '../logger';
32
33
 
33
34
  /**
34
35
  * Representation of a preference change. A preference value can be set to `undefined` for a specific scope.
@@ -296,6 +297,9 @@ export class PreferenceServiceImpl implements PreferenceService {
296
297
  @inject(PreferenceLanguageOverrideService)
297
298
  protected readonly preferenceOverrideService: PreferenceLanguageOverrideService;
298
299
 
300
+ @inject(ILogger) @named('core:PreferenceServiceImpl')
301
+ protected readonly logger: ILogger;
302
+
299
303
  protected readonly preferenceProviders = new Map<PreferenceScope, PreferenceProvider>();
300
304
 
301
305
  protected async initializeProviders(): Promise<void> {
@@ -309,7 +313,7 @@ export class PreferenceServiceImpl implements PreferenceService {
309
313
  ));
310
314
  await provider.ready;
311
315
  } else {
312
- console.warn(`No preference provider bound for ${PreferenceScope[scope]}`);
316
+ this.logger.warn(`No preference provider bound for ${PreferenceScope[scope]}`);
313
317
  }
314
318
  }
315
319
  this._ready.resolve();
@@ -142,7 +142,8 @@ describe('BackendApplication', () => {
142
142
  const container = createTestContainer();
143
143
  const cleanupError = new Error('cleanup boom');
144
144
  sandbox.stub(container, 'unbindAllAsync').rejects(cleanupError);
145
- const warnStub = sandbox.stub(console, 'warn');
145
+ const mockLogger = container.get(ILogger) as ILogger;
146
+ const warnStub = sandbox.stub(mockLogger, 'warn');
146
147
 
147
148
  const app = container.get(TestBackendApplication);
148
149
 
@@ -157,7 +158,8 @@ describe('BackendApplication', () => {
157
158
  const clock = sandbox.useFakeTimers();
158
159
  const container = createTestContainer();
159
160
  sandbox.stub(container, 'unbindAllAsync').returns(new Promise<void>(() => { /* never */ }));
160
- const warnStub = sandbox.stub(console, 'warn');
161
+ const mockLogger = container.get(ILogger) as ILogger;
162
+ const warnStub = sandbox.stub(mockLogger, 'warn');
161
163
 
162
164
  const app = container.get(TestBackendApplication);
163
165
 
@@ -220,7 +222,8 @@ describe('BackendApplication', () => {
220
222
  onStop: () => new Promise<void>(() => { /* never */ })
221
223
  });
222
224
  const unbindSpy = sandbox.spy(container, 'unbindAllAsync');
223
- const warnStub = sandbox.stub(console, 'warn');
225
+ const mockLogger = container.get(ILogger) as ILogger;
226
+ const warnStub = sandbox.stub(mockLogger, 'warn');
224
227
 
225
228
  const app = container.get(TestBackendApplication);
226
229
  const shutdownPromise = app.invokeGracefulShutdown();
@@ -161,7 +161,7 @@ export class BackendApplicationCliContribution implements CliContribution {
161
161
  conf.option(APP_PROJECT_PATH, { description: 'Sets the application project directory', deprecated: true });
162
162
  conf.option('dnsDefaultResultOrder', {
163
163
  type: 'string',
164
- description: 'Configure Node\'s DNS resolver default behavior, see https://nodejs.org/docs/latest-v22.x/api/dns.html#dnssetdefaultresultorderorder',
164
+ description: 'Configure Node\'s DNS resolver default behavior, see https://nodejs.org/docs/latest-v24.x/api/dns.html#dnssetdefaultresultorderorder',
165
165
  choices: ['ipv4first', 'verbatim', 'nodeDefault'],
166
166
  default: DEFAULT_DNS_DEFAULT_RESULT_ORDER
167
167
  });
@@ -226,7 +226,7 @@ export class BackendApplication {
226
226
 
227
227
  // Handles `Ctrl+C` and `kill pid`. Delegates to gracefulShutdown so that
228
228
  // root-scoped singletons get their @preDestroy hooks invoked before exit.
229
- const onSignal = () => { this.gracefulShutdown().catch(err => console.error(err)); };
229
+ const onSignal = () => { this.gracefulShutdown().catch(err => this.logger.error(err)); };
230
230
  process.on('SIGINT', onSignal);
231
231
  process.on('SIGTERM', onSignal);
232
232
  }
@@ -407,7 +407,7 @@ export class BackendApplication {
407
407
  ]);
408
408
  } catch (err) {
409
409
  const message = err instanceof Error ? err.message : String(err);
410
- console.warn(`Backend contributions cleanup failed: ${message}`);
410
+ this.logger.warn(`Backend contributions cleanup failed: ${message}`);
411
411
  }
412
412
 
413
413
  try {
@@ -417,7 +417,7 @@ export class BackendApplication {
417
417
  ]);
418
418
  } catch (err) {
419
419
  const message = err instanceof Error ? err.message : String(err);
420
- console.warn(`Backend root container cleanup failed: ${message}`);
420
+ this.logger.warn(`Backend root container cleanup failed: ${message}`);
421
421
  }
422
422
 
423
423
  process.exit(1);
@@ -428,7 +428,7 @@ export class BackendApplication {
428
428
  return;
429
429
  }
430
430
  this.stoppedContributions = true;
431
- console.info('>>> Stopping backend contributions...');
431
+ this.logger.info('>>> Stopping backend contributions...');
432
432
  // The `async` wrapper converts a synchronous throw inside a non-async
433
433
  // contribution's `onStop` into a rejected promise so the per-contribution
434
434
  // try/catch can handle it; otherwise `Promise.all` would abort.
@@ -441,7 +441,7 @@ export class BackendApplication {
441
441
  }
442
442
  }
443
443
  }));
444
- console.info('<<< All backend contributions have been stopped.');
444
+ this.logger.info('<<< All backend contributions have been stopped.');
445
445
  }
446
446
 
447
447
  protected onStop(): void {
@@ -14,6 +14,9 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ // This is the console logger itself, so it cannot log through an ILogger.
18
+ /* eslint-disable @theia/named-logger-check */
19
+
17
20
  import { inject, injectable, postConstruct } from 'inversify';
18
21
  import { LoggerWatcher } from '../common/logger-watcher';
19
22
  import { LogLevelCliContribution } from './logger-cli-contribution';
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { join } from 'path';
18
18
  import { homedir } from 'os';
19
- import { injectable } from 'inversify';
19
+ import { injectable, inject, named } from 'inversify';
20
20
  import * as drivelist from 'drivelist';
21
21
  import { pathExists, mkdir } from 'fs-extra';
22
22
  import { EnvVariable, EnvVariablesServer } from '../../common/env-variables';
@@ -24,6 +24,7 @@ import { isWindows } from '../../common/os';
24
24
  import { FileUri } from '../../common/file-uri';
25
25
  import { BackendApplicationPath } from '../backend-application';
26
26
  import { BackendApplicationConfigProvider } from '../backend-application-config-provider';
27
+ import { ILogger } from '../../common/logger';
27
28
 
28
29
  @injectable()
29
30
  export class EnvVariablesServerImpl implements EnvVariablesServer {
@@ -33,9 +34,12 @@ export class EnvVariablesServerImpl implements EnvVariablesServer {
33
34
  protected readonly configDirUri: Promise<string>;
34
35
  protected readonly pathExistenceCache: { [key: string]: boolean } = {};
35
36
 
37
+ @inject(ILogger) @named('core:EnvVariablesServerImpl')
38
+ protected readonly logger: ILogger;
39
+
36
40
  constructor() {
37
41
  this.configDirUri = this.createConfigDirUri();
38
- this.configDirUri.then(configDirUri => console.log(`Configuration directory URI: '${configDirUri}'`));
42
+ this.configDirUri.then(configDirUri => this.logger.info(`Configuration directory URI: '${configDirUri}'`));
39
43
  const prEnv = process.env;
40
44
  Object.keys(prEnv).forEach((key: string) => {
41
45
  let keyName = key;
@@ -109,19 +109,24 @@ describe('BrowserConnectionTokenBackendContribution', () => {
109
109
  interface MockResponse {
110
110
  cookieCalls: CookieCall[];
111
111
  nextCalled: boolean;
112
+ requestHeaders: Record<string, string | undefined>;
112
113
  }
113
114
 
114
- function callMiddleware(cookieValue?: string): MockResponse {
115
+ function callMiddleware(cookieValue?: string, conditionalHeaders = false): MockResponse {
115
116
  const contribution = createContribution();
116
- const result: MockResponse = { cookieCalls: [], nextCalled: false };
117
-
118
117
  const req = {
119
118
  headers: {} as Record<string, string | undefined>,
120
119
  socket: { remoteAddress: '127.0.0.1' }
121
120
  };
121
+ const result: MockResponse = { cookieCalls: [], nextCalled: false, requestHeaders: req.headers };
122
+
122
123
  if (cookieValue !== undefined) {
123
124
  req.headers.cookie = `${BROWSER_TOKEN_COOKIE_NAME}=${cookieValue}`;
124
125
  }
126
+ if (conditionalHeaders) {
127
+ req.headers['if-none-match'] = 'W/"etag"';
128
+ req.headers['if-modified-since'] = 'Thu, 01 Jan 2026 00:00:00 GMT';
129
+ }
125
130
 
126
131
  const res = {
127
132
  cookie: (name: string, value: string, options: Record<string, unknown>) => {
@@ -164,6 +169,28 @@ describe('BrowserConnectionTokenBackendContribution', () => {
164
169
  expect(result.cookieCalls).to.have.length(1);
165
170
  expect(result.cookieCalls[0].value).to.equal(token.value);
166
171
  });
172
+
173
+ it('should drop conditional request headers when re-issuing the cookie (stale token)', () => {
174
+ const result = callMiddleware('stale-token-from-old-server', true);
175
+ expect(result.nextCalled).to.be.true;
176
+ expect(result.cookieCalls).to.have.length(1);
177
+ expect(result.requestHeaders['if-none-match']).to.be.undefined;
178
+ expect(result.requestHeaders['if-modified-since']).to.be.undefined;
179
+ });
180
+
181
+ it('should drop conditional request headers when issuing the cookie (no cookie)', () => {
182
+ const result = callMiddleware(undefined, true);
183
+ expect(result.cookieCalls).to.have.length(1);
184
+ expect(result.requestHeaders['if-none-match']).to.be.undefined;
185
+ expect(result.requestHeaders['if-modified-since']).to.be.undefined;
186
+ });
187
+
188
+ it('should keep conditional request headers when the cookie is valid', () => {
189
+ const result = callMiddleware(token.value, true);
190
+ expect(result.cookieCalls).to.have.length(0);
191
+ expect(result.requestHeaders['if-none-match']).to.equal('W/"etag"');
192
+ expect(result.requestHeaders['if-modified-since']).to.equal('Thu, 01 Jan 2026 00:00:00 GMT');
193
+ });
167
194
  });
168
195
 
169
196
  describe('validateRequest (HTTP token enforcement)', () => {
@@ -18,12 +18,13 @@ import * as cookie from 'cookie';
18
18
  import * as crypto from 'crypto';
19
19
  import * as http from 'http';
20
20
  import express = require('express');
21
- import { inject, injectable } from 'inversify';
21
+ import { inject, injectable, named } from 'inversify';
22
22
  import { environment } from '../../common/index';
23
23
  import { MaybePromise } from '../../common';
24
24
  import { BackendApplicationContribution, EarlyExpressMiddleware } from '../backend-application';
25
25
  import { WsRequestValidatorContribution } from '../ws-request-validators';
26
26
  import { generateUuid } from '../../common/uuid';
27
+ import { ILogger } from '../../common/logger';
27
28
 
28
29
  export const BrowserConnectionToken = Symbol('BrowserConnectionToken');
29
30
 
@@ -79,6 +80,9 @@ export class BrowserConnectionTokenBackendContribution implements BackendApplica
79
80
  @inject(EarlyExpressMiddleware)
80
81
  protected readonly earlyMiddleware: EarlyExpressMiddleware;
81
82
 
83
+ @inject(ILogger) @named('core:BrowserConnectionTokenBackendContribution')
84
+ protected readonly logger: ILogger;
85
+
82
86
  /**
83
87
  * Register the cookie middleware during `initialize()` via `EarlyExpressMiddleware`
84
88
  * so it runs before `express.static()` (which is registered later during `configure()`).
@@ -138,6 +142,13 @@ export class BrowserConnectionTokenBackendContribution implements BackendApplica
138
142
  sameSite: 'strict',
139
143
  path: '/'
140
144
  });
145
+ // The static handlers would answer a revalidation of an unchanged page with a 304,
146
+ // and reverse proxies commonly drop Set-Cookie from 304 replies or answer the
147
+ // revalidation from their own cache. The browser would then keep the stale token
148
+ // and every WebSocket handshake would be rejected, with no way to recover short of
149
+ // a cache-bypassing hard reload. Force a full 200 so the cookie reaches the browser.
150
+ delete req.headers['if-none-match'];
151
+ delete req.headers['if-modified-since'];
141
152
  }
142
153
  next();
143
154
  }
@@ -156,7 +167,7 @@ export class BrowserConnectionTokenBackendContribution implements BackendApplica
156
167
  const expected = Buffer.from(this.browserConnectionToken.value, 'utf8');
157
168
  return received.byteLength === expected.byteLength && crypto.timingSafeEqual(received, expected);
158
169
  } catch (error) {
159
- console.error(error);
170
+ this.logger.error(error);
160
171
  }
161
172
  return false;
162
173
  }
@@ -21,12 +21,15 @@
21
21
  // code copied and modified from https://github.com/microsoft/vscode/blob/1.55.2/src/vs/platform/native/electron-main/nativeHostMainService.ts#L679-L771
22
22
 
23
23
  import { KeyStoreService } from '../common/key-store';
24
- import { injectable } from 'inversify';
25
- import { isWindows } from '../common';
24
+ import { injectable, inject, named } from 'inversify';
25
+ import { isWindows, ILogger } from '../common';
26
26
 
27
27
  @injectable()
28
28
  export class KeyStoreServiceImpl implements KeyStoreService {
29
29
 
30
+ @inject(ILogger) @named('core:KeyStoreServiceImpl')
31
+ protected readonly logger: ILogger;
32
+
30
33
  private static readonly MAX_PASSWORD_LENGTH = 2500;
31
34
  private static readonly PASSWORD_CHUNK_SIZE = KeyStoreServiceImpl.MAX_PASSWORD_LENGTH - 100;
32
35
 
@@ -108,7 +111,7 @@ export class KeyStoreServiceImpl implements KeyStoreService {
108
111
  await this.keytarImplementation.findCredentials('test-keytar-loads');
109
112
  } catch (err) {
110
113
  this.keytarImplementation = new InMemoryCredentialsProvider();
111
- console.warn('OS level credential store could not be accessed. Using in-memory credentials provider', err);
114
+ this.logger.warn('OS level credential store could not be accessed. Using in-memory credentials provider', err);
112
115
  }
113
116
  return this.keytarImplementation;
114
117
  }
@@ -14,6 +14,9 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ // Parses the log config the loggers are built from, so no ILogger exists yet.
18
+ /* eslint-disable @theia/named-logger-check */
19
+
17
20
  import * as yargs from 'yargs';
18
21
  import { injectable } from 'inversify';
19
22
  import { LogLevel } from '../common/logger';
@@ -75,7 +75,7 @@ export class DefaultMessagingService implements MessagingService, BackendApplica
75
75
  protected createMainChannelContainer(socket: Channel): Container {
76
76
  const connectionContainer: Container = this.container.createChild() as Container;
77
77
  connectionContainer.bind(MainChannel).toConstantValue(socket);
78
- socket.onClose(() => connectionContainer.unbindAllAsync().catch(e => console.error(e)));
78
+ socket.onClose(() => connectionContainer.unbindAllAsync().catch(e => this.logger.error(e)));
79
79
  return connectionContainer;
80
80
  }
81
81
 
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import * as cp from 'child_process';
18
- import { inject, injectable } from 'inversify';
18
+ import { inject, injectable, named } from 'inversify';
19
19
  import * as path from 'path';
20
20
  import { createInterface } from 'readline';
21
21
  import { Channel, ConnectionErrorHandler, Disposable, DisposableCollection, ILogger } from '../../common';
@@ -38,7 +38,7 @@ export type IPCConnectionOptions = Partial<ResolvedIPCConnectionOptions> & {
38
38
  @injectable()
39
39
  export class IPCConnectionProvider {
40
40
 
41
- @inject(ILogger)
41
+ @inject(ILogger) @named('core:IPCConnectionProvider')
42
42
  protected readonly logger: ILogger;
43
43
 
44
44
  listen(options: IPCConnectionOptions, acceptor: (connection: Channel) => void): Disposable {
@@ -55,7 +55,7 @@ export class WebsocketEndpoint implements BackendApplicationContribution {
55
55
  this.wsRequestValidator.allowWsUpgrade(req).then(
56
56
  allowed => callback(noError, allowed),
57
57
  error => {
58
- console.error('Error during WebSocket allowRequest validation:', error);
58
+ this.logger.error('Error during WebSocket allowRequest validation:', error);
59
59
  callback(error?.message ?? 'Validation error', false);
60
60
  }
61
61
  );
@@ -15,7 +15,7 @@
15
15
 
16
16
  import { Channel, WriteBuffer } from '../../common/message-rpc';
17
17
  import { MessagingService } from './messaging-service';
18
- import { inject, injectable, interfaces } from 'inversify';
18
+ import { inject, injectable, interfaces, named } from 'inversify';
19
19
  import { Socket } from 'socket.io';
20
20
  import { ConnectionHandlers, MessagingContainer } from './default-messaging-service';
21
21
  import { SocketWriteBuffer } from '../../common/messaging/socket-write-buffer';
@@ -25,7 +25,7 @@ import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '../../common/messag
25
25
  import { BackendApplicationConfigProvider } from '../backend-application-config-provider';
26
26
  import { WebsocketEndpoint } from './websocket-endpoint';
27
27
  import { ConnectionManagementMessages } from '../../common/messaging/connection-management';
28
- import { Disposable, DisposableCollection } from '../../common';
28
+ import { Disposable, DisposableCollection, ILogger } from '../../common';
29
29
 
30
30
  @injectable()
31
31
  export class WebsocketFrontendConnectionService implements FrontendConnectionService {
@@ -36,6 +36,9 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
36
36
  @inject(MessagingContainer)
37
37
  protected readonly container: interfaces.Container;
38
38
 
39
+ @inject(ILogger) @named('core:WebsocketFrontendConnectionService')
40
+ protected readonly logger: ILogger;
41
+
39
42
  protected readonly wsHandlers = new ConnectionHandlers();
40
43
  protected readonly connectionsByFrontend = new Map<string, ReconnectableSocketChannel>();
41
44
  protected readonly closeTimeouts = new Map<string, NodeJS.Timeout>();
@@ -65,7 +68,7 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
65
68
  socket.off(ConnectionManagementMessages.RECONNECT, reconnectListener);
66
69
  const channel = this.connectionsByFrontend.get(frontEndId);
67
70
  if (channel) {
68
- console.info(`Reconnecting to front end ${frontEndId}`);
71
+ this.logger.info(`Reconnecting to front end ${frontEndId}`);
69
72
  socket.emit(ConnectionManagementMessages.RECONNECT, true);
70
73
  channel.connect(socket);
71
74
  this.handleSocketDisconnect(socket, channel, frontEndId);
@@ -73,7 +76,7 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
73
76
  clearTimeout(pendingTimeout);
74
77
  this.closeTimeouts.delete(frontEndId);
75
78
  } else {
76
- console.info(`Reconnecting failed for ${frontEndId}`);
79
+ this.logger.info(`Reconnecting failed for ${frontEndId}`);
77
80
  socket.emit(ConnectionManagementMessages.RECONNECT, false);
78
81
  }
79
82
  };
@@ -82,7 +85,7 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
82
85
  }
83
86
 
84
87
  protected closeConnection(frontEndId: string, reason: string): void {
85
- console.info(`closing connection for ${frontEndId}`);
88
+ this.logger.info(`closing connection for ${frontEndId}`);
86
89
  const connection = this.connectionsByFrontend.get(frontEndId)!; // not called when no connection is present
87
90
 
88
91
  this.connectionsByFrontend.delete(frontEndId);
@@ -97,7 +100,7 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
97
100
  }
98
101
 
99
102
  protected createConnection(socket: Socket, frontEndId: string): ReconnectableSocketChannel {
100
- console.info(`creating connection for ${frontEndId}`);
103
+ this.logger.info(`creating connection for ${frontEndId}`);
101
104
  const channel = this.container.get(ReconnectableSocketChannel);
102
105
  channel.connect(socket);
103
106
 
@@ -107,7 +110,7 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
107
110
 
108
111
  handleSocketDisconnect(socket: Socket, channel: ReconnectableSocketChannel, frontEndId: string): void {
109
112
  socket.on('disconnect', evt => {
110
- console.info('socket closed');
113
+ this.logger.info('socket closed');
111
114
  channel.disconnect();
112
115
 
113
116
  const timeout = this.frontendConnectionTimeout();
@@ -115,7 +118,7 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
115
118
  if (timeout === 0 || isMarkedForClose) {
116
119
  this.closeConnection(frontEndId, evt);
117
120
  } else if (timeout > 0) {
118
- console.info(`setting close timeout for id ${frontEndId} to ${timeout}`);
121
+ this.logger.info(`setting close timeout for id ${frontEndId} to ${timeout}`);
119
122
  const handle = setTimeout(() => {
120
123
  this.closeConnection(frontEndId, evt);
121
124
  }, timeout);
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { promises as fs } from 'fs';
18
- import { inject, injectable, postConstruct } from 'inversify';
18
+ import { inject, injectable, postConstruct, named } from 'inversify';
19
19
  import { ILogger, URI } from '../common';
20
20
  import { EnvVariablesServer } from '../common/env-variables';
21
21
  import { Deferred } from '../common/promise-util';
@@ -32,7 +32,7 @@ export interface SettingService {
32
32
 
33
33
  @injectable()
34
34
  export class SettingServiceImpl implements SettingService {
35
- @inject(ILogger)
35
+ @inject(ILogger) @named('core:SettingServiceImpl')
36
36
  protected readonly logger: ILogger;
37
37
 
38
38
  @inject(EnvVariablesServer)