@theia/core 1.71.0-next.6 → 1.71.0-next.72

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 (232) hide show
  1. package/README.md +13 -13
  2. package/i18n/nls.cs.json +4 -4
  3. package/i18n/nls.de.json +4 -4
  4. package/i18n/nls.es.json +4 -4
  5. package/i18n/nls.fr.json +4 -4
  6. package/i18n/nls.hu.json +4 -4
  7. package/i18n/nls.it.json +4 -4
  8. package/i18n/nls.ja.json +4 -4
  9. package/i18n/nls.ko.json +4 -4
  10. package/i18n/nls.pl.json +4 -4
  11. package/i18n/nls.pt-br.json +4 -4
  12. package/i18n/nls.ru.json +4 -4
  13. package/i18n/nls.tr.json +4 -4
  14. package/i18n/nls.zh-cn.json +4 -4
  15. package/i18n/nls.zh-tw.json +4 -4
  16. package/lib/browser/catalog.json +179 -10
  17. package/lib/browser/common-frontend-contribution.js +2 -2
  18. package/lib/browser/common-frontend-contribution.js.map +1 -1
  19. package/lib/browser/components/card.d.ts.map +1 -1
  20. package/lib/browser/components/card.js +11 -3
  21. package/lib/browser/components/card.js.map +1 -1
  22. package/lib/browser/connection-status-service.js +1 -1
  23. package/lib/browser/connection-status-service.js.map +1 -1
  24. package/lib/browser/frontend-application-contribution.d.ts +2 -2
  25. package/lib/browser/frontend-application-contribution.d.ts.map +1 -1
  26. package/lib/browser/frontend-application.d.ts +2 -0
  27. package/lib/browser/frontend-application.d.ts.map +1 -1
  28. package/lib/browser/frontend-application.js +15 -6
  29. package/lib/browser/frontend-application.js.map +1 -1
  30. package/lib/browser/keyboard/index.d.ts +1 -0
  31. package/lib/browser/keyboard/index.d.ts.map +1 -1
  32. package/lib/browser/keyboard/index.js +1 -0
  33. package/lib/browser/keyboard/index.js.map +1 -1
  34. package/lib/browser/keyboard/keyboard-utils.d.ts +17 -0
  35. package/lib/browser/keyboard/keyboard-utils.d.ts.map +1 -0
  36. package/lib/browser/keyboard/keyboard-utils.js +40 -0
  37. package/lib/browser/keyboard/keyboard-utils.js.map +1 -0
  38. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  39. package/lib/browser/menu/browser-menu-plugin.js +8 -1
  40. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  41. package/lib/browser/messaging/messaging-frontend-module.d.ts.map +1 -1
  42. package/lib/browser/messaging/messaging-frontend-module.js +3 -0
  43. package/lib/browser/messaging/messaging-frontend-module.js.map +1 -1
  44. package/lib/browser/messaging/ws-connection-source.d.ts +2 -1
  45. package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -1
  46. package/lib/browser/messaging/ws-connection-source.js +5 -2
  47. package/lib/browser/messaging/ws-connection-source.js.map +1 -1
  48. package/lib/browser/performance/frontend-stopwatch.js +1 -1
  49. package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
  50. package/lib/browser/saveable-service.d.ts +9 -2
  51. package/lib/browser/saveable-service.d.ts.map +1 -1
  52. package/lib/browser/saveable-service.js +34 -25
  53. package/lib/browser/saveable-service.js.map +1 -1
  54. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +1 -0
  55. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
  56. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +10 -1
  57. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  58. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +2 -0
  59. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.map +1 -1
  60. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js +11 -2
  61. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js.map +1 -1
  62. package/lib/browser/window/browser-window-module.d.ts.map +1 -1
  63. package/lib/browser/window/browser-window-module.js +2 -0
  64. package/lib/browser/window/browser-window-module.js.map +1 -1
  65. package/lib/browser/window/default-secondary-window-service.d.ts +2 -0
  66. package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
  67. package/lib/browser/window/default-secondary-window-service.js +7 -0
  68. package/lib/browser/window/default-secondary-window-service.js.map +1 -1
  69. package/lib/browser/window/window-focus-service.d.ts +71 -0
  70. package/lib/browser/window/window-focus-service.d.ts.map +1 -0
  71. package/lib/browser/window/window-focus-service.js +173 -0
  72. package/lib/browser/window/window-focus-service.js.map +1 -0
  73. package/lib/common/event.d.ts +16 -0
  74. package/lib/common/event.d.ts.map +1 -1
  75. package/lib/common/event.js +20 -2
  76. package/lib/common/event.js.map +1 -1
  77. package/lib/common/event.spec.js +63 -0
  78. package/lib/common/event.spec.js.map +1 -1
  79. package/lib/common/glob.d.ts +2 -0
  80. package/lib/common/glob.d.ts.map +1 -1
  81. package/lib/common/glob.js +8 -7
  82. package/lib/common/glob.js.map +1 -1
  83. package/lib/common/message-rpc/channel.d.ts +1 -1
  84. package/lib/common/message-rpc/channel.d.ts.map +1 -1
  85. package/lib/common/message-rpc/channel.js +20 -12
  86. package/lib/common/message-rpc/channel.js.map +1 -1
  87. package/lib/common/message-rpc/channel.spec.d.ts.map +1 -1
  88. package/lib/common/message-rpc/channel.spec.js +94 -0
  89. package/lib/common/message-rpc/channel.spec.js.map +1 -1
  90. package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -1
  91. package/lib/common/message-rpc/rpc-protocol.js +13 -3
  92. package/lib/common/message-rpc/rpc-protocol.js.map +1 -1
  93. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -1
  94. package/lib/common/message-rpc/uint8-array-message-buffer.js +1 -1
  95. package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -1
  96. package/lib/common/messaging/index.d.ts +1 -0
  97. package/lib/common/messaging/index.d.ts.map +1 -1
  98. package/lib/common/messaging/index.js +1 -0
  99. package/lib/common/messaging/index.js.map +1 -1
  100. package/lib/common/messaging/socket-write-buffer.d.ts +4 -3
  101. package/lib/common/messaging/socket-write-buffer.d.ts.map +1 -1
  102. package/lib/common/messaging/socket-write-buffer.js +14 -4
  103. package/lib/common/messaging/socket-write-buffer.js.map +1 -1
  104. package/lib/common/performance/index.d.ts +1 -0
  105. package/lib/common/performance/index.d.ts.map +1 -1
  106. package/lib/common/performance/index.js +1 -0
  107. package/lib/common/performance/index.js.map +1 -1
  108. package/lib/common/performance/simple-stopwatch.d.ts +18 -0
  109. package/lib/common/performance/simple-stopwatch.d.ts.map +1 -0
  110. package/lib/common/performance/simple-stopwatch.js +80 -0
  111. package/lib/common/performance/simple-stopwatch.js.map +1 -0
  112. package/lib/common/performance/stopwatch.d.ts +41 -0
  113. package/lib/common/performance/stopwatch.d.ts.map +1 -1
  114. package/lib/common/performance/stopwatch.js +89 -3
  115. package/lib/common/performance/stopwatch.js.map +1 -1
  116. package/lib/common/performance/stopwatch.spec.d.ts +2 -0
  117. package/lib/common/performance/stopwatch.spec.d.ts.map +1 -0
  118. package/lib/common/performance/stopwatch.spec.js +256 -0
  119. package/lib/common/performance/stopwatch.spec.js.map +1 -0
  120. package/lib/common/preferences/index.d.ts +1 -0
  121. package/lib/common/preferences/index.d.ts.map +1 -1
  122. package/lib/common/preferences/index.js +1 -0
  123. package/lib/common/preferences/index.js.map +1 -1
  124. package/lib/common/preferences/preference-utils.d.ts +6 -0
  125. package/lib/common/preferences/preference-utils.d.ts.map +1 -0
  126. package/lib/common/preferences/preference-utils.js +29 -0
  127. package/lib/common/preferences/preference-utils.js.map +1 -0
  128. package/lib/common/resource.d.ts +2 -0
  129. package/lib/common/resource.d.ts.map +1 -1
  130. package/lib/common/resource.js +7 -3
  131. package/lib/common/resource.js.map +1 -1
  132. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
  133. package/lib/electron-browser/menu/electron-main-menu-factory.js +5 -1
  134. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  135. package/lib/electron-browser/messaging/electron-messaging-frontend-module.d.ts.map +1 -1
  136. package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +3 -0
  137. package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
  138. package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
  139. package/lib/electron-browser/window/electron-window-module.js +2 -0
  140. package/lib/electron-browser/window/electron-window-module.js.map +1 -1
  141. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  142. package/lib/electron-main/electron-api-main.js +4 -2
  143. package/lib/electron-main/electron-api-main.js.map +1 -1
  144. package/lib/electron-main/electron-main-application-module.d.ts.map +1 -1
  145. package/lib/electron-main/electron-main-application-module.js +3 -0
  146. package/lib/electron-main/electron-main-application-module.js.map +1 -1
  147. package/lib/electron-main/electron-main-application.d.ts +2 -0
  148. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  149. package/lib/electron-main/electron-main-application.js +14 -5
  150. package/lib/electron-main/electron-main-application.js.map +1 -1
  151. package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
  152. package/lib/electron-main/theia-electron-window.js +3 -0
  153. package/lib/electron-main/theia-electron-window.js.map +1 -1
  154. package/lib/node/backend-application.d.ts +2 -0
  155. package/lib/node/backend-application.d.ts.map +1 -1
  156. package/lib/node/backend-application.js +17 -5
  157. package/lib/node/backend-application.js.map +1 -1
  158. package/lib/node/messaging/default-messaging-service.d.ts.map +1 -1
  159. package/lib/node/messaging/default-messaging-service.js +1 -0
  160. package/lib/node/messaging/default-messaging-service.js.map +1 -1
  161. package/lib/node/messaging/index.d.ts +1 -0
  162. package/lib/node/messaging/index.d.ts.map +1 -1
  163. package/lib/node/messaging/index.js +1 -0
  164. package/lib/node/messaging/index.js.map +1 -1
  165. package/lib/node/messaging/messaging-backend-module.d.ts.map +1 -1
  166. package/lib/node/messaging/messaging-backend-module.js +4 -0
  167. package/lib/node/messaging/messaging-backend-module.js.map +1 -1
  168. package/lib/node/messaging/test/default-messaging-service.spec.d.ts +2 -0
  169. package/lib/node/messaging/test/default-messaging-service.spec.d.ts.map +1 -0
  170. package/lib/node/messaging/test/default-messaging-service.spec.js +81 -0
  171. package/lib/node/messaging/test/default-messaging-service.spec.js.map +1 -0
  172. package/lib/node/messaging/websocket-frontend-connection-service.d.ts +9 -5
  173. package/lib/node/messaging/websocket-frontend-connection-service.d.ts.map +1 -1
  174. package/lib/node/messaging/websocket-frontend-connection-service.js +21 -5
  175. package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -1
  176. package/lib/node/performance/node-stopwatch.js +1 -1
  177. package/lib/node/performance/node-stopwatch.js.map +1 -1
  178. package/lib/node/process-utils.d.ts.map +1 -1
  179. package/lib/node/process-utils.js +9 -1
  180. package/lib/node/process-utils.js.map +1 -1
  181. package/package.json +32 -32
  182. package/src/browser/common-frontend-contribution.ts +2 -2
  183. package/src/browser/components/card.tsx +13 -2
  184. package/src/browser/connection-status-service.ts +1 -1
  185. package/src/browser/frontend-application-contribution.ts +2 -2
  186. package/src/browser/frontend-application.ts +26 -17
  187. package/src/browser/keyboard/index.ts +1 -0
  188. package/src/browser/keyboard/keyboard-utils.ts +37 -0
  189. package/src/browser/menu/browser-menu-plugin.ts +8 -1
  190. package/src/browser/messaging/messaging-frontend-module.ts +3 -0
  191. package/src/browser/messaging/ws-connection-source.ts +3 -2
  192. package/src/browser/performance/frontend-stopwatch.ts +1 -1
  193. package/src/browser/saveable-service.ts +34 -27
  194. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +14 -1
  195. package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +13 -2
  196. package/src/browser/style/card.css +4 -2
  197. package/src/browser/style/hover-service.css +7 -0
  198. package/src/browser/window/browser-window-module.ts +2 -0
  199. package/src/browser/window/default-secondary-window-service.ts +6 -0
  200. package/src/browser/window/window-focus-service.ts +187 -0
  201. package/src/common/event.spec.ts +80 -0
  202. package/src/common/event.ts +31 -2
  203. package/src/common/glob.ts +2 -2
  204. package/src/common/i18n/nls.metadata.json +4254 -1058
  205. package/src/common/message-rpc/channel.spec.ts +116 -0
  206. package/src/common/message-rpc/channel.ts +15 -11
  207. package/src/common/message-rpc/rpc-protocol.ts +12 -3
  208. package/src/common/message-rpc/uint8-array-message-buffer.ts +1 -1
  209. package/src/common/messaging/index.ts +1 -0
  210. package/src/common/messaging/socket-write-buffer.ts +10 -4
  211. package/src/common/performance/index.ts +1 -0
  212. package/src/common/performance/simple-stopwatch.ts +91 -0
  213. package/src/common/performance/stopwatch.spec.ts +321 -0
  214. package/src/common/performance/stopwatch.ts +103 -2
  215. package/src/common/preferences/index.ts +1 -0
  216. package/src/common/preferences/preference-utils.ts +28 -0
  217. package/src/common/resource.ts +8 -2
  218. package/src/electron-browser/menu/electron-main-menu-factory.ts +5 -1
  219. package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +3 -0
  220. package/src/electron-browser/window/electron-window-module.ts +2 -0
  221. package/src/electron-main/electron-api-main.ts +4 -2
  222. package/src/electron-main/electron-main-application-module.ts +3 -0
  223. package/src/electron-main/electron-main-application.ts +21 -5
  224. package/src/electron-main/theia-electron-window.ts +3 -0
  225. package/src/node/backend-application.ts +27 -10
  226. package/src/node/messaging/default-messaging-service.ts +1 -0
  227. package/src/node/messaging/index.ts +1 -0
  228. package/src/node/messaging/messaging-backend-module.ts +5 -1
  229. package/src/node/messaging/test/default-messaging-service.spec.ts +85 -0
  230. package/src/node/messaging/websocket-frontend-connection-service.ts +20 -7
  231. package/src/node/performance/node-stopwatch.ts +1 -1
  232. package/src/node/process-utils.ts +9 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-stopwatch.js","sourceRoot":"","sources":["../../../src/common/performance/simple-stopwatch.ts"],"names":[],"mappings":"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"}
