asyar-sdk 1.15.13 → 1.16.1
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 +16 -3
- package/dist/ExtensionBridge.d.ts.map +1 -1
- package/dist/ExtensionBridge.js +52 -8
- package/dist/ExtensionBridge.js.map +1 -1
- package/dist/ExtensionBridge.test.js +10 -18
- package/dist/ExtensionBridge.test.js.map +1 -1
- package/dist/ExtensionContext.d.ts.map +1 -1
- package/dist/ExtensionContext.js +2 -3
- package/dist/ExtensionContext.js.map +1 -1
- package/dist/ExtensionContext.test.js +4 -6
- package/dist/ExtensionContext.test.js.map +1 -1
- package/dist/PreferencesFacade.test.js +4 -6
- package/dist/PreferencesFacade.test.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/ipc/MessageBroker.d.ts +2 -3
- package/dist/ipc/MessageBroker.d.ts.map +1 -1
- package/dist/ipc/MessageBroker.js +2 -7
- package/dist/ipc/MessageBroker.js.map +1 -1
- package/dist/ipc/MessageBroker.test.js +1 -5
- package/dist/ipc/MessageBroker.test.js.map +1 -1
- package/dist/ipc/namespaces.d.ts +1 -1
- package/dist/ipc/namespaces.d.ts.map +1 -1
- package/dist/ipc/namespaces.js +1 -0
- package/dist/ipc/namespaces.js.map +1 -1
- package/dist/ipc/namespaces.test.js +1 -1
- package/dist/ipc/namespaces.test.js.map +1 -1
- package/dist/services/AIServiceProxy.test.js +5 -7
- package/dist/services/AIServiceProxy.test.js.map +1 -1
- package/dist/services/ActionServiceProxy.js +4 -4
- package/dist/services/ActionServiceProxy.js.map +1 -1
- package/dist/services/ActionServiceProxy.test.js +2 -4
- package/dist/services/ActionServiceProxy.test.js.map +1 -1
- package/dist/services/ApplicationService.d.ts +45 -0
- package/dist/services/ApplicationService.d.ts.map +1 -1
- package/dist/services/ApplicationService.js +66 -0
- package/dist/services/ApplicationService.js.map +1 -1
- package/dist/services/ApplicationService.test.js +156 -8
- package/dist/services/ApplicationService.test.js.map +1 -1
- package/dist/services/BaseServiceProxy.d.ts.map +1 -1
- package/dist/services/BaseServiceProxy.js +1 -1
- package/dist/services/BaseServiceProxy.js.map +1 -1
- package/dist/services/CacheServiceProxy.test.js +3 -5
- package/dist/services/CacheServiceProxy.test.js.map +1 -1
- package/dist/services/ClipboardHistoryServiceProxy.test.js +5 -7
- package/dist/services/ClipboardHistoryServiceProxy.test.js.map +1 -1
- package/dist/services/CommandServiceProxy.js +4 -4
- package/dist/services/CommandServiceProxy.js.map +1 -1
- package/dist/services/CommandServiceProxy.test.js +2 -4
- package/dist/services/CommandServiceProxy.test.js.map +1 -1
- package/dist/services/EntitlementServiceProxy.test.js +2 -4
- package/dist/services/EntitlementServiceProxy.test.js.map +1 -1
- package/dist/services/ExtensionManagerProxy.test.js +2 -4
- package/dist/services/ExtensionManagerProxy.test.js.map +1 -1
- package/dist/services/FeedbackServiceProxy.test.js +5 -7
- package/dist/services/FeedbackServiceProxy.test.js.map +1 -1
- package/dist/services/FileManagerServiceProxy.test.js +5 -7
- package/dist/services/FileManagerServiceProxy.test.js.map +1 -1
- package/dist/services/InteropServiceProxy.test.js +2 -4
- package/dist/services/InteropServiceProxy.test.js.map +1 -1
- package/dist/services/LogServiceProxy.test.js +5 -7
- package/dist/services/LogServiceProxy.test.js.map +1 -1
- package/dist/services/NetworkServiceProxy.test.js +5 -7
- package/dist/services/NetworkServiceProxy.test.js.map +1 -1
- package/dist/services/NotificationServiceProxy.test.js +2 -4
- package/dist/services/NotificationServiceProxy.test.js.map +1 -1
- package/dist/services/OAuthServiceProxy.test.js +5 -7
- package/dist/services/OAuthServiceProxy.test.js.map +1 -1
- package/dist/services/PowerServiceProxy.test.js +3 -5
- package/dist/services/PowerServiceProxy.test.js.map +1 -1
- package/dist/services/PreferencesServiceProxy.test.js +5 -7
- package/dist/services/PreferencesServiceProxy.test.js.map +1 -1
- package/dist/services/SelectionServiceProxy.test.js +5 -7
- package/dist/services/SelectionServiceProxy.test.js.map +1 -1
- package/dist/services/SettingsServiceProxy.test.js +2 -4
- package/dist/services/SettingsServiceProxy.test.js.map +1 -1
- package/dist/services/ShellServiceProxy.test.js +5 -7
- package/dist/services/ShellServiceProxy.test.js.map +1 -1
- package/dist/services/StatusBarServiceProxy.test.js +2 -4
- package/dist/services/StatusBarServiceProxy.test.js.map +1 -1
- package/dist/services/StorageServiceProxy.test.js +5 -7
- package/dist/services/StorageServiceProxy.test.js.map +1 -1
- package/dist/services/SystemEventsServiceProxy.test.js +5 -7
- package/dist/services/SystemEventsServiceProxy.test.js.map +1 -1
- package/dist/services/TimerServiceProxy.test.js +3 -5
- package/dist/services/TimerServiceProxy.test.js.map +1 -1
- package/dist/services/WindowManagementService.test.js +2 -3
- package/dist/services/WindowManagementService.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,14 +12,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
const vitest_1 = require("vitest");
|
|
13
13
|
const MessageBroker_1 = require("./MessageBroker");
|
|
14
14
|
function freshBroker() {
|
|
15
|
-
MessageBroker_1.MessageBroker
|
|
16
|
-
return MessageBroker_1.MessageBroker.getInstance();
|
|
15
|
+
return new MessageBroker_1.MessageBroker();
|
|
17
16
|
}
|
|
18
17
|
(0, vitest_1.describe)('MessageBroker.invoke — host dispatcher fast path', () => {
|
|
19
18
|
const originalParentDescriptor = Object.getOwnPropertyDescriptor(window, 'parent');
|
|
20
|
-
(0, vitest_1.beforeEach)(() => {
|
|
21
|
-
MessageBroker_1.MessageBroker.instance = undefined;
|
|
22
|
-
});
|
|
23
19
|
(0, vitest_1.afterEach)(() => {
|
|
24
20
|
if (originalParentDescriptor)
|
|
25
21
|
Object.defineProperty(window, 'parent', originalParentDescriptor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBroker.test.js","sourceRoot":"","sources":["../../src/ipc/MessageBroker.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"MessageBroker.test.js","sourceRoot":"","sources":["../../src/ipc/MessageBroker.test.ts"],"names":[],"mappings":"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"}
|
package/dist/ipc/namespaces.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const NAMESPACES: readonly ["log", "extensions", "notifications", "clipboard", "commands", "actions", "settings", "preferences", "statusBar", "entitlements", "network", "storage", "cache", "feedback", "selection", "ai", "oauth", "opener", "power", "shell", "systemEvents", "appEvents", "fs", "interop", "application", "window", "timers"];
|
|
1
|
+
export declare const NAMESPACES: readonly ["log", "extensions", "notifications", "clipboard", "commands", "actions", "settings", "preferences", "statusBar", "entitlements", "network", "storage", "cache", "feedback", "selection", "ai", "oauth", "opener", "power", "shell", "systemEvents", "appEvents", "applicationIndex", "fs", "interop", "application", "window", "timers"];
|
|
2
2
|
export type Namespace = typeof NAMESPACES[number];
|
|
3
3
|
export type WireCommand = `${Namespace}:${string}`;
|
|
4
4
|
export declare function isNamespace(value: string): value is Namespace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/ipc/namespaces.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/ipc/namespaces.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,qVA6Bb,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;AAEjD,MAAM,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,MAAM,EAAE,CAAA;AAElD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE7D"}
|
package/dist/ipc/namespaces.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../src/ipc/namespaces.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../src/ipc/namespaces.ts"],"names":[],"mappings":";;;AAmCA,kCAEC;AArCY,QAAA,UAAU,GAAG;IACxB,KAAK;IACL,YAAY;IACZ,eAAe;IACf,WAAW;IACX,UAAU;IACV,SAAS;IACT,UAAU;IACV,aAAa;IACb,WAAW;IACX,cAAc;IACd,SAAS;IACT,SAAS;IACT,OAAO;IACP,UAAU;IACV,WAAW;IACX,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,cAAc;IACd,WAAW;IACX,kBAAkB;IAClB,IAAI;IACJ,SAAS;IACT,aAAa;IACb,QAAQ;IACR,QAAQ;CACA,CAAA;AAMV,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAQ,kBAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1D,CAAC"}
|
|
@@ -9,7 +9,7 @@ const namespaces_1 = require("./namespaces");
|
|
|
9
9
|
'actions', 'settings', 'preferences', 'statusBar', 'entitlements',
|
|
10
10
|
'network', 'storage', 'cache', 'feedback', 'selection', 'ai',
|
|
11
11
|
'oauth', 'opener', 'power', 'shell', 'systemEvents', 'appEvents',
|
|
12
|
-
'fs', 'interop', 'application', 'window', 'timers',
|
|
12
|
+
'applicationIndex', 'fs', 'interop', 'application', 'window', 'timers',
|
|
13
13
|
]);
|
|
14
14
|
});
|
|
15
15
|
(0, vitest_1.it)('has no duplicates', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.test.js","sourceRoot":"","sources":["../../src/ipc/namespaces.test.ts"],"names":[],"mappings":";;AAAA,mCAA6C;AAC7C,6CAAyC;AAEzC,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,IAAA,eAAM,EAAC,uBAAU,CAAC,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU;YAC7D,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc;YACjE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI;YAC5D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW;YAChE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"namespaces.test.js","sourceRoot":"","sources":["../../src/ipc/namespaces.test.ts"],"names":[],"mappings":";;AAAA,mCAA6C;AAC7C,6CAAyC;AAEzC,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,IAAA,eAAM,EAAC,uBAAU,CAAC,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU;YAC7D,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc;YACjE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI;YAC5D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW;YAChE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ;SACvE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,IAAA,eAAM,EAAC,IAAI,GAAG,CAAC,uBAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAU,CAAC,MAAM,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,uBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACtE,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -13,12 +13,10 @@ const vitest_1 = require("vitest");
|
|
|
13
13
|
const AIServiceProxy_1 = require("./AIServiceProxy");
|
|
14
14
|
const MessageBroker_1 = require("../ipc/MessageBroker");
|
|
15
15
|
vitest_1.vi.mock('../ipc/MessageBroker', () => ({
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
off: vitest_1.vi.fn(),
|
|
21
|
-
})),
|
|
16
|
+
messageBroker: {
|
|
17
|
+
invoke: vitest_1.vi.fn(),
|
|
18
|
+
on: vitest_1.vi.fn(),
|
|
19
|
+
off: vitest_1.vi.fn(),
|
|
22
20
|
},
|
|
23
21
|
}));
|
|
24
22
|
(0, vitest_1.describe)('AIServiceProxy', () => {
|
|
@@ -30,7 +28,7 @@ vitest_1.vi.mock('../ipc/MessageBroker', () => ({
|
|
|
30
28
|
}
|
|
31
29
|
function makeProxy() {
|
|
32
30
|
const mockInvoke = vitest_1.vi.fn().mockResolvedValue({ streaming: true });
|
|
33
|
-
|
|
31
|
+
Object.assign(MessageBroker_1.messageBroker, {
|
|
34
32
|
invoke: mockInvoke,
|
|
35
33
|
on: vitest_1.vi.fn(),
|
|
36
34
|
off: vitest_1.vi.fn(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/AIServiceProxy.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAyE;AACzE,qDAAkD;AAClD,wDAAqD;AAGrD,WAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE;
|
|
1
|
+
{"version":3,"file":"AIServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/AIServiceProxy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,17 +21,17 @@ class ActionServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
|
|
|
21
21
|
this.currentContext = types_1.ActionContext.GLOBAL;
|
|
22
22
|
}
|
|
23
23
|
registerAction(action) {
|
|
24
|
-
ExtensionBridge_1.
|
|
24
|
+
ExtensionBridge_1.extensionBridge.registerAction(action.extensionId, action);
|
|
25
25
|
const { execute } = action, actionData = __rest(action, ["execute"]);
|
|
26
26
|
this.broker.invoke('actions:registerAction', { action: actionData }).catch(err => console.warn('[ActionServiceProxy] registerAction failed:', err));
|
|
27
27
|
}
|
|
28
28
|
unregisterAction(actionId) {
|
|
29
|
-
ExtensionBridge_1.
|
|
29
|
+
ExtensionBridge_1.extensionBridge.unregisterAction(actionId);
|
|
30
30
|
this.broker.invoke('actions:unregisterAction', { actionId }).catch(err => console.warn('[ActionServiceProxy] unregisterAction failed:', err));
|
|
31
31
|
}
|
|
32
32
|
getActions(context) {
|
|
33
33
|
console.warn('getActions called synchronously in proxy.');
|
|
34
|
-
const allActions = ExtensionBridge_1.
|
|
34
|
+
const allActions = ExtensionBridge_1.extensionBridge.getActions();
|
|
35
35
|
if (context) {
|
|
36
36
|
return allActions.filter(a => a.context === context);
|
|
37
37
|
}
|
|
@@ -49,7 +49,7 @@ class ActionServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
|
|
|
49
49
|
return this.currentContext;
|
|
50
50
|
}
|
|
51
51
|
registerActionHandler(actionId, handler) {
|
|
52
|
-
ExtensionBridge_1.
|
|
52
|
+
ExtensionBridge_1.extensionBridge.registerActionHandler(this.extensionId, actionId, handler);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
exports.ActionServiceProxy = ActionServiceProxy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionServiceProxy.js","sourceRoot":"","sources":["../../src/services/ActionServiceProxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,oCAAyC;AACzC,yDAAsD;AACtD,wDAAqD;AAErD,MAAa,kBAAmB,SAAQ,mCAAgB;IAAxD;;QACU,mBAAc,GAAkB,qBAAa,CAAC,MAAM,CAAC;IAuC/D,CAAC;IArCC,cAAc,CAAC,MAAuB;QACpC,iCAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"ActionServiceProxy.js","sourceRoot":"","sources":["../../src/services/ActionServiceProxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,oCAAyC;AACzC,yDAAsD;AACtD,wDAAqD;AAErD,MAAa,kBAAmB,SAAQ,mCAAgB;IAAxD;;QACU,mBAAc,GAAkB,qBAAa,CAAC,MAAM,CAAC;IAuC/D,CAAC;IArCC,cAAc,CAAC,MAAuB;QACpC,iCAAe,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,EAAE,OAAO,KAAoB,MAAM,EAArB,UAAU,UAAK,MAAM,EAAnC,WAA0B,CAAS,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC,CAAC;IACtJ,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC/B,iCAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC,CAAC;IAChJ,CAAC;IAED,UAAU,CAAC,OAAuB;QAChC,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iCAAe,CAAC,UAAU,EAAE,CAAC;QAChD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAO,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,UAAU,CAAC,OAAsB,EAAE,IAA6B;QAC9D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzI,CAAC;IAED,UAAU;QACR,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,qBAAqB,CAAC,QAAgB,EAAE,OAAmC;QACzE,iCAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;CACF;AAxCD,gDAwCC"}
|
|
@@ -14,13 +14,11 @@ const ActionServiceProxy_1 = require("./ActionServiceProxy");
|
|
|
14
14
|
const MessageBroker_1 = require("../ipc/MessageBroker");
|
|
15
15
|
const types_1 = require("../types");
|
|
16
16
|
vitest_1.vi.mock('../ipc/MessageBroker', () => ({
|
|
17
|
-
|
|
18
|
-
getInstance: vitest_1.vi.fn(() => ({ invoke: vitest_1.vi.fn(), on: vitest_1.vi.fn(), off: vitest_1.vi.fn() })),
|
|
19
|
-
},
|
|
17
|
+
messageBroker: { invoke: vitest_1.vi.fn().mockResolvedValue(undefined), on: vitest_1.vi.fn(), off: vitest_1.vi.fn() },
|
|
20
18
|
}));
|
|
21
19
|
function makeProxy() {
|
|
22
20
|
const mockInvoke = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
23
|
-
|
|
21
|
+
Object.assign(MessageBroker_1.messageBroker, {
|
|
24
22
|
invoke: mockInvoke, on: vitest_1.vi.fn(), off: vitest_1.vi.fn(),
|
|
25
23
|
});
|
|
26
24
|
const proxy = new ActionServiceProxy_1.ActionServiceProxy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/ActionServiceProxy.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAA8D;AAC9D,6DAA0D;AAC1D,wDAAqD;AACrD,oCAAyC;AAEzC,WAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE
|
|
1
|
+
{"version":3,"file":"ActionServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/ActionServiceProxy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,23 @@ export type AppPresenceEvent = {
|
|
|
28
28
|
name: string;
|
|
29
29
|
};
|
|
30
30
|
export type AppPresenceEventKind = AppPresenceEvent['type'];
|
|
31
|
+
/**
|
|
32
|
+
* Push event fired when the on-disk set of installed applications changes
|
|
33
|
+
* — either because the user installed/uninstalled an app in a watched
|
|
34
|
+
* default directory or because they edited a user-configured scan path.
|
|
35
|
+
*
|
|
36
|
+
* Payload shape matches the Rust `SyncResult`: `added` and `removed` are
|
|
37
|
+
* the diff relative to the previous scan; `total` is the current absolute
|
|
38
|
+
* count. No-op rescans (both zero) are suppressed by the host and never
|
|
39
|
+
* reach subscribers.
|
|
40
|
+
*/
|
|
41
|
+
export type ApplicationIndexEvent = {
|
|
42
|
+
type: 'applications-changed';
|
|
43
|
+
added: number;
|
|
44
|
+
removed: number;
|
|
45
|
+
total: number;
|
|
46
|
+
};
|
|
47
|
+
export type ApplicationIndexEventKind = ApplicationIndexEvent['type'];
|
|
31
48
|
/**
|
|
32
49
|
* Disposer returned by every `on*` subscription. Invoke it once to
|
|
33
50
|
* unsubscribe — calling it more than once is a safe no-op.
|
|
@@ -88,6 +105,19 @@ export interface IApplicationService {
|
|
|
88
105
|
onFrontmostApplicationChanged(cb: (e: Extract<AppPresenceEvent, {
|
|
89
106
|
type: 'frontmost-changed';
|
|
90
107
|
}>) => void): Disposer;
|
|
108
|
+
/**
|
|
109
|
+
* Register a callback fired every time the installed-application index
|
|
110
|
+
* changes on disk — e.g. a new app is installed to `/Applications`, an
|
|
111
|
+
* existing app is removed, or the user edits a directory in
|
|
112
|
+
* `settings.search.additionalScanPaths`. The host debounces filesystem
|
|
113
|
+
* events (default 500ms) and suppresses no-op rescans, so each
|
|
114
|
+
* callback invocation represents a real change.
|
|
115
|
+
*
|
|
116
|
+
* Returns a [`Disposer`] — invoke it to unsubscribe.
|
|
117
|
+
* Requires 'application:read' permission (same as `listApplications` —
|
|
118
|
+
* this event carries the same data class).
|
|
119
|
+
*/
|
|
120
|
+
onApplicationsChanged(cb: (e: ApplicationIndexEvent) => void): Disposer;
|
|
91
121
|
}
|
|
92
122
|
/**
|
|
93
123
|
* SDK-side proxy for `ApplicationService` + the new push-event surface.
|
|
@@ -115,6 +145,8 @@ export interface IApplicationService {
|
|
|
115
145
|
export declare class ApplicationServiceProxy extends BaseServiceProxy implements IApplicationService {
|
|
116
146
|
private states;
|
|
117
147
|
private pushListenerInstalled;
|
|
148
|
+
private indexStates;
|
|
149
|
+
private indexPushListenerInstalled;
|
|
118
150
|
getFrontmostApplication(): Promise<FrontmostApplication>;
|
|
119
151
|
syncApplicationIndex(extraPaths?: string[]): Promise<{
|
|
120
152
|
added: number;
|
|
@@ -132,7 +164,20 @@ export declare class ApplicationServiceProxy extends BaseServiceProxy implements
|
|
|
132
164
|
onFrontmostApplicationChanged(cb: (e: Extract<AppPresenceEvent, {
|
|
133
165
|
type: 'frontmost-changed';
|
|
134
166
|
}>) => void): Disposer;
|
|
167
|
+
onApplicationsChanged(cb: (e: ApplicationIndexEvent) => void): Disposer;
|
|
135
168
|
private ensurePushListener;
|
|
136
169
|
private listen;
|
|
170
|
+
/**
|
|
171
|
+
* Index-event analog of [`ensurePushListener`]. Attaches one
|
|
172
|
+
* `asyar:event:application-index:push` listener for the lifetime of the
|
|
173
|
+
* proxy; the listener fans the payload out to the per-kind callback set.
|
|
174
|
+
*/
|
|
175
|
+
private ensureIndexPushListener;
|
|
176
|
+
/**
|
|
177
|
+
* Ref-counted subscribe on the `applicationIndex:*` namespace. Same
|
|
178
|
+
* shape as [`listen`] but keyed on [`ApplicationIndexEventKind`] so the
|
|
179
|
+
* index and presence surfaces don't share state.
|
|
180
|
+
*/
|
|
181
|
+
private listenIndex;
|
|
137
182
|
}
|
|
138
183
|
//# sourceMappingURL=ApplicationService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEzD;;;;OAIG;IACH,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAExG;;;OAGG;IACH,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAEzE;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C;;;;OAIG;IACH,qBAAqB,CACnB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,KAAK,IAAI,GAC/D,QAAQ,CAAC;IAEZ;;;OAGG;IACH,uBAAuB,CACrB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC,KAAK,IAAI,GACjE,QAAQ,CAAC;IAEZ;;;;;;;;;OASG;IACH,6BAA6B,CAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,mBAAmB,CAAA;KAAE,CAAC,KAAK,IAAI,GACxE,QAAQ,CAAC;CACb;
|
|
1
|
+
{"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,8 @@ class ApplicationServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
|
|
|
39
39
|
super(...arguments);
|
|
40
40
|
this.states = new Map();
|
|
41
41
|
this.pushListenerInstalled = false;
|
|
42
|
+
this.indexStates = new Map();
|
|
43
|
+
this.indexPushListenerInstalled = false;
|
|
42
44
|
}
|
|
43
45
|
getFrontmostApplication() {
|
|
44
46
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -69,6 +71,9 @@ class ApplicationServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
|
|
|
69
71
|
onFrontmostApplicationChanged(cb) {
|
|
70
72
|
return this.listen('frontmost-changed', cb);
|
|
71
73
|
}
|
|
74
|
+
onApplicationsChanged(cb) {
|
|
75
|
+
return this.listenIndex('applications-changed', cb);
|
|
76
|
+
}
|
|
72
77
|
ensurePushListener() {
|
|
73
78
|
if (this.pushListenerInstalled)
|
|
74
79
|
return;
|
|
@@ -121,6 +126,67 @@ class ApplicationServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
|
|
|
121
126
|
}
|
|
122
127
|
};
|
|
123
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Index-event analog of [`ensurePushListener`]. Attaches one
|
|
131
|
+
* `asyar:event:application-index:push` listener for the lifetime of the
|
|
132
|
+
* proxy; the listener fans the payload out to the per-kind callback set.
|
|
133
|
+
*/
|
|
134
|
+
ensureIndexPushListener() {
|
|
135
|
+
if (this.indexPushListenerInstalled)
|
|
136
|
+
return;
|
|
137
|
+
this.indexPushListenerInstalled = true;
|
|
138
|
+
this.broker.on('asyar:event:application-index:push', (payload) => {
|
|
139
|
+
if (!payload || typeof payload !== 'object' || !('type' in payload))
|
|
140
|
+
return;
|
|
141
|
+
const ev = payload;
|
|
142
|
+
const state = this.indexStates.get(ev.type);
|
|
143
|
+
if (!state)
|
|
144
|
+
return;
|
|
145
|
+
for (const cb of state.callbacks) {
|
|
146
|
+
try {
|
|
147
|
+
cb(ev);
|
|
148
|
+
}
|
|
149
|
+
catch (_a) {
|
|
150
|
+
// One bad callback must not prevent the rest from firing.
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Ref-counted subscribe on the `applicationIndex:*` namespace. Same
|
|
157
|
+
* shape as [`listen`] but keyed on [`ApplicationIndexEventKind`] so the
|
|
158
|
+
* index and presence surfaces don't share state.
|
|
159
|
+
*/
|
|
160
|
+
listenIndex(kind, dispatch) {
|
|
161
|
+
this.ensureIndexPushListener();
|
|
162
|
+
let state = this.indexStates.get(kind);
|
|
163
|
+
if (!state) {
|
|
164
|
+
const subscriptionIdPromise = this.broker.invoke('applicationIndex:subscribe', { eventTypes: [kind] });
|
|
165
|
+
state = { subscriptionIdPromise, callbacks: new Set() };
|
|
166
|
+
this.indexStates.set(kind, state);
|
|
167
|
+
}
|
|
168
|
+
state.callbacks.add(dispatch);
|
|
169
|
+
let disposed = false;
|
|
170
|
+
return () => {
|
|
171
|
+
if (disposed)
|
|
172
|
+
return;
|
|
173
|
+
disposed = true;
|
|
174
|
+
const s = this.indexStates.get(kind);
|
|
175
|
+
if (!s)
|
|
176
|
+
return;
|
|
177
|
+
s.callbacks.delete(dispatch);
|
|
178
|
+
if (s.callbacks.size === 0) {
|
|
179
|
+
this.indexStates.delete(kind);
|
|
180
|
+
s.subscriptionIdPromise
|
|
181
|
+
.then((id) => this.broker.invoke('applicationIndex:unsubscribe', {
|
|
182
|
+
subscriptionId: id,
|
|
183
|
+
}))
|
|
184
|
+
.catch(() => {
|
|
185
|
+
// Subscribe failed; nothing to unsubscribe.
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
124
190
|
}
|
|
125
191
|
exports.ApplicationServiceProxy = ApplicationServiceProxy;
|
|
126
192
|
//# sourceMappingURL=ApplicationService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationService.js","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yDAAsD;
|
|
1
|
+
{"version":3,"file":"ApplicationService.js","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,10 @@ const vitest_1 = require("vitest");
|
|
|
13
13
|
// Mock MessageBroker BEFORE import.
|
|
14
14
|
vitest_1.vi.mock('../ipc/MessageBroker', () => {
|
|
15
15
|
return {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
off: vitest_1.vi.fn(),
|
|
21
|
-
}),
|
|
16
|
+
messageBroker: {
|
|
17
|
+
invoke: vitest_1.vi.fn(),
|
|
18
|
+
on: vitest_1.vi.fn(),
|
|
19
|
+
off: vitest_1.vi.fn(),
|
|
22
20
|
},
|
|
23
21
|
};
|
|
24
22
|
});
|
|
@@ -35,7 +33,7 @@ function getPushHandler(mockOn) {
|
|
|
35
33
|
let mockBroker;
|
|
36
34
|
(0, vitest_1.beforeEach)(() => {
|
|
37
35
|
vitest_1.vi.clearAllMocks();
|
|
38
|
-
mockBroker = MessageBroker_1.
|
|
36
|
+
mockBroker = MessageBroker_1.messageBroker;
|
|
39
37
|
mockBroker.invoke.mockReset();
|
|
40
38
|
mockBroker.on.mockReset();
|
|
41
39
|
mockBroker.off.mockReset();
|
|
@@ -102,7 +100,7 @@ function getPushHandler(mockOn) {
|
|
|
102
100
|
let mockOn;
|
|
103
101
|
(0, vitest_1.beforeEach)(() => {
|
|
104
102
|
vitest_1.vi.clearAllMocks();
|
|
105
|
-
const broker = MessageBroker_1.
|
|
103
|
+
const broker = MessageBroker_1.messageBroker;
|
|
106
104
|
mockInvoke = broker.invoke;
|
|
107
105
|
mockOn = broker.on;
|
|
108
106
|
mockInvoke.mockReset();
|
|
@@ -273,4 +271,154 @@ function getPushHandler(mockOn) {
|
|
|
273
271
|
(0, vitest_1.expect)(good).toHaveBeenCalledTimes(1);
|
|
274
272
|
}));
|
|
275
273
|
});
|
|
274
|
+
function getIndexPushHandler(mockOn) {
|
|
275
|
+
const call = mockOn.mock.calls.find((c) => c[0] === 'asyar:event:application-index:push');
|
|
276
|
+
if (!call)
|
|
277
|
+
throw new Error('index push listener not registered');
|
|
278
|
+
return call[1];
|
|
279
|
+
}
|
|
280
|
+
(0, vitest_1.describe)('ApplicationServiceProxy (application-index push surface)', () => {
|
|
281
|
+
let proxy;
|
|
282
|
+
let mockInvoke;
|
|
283
|
+
let mockOn;
|
|
284
|
+
(0, vitest_1.beforeEach)(() => {
|
|
285
|
+
vitest_1.vi.clearAllMocks();
|
|
286
|
+
const broker = MessageBroker_1.messageBroker;
|
|
287
|
+
mockInvoke = broker.invoke;
|
|
288
|
+
mockOn = broker.on;
|
|
289
|
+
mockInvoke.mockReset();
|
|
290
|
+
mockOn.mockReset();
|
|
291
|
+
broker.off.mockReset();
|
|
292
|
+
proxy = new ApplicationService_1.ApplicationServiceProxy();
|
|
293
|
+
});
|
|
294
|
+
(0, vitest_1.it)('first onApplicationsChanged listener triggers exactly one subscribe RPC on applicationIndex namespace', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
295
|
+
mockInvoke.mockResolvedValueOnce('idx-1');
|
|
296
|
+
proxy.onApplicationsChanged(() => { });
|
|
297
|
+
yield Promise.resolve();
|
|
298
|
+
yield Promise.resolve();
|
|
299
|
+
(0, vitest_1.expect)(mockInvoke).toHaveBeenCalledTimes(1);
|
|
300
|
+
(0, vitest_1.expect)(mockInvoke).toHaveBeenCalledWith('applicationIndex:subscribe', {
|
|
301
|
+
eventTypes: ['applications-changed'],
|
|
302
|
+
});
|
|
303
|
+
}));
|
|
304
|
+
(0, vitest_1.it)('second onApplicationsChanged listener does NOT cause a second subscribe RPC', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
305
|
+
mockInvoke.mockResolvedValueOnce('idx-1');
|
|
306
|
+
proxy.onApplicationsChanged(() => { });
|
|
307
|
+
yield Promise.resolve();
|
|
308
|
+
yield Promise.resolve();
|
|
309
|
+
proxy.onApplicationsChanged(() => { });
|
|
310
|
+
yield Promise.resolve();
|
|
311
|
+
(0, vitest_1.expect)(mockInvoke).toHaveBeenCalledTimes(1);
|
|
312
|
+
}));
|
|
313
|
+
(0, vitest_1.it)('disposing all listeners fires unsubscribe exactly once on applicationIndex namespace', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
314
|
+
mockInvoke
|
|
315
|
+
.mockResolvedValueOnce('idx-1')
|
|
316
|
+
.mockResolvedValueOnce(undefined);
|
|
317
|
+
const d1 = proxy.onApplicationsChanged(() => { });
|
|
318
|
+
const d2 = proxy.onApplicationsChanged(() => { });
|
|
319
|
+
yield Promise.resolve();
|
|
320
|
+
yield Promise.resolve();
|
|
321
|
+
d1();
|
|
322
|
+
d2();
|
|
323
|
+
yield Promise.resolve();
|
|
324
|
+
yield Promise.resolve();
|
|
325
|
+
(0, vitest_1.expect)(mockInvoke).toHaveBeenCalledTimes(2);
|
|
326
|
+
(0, vitest_1.expect)(mockInvoke).toHaveBeenLastCalledWith('applicationIndex:unsubscribe', {
|
|
327
|
+
subscriptionId: 'idx-1',
|
|
328
|
+
});
|
|
329
|
+
}));
|
|
330
|
+
(0, vitest_1.it)('incoming push payload dispatches to all applications-changed listeners', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
331
|
+
mockInvoke.mockResolvedValue('idx-1');
|
|
332
|
+
const cb1 = vitest_1.vi.fn();
|
|
333
|
+
const cb2 = vitest_1.vi.fn();
|
|
334
|
+
proxy.onApplicationsChanged(cb1);
|
|
335
|
+
proxy.onApplicationsChanged(cb2);
|
|
336
|
+
yield Promise.resolve();
|
|
337
|
+
yield Promise.resolve();
|
|
338
|
+
getIndexPushHandler(mockOn)({
|
|
339
|
+
type: 'applications-changed',
|
|
340
|
+
added: 2,
|
|
341
|
+
removed: 0,
|
|
342
|
+
total: 120,
|
|
343
|
+
});
|
|
344
|
+
const expected = {
|
|
345
|
+
type: 'applications-changed',
|
|
346
|
+
added: 2,
|
|
347
|
+
removed: 0,
|
|
348
|
+
total: 120,
|
|
349
|
+
};
|
|
350
|
+
(0, vitest_1.expect)(cb1).toHaveBeenCalledWith(expected);
|
|
351
|
+
(0, vitest_1.expect)(cb2).toHaveBeenCalledWith(expected);
|
|
352
|
+
}));
|
|
353
|
+
(0, vitest_1.it)('index push listener is separate from appEvents push listener', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
354
|
+
// Subscribing to appEvents must not register an index listener and vice
|
|
355
|
+
// versa — they use different iframe push types.
|
|
356
|
+
mockInvoke.mockResolvedValue('sub-x');
|
|
357
|
+
proxy.onApplicationLaunched(() => { });
|
|
358
|
+
proxy.onApplicationsChanged(() => { });
|
|
359
|
+
yield Promise.resolve();
|
|
360
|
+
yield Promise.resolve();
|
|
361
|
+
const registeredTypes = mockOn.mock.calls.map((c) => c[0]);
|
|
362
|
+
(0, vitest_1.expect)(registeredTypes).toContain('asyar:event:app-event:push');
|
|
363
|
+
(0, vitest_1.expect)(registeredTypes).toContain('asyar:event:application-index:push');
|
|
364
|
+
}));
|
|
365
|
+
(0, vitest_1.it)('disposer is idempotent for index subscriptions', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
366
|
+
mockInvoke
|
|
367
|
+
.mockResolvedValueOnce('idx-1')
|
|
368
|
+
.mockResolvedValueOnce(undefined);
|
|
369
|
+
const d = proxy.onApplicationsChanged(() => { });
|
|
370
|
+
yield Promise.resolve();
|
|
371
|
+
yield Promise.resolve();
|
|
372
|
+
d();
|
|
373
|
+
d();
|
|
374
|
+
yield Promise.resolve();
|
|
375
|
+
yield Promise.resolve();
|
|
376
|
+
(0, vitest_1.expect)(mockInvoke).toHaveBeenCalledTimes(2);
|
|
377
|
+
}));
|
|
378
|
+
(0, vitest_1.it)('re-subscribing after full dispose issues a fresh subscribe RPC', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
379
|
+
mockInvoke
|
|
380
|
+
.mockResolvedValueOnce('idx-1')
|
|
381
|
+
.mockResolvedValueOnce(undefined)
|
|
382
|
+
.mockResolvedValueOnce('idx-2');
|
|
383
|
+
const d1 = proxy.onApplicationsChanged(() => { });
|
|
384
|
+
yield Promise.resolve();
|
|
385
|
+
yield Promise.resolve();
|
|
386
|
+
d1();
|
|
387
|
+
yield Promise.resolve();
|
|
388
|
+
yield Promise.resolve();
|
|
389
|
+
proxy.onApplicationsChanged(() => { });
|
|
390
|
+
yield Promise.resolve();
|
|
391
|
+
yield Promise.resolve();
|
|
392
|
+
(0, vitest_1.expect)(mockInvoke).toHaveBeenCalledTimes(3);
|
|
393
|
+
(0, vitest_1.expect)(mockInvoke.mock.calls[2][0]).toBe('applicationIndex:subscribe');
|
|
394
|
+
}));
|
|
395
|
+
(0, vitest_1.it)('a throwing callback does not prevent other callbacks for the same kind', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
396
|
+
mockInvoke.mockResolvedValue('idx-1');
|
|
397
|
+
const bad = vitest_1.vi.fn(() => {
|
|
398
|
+
throw new Error('boom');
|
|
399
|
+
});
|
|
400
|
+
const good = vitest_1.vi.fn();
|
|
401
|
+
proxy.onApplicationsChanged(bad);
|
|
402
|
+
proxy.onApplicationsChanged(good);
|
|
403
|
+
yield Promise.resolve();
|
|
404
|
+
yield Promise.resolve();
|
|
405
|
+
getIndexPushHandler(mockOn)({
|
|
406
|
+
type: 'applications-changed',
|
|
407
|
+
added: 1,
|
|
408
|
+
removed: 0,
|
|
409
|
+
total: 1,
|
|
410
|
+
});
|
|
411
|
+
(0, vitest_1.expect)(bad).toHaveBeenCalledTimes(1);
|
|
412
|
+
(0, vitest_1.expect)(good).toHaveBeenCalledTimes(1);
|
|
413
|
+
}));
|
|
414
|
+
(0, vitest_1.it)('applicationIndex wire string has no asyar:api: prefix', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
415
|
+
mockInvoke.mockResolvedValueOnce('idx-1');
|
|
416
|
+
proxy.onApplicationsChanged(() => { });
|
|
417
|
+
yield Promise.resolve();
|
|
418
|
+
yield Promise.resolve();
|
|
419
|
+
const [[wireType]] = mockInvoke.mock.calls;
|
|
420
|
+
(0, vitest_1.expect)(wireType).toBe('applicationIndex:subscribe');
|
|
421
|
+
(0, vitest_1.expect)(wireType).not.toContain('asyar:');
|
|
422
|
+
}));
|
|
423
|
+
});
|
|
276
424
|
//# sourceMappingURL=ApplicationService.test.js.map
|