asyar-sdk 1.10.1 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ExtensionBridge.d.ts +41 -0
- package/dist/ExtensionBridge.d.ts.map +1 -1
- package/dist/ExtensionBridge.js +125 -3
- package/dist/ExtensionBridge.js.map +1 -1
- package/dist/ExtensionContext.d.ts +65 -1
- package/dist/ExtensionContext.d.ts.map +1 -1
- package/dist/ExtensionContext.js +92 -0
- package/dist/ExtensionContext.js.map +1 -1
- package/dist/ExtensionContext.test.d.ts +2 -0
- package/dist/ExtensionContext.test.d.ts.map +1 -0
- package/dist/ExtensionContext.test.js +101 -0
- package/dist/ExtensionContext.test.js.map +1 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +17 -7
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/lib/manifest.d.ts +22 -1
- package/dist/cli/lib/manifest.d.ts.map +1 -1
- package/dist/cli/lib/manifest.js +125 -1
- package/dist/cli/lib/manifest.js.map +1 -1
- package/dist/icons/iconData.d.ts.map +1 -1
- package/dist/icons/iconData.js +28 -0
- package/dist/icons/iconData.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/services/AIServiceProxy.d.ts +6 -0
- package/dist/services/AIServiceProxy.d.ts.map +1 -0
- package/dist/services/AIServiceProxy.js +99 -0
- package/dist/services/AIServiceProxy.js.map +1 -0
- package/dist/services/AIServiceProxy.test.d.ts +2 -0
- package/dist/services/AIServiceProxy.test.d.ts.map +1 -0
- package/dist/services/AIServiceProxy.test.js +192 -0
- package/dist/services/AIServiceProxy.test.js.map +1 -0
- package/dist/services/BaseServiceProxy.d.ts.map +1 -1
- package/dist/services/BaseServiceProxy.js +3 -1
- package/dist/services/BaseServiceProxy.js.map +1 -1
- package/dist/services/ClipboardHistoryServiceProxy.d.ts +1 -0
- package/dist/services/ClipboardHistoryServiceProxy.d.ts.map +1 -1
- package/dist/services/ClipboardHistoryServiceProxy.js +3 -0
- package/dist/services/ClipboardHistoryServiceProxy.js.map +1 -1
- package/dist/services/ExtensionManagerProxy.d.ts +1 -1
- package/dist/services/ExtensionManagerProxy.d.ts.map +1 -1
- package/dist/services/ExtensionManagerProxy.js +2 -2
- package/dist/services/ExtensionManagerProxy.js.map +1 -1
- package/dist/services/FeedbackServiceProxy.d.ts +25 -0
- package/dist/services/FeedbackServiceProxy.d.ts.map +1 -0
- package/dist/services/FeedbackServiceProxy.js +41 -0
- package/dist/services/FeedbackServiceProxy.js.map +1 -0
- package/dist/services/FileManagerServiceProxy.d.ts +7 -0
- package/dist/services/FileManagerServiceProxy.d.ts.map +1 -0
- package/dist/services/FileManagerServiceProxy.js +27 -0
- package/dist/services/FileManagerServiceProxy.js.map +1 -0
- package/dist/services/FileManagerServiceProxy.test.d.ts +2 -0
- package/dist/services/FileManagerServiceProxy.test.d.ts.map +1 -0
- package/dist/services/FileManagerServiceProxy.test.js +56 -0
- package/dist/services/FileManagerServiceProxy.test.js.map +1 -0
- package/dist/services/IAIService.d.ts +66 -0
- package/dist/services/IAIService.d.ts.map +1 -0
- package/dist/services/IAIService.js +3 -0
- package/dist/services/IAIService.js.map +1 -0
- package/dist/services/IClipboardHistoryService.d.ts +6 -0
- package/dist/services/IClipboardHistoryService.d.ts.map +1 -1
- package/dist/services/IExtensionManager.d.ts +7 -4
- package/dist/services/IExtensionManager.d.ts.map +1 -1
- package/dist/services/IFeedbackService.d.ts +84 -0
- package/dist/services/IFeedbackService.d.ts.map +1 -0
- package/dist/services/IFeedbackService.js +3 -0
- package/dist/services/IFeedbackService.js.map +1 -0
- package/dist/services/IFileManagerService.d.ts +33 -0
- package/dist/services/IFileManagerService.d.ts.map +1 -0
- package/dist/services/IFileManagerService.js +3 -0
- package/dist/services/IFileManagerService.js.map +1 -0
- package/dist/services/IInteropService.d.ts +16 -0
- package/dist/services/IInteropService.d.ts.map +1 -0
- package/dist/services/IInteropService.js +12 -0
- package/dist/services/IInteropService.js.map +1 -0
- package/dist/services/IOAuthService.d.ts +68 -0
- package/dist/services/IOAuthService.d.ts.map +1 -0
- package/dist/services/IOAuthService.js +3 -0
- package/dist/services/IOAuthService.js.map +1 -0
- package/dist/services/ISelectionService.d.ts +23 -0
- package/dist/services/ISelectionService.d.ts.map +1 -0
- package/dist/services/ISelectionService.js +3 -0
- package/dist/services/ISelectionService.js.map +1 -0
- package/dist/services/IShellService.d.ts +39 -0
- package/dist/services/IShellService.d.ts.map +1 -0
- package/dist/services/IShellService.js +3 -0
- package/dist/services/IShellService.js.map +1 -0
- package/dist/services/IStorageService.d.ts +22 -0
- package/dist/services/IStorageService.d.ts.map +1 -0
- package/dist/services/IStorageService.js +3 -0
- package/dist/services/IStorageService.js.map +1 -0
- package/dist/services/InteropServiceProxy.d.ts +6 -0
- package/dist/services/InteropServiceProxy.d.ts.map +1 -0
- package/dist/services/InteropServiceProxy.js +26 -0
- package/dist/services/InteropServiceProxy.js.map +1 -0
- package/dist/services/InteropServiceProxy.test.d.ts +2 -0
- package/dist/services/InteropServiceProxy.test.d.ts.map +1 -0
- package/dist/services/InteropServiceProxy.test.js +59 -0
- package/dist/services/InteropServiceProxy.test.js.map +1 -0
- package/dist/services/OAuthServiceProxy.d.ts +18 -0
- package/dist/services/OAuthServiceProxy.d.ts.map +1 -0
- package/dist/services/OAuthServiceProxy.js +70 -0
- package/dist/services/OAuthServiceProxy.js.map +1 -0
- package/dist/services/OAuthServiceProxy.test.d.ts +2 -0
- package/dist/services/OAuthServiceProxy.test.d.ts.map +1 -0
- package/dist/services/OAuthServiceProxy.test.js +165 -0
- package/dist/services/OAuthServiceProxy.test.js.map +1 -0
- package/dist/services/SelectionServiceProxy.d.ts +10 -0
- package/dist/services/SelectionServiceProxy.d.ts.map +1 -0
- package/dist/services/SelectionServiceProxy.js +17 -0
- package/dist/services/SelectionServiceProxy.js.map +1 -0
- package/dist/services/ShellServiceProxy.d.ts +6 -0
- package/dist/services/ShellServiceProxy.d.ts.map +1 -0
- package/dist/services/ShellServiceProxy.js +78 -0
- package/dist/services/ShellServiceProxy.js.map +1 -0
- package/dist/services/StorageServiceProxy.d.ts +16 -0
- package/dist/services/StorageServiceProxy.d.ts.map +1 -0
- package/dist/services/StorageServiceProxy.js +48 -0
- package/dist/services/StorageServiceProxy.js.map +1 -0
- package/dist/services/index.d.ts +17 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +21 -1
- package/dist/services/index.js.map +1 -1
- package/dist/types/ExtensionType.d.ts +49 -0
- package/dist/types/ExtensionType.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ExtensionContext } from "./ExtensionContext";
|
|
1
2
|
import type { Extension, ExtensionManifest } from "./types/ExtensionType";
|
|
2
3
|
import type { ExtensionAction } from "./types/ActionType";
|
|
3
4
|
import type { CommandHandler } from "./types/CommandType";
|
|
@@ -8,6 +9,8 @@ export declare class ExtensionBridge {
|
|
|
8
9
|
private componentRegistry;
|
|
9
10
|
private actionRegistry;
|
|
10
11
|
private commandRegistry;
|
|
12
|
+
private preferences;
|
|
13
|
+
private activeContexts;
|
|
11
14
|
private broker;
|
|
12
15
|
private logger;
|
|
13
16
|
private constructor();
|
|
@@ -17,6 +20,44 @@ export declare class ExtensionBridge {
|
|
|
17
20
|
registerAction(extensionId: string, action: ExtensionAction): void;
|
|
18
21
|
unregisterAction(actionId: string): void;
|
|
19
22
|
getActions(): ExtensionAction[];
|
|
23
|
+
/**
|
|
24
|
+
* Tells the bridge which extension this iframe represents so its internal
|
|
25
|
+
* `LogServiceProxy` can stamp `extensionId` on every IPC log call.
|
|
26
|
+
*
|
|
27
|
+
* Without this, every `this.logger.debug(...)` from the bridge fires a
|
|
28
|
+
* `log:debug` postMessage with no extensionId, and the host's
|
|
29
|
+
* `ExtensionIpcRouter` rejects it as "untrusted frame, no extensionId" —
|
|
30
|
+
* producing per-tick error spam in the dev console for any extension that
|
|
31
|
+
* re-registers actions on a timer (e.g. pomodoro's countdown).
|
|
32
|
+
*/
|
|
33
|
+
setExtensionId(extensionId: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Register a live `ExtensionContext` with the bridge as the active
|
|
36
|
+
* context for an extension id. This is what lets the
|
|
37
|
+
* `asyar:event:preferences:set-all` listener find the context and
|
|
38
|
+
* call `setPreferences` on it.
|
|
39
|
+
*
|
|
40
|
+
* Tier 2 iframes that bootstrap by creating their own
|
|
41
|
+
* `ExtensionContext` (instead of going through the bridge's
|
|
42
|
+
* `initializeExtensions()` path) must call this so they show up in
|
|
43
|
+
* `activeContexts`. Otherwise the preferences bundle arrives at the
|
|
44
|
+
* bridge but never reaches the live context — it only lands in the
|
|
45
|
+
* `this.preferences` map which is consulted by `initializeExtensions`.
|
|
46
|
+
*
|
|
47
|
+
* Called from `ExtensionContext.setExtensionId`, so Tier 2 iframes get
|
|
48
|
+
* this for free as long as they call `setExtensionId(id)` during boot.
|
|
49
|
+
*/
|
|
50
|
+
registerActiveContext(extensionId: string, context: ExtensionContext): void;
|
|
51
|
+
/**
|
|
52
|
+
* Store a preference bundle (extension-level + command-level) for an
|
|
53
|
+
* extension. Called by the host-side ExtensionLoader before the extension
|
|
54
|
+
* is initialized, so that `initializeExtensions` can hand it to the new
|
|
55
|
+
* ExtensionContext as a frozen snapshot.
|
|
56
|
+
*/
|
|
57
|
+
setPreferences(extensionId: string, bundle: {
|
|
58
|
+
extension: Record<string, unknown>;
|
|
59
|
+
commands: Record<string, Record<string, unknown>>;
|
|
60
|
+
}): void;
|
|
20
61
|
registerManifest(manifest: ExtensionManifest): void;
|
|
21
62
|
registerExtensionImplementation(id: string, extension: Extension): void;
|
|
22
63
|
initializeExtensions(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionBridge.d.ts","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExtensionBridge.d.ts","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,wBAAwB,CAAqC;IACrE,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,eAAe,CAGT;IACd,OAAO,CAAC,WAAW,CAGL;IACd,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO;WAUO,WAAW,IAAI,eAAe;IAO5C,OAAO,CAAC,iBAAiB;IA+IzB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI;IAS/D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IAWlE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,UAAU,IAAI,eAAe,EAAE;IAI/B;;;;;;;;;OASG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAkB3E;;;;;OAKG;IACH,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,GAChG,IAAI;IAKP,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAMnD,+BAA+B,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAWjE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBrC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3C,YAAY,IAAI,iBAAiB,EAAE;IAKnC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAKtD,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAK7D,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,GAClB,IAAI;IAMP,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB,OAAO,CAAC,GAAG,CAAC;IASf,WAAW,IAAI,MAAM,EAAE;IAKvB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;CAKvD"}
|
package/dist/ExtensionBridge.js
CHANGED
|
@@ -21,6 +21,8 @@ class ExtensionBridge {
|
|
|
21
21
|
this.componentRegistry = {};
|
|
22
22
|
this.actionRegistry = new Map();
|
|
23
23
|
this.commandRegistry = new Map();
|
|
24
|
+
this.preferences = new Map();
|
|
25
|
+
this.activeContexts = new Map();
|
|
24
26
|
this.logger = new LogServiceProxy_1.LogServiceProxy();
|
|
25
27
|
this.broker = MessageBroker_1.MessageBroker.getInstance();
|
|
26
28
|
this.setupIPCListeners();
|
|
@@ -52,6 +54,39 @@ class ExtensionBridge {
|
|
|
52
54
|
});
|
|
53
55
|
}
|
|
54
56
|
}));
|
|
57
|
+
// The broker routes anything under `asyar:event:*` straight to registered
|
|
58
|
+
// listeners with the payload unwrapped (see MessageBroker.handleMessage).
|
|
59
|
+
// That's why the message type uses the `:event:` namespace here instead
|
|
60
|
+
// of a plain `asyar:preferences:set-all` — a non-event message would be
|
|
61
|
+
// filtered out and the listener would silently never fire.
|
|
62
|
+
this.broker.on('asyar:event:preferences:set-all', (payload) => {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
const bundle = {
|
|
65
|
+
extension: (_a = payload === null || payload === void 0 ? void 0 : payload.extension) !== null && _a !== void 0 ? _a : {},
|
|
66
|
+
commands: (_b = payload === null || payload === void 0 ? void 0 : payload.commands) !== null && _b !== void 0 ? _b : {},
|
|
67
|
+
};
|
|
68
|
+
// Iterate `activeContexts`, not `extensionManifests`. Tier 2 iframes
|
|
69
|
+
// bootstrap via `new ExtensionContext()` directly — they never call
|
|
70
|
+
// `bridge.registerManifest`, so `extensionManifests` is empty. But
|
|
71
|
+
// `activeContexts` is populated by the self-register path in
|
|
72
|
+
// `ExtensionContext.setExtensionId`, so that's where the live
|
|
73
|
+
// contexts live in both Tier 1 and Tier 2.
|
|
74
|
+
//
|
|
75
|
+
// Also store the bundle in `this.preferences` so any context that
|
|
76
|
+
// registers AFTER this message arrives can pick it up via the
|
|
77
|
+
// stash-and-drain path in `registerActiveContext`.
|
|
78
|
+
for (const [id, context] of this.activeContexts) {
|
|
79
|
+
this.preferences.set(id, bundle);
|
|
80
|
+
context.setPreferences(bundle);
|
|
81
|
+
}
|
|
82
|
+
// Race guard: if the reply arrived before any context registered
|
|
83
|
+
// (the iframe posts `asyar:extension:loaded` asynchronously), stash
|
|
84
|
+
// under a sentinel key. The next `registerActiveContext` call will
|
|
85
|
+
// drain it into the real extension id.
|
|
86
|
+
if (this.activeContexts.size === 0) {
|
|
87
|
+
this.preferences.set('__pending__', bundle);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
55
90
|
// Listen for search requests from the host
|
|
56
91
|
if (typeof window !== 'undefined') {
|
|
57
92
|
window.addEventListener('message', (event) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -72,6 +107,18 @@ class ExtensionBridge {
|
|
|
72
107
|
}
|
|
73
108
|
return;
|
|
74
109
|
}
|
|
110
|
+
// Handle scheduled/direct command execution from host
|
|
111
|
+
if (data.type === 'asyar:command:execute') {
|
|
112
|
+
const { commandId, args } = data.payload;
|
|
113
|
+
// Each Tier 2 iframe has exactly one extension
|
|
114
|
+
for (const extension of this.extensionImplementations.values()) {
|
|
115
|
+
if (typeof extension.executeCommand === 'function') {
|
|
116
|
+
Promise.resolve(extension.executeCommand(commandId, args))
|
|
117
|
+
.catch((err) => this.logger.error(err));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
75
122
|
// Handle search requests (existing logic)
|
|
76
123
|
if (data.type !== 'asyar:search:request')
|
|
77
124
|
return;
|
|
@@ -139,6 +186,62 @@ class ExtensionBridge {
|
|
|
139
186
|
getActions() {
|
|
140
187
|
return Array.from(this.actionRegistry.values());
|
|
141
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Tells the bridge which extension this iframe represents so its internal
|
|
191
|
+
* `LogServiceProxy` can stamp `extensionId` on every IPC log call.
|
|
192
|
+
*
|
|
193
|
+
* Without this, every `this.logger.debug(...)` from the bridge fires a
|
|
194
|
+
* `log:debug` postMessage with no extensionId, and the host's
|
|
195
|
+
* `ExtensionIpcRouter` rejects it as "untrusted frame, no extensionId" —
|
|
196
|
+
* producing per-tick error spam in the dev console for any extension that
|
|
197
|
+
* re-registers actions on a timer (e.g. pomodoro's countdown).
|
|
198
|
+
*/
|
|
199
|
+
setExtensionId(extensionId) {
|
|
200
|
+
if (typeof this.logger.setExtensionId === 'function') {
|
|
201
|
+
this.logger.setExtensionId(extensionId);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Register a live `ExtensionContext` with the bridge as the active
|
|
206
|
+
* context for an extension id. This is what lets the
|
|
207
|
+
* `asyar:event:preferences:set-all` listener find the context and
|
|
208
|
+
* call `setPreferences` on it.
|
|
209
|
+
*
|
|
210
|
+
* Tier 2 iframes that bootstrap by creating their own
|
|
211
|
+
* `ExtensionContext` (instead of going through the bridge's
|
|
212
|
+
* `initializeExtensions()` path) must call this so they show up in
|
|
213
|
+
* `activeContexts`. Otherwise the preferences bundle arrives at the
|
|
214
|
+
* bridge but never reaches the live context — it only lands in the
|
|
215
|
+
* `this.preferences` map which is consulted by `initializeExtensions`.
|
|
216
|
+
*
|
|
217
|
+
* Called from `ExtensionContext.setExtensionId`, so Tier 2 iframes get
|
|
218
|
+
* this for free as long as they call `setExtensionId(id)` during boot.
|
|
219
|
+
*/
|
|
220
|
+
registerActiveContext(extensionId, context) {
|
|
221
|
+
var _a;
|
|
222
|
+
this.activeContexts.set(extensionId, context);
|
|
223
|
+
// If we've already received a preferences bundle for this extension
|
|
224
|
+
// (e.g. boot reply arrived before the context was registered, or a
|
|
225
|
+
// live update landed earlier), deliver it now so the late-joining
|
|
226
|
+
// context sees the latest snapshot immediately. The `__pending__`
|
|
227
|
+
// sentinel key is used when the message arrives before any context
|
|
228
|
+
// is registered — we move it to the real id and clear the sentinel.
|
|
229
|
+
const existing = (_a = this.preferences.get(extensionId)) !== null && _a !== void 0 ? _a : this.preferences.get('__pending__');
|
|
230
|
+
if (existing) {
|
|
231
|
+
context.setPreferences(existing);
|
|
232
|
+
this.preferences.set(extensionId, existing);
|
|
233
|
+
this.preferences.delete('__pending__');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Store a preference bundle (extension-level + command-level) for an
|
|
238
|
+
* extension. Called by the host-side ExtensionLoader before the extension
|
|
239
|
+
* is initialized, so that `initializeExtensions` can hand it to the new
|
|
240
|
+
* ExtensionContext as a frozen snapshot.
|
|
241
|
+
*/
|
|
242
|
+
setPreferences(extensionId, bundle) {
|
|
243
|
+
this.preferences.set(extensionId, bundle);
|
|
244
|
+
}
|
|
142
245
|
// Register an extension manifest
|
|
143
246
|
registerManifest(manifest) {
|
|
144
247
|
this.extensionManifests.set(manifest.id, manifest);
|
|
@@ -164,8 +267,17 @@ class ExtensionBridge {
|
|
|
164
267
|
}
|
|
165
268
|
this.logger.debug(`Initializing extension: ${manifest.id} (${manifest.name})`);
|
|
166
269
|
const context = new ExtensionContext_1.ExtensionContext();
|
|
270
|
+
// `setExtensionId` self-registers the context with the bridge and
|
|
271
|
+
// drains any stashed preferences bundle (either under `manifest.id`
|
|
272
|
+
// or the `__pending__` sentinel). No need to set `activeContexts`
|
|
273
|
+
// or call `setPreferences` directly here — it already happened.
|
|
167
274
|
context.setExtensionId(manifest.id);
|
|
168
|
-
|
|
275
|
+
try {
|
|
276
|
+
yield extension.initialize(context);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
this.logger.error(`Failed to initialize extension ${manifest.id}: ${error}`);
|
|
280
|
+
}
|
|
169
281
|
}
|
|
170
282
|
});
|
|
171
283
|
}
|
|
@@ -177,7 +289,12 @@ class ExtensionBridge {
|
|
|
177
289
|
if (!manifest)
|
|
178
290
|
continue;
|
|
179
291
|
this.logger.debug(`Activating extension: ${manifest.id}`);
|
|
180
|
-
|
|
292
|
+
try {
|
|
293
|
+
yield extension.activate();
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
this.logger.error(`Failed to activate extension ${manifest.id}: ${error}`);
|
|
297
|
+
}
|
|
181
298
|
}
|
|
182
299
|
});
|
|
183
300
|
}
|
|
@@ -189,7 +306,12 @@ class ExtensionBridge {
|
|
|
189
306
|
if (!manifest)
|
|
190
307
|
continue;
|
|
191
308
|
this.logger.debug(`Deactivating extension: ${manifest.id}`);
|
|
192
|
-
|
|
309
|
+
try {
|
|
310
|
+
yield extension.deactivate();
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
this.logger.error(`Failed to deactivate extension ${manifest.id}: ${error}`);
|
|
314
|
+
}
|
|
193
315
|
}
|
|
194
316
|
});
|
|
195
317
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionBridge.js","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAsD;AAItD,uDAAoD;AAEpD,gEAA6D;AAG7D,yFAAyF;AACzF,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"ExtensionBridge.js","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,65 @@
|
|
|
1
1
|
import type { ExtensionSyncProvider } from "./types/SyncType";
|
|
2
2
|
import type { ExtensionAction } from "./types/ActionType";
|
|
3
3
|
import type { CommandHandler } from "./types/CommandType";
|
|
4
|
-
import { LogServiceProxy, NotificationServiceProxy, ClipboardHistoryServiceProxy, ExtensionManagerProxy, CommandServiceProxy, ActionServiceProxy, NetworkServiceProxy, SettingsServiceProxy, StatusBarServiceProxy, EntitlementServiceProxy } from "./services";
|
|
4
|
+
import { LogServiceProxy, NotificationServiceProxy, ClipboardHistoryServiceProxy, ExtensionManagerProxy, CommandServiceProxy, ActionServiceProxy, NetworkServiceProxy, SettingsServiceProxy, StatusBarServiceProxy, EntitlementServiceProxy, StorageServiceProxy, FeedbackServiceProxy, SelectionServiceProxy, ShellServiceProxy } from "./services";
|
|
5
|
+
import { AIServiceProxy } from './services/AIServiceProxy';
|
|
6
|
+
import { OAuthServiceProxy } from './services/OAuthServiceProxy';
|
|
7
|
+
import { FileManagerServiceProxy } from './services/FileManagerServiceProxy';
|
|
8
|
+
import { InteropServiceProxy } from './services/InteropServiceProxy';
|
|
9
|
+
/**
|
|
10
|
+
* A frozen snapshot of an extension's effective preferences, taken at
|
|
11
|
+
* extension boot. Extension-level preferences are flat keys on this object;
|
|
12
|
+
* command-level preferences live under `commands[commandId]`.
|
|
13
|
+
*
|
|
14
|
+
* This snapshot is NOT live. When the user edits preferences in Settings,
|
|
15
|
+
* the launcher reloads the extension and a fresh context is created.
|
|
16
|
+
* Extensions should not cache `context.preferences` across reloads.
|
|
17
|
+
*/
|
|
18
|
+
export interface PreferencesSnapshot {
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
commands: {
|
|
21
|
+
[commandId: string]: {
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
}
|
|
5
26
|
export declare class ExtensionContext {
|
|
6
27
|
private extensionId;
|
|
28
|
+
preferences: PreferencesSnapshot;
|
|
29
|
+
/**
|
|
30
|
+
* Listeners notified *after* `setPreferences` installs a new frozen
|
|
31
|
+
* snapshot. Callbacks take no arguments and must re-read fresh values
|
|
32
|
+
* from `context.preferences` — the snapshot is already in place when
|
|
33
|
+
* they fire. This is a read-only notification, not a live getter:
|
|
34
|
+
* extensions that cache preference values at boot subscribe here to
|
|
35
|
+
* recompute when the user edits their settings.
|
|
36
|
+
*/
|
|
37
|
+
private preferenceChangeListeners;
|
|
38
|
+
/**
|
|
39
|
+
* Replace the preferences snapshot. Called once at extension boot by
|
|
40
|
+
* ExtensionBridge, and again when the user edits preferences in the
|
|
41
|
+
* launcher's Extensions settings tab. The snapshot is frozen at all
|
|
42
|
+
* nesting levels — extensions cannot mutate it.
|
|
43
|
+
*
|
|
44
|
+
* After the snapshot is installed, registered `onPreferencesChanged`
|
|
45
|
+
* listeners fire. They must re-read `context.preferences` to pick up
|
|
46
|
+
* the new values.
|
|
47
|
+
*/
|
|
48
|
+
setPreferences(bundle: {
|
|
49
|
+
extension: Record<string, unknown>;
|
|
50
|
+
commands: Record<string, Record<string, unknown>>;
|
|
51
|
+
}): void;
|
|
52
|
+
/**
|
|
53
|
+
* Subscribe to preference change notifications. Returns an unsubscribe
|
|
54
|
+
* function. The callback fires *after* `context.preferences` has been
|
|
55
|
+
* replaced with a new frozen snapshot — re-read values inside the
|
|
56
|
+
* callback, do not capture them from the enclosing scope.
|
|
57
|
+
*
|
|
58
|
+
* Typical use: an extension that caches a preference value at
|
|
59
|
+
* `initialize()` time (e.g. to feed a timer engine's internal state)
|
|
60
|
+
* uses this to recompute when the user edits the setting.
|
|
61
|
+
*/
|
|
62
|
+
onPreferencesChanged(callback: () => void): () => void;
|
|
7
63
|
readonly proxies: {
|
|
8
64
|
LogService: LogServiceProxy;
|
|
9
65
|
NotificationService: NotificationServiceProxy;
|
|
@@ -15,6 +71,14 @@ export declare class ExtensionContext {
|
|
|
15
71
|
SettingsService: SettingsServiceProxy;
|
|
16
72
|
StatusBarService: StatusBarServiceProxy;
|
|
17
73
|
EntitlementService: EntitlementServiceProxy;
|
|
74
|
+
StorageService: StorageServiceProxy;
|
|
75
|
+
FeedbackService: FeedbackServiceProxy;
|
|
76
|
+
SelectionService: SelectionServiceProxy;
|
|
77
|
+
AIService: AIServiceProxy;
|
|
78
|
+
OAuthService: OAuthServiceProxy;
|
|
79
|
+
ShellService: ShellServiceProxy;
|
|
80
|
+
FileManagerService: FileManagerServiceProxy;
|
|
81
|
+
InteropService: InteropServiceProxy;
|
|
18
82
|
};
|
|
19
83
|
constructor();
|
|
20
84
|
private setupFocusTracking;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionContext.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ExtensionContext.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,QAAQ,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;CAC/D;AAGD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAc;IAC1B,WAAW,EAAE,mBAAmB,CAEb;IAE1B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB,CAAyB;IAE1D;;;;;;;;;OASG;IACI,cAAc,CAAC,MAAM,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACnD,GAAG,IAAI;IAoBR;;;;;;;;;OASG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAU7D,SAAgB,OAAO;;;;;;;;;;;;;;;;;;;MAmBrB;;IAOF,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,mBAAmB;IAoB3B,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;IAQrC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAgChC,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAa7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASxC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBjE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS1C,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAyF5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAWvE;AAGD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQnD"}
|
package/dist/ExtensionContext.js
CHANGED
|
@@ -13,10 +13,72 @@ exports.ExtensionContext = void 0;
|
|
|
13
13
|
exports.injectThemeVariables = injectThemeVariables;
|
|
14
14
|
exports.injectFontFaceCSS = injectFontFaceCSS;
|
|
15
15
|
const services_1 = require("./services");
|
|
16
|
+
const AIServiceProxy_1 = require("./services/AIServiceProxy");
|
|
17
|
+
const OAuthServiceProxy_1 = require("./services/OAuthServiceProxy");
|
|
18
|
+
const FileManagerServiceProxy_1 = require("./services/FileManagerServiceProxy");
|
|
19
|
+
const InteropServiceProxy_1 = require("./services/InteropServiceProxy");
|
|
16
20
|
// Define the context that will be passed to extensions
|
|
17
21
|
class ExtensionContext {
|
|
22
|
+
/**
|
|
23
|
+
* Replace the preferences snapshot. Called once at extension boot by
|
|
24
|
+
* ExtensionBridge, and again when the user edits preferences in the
|
|
25
|
+
* launcher's Extensions settings tab. The snapshot is frozen at all
|
|
26
|
+
* nesting levels — extensions cannot mutate it.
|
|
27
|
+
*
|
|
28
|
+
* After the snapshot is installed, registered `onPreferencesChanged`
|
|
29
|
+
* listeners fire. They must re-read `context.preferences` to pick up
|
|
30
|
+
* the new values.
|
|
31
|
+
*/
|
|
32
|
+
setPreferences(bundle) {
|
|
33
|
+
var _a;
|
|
34
|
+
const snapshot = Object.assign(Object.assign({}, bundle.extension), { commands: {} });
|
|
35
|
+
for (const [cmdId, prefs] of Object.entries((_a = bundle.commands) !== null && _a !== void 0 ? _a : {})) {
|
|
36
|
+
snapshot.commands[cmdId] = Object.freeze(Object.assign({}, prefs));
|
|
37
|
+
}
|
|
38
|
+
Object.freeze(snapshot.commands);
|
|
39
|
+
this.preferences = Object.freeze(snapshot);
|
|
40
|
+
// Fire listeners after the new snapshot is in place so they see the
|
|
41
|
+
// fresh values on first read. Errors in one listener don't prevent
|
|
42
|
+
// the others from running.
|
|
43
|
+
for (const cb of this.preferenceChangeListeners) {
|
|
44
|
+
try {
|
|
45
|
+
cb();
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.error('[ExtensionContext] onPreferencesChanged listener threw:', err);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Subscribe to preference change notifications. Returns an unsubscribe
|
|
54
|
+
* function. The callback fires *after* `context.preferences` has been
|
|
55
|
+
* replaced with a new frozen snapshot — re-read values inside the
|
|
56
|
+
* callback, do not capture them from the enclosing scope.
|
|
57
|
+
*
|
|
58
|
+
* Typical use: an extension that caches a preference value at
|
|
59
|
+
* `initialize()` time (e.g. to feed a timer engine's internal state)
|
|
60
|
+
* uses this to recompute when the user edits the setting.
|
|
61
|
+
*/
|
|
62
|
+
onPreferencesChanged(callback) {
|
|
63
|
+
this.preferenceChangeListeners.push(callback);
|
|
64
|
+
return () => {
|
|
65
|
+
this.preferenceChangeListeners = this.preferenceChangeListeners.filter((l) => l !== callback);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
18
68
|
constructor() {
|
|
19
69
|
this.extensionId = "";
|
|
70
|
+
this.preferences = Object.freeze({
|
|
71
|
+
commands: Object.freeze({}),
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* Listeners notified *after* `setPreferences` installs a new frozen
|
|
75
|
+
* snapshot. Callbacks take no arguments and must re-read fresh values
|
|
76
|
+
* from `context.preferences` — the snapshot is already in place when
|
|
77
|
+
* they fire. This is a read-only notification, not a live getter:
|
|
78
|
+
* extensions that cache preference values at boot subscribe here to
|
|
79
|
+
* recompute when the user edits their settings.
|
|
80
|
+
*/
|
|
81
|
+
this.preferenceChangeListeners = [];
|
|
20
82
|
// The local registry is now strictly for proxies
|
|
21
83
|
this.proxies = {
|
|
22
84
|
LogService: new services_1.LogServiceProxy(),
|
|
@@ -29,6 +91,14 @@ class ExtensionContext {
|
|
|
29
91
|
SettingsService: new services_1.SettingsServiceProxy(),
|
|
30
92
|
StatusBarService: new services_1.StatusBarServiceProxy(),
|
|
31
93
|
EntitlementService: new services_1.EntitlementServiceProxy(),
|
|
94
|
+
StorageService: new services_1.StorageServiceProxy(),
|
|
95
|
+
FeedbackService: new services_1.FeedbackServiceProxy(),
|
|
96
|
+
SelectionService: new services_1.SelectionServiceProxy(),
|
|
97
|
+
AIService: new AIServiceProxy_1.AIServiceProxy(),
|
|
98
|
+
OAuthService: new OAuthServiceProxy_1.OAuthServiceProxy(),
|
|
99
|
+
ShellService: new services_1.ShellServiceProxy(),
|
|
100
|
+
FileManagerService: new FileManagerServiceProxy_1.FileManagerServiceProxy(),
|
|
101
|
+
InteropService: new InteropServiceProxy_1.InteropServiceProxy(),
|
|
32
102
|
};
|
|
33
103
|
this.setupFocusTracking();
|
|
34
104
|
this.setupThemeInjection();
|
|
@@ -116,6 +186,28 @@ class ExtensionContext {
|
|
|
116
186
|
svc.setExtensionId(id);
|
|
117
187
|
}
|
|
118
188
|
}
|
|
189
|
+
// The ExtensionBridge singleton has its own internal LogServiceProxy that
|
|
190
|
+
// is constructed before any extension context exists, so it never goes
|
|
191
|
+
// through the proxies-bag patching above. Push the extensionId to it now
|
|
192
|
+
// so its `Registered action: ...` and similar debug logs don't get
|
|
193
|
+
// rejected by the host IPC router for missing extensionId.
|
|
194
|
+
//
|
|
195
|
+
// We also self-register this context as the active context for this
|
|
196
|
+
// extension id. Tier 2 iframes that bootstrap by creating their own
|
|
197
|
+
// `ExtensionContext` (rather than going through
|
|
198
|
+
// `bridge.initializeExtensions()`) otherwise never appear in the
|
|
199
|
+
// bridge's `activeContexts` map, and `asyar:event:preferences:set-all`
|
|
200
|
+
// can't find the live context to call `setPreferences` on.
|
|
201
|
+
try {
|
|
202
|
+
const bridge = ExtensionBridge_1.ExtensionBridge.getInstance();
|
|
203
|
+
bridge.setExtensionId(id);
|
|
204
|
+
bridge.registerActiveContext(id, this);
|
|
205
|
+
}
|
|
206
|
+
catch (_a) {
|
|
207
|
+
// ExtensionBridge import is at the bottom of this file (circular avoidance);
|
|
208
|
+
// if for some reason it's not yet available, silently skip — the failure
|
|
209
|
+
// mode is just the pre-existing log spam, not a hard error.
|
|
210
|
+
}
|
|
119
211
|
}
|
|
120
212
|
registerAction(action) {
|
|
121
213
|
const bridge = ExtensionBridge_1.ExtensionBridge.getInstance();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionContext.js","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExtensionContext.js","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionContext.test.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const ExtensionContext_1 = require("./ExtensionContext");
|
|
5
|
+
(0, vitest_1.describe)('ExtensionContext preferences snapshot', () => {
|
|
6
|
+
(0, vitest_1.it)('starts with an empty frozen snapshot', () => {
|
|
7
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
8
|
+
(0, vitest_1.expect)(ctx.preferences.commands).toBeDefined();
|
|
9
|
+
(0, vitest_1.expect)(Object.isFrozen(ctx.preferences)).toBe(true);
|
|
10
|
+
(0, vitest_1.expect)(Object.isFrozen(ctx.preferences.commands)).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.it)('setPreferences installs a frozen snapshot at every level', () => {
|
|
13
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
14
|
+
ctx.setPreferences({
|
|
15
|
+
extension: { apiKey: 'abc', units: 'metric' },
|
|
16
|
+
commands: { forecast: { days: 5 } },
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.expect)(ctx.preferences.apiKey).toBe('abc');
|
|
19
|
+
(0, vitest_1.expect)(ctx.preferences.units).toBe('metric');
|
|
20
|
+
(0, vitest_1.expect)(ctx.preferences.commands.forecast.days).toBe(5);
|
|
21
|
+
(0, vitest_1.expect)(Object.isFrozen(ctx.preferences)).toBe(true);
|
|
22
|
+
(0, vitest_1.expect)(Object.isFrozen(ctx.preferences.commands)).toBe(true);
|
|
23
|
+
(0, vitest_1.expect)(Object.isFrozen(ctx.preferences.commands.forecast)).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('direct mutation of the snapshot is rejected', () => {
|
|
26
|
+
'use strict';
|
|
27
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
28
|
+
ctx.setPreferences({ extension: { x: 1 }, commands: {} });
|
|
29
|
+
// In strict mode (vitest default), assigning to a frozen property throws.
|
|
30
|
+
(0, vitest_1.expect)(() => {
|
|
31
|
+
ctx.preferences.x = 999;
|
|
32
|
+
}).toThrow();
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)('setPreferences tolerates an absent commands field', () => {
|
|
35
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
36
|
+
ctx.setPreferences({ extension: { a: 1 }, commands: undefined });
|
|
37
|
+
(0, vitest_1.expect)(ctx.preferences.a).toBe(1);
|
|
38
|
+
(0, vitest_1.expect)(ctx.preferences.commands).toEqual({});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.describe)('ExtensionContext onPreferencesChanged', () => {
|
|
42
|
+
(0, vitest_1.it)('fires registered listeners after setPreferences', () => {
|
|
43
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
44
|
+
const listener = vitest_1.vi.fn();
|
|
45
|
+
ctx.onPreferencesChanged(listener);
|
|
46
|
+
ctx.setPreferences({ extension: { x: 1 }, commands: {} });
|
|
47
|
+
(0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
|
|
48
|
+
ctx.setPreferences({ extension: { x: 2 }, commands: {} });
|
|
49
|
+
(0, vitest_1.expect)(listener).toHaveBeenCalledTimes(2);
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)('listener sees the new snapshot when it fires', () => {
|
|
52
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
53
|
+
let observedValue;
|
|
54
|
+
ctx.onPreferencesChanged(() => {
|
|
55
|
+
observedValue = ctx.preferences.focusMinutes;
|
|
56
|
+
});
|
|
57
|
+
ctx.setPreferences({ extension: { focusMinutes: 25 }, commands: {} });
|
|
58
|
+
(0, vitest_1.expect)(observedValue).toBe(25);
|
|
59
|
+
ctx.setPreferences({ extension: { focusMinutes: 50 }, commands: {} });
|
|
60
|
+
(0, vitest_1.expect)(observedValue).toBe(50);
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.it)('unsubscribe function removes the listener', () => {
|
|
63
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
64
|
+
const listener = vitest_1.vi.fn();
|
|
65
|
+
const unsubscribe = ctx.onPreferencesChanged(listener);
|
|
66
|
+
ctx.setPreferences({ extension: {}, commands: {} });
|
|
67
|
+
(0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
|
|
68
|
+
unsubscribe();
|
|
69
|
+
ctx.setPreferences({ extension: {}, commands: {} });
|
|
70
|
+
(0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)('one listener throwing does not prevent others from running', () => {
|
|
73
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
74
|
+
const good1 = vitest_1.vi.fn();
|
|
75
|
+
const bad = vitest_1.vi.fn(() => {
|
|
76
|
+
throw new Error('boom');
|
|
77
|
+
});
|
|
78
|
+
const good2 = vitest_1.vi.fn();
|
|
79
|
+
// Silence the expected console.error
|
|
80
|
+
const errSpy = vitest_1.vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
81
|
+
ctx.onPreferencesChanged(good1);
|
|
82
|
+
ctx.onPreferencesChanged(bad);
|
|
83
|
+
ctx.onPreferencesChanged(good2);
|
|
84
|
+
ctx.setPreferences({ extension: {}, commands: {} });
|
|
85
|
+
(0, vitest_1.expect)(good1).toHaveBeenCalled();
|
|
86
|
+
(0, vitest_1.expect)(bad).toHaveBeenCalled();
|
|
87
|
+
(0, vitest_1.expect)(good2).toHaveBeenCalled();
|
|
88
|
+
(0, vitest_1.expect)(errSpy).toHaveBeenCalled();
|
|
89
|
+
errSpy.mockRestore();
|
|
90
|
+
});
|
|
91
|
+
(0, vitest_1.it)('returns a stable unsubscribe even when called multiple times', () => {
|
|
92
|
+
const ctx = new ExtensionContext_1.ExtensionContext();
|
|
93
|
+
const listener = vitest_1.vi.fn();
|
|
94
|
+
const unsubscribe = ctx.onPreferencesChanged(listener);
|
|
95
|
+
unsubscribe();
|
|
96
|
+
unsubscribe(); // no-op second call
|
|
97
|
+
ctx.setPreferences({ extension: {}, commands: {} });
|
|
98
|
+
(0, vitest_1.expect)(listener).not.toHaveBeenCalled();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=ExtensionContext.test.js.map
|