@dxos/app-framework 0.8.4-main.f9ba587 → 0.8.4-main.fcfe5033a5
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/.storybook/main.mts +9 -0
- package/.storybook/preview.mts +8 -0
- package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
- package/dist/lib/browser/capability-EYY7KYU5.mjs +35 -0
- package/dist/lib/browser/capability-EYY7KYU5.mjs.map +7 -0
- package/dist/lib/browser/capability-W7NPZR6A.mjs +38 -0
- package/dist/lib/browser/capability-W7NPZR6A.mjs.map +7 -0
- package/dist/lib/browser/chunk-2CKCJ6PN.mjs +79 -0
- package/dist/lib/browser/chunk-2CKCJ6PN.mjs.map +7 -0
- package/dist/lib/browser/chunk-4D6YAWLP.mjs +393 -0
- package/dist/lib/browser/chunk-4D6YAWLP.mjs.map +7 -0
- package/dist/lib/browser/chunk-56CEL32L.mjs +963 -0
- package/dist/lib/browser/chunk-56CEL32L.mjs.map +7 -0
- package/dist/lib/browser/chunk-F7FW2RK2.mjs +167 -0
- package/dist/lib/browser/chunk-F7FW2RK2.mjs.map +7 -0
- package/dist/lib/browser/chunk-I34GF4NG.mjs +34 -0
- package/dist/lib/browser/chunk-I34GF4NG.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-JKWMHZP6.mjs +80 -0
- package/dist/lib/browser/chunk-JKWMHZP6.mjs.map +7 -0
- package/dist/lib/browser/chunk-QRTB4Q3U.mjs +594 -0
- package/dist/lib/browser/chunk-QRTB4Q3U.mjs.map +7 -0
- package/dist/lib/browser/chunk-QSXYHXCE.mjs +48 -0
- package/dist/lib/browser/chunk-QSXYHXCE.mjs.map +7 -0
- package/dist/lib/browser/chunk-RFSO3JRG.mjs +1 -0
- package/dist/lib/browser/chunk-RHQGPRWN.mjs +174 -0
- package/dist/lib/browser/chunk-RHQGPRWN.mjs.map +7 -0
- package/dist/lib/browser/chunk-T3Y4AEKX.mjs +42 -0
- package/dist/lib/browser/chunk-T3Y4AEKX.mjs.map +7 -0
- package/dist/lib/browser/chunk-TGX63LTL.mjs +8 -0
- package/dist/lib/browser/chunk-TGX63LTL.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZBA6IH6L.mjs +148 -0
- package/dist/lib/browser/chunk-ZBA6IH6L.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +90 -0
- package/dist/lib/browser/cli/index.mjs.map +7 -0
- package/dist/lib/browser/common/activation-events.mjs +24 -0
- package/dist/lib/browser/common/capabilities.mjs +46 -0
- package/dist/lib/browser/core/activation-event.mjs +20 -0
- package/dist/lib/browser/core/activation-event.mjs.map +7 -0
- package/dist/lib/browser/core/capability.mjs +30 -0
- package/dist/lib/browser/core/capability.mjs.map +7 -0
- package/dist/lib/browser/core/plugin-manager.mjs +15 -0
- package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
- package/dist/lib/browser/core/plugin.mjs +29 -0
- package/dist/lib/browser/core/plugin.mjs.map +7 -0
- package/dist/lib/browser/core/url-loader.mjs +16 -0
- package/dist/lib/browser/core/url-loader.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +91 -156
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/invoker-capability-35BJSGXJ.mjs +43 -0
- package/dist/lib/browser/invoker-capability-35BJSGXJ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +248 -51
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/browser/testing/react.mjs +78 -0
- package/dist/lib/browser/testing/react.mjs.map +7 -0
- package/dist/lib/browser/ui/index.mjs +46 -0
- package/dist/lib/browser/ui/index.mjs.map +7 -0
- package/dist/lib/node-esm/capability-IY3YIHIO.mjs +39 -0
- package/dist/lib/node-esm/capability-IY3YIHIO.mjs.map +7 -0
- package/dist/lib/node-esm/capability-RDCTCARS.mjs +36 -0
- package/dist/lib/node-esm/capability-RDCTCARS.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-42KBWDE4.mjs +80 -0
- package/dist/lib/node-esm/chunk-42KBWDE4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DAYWQOOQ.mjs +149 -0
- package/dist/lib/node-esm/chunk-DAYWQOOQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DER2JDBT.mjs +175 -0
- package/dist/lib/node-esm/chunk-DER2JDBT.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-EL3R25OQ.mjs +2 -0
- package/dist/lib/node-esm/chunk-EL3R25OQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-FKE4Z3D6.mjs +10 -0
- package/dist/lib/node-esm/chunk-FKE4Z3D6.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-G3RTFSNG.mjs +81 -0
- package/dist/lib/node-esm/chunk-G3RTFSNG.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-JPWVIQ5I.mjs +595 -0
- package/dist/lib/node-esm/chunk-JPWVIQ5I.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-LX6YJOSO.mjs +394 -0
- package/dist/lib/node-esm/chunk-LX6YJOSO.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-URWHJQT2.mjs +168 -0
- package/dist/lib/node-esm/chunk-URWHJQT2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-VKHGNEDB.mjs +43 -0
- package/dist/lib/node-esm/chunk-VKHGNEDB.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-W4K4RU4S.mjs +964 -0
- package/dist/lib/node-esm/chunk-W4K4RU4S.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs +35 -0
- package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ZZ7CKK6W.mjs +49 -0
- package/dist/lib/node-esm/chunk-ZZ7CKK6W.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +91 -0
- package/dist/lib/node-esm/cli/index.mjs.map +7 -0
- package/dist/lib/node-esm/common/activation-events.mjs +25 -0
- package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
- package/dist/lib/node-esm/common/capabilities.mjs +47 -0
- package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
- package/dist/lib/node-esm/core/activation-event.mjs +21 -0
- package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
- package/dist/lib/node-esm/core/capability.mjs +31 -0
- package/dist/lib/node-esm/core/capability.mjs.map +7 -0
- package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
- package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
- package/dist/lib/node-esm/core/plugin.mjs +30 -0
- package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
- package/dist/lib/node-esm/core/url-loader.mjs +17 -0
- package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +91 -156
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/invoker-capability-3QWBSM5Q.mjs +44 -0
- package/dist/lib/node-esm/invoker-capability-3QWBSM5Q.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +248 -51
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/testing/react.mjs +79 -0
- package/dist/lib/node-esm/testing/react.mjs.map +7 -0
- package/dist/lib/node-esm/ui/index.mjs +47 -0
- package/dist/lib/node-esm/ui/index.mjs.map +7 -0
- package/dist/plugin/node-esm/index.mjs +730 -0
- package/dist/plugin/node-esm/index.mjs.map +7 -0
- package/dist/plugin/node-esm/meta.json +1 -0
- package/dist/types/src/cli/cli.d.ts +39 -0
- package/dist/types/src/cli/cli.d.ts.map +1 -0
- package/dist/types/src/cli/index.d.ts +2 -0
- package/dist/types/src/cli/index.d.ts.map +1 -0
- package/dist/types/src/common/activation-events.d.ts +27 -0
- package/dist/types/src/common/activation-events.d.ts.map +1 -0
- package/dist/types/src/common/capabilities.d.ts +109 -121
- package/dist/types/src/common/capabilities.d.ts.map +1 -1
- package/dist/types/src/common/index.d.ts +4 -8
- package/dist/types/src/common/index.d.ts.map +1 -1
- package/dist/types/src/common/operations.d.ts +19 -0
- package/dist/types/src/common/operations.d.ts.map +1 -0
- package/dist/types/src/common/translations.d.ts +8 -8
- package/dist/types/src/common/translations.d.ts.map +1 -1
- package/dist/types/src/context.d.ts +5 -0
- package/dist/types/src/context.d.ts.map +1 -0
- package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +7 -7
- package/dist/types/src/core/activation-event.d.ts.map +1 -0
- package/dist/types/src/core/capability-manager.d.ts +48 -0
- package/dist/types/src/core/capability-manager.d.ts.map +1 -0
- package/dist/types/src/core/capability-manager.test.d.ts +2 -0
- package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
- package/dist/types/src/core/capability.d.ts +156 -0
- package/dist/types/src/core/capability.d.ts.map +1 -0
- package/dist/types/src/core/index.d.ts +6 -4
- package/dist/types/src/core/index.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manager.d.ts +73 -0
- package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
- package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
- package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
- package/dist/types/src/core/plugin.d.ts +124 -37
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/core/url-loader.d.ts +42 -0
- package/dist/types/src/core/url-loader.d.ts.map +1 -0
- package/dist/types/src/core/url-loader.test.d.ts +2 -0
- package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +3 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
- package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
- package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/errors.d.ts +32 -0
- package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
- package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
- package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
- package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +101 -0
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
- package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/index.d.ts +3 -0
- package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
- package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/meta.d.ts +3 -0
- package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/testing.d.ts +58 -0
- package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
- package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
- package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/index.d.ts +2 -0
- package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
- package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
- package/dist/types/src/testing/harness.d.ts +67 -0
- package/dist/types/src/testing/harness.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +2 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/react.d.ts +27 -0
- package/dist/types/src/testing/react.d.ts.map +1 -0
- package/dist/types/src/testing/react.test.d.ts +2 -0
- package/dist/types/src/testing/react.test.d.ts.map +1 -0
- package/dist/types/src/testing/service.d.ts +8 -0
- package/dist/types/src/testing/service.d.ts.map +1 -0
- package/dist/types/src/testing/withPluginManager.d.ts +11 -10
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.stories.d.ts +9 -3
- package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/App/App.d.ts +9 -0
- package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
- package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
- package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/App/index.d.ts +2 -0
- package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts +13 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
- package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
- package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +24 -0
- package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts +14 -0
- package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
- package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
- package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
- package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/index.d.ts +36 -0
- package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/types.d.ts +197 -0
- package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
- package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
- package/dist/types/src/ui/components/index.d.ts +4 -0
- package/dist/types/src/ui/components/index.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/index.d.ts +6 -0
- package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useApp.d.ts +62 -0
- package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
- package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
- package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useLoading.d.ts +18 -0
- package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
- package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
- package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
- package/dist/types/src/ui/index.d.ts +3 -0
- package/dist/types/src/ui/index.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/composer-plugin.d.ts +34 -0
- package/dist/types/src/vite-plugin/composer-plugin.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/import-map-plugin.d.ts +16 -0
- package/dist/types/src/vite-plugin/import-map-plugin.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/index.d.ts +4 -0
- package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/manifest.d.ts +16 -0
- package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
- package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/packages.d.ts +13 -0
- package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/moon.yml +26 -3
- package/package.json +144 -44
- package/src/cli/cli.ts +107 -0
- package/src/{playground/layout → cli}/index.ts +1 -1
- package/src/common/activation-events.ts +44 -0
- package/src/common/capabilities.ts +168 -109
- package/src/common/index.ts +4 -8
- package/src/common/operations.ts +35 -0
- package/src/common/translations.ts +18 -10
- package/src/context.ts +9 -0
- package/src/core/{events.ts → activation-event.ts} +10 -7
- package/src/core/capability-manager.test.ts +151 -0
- package/src/core/capability-manager.ts +192 -0
- package/src/core/capability.ts +247 -0
- package/src/core/index.ts +6 -4
- package/src/core/plugin-manager.test.ts +1113 -0
- package/src/core/plugin-manager.ts +883 -0
- package/src/core/plugin.ts +261 -43
- package/src/core/url-loader.test.ts +112 -0
- package/src/core/url-loader.ts +178 -0
- package/src/helpers.test.ts +1 -1
- package/src/index.ts +3 -4
- package/src/plugin-operation/OperationPlugin.ts +24 -0
- package/src/plugin-operation/history/capability.ts +36 -0
- package/src/plugin-operation/history/errors.ts +7 -0
- package/src/plugin-operation/history/history-tracker.test.ts +373 -0
- package/src/plugin-operation/history/history-tracker.ts +128 -0
- package/src/plugin-operation/history/index.ts +9 -0
- package/src/plugin-operation/history/types.ts +17 -0
- package/src/plugin-operation/history/undo-mapping.ts +135 -0
- package/src/plugin-operation/history/undo-registry.test.ts +72 -0
- package/src/plugin-operation/history/undo-registry.ts +54 -0
- package/src/plugin-operation/index.ts +6 -0
- package/src/plugin-operation/invoker-capability.ts +54 -0
- package/src/plugin-operation/meta.ts +11 -0
- package/src/plugin-operation/testing.ts +154 -0
- package/src/plugin-runtime/RuntimePlugin.ts +19 -0
- package/src/plugin-runtime/capability.ts +53 -0
- package/src/{playground/debug → plugin-runtime}/index.ts +1 -1
- package/src/plugin-runtime/meta.ts +11 -0
- package/src/testing/harness.ts +229 -0
- package/src/testing/index.ts +2 -0
- package/src/testing/react.test.tsx +48 -0
- package/src/testing/react.tsx +113 -0
- package/src/testing/service.ts +52 -0
- package/src/testing/withPluginManager.stories.tsx +14 -11
- package/src/testing/withPluginManager.tsx +78 -54
- package/src/ui/components/App/App.stories.tsx +92 -0
- package/src/ui/components/App/App.tsx +58 -0
- package/src/{playground/logger → ui/components/App}/index.ts +1 -1
- package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +183 -0
- package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
- package/src/ui/components/PluginManager/index.ts +5 -0
- package/src/ui/components/Surface/SurfaceComponent.stories.tsx +144 -0
- package/src/ui/components/Surface/SurfaceComponent.tsx +303 -0
- package/src/ui/components/Surface/SurfaceInfo.tsx +107 -0
- package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
- package/src/ui/components/Surface/context.ts +12 -0
- package/src/ui/components/Surface/index.ts +54 -0
- package/src/ui/components/Surface/types.test.ts +126 -0
- package/src/ui/components/Surface/types.ts +269 -0
- package/src/ui/components/index.ts +7 -0
- package/src/ui/hooks/index.ts +9 -0
- package/src/ui/hooks/useApp.test.tsx +159 -0
- package/src/ui/hooks/useApp.tsx +289 -0
- package/src/ui/hooks/useCapabilities.ts +67 -0
- package/src/ui/hooks/useLoading.tsx +68 -0
- package/src/ui/hooks/useSettingsState.ts +26 -0
- package/src/ui/hooks/useSurface.ts +13 -0
- package/src/ui/index.ts +6 -0
- package/src/vite-plugin/composer-plugin.ts +284 -0
- package/src/vite-plugin/import-map-plugin.ts +490 -0
- package/src/vite-plugin/index.ts +7 -0
- package/src/vite-plugin/manifest.test.ts +23 -0
- package/src/vite-plugin/manifest.ts +20 -0
- package/src/vite-plugin/packages.ts +181 -0
- package/tsconfig.json +15 -25
- package/tsconfig.node.json +2 -4
- package/typedoc.json +2 -4
- package/vitest.config.ts +8 -6
- package/.eslintrc.cjs +0 -9
- package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
- package/.swc/plugins/v7_linux_x86_64_13.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429 +0 -0
- package/dist/lib/browser/app-graph-builder-BGGXLD6T.mjs +0 -137
- package/dist/lib/browser/app-graph-builder-BGGXLD6T.mjs.map +0 -7
- package/dist/lib/browser/chunk-2636QSIK.mjs +0 -1518
- package/dist/lib/browser/chunk-2636QSIK.mjs.map +0 -7
- package/dist/lib/browser/chunk-DHZB7HG7.mjs +0 -413
- package/dist/lib/browser/chunk-DHZB7HG7.mjs.map +0 -7
- package/dist/lib/browser/chunk-ORWHM7CO.mjs +0 -32
- package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
- package/dist/lib/browser/intent-dispatcher-TWKB22NI.mjs +0 -11
- package/dist/lib/browser/intent-resolver-O67UANYP.mjs +0 -39
- package/dist/lib/browser/intent-resolver-O67UANYP.mjs.map +0 -7
- package/dist/lib/browser/store-LFKDWHUQ.mjs +0 -30
- package/dist/lib/browser/store-LFKDWHUQ.mjs.map +0 -7
- package/dist/lib/browser/worker.mjs +0 -79
- package/dist/lib/node-esm/app-graph-builder-QHIJUYYW.mjs +0 -138
- package/dist/lib/node-esm/app-graph-builder-QHIJUYYW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NJAFK626.mjs +0 -414
- package/dist/lib/node-esm/chunk-NJAFK626.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UMZQERLE.mjs +0 -34
- package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-VSKRV3NW.mjs +0 -1520
- package/dist/lib/node-esm/chunk-VSKRV3NW.mjs.map +0 -7
- package/dist/lib/node-esm/intent-dispatcher-5PRM3KGH.mjs +0 -12
- package/dist/lib/node-esm/intent-resolver-K3D4BXQQ.mjs +0 -40
- package/dist/lib/node-esm/intent-resolver-K3D4BXQQ.mjs.map +0 -7
- package/dist/lib/node-esm/store-53XDUBMD.mjs +0 -31
- package/dist/lib/node-esm/store-53XDUBMD.mjs.map +0 -7
- package/dist/lib/node-esm/worker.mjs +0 -80
- package/dist/types/src/App.d.ts +0 -43
- package/dist/types/src/App.d.ts.map +0 -1
- package/dist/types/src/common/collaboration.d.ts +0 -19
- package/dist/types/src/common/collaboration.d.ts.map +0 -1
- package/dist/types/src/common/events.d.ts +0 -52
- package/dist/types/src/common/events.d.ts.map +0 -1
- package/dist/types/src/common/file.d.ts +0 -14
- package/dist/types/src/common/file.d.ts.map +0 -1
- package/dist/types/src/common/graph.d.ts +0 -21
- package/dist/types/src/common/graph.d.ts.map +0 -1
- package/dist/types/src/common/layout.d.ts +0 -281
- package/dist/types/src/common/layout.d.ts.map +0 -1
- package/dist/types/src/common/surface.d.ts +0 -65
- package/dist/types/src/common/surface.d.ts.map +0 -1
- package/dist/types/src/core/capabilities.d.ts +0 -114
- package/dist/types/src/core/capabilities.d.ts.map +0 -1
- package/dist/types/src/core/capabilities.test.d.ts +0 -2
- package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
- package/dist/types/src/core/events.d.ts.map +0 -1
- package/dist/types/src/core/manager.d.ts +0 -122
- package/dist/types/src/core/manager.d.ts.map +0 -1
- package/dist/types/src/core/manager.test.d.ts +0 -2
- package/dist/types/src/core/manager.test.d.ts.map +0 -1
- package/dist/types/src/playground/debug/Debug.d.ts +0 -6
- package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
- package/dist/types/src/playground/debug/index.d.ts +0 -2
- package/dist/types/src/playground/debug/index.d.ts.map +0 -1
- package/dist/types/src/playground/debug/plugin.d.ts +0 -2
- package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/generator/Main.d.ts +0 -6
- package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
- package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
- package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
- package/dist/types/src/playground/generator/generator.d.ts +0 -7
- package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
- package/dist/types/src/playground/generator/index.d.ts +0 -3
- package/dist/types/src/playground/generator/index.d.ts.map +0 -1
- package/dist/types/src/playground/generator/plugin.d.ts +0 -2
- package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/layout/Layout.d.ts +0 -8
- package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
- package/dist/types/src/playground/layout/index.d.ts +0 -2
- package/dist/types/src/playground/layout/index.d.ts.map +0 -1
- package/dist/types/src/playground/layout/plugin.d.ts +0 -2
- package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
- package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
- package/dist/types/src/playground/logger/index.d.ts +0 -2
- package/dist/types/src/playground/logger/index.d.ts.map +0 -1
- package/dist/types/src/playground/logger/plugin.d.ts +0 -2
- package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/logger/schema.d.ts +0 -13
- package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
- package/dist/types/src/playground/playground.stories.d.ts +0 -10
- package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/actions.d.ts +0 -38
- package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/errors.d.ts +0 -16
- package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/index.d.ts +0 -5
- package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
- package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent.d.ts +0 -63
- package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/actions.d.ts +0 -27
- package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/index.d.ts +0 -3
- package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
- package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/store.d.ts +0 -5
- package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/translations.d.ts +0 -10
- package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
- package/dist/types/src/react/ErrorBoundary.d.ts +0 -31
- package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
- package/dist/types/src/react/IntentContext.d.ts +0 -8
- package/dist/types/src/react/IntentContext.d.ts.map +0 -1
- package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
- package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
- package/dist/types/src/react/Surface.d.ts +0 -12
- package/dist/types/src/react/Surface.d.ts.map +0 -1
- package/dist/types/src/react/Surface.stories.d.ts +0 -16
- package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
- package/dist/types/src/react/common.d.ts +0 -13
- package/dist/types/src/react/common.d.ts.map +0 -1
- package/dist/types/src/react/index.d.ts +0 -7
- package/dist/types/src/react/index.d.ts.map +0 -1
- package/dist/types/src/react/useCapabilities.d.ts +0 -13
- package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
- package/dist/types/src/react/useIntentResolver.d.ts +0 -3
- package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
- package/dist/types/src/worker.d.ts +0 -4
- package/dist/types/src/worker.d.ts.map +0 -1
- package/src/App.tsx +0 -276
- package/src/common/collaboration.ts +0 -21
- package/src/common/events.ts +0 -77
- package/src/common/file.ts +0 -22
- package/src/common/graph.ts +0 -30
- package/src/common/layout.ts +0 -278
- package/src/common/surface.ts +0 -86
- package/src/core/capabilities.test.ts +0 -136
- package/src/core/capabilities.ts +0 -254
- package/src/core/manager.test.ts +0 -515
- package/src/core/manager.ts +0 -519
- package/src/playground/debug/Debug.tsx +0 -39
- package/src/playground/debug/plugin.ts +0 -17
- package/src/playground/generator/Main.tsx +0 -71
- package/src/playground/generator/Toolbar.tsx +0 -46
- package/src/playground/generator/generator.ts +0 -48
- package/src/playground/generator/index.ts +0 -6
- package/src/playground/generator/plugin.ts +0 -23
- package/src/playground/layout/Layout.tsx +0 -33
- package/src/playground/layout/plugin.ts +0 -17
- package/src/playground/logger/Toolbar.tsx +0 -29
- package/src/playground/logger/plugin.ts +0 -36
- package/src/playground/logger/schema.ts +0 -12
- package/src/playground/playground.stories.tsx +0 -42
- package/src/plugin-intent/IntentPlugin.ts +0 -20
- package/src/plugin-intent/actions.ts +0 -33
- package/src/plugin-intent/errors.ts +0 -39
- package/src/plugin-intent/index.ts +0 -8
- package/src/plugin-intent/intent-dispatcher.test.ts +0 -279
- package/src/plugin-intent/intent-dispatcher.ts +0 -333
- package/src/plugin-intent/intent.ts +0 -154
- package/src/plugin-settings/SettingsPlugin.ts +0 -35
- package/src/plugin-settings/actions.ts +0 -29
- package/src/plugin-settings/app-graph-builder.ts +0 -157
- package/src/plugin-settings/index.ts +0 -6
- package/src/plugin-settings/intent-resolver.ts +0 -34
- package/src/plugin-settings/store.ts +0 -33
- package/src/plugin-settings/translations.ts +0 -19
- package/src/react/ErrorBoundary.tsx +0 -45
- package/src/react/IntentContext.tsx +0 -34
- package/src/react/Surface.stories.tsx +0 -96
- package/src/react/Surface.tsx +0 -77
- package/src/react/common.ts +0 -12
- package/src/react/index.ts +0 -10
- package/src/react/useCapabilities.ts +0 -30
- package/src/react/useIntentResolver.ts +0 -22
- package/src/worker.ts +0 -11
- package/typedoc/.nojekyll +0 -1
- package/typedoc/assets/hierarchy.js +0 -1
- package/typedoc/assets/highlight.css +0 -106
- package/typedoc/assets/icons.js +0 -18
- package/typedoc/assets/icons.svg +0 -1
- package/typedoc/assets/main.js +0 -60
- package/typedoc/assets/navigation.js +0 -1
- package/typedoc/assets/search.js +0 -1
- package/typedoc/assets/style.css +0 -1640
- package/typedoc/classes/CollaborationActions.InsertContent.html +0 -421
- package/typedoc/classes/ErrorBoundary.html +0 -125
- package/typedoc/classes/IntentAction.ShowUndo.html +0 -227
- package/typedoc/classes/IntentAction.Track.html +0 -266
- package/typedoc/classes/LayoutAction.AddToast.html +0 -265
- package/typedoc/classes/LayoutAction.Close.html +0 -382
- package/typedoc/classes/LayoutAction.Expose.html +0 -265
- package/typedoc/classes/LayoutAction.Open.html +0 -1123
- package/typedoc/classes/LayoutAction.RevertWorkspace.html +0 -343
- package/typedoc/classes/LayoutAction.ScrollIntoView.html +0 -460
- package/typedoc/classes/LayoutAction.Set.html +0 -460
- package/typedoc/classes/LayoutAction.SetLayoutMode.html +0 -499
- package/typedoc/classes/LayoutAction.SwitchWorkspace.html +0 -265
- package/typedoc/classes/LayoutAction.UpdateComplementary.html +0 -616
- package/typedoc/classes/LayoutAction.UpdateDialog.html +0 -1123
- package/typedoc/classes/LayoutAction.UpdateLayout.html +0 -461
- package/typedoc/classes/LayoutAction.UpdatePopover.html +0 -1435
- package/typedoc/classes/LayoutAction.UpdateSidebar.html +0 -616
- package/typedoc/classes/Plugin.html +0 -6
- package/typedoc/classes/PluginContext.html +0 -38
- package/typedoc/classes/PluginManager.html +0 -43
- package/typedoc/classes/PluginModule.html +0 -18
- package/typedoc/classes/SettingsAction.Open.html +0 -226
- package/typedoc/classes/SettingsAction.OpenPluginRegistry.html +0 -265
- package/typedoc/functions/Events.createStateEvent.html +0 -2
- package/typedoc/functions/IntentPlugin.html +0 -1
- package/typedoc/functions/SettingsPlugin.html +0 -1
- package/typedoc/functions/allOf.html +0 -2
- package/typedoc/functions/chain.html +0 -3
- package/typedoc/functions/contributes.html +0 -2
- package/typedoc/functions/createDispatcher.html +0 -3
- package/typedoc/functions/createIntent.html +0 -6
- package/typedoc/functions/createResolver.html +0 -2
- package/typedoc/functions/createSurface.html +0 -2
- package/typedoc/functions/defineCapability.html +0 -2
- package/typedoc/functions/defineEvent.html +0 -2
- package/typedoc/functions/defineModule.html +0 -2
- package/typedoc/functions/definePlugin.html +0 -2
- package/typedoc/functions/eventKey.html +0 -2
- package/typedoc/functions/getEvents.html +0 -2
- package/typedoc/functions/isAllOf.html +0 -2
- package/typedoc/functions/isOneOf.html +0 -2
- package/typedoc/functions/isSurfaceAvailable.html +0 -2
- package/typedoc/functions/lazy.html +0 -2
- package/typedoc/functions/oneOf.html +0 -2
- package/typedoc/functions/useApp.html +0 -6
- package/typedoc/functions/useAppGraph.html +0 -1
- package/typedoc/functions/useCapabilities.html +0 -3
- package/typedoc/functions/useCapability.html +0 -4
- package/typedoc/functions/useIntentDispatcher.html +0 -1
- package/typedoc/functions/useIntentResolver.html +0 -1
- package/typedoc/functions/useLayout.html +0 -1
- package/typedoc/functions/usePluginManager.html +0 -2
- package/typedoc/hierarchy.html +0 -1
- package/typedoc/index.html +0 -12
- package/typedoc/interfaces/LayoutAction.Toast.html +0 -10
- package/typedoc/media/LICENSE +0 -8
- package/typedoc/modules/Capabilities.html +0 -1
- package/typedoc/modules/CollaborationActions.html +0 -1
- package/typedoc/modules/Events.html +0 -1
- package/typedoc/modules/IntentAction.html +0 -1
- package/typedoc/modules/LayoutAction.html +0 -2
- package/typedoc/modules/SettingsAction.html +0 -1
- package/typedoc/modules.html +0 -1
- package/typedoc/types/ActivationEvent.html +0 -8
- package/typedoc/types/ActivationEvents.html +0 -2
- package/typedoc/types/AnyCapability.html +0 -1
- package/typedoc/types/AnyIntent.html +0 -1
- package/typedoc/types/AnyIntentChain.html +0 -1
- package/typedoc/types/AnyIntentEffectResult.html +0 -1
- package/typedoc/types/AnyIntentResolver.html +0 -1
- package/typedoc/types/AnyIntentResult.html +0 -1
- package/typedoc/types/Capabilities.FileUploader.html +0 -1
- package/typedoc/types/Capabilities.IntentResolver.html +0 -1
- package/typedoc/types/Capabilities.Layout.html +0 -1
- package/typedoc/types/Capabilities.Metadata.html +0 -1
- package/typedoc/types/Capabilities.ReactContext.html +0 -1
- package/typedoc/types/Capabilities.ReactRoot.html +0 -1
- package/typedoc/types/Capabilities.ReactSurface.html +0 -1
- package/typedoc/types/Capabilities.Settings.html +0 -4
- package/typedoc/types/Capability.html +0 -9
- package/typedoc/types/CreateAppOptions.html +0 -10
- package/typedoc/types/FileInfo.html +0 -1
- package/typedoc/types/Intent.html +0 -10
- package/typedoc/types/IntentChain.html +0 -6
- package/typedoc/types/IntentContext.html +0 -5
- package/typedoc/types/IntentData.html +0 -1
- package/typedoc/types/IntentDispatcher.html +0 -2
- package/typedoc/types/IntentDispatcherResult.html +0 -2
- package/typedoc/types/IntentEffectDefinition.html +0 -2
- package/typedoc/types/IntentEffectResult.html +0 -15
- package/typedoc/types/IntentParams.html +0 -3
- package/typedoc/types/IntentResolver.html +0 -2
- package/typedoc/types/IntentResultData.html +0 -1
- package/typedoc/types/IntentSchema.html +0 -1
- package/typedoc/types/IntentUndo.html +0 -2
- package/typedoc/types/InterfaceDef.html +0 -4
- package/typedoc/types/Label.html +0 -1
- package/typedoc/types/NodeSerializer.html +0 -8
- package/typedoc/types/PluginManagerOptions.html +0 -6
- package/typedoc/types/PluginMeta.html +0 -21
- package/typedoc/types/PromiseIntentDispatcher.html +0 -2
- package/typedoc/types/PromiseIntentUndo.html +0 -2
- package/typedoc/types/Resource.html +0 -1
- package/typedoc/types/ResourceKey.html +0 -1
- package/typedoc/types/ResourceLanguage.html +0 -1
- package/typedoc/types/SerializedNode.html +0 -4
- package/typedoc/types/SurfaceComponent.html +0 -2
- package/typedoc/types/SurfaceDefinition.html +0 -2
- package/typedoc/types/SurfaceProps.html +0 -4
- package/typedoc/variables/Capabilities.AnchorSort.html +0 -1
- package/typedoc/variables/Capabilities.AppGraph.html +0 -1
- package/typedoc/variables/Capabilities.AppGraphBuilder.html +0 -1
- package/typedoc/variables/Capabilities.AppGraphSerializer.html +0 -1
- package/typedoc/variables/Capabilities.ArtifactDefinition.html +0 -1
- package/typedoc/variables/Capabilities.FileUploader.html +0 -1
- package/typedoc/variables/Capabilities.IntentDispatcher.html +0 -1
- package/typedoc/variables/Capabilities.IntentResolver.html +0 -1
- package/typedoc/variables/Capabilities.Layout.html +0 -1
- package/typedoc/variables/Capabilities.Metadata.html +0 -1
- package/typedoc/variables/Capabilities.Null.html +0 -1
- package/typedoc/variables/Capabilities.PluginManager.html +0 -1
- package/typedoc/variables/Capabilities.ReactContext.html +0 -1
- package/typedoc/variables/Capabilities.ReactRoot.html +0 -1
- package/typedoc/variables/Capabilities.ReactSurface.html +0 -1
- package/typedoc/variables/Capabilities.RxRegistry.html +0 -1
- package/typedoc/variables/Capabilities.Settings.html +0 -1
- package/typedoc/variables/Capabilities.SettingsStore.html +0 -1
- package/typedoc/variables/Capabilities.Tools.html +0 -1
- package/typedoc/variables/Capabilities.Translations.html +0 -1
- package/typedoc/variables/Events.AppGraphReady.html +0 -2
- package/typedoc/variables/Events.DispatcherReady.html +0 -2
- package/typedoc/variables/Events.LayoutReady.html +0 -1
- package/typedoc/variables/Events.SettingsReady.html +0 -2
- package/typedoc/variables/Events.SetupAppGraph.html +0 -2
- package/typedoc/variables/Events.SetupArtifactDefinition.html +0 -2
- package/typedoc/variables/Events.SetupIntentResolver.html +0 -2
- package/typedoc/variables/Events.SetupMetadata.html +0 -2
- package/typedoc/variables/Events.SetupReactSurface.html +0 -2
- package/typedoc/variables/Events.SetupSettings.html +0 -2
- package/typedoc/variables/Events.SetupTranslations.html +0 -2
- package/typedoc/variables/Events.Startup.html +0 -2
- package/typedoc/variables/FileInfoSchema.html +0 -1
- package/typedoc/variables/INTENT_ACTION.html +0 -1
- package/typedoc/variables/INTENT_PLUGIN.html +0 -1
- package/typedoc/variables/LAYOUT_ACTION.html +0 -1
- package/typedoc/variables/LAYOUT_PLUGIN.html +0 -1
- package/typedoc/variables/Label.html +0 -1
- package/typedoc/variables/LayoutAction.Toast.html +0 -1
- package/typedoc/variables/LayoutAction.UPDATE_LAYOUT.html +0 -1
- package/typedoc/variables/PluginManagerProvider.html +0 -2
- package/typedoc/variables/Resource.html +0 -2
- package/typedoc/variables/ResourceKey.html +0 -1
- package/typedoc/variables/ResourceLanguage.html +0 -1
- package/typedoc/variables/SETTINGS_ACTION.html +0 -1
- package/typedoc/variables/SETTINGS_ID.html +0 -1
- package/typedoc/variables/SETTINGS_KEY.html +0 -1
- package/typedoc/variables/SETTINGS_PLUGIN.html +0 -1
- package/typedoc/variables/Surface.html +0 -2
- package/typedoc/variables/defaultFileTypes.html +0 -1
- /package/dist/lib/browser/{intent-dispatcher-TWKB22NI.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/browser/{worker.mjs.map → chunk-RFSO3JRG.mjs.map} +0 -0
- /package/dist/lib/{node-esm/intent-dispatcher-5PRM3KGH.mjs.map → browser/common/activation-events.mjs.map} +0 -0
- /package/dist/lib/{node-esm/worker.mjs.map → browser/common/capabilities.mjs.map} +0 -0
|
@@ -1,37 +1,221 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useApp
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-4D6YAWLP.mjs";
|
|
4
|
+
import "../chunk-QRTB4Q3U.mjs";
|
|
5
|
+
import "../chunk-TGX63LTL.mjs";
|
|
6
|
+
import "../chunk-T3Y4AEKX.mjs";
|
|
4
7
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
capabilities_exports
|
|
9
|
+
} from "../chunk-JKWMHZP6.mjs";
|
|
10
|
+
import {
|
|
11
|
+
activation_events_exports
|
|
12
|
+
} from "../chunk-I34GF4NG.mjs";
|
|
13
|
+
import "../chunk-RFSO3JRG.mjs";
|
|
14
|
+
import "../chunk-RHQGPRWN.mjs";
|
|
15
|
+
import {
|
|
16
|
+
plugin_manager_exports
|
|
17
|
+
} from "../chunk-56CEL32L.mjs";
|
|
18
|
+
import {
|
|
19
|
+
activation_event_exports
|
|
20
|
+
} from "../chunk-QSXYHXCE.mjs";
|
|
21
|
+
import {
|
|
22
|
+
plugin_exports
|
|
23
|
+
} from "../chunk-ZBA6IH6L.mjs";
|
|
24
|
+
import {
|
|
25
|
+
capability_exports
|
|
26
|
+
} from "../chunk-2CKCJ6PN.mjs";
|
|
27
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
28
|
+
|
|
29
|
+
// src/testing/harness.ts
|
|
30
|
+
import * as Duration from "effect/Duration";
|
|
31
|
+
import * as Effect from "effect/Effect";
|
|
32
|
+
import * as PubSub from "effect/PubSub";
|
|
33
|
+
import * as Queue from "effect/Queue";
|
|
34
|
+
import { runAndForwardErrors } from "@dxos/effect";
|
|
35
|
+
import { invariant } from "@dxos/invariant";
|
|
36
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/testing/harness.ts";
|
|
37
|
+
var DEFAULT_TIMEOUT_MS = 5e3;
|
|
38
|
+
var createTestApp = async (opts) => {
|
|
39
|
+
const { plugins, core = plugins.map((plugin) => plugin.meta.id), enabled, setupEvents = [], autoStart = true, registerFrameworkCapabilities = true } = opts;
|
|
40
|
+
const pluginLoader = (id) => Effect.sync(() => {
|
|
41
|
+
const plugin = plugins.find((plugin2) => plugin2.meta.id === id);
|
|
42
|
+
invariant(plugin, `Plugin not found: ${id}`, {
|
|
43
|
+
F: __dxlog_file,
|
|
44
|
+
L: 99,
|
|
45
|
+
S: void 0,
|
|
46
|
+
A: [
|
|
47
|
+
"plugin",
|
|
48
|
+
"`Plugin not found: ${id}`"
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
return plugin;
|
|
52
|
+
});
|
|
53
|
+
const manager = plugin_manager_exports.make({
|
|
54
|
+
pluginLoader,
|
|
55
|
+
plugins,
|
|
56
|
+
core,
|
|
57
|
+
enabled
|
|
58
|
+
});
|
|
59
|
+
if (registerFrameworkCapabilities) {
|
|
60
|
+
manager.capabilities.contribute({
|
|
61
|
+
interface: capabilities_exports.PluginManager,
|
|
62
|
+
implementation: manager,
|
|
63
|
+
module: "org.dxos.app-framework.plugin-manager"
|
|
64
|
+
});
|
|
65
|
+
manager.capabilities.contribute({
|
|
66
|
+
interface: capabilities_exports.AtomRegistry,
|
|
67
|
+
implementation: manager.registry,
|
|
68
|
+
module: "org.dxos.app-framework.atom-registry"
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (autoStart) {
|
|
72
|
+
try {
|
|
73
|
+
await runAndForwardErrors(Effect.all([
|
|
74
|
+
...setupEvents.map((event) => manager.activate(event)),
|
|
75
|
+
manager.activate(activation_events_exports.SetupReactSurface),
|
|
76
|
+
manager.activate(activation_events_exports.Startup)
|
|
77
|
+
]));
|
|
78
|
+
} catch (err) {
|
|
79
|
+
await runAndForwardErrors(manager.shutdown()).catch(() => void 0);
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return new TestHarnessImpl(manager);
|
|
84
|
+
};
|
|
85
|
+
var TestHarnessImpl = class {
|
|
86
|
+
manager;
|
|
87
|
+
constructor(manager) {
|
|
88
|
+
this.manager = manager;
|
|
89
|
+
}
|
|
90
|
+
get capabilities() {
|
|
91
|
+
return this.manager.capabilities;
|
|
92
|
+
}
|
|
93
|
+
get registry() {
|
|
94
|
+
return this.manager.registry;
|
|
95
|
+
}
|
|
96
|
+
fire(event) {
|
|
97
|
+
return runAndForwardErrors(this.manager.activate(event));
|
|
98
|
+
}
|
|
99
|
+
reset(event) {
|
|
100
|
+
return runAndForwardErrors(this.manager.reset(event));
|
|
101
|
+
}
|
|
102
|
+
get(iface) {
|
|
103
|
+
return this.manager.capabilities.get(iface);
|
|
104
|
+
}
|
|
105
|
+
getAll(iface) {
|
|
106
|
+
return this.manager.capabilities.getAll(iface);
|
|
107
|
+
}
|
|
108
|
+
waitForCapability(iface, opts) {
|
|
109
|
+
const timeout = opts?.timeout ?? DEFAULT_TIMEOUT_MS;
|
|
110
|
+
return runAndForwardErrors(this.manager.capabilities.waitFor(iface).pipe(Effect.timeoutFail({
|
|
111
|
+
duration: Duration.millis(timeout),
|
|
112
|
+
onTimeout: () => timeoutError(iface.identifier)
|
|
113
|
+
})));
|
|
114
|
+
}
|
|
115
|
+
waitForEvent(event, opts) {
|
|
116
|
+
const key = typeof event === "string" ? event : activation_event_exports.eventKey(event);
|
|
117
|
+
const timeout = opts?.timeout ?? DEFAULT_TIMEOUT_MS;
|
|
118
|
+
const program = Effect.gen(this, function* () {
|
|
119
|
+
const queue = yield* PubSub.subscribe(this.manager.activation);
|
|
120
|
+
if (this.manager.getEventsFired().includes(key)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
while (true) {
|
|
124
|
+
const message = yield* Queue.take(queue);
|
|
125
|
+
if (message.event === key && message.state === "activated") {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}).pipe(Effect.scoped, Effect.timeoutFail({
|
|
130
|
+
duration: Duration.millis(timeout),
|
|
131
|
+
onTimeout: () => timeoutError(key)
|
|
132
|
+
}));
|
|
133
|
+
return runAndForwardErrors(program);
|
|
134
|
+
}
|
|
135
|
+
async invoke(op, ...args) {
|
|
136
|
+
const invoker = await this.waitForCapability(capabilities_exports.OperationInvoker);
|
|
137
|
+
const result = await invoker.invokePromise(op, ...args);
|
|
138
|
+
if (result.error) {
|
|
139
|
+
throw result.error;
|
|
140
|
+
}
|
|
141
|
+
return result.data;
|
|
142
|
+
}
|
|
143
|
+
enable(id) {
|
|
144
|
+
return runAndForwardErrors(this.manager.enable(id));
|
|
145
|
+
}
|
|
146
|
+
disable(id) {
|
|
147
|
+
return runAndForwardErrors(this.manager.disable(id));
|
|
148
|
+
}
|
|
149
|
+
async dispose() {
|
|
150
|
+
await runAndForwardErrors(this.manager.shutdown());
|
|
151
|
+
}
|
|
152
|
+
[Symbol.asyncDispose]() {
|
|
153
|
+
return this.dispose();
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
var timeoutError = (id) => new Error(`Timed out waiting for ${id}`);
|
|
157
|
+
|
|
158
|
+
// src/testing/service.ts
|
|
159
|
+
import * as Effect2 from "effect/Effect";
|
|
160
|
+
import * as Layer from "effect/Layer";
|
|
161
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
162
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-framework/src/testing/service.ts";
|
|
163
|
+
var fromPlugins = (plugins) => Layer.effect(plugin_exports.Service, Effect2.gen(function* () {
|
|
164
|
+
const pluginLoader = (id) => Effect2.sync(() => {
|
|
165
|
+
const plugin = plugins.find((plugin2) => plugin2.meta.id === id);
|
|
166
|
+
invariant2(plugin, `Plugin not found: ${id}`, {
|
|
167
|
+
F: __dxlog_file2,
|
|
168
|
+
L: 26,
|
|
169
|
+
S: this,
|
|
170
|
+
A: [
|
|
171
|
+
"plugin",
|
|
172
|
+
"`Plugin not found: ${id}`"
|
|
173
|
+
]
|
|
174
|
+
});
|
|
175
|
+
return plugin;
|
|
176
|
+
});
|
|
177
|
+
const manager = plugin_manager_exports.make({
|
|
178
|
+
pluginLoader,
|
|
179
|
+
plugins,
|
|
180
|
+
core: plugins.map((plugin) => plugin.meta.id)
|
|
181
|
+
});
|
|
182
|
+
manager.capabilities.contribute({
|
|
183
|
+
interface: capabilities_exports.PluginManager,
|
|
184
|
+
implementation: manager,
|
|
185
|
+
module: "org.dxos.app-framework.plugin-manager"
|
|
186
|
+
});
|
|
187
|
+
manager.capabilities.contribute({
|
|
188
|
+
interface: capabilities_exports.AtomRegistry,
|
|
189
|
+
implementation: manager.registry,
|
|
190
|
+
module: "org.dxos.app-framework.atom-registry"
|
|
191
|
+
});
|
|
192
|
+
yield* manager.activate(activation_events_exports.Startup);
|
|
193
|
+
return manager;
|
|
194
|
+
}));
|
|
12
195
|
|
|
13
196
|
// src/testing/withPluginManager.tsx
|
|
14
|
-
import
|
|
197
|
+
import * as Effect3 from "effect/Effect";
|
|
198
|
+
import React, { useEffect, useState } from "react";
|
|
15
199
|
import { raise } from "@dxos/debug";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
200
|
+
import { runAndForwardErrors as runAndForwardErrors2 } from "@dxos/effect";
|
|
201
|
+
import { useAsyncEffect } from "@dxos/react-hooks";
|
|
202
|
+
import { getProviderValue } from "@dxos/util";
|
|
19
203
|
var setupPluginManager = ({ capabilities, plugins = [], core = plugins.map(({ meta }) => meta.id), ...options } = {}) => {
|
|
20
|
-
const pluginManager =
|
|
204
|
+
const pluginManager = plugin_manager_exports.make({
|
|
21
205
|
pluginLoader: () => raise(new Error("Not implemented")),
|
|
22
206
|
plugins: [
|
|
23
|
-
|
|
207
|
+
StoryPlugin,
|
|
24
208
|
...plugins
|
|
25
209
|
],
|
|
26
210
|
core: [
|
|
27
|
-
|
|
211
|
+
StoryPlugin.meta.id,
|
|
28
212
|
...core
|
|
29
213
|
],
|
|
30
214
|
...options
|
|
31
215
|
});
|
|
32
216
|
if (capabilities) {
|
|
33
|
-
|
|
34
|
-
pluginManager.
|
|
217
|
+
getProviderValue(capabilities, pluginManager.capabilities).forEach((capability) => {
|
|
218
|
+
pluginManager.capabilities.contribute({
|
|
35
219
|
interface: capability.interface,
|
|
36
220
|
implementation: capability.implementation,
|
|
37
221
|
module: "story"
|
|
@@ -40,54 +224,67 @@ var setupPluginManager = ({ capabilities, plugins = [], core = plugins.map(({ me
|
|
|
40
224
|
}
|
|
41
225
|
return pluginManager;
|
|
42
226
|
};
|
|
43
|
-
var withPluginManager = (
|
|
227
|
+
var withPluginManager = (init = {}) => {
|
|
44
228
|
return (Story, context) => {
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
]);
|
|
229
|
+
const storyId = context.id;
|
|
230
|
+
const options = typeof init === "function" ? init(context) : init;
|
|
231
|
+
const [managerState, setManagerState] = useState();
|
|
48
232
|
useEffect(() => {
|
|
49
|
-
const
|
|
50
|
-
|
|
233
|
+
const pluginManager = setupPluginManager(options);
|
|
234
|
+
const capability = capability_exports.contributes(capabilities_exports.ReactRoot, {
|
|
235
|
+
id: storyId,
|
|
51
236
|
root: () => /* @__PURE__ */ React.createElement(Story, null)
|
|
52
237
|
});
|
|
53
|
-
pluginManager.
|
|
238
|
+
pluginManager.capabilities.contribute({
|
|
54
239
|
...capability,
|
|
55
|
-
module: "dxos.
|
|
240
|
+
module: "org.dxos.app-framework.with-plugin-manager"
|
|
241
|
+
});
|
|
242
|
+
setManagerState({
|
|
243
|
+
pluginManager,
|
|
244
|
+
setupEvents: options.setupEvents,
|
|
245
|
+
fireEvents: options.fireEvents,
|
|
246
|
+
storyId
|
|
56
247
|
});
|
|
57
248
|
return () => {
|
|
58
|
-
pluginManager.
|
|
249
|
+
pluginManager.capabilities.remove(capability.interface, capability.implementation);
|
|
250
|
+
void runAndForwardErrors2(pluginManager.shutdown());
|
|
59
251
|
};
|
|
60
252
|
}, [
|
|
61
|
-
|
|
62
|
-
|
|
253
|
+
storyId,
|
|
254
|
+
init
|
|
63
255
|
]);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return () => clearTimeout(timeout);
|
|
69
|
-
}, [
|
|
70
|
-
pluginManager
|
|
71
|
-
]);
|
|
72
|
-
const App = useApp({
|
|
73
|
-
pluginManager
|
|
74
|
-
});
|
|
75
|
-
return /* @__PURE__ */ React.createElement(App, null);
|
|
256
|
+
if (!managerState || managerState.storyId !== storyId) {
|
|
257
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null);
|
|
258
|
+
}
|
|
259
|
+
return /* @__PURE__ */ React.createElement(WithPluginManagerApp, managerState);
|
|
76
260
|
};
|
|
77
261
|
};
|
|
78
|
-
var
|
|
79
|
-
|
|
80
|
-
|
|
262
|
+
var WithPluginManagerApp = ({ fireEvents, pluginManager, setupEvents, storyId }) => {
|
|
263
|
+
useAsyncEffect(async () => {
|
|
264
|
+
await Promise.all(fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
|
|
265
|
+
}, [
|
|
266
|
+
fireEvents,
|
|
267
|
+
pluginManager,
|
|
268
|
+
storyId
|
|
269
|
+
]);
|
|
270
|
+
const App = useApp({
|
|
271
|
+
pluginManager,
|
|
272
|
+
setupEvents
|
|
273
|
+
});
|
|
274
|
+
return /* @__PURE__ */ React.createElement(App, null);
|
|
275
|
+
};
|
|
276
|
+
var storyMeta = {
|
|
277
|
+
id: "org.dxos.app-framework.story",
|
|
81
278
|
name: "Story"
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
]);
|
|
279
|
+
};
|
|
280
|
+
var StoryPlugin = plugin_exports.define(storyMeta).pipe(plugin_exports.addModule({
|
|
281
|
+
id: "Story",
|
|
282
|
+
activatesOn: activation_events_exports.Startup,
|
|
283
|
+
activate: () => Effect3.succeed([])
|
|
284
|
+
}), plugin_exports.make)();
|
|
89
285
|
export {
|
|
90
|
-
|
|
286
|
+
createTestApp,
|
|
287
|
+
fromPlugins,
|
|
91
288
|
setupPluginManager,
|
|
92
289
|
withPluginManager
|
|
93
290
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/testing/withPluginManager.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { useEffect, useMemo } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { useApp, type CreateAppOptions } from '../App';\nimport { Capabilities, Events } from '../common';\nimport {\n contributes,\n defineModule,\n definePlugin,\n type ActivationEvent,\n type AnyCapability,\n PluginManager,\n type PluginContext,\n} from '../core';\n\n// TODO(burdon): Factor out (use consistently in plugin framework?)\nexport type Provider<C, R> = (context: C) => R;\nexport type ProviderOrValue<C, R> = Provider<C, R> | R;\nexport const getValue = <C, R>(providerOrValue: ProviderOrValue<C, R>, context: C): R => {\n return typeof providerOrValue === 'function' ? (providerOrValue as Provider<C, R>)(context) : providerOrValue;\n};\n\n/**\n * @internal\n */\nexport const setupPluginManager = ({\n capabilities,\n plugins = [],\n core = plugins.map(({ meta }) => meta.id),\n ...options\n}: CreateAppOptions & Pick<WithPluginManagerOptions, 'capabilities'> = {}) => {\n const pluginManager = new PluginManager({\n pluginLoader: () => raise(new Error('Not implemented')),\n plugins: [storyPlugin(), ...plugins],\n core: [STORY_PLUGIN, ...core],\n ...options,\n });\n\n if (capabilities) {\n getValue(capabilities, pluginManager.context).forEach((capability) => {\n pluginManager.context.contributeCapability({\n interface: capability.interface,\n implementation: capability.implementation,\n module: 'story',\n });\n });\n }\n\n return pluginManager;\n};\n\nexport type WithPluginManagerOptions = CreateAppOptions & {\n capabilities?: ProviderOrValue<PluginContext, AnyCapability[]>;\n fireEvents?: (ActivationEvent | string)[];\n};\n\n/**\n * Wraps a story with a plugin manager.\n * NOTE: This builds up and tears down the plugin manager on every render.\n */\nexport const withPluginManager = (options: WithPluginManagerOptions = {}): Decorator => {\n return (Story, context) => {\n const pluginManager = useMemo(() => setupPluginManager(options), [options]);\n\n // Set-up root capability.\n useEffect(() => {\n const capability = contributes(Capabilities.ReactRoot, {\n id: context.id,\n root: () => <Story />,\n });\n\n pluginManager.context.contributeCapability({\n ...capability,\n module: 'dxos.org/app-framework/withPluginManager',\n });\n\n return () => {\n pluginManager.context.removeCapability(capability.interface, capability.implementation);\n };\n }, [pluginManager, context]);\n\n // Fire events.\n useEffect(() => {\n const timeout = setTimeout(async () => {\n await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);\n });\n\n return () => clearTimeout(timeout);\n }, [pluginManager]);\n\n // Create app.\n const App = useApp({ pluginManager });\n\n return <App />;\n };\n};\n\n// No-op plugin to ensure there exists at least one plugin for the startup event.\n// This is necessary because `createApp` expects the startup event to complete before the app is ready.\nconst STORY_PLUGIN = 'dxos.org/app-framework/story';\nconst storyPlugin = () =>\n definePlugin({ id: STORY_PLUGIN, name: 'Story' }, [\n defineModule({ id: STORY_PLUGIN, activatesOn: Events.Startup, activate: () => [] }),\n ]);\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["React", "useEffect", "
|
|
3
|
+
"sources": ["../../../../src/testing/harness.ts", "../../../../src/testing/service.ts", "../../../../src/testing/withPluginManager.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Registry } from '@effect-atom/atom-react';\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as PubSub from 'effect/PubSub';\nimport * as Queue from 'effect/Queue';\n\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { type Operation } from '@dxos/operation';\n\nimport { ActivationEvents, Capabilities } from '../common';\nimport { ActivationEvent, type Capability, type CapabilityManager, type Plugin, PluginManager } from '../core';\n\nexport type TestAppOptions = {\n /** Plugins to register. */\n plugins: Plugin.Plugin[];\n /** Plugin ids that are always enabled. Defaults to all provided plugin ids. */\n core?: string[];\n /** Plugin ids that are enabled by default in addition to core. */\n enabled?: string[];\n /** Additional activation events fired alongside SetupReactSurface. */\n setupEvents?: ActivationEvent.ActivationEvent[];\n /**\n * Whether to automatically fire SetupReactSurface + Startup during setup.\n * Defaults to true.\n */\n autoStart?: boolean;\n /**\n * Whether to register the PluginManager + AtomRegistry framework capabilities.\n * Defaults to true.\n */\n registerFrameworkCapabilities?: boolean;\n};\n\n/**\n * A running plugin manager plus helpers for driving it in tests.\n */\nexport interface TestHarness {\n readonly manager: PluginManager.PluginManager;\n readonly capabilities: CapabilityManager.CapabilityManager;\n readonly registry: Registry.Registry;\n\n /** Activate the given event. Equivalent to `manager.activate(event)`. */\n fire(event: ActivationEvent.ActivationEvent | string): Promise<boolean>;\n /** Re-activate all modules that were activated by the given event. */\n reset(event: ActivationEvent.ActivationEvent | string): Promise<boolean>;\n\n /** Returns the first contributed capability for the given interface. Throws if none are present. */\n get<T>(iface: Capability.InterfaceDef<T>): T;\n /** Returns all contributed capabilities for the given interface. */\n getAll<T>(iface: Capability.InterfaceDef<T>): T[];\n /** Waits until at least one capability is contributed for the given interface. */\n waitForCapability<T>(iface: Capability.InterfaceDef<T>, opts?: { timeout?: number }): Promise<T>;\n /** Waits until the given activation event has completed. */\n waitForEvent(event: ActivationEvent.ActivationEvent | string, opts?: { timeout?: number }): Promise<void>;\n\n /** Invokes an operation through the `Capabilities.OperationInvoker` capability. */\n invoke<I, O>(op: Operation.Definition<I, O>, ...args: void extends I ? [input?: I] : [input: I]): Promise<O>;\n\n enable(id: string): Promise<boolean>;\n disable(id: string): Promise<boolean>;\n\n /** Shuts down the underlying plugin manager. */\n dispose(): Promise<void>;\n\n /** Async-disposable support so tests can use `await using harness = ...`. */\n [Symbol.asyncDispose](): Promise<void>;\n}\n\nconst DEFAULT_TIMEOUT_MS = 5_000;\n\n/**\n * Creates a TestHarness with the same bootstrap sequence that `useApp` performs,\n * minus the React provider tree.\n *\n * For Node-only tests, this is enough to fire activation events, read\n * capabilities, and invoke operations.\n *\n * For React tests, pass the returned harness to `render` or `renderSurface`\n * from `@dxos/app-framework/testing-react`.\n */\nexport const createTestApp = async (opts: TestAppOptions): Promise<TestHarness> => {\n const {\n plugins,\n core = plugins.map((plugin) => plugin.meta.id),\n enabled,\n setupEvents = [],\n autoStart = true,\n registerFrameworkCapabilities = true,\n } = opts;\n\n const pluginLoader = (id: string) =>\n Effect.sync(() => {\n const plugin = plugins.find((plugin) => plugin.meta.id === id);\n invariant(plugin, `Plugin not found: ${id}`);\n return plugin;\n });\n\n const manager = PluginManager.make({ pluginLoader, plugins, core, enabled });\n\n if (registerFrameworkCapabilities) {\n manager.capabilities.contribute({\n interface: Capabilities.PluginManager,\n implementation: manager,\n module: 'org.dxos.app-framework.plugin-manager',\n });\n manager.capabilities.contribute({\n interface: Capabilities.AtomRegistry,\n implementation: manager.registry,\n module: 'org.dxos.app-framework.atom-registry',\n });\n }\n\n if (autoStart) {\n try {\n await runAndForwardErrors(\n Effect.all([\n ...setupEvents.map((event) => manager.activate(event)),\n manager.activate(ActivationEvents.SetupReactSurface),\n manager.activate(ActivationEvents.Startup),\n ]),\n );\n } catch (err) {\n await runAndForwardErrors(manager.shutdown()).catch(() => undefined);\n throw err;\n }\n }\n\n return new TestHarnessImpl(manager);\n};\n\nclass TestHarnessImpl implements TestHarness {\n constructor(readonly manager: PluginManager.PluginManager) {}\n\n get capabilities(): CapabilityManager.CapabilityManager {\n return this.manager.capabilities;\n }\n\n get registry(): Registry.Registry {\n return this.manager.registry;\n }\n\n fire(event: ActivationEvent.ActivationEvent | string): Promise<boolean> {\n return runAndForwardErrors(this.manager.activate(event));\n }\n\n reset(event: ActivationEvent.ActivationEvent | string): Promise<boolean> {\n return runAndForwardErrors(this.manager.reset(event));\n }\n\n get<T>(iface: Capability.InterfaceDef<T>): T {\n return this.manager.capabilities.get(iface);\n }\n\n getAll<T>(iface: Capability.InterfaceDef<T>): T[] {\n return this.manager.capabilities.getAll(iface);\n }\n\n waitForCapability<T>(iface: Capability.InterfaceDef<T>, opts?: { timeout?: number }): Promise<T> {\n const timeout = opts?.timeout ?? DEFAULT_TIMEOUT_MS;\n return runAndForwardErrors(\n this.manager.capabilities.waitFor(iface).pipe(\n Effect.timeoutFail({\n duration: Duration.millis(timeout),\n onTimeout: () => timeoutError(iface.identifier),\n }),\n ),\n );\n }\n\n waitForEvent(event: ActivationEvent.ActivationEvent | string, opts?: { timeout?: number }): Promise<void> {\n const key = typeof event === 'string' ? event : ActivationEvent.eventKey(event);\n const timeout = opts?.timeout ?? DEFAULT_TIMEOUT_MS;\n\n const program = Effect.gen(this, function* () {\n const queue = yield* PubSub.subscribe(this.manager.activation);\n // Re-check after subscribing to avoid a race where the event fires\n // between the caller invoking this and the subscription being installed.\n if (this.manager.getEventsFired().includes(key)) {\n return;\n }\n while (true) {\n const message = yield* Queue.take(queue);\n if (message.event === key && message.state === 'activated') {\n return;\n }\n }\n }).pipe(\n Effect.scoped,\n Effect.timeoutFail({\n duration: Duration.millis(timeout),\n onTimeout: () => timeoutError(key),\n }),\n );\n\n return runAndForwardErrors(program);\n }\n\n async invoke<I, O>(op: Operation.Definition<I, O>, ...args: [input?: I]): Promise<O> {\n const invoker = await this.waitForCapability(Capabilities.OperationInvoker);\n const result = await invoker.invokePromise(op as any, ...(args as [any]));\n if (result.error) {\n throw result.error;\n }\n return result.data as O;\n }\n\n enable(id: string): Promise<boolean> {\n return runAndForwardErrors(this.manager.enable(id));\n }\n\n disable(id: string): Promise<boolean> {\n return runAndForwardErrors(this.manager.disable(id));\n }\n\n async dispose(): Promise<void> {\n await runAndForwardErrors(this.manager.shutdown());\n }\n\n [Symbol.asyncDispose](): Promise<void> {\n return this.dispose();\n }\n}\n\nconst timeoutError = (id: string) => new Error(`Timed out waiting for ${id}`);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { invariant } from '@dxos/invariant';\n\nimport { ActivationEvents, Capabilities } from '../common';\nimport { Plugin, PluginManager } from '../core';\n\n/**\n * Creates a Plugin.Service layer from a list of plugins.\n * This is primarily used for testing.\n */\nexport const fromPlugins = (plugins: Plugin.Plugin[]) =>\n Layer.effect(\n Plugin.Service,\n Effect.gen(function* () {\n // TODO(wittjosiah): Try to dedupe logic between here, createCliApp and useApp.\n\n const pluginLoader = (id: string) =>\n Effect.sync(() => {\n const plugin = plugins.find((plugin) => plugin.meta.id === id);\n invariant(plugin, `Plugin not found: ${id}`);\n return plugin;\n });\n\n const manager = PluginManager.make({\n pluginLoader,\n plugins,\n core: plugins.map((plugin) => plugin.meta.id),\n });\n\n manager.capabilities.contribute({\n interface: Capabilities.PluginManager,\n implementation: manager,\n module: 'org.dxos.app-framework.plugin-manager',\n });\n\n manager.capabilities.contribute({\n interface: Capabilities.AtomRegistry,\n implementation: manager.registry,\n module: 'org.dxos.app-framework.atom-registry',\n });\n\n yield* manager.activate(ActivationEvents.Startup);\n\n return manager;\n }),\n );\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Decorator, type StoryContext } from '@storybook/react';\nimport * as Effect from 'effect/Effect';\nimport React, { useEffect, useState } from 'react';\n\nimport { raise } from '@dxos/debug';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { useAsyncEffect } from '@dxos/react-hooks';\nimport { type MaybeProvider, getProviderValue } from '@dxos/util';\n\nimport { ActivationEvents, Capabilities } from '../common';\nimport { type ActivationEvent, Capability, type CapabilityManager, Plugin, PluginManager } from '../core';\nimport { type UseAppOptions, useApp } from '../ui';\n\n/**\n * @internal\n */\nexport const setupPluginManager = ({\n capabilities,\n plugins = [],\n core = plugins.map(({ meta }) => meta.id),\n ...options\n}: UseAppOptions & Pick<WithPluginManagerOptions, 'capabilities'> = {}) => {\n const pluginManager = PluginManager.make({\n pluginLoader: () => raise(new Error('Not implemented')),\n plugins: [StoryPlugin, ...plugins],\n core: [StoryPlugin.meta.id, ...core],\n ...options,\n });\n\n if (capabilities) {\n getProviderValue(capabilities, pluginManager.capabilities).forEach((capability) => {\n pluginManager.capabilities.contribute({\n interface: capability.interface,\n implementation: capability.implementation,\n module: 'story',\n });\n });\n }\n\n return pluginManager;\n};\n\ntype ManagedPluginManagerState = {\n fireEvents?: (ActivationEvent.ActivationEvent | string)[];\n pluginManager: PluginManager.PluginManager;\n setupEvents?: ActivationEvent.ActivationEvent[];\n storyId: string;\n};\n\nexport type WithPluginManagerOptions = UseAppOptions & {\n /** @deprecated */\n capabilities?: MaybeProvider<Capability.Any[], CapabilityManager.CapabilityManager>;\n /** @deprecated */\n fireEvents?: (ActivationEvent.ActivationEvent | string)[];\n};\n\nexport type WithPluginManagerInitializer<Args = void> =\n | WithPluginManagerOptions\n | ((context: StoryContext<Args>) => WithPluginManagerOptions);\n\n/**\n * Wraps a story with a plugin manager.\n * NOTE: This builds up and tears down the plugin manager on every render.\n */\nexport const withPluginManager = <Args,>(init: WithPluginManagerInitializer<Args> = {}): Decorator => {\n return (Story, context) => {\n const storyId = context.id;\n const options = typeof init === 'function' ? init(context as any) : init;\n const [managerState, setManagerState] = useState<ManagedPluginManagerState>();\n\n // Storybook replaces the full context object often, so key manager ownership by story id.\n useEffect(() => {\n const pluginManager = setupPluginManager(options);\n const capability = Capability.contributes(Capabilities.ReactRoot, {\n id: storyId,\n root: () => <Story />,\n });\n\n pluginManager.capabilities.contribute({\n ...capability,\n module: 'org.dxos.app-framework.with-plugin-manager',\n });\n\n setManagerState({\n pluginManager,\n setupEvents: options.setupEvents,\n fireEvents: options.fireEvents,\n storyId,\n });\n\n return () => {\n pluginManager.capabilities.remove(capability.interface, capability.implementation);\n void runAndForwardErrors(pluginManager.shutdown());\n };\n }, [storyId, init]);\n\n // Avoid mounting useApp with a stale manager from the previous story.\n if (!managerState || managerState.storyId !== storyId) {\n return <></>;\n }\n\n return <WithPluginManagerApp {...managerState} />;\n };\n};\n\nconst WithPluginManagerApp = ({ fireEvents, pluginManager, setupEvents, storyId }: ManagedPluginManagerState) => {\n // Fire deprecated events only after the effect-owned manager for this story exists.\n useAsyncEffect(async () => {\n await Promise.all(fireEvents?.map((event) => pluginManager.activate(event)) ?? []);\n }, [fireEvents, pluginManager, storyId]);\n\n const App = useApp({ pluginManager, setupEvents });\n return <App />;\n};\n\nconst storyMeta = {\n id: 'org.dxos.app-framework.story',\n name: 'Story',\n};\n\n// No-op plugin to ensure there exists at least one plugin for the startup event.\n// This is necessary because `createApp` expects the startup event to complete before the app is ready.\nconst StoryPlugin = Plugin.define(storyMeta).pipe(\n Plugin.addModule({\n id: 'Story',\n activatesOn: ActivationEvents.Startup,\n activate: () => Effect.succeed([]),\n }),\n Plugin.make,\n)();\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Duration", "Effect", "PubSub", "Queue", "runAndForwardErrors", "invariant", "DEFAULT_TIMEOUT_MS", "createTestApp", "opts", "plugins", "core", "map", "plugin", "meta", "id", "enabled", "setupEvents", "autoStart", "registerFrameworkCapabilities", "pluginLoader", "sync", "find", "invariant", "manager", "PluginManager", "make", "capabilities", "contribute", "interface", "Capabilities", "implementation", "module", "AtomRegistry", "registry", "runAndForwardErrors", "all", "event", "activate", "ActivationEvents", "SetupReactSurface", "Startup", "err", "shutdown", "catch", "undefined", "TestHarnessImpl", "fire", "reset", "get", "iface", "getAll", "waitForCapability", "timeout", "waitFor", "pipe", "timeoutFail", "duration", "millis", "onTimeout", "timeoutError", "identifier", "waitForEvent", "key", "ActivationEvent", "eventKey", "program", "gen", "queue", "subscribe", "activation", "getEventsFired", "includes", "message", "take", "state", "scoped", "invoke", "op", "args", "invoker", "OperationInvoker", "result", "invokePromise", "error", "data", "enable", "disable", "dispose", "Symbol", "asyncDispose", "Error", "Effect", "Layer", "invariant", "fromPlugins", "plugins", "effect", "Plugin", "Service", "gen", "pluginLoader", "id", "sync", "plugin", "find", "meta", "invariant", "manager", "PluginManager", "make", "core", "map", "capabilities", "contribute", "interface", "Capabilities", "implementation", "module", "AtomRegistry", "registry", "activate", "ActivationEvents", "Startup", "Effect", "React", "useEffect", "useState", "raise", "runAndForwardErrors", "useAsyncEffect", "getProviderValue", "setupPluginManager", "capabilities", "plugins", "core", "map", "meta", "id", "options", "pluginManager", "PluginManager", "make", "pluginLoader", "raise", "Error", "StoryPlugin", "getProviderValue", "forEach", "capability", "contribute", "interface", "implementation", "module", "withPluginManager", "init", "Story", "context", "storyId", "managerState", "setManagerState", "useState", "useEffect", "Capability", "contributes", "Capabilities", "ReactRoot", "root", "setupEvents", "fireEvents", "remove", "runAndForwardErrors", "shutdown", "WithPluginManagerApp", "useAsyncEffect", "Promise", "all", "event", "activate", "App", "useApp", "storyMeta", "name", "Plugin", "define", "pipe", "addModule", "activatesOn", "ActivationEvents", "Startup", "succeed"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PluginManagerProvider,
|
|
3
|
+
SurfaceComponent,
|
|
4
|
+
topologicalSort
|
|
5
|
+
} from "../chunk-QRTB4Q3U.mjs";
|
|
6
|
+
import {
|
|
7
|
+
PluginManagerContext
|
|
8
|
+
} from "../chunk-TGX63LTL.mjs";
|
|
9
|
+
import "../chunk-T3Y4AEKX.mjs";
|
|
10
|
+
import {
|
|
11
|
+
capabilities_exports
|
|
12
|
+
} from "../chunk-JKWMHZP6.mjs";
|
|
13
|
+
import "../chunk-I34GF4NG.mjs";
|
|
14
|
+
import "../chunk-RFSO3JRG.mjs";
|
|
15
|
+
import "../chunk-RHQGPRWN.mjs";
|
|
16
|
+
import "../chunk-56CEL32L.mjs";
|
|
17
|
+
import "../chunk-QSXYHXCE.mjs";
|
|
18
|
+
import "../chunk-ZBA6IH6L.mjs";
|
|
19
|
+
import "../chunk-2CKCJ6PN.mjs";
|
|
20
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
21
|
+
|
|
22
|
+
// src/testing/react.tsx
|
|
23
|
+
import { RegistryContext } from "@effect-atom/atom-react";
|
|
24
|
+
import { render as rtlRender } from "@testing-library/react";
|
|
25
|
+
import React, { Fragment } from "react";
|
|
26
|
+
import { ContextProtocolProvider } from "@dxos/web-context-react";
|
|
27
|
+
var render = (harness, ui, options) => {
|
|
28
|
+
const { reactContexts = [], ...rest } = options ?? {};
|
|
29
|
+
const Wrapper = ({ children }) => /* @__PURE__ */ React.createElement(HarnessProviders, {
|
|
30
|
+
harness,
|
|
31
|
+
extra: reactContexts
|
|
32
|
+
}, children);
|
|
33
|
+
return rtlRender(/* @__PURE__ */ React.createElement(React.Fragment, null, ui), {
|
|
34
|
+
...rest,
|
|
35
|
+
wrapper: Wrapper
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
var renderSurface = (harness, props, options) => {
|
|
39
|
+
const { role, data, limit, fallback, placeholder } = props;
|
|
40
|
+
return render(harness, /* @__PURE__ */ React.createElement(SurfaceComponent, {
|
|
41
|
+
role,
|
|
42
|
+
data,
|
|
43
|
+
limit,
|
|
44
|
+
fallback,
|
|
45
|
+
placeholder
|
|
46
|
+
}), options);
|
|
47
|
+
};
|
|
48
|
+
var HarnessProviders = ({ harness, extra, children }) => {
|
|
49
|
+
const contributed = harness.getAll(capabilities_exports.ReactContext);
|
|
50
|
+
const ContributedContext = composeContexts(contributed);
|
|
51
|
+
const ExtraContext = composeExtra(extra);
|
|
52
|
+
return /* @__PURE__ */ React.createElement(PluginManagerProvider, {
|
|
53
|
+
value: harness.manager
|
|
54
|
+
}, /* @__PURE__ */ React.createElement(ContextProtocolProvider, {
|
|
55
|
+
value: harness.manager,
|
|
56
|
+
context: PluginManagerContext
|
|
57
|
+
}, /* @__PURE__ */ React.createElement(RegistryContext.Provider, {
|
|
58
|
+
value: harness.registry
|
|
59
|
+
}, /* @__PURE__ */ React.createElement(ContributedContext, null, /* @__PURE__ */ React.createElement(ExtraContext, null, children)))));
|
|
60
|
+
};
|
|
61
|
+
var composeContexts = (contexts) => {
|
|
62
|
+
if (contexts.length === 0) {
|
|
63
|
+
return Passthrough;
|
|
64
|
+
}
|
|
65
|
+
return topologicalSort(contexts).map(({ context }) => context).reduce((Acc, Next) => ({ children }) => /* @__PURE__ */ React.createElement(Acc, null, /* @__PURE__ */ React.createElement(Next, null, children)));
|
|
66
|
+
};
|
|
67
|
+
var composeExtra = (contexts) => {
|
|
68
|
+
if (contexts.length === 0) {
|
|
69
|
+
return Passthrough;
|
|
70
|
+
}
|
|
71
|
+
return contexts.reduce((Acc, Next) => ({ children }) => /* @__PURE__ */ React.createElement(Next, null, /* @__PURE__ */ React.createElement(Acc, null, children)), Passthrough);
|
|
72
|
+
};
|
|
73
|
+
var Passthrough = ({ children }) => /* @__PURE__ */ React.createElement(Fragment, null, children);
|
|
74
|
+
export {
|
|
75
|
+
render,
|
|
76
|
+
renderSurface
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=react.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/testing/react.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport { render as rtlRender, type RenderOptions, type RenderResult } from '@testing-library/react';\nimport React, { type FC, Fragment, type PropsWithChildren, type ReactNode } from 'react';\n\nimport { ContextProtocolProvider } from '@dxos/web-context-react';\n\nimport { Capabilities } from '../common';\nimport { PluginManagerContext } from '../context';\nimport { topologicalSort } from '../helpers';\nimport { PluginManagerProvider } from '../ui/components/PluginManager/PluginManagerProvider';\nimport { SurfaceComponent } from '../ui/components/Surface/SurfaceComponent';\nimport { type TestHarness } from './harness';\n\nexport type HarnessRenderOptions = Omit<RenderOptions, 'wrapper'> & {\n /** Additional providers to wrap around the harness tree (applied innermost first). */\n reactContexts?: FC<PropsWithChildren>[];\n};\n\n/**\n * Renders `ui` wrapped in the same provider tree as `useApp` plus every contributed\n * `Capabilities.ReactContext`.\n */\nexport const render = (harness: TestHarness, ui: ReactNode, options?: HarnessRenderOptions): RenderResult => {\n const { reactContexts = [], ...rest } = options ?? {};\n const Wrapper = ({ children }: PropsWithChildren) => (\n <HarnessProviders harness={harness} extra={reactContexts}>\n {children}\n </HarnessProviders>\n );\n return rtlRender(<>{ui}</>, { ...rest, wrapper: Wrapper });\n};\n\nexport type RenderSurfaceProps = {\n role: string;\n data?: unknown;\n limit?: number;\n fallback?: FC<{ error: Error; data?: any }>;\n placeholder?: ReactNode;\n};\n\n/**\n * Renders a `Surface` with the given role/data inside the harness provider tree.\n */\nexport const renderSurface = (\n harness: TestHarness,\n props: RenderSurfaceProps,\n options?: HarnessRenderOptions,\n): RenderResult => {\n const { role, data, limit, fallback, placeholder } = props;\n return render(\n harness,\n <SurfaceComponent role={role} data={data as any} limit={limit} fallback={fallback} placeholder={placeholder} />,\n options,\n );\n};\n\ntype HarnessProvidersProps = PropsWithChildren<{\n harness: TestHarness;\n extra: FC<PropsWithChildren>[];\n}>;\n\nconst HarnessProviders = ({ harness, extra, children }: HarnessProvidersProps) => {\n const contributed = harness.getAll(Capabilities.ReactContext);\n const ContributedContext = composeContexts(contributed);\n const ExtraContext = composeExtra(extra);\n return (\n <PluginManagerProvider value={harness.manager}>\n <ContextProtocolProvider value={harness.manager} context={PluginManagerContext}>\n <RegistryContext.Provider value={harness.registry}>\n <ContributedContext>\n <ExtraContext>{children}</ExtraContext>\n </ContributedContext>\n </RegistryContext.Provider>\n </ContextProtocolProvider>\n </PluginManagerProvider>\n );\n};\n\nconst composeContexts = (contexts: Capabilities.ReactContext[]): FC<PropsWithChildren> => {\n if (contexts.length === 0) {\n return Passthrough;\n }\n return topologicalSort(contexts)\n .map(({ context }) => context)\n .reduce((Acc, Next) => ({ children }: PropsWithChildren) => (\n <Acc>\n <Next>{children}</Next>\n </Acc>\n ));\n};\n\n// Composes in innermost-first order: the first context in the array wraps\n// `children` directly; subsequent contexts wrap the accumulator.\nconst composeExtra = (contexts: FC<PropsWithChildren>[]): FC<PropsWithChildren> => {\n if (contexts.length === 0) {\n return Passthrough;\n }\n return contexts.reduce<FC<PropsWithChildren>>(\n (Acc, Next) =>\n ({ children }: PropsWithChildren) => (\n <Next>\n <Acc>{children}</Acc>\n </Next>\n ),\n Passthrough,\n );\n};\n\nconst Passthrough: FC<PropsWithChildren> = ({ children }) => <Fragment>{children}</Fragment>;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,uBAAuB;AAChC,SAASC,UAAUC,iBAAwD;AAC3E,OAAOC,SAAkBC,gBAAwD;AAEjF,SAASC,+BAA+B;AAkBjC,IAAMC,SAAS,CAACC,SAAsBC,IAAeC,YAAAA;AAC1D,QAAM,EAAEC,gBAAgB,CAAA,GAAI,GAAGC,KAAAA,IAASF,WAAW,CAAC;AACpD,QAAMG,UAAU,CAAC,EAAEC,SAAQ,MACzB,sBAAA,cAACC,kBAAAA;IAAiBP;IAAkBQ,OAAOL;KACxCG,QAAAA;AAGL,SAAOG,UAAU,sBAAA,cAAA,MAAA,UAAA,MAAGR,EAAAA,GAAQ;IAAE,GAAGG;IAAMM,SAASL;EAAQ,CAAA;AAC1D;AAaO,IAAMM,gBAAgB,CAC3BX,SACAY,OACAV,YAAAA;AAEA,QAAM,EAAEW,MAAMC,MAAMC,OAAOC,UAAUC,YAAW,IAAKL;AACrD,SAAOb,OACLC,SACA,sBAAA,cAACkB,kBAAAA;IAAiBL;IAAYC;IAAmBC;IAAcC;IAAoBC;MACnFf,OAAAA;AAEJ;AAOA,IAAMK,mBAAmB,CAAC,EAAEP,SAASQ,OAAOF,SAAQ,MAAyB;AAC3E,QAAMa,cAAcnB,QAAQoB,OAAOC,qBAAaC,YAAY;AAC5D,QAAMC,qBAAqBC,gBAAgBL,WAAAA;AAC3C,QAAMM,eAAeC,aAAalB,KAAAA;AAClC,SACE,sBAAA,cAACmB,uBAAAA;IAAsBC,OAAO5B,QAAQ6B;KACpC,sBAAA,cAACC,yBAAAA;IAAwBF,OAAO5B,QAAQ6B;IAASE,SAASC;KACxD,sBAAA,cAACC,gBAAgBC,UAAQ;IAACN,OAAO5B,QAAQmC;KACvC,sBAAA,cAACZ,oBAAAA,MACC,sBAAA,cAACE,cAAAA,MAAcnB,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAM3B;AAEA,IAAMkB,kBAAkB,CAACY,aAAAA;AACvB,MAAIA,SAASC,WAAW,GAAG;AACzB,WAAOC;EACT;AACA,SAAOC,gBAAgBH,QAAAA,EACpBI,IAAI,CAAC,EAAET,QAAO,MAAOA,OAAAA,EACrBU,OAAO,CAACC,KAAKC,SAAS,CAAC,EAAErC,SAAQ,MAChC,sBAAA,cAACoC,KAAAA,MACC,sBAAA,cAACC,MAAAA,MAAMrC,QAAAA,CAAAA,CAAAA;AAGf;AAIA,IAAMoB,eAAe,CAACU,aAAAA;AACpB,MAAIA,SAASC,WAAW,GAAG;AACzB,WAAOC;EACT;AACA,SAAOF,SAASK,OACd,CAACC,KAAKC,SACJ,CAAC,EAAErC,SAAQ,MACT,sBAAA,cAACqC,MAAAA,MACC,sBAAA,cAACD,KAAAA,MAAKpC,QAAAA,CAAAA,GAGZgC,WAAAA;AAEJ;AAEA,IAAMA,cAAqC,CAAC,EAAEhC,SAAQ,MAAO,sBAAA,cAACsC,UAAAA,MAAUtC,QAAAA;",
|
|
6
|
+
"names": ["RegistryContext", "render", "rtlRender", "React", "Fragment", "ContextProtocolProvider", "render", "harness", "ui", "options", "reactContexts", "rest", "Wrapper", "children", "HarnessProviders", "extra", "rtlRender", "wrapper", "renderSurface", "props", "role", "data", "limit", "fallback", "placeholder", "SurfaceComponent", "contributed", "getAll", "Capabilities", "ReactContext", "ContributedContext", "composeContexts", "ExtraContext", "composeExtra", "PluginManagerProvider", "value", "manager", "ContextProtocolProvider", "context", "PluginManagerContext", "RegistryContext", "Provider", "registry", "contexts", "length", "Passthrough", "topologicalSort", "map", "reduce", "Acc", "Next", "Fragment"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
App,
|
|
3
|
+
LoadingState,
|
|
4
|
+
useApp,
|
|
5
|
+
useAtomCapability,
|
|
6
|
+
useAtomCapabilityState,
|
|
7
|
+
useCapabilities,
|
|
8
|
+
useCapability,
|
|
9
|
+
useLoading,
|
|
10
|
+
useOperationInvoker,
|
|
11
|
+
useSettingsState
|
|
12
|
+
} from "../chunk-4D6YAWLP.mjs";
|
|
13
|
+
import {
|
|
14
|
+
PluginManagerProvider,
|
|
15
|
+
Surface,
|
|
16
|
+
usePluginManager,
|
|
17
|
+
useSurface
|
|
18
|
+
} from "../chunk-QRTB4Q3U.mjs";
|
|
19
|
+
import "../chunk-TGX63LTL.mjs";
|
|
20
|
+
import "../chunk-T3Y4AEKX.mjs";
|
|
21
|
+
import "../chunk-JKWMHZP6.mjs";
|
|
22
|
+
import "../chunk-I34GF4NG.mjs";
|
|
23
|
+
import "../chunk-RFSO3JRG.mjs";
|
|
24
|
+
import "../chunk-RHQGPRWN.mjs";
|
|
25
|
+
import "../chunk-56CEL32L.mjs";
|
|
26
|
+
import "../chunk-QSXYHXCE.mjs";
|
|
27
|
+
import "../chunk-ZBA6IH6L.mjs";
|
|
28
|
+
import "../chunk-2CKCJ6PN.mjs";
|
|
29
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
30
|
+
export {
|
|
31
|
+
App,
|
|
32
|
+
LoadingState,
|
|
33
|
+
PluginManagerProvider,
|
|
34
|
+
Surface,
|
|
35
|
+
useApp,
|
|
36
|
+
useAtomCapability,
|
|
37
|
+
useAtomCapabilityState,
|
|
38
|
+
useCapabilities,
|
|
39
|
+
useCapability,
|
|
40
|
+
useLoading,
|
|
41
|
+
useOperationInvoker,
|
|
42
|
+
usePluginManager,
|
|
43
|
+
useSettingsState,
|
|
44
|
+
useSurface
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import "./chunk-VKHGNEDB.mjs";
|
|
3
|
+
import {
|
|
4
|
+
capabilities_exports
|
|
5
|
+
} from "./chunk-G3RTFSNG.mjs";
|
|
6
|
+
import {
|
|
7
|
+
activation_events_exports
|
|
8
|
+
} from "./chunk-WZCSOX5Q.mjs";
|
|
9
|
+
import "./chunk-EL3R25OQ.mjs";
|
|
10
|
+
import "./chunk-DER2JDBT.mjs";
|
|
11
|
+
import "./chunk-W4K4RU4S.mjs";
|
|
12
|
+
import "./chunk-ZZ7CKK6W.mjs";
|
|
13
|
+
import {
|
|
14
|
+
plugin_exports
|
|
15
|
+
} from "./chunk-DAYWQOOQ.mjs";
|
|
16
|
+
import {
|
|
17
|
+
capability_exports
|
|
18
|
+
} from "./chunk-42KBWDE4.mjs";
|
|
19
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
20
|
+
|
|
21
|
+
// src/plugin-runtime/capability.ts
|
|
22
|
+
import * as Effect from "effect/Effect";
|
|
23
|
+
import * as Layer from "effect/Layer";
|
|
24
|
+
import * as ManagedRuntime from "effect/ManagedRuntime";
|
|
25
|
+
var capability_default = capability_exports.makeModule(Effect.fnUntraced(function* () {
|
|
26
|
+
const capabilityManager = yield* capability_exports.Service;
|
|
27
|
+
const pluginManager = yield* plugin_exports.Service;
|
|
28
|
+
yield* plugin_exports.activate(activation_events_exports.SetupLayer);
|
|
29
|
+
const layers = yield* capability_exports.getAll(capabilities_exports.Layer);
|
|
30
|
+
const capabilityServiceLayer = Layer.succeed(capability_exports.Service, capabilityManager);
|
|
31
|
+
const pluginServiceLayer = Layer.succeed(plugin_exports.Service, pluginManager);
|
|
32
|
+
const composedLayer = layers.length > 0 ? Layer.mergeAll(capabilityServiceLayer, pluginServiceLayer, ...layers) : Layer.mergeAll(capabilityServiceLayer, pluginServiceLayer);
|
|
33
|
+
const runtime = ManagedRuntime.make(composedLayer);
|
|
34
|
+
return capability_exports.contributes(capabilities_exports.ManagedRuntime, runtime);
|
|
35
|
+
}));
|
|
36
|
+
export {
|
|
37
|
+
capability_default as default
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=capability-IY3YIHIO.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/plugin-runtime/capability.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as ManagedRuntime from 'effect/ManagedRuntime';\n\nimport { ActivationEvents, Capabilities } from '../common';\nimport { Capability, Plugin } from '../core';\n\n//\n// Capability Module\n//\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n // Get the CapabilityManager to create a layer for it.\n const capabilityManager = yield* Capability.Service;\n\n // Get the PluginManager to create a layer for it.\n const pluginManager = yield* Plugin.Service;\n\n // Trigger setup event so plugins can contribute their layers.\n yield* Plugin.activate(ActivationEvents.SetupLayer);\n\n // Gather all contributed layers.\n const layers = yield* Capability.getAll(Capabilities.Layer);\n\n // Create layers that provide Capability.Service and Plugin.Service.\n const capabilityServiceLayer = Layer.succeed(Capability.Service, capabilityManager);\n const pluginServiceLayer = Layer.succeed(Plugin.Service, pluginManager);\n\n // Merge all layers including service layers.\n // Layer.mergeAll requires a tuple type, so we use a cast for dynamic arrays.\n const composedLayer =\n layers.length > 0\n ? (Layer.mergeAll as (...args: Layer.Layer<any, any, any>[]) => Layer.Layer<any, any, never>)(\n capabilityServiceLayer,\n pluginServiceLayer,\n ...layers,\n )\n : (Layer.mergeAll as (...args: Layer.Layer<any, any, any>[]) => Layer.Layer<any, any, never>)(\n capabilityServiceLayer,\n pluginServiceLayer,\n );\n\n // Create the managed runtime from the composed layer.\n const runtime = ManagedRuntime.make(composedLayer) as Capabilities.ManagedRuntime;\n\n return Capability.contributes(Capabilities.ManagedRuntime, runtime);\n }),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AACvB,YAAYC,oBAAoB;AAShC,IAAA,qBAAeC,mBAAWC,WACjBC,kBAAW,aAAA;AAEhB,QAAMC,oBAAoB,OAAOH,mBAAWI;AAG5C,QAAMC,gBAAgB,OAAOC,eAAOF;AAGpC,SAAOE,eAAOC,SAASC,0BAAiBC,UAAU;AAGlD,QAAMC,SAAS,OAAOV,mBAAWW,OAAOC,qBAAaC,KAAK;AAG1D,QAAMC,yBAA+BC,cAAQf,mBAAWI,SAASD,iBAAAA;AACjE,QAAMa,qBAA2BD,cAAQT,eAAOF,SAASC,aAAAA;AAIzD,QAAMY,gBACJP,OAAOQ,SAAS,IACLC,eACLL,wBACAE,oBAAAA,GACGN,MAAAA,IAEES,eACLL,wBACAE,kBAAAA;AAIR,QAAMI,UAAyBC,oBAAKJ,aAAAA;AAEpC,SAAOjB,mBAAWsB,YAAYV,qBAAaW,gBAAgBH,OAAAA;AAC7D,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Layer", "ManagedRuntime", "Capability", "makeModule", "fnUntraced", "capabilityManager", "Service", "pluginManager", "Plugin", "activate", "ActivationEvents", "SetupLayer", "layers", "getAll", "Capabilities", "Layer", "capabilityServiceLayer", "succeed", "pluginServiceLayer", "composedLayer", "length", "mergeAll", "runtime", "make", "contributes", "ManagedRuntime"]
|
|
7
|
+
}
|