@dxos/app-framework 0.8.4-main.74a063c4e0 → 0.8.4-main.765dc60934

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 (307) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/{capability-OP63CD5N.mjs → capability-HRFPP52W.mjs} +11 -11
  4. package/dist/lib/browser/capability-HRFPP52W.mjs.map +7 -0
  5. package/dist/lib/browser/{capability-BBBBAPDI.mjs → capability-VQ236TY5.mjs} +10 -10
  6. package/dist/lib/browser/{chunk-T3Y4AEKX.mjs → chunk-23D4SJUE.mjs} +3 -3
  7. package/dist/lib/browser/{chunk-T3Y4AEKX.mjs.map → chunk-23D4SJUE.mjs.map} +1 -1
  8. package/dist/lib/browser/{chunk-2CKCJ6PN.mjs → chunk-3JWJXGLK.mjs} +1 -1
  9. package/dist/lib/browser/{chunk-2CKCJ6PN.mjs.map → chunk-3JWJXGLK.mjs.map} +1 -1
  10. package/dist/lib/browser/{chunk-I34GF4NG.mjs → chunk-45CHLTBV.mjs} +2 -2
  11. package/dist/lib/browser/{chunk-QSXYHXCE.mjs → chunk-66IXTIVK.mjs} +1 -1
  12. package/dist/lib/browser/{chunk-QSXYHXCE.mjs.map → chunk-66IXTIVK.mjs.map} +2 -2
  13. package/dist/lib/browser/chunk-6GZYCP73.mjs +422 -0
  14. package/dist/lib/browser/chunk-6GZYCP73.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-7VZJR2OA.mjs +581 -0
  16. package/dist/lib/browser/chunk-7VZJR2OA.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-TGX63LTL.mjs → chunk-FJ4765WW.mjs} +1 -1
  18. package/dist/lib/browser/{chunk-TGX63LTL.mjs.map → chunk-FJ4765WW.mjs.map} +2 -2
  19. package/dist/lib/browser/chunk-FO3IYSLV.mjs +68 -0
  20. package/dist/lib/browser/chunk-FO3IYSLV.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-FU4GAFUQ.mjs → chunk-G6Q2M2M5.mjs} +85 -15
  22. package/dist/lib/browser/chunk-G6Q2M2M5.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J43JDWAV.mjs +1445 -0
  24. package/dist/lib/browser/chunk-J43JDWAV.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-JKWMHZP6.mjs → chunk-WBHCSOBW.mjs} +2 -2
  26. package/dist/lib/browser/chunk-WBHCSOBW.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-XLYULXAO.mjs +469 -0
  28. package/dist/lib/browser/chunk-XLYULXAO.mjs.map +7 -0
  29. package/dist/lib/browser/{chunk-F7FW2RK2.mjs → chunk-ZGJAZSNE.mjs} +7 -32
  30. package/dist/lib/browser/chunk-ZGJAZSNE.mjs.map +7 -0
  31. package/dist/lib/browser/cli/index.mjs +14 -28
  32. package/dist/lib/browser/cli/index.mjs.map +3 -3
  33. package/dist/lib/browser/common/activation-events.mjs +7 -7
  34. package/dist/lib/browser/common/capabilities.mjs +7 -7
  35. package/dist/lib/browser/core/activation-event.mjs +1 -1
  36. package/dist/lib/browser/core/capability.mjs +1 -1
  37. package/dist/lib/browser/core/plugin-manager.mjs +8 -4
  38. package/dist/lib/browser/core/plugin.mjs +12 -2
  39. package/dist/lib/browser/core/url-loader.mjs +17 -5
  40. package/dist/lib/browser/index.mjs +38 -21
  41. package/dist/lib/browser/index.mjs.map +3 -3
  42. package/dist/lib/browser/{invoker-capability-H5PPENOC.mjs → invoker-capability-CEL2L6GX.mjs} +12 -11
  43. package/dist/lib/browser/invoker-capability-CEL2L6GX.mjs.map +7 -0
  44. package/dist/lib/browser/meta.json +1 -1
  45. package/dist/lib/browser/testing/index.mjs +149 -28
  46. package/dist/lib/browser/testing/index.mjs.map +4 -4
  47. package/dist/lib/browser/testing/react.mjs +78 -0
  48. package/dist/lib/browser/testing/react.mjs.map +7 -0
  49. package/dist/lib/browser/ui/index.mjs +18 -14
  50. package/dist/lib/node-esm/{capability-AWBEMRYR.mjs → capability-GS3XJH74.mjs} +10 -10
  51. package/dist/lib/node-esm/{capability-WFEG6CIZ.mjs → capability-I5P7ACFL.mjs} +11 -11
  52. package/dist/lib/node-esm/capability-I5P7ACFL.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-FKE4Z3D6.mjs → chunk-37Z53PXZ.mjs} +1 -1
  54. package/dist/lib/node-esm/{chunk-FKE4Z3D6.mjs.map → chunk-37Z53PXZ.mjs.map} +2 -2
  55. package/dist/lib/node-esm/chunk-4RJL37GN.mjs +423 -0
  56. package/dist/lib/node-esm/chunk-4RJL37GN.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-WZCSOX5Q.mjs → chunk-6XW6LET6.mjs} +2 -2
  58. package/dist/lib/node-esm/{chunk-URWHJQT2.mjs → chunk-D347W3KO.mjs} +7 -32
  59. package/dist/lib/node-esm/chunk-D347W3KO.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-DW45NFLW.mjs +1446 -0
  61. package/dist/lib/node-esm/chunk-DW45NFLW.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-EI4LYXFY.mjs +470 -0
  63. package/dist/lib/node-esm/chunk-EI4LYXFY.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-ULUEXB7Q.mjs → chunk-KIFOQXD4.mjs} +85 -15
  65. package/dist/lib/node-esm/chunk-KIFOQXD4.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-VKHGNEDB.mjs → chunk-SBS2YMPT.mjs} +3 -3
  67. package/dist/lib/node-esm/{chunk-VKHGNEDB.mjs.map → chunk-SBS2YMPT.mjs.map} +1 -1
  68. package/dist/lib/node-esm/{chunk-42KBWDE4.mjs → chunk-SDJ4B2LU.mjs} +1 -1
  69. package/dist/lib/node-esm/{chunk-42KBWDE4.mjs.map → chunk-SDJ4B2LU.mjs.map} +1 -1
  70. package/dist/lib/node-esm/chunk-V24UWT36.mjs +582 -0
  71. package/dist/lib/node-esm/chunk-V24UWT36.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-G3RTFSNG.mjs → chunk-WFSRZKBP.mjs} +2 -2
  73. package/dist/lib/node-esm/chunk-WFSRZKBP.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs +70 -0
  75. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +7 -0
  76. package/dist/lib/node-esm/{chunk-ZZ7CKK6W.mjs → chunk-XOCUANHO.mjs} +1 -1
  77. package/dist/lib/node-esm/{chunk-ZZ7CKK6W.mjs.map → chunk-XOCUANHO.mjs.map} +2 -2
  78. package/dist/lib/node-esm/cli/index.mjs +14 -28
  79. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  80. package/dist/lib/node-esm/common/activation-events.mjs +7 -7
  81. package/dist/lib/node-esm/common/capabilities.mjs +7 -7
  82. package/dist/lib/node-esm/core/activation-event.mjs +1 -1
  83. package/dist/lib/node-esm/core/capability.mjs +1 -1
  84. package/dist/lib/node-esm/core/plugin-manager.mjs +8 -4
  85. package/dist/lib/node-esm/core/plugin.mjs +12 -2
  86. package/dist/lib/node-esm/core/url-loader.mjs +17 -5
  87. package/dist/lib/node-esm/index.mjs +38 -21
  88. package/dist/lib/node-esm/index.mjs.map +3 -3
  89. package/dist/lib/node-esm/{invoker-capability-S3ZA527J.mjs → invoker-capability-QKUKN2MF.mjs} +12 -11
  90. package/dist/lib/node-esm/invoker-capability-QKUKN2MF.mjs.map +7 -0
  91. package/dist/lib/node-esm/meta.json +1 -1
  92. package/dist/lib/node-esm/testing/index.mjs +149 -28
  93. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  94. package/dist/lib/node-esm/testing/react.mjs +79 -0
  95. package/dist/lib/node-esm/testing/react.mjs.map +7 -0
  96. package/dist/lib/node-esm/ui/index.mjs +18 -14
  97. package/dist/plugin/node-esm/index.mjs +542 -33
  98. package/dist/plugin/node-esm/index.mjs.map +4 -4
  99. package/dist/plugin/node-esm/meta.json +1 -1
  100. package/dist/types/src/common/annotations.d.ts +1 -0
  101. package/dist/types/src/common/annotations.d.ts.map +1 -0
  102. package/dist/types/src/common/capabilities.d.ts +2 -1
  103. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/common/operations.d.ts +1 -1
  105. package/dist/types/src/common/operations.d.ts.map +1 -1
  106. package/dist/types/src/core/activation-event.d.ts +4 -4
  107. package/dist/types/src/core/activation-event.d.ts.map +1 -1
  108. package/dist/types/src/core/capability-manager.d.ts.map +1 -1
  109. package/dist/types/src/core/capability.d.ts +2 -2
  110. package/dist/types/src/core/capability.d.ts.map +1 -1
  111. package/dist/types/src/core/edge-registry-plugin-provider.d.ts +30 -0
  112. package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -0
  113. package/dist/types/src/core/index.d.ts +5 -0
  114. package/dist/types/src/core/index.d.ts.map +1 -1
  115. package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
  116. package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
  117. package/dist/types/src/core/plugin-manager.d.ts +230 -5
  118. package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
  119. package/dist/types/src/core/plugin-manifest.d.ts +101 -0
  120. package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
  121. package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
  122. package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
  123. package/dist/types/src/core/plugin.d.ts +164 -6
  124. package/dist/types/src/core/plugin.d.ts.map +1 -1
  125. package/dist/types/src/core/registry.d.ts +107 -0
  126. package/dist/types/src/core/registry.d.ts.map +1 -0
  127. package/dist/types/src/core/url-loader.d.ts +105 -3
  128. package/dist/types/src/core/url-loader.d.ts.map +1 -1
  129. package/dist/types/src/helpers.d.ts.map +1 -1
  130. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -1
  131. package/dist/types/src/plugin-operation/history/errors.d.ts +6 -6
  132. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -1
  133. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +1 -1
  134. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -1
  135. package/dist/types/src/plugin-operation/history/types.d.ts +1 -1
  136. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -1
  137. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +1 -1
  138. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -1
  139. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +1 -1
  140. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -1
  141. package/dist/types/src/plugin-operation/invoker-capability.d.ts +1 -1
  142. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -1
  143. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -1
  144. package/dist/types/src/plugin-operation/testing.d.ts +2 -1
  145. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -1
  146. package/dist/types/src/plugin-runtime/capability.d.ts +1 -1
  147. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -1
  148. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -1
  149. package/dist/types/src/testing/harness.d.ts +67 -0
  150. package/dist/types/src/testing/harness.d.ts.map +1 -0
  151. package/dist/types/src/testing/index.d.ts +1 -0
  152. package/dist/types/src/testing/index.d.ts.map +1 -1
  153. package/dist/types/src/testing/react.d.ts +27 -0
  154. package/dist/types/src/testing/react.d.ts.map +1 -0
  155. package/dist/types/src/testing/react.test.d.ts +2 -0
  156. package/dist/types/src/testing/react.test.d.ts.map +1 -0
  157. package/dist/types/src/testing/service.d.ts.map +1 -1
  158. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  159. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  160. package/dist/types/src/ui/components/App/App.d.ts.map +1 -1
  161. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -1
  162. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts +64 -0
  163. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts.map +1 -0
  164. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts +19 -0
  165. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts.map +1 -0
  166. package/dist/types/src/ui/components/Placeholder/index.d.ts +2 -0
  167. package/dist/types/src/ui/components/Placeholder/index.d.ts.map +1 -0
  168. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -1
  169. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +16 -4
  170. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -1
  171. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -1
  172. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -1
  173. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -1
  174. package/dist/types/src/ui/components/Surface/index.d.ts +16 -6
  175. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -1
  176. package/dist/types/src/ui/components/Surface/types.d.ts +110 -9
  177. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -1
  178. package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
  179. package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
  180. package/dist/types/src/ui/components/index.d.ts +1 -0
  181. package/dist/types/src/ui/components/index.d.ts.map +1 -1
  182. package/dist/types/src/ui/hooks/useApp.d.ts +30 -3
  183. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -1
  184. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -1
  185. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -1
  186. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -1
  187. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts +34 -0
  188. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts.map +1 -0
  189. package/dist/types/src/vite-plugin/boot-loader/index.d.ts +2 -0
  190. package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -0
  191. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts +51 -0
  192. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts.map +1 -0
  193. package/dist/types/src/vite-plugin/composer/index.d.ts +34 -0
  194. package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -0
  195. package/dist/types/src/vite-plugin/import-map/index.d.ts +28 -0
  196. package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -0
  197. package/dist/types/src/vite-plugin/index.d.ts +4 -2
  198. package/dist/types/src/vite-plugin/index.d.ts.map +1 -1
  199. package/dist/types/src/vite-plugin/manifest.d.ts +41 -0
  200. package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
  201. package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
  202. package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
  203. package/dist/types/src/vite-plugin/packages.d.ts +10 -4
  204. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -1
  205. package/dist/types/tsconfig.tsbuildinfo +1 -1
  206. package/moon.yml +1 -0
  207. package/package.json +36 -60
  208. package/src/cli/cli.ts +1 -1
  209. package/src/common/annotations.ts +3 -0
  210. package/src/common/capabilities.ts +2 -1
  211. package/src/common/operations.ts +1 -1
  212. package/src/core/capability.ts +1 -1
  213. package/src/core/edge-registry-plugin-provider.ts +92 -0
  214. package/src/core/index.ts +5 -0
  215. package/src/core/plugin-asset-cache.ts +60 -0
  216. package/src/core/plugin-manager.test.ts +793 -7
  217. package/src/core/plugin-manager.ts +846 -44
  218. package/src/core/plugin-manifest.test.ts +75 -0
  219. package/src/core/plugin-manifest.ts +134 -0
  220. package/src/core/plugin.ts +170 -10
  221. package/src/core/registry.ts +163 -0
  222. package/src/core/url-loader.test.ts +148 -6
  223. package/src/core/url-loader.ts +284 -44
  224. package/src/plugin-operation/OperationPlugin.ts +2 -2
  225. package/src/plugin-operation/history/capability.ts +1 -1
  226. package/src/plugin-operation/history/history-tracker.test.ts +2 -1
  227. package/src/plugin-operation/history/history-tracker.ts +1 -1
  228. package/src/plugin-operation/history/types.ts +1 -1
  229. package/src/plugin-operation/history/undo-mapping.ts +1 -1
  230. package/src/plugin-operation/history/undo-registry.ts +1 -1
  231. package/src/plugin-operation/invoker-capability.ts +2 -1
  232. package/src/plugin-operation/meta.ts +1 -0
  233. package/src/plugin-operation/testing.ts +2 -1
  234. package/src/plugin-runtime/RuntimePlugin.ts +2 -2
  235. package/src/plugin-runtime/meta.ts +1 -0
  236. package/src/testing/harness.ts +229 -0
  237. package/src/testing/index.ts +1 -0
  238. package/src/testing/react.test.tsx +48 -0
  239. package/src/testing/react.tsx +113 -0
  240. package/src/testing/service.ts +1 -1
  241. package/src/testing/withPluginManager.stories.tsx +1 -1
  242. package/src/testing/withPluginManager.tsx +0 -2
  243. package/src/ui/components/App/App.stories.tsx +2 -6
  244. package/src/ui/components/App/App.tsx +25 -2
  245. package/src/ui/components/Placeholder/Placeholder.stories.tsx +77 -0
  246. package/src/ui/components/Placeholder/Placeholder.tsx +155 -0
  247. package/src/ui/components/Placeholder/index.ts +5 -0
  248. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +4 -2
  249. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +1 -1
  250. package/src/ui/components/Surface/SurfaceComponent.tsx +85 -48
  251. package/src/ui/components/Surface/SurfaceInfo.tsx +0 -1
  252. package/src/ui/components/Surface/index.ts +20 -1
  253. package/src/ui/components/Surface/types.test.ts +126 -0
  254. package/src/ui/components/Surface/types.ts +164 -12
  255. package/src/ui/components/index.ts +1 -0
  256. package/src/ui/hooks/useApp.test.tsx +1 -1
  257. package/src/ui/hooks/useApp.tsx +177 -42
  258. package/src/ui/hooks/useLoading.tsx +14 -6
  259. package/src/vite-plugin/boot-loader/BootLoader.stories.tsx +270 -0
  260. package/src/vite-plugin/boot-loader/boot-loader.css +321 -0
  261. package/src/vite-plugin/boot-loader/boot-loader.js +325 -0
  262. package/src/vite-plugin/boot-loader/index.ts +5 -0
  263. package/src/vite-plugin/boot-loader/loader.ts +123 -0
  264. package/src/vite-plugin/composer/index.ts +306 -0
  265. package/src/vite-plugin/import-map/index.ts +527 -0
  266. package/src/vite-plugin/index.ts +6 -2
  267. package/src/vite-plugin/manifest.test.ts +46 -0
  268. package/src/vite-plugin/manifest.ts +57 -0
  269. package/src/vite-plugin/packages.ts +168 -10
  270. package/tsconfig.json +16 -1
  271. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  272. package/dist/lib/browser/capability-OP63CD5N.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-F7FW2RK2.mjs.map +0 -7
  274. package/dist/lib/browser/chunk-FU4GAFUQ.mjs.map +0 -7
  275. package/dist/lib/browser/chunk-GX4TUNM6.mjs +0 -963
  276. package/dist/lib/browser/chunk-GX4TUNM6.mjs.map +0 -7
  277. package/dist/lib/browser/chunk-JKWMHZP6.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-LVJW5EFU.mjs +0 -157
  279. package/dist/lib/browser/chunk-LVJW5EFU.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-RFSO3JRG.mjs +0 -1
  281. package/dist/lib/browser/chunk-RFSO3JRG.mjs.map +0 -7
  282. package/dist/lib/browser/chunk-WPE6AL7I.mjs +0 -905
  283. package/dist/lib/browser/chunk-WPE6AL7I.mjs.map +0 -7
  284. package/dist/lib/browser/invoker-capability-H5PPENOC.mjs.map +0 -7
  285. package/dist/lib/node-esm/capability-WFEG6CIZ.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs +0 -158
  287. package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-BCEOLX47.mjs +0 -964
  289. package/dist/lib/node-esm/chunk-BCEOLX47.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs +0 -2
  291. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-G3RTFSNG.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-LQKOTNJW.mjs +0 -906
  294. package/dist/lib/node-esm/chunk-LQKOTNJW.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-ULUEXB7Q.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-URWHJQT2.mjs.map +0 -7
  297. package/dist/lib/node-esm/invoker-capability-S3ZA527J.mjs.map +0 -7
  298. package/dist/types/src/vite-plugin/composer-plugin.d.ts +0 -18
  299. package/dist/types/src/vite-plugin/composer-plugin.d.ts.map +0 -1
  300. package/dist/types/src/vite-plugin/import-map-plugin.d.ts +0 -16
  301. package/dist/types/src/vite-plugin/import-map-plugin.d.ts.map +0 -1
  302. package/src/vite-plugin/composer-plugin.ts +0 -128
  303. package/src/vite-plugin/import-map-plugin.ts +0 -314
  304. /package/dist/lib/browser/{capability-BBBBAPDI.mjs.map → capability-VQ236TY5.mjs.map} +0 -0
  305. /package/dist/lib/browser/{chunk-I34GF4NG.mjs.map → chunk-45CHLTBV.mjs.map} +0 -0
  306. /package/dist/lib/node-esm/{capability-AWBEMRYR.mjs.map → capability-GS3XJH74.mjs.map} +0 -0
  307. /package/dist/lib/node-esm/{chunk-WZCSOX5Q.mjs.map → chunk-6XW6LET6.mjs.map} +0 -0
