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.
Files changed (281) hide show
  1. package/README.md +95 -42
  2. package/dist/ExtensionBridge.d.ts +1 -1
  3. package/dist/ExtensionBridge.d.ts.map +1 -1
  4. package/dist/ExtensionBridge.js +17 -13
  5. package/dist/ExtensionBridge.js.map +1 -1
  6. package/dist/ExtensionBridge.test.js +76 -101
  7. package/dist/ExtensionBridge.test.js.map +1 -1
  8. package/dist/ExtensionContext.d.ts +22 -57
  9. package/dist/ExtensionContext.d.ts.map +1 -1
  10. package/dist/ExtensionContext.js +84 -207
  11. package/dist/ExtensionContext.js.map +1 -1
  12. package/dist/ExtensionContext.test.js +91 -66
  13. package/dist/ExtensionContext.test.js.map +1 -1
  14. package/dist/ExtensionContextCore.d.ts +46 -0
  15. package/dist/ExtensionContextCore.d.ts.map +1 -0
  16. package/dist/ExtensionContextCore.js +149 -0
  17. package/dist/ExtensionContextCore.js.map +1 -0
  18. package/dist/PreferencesFacade.js +4 -9
  19. package/dist/PreferencesFacade.js.map +1 -1
  20. package/dist/PreferencesFacade.test.js +53 -55
  21. package/dist/PreferencesFacade.test.js.map +1 -1
  22. package/dist/cli/commands/attach.js +1 -1
  23. package/dist/cli/commands/attach.js.map +1 -1
  24. package/dist/cli/commands/build.d.ts +5 -1
  25. package/dist/cli/commands/build.d.ts.map +1 -1
  26. package/dist/cli/commands/build.js +43 -5
  27. package/dist/cli/commands/build.js.map +1 -1
  28. package/dist/cli/lib/manifest.d.ts +17 -5
  29. package/dist/cli/lib/manifest.d.ts.map +1 -1
  30. package/dist/cli/lib/manifest.js +125 -66
  31. package/dist/cli/lib/manifest.js.map +1 -1
  32. package/dist/{index.d.ts → contracts.d.ts} +23 -1
  33. package/dist/contracts.d.ts.map +1 -0
  34. package/dist/contracts.js +36 -0
  35. package/dist/contracts.js.map +1 -0
  36. package/dist/contracts.purity.test.d.ts +2 -0
  37. package/dist/contracts.purity.test.d.ts.map +1 -0
  38. package/dist/contracts.purity.test.js +42 -0
  39. package/dist/contracts.purity.test.js.map +1 -0
  40. package/dist/icons/AsyarIconElement.js +4 -9
  41. package/dist/icons/AsyarIconElement.js.map +1 -1
  42. package/dist/icons/AsyarIconElement.test.js +14 -16
  43. package/dist/icons/AsyarIconElement.test.js.map +1 -1
  44. package/dist/icons/IconRenderer.js +9 -15
  45. package/dist/icons/IconRenderer.js.map +1 -1
  46. package/dist/icons/IconRenderer.test.js +63 -65
  47. package/dist/icons/IconRenderer.test.js.map +1 -1
  48. package/dist/icons/iconData.js +2 -5
  49. package/dist/icons/iconData.js.map +1 -1
  50. package/dist/icons/index.js +3 -14
  51. package/dist/icons/index.js.map +1 -1
  52. package/dist/ipc/MessageBroker.d.ts.map +1 -1
  53. package/dist/ipc/MessageBroker.js +33 -6
  54. package/dist/ipc/MessageBroker.js.map +1 -1
  55. package/dist/ipc/MessageBroker.test.js +26 -28
  56. package/dist/ipc/MessageBroker.test.js.map +1 -1
  57. package/dist/ipc/devInspectorBridge.d.ts +57 -0
  58. package/dist/ipc/devInspectorBridge.d.ts.map +1 -0
  59. package/dist/ipc/devInspectorBridge.js +70 -0
  60. package/dist/ipc/devInspectorBridge.js.map +1 -0
  61. package/dist/ipc/devInspectorBridge.test.d.ts +2 -0
  62. package/dist/ipc/devInspectorBridge.test.d.ts.map +1 -0
  63. package/dist/ipc/devInspectorBridge.test.js +128 -0
  64. package/dist/ipc/devInspectorBridge.test.js.map +1 -0
  65. package/dist/ipc/namespaces.d.ts +1 -1
  66. package/dist/ipc/namespaces.d.ts.map +1 -1
  67. package/dist/ipc/namespaces.js +4 -7
  68. package/dist/ipc/namespaces.js.map +1 -1
  69. package/dist/ipc/namespaces.test.js +11 -13
  70. package/dist/ipc/namespaces.test.js.map +1 -1
  71. package/dist/lib/focusTracker.js +1 -4
  72. package/dist/lib/focusTracker.js.map +1 -1
  73. package/dist/lib/focusTracker.test.js +32 -57
  74. package/dist/lib/focusTracker.test.js.map +1 -1
  75. package/dist/lib/syncProviderBridge.js +1 -4
  76. package/dist/lib/syncProviderBridge.js.map +1 -1
  77. package/dist/lib/syncProviderBridge.test.js +60 -85
  78. package/dist/lib/syncProviderBridge.test.js.map +1 -1
  79. package/dist/lib/themeInjector.js +3 -8
  80. package/dist/lib/themeInjector.js.map +1 -1
  81. package/dist/lib/themeInjector.test.js +42 -44
  82. package/dist/lib/themeInjector.test.js.map +1 -1
  83. package/dist/search/SearchEngine.js +3 -10
  84. package/dist/search/SearchEngine.js.map +1 -1
  85. package/dist/search/SearchEngine.test.js +53 -55
  86. package/dist/search/SearchEngine.test.js.map +1 -1
  87. package/dist/search/index.js +2 -8
  88. package/dist/search/index.js.map +1 -1
  89. package/dist/search/textUtils.js +2 -6
  90. package/dist/search/textUtils.js.map +1 -1
  91. package/dist/search/textUtils.test.js +73 -75
  92. package/dist/search/textUtils.test.js.map +1 -1
  93. package/dist/search/types.js +1 -2
  94. package/dist/services/AIServiceProxy.js +2 -6
  95. package/dist/services/AIServiceProxy.js.map +1 -1
  96. package/dist/services/AIServiceProxy.test.js +69 -71
  97. package/dist/services/AIServiceProxy.test.js.map +1 -1
  98. package/dist/services/ActionServiceProxy.d.ts.map +1 -1
  99. package/dist/services/ActionServiceProxy.js +14 -13
  100. package/dist/services/ActionServiceProxy.js.map +1 -1
  101. package/dist/services/ActionServiceProxy.test.js +28 -23
  102. package/dist/services/ActionServiceProxy.test.js.map +1 -1
  103. package/dist/services/ApplicationService.js +2 -6
  104. package/dist/services/ApplicationService.js.map +1 -1
  105. package/dist/services/ApplicationService.test.js +108 -110
  106. package/dist/services/ApplicationService.test.js.map +1 -1
  107. package/dist/services/BaseServiceProxy.js +3 -7
  108. package/dist/services/BaseServiceProxy.js.map +1 -1
  109. package/dist/services/CacheServiceProxy.js +2 -6
  110. package/dist/services/CacheServiceProxy.js.map +1 -1
  111. package/dist/services/CacheServiceProxy.test.js +21 -23
  112. package/dist/services/CacheServiceProxy.test.js.map +1 -1
  113. package/dist/services/ClipboardHistoryServiceProxy.js +6 -10
  114. package/dist/services/ClipboardHistoryServiceProxy.js.map +1 -1
  115. package/dist/services/ClipboardHistoryServiceProxy.test.js +106 -108
  116. package/dist/services/ClipboardHistoryServiceProxy.test.js.map +1 -1
  117. package/dist/services/CommandServiceProxy.js +7 -11
  118. package/dist/services/CommandServiceProxy.js.map +1 -1
  119. package/dist/services/CommandServiceProxy.test.js +37 -39
  120. package/dist/services/CommandServiceProxy.test.js.map +1 -1
  121. package/dist/services/EntitlementServiceProxy.js +2 -6
  122. package/dist/services/EntitlementServiceProxy.js.map +1 -1
  123. package/dist/services/EntitlementServiceProxy.test.js +16 -18
  124. package/dist/services/EntitlementServiceProxy.test.js.map +1 -1
  125. package/dist/services/ExtensionManagerProxy.js +2 -6
  126. package/dist/services/ExtensionManagerProxy.js.map +1 -1
  127. package/dist/services/ExtensionManagerProxy.test.js +42 -44
  128. package/dist/services/ExtensionManagerProxy.test.js.map +1 -1
  129. package/dist/services/ExtensionRpc.d.ts +90 -0
  130. package/dist/services/ExtensionRpc.d.ts.map +1 -0
  131. package/dist/services/ExtensionRpc.js +277 -0
  132. package/dist/services/ExtensionRpc.js.map +1 -0
  133. package/dist/services/ExtensionRpc.test.d.ts +2 -0
  134. package/dist/services/ExtensionRpc.test.d.ts.map +1 -0
  135. package/dist/services/ExtensionRpc.test.js +259 -0
  136. package/dist/services/ExtensionRpc.test.js.map +1 -0
  137. package/dist/services/ExtensionStateProxy.d.ts +44 -0
  138. package/dist/services/ExtensionStateProxy.d.ts.map +1 -0
  139. package/dist/services/ExtensionStateProxy.js +115 -0
  140. package/dist/services/ExtensionStateProxy.js.map +1 -0
  141. package/dist/services/ExtensionStateProxy.test.d.ts +2 -0
  142. package/dist/services/ExtensionStateProxy.test.d.ts.map +1 -0
  143. package/dist/services/ExtensionStateProxy.test.js +158 -0
  144. package/dist/services/ExtensionStateProxy.test.js.map +1 -0
  145. package/dist/services/FeedbackServiceProxy.js +2 -6
  146. package/dist/services/FeedbackServiceProxy.js.map +1 -1
  147. package/dist/services/FeedbackServiceProxy.test.js +31 -33
  148. package/dist/services/FeedbackServiceProxy.test.js.map +1 -1
  149. package/dist/services/FileManagerServiceProxy.js +2 -6
  150. package/dist/services/FileManagerServiceProxy.js.map +1 -1
  151. package/dist/services/FileManagerServiceProxy.test.js +21 -23
  152. package/dist/services/FileManagerServiceProxy.test.js.map +1 -1
  153. package/dist/services/FileSystemWatcherService.js +2 -6
  154. package/dist/services/FileSystemWatcherService.js.map +1 -1
  155. package/dist/services/FileSystemWatcherService.test.js +45 -47
  156. package/dist/services/FileSystemWatcherService.test.js.map +1 -1
  157. package/dist/services/IAIService.js +1 -2
  158. package/dist/services/ICacheService.js +1 -2
  159. package/dist/services/IClipboardHistoryService.js +1 -2
  160. package/dist/services/ICommandService.js +1 -2
  161. package/dist/services/IEntitlementService.js +1 -2
  162. package/dist/services/IExtensionManager.js +1 -2
  163. package/dist/services/IFeedbackService.js +1 -2
  164. package/dist/services/IFileManagerService.js +1 -2
  165. package/dist/services/IInteropService.js +1 -5
  166. package/dist/services/IInteropService.js.map +1 -1
  167. package/dist/services/INotificationService.js +1 -2
  168. package/dist/services/IOAuthService.js +1 -2
  169. package/dist/services/IPowerService.js +1 -2
  170. package/dist/services/IPreferencesService.js +1 -2
  171. package/dist/services/ISelectionService.js +1 -2
  172. package/dist/services/ISettingsService.js +1 -2
  173. package/dist/services/IShellService.js +1 -2
  174. package/dist/services/IStatusBarService.js +1 -2
  175. package/dist/services/IStorageService.js +1 -2
  176. package/dist/services/ISystemEventsService.js +1 -2
  177. package/dist/services/ISystemEventsService.js.map +1 -1
  178. package/dist/services/ITimerService.js +1 -2
  179. package/dist/services/InteropServiceProxy.js +2 -6
  180. package/dist/services/InteropServiceProxy.js.map +1 -1
  181. package/dist/services/InteropServiceProxy.test.js +19 -21
  182. package/dist/services/InteropServiceProxy.test.js.map +1 -1
  183. package/dist/services/LogService.js +1 -2
  184. package/dist/services/LogServiceProxy.js +2 -6
  185. package/dist/services/LogServiceProxy.js.map +1 -1
  186. package/dist/services/LogServiceProxy.test.js +43 -45
  187. package/dist/services/LogServiceProxy.test.js.map +1 -1
  188. package/dist/services/NetworkServiceProxy.js +2 -6
  189. package/dist/services/NetworkServiceProxy.js.map +1 -1
  190. package/dist/services/NetworkServiceProxy.test.js +20 -22
  191. package/dist/services/NetworkServiceProxy.test.js.map +1 -1
  192. package/dist/services/NotificationServiceProxy.js +2 -6
  193. package/dist/services/NotificationServiceProxy.js.map +1 -1
  194. package/dist/services/NotificationServiceProxy.test.js +39 -41
  195. package/dist/services/NotificationServiceProxy.test.js.map +1 -1
  196. package/dist/services/OAuthServiceProxy.js +2 -6
  197. package/dist/services/OAuthServiceProxy.js.map +1 -1
  198. package/dist/services/OAuthServiceProxy.test.js +42 -44
  199. package/dist/services/OAuthServiceProxy.test.js.map +1 -1
  200. package/dist/services/PowerServiceProxy.js +2 -6
  201. package/dist/services/PowerServiceProxy.js.map +1 -1
  202. package/dist/services/PowerServiceProxy.test.js +24 -26
  203. package/dist/services/PowerServiceProxy.test.js.map +1 -1
  204. package/dist/services/PreferencesServiceProxy.js +2 -6
  205. package/dist/services/PreferencesServiceProxy.js.map +1 -1
  206. package/dist/services/PreferencesServiceProxy.test.js +22 -24
  207. package/dist/services/PreferencesServiceProxy.test.js.map +1 -1
  208. package/dist/services/SelectionServiceProxy.js +2 -6
  209. package/dist/services/SelectionServiceProxy.js.map +1 -1
  210. package/dist/services/SelectionServiceProxy.test.js +20 -22
  211. package/dist/services/SelectionServiceProxy.test.js.map +1 -1
  212. package/dist/services/SettingsServiceProxy.js +2 -6
  213. package/dist/services/SettingsServiceProxy.js.map +1 -1
  214. package/dist/services/SettingsServiceProxy.test.js +18 -20
  215. package/dist/services/SettingsServiceProxy.test.js.map +1 -1
  216. package/dist/services/ShellServiceProxy.js +2 -6
  217. package/dist/services/ShellServiceProxy.js.map +1 -1
  218. package/dist/services/ShellServiceProxy.test.js +92 -94
  219. package/dist/services/ShellServiceProxy.test.js.map +1 -1
  220. package/dist/services/StatusBarServiceProxy.js +9 -13
  221. package/dist/services/StatusBarServiceProxy.js.map +1 -1
  222. package/dist/services/StatusBarServiceProxy.test.js +68 -70
  223. package/dist/services/StatusBarServiceProxy.test.js.map +1 -1
  224. package/dist/services/StorageServiceProxy.js +2 -6
  225. package/dist/services/StorageServiceProxy.js.map +1 -1
  226. package/dist/services/StorageServiceProxy.test.js +31 -33
  227. package/dist/services/StorageServiceProxy.test.js.map +1 -1
  228. package/dist/services/SystemEventsServiceProxy.js +2 -6
  229. package/dist/services/SystemEventsServiceProxy.js.map +1 -1
  230. package/dist/services/SystemEventsServiceProxy.test.js +50 -52
  231. package/dist/services/SystemEventsServiceProxy.test.js.map +1 -1
  232. package/dist/services/TimerServiceProxy.js +2 -6
  233. package/dist/services/TimerServiceProxy.js.map +1 -1
  234. package/dist/services/TimerServiceProxy.test.js +33 -35
  235. package/dist/services/TimerServiceProxy.test.js.map +1 -1
  236. package/dist/services/WindowManagementService.js +2 -6
  237. package/dist/services/WindowManagementService.js.map +1 -1
  238. package/dist/services/WindowManagementService.test.js +23 -25
  239. package/dist/services/WindowManagementService.test.js.map +1 -1
  240. package/dist/services/index.js +36 -76
  241. package/dist/services/index.js.map +1 -1
  242. package/dist/services/statusBarValidation.js +7 -14
  243. package/dist/services/statusBarValidation.js.map +1 -1
  244. package/dist/types/ActionType.js +3 -6
  245. package/dist/types/ActionType.js.map +1 -1
  246. package/dist/types/ApplicationType.js +1 -2
  247. package/dist/types/ClipboardType.js +2 -5
  248. package/dist/types/ClipboardType.js.map +1 -1
  249. package/dist/types/CommandType.js +1 -2
  250. package/dist/types/ExtensionType.d.ts +40 -5
  251. package/dist/types/ExtensionType.d.ts.map +1 -1
  252. package/dist/types/ExtensionType.js +1 -2
  253. package/dist/types/NetworkType.js +1 -2
  254. package/dist/types/NotificationType.js +1 -2
  255. package/dist/types/SyncType.js +1 -2
  256. package/dist/types/index.js +2 -18
  257. package/dist/types/index.js.map +1 -1
  258. package/dist/view.d.ts +12 -0
  259. package/dist/view.d.ts.map +1 -0
  260. package/dist/view.js +19 -0
  261. package/dist/view.js.map +1 -0
  262. package/dist/view.test.d.ts +2 -0
  263. package/dist/view.test.d.ts.map +1 -0
  264. package/dist/view.test.js +114 -0
  265. package/dist/view.test.js.map +1 -0
  266. package/dist/worker.bundle-size.test.d.ts +2 -0
  267. package/dist/worker.bundle-size.test.d.ts.map +1 -0
  268. package/dist/worker.bundle-size.test.js +96 -0
  269. package/dist/worker.bundle-size.test.js.map +1 -0
  270. package/dist/worker.d.ts +37 -0
  271. package/dist/worker.d.ts.map +1 -0
  272. package/dist/worker.js +122 -0
  273. package/dist/worker.js.map +1 -0
  274. package/dist/worker.test.d.ts +2 -0
  275. package/dist/worker.test.d.ts.map +1 -0
  276. package/dist/worker.test.js +136 -0
  277. package/dist/worker.test.js.map +1 -0
  278. package/package.json +12 -4
  279. package/dist/index.d.ts.map +0 -1
  280. package/dist/index.js +0 -47
  281. package/dist/index.js.map +0 -1