@@ -72,5 +72,46 @@ export declare abstract class Stopwatch {
72
72
  protected log(measurement: Measurement, activity: string, options: LogOptions): void;
73
73
  get storedMeasurements(): ReadonlyArray<MeasurementResult>;
74
74
  }
75
+ /**
76
+ * Tracks the settlement of async work initiated by contributions during application startup.
77
+ *
78
+ * A contribution "settles" when all promises it returned from lifecycle methods (initialize, configure, onStart, etc.)
79
+ * have resolved. Individual settlement is only logged when a contribution returned promises from more than one lifecycle
80
+ * method; otherwise the single lifecycle measurement already describes the work. An aggregate "all settled" message is
81
+ * logged once all tracked promises across all contributions have resolved.
82
+ *
83
+ * Typical usage:
84
+ * 1. Create the context at the start of the application lifecycle.
85
+ * 2. Before each lifecycle call, call {@link ensureEntry} to start the per-contribution clock.
86
+ * 3. After each lifecycle call, call {@link trackSettlement} with the return value.
87
+ * 4. After the startup sequence completes, call {@link armAllSettled} to enable the aggregate message.
88
+ */
89
+ export declare class MeasurementContext<T extends object = object> {
90
+ protected readonly stopwatch: Stopwatch;
91
+ protected readonly owner: string;
92
+ protected readonly thresholdMillis: number;
93
+ private readonly entries;
94
+ private readonly allSettledMeasurement;
95
+ private allSettledPending;
96
+ private allSettledArmed;
97
+ constructor(stopwatch: Stopwatch, owner: string, thresholdMillis: number);
98
+ /**
99
+ * Ensure that settlement tracking has been started for the given contribution.
100
+ * Starts the per-contribution measurement clock on the first call for each contribution.
101
+ */
102
+ ensureEntry(item: T): void;
103
+ /**
104
+ * Track a promise returned by a contribution's lifecycle method.
105
+ * Must be called after the corresponding {@link Stopwatch.startAsync} has completed so that
106
+ * the settlement log appears after the lifecycle measurement log.
107
+ */
108
+ trackSettlement(item: T, result: MaybePromise<unknown>): void;
109
+ /**
110
+ * Arm the aggregate "all settled" log message. Call this after the startup sequence has finished
111
+ * collecting all promises. If all promises have already settled, the message is logged immediately.
112
+ */
113
+ armAllSettled(): void;
114
+ private onPromiseSettled;
115
+ }
75
116
  export {};