@@ -1,964 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- eventKey,
4
- getEvents,
5
- isAllOf
6
- } from "./chunk-ZZ7CKK6W.mjs";
7
- import {
8
- Service as Service2
9
- } from "./chunk-ULUEXB7Q.mjs";
10
- import {
11
- Service
12
- } from "./chunk-42KBWDE4.mjs";
13
- import {
14
- __export
15
- } from "./chunk-HSLMI22Q.mjs";
16
-
17
- // src/core/plugin-manager.ts
18
- var plugin_manager_exports = {};
19
- __export(plugin_manager_exports, {
20
- ManagerTypeId: () => ManagerTypeId,
21
- isManager: () => isManager,
22
- make: () => make5
23
- });
24
- import { Atom as Atom2, Registry } from "@effect-atom/atom-react";
25
- import * as Array from "effect/Array";
26
- import * as Cause from "effect/Cause";
27
- import * as Deferred2 from "effect/Deferred";
28
- import * as Duration from "effect/Duration";
29
- import * as Effect2 from "effect/Effect";
30
- import * as Fiber from "effect/Fiber";
31
- import * as Function from "effect/Function";
32
- import * as HashSet from "effect/HashSet";
33
- import * as PubSub from "effect/PubSub";
34
- import * as Ref from "effect/Ref";
35
- import { runAndForwardErrors } from "@dxos/effect";
36
- import { Performance } from "@dxos/effect";
37
- import { log as log2 } from "@dxos/log";
38
-
39
- // src/core/capability-manager.ts
40
- var capability_manager_exports = {};
41
- __export(capability_manager_exports, {
42
- make: () => make2
43
- });
44
- import { Atom } from "@effect-atom/atom-react";
45
- import * as Deferred from "effect/Deferred";
46
- import * as Effect from "effect/Effect";
47
- import { invariant } from "@dxos/invariant";
48
- import { log } from "@dxos/log";
49
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/capability-manager.ts";
50
- var CapabilityManagerImpl = class {
51
- _registry;
52
- _capabilityEntries = Atom.family(() => {
53
- return Atom.make([]).pipe(Atom.keepAlive);
54
- });
55
- _capabilities = Atom.family((id) => {
56
- return Atom.make((get2) => {
57
- const current = get2(this._capabilityEntries(id));
58
- return current.map((c) => c.implementation);
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);
70
- });
71
- _capability = Atom.family((id) => {
72
- return Atom.make((get2) => {
73
- const current = get2(this._capabilities(id));
74
- invariant(current.length > 0, `No capability found for ${id}`, {
75
- F: __dxlog_file,
76
- L: 101,
77
- S: this,
78
- A: [
79
- "current.length > 0",
80
- "`No capability found for ${id}`"
81
- ]
82
- });
83
- return current[0];
84
- });
85
- });
86
- constructor({ registry }) {
87
- this._registry = registry;
88
- }
89
- contribute({ module: moduleId, interface: interfaceDef, implementation }) {
90
- const current = this._registry.get(this._capabilityEntries(interfaceDef.identifier));
91
- const isDuplicate = current.some((c) => c.moduleId === moduleId && c.implementation === implementation);
92
- if (isDuplicate) {
93
- log("capability already contributed, skipping", {
94
- id: interfaceDef.identifier,
95
- moduleId
96
- }, {
97
- F: __dxlog_file,
98
- L: 122,
99
- S: this,
100
- C: (f, a) => f(...a)
101
- });
102
- return;
103
- }
104
- const entry = {
105
- moduleId,
106
- implementation
107
- };
108
- this._registry.set(this._capabilityEntries(interfaceDef.identifier), [
109
- ...current,
110
- entry
111
- ]);
112
- log("capability contributed", {
113
- id: interfaceDef.identifier,
114
- moduleId,
115
- count: current.length
116
- }, {
117
- F: __dxlog_file,
118
- L: 128,
119
- S: this,
120
- C: (f, a) => f(...a)
121
- });
122
- }
123
- remove(interfaceDef, implementation) {
124
- const current = this._registry.get(this._capabilityEntries(interfaceDef.identifier));
125
- if (current.length === 0) {
126
- return;
127
- }
128
- const next = current.filter((c) => c.implementation !== implementation);
129
- if (next.length !== current.length) {
130
- this._registry.set(this._capabilityEntries(interfaceDef.identifier), next);
131
- log("capability removed", {
132
- id: interfaceDef.identifier,
133
- count: current.length
134
- }, {
135
- F: __dxlog_file,
136
- L: 144,
137
- S: this,
138
- C: (f, a) => f(...a)
139
- });
140
- } else {
141
- log.warn("capability not removed", {
142
- id: interfaceDef.identifier
143
- }, {
144
- F: __dxlog_file,
145
- L: 146,
146
- S: this,
147
- C: (f, a) => f(...a)
148
- });
149
- }
150
- }
151
- atom(interfaceDef) {
152
- return this._capabilities(interfaceDef.identifier);
153
- }
154
- getAll(interfaceDef) {
155
- return this._registry.get(this.atom(interfaceDef));
156
- }
157
- get(interfaceDef) {
158
- const capabilities = this.getAll(interfaceDef);
159
- invariant(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`, {
160
- F: __dxlog_file,
161
- L: 161,
162
- S: this,
163
- A: [
164
- "capabilities.length > 0",
165
- "`No capability found for ${interfaceDef.identifier}`"
166
- ]
167
- });
168
- return capabilities[0];
169
- }
170
- waitFor(interfaceDef) {
171
- return Effect.gen(this, function* () {
172
- const [capability] = this.getAll(interfaceDef);
173
- if (capability) {
174
- return capability;
175
- }
176
- const deferred = yield* Deferred.make();
177
- const cancel = this._registry.subscribe(this.atom(interfaceDef), (capabilities) => {
178
- if (capabilities.length > 0) {
179
- Effect.runSync(Deferred.succeed(deferred, capabilities[0]));
180
- }
181
- });
182
- const result = yield* Deferred.await(deferred);
183
- cancel();
184
- return result;
185
- });
186
- }
187
- atomByModule(interfaceDef) {
188
- return this._capabilitiesByModule(interfaceDef.identifier);
189
- }
190
- };
191
- var make2 = (options) => new CapabilityManagerImpl(options);
192
-
193
- // src/core/plugin-manager.ts
194
- var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/plugin-manager.ts";
195
- var ManagerTypeId = /* @__PURE__ */ Symbol.for("@dxos/app-framework/Manager");
196
- var isManager = (value) => {
197
- return typeof value === "object" && value !== null && ManagerTypeId in value;
198
- };
199
- var ManagerImpl = class {
200
- [ManagerTypeId] = ManagerTypeId;
201
- activation = Effect2.runSync(PubSub.unbounded());
202
- capabilities;
203
- registry;
204
- _pluginsAtom;
205
- _coreAtom;
206
- _enabledAtom;
207
- _modulesAtom;
208
- _activeAtom;
209
- _eventsFiredAtom;
210
- _pendingResetAtom;
211
- _pluginLoader;
212
- _capabilities = /* @__PURE__ */ new Map();
213
- _moduleMemoMap = /* @__PURE__ */ new Map();
214
- _moduleSemaphores = /* @__PURE__ */ new Map();
215
- _activatingEvents = Effect2.runSync(Ref.make([]));
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));
220
- constructor({ pluginLoader, plugins = [], core = plugins.map(({ meta }) => meta.id), enabled = [], registry }) {
221
- this.registry = registry ?? Registry.make();
222
- this.capabilities = make2({
223
- registry: this.registry
224
- });
225
- this._pluginLoader = pluginLoader;
226
- this._pluginsAtom = Atom2.make(plugins).pipe(Atom2.keepAlive);
227
- this._coreAtom = Atom2.make(core).pipe(Atom2.keepAlive);
228
- this._enabledAtom = Atom2.make(enabled).pipe(Atom2.keepAlive);
229
- this._modulesAtom = Atom2.make([]).pipe(Atom2.keepAlive);
230
- this._activeAtom = Atom2.make([]).pipe(Atom2.keepAlive);
231
- this._eventsFiredAtom = Atom2.make([]).pipe(Atom2.keepAlive);
232
- this._pendingResetAtom = Atom2.make([]).pipe(Atom2.keepAlive);
233
- plugins.forEach((plugin) => this._addPlugin(plugin));
234
- void Effect2.all([
235
- ...core,
236
- ...enabled
237
- ].map((id) => this.enable(id))).pipe(runAndForwardErrors);
238
- }
239
- get plugins() {
240
- return this._pluginsAtom;
241
- }
242
- get core() {
243
- return this._coreAtom;
244
- }
245
- /**
246
- * Ids of plugins that are currently enabled.
247
- */
248
- get enabled() {
249
- return this._enabledAtom;
250
- }
251
- /**
252
- * Modules of plugins which are currently enabled.
253
- */
254
- get modules() {
255
- return this._modulesAtom;
256
- }
257
- /**
258
- * Ids of modules which are currently active.
259
- */
260
- get active() {
261
- return this._activeAtom;
262
- }
263
- /**
264
- * Ids of events which have been fired.
265
- */
266
- get eventsFired() {
267
- return this._eventsFiredAtom;
268
- }
269
- /**
270
- * Ids of modules which are pending reset.
271
- */
272
- get pendingReset() {
273
- return this._pendingResetAtom;
274
- }
275
- getPlugins() {
276
- return this._get(this._pluginsAtom);
277
- }
278
- getCore() {
279
- return this._get(this._coreAtom);
280
- }
281
- getEnabled() {
282
- return this._get(this._enabledAtom);
283
- }
284
- getModules() {
285
- return this._get(this._modulesAtom);
286
- }
287
- getActive() {
288
- return this._get(this._activeAtom);
289
- }
290
- getEventsFired() {
291
- return this._get(this._eventsFiredAtom);
292
- }
293
- getPendingReset() {
294
- return this._get(this._pendingResetAtom);
295
- }
296
- /**
297
- * Adds a plugin to the manager via the plugin loader.
298
- * @param id The id of the plugin.
299
- */
300
- add(id) {
301
- return Effect2.gen(this, function* () {
302
- log2("add plugin", {
303
- id
304
- }, {
305
- F: __dxlog_file2,
306
- L: 227,
307
- S: this,
308
- C: (f, a) => f(...a)
309
- });
310
- const plugin = yield* this._pluginLoader(id);
311
- this._addPlugin(plugin);
312
- return yield* this.enable(plugin.meta.id);
313
- });
314
- }
315
- /**
316
- * Enables a plugin.
317
- * @param id The id of the plugin.
318
- */
319
- enable(id) {
320
- return Effect2.gen(this, function* () {
321
- log2("enable plugin", {
322
- id
323
- }, {
324
- F: __dxlog_file2,
325
- L: 240,
326
- S: this,
327
- C: (f, a) => f(...a)
328
- });
329
- const plugin = this._getPlugin(id);
330
- if (!plugin) {
331
- return false;
332
- }
333
- this._update(this._enabledAtom, (enabled) => enabled.includes(id) ? enabled : [
334
- ...enabled,
335
- id
336
- ]);
337
- plugin.modules.forEach((module) => {
338
- this._addModule(module);
339
- this._setPendingResetByModule(module);
340
- });
341
- log2("pending reset", {
342
- events: [
343
- ...this.getPendingReset()
344
- ]
345
- }, {
346
- F: __dxlog_file2,
347
- L: 253,
348
- S: this,
349
- C: (f, a) => f(...a)
350
- });
351
- yield* Effect2.all(this.getPendingReset().map((event) => this.activate(event)), {
352
- concurrency: "unbounded"
353
- });
354
- return true;
355
- });
356
- }
357
- /**
358
- * Removes a plugin from the manager.
359
- * @param id The id of the plugin.
360
- */
361
- remove(id) {
362
- log2("remove plugin", {
363
- id
364
- }, {
365
- F: __dxlog_file2,
366
- L: 268,
367
- S: this,
368
- C: (f, a) => f(...a)
369
- });
370
- const result = this.disable(id);
371
- if (!result) {
372
- return false;
373
- }
374
- this._removePlugin(id);
375
- return true;
376
- }
377
- /**
378
- * Disables a plugin.
379
- * @param id The id of the plugin.
380
- */
381
- disable(id) {
382
- return Effect2.gen(this, function* () {
383
- log2("disable plugin", {
384
- id
385
- }, {
386
- F: __dxlog_file2,
387
- L: 284,
388
- S: this,
389
- C: (f, a) => f(...a)
390
- });
391
- if (this._get(this._coreAtom).includes(id)) {
392
- return false;
393
- }
394
- const plugin = this._getPlugin(id);
395
- if (!plugin) {
396
- return false;
397
- }
398
- const enabledIndex = this._get(this._enabledAtom).findIndex((enabled) => enabled === id);
399
- if (enabledIndex !== -1) {
400
- this._update(this._enabledAtom, (enabled) => enabled.filter((item) => item !== id));
401
- yield* this.deactivate(id);
402
- plugin.modules.forEach((module) => {
403
- this._removeModule(module.id);
404
- });
405
- }
406
- return true;
407
- });
408
- }
409
- /**
410
- * Activates plugins based on the activation event.
411
- * @param event The activation event.
412
- * @returns Whether the activation was successful.
413
- */
414
- activate(event, params) {
415
- const key = typeof event === "string" ? event : eventKey(event);
416
- return Effect2.gen(this, function* () {
417
- if (yield* this._isShuttingDown()) {
418
- log2("skipping activation during shutdown", {
419
- key,
420
- ...params
421
- }, {
422
- F: __dxlog_file2,
423
- L: 320,
424
- S: this,
425
- C: (f, a) => f(...a)
426
- });
427
- return false;
428
- }
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
431
- }, {
432
- F: __dxlog_file2,
433
- L: 328,
434
- S: this,
435
- C: (f, a) => f(...a)
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
- });
446
- }
447
- /**
448
- * Deactivates all of the modules for a plugin.
449
- * @param id The id of the plugin.
450
- * @returns Whether the deactivation was successful.
451
- */
452
- deactivate(id) {
453
- return Effect2.gen(this, function* () {
454
- const plugin = this._getPlugin(id);
455
- if (!plugin) {
456
- return false;
457
- }
458
- const modules = plugin.modules;
459
- const results = yield* Effect2.all(modules.map((module) => this._deactivateModule(module)), {
460
- concurrency: "unbounded"
461
- });
462
- return results.every((result) => result);
463
- });
464
- }
465
- /**
466
- * Re-activates the modules that were activated by the event.
467
- * @param event The activation event.
468
- * @returns Whether the reset was successful.
469
- */
470
- reset(event) {
471
- return Effect2.gen(this, function* () {
472
- const key = typeof event === "string" ? event : eventKey(event);
473
- log2("reset", {
474
- key
475
- }, {
476
- F: __dxlog_file2,
477
- L: 374,
478
- S: this,
479
- C: (f, a) => f(...a)
480
- });
481
- const modules = this._getActiveModulesByEvent(key);
482
- const results = yield* Effect2.all(modules.map((module) => this._deactivateModule(module)), {
483
- concurrency: "unbounded"
484
- });
485
- if (results.every((result) => result)) {
486
- return yield* this.activate(key);
487
- } else {
488
- return false;
489
- }
490
- });
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
- //
527
- _get(atom) {
528
- return this.registry.get(atom);
529
- }
530
- _set(atom, value) {
531
- this.registry.set(atom, value);
532
- }
533
- _update(atom, updater) {
534
- this._set(atom, updater(this._get(atom)));
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
- //
606
- _addPlugin(plugin) {
607
- log2("add plugin", {
608
- id: plugin.meta.id
609
- }, {
610
- F: __dxlog_file2,
611
- L: 519,
612
- S: this,
613
- C: (f, a) => f(...a)
614
- });
615
- this._update(this._pluginsAtom, (plugins) => plugins.includes(plugin) ? plugins : [
616
- ...plugins,
617
- plugin
618
- ]);
619
- }
620
- _removePlugin(id) {
621
- log2("remove plugin", {
622
- id
623
- }, {
624
- F: __dxlog_file2,
625
- L: 525,
626
- S: this,
627
- C: (f, a) => f(...a)
628
- });
629
- this._update(this._pluginsAtom, (plugins) => plugins.filter((plugin) => plugin.meta.id !== id));
630
- }
631
- _addModule(module) {
632
- log2("add module", {
633
- id: module.id
634
- }, {
635
- F: __dxlog_file2,
636
- L: 530,
637
- S: this,
638
- C: (f, a) => f(...a)
639
- });
640
- this._update(this._modulesAtom, (modules) => modules.includes(module) ? modules : [
641
- ...modules,
642
- module
643
- ]);
644
- }
645
- _removeModule(id) {
646
- log2("remove module", {
647
- id
648
- }, {
649
- F: __dxlog_file2,
650
- L: 536,
651
- S: this,
652
- C: (f, a) => f(...a)
653
- });
654
- this._update(this._modulesAtom, (modules) => modules.filter((module) => module.id !== id));
655
- }
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
665
- }, {
666
- F: __dxlog_file2,
667
- L: 551,
668
- S: this,
669
- C: (f, a) => f(...a)
670
- });
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
- );
804
- }
805
- _getModuleSemaphore(moduleId) {
806
- let semaphore = this._moduleSemaphores.get(moduleId);
807
- if (!semaphore) {
808
- semaphore = Effect2.runSync(Effect2.makeSemaphore(1));
809
- this._moduleSemaphores.set(moduleId, semaphore);
810
- }
811
- return semaphore;
812
- }
813
- _loadModule = (module) => Effect2.gen(this, function* () {
814
- const semaphore = this._getModuleSemaphore(module.id);
815
- const deferredToAwait = yield* Effect2.gen(this, function* () {
816
- const existing = this._moduleMemoMap.get(module.id);
817
- if (existing) {
818
- return existing;
819
- }
820
- const deferred = yield* Deferred2.make();
821
- this._moduleMemoMap.set(module.id, deferred);
822
- const loadEffect = Effect2.gen(this, function* () {
823
- log2("loading module", {
824
- module: module.id
825
- }, {
826
- F: __dxlog_file2,
827
- L: 756,
828
- S: this,
829
- C: (f, a) => f(...a)
830
- });
831
- performance.mark(`module:${module.id}:start`);
832
- yield* PubSub.publish(this.activation, {
833
- event: "",
834
- state: "activating",
835
- module: module.id
836
- });
837
- const [duration, capabilities] = yield* module.activate().pipe(Effect2.provideService(Service, this.capabilities), Effect2.provideService(Service2, this), Effect2.timed);
838
- const normalized = capabilities == null ? [] : Array.isArray(capabilities) ? capabilities : [
839
- capabilities
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
- });
849
- log2("loaded module", {
850
- module: module.id,
851
- elapsed,
852
- failed: false
853
- }, {
854
- F: __dxlog_file2,
855
- L: 771,
856
- S: this,
857
- C: (f, a) => f(...a)
858
- });
859
- return normalized;
860
- }).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`, {
861
- module: module.id
862
- }, {
863
- F: __dxlog_file2,
864
- L: 782,
865
- S: this,
866
- C: (f, a) => f(...a)
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) => {
877
- const error = Cause.squash(cause);
878
- log2.error("module failed to activate", {
879
- module: module.id,
880
- error: error instanceof Error ? error.message : String(error),
881
- stack: error instanceof Error ? error.stack : void 0,
882
- isDefect: !Cause.isFailure(cause)
883
- }, {
884
- F: __dxlog_file2,
885
- L: 803,
886
- S: this,
887
- C: (f, a) => f(...a)
888
- });
889
- return Deferred2.fail(deferred, error instanceof Error ? error : new Error(String(error)));
890
- })));
891
- yield* this._trackFiber(this._inFlightFibers, fiber);
892
- yield* Effect2.forkDaemon(Fiber.await(fiber).pipe(Effect2.andThen(() => this._untrackFiber(this._inFlightFibers, fiber))));
893
- return deferred;
894
- }).pipe(semaphore.withPermits(1));
895
- return yield* Deferred2.await(deferredToAwait);
896
- });
897
- _contributeCapabilities(module, capabilities) {
898
- return Effect2.gen(this, function* () {
899
- capabilities.forEach((capability) => {
900
- this.capabilities.contribute({
901
- module: module.id,
902
- ...capability
903
- });
904
- });
905
- this._update(this._activeAtom, (active) => [
906
- ...active,
907
- module.id
908
- ]);
909
- this._capabilities.set(module.id, capabilities);
910
- });
911
- }
912
- _deactivateModule(module) {
913
- return Effect2.gen(this, function* () {
914
- const id = module.id;
915
- log2("deactivating", {
916
- id
917
- }, {
918
- F: __dxlog_file2,
919
- L: 841,
920
- S: this,
921
- C: (f, a) => f(...a)
922
- });
923
- this._moduleMemoMap.delete(id);
924
- const capabilities = this._capabilities.get(id);
925
- if (capabilities) {
926
- for (const capability of capabilities) {
927
- this.capabilities.remove(capability.interface, capability.implementation);
928
- const program = capability.deactivate?.() ?? Effect2.succeed(void 0);
929
- yield* program;
930
- }
931
- this._capabilities.delete(id);
932
- }
933
- const activeIndex = this._get(this._activeAtom).findIndex((event) => event === id);
934
- if (activeIndex !== -1) {
935
- this._update(this._activeAtom, (active) => active.filter((event) => event !== id));
936
- }
937
- log2("deactivated", {
938
- id
939
- }, {
940
- F: __dxlog_file2,
941
- L: 859,
942
- S: this,
943
- C: (f, a) => f(...a)
944
- });
945
- return true;
946
- });
947
- }
948
- };
949
- var make5 = (options) => new ManagerImpl(options);
950
- var together = (togetherEffect) => (effect) => Effect2.gen(function* () {
951
- const togetherFiber = yield* Effect2.fork(togetherEffect);
952
- const result = yield* effect;
953
- yield* Fiber.interrupt(togetherFiber);
954
- return result;
955
- });
956
-
957
- export {
958
- capability_manager_exports,
959
- ManagerTypeId,
960
- isManager,
961
- make5 as make,
962
- plugin_manager_exports
963
- };
964
- //# sourceMappingURL=chunk-BCEOLX47.mjs.map