@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.
- package/README.md +13 -13
- package/i18n/nls.cs.json +4 -4
- package/i18n/nls.de.json +4 -4
- package/i18n/nls.es.json +4 -4
- package/i18n/nls.fr.json +4 -4
- package/i18n/nls.hu.json +4 -4
- package/i18n/nls.it.json +4 -4
- package/i18n/nls.ja.json +4 -4
- package/i18n/nls.ko.json +4 -4
- package/i18n/nls.pl.json +4 -4
- package/i18n/nls.pt-br.json +4 -4
- package/i18n/nls.ru.json +4 -4
- package/i18n/nls.tr.json +4 -4
- package/i18n/nls.zh-cn.json +4 -4
- package/i18n/nls.zh-tw.json +4 -4
- package/lib/browser/catalog.json +179 -10
- package/lib/browser/common-frontend-contribution.js +2 -2
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/components/card.d.ts.map +1 -1
- package/lib/browser/components/card.js +11 -3
- package/lib/browser/components/card.js.map +1 -1
- package/lib/browser/connection-status-service.js +1 -1
- package/lib/browser/connection-status-service.js.map +1 -1
- package/lib/browser/frontend-application-contribution.d.ts +2 -2
- package/lib/browser/frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/frontend-application.d.ts +2 -0
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +15 -6
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/keyboard/index.d.ts +1 -0
- package/lib/browser/keyboard/index.d.ts.map +1 -1
- package/lib/browser/keyboard/index.js +1 -0
- package/lib/browser/keyboard/index.js.map +1 -1
- package/lib/browser/keyboard/keyboard-utils.d.ts +17 -0
- package/lib/browser/keyboard/keyboard-utils.d.ts.map +1 -0
- package/lib/browser/keyboard/keyboard-utils.js +40 -0
- package/lib/browser/keyboard/keyboard-utils.js.map +1 -0
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +8 -1
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/messaging/messaging-frontend-module.d.ts.map +1 -1
- package/lib/browser/messaging/messaging-frontend-module.js +3 -0
- package/lib/browser/messaging/messaging-frontend-module.js.map +1 -1
- package/lib/browser/messaging/ws-connection-source.d.ts +2 -1
- package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-source.js +5 -2
- package/lib/browser/messaging/ws-connection-source.js.map +1 -1
- package/lib/browser/performance/frontend-stopwatch.js +1 -1
- package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
- package/lib/browser/saveable-service.d.ts +9 -2
- package/lib/browser/saveable-service.d.ts.map +1 -1
- package/lib/browser/saveable-service.js +34 -25
- package/lib/browser/saveable-service.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +1 -0
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +10 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +2 -0
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js +11 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js.map +1 -1
- package/lib/browser/window/browser-window-module.d.ts.map +1 -1
- package/lib/browser/window/browser-window-module.js +2 -0
- package/lib/browser/window/browser-window-module.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.d.ts +2 -0
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +7 -0
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/window-focus-service.d.ts +71 -0
- package/lib/browser/window/window-focus-service.d.ts.map +1 -0
- package/lib/browser/window/window-focus-service.js +173 -0
- package/lib/browser/window/window-focus-service.js.map +1 -0
- package/lib/common/event.d.ts +16 -0
- package/lib/common/event.d.ts.map +1 -1
- package/lib/common/event.js +20 -2
- package/lib/common/event.js.map +1 -1
- package/lib/common/event.spec.js +63 -0
- package/lib/common/event.spec.js.map +1 -1
- package/lib/common/glob.d.ts +2 -0
- package/lib/common/glob.d.ts.map +1 -1
- package/lib/common/glob.js +8 -7
- package/lib/common/glob.js.map +1 -1
- package/lib/common/message-rpc/channel.d.ts +1 -1
- package/lib/common/message-rpc/channel.d.ts.map +1 -1
- package/lib/common/message-rpc/channel.js +20 -12
- package/lib/common/message-rpc/channel.js.map +1 -1
- package/lib/common/message-rpc/channel.spec.d.ts.map +1 -1
- package/lib/common/message-rpc/channel.spec.js +94 -0
- package/lib/common/message-rpc/channel.spec.js.map +1 -1
- package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -1
- package/lib/common/message-rpc/rpc-protocol.js +13 -3
- package/lib/common/message-rpc/rpc-protocol.js.map +1 -1
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -1
- package/lib/common/message-rpc/uint8-array-message-buffer.js +1 -1
- package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -1
- package/lib/common/messaging/index.d.ts +1 -0
- package/lib/common/messaging/index.d.ts.map +1 -1
- package/lib/common/messaging/index.js +1 -0
- package/lib/common/messaging/index.js.map +1 -1
- package/lib/common/messaging/socket-write-buffer.d.ts +4 -3
- package/lib/common/messaging/socket-write-buffer.d.ts.map +1 -1
- package/lib/common/messaging/socket-write-buffer.js +14 -4
- package/lib/common/messaging/socket-write-buffer.js.map +1 -1
- package/lib/common/performance/index.d.ts +1 -0
- package/lib/common/performance/index.d.ts.map +1 -1
- package/lib/common/performance/index.js +1 -0
- package/lib/common/performance/index.js.map +1 -1
- package/lib/common/performance/simple-stopwatch.d.ts +18 -0
- package/lib/common/performance/simple-stopwatch.d.ts.map +1 -0
- package/lib/common/performance/simple-stopwatch.js +80 -0
- package/lib/common/performance/simple-stopwatch.js.map +1 -0
- package/lib/common/performance/stopwatch.d.ts +41 -0
- package/lib/common/performance/stopwatch.d.ts.map +1 -1
- package/lib/common/performance/stopwatch.js +89 -3
- package/lib/common/performance/stopwatch.js.map +1 -1
- package/lib/common/performance/stopwatch.spec.d.ts +2 -0
- package/lib/common/performance/stopwatch.spec.d.ts.map +1 -0
- package/lib/common/performance/stopwatch.spec.js +256 -0
- package/lib/common/performance/stopwatch.spec.js.map +1 -0
- package/lib/common/preferences/index.d.ts +1 -0
- package/lib/common/preferences/index.d.ts.map +1 -1
- package/lib/common/preferences/index.js +1 -0
- package/lib/common/preferences/index.js.map +1 -1
- package/lib/common/preferences/preference-utils.d.ts +6 -0
- package/lib/common/preferences/preference-utils.d.ts.map +1 -0
- package/lib/common/preferences/preference-utils.js +29 -0
- package/lib/common/preferences/preference-utils.js.map +1 -0
- package/lib/common/resource.d.ts +2 -0
- package/lib/common/resource.d.ts.map +1 -1
- package/lib/common/resource.js +7 -3
- package/lib/common/resource.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +5 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +3 -0
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +2 -0
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +4 -2
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application-module.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application-module.js +3 -0
- package/lib/electron-main/electron-main-application-module.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +2 -0
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +14 -5
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
- package/lib/electron-main/theia-electron-window.js +3 -0
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/node/backend-application.d.ts +2 -0
- package/lib/node/backend-application.d.ts.map +1 -1
- package/lib/node/backend-application.js +17 -5
- package/lib/node/backend-application.js.map +1 -1
- package/lib/node/messaging/default-messaging-service.d.ts.map +1 -1
- package/lib/node/messaging/default-messaging-service.js +1 -0
- package/lib/node/messaging/default-messaging-service.js.map +1 -1
- package/lib/node/messaging/index.d.ts +1 -0
- package/lib/node/messaging/index.d.ts.map +1 -1
- package/lib/node/messaging/index.js +1 -0
- package/lib/node/messaging/index.js.map +1 -1
- package/lib/node/messaging/messaging-backend-module.d.ts.map +1 -1
- package/lib/node/messaging/messaging-backend-module.js +4 -0
- package/lib/node/messaging/messaging-backend-module.js.map +1 -1
- package/lib/node/messaging/test/default-messaging-service.spec.d.ts +2 -0
- package/lib/node/messaging/test/default-messaging-service.spec.d.ts.map +1 -0
- package/lib/node/messaging/test/default-messaging-service.spec.js +81 -0
- package/lib/node/messaging/test/default-messaging-service.spec.js.map +1 -0
- package/lib/node/messaging/websocket-frontend-connection-service.d.ts +9 -5
- package/lib/node/messaging/websocket-frontend-connection-service.d.ts.map +1 -1
- package/lib/node/messaging/websocket-frontend-connection-service.js +21 -5
- package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -1
- package/lib/node/performance/node-stopwatch.js +1 -1
- package/lib/node/performance/node-stopwatch.js.map +1 -1
- package/lib/node/process-utils.d.ts.map +1 -1
- package/lib/node/process-utils.js +9 -1
- package/lib/node/process-utils.js.map +1 -1
- package/package.json +32 -32
- package/src/browser/common-frontend-contribution.ts +2 -2
- package/src/browser/components/card.tsx +13 -2
- package/src/browser/connection-status-service.ts +1 -1
- package/src/browser/frontend-application-contribution.ts +2 -2
- package/src/browser/frontend-application.ts +26 -17
- package/src/browser/keyboard/index.ts +1 -0
- package/src/browser/keyboard/keyboard-utils.ts +37 -0
- package/src/browser/menu/browser-menu-plugin.ts +8 -1
- package/src/browser/messaging/messaging-frontend-module.ts +3 -0
- package/src/browser/messaging/ws-connection-source.ts +3 -2
- package/src/browser/performance/frontend-stopwatch.ts +1 -1
- package/src/browser/saveable-service.ts +34 -27
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +14 -1
- package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +13 -2
- package/src/browser/style/card.css +4 -2
- package/src/browser/style/hover-service.css +7 -0
- package/src/browser/window/browser-window-module.ts +2 -0
- package/src/browser/window/default-secondary-window-service.ts +6 -0
- package/src/browser/window/window-focus-service.ts +187 -0
- package/src/common/event.spec.ts +80 -0
- package/src/common/event.ts +31 -2
- package/src/common/glob.ts +2 -2
- package/src/common/i18n/nls.metadata.json +4254 -1058
- package/src/common/message-rpc/channel.spec.ts +116 -0
- package/src/common/message-rpc/channel.ts +15 -11
- package/src/common/message-rpc/rpc-protocol.ts +12 -3
- package/src/common/message-rpc/uint8-array-message-buffer.ts +1 -1
- package/src/common/messaging/index.ts +1 -0
- package/src/common/messaging/socket-write-buffer.ts +10 -4
- package/src/common/performance/index.ts +1 -0
- package/src/common/performance/simple-stopwatch.ts +91 -0
- package/src/common/performance/stopwatch.spec.ts +321 -0
- package/src/common/performance/stopwatch.ts +103 -2
- package/src/common/preferences/index.ts +1 -0
- package/src/common/preferences/preference-utils.ts +28 -0
- package/src/common/resource.ts +8 -2
- package/src/electron-browser/menu/electron-main-menu-factory.ts +5 -1
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +3 -0
- package/src/electron-browser/window/electron-window-module.ts +2 -0
- package/src/electron-main/electron-api-main.ts +4 -2
- package/src/electron-main/electron-main-application-module.ts +3 -0
- package/src/electron-main/electron-main-application.ts +21 -5
- package/src/electron-main/theia-electron-window.ts +3 -0
- package/src/node/backend-application.ts +27 -10
- package/src/node/messaging/default-messaging-service.ts +1 -0
- package/src/node/messaging/index.ts +1 -0
- package/src/node/messaging/messaging-backend-module.ts +5 -1
- package/src/node/messaging/test/default-messaging-service.spec.ts +85 -0
- package/src/node/messaging/websocket-frontend-connection-service.ts +20 -7
- package/src/node/performance/node-stopwatch.ts +1 -1
- 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":"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"}
|
|
@@ -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
|
|
129
|
-
const timeFromStart =
|
|
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 @@
|
|
|
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":";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,+BAA8B;AAC9B,+BAA+B;AAC/B,kDAA2C;AAE3C,2CAAiD;AACjD,yDAAqD;AAErD;;;GAGG;AACH,MAAM,eAAe;IAkBjB,YAAY,IAAY,EAAE,WAAmB,CAAC;QAbrC,QAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAClB,SAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,UAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACpB,SAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,UAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAEpB,SAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE;YACnC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YACjC,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC,CAAC,CAAC;QAGC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,aAAc,SAAQ,kCAAe;IAYvC;QACI,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAZ3B,oBAAe,GAAG,CAAC,CAAC;QACX,mBAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,YAAO,GAAsB,EAAE,CAAC;QAEvB,UAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,QAA6B,EAAe,EAAE;YAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC;YACvE,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,OAAO,WAAW,CAAC;QACvB,CAAC,CAAC,CAAC;IAIH,CAAC;IAED,gFAAgF;IAChF,cAAc,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnD,CAAC;CACJ;AAED,MAAM,gBAAgB;CAAI;AAC1B,MAAM,qBAAqB;CAAI;AAE/B;;;GAGG;AACH,KAAK,UAAU,aAAa;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAEhC,IAAI,SAAwB,CAAC;IAE7B,UAAU,CAAC,GAAG,EAAE;QACZ,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAEzB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAErF,OAAO,CAAC,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAE5C,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,0BAA0B,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAChE,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAEpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC;YACjG,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC1D,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAErF,OAAO,CAAC,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC;YACjG,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAE7B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACzC,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,aAAa,EAAE,CAAC;YAEtB,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,0BAA0B,CAAE,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE7C,8EAA8E;YAC9E,iCAAiC;YACjC,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAE,CAAC;YACrE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC1F,oFAAoF;YACpF,+DAA+D;YAC/D,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,aAAa,EAAE,CAAC;YAEtB,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,0BAA0B,CAAE,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;YAC5G,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,MAAM,KAAK,GAAG,IAAI,uBAAQ,EAAQ,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,uBAAQ,EAAQ,CAAC;YACpC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAE9C,wDAAwD;YACxD,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,0BAA0B,CAAE,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE9C,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE9C,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;YAC/F,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;YAChG,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,MAAM,aAAa,EAAE,CAAC;YAEtB,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,0BAA0B,CAAE,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,EAAE,+DAA+D,CAAC,CAAC;YAC1H,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YAClD,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,MAAM,SAAS,GAAG,IAAI,uBAAQ,EAAQ,CAAC;YACvC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACjD,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAChD,MAAM,aAAa,EAAE,CAAC;YAEtB,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,0BAA0B,CAAE,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACjE,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;YAC7D,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAS,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAE3E,MAAM,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,qBAAqB,EAAE,CAAC;YACtC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEvB,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,MAAM,aAAa,EAAE,CAAC;YAEtB,yCAAyC;YACzC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,0BAA0B,CAAE,CAAC,KAAK,CAAC,CAAC;YACrF,gDAAgD;YAChD,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,+BAA+B,CAAE,CAAC,KAAK,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAE3B,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;YACpF,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAEnE,OAAO,CAAC,aAAa,EAAE,CAAC;YAExB,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAE,CAAC;YACrE,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,oCAAoC,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,MAAM,OAAO,GAAG,IAAI,uBAAQ,EAAQ,CAAC;YACrC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO,CAAC,aAAa,EAAE,CAAC;YAExB,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAE,CAAC;YACrE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAExC,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,aAAa,EAAE,CAAC;YAEtB,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACvF,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,MAAM,aAAa,EAAE,CAAC;YAEtB,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAE,CAAC;YACrE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;YACpG,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAmB,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,MAAM,aAAa,EAAE,CAAC;YAEtB,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAE,CAAC;YACrE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAExC,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,OAAO,GAAG,IAAI,8BAAkB,CAAS,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAC3E,MAAM,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,qBAAqB,EAAE,CAAC;YACtC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEvB,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,aAAa,EAAE,CAAC;YAEtB,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAE,CAAC;YACrE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -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"}
|
package/lib/common/resource.d.ts
CHANGED
|
@@ -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":"AAiBA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,eAAe;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,OAAO,CAAC,EAAE,eAAe,CAAA;CAC5B;AAED,MAAM,WAAW,QAAS,SAAQ,UAAU;IACxC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;IAE/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE7C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E;;;;;;;;;;OAUG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E;;;;;;;;;;OAUG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF;;;;;;;;;OASG;IACH,kBAAkB,CAAC,CAAC,OAAO,EAAE,8BAA8B,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7G,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAChD;AACD,yBAAiB,QAAQ,CAAC;IACtB,UAAiB,WAAW;QACxB,aAAa,EAAE,MAAM,CAAA;QACrB,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAClC,OAAO,CAAC,EAAE,8BAA8B,EAAE,CAAA;QAC1C,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAChC;IACD,SAAsB,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7G;IACD,SAAsB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAatG;IACD,SAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,OAAO,CAYtG;CACJ;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,QAAQ;aAA0E,GAAG;MAAY,CAAC;IACxG,MAAM,SAAS;aAA0E,GAAG;MAAY,CAAC;CACnH;AAED,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAC3D,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;CAC7C;AAED,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAC3D,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE/D,qBACa,uBAAuB;IAI5B,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;gBAAzD,iBAAiB,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;IAIhF,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CAYzC;AAED,qBAAa,eAAgB,YAAW,QAAQ;IAGhC,QAAQ,CAAC,GAAG,EAAE,GAAG;IAF7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAM;gBAEX,GAAG,EAAE,GAAG;IAG7B,OAAO,IAAI,IAAI;IAET,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,SAAS,CAAC,QAAQ,CAAC,0BAA0B,gBAAuB;IACpE,QAAQ,CAAC,mBAAmB,cAAyC;IACrE,SAAS,CAAC,qBAAqB,IAAI,IAAI;CAG1C;AACD,qBAAa,wBAAyB,YAAW,QAAQ;IACzC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC;gBAArC,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC;IAE3D,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,mBAAmB,IAAI,KAAK,CAAC,IAAI,CAAC,CAErC;IAED,OAAO,IAAI,IAAI;IAIf,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhD;AAED,qBACa,iBAAkB,YAAW,gBAAgB;IAEtD,SAAS,CAAC,QAAQ,CAAC,SAAS,mDAAkG;IAE9H,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAUzC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAU5C,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ;IAQ3B,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB;CAI3D;AAED,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,QAAQ;IAErC,QAAQ,CAAC,GAAG,EAAE,GAAG;gBAAR,GAAG,EAAE,GAAG;IAE7B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEK,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAAE,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAG7F,OAAO,IAAI,IAAI;CAClB;AAED;;GAEG;AACH,qBACa,4BAA6B,YAAW,gBAAgB;IACjE,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;CAM5C;AAED,eAAO,MAAM,eAAe,aAAa,CAAC;AAI1C,qBACa,wBAAyB,YAAW,gBAAgB;IAE7D,SAAS,CAAC,QAAQ,CAAC,SAAS,gCAAuC;IAEnE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAQhB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa5C,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAO3H,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG;CAa3D;AAED,qBAAa,gBAAiB,YAAW,QAAQ;IAUjC,OAAO,CAAC,SAAS;IAAwC,GAAG,EAAE,GAAG;IAAE,OAAO,CAAC,OAAO,CAAC;IAR/F,SAAS,CAAC,QAAQ,CAAC,0BAA0B,gBAAuB;IACpE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,YAAY,SAAS;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,IAAI,mBAAmB,IAAI,KAAK,CAAC,IAAI,CAAC,CAErC;gBAEmB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAS,GAAG,EAAE,GAAG,EAAU,OAAO,CAAC,EAAE,MAAM,YAAA,EAAE,QAAQ,CAAC,EAAE,MAAM;IAM1H,OAAO,IAAI,IAAI;IAKT,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAAE,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAIvC,IAAI,OAAO,IAAI,eAAe,GAAG,SAAS,CAEzC;CACJ;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,CAMvE"}
|