76
117
  //# sourceMappingURL=stopwatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stopwatch.d.ts","sourceRoot":"","sources":["../../../src/common/performance/stopwatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;gFAcgF;AAKhF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AACH,UAAU,UAAW,SAAQ,kBAAkB;IAC3C,gGAAgG;IAChG,GAAG,EAAE,MAAM,MAAM,CAAC;IAElB,gHAAgH;IAChH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qGAAqG;IACrG,aAAa,CAAC,EAAE,QAAQ,CAAC;IAEzB,gIAAgI;IAChI,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,8BACsB,SAAS;IAYF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,UAAU;IATzE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,CAAM;IAExD,SAAS,CAAC,gCAAgC,6BAAoC;IAC9E,IAAI,yBAAyB,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAExD;gBAE2C,iBAAiB,EAAE,UAAU;IASzE;;;;;;OAMG;aACa,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAE9E;;;;;;;;;;;;OAYG;IACU,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa3I,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAgC5I,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAQvE,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,UAAU;IAIrG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ;IAQ5E,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAsBpF,IAAI,kBAAkB,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAEzD;CAEJ"}
1
+ {"version":3,"file":"stopwatch.d.ts","sourceRoot":"","sources":["../../../src/common/performance/stopwatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;gFAcgF;AAKhF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AACH,UAAU,UAAW,SAAQ,kBAAkB;IAC3C,gGAAgG;IAChG,GAAG,EAAE,MAAM,MAAM,CAAC;IAElB,gHAAgH;IAChH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qGAAqG;IACrG,aAAa,CAAC,EAAE,QAAQ,CAAC;IAEzB,gIAAgI;IAChI,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,8BACsB,SAAS;IAYF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,UAAU;IATzE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,CAAM;IAExD,SAAS,CAAC,gCAAgC,6BAAoC;IAC9E,IAAI,yBAAyB,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAExD;gBAE2C,iBAAiB,EAAE,UAAU;IASzE;;;;;;OAMG;aACa,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAE9E;;;;;;;;;;;;OAYG;IACU,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa3I,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAgC5I,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAQvE,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,UAAU;IAIrG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ;IAQ5E,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAsBpF,IAAI,kBAAkB,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAEzD;CAEJ;AASD;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAQjD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS;IACvC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAChC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM;IAR9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAc;IACpD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAS;gBAGT,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM;IAK9C;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAY1B;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAa7D;;;OAGG;IACH,aAAa,IAAI,IAAI;IAOrB,OAAO,CAAC,gBAAgB;CAkB3B"}
@@ -15,7 +15,7 @@
15
15
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
16
  *******************************************************************************/
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.Stopwatch = void 0;
18
+ exports.MeasurementContext = exports.Stopwatch = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  /* eslint-disable @typescript-eslint/no-explicit-any */
21
21
  const inversify_1 = require("inversify");
@@ -125,8 +125,8 @@ let Stopwatch = class Stopwatch {
125
125
  return;
126
126
  }
127
127
  }
