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

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 (420) hide show
  1. package/.storybook/main.mts +1 -1
  2. package/.storybook/preview.mts +2 -2
  3. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +149 -0
  4. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +7 -0
  5. package/dist/lib/browser/capability-7PCNSWBT.mjs +33 -0
  6. package/dist/lib/browser/capability-7PCNSWBT.mjs.map +7 -0
  7. package/dist/lib/browser/capability-KP3PFEXD.mjs +31 -0
  8. package/dist/lib/browser/capability-KP3PFEXD.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-6Y7PZV72.mjs +77 -0
  10. package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-7IQHKD4U.mjs +170 -0
  12. package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-BLQJSGL3.mjs +732 -0
  14. package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
  16. package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-FMZN33N4.mjs +807 -0
  18. package/dist/lib/browser/chunk-FMZN33N4.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-H4WPA7U7.mjs +77 -0
  20. package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  22. package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
  23. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-TCLLRCS3.mjs +145 -0
  25. package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-XYNO72GQ.mjs +746 -0
  27. package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +7 -0
  28. package/dist/lib/browser/common/index.mjs +38 -0
  29. package/dist/lib/browser/core/activation-event.mjs +20 -0
  30. package/dist/lib/browser/core/capability.mjs +28 -0
  31. package/dist/lib/browser/core/plugin-manager.mjs +15 -0
  32. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  33. package/dist/lib/browser/core/plugin.mjs +27 -0
  34. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  35. package/dist/lib/browser/index.mjs +162 -128
  36. package/dist/lib/browser/index.mjs.map +4 -4
  37. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +32 -0
  38. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +7 -0
  39. package/dist/lib/browser/meta.json +1 -1
  40. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +64 -0
  41. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +7 -0
  42. package/dist/lib/browser/react/index.mjs +46 -0
  43. package/dist/lib/browser/react/index.mjs.map +7 -0
  44. package/dist/lib/browser/testing/index.mjs +68 -22
  45. package/dist/lib/browser/testing/index.mjs.map +4 -4
  46. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +150 -0
  47. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +7 -0
  48. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs +34 -0
  49. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +7 -0
  50. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +32 -0
  51. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +7 -0
  52. package/dist/lib/node-esm/chunk-663A54LQ.mjs +171 -0
  53. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +747 -0
  55. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
  57. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +733 -0
  59. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs +146 -0
  61. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  63. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-STMXUEPO.mjs +78 -0
  65. package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
  67. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +78 -0
  69. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs +808 -0
  71. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +7 -0
  72. package/dist/lib/node-esm/common/index.mjs +39 -0
  73. package/dist/lib/node-esm/common/index.mjs.map +7 -0
  74. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  75. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  76. package/dist/lib/node-esm/core/capability.mjs +29 -0
  77. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  78. package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
  79. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  80. package/dist/lib/node-esm/core/plugin.mjs +28 -0
  81. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  82. package/dist/lib/node-esm/index.mjs +162 -128
  83. package/dist/lib/node-esm/index.mjs.map +4 -4
  84. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +33 -0
  85. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +7 -0
  86. package/dist/lib/node-esm/meta.json +1 -1
  87. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +65 -0
  88. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +7 -0
  89. package/dist/lib/node-esm/react/index.mjs +47 -0
  90. package/dist/lib/node-esm/react/index.mjs.map +7 -0
  91. package/dist/lib/node-esm/testing/index.mjs +68 -22
  92. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  93. package/dist/types/src/cli.d.ts +39 -0
  94. package/dist/types/src/cli.d.ts.map +1 -0
  95. package/dist/types/src/common/activation-event.d.ts +66 -0
  96. package/dist/types/src/common/activation-event.d.ts.map +1 -0
  97. package/dist/types/src/common/capability.d.ts +265 -0
  98. package/dist/types/src/common/capability.d.ts.map +1 -0
  99. package/dist/types/src/common/collaboration.d.ts +23 -17
  100. package/dist/types/src/common/collaboration.d.ts.map +1 -1
  101. package/dist/types/src/common/graph.d.ts +2 -2
  102. package/dist/types/src/common/graph.d.ts.map +1 -1
  103. package/dist/types/src/common/index.d.ts +4 -3
  104. package/dist/types/src/common/index.d.ts.map +1 -1
  105. package/dist/types/src/common/operations.d.ts +380 -0
  106. package/dist/types/src/common/operations.d.ts.map +1 -0
  107. package/dist/types/src/common/plugin.d.ts +201 -0
  108. package/dist/types/src/common/plugin.d.ts.map +1 -0
  109. package/dist/types/src/common/surface.d.ts +48 -13
  110. package/dist/types/src/common/surface.d.ts.map +1 -1
  111. package/dist/types/src/common/translations.d.ts +9 -0
  112. package/dist/types/src/common/translations.d.ts.map +1 -1
  113. package/dist/types/src/context.d.ts +5 -0
  114. package/dist/types/src/context.d.ts.map +1 -0
  115. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +6 -6
  116. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  117. package/dist/types/src/core/capability-manager.d.ts +43 -0
  118. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  119. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  120. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  121. package/dist/types/src/core/capability.d.ts +150 -0
  122. package/dist/types/src/core/capability.d.ts.map +1 -0
  123. package/dist/types/src/core/index.d.ts +5 -4
  124. package/dist/types/src/core/index.d.ts.map +1 -1
  125. package/dist/types/src/core/plugin-manager.d.ts +66 -0
  126. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  127. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  128. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  129. package/dist/types/src/core/plugin.d.ts +92 -34
  130. package/dist/types/src/core/plugin.d.ts.map +1 -1
  131. package/dist/types/src/index.d.ts +5 -4
  132. package/dist/types/src/index.d.ts.map +1 -1
  133. package/dist/types/src/playground/debug/Debug.d.ts +4 -2
  134. package/dist/types/src/playground/debug/Debug.d.ts.map +1 -1
  135. package/dist/types/src/playground/debug/plugin.d.ts +2 -1
  136. package/dist/types/src/playground/debug/plugin.d.ts.map +1 -1
  137. package/dist/types/src/playground/generator/Main.d.ts +4 -2
  138. package/dist/types/src/playground/generator/Main.d.ts.map +1 -1
  139. package/dist/types/src/playground/generator/Toolbar.d.ts +4 -2
  140. package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -1
  141. package/dist/types/src/playground/generator/generator.d.ts +17 -5
  142. package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
  143. package/dist/types/src/playground/generator/plugin.d.ts +2 -1
  144. package/dist/types/src/playground/generator/plugin.d.ts.map +1 -1
  145. package/dist/types/src/playground/layout/Layout.d.ts +4 -2
  146. package/dist/types/src/playground/layout/Layout.d.ts.map +1 -1
  147. package/dist/types/src/playground/layout/plugin.d.ts +2 -1
  148. package/dist/types/src/playground/layout/plugin.d.ts.map +1 -1
  149. package/dist/types/src/playground/logger/Toolbar.d.ts +4 -2
  150. package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -1
  151. package/dist/types/src/playground/logger/plugin.d.ts +2 -1
  152. package/dist/types/src/playground/logger/plugin.d.ts.map +1 -1
  153. package/dist/types/src/playground/logger/schema.d.ts +14 -0
  154. package/dist/types/src/playground/logger/schema.d.ts.map +1 -1
  155. package/dist/types/src/playground/playground.stories.d.ts.map +1 -1
  156. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
  157. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
  158. package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
  159. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
  160. package/dist/types/src/plugin-operation/history/errors.d.ts +5 -0
  161. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
  162. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
  163. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
  164. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
  165. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
  166. package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
  167. package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
  168. package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
  169. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
  170. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +93 -0
  171. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
  172. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
  173. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
  174. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
  175. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
  176. package/dist/types/src/plugin-operation/index.d.ts +3 -0
  177. package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
  178. package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
  179. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
  180. package/dist/types/src/plugin-operation/meta.d.ts +3 -0
  181. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
  182. package/dist/types/src/plugin-operation/testing.d.ts +109 -0
  183. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
  184. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
  185. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
  186. package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
  187. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
  188. package/dist/types/src/plugin-runtime/index.d.ts +2 -0
  189. package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
  190. package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
  191. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
  192. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +2 -1
  193. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -1
  194. package/dist/types/src/plugin-settings/actions.d.ts +36 -0
  195. package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
  196. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +4 -2
  197. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -1
  198. package/dist/types/src/plugin-settings/meta.d.ts +2 -2
  199. package/dist/types/src/plugin-settings/meta.d.ts.map +1 -1
  200. package/dist/types/src/plugin-settings/operation-resolver.d.ts +6 -0
  201. package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +1 -0
  202. package/dist/types/src/react/App.d.ts +8 -0
  203. package/dist/types/src/react/App.d.ts.map +1 -0
  204. package/dist/types/src/react/App.stories.d.ts.map +1 -0
  205. package/dist/types/src/react/DefaultFallback.d.ts.map +1 -0
  206. package/dist/types/src/react/PluginManagerContext.stories.d.ts +13 -0
  207. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +1 -0
  208. package/dist/types/src/react/PluginManagerProvider.d.ts +2 -2
  209. package/dist/types/src/react/PluginManagerProvider.d.ts.map +1 -1
  210. package/dist/types/src/react/Surface.d.ts +8 -6
  211. package/dist/types/src/react/Surface.d.ts.map +1 -1
  212. package/dist/types/src/react/Surface.stories.d.ts +3 -6
  213. package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
  214. package/dist/types/src/react/SurfaceInfo.d.ts +11 -0
  215. package/dist/types/src/react/SurfaceInfo.d.ts.map +1 -0
  216. package/dist/types/src/react/common.d.ts +13 -12
  217. package/dist/types/src/react/common.d.ts.map +1 -1
  218. package/dist/types/src/react/index.d.ts +3 -1
  219. package/dist/types/src/react/index.d.ts.map +1 -1
  220. package/dist/types/src/react/types.d.ts +12 -0
  221. package/dist/types/src/react/types.d.ts.map +1 -0
  222. package/dist/types/src/{components → react}/useApp.d.ts +7 -6
  223. package/dist/types/src/react/useApp.d.ts.map +1 -0
  224. package/dist/types/src/react/useCapabilities.d.ts +16 -3
  225. package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
  226. package/dist/types/src/{components → react}/useLoading.d.ts +1 -2
  227. package/dist/types/src/react/useLoading.d.ts.map +1 -0
  228. package/dist/types/src/react/useOperationResolver.d.ts +19 -0
  229. package/dist/types/src/react/useOperationResolver.d.ts.map +1 -0
  230. package/dist/types/src/testing/index.d.ts +1 -0
  231. package/dist/types/src/testing/index.d.ts.map +1 -1
  232. package/dist/types/src/testing/service.d.ts +8 -0
  233. package/dist/types/src/testing/service.d.ts.map +1 -0
  234. package/dist/types/src/testing/withPluginManager.d.ts +4 -4
  235. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  236. package/dist/types/tsconfig.tsbuildinfo +1 -1
  237. package/moon.yml +6 -2
  238. package/package.json +101 -45
  239. package/src/cli.ts +107 -0
  240. package/src/common/activation-event.ts +99 -0
  241. package/src/common/capability.ts +343 -0
  242. package/src/common/collaboration.ts +23 -10
  243. package/src/common/graph.ts +2 -2
  244. package/src/common/index.ts +4 -3
  245. package/src/common/operations.ts +412 -0
  246. package/src/common/plugin.ts +364 -0
  247. package/src/common/surface.ts +56 -19
  248. package/src/common/translations.ts +20 -0
  249. package/src/context.ts +9 -0
  250. package/src/core/{events.ts → activation-event.ts} +5 -5
  251. package/src/core/capability-manager.test.ts +151 -0
  252. package/src/core/capability-manager.ts +171 -0
  253. package/src/core/capability.ts +236 -0
  254. package/src/core/index.ts +5 -4
  255. package/src/core/plugin-manager.test.ts +845 -0
  256. package/src/core/plugin-manager.ts +696 -0
  257. package/src/core/plugin.ts +221 -39
  258. package/src/index.ts +5 -4
  259. package/src/playground/debug/Debug.tsx +26 -16
  260. package/src/playground/debug/plugin.ts +8 -8
  261. package/src/playground/generator/Main.tsx +20 -11
  262. package/src/playground/generator/Toolbar.tsx +26 -16
  263. package/src/playground/generator/generator.ts +27 -27
  264. package/src/playground/generator/plugin.ts +11 -12
  265. package/src/playground/layout/Layout.tsx +11 -7
  266. package/src/playground/layout/plugin.ts +8 -8
  267. package/src/playground/logger/Toolbar.tsx +19 -16
  268. package/src/playground/logger/plugin.ts +24 -23
  269. package/src/playground/logger/schema.ts +10 -0
  270. package/src/playground/playground.stories.tsx +14 -6
  271. package/src/plugin-operation/OperationPlugin.ts +25 -0
  272. package/src/plugin-operation/history/capability.ts +37 -0
  273. package/src/plugin-operation/history/errors.ts +11 -0
  274. package/src/plugin-operation/history/history-tracker.test.ts +380 -0
  275. package/src/plugin-operation/history/history-tracker.ts +129 -0
  276. package/src/plugin-operation/history/index.ts +9 -0
  277. package/src/plugin-operation/history/types.ts +17 -0
  278. package/src/plugin-operation/history/undo-mapping.ts +132 -0
  279. package/src/plugin-operation/history/undo-registry.test.ts +73 -0
  280. package/src/plugin-operation/history/undo-registry.ts +54 -0
  281. package/src/plugin-operation/index.ts +6 -0
  282. package/src/plugin-operation/invoker-capability.ts +40 -0
  283. package/src/plugin-operation/meta.ts +11 -0
  284. package/src/plugin-operation/testing.ts +174 -0
  285. package/src/plugin-runtime/RuntimePlugin.ts +20 -0
  286. package/src/plugin-runtime/capability.ts +53 -0
  287. package/src/{components → plugin-runtime}/index.ts +1 -1
  288. package/src/plugin-runtime/meta.ts +11 -0
  289. package/src/plugin-settings/SettingsPlugin.ts +11 -26
  290. package/src/plugin-settings/actions.ts +39 -0
  291. package/src/plugin-settings/app-graph-builder.ts +122 -142
  292. package/src/plugin-settings/meta.ts +2 -2
  293. package/src/plugin-settings/operation-resolver.ts +55 -0
  294. package/src/plugin-settings/translations.ts +1 -1
  295. package/src/react/App.stories.tsx +63 -0
  296. package/src/{components → react}/App.tsx +11 -10
  297. package/src/{components → react}/DefaultFallback.tsx +1 -1
  298. package/src/react/PluginManagerContext.stories.tsx +184 -0
  299. package/src/react/PluginManagerProvider.ts +2 -2
  300. package/src/react/Surface.stories.tsx +91 -51
  301. package/src/react/Surface.tsx +226 -45
  302. package/src/react/SurfaceInfo.tsx +107 -0
  303. package/src/react/common.ts +29 -5
  304. package/src/react/index.ts +5 -1
  305. package/src/react/types.ts +27 -0
  306. package/src/react/useApp.tsx +209 -0
  307. package/src/react/useCapabilities.ts +37 -5
  308. package/src/{components → react}/useLoading.tsx +4 -6
  309. package/src/react/useOperationResolver.ts +40 -0
  310. package/src/testing/index.ts +1 -0
  311. package/src/testing/service.ts +52 -0
  312. package/src/testing/withPluginManager.stories.tsx +5 -5
  313. package/src/testing/withPluginManager.tsx +21 -23
  314. package/tsconfig.json +25 -7
  315. package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
  316. package/dist/lib/browser/app-graph-builder-PSA3RESL.mjs +0 -138
  317. package/dist/lib/browser/app-graph-builder-PSA3RESL.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-2VZ4RF4A.mjs +0 -1608
  319. package/dist/lib/browser/chunk-2VZ4RF4A.mjs.map +0 -7
  320. package/dist/lib/browser/chunk-CPVYIS24.mjs +0 -451
  321. package/dist/lib/browser/chunk-CPVYIS24.mjs.map +0 -7
  322. package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
  323. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
  324. package/dist/lib/browser/intent-dispatcher-BND6IF4U.mjs +0 -11
  325. package/dist/lib/browser/intent-resolver-27FJAJDE.mjs +0 -39
  326. package/dist/lib/browser/intent-resolver-27FJAJDE.mjs.map +0 -7
  327. package/dist/lib/browser/store-F545UOIR.mjs +0 -30
  328. package/dist/lib/browser/store-F545UOIR.mjs.map +0 -7
  329. package/dist/lib/browser/worker.mjs +0 -77
  330. package/dist/lib/node-esm/app-graph-builder-VJGZ6KH7.mjs +0 -139
  331. package/dist/lib/node-esm/app-graph-builder-VJGZ6KH7.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-3RRWO5TD.mjs +0 -1610
  333. package/dist/lib/node-esm/chunk-3RRWO5TD.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-MN37WUJ2.mjs +0 -452
  335. package/dist/lib/node-esm/chunk-MN37WUJ2.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
  337. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
  338. package/dist/lib/node-esm/intent-dispatcher-254AZ6EE.mjs +0 -12
  339. package/dist/lib/node-esm/intent-resolver-NPMOPNFL.mjs +0 -40
  340. package/dist/lib/node-esm/intent-resolver-NPMOPNFL.mjs.map +0 -7
  341. package/dist/lib/node-esm/store-CINC4R4L.mjs +0 -31
  342. package/dist/lib/node-esm/store-CINC4R4L.mjs.map +0 -7
  343. package/dist/lib/node-esm/worker.mjs +0 -78
  344. package/dist/types/src/common/capabilities.d.ts +0 -201
  345. package/dist/types/src/common/capabilities.d.ts.map +0 -1
  346. package/dist/types/src/common/events.d.ts +0 -52
  347. package/dist/types/src/common/events.d.ts.map +0 -1
  348. package/dist/types/src/common/layout.d.ts +0 -279
  349. package/dist/types/src/common/layout.d.ts.map +0 -1
  350. package/dist/types/src/components/App.d.ts +0 -10
  351. package/dist/types/src/components/App.d.ts.map +0 -1
  352. package/dist/types/src/components/App.stories.d.ts.map +0 -1
  353. package/dist/types/src/components/DefaultFallback.d.ts.map +0 -1
  354. package/dist/types/src/components/index.d.ts +0 -2
  355. package/dist/types/src/components/index.d.ts.map +0 -1
  356. package/dist/types/src/components/useApp.d.ts.map +0 -1
  357. package/dist/types/src/components/useLoading.d.ts.map +0 -1
  358. package/dist/types/src/core/capabilities.d.ts +0 -117
  359. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  360. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  361. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  362. package/dist/types/src/core/events.d.ts.map +0 -1
  363. package/dist/types/src/core/manager.d.ts +0 -126
  364. package/dist/types/src/core/manager.d.ts.map +0 -1
  365. package/dist/types/src/core/manager.test.d.ts +0 -2
  366. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  367. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  368. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  369. package/dist/types/src/plugin-intent/actions.d.ts +0 -36
  370. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  371. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  372. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  373. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  374. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  375. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  376. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  377. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  378. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  379. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  380. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  381. package/dist/types/src/plugin-intent/meta.d.ts +0 -3
  382. package/dist/types/src/plugin-intent/meta.d.ts.map +0 -1
  383. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  384. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  385. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  386. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  387. package/dist/types/src/react/IntentContext.d.ts +0 -8
  388. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  389. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  390. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  391. package/dist/types/src/worker.d.ts +0 -4
  392. package/dist/types/src/worker.d.ts.map +0 -1
  393. package/src/common/capabilities.ts +0 -217
  394. package/src/common/events.ts +0 -79
  395. package/src/common/layout.ts +0 -277
  396. package/src/components/App.stories.tsx +0 -33
  397. package/src/components/useApp.tsx +0 -164
  398. package/src/core/capabilities.test.ts +0 -136
  399. package/src/core/capabilities.ts +0 -263
  400. package/src/core/manager.test.ts +0 -516
  401. package/src/core/manager.ts +0 -604
  402. package/src/plugin-intent/IntentPlugin.ts +0 -20
  403. package/src/plugin-intent/actions.ts +0 -31
  404. package/src/plugin-intent/errors.ts +0 -40
  405. package/src/plugin-intent/index.ts +0 -9
  406. package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
  407. package/src/plugin-intent/intent-dispatcher.ts +0 -337
  408. package/src/plugin-intent/intent.ts +0 -154
  409. package/src/plugin-intent/meta.ts +0 -10
  410. package/src/plugin-settings/intent-resolver.ts +0 -35
  411. package/src/plugin-settings/store.ts +0 -33
  412. package/src/react/IntentContext.tsx +0 -35
  413. package/src/react/useIntentResolver.ts +0 -22
  414. package/src/worker.ts +0 -11
  415. /package/dist/lib/browser/{intent-dispatcher-BND6IF4U.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  416. /package/dist/lib/browser/{worker.mjs.map → common/index.mjs.map} +0 -0
  417. /package/dist/lib/{node-esm/intent-dispatcher-254AZ6EE.mjs.map → browser/core/activation-event.mjs.map} +0 -0
  418. /package/dist/lib/{node-esm/worker.mjs.map → browser/core/capability.mjs.map} +0 -0
  419. /package/dist/types/src/{components → react}/App.stories.d.ts +0 -0
  420. /package/dist/types/src/{components → react}/DefaultFallback.d.ts +0 -0
@@ -0,0 +1,808 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ eventKey,
4
+ getEvents,
5
+ isAllOf
6
+ } from "./chunk-7OWSHPYK.mjs";
7
+ import {
8
+ Service as Service2
9
+ } from "./chunk-GT6OKM5I.mjs";
10
+ import {
11
+ Service
12
+ } from "./chunk-STMXUEPO.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 { 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((get) => {
56
+ const current = get(this._capabilityEntries(id));
57
+ return current.map((c) => c.implementation);
58
+ });
59
+ });
60
+ _capability = Atom.family((id) => {
61
+ return Atom.make((get) => {
62
+ const current = get(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 = 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
+ constructor({ pluginLoader, plugins = [], core = plugins.map(({ meta }) => meta.id), enabled = [], registry }) {
204
+ this.registry = registry ?? Registry.make();
205
+ this.capabilities = make2({
206
+ registry: this.registry
207
+ });
208
+ this._pluginLoader = pluginLoader;
209
+ this._pluginsAtom = Atom2.make(plugins).pipe(Atom2.keepAlive);
210
+ this._coreAtom = Atom2.make(core).pipe(Atom2.keepAlive);
211
+ this._enabledAtom = Atom2.make(enabled).pipe(Atom2.keepAlive);
212
+ this._modulesAtom = Atom2.make([]).pipe(Atom2.keepAlive);
213
+ this._activeAtom = Atom2.make([]).pipe(Atom2.keepAlive);
214
+ this._eventsFiredAtom = Atom2.make([]).pipe(Atom2.keepAlive);
215
+ this._pendingResetAtom = Atom2.make([]).pipe(Atom2.keepAlive);
216
+ plugins.forEach((plugin) => this._addPlugin(plugin));
217
+ void Effect2.all([
218
+ ...core,
219
+ ...enabled
220
+ ].map((id) => this.enable(id))).pipe(runAndForwardErrors);
221
+ }
222
+ get plugins() {
223
+ return this._pluginsAtom;
224
+ }
225
+ get core() {
226
+ return this._coreAtom;
227
+ }
228
+ /**
229
+ * Ids of plugins that are currently enabled.
230
+ */
231
+ get enabled() {
232
+ return this._enabledAtom;
233
+ }
234
+ /**
235
+ * Modules of plugins which are currently enabled.
236
+ */
237
+ get modules() {
238
+ return this._modulesAtom;
239
+ }
240
+ /**
241
+ * Ids of modules which are currently active.
242
+ */
243
+ get active() {
244
+ return this._activeAtom;
245
+ }
246
+ /**
247
+ * Ids of events which have been fired.
248
+ */
249
+ get eventsFired() {
250
+ return this._eventsFiredAtom;
251
+ }
252
+ /**
253
+ * Ids of modules which are pending reset.
254
+ */
255
+ get pendingReset() {
256
+ return this._pendingResetAtom;
257
+ }
258
+ getPlugins() {
259
+ return this._get(this._pluginsAtom);
260
+ }
261
+ getCore() {
262
+ return this._get(this._coreAtom);
263
+ }
264
+ getEnabled() {
265
+ return this._get(this._enabledAtom);
266
+ }
267
+ getModules() {
268
+ return this._get(this._modulesAtom);
269
+ }
270
+ getActive() {
271
+ return this._get(this._activeAtom);
272
+ }
273
+ getEventsFired() {
274
+ return this._get(this._eventsFiredAtom);
275
+ }
276
+ getPendingReset() {
277
+ return this._get(this._pendingResetAtom);
278
+ }
279
+ /**
280
+ * Adds a plugin to the manager via the plugin loader.
281
+ * @param id The id of the plugin.
282
+ */
283
+ add(id) {
284
+ return Effect2.gen(this, function* () {
285
+ log2("add plugin", {
286
+ id
287
+ }, {
288
+ F: __dxlog_file2,
289
+ L: 210,
290
+ S: this,
291
+ C: (f, a) => f(...a)
292
+ });
293
+ const plugin = yield* this._pluginLoader(id);
294
+ this._addPlugin(plugin);
295
+ return yield* this.enable(id);
296
+ });
297
+ }
298
+ /**
299
+ * Enables a plugin.
300
+ * @param id The id of the plugin.
301
+ */
302
+ enable(id) {
303
+ return Effect2.gen(this, function* () {
304
+ log2("enable plugin", {
305
+ id
306
+ }, {
307
+ F: __dxlog_file2,
308
+ L: 223,
309
+ S: this,
310
+ C: (f, a) => f(...a)
311
+ });
312
+ const plugin = this._getPlugin(id);
313
+ if (!plugin) {
314
+ return false;
315
+ }
316
+ this._update(this._enabledAtom, (enabled) => enabled.includes(id) ? enabled : [
317
+ ...enabled,
318
+ id
319
+ ]);
320
+ plugin.modules.forEach((module) => {
321
+ this._addModule(module);
322
+ this._setPendingResetByModule(module);
323
+ });
324
+ log2("pending reset", {
325
+ events: [
326
+ ...this.getPendingReset()
327
+ ]
328
+ }, {
329
+ F: __dxlog_file2,
330
+ L: 236,
331
+ S: this,
332
+ C: (f, a) => f(...a)
333
+ });
334
+ yield* Effect2.all(this.getPendingReset().map((event) => this.activate(event)), {
335
+ concurrency: "unbounded"
336
+ });
337
+ return true;
338
+ });
339
+ }
340
+ /**
341
+ * Removes a plugin from the manager.
342
+ * @param id The id of the plugin.
343
+ */
344
+ remove(id) {
345
+ log2("remove plugin", {
346
+ id
347
+ }, {
348
+ F: __dxlog_file2,
349
+ L: 251,
350
+ S: this,
351
+ C: (f, a) => f(...a)
352
+ });
353
+ const result = this.disable(id);
354
+ if (!result) {
355
+ return false;
356
+ }
357
+ this._removePlugin(id);
358
+ return true;
359
+ }
360
+ /**
361
+ * Disables a plugin.
362
+ * @param id The id of the plugin.
363
+ */
364
+ disable(id) {
365
+ return Effect2.gen(this, function* () {
366
+ log2("disable plugin", {
367
+ id
368
+ }, {
369
+ F: __dxlog_file2,
370
+ L: 267,
371
+ S: this,
372
+ C: (f, a) => f(...a)
373
+ });
374
+ if (this._get(this._coreAtom).includes(id)) {
375
+ return false;
376
+ }
377
+ const plugin = this._getPlugin(id);
378
+ if (!plugin) {
379
+ return false;
380
+ }
381
+ const enabledIndex = this._get(this._enabledAtom).findIndex((enabled) => enabled === id);
382
+ if (enabledIndex !== -1) {
383
+ this._update(this._enabledAtom, (enabled) => enabled.filter((item) => item !== id));
384
+ yield* this.deactivate(id);
385
+ plugin.modules.forEach((module) => {
386
+ this._removeModule(module.id);
387
+ });
388
+ }
389
+ return true;
390
+ });
391
+ }
392
+ /**
393
+ * Activates plugins based on the activation event.
394
+ * @param event The activation event.
395
+ * @returns Whether the activation was successful.
396
+ */
397
+ activate(event, params) {
398
+ const key = typeof event === "string" ? event : eventKey(event);
399
+ return Effect2.gen(this, function* () {
400
+ log2("activating", {
401
+ key,
402
+ ...params
403
+ }, {
404
+ F: __dxlog_file2,
405
+ L: 302,
406
+ S: this,
407
+ C: (f, a) => f(...a)
408
+ });
409
+ yield* Ref.update(this._activatingEvents, (activating) => Array.append(activating, key));
410
+ const pendingIndex = this._get(this._pendingResetAtom).findIndex((event2) => event2 === key);
411
+ if (pendingIndex !== -1) {
412
+ this._update(this._pendingResetAtom, (pending) => pending.filter((event2) => event2 !== key));
413
+ }
414
+ const activatingEvents = yield* this._activatingEvents;
415
+ const activatingModules = yield* this._activatingModules;
416
+ const modules = this._getInactiveModulesByEvent(key).filter((module) => {
417
+ const allOf = isAllOf(module.activatesOn);
418
+ if (!allOf) {
419
+ return true;
420
+ }
421
+ const events = getEvents(module.activatesOn).filter((event2) => eventKey(event2) !== key);
422
+ return events.every((event2) => this._get(this._eventsFiredAtom).includes(eventKey(event2)) || activatingEvents.includes(eventKey(event2))) && !activatingModules.includes(module.id);
423
+ });
424
+ yield* Ref.update(this._activatingModules, (activating) => Array.appendAll(activating, modules.map((module) => module.id)));
425
+ if (modules.length === 0) {
426
+ log2("no modules to activate", {
427
+ key
428
+ }, {
429
+ F: __dxlog_file2,
430
+ L: 337,
431
+ S: this,
432
+ C: (f, a) => f(...a)
433
+ });
434
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
435
+ this._update(this._eventsFiredAtom, (events) => [
436
+ ...events,
437
+ key
438
+ ]);
439
+ }
440
+ return false;
441
+ }
442
+ log2("activating modules", {
443
+ key,
444
+ modules: modules.map((module) => module.id)
445
+ }, {
446
+ F: __dxlog_file2,
447
+ L: 344,
448
+ S: this,
449
+ C: (f, a) => f(...a)
450
+ });
451
+ yield* PubSub.publish(this.activation, {
452
+ event: key,
453
+ state: "activating"
454
+ });
455
+ const beforeEvents = Function.pipe(modules, Array.flatMap((module) => module.activatesBefore ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event2) => !activatingEvents.includes(eventKey(event2))));
456
+ yield* Function.pipe(beforeEvents, Array.map((event2) => this.activate(event2, {
457
+ before: key
458
+ })), Effect2.allWith({
459
+ concurrency: "unbounded"
460
+ }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("activatesBefore is taking a long time", {
461
+ event: key,
462
+ beforeEvents: beforeEvents.map(eventKey)
463
+ }, {
464
+ F: __dxlog_file2,
465
+ L: 363,
466
+ S: this,
467
+ C: (f, a) => f(...a)
468
+ }))))));
469
+ const getCapabilities = yield* Function.pipe(modules, Array.map((mod) => this._loadModule(mod)), Effect2.allWith({
470
+ concurrency: "unbounded"
471
+ }), Effect2.catchAll((error) => {
472
+ return Effect2.gen(this, function* () {
473
+ yield* PubSub.publish(this.activation, {
474
+ event: key,
475
+ state: "error",
476
+ error
477
+ });
478
+ return yield* Effect2.fail(error);
479
+ });
480
+ }));
481
+ yield* Function.pipe(
482
+ modules,
483
+ Array.zip(getCapabilities),
484
+ Array.map(([module, capabilities]) => this._contributeCapabilities(module, capabilities)),
485
+ Effect2.all
486
+ );
487
+ const afterEvents = Function.pipe(modules, Array.flatMap((module) => module.activatesAfter ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event2) => !activatingEvents.includes(eventKey(event2))));
488
+ yield* Function.pipe(afterEvents, Array.map((event2) => this.activate(event2, {
489
+ after: key
490
+ })), Effect2.allWith({
491
+ concurrency: "unbounded"
492
+ }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("activatesAfter is taking a long time", {
493
+ event: key,
494
+ afterEvents: afterEvents.map(eventKey)
495
+ }, {
496
+ F: __dxlog_file2,
497
+ L: 412,
498
+ S: this,
499
+ C: (f, a) => f(...a)
500
+ }))))));
501
+ yield* Ref.update(this._activatingEvents, (activating) => Array.filter(activating, (event2) => event2 !== key));
502
+ yield* Ref.update(this._activatingModules, (activating) => Array.filter(activating, (module) => !modules.map((module2) => module2.id).includes(module)));
503
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
504
+ this._update(this._eventsFiredAtom, (events) => [
505
+ ...events,
506
+ key
507
+ ]);
508
+ }
509
+ yield* PubSub.publish(this.activation, {
510
+ event: key,
511
+ state: "activated"
512
+ });
513
+ log2("activated", {
514
+ key
515
+ }, {
516
+ F: __dxlog_file2,
517
+ L: 432,
518
+ S: this,
519
+ C: (f, a) => f(...a)
520
+ });
521
+ return true;
522
+ }).pipe(together(Effect2.sleep(Duration.seconds(15)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("event activation is taking a long time", {
523
+ event: key
524
+ }, {
525
+ F: __dxlog_file2,
526
+ L: 438,
527
+ S: this,
528
+ C: (f, a) => f(...a)
529
+ }))))));
530
+ }
531
+ /**
532
+ * Deactivates all of the modules for a plugin.
533
+ * @param id The id of the plugin.
534
+ * @returns Whether the deactivation was successful.
535
+ */
536
+ deactivate(id) {
537
+ return Effect2.gen(this, function* () {
538
+ const plugin = this._getPlugin(id);
539
+ if (!plugin) {
540
+ return false;
541
+ }
542
+ const modules = plugin.modules;
543
+ const results = yield* Effect2.all(modules.map((module) => this._deactivateModule(module)), {
544
+ concurrency: "unbounded"
545
+ });
546
+ return results.every((result) => result);
547
+ });
548
+ }
549
+ /**
550
+ * Re-activates the modules that were activated by the event.
551
+ * @param event The activation event.
552
+ * @returns Whether the reset was successful.
553
+ */
554
+ reset(event) {
555
+ return Effect2.gen(this, function* () {
556
+ const key = typeof event === "string" ? event : eventKey(event);
557
+ log2("reset", {
558
+ key
559
+ }, {
560
+ F: __dxlog_file2,
561
+ L: 473,
562
+ S: this,
563
+ C: (f, a) => f(...a)
564
+ });
565
+ const modules = this._getActiveModulesByEvent(key);
566
+ const results = yield* Effect2.all(modules.map((module) => this._deactivateModule(module)), {
567
+ concurrency: "unbounded"
568
+ });
569
+ if (results.every((result) => result)) {
570
+ return yield* this.activate(key);
571
+ } else {
572
+ return false;
573
+ }
574
+ });
575
+ }
576
+ _get(atom) {
577
+ return this.registry.get(atom);
578
+ }
579
+ _set(atom, value) {
580
+ this.registry.set(atom, value);
581
+ }
582
+ _update(atom, updater) {
583
+ this._set(atom, updater(this._get(atom)));
584
+ }
585
+ _addPlugin(plugin) {
586
+ log2("add plugin", {
587
+ id: plugin.meta.id
588
+ }, {
589
+ F: __dxlog_file2,
590
+ L: 501,
591
+ S: this,
592
+ C: (f, a) => f(...a)
593
+ });
594
+ this._update(this._pluginsAtom, (plugins) => plugins.includes(plugin) ? plugins : [
595
+ ...plugins,
596
+ plugin
597
+ ]);
598
+ }
599
+ _removePlugin(id) {
600
+ log2("remove plugin", {
601
+ id
602
+ }, {
603
+ F: __dxlog_file2,
604
+ L: 507,
605
+ S: this,
606
+ C: (f, a) => f(...a)
607
+ });
608
+ this._update(this._pluginsAtom, (plugins) => plugins.filter((plugin) => plugin.meta.id !== id));
609
+ }
610
+ _addModule(module) {
611
+ log2("add module", {
612
+ id: module.id
613
+ }, {
614
+ F: __dxlog_file2,
615
+ L: 512,
616
+ S: this,
617
+ C: (f, a) => f(...a)
618
+ });
619
+ this._update(this._modulesAtom, (modules) => modules.includes(module) ? modules : [
620
+ ...modules,
621
+ module
622
+ ]);
623
+ }
624
+ _removeModule(id) {
625
+ log2("remove module", {
626
+ id
627
+ }, {
628
+ F: __dxlog_file2,
629
+ L: 518,
630
+ S: this,
631
+ C: (f, a) => f(...a)
632
+ });
633
+ this._update(this._modulesAtom, (modules) => modules.filter((module) => module.id !== id));
634
+ }
635
+ _getPlugin(id) {
636
+ return this._get(this._pluginsAtom).find((plugin) => plugin.meta.id === id);
637
+ }
638
+ _getActiveModules() {
639
+ const active = this._get(this._activeAtom);
640
+ return this._get(this._modulesAtom).filter((module) => active.includes(module.id));
641
+ }
642
+ _getInactiveModules() {
643
+ const active = this._get(this._activeAtom);
644
+ return this._get(this._modulesAtom).filter((module) => !active.includes(module.id));
645
+ }
646
+ _getActiveModulesByEvent(key) {
647
+ return this._getActiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
648
+ }
649
+ _getInactiveModulesByEvent(key) {
650
+ return this._getInactiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
651
+ }
652
+ _setPendingResetByModule(module) {
653
+ const activationEvents = getEvents(module.activatesOn).map(eventKey).filter((key) => this._get(this._eventsFiredAtom).includes(key));
654
+ const pendingReset = Array.fromIterable(new Set(activationEvents)).filter((event) => {
655
+ const pending = this._get(this._pendingResetAtom);
656
+ return !pending.includes(event);
657
+ });
658
+ if (pendingReset.length > 0) {
659
+ log2("pending reset", {
660
+ events: pendingReset
661
+ }, {
662
+ F: __dxlog_file2,
663
+ L: 558,
664
+ S: this,
665
+ C: (f, a) => f(...a)
666
+ });
667
+ this._update(this._pendingResetAtom, (current) => [
668
+ ...current,
669
+ ...pendingReset
670
+ ]);
671
+ }
672
+ }
673
+ _getModuleSemaphore(moduleId) {
674
+ let semaphore = this._moduleSemaphores.get(moduleId);
675
+ if (!semaphore) {
676
+ semaphore = Effect2.runSync(Effect2.makeSemaphore(1));
677
+ this._moduleSemaphores.set(moduleId, semaphore);
678
+ }
679
+ return semaphore;
680
+ }
681
+ _loadModule = (module) => Effect2.gen(this, function* () {
682
+ const semaphore = this._getModuleSemaphore(module.id);
683
+ const deferredToAwait = yield* Effect2.gen(this, function* () {
684
+ const existing = this._moduleMemoMap.get(module.id);
685
+ if (existing) {
686
+ return existing;
687
+ }
688
+ const deferred = yield* Deferred2.make();
689
+ this._moduleMemoMap.set(module.id, deferred);
690
+ const loadEffect = Effect2.gen(this, function* () {
691
+ log2("loading module", {
692
+ module: module.id
693
+ }, {
694
+ F: __dxlog_file2,
695
+ L: 588,
696
+ S: this,
697
+ C: (f, a) => f(...a)
698
+ });
699
+ const [duration, capabilities] = yield* module.activate().pipe(Effect2.provideService(Service, this.capabilities), Effect2.provideService(Service2, this), Effect2.timed);
700
+ const normalized = capabilities == null ? [] : Array.isArray(capabilities) ? capabilities : [
701
+ capabilities
702
+ ];
703
+ log2("loaded module", {
704
+ module: module.id,
705
+ elapsed: Duration.toMillis(duration),
706
+ failed: false
707
+ }, {
708
+ F: __dxlog_file2,
709
+ L: 597,
710
+ S: this,
711
+ C: (f, a) => f(...a)
712
+ });
713
+ return normalized;
714
+ }).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`, {
715
+ module: module.id
716
+ }, {
717
+ F: __dxlog_file2,
718
+ L: 608,
719
+ S: this,
720
+ C: (f, a) => f(...a)
721
+ }))))));
722
+ yield* Effect2.forkDaemon(loadEffect.pipe(Effect2.tap((result) => Deferred2.succeed(deferred, result)), Effect2.catchAllCause((cause) => {
723
+ const error = Cause.squash(cause);
724
+ log2.error("module failed to activate", {
725
+ module: module.id,
726
+ error: error instanceof Error ? error.message : String(error),
727
+ stack: error instanceof Error ? error.stack : void 0,
728
+ isDefect: !Cause.isFailure(cause)
729
+ }, {
730
+ F: __dxlog_file2,
731
+ L: 620,
732
+ S: this,
733
+ C: (f, a) => f(...a)
734
+ });
735
+ return Deferred2.fail(deferred, error instanceof Error ? error : new Error(String(error)));
736
+ })));
737
+ return deferred;
738
+ }).pipe(semaphore.withPermits(1));
739
+ return yield* Deferred2.await(deferredToAwait);
740
+ });
741
+ _contributeCapabilities(module, capabilities) {
742
+ return Effect2.gen(this, function* () {
743
+ capabilities.forEach((capability) => {
744
+ this.capabilities.contribute({
745
+ module: module.id,
746
+ ...capability
747
+ });
748
+ });
749
+ this._update(this._activeAtom, (active) => [
750
+ ...active,
751
+ module.id
752
+ ]);
753
+ this._capabilities.set(module.id, capabilities);
754
+ });
755
+ }
756
+ _deactivateModule(module) {
757
+ return Effect2.gen(this, function* () {
758
+ const id = module.id;
759
+ log2("deactivating", {
760
+ id
761
+ }, {
762
+ F: __dxlog_file2,
763
+ L: 654,
764
+ S: this,
765
+ C: (f, a) => f(...a)
766
+ });
767
+ this._moduleMemoMap.delete(id);
768
+ const capabilities = this._capabilities.get(id);
769
+ if (capabilities) {
770
+ for (const capability of capabilities) {
771
+ this.capabilities.remove(capability.interface, capability.implementation);
772
+ const program = capability.deactivate?.() ?? Effect2.succeed(void 0);
773
+ yield* program;
774
+ }
775
+ this._capabilities.delete(id);
776
+ }
777
+ const activeIndex = this._get(this._activeAtom).findIndex((event) => event === id);
778
+ if (activeIndex !== -1) {
779
+ this._update(this._activeAtom, (active) => active.filter((event) => event !== id));
780
+ }
781
+ log2("deactivated", {
782
+ id
783
+ }, {
784
+ F: __dxlog_file2,
785
+ L: 672,
786
+ S: this,
787
+ C: (f, a) => f(...a)
788
+ });
789
+ return true;
790
+ });
791
+ }
792
+ };
793
+ var make5 = (options) => new ManagerImpl(options);
794
+ var together = (togetherEffect) => (effect) => Effect2.gen(function* () {
795
+ const togetherFiber = yield* Effect2.fork(togetherEffect);
796
+ const result = yield* effect;
797
+ yield* Fiber.interrupt(togetherFiber);
798
+ return result;
799
+ });
800
+
801
+ export {
802
+ capability_manager_exports,
803
+ ManagerTypeId,
804
+ isManager,
805
+ make5 as make,
806
+ plugin_manager_exports
807
+ };
808
+ //# sourceMappingURL=chunk-XYQTBFPA.mjs.map