@dxos/app-framework 0.8.4-main.84f28bd → 0.8.4-main.8baae0fced

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (728) hide show
  1. package/.storybook/main.mts +9 -0
  2. package/.storybook/preview.mts +8 -0
  3. package/LICENSE +102 -5
  4. package/README.md +1 -1
  5. package/dist/lib/browser/capability-K5XIVCQU.mjs +35 -0
  6. package/dist/lib/browser/capability-K5XIVCQU.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-5AHASNDW.mjs +95 -0
  8. package/dist/lib/browser/chunk-5AHASNDW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-5GY3YOEL.mjs +28 -0
  10. package/dist/lib/browser/chunk-5GY3YOEL.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-66IXTIVK.mjs +48 -0
  12. package/dist/lib/browser/chunk-66IXTIVK.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-BRK6GYNB.mjs +142 -0
  14. package/dist/lib/browser/chunk-BRK6GYNB.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-FJ4765WW.mjs +8 -0
  16. package/dist/lib/browser/chunk-FJ4765WW.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-FO3IYSLV.mjs +68 -0
  18. package/dist/lib/browser/chunk-FO3IYSLV.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-IW44C7UL.mjs +83 -0
  20. package/dist/lib/browser/chunk-IW44C7UL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  22. package/dist/lib/browser/chunk-KFDF7KR3.mjs +42 -0
  23. package/dist/lib/browser/chunk-KFDF7KR3.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-KLHQNYJ2.mjs +422 -0
  25. package/dist/lib/browser/chunk-KLHQNYJ2.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-QLML5QFJ.mjs +581 -0
  27. package/dist/lib/browser/chunk-QLML5QFJ.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-SLX73WRZ.mjs +218 -0
  29. package/dist/lib/browser/chunk-SLX73WRZ.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-UVTGHZQF.mjs +513 -0
  31. package/dist/lib/browser/chunk-UVTGHZQF.mjs.map +7 -0
  32. package/dist/lib/browser/chunk-VJ5PFAWC.mjs +1446 -0
  33. package/dist/lib/browser/chunk-VJ5PFAWC.mjs.map +7 -0
  34. package/dist/lib/browser/cli/index.mjs +74 -0
  35. package/dist/lib/browser/cli/index.mjs.map +7 -0
  36. package/dist/lib/browser/common/activation-events.mjs +20 -0
  37. package/dist/lib/browser/common/capabilities.mjs +56 -0
  38. package/dist/lib/browser/core/activation-event.mjs +20 -0
  39. package/dist/lib/browser/core/capability.mjs +32 -0
  40. package/dist/lib/browser/core/capability.mjs.map +7 -0
  41. package/dist/lib/browser/core/plugin-manager.mjs +19 -0
  42. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  43. package/dist/lib/browser/core/plugin.mjs +39 -0
  44. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  45. package/dist/lib/browser/core/url-loader.mjs +24 -0
  46. package/dist/lib/browser/core/url-loader.mjs.map +7 -0
  47. package/dist/lib/browser/index.mjs +85 -156
  48. package/dist/lib/browser/index.mjs.map +4 -4
  49. package/dist/lib/browser/meta.json +1 -1
  50. package/dist/lib/browser/process-manager-capability-JIWLN7SU.mjs +89 -0
  51. package/dist/lib/browser/process-manager-capability-JIWLN7SU.mjs.map +7 -0
  52. package/dist/lib/browser/testing/index.mjs +249 -56
  53. package/dist/lib/browser/testing/index.mjs.map +4 -4
  54. package/dist/lib/browser/testing/react.mjs +78 -0
  55. package/dist/lib/browser/testing/react.mjs.map +7 -0
  56. package/dist/lib/browser/ui/index.mjs +54 -0
  57. package/dist/lib/browser/ui/index.mjs.map +7 -0
  58. package/dist/lib/node-esm/capability-RLKFFLTB.mjs +36 -0
  59. package/dist/lib/node-esm/capability-RLKFFLTB.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs +10 -0
  61. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-42UNAKYO.mjs +423 -0
  63. package/dist/lib/node-esm/chunk-42UNAKYO.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-6S45OMUP.mjs +219 -0
  65. package/dist/lib/node-esm/chunk-6S45OMUP.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-BYHYYJZH.mjs +143 -0
  67. package/dist/lib/node-esm/chunk-BYHYYJZH.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-CTKEZHKF.mjs +84 -0
  69. package/dist/lib/node-esm/chunk-CTKEZHKF.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  71. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-JNT72ZCN.mjs +514 -0
  73. package/dist/lib/node-esm/chunk-JNT72ZCN.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs +29 -0
  75. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-LJNUFNDO.mjs +582 -0
  77. package/dist/lib/node-esm/chunk-LJNUFNDO.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-OUEMWPIW.mjs +43 -0
  79. package/dist/lib/node-esm/chunk-OUEMWPIW.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-PW2VYGOS.mjs +96 -0
  81. package/dist/lib/node-esm/chunk-PW2VYGOS.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-SFYCO3PT.mjs +1447 -0
  83. package/dist/lib/node-esm/chunk-SFYCO3PT.mjs.map +7 -0
  84. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs +70 -0
  85. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +7 -0
  86. package/dist/lib/node-esm/chunk-XOCUANHO.mjs +49 -0
  87. package/dist/lib/node-esm/chunk-XOCUANHO.mjs.map +7 -0
  88. package/dist/lib/node-esm/cli/index.mjs +75 -0
  89. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  90. package/dist/lib/node-esm/common/activation-events.mjs +21 -0
  91. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  92. package/dist/lib/node-esm/common/capabilities.mjs +57 -0
  93. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  94. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  95. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  96. package/dist/lib/node-esm/core/capability.mjs +33 -0
  97. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  98. package/dist/lib/node-esm/core/plugin-manager.mjs +20 -0
  99. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  100. package/dist/lib/node-esm/core/plugin.mjs +40 -0
  101. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  102. package/dist/lib/node-esm/core/url-loader.mjs +25 -0
  103. package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
  104. package/dist/lib/node-esm/index.mjs +85 -156
  105. package/dist/lib/node-esm/index.mjs.map +4 -4
  106. package/dist/lib/node-esm/meta.json +1 -1
  107. package/dist/lib/node-esm/process-manager-capability-PHKLO2BL.mjs +90 -0
  108. package/dist/lib/node-esm/process-manager-capability-PHKLO2BL.mjs.map +7 -0
  109. package/dist/lib/node-esm/testing/index.mjs +249 -56
  110. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  111. package/dist/lib/node-esm/testing/react.mjs +79 -0
  112. package/dist/lib/node-esm/testing/react.mjs.map +7 -0
  113. package/dist/lib/node-esm/ui/index.mjs +55 -0
  114. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  115. package/dist/plugin/node-esm/index.mjs +893 -0
  116. package/dist/plugin/node-esm/index.mjs.map +7 -0
  117. package/dist/plugin/node-esm/meta.json +1 -0
  118. package/dist/types/src/cli/cli.d.ts +37 -0
  119. package/dist/types/src/cli/cli.d.ts.map +1 -0
  120. package/dist/types/src/cli/index.d.ts +2 -0
  121. package/dist/types/src/cli/index.d.ts.map +1 -0
  122. package/dist/types/src/common/activation-events.d.ts +24 -0
  123. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  124. package/dist/types/src/common/annotations.d.ts +1 -0
  125. package/dist/types/src/common/annotations.d.ts.map +1 -0
  126. package/dist/types/src/common/capabilities.d.ts +214 -120
  127. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  128. package/dist/types/src/common/index.d.ts +4 -8
  129. package/dist/types/src/common/index.d.ts.map +1 -1
  130. package/dist/types/src/common/operations.d.ts +19 -0
  131. package/dist/types/src/common/operations.d.ts.map +1 -0
  132. package/dist/types/src/common/translations.d.ts +8 -8
  133. package/dist/types/src/common/translations.d.ts.map +1 -1
  134. package/dist/types/src/context.d.ts +5 -0
  135. package/dist/types/src/context.d.ts.map +1 -0
  136. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +11 -11
  137. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  138. package/dist/types/src/core/capability-manager.d.ts +48 -0
  139. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  140. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  141. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  142. package/dist/types/src/core/capability.d.ts +161 -0
  143. package/dist/types/src/core/capability.d.ts.map +1 -0
  144. package/dist/types/src/core/edge-registry-plugin-provider.d.ts +30 -0
  145. package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -0
  146. package/dist/types/src/core/index.d.ts +11 -4
  147. package/dist/types/src/core/index.d.ts.map +1 -1
  148. package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
  149. package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
  150. package/dist/types/src/core/plugin-manager.d.ts +297 -0
  151. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  152. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  153. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  154. package/dist/types/src/core/plugin-manifest.d.ts +101 -0
  155. package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
  156. package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
  157. package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
  158. package/dist/types/src/core/plugin.d.ts +277 -37
  159. package/dist/types/src/core/plugin.d.ts.map +1 -1
  160. package/dist/types/src/core/registry.d.ts +107 -0
  161. package/dist/types/src/core/registry.d.ts.map +1 -0
  162. package/dist/types/src/core/url-loader.d.ts +127 -0
  163. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  164. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  165. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  166. package/dist/types/src/helpers.d.ts.map +1 -1
  167. package/dist/types/src/index.d.ts +2 -4
  168. package/dist/types/src/index.d.ts.map +1 -1
  169. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts +3 -0
  170. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts.map +1 -0
  171. package/dist/types/src/plugin-process-manager/history/capability.d.ts +7 -0
  172. package/dist/types/src/plugin-process-manager/history/capability.d.ts.map +1 -0
  173. package/dist/types/src/plugin-process-manager/history/errors.d.ts +32 -0
  174. package/dist/types/src/plugin-process-manager/history/errors.d.ts.map +1 -0
  175. package/dist/types/src/plugin-process-manager/history/history-tracker.d.ts +18 -0
  176. package/dist/types/src/plugin-process-manager/history/history-tracker.d.ts.map +1 -0
  177. package/dist/types/src/plugin-process-manager/history/history-tracker.test.d.ts +2 -0
  178. package/dist/types/src/plugin-process-manager/history/history-tracker.test.d.ts.map +1 -0
  179. package/dist/types/src/plugin-process-manager/history/index.d.ts +6 -0
  180. package/dist/types/src/plugin-process-manager/history/index.d.ts.map +1 -0
  181. package/dist/types/src/plugin-process-manager/history/types.d.ts +13 -0
  182. package/dist/types/src/plugin-process-manager/history/types.d.ts.map +1 -0
  183. package/dist/types/src/plugin-process-manager/history/undo-mapping.d.ts +101 -0
  184. package/dist/types/src/plugin-process-manager/history/undo-mapping.d.ts.map +1 -0
  185. package/dist/types/src/plugin-process-manager/history/undo-registry.d.ts +23 -0
  186. package/dist/types/src/plugin-process-manager/history/undo-registry.d.ts.map +1 -0
  187. package/dist/types/src/plugin-process-manager/history/undo-registry.test.d.ts +2 -0
  188. package/dist/types/src/plugin-process-manager/history/undo-registry.test.d.ts.map +1 -0
  189. package/dist/types/src/plugin-process-manager/index.d.ts +3 -0
  190. package/dist/types/src/plugin-process-manager/index.d.ts.map +1 -0
  191. package/dist/types/src/plugin-process-manager/meta.d.ts +3 -0
  192. package/dist/types/src/plugin-process-manager/meta.d.ts.map +1 -0
  193. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts +8 -0
  194. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts.map +1 -0
  195. package/dist/types/src/plugin-process-manager/testing.d.ts +59 -0
  196. package/dist/types/src/plugin-process-manager/testing.d.ts.map +1 -0
  197. package/dist/types/src/testing/harness.d.ts +79 -0
  198. package/dist/types/src/testing/harness.d.ts.map +1 -0
  199. package/dist/types/src/testing/index.d.ts +2 -0
  200. package/dist/types/src/testing/index.d.ts.map +1 -1
  201. package/dist/types/src/testing/react.d.ts +27 -0
  202. package/dist/types/src/testing/react.d.ts.map +1 -0
  203. package/dist/types/src/testing/react.test.d.ts +2 -0
  204. package/dist/types/src/testing/react.test.d.ts.map +1 -0
  205. package/dist/types/src/testing/service.d.ts +8 -0
  206. package/dist/types/src/testing/service.d.ts.map +1 -0
  207. package/dist/types/src/testing/withPluginManager.d.ts +11 -10
  208. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  209. package/dist/types/src/testing/withPluginManager.stories.d.ts +9 -3
  210. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  211. package/dist/types/src/ui/components/App/App.d.ts +9 -0
  212. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  213. package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
  214. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  215. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  216. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  217. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts +64 -0
  218. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts.map +1 -0
  219. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts +19 -0
  220. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts.map +1 -0
  221. package/dist/types/src/ui/components/Placeholder/index.d.ts +2 -0
  222. package/dist/types/src/ui/components/Placeholder/index.d.ts.map +1 -0
  223. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts +13 -0
  224. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  225. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
  226. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  227. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  228. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  229. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +24 -0
  230. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  231. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts +14 -0
  232. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  233. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
  234. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  235. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  236. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  237. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  238. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  239. package/dist/types/src/ui/components/Surface/index.d.ts +36 -0
  240. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  241. package/dist/types/src/ui/components/Surface/types.d.ts +197 -0
  242. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  243. package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
  244. package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
  245. package/dist/types/src/ui/components/index.d.ts +5 -0
  246. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  247. package/dist/types/src/ui/hooks/index.d.ts +7 -0
  248. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  249. package/dist/types/src/ui/hooks/useApp.d.ts +86 -0
  250. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  251. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  252. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  253. package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
  254. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  255. package/dist/types/src/ui/hooks/useLoading.d.ts +18 -0
  256. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  257. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts +24 -0
  258. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts.map +1 -0
  259. package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
  260. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  261. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  262. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  263. package/dist/types/src/ui/index.d.ts +3 -0
  264. package/dist/types/src/ui/index.d.ts.map +1 -0
  265. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts +34 -0
  266. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts.map +1 -0
  267. package/dist/types/src/vite-plugin/boot-loader/index.d.ts +2 -0
  268. package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -0
  269. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts +51 -0
  270. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts.map +1 -0
  271. package/dist/types/src/vite-plugin/composer/index.d.ts +34 -0
  272. package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -0
  273. package/dist/types/src/vite-plugin/import-map/index.d.ts +28 -0
  274. package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -0
  275. package/dist/types/src/vite-plugin/index.d.ts +5 -0
  276. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  277. package/dist/types/src/vite-plugin/manifest.d.ts +41 -0
  278. package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
  279. package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
  280. package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
  281. package/dist/types/src/vite-plugin/packages.d.ts +13 -0
  282. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  283. package/dist/types/tsconfig.tsbuildinfo +1 -1
  284. package/moon.yml +26 -3
  285. package/package.json +121 -53
  286. package/src/cli/cli.ts +102 -0
  287. package/src/{playground/layout → cli}/index.ts +1 -1
  288. package/src/common/activation-events.ts +39 -0
  289. package/src/{playground/debug/index.ts → common/annotations.ts} +0 -2
  290. package/src/common/capabilities.ts +304 -108
  291. package/src/common/index.ts +4 -8
  292. package/src/common/operations.ts +35 -0
  293. package/src/common/translations.ts +18 -10
  294. package/src/context.ts +9 -0
  295. package/src/core/{events.ts → activation-event.ts} +10 -7
  296. package/src/core/capability-manager.test.ts +151 -0
  297. package/src/core/capability-manager.ts +192 -0
  298. package/src/core/capability.ts +254 -0
  299. package/src/core/edge-registry-plugin-provider.ts +92 -0
  300. package/src/core/index.ts +11 -4
  301. package/src/core/plugin-asset-cache.ts +60 -0
  302. package/src/core/plugin-manager.test.ts +1899 -0
  303. package/src/core/plugin-manager.ts +1687 -0
  304. package/src/core/plugin-manifest.test.ts +75 -0
  305. package/src/core/plugin-manifest.ts +134 -0
  306. package/src/core/plugin.ts +419 -43
  307. package/src/core/registry.ts +163 -0
  308. package/src/core/url-loader.test.ts +221 -0
  309. package/src/core/url-loader.ts +388 -0
  310. package/src/helpers.test.ts +1 -1
  311. package/src/index.ts +2 -4
  312. package/src/plugin-process-manager/ProcessManagerPlugin.ts +24 -0
  313. package/src/plugin-process-manager/history/capability.ts +36 -0
  314. package/src/plugin-process-manager/history/errors.ts +7 -0
  315. package/src/plugin-process-manager/history/history-tracker.test.ts +374 -0
  316. package/src/plugin-process-manager/history/history-tracker.ts +128 -0
  317. package/src/plugin-process-manager/history/index.ts +9 -0
  318. package/src/plugin-process-manager/history/types.ts +17 -0
  319. package/src/plugin-process-manager/history/undo-mapping.ts +135 -0
  320. package/src/plugin-process-manager/history/undo-registry.test.ts +72 -0
  321. package/src/plugin-process-manager/history/undo-registry.ts +54 -0
  322. package/src/plugin-process-manager/index.ts +6 -0
  323. package/src/plugin-process-manager/meta.ts +14 -0
  324. package/src/plugin-process-manager/process-manager-capability.ts +178 -0
  325. package/src/plugin-process-manager/testing.ts +155 -0
  326. package/src/testing/harness.ts +247 -0
  327. package/src/testing/index.ts +2 -0
  328. package/src/testing/react.test.tsx +48 -0
  329. package/src/testing/react.tsx +113 -0
  330. package/src/testing/service.ts +52 -0
  331. package/src/testing/withPluginManager.stories.tsx +15 -12
  332. package/src/testing/withPluginManager.tsx +82 -55
  333. package/src/ui/components/App/App.stories.tsx +86 -0
  334. package/src/ui/components/App/App.tsx +81 -0
  335. package/src/{playground/logger → ui/components/App}/index.ts +1 -1
  336. package/src/ui/components/Placeholder/Placeholder.stories.tsx +77 -0
  337. package/src/ui/components/Placeholder/Placeholder.tsx +155 -0
  338. package/src/ui/components/Placeholder/index.ts +5 -0
  339. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +184 -0
  340. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
  341. package/src/ui/components/PluginManager/index.ts +5 -0
  342. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +144 -0
  343. package/src/ui/components/Surface/SurfaceComponent.tsx +303 -0
  344. package/src/ui/components/Surface/SurfaceInfo.tsx +106 -0
  345. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  346. package/src/ui/components/Surface/context.ts +12 -0
  347. package/src/ui/components/Surface/index.ts +54 -0
  348. package/src/ui/components/Surface/types.test.ts +126 -0
  349. package/src/ui/components/Surface/types.ts +269 -0
  350. package/src/ui/components/index.ts +8 -0
  351. package/src/ui/hooks/index.ts +10 -0
  352. package/src/ui/hooks/useApp.test.tsx +159 -0
  353. package/src/ui/hooks/useApp.tsx +418 -0
  354. package/src/ui/hooks/useCapabilities.ts +67 -0
  355. package/src/ui/hooks/useLoading.tsx +76 -0
  356. package/src/ui/hooks/useProcessManagerRuntime.ts +68 -0
  357. package/src/ui/hooks/useSettingsState.ts +26 -0
  358. package/src/ui/hooks/useSurface.ts +13 -0
  359. package/src/ui/index.ts +6 -0
  360. package/src/vite-plugin/boot-loader/BootLoader.stories.tsx +270 -0
  361. package/src/vite-plugin/boot-loader/boot-loader.css +320 -0
  362. package/src/vite-plugin/boot-loader/boot-loader.js +325 -0
  363. package/src/vite-plugin/boot-loader/index.ts +5 -0
  364. package/src/vite-plugin/boot-loader/loader.ts +123 -0
  365. package/src/vite-plugin/composer/index.ts +306 -0
  366. package/src/vite-plugin/import-map/index.ts +527 -0
  367. package/src/vite-plugin/index.ts +10 -0
  368. package/src/vite-plugin/manifest.test.ts +46 -0
  369. package/src/vite-plugin/manifest.ts +57 -0
  370. package/src/vite-plugin/packages.ts +187 -0
  371. package/tsconfig.json +33 -22
  372. package/tsconfig.node.json +2 -4
  373. package/typedoc.json +2 -4
  374. package/vitest.config.ts +8 -6
  375. package/.eslintrc.cjs +0 -9
  376. package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
  377. package/.swc/plugins/v7_linux_x86_64_13.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429 +0 -0
  378. package/dist/lib/browser/app-graph-builder-BGGXLD6T.mjs +0 -137
  379. package/dist/lib/browser/app-graph-builder-BGGXLD6T.mjs.map +0 -7
  380. package/dist/lib/browser/chunk-2636QSIK.mjs +0 -1518
  381. package/dist/lib/browser/chunk-2636QSIK.mjs.map +0 -7
  382. package/dist/lib/browser/chunk-DHZB7HG7.mjs +0 -413
  383. package/dist/lib/browser/chunk-DHZB7HG7.mjs.map +0 -7
  384. package/dist/lib/browser/chunk-ORWHM7CO.mjs +0 -32
  385. package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
  386. package/dist/lib/browser/intent-dispatcher-TWKB22NI.mjs +0 -11
  387. package/dist/lib/browser/intent-resolver-O67UANYP.mjs +0 -39
  388. package/dist/lib/browser/intent-resolver-O67UANYP.mjs.map +0 -7
  389. package/dist/lib/browser/store-LFKDWHUQ.mjs +0 -30
  390. package/dist/lib/browser/store-LFKDWHUQ.mjs.map +0 -7
  391. package/dist/lib/browser/worker.mjs +0 -79
  392. package/dist/lib/node-esm/app-graph-builder-QHIJUYYW.mjs +0 -138
  393. package/dist/lib/node-esm/app-graph-builder-QHIJUYYW.mjs.map +0 -7
  394. package/dist/lib/node-esm/chunk-NJAFK626.mjs +0 -414
  395. package/dist/lib/node-esm/chunk-NJAFK626.mjs.map +0 -7
  396. package/dist/lib/node-esm/chunk-UMZQERLE.mjs +0 -34
  397. package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
  398. package/dist/lib/node-esm/chunk-VSKRV3NW.mjs +0 -1520
  399. package/dist/lib/node-esm/chunk-VSKRV3NW.mjs.map +0 -7
  400. package/dist/lib/node-esm/intent-dispatcher-5PRM3KGH.mjs +0 -12
  401. package/dist/lib/node-esm/intent-resolver-K3D4BXQQ.mjs +0 -40
  402. package/dist/lib/node-esm/intent-resolver-K3D4BXQQ.mjs.map +0 -7
  403. package/dist/lib/node-esm/store-53XDUBMD.mjs +0 -31
  404. package/dist/lib/node-esm/store-53XDUBMD.mjs.map +0 -7
  405. package/dist/lib/node-esm/worker.mjs +0 -80
  406. package/dist/types/src/App.d.ts +0 -43
  407. package/dist/types/src/App.d.ts.map +0 -1
  408. package/dist/types/src/common/collaboration.d.ts +0 -19
  409. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  410. package/dist/types/src/common/events.d.ts +0 -52
  411. package/dist/types/src/common/events.d.ts.map +0 -1
  412. package/dist/types/src/common/file.d.ts +0 -14
  413. package/dist/types/src/common/file.d.ts.map +0 -1
  414. package/dist/types/src/common/graph.d.ts +0 -21
  415. package/dist/types/src/common/graph.d.ts.map +0 -1
  416. package/dist/types/src/common/layout.d.ts +0 -281
  417. package/dist/types/src/common/layout.d.ts.map +0 -1
  418. package/dist/types/src/common/surface.d.ts +0 -65
  419. package/dist/types/src/common/surface.d.ts.map +0 -1
  420. package/dist/types/src/core/capabilities.d.ts +0 -114
  421. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  422. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  423. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  424. package/dist/types/src/core/events.d.ts.map +0 -1
  425. package/dist/types/src/core/manager.d.ts +0 -122
  426. package/dist/types/src/core/manager.d.ts.map +0 -1
  427. package/dist/types/src/core/manager.test.d.ts +0 -2
  428. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  429. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  430. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  431. package/dist/types/src/playground/debug/index.d.ts +0 -2
  432. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  433. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  434. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  435. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  436. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  437. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  438. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  439. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  440. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  441. package/dist/types/src/playground/generator/index.d.ts +0 -3
  442. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  443. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  444. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  445. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  446. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  447. package/dist/types/src/playground/layout/index.d.ts +0 -2
  448. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  449. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  450. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  451. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  452. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  453. package/dist/types/src/playground/logger/index.d.ts +0 -2
  454. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  455. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  456. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  457. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  458. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  459. package/dist/types/src/playground/playground.stories.d.ts +0 -10
  460. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  461. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  462. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  463. package/dist/types/src/plugin-intent/actions.d.ts +0 -38
  464. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  465. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  466. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  467. package/dist/types/src/plugin-intent/index.d.ts +0 -5
  468. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  469. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  470. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  471. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  472. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  473. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  474. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  475. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
  476. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  477. package/dist/types/src/plugin-settings/actions.d.ts +0 -27
  478. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  479. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
  480. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  481. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  482. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  483. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  484. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  485. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  486. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  487. package/dist/types/src/plugin-settings/translations.d.ts +0 -10
  488. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  489. package/dist/types/src/react/ErrorBoundary.d.ts +0 -31
  490. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  491. package/dist/types/src/react/IntentContext.d.ts +0 -8
  492. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  493. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  494. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  495. package/dist/types/src/react/Surface.d.ts +0 -12
  496. package/dist/types/src/react/Surface.d.ts.map +0 -1
  497. package/dist/types/src/react/Surface.stories.d.ts +0 -16
  498. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  499. package/dist/types/src/react/common.d.ts +0 -13
  500. package/dist/types/src/react/common.d.ts.map +0 -1
  501. package/dist/types/src/react/index.d.ts +0 -7
  502. package/dist/types/src/react/index.d.ts.map +0 -1
  503. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  504. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  505. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  506. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  507. package/dist/types/src/worker.d.ts +0 -4
  508. package/dist/types/src/worker.d.ts.map +0 -1
  509. package/src/App.tsx +0 -276
  510. package/src/common/collaboration.ts +0 -21
  511. package/src/common/events.ts +0 -77
  512. package/src/common/file.ts +0 -22
  513. package/src/common/graph.ts +0 -30
  514. package/src/common/layout.ts +0 -278
  515. package/src/common/surface.ts +0 -86
  516. package/src/core/capabilities.test.ts +0 -136
  517. package/src/core/capabilities.ts +0 -254
  518. package/src/core/manager.test.ts +0 -515
  519. package/src/core/manager.ts +0 -519
  520. package/src/playground/debug/Debug.tsx +0 -39
  521. package/src/playground/debug/plugin.ts +0 -17
  522. package/src/playground/generator/Main.tsx +0 -71
  523. package/src/playground/generator/Toolbar.tsx +0 -46
  524. package/src/playground/generator/generator.ts +0 -48
  525. package/src/playground/generator/index.ts +0 -6
  526. package/src/playground/generator/plugin.ts +0 -23
  527. package/src/playground/layout/Layout.tsx +0 -33
  528. package/src/playground/layout/plugin.ts +0 -17
  529. package/src/playground/logger/Toolbar.tsx +0 -29
  530. package/src/playground/logger/plugin.ts +0 -36
  531. package/src/playground/logger/schema.ts +0 -12
  532. package/src/playground/playground.stories.tsx +0 -42
  533. package/src/plugin-intent/IntentPlugin.ts +0 -20
  534. package/src/plugin-intent/actions.ts +0 -33
  535. package/src/plugin-intent/errors.ts +0 -39
  536. package/src/plugin-intent/index.ts +0 -8
  537. package/src/plugin-intent/intent-dispatcher.test.ts +0 -279
  538. package/src/plugin-intent/intent-dispatcher.ts +0 -333
  539. package/src/plugin-intent/intent.ts +0 -154
  540. package/src/plugin-settings/SettingsPlugin.ts +0 -35
  541. package/src/plugin-settings/actions.ts +0 -29
  542. package/src/plugin-settings/app-graph-builder.ts +0 -157
  543. package/src/plugin-settings/index.ts +0 -6
  544. package/src/plugin-settings/intent-resolver.ts +0 -34
  545. package/src/plugin-settings/store.ts +0 -33
  546. package/src/plugin-settings/translations.ts +0 -19
  547. package/src/react/ErrorBoundary.tsx +0 -45
  548. package/src/react/IntentContext.tsx +0 -34
  549. package/src/react/Surface.stories.tsx +0 -96
  550. package/src/react/Surface.tsx +0 -77
  551. package/src/react/common.ts +0 -12
  552. package/src/react/index.ts +0 -10
  553. package/src/react/useCapabilities.ts +0 -30
  554. package/src/react/useIntentResolver.ts +0 -22
  555. package/src/worker.ts +0 -11
  556. package/typedoc/.nojekyll +0 -1
  557. package/typedoc/assets/hierarchy.js +0 -1
  558. package/typedoc/assets/highlight.css +0 -106
  559. package/typedoc/assets/icons.js +0 -18
  560. package/typedoc/assets/icons.svg +0 -1
  561. package/typedoc/assets/main.js +0 -60
  562. package/typedoc/assets/navigation.js +0 -1
  563. package/typedoc/assets/search.js +0 -1
  564. package/typedoc/assets/style.css +0 -1640
  565. package/typedoc/classes/CollaborationActions.InsertContent.html +0 -421
  566. package/typedoc/classes/ErrorBoundary.html +0 -125
  567. package/typedoc/classes/IntentAction.ShowUndo.html +0 -227
  568. package/typedoc/classes/IntentAction.Track.html +0 -266
  569. package/typedoc/classes/LayoutAction.AddToast.html +0 -265
  570. package/typedoc/classes/LayoutAction.Close.html +0 -382
  571. package/typedoc/classes/LayoutAction.Expose.html +0 -265
  572. package/typedoc/classes/LayoutAction.Open.html +0 -1123
  573. package/typedoc/classes/LayoutAction.RevertWorkspace.html +0 -343
  574. package/typedoc/classes/LayoutAction.ScrollIntoView.html +0 -460
  575. package/typedoc/classes/LayoutAction.Set.html +0 -460
  576. package/typedoc/classes/LayoutAction.SetLayoutMode.html +0 -499
  577. package/typedoc/classes/LayoutAction.SwitchWorkspace.html +0 -265
  578. package/typedoc/classes/LayoutAction.UpdateComplementary.html +0 -616
  579. package/typedoc/classes/LayoutAction.UpdateDialog.html +0 -1123
  580. package/typedoc/classes/LayoutAction.UpdateLayout.html +0 -461
  581. package/typedoc/classes/LayoutAction.UpdatePopover.html +0 -1435
  582. package/typedoc/classes/LayoutAction.UpdateSidebar.html +0 -616
  583. package/typedoc/classes/Plugin.html +0 -6
  584. package/typedoc/classes/PluginContext.html +0 -38
  585. package/typedoc/classes/PluginManager.html +0 -43
  586. package/typedoc/classes/PluginModule.html +0 -18
  587. package/typedoc/classes/SettingsAction.Open.html +0 -226
  588. package/typedoc/classes/SettingsAction.OpenPluginRegistry.html +0 -265
  589. package/typedoc/functions/Events.createStateEvent.html +0 -2
  590. package/typedoc/functions/IntentPlugin.html +0 -1
  591. package/typedoc/functions/SettingsPlugin.html +0 -1
  592. package/typedoc/functions/allOf.html +0 -2
  593. package/typedoc/functions/chain.html +0 -3
  594. package/typedoc/functions/contributes.html +0 -2
  595. package/typedoc/functions/createDispatcher.html +0 -3
  596. package/typedoc/functions/createIntent.html +0 -6
  597. package/typedoc/functions/createResolver.html +0 -2
  598. package/typedoc/functions/createSurface.html +0 -2
  599. package/typedoc/functions/defineCapability.html +0 -2
  600. package/typedoc/functions/defineEvent.html +0 -2
  601. package/typedoc/functions/defineModule.html +0 -2
  602. package/typedoc/functions/definePlugin.html +0 -2
  603. package/typedoc/functions/eventKey.html +0 -2
  604. package/typedoc/functions/getEvents.html +0 -2
  605. package/typedoc/functions/isAllOf.html +0 -2
  606. package/typedoc/functions/isOneOf.html +0 -2
  607. package/typedoc/functions/isSurfaceAvailable.html +0 -2
  608. package/typedoc/functions/lazy.html +0 -2
  609. package/typedoc/functions/oneOf.html +0 -2
  610. package/typedoc/functions/useApp.html +0 -6
  611. package/typedoc/functions/useAppGraph.html +0 -1
  612. package/typedoc/functions/useCapabilities.html +0 -3
  613. package/typedoc/functions/useCapability.html +0 -4
  614. package/typedoc/functions/useIntentDispatcher.html +0 -1
  615. package/typedoc/functions/useIntentResolver.html +0 -1
  616. package/typedoc/functions/useLayout.html +0 -1
  617. package/typedoc/functions/usePluginManager.html +0 -2
  618. package/typedoc/hierarchy.html +0 -1
  619. package/typedoc/index.html +0 -12
  620. package/typedoc/interfaces/LayoutAction.Toast.html +0 -10
  621. package/typedoc/media/LICENSE +0 -8
  622. package/typedoc/modules/Capabilities.html +0 -1
  623. package/typedoc/modules/CollaborationActions.html +0 -1
  624. package/typedoc/modules/Events.html +0 -1
  625. package/typedoc/modules/IntentAction.html +0 -1
  626. package/typedoc/modules/LayoutAction.html +0 -2
  627. package/typedoc/modules/SettingsAction.html +0 -1
  628. package/typedoc/modules.html +0 -1
  629. package/typedoc/types/ActivationEvent.html +0 -8
  630. package/typedoc/types/ActivationEvents.html +0 -2
  631. package/typedoc/types/AnyCapability.html +0 -1
  632. package/typedoc/types/AnyIntent.html +0 -1
  633. package/typedoc/types/AnyIntentChain.html +0 -1
  634. package/typedoc/types/AnyIntentEffectResult.html +0 -1
  635. package/typedoc/types/AnyIntentResolver.html +0 -1
  636. package/typedoc/types/AnyIntentResult.html +0 -1
  637. package/typedoc/types/Capabilities.FileUploader.html +0 -1
  638. package/typedoc/types/Capabilities.IntentResolver.html +0 -1
  639. package/typedoc/types/Capabilities.Layout.html +0 -1
  640. package/typedoc/types/Capabilities.Metadata.html +0 -1
  641. package/typedoc/types/Capabilities.ReactContext.html +0 -1
  642. package/typedoc/types/Capabilities.ReactRoot.html +0 -1
  643. package/typedoc/types/Capabilities.ReactSurface.html +0 -1
  644. package/typedoc/types/Capabilities.Settings.html +0 -4
  645. package/typedoc/types/Capability.html +0 -9
  646. package/typedoc/types/CreateAppOptions.html +0 -10
  647. package/typedoc/types/FileInfo.html +0 -1
  648. package/typedoc/types/Intent.html +0 -10
  649. package/typedoc/types/IntentChain.html +0 -6
  650. package/typedoc/types/IntentContext.html +0 -5
  651. package/typedoc/types/IntentData.html +0 -1
  652. package/typedoc/types/IntentDispatcher.html +0 -2
  653. package/typedoc/types/IntentDispatcherResult.html +0 -2
  654. package/typedoc/types/IntentEffectDefinition.html +0 -2
  655. package/typedoc/types/IntentEffectResult.html +0 -15
  656. package/typedoc/types/IntentParams.html +0 -3
  657. package/typedoc/types/IntentResolver.html +0 -2
  658. package/typedoc/types/IntentResultData.html +0 -1
  659. package/typedoc/types/IntentSchema.html +0 -1
  660. package/typedoc/types/IntentUndo.html +0 -2
  661. package/typedoc/types/InterfaceDef.html +0 -4
  662. package/typedoc/types/Label.html +0 -1
  663. package/typedoc/types/NodeSerializer.html +0 -8
  664. package/typedoc/types/PluginManagerOptions.html +0 -6
  665. package/typedoc/types/PluginMeta.html +0 -21
  666. package/typedoc/types/PromiseIntentDispatcher.html +0 -2
  667. package/typedoc/types/PromiseIntentUndo.html +0 -2
  668. package/typedoc/types/Resource.html +0 -1
  669. package/typedoc/types/ResourceKey.html +0 -1
  670. package/typedoc/types/ResourceLanguage.html +0 -1
  671. package/typedoc/types/SerializedNode.html +0 -4
  672. package/typedoc/types/SurfaceComponent.html +0 -2
  673. package/typedoc/types/SurfaceDefinition.html +0 -2
  674. package/typedoc/types/SurfaceProps.html +0 -4
  675. package/typedoc/variables/Capabilities.AnchorSort.html +0 -1
  676. package/typedoc/variables/Capabilities.AppGraph.html +0 -1
  677. package/typedoc/variables/Capabilities.AppGraphBuilder.html +0 -1
  678. package/typedoc/variables/Capabilities.AppGraphSerializer.html +0 -1
  679. package/typedoc/variables/Capabilities.ArtifactDefinition.html +0 -1
  680. package/typedoc/variables/Capabilities.FileUploader.html +0 -1
  681. package/typedoc/variables/Capabilities.IntentDispatcher.html +0 -1
  682. package/typedoc/variables/Capabilities.IntentResolver.html +0 -1
  683. package/typedoc/variables/Capabilities.Layout.html +0 -1
  684. package/typedoc/variables/Capabilities.Metadata.html +0 -1
  685. package/typedoc/variables/Capabilities.Null.html +0 -1
  686. package/typedoc/variables/Capabilities.PluginManager.html +0 -1
  687. package/typedoc/variables/Capabilities.ReactContext.html +0 -1
  688. package/typedoc/variables/Capabilities.ReactRoot.html +0 -1
  689. package/typedoc/variables/Capabilities.ReactSurface.html +0 -1
  690. package/typedoc/variables/Capabilities.RxRegistry.html +0 -1
  691. package/typedoc/variables/Capabilities.Settings.html +0 -1
  692. package/typedoc/variables/Capabilities.SettingsStore.html +0 -1
  693. package/typedoc/variables/Capabilities.Tools.html +0 -1
  694. package/typedoc/variables/Capabilities.Translations.html +0 -1
  695. package/typedoc/variables/Events.AppGraphReady.html +0 -2
  696. package/typedoc/variables/Events.DispatcherReady.html +0 -2
  697. package/typedoc/variables/Events.LayoutReady.html +0 -1
  698. package/typedoc/variables/Events.SettingsReady.html +0 -2
  699. package/typedoc/variables/Events.SetupAppGraph.html +0 -2
  700. package/typedoc/variables/Events.SetupArtifactDefinition.html +0 -2
  701. package/typedoc/variables/Events.SetupIntentResolver.html +0 -2
  702. package/typedoc/variables/Events.SetupMetadata.html +0 -2
  703. package/typedoc/variables/Events.SetupReactSurface.html +0 -2
  704. package/typedoc/variables/Events.SetupSettings.html +0 -2
  705. package/typedoc/variables/Events.SetupTranslations.html +0 -2
  706. package/typedoc/variables/Events.Startup.html +0 -2
  707. package/typedoc/variables/FileInfoSchema.html +0 -1
  708. package/typedoc/variables/INTENT_ACTION.html +0 -1
  709. package/typedoc/variables/INTENT_PLUGIN.html +0 -1
  710. package/typedoc/variables/LAYOUT_ACTION.html +0 -1
  711. package/typedoc/variables/LAYOUT_PLUGIN.html +0 -1
  712. package/typedoc/variables/Label.html +0 -1
  713. package/typedoc/variables/LayoutAction.Toast.html +0 -1
  714. package/typedoc/variables/LayoutAction.UPDATE_LAYOUT.html +0 -1
  715. package/typedoc/variables/PluginManagerProvider.html +0 -2
  716. package/typedoc/variables/Resource.html +0 -2
  717. package/typedoc/variables/ResourceKey.html +0 -1
  718. package/typedoc/variables/ResourceLanguage.html +0 -1
  719. package/typedoc/variables/SETTINGS_ACTION.html +0 -1
  720. package/typedoc/variables/SETTINGS_ID.html +0 -1
  721. package/typedoc/variables/SETTINGS_KEY.html +0 -1
  722. package/typedoc/variables/SETTINGS_PLUGIN.html +0 -1
  723. package/typedoc/variables/Surface.html +0 -2
  724. package/typedoc/variables/defaultFileTypes.html +0 -1
  725. /package/dist/lib/browser/{intent-dispatcher-TWKB22NI.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  726. /package/dist/lib/browser/{worker.mjs.map → common/activation-events.mjs.map} +0 -0
  727. /package/dist/lib/{node-esm/intent-dispatcher-5PRM3KGH.mjs.map → browser/common/capabilities.mjs.map} +0 -0
  728. /package/dist/lib/{node-esm/worker.mjs.map → browser/core/activation-event.mjs.map} +0 -0
@@ -1,38 +1,215 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  useApp
4
- } from "../chunk-NJAFK626.mjs";
4
+ } from "../chunk-JNT72ZCN.mjs";
5
+ import "../chunk-LJNUFNDO.mjs";
6
+ import "../chunk-37Z53PXZ.mjs";
7
+ import "../chunk-OUEMWPIW.mjs";
5
8
  import {
6
- Capabilities,
7
- Events,
8
- PluginManager,
9
- contributes,
10
- defineModule,
11
- definePlugin
12
- } from "../chunk-VSKRV3NW.mjs";
9
+ capabilities_exports
10
+ } from "../chunk-PW2VYGOS.mjs";
11
+ import {
12
+ activation_events_exports
13
+ } from "../chunk-KFZEB6BV.mjs";
14
+ import "../chunk-WK7OIQKI.mjs";
15
+ import "../chunk-42UNAKYO.mjs";
16
+ import {
17
+ plugin_manager_exports
18
+ } from "../chunk-SFYCO3PT.mjs";
19
+ import {
20
+ activation_event_exports
21
+ } from "../chunk-XOCUANHO.mjs";
22
+ import {
23
+ plugin_exports
24
+ } from "../chunk-6S45OMUP.mjs";
25
+ import {
26
+ capability_exports
27
+ } from "../chunk-CTKEZHKF.mjs";
28
+ import "../chunk-HSLMI22Q.mjs";
29
+
30
+ // src/testing/harness.ts
31
+ import * as Duration from "effect/Duration";
32
+ import * as Effect from "effect/Effect";
33
+ import * as PubSub from "effect/PubSub";
34
+ import * as Queue from "effect/Queue";
35
+ import { runAndForwardErrors } from "@dxos/effect";
36
+ import { invariant } from "@dxos/invariant";
37
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/testing/harness.ts";
38
+ var DEFAULT_TIMEOUT_MS = 5e3;
39
+ var createTestApp = async (opts) => {
40
+ const { plugins, enabled = plugins.filter(({ meta }) => !meta.tags?.includes("system")).map((plugin) => plugin.meta.id), setupEvents = [], autoStart = true, registerFrameworkCapabilities = true } = opts;
41
+ const pluginLoader = (id) => Effect.sync(() => {
42
+ const plugin = plugins.find((plugin2) => plugin2.meta.id === id);
43
+ invariant(plugin, `Plugin not found: ${id}`, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 26, S: void 0, A: ["plugin", "`Plugin not found: ${id}`"] });
44
+ return {
45
+ plugin
46
+ };
47
+ });
48
+ const manager = plugin_manager_exports.make({
49
+ pluginLoader,
50
+ plugins,
51
+ enabled
52
+ });
53
+ if (registerFrameworkCapabilities) {
54
+ manager.capabilities.contribute({
55
+ interface: capabilities_exports.PluginManager,
56
+ implementation: manager,
57
+ module: "org.dxos.app-framework.plugin-manager"
58
+ });
59
+ manager.capabilities.contribute({
60
+ interface: capabilities_exports.AtomRegistry,
61
+ implementation: manager.registry,
62
+ module: "org.dxos.app-framework.atom-registry"
63
+ });
64
+ }
65
+ if (autoStart) {
66
+ try {
67
+ await runAndForwardErrors(Effect.all([
68
+ ...setupEvents.map((event) => manager.activate(event)),
69
+ manager.activate(activation_events_exports.SetupReactSurface),
70
+ manager.activate(activation_events_exports.Startup)
71
+ ]));
72
+ } catch (err) {
73
+ await runAndForwardErrors(manager.shutdown()).catch(() => void 0);
74
+ throw err;
75
+ }
76
+ }
77
+ return new TestHarnessImpl(manager);
78
+ };
79
+ var TestHarnessImpl = class {
80
+ manager;
81
+ constructor(manager) {
82
+ this.manager = manager;
83
+ }
84
+ get capabilities() {
85
+ return this.manager.capabilities;
86
+ }
87
+ get registry() {
88
+ return this.manager.registry;
89
+ }
90
+ fire(event) {
91
+ return runAndForwardErrors(this.manager.activate(event));
92
+ }
93
+ reset(event) {
94
+ return runAndForwardErrors(this.manager.reset(event));
95
+ }
96
+ get(iface) {
97
+ return this.manager.capabilities.get(iface);
98
+ }
99
+ getAll(iface) {
100
+ return this.manager.capabilities.getAll(iface);
101
+ }
102
+ waitForCapability(iface, opts) {
103
+ const timeout = opts?.timeout ?? DEFAULT_TIMEOUT_MS;
104
+ return runAndForwardErrors(this.manager.capabilities.waitFor(iface).pipe(Effect.timeoutFail({
105
+ duration: Duration.millis(timeout),
106
+ onTimeout: () => timeoutError(iface.identifier)
107
+ })));
108
+ }
109
+ waitForEvent(event, opts) {
110
+ const key = typeof event === "string" ? event : activation_event_exports.eventKey(event);
111
+ const timeout = opts?.timeout ?? DEFAULT_TIMEOUT_MS;
112
+ const program = Effect.gen(this, function* () {
113
+ const queue = yield* PubSub.subscribe(this.manager.activation);
114
+ if (this.manager.getEventsFired().includes(key)) {
115
+ return;
116
+ }
117
+ while (true) {
118
+ const message = yield* Queue.take(queue);
119
+ if (message.event === key && message.state === "activated") {
120
+ return;
121
+ }
122
+ }
123
+ }).pipe(Effect.scoped, Effect.timeoutFail({
124
+ duration: Duration.millis(timeout),
125
+ onTimeout: () => timeoutError(key)
126
+ }));
127
+ return runAndForwardErrors(program);
128
+ }
129
+ async invoke(op, ...args) {
130
+ const invoker = await this.waitForCapability(capabilities_exports.OperationInvoker);
131
+ const result = await invoker.invokePromise(op, ...args);
132
+ if (result.error) {
133
+ throw result.error;
134
+ }
135
+ return result.data;
136
+ }
137
+ async runPromise(effect2, options) {
138
+ const runtime = await this.waitForCapability(capabilities_exports.ProcessManagerRuntime, {
139
+ timeout: options?.timeout
140
+ });
141
+ return runtime.runPromise(effect2, options?.signal ? {
142
+ signal: options.signal
143
+ } : void 0);
144
+ }
145
+ enable(id) {
146
+ return runAndForwardErrors(this.manager.enable(id));
147
+ }
148
+ disable(id) {
149
+ return runAndForwardErrors(this.manager.disable(id));
150
+ }
151
+ async dispose() {
152
+ await runAndForwardErrors(this.manager.shutdown());
153
+ }
154
+ [Symbol.asyncDispose]() {
155
+ return this.dispose();
156
+ }
157
+ };
158
+ var timeoutError = (id) => new Error(`Timed out waiting for ${id}`);
159
+
160
+ // src/testing/service.ts
161
+ import * as Effect2 from "effect/Effect";
162
+ import * as Layer from "effect/Layer";
163
+ import { invariant as invariant2 } from "@dxos/invariant";
164
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-framework/src/testing/service.ts";
165
+ var fromPlugins = (plugins) => Layer.effect(plugin_exports.Service, Effect2.gen(function* () {
166
+ const pluginLoader = (id) => Effect2.sync(() => {
167
+ const plugin = plugins.find((plugin2) => plugin2.meta.id === id);
168
+ invariant2(plugin, `Plugin not found: ${id}`, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 16, S: this, A: ["plugin", "`Plugin not found: ${id}`"] });
169
+ return {
170
+ plugin
171
+ };
172
+ });
173
+ const manager = plugin_manager_exports.make({
174
+ pluginLoader,
175
+ plugins,
176
+ enabled: plugins.map((plugin) => plugin.meta.id)
177
+ });
178
+ manager.capabilities.contribute({
179
+ interface: capabilities_exports.PluginManager,
180
+ implementation: manager,
181
+ module: "org.dxos.app-framework.plugin-manager"
182
+ });
183
+ manager.capabilities.contribute({
184
+ interface: capabilities_exports.AtomRegistry,
185
+ implementation: manager.registry,
186
+ module: "org.dxos.app-framework.atom-registry"
187
+ });
188
+ yield* manager.activate(activation_events_exports.Startup);
189
+ return manager;
190
+ }));
13
191
 
