@dxos/app-framework 0.8.4-main.84f28bd → 0.8.4-main.937b3ca
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 +11 -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/app-graph-builder-M2VPYQC6.mjs +149 -0
- package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +7 -0
- package/dist/lib/browser/capability-7PCNSWBT.mjs +33 -0
- package/dist/lib/browser/capability-7PCNSWBT.mjs.map +7 -0
- package/dist/lib/browser/capability-KP3PFEXD.mjs +31 -0
- package/dist/lib/browser/capability-KP3PFEXD.mjs.map +7 -0
- package/dist/lib/browser/chunk-6Y7PZV72.mjs +77 -0
- package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +7 -0
- package/dist/lib/browser/chunk-7IQHKD4U.mjs +170 -0
- package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +7 -0
- package/dist/lib/browser/chunk-BLQJSGL3.mjs +732 -0
- package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +7 -0
- package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
- package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
- package/dist/lib/browser/chunk-FMZN33N4.mjs +807 -0
- package/dist/lib/browser/chunk-FMZN33N4.mjs.map +7 -0
- package/dist/lib/browser/chunk-H4WPA7U7.mjs +77 -0
- package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
- package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
- package/dist/lib/browser/chunk-TCLLRCS3.mjs +145 -0
- package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +7 -0
- package/dist/lib/browser/chunk-XYNO72GQ.mjs +746 -0
- package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +7 -0
- package/dist/lib/browser/common/index.mjs +38 -0
- package/dist/lib/browser/core/activation-event.mjs +20 -0
- package/dist/lib/browser/core/capability.mjs +28 -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 +27 -0
- package/dist/lib/browser/core/plugin.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +165 -139
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +32 -0
- package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +64 -0
- package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +7 -0
- package/dist/lib/browser/react/index.mjs +46 -0
- package/dist/lib/browser/react/index.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +79 -37
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +150 -0
- package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +7 -0
- package/dist/lib/node-esm/capability-CFLQ2QQU.mjs +34 -0
- package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +7 -0
- package/dist/lib/node-esm/capability-RCUNM2M7.mjs +32 -0
- package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-663A54LQ.mjs +171 -0
- package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +747 -0
- package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
- package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +733 -0
- package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GT6OKM5I.mjs +146 -0
- package/dist/lib/node-esm/chunk-GT6OKM5I.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-STMXUEPO.mjs +78 -0
- package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
- package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +78 -0
- package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XYQTBFPA.mjs +808 -0
- package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +7 -0
- package/dist/lib/node-esm/common/index.mjs +39 -0
- package/dist/lib/node-esm/common/index.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 +29 -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 +28 -0
- package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +165 -139
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +33 -0
- package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +65 -0
- package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +7 -0
- package/dist/lib/node-esm/react/index.mjs +47 -0
- package/dist/lib/node-esm/react/index.mjs.map +7 -0
- package/dist/lib/node-esm/testing/index.mjs +79 -37
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/types/src/cli.d.ts +39 -0
- package/dist/types/src/cli.d.ts.map +1 -0
- package/dist/types/src/common/activation-event.d.ts +66 -0
- package/dist/types/src/common/activation-event.d.ts.map +1 -0
- package/dist/types/src/common/capability.d.ts +265 -0
- package/dist/types/src/common/capability.d.ts.map +1 -0
- package/dist/types/src/common/collaboration.d.ts +24 -17
- package/dist/types/src/common/collaboration.d.ts.map +1 -1
- package/dist/types/src/common/file.d.ts +1 -1
- package/dist/types/src/common/file.d.ts.map +1 -1
- package/dist/types/src/common/graph.d.ts +2 -2
- package/dist/types/src/common/graph.d.ts.map +1 -1
- package/dist/types/src/common/index.d.ts +4 -3
- package/dist/types/src/common/index.d.ts.map +1 -1
- package/dist/types/src/common/operations.d.ts +380 -0
- package/dist/types/src/common/operations.d.ts.map +1 -0
- package/dist/types/src/common/plugin.d.ts +201 -0
- package/dist/types/src/common/plugin.d.ts.map +1 -0
- package/dist/types/src/common/surface.d.ts +50 -21
- package/dist/types/src/common/surface.d.ts.map +1 -1
- package/dist/types/src/common/translations.d.ts +10 -1
- 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} +6 -6
- package/dist/types/src/core/activation-event.d.ts.map +1 -0
- package/dist/types/src/core/capability-manager.d.ts +43 -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 +150 -0
- package/dist/types/src/core/capability.d.ts.map +1 -0
- package/dist/types/src/core/index.d.ts +5 -4
- package/dist/types/src/core/index.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manager.d.ts +66 -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 +97 -32
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +5 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/playground/debug/Debug.d.ts +4 -2
- package/dist/types/src/playground/debug/Debug.d.ts.map +1 -1
- package/dist/types/src/playground/debug/plugin.d.ts +2 -1
- package/dist/types/src/playground/debug/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/generator/Main.d.ts +4 -2
- package/dist/types/src/playground/generator/Main.d.ts.map +1 -1
- package/dist/types/src/playground/generator/Toolbar.d.ts +4 -2
- package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -1
- package/dist/types/src/playground/generator/generator.d.ts +17 -5
- package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
- package/dist/types/src/playground/generator/plugin.d.ts +2 -1
- package/dist/types/src/playground/generator/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/layout/Layout.d.ts +4 -2
- package/dist/types/src/playground/layout/Layout.d.ts.map +1 -1
- package/dist/types/src/playground/layout/plugin.d.ts +2 -1
- package/dist/types/src/playground/layout/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/logger/Toolbar.d.ts +4 -2
- package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -1
- package/dist/types/src/playground/logger/plugin.d.ts +2 -1
- package/dist/types/src/playground/logger/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/logger/schema.d.ts +15 -1
- package/dist/types/src/playground/logger/schema.d.ts.map +1 -1
- package/dist/types/src/playground/playground.stories.d.ts +5 -4
- package/dist/types/src/playground/playground.stories.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 +5 -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 +93 -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 +109 -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/plugin-settings/SettingsPlugin.d.ts +2 -1
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/actions.d.ts +41 -7
- package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts +4 -2
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/meta.d.ts +3 -0
- package/dist/types/src/plugin-settings/meta.d.ts.map +1 -0
- package/dist/types/src/plugin-settings/operation-resolver.d.ts +6 -0
- package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +1 -0
- package/dist/types/src/plugin-settings/translations.d.ts +2 -1
- package/dist/types/src/plugin-settings/translations.d.ts.map +1 -1
- package/dist/types/src/react/App.d.ts +8 -0
- package/dist/types/src/react/App.d.ts.map +1 -0
- package/dist/types/src/react/App.stories.d.ts +14 -0
- package/dist/types/src/react/App.stories.d.ts.map +1 -0
- package/dist/types/src/react/DefaultFallback.d.ts +8 -0
- package/dist/types/src/react/DefaultFallback.d.ts.map +1 -0
- package/dist/types/src/react/ErrorBoundary.d.ts +13 -14
- package/dist/types/src/react/ErrorBoundary.d.ts.map +1 -1
- package/dist/types/src/react/PluginManagerContext.stories.d.ts +13 -0
- package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +1 -0
- package/dist/types/src/react/PluginManagerProvider.d.ts +2 -2
- package/dist/types/src/react/PluginManagerProvider.d.ts.map +1 -1
- package/dist/types/src/react/Surface.d.ts +9 -7
- package/dist/types/src/react/Surface.d.ts.map +1 -1
- package/dist/types/src/react/Surface.stories.d.ts +8 -10
- package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
- package/dist/types/src/react/SurfaceInfo.d.ts +11 -0
- package/dist/types/src/react/SurfaceInfo.d.ts.map +1 -0
- package/dist/types/src/react/common.d.ts +13 -12
- package/dist/types/src/react/common.d.ts.map +1 -1
- package/dist/types/src/react/index.d.ts +3 -1
- package/dist/types/src/react/index.d.ts.map +1 -1
- package/dist/types/src/react/types.d.ts +12 -0
- package/dist/types/src/react/types.d.ts.map +1 -0
- package/dist/types/src/{App.d.ts → react/useApp.d.ts} +11 -9
- package/dist/types/src/react/useApp.d.ts.map +1 -0
- package/dist/types/src/react/useCapabilities.d.ts +16 -3
- package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
- package/dist/types/src/react/useLoading.d.ts +18 -0
- package/dist/types/src/react/useLoading.d.ts.map +1 -0
- package/dist/types/src/react/useOperationResolver.d.ts +19 -0
- package/dist/types/src/react/useOperationResolver.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- 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/tsconfig.tsbuildinfo +1 -1
- package/moon.yml +10 -2
- package/package.json +103 -42
- package/src/cli.ts +107 -0
- package/src/common/activation-event.ts +99 -0
- package/src/common/capability.ts +343 -0
- package/src/common/collaboration.ts +24 -14
- package/src/common/file.ts +1 -1
- package/src/common/graph.ts +2 -2
- package/src/common/index.ts +4 -3
- package/src/common/operations.ts +412 -0
- package/src/common/plugin.ts +364 -0
- package/src/common/surface.ts +60 -26
- package/src/common/translations.ts +21 -1
- package/src/context.ts +9 -0
- package/src/core/{events.ts → activation-event.ts} +5 -5
- package/src/core/capability-manager.test.ts +151 -0
- package/src/core/capability-manager.ts +171 -0
- package/src/core/capability.ts +236 -0
- package/src/core/index.ts +5 -4
- package/src/core/plugin-manager.test.ts +845 -0
- package/src/core/plugin-manager.ts +696 -0
- package/src/core/plugin.ts +229 -36
- package/src/helpers.test.ts +1 -1
- package/src/index.ts +5 -4
- package/src/playground/debug/Debug.tsx +27 -17
- package/src/playground/debug/plugin.ts +10 -11
- package/src/playground/generator/Main.tsx +20 -11
- package/src/playground/generator/Toolbar.tsx +27 -16
- package/src/playground/generator/generator.ts +28 -28
- package/src/playground/generator/plugin.ts +15 -17
- package/src/playground/layout/Layout.tsx +11 -7
- package/src/playground/layout/plugin.ts +12 -11
- package/src/playground/logger/Toolbar.tsx +20 -16
- package/src/playground/logger/plugin.ts +33 -27
- package/src/playground/logger/schema.ts +11 -1
- package/src/playground/playground.stories.tsx +29 -17
- package/src/plugin-operation/OperationPlugin.ts +25 -0
- package/src/plugin-operation/history/capability.ts +37 -0
- package/src/plugin-operation/history/errors.ts +11 -0
- package/src/plugin-operation/history/history-tracker.test.ts +380 -0
- package/src/plugin-operation/history/history-tracker.ts +129 -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 +132 -0
- package/src/plugin-operation/history/undo-registry.test.ts +73 -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 +40 -0
- package/src/plugin-operation/meta.ts +11 -0
- package/src/plugin-operation/testing.ts +174 -0
- package/src/plugin-runtime/RuntimePlugin.ts +20 -0
- package/src/plugin-runtime/capability.ts +53 -0
- package/src/plugin-runtime/index.ts +5 -0
- package/src/plugin-runtime/meta.ts +11 -0
- package/src/plugin-settings/SettingsPlugin.ts +13 -29
- package/src/plugin-settings/actions.ts +45 -10
- package/src/plugin-settings/app-graph-builder.ts +124 -141
- package/src/plugin-settings/meta.ts +10 -0
- package/src/plugin-settings/operation-resolver.ts +55 -0
- package/src/plugin-settings/translations.ts +4 -4
- package/src/react/App.stories.tsx +63 -0
- package/src/react/App.tsx +60 -0
- package/src/react/DefaultFallback.tsx +26 -0
- package/src/react/ErrorBoundary.tsx +26 -15
- package/src/react/PluginManagerContext.stories.tsx +184 -0
- package/src/react/PluginManagerProvider.ts +2 -2
- package/src/react/Surface.stories.tsx +103 -58
- package/src/react/Surface.tsx +236 -46
- package/src/react/SurfaceInfo.tsx +107 -0
- package/src/react/common.ts +30 -5
- package/src/react/index.ts +5 -1
- package/src/react/types.ts +27 -0
- package/src/react/useApp.tsx +209 -0
- package/src/react/useCapabilities.ts +38 -5
- package/src/react/useLoading.tsx +68 -0
- package/src/react/useOperationResolver.ts +40 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/service.ts +52 -0
- package/src/testing/withPluginManager.stories.tsx +14 -10
- package/src/testing/withPluginManager.tsx +43 -44
- package/tsconfig.json +30 -16
- 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.map +0 -1
- package/dist/types/src/common/capabilities.d.ts +0 -122
- package/dist/types/src/common/capabilities.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/layout.d.ts +0 -281
- package/dist/types/src/common/layout.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/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/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/react/IntentContext.d.ts +0 -8
- package/dist/types/src/react/IntentContext.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/capabilities.ts +0 -113
- package/src/common/events.ts +0 -77
- package/src/common/layout.ts +0 -278
- 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/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/intent-resolver.ts +0 -34
- package/src/plugin-settings/store.ts +0 -33
- package/src/react/IntentContext.tsx +0 -34
- 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 → common/index.mjs.map} +0 -0
- /package/dist/lib/{node-esm/intent-dispatcher-5PRM3KGH.mjs.map → browser/core/activation-event.mjs.map} +0 -0
- /package/dist/lib/{node-esm/worker.mjs.map → browser/core/capability.mjs.map} +0 -0
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import type * as Command$ from '@effect/cli/Command';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
|
|
8
|
+
import { type Type } from '@dxos/echo';
|
|
9
|
+
|
|
10
|
+
import { Capability as Capability$, Plugin as Plugin$ } from '../core';
|
|
11
|
+
|
|
12
|
+
import { ActivationEvent } from './activation-event';
|
|
13
|
+
import { Capability } from './capability';
|
|
14
|
+
import { type Resource } from './translations';
|
|
15
|
+
|
|
16
|
+
type PluginModuleOptions = Partial<
|
|
17
|
+
Pick<Plugin$.PluginModuleOptions, 'id' | 'activatesOn' | 'activatesBefore' | 'activatesAfter'>
|
|
18
|
+
> &
|
|
19
|
+
Pick<Plugin$.PluginModuleOptions, 'activate'>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Helper functions for creating common plugin module patterns.
|
|
23
|
+
*/
|
|
24
|
+
export namespace Plugin {
|
|
25
|
+
// TODO(wittjosiah): Restrict type to only allow operation handlers.
|
|
26
|
+
export type OperationResolverModuleOptions = PluginModuleOptions;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Creates a module that contributes operation handlers.
|
|
30
|
+
*
|
|
31
|
+
* @param options Module options including the activate function and optional configuration
|
|
32
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* Plugin.define(meta).pipe(
|
|
37
|
+
* Common.Plugin.addOperationResolverModule({
|
|
38
|
+
* activate: (context) =>
|
|
39
|
+
* Capability.contributes(Common.Capability.OperationResolver, [{
|
|
40
|
+
* operation: MyOperation,
|
|
41
|
+
* handler: (input) => Effect.succeed(...)
|
|
42
|
+
* }])
|
|
43
|
+
* })
|
|
44
|
+
* )
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export function addOperationResolverModule<T = void>(
|
|
48
|
+
options: OperationResolverModuleOptions,
|
|
49
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
50
|
+
return Plugin$.addModule({
|
|
51
|
+
id: Capability$.getModuleTag(options.activate) ?? options.id ?? 'operation-resolver',
|
|
52
|
+
activatesOn: options.activatesOn ?? ActivationEvent.SetupOperationResolver,
|
|
53
|
+
activatesBefore: options.activatesBefore,
|
|
54
|
+
activatesAfter: options.activatesAfter,
|
|
55
|
+
activate: options.activate,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// TODO(wittjosiah): Restrict type to only allow surfaces.
|
|
60
|
+
export type SurfaceModuleOptions = PluginModuleOptions;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Creates a module that contributes React surfaces.
|
|
64
|
+
*
|
|
65
|
+
* @param options Module options including the activate function and optional configuration
|
|
66
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* Plugin.define(meta).pipe(
|
|
71
|
+
* Common.Plugin.addSurfaceModule({
|
|
72
|
+
* activate: (context) =>
|
|
73
|
+
* Capability.contributes(Common.Capability.ReactSurface, [
|
|
74
|
+
* Common.createSurface({ id: `${meta.id}/my-surface`, ... })
|
|
75
|
+
* ])
|
|
76
|
+
* })
|
|
77
|
+
* )
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export function addSurfaceModule<T = void>(
|
|
81
|
+
options: SurfaceModuleOptions,
|
|
82
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
83
|
+
return Plugin$.addModule({
|
|
84
|
+
id: Capability$.getModuleTag(options.activate) ?? options.id ?? 'surfaces',
|
|
85
|
+
activatesOn: options.activatesOn ?? ActivationEvent.SetupReactSurface,
|
|
86
|
+
activatesBefore: options.activatesBefore,
|
|
87
|
+
activatesAfter: options.activatesAfter,
|
|
88
|
+
activate: options.activate,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// TODO(wittjosiah): Restrict type to only allow react roots.
|
|
93
|
+
export type ReactRootModuleOptions = PluginModuleOptions;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Creates a module that contributes a React root.
|
|
97
|
+
*/
|
|
98
|
+
export function addReactRootModule<T = void>(
|
|
99
|
+
options: ReactRootModuleOptions,
|
|
100
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
101
|
+
return Plugin$.addModule({
|
|
102
|
+
id: Capability$.getModuleTag(options.activate) ?? options.id ?? 'react-root',
|
|
103
|
+
activatesOn: options.activatesOn ?? ActivationEvent.Startup,
|
|
104
|
+
activatesBefore: options.activatesBefore,
|
|
105
|
+
activatesAfter: options.activatesAfter,
|
|
106
|
+
activate: options.activate,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// TODO(wittjosiah): Restrict type to only allow react contexts.
|
|
111
|
+
export type ReactContextModuleOptions = PluginModuleOptions;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Creates a module that contributes a React context.
|
|
115
|
+
*/
|
|
116
|
+
export function addReactContextModule<T = void>(
|
|
117
|
+
options: ReactContextModuleOptions,
|
|
118
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
119
|
+
return Plugin$.addModule({
|
|
120
|
+
id: Capability$.getModuleTag(options.activate) ?? options.id ?? 'react-context',
|
|
121
|
+
activatesOn: options.activatesOn ?? ActivationEvent.Startup,
|
|
122
|
+
activatesBefore: options.activatesBefore,
|
|
123
|
+
activatesAfter: options.activatesAfter,
|
|
124
|
+
activate: options.activate,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// TODO(wittjosiah): Restrict type to only allow app graph builders.
|
|
129
|
+
export type AppGraphModuleOptions = PluginModuleOptions;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Creates a module that contributes app graph builder extensions.
|
|
133
|
+
*
|
|
134
|
+
* @param options Module options including the activate function and optional configuration
|
|
135
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```ts
|
|
139
|
+
* Plugin.define(meta).pipe(
|
|
140
|
+
* Common.Plugin.addAppGraphModule({
|
|
141
|
+
* activate: Effect.fnUntraced(function* () {
|
|
142
|
+
* const extensions = yield* GraphBuilder.createExtension({
|
|
143
|
+
* id: meta.id,
|
|
144
|
+
* match: NodeMatcher.whenRoot,
|
|
145
|
+
* // All callbacks must return Effects.
|
|
146
|
+
* actions: () => Effect.succeed([{
|
|
147
|
+
* id: 'my-action',
|
|
148
|
+
* // Action data returns Effect for automatic context access.
|
|
149
|
+
* data: Effect.fnUntraced(function* () {
|
|
150
|
+
* yield* Operation.invoke(MyOperation, { ... });
|
|
151
|
+
* }),
|
|
152
|
+
* properties: { label: 'My Action', icon: 'ph--icon' },
|
|
153
|
+
* }]),
|
|
154
|
+
* connector: (node, get) => Effect.succeed([{ id: 'child', ... }]),
|
|
155
|
+
* });
|
|
156
|
+
* return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);
|
|
157
|
+
* })
|
|
158
|
+
* })
|
|
159
|
+
* )
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export function addAppGraphModule<T = void>(
|
|
163
|
+
options: AppGraphModuleOptions,
|
|
164
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
165
|
+
return Plugin$.addModule({
|
|
166
|
+
id: Capability$.getModuleTag(options.activate) ?? options.id ?? 'app-graph-builder',
|
|
167
|
+
activatesOn: options.activatesOn ?? ActivationEvent.SetupAppGraph,
|
|
168
|
+
activatesBefore: options.activatesBefore,
|
|
169
|
+
activatesAfter: options.activatesAfter,
|
|
170
|
+
activate: options.activate,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export type TranslationsModuleOptions = Omit<PluginModuleOptions, 'activate'> & {
|
|
175
|
+
translations: Resource | Resource[];
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Creates a module that contributes translations.
|
|
180
|
+
*
|
|
181
|
+
* @param options Module options including translations and optional configuration
|
|
182
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```ts
|
|
186
|
+
* Plugin.define(meta).pipe(
|
|
187
|
+
* Common.Plugin.addTranslationsModule({
|
|
188
|
+
* translations: translations
|
|
189
|
+
* })
|
|
190
|
+
* )
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
export function addTranslationsModule<T = void>(
|
|
194
|
+
options: TranslationsModuleOptions,
|
|
195
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
196
|
+
return Plugin$.addModule({
|
|
197
|
+
id: options?.id ?? 'translations',
|
|
198
|
+
activatesOn: options?.activatesOn ?? ActivationEvent.SetupTranslations,
|
|
199
|
+
activatesBefore: options?.activatesBefore,
|
|
200
|
+
activatesAfter: options?.activatesAfter,
|
|
201
|
+
activate: Effect.fnUntraced(function* () {
|
|
202
|
+
return Capability$.contributes(
|
|
203
|
+
Capability.Translations,
|
|
204
|
+
Array.isArray(options.translations) ? options.translations : ([options.translations] as Resource[]),
|
|
205
|
+
);
|
|
206
|
+
}),
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export type MetadataModuleOptions = Omit<PluginModuleOptions, 'activate'> & {
|
|
211
|
+
metadata: Capability.Metadata | Capability.Metadata[];
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Creates a module that contributes metadata.
|
|
216
|
+
*
|
|
217
|
+
* @param options Module options including metadata and optional configuration
|
|
218
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* Plugin.define(meta).pipe(
|
|
223
|
+
* Common.Plugin.addMetadataModule({
|
|
224
|
+
* metadata: {
|
|
225
|
+
* id: MyType.typename,
|
|
226
|
+
* metadata: { icon: 'ph--icon', ... }
|
|
227
|
+
* }
|
|
228
|
+
* })
|
|
229
|
+
* )
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
export function addMetadataModule<T = void>(
|
|
233
|
+
options: MetadataModuleOptions,
|
|
234
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
235
|
+
return Plugin$.addModule({
|
|
236
|
+
id: options.id ?? 'metadata',
|
|
237
|
+
activatesOn: options.activatesOn ?? ActivationEvent.SetupMetadata,
|
|
238
|
+
activatesBefore: options.activatesBefore,
|
|
239
|
+
activatesAfter: options.activatesAfter,
|
|
240
|
+
activate: Effect.fnUntraced(function* () {
|
|
241
|
+
return (Array.isArray(options.metadata) ? options.metadata : [options.metadata]).map((m) =>
|
|
242
|
+
Capability$.contributes(Capability.Metadata, m),
|
|
243
|
+
);
|
|
244
|
+
}),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// TODO(wittjosiah): Restrict type to only allow settings.
|
|
249
|
+
export type SettingsModuleOptions = PluginModuleOptions;
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Creates a module that contributes settings.
|
|
253
|
+
*/
|
|
254
|
+
export function addSettingsModule<T = void>(
|
|
255
|
+
options: SettingsModuleOptions,
|
|
256
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
257
|
+
return Plugin$.addModule({
|
|
258
|
+
id: Capability$.getModuleTag(options.activate) ?? options.id ?? 'settings',
|
|
259
|
+
activatesOn: options.activatesOn ?? ActivationEvent.SetupSettings,
|
|
260
|
+
activatesBefore: options.activatesBefore,
|
|
261
|
+
activatesAfter: options.activatesAfter,
|
|
262
|
+
activate: options.activate,
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// TODO(wittjosiah): Restrict type to only allow blueprint definitions.
|
|
267
|
+
export type BlueprintDefinitionModuleOptions = PluginModuleOptions;
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Creates a module that contributes blueprint definitions.
|
|
271
|
+
*
|
|
272
|
+
* @param options Module options including the activate function and optional configuration
|
|
273
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```ts
|
|
277
|
+
* Plugin.define(meta).pipe(
|
|
278
|
+
* Common.Plugin.addBlueprintDefinitionModule({
|
|
279
|
+
* activate: (context) =>
|
|
280
|
+
* Capability.contributes(Common.Capability.BlueprintDefinition, [
|
|
281
|
+
* BlueprintDefinition.make({ key: 'my-blueprint', ... })
|
|
282
|
+
* ])
|
|
283
|
+
* })
|
|
284
|
+
* )
|
|
285
|
+
* ```
|
|
286
|
+
*/
|
|
287
|
+
export function addBlueprintDefinitionModule<T = void>(
|
|
288
|
+
options: BlueprintDefinitionModuleOptions,
|
|
289
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
290
|
+
return Plugin$.addModule({
|
|
291
|
+
id: Capability$.getModuleTag(options.activate) ?? options.id ?? 'blueprint-definition',
|
|
292
|
+
activatesOn: options.activatesOn ?? ActivationEvent.SetupArtifactDefinition,
|
|
293
|
+
activatesBefore: options.activatesBefore,
|
|
294
|
+
activatesAfter: options.activatesAfter,
|
|
295
|
+
activate: options.activate,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
export type SchemaModuleOptions = Omit<PluginModuleOptions, 'activate'> & {
|
|
300
|
+
schema: ReadonlyArray<Type.Entity.Any>;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Creates a module that contributes schemas.
|
|
305
|
+
*
|
|
306
|
+
* @param options Module options including schema array and optional configuration
|
|
307
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
308
|
+
*
|
|
309
|
+
* @example
|
|
310
|
+
* ```ts
|
|
311
|
+
* Plugin.define(meta).pipe(
|
|
312
|
+
* Common.Plugin.addSchemaModule({
|
|
313
|
+
* schema: [MyType.Type, AnotherType.Type]
|
|
314
|
+
* })
|
|
315
|
+
* )
|
|
316
|
+
* ```
|
|
317
|
+
*/
|
|
318
|
+
export function addSchemaModule<T = void>(
|
|
319
|
+
options: SchemaModuleOptions,
|
|
320
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
321
|
+
return Plugin$.addModule({
|
|
322
|
+
id: options.id ?? 'schema',
|
|
323
|
+
activatesOn: options.activatesOn ?? ActivationEvent.SetupSchema,
|
|
324
|
+
activatesBefore: options.activatesBefore,
|
|
325
|
+
activatesAfter: options.activatesAfter,
|
|
326
|
+
activate: Effect.fnUntraced(function* () {
|
|
327
|
+
return Capability$.contributes(Capability.Schema, options.schema);
|
|
328
|
+
}),
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export type CommandModuleOptions = Omit<PluginModuleOptions, 'activate'> & {
|
|
333
|
+
commands: ReadonlyArray<Command$.Command<any, any, any, any>>;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Creates a module that contributes CLI commands.
|
|
338
|
+
*
|
|
339
|
+
* @param options Module options including commands and optional configuration
|
|
340
|
+
* @returns A function that can be used with Plugin.addModule() in a pipe chain
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* ```ts
|
|
344
|
+
* Plugin.define(meta).pipe(
|
|
345
|
+
* Common.Plugin.addCommandModule({
|
|
346
|
+
* commands: [myCommand, anotherCommand]
|
|
347
|
+
* })
|
|
348
|
+
* )
|
|
349
|
+
* ```
|
|
350
|
+
*/
|
|
351
|
+
export function addCommandModule<T = void>(
|
|
352
|
+
options: CommandModuleOptions,
|
|
353
|
+
): (builder: Plugin$.PluginBuilder<T>) => Plugin$.PluginBuilder<T> {
|
|
354
|
+
return Plugin$.addModule({
|
|
355
|
+
id: options.id ?? 'cli-commands',
|
|
356
|
+
activatesOn: options.activatesOn ?? ActivationEvent.Startup,
|
|
357
|
+
activatesBefore: options.activatesBefore,
|
|
358
|
+
activatesAfter: options.activatesAfter,
|
|
359
|
+
activate: Effect.fnUntraced(function* () {
|
|
360
|
+
return options.commands.map((cmd) => Capability$.contributes(Capability.Command, cmd));
|
|
361
|
+
}),
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
}
|
package/src/common/surface.ts
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import type { PropsWithChildren, ReactNode, RefCallback } from 'react';
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
import type { MakeOptional, Position } from '@dxos/util';
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import type { ErrorBoundary } from '../react';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* SurfaceProps are the props that are passed to the Surface component.
|
|
13
13
|
*/
|
|
14
|
-
export type SurfaceProps<T extends Record<string, any> = Record<string, unknown>> =
|
|
14
|
+
export type SurfaceProps<T extends Record<string, any> = Record<string, unknown>> = {
|
|
15
15
|
/**
|
|
16
16
|
* If specified, the Surface will be wrapped in an error boundary.
|
|
17
17
|
* The fallback component will be rendered if an error occurs.
|
|
@@ -23,17 +23,20 @@ export type SurfaceProps<T extends Record<string, any> = Record<string, unknown>
|
|
|
23
23
|
* The placeholder component will be rendered while the surface component is loading.
|
|
24
24
|
*/
|
|
25
25
|
placeholder?: ReactNode;
|
|
26
|
-
}> &
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
} & MakeOptional<CoreSurfaceProps<T>, 'id' | 'data'> &
|
|
27
|
+
/**
|
|
28
|
+
* Additional props to pass to the component.
|
|
29
|
+
* These props are not used by Surface itself but may be used by components which resolve the surface.
|
|
30
|
+
* Exclude known prop names to prevent overriding well-defined props.
|
|
31
|
+
*/
|
|
32
|
+
{
|
|
33
|
+
[K in keyof Record<string, any>]: K extends keyof CoreSurfaceProps<T> | 'fallback' | 'placeholder' ? never : any;
|
|
33
34
|
};
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
/**
|
|
37
|
+
* NOTE: If `[key: string]: unknown` is included in shared types, when re-used other fields become unknown as well.
|
|
38
|
+
*/
|
|
39
|
+
export type CoreSurfaceProps<T extends Record<string, any> = Record<string, unknown>> = PropsWithChildren<{
|
|
37
40
|
/**
|
|
38
41
|
* ID for debugging.
|
|
39
42
|
*/
|
|
@@ -46,6 +49,7 @@ type CoreSurfaceProps<T extends Record<string, any> = Record<string, unknown>> =
|
|
|
46
49
|
|
|
47
50
|
/**
|
|
48
51
|
* The data to be rendered by the surface.
|
|
52
|
+
* NOTE: This must be a stable value.
|
|
49
53
|
*/
|
|
50
54
|
data: T;
|
|
51
55
|
|
|
@@ -53,34 +57,64 @@ type CoreSurfaceProps<T extends Record<string, any> = Record<string, unknown>> =
|
|
|
53
57
|
* If more than one component is resolved, the limit determines how many are rendered.
|
|
54
58
|
*/
|
|
55
59
|
limit?: number | undefined;
|
|
56
|
-
}
|
|
60
|
+
}>;
|
|
57
61
|
|
|
58
|
-
type SurfaceComponentProps<T extends Record<string, any> = Record<string,
|
|
59
|
-
|
|
60
|
-
>;
|
|
62
|
+
export type SurfaceComponentProps<T extends Record<string, any> = Record<string, any>> = CoreSurfaceProps<T> & {
|
|
63
|
+
ref?: RefCallback<HTMLElement>;
|
|
64
|
+
} & Record<string, any>;
|
|
61
65
|
|
|
62
66
|
/**
|
|
63
67
|
* React component used to render a surface once is has matched.
|
|
64
68
|
*/
|
|
65
|
-
export type SurfaceComponent<T extends Record<string, any> = Record<string,
|
|
69
|
+
export type SurfaceComponent<T extends Record<string, any> = Record<string, any>> = (
|
|
66
70
|
props: SurfaceComponentProps<T>,
|
|
67
|
-
|
|
68
|
-
) => JSX.Element | null;
|
|
71
|
+
) => ReactNode;
|
|
69
72
|
|
|
70
73
|
/**
|
|
71
|
-
* Definition of when a SurfaceComponent should be rendered.
|
|
74
|
+
* Definition of when a React SurfaceComponent should be rendered.
|
|
72
75
|
*/
|
|
73
|
-
export type
|
|
76
|
+
export type ReactSurfaceDefinition<T extends Record<string, any> = any> = Readonly<{
|
|
77
|
+
kind: 'react';
|
|
74
78
|
id: string;
|
|
75
79
|
role: string | string[];
|
|
76
80
|
position?: Position;
|
|
81
|
+
component: SurfaceComponent<T>;
|
|
77
82
|
filter?: (data: Record<string, unknown>) => data is T;
|
|
78
|
-
component: SurfaceComponent<GuardedType<SurfaceDefinition<T>['filter']>>;
|
|
79
83
|
}>;
|
|
80
84
|
|
|
81
85
|
/**
|
|
82
|
-
*
|
|
86
|
+
* Definition of when a Web Component surface should be rendered.
|
|
87
|
+
*/
|
|
88
|
+
export type WebComponentSurfaceDefinition<T extends Record<string, any> = any> = Readonly<{
|
|
89
|
+
kind: 'web-component';
|
|
90
|
+
id: string;
|
|
91
|
+
role: string | string[];
|
|
92
|
+
position?: Position;
|
|
93
|
+
/**
|
|
94
|
+
* The tag name of the Web Component to render.
|
|
95
|
+
* The Web Component will receive the same props as React surfaces via properties/attributes.
|
|
96
|
+
*/
|
|
97
|
+
tagName: string;
|
|
98
|
+
filter?: (data: Record<string, unknown>) => data is T;
|
|
99
|
+
}>;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Definition of when a surface (React or Web Component) should be rendered.
|
|
103
|
+
*/
|
|
104
|
+
export type SurfaceDefinition<T extends Record<string, any> = any> =
|
|
105
|
+
| ReactSurfaceDefinition<T>
|
|
106
|
+
| WebComponentSurfaceDefinition<T>;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Creates a React surface definition.
|
|
83
110
|
*/
|
|
84
111
|
export const createSurface = <T extends Record<string, any> = any>(
|
|
85
|
-
definition:
|
|
86
|
-
):
|
|
112
|
+
definition: Omit<ReactSurfaceDefinition<T>, 'kind'>,
|
|
113
|
+
): ReactSurfaceDefinition<T> => ({ ...definition, kind: 'react' });
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Creates a Web Component surface definition.
|
|
117
|
+
*/
|
|
118
|
+
export const createWebSurface = <T extends Record<string, any> = any>(
|
|
119
|
+
definition: Omit<WebComponentSurfaceDefinition<T>, 'kind'>,
|
|
120
|
+
): WebComponentSurfaceDefinition<T> => ({ ...definition, kind: 'web-component' });
|
|
@@ -2,7 +2,27 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A Label represents translatable text - either a simple string or a tuple of [key, options].
|
|
9
|
+
*/
|
|
10
|
+
export const Label = Schema.Union(
|
|
11
|
+
Schema.String,
|
|
12
|
+
Schema.mutable(
|
|
13
|
+
Schema.Tuple(
|
|
14
|
+
Schema.String,
|
|
15
|
+
Schema.mutable(
|
|
16
|
+
Schema.Struct({
|
|
17
|
+
ns: Schema.String,
|
|
18
|
+
count: Schema.optional(Schema.Number),
|
|
19
|
+
defaultValue: Schema.optional(Schema.String),
|
|
20
|
+
}),
|
|
21
|
+
),
|
|
22
|
+
),
|
|
23
|
+
),
|
|
24
|
+
);
|
|
25
|
+
export type Label = Schema.Schema.Type<typeof Label>;
|
|
6
26
|
|
|
7
27
|
export const ResourceKey = Schema.Union(Schema.String, Schema.Record({ key: Schema.String, value: Schema.Any }));
|
|
8
28
|
export type ResourceKey = Schema.Schema.Type<typeof ResourceKey>;
|
package/src/context.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { createContext } from '@dxos/web-context';
|
|
6
|
+
|
|
7
|
+
import { type PluginManager } from './core';
|
|
8
|
+
|
|
9
|
+
export const PluginManagerContext = createContext<PluginManager.PluginManager>('dxos.org/app-framework/plugin-manager');
|
|
@@ -16,7 +16,7 @@ export type ActivationEvent = {
|
|
|
16
16
|
/**
|
|
17
17
|
* An activation event that can be a single event, or a combination of events.
|
|
18
18
|
*/
|
|
19
|
-
export type
|
|
19
|
+
export type Events =
|
|
20
20
|
| ActivationEvent
|
|
21
21
|
| { type: 'one-of'; events: ActivationEvent[] }
|
|
22
22
|
| { type: 'all-of'; events: ActivationEvent[] };
|
|
@@ -24,7 +24,7 @@ export type ActivationEvents =
|
|
|
24
24
|
/**
|
|
25
25
|
* Helper to define an activation event.
|
|
26
26
|
*/
|
|
27
|
-
export const
|
|
27
|
+
export const make = (id: string, specifier?: string) => {
|
|
28
28
|
return { id, specifier } as ActivationEvent;
|
|
29
29
|
};
|
|
30
30
|
|
|
@@ -46,16 +46,16 @@ export const allOf = (...events: ActivationEvent[]) => ({ type: 'all-of' as cons
|
|
|
46
46
|
/**
|
|
47
47
|
* Helper to check if an activation event is a one-of event.
|
|
48
48
|
*/
|
|
49
|
-
export const isOneOf = (events:
|
|
49
|
+
export const isOneOf = (events: Events): events is { type: 'one-of'; events: ActivationEvent[] } =>
|
|
50
50
|
'type' in events && events.type === 'one-of';
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Helper to check if an activation event is an all-of event.
|
|
54
54
|
*/
|
|
55
|
-
export const isAllOf = (events:
|
|
55
|
+
export const isAllOf = (events: Events): events is { type: 'all-of'; events: ActivationEvent[] } =>
|
|
56
56
|
'type' in events && events.type === 'all-of';
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Helper to get the events from an activation event.
|
|
60
60
|
*/
|
|
61
|
-
export const getEvents = (events:
|
|
61
|
+
export const getEvents = (events: Events) => ('type' in events ? events.events : [events]);
|