@edenapp/sdk 0.4.1 → 0.5.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/Eden.d.ts +6 -1
- package/dist/Eden.d.ts.map +1 -1
- package/dist/Eden.js +81 -33
- package/dist/Eden.js.map +1 -1
- package/dist/SystemHandler.d.ts +4 -3
- package/dist/SystemHandler.d.ts.map +1 -1
- package/dist/SystemHandler.js +7 -3
- package/dist/SystemHandler.js.map +1 -1
- package/dist/app-frame/frame-injector.js +6 -5
- package/dist/app-frame/frame-injector.js.map +4 -4
- package/dist/app-frame/frame.css +168 -131
- package/dist/app-runtime/app-preload.js +2 -1
- package/dist/app-runtime/app-preload.js.map +4 -4
- package/dist/app-runtime/backend-preload.js +3 -1
- package/dist/app-runtime/backend-preload.js.map +4 -4
- package/dist/appbus/AppChannelHandler.d.ts +1 -1
- package/dist/appbus/AppChannelHandler.d.ts.map +1 -1
- package/dist/appbus/AppChannelHandler.js.map +1 -1
- package/dist/appbus/AppChannelManager.d.ts +1 -1
- package/dist/appbus/AppChannelManager.d.ts.map +1 -1
- package/dist/appbus/AppChannelManager.js +9 -8
- package/dist/appbus/AppChannelManager.js.map +1 -1
- package/dist/appearance/AppearanceHandler.d.ts +17 -0
- package/dist/appearance/AppearanceHandler.d.ts.map +1 -0
- package/dist/appearance/AppearanceHandler.js +53 -0
- package/dist/appearance/AppearanceHandler.js.map +1 -0
- package/dist/appearance/AppearanceManager.d.ts +22 -0
- package/dist/appearance/AppearanceManager.d.ts.map +1 -0
- package/dist/appearance/AppearanceManager.js +138 -0
- package/dist/appearance/AppearanceManager.js.map +1 -0
- package/dist/apps/prebuilt/com.eden.calculator/dist/assets/index-B2YDTw7g.js +1 -0
- package/dist/apps/prebuilt/com.eden.calculator/dist/assets/index-COlV85zB.css +1 -0
- package/dist/apps/prebuilt/com.eden.calculator/dist/index.html +13 -0
- package/dist/apps/prebuilt/com.eden.calculator/index.html +12 -0
- package/dist/apps/prebuilt/com.eden.calculator/manifest.json +77 -0
- package/dist/apps/prebuilt/com.eden.calculator/package.json +21 -0
- package/dist/apps/prebuilt/com.eden.context-menu/dist/assets/index-DUrqfNSi.js +1 -0
- package/dist/apps/prebuilt/com.eden.context-menu/dist/assets/index-PflHQ4jS.css +1 -0
- package/dist/apps/prebuilt/com.eden.context-menu/dist/index.html +22 -0
- package/dist/apps/prebuilt/com.eden.context-menu/index.html +22 -0
- package/dist/apps/prebuilt/com.eden.context-menu/manifest.json +29 -0
- package/dist/apps/prebuilt/com.eden.context-menu/package.json +15 -0
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/{editor.main-DAsyVptA.js → editor.main-ABqnr99W.js} +3 -3
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/{html-CTBLac3N.js → html-D6jh0yEa.js} +1 -1
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/index-DAFnO6GB.js +2 -0
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/index-eIZ8vGeP.css +1 -0
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/{javascript-DJ6Ya8pi.js → javascript-NUFioPTH.js} +1 -1
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/{jsonMode-BA0kYRDI.js → jsonMode-BprisSQ5.js} +1 -1
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/{typescript-C7BsmV0J.js → typescript-qUrrOs_e.js} +1 -1
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/{yaml-QL02lm_B.js → yaml-Xk-V_ilV.js} +1 -1
- package/dist/apps/prebuilt/com.eden.editor/dist/index.html +2 -2
- package/dist/apps/prebuilt/com.eden.editor/manifest.json +4 -1
- package/dist/apps/prebuilt/com.eden.editor/package.json +2 -0
- package/dist/apps/prebuilt/com.eden.eveshell/dist/assets/index-BpW2uLSC.css +1 -0
- package/dist/apps/prebuilt/com.eden.eveshell/dist/assets/index-CEfffVHu.js +1 -0
- package/dist/apps/prebuilt/com.eden.eveshell/dist/index.html +2 -2
- package/dist/apps/prebuilt/com.eden.eveshell/manifest.json +1 -1
- package/dist/apps/prebuilt/com.eden.eveshell/package.json +3 -3
- package/dist/apps/prebuilt/com.eden.example.appbus.client-a/app.js +106 -94
- package/dist/apps/prebuilt/com.eden.example.appbus.client-a/manifest.json +1 -4
- package/dist/apps/prebuilt/com.eden.example.appbus.client-b/app.js +52 -47
- package/dist/apps/prebuilt/com.eden.example.appbus.client-b/manifest.json +1 -4
- package/dist/apps/prebuilt/com.eden.example.appbus.hub/backend.js +81 -71
- package/dist/apps/prebuilt/com.eden.example.appbus.hub/manifest.json +1 -4
- package/dist/apps/prebuilt/com.eden.example.appbus.isolated/app.js +42 -40
- package/dist/apps/prebuilt/com.eden.example.appbus.isolated/manifest.json +1 -4
- package/dist/apps/prebuilt/com.eden.example.hello/README.md +12 -1
- package/dist/apps/prebuilt/com.eden.example.hello/backend/dist/backend.js +9 -1
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/.bin/tsc +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/.bin/tsserver +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/AppManifest.d.ts +98 -10
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/CHANGELOG.md +15 -0
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/ContextMenu.d.ts +186 -0
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/EdenConfig.d.ts +10 -2
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/EdenSeedConfig.d.ts +24 -0
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/User.d.ts +20 -0
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/commands.generated.d.ts +231 -23
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/events.generated.d.ts +38 -4
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/global.d.ts +2 -0
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/index.d.ts +16 -0
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/ipc/appbus.d.ts +9 -9
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/ipc/edenapi.d.ts +3 -3
- package/dist/apps/prebuilt/com.eden.example.hello/backend/node_modules/@edenapp/types/package.json +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/backend/package.json +1 -0
- package/dist/apps/prebuilt/com.eden.example.hello/backend/src/backend.ts +11 -1
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/.bin/tsc +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/.bin/tsserver +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/.bin/vite +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/AppManifest.d.ts +98 -10
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/CHANGELOG.md +15 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/ContextMenu.d.ts +186 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/EdenConfig.d.ts +10 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/EdenSeedConfig.d.ts +24 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/User.d.ts +20 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/commands.generated.d.ts +231 -23
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/events.generated.d.ts +38 -4
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/global.d.ts +2 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/index.d.ts +16 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/ipc/appbus.d.ts +9 -9
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/ipc/edenapi.d.ts +3 -3
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/@edenapp/types/package.json +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/vite/node_modules/.bin/esbuild +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/vite/node_modules/.bin/rollup +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/node_modules/vite/node_modules/.bin/yaml +21 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/package.json +1 -0
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/src/App.ts +3 -3
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/styles.css +1 -2
- package/dist/apps/prebuilt/com.eden.example.hello/frontend/vite.config.mts +2 -2
- package/dist/apps/prebuilt/com.eden.example.hello/manifest.json +7 -4
- package/dist/apps/prebuilt/com.eden.example.showcase/app.js +70 -67
- package/dist/apps/prebuilt/com.eden.example.showcase/index.html +4 -19
- package/dist/apps/prebuilt/com.eden.example.showcase/styles.css +8 -5
- package/dist/apps/prebuilt/com.eden.files/dist/assets/index-CoRuEUrw.js +1 -0
- package/dist/apps/prebuilt/com.eden.files/dist/assets/index-DdZETXB-.css +1 -0
- package/dist/apps/prebuilt/com.eden.files/dist/index.html +2 -2
- package/dist/apps/prebuilt/com.eden.files/manifest.json +4 -1
- package/dist/apps/prebuilt/com.eden.files/package.json +4 -2
- package/dist/apps/prebuilt/com.eden.installer/dist/assets/index-C0CX3XJo.css +1 -0
- package/dist/apps/prebuilt/com.eden.installer/dist/assets/index-SmzSXaXF.js +1 -0
- package/dist/apps/prebuilt/com.eden.installer/dist/index.html +2 -2
- package/dist/apps/prebuilt/com.eden.installer/icon.svg +34 -0
- package/dist/apps/prebuilt/com.eden.installer/manifest.json +6 -5
- package/dist/apps/prebuilt/com.eden.installer/package.json +2 -1
- package/dist/apps/prebuilt/com.eden.login/dist/assets/index-AGh8-3Ui.css +1 -0
- package/dist/apps/prebuilt/com.eden.login/dist/assets/index-DyI95N2f.js +1 -0
- package/dist/apps/prebuilt/com.eden.login/dist/index.html +13 -0
- package/dist/apps/prebuilt/com.eden.login/index.html +12 -0
- package/dist/apps/prebuilt/com.eden.login/manifest.json +33 -0
- package/dist/apps/prebuilt/com.eden.login/package.json +19 -0
- package/dist/apps/prebuilt/com.eden.settings/dist/assets/index-CHDYDKgf.js +1 -0
- package/dist/apps/prebuilt/com.eden.settings/dist/assets/index-Cx4mEI9R.css +1 -0
- package/dist/apps/prebuilt/com.eden.settings/dist/index.html +2 -2
- package/dist/apps/prebuilt/com.eden.settings/manifest.json +9 -2
- package/dist/apps/prebuilt/com.eden.settings/package.json +1 -0
- package/dist/apps/prebuilt/com.eden.toaster/manifest.json +1 -1
- package/dist/apps/prebuilt/com.eden.toaster/package.json +1 -1
- package/dist/apps/prebuilt/com.eden.users/dist/assets/index-CmyGIH5F.js +3 -0
- package/dist/apps/prebuilt/com.eden.users/dist/assets/index-cvRxUY_n.css +1 -0
- package/dist/apps/prebuilt/com.eden.users/dist/index.html +13 -0
- package/dist/apps/prebuilt/com.eden.users/icon.svg +24 -0
- package/dist/apps/prebuilt/com.eden.users/index.html +12 -0
- package/dist/apps/prebuilt/com.eden.users/manifest.json +31 -0
- package/dist/apps/prebuilt/com.eden.users/package.json +22 -0
- package/dist/apps/prebuilt/com.eden.webbrowser/dist/index.html +138 -0
- package/dist/apps/prebuilt/com.eden.webbrowser/index.html +13 -16
- package/dist/apps/prebuilt/com.eden.webbrowser/manifest.json +4 -1
- package/dist/apps/prebuilt/com.eden.webbrowser/package.json +1 -0
- package/dist/context-menu/ContextMenuHandler.d.ts +31 -0
- package/dist/context-menu/ContextMenuHandler.d.ts.map +1 -0
- package/dist/context-menu/ContextMenuHandler.js +70 -0
- package/dist/context-menu/ContextMenuHandler.js.map +1 -0
- package/dist/context-menu/ContextMenuManager.d.ts +49 -0
- package/dist/context-menu/ContextMenuManager.d.ts.map +1 -0
- package/dist/context-menu/ContextMenuManager.js +180 -0
- package/dist/context-menu/ContextMenuManager.js.map +1 -0
- package/dist/context-menu/index.d.ts +3 -0
- package/dist/context-menu/index.d.ts.map +1 -0
- package/dist/context-menu/index.js +19 -0
- package/dist/context-menu/index.js.map +1 -0
- package/dist/db/DbManager.d.ts.map +1 -1
- package/dist/db/DbManager.js +8 -7
- package/dist/db/DbManager.js.map +1 -1
- package/dist/db/index.d.ts +1 -1
- package/dist/db/index.js +3 -3
- package/dist/edencss/eden-tokens.css +1 -1
- package/dist/edencss/eden.css +1 -1
- package/dist/file-open/FileOpenHandler.d.ts +2 -2
- package/dist/file-open/FileOpenHandler.d.ts.map +1 -1
- package/dist/file-open/FileOpenHandler.js +1 -2
- package/dist/file-open/FileOpenHandler.js.map +1 -1
- package/dist/file-open/FileOpenManager.d.ts +7 -3
- package/dist/file-open/FileOpenManager.d.ts.map +1 -1
- package/dist/file-open/FileOpenManager.js +17 -7
- package/dist/file-open/FileOpenManager.js.map +1 -1
- package/dist/file-open/index.d.ts +1 -1
- package/dist/file-open/index.js +3 -3
- package/dist/filesystem/FilesystemHandler.d.ts +1 -1
- package/dist/filesystem/FilesystemHandler.d.ts.map +1 -1
- package/dist/filesystem/FilesystemHandler.js.map +1 -1
- package/dist/filesystem/FilesystemManager.d.ts +1 -1
- package/dist/filesystem/FilesystemManager.d.ts.map +1 -1
- package/dist/filesystem/FilesystemManager.js +5 -4
- package/dist/filesystem/FilesystemManager.js.map +1 -1
- package/dist/foundation/foundation-preload.js +73 -7
- package/dist/foundation/foundation.css +69 -26
- package/dist/foundation/foundation.html +1 -1
- package/dist/foundation/foundation.js +165 -54
- package/dist/generated/runtime.d.ts +1 -1
- package/dist/generated/runtime.d.ts.map +1 -1
- package/dist/generated/runtime.js +30 -1
- package/dist/generated/runtime.js.map +1 -1
- package/dist/grants/GrantPresetList.d.ts +12 -0
- package/dist/grants/GrantPresetList.d.ts.map +1 -0
- package/dist/grants/GrantPresetList.js +22 -0
- package/dist/grants/GrantPresetList.js.map +1 -0
- package/dist/grants/GrantPresets.d.ts +15 -0
- package/dist/grants/GrantPresets.d.ts.map +1 -0
- package/dist/grants/GrantPresets.js +60 -0
- package/dist/grants/GrantPresets.js.map +1 -0
- package/dist/grants/GrantPresets.test.d.ts +2 -0
- package/dist/grants/GrantPresets.test.d.ts.map +1 -0
- package/dist/grants/GrantPresets.test.js +63 -0
- package/dist/grants/GrantPresets.test.js.map +1 -0
- package/dist/hotreload-config.js +3 -3
- package/dist/i18n/I18nHandler.d.ts +14 -0
- package/dist/i18n/I18nHandler.d.ts.map +1 -0
- package/dist/i18n/I18nHandler.js +44 -0
- package/dist/i18n/I18nHandler.js.map +1 -0
- package/dist/i18n/I18nManager.d.ts +18 -0
- package/dist/i18n/I18nManager.d.ts.map +1 -0
- package/dist/i18n/I18nManager.js +65 -0
- package/dist/i18n/I18nManager.js.map +1 -0
- package/dist/i18n/locales/en.d.ts +27 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/en.js +30 -0
- package/dist/i18n/locales/en.js.map +1 -0
- package/dist/i18n/locales/pl.d.ts +27 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -0
- package/dist/i18n/locales/pl.js +30 -0
- package/dist/i18n/locales/pl.js.map +1 -0
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/ipc/CommandDecorators.d.ts +8 -2
- package/dist/ipc/CommandDecorators.d.ts.map +1 -1
- package/dist/ipc/CommandDecorators.js +12 -8
- package/dist/ipc/CommandDecorators.js.map +1 -1
- package/dist/ipc/CommandDecorators.test.d.ts +2 -0
- package/dist/ipc/CommandDecorators.test.d.ts.map +1 -0
- package/dist/ipc/CommandDecorators.test.js +41 -0
- package/dist/ipc/CommandDecorators.test.js.map +1 -0
- package/dist/ipc/CommandMetadata.d.ts +17 -0
- package/dist/ipc/CommandMetadata.d.ts.map +1 -0
- package/dist/ipc/CommandMetadata.js +45 -0
- package/dist/ipc/CommandMetadata.js.map +1 -0
- package/dist/ipc/CommandMetadata.test.d.ts +2 -0
- package/dist/ipc/CommandMetadata.test.d.ts.map +1 -0
- package/dist/ipc/CommandMetadata.test.js +35 -0
- package/dist/ipc/CommandMetadata.test.js.map +1 -0
- package/dist/ipc/CommandRegistry.d.ts +4 -16
- package/dist/ipc/CommandRegistry.d.ts.map +1 -1
- package/dist/ipc/CommandRegistry.js +33 -59
- package/dist/ipc/CommandRegistry.js.map +1 -1
- package/dist/ipc/CommandRegistry.test.d.ts +2 -0
- package/dist/ipc/CommandRegistry.test.d.ts.map +1 -0
- package/dist/ipc/CommandRegistry.test.js +92 -0
- package/dist/ipc/CommandRegistry.test.js.map +1 -0
- package/dist/ipc/EdenEmitter.d.ts +1 -1
- package/dist/ipc/EdenEmitter.d.ts.map +1 -1
- package/dist/ipc/EdenEmitter.js.map +1 -1
- package/dist/ipc/EdenEmitter.test.d.ts +2 -0
- package/dist/ipc/EdenEmitter.test.d.ts.map +1 -0
- package/dist/ipc/EdenEmitter.test.js +47 -0
- package/dist/ipc/EdenEmitter.test.js.map +1 -0
- package/dist/ipc/EventHandler.d.ts +4 -2
- package/dist/ipc/EventHandler.d.ts.map +1 -1
- package/dist/ipc/EventHandler.js +12 -9
- package/dist/ipc/EventHandler.js.map +1 -1
- package/dist/ipc/EventSubscriberManager.d.ts +13 -4
- package/dist/ipc/EventSubscriberManager.d.ts.map +1 -1
- package/dist/ipc/EventSubscriberManager.js +37 -7
- package/dist/ipc/EventSubscriberManager.js.map +1 -1
- package/dist/ipc/EventSubscriberManager.test.d.ts +2 -0
- package/dist/ipc/EventSubscriberManager.test.d.ts.map +1 -0
- package/dist/ipc/EventSubscriberManager.test.js +113 -0
- package/dist/ipc/EventSubscriberManager.test.js.map +1 -0
- package/dist/ipc/IPCBridge.d.ts +1 -1
- package/dist/ipc/IPCBridge.d.ts.map +1 -1
- package/dist/ipc/IPCBridge.js +15 -7
- package/dist/ipc/IPCBridge.js.map +1 -1
- package/dist/ipc/PermissionRegistry.d.ts +19 -13
- package/dist/ipc/PermissionRegistry.d.ts.map +1 -1
- package/dist/ipc/PermissionRegistry.js +66 -51
- package/dist/ipc/PermissionRegistry.js.map +1 -1
- package/dist/ipc/PermissionRegistry.test.d.ts +2 -0
- package/dist/ipc/PermissionRegistry.test.d.ts.map +1 -0
- package/dist/ipc/PermissionRegistry.test.js +69 -0
- package/dist/ipc/PermissionRegistry.test.js.map +1 -0
- package/dist/ipc/index.d.ts +1 -0
- package/dist/ipc/index.d.ts.map +1 -1
- package/dist/ipc/index.js +1 -0
- package/dist/ipc/index.js.map +1 -1
- package/dist/logging/electron.d.ts +4 -0
- package/dist/logging/electron.d.ts.map +1 -0
- package/dist/logging/electron.js +66 -0
- package/dist/logging/electron.js.map +1 -0
- package/dist/logging/index.d.ts +4 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +11 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/levels.d.ts +5 -0
- package/dist/logging/levels.d.ts.map +1 -0
- package/dist/logging/levels.js +26 -0
- package/dist/logging/levels.js.map +1 -0
- package/dist/logging/logger.d.ts +48 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +256 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/notification/NotificationHandler.d.ts +1 -1
- package/dist/notification/NotificationHandler.d.ts.map +1 -1
- package/dist/notification/NotificationHandler.js +1 -2
- package/dist/notification/NotificationHandler.js.map +1 -1
- package/dist/notification/NotificationManager.d.ts +2 -2
- package/dist/notification/NotificationManager.d.ts.map +1 -1
- package/dist/notification/NotificationManager.js +3 -2
- package/dist/notification/NotificationManager.js.map +1 -1
- package/dist/notification/index.d.ts +1 -1
- package/dist/notification/index.js +1 -1
- package/dist/package-manager/PackageHandler.d.ts +15 -5
- package/dist/package-manager/PackageHandler.d.ts.map +1 -1
- package/dist/package-manager/PackageHandler.js +32 -14
- package/dist/package-manager/PackageHandler.js.map +1 -1
- package/dist/package-manager/PackageManager.d.ts +29 -12
- package/dist/package-manager/PackageManager.d.ts.map +1 -1
- package/dist/package-manager/PackageManager.js +130 -75
- package/dist/package-manager/PackageManager.js.map +1 -1
- package/dist/package-manager/index.d.ts +1 -1
- package/dist/package-manager/index.js +3 -3
- package/dist/process-manager/AutostartManager.d.ts +17 -6
- package/dist/process-manager/AutostartManager.d.ts.map +1 -1
- package/dist/process-manager/AutostartManager.js +114 -16
- package/dist/process-manager/AutostartManager.js.map +1 -1
- package/dist/process-manager/BackendManager.d.ts +3 -3
- package/dist/process-manager/BackendManager.d.ts.map +1 -1
- package/dist/process-manager/BackendManager.js +14 -13
- package/dist/process-manager/BackendManager.js.map +1 -1
- package/dist/process-manager/ProcessHandler.d.ts +2 -2
- package/dist/process-manager/ProcessHandler.d.ts.map +1 -1
- package/dist/process-manager/ProcessHandler.js +1 -2
- package/dist/process-manager/ProcessHandler.js.map +1 -1
- package/dist/process-manager/ProcessManager.d.ts +12 -8
- package/dist/process-manager/ProcessManager.d.ts.map +1 -1
- package/dist/process-manager/ProcessManager.js +58 -27
- package/dist/process-manager/ProcessManager.js.map +1 -1
- package/dist/process-manager/index.d.ts +3 -3
- package/dist/process-manager/index.d.ts.map +1 -1
- package/dist/process-manager/index.js +7 -7
- package/dist/process-manager/index.js.map +1 -1
- package/dist/seed/SeedLoader.d.ts +8 -0
- package/dist/seed/SeedLoader.d.ts.map +1 -0
- package/dist/seed/SeedLoader.js +179 -0
- package/dist/seed/SeedLoader.js.map +1 -0
- package/dist/seed/index.d.ts +2 -0
- package/dist/seed/index.d.ts.map +1 -0
- package/dist/seed/index.js +6 -0
- package/dist/seed/index.js.map +1 -0
- package/dist/settings/EdenSettings.d.ts +1 -1
- package/dist/settings/EdenSettings.d.ts.map +1 -1
- package/dist/settings/EdenSettings.js +69 -115
- package/dist/settings/EdenSettings.js.map +1 -1
- package/dist/settings/SettingsHandler.d.ts +9 -7
- package/dist/settings/SettingsHandler.d.ts.map +1 -1
- package/dist/settings/SettingsHandler.js +18 -25
- package/dist/settings/SettingsHandler.js.map +1 -1
- package/dist/settings/SettingsManager.d.ts +33 -6
- package/dist/settings/SettingsManager.d.ts.map +1 -1
- package/dist/settings/SettingsManager.js +109 -26
- package/dist/settings/SettingsManager.js.map +1 -1
- package/dist/settings/index.d.ts +2 -2
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +6 -6
- package/dist/settings/index.js.map +1 -1
- package/dist/user/UserAuth.d.ts +6 -0
- package/dist/user/UserAuth.d.ts.map +1 -0
- package/dist/user/UserAuth.js +21 -0
- package/dist/user/UserAuth.js.map +1 -0
- package/dist/user/UserAuth.test.d.ts +2 -0
- package/dist/user/UserAuth.test.d.ts.map +1 -0
- package/dist/user/UserAuth.test.js +27 -0
- package/dist/user/UserAuth.test.js.map +1 -0
- package/dist/user/UserGrants.d.ts +5 -0
- package/dist/user/UserGrants.d.ts.map +1 -0
- package/dist/user/UserGrants.js +42 -0
- package/dist/user/UserGrants.js.map +1 -0
- package/dist/user/UserGrants.test.d.ts +2 -0
- package/dist/user/UserGrants.test.d.ts.map +1 -0
- package/dist/user/UserGrants.test.js +23 -0
- package/dist/user/UserGrants.test.js.map +1 -0
- package/dist/user/UserHandler.d.ts +109 -0
- package/dist/user/UserHandler.d.ts.map +1 -0
- package/dist/user/UserHandler.js +206 -0
- package/dist/user/UserHandler.js.map +1 -0
- package/dist/user/UserManager.d.ts +62 -0
- package/dist/user/UserManager.d.ts.map +1 -0
- package/dist/user/UserManager.js +292 -0
- package/dist/user/UserManager.js.map +1 -0
- package/dist/user/UserStore.d.ts +15 -0
- package/dist/user/UserStore.d.ts.map +1 -0
- package/dist/user/UserStore.js +119 -0
- package/dist/user/UserStore.js.map +1 -0
- package/dist/user/UserTypes.d.ts +6 -0
- package/dist/user/UserTypes.d.ts.map +1 -0
- package/dist/user/UserTypes.js +3 -0
- package/dist/user/UserTypes.js.map +1 -0
- package/dist/user/index.d.ts +2 -0
- package/dist/user/index.d.ts.map +1 -0
- package/dist/user/index.js +6 -0
- package/dist/user/index.js.map +1 -0
- package/dist/utils/cachedFileReader.d.ts.map +1 -1
- package/dist/utils/cachedFileReader.js +4 -4
- package/dist/utils/cachedFileReader.js.map +1 -1
- package/dist/utils/cachedFileReader.test.d.ts +2 -0
- package/dist/utils/cachedFileReader.test.d.ts.map +1 -0
- package/dist/utils/cachedFileReader.test.js +48 -0
- package/dist/utils/cachedFileReader.test.js.map +1 -0
- package/dist/utils/normalize.d.ts +6 -0
- package/dist/utils/normalize.d.ts.map +1 -0
- package/dist/utils/normalize.js +15 -0
- package/dist/utils/normalize.js.map +1 -0
- package/dist/utils/normalize.test.d.ts +2 -0
- package/dist/utils/normalize.test.d.ts.map +1 -0
- package/dist/utils/normalize.test.js +21 -0
- package/dist/utils/normalize.test.js.map +1 -0
- package/dist/view-manager/DevToolsController.d.ts +29 -0
- package/dist/view-manager/DevToolsController.d.ts.map +1 -0
- package/dist/view-manager/DevToolsController.js +78 -0
- package/dist/view-manager/DevToolsController.js.map +1 -0
- package/dist/view-manager/FloatingWindowController.d.ts +3 -3
- package/dist/view-manager/FloatingWindowController.d.ts.map +1 -1
- package/dist/view-manager/FloatingWindowController.js +1 -1
- package/dist/view-manager/FloatingWindowController.js.map +1 -1
- package/dist/view-manager/MouseTracker.d.ts.map +1 -1
- package/dist/view-manager/MouseTracker.js +2 -1
- package/dist/view-manager/MouseTracker.js.map +1 -1
- package/dist/view-manager/ScaleController.d.ts +40 -0
- package/dist/view-manager/ScaleController.d.ts.map +1 -0
- package/dist/view-manager/ScaleController.js +99 -0
- package/dist/view-manager/ScaleController.js.map +1 -0
- package/dist/view-manager/TilingController.d.ts +76 -0
- package/dist/view-manager/TilingController.d.ts.map +1 -0
- package/dist/view-manager/TilingController.js +210 -0
- package/dist/view-manager/TilingController.js.map +1 -0
- package/dist/view-manager/ViewCreator.d.ts +8 -10
- package/dist/view-manager/ViewCreator.d.ts.map +1 -1
- package/dist/view-manager/ViewCreator.js +29 -32
- package/dist/view-manager/ViewCreator.js.map +1 -1
- package/dist/view-manager/ViewHandler.d.ts +18 -3
- package/dist/view-manager/ViewHandler.d.ts.map +1 -1
- package/dist/view-manager/ViewHandler.js +38 -4
- package/dist/view-manager/ViewHandler.js.map +1 -1
- package/dist/view-manager/ViewManager.d.ts +28 -7
- package/dist/view-manager/ViewManager.d.ts.map +1 -1
- package/dist/view-manager/ViewManager.js +124 -50
- package/dist/view-manager/ViewManager.js.map +1 -1
- package/dist/view-manager/index.d.ts +0 -9
- package/dist/view-manager/index.d.ts.map +1 -1
- package/dist/view-manager/index.js +1 -18
- package/dist/view-manager/index.js.map +1 -1
- package/dist/view-manager/layoutCalculator.d.ts +17 -0
- package/dist/view-manager/layoutCalculator.d.ts.map +1 -0
- package/dist/view-manager/layoutCalculator.js +65 -0
- package/dist/view-manager/layoutCalculator.js.map +1 -0
- package/dist/view-manager/layoutCalculator.test.d.ts +2 -0
- package/dist/view-manager/layoutCalculator.test.d.ts.map +1 -0
- package/dist/view-manager/layoutCalculator.test.js +69 -0
- package/dist/view-manager/layoutCalculator.test.js.map +1 -0
- package/dist/view-manager/types.d.ts +9 -2
- package/dist/view-manager/types.d.ts.map +1 -1
- package/dist/view-manager/viewLifecycle.d.ts +41 -0
- package/dist/view-manager/viewLifecycle.d.ts.map +1 -0
- package/dist/view-manager/viewLifecycle.js +132 -0
- package/dist/view-manager/viewLifecycle.js.map +1 -0
- package/edencss/README.md +1 -7
- package/edencss/components/avatar.css +88 -0
- package/edencss/components/badges.css +13 -12
- package/edencss/components/buttons.css +11 -3
- package/edencss/components/cards.css +6 -7
- package/edencss/components/lists.css +11 -83
- package/edencss/components/modals.css +24 -21
- package/edencss/components/progress.css +20 -8
- package/edencss/components/tabs.css +11 -7
- package/edencss/eden.css +1 -0
- package/edencss/style-dictionary.config.mjs +34 -34
- package/edencss/tokens.css +2 -2
- package/edencss/tokens.json +3 -3
- package/edencss/tokens.ts +2 -4
- package/edencss/utilities.css +15 -3
- package/foundation/foundation-preload.js +73 -7
- package/foundation/foundation.css +69 -26
- package/foundation/foundation.html +1 -1
- package/foundation/foundation.js +165 -54
- package/package.json +11 -7
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/index-B7GgDQ9I.css +0 -1
- package/dist/apps/prebuilt/com.eden.editor/dist/assets/index-BWJI9cyM.js +0 -2
- package/dist/apps/prebuilt/com.eden.eveshell/dist/assets/index-BS2yCXxK.css +0 -1
- package/dist/apps/prebuilt/com.eden.eveshell/dist/assets/index-De0NEh_d.js +0 -1
- package/dist/apps/prebuilt/com.eden.example.calculator/.dev-manifest.json +0 -5
- package/dist/apps/prebuilt/com.eden.example.calculator/app.js +0 -95
- package/dist/apps/prebuilt/com.eden.example.calculator/index.html +0 -39
- package/dist/apps/prebuilt/com.eden.example.calculator/manifest.json +0 -30
- package/dist/apps/prebuilt/com.eden.example.calculator/styles.css +0 -83
- package/dist/apps/prebuilt/com.eden.files/.dev-manifest.json +0 -5
- package/dist/apps/prebuilt/com.eden.files/dist/assets/index-BOw4ESi3.js +0 -1
- package/dist/apps/prebuilt/com.eden.files/dist/assets/index-BPH5FvSW.css +0 -1
- package/dist/apps/prebuilt/com.eden.installer/dist/assets/index-CKYMyu3p.js +0 -1
- package/dist/apps/prebuilt/com.eden.installer/dist/assets/index-CgTLLNqG.css +0 -1
- package/dist/apps/prebuilt/com.eden.settings/dist/assets/index-352-RdGP.js +0 -1
- package/dist/apps/prebuilt/com.eden.settings/dist/assets/index-DY6ouI17.css +0 -1
- package/dist/apps/prebuilt/com.eden.webbrowser/.dev-manifest.json +0 -5
- /package/dist/apps/prebuilt/{com.eden.example.calculator → com.eden.calculator}/icon.svg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/app-runtime/common/port-channel.ts", "../../src/app-runtime/common/api-factory.ts", "../../src/app-runtime/backend-preload.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Port Channel - Shared utilities for MessagePort communication\n *\n * This module provides reusable utilities for setting up MessagePort-based\n * communication channels between frontend, backend, and AppBus connections.\n *\n * Used by:\n * - app-preload.ts (frontend)\n * - backend-preload.ts (backend)\n */\n\n// Re-export IPCPort types and wrappers\nexport { wrapDOMPort, wrapElectronPort } from \"./ipc-port\";\nexport type { IPCPort } from \"./ipc-port\";\nimport type { IPCPort } from \"./ipc-port\";\n\nimport type {\n AppBusConnection,\n ServiceConnectCallback,\n} from \"@edenapp/types/ipc/appbus\";\n\n/**\n * Pending request tracking\n */\nexport interface PendingRequest {\n resolve: (value: any) => void;\n reject: (reason: any) => void;\n}\n\n/**\n * Pending port arrival tracking\n */\nexport interface PendingPortArrival {\n resolve: (port: IPCPort) => void;\n reject: (reason: Error) => void;\n}\n\n/**\n * Options for setting up a client port\n */\nexport interface ClientPortOptions {\n port: IPCPort;\n connectionId: string;\n portStore: Map<string, IPCPort>;\n pendingRequests: Map<string, PendingRequest>;\n pendingPortArrivals?: Map<string, PendingPortArrival>;\n logPrefix?: string;\n}\n\n/**\n * Message ID generator factory\n */\nexport function createMessageIdGenerator(prefix: string = \"msg\"): () => string {\n let counter = 0;\n return () => `${prefix}-${Date.now()}-${++counter}`;\n}\n\n/**\n * AppBus state for an app\n */\nexport interface AppBusState {\n registeredServices: Map<string, ServiceConnectCallback>;\n connectedPorts: Map<string, IPCPort>;\n pendingRequests: Map<string, PendingRequest>;\n pendingPortArrivals: Map<string, PendingPortArrival>;\n messageIdGenerator: () => string;\n}\n\n/**\n * Create AppBus state for an app\n */\nexport function createAppBusState(prefix: string = \"appbus\"): AppBusState {\n return {\n registeredServices: new Map(),\n connectedPorts: new Map(),\n pendingRequests: new Map(),\n pendingPortArrivals: new Map(),\n messageIdGenerator: createMessageIdGenerator(prefix),\n };\n}\n\n/**\n * Wait for a port to arrive for a given connection ID\n *\n * @param connectionId The connection ID to wait for\n * @param state AppBus state containing connectedPorts and pendingPortArrivals\n * @param timeoutMs Timeout in milliseconds (default: 5000)\n * @returns Promise that resolves with the port or rejects on timeout\n */\nexport function waitForPort(\n connectionId: string,\n state: AppBusState,\n timeoutMs: number = 5000\n): Promise<IPCPort> {\n // Check if port is already available\n const existing = state.connectedPorts.get(connectionId);\n if (existing) {\n return Promise.resolve(existing);\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n state.pendingPortArrivals.delete(connectionId);\n reject(\n new Error(\n `Port for connection ${connectionId} not received within ${timeoutMs}ms`\n )\n );\n }, timeoutMs);\n\n state.pendingPortArrivals.set(connectionId, {\n resolve: (port: IPCPort) => {\n clearTimeout(timeout);\n resolve(port);\n },\n reject: (reason: Error) => {\n clearTimeout(timeout);\n reject(reason);\n },\n });\n });\n}\n\n/**\n * Set up a MessagePort as a client (sends requests, receives responses)\n *\n * @param options Configuration for the client port\n */\nexport function setupClientPort(options: ClientPortOptions): void {\n const {\n port,\n connectionId,\n portStore,\n pendingRequests,\n pendingPortArrivals,\n } = options;\n\n // Store the port for later use\n portStore.set(connectionId, port);\n\n // Resolve any pending port arrivals waiting for this connection\n if (pendingPortArrivals) {\n const pending = pendingPortArrivals.get(connectionId);\n if (pending) {\n pendingPortArrivals.delete(connectionId);\n pending.resolve(port);\n }\n }\n\n // Set up response handler\n port.on(\"message\", (event) => {\n const { type, messageId, payload, error } = event.data;\n\n if (type === \"response\" && messageId) {\n const pending = pendingRequests.get(messageId);\n if (pending) {\n pendingRequests.delete(messageId);\n if (error) {\n pending.reject(new Error(error));\n } else {\n pending.resolve(payload);\n }\n }\n }\n });\n\n port.start();\n}\n\n/**\n * Create a connection object for a port (Electron IPC style)\n *\n * @param port The IPCPort to wrap\n * @param connectionId The connection ID\n * @param portStore The Map storing ports\n * @param pendingRequests The Map tracking pending requests for outgoing requests\n * @param generateMessageId Function to generate unique message IDs\n * @returns Connection object with send/on/off, request/handle/removeHandler, and close methods\n */\nexport function createPortConnection(\n port: IPCPort,\n connectionId: string,\n portStore: Map<string, IPCPort>,\n pendingRequests: Map<string, PendingRequest>,\n generateMessageId: () => string\n): AppBusConnection {\n // Method-specific listeners for fire-and-forget messages (send \u2192 on)\n const messageListeners: Map<string, Set<(args: any) => void>> = new Map();\n\n // Method-specific handlers for request/response (request \u2192 handle)\n const requestHandlers: Map<string, (args: any) => any | Promise<any>> =\n new Map();\n\n // Store the port for later use (cleanup, connectivity checks)\n portStore.set(connectionId, port);\n\n // Set up incoming message handler\n port.on(\"message\", (event) => {\n const { type, method, payload, messageId } = event.data;\n\n if (type === \"message\") {\n // Fire-and-forget message - dispatch to on() listeners\n const listeners = messageListeners.get(method);\n if (listeners) {\n listeners.forEach((callback) => {\n try {\n callback(payload);\n } catch (err) {\n console.error(\n `[PortConnection] Error in on('${method}') listener:`,\n err\n );\n }\n });\n }\n } else if (type === \"request\") {\n // Request expecting response - dispatch to handle() handler\n const handler = requestHandlers.get(method);\n if (handler) {\n try {\n const result = handler(payload);\n Promise.resolve(result)\n .then((response) => {\n port.postMessage({\n type: \"response\",\n messageId,\n payload: response,\n });\n })\n .catch((err) => {\n port.postMessage({\n type: \"response\",\n messageId,\n error: err instanceof Error ? err.message : String(err),\n });\n });\n } catch (err) {\n port.postMessage({\n type: \"response\",\n messageId,\n error: err instanceof Error ? err.message : String(err),\n });\n }\n } else {\n port.postMessage({\n type: \"response\",\n messageId,\n error: `No handler registered for method '${method}'`,\n });\n }\n } else if (type === \"response\" && messageId) {\n // Response to our outgoing request\n const pending = pendingRequests.get(messageId);\n if (pending) {\n pendingRequests.delete(messageId);\n if (event.data.error) {\n pending.reject(new Error(event.data.error));\n } else {\n pending.resolve(payload);\n }\n }\n }\n });\n\n port.start();\n\n return {\n // Fire-and-forget messaging\n send: (method: string, args?: any) => {\n port.postMessage({ type: \"message\", method, payload: args });\n },\n\n on: (method: string, callback: (args: any) => void) => {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n if (!messageListeners.has(method)) {\n messageListeners.set(method, new Set());\n }\n messageListeners.get(method)!.add(callback);\n },\n\n once: (method: string, callback: (args: any) => void) => {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n const wrapper = (args: any) => {\n // Remove before calling to prevent issues if callback throws\n const listeners = messageListeners.get(method);\n if (listeners) {\n listeners.delete(wrapper);\n if (listeners.size === 0) {\n messageListeners.delete(method);\n }\n }\n callback(args);\n };\n if (!messageListeners.has(method)) {\n messageListeners.set(method, new Set());\n }\n messageListeners.get(method)!.add(wrapper);\n },\n\n off: (method: string, callback: (args: any) => void) => {\n const listeners = messageListeners.get(method);\n if (listeners) {\n listeners.delete(callback);\n if (listeners.size === 0) {\n messageListeners.delete(method);\n }\n }\n },\n\n // Request/response\n request: (\n method: string,\n args?: any,\n timeout: number = 30000\n ): Promise<any> => {\n return new Promise((resolve, reject) => {\n const messageId = generateMessageId();\n\n // Timeout after specified duration\n const timeoutId = setTimeout(() => {\n if (pendingRequests.has(messageId)) {\n pendingRequests.delete(messageId);\n reject(new Error(`Request '${method}' timed out`));\n }\n }, timeout);\n\n pendingRequests.set(messageId, {\n resolve: (value) => {\n clearTimeout(timeoutId);\n resolve(value);\n },\n reject: (reason) => {\n clearTimeout(timeoutId);\n reject(reason);\n },\n });\n\n port.postMessage({\n type: \"request\",\n method,\n payload: args,\n messageId,\n });\n });\n },\n\n handle: (method: string, handler: (args: any) => any | Promise<any>) => {\n if (typeof handler !== \"function\") {\n throw new Error(\"Handler must be a function\");\n }\n if (requestHandlers.has(method)) {\n throw new Error(`Handler already registered for method '${method}'`);\n }\n requestHandlers.set(method, handler);\n },\n\n removeHandler: (method: string) => {\n requestHandlers.delete(method);\n },\n\n // Connection management\n isConnected: () => {\n return portStore.has(connectionId);\n },\n\n onClose: (callback: () => void) => {\n port.on(\"close\", callback);\n },\n\n close: () => {\n portStore.delete(connectionId);\n messageListeners.clear();\n requestHandlers.clear();\n port.close();\n },\n };\n}\n\n/**\n * Handle an incoming AppBus port (can be service or client role)\n *\n * @param port The MessagePort received\n * @param data Connection metadata\n * @param state AppBus state (services, ports, pending requests)\n * @param logPrefix Prefix for log messages\n */\nexport function handleAppBusPort(\n port: IPCPort,\n data: {\n connectionId: string;\n role: \"service\" | \"client\";\n serviceName: string;\n targetAppId?: string;\n sourceAppId?: string;\n },\n state: AppBusState,\n logPrefix: string = \"[AppBus]\"\n): void {\n const { connectionId, role, serviceName, targetAppId, sourceAppId } = data;\n\n if (role === \"service\") {\n // A client is connecting to our service\n console.log(\n `${logPrefix} Received connection from ${sourceAppId} for service ${serviceName}`\n );\n\n const onConnect = state.registeredServices.get(serviceName);\n if (!onConnect) {\n console.error(\n `${logPrefix} No onConnect callback registered for service \"${serviceName}\"`\n );\n return;\n }\n\n // Create a bidirectional AppBusConnection for the service to use\n const connection = createPortConnection(\n port,\n connectionId,\n state.connectedPorts,\n state.pendingRequests,\n state.messageIdGenerator\n );\n\n // Call the onConnect callback with the connection and client info\n try {\n onConnect(connection, { appId: sourceAppId || \"unknown\" });\n } catch (err) {\n console.error(\n `${logPrefix} Error in onConnect callback for service \"${serviceName}\":`,\n err\n );\n }\n } else if (role === \"client\") {\n // We're connecting to another app's service\n console.log(`${logPrefix} Connected to ${targetAppId}/${serviceName}`);\n\n setupClientPort({\n port,\n connectionId,\n portStore: state.connectedPorts,\n pendingRequests: state.pendingRequests,\n pendingPortArrivals: state.pendingPortArrivals,\n });\n }\n}\n/**\n * Handle a port being closed from the other side\n * Triggered by a notification from the main process\n *\n * @param state AppBus state\n * @param connectionId The ID of the closed connection\n */\nexport function handlePortClosed(\n state: AppBusState,\n connectionId: string\n): void {\n const port = state.connectedPorts.get(connectionId);\n if (port) {\n port.close();\n state.connectedPorts.delete(connectionId);\n }\n}\n", "import type {\n EdenAPI,\n AppBusAPI,\n AppBusConnection,\n ServiceInfo,\n ServiceConnectCallback,\n} from \"@edenapp/types\";\nimport type { PendingRequest, IPCPort, AppBusState } from \"./port-channel\";\nimport { createPortConnection, waitForPort } from \"./port-channel\";\n\n/**\n * Interface for sending shell commands to the main process\n */\nexport interface ShellTransport {\n exec(command: string, args: any): Promise<any>;\n}\n\n/**\n * Configuration for AppBus API\n */\nexport interface AppBusConfig {\n transport: ShellTransport;\n isBackend?: boolean;\n}\n\n/**\n * Create the EdenAPI object\n */\nexport function createEdenAPI(\n transport: ShellTransport,\n eventSubscriptions: Map<string, Set<Function>>,\n options?: { getLaunchArgs?: () => string[] }\n): EdenAPI {\n return {\n shellCommand: (command: string, args: any) => {\n return transport.exec(command, args);\n },\n\n subscribe: async (eventName: string, callback: Function) => {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n\n // Register with backend/main\n await transport.exec(\"event/subscribe\", { eventName });\n\n // Register callback locally\n if (!eventSubscriptions.has(eventName)) {\n eventSubscriptions.set(eventName, new Set());\n }\n eventSubscriptions.get(eventName)!.add(callback);\n },\n\n unsubscribe: async (eventName: string, callback: Function) => {\n const callbacks = eventSubscriptions.get(eventName);\n if (callbacks) {\n callbacks.delete(callback);\n\n // If no more callbacks, unregister from backend/main\n if (callbacks.size === 0) {\n eventSubscriptions.delete(eventName);\n await transport.exec(\"event/unsubscribe\", { eventName });\n }\n }\n },\n\n isEventSupported: (eventName: string) => {\n return transport.exec(\"event/exists\", { eventName });\n },\n\n getLaunchArgs: (): string[] => {\n if (options?.getLaunchArgs) {\n return options.getLaunchArgs();\n }\n return [];\n },\n };\n}\n\n/**\n * Create the AppBusAPI object\n */\nexport function createAppBusAPI(\n config: AppBusConfig,\n state: AppBusState\n): AppBusAPI {\n const { transport, isBackend } = config;\n const {\n registeredServices,\n connectedPorts,\n pendingRequests,\n messageIdGenerator,\n } = state;\n\n return {\n exposeService: async (\n serviceName: string,\n onConnect: ServiceConnectCallback,\n options?: {\n description?: string;\n allowedClients?: string[];\n }\n ): Promise<{ success: boolean; error?: string }> => {\n if (typeof onConnect !== \"function\") {\n throw new Error(\"onConnect callback must be a function\");\n }\n\n // Store the onConnect callback locally\n // When a client connects, handleAppBusPort will call this with the connection\n registeredServices.set(serviceName, onConnect);\n\n // Register with main process\n const result = await transport.exec(\"appbus/register\", {\n serviceName,\n description: options?.description,\n allowedClients: options?.allowedClients,\n isBackend,\n });\n\n if (!result.success) {\n registeredServices.delete(serviceName);\n }\n\n return result;\n },\n\n unexposeService: async (\n serviceName: string\n ): Promise<{ success: boolean }> => {\n registeredServices.delete(serviceName);\n return transport.exec(\"appbus/unregister\", {\n serviceName,\n });\n },\n\n connect: async (\n targetAppId: string,\n serviceName: string\n ): Promise<AppBusConnection | { error: string }> => {\n // Request connection through shell command\n const result = await transport.exec(\"appbus/connect\", {\n targetAppId,\n serviceName,\n isBackend,\n });\n\n if (!result.success) {\n return { error: result.error || \"Connection failed\" };\n }\n\n const { connectionId } = result;\n\n // Wait for the port to be received via handleAppBusPort\n let port: IPCPort;\n try {\n port = await waitForPort(connectionId, state, 5000);\n } catch (err) {\n return {\n error:\n err instanceof Error ? err.message : \"MessagePort not received\",\n };\n }\n\n // Use shared utility to create connection object\n return createPortConnection(\n port,\n connectionId,\n connectedPorts,\n pendingRequests,\n messageIdGenerator\n );\n },\n\n listServices: async (): Promise<{ services: ServiceInfo[] }> => {\n return transport.exec(\"appbus/list\", {});\n },\n\n listServicesByApp: async (\n appId: string\n ): Promise<{ services: ServiceInfo[] }> => {\n return transport.exec(\"appbus/list-by-app\", { appId });\n },\n };\n}\n", "/**\n * Backend Runtime\n *\n * This module runs inside Electron's utility process (forked by BackendManager).\n * It provides the global `worker` object with `edenAPI` and `appBus` APIs,\n * mirroring the frontend's `window.edenAPI` and `window.appBus`.\n *\n * Environment variables expected:\n * - EDEN_APP_ID: The app's identifier\n * - EDEN_BACKEND_ENTRY: Path to the actual backend entry point\n * - EDEN_INSTALL_PATH: Path to the app's installation directory\n * - EDEN_MANIFEST: JSON-stringified app manifest\n */\n\nimport type { EdenAPI, AppBusAPI, AppBusConnection } from \"@edenapp/types\";\n\nimport type { WorkerGlobal } from \"@edenapp/types/worker\";\n\nimport {\n createMessageIdGenerator,\n handleAppBusPort as handlePortSetup,\n createPortConnection,\n createAppBusState,\n wrapElectronPort,\n handlePortClosed,\n} from \"./common/port-channel\";\n\nimport {\n createEdenAPI,\n createAppBusAPI,\n type ShellTransport,\n} from \"./common/api-factory\";\n\n// Electron utility process extends the Node process with parentPort\n// This is available when running inside utilityProcess.fork()\n// We use Electron's types which should be available\n\n// Get app info from environment\nconst appId = process.env.EDEN_APP_ID!;\nconst backendEntry = process.env.EDEN_BACKEND_ENTRY!;\nconst manifest = JSON.parse(process.env.EDEN_MANIFEST || \"{}\");\n\n// Extract launch args\nlet launchArgs: string[] = [];\nconst launchArgsArg = process.argv.find((arg) =>\n arg.startsWith(\"--launch-args=\")\n);\nif (launchArgsArg) {\n try {\n const jsonStr = launchArgsArg.split(\"=\").slice(1).join(\"=\");\n launchArgs = JSON.parse(jsonStr);\n } catch (e) {\n console.error(\"[Backend Runtime] Failed to parse launch args:\", e);\n }\n}\n\n// Port for direct frontend<->backend communication (received from main)\nlet frontendPort: Electron.MessagePortMain | null = null;\n\n// Port for IPC with main process (process.parentPort)\nconst parentPort = process.parentPort;\nif (!parentPort) {\n console.error(\n \"[Backend Runtime] Not running in utility process - parentPort not available\"\n );\n process.exit(1);\n}\n\n// Event subscriptions\nconst eventSubscriptions: Map<string, Set<Function>> = new Map();\n\n// Pending shell command requests\nconst pendingCommands: Map<\n string,\n { resolve: (value: any) => void; reject: (reason: any) => void }\n> = new Map();\nlet commandIdCounter = 0;\n\n// AppBus state\nconst appBusState = createAppBusState(\"backend-appbus\");\n\n/**\n * Generate unique command ID\n */\nfunction generateCommandId(): string {\n return `cmd-${appId}-${Date.now()}-${++commandIdCounter}`;\n}\n\n/**\n * Send a shell command to main process and wait for response\n */\nasync function shellCommand(command: string, args: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const commandId = generateCommandId();\n\n // Set timeout\n const timeout = setTimeout(() => {\n pendingCommands.delete(commandId);\n reject(new Error(`Shell command '${command}' timed out`));\n }, 30000);\n\n pendingCommands.set(commandId, {\n resolve: (value) => {\n clearTimeout(timeout);\n resolve(value);\n },\n reject: (reason) => {\n clearTimeout(timeout);\n reject(reason);\n },\n });\n\n parentPort!.postMessage({\n type: \"shell-command\",\n commandId,\n command,\n args: { ...args, _callerAppId: appId },\n });\n });\n}\n\n// ===================================================================\n// Shared API Implementation\n// ===================================================================\n\n// Shell transport implementation using internal shellCommand\nconst shellTransport: ShellTransport = {\n exec: (command: string, args: any) => {\n return shellCommand(command, args);\n },\n};\n\n/**\n * Eden API implementation for utility process\n */\nconst edenAPI: EdenAPI = createEdenAPI(shellTransport, eventSubscriptions, {\n getLaunchArgs: () => launchArgs,\n});\n\n/**\n * AppBus API implementation for utility process\n */\nconst appBus: AppBusAPI = createAppBusAPI(\n { transport: shellTransport, isBackend: true },\n appBusState\n);\n\n// Frontend communication state\nlet frontendConnection: AppBusConnection | null = null;\n\n// Check if this app has a frontend (from manifest)\nconst hasFrontend = !!manifest.frontend?.entry;\n\n// appAPI will be set after frontend port is received (for apps with frontend)\n// For backend-only apps, worker.appAPI will be undefined\n\n/**\n * Handle messages from main process (via parentPort)\n */\nparentPort.on(\"message\", (event: Electron.MessageEvent) => {\n const message = event.data;\n\n if (message.type === \"shell-command-response\") {\n // Response to a shell command we sent\n const pending = pendingCommands.get(message.commandId);\n if (pending) {\n pendingCommands.delete(message.commandId);\n if (message.error) {\n pending.reject(new Error(message.error));\n } else {\n pending.resolve(message.result);\n }\n }\n } else if (message.type === \"shell-event\") {\n // Event notification from main\n const { eventName, payload } = message;\n const callbacks = eventSubscriptions.get(eventName);\n if (callbacks) {\n callbacks.forEach((callback) => {\n try {\n callback(payload);\n } catch (err) {\n console.error(\n `[Backend ${appId}] Error in event callback for ${eventName}:`,\n err\n );\n }\n });\n }\n } else if (message.type === \"appbus-port\") {\n // AppBus connection port\n const [port] = event.ports;\n if (port) {\n handleAppBusPort(port, message);\n }\n } else if (message.type === \"appbus-port-closed\") {\n // AppBus connection closed\n handlePortClosed(appBusState, message.connectionId);\n } else if (message.type === \"shutdown\") {\n // Graceful shutdown request\n console.log(`[Backend ${appId}] Shutdown requested`);\n process.exit(0);\n }\n});\n\n/**\n * Set up frontend port using createPortConnection\n */\nfunction setupFrontendPort(port: Electron.MessagePortMain): void {\n const wrappedPort = wrapElectronPort(port);\n\n // Create connection using shared utility\n frontendConnection = createPortConnection(\n wrappedPort,\n \"__frontend__\",\n new Map([[\"__frontend__\", wrappedPort]]),\n new Map(),\n createMessageIdGenerator(\"backend-to-frontend\")\n );\n}\n\n/**\n * Handle AppBus port connections (using shared utility)\n */\nfunction handleAppBusPort(port: Electron.MessagePortMain, data: any): void {\n // Wrap Electron MessagePortMain to IPCPort interface\n const wrappedPort = wrapElectronPort(port);\n\n handlePortSetup(wrappedPort, data, appBusState, `[Backend ${appId}]`);\n}\n\n/**\n * Load and execute the actual backend entry point\n */\nasync function loadBackendEntry(): Promise<void> {\n try {\n console.log(`[Backend ${appId}] Loading backend entry: ${backendEntry}`);\n await import(backendEntry);\n console.log(`[Backend ${appId}] Backend loaded successfully`);\n\n // Signal to main that we're ready\n parentPort!.postMessage({ type: \"backend-ready\" });\n } catch (error) {\n console.error(`[Backend ${appId}] Failed to load backend:`, error);\n parentPort!.postMessage({\n type: \"backend-error\",\n error: error instanceof Error ? error.message : String(error),\n });\n process.exit(1);\n }\n}\n\n/**\n * Wait for frontend port (if app has frontend) then load backend\n */\nasync function initializeBackend(): Promise<void> {\n if (hasFrontend) {\n // Wait for init-port message before loading backend\n await new Promise<void>((resolve) => {\n const handler = (event: Electron.MessageEvent) => {\n if (event.data.type === \"init-port\") {\n const [port] = event.ports;\n if (port) {\n frontendPort = port;\n setupFrontendPort(port);\n console.log(`[Backend ${appId}] Frontend port initialized`);\n }\n parentPort.removeListener(\"message\", handler);\n resolve();\n }\n };\n parentPort.on(\"message\", handler);\n });\n }\n\n // Now load backend - worker.appAPI is ready (for apps with frontend)\n await loadBackendEntry();\n}\n\n/**\n * Get AppAPI connection\n * Throws if app has no frontend\n */\nfunction getAppAPI(): AppBusConnection {\n if (!frontendConnection) {\n throw new Error(\n \"AppAPI not available: This app has no frontend connection. \" +\n \"Ensure 'frontend.entry' is defined in manifest.json if you need frontend communication.\"\n );\n }\n return frontendConnection;\n}\n\n/**\n * Set up the global worker object\n */\n// For apps with frontend, appAPI will be set in initializeBackend after port is received\n((globalThis as any).worker as WorkerGlobal) = {\n edenAPI,\n appBus,\n getAppAPI,\n};\n\n// Start initialization\ninitializeBackend();\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["createMessageIdGenerator", "prefix", "counter", "createAppBusState", "waitForPort", "connectionId", "state", "timeoutMs", "existing", "resolve", "reject", "timeout", "port", "reason", "setupClientPort", "options", "portStore", "pendingRequests", "pendingPortArrivals", "pending", "event", "type", "messageId", "payload", "error", "createPortConnection", "generateMessageId", "messageListeners", "requestHandlers", "method", "listeners", "callback", "err", "handler", "result", "response", "args", "wrapper", "timeoutId", "value", "handleAppBusPort", "data", "
|
|
3
|
+
"sources": ["../../src/logging/levels.ts", "../../src/logging/logger.ts", "../../src/app-runtime/common/port-channel.ts", "../../src/app-runtime/common/api-factory.ts", "../../src/app-runtime/backend-preload.ts"],
|
|
4
|
+
"sourcesContent": ["export type LogLevel = \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\";\n\nexport const LOG_LEVEL_ORDER: Record<LogLevel, number> = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60,\n};\n\nexport function parseLogLevel(value?: string | null): LogLevel | null {\n if (!value) return null;\n const normalized = value.trim().toLowerCase();\n if (normalized in LOG_LEVEL_ORDER) {\n return normalized as LogLevel;\n }\n return null;\n}\n\nexport function isLogLevelEnabled(\n level: LogLevel,\n minLevel: LogLevel,\n): boolean {\n return LOG_LEVEL_ORDER[level] >= LOG_LEVEL_ORDER[minLevel];\n}\n", "import type { LogLevel } from \"./levels\";\nimport { isLogLevelEnabled, parseLogLevel } from \"./levels\";\n\nexport type LogFormat = \"pretty\" | \"raw\";\nexport type LogPathMode = \"short\" | \"full\" | \"file\";\n\nexport interface LogContext {\n appId?: string;\n viewId?: number;\n webContentsId?: number;\n processType?: string;\n source?: string;\n}\n\nexport interface CallsiteInfo {\n file: string;\n line: number;\n column?: number;\n}\n\nexport interface LoggerConfig {\n minLevel: LogLevel;\n format: LogFormat;\n includeTimestamp: boolean;\n includeCallsite: boolean;\n pathMode: LogPathMode;\n}\n\nexport interface Logger {\n trace: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n fatal: (...args: unknown[]) => void;\n}\n\ninterface LogRecord {\n level: LogLevel;\n args: unknown[];\n context?: LogContext;\n callsite?: CallsiteInfo;\n timestamp?: number;\n skipCallsite?: boolean;\n}\n\nlet globalContext: LogContext = {};\n\nlet config: LoggerConfig = resolveDefaultConfig();\nconst baseConsole = {\n debug: console.debug.bind(console),\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n info: console.log.bind(console),\n};\n\nexport function configureLogger(next: Partial<LoggerConfig>): void {\n config = { ...config, ...next };\n}\n\nexport function getLoggerConfig(): LoggerConfig {\n return config;\n}\n\nexport function setLogContext(next: Partial<LogContext>): void {\n globalContext = { ...globalContext, ...next };\n}\n\nexport function createLogger(context?: LogContext): Logger {\n return {\n trace: (...args) => emit({ level: \"trace\", args, context }),\n debug: (...args) => emit({ level: \"debug\", args, context }),\n info: (...args) => emit({ level: \"info\", args, context }),\n warn: (...args) => emit({ level: \"warn\", args, context }),\n error: (...args) => emit({ level: \"error\", args, context }),\n fatal: (...args) => emit({ level: \"fatal\", args, context }),\n };\n}\n\nexport const log: Logger = createLogger();\n\nexport function logExternal(record: {\n level: LogLevel;\n message: string;\n context?: LogContext;\n callsite?: CallsiteInfo;\n}): void {\n emit({\n level: record.level,\n args: [record.message],\n context: record.context,\n callsite: record.callsite,\n skipCallsite: true,\n });\n}\n\nexport function logFromConsole(record: {\n level: LogLevel;\n args: unknown[];\n context?: LogContext;\n callsite?: CallsiteInfo;\n}): void {\n emit({\n level: record.level,\n args: record.args,\n context: record.context,\n callsite: record.callsite,\n skipCallsite: true,\n });\n}\n\nfunction emit(record: LogRecord): void {\n const { level } = record;\n if (!isLogLevelEnabled(level, config.minLevel)) return;\n\n const timestamp = record.timestamp ?? Date.now();\n const context = mergeContext(record.context);\n const callsite =\n record.callsite ??\n (config.includeCallsite && !record.skipCallsite\n ? captureCallsite()\n : undefined);\n\n const prefix =\n config.format === \"pretty\"\n ? formatPrefix({ level, timestamp, context, callsite })\n : \"\";\n\n const target = consoleForLevel(level);\n if (prefix) {\n target(prefix, ...record.args);\n } else {\n target(...record.args);\n }\n}\n\nfunction mergeContext(context?: LogContext): LogContext {\n const base = getBaseContext();\n return { ...base, ...context };\n}\n\nfunction getBaseContext(): LogContext {\n const envAppId = getEnvValue(\"EDEN_APP_ID\");\n const globalAppId = (globalThis as any).__EDEN_APP_ID__ as string | undefined;\n return {\n processType: detectProcessType(),\n appId: globalContext.appId ?? envAppId ?? globalAppId,\n viewId: globalContext.viewId,\n webContentsId: globalContext.webContentsId,\n source: globalContext.source,\n };\n}\n\nfunction detectProcessType(): string {\n const processObj = (globalThis as any).process as\n | { type?: string; env?: Record<string, string>; cwd?: () => string }\n | undefined;\n if (processObj) {\n const type = processObj.type;\n if (type === \"browser\") return \"main\";\n if (type === \"utility\") return \"backend\";\n if (type) return type;\n }\n if (typeof (globalThis as any).window !== \"undefined\") return \"renderer\";\n return \"node\";\n}\n\nfunction resolveDefaultConfig(): LoggerConfig {\n const envLevel = parseLogLevel(getEnvValue(\"EDEN_LOG_LEVEL\"));\n const envFormat = getEnvValue(\"EDEN_LOG_FORMAT\") as LogFormat | undefined;\n const envPathMode = getEnvValue(\"EDEN_LOG_PATH\") as LogPathMode | undefined;\n const isTest = getEnvValue(\"NODE_ENV\") === \"test\";\n const isRenderer = detectProcessType() === \"renderer\";\n\n return {\n minLevel: envLevel ?? \"debug\",\n format: envFormat ?? (isTest || isRenderer ? \"raw\" : \"pretty\"),\n includeTimestamp: getEnvBool(\"EDEN_LOG_TIMESTAMP\", !isTest),\n includeCallsite: getEnvBool(\"EDEN_LOG_CALLSITE\", !isTest && !isRenderer),\n pathMode: envPathMode ?? \"short\",\n };\n}\n\nfunction consoleForLevel(level: LogLevel): (...args: unknown[]) => void {\n const useLiveConsole = getEnvValue(\"NODE_ENV\") === \"test\";\n switch (level) {\n case \"trace\":\n case \"debug\":\n return useLiveConsole ? console.debug.bind(console) : baseConsole.debug;\n case \"warn\":\n return useLiveConsole ? console.warn.bind(console) : baseConsole.warn;\n case \"error\":\n case \"fatal\":\n return useLiveConsole ? console.error.bind(console) : baseConsole.error;\n case \"info\":\n default:\n return useLiveConsole ? console.log.bind(console) : baseConsole.info;\n }\n}\n\nfunction formatPrefix(record: {\n level: LogLevel;\n timestamp: number;\n context?: LogContext;\n callsite?: CallsiteInfo;\n}): string {\n const parts: string[] = [];\n\n if (config.includeTimestamp) {\n parts.push(new Date(record.timestamp).toISOString());\n }\n\n parts.push(record.level.toUpperCase());\n\n if (record.context?.processType) {\n parts.push(record.context.processType);\n }\n if (record.context?.appId) {\n parts.push(`app=${record.context.appId}`);\n }\n if (record.context?.viewId !== undefined) {\n parts.push(`view=${record.context.viewId}`);\n }\n if (record.context?.webContentsId !== undefined) {\n parts.push(`wc=${record.context.webContentsId}`);\n }\n if (record.context?.source) {\n parts.push(record.context.source);\n }\n if (record.callsite) {\n const file = shortenPath(record.callsite.file, config.pathMode);\n parts.push(`${file}:${record.callsite.line}`);\n }\n\n return `[${parts.join(\"] [\")}]`;\n}\n\nfunction captureCallsite(): CallsiteInfo | undefined {\n const err = new Error();\n (Error as any).captureStackTrace?.(err, captureCallsite);\n const stack = err.stack;\n if (!stack) return undefined;\n\n const lines = stack.split(\"\\n\").slice(1);\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n if (trimmed.includes(\"/logging/\") || trimmed.includes(\"\\\\logging\\\\\")) {\n continue;\n }\n\n const match =\n trimmed.match(/\\(([^)]+):(\\d+):(\\d+)\\)$/) ??\n trimmed.match(/at\\s+([^\\s]+):(\\d+):(\\d+)$/);\n\n if (!match) continue;\n\n const file = match[1];\n const lineNumber = Number(match[2]);\n const columnNumber = Number(match[3]);\n\n if (!file || Number.isNaN(lineNumber)) continue;\n\n return {\n file,\n line: lineNumber,\n column: Number.isNaN(columnNumber) ? undefined : columnNumber,\n };\n }\n\n return undefined;\n}\n\nfunction shortenPath(path: string, mode: LogPathMode): string {\n if (mode === \"full\") return path;\n if (mode === \"file\") {\n const cleaned = path.replace(/^[^:]*[\\\\/]/, \"\");\n return cleaned || path;\n }\n\n let normalized = path;\n if (normalized.startsWith(\"file://\")) {\n normalized = normalized.slice(\"file://\".length);\n }\n\n try {\n const processObj = (globalThis as any).process as\n | { cwd?: () => string }\n | undefined;\n if (processObj?.cwd) {\n const cwd = processObj.cwd();\n if (normalized.startsWith(cwd)) {\n return normalized.slice(cwd.length + 1);\n }\n }\n } catch {\n // Ignore errors resolving cwd\n }\n\n const normalizedPath = normalized.replace(/\\\\/g, \"/\");\n const distIndex = normalizedPath.lastIndexOf(\"/dist/\");\n if (distIndex >= 0) {\n return normalizedPath.slice(distIndex + 1);\n }\n\n const sdkIndex = normalizedPath.lastIndexOf(\"/sdk/\");\n if (sdkIndex >= 0) {\n return normalizedPath.slice(sdkIndex + 1);\n }\n\n const segments = normalizedPath.split(\"/\").filter(Boolean);\n if (segments.length >= 2) {\n return segments.slice(-2).join(\"/\");\n }\n\n return normalizedPath;\n}\n\nfunction getEnvValue(key: string): string | undefined {\n const processObj = (globalThis as any).process as\n | { env?: Record<string, string> }\n | undefined;\n if (processObj?.env?.[key]) {\n return processObj.env[key];\n }\n const globalValue = (globalThis as any)[key];\n if (typeof globalValue === \"string\") {\n return globalValue;\n }\n return undefined;\n}\n\nfunction getEnvBool(key: string, fallback: boolean): boolean {\n const value = getEnvValue(key);\n if (value === undefined) return fallback;\n const normalized = value.trim().toLowerCase();\n if ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) return true;\n if ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) return false;\n return fallback;\n}\n", "import { log } from \"../../logging\";\n\n/**\n * Port Channel - Shared utilities for MessagePort communication\n *\n * This module provides reusable utilities for setting up MessagePort-based\n * communication channels between frontend, backend, and AppBus connections.\n *\n * Used by:\n * - app-preload.ts (frontend)\n * - backend-preload.ts (backend)\n */\n\nexport type { IPCPort } from \"./ipc-port\";\n// Re-export IPCPort types and wrappers\nexport { wrapDOMPort, wrapElectronPort } from \"./ipc-port\";\n\nimport type {\n AppBusConnection,\n ServiceConnectCallback,\n} from \"@edenapp/types/ipc/appbus\";\nimport type { IPCPort } from \"./ipc-port\";\n\n/**\n * Pending request tracking\n */\nexport interface PendingRequest {\n resolve: (value: any) => void;\n reject: (reason: any) => void;\n}\n\n/**\n * Pending port arrival tracking\n */\nexport interface PendingPortArrival {\n resolve: (port: IPCPort) => void;\n reject: (reason: Error) => void;\n}\n\n/**\n * Options for setting up a client port\n */\nexport interface ClientPortOptions {\n port: IPCPort;\n connectionId: string;\n portStore: Map<string, IPCPort>;\n pendingRequests: Map<string, PendingRequest>;\n pendingPortArrivals?: Map<string, PendingPortArrival>;\n logPrefix?: string;\n}\n\n/**\n * Message ID generator factory\n */\nexport function createMessageIdGenerator(prefix: string = \"msg\"): () => string {\n let counter = 0;\n return () => `${prefix}-${Date.now()}-${++counter}`;\n}\n\n/**\n * AppBus state for an app\n */\nexport interface AppBusState {\n registeredServices: Map<string, ServiceConnectCallback>;\n connectedPorts: Map<string, IPCPort>;\n pendingRequests: Map<string, PendingRequest>;\n pendingPortArrivals: Map<string, PendingPortArrival>;\n messageIdGenerator: () => string;\n}\n\n/**\n * Create AppBus state for an app\n */\nexport function createAppBusState(prefix: string = \"appbus\"): AppBusState {\n return {\n registeredServices: new Map(),\n connectedPorts: new Map(),\n pendingRequests: new Map(),\n pendingPortArrivals: new Map(),\n messageIdGenerator: createMessageIdGenerator(prefix),\n };\n}\n\n/**\n * Wait for a port to arrive for a given connection ID\n *\n * @param connectionId The connection ID to wait for\n * @param state AppBus state containing connectedPorts and pendingPortArrivals\n * @param timeoutMs Timeout in milliseconds (default: 5000)\n * @returns Promise that resolves with the port or rejects on timeout\n */\nexport function waitForPort(\n connectionId: string,\n state: AppBusState,\n timeoutMs: number = 5000,\n): Promise<IPCPort> {\n // Check if port is already available\n const existing = state.connectedPorts.get(connectionId);\n if (existing) {\n return Promise.resolve(existing);\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n state.pendingPortArrivals.delete(connectionId);\n reject(\n new Error(\n `Port for connection ${connectionId} not received within ${timeoutMs}ms`,\n ),\n );\n }, timeoutMs);\n\n state.pendingPortArrivals.set(connectionId, {\n resolve: (port: IPCPort) => {\n clearTimeout(timeout);\n resolve(port);\n },\n reject: (reason: Error) => {\n clearTimeout(timeout);\n reject(reason);\n },\n });\n });\n}\n\n/**\n * Set up a MessagePort as a client (sends requests, receives responses)\n *\n * @param options Configuration for the client port\n */\nexport function setupClientPort(options: ClientPortOptions): void {\n const {\n port,\n connectionId,\n portStore,\n pendingRequests,\n pendingPortArrivals,\n } = options;\n\n // Store the port for later use\n portStore.set(connectionId, port);\n\n // Resolve any pending port arrivals waiting for this connection\n if (pendingPortArrivals) {\n const pending = pendingPortArrivals.get(connectionId);\n if (pending) {\n pendingPortArrivals.delete(connectionId);\n pending.resolve(port);\n }\n }\n\n // Set up response handler\n port.on(\"message\", (event) => {\n const { type, messageId, payload, error } = event.data;\n\n if (type === \"response\" && messageId) {\n const pending = pendingRequests.get(messageId);\n if (pending) {\n pendingRequests.delete(messageId);\n if (error) {\n pending.reject(new Error(error));\n } else {\n pending.resolve(payload);\n }\n }\n }\n });\n\n port.start();\n}\n\n/**\n * Create a connection object for a port (Electron IPC style)\n *\n * @param port The IPCPort to wrap\n * @param connectionId The connection ID\n * @param portStore The Map storing ports\n * @param pendingRequests The Map tracking pending requests for outgoing requests\n * @param generateMessageId Function to generate unique message IDs\n * @returns Connection object with send/on/off, request/handle/removeHandler, and close methods\n */\nexport function createPortConnection(\n port: IPCPort,\n connectionId: string,\n portStore: Map<string, IPCPort>,\n pendingRequests: Map<string, PendingRequest>,\n generateMessageId: () => string,\n): AppBusConnection {\n // Method-specific listeners for fire-and-forget messages (send \u2192 on)\n const messageListeners: Map<string, Set<(args: any) => void>> = new Map();\n\n // Method-specific handlers for request/response (request \u2192 handle)\n const requestHandlers: Map<string, (args: any) => any | Promise<any>> =\n new Map();\n\n // Store the port for later use (cleanup, connectivity checks)\n portStore.set(connectionId, port);\n\n // Set up incoming message handler\n port.on(\"message\", (event) => {\n const { type, method, payload, messageId } = event.data;\n\n if (type === \"message\") {\n // Fire-and-forget message - dispatch to on() listeners\n const listeners = messageListeners.get(method);\n if (listeners) {\n listeners.forEach((callback) => {\n try {\n callback(payload);\n } catch (err) {\n log.error(`Error in on('${method}') listener:`, err);\n }\n });\n }\n } else if (type === \"request\") {\n // Request expecting response - dispatch to handle() handler\n const handler = requestHandlers.get(method);\n if (handler) {\n try {\n const result = handler(payload);\n Promise.resolve(result)\n .then((response) => {\n port.postMessage({\n type: \"response\",\n messageId,\n payload: response,\n });\n })\n .catch((err) => {\n port.postMessage({\n type: \"response\",\n messageId,\n error: err instanceof Error ? err.message : String(err),\n });\n });\n } catch (err) {\n port.postMessage({\n type: \"response\",\n messageId,\n error: err instanceof Error ? err.message : String(err),\n });\n }\n } else {\n port.postMessage({\n type: \"response\",\n messageId,\n error: `No handler registered for method '${method}'`,\n });\n }\n } else if (type === \"response\" && messageId) {\n // Response to our outgoing request\n const pending = pendingRequests.get(messageId);\n if (pending) {\n pendingRequests.delete(messageId);\n if (event.data.error) {\n pending.reject(new Error(event.data.error));\n } else {\n pending.resolve(payload);\n }\n }\n }\n });\n\n port.start();\n\n return {\n // Fire-and-forget messaging\n send: (method: string, args?: any) => {\n port.postMessage({ type: \"message\", method, payload: args });\n },\n\n on: (method: string, callback: (args: any) => void) => {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n if (!messageListeners.has(method)) {\n messageListeners.set(method, new Set());\n }\n messageListeners.get(method)!.add(callback);\n },\n\n once: (method: string, callback: (args: any) => void) => {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n const wrapper = (args: any) => {\n // Remove before calling to prevent issues if callback throws\n const listeners = messageListeners.get(method);\n if (listeners) {\n listeners.delete(wrapper);\n if (listeners.size === 0) {\n messageListeners.delete(method);\n }\n }\n callback(args);\n };\n if (!messageListeners.has(method)) {\n messageListeners.set(method, new Set());\n }\n messageListeners.get(method)!.add(wrapper);\n },\n\n off: (method: string, callback: (args: any) => void) => {\n const listeners = messageListeners.get(method);\n if (listeners) {\n listeners.delete(callback);\n if (listeners.size === 0) {\n messageListeners.delete(method);\n }\n }\n },\n\n // Request/response\n request: (\n method: string,\n args?: any,\n timeout: number = 30000,\n ): Promise<any> => {\n return new Promise((resolve, reject) => {\n const messageId = generateMessageId();\n\n // Timeout after specified duration\n const timeoutId = setTimeout(() => {\n if (pendingRequests.has(messageId)) {\n pendingRequests.delete(messageId);\n reject(new Error(`Request '${method}' timed out`));\n }\n }, timeout);\n\n pendingRequests.set(messageId, {\n resolve: (value) => {\n clearTimeout(timeoutId);\n resolve(value);\n },\n reject: (reason) => {\n clearTimeout(timeoutId);\n reject(reason);\n },\n });\n\n port.postMessage({\n type: \"request\",\n method,\n payload: args,\n messageId,\n });\n });\n },\n\n handle: (method: string, handler: (args: any) => any | Promise<any>) => {\n if (typeof handler !== \"function\") {\n throw new Error(\"Handler must be a function\");\n }\n if (requestHandlers.has(method)) {\n throw new Error(`Handler already registered for method '${method}'`);\n }\n requestHandlers.set(method, handler);\n },\n\n removeHandler: (method: string) => {\n requestHandlers.delete(method);\n },\n\n // Connection management\n isConnected: () => {\n return portStore.has(connectionId);\n },\n\n onClose: (callback: () => void) => {\n port.on(\"close\", callback);\n },\n\n close: () => {\n portStore.delete(connectionId);\n messageListeners.clear();\n requestHandlers.clear();\n port.close();\n },\n };\n}\n\n/**\n * Handle an incoming AppBus port (can be service or client role)\n *\n * @param port The MessagePort received\n * @param data Connection metadata\n * @param state AppBus state (services, ports, pending requests)\n * @param logPrefix Prefix for log messages\n */\nexport function handleAppBusPort(\n port: IPCPort,\n data: {\n connectionId: string;\n role: \"service\" | \"client\";\n serviceName: string;\n targetAppId?: string;\n sourceAppId?: string;\n },\n state: AppBusState,\n): void {\n const { connectionId, role, serviceName, targetAppId, sourceAppId } = data;\n\n if (role === \"service\") {\n // A client is connecting to our service\n log.info(\n `Received connection from ${sourceAppId} for service ${serviceName}`,\n );\n\n const onConnect = state.registeredServices.get(serviceName);\n if (!onConnect) {\n log.error(\n `No onConnect callback registered for service \"${serviceName}\"`,\n );\n return;\n }\n\n // Create a bidirectional AppBusConnection for the service to use\n const connection = createPortConnection(\n port,\n connectionId,\n state.connectedPorts,\n state.pendingRequests,\n state.messageIdGenerator,\n );\n\n // Call the onConnect callback with the connection and client info\n try {\n onConnect(connection, { appId: sourceAppId || \"unknown\" });\n } catch (err) {\n log.error(\n `Error in onConnect callback for service \"${serviceName}\":`,\n err,\n );\n }\n } else if (role === \"client\") {\n // We're connecting to another app's service\n log.info(`Connected to ${targetAppId}/${serviceName}`);\n\n setupClientPort({\n port,\n connectionId,\n portStore: state.connectedPorts,\n pendingRequests: state.pendingRequests,\n pendingPortArrivals: state.pendingPortArrivals,\n });\n }\n}\n/**\n * Handle a port being closed from the other side\n * Triggered by a notification from the main process\n *\n * @param state AppBus state\n * @param connectionId The ID of the closed connection\n */\nexport function handlePortClosed(\n state: AppBusState,\n connectionId: string,\n): void {\n const port = state.connectedPorts.get(connectionId);\n if (port) {\n port.close();\n state.connectedPorts.delete(connectionId);\n }\n}\n", "import type {\n AppBusAPI,\n AppBusConnection,\n EdenAPI,\n ServiceConnectCallback,\n ServiceInfo,\n} from \"@edenapp/types\";\nimport type { AppBusState, IPCPort } from \"./port-channel\";\nimport { createPortConnection, waitForPort } from \"./port-channel\";\n\n/**\n * Interface for sending shell commands to the main process\n */\nexport interface ShellTransport {\n exec(command: string, args: any): Promise<any>;\n}\n\n/**\n * Configuration for AppBus API\n */\nexport interface AppBusConfig {\n transport: ShellTransport;\n isBackend?: boolean;\n}\n\n/**\n * Create the EdenAPI object\n */\nexport function createEdenAPI(\n transport: ShellTransport,\n eventSubscriptions: Map<string, Set<Function>>,\n options?: { getLaunchArgs?: () => string[] },\n): EdenAPI {\n return {\n shellCommand: (command: string, args: any) => {\n return transport.exec(command, args);\n },\n\n subscribe: async (eventName: string, callback: Function) => {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n\n // Register with backend/main\n await transport.exec(\"event/subscribe\", { eventName });\n\n // Register callback locally\n if (!eventSubscriptions.has(eventName)) {\n eventSubscriptions.set(eventName, new Set());\n }\n eventSubscriptions.get(eventName)!.add(callback);\n },\n\n unsubscribe: async (eventName: string, callback: Function) => {\n const callbacks = eventSubscriptions.get(eventName);\n if (callbacks) {\n callbacks.delete(callback);\n\n // If no more callbacks, unregister from backend/main\n if (callbacks.size === 0) {\n eventSubscriptions.delete(eventName);\n await transport.exec(\"event/unsubscribe\", { eventName });\n }\n }\n },\n\n isEventSupported: (eventName: string) => {\n return transport.exec(\"event/exists\", { eventName });\n },\n\n getLaunchArgs: (): string[] => {\n if (options?.getLaunchArgs) {\n return options.getLaunchArgs();\n }\n return [];\n },\n };\n}\n\n/**\n * Create the AppBusAPI object\n */\nexport function createAppBusAPI(\n config: AppBusConfig,\n state: AppBusState,\n): AppBusAPI {\n const { transport, isBackend } = config;\n const {\n registeredServices,\n connectedPorts,\n pendingRequests,\n messageIdGenerator,\n } = state;\n\n return {\n exposeService: async (\n serviceName: string,\n onConnect: ServiceConnectCallback,\n options?: {\n description?: string;\n allowedClients?: string[];\n },\n ): Promise<{ success: boolean; error?: string }> => {\n if (typeof onConnect !== \"function\") {\n throw new Error(\"onConnect callback must be a function\");\n }\n\n // Store the onConnect callback locally\n // When a client connects, handleAppBusPort will call this with the connection\n registeredServices.set(serviceName, onConnect);\n\n // Register with main process\n const result = await transport.exec(\"appbus/register\", {\n serviceName,\n description: options?.description,\n allowedClients: options?.allowedClients,\n isBackend,\n });\n\n if (!result.success) {\n registeredServices.delete(serviceName);\n }\n\n return result;\n },\n\n unexposeService: async (\n serviceName: string,\n ): Promise<{ success: boolean }> => {\n registeredServices.delete(serviceName);\n return transport.exec(\"appbus/unregister\", {\n serviceName,\n });\n },\n\n connect: async (\n targetAppId: string,\n serviceName: string,\n ): Promise<AppBusConnection | { error: string }> => {\n // Request connection through shell command\n const result = await transport.exec(\"appbus/connect\", {\n targetAppId,\n serviceName,\n isBackend,\n });\n\n if (!result.success) {\n return { error: result.error || \"Connection failed\" };\n }\n\n const { connectionId } = result;\n\n // Wait for the port to be received via handleAppBusPort\n let port: IPCPort;\n try {\n port = await waitForPort(connectionId, state, 5000);\n } catch (err) {\n return {\n error:\n err instanceof Error ? err.message : \"MessagePort not received\",\n };\n }\n\n // Use shared utility to create connection object\n return createPortConnection(\n port,\n connectionId,\n connectedPorts,\n pendingRequests,\n messageIdGenerator,\n );\n },\n\n listServices: async (): Promise<{ services: ServiceInfo[] }> => {\n return transport.exec(\"appbus/list\", {});\n },\n\n listServicesByApp: async (\n appId: string,\n ): Promise<{ services: ServiceInfo[] }> => {\n return transport.exec(\"appbus/list-by-app\", { appId });\n },\n };\n}\n", "import {\n type CallsiteInfo,\n log,\n logFromConsole,\n setLogContext,\n} from \"../logging\";\n/**\n * Backend Runtime\n *\n * This module runs inside Electron's utility process (forked by BackendManager).\n * It provides the global `worker` object with `edenAPI` and `appBus` APIs,\n * mirroring the frontend's `window.edenAPI` and `window.appBus`.\n *\n * Environment variables expected:\n * - EDEN_APP_ID: The app's identifier\n * - EDEN_BACKEND_ENTRY: Path to the actual backend entry point\n * - EDEN_INSTALL_PATH: Path to the app's installation directory\n * - EDEN_MANIFEST: JSON-stringified app manifest\n */\n\nimport type { AppBusAPI, AppBusConnection, EdenAPI } from \"@edenapp/types\";\n\nimport type { WorkerGlobal } from \"@edenapp/types/worker\";\nimport {\n createAppBusAPI,\n createEdenAPI,\n type ShellTransport,\n} from \"./common/api-factory\";\nimport {\n createAppBusState,\n createMessageIdGenerator,\n createPortConnection,\n handlePortClosed,\n handleAppBusPort as handlePortSetup,\n wrapElectronPort,\n} from \"./common/port-channel\";\n\n// Electron utility process extends the Node process with parentPort\n// This is available when running inside utilityProcess.fork()\n// We use Electron's types which should be available\n\n// Get app info from environment\nconst appId = process.env.EDEN_APP_ID!;\nconst backendEntry = process.env.EDEN_BACKEND_ENTRY!;\nconst manifest = JSON.parse(process.env.EDEN_MANIFEST || \"{}\");\n\nsetLogContext({ appId });\n\nconst captureConsoleCallsite = (): CallsiteInfo | undefined => {\n const err = new Error();\n Error.captureStackTrace?.(err, captureConsoleCallsite);\n const stack = err.stack;\n if (!stack) return undefined;\n\n const lines = stack.split(\"\\n\").slice(1);\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n if (\n trimmed.includes(\"backend-preload\") ||\n trimmed.includes(\"/logging/\") ||\n trimmed.includes(\"\\\\logging\\\\\")\n ) {\n continue;\n }\n\n const match =\n trimmed.match(/\\(([^)]+):(\\d+):(\\d+)\\)$/) ??\n trimmed.match(/at\\s+([^\\s]+):(\\d+):(\\d+)$/);\n\n if (!match) continue;\n\n const file = match[1];\n const lineNumber = Number(match[2]);\n const columnNumber = Number(match[3]);\n\n if (!file || Number.isNaN(lineNumber)) continue;\n\n return {\n file,\n line: lineNumber,\n column: Number.isNaN(columnNumber) ? undefined : columnNumber,\n };\n }\n\n return undefined;\n};\n\nconsole.log = (...args: unknown[]) =>\n logFromConsole({ level: \"info\", args, callsite: captureConsoleCallsite() });\nconsole.info = (...args: unknown[]) =>\n logFromConsole({ level: \"info\", args, callsite: captureConsoleCallsite() });\nconsole.warn = (...args: unknown[]) =>\n logFromConsole({ level: \"warn\", args, callsite: captureConsoleCallsite() });\nconsole.error = (...args: unknown[]) =>\n logFromConsole({ level: \"error\", args, callsite: captureConsoleCallsite() });\nconsole.debug = (...args: unknown[]) =>\n logFromConsole({ level: \"debug\", args, callsite: captureConsoleCallsite() });\nconsole.trace = (...args: unknown[]) =>\n logFromConsole({ level: \"trace\", args, callsite: captureConsoleCallsite() });\n\n// Extract launch args\nlet launchArgs: string[] = [];\nconst launchArgsArg = process.argv.find((arg) =>\n arg.startsWith(\"--launch-args=\"),\n);\nif (launchArgsArg) {\n try {\n const jsonStr = launchArgsArg.split(\"=\").slice(1).join(\"=\");\n launchArgs = JSON.parse(jsonStr);\n } catch (e) {\n log.error(\"Failed to parse launch args:\", e);\n }\n}\n\n// Port for direct frontend<->backend communication (received from main)\nlet frontendPort: Electron.MessagePortMain | null = null;\n\n// Port for IPC with main process (process.parentPort)\nconst parentPort = process.parentPort;\nif (!parentPort) {\n log.error(\"Not running in utility process - parentPort not available\");\n process.exit(1);\n}\n\n// Event subscriptions\nconst eventSubscriptions: Map<string, Set<Function>> = new Map();\n\n// Pending shell command requests\nconst pendingCommands: Map<\n string,\n { resolve: (value: any) => void; reject: (reason: any) => void }\n> = new Map();\nlet commandIdCounter = 0;\n\n// AppBus state\nconst appBusState = createAppBusState(\"backend-appbus\");\n\n/**\n * Generate unique command ID\n */\nfunction generateCommandId(): string {\n return `cmd-${appId}-${Date.now()}-${++commandIdCounter}`;\n}\n\n/**\n * Send a shell command to main process and wait for response\n */\nasync function shellCommand(command: string, args: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const commandId = generateCommandId();\n\n // Set timeout\n const timeout = setTimeout(() => {\n pendingCommands.delete(commandId);\n reject(new Error(`Shell command '${command}' timed out`));\n }, 30000);\n\n pendingCommands.set(commandId, {\n resolve: (value) => {\n clearTimeout(timeout);\n resolve(value);\n },\n reject: (reason) => {\n clearTimeout(timeout);\n reject(reason);\n },\n });\n\n parentPort!.postMessage({\n type: \"shell-command\",\n commandId,\n command,\n args: { ...args, _callerAppId: appId },\n });\n });\n}\n\n// ===================================================================\n// Shared API Implementation\n// ===================================================================\n\n// Shell transport implementation using internal shellCommand\nconst shellTransport: ShellTransport = {\n exec: (command: string, args: any) => {\n return shellCommand(command, args);\n },\n};\n\n/**\n * Eden API implementation for utility process\n */\nconst edenAPI: EdenAPI = createEdenAPI(shellTransport, eventSubscriptions, {\n getLaunchArgs: () => launchArgs,\n});\n\n/**\n * AppBus API implementation for utility process\n */\nconst appBus: AppBusAPI = createAppBusAPI(\n { transport: shellTransport, isBackend: true },\n appBusState,\n);\n\n// Frontend communication state\nlet frontendConnection: AppBusConnection | null = null;\n\n// Check if this app has a frontend (from manifest)\nconst hasFrontend = !!manifest.frontend?.entry;\n\n// appAPI will be set after frontend port is received (for apps with frontend)\n// For backend-only apps, worker.appAPI will be undefined\n\n/**\n * Handle messages from main process (via parentPort)\n */\nparentPort.on(\"message\", (event: Electron.MessageEvent) => {\n const message = event.data;\n\n if (message.type === \"shell-command-response\") {\n // Response to a shell command we sent\n const pending = pendingCommands.get(message.commandId);\n if (pending) {\n pendingCommands.delete(message.commandId);\n if (message.error) {\n pending.reject(new Error(message.error));\n } else {\n pending.resolve(message.result);\n }\n }\n } else if (message.type === \"shell-event\") {\n // Event notification from main\n const { eventName, payload } = message;\n const callbacks = eventSubscriptions.get(eventName);\n if (callbacks) {\n callbacks.forEach((callback) => {\n try {\n callback(payload);\n } catch (err) {\n log.error(`Error in event callback for ${eventName}:`, err);\n }\n });\n }\n } else if (message.type === \"appbus-port\") {\n // AppBus connection port\n const [port] = event.ports;\n if (port) {\n handleAppBusPort(port, message);\n }\n } else if (message.type === \"appbus-port-closed\") {\n // AppBus connection closed\n handlePortClosed(appBusState, message.connectionId);\n } else if (message.type === \"shutdown\") {\n // Graceful shutdown request\n log.info(`Shutdown requested`);\n process.exit(0);\n }\n});\n\n/**\n * Set up frontend port using createPortConnection\n */\nfunction setupFrontendPort(port: Electron.MessagePortMain): void {\n const wrappedPort = wrapElectronPort(port);\n\n // Create connection using shared utility\n frontendConnection = createPortConnection(\n wrappedPort,\n \"__frontend__\",\n new Map([[\"__frontend__\", wrappedPort]]),\n new Map(),\n createMessageIdGenerator(\"backend-to-frontend\"),\n );\n}\n\n/**\n * Handle AppBus port connections (using shared utility)\n */\nfunction handleAppBusPort(port: Electron.MessagePortMain, data: any): void {\n // Wrap Electron MessagePortMain to IPCPort interface\n const wrappedPort = wrapElectronPort(port);\n\n handlePortSetup(wrappedPort, data, appBusState);\n}\n\n/**\n * Load and execute the actual backend entry point\n */\nasync function loadBackendEntry(): Promise<void> {\n try {\n log.info(`Loading backend entry: ${backendEntry}`);\n await import(backendEntry);\n log.info(`Backend loaded successfully`);\n\n // Signal to main that we're ready\n parentPort!.postMessage({ type: \"backend-ready\" });\n } catch (error) {\n log.error(`Failed to load backend:`, error);\n parentPort!.postMessage({\n type: \"backend-error\",\n error: error instanceof Error ? error.message : String(error),\n });\n process.exit(1);\n }\n}\n\n/**\n * Wait for frontend port (if app has frontend) then load backend\n */\nasync function initializeBackend(): Promise<void> {\n if (hasFrontend) {\n // Wait for init-port message before loading backend\n await new Promise<void>((resolve) => {\n const handler = (event: Electron.MessageEvent) => {\n if (event.data.type === \"init-port\") {\n const [port] = event.ports;\n if (port) {\n frontendPort = port;\n setupFrontendPort(port);\n log.info(`Frontend port initialized`);\n }\n parentPort.removeListener(\"message\", handler);\n resolve();\n }\n };\n parentPort.on(\"message\", handler);\n });\n }\n\n // Now load backend - worker.appAPI is ready (for apps with frontend)\n await loadBackendEntry();\n}\n\n/**\n * Get AppAPI connection\n * Throws if app has no frontend\n */\nfunction getAppAPI(): AppBusConnection {\n if (!frontendConnection) {\n throw new Error(\n \"AppAPI not available: This app has no frontend connection. \" +\n \"Ensure 'frontend.entry' is defined in manifest.json if you need frontend communication.\",\n );\n }\n return frontendConnection;\n}\n\n/**\n * Set up the global worker object\n */\n// For apps with frontend, appAPI will be set in initializeBackend after port is received\n((globalThis as any).worker as WorkerGlobal) = {\n edenAPI,\n appBus,\n getAppAPI,\n};\n\n// Start initialization\ninitializeBackend();\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["LOG_LEVEL_ORDER", "parseLogLevel", "value", "normalized", "isLogLevelEnabled", "level", "minLevel", "globalContext", "config", "resolveDefaultConfig", "baseConsole", "setLogContext", "next", "globalContext", "createLogger", "context", "args", "emit", "log", "logFromConsole", "record", "emit", "level", "isLogLevelEnabled", "config", "timestamp", "context", "mergeContext", "callsite", "captureCallsite", "prefix", "formatPrefix", "target", "consoleForLevel", "getBaseContext", "envAppId", "getEnvValue", "globalAppId", "detectProcessType", "globalContext", "processObj", "type", "resolveDefaultConfig", "envLevel", "parseLogLevel", "envFormat", "envPathMode", "isTest", "isRenderer", "getEnvBool", "useLiveConsole", "baseConsole", "_a", "_b", "_c", "_d", "_e", "parts", "file", "shortenPath", "err", "stack", "lines", "line", "trimmed", "match", "lineNumber", "columnNumber", "path", "mode", "normalized", "cwd", "normalizedPath", "distIndex", "sdkIndex", "segments", "key", "globalValue", "fallback", "value", "createMessageIdGenerator", "prefix", "counter", "createAppBusState", "waitForPort", "connectionId", "state", "timeoutMs", "existing", "resolve", "reject", "timeout", "port", "reason", "setupClientPort", "options", "portStore", "pendingRequests", "pendingPortArrivals", "pending", "event", "type", "messageId", "payload", "error", "createPortConnection", "generateMessageId", "messageListeners", "requestHandlers", "method", "listeners", "callback", "err", "log", "handler", "result", "response", "args", "wrapper", "timeoutId", "value", "handleAppBusPort", "data", "role", "serviceName", "targetAppId", "sourceAppId", "onConnect", "connection", "handlePortClosed", "createEdenAPI", "transport", "eventSubscriptions", "options", "command", "args", "eventName", "callback", "callbacks", "createAppBusAPI", "config", "state", "isBackend", "registeredServices", "connectedPorts", "pendingRequests", "messageIdGenerator", "serviceName", "onConnect", "result", "targetAppId", "connectionId", "port", "waitForPort", "err", "createPortConnection", "appId", "appId", "backendEntry", "manifest", "setLogContext", "captureConsoleCallsite", "_a", "err", "stack", "lines", "line", "trimmed", "match", "file", "lineNumber", "columnNumber", "args", "logFromConsole", "launchArgs", "launchArgsArg", "arg", "jsonStr", "log", "frontendPort", "parentPort", "eventSubscriptions", "pendingCommands", "commandIdCounter", "appBusState", "createAppBusState", "generateCommandId", "shellCommand", "command", "resolve", "reject", "commandId", "timeout", "value", "reason", "shellTransport", "edenAPI", "createEdenAPI", "appBus", "createAppBusAPI", "frontendConnection", "hasFrontend", "event", "message", "pending", "eventName", "payload", "callbacks", "callback", "port", "handleAppBusPort", "handlePortClosed", "setupFrontendPort", "wrappedPort", "createPortConnection", "createMessageIdGenerator", "data", "loadBackendEntry", "error", "initializeBackend", "handler", "getAppAPI"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppChannelHandler.d.ts","sourceRoot":"","sources":["../../src/appbus/AppChannelHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AppChannelHandler.d.ts","sourceRoot":"","sources":["../../src/appbus/AppChannelHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;GAMG;AACH,qBACa,iBAAiB;IAChB,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,iBAAiB;IAMrD;;;OAGG;IAEG,cAAc,CAAC,IAAI,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBjD;;;OAGG;IAEG,gBAAgB,CAAC,IAAI,EAAE;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAYjC;;;OAGG;IAEG,UAAU,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IAIxD;;;OAGG;IAEG,eAAe,CAAC,IAAI,EAAE;QAC1B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IAQxC;;;;OAIG;IAEG,aAAa,CAAC,IAAI,EAAE;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,aAAa,CAAC;CAQ3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppChannelHandler.js","sourceRoot":"","sources":["../../src/appbus/AppChannelHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AppChannelHandler.js","sourceRoot":"","sources":["../../src/appbus/AppChannelHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gCAAoD;AAGpD;;;;;;GAMG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACR;IAApB,YAAoB,cAAiC;QAAjC,mBAAc,GAAd,cAAc,CAAmB;IAAG,CAAC;IAEzD,sEAAsE;IACtE,uBAAuB;IACvB,sEAAsE;IAEtE;;;OAGG;IAEG,AAAN,KAAK,CAAC,cAAc,CAAC,IAMpB;QACC,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,eAAe,CACjC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,oBAAoB,EACzB;gBACE,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CACF,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IAEG,AAAN,KAAK,CAAC,gBAAgB,CAAC,IAGtB;QACC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CACnD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,sEAAsE;IACtE,oBAAoB;IACpB,sEAAsE;IAEtE;;;OAGG;IAEG,AAAN,KAAK,CAAC,UAAU;QACd,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC;IAC1D,CAAC;IAED;;;OAGG;IAEG,AAAN,KAAK,CAAC,eAAe,CAAC,IAErB;QACC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,sEAAsE;IACtE,qBAAqB;IACrB,sEAAsE;IAEtE;;;;OAIG;IAEG,AAAN,KAAK,CAAC,aAAa,CAAC,IAKnB;QACC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAChC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,CACjB,CAAC;IACJ,CAAC;CACF,CAAA;AArGY,8CAAiB;AAYtB;IADL,IAAA,iBAAW,EAAC,UAAU,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;uDAyBjD;AAOK;IADL,IAAA,iBAAW,EAAC,YAAY,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;yDAUnD;AAWK;IADL,IAAA,iBAAW,EAAC,MAAM,CAAC;;;;mDAGnB;AAOK;IADL,IAAA,iBAAW,EAAC,aAAa,CAAC;;;;wDAK1B;AAYK;IADL,IAAA,iBAAW,EAAC,SAAS,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;;;;sDAajD;4BApGU,iBAAiB;IAD7B,IAAA,mBAAa,EAAC,QAAQ,CAAC;;GACX,iBAAiB,CAqG7B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RegisteredService, ServiceInfo
|
|
1
|
+
import type { ConnectResult, RegisteredService, ServiceInfo } from "@edenapp/types";
|
|
2
2
|
import { CommandRegistry } from "../ipc";
|
|
3
3
|
import { BackendManager } from "../process-manager/BackendManager";
|
|
4
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppChannelManager.d.ts","sourceRoot":"","sources":["../../src/appbus/AppChannelManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AppChannelManager.d.ts","sourceRoot":"","sources":["../../src/appbus/AppChannelManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE;;;;;;GAMG;AACH,qBAEa,iBAAiB;IAC5B,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAA6C;IAE7D,8CAA8C;IAC9C,OAAO,CAAC,WAAW,CAQL;IAEd,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,cAAc,CAAiB;gBAGZ,eAAe,EAAE,eAAe,EACpB,cAAc,EAAE,cAAc;IAOrE;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC5D,IAAI;IA2BP;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAW9D;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAmB5C;;OAEG;IACH,UAAU,CACR,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,iBAAiB,GAAG,SAAS;IAIhC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAUzE;;OAEG;IACH,OAAO,CACL,cAAc,EAAE,MAAM,EACtB,sBAAsB,EAAE,MAAM,EAC9B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,aAAa;IA6HhB;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAW9C;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA+B3C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,YAAY,IAAI,WAAW,EAAE;IAQ7B;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAI9C;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAShB"}
|
|
@@ -16,8 +16,9 @@ exports.AppChannelManager = void 0;
|
|
|
16
16
|
const electron_1 = require("electron");
|
|
17
17
|
const tsyringe_1 = require("tsyringe");
|
|
18
18
|
const ipc_1 = require("../ipc");
|
|
19
|
-
const
|
|
19
|
+
const logging_1 = require("../logging");
|
|
20
20
|
const BackendManager_1 = require("../process-manager/BackendManager");
|
|
21
|
+
const AppChannelHandler_1 = require("./AppChannelHandler");
|
|
21
22
|
/**
|
|
22
23
|
* AppChannelManager
|
|
23
24
|
*
|
|
@@ -64,7 +65,7 @@ let AppChannelManager = class AppChannelManager {
|
|
|
64
65
|
allowedClients: options?.allowedClients,
|
|
65
66
|
};
|
|
66
67
|
this.services.set(key, service);
|
|
67
|
-
|
|
68
|
+
logging_1.log.info(`Registered service "${serviceName}" from app "${appId}"`);
|
|
68
69
|
}
|
|
69
70
|
/**
|
|
70
71
|
* Unregister a service
|
|
@@ -73,7 +74,7 @@ let AppChannelManager = class AppChannelManager {
|
|
|
73
74
|
const key = this.serviceKey(appId, serviceName);
|
|
74
75
|
const deleted = this.services.delete(key);
|
|
75
76
|
if (deleted) {
|
|
76
|
-
|
|
77
|
+
logging_1.log.info(`Unregistered service "${serviceName}" from app "${appId}"`);
|
|
77
78
|
}
|
|
78
79
|
return deleted;
|
|
79
80
|
}
|
|
@@ -89,7 +90,7 @@ let AppChannelManager = class AppChannelManager {
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
if (count > 0) {
|
|
92
|
-
|
|
93
|
+
logging_1.log.info(`Unregistered ${count} services from app "${appId}"`);
|
|
93
94
|
}
|
|
94
95
|
// Also close all active connections for this app
|
|
95
96
|
this.closeConnectionsForApp(appId);
|
|
@@ -166,7 +167,7 @@ let AppChannelManager = class AppChannelManager {
|
|
|
166
167
|
targetAppId,
|
|
167
168
|
targetWebContentsId: service.webContentsId,
|
|
168
169
|
});
|
|
169
|
-
|
|
170
|
+
logging_1.log.info(`Creating channel: ${requesterAppId} -> ${targetAppId}:${serviceName}`);
|
|
170
171
|
// Transfer port1 to requester
|
|
171
172
|
if (requesterWebContents) {
|
|
172
173
|
requesterWebContents.postMessage("appbus-port", {
|
|
@@ -216,7 +217,7 @@ let AppChannelManager = class AppChannelManager {
|
|
|
216
217
|
return false;
|
|
217
218
|
}
|
|
218
219
|
this.connections.delete(connectionId);
|
|
219
|
-
|
|
220
|
+
logging_1.log.info(`Closed connection: ${connectionId}`);
|
|
220
221
|
return true;
|
|
221
222
|
}
|
|
222
223
|
/**
|
|
@@ -246,7 +247,7 @@ let AppChannelManager = class AppChannelManager {
|
|
|
246
247
|
* Helper to notify a process that a port was closed
|
|
247
248
|
*/
|
|
248
249
|
notifyPortClosed(appId, webContentsId, connectionId) {
|
|
249
|
-
|
|
250
|
+
logging_1.log.info(`Notifying port closed for app "${appId}" (webContentsId: ${webContentsId})`);
|
|
250
251
|
if (webContentsId) {
|
|
251
252
|
const wc = electron_1.webContents.fromId(webContentsId);
|
|
252
253
|
if (wc && !wc.isDestroyed()) {
|
|
@@ -297,7 +298,7 @@ let AppChannelManager = class AppChannelManager {
|
|
|
297
298
|
this.closeConnection(connectionId);
|
|
298
299
|
}
|
|
299
300
|
this.services.clear();
|
|
300
|
-
|
|
301
|
+
logging_1.log.info("Destroyed");
|
|
301
302
|
}
|
|
302
303
|
};
|
|
303
304
|
exports.AppChannelManager = AppChannelManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppChannelManager.js","sourceRoot":"","sources":["../../src/appbus/AppChannelManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AppChannelManager.js","sourceRoot":"","sources":["../../src/appbus/AppChannelManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { WallpaperConfig, WallpaperPreset } from "@edenapp/types";
|
|
2
|
+
import type { AppearanceManager } from "./AppearanceManager";
|
|
3
|
+
export declare class AppearanceHandler {
|
|
4
|
+
private manager;
|
|
5
|
+
constructor(manager: AppearanceManager);
|
|
6
|
+
handleSetWallpaper({ wallpaper, }: {
|
|
7
|
+
wallpaper: WallpaperConfig;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
handleGetWallpaper(): Promise<{
|
|
10
|
+
wallpaper: WallpaperPreset;
|
|
11
|
+
}>;
|
|
12
|
+
handleGetPresets(): Promise<{
|
|
13
|
+
solid: WallpaperPreset[];
|
|
14
|
+
gradients: WallpaperPreset[];
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=AppearanceHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppearanceHandler.d.ts","sourceRoot":"","sources":["../../src/appearance/AppearanceHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,qBACa,iBAAiB;IAChB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB;IAGxC,kBAAkB,CAAC,EACvB,SAAS,GACV,EAAE;QACD,SAAS,EAAE,eAAe,CAAC;KAC5B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKX,kBAAkB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,eAAe,CAAA;KAAE,CAAC;IAM7D,gBAAgB,IAAI,OAAO,CAAC;QAChC,KAAK,EAAE,eAAe,EAAE,CAAC;QACzB,SAAS,EAAE,eAAe,EAAE,CAAC;KAC9B,CAAC;CAGH"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AppearanceHandler = void 0;
|
|
13
|
+
const ipc_1 = require("../ipc");
|
|
14
|
+
let AppearanceHandler = class AppearanceHandler {
|
|
15
|
+
manager;
|
|
16
|
+
constructor(manager) {
|
|
17
|
+
this.manager = manager;
|
|
18
|
+
}
|
|
19
|
+
async handleSetWallpaper({ wallpaper, }) {
|
|
20
|
+
await this.manager.setWallpaper(wallpaper);
|
|
21
|
+
}
|
|
22
|
+
async handleGetWallpaper() {
|
|
23
|
+
const wallpaper = await this.manager.getWallpaper();
|
|
24
|
+
return { wallpaper };
|
|
25
|
+
}
|
|
26
|
+
async handleGetPresets() {
|
|
27
|
+
return this.manager.getPresets();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.AppearanceHandler = AppearanceHandler;
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, ipc_1.EdenHandler)("set-wallpaper", { permission: "manage" }),
|
|
33
|
+
__metadata("design:type", Function),
|
|
34
|
+
__metadata("design:paramtypes", [Object]),
|
|
35
|
+
__metadata("design:returntype", Promise)
|
|
36
|
+
], AppearanceHandler.prototype, "handleSetWallpaper", null);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, ipc_1.EdenHandler)("get-wallpaper"),
|
|
39
|
+
__metadata("design:type", Function),
|
|
40
|
+
__metadata("design:paramtypes", []),
|
|
41
|
+
__metadata("design:returntype", Promise)
|
|
42
|
+
], AppearanceHandler.prototype, "handleGetWallpaper", null);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, ipc_1.EdenHandler)("get-presets"),
|
|
45
|
+
__metadata("design:type", Function),
|
|
46
|
+
__metadata("design:paramtypes", []),
|
|
47
|
+
__metadata("design:returntype", Promise)
|
|
48
|
+
], AppearanceHandler.prototype, "handleGetPresets", null);
|
|
49
|
+
exports.AppearanceHandler = AppearanceHandler = __decorate([
|
|
50
|
+
(0, ipc_1.EdenNamespace)("appearance"),
|
|
51
|
+
__metadata("design:paramtypes", [Function])
|
|
52
|
+
], AppearanceHandler);
|
|
53
|
+
//# sourceMappingURL=AppearanceHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppearanceHandler.js","sourceRoot":"","sources":["../../src/appearance/AppearanceHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gCAAoD;AAI7C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACR;IAApB,YAAoB,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAG5C,AAAN,KAAK,CAAC,kBAAkB,CAAC,EACvB,SAAS,GAGV;QACC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAGK,AAAN,KAAK,CAAC,kBAAkB;QACtB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACpD,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAGK,AAAN,KAAK,CAAC,gBAAgB;QAIpB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;CACF,CAAA;AAzBY,8CAAiB;AAItB;IADL,IAAA,iBAAW,EAAC,eAAe,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;2DAOtD;AAGK;IADL,IAAA,iBAAW,EAAC,eAAe,CAAC;;;;2DAI5B;AAGK;IADL,IAAA,iBAAW,EAAC,aAAa,CAAC;;;;yDAM1B;4BAxBU,iBAAiB;IAD7B,IAAA,mBAAa,EAAC,YAAY,CAAC;;GACf,iBAAiB,CAyB7B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { WallpaperConfig, WallpaperPreset } from "@edenapp/types";
|
|
2
|
+
import { CommandRegistry, EdenEmitter, IPCBridge } from "../ipc";
|
|
3
|
+
import { SettingsManager } from "../settings";
|
|
4
|
+
interface AppearanceEvents {
|
|
5
|
+
"wallpaper-changed": WallpaperPreset;
|
|
6
|
+
}
|
|
7
|
+
export declare class AppearanceManager extends EdenEmitter<AppearanceEvents> {
|
|
8
|
+
private settingsManager;
|
|
9
|
+
private currentWallpaper;
|
|
10
|
+
private handler;
|
|
11
|
+
constructor(ipcBridge: IPCBridge, commandRegistry: CommandRegistry, settingsManager: SettingsManager);
|
|
12
|
+
initialize(): Promise<void>;
|
|
13
|
+
setWallpaper(config: WallpaperConfig): Promise<void>;
|
|
14
|
+
getWallpaper(): Promise<WallpaperPreset>;
|
|
15
|
+
getPresets(): {
|
|
16
|
+
solid: WallpaperPreset[];
|
|
17
|
+
gradients: WallpaperPreset[];
|
|
18
|
+
};
|
|
19
|
+
private resolveWallpaper;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=AppearanceManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppearanceManager.d.ts","sourceRoot":"","sources":["../../src/appearance/AppearanceManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAiB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,UAAU,gBAAgB;IACxB,mBAAmB,EAAE,eAAe,CAAC;CACtC;AAgDD,qBAEa,iBAAkB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;IASvC,OAAO,CAAC,eAAe;IARlD,OAAO,CAAC,gBAAgB,CAErB;IACH,OAAO,CAAC,OAAO,CAAoB;gBAGd,SAAS,EAAE,SAAS,EACd,eAAe,EAAE,eAAe,EACxB,eAAe,EAAE,eAAe;IAO7D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpD,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAIvC,UAAU;;;;IAQjB,OAAO,CAAC,gBAAgB;CAgBzB"}
|