128
- const start = options.owner ? `${options.owner} start` : 'start';
129
- const timeFromStart = `Finished ${(options.now() / 1000).toFixed(3)} s after ${start}`;
128
+ const origin = options.owner ?? 'application';
129
+ const timeFromStart = `${(options.now() / 1000).toFixed(3)} s since ${origin} start`;
130
130
  const whatWasMeasured = options.context ? `[${options.context}] ${activity}` : activity;
131
131
  this.logger.log(level, `${whatWasMeasured}: ${elapsed.toFixed(1)} ms [${timeFromStart}]`, ...(options.arguments ?? []));
132
132
  }
@@ -144,4 +144,90 @@ exports.Stopwatch = Stopwatch = tslib_1.__decorate([
144
144
  tslib_1.__param(0, (0, inversify_1.unmanaged)()),
145
145
  tslib_1.__metadata("design:paramtypes", [Object])
146
146
  ], Stopwatch);
147
+ /**
148
+ * Tracks the settlement of async work initiated by contributions during application startup.
149
+ *
150
+ * A contribution "settles" when all promises it returned from lifecycle methods (initialize, configure, onStart, etc.)
151
+ * have resolved. Individual settlement is only logged when a contribution returned promises from more than one lifecycle
152
+ * method; otherwise the single lifecycle measurement already describes the work. An aggregate "all settled" message is
153
+ * logged once all tracked promises across all contributions have resolved.
154
+ *
155
+ * Typical usage:
156
+ * 1. Create the context at the start of the application lifecycle.
157
+ * 2. Before each lifecycle call, call {@link ensureEntry} to start the per-contribution clock.
158
+ * 3. After each lifecycle call, call {@link trackSettlement} with the return value.
159
+ * 4. After the startup sequence completes, call {@link armAllSettled} to enable the aggregate message.
160
+ */
161
+ class MeasurementContext {
162
+ constructor(stopwatch, owner, thresholdMillis) {
163
+ this.stopwatch = stopwatch;
164
+ this.owner = owner;
165
+ this.thresholdMillis = thresholdMillis;
166
+ this.entries = new Map();
167
+ this.allSettledPending = 0;
168
+ this.allSettledArmed = false;
169
+ this.allSettledMeasurement = this.stopwatch.start(`${owner.toLowerCase()}-all-settled`);
170
+ }
171
+ /**
172
+ * Ensure that settlement tracking has been started for the given contribution.
173
+ * Starts the per-contribution measurement clock on the first call for each contribution.
174
+ */
175
+ ensureEntry(item) {
176
+ if (!this.entries.has(item)) {
177
+ const name = item.constructor.name;
178
+ this.entries.set(item, {
179
+ name,
180
+ measurement: this.stopwatch.start(`${name}.settled`, { thresholdMillis: this.thresholdMillis }),
181
+ pending: 0,
182
+ total: 0
183
+ });
184
+ }
185
+ }
186
+ /**
187
+ * Track a promise returned by a contribution's lifecycle method.
188
+ * Must be called after the corresponding {@link Stopwatch.startAsync} has completed so that
189
+ * the settlement log appears after the lifecycle measurement log.
190
+ */
191
+ trackSettlement(item, result) {
192
+ if (result instanceof Promise) {
193
+ const entry = this.entries.get(item);
194
+ entry.pending++;
195
+ entry.total++;
196
+ this.allSettledPending++;
197
+ const onSettled = () => {
198
+ this.onPromiseSettled(item);
199
+ };
200
+ result.then(onSettled, onSettled);
201
+ }
202
+ }
203
+ /**
204
+ * Arm the aggregate "all settled" log message. Call this after the startup sequence has finished
205
+ * collecting all promises. If all promises have already settled, the message is logged immediately.
206
+ */
207
+ armAllSettled() {
208
+ this.allSettledArmed = true;
209
+ if (this.allSettledPending === 0) {
210
+ this.allSettledMeasurement.info(`All ${this.owner.toLowerCase()} contributions settled`);
211
+ }
212
+ }
213
+ onPromiseSettled(item) {
214
+ const entry = this.entries.get(item);
215
+ if (entry && --entry.pending === 0) {
216
+ const { name, measurement, total } = entry;
217
+ this.entries.delete(item);
218
+ if (total > 1) {
219
+ if (measurement.stop() > this.thresholdMillis) {
220
+ measurement.warn(`${this.owner} ${name} took longer than expected to settle`);
221
+ }
222
+ else {
223
+ measurement.debug(`${this.owner} ${name} settled`);
224
+ }
225
+ }
226
+ }
227
+ if (--this.allSettledPending === 0 && this.allSettledArmed) {
228
+ this.allSettledMeasurement.info(`All ${this.owner.toLowerCase()} contributions settled`);
229
+ }
230
+ }
231
+ }
232
+ exports.MeasurementContext = MeasurementContext;
147
233
  //# sourceMappingURL=stopwatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stopwatch.js","sourceRoot":"","sources":["../../../src/common/performance/stopwatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stopwatch.js","sourceRoot":"","sources":["../../../src/common/performance/stopwatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stopwatch.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopwatch.spec.d.ts","sourceRoot":"","sources":["../../../src/common/performance/stopwatch.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 STMicroelectronics and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const sinon = require("sinon");
