@dxos/app-framework 0.8.4-main.937b3ca → 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
@@ -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-ULUEXB7Q.mjs";
10
10
  import {
11
11
  Service
12
- } from "./chunk-STMXUEPO.mjs";
12
+ } from "./chunk-42KBWDE4.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,17 +53,27 @@ 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);
60
+ });
61
+ _capabilitiesByModule = Atom.family((id) => {
62
+ return Atom.make((get2) => {
63
+ const entries = get2(this._capabilityEntries(id));
64
+ const result = {};
65
+ for (const entry of entries) {
66
+ (result[entry.moduleId] ??= []).push(entry.implementation);
67
+ }
68
+ return result;
69
+ }).pipe(Atom.keepAlive);
59
70
  });
60
71
  _capability = Atom.family((id) => {
61
- return Atom.make((get) => {
62
- const current = get(this._capabilities(id));
72
+ return Atom.make((get2) => {
73
+ const current = get2(this._capabilities(id));
63
74
  invariant(current.length > 0, `No capability found for ${id}`, {
64
75
  F: __dxlog_file,
65
- L: 84,
76
+ L: 101,
66
77
  S: this,
67
78
  A: [
68
79
  "current.length > 0",
@@ -84,7 +95,7 @@ var CapabilityManagerImpl = class {
84
95
  moduleId
85
96
  }, {
86
97
  F: __dxlog_file,
87
- L: 105,
98
+ L: 122,
88
99
  S: this,
89
100
  C: (f, a) => f(...a)
90
101
  });
@@ -104,7 +115,7 @@ var CapabilityManagerImpl = class {
104
115
  count: current.length
105
116
  }, {
106
117
  F: __dxlog_file,
107
- L: 111,
118
+ L: 128,
108
119
  S: this,
109
120
  C: (f, a) => f(...a)
110
121
  });
@@ -122,7 +133,7 @@ var CapabilityManagerImpl = class {
122
133
  count: current.length
123
134
  }, {
124
135
  F: __dxlog_file,
125
- L: 127,
136
+ L: 144,
126
137
  S: this,
127
138
  C: (f, a) => f(...a)
128
139
  });
@@ -131,7 +142,7 @@ var CapabilityManagerImpl = class {
131
142
  id: interfaceDef.identifier
132
143
  }, {
133
144
  F: __dxlog_file,
134
- L: 129,
145
+ L: 146,
135
146
  S: this,
136
147
  C: (f, a) => f(...a)
137
148
  });
@@ -147,7 +158,7 @@ var CapabilityManagerImpl = class {
147
158
  const capabilities = this.getAll(interfaceDef);
148
159
  invariant(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`, {
149
160
  F: __dxlog_file,
150
- L: 144,
161
+ L: 161,
151
162
  S: this,
152
163
  A: [
153
164
  "capabilities.length > 0",
@@ -173,12 +184,15 @@ var CapabilityManagerImpl = class {
173
184
  return result;
174
185
  });
175
186
  }
187
+ atomByModule(interfaceDef) {
188
+ return this._capabilitiesByModule(interfaceDef.identifier);
189
+ }
176
190
  };
177
191
  var make2 = (options) => new CapabilityManagerImpl(options);
178
192
 
179
193
  // src/core/plugin-manager.ts
180
194
  var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/plugin-manager.ts";
181
- var ManagerTypeId = Symbol.for("@dxos/app-framework/Manager");
195
+ var ManagerTypeId = /* @__PURE__ */ Symbol.for("@dxos/app-framework/Manager");
182
196
  var isManager = (value) => {
183
197
  return typeof value === "object" && value !== null && ManagerTypeId in value;
184
198
  };
@@ -200,6 +214,9 @@ var ManagerImpl = class {
200
214
  _moduleSemaphores = /* @__PURE__ */ new Map();
201
215
  _activatingEvents = Effect2.runSync(Ref.make([]));
202
216
  _activatingModules = Effect2.runSync(Ref.make([]));
217
+ _inFlightFibers = Effect2.runSync(Ref.make([]));
218
+ _shutdownSemaphore = Effect2.runSync(Effect2.makeSemaphore(1));
219
+ _shuttingDown = Effect2.runSync(Ref.make(false));
203
220
  constructor({ pluginLoader, plugins = [], core = plugins.map(({ meta }) => meta.id), enabled = [], registry }) {
204
221
  this.registry = registry ?? Registry.make();
205
222
  this.capabilities = make2({
@@ -286,13 +303,13 @@ var ManagerImpl = class {
286
303
  id
287
304
  }, {
288
305
  F: __dxlog_file2,
289
- L: 210,
306
+ L: 227,
290
307
  S: this,
291
308
  C: (f, a) => f(...a)
292
309
  });
293
310
  const plugin = yield* this._pluginLoader(id);
294
311
  this._addPlugin(plugin);
295
- return yield* this.enable(id);
312
+ return yield* this.enable(plugin.meta.id);
296
313
  });
297
314
  }
298
315
  /**
@@ -305,7 +322,7 @@ var ManagerImpl = class {
305
322
  id
306
323
  }, {
307
324
  F: __dxlog_file2,
308
- L: 223,
325
+ L: 240,
309
326
  S: this,
310
327
  C: (f, a) => f(...a)
311
328
  });
@@ -327,7 +344,7 @@ var ManagerImpl = class {
327
344
  ]
328
345
  }, {
329
346
  F: __dxlog_file2,
330
- L: 236,
347
+ L: 253,
331
348
  S: this,
332
349
  C: (f, a) => f(...a)
333
350
  });
@@ -346,7 +363,7 @@ var ManagerImpl = class {
346
363
  id
347
364
  }, {
348
365
  F: __dxlog_file2,
349
- L: 251,
366
+ L: 268,
350
367
  S: this,
351
368
  C: (f, a) => f(...a)
352
369
  });
@@ -367,7 +384,7 @@ var ManagerImpl = class {
367
384
  id
368
385
  }, {
369
386
  F: __dxlog_file2,
370
- L: 267,
387
+ L: 284,
371
388
  S: this,
372
389
  C: (f, a) => f(...a)
373
390
  });
@@ -397,136 +414,35 @@ var ManagerImpl = class {
397
414
  activate(event, params) {
398
415
  const key = typeof event === "string" ? event : eventKey(event);
399
416
  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
417
+ if (yield* this._isShuttingDown()) {
418
+ log2("skipping activation during shutdown", {
419
+ key,
420
+ ...params
428
421
  }, {
429
422
  F: __dxlog_file2,
430
- L: 337,
423
+ L: 320,
431
424
  S: this,
432
425
  C: (f, a) => f(...a)
433
426
  });
434
- if (!this._get(this._eventsFiredAtom).includes(key)) {
435
- this._update(this._eventsFiredAtom, (events) => [
436
- ...events,
437
- key
438
- ]);
439
- }
440
427
  return false;
441
428
  }
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
429
+ 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", {
430
+ event: key
515
431
  }, {
516
432
  F: __dxlog_file2,
517
- L: 432,
433
+ L: 328,
518
434
  S: this,
519
435
  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
- }))))));
436
+ }))))), Performance.addTrackEntry({
437
+ name: typeof event === "string" ? event : eventKey(event),
438
+ devtools: {
439
+ dataType: "track-entry",
440
+ track: "Event Activation",
441
+ trackGroup: "Composer",
442
+ color: "primary"
443
+ }
444
+ })));
445
+ });
530
446
  }
531
447
  /**
532
448
  * Deactivates all of the modules for a plugin.
@@ -558,7 +474,7 @@ var ManagerImpl = class {
558
474
  key
559
475
  }, {
560
476
  F: __dxlog_file2,
561
- L: 473,
477
+ L: 374,
562
478
  S: this,
563
479
  C: (f, a) => f(...a)
564
480
  });
@@ -573,6 +489,41 @@ var ManagerImpl = class {
573
489
  }
574
490
  });
575
491
  }
492
+ shutdown() {
493
+ return this._shutdownSemaphore.withPermits(1)(Effect2.gen(this, function* () {
494
+ yield* Ref.set(this._shuttingDown, true);
495
+ log2("shutdown", void 0, {
496
+ F: __dxlog_file2,
497
+ L: 393,
498
+ S: this,
499
+ C: (f, a) => f(...a)
500
+ });
501
+ yield* this._interruptInFlightActivations();
502
+ const activeIds = [
503
+ ...this._get(this._activeAtom)
504
+ ].reverse();
505
+ const allModules = this._get(this._modulesAtom);
506
+ const modulesToDeactivate = activeIds.map((id) => allModules.find((module) => module.id === id)).filter((module) => module != null);
507
+ for (const module of modulesToDeactivate) {
508
+ yield* this._deactivateModule(module);
509
+ }
510
+ this._set(this._eventsFiredAtom, []);
511
+ this._set(this._pendingResetAtom, []);
512
+ this._moduleMemoMap.clear();
513
+ yield* Ref.set(this._activatingEvents, []);
514
+ yield* Ref.set(this._activatingModules, []);
515
+ log2("shutdown complete", void 0, {
516
+ F: __dxlog_file2,
517
+ L: 413,
518
+ S: this,
519
+ C: (f, a) => f(...a)
520
+ });
521
+ return true;
522
+ }).pipe(Effect2.ensuring(Ref.set(this._shuttingDown, false))));
523
+ }
524
+ //
525
+ // State helpers
526
+ //
576
527
  _get(atom) {
577
528
  return this.registry.get(atom);
578
529
  }
@@ -582,12 +533,82 @@ var ManagerImpl = class {
582
533
  _update(atom, updater) {
583
534
  this._set(atom, updater(this._get(atom)));
584
535
  }
536
+ _isShuttingDown() {
537
+ return Ref.get(this._shuttingDown);
538
+ }
539
+ _getPlugin(id) {
540
+ return this._get(this._pluginsAtom).find((plugin) => plugin.meta.id === id);
541
+ }
542
+ _getActiveModules() {
543
+ const active = this._get(this._activeAtom);
544
+ return this._get(this._modulesAtom).filter((module) => active.includes(module.id));
545
+ }
546
+ _getInactiveModules() {
547
+ const active = this._get(this._activeAtom);
548
+ return this._get(this._modulesAtom).filter((module) => !active.includes(module.id));
549
+ }
550
+ _getActiveModulesByEvent(key) {
551
+ return this._getActiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
552
+ }
553
+ _getInactiveModulesByEvent(key) {
554
+ return this._getInactiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
555
+ }
556
+ _setPendingResetByModule(module) {
557
+ const activationEvents = getEvents(module.activatesOn).map(eventKey).filter((key) => this._get(this._eventsFiredAtom).includes(key));
558
+ const pendingReset = Array.fromIterable(new Set(activationEvents)).filter((event) => {
559
+ const pending = this._get(this._pendingResetAtom);
560
+ return !pending.includes(event);
561
+ });
562
+ if (pendingReset.length > 0) {
563
+ log2("pending reset", {
564
+ events: pendingReset
565
+ }, {
566
+ F: __dxlog_file2,
567
+ L: 475,
568
+ S: this,
569
+ C: (f, a) => f(...a)
570
+ });
571
+ this._update(this._pendingResetAtom, (current) => [
572
+ ...current,
573
+ ...pendingReset
574
+ ]);
575
+ }
576
+ }
577
+ _clearPendingReset(key) {
578
+ const pendingIndex = this._get(this._pendingResetAtom).findIndex((event) => event === key);
579
+ if (pendingIndex !== -1) {
580
+ this._update(this._pendingResetAtom, (pending) => pending.filter((event) => event !== key));
581
+ }
582
+ }
583
+ //
584
+ // Fiber helpers
585
+ //
586
+ _interruptInFlightActivations() {
587
+ return Effect2.gen(this, function* () {
588
+ const inFlightFibers = yield* Ref.get(this._inFlightFibers);
589
+ yield* Effect2.forEach(inFlightFibers, (fiber) => Fiber.interrupt(fiber), {
590
+ concurrency: "unbounded"
591
+ });
592
+ });
593
+ }
594
+ _trackFiber(ref, fiber) {
595
+ return Ref.update(ref, (fibers) => [
596
+ ...fibers,
597
+ fiber
598
+ ]);
599
+ }
600
+ _untrackFiber(ref, fiber) {
601
+ return Ref.update(ref, (fibers) => fibers.filter((trackedFiber) => trackedFiber !== fiber));
602
+ }
603
+ //
604
+ // Registration helpers
605
+ //
585
606
  _addPlugin(plugin) {
586
607
  log2("add plugin", {
587
608
  id: plugin.meta.id
588
609
  }, {
589
610
  F: __dxlog_file2,
590
- L: 501,
611
+ L: 519,
591
612
  S: this,
592
613
  C: (f, a) => f(...a)
593
614
  });
@@ -601,7 +622,7 @@ var ManagerImpl = class {
601
622
  id
602
623
  }, {
603
624
  F: __dxlog_file2,
604
- L: 507,
625
+ L: 525,
605
626
  S: this,
606
627
  C: (f, a) => f(...a)
607
628
  });
@@ -612,7 +633,7 @@ var ManagerImpl = class {
612
633
  id: module.id
613
634
  }, {
614
635
  F: __dxlog_file2,
615
- L: 512,
636
+ L: 530,
616
637
  S: this,
617
638
  C: (f, a) => f(...a)
618
639
  });
@@ -626,49 +647,160 @@ var ManagerImpl = class {
626
647
  id
627
648
  }, {
628
649
  F: __dxlog_file2,
629
- L: 518,
650
+ L: 536,
630
651
  S: this,
631
652
  C: (f, a) => f(...a)
632
653
  });
633
654
  this._update(this._modulesAtom, (modules) => modules.filter((module) => module.id !== id));
634
655
  }
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
656
+ //
657
+ // Activation helpers
658
+ //
659
+ _activateEvent(key, params, fiber) {
660
+ return Effect2.gen(this, function* () {
661
+ yield* this._trackFiber(this._inFlightFibers, fiber);
662
+ log2("activating", {
663
+ key,
664
+ ...params
661
665
  }, {
662
666
  F: __dxlog_file2,
663
- L: 558,
667
+ L: 551,
664
668
  S: this,
665
669
  C: (f, a) => f(...a)
666
670
  });
667
- this._update(this._pendingResetAtom, (current) => [
668
- ...current,
669
- ...pendingReset
670
- ]);
671
- }
671
+ yield* Ref.update(this._activatingEvents, (activating) => Array.append(activating, key));
672
+ this._clearPendingReset(key);
673
+ const activatingEvents = yield* this._activatingEvents;
674
+ const activatingModules = yield* this._activatingModules;
675
+ const modules = this._getModulesForActivation(key, activatingEvents, activatingModules);
676
+ if (modules.length === 0) {
677
+ log2("no modules to activate", {
678
+ key
679
+ }, {
680
+ F: __dxlog_file2,
681
+ L: 559,
682
+ S: this,
683
+ C: (f, a) => f(...a)
684
+ });
685
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
686
+ this._update(this._eventsFiredAtom, (events) => [
687
+ ...events,
688
+ key
689
+ ]);
690
+ }
691
+ return false;
692
+ }
693
+ return yield* this._activateModulesForEvent(key, modules, activatingEvents);
694
+ }).pipe(Effect2.ensuring(Effect2.all([
695
+ this._untrackFiber(this._inFlightFibers, fiber),
696
+ Ref.update(this._activatingEvents, (activating) => Array.filter(activating, (event) => event !== key))
697
+ ])));
698
+ }
699
+ _activateModulesForEvent(key, modules, activatingEvents) {
700
+ const activatingModuleIds = modules.map((module) => module.id);
701
+ return Effect2.gen(this, function* () {
702
+ yield* Ref.update(this._activatingModules, (activating) => Array.appendAll(activating, activatingModuleIds));
703
+ log2("activating modules", {
704
+ key,
705
+ modules: activatingModuleIds
706
+ }, {
707
+ F: __dxlog_file2,
708
+ L: 586,
709
+ S: this,
710
+ C: (f, a) => f(...a)
711
+ });
712
+ performance.mark(`event:${key}:start`);
713
+ yield* PubSub.publish(this.activation, {
714
+ event: key,
715
+ state: "activating"
716
+ });
717
+ yield* this._activateRelatedEvents(key, this._getBeforeEvents(modules, activatingEvents), "before");
718
+ const capabilities = yield* this._loadCapabilitiesForModules(key, modules);
719
+ yield* this._contributeCapabilitiesForModules(modules, capabilities);
720
+ yield* this._activateRelatedEvents(key, this._getAfterEvents(modules, activatingEvents), "after");
721
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
722
+ this._update(this._eventsFiredAtom, (events) => [
723
+ ...events,
724
+ key
725
+ ]);
726
+ }
727
+ performance.mark(`event:${key}:end`);
728
+ performance.measure(`event:${key}`, `event:${key}:start`, `event:${key}:end`);
729
+ yield* PubSub.publish(this.activation, {
730
+ event: key,
731
+ state: "activated"
732
+ });
733
+ log2("activated", {
734
+ key
735
+ }, {
736
+ F: __dxlog_file2,
737
+ L: 604,
738
+ S: this,
739
+ C: (f, a) => f(...a)
740
+ });
741
+ return true;
742
+ }).pipe(Effect2.ensuring(Ref.update(this._activatingModules, (activating) => Array.filter(activating, (module) => !activatingModuleIds.includes(module)))));
743
+ }
744
+ _getModulesForActivation(key, activatingEvents, activatingModules) {
745
+ return this._getInactiveModulesByEvent(key).filter((module) => {
746
+ const allOf = isAllOf(module.activatesOn);
747
+ if (!allOf) {
748
+ return true;
749
+ }
750
+ const events = getEvents(module.activatesOn).filter((event) => eventKey(event) !== key);
751
+ return events.every((event) => this._get(this._eventsFiredAtom).includes(eventKey(event)) || activatingEvents.includes(eventKey(event))) && !activatingModules.includes(module.id);
752
+ });
753
+ }
754
+ _getBeforeEvents(modules, activatingEvents) {
755
+ return Function.pipe(modules, Array.flatMap((module) => module.activatesBefore ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event) => !activatingEvents.includes(eventKey(event))));
756
+ }
757
+ _getAfterEvents(modules, activatingEvents) {
758
+ return Function.pipe(modules, Array.flatMap((module) => module.activatesAfter ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event) => !activatingEvents.includes(eventKey(event))));
759
+ }
760
+ _activateRelatedEvents(key, events, phase) {
761
+ const logLabel = phase === "before" ? "activatesBefore" : "activatesAfter";
762
+ const eventKey2 = phase === "before" ? "beforeEvents" : "afterEvents";
763
+ return Function.pipe(events, Array.map((event) => this.activate(event, phase === "before" ? {
764
+ before: key
765
+ } : {
766
+ after: key
767
+ })), Effect2.allWith({
768
+ concurrency: "unbounded"
769
+ }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn(`${logLabel} is taking a long time`, {
770
+ event: key,
771
+ [eventKey2]: events.map(eventKey)
772
+ }, {
773
+ F: __dxlog_file2,
774
+ L: 683,
775
+ S: this,
776
+ C: (f, a) => f(...a)
777
+ }))))), Effect2.asVoid);
778
+ }
779
+ //
780
+ // Module lifecycle helpers
781
+ //
782
+ _loadCapabilitiesForModules(key, modules) {
783
+ return Function.pipe(modules, Array.map((mod) => this._loadModule(mod)), Effect2.allWith({
784
+ concurrency: "unbounded"
785
+ }), Effect2.catchAll((error) => {
786
+ return Effect2.gen(this, function* () {
787
+ yield* PubSub.publish(this.activation, {
788
+ event: key,
789
+ state: "error",
790
+ error
791
+ });
792
+ return yield* Effect2.fail(error);
793
+ });
794
+ }));
795
+ }
796
+ _contributeCapabilitiesForModules(modules, capabilities) {
797
+ return Function.pipe(
798
+ modules,
799
+ Array.zip(capabilities),
800
+ Array.map(([module, capabilitySet]) => this._contributeCapabilities(module, capabilitySet)),
801
+ Effect2.all,
802
+ Effect2.asVoid
803
+ );
672
804
  }
673
805
  _getModuleSemaphore(moduleId) {
674
806
  let semaphore = this._moduleSemaphores.get(moduleId);
@@ -692,21 +824,35 @@ var ManagerImpl = class {
692
824
  module: module.id
693
825
  }, {
694
826
  F: __dxlog_file2,
695
- L: 588,
827
+ L: 756,
696
828
  S: this,
697
829
  C: (f, a) => f(...a)
698
830
  });
831
+ performance.mark(`module:${module.id}:start`);
832
+ yield* PubSub.publish(this.activation, {
833
+ event: "",
834
+ state: "activating",
835
+ module: module.id
836
+ });
699
837
  const [duration, capabilities] = yield* module.activate().pipe(Effect2.provideService(Service, this.capabilities), Effect2.provideService(Service2, this), Effect2.timed);
700
838
  const normalized = capabilities == null ? [] : Array.isArray(capabilities) ? capabilities : [
701
839
  capabilities
702
840
  ];
841
+ const elapsed = Duration.toMillis(duration);
842
+ performance.mark(`module:${module.id}:end`);
843
+ performance.measure(`module:${module.id}`, `module:${module.id}:start`, `module:${module.id}:end`);
844
+ yield* PubSub.publish(this.activation, {
845
+ event: "",
846
+ state: "activated",
847
+ module: module.id
848
+ });
703
849
  log2("loaded module", {
704
850
  module: module.id,
705
- elapsed: Duration.toMillis(duration),
851
+ elapsed,
706
852
  failed: false
707
853
  }, {
708
854
  F: __dxlog_file2,
709
- L: 597,
855
+ L: 771,
710
856
  S: this,
711
857
  C: (f, a) => f(...a)
712
858
  });
@@ -715,11 +861,19 @@ var ManagerImpl = class {
715
861
  module: module.id
716
862
  }, {
717
863
  F: __dxlog_file2,
718
- L: 608,
864
+ L: 782,
719
865
  S: this,
720
866
  C: (f, a) => f(...a)
721
- }))))));
722
- yield* Effect2.forkDaemon(loadEffect.pipe(Effect2.tap((result) => Deferred2.succeed(deferred, result)), Effect2.catchAllCause((cause) => {
867
+ }))))), Performance.addTrackEntry({
868
+ name: module.id,
869
+ devtools: {
870
+ dataType: "track-entry",
871
+ track: "Module Activation",
872
+ trackGroup: "Composer",
873
+ color: "primary"
874
+ }
875
+ }));
876
+ const fiber = yield* Effect2.forkDaemon(loadEffect.pipe(Effect2.tap((result) => Deferred2.succeed(deferred, result)), Effect2.catchAllCause((cause) => {
723
877
  const error = Cause.squash(cause);
724
878
  log2.error("module failed to activate", {
725
879
  module: module.id,
@@ -728,12 +882,14 @@ var ManagerImpl = class {
728
882
  isDefect: !Cause.isFailure(cause)
729
883
  }, {
730
884
  F: __dxlog_file2,
731
- L: 620,
885
+ L: 803,
732
886
  S: this,
733
887
  C: (f, a) => f(...a)
734
888
  });
735
889
  return Deferred2.fail(deferred, error instanceof Error ? error : new Error(String(error)));
736
890
  })));
891
+ yield* this._trackFiber(this._inFlightFibers, fiber);
892
+ yield* Effect2.forkDaemon(Fiber.await(fiber).pipe(Effect2.andThen(() => this._untrackFiber(this._inFlightFibers, fiber))));
737
893
  return deferred;
738
894
  }).pipe(semaphore.withPermits(1));
739
895
  return yield* Deferred2.await(deferredToAwait);
@@ -760,7 +916,7 @@ var ManagerImpl = class {
760
916
  id
761
917
  }, {
762
918
  F: __dxlog_file2,
763
- L: 654,
919
+ L: 841,
764
920
  S: this,
765
921
  C: (f, a) => f(...a)
766
922
  });
@@ -782,7 +938,7 @@ var ManagerImpl = class {
782
938
  id
783
939
  }, {
784
940
  F: __dxlog_file2,
785
- L: 672,
941
+ L: 859,
786
942
  S: this,
787
943
  C: (f, a) => f(...a)
788
944
  });
@@ -805,4 +961,4 @@ export {
805
961
  make5 as make,
806
962
  plugin_manager_exports
807
963
  };
808
- //# sourceMappingURL=chunk-XYQTBFPA.mjs.map
964
+ //# sourceMappingURL=chunk-BCEOLX47.mjs.map