@dxos/app-framework 0.8.4-main.9735255 → 0.8.4-main.9be5663bfe

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 (430) hide show
  1. package/.storybook/main.mts +1 -3
  2. package/dist/lib/browser/{capability-7PCNSWBT.mjs → capability-BBBBAPDI.mjs} +16 -11
  3. package/dist/lib/browser/capability-BBBBAPDI.mjs.map +7 -0
  4. package/dist/lib/browser/capability-OP63CD5N.mjs +35 -0
  5. package/dist/lib/browser/capability-OP63CD5N.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-6Y7PZV72.mjs → chunk-2CKCJ6PN.mjs} +6 -4
  7. package/dist/lib/browser/chunk-2CKCJ6PN.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-7IQHKD4U.mjs → chunk-F7FW2RK2.mjs} +9 -12
  9. package/dist/lib/browser/chunk-F7FW2RK2.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-TCLLRCS3.mjs → chunk-FU4GAFUQ.mjs} +10 -7
  11. package/dist/lib/browser/chunk-FU4GAFUQ.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-FMZN33N4.mjs → chunk-GX4TUNM6.mjs} +343 -187
  13. package/dist/lib/browser/chunk-GX4TUNM6.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-I34GF4NG.mjs +34 -0
  15. package/dist/lib/browser/chunk-I34GF4NG.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-JKWMHZP6.mjs +80 -0
  17. package/dist/lib/browser/chunk-JKWMHZP6.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-LVJW5EFU.mjs +157 -0
  19. package/dist/lib/browser/chunk-LVJW5EFU.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-PKQT6C53.mjs → chunk-QSXYHXCE.mjs} +3 -2
  21. package/dist/lib/browser/chunk-QSXYHXCE.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-RFSO3JRG.mjs +1 -0
  23. package/dist/lib/browser/chunk-T3Y4AEKX.mjs +42 -0
  24. package/dist/lib/browser/chunk-T3Y4AEKX.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-TGX63LTL.mjs +8 -0
  26. package/dist/lib/browser/{chunk-FHQTHCX7.mjs.map → chunk-TGX63LTL.mjs.map} +1 -1
  27. package/dist/lib/browser/chunk-WPE6AL7I.mjs +905 -0
  28. package/dist/lib/browser/chunk-WPE6AL7I.mjs.map +7 -0
  29. package/dist/lib/browser/cli/index.mjs +90 -0
  30. package/dist/lib/browser/cli/index.mjs.map +7 -0
  31. package/dist/lib/browser/common/activation-events.mjs +24 -0
  32. package/dist/lib/browser/common/capabilities.mjs +46 -0
  33. package/dist/lib/browser/core/activation-event.mjs +1 -1
  34. package/dist/lib/browser/core/capability.mjs +3 -1
  35. package/dist/lib/browser/core/plugin-manager.mjs +4 -4
  36. package/dist/lib/browser/core/plugin.mjs +6 -4
  37. package/dist/lib/browser/core/url-loader.mjs +12 -0
  38. package/dist/lib/browser/index.mjs +40 -131
  39. package/dist/lib/browser/index.mjs.map +4 -4
  40. package/dist/lib/browser/invoker-capability-H5PPENOC.mjs +43 -0
  41. package/dist/lib/browser/invoker-capability-H5PPENOC.mjs.map +7 -0
  42. package/dist/lib/browser/meta.json +1 -1
  43. package/dist/lib/browser/testing/index.mjs +56 -34
  44. package/dist/lib/browser/testing/index.mjs.map +3 -3
  45. package/dist/lib/browser/{react → ui}/index.mjs +19 -21
  46. package/dist/lib/browser/ui/index.mjs.map +7 -0
  47. package/dist/lib/node-esm/{capability-CFLQ2QQU.mjs → capability-AWBEMRYR.mjs} +16 -11
  48. package/dist/lib/node-esm/capability-AWBEMRYR.mjs.map +7 -0
  49. package/dist/lib/node-esm/capability-WFEG6CIZ.mjs +36 -0
  50. package/dist/lib/node-esm/capability-WFEG6CIZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-STMXUEPO.mjs → chunk-42KBWDE4.mjs} +6 -4
  52. package/dist/lib/node-esm/chunk-42KBWDE4.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs +158 -0
  54. package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-XYQTBFPA.mjs → chunk-BCEOLX47.mjs} +343 -187
  56. package/dist/lib/node-esm/chunk-BCEOLX47.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs +2 -0
  58. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs → chunk-FKE4Z3D6.mjs} +2 -2
  60. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs.map → chunk-FKE4Z3D6.mjs.map} +1 -1
  61. package/dist/lib/node-esm/chunk-G3RTFSNG.mjs +81 -0
  62. package/dist/lib/node-esm/chunk-G3RTFSNG.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-LQKOTNJW.mjs +906 -0
  64. package/dist/lib/node-esm/chunk-LQKOTNJW.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-GT6OKM5I.mjs → chunk-ULUEXB7Q.mjs} +10 -7
  66. package/dist/lib/node-esm/chunk-ULUEXB7Q.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-663A54LQ.mjs → chunk-URWHJQT2.mjs} +9 -12
  68. package/dist/lib/node-esm/chunk-URWHJQT2.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-VKHGNEDB.mjs +43 -0
  70. package/dist/lib/node-esm/chunk-VKHGNEDB.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs +35 -0
  72. package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs → chunk-ZZ7CKK6W.mjs} +3 -2
  74. package/dist/lib/node-esm/chunk-ZZ7CKK6W.mjs.map +7 -0
  75. package/dist/lib/node-esm/cli/index.mjs +91 -0
  76. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  77. package/dist/lib/node-esm/common/activation-events.mjs +25 -0
  78. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  79. package/dist/lib/node-esm/common/capabilities.mjs +47 -0
  80. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  81. package/dist/lib/node-esm/core/activation-event.mjs +1 -1
  82. package/dist/lib/node-esm/core/capability.mjs +3 -1
  83. package/dist/lib/node-esm/core/plugin-manager.mjs +4 -4
  84. package/dist/lib/node-esm/core/plugin.mjs +6 -4
  85. package/dist/lib/node-esm/core/url-loader.mjs +13 -0
  86. package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
  87. package/dist/lib/node-esm/index.mjs +40 -131
  88. package/dist/lib/node-esm/index.mjs.map +4 -4
  89. package/dist/lib/node-esm/invoker-capability-S3ZA527J.mjs +44 -0
  90. package/dist/lib/node-esm/invoker-capability-S3ZA527J.mjs.map +7 -0
  91. package/dist/lib/node-esm/meta.json +1 -1
  92. package/dist/lib/node-esm/testing/index.mjs +56 -34
  93. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  94. package/dist/lib/node-esm/{react → ui}/index.mjs +19 -21
  95. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  96. package/dist/plugin/node-esm/index.mjs +384 -0
  97. package/dist/plugin/node-esm/index.mjs.map +7 -0
  98. package/dist/plugin/node-esm/meta.json +1 -0
  99. package/dist/types/src/{cli.d.ts → cli/cli.d.ts} +2 -2
  100. package/dist/types/src/cli/cli.d.ts.map +1 -0
  101. package/dist/types/src/cli/index.d.ts +2 -0
  102. package/dist/types/src/cli/index.d.ts.map +1 -0
  103. package/dist/types/src/common/activation-events.d.ts +27 -0
  104. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  105. package/dist/types/src/common/capabilities.d.ts +110 -0
  106. package/dist/types/src/common/capabilities.d.ts.map +1 -0
  107. package/dist/types/src/common/index.d.ts +4 -9
  108. package/dist/types/src/common/index.d.ts.map +1 -1
  109. package/dist/types/src/common/operations.d.ts +8 -369
  110. package/dist/types/src/common/operations.d.ts.map +1 -1
  111. package/dist/types/src/common/translations.d.ts +0 -9
  112. package/dist/types/src/common/translations.d.ts.map +1 -1
  113. package/dist/types/src/core/activation-event.d.ts +1 -1
  114. package/dist/types/src/core/activation-event.d.ts.map +1 -1
  115. package/dist/types/src/core/capability-manager.d.ts +5 -0
  116. package/dist/types/src/core/capability-manager.d.ts.map +1 -1
  117. package/dist/types/src/core/capability.d.ts +13 -7
  118. package/dist/types/src/core/capability.d.ts.map +1 -1
  119. package/dist/types/src/core/index.d.ts +1 -0
  120. package/dist/types/src/core/index.d.ts.map +1 -1
  121. package/dist/types/src/core/plugin-manager.d.ts +9 -2
  122. package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
  123. package/dist/types/src/core/plugin.d.ts +6 -1
  124. package/dist/types/src/core/plugin.d.ts.map +1 -1
  125. package/dist/types/src/core/url-loader.d.ts +25 -0
  126. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  127. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  128. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  129. package/dist/types/src/index.d.ts +1 -3
  130. package/dist/types/src/index.d.ts.map +1 -1
  131. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -1
  132. package/dist/types/src/plugin-operation/history/capability.d.ts +1 -1
  133. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -1
  134. package/dist/types/src/plugin-operation/history/errors.d.ts +30 -3
  135. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -1
  136. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -1
  137. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +11 -3
  138. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -1
  139. package/dist/types/src/plugin-operation/invoker-capability.d.ts +1 -1
  140. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -1
  141. package/dist/types/src/plugin-operation/testing.d.ts +26 -77
  142. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -1
  143. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -1
  144. package/dist/types/src/plugin-runtime/capability.d.ts +2 -2
  145. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -1
  146. package/dist/types/src/testing/withPluginManager.d.ts +1 -1
  147. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  148. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  149. package/dist/types/src/{react → ui/components/App}/App.d.ts +3 -2
  150. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  151. package/dist/types/src/{react/Surface.stories.d.ts → ui/components/App/App.stories.d.ts} +7 -2
  152. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  153. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  154. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  155. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  156. package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerProvider.d.ts +1 -1
  157. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  158. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  159. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  160. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +12 -0
  161. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  162. package/dist/types/src/{react/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  163. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  164. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  165. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  166. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  167. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  168. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  169. package/dist/types/src/ui/components/Surface/index.d.ts +26 -0
  170. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  171. package/dist/types/src/{common/surface.d.ts → ui/components/Surface/types.d.ts} +20 -18
  172. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  173. package/dist/types/src/ui/components/index.d.ts +4 -0
  174. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  175. package/dist/types/src/ui/hooks/index.d.ts +6 -0
  176. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  177. package/dist/types/src/{react → ui/hooks}/useApp.d.ts +26 -9
  178. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  179. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  180. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  181. package/dist/types/src/{react → ui/hooks}/useCapabilities.d.ts +6 -1
  182. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  183. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  184. package/dist/types/src/{react/common.d.ts → ui/hooks/useSettingsState.d.ts} +1 -5
  185. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  186. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  187. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  188. package/dist/types/src/ui/index.d.ts +3 -0
  189. package/dist/types/src/ui/index.d.ts.map +1 -0
  190. package/dist/types/src/vite-plugin/composer-plugin.d.ts +18 -0
  191. package/dist/types/src/vite-plugin/composer-plugin.d.ts.map +1 -0
  192. package/dist/types/src/vite-plugin/import-map-plugin.d.ts +16 -0
  193. package/dist/types/src/vite-plugin/import-map-plugin.d.ts.map +1 -0
  194. package/dist/types/src/vite-plugin/index.d.ts +3 -0
  195. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  196. package/dist/types/src/vite-plugin/packages.d.ts +7 -0
  197. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  198. package/dist/types/tsconfig.tsbuildinfo +1 -1
  199. package/moon.yml +20 -6
  200. package/package.json +91 -64
  201. package/src/{cli.ts → cli/cli.ts} +10 -10
  202. package/src/{playground/debug → cli}/index.ts +1 -1
  203. package/src/common/activation-events.ts +44 -0
  204. package/src/common/capabilities.ts +172 -0
  205. package/src/common/index.ts +4 -9
  206. package/src/common/operations.ts +6 -383
  207. package/src/common/translations.ts +0 -12
  208. package/src/context.ts +1 -1
  209. package/src/core/activation-event.ts +5 -2
  210. package/src/core/capability-manager.test.ts +1 -1
  211. package/src/core/capability-manager.ts +22 -1
  212. package/src/core/capability.ts +21 -10
  213. package/src/core/index.ts +1 -0
  214. package/src/core/plugin-manager.test.ts +314 -46
  215. package/src/core/plugin-manager.ts +344 -157
  216. package/src/core/plugin.ts +10 -2
  217. package/src/core/url-loader.test.ts +79 -0
  218. package/src/core/url-loader.ts +148 -0
  219. package/src/index.ts +1 -3
  220. package/src/plugin-operation/OperationPlugin.ts +5 -6
  221. package/src/plugin-operation/history/capability.ts +5 -6
  222. package/src/plugin-operation/history/errors.ts +2 -6
  223. package/src/plugin-operation/history/history-tracker.test.ts +36 -43
  224. package/src/plugin-operation/history/history-tracker.ts +0 -1
  225. package/src/plugin-operation/history/undo-mapping.ts +6 -3
  226. package/src/plugin-operation/history/undo-registry.test.ts +3 -4
  227. package/src/plugin-operation/invoker-capability.ts +21 -7
  228. package/src/plugin-operation/meta.ts +1 -1
  229. package/src/plugin-operation/testing.ts +25 -45
  230. package/src/plugin-runtime/RuntimePlugin.ts +4 -5
  231. package/src/plugin-runtime/capability.ts +5 -5
  232. package/src/plugin-runtime/meta.ts +1 -1
  233. package/src/testing/service.ts +6 -6
  234. package/src/testing/withPluginManager.stories.tsx +6 -7
  235. package/src/testing/withPluginManager.tsx +44 -19
  236. package/src/ui/components/App/App.stories.tsx +92 -0
  237. package/src/{react → ui/components/App}/App.tsx +9 -11
  238. package/src/{playground/layout → ui/components/App}/index.ts +1 -1
  239. package/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.tsx +13 -14
  240. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +1 -1
  241. package/src/ui/components/PluginManager/index.ts +5 -0
  242. package/src/{react/Surface.stories.tsx → ui/components/Surface/SurfaceComponent.stories.tsx} +31 -28
  243. package/src/{react/Surface.tsx → ui/components/Surface/SurfaceComponent.tsx} +59 -60
  244. package/src/{react → ui/components/Surface}/SurfaceInfo.tsx +2 -2
  245. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  246. package/src/ui/components/Surface/context.ts +12 -0
  247. package/src/ui/components/Surface/index.ts +35 -0
  248. package/src/{common/surface.ts → ui/components/Surface/types.ts} +22 -25
  249. package/src/ui/components/index.ts +7 -0
  250. package/src/ui/hooks/index.ts +9 -0
  251. package/src/ui/hooks/useApp.test.tsx +159 -0
  252. package/src/{react → ui/hooks}/useApp.tsx +110 -30
  253. package/src/{react → ui/hooks}/useCapabilities.ts +9 -5
  254. package/src/{react/common.ts → ui/hooks/useSettingsState.ts} +0 -11
  255. package/src/ui/hooks/useSurface.ts +13 -0
  256. package/src/ui/index.ts +6 -0
  257. package/src/vite-plugin/composer-plugin.ts +128 -0
  258. package/src/vite-plugin/import-map-plugin.ts +314 -0
  259. package/src/vite-plugin/index.ts +6 -0
  260. package/src/vite-plugin/packages.ts +29 -0
  261. package/tsconfig.json +4 -28
  262. package/tsconfig.node.json +2 -4
  263. package/typedoc.json +2 -4
  264. package/vitest.config.ts +1 -1
  265. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +0 -149
  266. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +0 -7
  267. package/dist/lib/browser/capability-7PCNSWBT.mjs.map +0 -7
  268. package/dist/lib/browser/capability-KP3PFEXD.mjs +0 -31
  269. package/dist/lib/browser/capability-KP3PFEXD.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-BLQJSGL3.mjs +0 -732
  273. package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +0 -7
  274. package/dist/lib/browser/chunk-FHQTHCX7.mjs +0 -8
  275. package/dist/lib/browser/chunk-FMZN33N4.mjs.map +0 -7
  276. package/dist/lib/browser/chunk-H4WPA7U7.mjs +0 -77
  277. package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +0 -7
  279. package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-XYNO72GQ.mjs +0 -746
  281. package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +0 -7
  282. package/dist/lib/browser/common/index.mjs +0 -38
  283. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +0 -32
  284. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +0 -7
  285. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +0 -64
  286. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +0 -7
  287. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +0 -150
  288. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +0 -7
  289. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +0 -7
  290. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +0 -32
  291. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +0 -747
  294. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +0 -733
  297. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +0 -7
  298. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +0 -7
  299. package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +0 -78
  301. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +0 -7
  303. package/dist/lib/node-esm/common/index.mjs +0 -39
  304. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +0 -33
  305. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +0 -7
  306. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +0 -65
  307. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +0 -7
  308. package/dist/types/src/cli.d.ts.map +0 -1
  309. package/dist/types/src/common/activation-event.d.ts +0 -66
  310. package/dist/types/src/common/activation-event.d.ts.map +0 -1
  311. package/dist/types/src/common/capability.d.ts +0 -265
  312. package/dist/types/src/common/capability.d.ts.map +0 -1
  313. package/dist/types/src/common/collaboration.d.ts +0 -26
  314. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  315. package/dist/types/src/common/file.d.ts +0 -14
  316. package/dist/types/src/common/file.d.ts.map +0 -1
  317. package/dist/types/src/common/graph.d.ts +0 -21
  318. package/dist/types/src/common/graph.d.ts.map +0 -1
  319. package/dist/types/src/common/plugin.d.ts +0 -201
  320. package/dist/types/src/common/plugin.d.ts.map +0 -1
  321. package/dist/types/src/common/surface.d.ts.map +0 -1
  322. package/dist/types/src/playground/debug/Debug.d.ts +0 -8
  323. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  324. package/dist/types/src/playground/debug/index.d.ts +0 -2
  325. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  326. package/dist/types/src/playground/debug/plugin.d.ts +0 -3
  327. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  328. package/dist/types/src/playground/generator/Main.d.ts +0 -8
  329. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  330. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -8
  331. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  332. package/dist/types/src/playground/generator/generator.d.ts +0 -19
  333. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  334. package/dist/types/src/playground/generator/index.d.ts +0 -3
  335. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  336. package/dist/types/src/playground/generator/plugin.d.ts +0 -3
  337. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  338. package/dist/types/src/playground/layout/Layout.d.ts +0 -10
  339. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  340. package/dist/types/src/playground/layout/index.d.ts +0 -2
  341. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  342. package/dist/types/src/playground/layout/plugin.d.ts +0 -3
  343. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  344. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -8
  345. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  346. package/dist/types/src/playground/logger/index.d.ts +0 -2
  347. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  348. package/dist/types/src/playground/logger/plugin.d.ts +0 -3
  349. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  350. package/dist/types/src/playground/logger/schema.d.ts +0 -27
  351. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  352. package/dist/types/src/playground/playground.stories.d.ts +0 -11
  353. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  354. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -3
  355. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  356. package/dist/types/src/plugin-settings/actions.d.ts +0 -61
  357. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  358. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -6
  359. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  360. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  361. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  362. package/dist/types/src/plugin-settings/meta.d.ts +0 -3
  363. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  364. package/dist/types/src/plugin-settings/operation-resolver.d.ts +0 -6
  365. package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +0 -1
  366. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  367. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  368. package/dist/types/src/react/App.d.ts.map +0 -1
  369. package/dist/types/src/react/App.stories.d.ts.map +0 -1
  370. package/dist/types/src/react/DefaultFallback.d.ts +0 -8
  371. package/dist/types/src/react/DefaultFallback.d.ts.map +0 -1
  372. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  373. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  374. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +0 -1
  375. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  376. package/dist/types/src/react/Surface.d.ts +0 -14
  377. package/dist/types/src/react/Surface.d.ts.map +0 -1
  378. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  379. package/dist/types/src/react/SurfaceInfo.d.ts.map +0 -1
  380. package/dist/types/src/react/common.d.ts.map +0 -1
  381. package/dist/types/src/react/index.d.ts +0 -9
  382. package/dist/types/src/react/index.d.ts.map +0 -1
  383. package/dist/types/src/react/types.d.ts +0 -12
  384. package/dist/types/src/react/types.d.ts.map +0 -1
  385. package/dist/types/src/react/useApp.d.ts.map +0 -1
  386. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  387. package/dist/types/src/react/useLoading.d.ts.map +0 -1
  388. package/dist/types/src/react/useOperationResolver.d.ts +0 -19
  389. package/dist/types/src/react/useOperationResolver.d.ts.map +0 -1
  390. package/src/common/activation-event.ts +0 -99
  391. package/src/common/capability.ts +0 -343
  392. package/src/common/collaboration.ts +0 -31
  393. package/src/common/file.ts +0 -22
  394. package/src/common/graph.ts +0 -30
  395. package/src/common/plugin.ts +0 -364
  396. package/src/playground/debug/Debug.tsx +0 -49
  397. package/src/playground/debug/plugin.ts +0 -16
  398. package/src/playground/generator/Main.tsx +0 -80
  399. package/src/playground/generator/Toolbar.tsx +0 -57
  400. package/src/playground/generator/generator.ts +0 -48
  401. package/src/playground/generator/index.ts +0 -6
  402. package/src/playground/generator/plugin.ts +0 -21
  403. package/src/playground/layout/Layout.tsx +0 -37
  404. package/src/playground/layout/plugin.ts +0 -18
  405. package/src/playground/logger/Toolbar.tsx +0 -33
  406. package/src/playground/logger/index.ts +0 -5
  407. package/src/playground/logger/plugin.ts +0 -42
  408. package/src/playground/logger/schema.ts +0 -22
  409. package/src/playground/playground.stories.tsx +0 -54
  410. package/src/plugin-settings/SettingsPlugin.ts +0 -19
  411. package/src/plugin-settings/actions.ts +0 -64
  412. package/src/plugin-settings/app-graph-builder.ts +0 -140
  413. package/src/plugin-settings/index.ts +0 -6
  414. package/src/plugin-settings/meta.ts +0 -10
  415. package/src/plugin-settings/operation-resolver.ts +0 -55
  416. package/src/plugin-settings/translations.ts +0 -19
  417. package/src/react/App.stories.tsx +0 -63
  418. package/src/react/DefaultFallback.tsx +0 -26
  419. package/src/react/ErrorBoundary.tsx +0 -56
  420. package/src/react/index.ts +0 -14
  421. package/src/react/types.ts +0 -27
  422. package/src/react/useOperationResolver.ts +0 -40
  423. /package/dist/lib/{node-esm/react/index.mjs.map → browser/chunk-RFSO3JRG.mjs.map} +0 -0
  424. /package/dist/lib/{node-esm/common/index.mjs.map → browser/common/activation-events.mjs.map} +0 -0
  425. /package/dist/lib/browser/{react/index.mjs.map → common/capabilities.mjs.map} +0 -0
  426. /package/dist/lib/browser/{common/index.mjs.map → core/url-loader.mjs.map} +0 -0
  427. /package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.d.ts +0 -0
  428. /package/dist/types/src/{react → ui/components/Surface}/SurfaceInfo.d.ts +0 -0
  429. /package/dist/types/src/{react → ui/hooks}/useLoading.d.ts +0 -0
  430. /package/src/{react → ui/hooks}/useLoading.tsx +0 -0
@@ -2,13 +2,13 @@ import {
2
2
  eventKey,
3
3
  getEvents,
4
4
  isAllOf
5
- } from "./chunk-PKQT6C53.mjs";
5
+ } from "./chunk-QSXYHXCE.mjs";
6
6
  import {
7
7
  Service as Service2
8
- } from "./chunk-TCLLRCS3.mjs";
8
+ } from "./chunk-FU4GAFUQ.mjs";
9
9
  import {
10
10
  Service
11
- } from "./chunk-6Y7PZV72.mjs";
11
+ } from "./chunk-2CKCJ6PN.mjs";
12
12
  import {
13
13
  __export
14
14
  } from "./chunk-J5LGTIGS.mjs";
