@dxos/app-framework 0.8.4-main.bc674ce → 0.8.4-main.bcb3aa67d6

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