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