asyar-sdk 1.16.2 → 2.0.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/README.md +95 -42
- package/dist/ExtensionBridge.d.ts +1 -1
- package/dist/ExtensionBridge.d.ts.map +1 -1
- package/dist/ExtensionBridge.js +17 -13
- package/dist/ExtensionBridge.js.map +1 -1
- package/dist/ExtensionBridge.test.js +76 -101
- package/dist/ExtensionBridge.test.js.map +1 -1
- package/dist/ExtensionContext.d.ts +22 -57
- package/dist/ExtensionContext.d.ts.map +1 -1
- package/dist/ExtensionContext.js +84 -207
- package/dist/ExtensionContext.js.map +1 -1
- package/dist/ExtensionContext.test.js +91 -66
- package/dist/ExtensionContext.test.js.map +1 -1
- package/dist/ExtensionContextCore.d.ts +46 -0
- package/dist/ExtensionContextCore.d.ts.map +1 -0
- package/dist/ExtensionContextCore.js +149 -0
- package/dist/ExtensionContextCore.js.map +1 -0
- package/dist/PreferencesFacade.js +4 -9
- package/dist/PreferencesFacade.js.map +1 -1
- package/dist/PreferencesFacade.test.js +53 -55
- package/dist/PreferencesFacade.test.js.map +1 -1
- package/dist/cli/commands/attach.js +1 -1
- package/dist/cli/commands/attach.js.map +1 -1
- package/dist/cli/commands/build.d.ts +5 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +43 -5
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/lib/manifest.d.ts +17 -5
- package/dist/cli/lib/manifest.d.ts.map +1 -1
- package/dist/cli/lib/manifest.js +125 -66
- package/dist/cli/lib/manifest.js.map +1 -1
- package/dist/{index.d.ts → contracts.d.ts} +23 -1
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +36 -0
- package/dist/contracts.js.map +1 -0
- package/dist/contracts.purity.test.d.ts +2 -0
- package/dist/contracts.purity.test.d.ts.map +1 -0
- package/dist/contracts.purity.test.js +42 -0
- package/dist/contracts.purity.test.js.map +1 -0
- package/dist/icons/AsyarIconElement.js +4 -9
- package/dist/icons/AsyarIconElement.js.map +1 -1
- package/dist/icons/AsyarIconElement.test.js +14 -16
- package/dist/icons/AsyarIconElement.test.js.map +1 -1
- package/dist/icons/IconRenderer.js +9 -15
- package/dist/icons/IconRenderer.js.map +1 -1
- package/dist/icons/IconRenderer.test.js +63 -65
- package/dist/icons/IconRenderer.test.js.map +1 -1
- package/dist/icons/iconData.js +2 -5
- package/dist/icons/iconData.js.map +1 -1
- package/dist/icons/index.js +3 -14
- package/dist/icons/index.js.map +1 -1
- package/dist/ipc/MessageBroker.d.ts.map +1 -1
- package/dist/ipc/MessageBroker.js +33 -6
- package/dist/ipc/MessageBroker.js.map +1 -1
- package/dist/ipc/MessageBroker.test.js +26 -28
- package/dist/ipc/MessageBroker.test.js.map +1 -1
- package/dist/ipc/devInspectorBridge.d.ts +57 -0
- package/dist/ipc/devInspectorBridge.d.ts.map +1 -0
- package/dist/ipc/devInspectorBridge.js +70 -0
- package/dist/ipc/devInspectorBridge.js.map +1 -0
- package/dist/ipc/devInspectorBridge.test.d.ts +2 -0
- package/dist/ipc/devInspectorBridge.test.d.ts.map +1 -0
- package/dist/ipc/devInspectorBridge.test.js +128 -0
- package/dist/ipc/devInspectorBridge.test.js.map +1 -0
- package/dist/ipc/namespaces.d.ts +1 -1
- package/dist/ipc/namespaces.d.ts.map +1 -1
- package/dist/ipc/namespaces.js +4 -7
- package/dist/ipc/namespaces.js.map +1 -1
- package/dist/ipc/namespaces.test.js +11 -13
- package/dist/ipc/namespaces.test.js.map +1 -1
- package/dist/lib/focusTracker.js +1 -4
- package/dist/lib/focusTracker.js.map +1 -1
- package/dist/lib/focusTracker.test.js +32 -57
- package/dist/lib/focusTracker.test.js.map +1 -1
- package/dist/lib/syncProviderBridge.js +1 -4
- package/dist/lib/syncProviderBridge.js.map +1 -1
- package/dist/lib/syncProviderBridge.test.js +60 -85
- package/dist/lib/syncProviderBridge.test.js.map +1 -1
- package/dist/lib/themeInjector.js +3 -8
- package/dist/lib/themeInjector.js.map +1 -1
- package/dist/lib/themeInjector.test.js +42 -44
- package/dist/lib/themeInjector.test.js.map +1 -1
- package/dist/search/SearchEngine.js +3 -10
- package/dist/search/SearchEngine.js.map +1 -1
- package/dist/search/SearchEngine.test.js +53 -55
- package/dist/search/SearchEngine.test.js.map +1 -1
- package/dist/search/index.js +2 -8
- package/dist/search/index.js.map +1 -1
- package/dist/search/textUtils.js +2 -6
- package/dist/search/textUtils.js.map +1 -1
- package/dist/search/textUtils.test.js +73 -75
- package/dist/search/textUtils.test.js.map +1 -1
- package/dist/search/types.js +1 -2
- package/dist/services/AIServiceProxy.js +2 -6
- package/dist/services/AIServiceProxy.js.map +1 -1
- package/dist/services/AIServiceProxy.test.js +69 -71
- package/dist/services/AIServiceProxy.test.js.map +1 -1
- package/dist/services/ActionServiceProxy.d.ts.map +1 -1
- package/dist/services/ActionServiceProxy.js +14 -13
- package/dist/services/ActionServiceProxy.js.map +1 -1
- package/dist/services/ActionServiceProxy.test.js +28 -23
- package/dist/services/ActionServiceProxy.test.js.map +1 -1
- package/dist/services/ApplicationService.js +2 -6
- package/dist/services/ApplicationService.js.map +1 -1
- package/dist/services/ApplicationService.test.js +108 -110
- package/dist/services/ApplicationService.test.js.map +1 -1
- package/dist/services/BaseServiceProxy.js +3 -7
- package/dist/services/BaseServiceProxy.js.map +1 -1
- package/dist/services/CacheServiceProxy.js +2 -6
- package/dist/services/CacheServiceProxy.js.map +1 -1
- package/dist/services/CacheServiceProxy.test.js +21 -23
- package/dist/services/CacheServiceProxy.test.js.map +1 -1
- package/dist/services/ClipboardHistoryServiceProxy.js +6 -10
- package/dist/services/ClipboardHistoryServiceProxy.js.map +1 -1
- package/dist/services/ClipboardHistoryServiceProxy.test.js +106 -108
- package/dist/services/ClipboardHistoryServiceProxy.test.js.map +1 -1
- package/dist/services/CommandServiceProxy.js +7 -11
- package/dist/services/CommandServiceProxy.js.map +1 -1
- package/dist/services/CommandServiceProxy.test.js +37 -39
- package/dist/services/CommandServiceProxy.test.js.map +1 -1
- package/dist/services/EntitlementServiceProxy.js +2 -6
- package/dist/services/EntitlementServiceProxy.js.map +1 -1
- package/dist/services/EntitlementServiceProxy.test.js +16 -18
- package/dist/services/EntitlementServiceProxy.test.js.map +1 -1
- package/dist/services/ExtensionManagerProxy.js +2 -6
- package/dist/services/ExtensionManagerProxy.js.map +1 -1
- package/dist/services/ExtensionManagerProxy.test.js +42 -44
- package/dist/services/ExtensionManagerProxy.test.js.map +1 -1
- package/dist/services/ExtensionRpc.d.ts +90 -0
- package/dist/services/ExtensionRpc.d.ts.map +1 -0
- package/dist/services/ExtensionRpc.js +277 -0
- package/dist/services/ExtensionRpc.js.map +1 -0
- package/dist/services/ExtensionRpc.test.d.ts +2 -0
- package/dist/services/ExtensionRpc.test.d.ts.map +1 -0
- package/dist/services/ExtensionRpc.test.js +259 -0
- package/dist/services/ExtensionRpc.test.js.map +1 -0
- package/dist/services/ExtensionStateProxy.d.ts +44 -0
- package/dist/services/ExtensionStateProxy.d.ts.map +1 -0
- package/dist/services/ExtensionStateProxy.js +115 -0
- package/dist/services/ExtensionStateProxy.js.map +1 -0
- package/dist/services/ExtensionStateProxy.test.d.ts +2 -0
- package/dist/services/ExtensionStateProxy.test.d.ts.map +1 -0
- package/dist/services/ExtensionStateProxy.test.js +158 -0
- package/dist/services/ExtensionStateProxy.test.js.map +1 -0
- package/dist/services/FeedbackServiceProxy.js +2 -6
- package/dist/services/FeedbackServiceProxy.js.map +1 -1
- package/dist/services/FeedbackServiceProxy.test.js +31 -33
- package/dist/services/FeedbackServiceProxy.test.js.map +1 -1
- package/dist/services/FileManagerServiceProxy.js +2 -6
- package/dist/services/FileManagerServiceProxy.js.map +1 -1
- package/dist/services/FileManagerServiceProxy.test.js +21 -23
- package/dist/services/FileManagerServiceProxy.test.js.map +1 -1
- package/dist/services/FileSystemWatcherService.js +2 -6
- package/dist/services/FileSystemWatcherService.js.map +1 -1
- package/dist/services/FileSystemWatcherService.test.js +45 -47
- package/dist/services/FileSystemWatcherService.test.js.map +1 -1
- package/dist/services/IAIService.js +1 -2
- package/dist/services/ICacheService.js +1 -2
- package/dist/services/IClipboardHistoryService.js +1 -2
- package/dist/services/ICommandService.js +1 -2
- package/dist/services/IEntitlementService.js +1 -2
- package/dist/services/IExtensionManager.js +1 -2
- package/dist/services/IFeedbackService.js +1 -2
- package/dist/services/IFileManagerService.js +1 -2
- package/dist/services/IInteropService.js +1 -5
- package/dist/services/IInteropService.js.map +1 -1
- package/dist/services/INotificationService.js +1 -2
- package/dist/services/IOAuthService.js +1 -2
- package/dist/services/IPowerService.js +1 -2
- package/dist/services/IPreferencesService.js +1 -2
- package/dist/services/ISelectionService.js +1 -2
- package/dist/services/ISettingsService.js +1 -2
- package/dist/services/IShellService.js +1 -2
- package/dist/services/IStatusBarService.js +1 -2
- package/dist/services/IStorageService.js +1 -2
- package/dist/services/ISystemEventsService.js +1 -2
- package/dist/services/ISystemEventsService.js.map +1 -1
- package/dist/services/ITimerService.js +1 -2
- package/dist/services/InteropServiceProxy.js +2 -6
- package/dist/services/InteropServiceProxy.js.map +1 -1
- package/dist/services/InteropServiceProxy.test.js +19 -21
- package/dist/services/InteropServiceProxy.test.js.map +1 -1
- package/dist/services/LogService.js +1 -2
- package/dist/services/LogServiceProxy.js +2 -6
- package/dist/services/LogServiceProxy.js.map +1 -1
- package/dist/services/LogServiceProxy.test.js +43 -45
- package/dist/services/LogServiceProxy.test.js.map +1 -1
- package/dist/services/NetworkServiceProxy.js +2 -6
- package/dist/services/NetworkServiceProxy.js.map +1 -1
- package/dist/services/NetworkServiceProxy.test.js +20 -22
- package/dist/services/NetworkServiceProxy.test.js.map +1 -1
- package/dist/services/NotificationServiceProxy.js +2 -6
- package/dist/services/NotificationServiceProxy.js.map +1 -1
- package/dist/services/NotificationServiceProxy.test.js +39 -41
- package/dist/services/NotificationServiceProxy.test.js.map +1 -1
- package/dist/services/OAuthServiceProxy.js +2 -6
- package/dist/services/OAuthServiceProxy.js.map +1 -1
- package/dist/services/OAuthServiceProxy.test.js +42 -44
- package/dist/services/OAuthServiceProxy.test.js.map +1 -1
- package/dist/services/PowerServiceProxy.js +2 -6
- package/dist/services/PowerServiceProxy.js.map +1 -1
- package/dist/services/PowerServiceProxy.test.js +24 -26
- package/dist/services/PowerServiceProxy.test.js.map +1 -1
- package/dist/services/PreferencesServiceProxy.js +2 -6
- package/dist/services/PreferencesServiceProxy.js.map +1 -1
- package/dist/services/PreferencesServiceProxy.test.js +22 -24
- package/dist/services/PreferencesServiceProxy.test.js.map +1 -1
- package/dist/services/SelectionServiceProxy.js +2 -6
- package/dist/services/SelectionServiceProxy.js.map +1 -1
- package/dist/services/SelectionServiceProxy.test.js +20 -22
- package/dist/services/SelectionServiceProxy.test.js.map +1 -1
- package/dist/services/SettingsServiceProxy.js +2 -6
- package/dist/services/SettingsServiceProxy.js.map +1 -1
- package/dist/services/SettingsServiceProxy.test.js +18 -20
- package/dist/services/SettingsServiceProxy.test.js.map +1 -1
- package/dist/services/ShellServiceProxy.js +2 -6
- package/dist/services/ShellServiceProxy.js.map +1 -1
- package/dist/services/ShellServiceProxy.test.js +92 -94
- package/dist/services/ShellServiceProxy.test.js.map +1 -1
- package/dist/services/StatusBarServiceProxy.js +9 -13
- package/dist/services/StatusBarServiceProxy.js.map +1 -1
- package/dist/services/StatusBarServiceProxy.test.js +68 -70
- package/dist/services/StatusBarServiceProxy.test.js.map +1 -1
- package/dist/services/StorageServiceProxy.js +2 -6
- package/dist/services/StorageServiceProxy.js.map +1 -1
- package/dist/services/StorageServiceProxy.test.js +31 -33
- package/dist/services/StorageServiceProxy.test.js.map +1 -1
- package/dist/services/SystemEventsServiceProxy.js +2 -6
- package/dist/services/SystemEventsServiceProxy.js.map +1 -1
- package/dist/services/SystemEventsServiceProxy.test.js +50 -52
- package/dist/services/SystemEventsServiceProxy.test.js.map +1 -1
- package/dist/services/TimerServiceProxy.js +2 -6
- package/dist/services/TimerServiceProxy.js.map +1 -1
- package/dist/services/TimerServiceProxy.test.js +33 -35
- package/dist/services/TimerServiceProxy.test.js.map +1 -1
- package/dist/services/WindowManagementService.js +2 -6
- package/dist/services/WindowManagementService.js.map +1 -1
- package/dist/services/WindowManagementService.test.js +23 -25
- package/dist/services/WindowManagementService.test.js.map +1 -1
- package/dist/services/index.js +36 -76
- package/dist/services/index.js.map +1 -1
- package/dist/services/statusBarValidation.js +7 -14
- package/dist/services/statusBarValidation.js.map +1 -1
- package/dist/types/ActionType.js +3 -6
- package/dist/types/ActionType.js.map +1 -1
- package/dist/types/ApplicationType.js +1 -2
- package/dist/types/ClipboardType.js +2 -5
- package/dist/types/ClipboardType.js.map +1 -1
- package/dist/types/CommandType.js +1 -2
- package/dist/types/ExtensionType.d.ts +40 -5
- package/dist/types/ExtensionType.d.ts.map +1 -1
- package/dist/types/ExtensionType.js +1 -2
- package/dist/types/NetworkType.js +1 -2
- package/dist/types/NotificationType.js +1 -2
- package/dist/types/SyncType.js +1 -2
- package/dist/types/index.js +2 -18
- package/dist/types/index.js.map +1 -1
- package/dist/view.d.ts +12 -0
- package/dist/view.d.ts.map +1 -0
- package/dist/view.js +19 -0
- package/dist/view.js.map +1 -0
- package/dist/view.test.d.ts +2 -0
- package/dist/view.test.d.ts.map +1 -0
- package/dist/view.test.js +114 -0
- package/dist/view.test.js.map +1 -0
- package/dist/worker.bundle-size.test.d.ts +2 -0
- package/dist/worker.bundle-size.test.d.ts.map +1 -0
- package/dist/worker.bundle-size.test.js +96 -0
- package/dist/worker.bundle-size.test.js.map +1 -0
- package/dist/worker.d.ts +37 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +122 -0
- package/dist/worker.js.map +1 -0
- package/dist/worker.test.d.ts +2 -0
- package/dist/worker.test.d.ts.map +1 -0
- package/dist/worker.test.js +136 -0
- package/dist/worker.test.js.map +1 -0
- package/package.json +12 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -47
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/** @vitest-environment jsdom */
|
|
2
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
3
|
+
import { emitRpcLog, emitIpcLog, isInspectorActive } from './devInspectorBridge';
|
|
4
|
+
function setFlag(active) {
|
|
5
|
+
if (active === undefined) {
|
|
6
|
+
delete window.__ASYAR_DEV_INSPECTOR_ACTIVE__;
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
window.__ASYAR_DEV_INSPECTOR_ACTIVE__ = active;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
describe('devInspectorBridge — flag-gated diagnostic emitters', () => {
|
|
13
|
+
const originalParentDescriptor = Object.getOwnPropertyDescriptor(window, 'parent');
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
setFlag(undefined);
|
|
16
|
+
});
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
setFlag(undefined);
|
|
19
|
+
if (originalParentDescriptor) {
|
|
20
|
+
Object.defineProperty(window, 'parent', originalParentDescriptor);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
it('isInspectorActive returns false when the flag is absent', () => {
|
|
24
|
+
expect(isInspectorActive()).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
it('isInspectorActive returns true only for exact `=== true`', () => {
|
|
27
|
+
setFlag(true);
|
|
28
|
+
expect(isInspectorActive()).toBe(true);
|
|
29
|
+
window.__ASYAR_DEV_INSPECTOR_ACTIVE__ = 'truthy-string';
|
|
30
|
+
expect(isInspectorActive()).toBe(false);
|
|
31
|
+
window.__ASYAR_DEV_INSPECTOR_ACTIVE__ = 1;
|
|
32
|
+
expect(isInspectorActive()).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it('emitRpcLog with flag absent fires no postMessage — regression lock', () => {
|
|
35
|
+
const fakeParent = { postMessage: vi.fn() };
|
|
36
|
+
Object.defineProperty(window, 'parent', {
|
|
37
|
+
configurable: true,
|
|
38
|
+
get: () => fakeParent,
|
|
39
|
+
});
|
|
40
|
+
emitRpcLog({
|
|
41
|
+
phase: 'request',
|
|
42
|
+
correlationId: 'abc',
|
|
43
|
+
timestamp: 1000,
|
|
44
|
+
});
|
|
45
|
+
expect(fakeParent.postMessage).not.toHaveBeenCalled();
|
|
46
|
+
});
|
|
47
|
+
it('emitIpcLog with flag absent fires no postMessage — regression lock', () => {
|
|
48
|
+
const fakeParent = { postMessage: vi.fn() };
|
|
49
|
+
Object.defineProperty(window, 'parent', {
|
|
50
|
+
configurable: true,
|
|
51
|
+
get: () => fakeParent,
|
|
52
|
+
});
|
|
53
|
+
emitIpcLog({
|
|
54
|
+
phase: 'invoke',
|
|
55
|
+
command: 'storage:get',
|
|
56
|
+
messageId: 'mid',
|
|
57
|
+
timestamp: 1000,
|
|
58
|
+
});
|
|
59
|
+
expect(fakeParent.postMessage).not.toHaveBeenCalled();
|
|
60
|
+
});
|
|
61
|
+
it('emitRpcLog with flag set posts to window.parent with asyar:dev:rpc-log type', () => {
|
|
62
|
+
setFlag(true);
|
|
63
|
+
const fakeParent = { postMessage: vi.fn() };
|
|
64
|
+
Object.defineProperty(window, 'parent', {
|
|
65
|
+
configurable: true,
|
|
66
|
+
get: () => fakeParent,
|
|
67
|
+
});
|
|
68
|
+
emitRpcLog({
|
|
69
|
+
phase: 'request',
|
|
70
|
+
id: 'doThing',
|
|
71
|
+
correlationId: 'cor-1',
|
|
72
|
+
payload: { x: 1 },
|
|
73
|
+
timestamp: 1000,
|
|
74
|
+
});
|
|
75
|
+
expect(fakeParent.postMessage).toHaveBeenCalledOnce();
|
|
76
|
+
const [message, origin] = fakeParent.postMessage.mock.calls[0];
|
|
77
|
+
expect(message.type).toBe('asyar:dev:rpc-log');
|
|
78
|
+
expect(message.payload.phase).toBe('request');
|
|
79
|
+
expect(message.payload.correlationId).toBe('cor-1');
|
|
80
|
+
expect(origin).toBe('*');
|
|
81
|
+
});
|
|
82
|
+
it('emitIpcLog with flag set posts asyar:dev:ipc-log to window.parent', () => {
|
|
83
|
+
setFlag(true);
|
|
84
|
+
const fakeParent = { postMessage: vi.fn() };
|
|
85
|
+
Object.defineProperty(window, 'parent', {
|
|
86
|
+
configurable: true,
|
|
87
|
+
get: () => fakeParent,
|
|
88
|
+
});
|
|
89
|
+
emitIpcLog({
|
|
90
|
+
phase: 'invoke',
|
|
91
|
+
command: 'storage:get',
|
|
92
|
+
payload: { key: 'x' },
|
|
93
|
+
messageId: 'msg-1',
|
|
94
|
+
timestamp: 2000,
|
|
95
|
+
});
|
|
96
|
+
expect(fakeParent.postMessage).toHaveBeenCalledOnce();
|
|
97
|
+
const [message] = fakeParent.postMessage.mock.calls[0];
|
|
98
|
+
expect(message.type).toBe('asyar:dev:ipc-log');
|
|
99
|
+
expect(message.payload.command).toBe('storage:get');
|
|
100
|
+
});
|
|
101
|
+
it('emit functions are silent in host realm (parent === window)', () => {
|
|
102
|
+
setFlag(true);
|
|
103
|
+
Object.defineProperty(window, 'parent', {
|
|
104
|
+
configurable: true,
|
|
105
|
+
get: () => window,
|
|
106
|
+
});
|
|
107
|
+
// No fake postMessage replacement — we just assert no throw. The
|
|
108
|
+
// function bails when parent === window. Also tests that setting the
|
|
109
|
+
// flag in a host (launcher) context is harmless — extensions run as
|
|
110
|
+
// iframes, but tests / the launcher itself loading the SDK would
|
|
111
|
+
// otherwise loop-back onto themselves.
|
|
112
|
+
expect(() => emitRpcLog({ phase: 'request', correlationId: 'c', timestamp: 0 })).not.toThrow();
|
|
113
|
+
});
|
|
114
|
+
it('emit functions swallow postMessage errors', () => {
|
|
115
|
+
setFlag(true);
|
|
116
|
+
const fakeParent = {
|
|
117
|
+
postMessage: vi.fn(() => {
|
|
118
|
+
throw new Error('cross-origin');
|
|
119
|
+
}),
|
|
120
|
+
};
|
|
121
|
+
Object.defineProperty(window, 'parent', {
|
|
122
|
+
configurable: true,
|
|
123
|
+
get: () => fakeParent,
|
|
124
|
+
});
|
|
125
|
+
expect(() => emitIpcLog({ phase: 'invoke', command: 'x:y', messageId: 'm', timestamp: 0 })).not.toThrow();
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=devInspectorBridge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devInspectorBridge.test.js","sourceRoot":"","sources":["../../src/ipc/devInspectorBridge.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", "applicationIndex", "fs", "interop", "application", "window", "timers", "fsWatcher"];
|
|
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", "fsWatcher", "state"];
|
|
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,2WA+Bb,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,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NAMESPACES = void 0;
|
|
4
|
-
exports.isNamespace = isNamespace;
|
|
5
|
-
exports.NAMESPACES = [
|
|
1
|
+
export const NAMESPACES = [
|
|
6
2
|
'log',
|
|
7
3
|
'extensions',
|
|
8
4
|
'notifications',
|
|
@@ -32,8 +28,9 @@ exports.NAMESPACES = [
|
|
|
32
28
|
'window',
|
|
33
29
|
'timers',
|
|
34
30
|
'fsWatcher',
|
|
31
|
+
'state',
|
|
35
32
|
];
|
|
36
|
-
function isNamespace(value) {
|
|
37
|
-
return
|
|
33
|
+
export function isNamespace(value) {
|
|
34
|
+
return NAMESPACES.includes(value);
|
|
38
35
|
}
|
|
39
36
|
//# sourceMappingURL=namespaces.js.map
|
|
@@ -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":"AAAA,MAAM,CAAC,MAAM,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;IACR,WAAW;IACX,OAAO;CACC,CAAA;AAMV,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAQ,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1D,CAAC"}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
(
|
|
6
|
-
(0, vitest_1.it)('contains every current canonical namespace', () => {
|
|
7
|
-
(0, vitest_1.expect)(namespaces_1.NAMESPACES).toEqual([
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { NAMESPACES } from './namespaces';
|
|
3
|
+
describe('NAMESPACES', () => {
|
|
4
|
+
it('contains every current canonical namespace', () => {
|
|
5
|
+
expect(NAMESPACES).toEqual([
|
|
8
6
|
'log', 'extensions', 'notifications', 'clipboard', 'commands',
|
|
9
7
|
'actions', 'settings', 'preferences', 'statusBar', 'entitlements',
|
|
10
8
|
'network', 'storage', 'cache', 'feedback', 'selection', 'ai',
|
|
11
9
|
'oauth', 'opener', 'power', 'shell', 'systemEvents', 'appEvents',
|
|
12
10
|
'applicationIndex', 'fs', 'interop', 'application', 'window', 'timers',
|
|
13
|
-
'fsWatcher',
|
|
11
|
+
'fsWatcher', 'state',
|
|
14
12
|
]);
|
|
15
13
|
});
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
it('has no duplicates', () => {
|
|
15
|
+
expect(new Set(NAMESPACES).size).toBe(NAMESPACES.length);
|
|
18
16
|
});
|
|
19
|
-
|
|
20
|
-
const invalid =
|
|
21
|
-
|
|
17
|
+
it('uses only lowercase-start identifiers (camelCase allowed)', () => {
|
|
18
|
+
const invalid = NAMESPACES.filter(n => !/^[a-z][a-zA-Z0-9]*$/.test(n));
|
|
19
|
+
expect(invalid).toEqual([]);
|
|
22
20
|
});
|
|
23
21
|
});
|
|
24
22
|
//# sourceMappingURL=namespaces.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.test.js","sourceRoot":"","sources":["../../src/ipc/namespaces.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"namespaces.test.js","sourceRoot":"","sources":["../../src/ipc/namespaces.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,UAAU,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;YACtE,WAAW,EAAE,OAAO;SACrB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACtE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/lib/focusTracker.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setupFocusTracking = setupFocusTracking;
|
|
4
1
|
/**
|
|
5
2
|
* Sets up focus tracking for extension iframes.
|
|
6
3
|
*
|
|
@@ -9,7 +6,7 @@ exports.setupFocusTracking = setupFocusTracking;
|
|
|
9
6
|
* a text-like input gains or loses focus. This lets the launcher
|
|
10
7
|
* suppress global keyboard shortcuts while the user is typing.
|
|
11
8
|
*/
|
|
12
|
-
function setupFocusTracking() {
|
|
9
|
+
export function setupFocusTracking() {
|
|
13
10
|
if (typeof window === 'undefined' || typeof document === 'undefined')
|
|
14
11
|
return;
|
|
15
12
|
const isInput = (el) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusTracker.js","sourceRoot":"","sources":["../../src/lib/focusTracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"focusTracker.js","sourceRoot":"","sources":["../../src/lib/focusTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAE7E,MAAM,OAAO,GAAG,CAAC,EAAkB,EAAW,EAAE;;QAC9C,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QACtB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,CAAA,MAAC,EAAuB,CAAC,IAAI,0CAAE,WAAW,EAAE,KAAI,MAAM,CAAC;YACpE,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACrI,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,IAAK,EAAkB,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;QACrC,yDAAyD;QACzD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC;IAEF,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAiB,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,gBAAgB,GAAG,MAAM,CAAC;YAC1B,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;QACzC,2DAA2D;QAC3D,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBAChC,gBAAgB,GAAG,MAAM,CAAC;gBAC1B,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -31,60 +7,59 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
31
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
8
|
});
|
|
33
9
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
(0, vitest_1.describe)('setupFocusTracking', () => {
|
|
10
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
11
|
+
describe('setupFocusTracking', () => {
|
|
37
12
|
let postMessageSpy;
|
|
38
13
|
let focusinHandler;
|
|
39
14
|
let focusoutHandler;
|
|
40
|
-
|
|
41
|
-
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
vi.useFakeTimers();
|
|
42
17
|
// Reset module registry so each test gets fresh internal state
|
|
43
|
-
|
|
44
|
-
postMessageSpy =
|
|
18
|
+
vi.resetModules();
|
|
19
|
+
postMessageSpy = vi.fn();
|
|
45
20
|
// Simulate being inside an iframe: window.parent !== window
|
|
46
|
-
|
|
21
|
+
vi.stubGlobal('parent', { postMessage: postMessageSpy });
|
|
47
22
|
// Spy on document.addEventListener to capture the focusin/focusout handlers
|
|
48
23
|
focusinHandler = undefined;
|
|
49
24
|
focusoutHandler = undefined;
|
|
50
|
-
|
|
25
|
+
vi.spyOn(document, 'addEventListener').mockImplementation((event, handler) => {
|
|
51
26
|
if (event === 'focusin')
|
|
52
27
|
focusinHandler = handler;
|
|
53
28
|
if (event === 'focusout')
|
|
54
29
|
focusoutHandler = handler;
|
|
55
30
|
});
|
|
56
31
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
32
|
+
afterEach(() => {
|
|
33
|
+
vi.useRealTimers();
|
|
34
|
+
vi.restoreAllMocks();
|
|
35
|
+
vi.unstubAllGlobals();
|
|
61
36
|
});
|
|
62
|
-
|
|
63
|
-
const { setupFocusTracking } = yield
|
|
37
|
+
it('registers focusin and focusout listeners on document', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
+
const { setupFocusTracking } = yield import('./focusTracker');
|
|
64
39
|
setupFocusTracking();
|
|
65
|
-
|
|
66
|
-
|
|
40
|
+
expect(document.addEventListener).toHaveBeenCalledWith('focusin', expect.any(Function));
|
|
41
|
+
expect(document.addEventListener).toHaveBeenCalledWith('focusout', expect.any(Function));
|
|
67
42
|
}));
|
|
68
|
-
|
|
69
|
-
const { setupFocusTracking } = yield
|
|
43
|
+
it('posts focused: true when a text input receives focus', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
const { setupFocusTracking } = yield import('./focusTracker');
|
|
70
45
|
setupFocusTracking();
|
|
71
46
|
focusinHandler({ target: { tagName: 'INPUT', type: 'text' } });
|
|
72
|
-
|
|
47
|
+
expect(postMessageSpy).toHaveBeenCalledWith({ type: 'asyar:extension:input-focus', focused: true }, '*');
|
|
73
48
|
}));
|
|
74
|
-
|
|
75
|
-
const { setupFocusTracking } = yield
|
|
49
|
+
it('posts focused: true when a textarea receives focus', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
+
const { setupFocusTracking } = yield import('./focusTracker');
|
|
76
51
|
setupFocusTracking();
|
|
77
52
|
focusinHandler({ target: { tagName: 'TEXTAREA' } });
|
|
78
|
-
|
|
53
|
+
expect(postMessageSpy).toHaveBeenCalledWith({ type: 'asyar:extension:input-focus', focused: true }, '*');
|
|
79
54
|
}));
|
|
80
|
-
|
|
81
|
-
const { setupFocusTracking } = yield
|
|
55
|
+
it('does NOT post when a non-input element receives focus', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
+
const { setupFocusTracking } = yield import('./focusTracker');
|
|
82
57
|
setupFocusTracking();
|
|
83
58
|
focusinHandler({ target: { tagName: 'DIV', isContentEditable: false } });
|
|
84
|
-
|
|
59
|
+
expect(postMessageSpy).not.toHaveBeenCalled();
|
|
85
60
|
}));
|
|
86
|
-
|
|
87
|
-
const { setupFocusTracking } = yield
|
|
61
|
+
it('posts focused: false on focusout when active element is not an input', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
const { setupFocusTracking } = yield import('./focusTracker');
|
|
88
63
|
setupFocusTracking();
|
|
89
64
|
// First: focus an input to set the internal state to true
|
|
90
65
|
focusinHandler({ target: { tagName: 'INPUT', type: 'text' } });
|
|
@@ -96,16 +71,16 @@ const vitest_1 = require("vitest");
|
|
|
96
71
|
configurable: true,
|
|
97
72
|
});
|
|
98
73
|
focusoutHandler();
|
|
99
|
-
|
|
100
|
-
|
|
74
|
+
vi.advanceTimersByTime(0);
|
|
75
|
+
expect(postMessageSpy).toHaveBeenCalledWith({ type: 'asyar:extension:input-focus', focused: false }, '*');
|
|
101
76
|
}));
|
|
102
|
-
|
|
103
|
-
const { setupFocusTracking } = yield
|
|
77
|
+
it('does NOT re-post when the focused state has not changed (dedup)', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
+
const { setupFocusTracking } = yield import('./focusTracker');
|
|
104
79
|
setupFocusTracking();
|
|
105
80
|
// Focus an input twice — only the first should emit
|
|
106
81
|
focusinHandler({ target: { tagName: 'INPUT', type: 'text' } });
|
|
107
82
|
focusinHandler({ target: { tagName: 'INPUT', type: 'search' } });
|
|
108
|
-
|
|
83
|
+
expect(postMessageSpy).toHaveBeenCalledTimes(1);
|
|
109
84
|
}));
|
|
110
85
|
});
|
|
111
86
|
//# sourceMappingURL=focusTracker.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusTracker.test.js","sourceRoot":"","sources":["../../src/lib/focusTracker.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"focusTracker.test.js","sourceRoot":"","sources":["../../src/lib/focusTracker.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,8 +7,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.registerSyncProvider = registerSyncProvider;
|
|
13
10
|
/**
|
|
14
11
|
* Registers a sync provider for the given extension by sending a
|
|
15
12
|
* registration postMessage to the host and setting up message listeners
|
|
@@ -18,7 +15,7 @@ exports.registerSyncProvider = registerSyncProvider;
|
|
|
18
15
|
* The provider is captured by closure in the listeners — no external
|
|
19
16
|
* field storage is needed.
|
|
20
17
|
*/
|
|
21
|
-
function registerSyncProvider(extensionId, provider) {
|
|
18
|
+
export function registerSyncProvider(extensionId, provider) {
|
|
22
19
|
var _a;
|
|
23
20
|
// Send registration to host via postMessage
|
|
24
21
|
if (typeof window !== 'undefined' && window.parent && window.parent !== window) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncProviderBridge.js","sourceRoot":"","sources":["../../src/lib/syncProviderBridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"syncProviderBridge.js","sourceRoot":"","sources":["../../src/lib/syncProviderBridge.ts"],"names":[],"mappings":"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"}
|