@@ -32,6 +32,7 @@ import * as HashSet from "effect/HashSet";
32
32
  import * as PubSub from "effect/PubSub";
33
33
  import * as Ref from "effect/Ref";
34
34
  import { runAndForwardErrors } from "@dxos/effect";
35
+ import { Performance } from "@dxos/effect";
35
36
  import { log as log2 } from "@dxos/log";
36
37
 
37
38
  // src/core/capability-manager.ts
@@ -51,17 +52,27 @@ var CapabilityManagerImpl = class {
51
52
  return Atom.make([]).pipe(Atom.keepAlive);
52
53
  });
53
54
  _capabilities = Atom.family((id) => {
54
- return Atom.make((get) => {
55
- const current = get(this._capabilityEntries(id));
55
+ return Atom.make((get2) => {
56
+ const current = get2(this._capabilityEntries(id));
56
57
  return current.map((c) => c.implementation);
57
- });
58
+ }).pipe(Atom.keepAlive);
59
+ });
60
+ _capabilitiesByModule = Atom.family((id) => {
61
+ return Atom.make((get2) => {
62
+ const entries = get2(this._capabilityEntries(id));
63
+ const result = {};
64
+ for (const entry of entries) {
65
+ (result[entry.moduleId] ??= []).push(entry.implementation);
66
+ }
67
+ return result;
68
+ }).pipe(Atom.keepAlive);
58
69
  });