20
+ const promise_util_1 = require("../promise-util");
21
+ const stopwatch_1 = require("./stopwatch");
22
+ const simple_stopwatch_1 = require("./simple-stopwatch");
23
+ /**
24
+ * A fake {@link Measurement} whose log methods are sinon spies, with a
25
+ * configurable duration returned by {@link stop}.
26
+ */
27
+ class FakeMeasurement {
28
+ constructor(name, duration = 0) {
29
+ this.log = sinon.spy();
30
+ this.info = sinon.spy();
31
+ this.debug = sinon.spy();
32
+ this.warn = sinon.spy();
33
+ this.error = sinon.spy();
34
+ this.stop = sinon.spy(() => {
35
+ if (this.elapsed === undefined) {
36
+ this.elapsed = this.duration;
37
+ }
38
+ return this.elapsed;
39
+ });
40
+ this.name = name;
41
+ this.duration = duration;
42
+ }
43
+ }
44
+ /**
45
+ * A fake {@link Stopwatch} that creates {@link FakeMeasurement}s with
46
+ * configurable durations and records all invocations of {@link start}.
47
+ */
48
+ class FakeStopwatch extends simple_stopwatch_1.SimpleStopwatch {
49
+ constructor() {
50
+ super('test', () => 0);
51
+ this.defaultDuration = 0;
52
+ this.durationByName = new Map();
53
+ this.created = [];
54
+ this.start = sinon.spy((name, _options) => {
55
+ const duration = this.durationByName.get(name) ?? this.defaultDuration;
56
+ const measurement = new FakeMeasurement(name, duration);
57
+ this.created.push(measurement);
58
+ return measurement;
59
+ });
60
+ }
61
+ /** Return the first measurement created with the given name, or `undefined`. */
62
+ measurementFor(name) {
63
+ return this.created.find(m => m.name === name);
64
+ }
65
+ }
66
+ class TestContribution {
67
+ }
68
+ class OtherTestContribution {
69
+ }
70
+ /**
71
+ * Allow any already-queued microtasks (such as `.then` callbacks attached to
72
+ * already-settled promises) to run before assertions.
73
+ */
74
+ async function flushPromises() {
75
+ for (let i = 0; i < 5; i++) {
76
+ await Promise.resolve();
77
+ }
78
+ }
79
+ describe('MeasurementContext', () => {
80
+ let stopwatch;
81
+ beforeEach(() => {
82
+ stopwatch = new FakeStopwatch();
83
+ });
84
+ describe('ensureEntry', () => {
85
+ it('starts a per-contribution measurement', () => {
86
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 250);
87
+ context.ensureEntry(new TestContribution());
88
+ sinon.assert.calledWith(stopwatch.start, 'TestContribution.settled', sinon.match({ thresholdMillis: 250 }));
89
+ });
90
+ it('starts a per-contribution measurement only once per item', () => {
91
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
92
+ const item = new TestContribution();
93
+ context.ensureEntry(item);
94
+ context.ensureEntry(item);
95
+ context.ensureEntry(item);
96
+ const started = stopwatch.start.getCalls().filter(c => c.args[0] === 'TestContribution.settled');
97
+ (0, chai_1.expect)(started).to.have.length(1);
98
+ });
99
+ it('starts independent measurements for distinct items', () => {
100
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
101
+ context.ensureEntry(new TestContribution());
102
+ context.ensureEntry(new TestContribution());
103
+ const started = stopwatch.start.getCalls().filter(c => c.args[0] === 'TestContribution.settled');
104
+ (0, chai_1.expect)(started).to.have.length(2);
105
+ });
106
+ });
107
+ describe('trackSettlement', () => {
108
+ it('is a no-op for a synchronous result', async () => {
109
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
110
+ const item = new TestContribution();
111
+ context.ensureEntry(item);
112
+ context.trackSettlement(item, undefined);
113
+ context.armAllSettled();
114
+ await flushPromises();
115
+ const perContribution = stopwatch.measurementFor('TestContribution.settled');
116
+ sinon.assert.notCalled(perContribution.debug);
117
+ sinon.assert.notCalled(perContribution.warn);
118
+ sinon.assert.notCalled(perContribution.info);
119
+ // Synchronous results do not increment allSettledPending, so arming fires the
120
+ // aggregate message immediately.
121
+ const allSettled = stopwatch.measurementFor('frontend-all-settled');
122
+ sinon.assert.calledOnce(allSettled.info);
123
+ });
124
+ it('does not log a per-contribution settlement when only one promise was tracked', async () => {
125
+ // The single lifecycle measurement already describes the duration of a solo tracked
126
+ // promise, so the per-contribution aggregate must stay silent.
127
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
128
+ const item = new TestContribution();
129
+ context.ensureEntry(item);
130
+ context.trackSettlement(item, Promise.resolve());
131
+ context.armAllSettled();
132
+ await flushPromises();
133
+ const perContribution = stopwatch.measurementFor('TestContribution.settled');
134
+ sinon.assert.notCalled(perContribution.debug);
135
+ sinon.assert.notCalled(perContribution.warn);
136
+ sinon.assert.notCalled(perContribution.info);
137
+ });
138
+ it('logs a debug settlement message once multiple tracked promises all resolve under the threshold', async () => {
139
+ stopwatch.durationByName.set('TestContribution.settled', 50);
140
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
141
+ const item = new TestContribution();
142
+ context.ensureEntry(item);
143
+ const first = new promise_util_1.Deferred();
144
+ const second = new promise_util_1.Deferred();
145
+ context.trackSettlement(item, first.promise);
146
+ context.trackSettlement(item, second.promise);
147
+ // Before any promise resolves, nothing has been logged.
148
+ const perContribution = stopwatch.measurementFor('TestContribution.settled');
149
+ sinon.assert.notCalled(perContribution.debug);
150
+ first.resolve();
151
+ await flushPromises();
152
+ sinon.assert.notCalled(perContribution.debug);
153
+ second.resolve();
154
+ await flushPromises();
155
+ sinon.assert.calledOnceWithExactly(perContribution.debug, 'Frontend TestContribution settled');
156
+ sinon.assert.notCalled(perContribution.warn);
157
+ });
158
+ it('logs a warn settlement message when multiple tracked promises exceed the threshold', async () => {
159
+ stopwatch.durationByName.set('TestContribution.settled', 500);
160
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
161
+ const item = new TestContribution();
162
+ context.ensureEntry(item);
163
+ context.trackSettlement(item, Promise.resolve());
164
+ context.trackSettlement(item, Promise.resolve());
165
+ await flushPromises();
166
+ const perContribution = stopwatch.measurementFor('TestContribution.settled');
167
+ sinon.assert.calledOnceWithExactly(perContribution.warn, 'Frontend TestContribution took longer than expected to settle');
168
+ sinon.assert.notCalled(perContribution.debug);
169
+ });
170
+ it('treats a rejected promise as settled', async () => {
171
+ stopwatch.durationByName.set('TestContribution.settled', 10);
172
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
173
+ const item = new TestContribution();
174
+ context.ensureEntry(item);
175
+ const rejecting = new promise_util_1.Deferred();
176
+ context.trackSettlement(item, Promise.resolve());
177
+ context.trackSettlement(item, rejecting.promise);
178
+ rejecting.reject(new Error('expected failure'));
179
+ await flushPromises();
180
+ const perContribution = stopwatch.measurementFor('TestContribution.settled');
181
+ sinon.assert.calledOnce(perContribution.debug);
182
+ });
183
+ it('tracks promises independently for each contribution', async () => {
184
+ stopwatch.durationByName.set('TestContribution.settled', 50);
185
+ stopwatch.durationByName.set('OtherTestContribution.settled', 50);
186
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
187
+ const a = new TestContribution();
188
+ const b = new OtherTestContribution();
189
+ context.ensureEntry(a);
190
+ context.ensureEntry(b);
191
+ context.trackSettlement(a, Promise.resolve());
192
+ context.trackSettlement(a, Promise.resolve());
193
+ context.trackSettlement(b, Promise.resolve());
194
+ await flushPromises();
195
+ // a had two tracked promises: logs once.
196
+ sinon.assert.calledOnce(stopwatch.measurementFor('TestContribution.settled').debug);
197
+ // b had a single tracked promise: logs nothing.
198
+ sinon.assert.notCalled(stopwatch.measurementFor('OtherTestContribution.settled').debug);
199
+ });
200
+ });
201
+ describe('armAllSettled', () => {
202
+ it('logs the aggregate message immediately when armed with zero pending promises', () => {
203
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
204
+ context.armAllSettled();
205
+ const allSettled = stopwatch.measurementFor('frontend-all-settled');
206
+ sinon.assert.calledOnceWithExactly(allSettled.info, 'All frontend contributions settled');
207
+ });
208
+ it('defers the aggregate log until the last tracked promise settles', async () => {
209
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
210
+ const item = new TestContribution();
211
+ context.ensureEntry(item);
212
+ const pending = new promise_util_1.Deferred();
213
+ context.trackSettlement(item, pending.promise);
214
+ context.armAllSettled();
215
+ const allSettled = stopwatch.measurementFor('frontend-all-settled');
216
+ sinon.assert.notCalled(allSettled.info);
217
+ pending.resolve();
218
+ await flushPromises();
219
+ sinon.assert.calledOnce(allSettled.info);
220
+ });
221
+ it('does not log the aggregate message when all promises settle before arming', async () => {
222
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
223
+ const item = new TestContribution();
224
+ context.ensureEntry(item);
225
+ context.trackSettlement(item, Promise.resolve());
226
+ await flushPromises();
227
+ const allSettled = stopwatch.measurementFor('frontend-all-settled');
228
+ sinon.assert.notCalled(allSettled.info);
229
+ });
230
+ it('logs the aggregate message when arming after all tracked promises have already settled', async () => {
231
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
232
+ const item = new TestContribution();
233
+ context.ensureEntry(item);
234
+ context.trackSettlement(item, Promise.resolve());
235
+ await flushPromises();
236
+ const allSettled = stopwatch.measurementFor('frontend-all-settled');
237
+ sinon.assert.notCalled(allSettled.info);
238
+ context.armAllSettled();
239
+ sinon.assert.calledOnce(allSettled.info);
240
+ });
241
+ it('logs the aggregate message exactly once when multiple contributions finish', async () => {
242
+ const context = new stopwatch_1.MeasurementContext(stopwatch, 'Frontend', 100);
243
+ const a = new TestContribution();
244
+ const b = new OtherTestContribution();
245
+ context.ensureEntry(a);
246
+ context.ensureEntry(b);
247
+ context.trackSettlement(a, Promise.resolve());
248
+ context.trackSettlement(b, Promise.resolve());
249
+ context.armAllSettled();
250
+ await flushPromises();
251
+ const allSettled = stopwatch.measurementFor('frontend-all-settled');
252
+ sinon.assert.calledOnce(allSettled.info);
253
+ });
254
+ });
255
+ });
256
+ //# sourceMappingURL=stopwatch.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopwatch.spec.js","sourceRoot":"","sources":["../../../src/common/performance/stopwatch.spec.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,5 @@ export * from './preference-service';
9
9
  export * from './injectable-preference-proxy';