@@ -1,220 +1,97 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExtensionContext = exports.injectFontFaceCSS = exports.injectThemeVariables = exports.PreferencesFacade = void 0;
4
- const services_1 = require("./services");
5
- const AIServiceProxy_1 = require("./services/AIServiceProxy");
6
- const OAuthServiceProxy_1 = require("./services/OAuthServiceProxy");
7
- const FileManagerServiceProxy_1 = require("./services/FileManagerServiceProxy");
8
- const InteropServiceProxy_1 = require("./services/InteropServiceProxy");
9
- const WindowManagementService_1 = require("./services/WindowManagementService");
10
- const PowerServiceProxy_1 = require("./services/PowerServiceProxy");
11
- const SystemEventsServiceProxy_1 = require("./services/SystemEventsServiceProxy");
12
- const TimerServiceProxy_1 = require("./services/TimerServiceProxy");
13
- const FileSystemWatcherService_1 = require("./services/FileSystemWatcherService");
14
- const PreferencesFacade_1 = require("./PreferencesFacade");
15
- var PreferencesFacade_2 = require("./PreferencesFacade");
16
- Object.defineProperty(exports, "PreferencesFacade", { enumerable: true, get: function () { return PreferencesFacade_2.PreferencesFacade; } });
17
- const focusTracker_1 = require("./lib/focusTracker");
18
- const themeInjector_1 = require("./lib/themeInjector");
19
- const syncProviderBridge_1 = require("./lib/syncProviderBridge");
20
- var themeInjector_2 = require("./lib/themeInjector");
21
- Object.defineProperty(exports, "injectThemeVariables", { enumerable: true, get: function () { return themeInjector_2.injectThemeVariables; } });
22
- Object.defineProperty(exports, "injectFontFaceCSS", { enumerable: true, get: function () { return themeInjector_2.injectFontFaceCSS; } });
23
- // Define the context that will be passed to extensions
24
- class ExtensionContext {
25
- /**
26
- * Replace the preferences snapshot. Called once at extension boot by
27
- * ExtensionBridge, and again when the user edits preferences in the
28
- * launcher's Extensions settings tab. The snapshot is frozen at all
29
- * nesting levels — extensions cannot mutate it.
30
- *
31
- * After the snapshot is installed, registered `onPreferencesChanged`
32
- * listeners fire. They must re-read `context.preferences.values` to
33
- * pick up the new values.
34
- */
35
- setPreferences(bundle) {
36
- this.preferences._setValues((0, PreferencesFacade_1.buildFrozenSnapshot)(bundle));
37
- // Fire listeners after the new snapshot is in place so they see the
38
- // fresh values on first read. Errors in one listener don't prevent
39
- // the others from running.
40
- for (const cb of this.preferenceChangeListeners) {
41
- try {
42
- cb();
43
- }
44
- catch (err) {
45
- console.error('[ExtensionContext] onPreferencesChanged listener threw:', err);
46
- }
47
- }
1
+ import { LogServiceProxy, NotificationServiceProxy, ClipboardHistoryServiceProxy, ExtensionManagerProxy, CommandServiceProxy, ActionServiceProxy, NetworkServiceProxy, SettingsServiceProxy, StatusBarServiceProxy, EntitlementServiceProxy, StorageServiceProxy, FeedbackServiceProxy, SelectionServiceProxy, ShellServiceProxy, CacheServiceProxy, ApplicationServiceProxy, } from "./services";
2
+ import { AIServiceProxy } from './services/AIServiceProxy';
3
+ import { OAuthServiceProxy } from './services/OAuthServiceProxy';
4
+ import { FileManagerServiceProxy } from './services/FileManagerServiceProxy';
5
+ import { InteropServiceProxy } from './services/InteropServiceProxy';
6
+ import { WindowManagementServiceProxy } from './services/WindowManagementService';
7
+ import { PowerServiceProxy } from './services/PowerServiceProxy';
8
+ import { SystemEventsServiceProxy } from './services/SystemEventsServiceProxy';
9
+ import { TimerServiceProxy } from './services/TimerServiceProxy';
10
+ import { FileSystemWatcherServiceProxy } from './services/FileSystemWatcherService';
11
+ import { ExtensionStateProxy } from './services/ExtensionStateProxy';
12
+ import { extensionRpc } from './services/ExtensionRpc';
13
+ export { PreferencesFacade } from './PreferencesFacade';
14
+ import { setupFocusTracking } from './lib/focusTracker';
15
+ import { setupThemeInjection } from './lib/themeInjector';
16
+ export { injectThemeVariables, injectFontFaceCSS } from './lib/themeInjector';
17
+ import { ExtensionContextCore } from './ExtensionContextCore';
18
+ export { ExtensionContextCore } from './ExtensionContextCore';
19
+ function buildFullProxyBag() {
20
+ return {
21
+ log: new LogServiceProxy(),
22
+ notifications: new NotificationServiceProxy(),
23
+ clipboard: new ClipboardHistoryServiceProxy(),
24
+ extensions: new ExtensionManagerProxy(),
25
+ commands: new CommandServiceProxy(),
26
+ actions: new ActionServiceProxy(),
27
+ network: new NetworkServiceProxy(),
28
+ settings: new SettingsServiceProxy(),
29
+ statusBar: new StatusBarServiceProxy(),
30
+ entitlements: new EntitlementServiceProxy(),
31
+ storage: new StorageServiceProxy(),
32
+ feedback: new FeedbackServiceProxy(),
33
+ selection: new SelectionServiceProxy(),
34
+ ai: new AIServiceProxy(),
35
+ oauth: new OAuthServiceProxy(),
36
+ shell: new ShellServiceProxy(),
37
+ fs: new FileManagerServiceProxy(),
38
+ interop: new InteropServiceProxy(),
39
+ cache: new CacheServiceProxy(),
40
+ application: new ApplicationServiceProxy(),
41
+ window: new WindowManagementServiceProxy(),
42
+ power: new PowerServiceProxy(),
43
+ systemEvents: new SystemEventsServiceProxy(),
44
+ timers: new TimerServiceProxy(),
45
+ fsWatcher: new FileSystemWatcherServiceProxy(),
46
+ state: new ExtensionStateProxy(),
47
+ };
48
+ }
49
+ /**
50
+ * Full-surface ExtensionContext. Backs:
51
+ * - Tier 1 launcher built-in features (type-only reference).
52
+ * - `asyar-sdk/view` entry point (UI-capable extensions).
53
+ *
54
+ * For worker-context extensions, see `asyar-sdk/worker` — it exports a
55
+ * narrower ExtensionContext without DOM-dependent proxies.
56
+ */
57
+ export class ExtensionContext extends ExtensionContextCore {
58
+ constructor() {
59
+ super({ role: 'view', proxies: buildFullProxyBag() });
60
+ setupFocusTracking();
61
+ setupThemeInjection();
62
+ // View-side RPC plumbing: install the reply-push listener once per
63
+ // ExtensionContext construction, and wire a `pagehide` handler that
64
+ // drops every pending reply so the next mount sees no zombie state.
65
+ // The view-side ExtensionStateProxy's pagehide auto-unsubscribe is
66
+ // installed alongside so every active subscription is torn down in
67
+ // the same cleanup pass.
68
+ extensionRpc.installViewMessageListener();
69
+ extensionRpc.installViewAutoCleanup();
70
+ const stateProxy = this.proxies.state;
71
+ stateProxy === null || stateProxy === void 0 ? void 0 : stateProxy.installViewAutoUnsubscribe();
48
72
  }
49
73
  /**
50
- * Subscribe to preference change notifications. Returns an unsubscribe
51
- * function. The callback fires *after* `context.preferences` has been
52
- * replaced with a new frozen snapshot — re-read values inside the
53
- * callback, do not capture them from the enclosing scope.
54
- *
55
- * Typical use: an extension that caches a preference value at
56
- * `initialize()` time (e.g. to feed a timer engine's internal state)
57
- * uses this to recompute when the user edits the setting.
74
+ * View-side RPC entry. Sends a request into this extension's worker and
75
+ * awaits the worker handler's reply. Default 5s timeout, overridable via
76
+ * `opts.timeoutMs`. See `ExtensionRpc.request` for the AbortSignal +
77
+ * stale-reply contract.
58
78
  */
59
- onPreferencesChanged(callback) {
60
- this.preferenceChangeListeners.push(callback);
61
- return () => {
62
- this.preferenceChangeListeners = this.preferenceChangeListeners.filter((l) => l !== callback);
63
- };
79
+ request(id, payload, opts) {
80
+ return extensionRpc.request(id, payload, opts);
64
81
  }
65
- constructor() {
66
- this.extensionId = "";
67
- this.preferences = new PreferencesFacade_1.PreferencesFacade();
68
- /**
69
- * Listeners notified *after* `setPreferences` installs a new frozen
70
- * snapshot. Callbacks take no arguments and must re-read fresh values
71
- * from `context.preferences.values` — the snapshot is already in place
72
- * when they fire. This is a read-only notification, not a live getter:
73
- * extensions that cache preference values at boot subscribe here to
74
- * recompute when the user edits their settings.
75
- */
76
- this.preferenceChangeListeners = [];
77
- // The local registry is now strictly for proxies. Keys are canonical
78
- // Namespace values — the same identifiers used on the wire — so a typo or
79
- // class-name-shaped key fails to compile.
80
- this.proxies = {
81
- log: new services_1.LogServiceProxy(),
82
- notifications: new services_1.NotificationServiceProxy(),
83
- clipboard: new services_1.ClipboardHistoryServiceProxy(),
84
- extensions: new services_1.ExtensionManagerProxy(),
85
- commands: new services_1.CommandServiceProxy(),
86
- actions: new services_1.ActionServiceProxy(),
87
- network: new services_1.NetworkServiceProxy(),
88
- settings: new services_1.SettingsServiceProxy(),
89
- statusBar: new services_1.StatusBarServiceProxy(),
90
- entitlements: new services_1.EntitlementServiceProxy(),
91
- storage: new services_1.StorageServiceProxy(),
92
- feedback: new services_1.FeedbackServiceProxy(),
93
- selection: new services_1.SelectionServiceProxy(),
94
- ai: new AIServiceProxy_1.AIServiceProxy(),
95
- oauth: new OAuthServiceProxy_1.OAuthServiceProxy(),
96
- shell: new services_1.ShellServiceProxy(),
97
- fs: new FileManagerServiceProxy_1.FileManagerServiceProxy(),
98
- interop: new InteropServiceProxy_1.InteropServiceProxy(),
99
- cache: new services_1.CacheServiceProxy(),
100
- application: new services_1.ApplicationServiceProxy(),
101
- window: new WindowManagementService_1.WindowManagementServiceProxy(),
102
- power: new PowerServiceProxy_1.PowerServiceProxy(),
103
- systemEvents: new SystemEventsServiceProxy_1.SystemEventsServiceProxy(),
104
- timers: new TimerServiceProxy_1.TimerServiceProxy(),
105
- fsWatcher: new FileSystemWatcherService_1.FileSystemWatcherServiceProxy(),
106
- };
107
- (0, focusTracker_1.setupFocusTracking)();
108
- (0, themeInjector_1.setupThemeInjection)();
82
+ notifyRpcIfAvailable(id) {
83
+ extensionRpc.setExtensionId(id);
109
84
  }
110
- // Look up a proxy by its canonical namespace.
111
- getService(namespace) {
112
- const service = this.proxies[namespace];
113
- if (!service) {
114
- throw new Error(`Service "${namespace}" not registered`);
115
- }
116
- return service;
117
- }
118
- setExtensionId(id) {
119
- this.extensionId = id;
120
- // Inject into proxies if they support it
121
- for (const key of Object.keys(this.proxies)) {
122
- const svc = this.proxies[key];
123
- if (svc && typeof svc.setExtensionId === 'function') {
124
- svc.setExtensionId(id);
125
- }
126
- }
127
- // The preferences facade composes its own proxy privately since it's
128
- // no longer in the proxies bag; push the id into it explicitly.
129
- this.preferences._setExtensionId(id);
130
- // The ExtensionBridge singleton has its own internal LogServiceProxy that
131
- // is constructed before any extension context exists, so it never goes
132
- // through the proxies-bag patching above. Push the extensionId to it now
133
- // so its `Registered action: ...` and similar debug logs don't get
134
- // rejected by the host IPC router for missing extensionId.
135
- //
136
- // We also self-register this context as the active context for this
137
- // extension id. Tier 2 iframes that bootstrap by creating their own
138
- // `ExtensionContext` (rather than going through
139
- // `bridge.initializeExtensions()`) otherwise never appear in the
140
- // bridge's `activeContexts` map, and `asyar:event:preferences:set-all`
141
- // can't find the live context to call `setPreferences` on.
85
+ notifyBridgeIfAvailable(id) {
142
86
  try {
143
- ExtensionBridge_1.extensionBridge.setExtensionId(id);
144
- ExtensionBridge_1.extensionBridge.registerActiveContext(id, this);
87
+ extensionBridge.setExtensionId(id);
88
+ extensionBridge.registerActiveContext(id, this);
145
89
  }
146
90
  catch (_a) {
147
- // ExtensionBridge import is at the bottom of this file (circular avoidance);
148
- // if for some reason it's not yet available, silently skip — the failure
149
- // mode is just the pre-existing log spam, not a hard error.
150
- }
151
- // Notify host the iframe is ready for mailbox drain. Host readiness
152
- // listener calls iframe_ready_ack on receipt.
153
- try {
154
- if (typeof window !== 'undefined' &&
155
- window.parent &&
156
- window.parent !== window &&
157
- typeof window.parent.postMessage === 'function') {
158
- window.parent.postMessage({ type: 'asyar:extension:loaded', extensionId: id }, '*');
159
- }
160
- }
161
- catch (_b) {
162
- // best-effort — host will time out and strike if we can't signal.
163
- }
164
- }
165
- registerAction(action) {
166
- if (!this.extensionId) {
167
- console.error("Cannot register action: Extension ID not set");
168
- return;
169
- }
170
- const actionService = this.getService('actions');
171
- actionService.registerAction(action);
172
- }
173
- unregisterAction(actionId) {
174
- const actionService = this.getService('actions');
175
- actionService.unregisterAction(actionId);
176
- }
177
- registerCommand(commandId, handler) {
178
- if (!this.extensionId) {
179
- console.error("Cannot register command: Extension ID not set");
180
- return;
181
- }
182
- const fullCommandId = `${this.extensionId}.${commandId}`;
183
- const commandService = this.getService('commands');
184
- commandService.registerCommand(fullCommandId, handler, this.extensionId);
185
- }
186
- unregisterCommand(commandId) {
187
- const fullCommandId = `${this.extensionId}.${commandId}`;
188
- const commandService = this.getService('commands');
189
- commandService.unregisterCommand(fullCommandId);
190
- }
191
- /**
192
- * Build an `asyar://extensions/{extensionId}/{commandId}?args` deep link URL
193
- * for a command owned by this extension. Pure string formatting — no IPC.
194
- *
195
- * Extensions can embed the returned URL in notifications, clipboard output,
196
- * generated documents, or pass it to other apps.
197
- */
198
- createDeeplink(commandId, args) {
199
- if (!this.extensionId) {
200
- throw new Error('Cannot create deeplink: Extension ID not set');
201
- }
202
- let url = `asyar://extensions/${encodeURIComponent(this.extensionId)}/${encodeURIComponent(commandId)}`;
203
- if (args && Object.keys(args).length > 0) {
204
- const params = new URLSearchParams(args).toString();
205
- url += `?${params}`;
206
- }
207
- return url;
208
- }
209
- registerSyncProvider(provider) {
210
- if (!this.extensionId) {
211
- console.error("Cannot register sync provider: Extension ID not set");
212
- return;
91
+ // bridge module not yet available (circular import startup); skip.
213
92
  }
214
- (0, syncProviderBridge_1.registerSyncProvider)(this.extensionId, provider);
215
93
  }
216
94
  }
217
- exports.ExtensionContext = ExtensionContext;
218
95
  // Import at the end to avoid circular dependencies
219
- const ExtensionBridge_1 = require("./ExtensionBridge");
96
+ import { extensionBridge } from "./ExtensionBridge";
220
97
  //# sourceMappingURL=ExtensionContext.js.map
@@ -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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"}
@@ -1,129 +1,154 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
3
10
  /** @vitest-environment jsdom */
4
- const vitest_1 = require("vitest");
5
- const { mockInvoke } = vitest_1.vi.hoisted(() => ({
6
- mockInvoke: vitest_1.vi.fn().mockResolvedValue(undefined),
11
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
12
+ const { mockInvoke } = vi.hoisted(() => ({
13
+ mockInvoke: vi.fn().mockResolvedValue(undefined),
7
14
  }));
8
- vitest_1.vi.mock('./ipc/MessageBroker', () => ({
15
+ vi.mock('./ipc/MessageBroker', () => ({
9
16
  messageBroker: {
10
17
  invoke: mockInvoke,
11
- on: vitest_1.vi.fn(),
12
- off: vitest_1.vi.fn(),
18
+ on: vi.fn(),
19
+ off: vi.fn(),
13
20
  },
14
21
  }));
15
- const ExtensionContext_1 = require("./ExtensionContext");
16
- (0, vitest_1.beforeEach)(() => {
22
+ import { ExtensionContext } from './ExtensionContext';
23
+ beforeEach(() => {
17
24
  mockInvoke.mockReset();
18
25
  mockInvoke.mockResolvedValue(undefined);
19
26
  });
20
- (0, vitest_1.describe)('ExtensionContext preferences snapshot', () => {
21
- (0, vitest_1.it)('starts with an empty frozen snapshot at .values', () => {
22
- const ctx = new ExtensionContext_1.ExtensionContext();
23
- (0, vitest_1.expect)(ctx.preferences.values.commands).toBeDefined();
24
- (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.values)).toBe(true);
25
- (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.values.commands)).toBe(true);
27
+ describe('ExtensionContext preferences snapshot', () => {
28
+ it('starts with an empty frozen snapshot at .values', () => {
29
+ const ctx = new ExtensionContext();
30
+ expect(ctx.preferences.values.commands).toBeDefined();
31
+ expect(Object.isFrozen(ctx.preferences.values)).toBe(true);
32
+ expect(Object.isFrozen(ctx.preferences.values.commands)).toBe(true);
26
33
  });
27
- (0, vitest_1.it)('setPreferences installs a frozen snapshot at every level of .values', () => {
28
- const ctx = new ExtensionContext_1.ExtensionContext();
34
+ it('setPreferences installs a frozen snapshot at every level of .values', () => {
35
+ const ctx = new ExtensionContext();
29
36
  ctx.setPreferences({
30
37
  extension: { apiKey: 'abc', units: 'metric' },
31
38
  commands: { forecast: { days: 5 } },
32
39
  });
33
- (0, vitest_1.expect)(ctx.preferences.values.apiKey).toBe('abc');
34
- (0, vitest_1.expect)(ctx.preferences.values.units).toBe('metric');
35
- (0, vitest_1.expect)(ctx.preferences.values.commands.forecast.days).toBe(5);
36
- (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.values)).toBe(true);
37
- (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.values.commands)).toBe(true);
38
- (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.values.commands.forecast)).toBe(true);
40
+ expect(ctx.preferences.values.apiKey).toBe('abc');
41
+ expect(ctx.preferences.values.units).toBe('metric');
42
+ expect(ctx.preferences.values.commands.forecast.days).toBe(5);
43
+ expect(Object.isFrozen(ctx.preferences.values)).toBe(true);
44
+ expect(Object.isFrozen(ctx.preferences.values.commands)).toBe(true);
45
+ expect(Object.isFrozen(ctx.preferences.values.commands.forecast)).toBe(true);
39
46
  });
40
- (0, vitest_1.it)('direct mutation of the snapshot is rejected', () => {
47
+ it('direct mutation of the snapshot is rejected', () => {
41
48
  'use strict';
42
- const ctx = new ExtensionContext_1.ExtensionContext();
49
+ const ctx = new ExtensionContext();
43
50
  ctx.setPreferences({ extension: { x: 1 }, commands: {} });
44
- (0, vitest_1.expect)(() => {
51
+ expect(() => {
45
52
  ctx.preferences.values.x = 999;
46
53
  }).toThrow();
47
54
  });
48
- (0, vitest_1.it)('setPreferences tolerates an absent commands field', () => {
49
- const ctx = new ExtensionContext_1.ExtensionContext();
55
+ it('setPreferences tolerates an absent commands field', () => {
56
+ const ctx = new ExtensionContext();
50
57
  ctx.setPreferences({ extension: { a: 1 }, commands: undefined });
51
- (0, vitest_1.expect)(ctx.preferences.values.a).toBe(1);
52
- (0, vitest_1.expect)(ctx.preferences.values.commands).toEqual({});
58
+ expect(ctx.preferences.values.a).toBe(1);
59
+ expect(ctx.preferences.values.commands).toEqual({});
53
60
  });
54
61
  });
55
- (0, vitest_1.describe)('ExtensionContext onPreferencesChanged', () => {
56
- (0, vitest_1.it)('fires registered listeners after setPreferences', () => {
57
- const ctx = new ExtensionContext_1.ExtensionContext();
58
- const listener = vitest_1.vi.fn();
62
+ describe('ExtensionContext onPreferencesChanged', () => {
63
+ it('fires registered listeners after setPreferences', () => {
64
+ const ctx = new ExtensionContext();
65
+ const listener = vi.fn();
59
66
  ctx.onPreferencesChanged(listener);
60
67
  ctx.setPreferences({ extension: { x: 1 }, commands: {} });
61
- (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
68
+ expect(listener).toHaveBeenCalledTimes(1);
62
69
  ctx.setPreferences({ extension: { x: 2 }, commands: {} });
63
- (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(2);
70
+ expect(listener).toHaveBeenCalledTimes(2);
64
71
  });
65
- (0, vitest_1.it)('listener sees the new snapshot at .values when it fires', () => {
66
- const ctx = new ExtensionContext_1.ExtensionContext();
72
+ it('listener sees the new snapshot at .values when it fires', () => {
73
+ const ctx = new ExtensionContext();
67
74
  let observedValue;
68
75
  ctx.onPreferencesChanged(() => {
69
76
  observedValue = ctx.preferences.values.focusMinutes;
70
77
  });
71
78
  ctx.setPreferences({ extension: { focusMinutes: 25 }, commands: {} });
72
- (0, vitest_1.expect)(observedValue).toBe(25);
79
+ expect(observedValue).toBe(25);
73
80
  ctx.setPreferences({ extension: { focusMinutes: 50 }, commands: {} });
74
- (0, vitest_1.expect)(observedValue).toBe(50);
81
+ expect(observedValue).toBe(50);
75
82
  });
76
- (0, vitest_1.it)('unsubscribe function removes the listener', () => {
77
- const ctx = new ExtensionContext_1.ExtensionContext();
78
- const listener = vitest_1.vi.fn();
83
+ it('unsubscribe function removes the listener', () => {
84
+ const ctx = new ExtensionContext();
85
+ const listener = vi.fn();
79
86
  const unsubscribe = ctx.onPreferencesChanged(listener);
80
87
  ctx.setPreferences({ extension: {}, commands: {} });
81
- (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
88
+ expect(listener).toHaveBeenCalledTimes(1);
82
89
  unsubscribe();
83
90
  ctx.setPreferences({ extension: {}, commands: {} });
84
- (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
91
+ expect(listener).toHaveBeenCalledTimes(1);
85
92
  });
86
- (0, vitest_1.it)('one listener throwing does not prevent others from running', () => {
87
- const ctx = new ExtensionContext_1.ExtensionContext();
88
- const good1 = vitest_1.vi.fn();
89
- const bad = vitest_1.vi.fn(() => {
93
+ it('one listener throwing does not prevent others from running', () => {
94
+ const ctx = new ExtensionContext();
95
+ const good1 = vi.fn();
96
+ const bad = vi.fn(() => {
90
97
  throw new Error('boom');
91
98
  });
92
- const good2 = vitest_1.vi.fn();
93
- const errSpy = vitest_1.vi.spyOn(console, 'error').mockImplementation(() => { });
99
+ const good2 = vi.fn();
100
+ const errSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
94
101
  ctx.onPreferencesChanged(good1);
95
102
  ctx.onPreferencesChanged(bad);
96
103
  ctx.onPreferencesChanged(good2);
97
104
  ctx.setPreferences({ extension: {}, commands: {} });
98
- (0, vitest_1.expect)(good1).toHaveBeenCalled();
99
- (0, vitest_1.expect)(bad).toHaveBeenCalled();
100
- (0, vitest_1.expect)(good2).toHaveBeenCalled();
101
- (0, vitest_1.expect)(errSpy).toHaveBeenCalled();
105
+ expect(good1).toHaveBeenCalled();
106
+ expect(bad).toHaveBeenCalled();
107
+ expect(good2).toHaveBeenCalled();
108
+ expect(errSpy).toHaveBeenCalled();
102
109
  errSpy.mockRestore();
103
110
  });
104
- (0, vitest_1.it)('returns a stable unsubscribe even when called multiple times', () => {
105
- const ctx = new ExtensionContext_1.ExtensionContext();
106
- const listener = vitest_1.vi.fn();
111
+ it('returns a stable unsubscribe even when called multiple times', () => {
112
+ const ctx = new ExtensionContext();
113
+ const listener = vi.fn();
107
114
  const unsubscribe = ctx.onPreferencesChanged(listener);
108
115
  unsubscribe();
109
116
  unsubscribe();
110
117
  ctx.setPreferences({ extension: {}, commands: {} });
111
- (0, vitest_1.expect)(listener).not.toHaveBeenCalled();
118
+ expect(listener).not.toHaveBeenCalled();
112
119
  });
113
120
  });
114
- (0, vitest_1.describe)('ExtensionContext.setExtensionId', () => {
121
+ describe('ExtensionContext.setExtensionId', () => {
115
122
  let parentPostMessage;
116
- (0, vitest_1.beforeEach)(() => {
117
- parentPostMessage = vitest_1.vi.fn();
123
+ beforeEach(() => {
124
+ parentPostMessage = vi.fn();
118
125
  Object.defineProperty(window, 'parent', {
119
126
  value: { postMessage: parentPostMessage },
120
127
  configurable: true,
121
128
  });
122
129
  });
123
- (0, vitest_1.it)('emits asyar:extension:loaded to window.parent with the extensionId', () => {
124
- const ctx = new ExtensionContext_1.ExtensionContext();
130
+ it('emits asyar:extension:loaded to window.parent with extensionId + role', () => {
131
+ const ctx = new ExtensionContext();
125
132
  ctx.setExtensionId('ext.test');
126
- (0, vitest_1.expect)(parentPostMessage).toHaveBeenCalledWith({ type: 'asyar:extension:loaded', extensionId: 'ext.test' }, '*');
133
+ expect(parentPostMessage).toHaveBeenCalledWith(expect.objectContaining({
134
+ type: 'asyar:extension:loaded',
135
+ extensionId: 'ext.test',
136
+ role: expect.stringMatching(/^(worker|view)$/),
137
+ }), '*');
127
138
  });
139
+ it('patches extensionRpc singleton via notifyRpcIfAvailable hook (regression: sdk-playground rpc rejections due to missing extensionId)', () => __awaiter(void 0, void 0, void 0, function* () {
140
+ // extensionRpc is a module-level singleton outside the proxies bag,
141
+ // so the proxy-bag iteration in ExtensionContextCore.setExtensionId
142
+ // never visits it. Before the fix, its broker stayed unpatched and
143
+ // every context.request(...) sent state:rpcRequest with no
144
+ // extensionId — rejected by the launcher IPC router. The view-side
145
+ // ExtensionContext now overrides notifyRpcIfAvailable to push the
146
+ // id through extensionRpc.setExtensionId.
147
+ const { extensionRpc } = yield import('./services/ExtensionRpc');
148
+ const rpcSetIdSpy = vi.spyOn(extensionRpc, 'setExtensionId');
149
+ const ctx = new ExtensionContext();
150
+ ctx.setExtensionId('ext.rpc-check');
151
+ expect(rpcSetIdSpy).toHaveBeenCalledWith('ext.rpc-check');
152
+ }));
128
153
  });
129
154
  //# sourceMappingURL=ExtensionContext.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionContext.test.js","sourceRoot":"","sources":["../src/ExtensionContext.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExtensionContext.test.js","sourceRoot":"","sources":["../src/ExtensionContext.test.ts"],"names":[],"mappings":"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"}