59
70
  _capability = Atom.family((id) => {
60
- return Atom.make((get) => {
61
- const current = get(this._capabilities(id));
71
+ return Atom.make((get2) => {
72
+ const current = get2(this._capabilities(id));
62
73
  invariant(current.length > 0, `No capability found for ${id}`, {
63
74
  F: __dxlog_file,
64
- L: 84,
75
+ L: 101,
65
76
  S: this,
66
77
  A: [
67
78
  "current.length > 0",
@@ -83,7 +94,7 @@ var CapabilityManagerImpl = class {
83
94
  moduleId
84
95
  }, {
85
96
  F: __dxlog_file,
86
- L: 105,
97
+ L: 122,
87
98
  S: this,
88
99
  C: (f, a) => f(...a)
89
100
  });
@@ -103,7 +114,7 @@ var CapabilityManagerImpl = class {
103
114
  count: current.length
104
115
  }, {
105
116
  F: __dxlog_file,
106
- L: 111,
117
+ L: 128,
107
118
  S: this,
108
119
  C: (f, a) => f(...a)
109
120
  });
@@ -121,7 +132,7 @@ var CapabilityManagerImpl = class {
121
132
  count: current.length
122
133
  }, {
123
134
  F: __dxlog_file,
124
- L: 127,
135
+ L: 144,
125
136
  S: this,
126
137
  C: (f, a) => f(...a)
127
138
  });
@@ -130,7 +141,7 @@ var CapabilityManagerImpl = class {
130
141
  id: interfaceDef.identifier
131
142
  }, {
132
143
  F: __dxlog_file,
133
- L: 129,
144
+ L: 146,
134
145
  S: this,
135
146
  C: (f, a) => f(...a)
136
147
  });
@@ -146,7 +157,7 @@ var CapabilityManagerImpl = class {
146
157
  const capabilities = this.getAll(interfaceDef);
147
158
  invariant(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`, {
148
159
  F: __dxlog_file,
149
- L: 144,
160
+ L: 161,
150
161
  S: this,
151
162
  A: [
152
163
  "capabilities.length > 0",
@@ -172,12 +183,15 @@ var CapabilityManagerImpl = class {
172
183
  return result;
173
184
  });
174
185
  }
186
+ atomByModule(interfaceDef) {
187
+ return this._capabilitiesByModule(interfaceDef.identifier);
188
+ }
175
189
  };
176
190
  var make2 = (options) => new CapabilityManagerImpl(options);
177
191
 
178
192
  // src/core/plugin-manager.ts
179
193
  var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/plugin-manager.ts";
180
- var ManagerTypeId = Symbol.for("@dxos/app-framework/Manager");
194
+ var ManagerTypeId = /* @__PURE__ */ Symbol.for("@dxos/app-framework/Manager");
181
195
  var isManager = (value) => {
182
196
  return typeof value === "object" && value !== null && ManagerTypeId in value;
183
197
  };
@@ -199,6 +213,9 @@ var ManagerImpl = class {
199
213
  _moduleSemaphores = /* @__PURE__ */ new Map();
200
214
  _activatingEvents = Effect2.runSync(Ref.make([]));
201
215
  _activatingModules = Effect2.runSync(Ref.make([]));
216
+ _inFlightFibers = Effect2.runSync(Ref.make([]));
217
+ _shutdownSemaphore = Effect2.runSync(Effect2.makeSemaphore(1));
218
+ _shuttingDown = Effect2.runSync(Ref.make(false));
202
219
  constructor({ pluginLoader, plugins = [], core = plugins.map(({ meta }) => meta.id), enabled = [], registry }) {
203
220
  this.registry = registry ?? Registry.make();
204
221
  this.capabilities = make2({
@@ -285,13 +302,13 @@ var ManagerImpl = class {
285
302
  id
286
303
  }, {
287
304
  F: __dxlog_file2,
288
- L: 210,
305
+ L: 227,
289
306
  S: this,
290
307
  C: (f, a) => f(...a)
291
308
  });
292
309
  const plugin = yield* this._pluginLoader(id);
293
310
  this._addPlugin(plugin);
294
- return yield* this.enable(id);
311
+ return yield* this.enable(plugin.meta.id);
295
312
  });
296
313
  }
297
314
  /**
@@ -304,7 +321,7 @@ var ManagerImpl = class {
304
321
  id
305
322
  }, {
306
323
  F: __dxlog_file2,
307
- L: 223,
324
+ L: 240,
308
325
  S: this,
309
326
  C: (f, a) => f(...a)
310
327
  });
@@ -326,7 +343,7 @@ var ManagerImpl = class {
326
343
  ]
327
344
  }, {
328
345
  F: __dxlog_file2,
329
- L: 236,
346
+ L: 253,
330
347
  S: this,
331
348
  C: (f, a) => f(...a)
332
349
  });
@@ -345,7 +362,7 @@ var ManagerImpl = class {
345
362
  id
346
363
  }, {
347
364
  F: __dxlog_file2,
348
- L: 251,
365
+ L: 268,
349
366
  S: this,
350
367
  C: (f, a) => f(...a)
351
368
  });
@@ -366,7 +383,7 @@ var ManagerImpl = class {
366
383
  id
367
384
  }, {
368
385
  F: __dxlog_file2,
369
- L: 267,
386
+ L: 284,
370
387
  S: this,
371
388
  C: (f, a) => f(...a)
372
389
  });
@@ -396,136 +413,35 @@ var ManagerImpl = class {
396
413
  activate(event, params) {
397
414
  const key = typeof event === "string" ? event : eventKey(event);
398
415
  return Effect2.gen(this, function* () {
399
- log2("activating", {
400
- key,
401
- ...params
402
- }, {
403
- F: __dxlog_file2,
404
- L: 302,
405
- S: this,
406
- C: (f, a) => f(...a)
407
- });
408
- yield* Ref.update(this._activatingEvents, (activating) => Array.append(activating, key));
409
- const pendingIndex = this._get(this._pendingResetAtom).findIndex((event2) => event2 === key);
410
- if (pendingIndex !== -1) {
411
- this._update(this._pendingResetAtom, (pending) => pending.filter((event2) => event2 !== key));
412
- }
413
- const activatingEvents = yield* this._activatingEvents;
414
- const activatingModules = yield* this._activatingModules;
415
- const modules = this._getInactiveModulesByEvent(key).filter((module) => {
416
- const allOf = isAllOf(module.activatesOn);
417
- if (!allOf) {
418
- return true;
419
- }
420
- const events = getEvents(module.activatesOn).filter((event2) => eventKey(event2) !== key);
421
- return events.every((event2) => this._get(this._eventsFiredAtom).includes(eventKey(event2)) || activatingEvents.includes(eventKey(event2))) && !activatingModules.includes(module.id);
422
- });
423
- yield* Ref.update(this._activatingModules, (activating) => Array.appendAll(activating, modules.map((module) => module.id)));
424
- if (modules.length === 0) {
425
- log2("no modules to activate", {
426
- key
416
+ if (yield* this._isShuttingDown()) {
417
+ log2("skipping activation during shutdown", {
418
+ key,
419
+ ...params
427
420
  }, {
428
421
  F: __dxlog_file2,
429
- L: 337,
422
+ L: 320,
430
423
  S: this,
431
424
  C: (f, a) => f(...a)
432
425
  });
433
- if (!this._get(this._eventsFiredAtom).includes(key)) {
434
- this._update(this._eventsFiredAtom, (events) => [
435
- ...events,
436
- key
437
- ]);
438
- }
439
426
  return false;
440
427
  }
441
- log2("activating modules", {
442
- key,
443
- modules: modules.map((module) => module.id)
444
- }, {
445
- F: __dxlog_file2,
446
- L: 344,
447
- S: this,
448
- C: (f, a) => f(...a)
449
- });
450
- yield* PubSub.publish(this.activation, {
451
- event: key,
452
- state: "activating"
453
- });
454
- const beforeEvents = Function.pipe(modules, Array.flatMap((module) => module.activatesBefore ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event2) => !activatingEvents.includes(eventKey(event2))));
455
- yield* Function.pipe(beforeEvents, Array.map((event2) => this.activate(event2, {
456
- before: key
457
- })), Effect2.allWith({
458
- concurrency: "unbounded"
459
- }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("activatesBefore is taking a long time", {
460
- event: key,
461
- beforeEvents: beforeEvents.map(eventKey)
462
- }, {
463
- F: __dxlog_file2,
464
- L: 363,
465
- S: this,
466
- C: (f, a) => f(...a)
467
- }))))));
468
- const getCapabilities = yield* Function.pipe(modules, Array.map((mod) => this._loadModule(mod)), Effect2.allWith({
469
- concurrency: "unbounded"
470
- }), Effect2.catchAll((error) => {
471
- return Effect2.gen(this, function* () {
472
- yield* PubSub.publish(this.activation, {
473
- event: key,
474
- state: "error",
475
- error
476
- });
477
- return yield* Effect2.fail(error);
478
- });
479
- }));
480
- yield* Function.pipe(
481
- modules,
482
- Array.zip(getCapabilities),
483
- Array.map(([module, capabilities]) => this._contributeCapabilities(module, capabilities)),
484
- Effect2.all
485
- );
486
- const afterEvents = Function.pipe(modules, Array.flatMap((module) => module.activatesAfter ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event2) => !activatingEvents.includes(eventKey(event2))));
487
- yield* Function.pipe(afterEvents, Array.map((event2) => this.activate(event2, {
488
- after: key
489
- })), Effect2.allWith({
490
- concurrency: "unbounded"
491
- }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("activatesAfter is taking a long time", {
492
- event: key,
493
- afterEvents: afterEvents.map(eventKey)
494
- }, {
495
- F: __dxlog_file2,
496
- L: 412,
497
- S: this,
498
- C: (f, a) => f(...a)
499
- }))))));
500
- yield* Ref.update(this._activatingEvents, (activating) => Array.filter(activating, (event2) => event2 !== key));
501
- yield* Ref.update(this._activatingModules, (activating) => Array.filter(activating, (module) => !modules.map((module2) => module2.id).includes(module)));
502
- if (!this._get(this._eventsFiredAtom).includes(key)) {
503
- this._update(this._eventsFiredAtom, (events) => [
504
- ...events,
505
- key
506
- ]);
507
- }
508
- yield* PubSub.publish(this.activation, {
509
- event: key,
510
- state: "activated"
511
- });
512
- log2("activated", {
513
- key
428
+ return yield* Effect2.withFiberRuntime((fiber) => this._activateEvent(key, params, fiber).pipe(together(Effect2.sleep(Duration.seconds(15)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("event activation is taking a long time", {
429
+ event: key
514
430
  }, {
515
431
  F: __dxlog_file2,
516
- L: 432,
432
+ L: 328,
517
433
  S: this,
518
434
  C: (f, a) => f(...a)
519
- });
520
- return true;
521
- }).pipe(together(Effect2.sleep(Duration.seconds(15)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("event activation is taking a long time", {
522
- event: key
523
- }, {
524
- F: __dxlog_file2,
525
- L: 438,
526
- S: this,
527
- C: (f, a) => f(...a)
528
- }))))));
435
+ }))))), Performance.addTrackEntry({
436
+ name: typeof event === "string" ? event : eventKey(event),
437
+ devtools: {
438
+ dataType: "track-entry",
439
+ track: "Event Activation",
440
+ trackGroup: "Composer",
441
+ color: "primary"
442
+ }
443
+ })));
444
+ });
529
445
  }
530
446
  /**
531
447
  * Deactivates all of the modules for a plugin.
@@ -557,7 +473,7 @@ var ManagerImpl = class {
557
473
  key
558
474
  }, {
559
475
  F: __dxlog_file2,
560
- L: 473,
476
+ L: 374,
561
477
  S: this,
562
478
  C: (f, a) => f(...a)
563
479
  });
@@ -572,6 +488,41 @@ var ManagerImpl = class {
572
488
  }
573
489
  });
574
490
  }
491
+ shutdown() {
492
+ return this._shutdownSemaphore.withPermits(1)(Effect2.gen(this, function* () {
493
+ yield* Ref.set(this._shuttingDown, true);
494
+ log2("shutdown", void 0, {
495
+ F: __dxlog_file2,
496
+ L: 393,
497
+ S: this,
498
+ C: (f, a) => f(...a)
499
+ });
500
+ yield* this._interruptInFlightActivations();
501
+ const activeIds = [
502
+ ...this._get(this._activeAtom)
503
+ ].reverse();
504
+ const allModules = this._get(this._modulesAtom);
505
+ const modulesToDeactivate = activeIds.map((id) => allModules.find((module) => module.id === id)).filter((module) => module != null);
506
+ for (const module of modulesToDeactivate) {
507
+ yield* this._deactivateModule(module);
508
+ }
509
+ this._set(this._eventsFiredAtom, []);
510
+ this._set(this._pendingResetAtom, []);
511
+ this._moduleMemoMap.clear();
512
+ yield* Ref.set(this._activatingEvents, []);
513
+ yield* Ref.set(this._activatingModules, []);
514
+ log2("shutdown complete", void 0, {
515
+ F: __dxlog_file2,
516
+ L: 413,
517
+ S: this,
518
+ C: (f, a) => f(...a)
519
+ });
520
+ return true;
521
+ }).pipe(Effect2.ensuring(Ref.set(this._shuttingDown, false))));
522
+ }
523
+ //
524
+ // State helpers
525
+ //
575
526
  _get(atom) {
576
527
  return this.registry.get(atom);
577
528
  }
@@ -581,12 +532,82 @@ var ManagerImpl = class {
581
532
  _update(atom, updater) {
582
533
  this._set(atom, updater(this._get(atom)));
583
534
  }
535
+ _isShuttingDown() {
536
+ return Ref.get(this._shuttingDown);
537
+ }
538
+ _getPlugin(id) {
539
+ return this._get(this._pluginsAtom).find((plugin) => plugin.meta.id === id);
540
+ }
541
+ _getActiveModules() {
542
+ const active = this._get(this._activeAtom);
543
+ return this._get(this._modulesAtom).filter((module) => active.includes(module.id));
544
+ }
545
+ _getInactiveModules() {
546
+ const active = this._get(this._activeAtom);
547
+ return this._get(this._modulesAtom).filter((module) => !active.includes(module.id));
548
+ }
549
+ _getActiveModulesByEvent(key) {
550
+ return this._getActiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
551
+ }
552
+ _getInactiveModulesByEvent(key) {
553
+ return this._getInactiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
554
+ }
555
+ _setPendingResetByModule(module) {
556
+ const activationEvents = getEvents(module.activatesOn).map(eventKey).filter((key) => this._get(this._eventsFiredAtom).includes(key));
557
+ const pendingReset = Array.fromIterable(new Set(activationEvents)).filter((event) => {
558
+ const pending = this._get(this._pendingResetAtom);
559
+ return !pending.includes(event);
560
+ });
561
+ if (pendingReset.length > 0) {
562
+ log2("pending reset", {
563
+ events: pendingReset
564
+ }, {
565
+ F: __dxlog_file2,
566
+ L: 475,
567
+ S: this,
568
+ C: (f, a) => f(...a)
569
+ });
570
+ this._update(this._pendingResetAtom, (current) => [
571
+ ...current,
572
+ ...pendingReset
573
+ ]);
574
+ }
575
+ }
576
+ _clearPendingReset(key) {
577
+ const pendingIndex = this._get(this._pendingResetAtom).findIndex((event) => event === key);
578
+ if (pendingIndex !== -1) {
579
+ this._update(this._pendingResetAtom, (pending) => pending.filter((event) => event !== key));
580
+ }
581
+ }
582
+ //
583
+ // Fiber helpers
584
+ //
585
+ _interruptInFlightActivations() {
586
+ return Effect2.gen(this, function* () {
587
+ const inFlightFibers = yield* Ref.get(this._inFlightFibers);
588
+ yield* Effect2.forEach(inFlightFibers, (fiber) => Fiber.interrupt(fiber), {
589
+ concurrency: "unbounded"
590
+ });
591
+ });
592
+ }
593
+ _trackFiber(ref, fiber) {
594
+ return Ref.update(ref, (fibers) => [
595
+ ...fibers,
596
+ fiber
597
+ ]);
598
+ }
599
+ _untrackFiber(ref, fiber) {
600
+ return Ref.update(ref, (fibers) => fibers.filter((trackedFiber) => trackedFiber !== fiber));
601
+ }
602
+ //
603
+ // Registration helpers
604
+ //
584
605
  _addPlugin(plugin) {
585
606
  log2("add plugin", {
586
607
  id: plugin.meta.id
587
608
  }, {
588
609
  F: __dxlog_file2,
589
- L: 501,
610
+ L: 519,
590
611
  S: this,
591
612
  C: (f, a) => f(...a)
592
613
  });
@@ -600,7 +621,7 @@ var ManagerImpl = class {
600
621
  id
601
622
  }, {
602
623
  F: __dxlog_file2,
603
- L: 507,
624
+ L: 525,
604
625
  S: this,
605
626
  C: (f, a) => f(...a)
606
627
  });
@@ -611,7 +632,7 @@ var ManagerImpl = class {
611
632
  id: module.id
612
633
  }, {
613
634
  F: __dxlog_file2,
614
- L: 512,
635
+ L: 530,
615
636
  S: this,
616
637
  C: (f, a) => f(...a)
617
638
  });
@@ -625,49 +646,160 @@ var ManagerImpl = class {
625
646
  id
626
647
  }, {
627
648
  F: __dxlog_file2,
628
- L: 518,
649
+ L: 536,
629
650
  S: this,
630
651
  C: (f, a) => f(...a)
631
652
  });
632
653
  this._update(this._modulesAtom, (modules) => modules.filter((module) => module.id !== id));
633
654
  }
634
- _getPlugin(id) {
635
- return this._get(this._pluginsAtom).find((plugin) => plugin.meta.id === id);
636
- }
637
- _getActiveModules() {
638
- const active = this._get(this._activeAtom);
639
- return this._get(this._modulesAtom).filter((module) => active.includes(module.id));
640
- }
641
- _getInactiveModules() {
642
- const active = this._get(this._activeAtom);
643
- return this._get(this._modulesAtom).filter((module) => !active.includes(module.id));
644
- }
645
- _getActiveModulesByEvent(key) {
646
- return this._getActiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
647
- }
648
- _getInactiveModulesByEvent(key) {
649
- return this._getInactiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
650
- }
651
- _setPendingResetByModule(module) {
652
- const activationEvents = getEvents(module.activatesOn).map(eventKey).filter((key) => this._get(this._eventsFiredAtom).includes(key));
653
- const pendingReset = Array.fromIterable(new Set(activationEvents)).filter((event) => {
654
- const pending = this._get(this._pendingResetAtom);
655
- return !pending.includes(event);
656
- });
657
- if (pendingReset.length > 0) {
658
- log2("pending reset", {
659
- events: pendingReset
655
+ //
656
+ // Activation helpers
657
+ //
658
+ _activateEvent(key, params, fiber) {
659
+ return Effect2.gen(this, function* () {
660
+ yield* this._trackFiber(this._inFlightFibers, fiber);
661
+ log2("activating", {
662
+ key,
663
+ ...params
660
664
  }, {
661
665
  F: __dxlog_file2,
662
- L: 558,
666
+ L: 551,
663
667
  S: this,
664
668
  C: (f, a) => f(...a)
665
669
  });
666
- this._update(this._pendingResetAtom, (current) => [
667
- ...current,
668
- ...pendingReset
669
- ]);
670
- }
670
+ yield* Ref.update(this._activatingEvents, (activating) => Array.append(activating, key));
671
+ this._clearPendingReset(key);
672
+ const activatingEvents = yield* this._activatingEvents;
673
+ const activatingModules = yield* this._activatingModules;
674
+ const modules = this._getModulesForActivation(key, activatingEvents, activatingModules);
675
+ if (modules.length === 0) {
676
+ log2("no modules to activate", {
677
+ key
678
+ }, {
679
+ F: __dxlog_file2,
680
+ L: 559,
681
+ S: this,
682
+ C: (f, a) => f(...a)
683
+ });
684
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
685
+ this._update(this._eventsFiredAtom, (events) => [
686
+ ...events,
687
+ key
688
+ ]);
689
+ }
690
+ return false;
691
+ }
692
+ return yield* this._activateModulesForEvent(key, modules, activatingEvents);
693
+ }).pipe(Effect2.ensuring(Effect2.all([
694
+ this._untrackFiber(this._inFlightFibers, fiber),
695
+ Ref.update(this._activatingEvents, (activating) => Array.filter(activating, (event) => event !== key))
696
+ ])));
697
+ }
698
+ _activateModulesForEvent(key, modules, activatingEvents) {
699
+ const activatingModuleIds = modules.map((module) => module.id);
700
+ return Effect2.gen(this, function* () {
701
+ yield* Ref.update(this._activatingModules, (activating) => Array.appendAll(activating, activatingModuleIds));
702
+ log2("activating modules", {
703
+ key,
704
+ modules: activatingModuleIds
705
+ }, {
706
+ F: __dxlog_file2,
707
+ L: 586,
708
+ S: this,
709
+ C: (f, a) => f(...a)
710
+ });
711
+ performance.mark(`event:${key}:start`);
712
+ yield* PubSub.publish(this.activation, {
713
+ event: key,
714
+ state: "activating"
715
+ });
716
+ yield* this._activateRelatedEvents(key, this._getBeforeEvents(modules, activatingEvents), "before");
717
+ const capabilities = yield* this._loadCapabilitiesForModules(key, modules);
718
+ yield* this._contributeCapabilitiesForModules(modules, capabilities);
719
+ yield* this._activateRelatedEvents(key, this._getAfterEvents(modules, activatingEvents), "after");
720
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
721
+ this._update(this._eventsFiredAtom, (events) => [
722
+ ...events,
723
+ key
724
+ ]);
725
+ }
726
+ performance.mark(`event:${key}:end`);
727
+ performance.measure(`event:${key}`, `event:${key}:start`, `event:${key}:end`);
728
+ yield* PubSub.publish(this.activation, {
729
+ event: key,
730
+ state: "activated"
731
+ });
732
+ log2("activated", {
733
+ key
734
+ }, {
735
+ F: __dxlog_file2,
736
+ L: 604,
737
+ S: this,
738
+ C: (f, a) => f(...a)
739
+ });
740
+ return true;
741
+ }).pipe(Effect2.ensuring(Ref.update(this._activatingModules, (activating) => Array.filter(activating, (module) => !activatingModuleIds.includes(module)))));
742
+ }
743
+ _getModulesForActivation(key, activatingEvents, activatingModules) {
744
+ return this._getInactiveModulesByEvent(key).filter((module) => {
745
+ const allOf = isAllOf(module.activatesOn);
746
+ if (!allOf) {
747
+ return true;
748
+ }
749
+ const events = getEvents(module.activatesOn).filter((event) => eventKey(event) !== key);
750
+ return events.every((event) => this._get(this._eventsFiredAtom).includes(eventKey(event)) || activatingEvents.includes(eventKey(event))) && !activatingModules.includes(module.id);
751
+ });
752
+ }
753
+ _getBeforeEvents(modules, activatingEvents) {
754
+ return Function.pipe(modules, Array.flatMap((module) => module.activatesBefore ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event) => !activatingEvents.includes(eventKey(event))));
755
+ }
756
+ _getAfterEvents(modules, activatingEvents) {
757
+ return Function.pipe(modules, Array.flatMap((module) => module.activatesAfter ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event) => !activatingEvents.includes(eventKey(event))));
758
+ }
759
+ _activateRelatedEvents(key, events, phase) {
760
+ const logLabel = phase === "before" ? "activatesBefore" : "activatesAfter";
761
+ const eventKey2 = phase === "before" ? "beforeEvents" : "afterEvents";
762
+ return Function.pipe(events, Array.map((event) => this.activate(event, phase === "before" ? {
763
+ before: key
764
+ } : {
765
+ after: key
766
+ })), Effect2.allWith({
767
+ concurrency: "unbounded"
768
+ }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn(`${logLabel} is taking a long time`, {
769
+ event: key,
770
+ [eventKey2]: events.map(eventKey)
771
+ }, {
772
+ F: __dxlog_file2,
773
+ L: 683,
774
+ S: this,
775
+ C: (f, a) => f(...a)
776
+ }))))), Effect2.asVoid);
777
+ }
778
+ //
779
+ // Module lifecycle helpers
780
+ //
781
+ _loadCapabilitiesForModules(key, modules) {
782
+ return Function.pipe(modules, Array.map((mod) => this._loadModule(mod)), Effect2.allWith({
783
+ concurrency: "unbounded"
784
+ }), Effect2.catchAll((error) => {
785
+ return Effect2.gen(this, function* () {
786
+ yield* PubSub.publish(this.activation, {
787
+ event: key,
788
+ state: "error",
789
+ error
790
+ });
791
+ return yield* Effect2.fail(error);
792
+ });
793
+ }));
794
+ }
795
+ _contributeCapabilitiesForModules(modules, capabilities) {
796
+ return Function.pipe(
797
+ modules,
798
+ Array.zip(capabilities),
799
+ Array.map(([module, capabilitySet]) => this._contributeCapabilities(module, capabilitySet)),
800
+ Effect2.all,
801
+ Effect2.asVoid
802
+ );
671
803
  }
672
804
  _getModuleSemaphore(moduleId) {
673
805
  let semaphore = this._moduleSemaphores.get(moduleId);
@@ -691,21 +823,35 @@ var ManagerImpl = class {
691
823
  module: module.id
692
824
  }, {
693
825
  F: __dxlog_file2,
694
- L: 588,
826
+ L: 756,
695
827
  S: this,
696
828
  C: (f, a) => f(...a)
697
829
  });
830
+ performance.mark(`module:${module.id}:start`);
831
+ yield* PubSub.publish(this.activation, {
832
+ event: "",
833
+ state: "activating",
834
+ module: module.id
835
+ });
698
836
  const [duration, capabilities] = yield* module.activate().pipe(Effect2.provideService(Service, this.capabilities), Effect2.provideService(Service2, this), Effect2.timed);
699
837
  const normalized = capabilities == null ? [] : Array.isArray(capabilities) ? capabilities : [
700
838
  capabilities
701
839
  ];
840
+ const elapsed = Duration.toMillis(duration);
841
+ performance.mark(`module:${module.id}:end`);
842
+ performance.measure(`module:${module.id}`, `module:${module.id}:start`, `module:${module.id}:end`);
843
+ yield* PubSub.publish(this.activation, {
844
+ event: "",
845
+ state: "activated",
846
+ module: module.id
847
+ });
702
848
  log2("loaded module", {
703
849
  module: module.id,
704
- elapsed: Duration.toMillis(duration),
850
+ elapsed,
705
851
  failed: false
706
852
  }, {
707
853
  F: __dxlog_file2,
708
- L: 597,
854
+ L: 771,
709
855
  S: this,
710
856
  C: (f, a) => f(...a)
711
857
  });
@@ -714,11 +860,19 @@ var ManagerImpl = class {
714
860
  module: module.id
715
861
  }, {
716
862
  F: __dxlog_file2,
717
- L: 608,
863
+ L: 782,
718
864
  S: this,
719
865
  C: (f, a) => f(...a)
720
- }))))));
721
- yield* Effect2.forkDaemon(loadEffect.pipe(Effect2.tap((result) => Deferred2.succeed(deferred, result)), Effect2.catchAllCause((cause) => {
866
+ }))))), Performance.addTrackEntry({
867
+ name: module.id,
868
+ devtools: {
869
+ dataType: "track-entry",
870
+ track: "Module Activation",
871
+ trackGroup: "Composer",
872
+ color: "primary"
873
+ }
874
+ }));
875
+ const fiber = yield* Effect2.forkDaemon(loadEffect.pipe(Effect2.tap((result) => Deferred2.succeed(deferred, result)), Effect2.catchAllCause((cause) => {
722
876
  const error = Cause.squash(cause);
723
877
  log2.error("module failed to activate", {
724
878
  module: module.id,
@@ -727,12 +881,14 @@ var ManagerImpl = class {
727
881
  isDefect: !Cause.isFailure(cause)
728
882
  }, {
729
883
  F: __dxlog_file2,
730
- L: 620,
884
+ L: 803,
731
885
  S: this,
732
886
  C: (f, a) => f(...a)
733
887
  });
734
888
  return Deferred2.fail(deferred, error instanceof Error ? error : new Error(String(error)));
735
889
  })));
890
+ yield* this._trackFiber(this._inFlightFibers, fiber);
891
+ yield* Effect2.forkDaemon(Fiber.await(fiber).pipe(Effect2.andThen(() => this._untrackFiber(this._inFlightFibers, fiber))));
736
892
  return deferred;
737
893
  }).pipe(semaphore.withPermits(1));
738
894
  return yield* Deferred2.await(deferredToAwait);
@@ -759,7 +915,7 @@ var ManagerImpl = class {
759
915
  id
760
916
  }, {
761
917
  F: __dxlog_file2,
762
- L: 654,
918
+ L: 841,
763
919
  S: this,
764
920
  C: (f, a) => f(...a)
765
921
  });
@@ -781,7 +937,7 @@ var ManagerImpl = class {
781
937
  id
782
938
  }, {
783
939
  F: __dxlog_file2,
784
- L: 672,
940
+ L: 859,
785
941
  S: this,
786
942
  C: (f, a) => f(...a)
787
943
  });
@@ -804,4 +960,4 @@ export {
804
960
  make5 as make,
805
961
  plugin_manager_exports
806
962
  };
807
- //# sourceMappingURL=chunk-FMZN33N4.mjs.map
963
+ //# sourceMappingURL=chunk-GX4TUNM6.mjs.map