10
10
  export * from './preference-proxy';
11
11
  export * from './preference-configurations';
12
+ export * from './preference-utils';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/preferences/index.ts"],"names":[],"mappings":"AAgBA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/preferences/index.ts"],"names":[],"mappings":"AAgBA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
@@ -27,4 +27,5 @@ tslib_1.__exportStar(require("./preference-service"), exports);
27
27
  tslib_1.__exportStar(require("./injectable-preference-proxy"), exports);
28
28
  tslib_1.__exportStar(require("./preference-proxy"), exports);
29
29
  tslib_1.__exportStar(require("./preference-configurations"), exports);
30
+ tslib_1.__exportStar(require("./preference-utils"), exports);
30
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/preferences/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,yEAA+C;AAC/C,iFAAuD;AACvD,qEAA2C;AAC3C,gEAAsC;AACtC,sEAA4C;AAC5C,8DAAoC;AACpC,6DAAmC;AACnC,+DAAqC;AACrC,wEAA8C;AAC9C,6DAAmC;AACnC,sEAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/preferences/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,yEAA+C;AAC/C,iFAAuD;AACvD,qEAA2C;AAC3C,gEAAsC;AACtC,sEAA4C;AAC5C,8DAAoC;AACpC,6DAAmC;AACnC,+DAAqC;AACrC,wEAA8C;AAC9C,6DAAmC;AACnC,sEAA4C;AAC5C,6DAAmC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Hint appended to API key preference descriptions on Linux, where environment variables
3
+ * set in `~/.bashrc` are not available to desktop-launched applications.
4
+ */
5
+ export declare const LINUX_ENV_HINT: string;
6
+ //# sourceMappingURL=preference-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preference-utils.d.ts","sourceRoot":"","sources":["../../../src/common/preferences/preference-utils.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,eAAO,MAAM,cAAc,QAInB,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.LINUX_ENV_HINT = void 0;
19
+ const nls_1 = require("../nls");
20
+ const os_1 = require("../os");
21
+ /**
22
+ * Hint appended to API key preference descriptions on Linux, where environment variables
23
+ * set in `~/.bashrc` are not available to desktop-launched applications.
24
+ */
25
+ exports.LINUX_ENV_HINT = !os_1.isWindows && !os_1.isOSX
26
+ ? ' ' + nls_1.nls.localize('theia/ai-core/preferences/linuxEnvHint', 'On Linux, make sure the variable is defined in `~/.profile` (not just `~/.bashrc`) if you launch the application from a desktop shortcut.' +
27
+ ' See the [documentation](https://theia-ide.org/docs/user_ai/#setting-api-keys) for details.')
28
+ : '';
29
+ //# sourceMappingURL=preference-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preference-utils.js","sourceRoot":"","sources":["../../../src/common/preferences/preference-utils.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,gCAA6B;AAC7B,8BAAyC;AAEzC;;;GAGG;AACU,QAAA,cAAc,GAAG,CAAC,cAAS,IAAI,CAAC,UAAK;IAC9C,CAAC,CAAC,GAAG,GAAG,SAAG,CAAC,QAAQ,CAAC,wCAAwC,EACzD,2IAA2I;QAC3I,6FAA6F,CAAC;IAClG,CAAC,CAAC,EAAE,CAAC"}
@@ -166,12 +166,14 @@ export declare class InMemoryResources implements ResourceResolver {
166
166
  protected acquire(uri: string): ReferenceMutableResource;
167
167
  }
168
168
  export declare const MEMORY_TEXT = "mem-txt";
169
+ export declare const MEMORY_TEXT_READONLY = "mem-txt-readonly";
169
170
  /**
170
171
  * Resource implementation for 'mem-txt' URI scheme where content is saved in URI query.
171
172
  */
172
173
  export declare class InMemoryTextResource implements Resource {
173
174
  readonly uri: URI;
174
175
  constructor(uri: URI);
176
+ get readOnly(): boolean;
175
177
  readContents(options?: {
176
178
  encoding?: string | undefined;
177
179
  } | undefined): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/common/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/common/resource.ts"],"names":[],"mappings":"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"}