14
192
  // src/testing/withPluginManager.tsx
15
- import React, { useEffect, useMemo } from "react";
193
+ import * as Effect3 from "effect/Effect";
194
+ import React, { useEffect, useState } from "react";
16
195
  import { raise } from "@dxos/debug";
17
- var getValue = (providerOrValue, context) => {
18
- return typeof providerOrValue === "function" ? providerOrValue(context) : providerOrValue;
19
- };
20
- var setupPluginManager = ({ capabilities, plugins = [], core = plugins.map(({ meta }) => meta.id), ...options } = {}) => {
21
- const pluginManager = new PluginManager({
196
+ import { runAndForwardErrors as runAndForwardErrors2 } from "@dxos/effect";
197
+ import { useAsyncEffect } from "@dxos/react-hooks";
198
+ import { getProviderValue } from "@dxos/util";
199
+ var setupPluginManager = ({ capabilities, plugins = [], ...options } = {}) => {
200
+ const enabled = plugins.filter(({ meta }) => !meta.tags?.includes("system")).map(({ meta }) => meta.id);
201
+ const pluginManager = plugin_manager_exports.make({
22
202
  pluginLoader: () => raise(new Error("Not implemented")),
23
203
  plugins: [
24
- storyPlugin(),
204
+ StoryPlugin,
25
205
  ...plugins
26
206
  ],
27
- core: [
28
- STORY_PLUGIN,
29
- ...core
30
- ],
207
+ enabled,
31
208
  ...options
32
209
  });
33
210
  if (capabilities) {
34
- getValue(capabilities, pluginManager.context).forEach((capability) => {
35
- pluginManager.context.contributeCapability({
211
+ getProviderValue(capabilities, pluginManager.capabilities).forEach((capability) => {
212
+ pluginManager.capabilities.contribute({
36
213
  interface: capability.interface,
37
214
  implementation: capability.implementation,
38
215
  module: "story"
@@ -41,54 +218,70 @@ var setupPluginManager = ({ capabilities, plugins = [], core = plugins.map(({ me
41
218
  }
42
219
  return pluginManager;
43
220
  };
44
- var withPluginManager = (options = {}) => {
221
+ var withPluginManager = (init = {}) => {
45
222
  return (Story, context) => {
46
- const pluginManager = useMemo(() => setupPluginManager(options), [
47
- options
48
- ]);
223
+ const storyId = context.id;
224
+ const options = typeof init === "function" ? init(context) : init;
225
+ const [managerState, setManagerState] = useState();
49
226
  useEffect(() => {
50
- const capability = contributes(Capabilities.ReactRoot, {
51
- id: context.id,
227
+ const pluginManager = setupPluginManager(options);
228
+ const capability = capability_exports.contributes(capabilities_exports.ReactRoot, {
229
+ id: storyId,
52
230
  root: () => /* @__PURE__ */ React.createElement(Story, null)
53
231
  });
54
- pluginManager.context.contributeCapability({
232
+ pluginManager.capabilities.contribute({
55
233
  ...capability,
56
- module: "dxos.org/app-framework/withPluginManager"
234
+ module: "org.dxos.app-framework.with-plugin-manager"
235
+ });
236
+ setManagerState({
237
+ pluginManager,
238
+ setupEvents: options.setupEvents,
239
+ fireEvents: options.fireEvents,
240
+ storyId
57
241
  });
58
242
  return () => {
59
- pluginManager.context.removeCapability(capability.interface, capability.implementation);
243
+ pluginManager.capabilities.remove(capability.interface, capability.implementation);
244
+ void runAndForwardErrors2(pluginManager.shutdown());
60
245
  };
61
246
  }, [
62
- pluginManager,
63
- context
247
+ storyId,
248
+ init
64
249
  ]);
65
- useEffect(() => {
66
- const timeout = setTimeout(async () => {
67
- await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
68
- });
69
- return () => clearTimeout(timeout);
70
- }, [
71
- pluginManager
72
- ]);
73
- const App = useApp({
74
- pluginManager
75
- });
76
- return /* @__PURE__ */ React.createElement(App, null);
250
+ if (!managerState || managerState.storyId !== storyId) {
251
+ return /* @__PURE__ */ React.createElement(React.Fragment, null);
252
+ }
253
+ return /* @__PURE__ */ React.createElement(WithPluginManagerApp, managerState);
77
254
  };
78
255
  };
79
- var STORY_PLUGIN = "dxos.org/app-framework/story";
80
- var storyPlugin = () => definePlugin({
81
- id: STORY_PLUGIN,
82
- name: "Story"
83
- }, [
84
- defineModule({
85
- id: STORY_PLUGIN,
86
- activatesOn: Events.Startup,
87
- activate: () => []
88
- })
89
- ]);
256
+ var WithPluginManagerApp = ({ fireEvents, pluginManager, setupEvents, storyId }) => {
257
+ useAsyncEffect(async () => {
258
+ await Promise.all(fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
259
+ }, [
260
+ fireEvents,
261
+ pluginManager,
262
+ storyId
263
+ ]);
264
+ const App = useApp({
265
+ pluginManager,
266
+ setupEvents
267
+ });
268
+ return /* @__PURE__ */ React.createElement(App, null);
269
+ };
270
+ var storyMeta = {
271
+ id: "org.dxos.app-framework.story",
272
+ name: "Story",
273
+ tags: [
274
+ "system"
275
+ ]
276
+ };
277
+ var StoryPlugin = plugin_exports.define(storyMeta).pipe(plugin_exports.addModule({
278
+ id: "Story",
279
+ activatesOn: activation_events_exports.Startup,
280
+ activate: () => Effect3.succeed([])
281
+ }), plugin_exports.make)();
90
282
  export {
91
- getValue,
283
+ createTestApp,
284
+ fromPlugins,
92
285
  setupPluginManager,
93
286
  withPluginManager
94
287
  };
@@ -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": ";;;;;;;;;;;;;;AAKA,OAAOA,SAASC,WAAWC,eAAe;AAE1C,SAASC,aAAa;AAiBf,IAAMC,WAAW,CAAOC,iBAAwCC,YAAAA;AACrE,SAAO,OAAOD,oBAAoB,aAAcA,gBAAmCC,OAAAA,IAAWD;AAChG;AAKO,IAAME,qBAAqB,CAAC,EACjCC,cACAC,UAAU,CAAA,GACVC,OAAOD,QAAQE,IAAI,CAAC,EAAEC,KAAI,MAAOA,KAAKC,EAAE,GACxC,GAAGC,QAAAA,IACkE,CAAC,MAAC;AACvE,QAAMC,gBAAgB,IAAIC,cAAc;IACtCC,cAAc,MAAMC,MAAM,IAAIC,MAAM,iBAAA,CAAA;IACpCV,SAAS;MAACW,YAAAA;SAAkBX;;IAC5BC,MAAM;MAACW;SAAiBX;;IACxB,GAAGI;EACL,CAAA;AAEA,MAAIN,cAAc;AAChBJ,aAASI,cAAcO,cAAcT,OAAO,EAAEgB,QAAQ,CAACC,eAAAA;AACrDR,oBAAcT,QAAQkB,qBAAqB;QACzCC,WAAWF,WAAWE;QACtBC,gBAAgBH,WAAWG;QAC3BC,QAAQ;MACV,CAAA;IACF,CAAA;EACF;AAEA,SAAOZ;AACT;AAWO,IAAMa,oBAAoB,CAACd,UAAoC,CAAC,MAAC;AACtE,SAAO,CAACe,OAAOvB,YAAAA;AACb,UAAMS,gBAAgBe,QAAQ,MAAMvB,mBAAmBO,OAAAA,GAAU;MAACA;KAAQ;AAG1EiB,cAAU,MAAA;AACR,YAAMR,aAAaS,YAAYC,aAAaC,WAAW;QACrDrB,IAAIP,QAAQO;QACZsB,MAAM,MAAM,sBAAA,cAACN,OAAAA,IAAAA;MACf,CAAA;AAEAd,oBAAcT,QAAQkB,qBAAqB;QACzC,GAAGD;QACHI,QAAQ;MACV,CAAA;AAEA,aAAO,MAAA;AACLZ,sBAAcT,QAAQ8B,iBAAiBb,WAAWE,WAAWF,WAAWG,cAAc;MACxF;IACF,GAAG;MAACX;MAAeT;KAAQ;AAG3ByB,cAAU,MAAA;AACR,YAAMM,UAAUC,WAAW,YAAA;AACzB,cAAMC,QAAQC,IAAI1B,QAAQ2B,YAAY9B,IAAI,CAAC+B,UAAU3B,cAAc4B,SAASD,KAAAA,CAAAA,KAAW,CAAA,CAAE;MAC3F,CAAA;AAEA,aAAO,MAAME,aAAaP,OAAAA;IAC5B,GAAG;MAACtB;KAAc;AAGlB,UAAM8B,MAAMC,OAAO;MAAE/B;IAAc,CAAA;AAEnC,WAAO,sBAAA,cAAC8B,KAAAA,IAAAA;EACV;AACF;AAIA,IAAMxB,eAAe;AACrB,IAAMD,cAAc,MAClB2B,aAAa;EAAElC,IAAIQ;EAAc2B,MAAM;AAAQ,GAAG;EAChDC,aAAa;IAAEpC,IAAIQ;IAAc6B,aAAaC,OAAOC;IAAST,UAAU,MAAM,CAAA;EAAG,CAAA;CAClF;",
6
- "names": ["React", "useEffect", "useMemo", "raise", "getValue", "providerOrValue", "context", "setupPluginManager", "capabilities", "plugins", "core", "map", "meta", "id", "options", "pluginManager", "PluginManager", "pluginLoader", "raise", "Error", "storyPlugin", "STORY_PLUGIN", "forEach", "capability", "contributeCapability", "interface", "implementation", "module", "withPluginManager", "Story", "useMemo", "useEffect", "contributes", "Capabilities", "ReactRoot", "root", "removeCapability", "timeout", "setTimeout", "Promise", "all", "fireEvents", "event", "activate", "clearTimeout", "App", "useApp", "definePlugin", "name", "defineModule", "activatesOn", "Events", "Startup"]
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 { type Operation } from '@dxos/compute';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\n\nimport { ActivationEvents, Capabilities } from '../common';\nimport { ActivationEvent, type Capability, type CapabilityManager, type Plugin, PluginManager } from '../core';\n\nexport type TestAppOptions = {\n /**\n * Plugins to register. Plugins whose `meta.tags` includes `'system'` are treated as core\n * (force-enabled). For test convenience, plugins without a `'system'` tag are enabled by\n * default unless `enabled` is provided.\n */\n plugins: Plugin.Plugin[];\n /** Plugin ids that are enabled by default in addition to core. Defaults to all non-system plugin ids. */\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 /**\n * Waits for `Capabilities.ProcessManagerRuntime` and runs the given effect on it.\n * Convenience around `waitForCapability(ProcessManagerRuntime).runPromise(effect)`.\n */\n runPromise<A, E>(\n effect: Effect.Effect<A, E, Capabilities.ProcessManagerRuntimeServices>,\n options?: { readonly timeout?: number; readonly signal?: AbortSignal },\n ): Promise<A>;\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 enabled = plugins.filter(({ meta }) => !meta.tags?.includes('system')).map((plugin) => plugin.meta.id),\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, 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 async runPromise<A, E>(\n effect: Effect.Effect<A, E, Capabilities.ProcessManagerRuntimeServices>,\n options?: { readonly timeout?: number; readonly signal?: AbortSignal },\n ): Promise<A> {\n const runtime = await this.waitForCapability(Capabilities.ProcessManagerRuntime, { timeout: options?.timeout });\n return runtime.runPromise(effect, options?.signal ? { signal: options.signal } : undefined);\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 enabled: 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 ...options\n}: UseAppOptions & Pick<WithPluginManagerOptions, 'capabilities'> = {}) => {\n // Auto-enable every non-system plugin so stories don't have to spell out\n // enablement. System-tagged plugins are force-enabled by the manager.\n const enabled = plugins.filter(({ meta }) => !meta.tags?.includes('system')).map(({ meta }) => meta.id);\n const pluginManager = PluginManager.make({\n pluginLoader: () => raise(new Error('Not implemented')),\n plugins: [StoryPlugin, ...plugins],\n enabled,\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 tags: ['system'],\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", "pluginLoader", "Effect", "sync", "plugin", "plugins", "meta", "id", "manager", "enabled", "registerFrameworkCapabilities", "PluginManager", "implementation", "module", "capabilities", "registry", "autoStart", "runAndForwardErrors", "ActivationEvents", "activate", "Startup", "err", "TestHarnessImpl", "fire", "reset", "iface", "getAll", "waitForCapability", "duration", "Duration", "timeout", "onTimeout", "timeoutError", "identifier", "waitForEvent", "opts", "program", "queue", "subscribe", "message", "key", "invoke", "result", "invoker", "error", "data", "runPromise", "effect", "options", "runtime", "undefined", "enable", "disable", "dispose", "Symbol", "asyncDispose", "Effect", "Layer", "invariant", "__dxlog_file", "pluginLoader", "id", "plugin", "manager", "plugins", "enabled", "capabilities", "contribute", "implementation", "module", "registry", "Effect", "React", "useEffect", "useState", "raise", "runAndForwardErrors", "useAsyncEffect", "getProviderValue", "setupPluginManager", "capabilities", "plugins", "options", "enabled", "filter", "meta", "tags", "includes", "map", "id", "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,79 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ PluginManagerProvider,
4
+ SurfaceComponent,
5
+ topologicalSort
6
+ } from "../chunk-LJNUFNDO.mjs";
7
+ import {
8
+ PluginManagerContext
9
+ } from "../chunk-37Z53PXZ.mjs";
10
+ import "../chunk-OUEMWPIW.mjs";
11
+ import {
12
+ capabilities_exports
13
+ } from "../chunk-PW2VYGOS.mjs";
14
+ import "../chunk-KFZEB6BV.mjs";
15
+ import "../chunk-WK7OIQKI.mjs";
16
+ import "../chunk-42UNAKYO.mjs";
17
+ import "../chunk-SFYCO3PT.mjs";
18
+ import "../chunk-XOCUANHO.mjs";
19
+ import "../chunk-6S45OMUP.mjs";
20
+ import "../chunk-CTKEZHKF.mjs";
21
+ import "../chunk-HSLMI22Q.mjs";
22
+
23
+ // src/testing/react.tsx
24
+ import { RegistryContext } from "@effect-atom/atom-react";
25
+ import { render as rtlRender } from "@testing-library/react";
26
+ import React, { Fragment } from "react";
27
+ import { ContextProtocolProvider } from "@dxos/web-context-react";
28
+ var render = (harness, ui, options) => {
29
+ const { reactContexts = [], ...rest } = options ?? {};
30
+ const Wrapper = ({ children }) => /* @__PURE__ */ React.createElement(HarnessProviders, {
31
+ harness,
32
+ extra: reactContexts
33
+ }, children);
34
+ return rtlRender(/* @__PURE__ */ React.createElement(React.Fragment, null, ui), {
35
+ ...rest,
36
+ wrapper: Wrapper
37
+ });
38
+ };
39
+ var renderSurface = (harness, props, options) => {
40
+ const { role, data, limit, fallback, placeholder } = props;
41
+ return render(harness, /* @__PURE__ */ React.createElement(SurfaceComponent, {
42
+ role,
43
+ data,
44
+ limit,
45
+ fallback,
46
+ placeholder
47
+ }), options);
48
+ };
49
+ var HarnessProviders = ({ harness, extra, children }) => {
50
+ const contributed = harness.getAll(capabilities_exports.ReactContext);
51
+ const ContributedContext = composeContexts(contributed);
52
+ const ExtraContext = composeExtra(extra);
53
+ return /* @__PURE__ */ React.createElement(PluginManagerProvider, {
54
+ value: harness.manager
55
+ }, /* @__PURE__ */ React.createElement(ContextProtocolProvider, {
56
+ value: harness.manager,
57
+ context: PluginManagerContext
58
+ }, /* @__PURE__ */ React.createElement(RegistryContext.Provider, {
59
+ value: harness.registry
60
+ }, /* @__PURE__ */ React.createElement(ContributedContext, null, /* @__PURE__ */ React.createElement(ExtraContext, null, children)))));
61
+ };
62
+ var composeContexts = (contexts) => {
63
+ if (contexts.length === 0) {
64
+ return Passthrough;
65
+ }
66
+ return topologicalSort(contexts).map(({ context }) => context).reduce((Acc, Next) => ({ children }) => /* @__PURE__ */ React.createElement(Acc, null, /* @__PURE__ */ React.createElement(Next, null, children)));
67
+ };
68
+ var composeExtra = (contexts) => {
69
+ if (contexts.length === 0) {
70
+ return Passthrough;
71
+ }
72
+ return contexts.reduce((Acc, Next) => ({ children }) => /* @__PURE__ */ React.createElement(Next, null, /* @__PURE__ */ React.createElement(Acc, null, children)), Passthrough);
73
+ };
74
+ var Passthrough = ({ children }) => /* @__PURE__ */ React.createElement(Fragment, null, children);
75
+ export {
76
+ render,
77
+ renderSurface
78
+ };
79
+ //# 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,55 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ App,
4
+ LoadingState,
5
+ Placeholder,
6
+ useApp,
7
+ useAtomCapability,
8
+ useAtomCapabilityState,
9
+ useCapabilities,
10
+ useCapability,
11
+ useLoading,
12
+ useOperationInvoker,
13
+ useProcessManagerRuntime,
14
+ useSettingsState,
15
+ useSpaceCallback,
16
+ useSpaceService
17
+ } from "../chunk-JNT72ZCN.mjs";
18
+ import {
19
+ PluginManagerProvider,
20
+ Surface,
21
+ usePluginManager,
22
+ useSurface
23
+ } from "../chunk-LJNUFNDO.mjs";
24
+ import "../chunk-37Z53PXZ.mjs";
25
+ import "../chunk-OUEMWPIW.mjs";
26
+ import "../chunk-PW2VYGOS.mjs";
27
+ import "../chunk-KFZEB6BV.mjs";
28
+ import "../chunk-WK7OIQKI.mjs";
29
+ import "../chunk-42UNAKYO.mjs";
30
+ import "../chunk-SFYCO3PT.mjs";
31
+ import "../chunk-XOCUANHO.mjs";
32
+ import "../chunk-6S45OMUP.mjs";
33
+ import "../chunk-CTKEZHKF.mjs";
34
+ import "../chunk-HSLMI22Q.mjs";
35
+ export {
36
+ App,
37
+ LoadingState,
38
+ Placeholder,
39
+ PluginManagerProvider,
40
+ Surface,
41
+ useApp,
42
+ useAtomCapability,
43
+ useAtomCapabilityState,
44
+ useCapabilities,
45
+ useCapability,
46
+ useLoading,
47
+ useOperationInvoker,
48
+ usePluginManager,
49
+ useProcessManagerRuntime,
50
+ useSettingsState,
51
+ useSpaceCallback,
52
+ useSpaceService,
53
+ useSurface
54
+ };
55
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }