@logixjs/core 0.0.1 → 0.0.2

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 (300) hide show
  1. package/LICENSE +201 -0
  2. package/dist/{Bound-BN1DQ_lM.d.ts → Bound-CEa1ihvH.d.ts} +2 -2
  3. package/dist/{Bound-BPIfH9SS.d.cts → Bound-CNLNkC7c.d.cts} +2 -2
  4. package/dist/Bound.cjs +620 -163
  5. package/dist/Bound.cjs.map +1 -1
  6. package/dist/Bound.d.cts +3 -3
  7. package/dist/Bound.d.ts +3 -3
  8. package/dist/Bound.js +14 -14
  9. package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-BhMYr-1i.d.cts} +3 -3
  10. package/dist/{Debug-B5q5Bkzx.d.ts → Debug-ByM7m4Ft.d.ts} +3 -3
  11. package/dist/Debug.cjs +553 -32
  12. package/dist/Debug.cjs.map +1 -1
  13. package/dist/Debug.d.cts +10 -8
  14. package/dist/Debug.d.ts +10 -8
  15. package/dist/Debug.js +12 -10
  16. package/dist/EffectOp.cjs.map +1 -1
  17. package/dist/EffectOp.js +2 -3
  18. package/dist/EffectOp.js.map +1 -1
  19. package/dist/Env.cjs +664 -6
  20. package/dist/Env.cjs.map +1 -1
  21. package/dist/Env.js +5 -2
  22. package/dist/ExternalStore-BAz83PVq.d.cts +60 -0
  23. package/dist/ExternalStore-BYWPbYs8.d.ts +60 -0
  24. package/dist/ExternalStore.cjs +746 -0
  25. package/dist/ExternalStore.cjs.map +1 -0
  26. package/dist/ExternalStore.d.cts +4 -0
  27. package/dist/ExternalStore.d.ts +4 -0
  28. package/dist/ExternalStore.js +19 -0
  29. package/dist/ExternalStore.js.map +1 -0
  30. package/dist/{Flow-1fZT8MpX.d.cts → Flow-BlSoMmhV.d.cts} +2 -2
  31. package/dist/{Flow-BhpjE22E.d.ts → Flow-CQSGve5c.d.ts} +2 -2
  32. package/dist/Flow.cjs +2 -2
  33. package/dist/Flow.cjs.map +1 -1
  34. package/dist/Flow.d.cts +4 -4
  35. package/dist/Flow.d.ts +4 -4
  36. package/dist/Flow.js +7 -8
  37. package/dist/{Handle-D_cLW1Z3.d.ts → Handle-B7PSmsrY.d.ts} +1 -1
  38. package/dist/{Handle-D8D1zPb_.d.cts → Handle-ByovhL-c.d.cts} +1 -1
  39. package/dist/Handle.d.cts +3 -3
  40. package/dist/Handle.d.ts +3 -3
  41. package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-DGSpS4GM.d.ts} +2 -2
  42. package/dist/{Kernel-8kC-jOda.d.cts → Kernel-DZAk-Mrn.d.cts} +2 -2
  43. package/dist/Kernel.cjs +680 -22
  44. package/dist/Kernel.cjs.map +1 -1
  45. package/dist/Kernel.d.cts +10 -8
  46. package/dist/Kernel.d.ts +10 -8
  47. package/dist/Kernel.js +7 -4
  48. package/dist/{Link-Db7975nU.d.ts → Link-Cm4eR9n0.d.ts} +10 -3
  49. package/dist/{Link-fX8x1eCK.d.cts → Link-DF8i8iWR.d.cts} +10 -3
  50. package/dist/Link.cjs +1128 -86
  51. package/dist/Link.cjs.map +1 -1
  52. package/dist/Link.d.cts +3 -3
  53. package/dist/Link.d.ts +3 -3
  54. package/dist/Link.js +30 -25
  55. package/dist/{Logic-DRh4sDZj.d.cts → Logic-BcQA0AvE.d.cts} +1 -1
  56. package/dist/{Logic-BRjEMr-W.d.ts → Logic-OotSE1xw.d.ts} +1 -1
  57. package/dist/Logic.d.cts +3 -3
  58. package/dist/Logic.d.ts +3 -3
  59. package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-BNDJ8waF.d.ts} +1 -1
  60. package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-CvZ5WY1B.d.cts} +1 -1
  61. package/dist/MatchBuilder.d.cts +4 -4
  62. package/dist/MatchBuilder.d.ts +4 -4
  63. package/dist/Middleware-D8tUDLv_.d.cts +100 -0
  64. package/dist/Middleware-DS7CbTTN.d.ts +100 -0
  65. package/dist/Middleware.cjs +461 -13
  66. package/dist/Middleware.cjs.map +1 -1
  67. package/dist/Middleware.d.cts +2 -86
  68. package/dist/Middleware.d.ts +2 -86
  69. package/dist/Middleware.js +13 -11
  70. package/dist/{Module-DnzluX2J.d.ts → Module-CFj0I2yE.d.ts} +45 -18
  71. package/dist/{Module-B_0xRDMR.d.cts → Module-DpXPW9EQ.d.cts} +45 -18
  72. package/dist/Module.cjs +8583 -5741
  73. package/dist/Module.cjs.map +1 -1
  74. package/dist/Module.d.cts +5 -4
  75. package/dist/Module.d.ts +5 -4
  76. package/dist/Module.js +32 -27
  77. package/dist/ModuleTag-BcVF6z7B.d.ts +113 -0
  78. package/dist/ModuleTag-DuZXo_NS.d.cts +113 -0
  79. package/dist/ModuleTag.cjs +2609 -1232
  80. package/dist/ModuleTag.cjs.map +1 -1
  81. package/dist/ModuleTag.d.cts +4 -4
  82. package/dist/ModuleTag.d.ts +4 -4
  83. package/dist/ModuleTag.js +28 -25
  84. package/dist/{Observability-cY4kLn0S.d.ts → Observability-D-ZWeEVb.d.ts} +22 -15
  85. package/dist/{Observability-COqEvp2C.d.cts → Observability-V7sRMYTh.d.cts} +22 -15
  86. package/dist/Observability.cjs +1938 -640
  87. package/dist/Observability.cjs.map +1 -1
  88. package/dist/Observability.d.cts +4 -4
  89. package/dist/Observability.d.ts +4 -4
  90. package/dist/Observability.js +21 -19
  91. package/dist/{Process-mL8fHDSB.d.cts → Process-B55aJMFk.d.cts} +29 -4
  92. package/dist/{Process-CM9xbMdP.d.ts → Process-DvhFEwUS.d.ts} +29 -4
  93. package/dist/Process.cjs +1122 -85
  94. package/dist/Process.cjs.map +1 -1
  95. package/dist/Process.d.cts +4 -3
  96. package/dist/Process.d.ts +4 -3
  97. package/dist/Process.js +27 -22
  98. package/dist/{ReadQuery-BlMwhe-F.d.ts → ReadQuery-C4vZ8Prc.d.ts} +2 -2
  99. package/dist/{ReadQuery-SinbStGF.d.ts → ReadQuery-CafjlJQo.d.cts} +1 -1
  100. package/dist/{ReadQuery-SinbStGF.d.cts → ReadQuery-CafjlJQo.d.ts} +1 -1
  101. package/dist/{ReadQuery-CL5XlXts.d.cts → ReadQuery-mc0NgrFV.d.cts} +2 -2
  102. package/dist/ReadQuery.cjs +3 -3
  103. package/dist/ReadQuery.cjs.map +1 -1
  104. package/dist/ReadQuery.d.cts +2 -2
  105. package/dist/ReadQuery.d.ts +2 -2
  106. package/dist/ReadQuery.js +3 -3
  107. package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-C8xZ267q.d.ts} +88 -7
  108. package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DP7Vsv3f.d.cts} +88 -7
  109. package/dist/Reflection.cjs +2934 -1553
  110. package/dist/Reflection.cjs.map +1 -1
  111. package/dist/Reflection.d.cts +14 -11
  112. package/dist/Reflection.d.ts +14 -11
  113. package/dist/Reflection.js +26 -21
  114. package/dist/Resource.cjs +670 -12
  115. package/dist/Resource.cjs.map +1 -1
  116. package/dist/Resource.js +6 -3
  117. package/dist/Root.cjs +675 -17
  118. package/dist/Root.cjs.map +1 -1
  119. package/dist/Root.js +7 -3
  120. package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-BWc9YfUB.d.ts} +37 -7
  121. package/dist/{Runtime-B-aL-f29.d.cts → Runtime-PShIC4DW.d.cts} +37 -7
  122. package/dist/Runtime.cjs +1899 -809
  123. package/dist/Runtime.cjs.map +1 -1
  124. package/dist/Runtime.d.cts +14 -11
  125. package/dist/Runtime.d.ts +14 -11
  126. package/dist/Runtime.js +33 -28
  127. package/dist/ScopeRegistry.cjs +668 -10
  128. package/dist/ScopeRegistry.cjs.map +1 -1
  129. package/dist/ScopeRegistry.js +6 -3
  130. package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-CQsDlXJm.d.cts} +23 -6
  131. package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-YvJzVDKl.d.ts} +23 -6
  132. package/dist/StateTrait.cjs +1475 -370
  133. package/dist/StateTrait.cjs.map +1 -1
  134. package/dist/StateTrait.d.cts +7 -5
  135. package/dist/StateTrait.d.ts +7 -5
  136. package/dist/StateTrait.js +17 -14
  137. package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-CjIBICAA.d.ts} +2 -2
  138. package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-NmqGiXPC.d.cts} +2 -2
  139. package/dist/TraitLifecycle.cjs +489 -32
  140. package/dist/TraitLifecycle.cjs.map +1 -1
  141. package/dist/TraitLifecycle.d.cts +4 -4
  142. package/dist/TraitLifecycle.d.ts +4 -4
  143. package/dist/TraitLifecycle.js +7 -7
  144. package/dist/Workflow-BlFG_20_.d.cts +414 -0
  145. package/dist/Workflow-CW9S_aAP.d.ts +414 -0
  146. package/dist/Workflow.cjs +2977 -0
  147. package/dist/Workflow.cjs.map +1 -0
  148. package/dist/Workflow.d.cts +7 -0
  149. package/dist/Workflow.d.ts +7 -0
  150. package/dist/Workflow.js +55 -0
  151. package/dist/Workflow.js.map +1 -0
  152. package/dist/{chunk-G5ZBFPNU.js → chunk-2A4UKO2D.js} +2 -2
  153. package/dist/chunk-2DE6D42I.js +248 -0
  154. package/dist/chunk-2DE6D42I.js.map +1 -0
  155. package/dist/{chunk-ANLBCBDC.js → chunk-2DVLMSOE.js} +6 -6
  156. package/dist/{chunk-BE3HW4FY.js → chunk-34CF6OGE.js} +14 -16
  157. package/dist/chunk-34CF6OGE.js.map +1 -0
  158. package/dist/{chunk-ZFY7U2FR.js → chunk-3LPIXG56.js} +43 -3
  159. package/dist/chunk-3LPIXG56.js.map +1 -0
  160. package/dist/chunk-3VZYDNXZ.js +10 -0
  161. package/dist/chunk-3VZYDNXZ.js.map +1 -0
  162. package/dist/{chunk-3TMODYZV.js → chunk-3XO4HR6V.js} +2 -2
  163. package/dist/chunk-46FGVWRF.js +817 -0
  164. package/dist/chunk-46FGVWRF.js.map +1 -0
  165. package/dist/chunk-4LODUXFI.js +288 -0
  166. package/dist/chunk-4LODUXFI.js.map +1 -0
  167. package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
  168. package/dist/chunk-4MZ7BT3R.js.map +1 -0
  169. package/dist/{chunk-TKZ7MEIA.js → chunk-53GVPGSM.js} +2 -2
  170. package/dist/{chunk-KP7MUZNX.js → chunk-5W2V2NVJ.js} +2 -2
  171. package/dist/chunk-5W2V2NVJ.js.map +1 -0
  172. package/dist/chunk-6DACKW3D.js +613 -0
  173. package/dist/chunk-6DACKW3D.js.map +1 -0
  174. package/dist/chunk-AQ7L2QZ5.js +1395 -0
  175. package/dist/chunk-AQ7L2QZ5.js.map +1 -0
  176. package/dist/{chunk-NZJKFF45.js → chunk-C2UZZQ76.js} +2 -2
  177. package/dist/chunk-CCKP5Z6F.js +701 -0
  178. package/dist/chunk-CCKP5Z6F.js.map +1 -0
  179. package/dist/chunk-CUKM2XUW.js +27 -0
  180. package/dist/{chunk-QCHIQWAJ.js.map → chunk-CUKM2XUW.js.map} +1 -1
  181. package/dist/{chunk-M2RGJPXX.js → chunk-DBD6Q6JH.js} +3 -3
  182. package/dist/{chunk-ZGDVUPTM.js → chunk-EB4RGQO3.js} +2 -2
  183. package/dist/{chunk-PAYXCY6A.js → chunk-G7ESIQTI.js} +12 -14
  184. package/dist/chunk-G7ESIQTI.js.map +1 -0
  185. package/dist/chunk-GPBAZQ23.js +348 -0
  186. package/dist/chunk-GPBAZQ23.js.map +1 -0
  187. package/dist/{chunk-OFADUJWJ.js → chunk-I4LCE5OY.js} +3 -5
  188. package/dist/{chunk-OFADUJWJ.js.map → chunk-I4LCE5OY.js.map} +1 -1
  189. package/dist/{chunk-DFNM3WX2.js → chunk-IMCC6TBN.js} +158 -39
  190. package/dist/chunk-IMCC6TBN.js.map +1 -0
  191. package/dist/{chunk-76WT3HOR.js → chunk-IROZNQAF.js} +22 -21
  192. package/dist/chunk-IROZNQAF.js.map +1 -0
  193. package/dist/{chunk-TAAPQVZN.js → chunk-ISKNULNH.js} +2 -2
  194. package/dist/chunk-J3CWXIPV.js +242 -0
  195. package/dist/chunk-J3CWXIPV.js.map +1 -0
  196. package/dist/{chunk-PYOE4VSI.js → chunk-JBKYRTCS.js} +224 -161
  197. package/dist/chunk-JBKYRTCS.js.map +1 -0
  198. package/dist/{chunk-66ALHVEX.js → chunk-KKIAYH4X.js} +3 -3
  199. package/dist/{chunk-3RMKLXHX.js → chunk-KLDVG3SY.js} +2 -2
  200. package/dist/{chunk-BABLDP24.js → chunk-KSZQYSEH.js} +3 -3
  201. package/dist/chunk-KSZQYSEH.js.map +1 -0
  202. package/dist/{chunk-CW6T36TN.js → chunk-M3M7JFAH.js} +4 -4
  203. package/dist/chunk-M3M7JFAH.js.map +1 -0
  204. package/dist/{chunk-THATMZXD.js → chunk-MLB253V2.js} +2 -2
  205. package/dist/{chunk-THATMZXD.js.map → chunk-MLB253V2.js.map} +1 -1
  206. package/dist/{chunk-JGIWG6SR.js → chunk-MS77U77X.js} +664 -550
  207. package/dist/chunk-MS77U77X.js.map +1 -0
  208. package/dist/chunk-MW4FA3MW.js +23 -0
  209. package/dist/chunk-MW4FA3MW.js.map +1 -0
  210. package/dist/chunk-MYKNINNN.js +228 -0
  211. package/dist/chunk-MYKNINNN.js.map +1 -0
  212. package/dist/{chunk-4CQAV7YB.js → chunk-O6TTQXTY.js} +2 -2
  213. package/dist/{chunk-NBD3KUOZ.js → chunk-OJDJ4VDQ.js} +35 -24
  214. package/dist/chunk-OJDJ4VDQ.js.map +1 -0
  215. package/dist/{chunk-NQZ2OSGR.js → chunk-PVZEMNJY.js} +9 -9
  216. package/dist/chunk-PVZEMNJY.js.map +1 -0
  217. package/dist/chunk-RN26DV2M.js +271 -0
  218. package/dist/chunk-RN26DV2M.js.map +1 -0
  219. package/dist/{chunk-JCXGZRMU.js → chunk-RQQW3IQC.js} +3 -3
  220. package/dist/chunk-RQQW3IQC.js.map +1 -0
  221. package/dist/{chunk-24VULZ7A.js → chunk-TKOGZDD6.js} +3 -3
  222. package/dist/{chunk-EGK3KN7B.js → chunk-TQYLVXGY.js} +70 -39
  223. package/dist/chunk-TQYLVXGY.js.map +1 -0
  224. package/dist/{chunk-QMM6O4CD.js → chunk-UACD2CL2.js} +15 -3
  225. package/dist/{chunk-QMM6O4CD.js.map → chunk-UACD2CL2.js.map} +1 -1
  226. package/dist/{chunk-M3WTHJHJ.js → chunk-VH575UTV.js} +30 -34
  227. package/dist/chunk-VH575UTV.js.map +1 -0
  228. package/dist/{chunk-AUIR5O6W.js → chunk-WWBMC24F.js} +9 -15
  229. package/dist/chunk-WWBMC24F.js.map +1 -0
  230. package/dist/{chunk-JWOYLO27.js → chunk-WYJUJV4L.js} +80 -7
  231. package/dist/chunk-WYJUJV4L.js.map +1 -0
  232. package/dist/{chunk-EY4NZKDR.js → chunk-XFMMPYNU.js} +2 -2
  233. package/dist/chunk-Y4VRBIS6.js +35 -0
  234. package/dist/chunk-Y4VRBIS6.js.map +1 -0
  235. package/dist/{chunk-DMBALCE2.js → chunk-ZC7MSQ5U.js} +77 -4
  236. package/dist/chunk-ZC7MSQ5U.js.map +1 -0
  237. package/dist/{chunk-OGWBVHB3.js → chunk-ZCK6SCOE.js} +67 -8
  238. package/dist/chunk-ZCK6SCOE.js.map +1 -0
  239. package/dist/{chunk-IHVBV5C2.js → chunk-ZTFTABXV.js} +2 -1
  240. package/dist/chunk-ZTFTABXV.js.map +1 -0
  241. package/dist/index.cjs +9532 -5017
  242. package/dist/index.cjs.map +1 -1
  243. package/dist/index.d.cts +163 -27
  244. package/dist/index.d.ts +163 -27
  245. package/dist/index.js +119 -56
  246. package/dist/index.js.map +1 -1
  247. package/dist/{ir-BMP7yxJJ.d.cts → ir-C-Zm_GlZ.d.cts} +1 -1
  248. package/dist/{ir-DUOz6H-5.d.ts → ir-DGyGiwVe.d.ts} +1 -1
  249. package/dist/{module-k7m3txak.d.ts → module-DqQ1U-Me.d.ts} +129 -100
  250. package/dist/{module-B8CBqIZ_.d.cts → module-doenaCsZ.d.cts} +129 -100
  251. package/package.json +12 -1
  252. package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
  253. package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
  254. package/dist/chunk-3QMIVH35.js +0 -43
  255. package/dist/chunk-3QMIVH35.js.map +0 -1
  256. package/dist/chunk-76WT3HOR.js.map +0 -1
  257. package/dist/chunk-AUIR5O6W.js.map +0 -1
  258. package/dist/chunk-BABLDP24.js.map +0 -1
  259. package/dist/chunk-BE3HW4FY.js.map +0 -1
  260. package/dist/chunk-CW6T36TN.js.map +0 -1
  261. package/dist/chunk-DFNM3WX2.js.map +0 -1
  262. package/dist/chunk-DMBALCE2.js.map +0 -1
  263. package/dist/chunk-EGK3KN7B.js.map +0 -1
  264. package/dist/chunk-GMPEOUP2.js.map +0 -1
  265. package/dist/chunk-IHVBV5C2.js.map +0 -1
  266. package/dist/chunk-JCXGZRMU.js.map +0 -1
  267. package/dist/chunk-JGIWG6SR.js.map +0 -1
  268. package/dist/chunk-JWOYLO27.js.map +0 -1
  269. package/dist/chunk-KIXAU3GM.js +0 -137
  270. package/dist/chunk-KIXAU3GM.js.map +0 -1
  271. package/dist/chunk-KP7MUZNX.js.map +0 -1
  272. package/dist/chunk-M3WTHJHJ.js.map +0 -1
  273. package/dist/chunk-M7IYCTJV.js +0 -79
  274. package/dist/chunk-M7IYCTJV.js.map +0 -1
  275. package/dist/chunk-NBD3KUOZ.js.map +0 -1
  276. package/dist/chunk-NQZ2OSGR.js.map +0 -1
  277. package/dist/chunk-OGWBVHB3.js.map +0 -1
  278. package/dist/chunk-PAYXCY6A.js.map +0 -1
  279. package/dist/chunk-PYOE4VSI.js.map +0 -1
  280. package/dist/chunk-QCHIQWAJ.js +0 -21
  281. package/dist/chunk-VZB726PE.js +0 -93
  282. package/dist/chunk-VZB726PE.js.map +0 -1
  283. package/dist/chunk-W3TEWHLO.js +0 -568
  284. package/dist/chunk-W3TEWHLO.js.map +0 -1
  285. package/dist/chunk-ZFLHVFUC.js +0 -192
  286. package/dist/chunk-ZFLHVFUC.js.map +0 -1
  287. package/dist/chunk-ZFY7U2FR.js.map +0 -1
  288. /package/dist/{chunk-G5ZBFPNU.js.map → chunk-2A4UKO2D.js.map} +0 -0
  289. /package/dist/{chunk-ANLBCBDC.js.map → chunk-2DVLMSOE.js.map} +0 -0
  290. /package/dist/{chunk-3TMODYZV.js.map → chunk-3XO4HR6V.js.map} +0 -0
  291. /package/dist/{chunk-TKZ7MEIA.js.map → chunk-53GVPGSM.js.map} +0 -0
  292. /package/dist/{chunk-NZJKFF45.js.map → chunk-C2UZZQ76.js.map} +0 -0
  293. /package/dist/{chunk-M2RGJPXX.js.map → chunk-DBD6Q6JH.js.map} +0 -0
  294. /package/dist/{chunk-ZGDVUPTM.js.map → chunk-EB4RGQO3.js.map} +0 -0
  295. /package/dist/{chunk-TAAPQVZN.js.map → chunk-ISKNULNH.js.map} +0 -0
  296. /package/dist/{chunk-66ALHVEX.js.map → chunk-KKIAYH4X.js.map} +0 -0
  297. /package/dist/{chunk-3RMKLXHX.js.map → chunk-KLDVG3SY.js.map} +0 -0
  298. /package/dist/{chunk-4CQAV7YB.js.map → chunk-O6TTQXTY.js.map} +0 -0
  299. /package/dist/{chunk-24VULZ7A.js.map → chunk-TKOGZDD6.js.map} +0 -0
  300. /package/dist/{chunk-EY4NZKDR.js.map → chunk-XFMMPYNU.js.map} +0 -0
@@ -0,0 +1,271 @@
1
+ import {
2
+ Link
3
+ } from "./chunk-RQQW3IQC.js";
4
+ import {
5
+ attachMeta,
6
+ getDefinition,
7
+ getMeta
8
+ } from "./chunk-G7ESIQTI.js";
9
+ import {
10
+ currentConvergeStaticIrCollectors
11
+ } from "./chunk-M3BFQ7HK.js";
12
+ import {
13
+ DeclarativeLinkRuntimeTag
14
+ } from "./chunk-AQ7L2QZ5.js";
15
+ import {
16
+ compile
17
+ } from "./chunk-53GVPGSM.js";
18
+ import {
19
+ currentDiagnosticsLevel,
20
+ record
21
+ } from "./chunk-ZC7MSQ5U.js";
22
+ import {
23
+ fnv1a32,
24
+ stableStringify
25
+ } from "./chunk-4MZ7BT3R.js";
26
+ import {
27
+ __export
28
+ } from "./chunk-PZ5AY32C.js";
29
+
30
+ // src/Process.ts
31
+ var Process_exports = {};
32
+ __export(Process_exports, {
33
+ attachMeta: () => attachMeta2,
34
+ getDefinition: () => getDefinition2,
35
+ getMeta: () => getMeta2,
36
+ link: () => link,
37
+ linkDeclarative: () => linkDeclarative,
38
+ make: () => make
39
+ });
40
+ import { Effect, FiberRef } from "effect";
41
+
42
+ // src/internal/runtime/core/DeclarativeLinkIR.ts
43
+ var getDeclarativeLinkIrDigest = (ir) => `dlink_ir_v1:${fnv1a32(stableStringify(ir))}`;
44
+ var exportDeclarativeLinkIr = (args) => ({
45
+ staticIrDigest: getDeclarativeLinkIrDigest(args.ir),
46
+ moduleId: `link:${args.linkId}`,
47
+ instanceId: "runtime",
48
+ kind: "declarativeLinkIr",
49
+ ir: args.ir
50
+ });
51
+
52
+ // src/Process.ts
53
+ var DEFAULT_TRIGGERS = [{ kind: "platformEvent", platformEvent: "runtime:boot" }];
54
+ var normalizeDefinition = (input) => {
55
+ const base = typeof input === "string" ? { processId: input } : input;
56
+ const processId = base.processId;
57
+ if (typeof processId !== "string" || processId.length === 0) {
58
+ throw new Error("[Process.make] processId must be a non-empty string");
59
+ }
60
+ const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS;
61
+ const concurrency = base.concurrency ?? { mode: "latest" };
62
+ const errorPolicy = base.errorPolicy ?? { mode: "failStop" };
63
+ const diagnosticsLevel = base.diagnosticsLevel ?? "off";
64
+ return {
65
+ processId,
66
+ name: base.name,
67
+ description: base.description,
68
+ requires: base.requires,
69
+ triggers,
70
+ concurrency,
71
+ errorPolicy,
72
+ diagnosticsLevel
73
+ };
74
+ };
75
+ var make = (definition, effect) => attachMeta(effect, {
76
+ definition: normalizeDefinition(definition),
77
+ kind: "process"
78
+ });
79
+ var getDefinition2 = (effect) => getDefinition(effect);
80
+ var getMeta2 = (effect) => getMeta(effect);
81
+ var attachMeta2 = (effect, meta) => attachMeta(effect, meta);
82
+ var isModuleLike = (value) => Boolean(value) && typeof value === "object" && (value._kind === "ModuleDef" || value._kind === "Module") && "tag" in value;
83
+ var unwrapModuleTag = (module) => {
84
+ if (isModuleLike(module)) {
85
+ return module.tag;
86
+ }
87
+ return module;
88
+ };
89
+ function link(config, logic) {
90
+ const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
91
+ const modulesRecord = /* @__PURE__ */ Object.create(null);
92
+ const requires = /* @__PURE__ */ new Set();
93
+ for (const module of config.modules) {
94
+ const tag = unwrapModuleTag(module);
95
+ requires.add(String(tag.id));
96
+ modulesRecord[tag.id] = tag;
97
+ }
98
+ const effect = Link(
99
+ modulesRecord,
100
+ logic
101
+ );
102
+ const wrapped = Effect.gen(function* () {
103
+ const level = yield* FiberRef.get(currentDiagnosticsLevel);
104
+ if (level !== "off") {
105
+ yield* record({
106
+ type: "diagnostic",
107
+ moduleId: `link:${linkId}`,
108
+ code: "process_link::blackbox_best_effort",
109
+ severity: "info",
110
+ message: "[Process.link] Blackbox link is best-effort and is NOT stabilized within the same tick. Strong consistency applies only to declarative IR.",
111
+ hint: "If you need same-tick strong consistency, migrate to Process.linkDeclarative(...) (073).",
112
+ kind: "blackbox_link_boundary"
113
+ });
114
+ }
115
+ return yield* effect;
116
+ });
117
+ const definition = {
118
+ processId: linkId,
119
+ requires: Array.from(requires),
120
+ triggers: [...DEFAULT_TRIGGERS, { kind: "platformEvent", platformEvent: `link:${linkId}` }],
121
+ concurrency: { mode: "latest" },
122
+ errorPolicy: { mode: "failStop" },
123
+ diagnosticsLevel: "off"
124
+ };
125
+ return attachMeta(wrapped, {
126
+ definition,
127
+ kind: "link"
128
+ });
129
+ }
130
+ function linkDeclarative(config, build) {
131
+ const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
132
+ const modulesRecord = /* @__PURE__ */ Object.create(null);
133
+ const requires = /* @__PURE__ */ new Set();
134
+ for (const module of config.modules) {
135
+ const tag = unwrapModuleTag(module);
136
+ requires.add(String(tag.id));
137
+ modulesRecord[tag.id] = tag;
138
+ }
139
+ const handles = /* @__PURE__ */ Object.create(null);
140
+ for (const id of Object.keys(modulesRecord)) {
141
+ const tag = modulesRecord[id];
142
+ handles[id] = {
143
+ read: (selector) => {
144
+ const compiled = compile(selector);
145
+ const staticIr = compiled.staticIr;
146
+ const ok = staticIr.lane === "static" && staticIr.readsDigest != null && staticIr.fallbackReason == null;
147
+ if (!ok) {
148
+ throw new Error(
149
+ `[Process.linkDeclarative] ReadQuery must be static with readsDigest (moduleId=${id}, selectorId=${staticIr.selectorId}, lane=${staticIr.lane}, fallbackReason=${staticIr.fallbackReason}). Fix: use ReadQuery.make(...) or annotate selector.fieldPaths.`
150
+ );
151
+ }
152
+ return { _tag: "readNode", moduleId: id, tag, readQuery: compiled };
153
+ },
154
+ dispatch: (actionTag) => {
155
+ if (typeof actionTag !== "string" || actionTag.length === 0) {
156
+ throw new Error("[Process.linkDeclarative] actionTag must be a non-empty string");
157
+ }
158
+ return { _tag: "dispatchNode", moduleId: id, tag, actionTag };
159
+ }
160
+ };
161
+ }
162
+ const edges = build(handles);
163
+ if (!Array.isArray(edges)) {
164
+ throw new Error("[Process.linkDeclarative] build(...) must return an array of edges");
165
+ }
166
+ const normalized = edges.filter((e) => Boolean(e && e.from && e.to)).map((e) => {
167
+ if (e.from._tag !== "readNode" || e.to._tag !== "dispatchNode") {
168
+ throw new Error("[Process.linkDeclarative] Invalid edge spec returned from build(...)");
169
+ }
170
+ return e;
171
+ }).slice().sort((a, b) => {
172
+ const ak = `${a.from.moduleId}:${a.from.readQuery.staticIr.selectorId}->${a.to.moduleId}:${a.to.actionTag}`;
173
+ const bk = `${b.from.moduleId}:${b.from.readQuery.staticIr.selectorId}->${b.to.moduleId}:${b.to.actionTag}`;
174
+ return ak < bk ? -1 : ak > bk ? 1 : 0;
175
+ });
176
+ const program = Effect.gen(function* () {
177
+ const runtime = yield* DeclarativeLinkRuntimeTag;
178
+ const collectors = yield* FiberRef.get(currentConvergeStaticIrCollectors);
179
+ const runtimeByTag = /* @__PURE__ */ new Map();
180
+ const resolveRuntime = (tag) => Effect.suspend(() => {
181
+ const cached = runtimeByTag.get(tag);
182
+ if (cached) return Effect.succeed(cached);
183
+ return tag.pipe(
184
+ Effect.tap(
185
+ (rt) => Effect.sync(() => {
186
+ runtimeByTag.set(tag, rt);
187
+ })
188
+ )
189
+ );
190
+ });
191
+ const nodes = [];
192
+ const irEdges = [];
193
+ const readNodes = [];
194
+ const dispatchNodes = [];
195
+ for (let i = 0; i < normalized.length; i += 1) {
196
+ const edge = normalized[i];
197
+ const fromRuntime = yield* resolveRuntime(edge.from.tag);
198
+ const toRuntime = yield* resolveRuntime(edge.to.tag);
199
+ const fromKey = `${fromRuntime.moduleId}::${fromRuntime.instanceId}`;
200
+ const readNodeId = `r${i}`;
201
+ const dispatchNodeId = `d${i}`;
202
+ nodes.push({
203
+ id: readNodeId,
204
+ kind: "readQuery",
205
+ moduleId: fromRuntime.moduleId,
206
+ instanceKey: fromRuntime.instanceId,
207
+ readQuery: edge.from.readQuery.staticIr
208
+ });
209
+ nodes.push({
210
+ id: dispatchNodeId,
211
+ kind: "dispatch",
212
+ moduleId: toRuntime.moduleId,
213
+ instanceKey: toRuntime.instanceId,
214
+ actionTag: edge.to.actionTag
215
+ });
216
+ irEdges.push({ from: readNodeId, to: dispatchNodeId });
217
+ readNodes.push({ nodeId: readNodeId, moduleInstanceKey: fromKey, readQuery: edge.from.readQuery });
218
+ dispatchNodes.push({
219
+ nodeId: dispatchNodeId,
220
+ dispatch: (payload) => toRuntime.dispatch({ _tag: edge.to.actionTag, payload }).pipe(Effect.asVoid)
221
+ });
222
+ }
223
+ const ir = {
224
+ version: 1,
225
+ nodes,
226
+ edges: irEdges
227
+ };
228
+ const registration = {
229
+ linkId,
230
+ ir,
231
+ readNodes,
232
+ dispatchNodes
233
+ };
234
+ const unregister = runtime.registerDeclarativeLink(registration);
235
+ if (collectors.length > 0) {
236
+ const exported = exportDeclarativeLinkIr({ linkId, ir });
237
+ for (const collector of collectors) {
238
+ collector.register(exported);
239
+ }
240
+ }
241
+ yield* Effect.addFinalizer(
242
+ () => Effect.sync(() => {
243
+ unregister();
244
+ })
245
+ );
246
+ yield* Effect.never;
247
+ });
248
+ const definition = {
249
+ processId: `dlink:${linkId}`,
250
+ requires: Array.from(requires),
251
+ triggers: DEFAULT_TRIGGERS,
252
+ concurrency: { mode: "latest" },
253
+ errorPolicy: { mode: "failStop" },
254
+ diagnosticsLevel: "off"
255
+ };
256
+ return attachMeta(program, {
257
+ definition,
258
+ kind: "declarativeLink"
259
+ });
260
+ }
261
+
262
+ export {
263
+ make,
264
+ getDefinition2 as getDefinition,
265
+ getMeta2 as getMeta,
266
+ attachMeta2 as attachMeta,
267
+ link,
268
+ linkDeclarative,
269
+ Process_exports
270
+ };
271
+ //# sourceMappingURL=chunk-RN26DV2M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Process.ts","../src/internal/runtime/core/DeclarativeLinkIR.ts"],"sourcesContent":["import { Effect, FiberRef } from 'effect'\nimport * as ModuleFactory from './internal/runtime/ModuleFactory.js'\nimport * as Debug from './internal/runtime/core/DebugSink.js'\nimport { currentConvergeStaticIrCollectors } from './internal/runtime/core/ConvergeStaticIrCollector.js'\nimport { exportDeclarativeLinkIr, type DeclarativeLinkIR } from './internal/runtime/core/DeclarativeLinkIR.js'\nimport { DeclarativeLinkRuntimeTag } from './internal/runtime/core/env.js'\nimport type * as Protocol from './internal/runtime/core/process/protocol.js'\nimport * as Meta from './internal/runtime/core/process/meta.js'\nimport type { AnyModuleShape, ModuleHandle, ModuleLike, ModuleTag } from './internal/module.js'\nimport * as ReadQuery from './ReadQuery.js'\n\nexport type DiagnosticsLevel = Protocol.DiagnosticsLevel\nexport type ProcessScope = Protocol.ProcessScope\nexport type ProcessIdentity = Protocol.ProcessIdentity\nexport type ProcessInstanceIdentity = Protocol.ProcessInstanceIdentity\nexport type ProcessTriggerSpec = Protocol.ProcessTriggerSpec\nexport type ProcessTrigger = Protocol.ProcessTrigger\nexport type ProcessConcurrencyPolicy = Protocol.ProcessConcurrencyPolicy\nexport type ProcessErrorPolicy = Protocol.ProcessErrorPolicy\nexport type ProcessDefinition = Protocol.ProcessDefinition\nexport type ProcessInstallation = Protocol.ProcessInstallation\nexport type SerializableErrorSummary = Protocol.SerializableErrorSummary\nexport type ProcessInstanceStatus = Protocol.ProcessInstanceStatus\nexport type ProcessEvent = Protocol.ProcessEvent\nexport type ProcessControlRequest = Protocol.ProcessControlRequest\nexport type ProcessPlatformEvent = Protocol.ProcessPlatformEvent\n\nexport type ProcessEffect<E = never, R = never> = Meta.ProcessEffect<E, R>\n\nexport type ProcessMakeDefinition =\n | string\n | {\n readonly processId: string\n readonly name?: string\n readonly description?: string\n readonly requires?: ReadonlyArray<string>\n readonly triggers?: ReadonlyArray<ProcessTriggerSpec>\n readonly concurrency?: ProcessConcurrencyPolicy\n readonly errorPolicy?: ProcessErrorPolicy\n readonly diagnosticsLevel?: DiagnosticsLevel\n }\n\nconst DEFAULT_TRIGGERS: ReadonlyArray<ProcessTriggerSpec> = [{ kind: 'platformEvent', platformEvent: 'runtime:boot' }]\n\nconst normalizeDefinition = (input: ProcessMakeDefinition): ProcessDefinition => {\n const base = typeof input === 'string' ? ({ processId: input } satisfies { readonly processId: string }) : input\n\n const processId = base.processId\n if (typeof processId !== 'string' || processId.length === 0) {\n throw new Error('[Process.make] processId must be a non-empty string')\n }\n\n const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS\n\n const concurrency = base.concurrency ?? ({ mode: 'latest' } satisfies ProcessConcurrencyPolicy)\n const errorPolicy = base.errorPolicy ?? ({ mode: 'failStop' } satisfies ProcessErrorPolicy)\n const diagnosticsLevel = base.diagnosticsLevel ?? 'off'\n\n return {\n processId,\n name: base.name,\n description: base.description,\n requires: base.requires,\n triggers,\n concurrency,\n errorPolicy,\n diagnosticsLevel,\n }\n}\n\nexport const make = <E, R>(definition: ProcessMakeDefinition, effect: Effect.Effect<void, E, R>): ProcessEffect<E, R> =>\n Meta.attachMeta(effect, {\n definition: normalizeDefinition(definition),\n kind: 'process',\n })\n\nexport const getDefinition = (effect: Effect.Effect<void, any, any>): ProcessDefinition | undefined =>\n Meta.getDefinition(effect)\n\nexport const getMeta = (effect: Effect.Effect<void, any, any>): Meta.ProcessMeta | undefined => Meta.getMeta(effect)\n\nexport const attachMeta = <E, R>(effect: Effect.Effect<void, E, R>, meta: Meta.ProcessMeta): ProcessEffect<E, R> =>\n Meta.attachMeta(effect, meta)\n\ntype LinkModuleToken<Id extends string, Sh extends AnyModuleShape> = ModuleTag<Id, Sh> | ModuleLike<Id, Sh, object>\n\ntype LinkModuleIdOf<M> = M extends { readonly id: infer Id } ? Id : never\ntype LinkModuleShapeOf<M> =\n M extends ModuleLike<string, infer Sh, object> ? Sh : M extends ModuleTag<string, infer Sh> ? Sh : never\ntype LinkModuleTagOf<M> =\n M extends ModuleLike<string, infer Sh, object>\n ? ModuleTag<string, Sh>\n : M extends ModuleTag<string, AnyModuleShape>\n ? M\n : never\n\nconst isModuleLike = (value: unknown): value is ModuleLike<string, AnyModuleShape, object> =>\n Boolean(value) &&\n typeof value === 'object' &&\n ((value as { readonly _kind?: unknown })._kind === 'ModuleDef' ||\n (value as { readonly _kind?: unknown })._kind === 'Module') &&\n 'tag' in (value as object)\n\nconst unwrapModuleTag = <Id extends string, Sh extends AnyModuleShape>(\n module: LinkModuleToken<Id, Sh>,\n): ModuleTag<Id, Sh> => {\n if (isModuleLike(module)) {\n return module.tag\n }\n return module as ModuleTag<Id, Sh>\n}\n\nexport interface LinkConfig<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> {\n readonly id?: string\n readonly modules: Ms\n}\n\nexport type LinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: ModuleHandle<LinkModuleShapeOf<M>>\n}\n\ntype ModulesRecord<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: LinkModuleTagOf<M>\n}\n\nexport function link<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[], E = never, R = never>(\n config: LinkConfig<Ms>,\n logic: ($: LinkHandles<Ms>) => Effect.Effect<void, E, R>,\n): ProcessEffect<E, R> {\n const linkId =\n config.id ??\n [...config.modules]\n .map((m) => m.id)\n .sort()\n .join('~')\n\n const modulesRecord = Object.create(null) as ModulesRecord<Ms>\n const requires = new Set<string>()\n\n for (const module of config.modules) {\n const tag = unwrapModuleTag(module)\n requires.add(String(tag.id))\n ;(modulesRecord as Record<string, ModuleTag<string, AnyModuleShape>>)[tag.id] = tag as unknown as ModuleTag<\n string,\n AnyModuleShape\n >\n }\n\n const effect = ModuleFactory.Link(\n modulesRecord as unknown as Record<string, ModuleTag<string, AnyModuleShape>>,\n logic as unknown as ($: Record<string, ModuleHandle<AnyModuleShape>>) => Effect.Effect<void, E, R>,\n )\n\n const wrapped = Effect.gen(function* () {\n const level = yield* FiberRef.get(Debug.currentDiagnosticsLevel)\n if (level !== 'off') {\n yield* Debug.record({\n type: 'diagnostic',\n moduleId: `link:${linkId}`,\n code: 'process_link::blackbox_best_effort',\n severity: 'info',\n message:\n '[Process.link] Blackbox link is best-effort and is NOT stabilized within the same tick. Strong consistency applies only to declarative IR.',\n hint: 'If you need same-tick strong consistency, migrate to Process.linkDeclarative(...) (073).',\n kind: 'blackbox_link_boundary',\n })\n }\n return yield* effect\n }) as unknown as Effect.Effect<void, E, R>\n\n const definition: ProcessDefinition = {\n processId: linkId,\n requires: Array.from(requires),\n triggers: [...DEFAULT_TRIGGERS, { kind: 'platformEvent', platformEvent: `link:${linkId}` }],\n concurrency: { mode: 'latest' },\n errorPolicy: { mode: 'failStop' },\n diagnosticsLevel: 'off',\n }\n\n return Meta.attachMeta(wrapped, {\n definition,\n kind: 'link',\n }) as ProcessEffect<E, R>\n}\n\ntype DeclarativeReadNode = {\n readonly _tag: 'readNode'\n readonly moduleId: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly readQuery: ReadQuery.ReadQueryCompiled<any, any>\n}\n\ntype DeclarativeDispatchNode = {\n readonly _tag: 'dispatchNode'\n readonly moduleId: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly actionTag: string\n}\n\ntype DeclarativeLinkEdgeSpec = {\n readonly from: DeclarativeReadNode\n readonly to: DeclarativeDispatchNode\n}\n\ntype DeclarativeLinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: {\n readonly read: <S, V>(selector: ReadQuery.ReadQueryInput<S, V>) => DeclarativeReadNode\n readonly dispatch: (actionTag: string) => DeclarativeDispatchNode\n }\n}\n\nexport function linkDeclarative<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]>(\n config: LinkConfig<Ms>,\n build: ($: DeclarativeLinkHandles<Ms>) => ReadonlyArray<DeclarativeLinkEdgeSpec>,\n): ProcessEffect<never, never> {\n const linkId =\n config.id ??\n [...config.modules]\n .map((m) => m.id)\n .sort()\n .join('~')\n\n const modulesRecord = Object.create(null) as ModulesRecord<Ms>\n const requires = new Set<string>()\n\n for (const module of config.modules) {\n const tag = unwrapModuleTag(module)\n requires.add(String(tag.id))\n ;(modulesRecord as Record<string, ModuleTag<string, AnyModuleShape>>)[tag.id] = tag as unknown as ModuleTag<\n string,\n AnyModuleShape\n >\n }\n\n const handles = Object.create(null) as DeclarativeLinkHandles<Ms>\n for (const id of Object.keys(modulesRecord) as Array<keyof ModulesRecord<Ms> & string>) {\n const tag = (modulesRecord as any)[id] as ModuleTag<string, AnyModuleShape>\n ;(handles as any)[id] = {\n read: (selector: ReadQuery.ReadQueryInput<any, any>) => {\n const compiled = ReadQuery.compile(selector)\n const staticIr = compiled.staticIr\n const ok = staticIr.lane === 'static' && staticIr.readsDigest != null && staticIr.fallbackReason == null\n if (!ok) {\n throw new Error(\n `[Process.linkDeclarative] ReadQuery must be static with readsDigest (moduleId=${id}, selectorId=${staticIr.selectorId}, lane=${staticIr.lane}, fallbackReason=${staticIr.fallbackReason}). ` +\n 'Fix: use ReadQuery.make(...) or annotate selector.fieldPaths.',\n )\n }\n return { _tag: 'readNode', moduleId: id, tag, readQuery: compiled } as DeclarativeReadNode\n },\n dispatch: (actionTag: string) => {\n if (typeof actionTag !== 'string' || actionTag.length === 0) {\n throw new Error('[Process.linkDeclarative] actionTag must be a non-empty string')\n }\n return { _tag: 'dispatchNode', moduleId: id, tag, actionTag } as DeclarativeDispatchNode\n },\n }\n }\n\n const edges = build(handles)\n if (!Array.isArray(edges)) {\n throw new Error('[Process.linkDeclarative] build(...) must return an array of edges')\n }\n\n const normalized = edges\n .filter((e): e is DeclarativeLinkEdgeSpec => Boolean(e && e.from && e.to))\n .map((e) => {\n if (e.from._tag !== 'readNode' || e.to._tag !== 'dispatchNode') {\n throw new Error('[Process.linkDeclarative] Invalid edge spec returned from build(...)')\n }\n return e\n })\n .slice()\n .sort((a, b) => {\n const ak = `${a.from.moduleId}:${a.from.readQuery.staticIr.selectorId}->${a.to.moduleId}:${a.to.actionTag}`\n const bk = `${b.from.moduleId}:${b.from.readQuery.staticIr.selectorId}->${b.to.moduleId}:${b.to.actionTag}`\n return ak < bk ? -1 : ak > bk ? 1 : 0\n })\n\n const program: Effect.Effect<void, never, any> = Effect.gen(function* () {\n const runtime = yield* DeclarativeLinkRuntimeTag\n const collectors = yield* FiberRef.get(currentConvergeStaticIrCollectors)\n\n const runtimeByTag = new Map<ModuleTag<string, AnyModuleShape>, any>()\n const resolveRuntime = (tag: ModuleTag<string, AnyModuleShape>): Effect.Effect<any> =>\n Effect.suspend(() => {\n const cached = runtimeByTag.get(tag)\n if (cached) return Effect.succeed(cached)\n return (tag as any).pipe(\n Effect.tap((rt: any) =>\n Effect.sync(() => {\n runtimeByTag.set(tag, rt)\n }),\n ),\n )\n })\n\n const nodes: Array<any> = []\n const irEdges: Array<any> = []\n const readNodes: Array<any> = []\n const dispatchNodes: Array<any> = []\n\n for (let i = 0; i < normalized.length; i += 1) {\n const edge = normalized[i]\n const fromRuntime = yield* resolveRuntime(edge.from.tag)\n const toRuntime = yield* resolveRuntime(edge.to.tag)\n\n const fromKey = `${fromRuntime.moduleId}::${fromRuntime.instanceId}`\n const readNodeId = `r${i}`\n const dispatchNodeId = `d${i}`\n\n nodes.push({\n id: readNodeId,\n kind: 'readQuery',\n moduleId: fromRuntime.moduleId,\n instanceKey: fromRuntime.instanceId,\n readQuery: edge.from.readQuery.staticIr,\n })\n nodes.push({\n id: dispatchNodeId,\n kind: 'dispatch',\n moduleId: toRuntime.moduleId,\n instanceKey: toRuntime.instanceId,\n actionTag: edge.to.actionTag,\n })\n\n irEdges.push({ from: readNodeId, to: dispatchNodeId })\n\n readNodes.push({ nodeId: readNodeId, moduleInstanceKey: fromKey, readQuery: edge.from.readQuery })\n dispatchNodes.push({\n nodeId: dispatchNodeId,\n dispatch: (payload: unknown) =>\n (toRuntime.dispatch({ _tag: edge.to.actionTag, payload } as any) as any).pipe(Effect.asVoid),\n })\n }\n\n const ir: DeclarativeLinkIR = {\n version: 1,\n nodes,\n edges: irEdges,\n }\n\n const registration = {\n linkId,\n ir,\n readNodes,\n dispatchNodes,\n } as const\n\n const unregister = runtime.registerDeclarativeLink(registration as any)\n\n if (collectors.length > 0) {\n const exported = exportDeclarativeLinkIr({ linkId, ir })\n for (const collector of collectors) {\n collector.register(exported as any)\n }\n }\n\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n unregister()\n }),\n )\n\n yield* Effect.never\n })\n\n const definition: ProcessDefinition = {\n processId: `dlink:${linkId}`,\n requires: Array.from(requires),\n triggers: DEFAULT_TRIGGERS,\n concurrency: { mode: 'latest' },\n errorPolicy: { mode: 'failStop' },\n diagnosticsLevel: 'off',\n }\n\n return Meta.attachMeta(program, {\n definition,\n kind: 'declarativeLink',\n }) as ProcessEffect<never, never>\n}\n","import { fnv1a32, stableStringify } from '../../digest.js'\nimport type { ReadQueryStaticIr } from './ReadQuery.js'\n\nexport type DeclarativeLinkNodeId = string\n\nexport type DeclarativeLinkNode =\n | {\n readonly id: DeclarativeLinkNodeId\n readonly kind: 'readQuery'\n readonly moduleId: string\n readonly instanceKey?: string\n /** MUST reuse `ReadQueryStaticIr` (no parallel selector-like IR). */\n readonly readQuery: ReadQueryStaticIr\n }\n | {\n readonly id: DeclarativeLinkNodeId\n readonly kind: 'dispatch'\n readonly moduleId: string\n readonly instanceKey?: string\n readonly actionTag: string\n }\n\nexport type DeclarativeLinkEdge = {\n readonly from: DeclarativeLinkNodeId\n readonly to: DeclarativeLinkNodeId\n}\n\n/**\n * DeclarativeLinkIR (v1):\n * - JSON serializable, IR-recognizable cross-module dependency graph.\n * - Read side: static ReadQuery only (must include readsDigest, no fallbackReason).\n * - Write side: dispatch only (no direct state writes).\n */\nexport interface DeclarativeLinkIR {\n readonly version: 1\n readonly nodes: ReadonlyArray<DeclarativeLinkNode>\n readonly edges: ReadonlyArray<DeclarativeLinkEdge>\n}\n\nexport const getDeclarativeLinkIrDigest = (ir: DeclarativeLinkIR): string =>\n `dlink_ir_v1:${fnv1a32(stableStringify(ir))}`\n\n/**\n * Export envelope compatible with the ConvergeStaticIrCollector bus:\n * - EvidenceCollector indexes by `staticIrDigest`.\n */\nexport interface DeclarativeLinkIrExport {\n readonly staticIrDigest: string\n readonly moduleId: string\n readonly instanceId: string\n readonly kind: 'declarativeLinkIr'\n readonly ir: DeclarativeLinkIR\n}\n\nexport const exportDeclarativeLinkIr = (args: { readonly linkId: string; readonly ir: DeclarativeLinkIR }): DeclarativeLinkIrExport => ({\n staticIrDigest: getDeclarativeLinkIrDigest(args.ir),\n moduleId: `link:${args.linkId}`,\n instanceId: 'runtime',\n kind: 'declarativeLinkIr',\n ir: args.ir,\n})\n\n"],"mappings":"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","names":["attachMeta","getDefinition","getMeta","getDefinition","getMeta","attachMeta"]}
@@ -2,12 +2,12 @@ import {
2
2
  isLogicPlanEffect,
3
3
  make as make2,
4
4
  markAsLogicPlanEffect
5
- } from "./chunk-JGIWG6SR.js";
5
+ } from "./chunk-MS77U77X.js";
6
6
  import {
7
7
  LogicPhaseServiceTag,
8
8
  LogicUnitServiceTag,
9
9
  make
10
- } from "./chunk-BE3HW4FY.js";
10
+ } from "./chunk-34CF6OGE.js";
11
11
 
12
12
  // src/internal/runtime/ModuleFactory.ts
13
13
  import { Context, Effect, Layer, Option, Schema } from "effect";
@@ -201,4 +201,4 @@ export {
201
201
  Link,
202
202
  Module
203
203
  };
204
- //# sourceMappingURL=chunk-JCXGZRMU.js.map
204
+ //# sourceMappingURL=chunk-RQQW3IQC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/runtime/ModuleFactory.ts"],"sourcesContent":["import { Context, Effect, Layer, Option, Schema } from 'effect'\nimport * as ModuleRuntimeImpl from './ModuleRuntime.js'\nimport * as BoundApiRuntime from './BoundApiRuntime.js'\nimport * as LogicDiagnostics from './core/LogicDiagnostics.js'\nimport * as LogicPlanMarker from './core/LogicPlanMarker.js'\nimport type * as Action from '../action.js'\nimport type { FieldPath } from '../field-path.js'\nimport type {\n AnyModuleShape,\n AnySchema,\n ActionsFromMap,\n ModuleTag as LogixModuleTag,\n ModuleShape,\n ReducersFromMap,\n StateOf,\n ActionOf,\n ModuleHandle,\n ModuleLogic,\n ModuleImpl,\n ModuleImplementStateTransactionOptions,\n} from './core/module.js'\n\n/**\n * v3: Link (formerly Orchestrator)\n * A glue layer for cross-module collaboration.\n *\n * - Does not own its own State.\n * - Can access multiple Modules' readonly handles.\n * - Can define Logic only; cannot define State/Action.\n */\nexport function Link<Modules extends Record<string, LogixModuleTag<any, AnyModuleShape>>, E = never, R = never>(\n modules: Modules,\n logic: ($: { [K in keyof Modules]: ModuleHandle<Modules[K]['shape']> }) => Effect.Effect<void, E, R>,\n): Effect.Effect<void, E, R> {\n return Effect.gen(function* () {\n const handles: Record<string, ModuleHandle<AnyModuleShape>> = {}\n\n for (const [key, module] of Object.entries(modules)) {\n const runtime = yield* module\n\n handles[key] = {\n read: (selector: any) => Effect.map(runtime.getState, selector),\n changes: runtime.changes,\n dispatch: runtime.dispatch,\n actions$: runtime.actions$,\n actions: new Proxy(\n {},\n {\n get: (_target, prop) => (payload: any) => runtime.dispatch({ _tag: prop as string, payload }),\n },\n ),\n }\n }\n\n return yield* logic(\n handles as {\n [K in keyof Modules]: ModuleHandle<Modules[K]['shape']>\n },\n )\n })\n}\n\n/**\n * Module factory implementation: construct a ModuleTag from an id and Schema definitions.\n */\nexport function Module<Id extends string, SSchema extends AnySchema, AMap extends Record<string, Action.AnyActionToken>>(\n id: Id,\n def: {\n readonly state: SSchema\n readonly actions: AMap\n readonly reducers?: ReducersFromMap<SSchema, AMap>\n },\n): LogixModuleTag<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>> {\n const shape: ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap> = {\n stateSchema: def.state as any,\n actionSchema: Schema.Union(\n ...Object.entries(def.actions).map(([tag, token]) => {\n const payload = (token as Action.AnyActionToken).schema as AnySchema\n return Schema.Struct(\n payload === Schema.Void\n ? {\n _tag: Schema.Literal(tag),\n payload: Schema.optional(payload),\n }\n : {\n _tag: Schema.Literal(tag),\n payload,\n },\n )\n }),\n ) as unknown as Schema.Schema<ActionsFromMap<AMap>>,\n actionMap: def.actions as any,\n }\n\n type ShapeState = StateOf<typeof shape>\n type ShapeAction = ActionOf<typeof shape>\n\n // Normalize tag-keyed reducers into `_tag -> (state, action, sink?) => state` for the runtime.\n const reducers =\n def.reducers &&\n (Object.fromEntries(\n Object.entries(def.reducers).map(([tag, reducer]) => [\n tag,\n (state: ShapeState, action: ShapeAction, sink?: (path: string | FieldPath) => void) =>\n // Relies on the runtime `_tag` convention: only actions matching the current tag are routed to this reducer.\n (reducer as any)(\n state,\n action as {\n readonly _tag: string\n readonly payload: unknown\n },\n sink,\n ) as ShapeState,\n ]),\n ) as Record<\n string,\n (state: ShapeState, action: ShapeAction, sink?: (path: string | FieldPath) => void) => ShapeState\n >)\n\n class ModuleTag extends Context.Tag(`@logixjs/Module/${id}`)<\n ModuleTag,\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>\n >() {}\n\n const tag = ModuleTag\n\n const moduleTag = Object.assign(tag, {\n _kind: 'ModuleTag' as const,\n id,\n shape,\n stateSchema: shape.stateSchema,\n actionSchema: shape.actionSchema,\n actions: shape.actionMap,\n reducers: def.reducers,\n /**\n * Build a Logic program for the current Module:\n * - Read its ModuleRuntime from Context at runtime.\n * - Build a BoundApi from the runtime.\n * - Pass the BoundApi to the caller to build business logic.\n */\n logic: <R = unknown, E = never>(\n build: (api: import('./core/module.js').BoundApi<typeof shape, R>) => ModuleLogic<typeof shape, R, E>,\n ): ModuleLogic<typeof shape, R, E> => {\n const logicEffect = Effect.gen(function* () {\n const runtime = yield* tag\n const logicUnit = yield* Effect.serviceOption(LogicDiagnostics.LogicUnitServiceTag).pipe(\n Effect.map(Option.getOrUndefined),\n )\n const phaseService = yield* Effect.serviceOption(LogicDiagnostics.LogicPhaseServiceTag).pipe(\n Effect.map(Option.getOrUndefined),\n )\n const api = BoundApiRuntime.make<typeof shape, R>(shape, runtime, {\n getPhase: () => phaseService?.current ?? 'run',\n phaseService,\n moduleId: id,\n logicUnit,\n })\n\n let built: unknown\n try {\n built = build(api)\n } catch (err) {\n // Convert synchronously thrown LogicPhaseError into Effect.fail so runSync won't treat it as an \"async pending fiber\".\n if ((err as any)?._tag === 'LogicPhaseError') {\n return yield* Effect.fail(err as any)\n }\n throw err\n }\n\n if (LogicPlanMarker.isLogicPlanEffect(built)) {\n return yield* built as Effect.Effect<any, any, any>\n }\n\n const isLogicPlan = (value: unknown): value is import('./core/module.js').LogicPlan<typeof shape, R, E> =>\n Boolean(value && typeof value === 'object' && 'setup' in (value as any) && 'run' in (value as any))\n\n const plan = isLogicPlan(built)\n ? built\n : ({\n setup: Effect.void,\n run: built as Effect.Effect<any, any, any>,\n } satisfies import('./core/module.js').LogicPlan<typeof shape, R, E>)\n\n return plan\n })\n\n LogicPlanMarker.markAsLogicPlanEffect(logicEffect)\n return logicEffect\n },\n\n /**\n * live: given an initial state and a set of logics, construct a scoped ModuleRuntime Layer.\n *\n * Env conventions:\n * - R represents extra environment required by the logics (services / platform, etc.).\n * - ModuleRuntime itself only depends on Scope.Scope and is managed by Layer.scoped.\n */\n live: <R = never, E = never>(\n initial: StateOf<typeof shape>,\n ...logics: Array<ModuleLogic<typeof shape, R, E>>\n ): Layer.Layer<import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>, E, R> =>\n Layer.scoped(\n tag,\n ModuleRuntimeImpl.make<StateOf<typeof shape>, ActionOf<typeof shape>, R>(initial, {\n tag,\n logics: logics as ReadonlyArray<Effect.Effect<any, any, any>>,\n moduleId: id,\n reducers,\n }),\n ) as unknown as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n E,\n R\n >,\n\n /**\n * implement: build a ModuleImpl blueprint from Module definition + initial state + a set of logics.\n *\n * - R represents the Env required by the logics.\n * - The returned ModuleImpl.layer carries R as its input environment.\n * - withLayer/withLayers can progressively narrow R to a more concrete Env (even never).\n */\n implement: <R = never>(config: {\n initial: StateOf<typeof shape>\n logics?: Array<ModuleLogic<typeof shape, R, never>>\n imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n /**\n * processes: a set of long-lived flows bound to this Module implementation (including Link).\n *\n * - These Effects will be forked by the runtime container (e.g. Runtime.make).\n * - Types use relaxed E/R to enable composing cross-module orchestration logic.\n * - Business code typically builds these flows via Link.make.\n */\n processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n /**\n * stateTransaction: module-level StateTransaction config.\n *\n * - If instrumentation is not provided, fall back to Runtime-level config (if any) or NODE_ENV defaults.\n * - If instrumentation is provided, it takes precedence over Runtime-level config and defaults.\n */\n stateTransaction?: ModuleImplementStateTransactionOptions\n }): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, R> => {\n const importedModules = (config.imports ?? []).flatMap((item) => {\n if ((item as ModuleImpl<any, AnyModuleShape, any>)._tag === 'ModuleImpl') {\n return [\n (item as ModuleImpl<any, AnyModuleShape, any>).module as unknown as Context.Tag<\n any,\n import('./core/module.js').ModuleRuntime<any, any>\n >,\n ]\n }\n return []\n })\n\n const baseLayer = Layer.scoped(\n tag,\n ModuleRuntimeImpl.make<StateOf<typeof shape>, ActionOf<typeof shape>, R>(config.initial, {\n tag,\n logics: (config.logics || []) as ReadonlyArray<Effect.Effect<any, any, any>>,\n processes: (config.processes || []) as ReadonlyArray<Effect.Effect<void, any, any>>,\n moduleId: id,\n imports: importedModules,\n reducers,\n stateTransaction: config.stateTransaction,\n }),\n ) as unknown as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >\n\n const processes = config.processes ?? []\n\n const makeImplWithLayer = (\n layer: Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >,\n ): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any> => ({\n _tag: 'ModuleImpl',\n module: moduleTag as unknown as LogixModuleTag<\n Id,\n ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>\n >,\n layer,\n processes,\n stateTransaction: config.stateTransaction,\n withLayer: (\n extra: Layer.Layer<any, never, any>,\n ): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any> => {\n const provided = (\n layer as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >\n ).pipe(Layer.provide(extra as Layer.Layer<any, never, any>))\n\n const merged = Layer.mergeAll(provided, extra as Layer.Layer<any, never, any>) as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >\n\n return makeImplWithLayer(merged)\n },\n withLayers: (\n ...extras: ReadonlyArray<Layer.Layer<any, never, any>>\n ): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any> =>\n extras.reduce<ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any>>(\n (implAcc, extra) => implAcc.withLayer(extra),\n makeImplWithLayer(\n layer as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >,\n ),\n ),\n })\n\n // Start from baseLayer and layer-in imports (Layer or other ModuleImpl.layer) sequentially.\n const initialImpl = makeImplWithLayer(\n baseLayer as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >,\n )\n\n const imports = config.imports ?? []\n\n const finalImpl = imports.reduce<\n ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any>\n >((implAcc, item) => {\n const layer =\n (item as ModuleImpl<any, AnyModuleShape, any>)._tag === 'ModuleImpl'\n ? (item as ModuleImpl<any, AnyModuleShape, any>).layer\n : (item as Layer.Layer<any, any, any>)\n\n return implAcc.withLayer(layer as Layer.Layer<any, never, any>)\n }, initialImpl)\n\n return finalImpl\n },\n })\n\n return moduleTag as LogixModuleTag<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>>\n}\n"],"mappings":"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","names":["tag","make"]}
@@ -2,7 +2,7 @@ import {
2
2
  CutoverCoverageMatrix,
3
3
  RuntimeServiceBuiltinsTag,
4
4
  evaluateFullCutoverGate
5
- } from "./chunk-KP7MUZNX.js";
5
+ } from "./chunk-5W2V2NVJ.js";
6
6
  import {
7
7
  FullCutoverGateModeTag,
8
8
  KernelImplementationRefTag,
@@ -12,7 +12,7 @@ import {
12
12
  getKernelImplementationRef,
13
13
  getRuntimeServicesEvidence,
14
14
  isKernelImplementationRef
15
- } from "./chunk-ZGDVUPTM.js";
15
+ } from "./chunk-EB4RGQO3.js";
16
16
  import {
17
17
  __export
18
18
  } from "./chunk-PZ5AY32C.js";
@@ -73,4 +73,4 @@ export {
73
73
  isKernelFullyActivated,
74
74
  Kernel_exports
75
75
  };
76
- //# sourceMappingURL=chunk-24VULZ7A.js.map
76
+ //# sourceMappingURL=chunk-TKOGZDD6.js.map
@@ -1,18 +1,26 @@
1
1
  import {
2
2
  ProcessRuntimeTag,
3
3
  layer
4
- } from "./chunk-PAYXCY6A.js";
4
+ } from "./chunk-G7ESIQTI.js";
5
5
  import {
6
6
  make
7
- } from "./chunk-BE3HW4FY.js";
7
+ } from "./chunk-34CF6OGE.js";
8
8
  import {
9
9
  RootContextTag
10
- } from "./chunk-AUIR5O6W.js";
10
+ } from "./chunk-3VZYDNXZ.js";
11
11
  import {
12
12
  ConcurrencyPolicyTag,
13
+ HostSchedulerTag,
13
14
  ReadQueryStrictGateConfigTag,
14
- StateTransactionConfigTag
15
- } from "./chunk-3QMIVH35.js";
15
+ StateTransactionConfigTag,
16
+ declarativeLinkRuntimeLayer,
17
+ hostSchedulerLayer,
18
+ runtimeStoreLayer,
19
+ tickSchedulerLayer
20
+ } from "./chunk-AQ7L2QZ5.js";
21
+ import {
22
+ getGlobalHostScheduler
23
+ } from "./chunk-MYKNINNN.js";
16
24
 
17
25
  // src/internal/runtime/core/runner/ProgramRunner.errors.ts
18
26
  var summarizeCause = (cause) => {
@@ -217,8 +225,17 @@ Ensure all modules in the application Runtime have unique IDs.`
217
225
  const readQueryStrictGateLayer = config.readQueryStrictGate ? Layer.succeed(ReadQueryStrictGateConfigTag, config.readQueryStrictGate) : Layer.empty;
218
226
  const appModuleIds = config.modules.map((entry) => String(entry.module.id));
219
227
  const appId = appModuleIds.length === 1 ? appModuleIds[0] : appModuleIds.slice().sort().join("~");
228
+ const pinnedHostSchedulerLayer = config.hostScheduler !== void 0 ? Layer.succeed(HostSchedulerTag, config.hostScheduler) : void 0;
229
+ const tickServicesLayer = Layer.provideMerge(pinnedHostSchedulerLayer ?? hostSchedulerLayer)(
230
+ Layer.provideMerge(runtimeStoreLayer)(Layer.provideMerge(declarativeLinkRuntimeLayer)(tickSchedulerLayer()))
231
+ );
232
+ const appLayer = config.layer.pipe(Layer.provide(tickServicesLayer));
220
233
  const baseLayer = Layer.mergeAll(
221
- config.layer,
234
+ tickServicesLayer,
235
+ appLayer,
236
+ // If a HostScheduler override is requested, pin it as the final HostSchedulerTag value to avoid accidental divergence.
237
+ // (Build-time capture is handled above by injecting it into tickServicesLayer.)
238
+ pinnedHostSchedulerLayer ?? Layer.empty,
222
239
  stateTxnLayer,
223
240
  concurrencyPolicyLayer,
224
241
  readQueryStrictGateLayer,
@@ -231,42 +248,51 @@ Ensure all modules in the application Runtime have unique IDs.`
231
248
  })
232
249
  )
233
250
  );
234
- const moduleLayers = config.modules.map(
235
- (entry) => (
236
- // Ensure each module layer can see the app Env (baseLayer) to avoid missing root env during initialization.
237
- Layer.provide(entry.layer, baseLayer)
238
- )
239
- );
240
- const envLayer = moduleLayers.length > 0 ? Layer.mergeAll(baseLayer, ...moduleLayers) : baseLayer;
241
251
  const finalLayer = Layer.unwrapScoped(
242
252
  Effect.gen(function* () {
243
253
  const scope = yield* Effect.scope;
244
- const [patch, env] = yield* Effect.diffFiberRefs(Layer.buildWithScope(envLayer, scope));
245
- const rootContext = Context.get(env, RootContextTag);
246
- rootContext.context = env;
247
- yield* Deferred.succeed(rootContext.ready, env);
248
- const processRuntime = Context.get(
249
- env,
250
- ProcessRuntimeTag
251
- );
252
- yield* Effect.forEach(
253
- config.processes,
254
- (process) => Effect.gen(function* () {
255
- const installation = yield* Effect.provide(
256
- processRuntime.install(process, {
257
- scope: { type: "app", appId },
258
- enabled: true,
259
- installedAt: "appRuntime"
254
+ const [patch, env] = yield* Effect.diffFiberRefs(
255
+ Effect.gen(function* () {
256
+ const baseEnv = yield* Layer.buildWithScope(baseLayer, scope);
257
+ const moduleEnv = config.modules.length > 0 ? yield* Effect.provide(
258
+ Layer.buildWithScope(
259
+ config.modules.length === 1 ? config.modules[0].layer : config.modules.slice(1).reduce((acc, entry) => Layer.merge(acc, entry.layer), config.modules[0].layer),
260
+ scope
261
+ ),
262
+ baseEnv
263
+ ) : void 0;
264
+ const mergedEnv = moduleEnv ? Context.merge(baseEnv, moduleEnv) : baseEnv;
265
+ const rootContext = Context.get(mergedEnv, RootContextTag);
266
+ rootContext.context = mergedEnv;
267
+ yield* Deferred.succeed(rootContext.ready, mergedEnv);
268
+ const processRuntime = Context.get(
269
+ mergedEnv,
270
+ ProcessRuntimeTag
271
+ );
272
+ yield* Effect.forEach(
273
+ config.processes,
274
+ (process) => Effect.gen(function* () {
275
+ const installation = yield* Effect.provide(
276
+ processRuntime.install(process, {
277
+ scope: { type: "app", appId },
278
+ enabled: true,
279
+ installedAt: "appRuntime"
280
+ }),
281
+ mergedEnv
282
+ );
283
+ if (installation === void 0) {
284
+ yield* Effect.forkScoped(
285
+ Effect.provide(
286
+ config.onError ? Effect.catchAllCause(process, config.onError) : process,
287
+ mergedEnv
288
+ )
289
+ );
290
+ }
260
291
  }),
261
- env
292
+ { discard: true }
262
293
  );
263
- if (installation === void 0) {
264
- yield* Effect.forkScoped(
265
- Effect.provide(config.onError ? Effect.catchAllCause(process, config.onError) : process, env)
266
- );
267
- }
268
- }),
269
- { discard: true }
294
+ return mergedEnv;
295
+ })
270
296
  );
271
297
  const fiberRefsLayer = Layer.scopedDiscard(Effect.patchFiberRefs(patch));
272
298
  return Layer.mergeAll(Layer.succeedContext(env), fiberRefsLayer);
@@ -289,6 +315,11 @@ import { Cause, Effect as Effect2, Exit, Fiber, Option, Scope } from "effect";
289
315
  var closeProgramScope = (params) => {
290
316
  return Effect2.gen(function* () {
291
317
  const start = Date.now();
318
+ const hostSchedulerOpt = yield* Effect2.serviceOption(HostSchedulerTag);
319
+ const hostScheduler = Option.isSome(hostSchedulerOpt) ? hostSchedulerOpt.value : getGlobalHostScheduler();
320
+ const yieldMicrotask = Effect2.async((resume) => {
321
+ hostScheduler.scheduleMicrotask(() => resume(Effect2.void));
322
+ });
292
323
  const fiber = yield* Effect2.forkDaemon(Scope.close(params.scope, Exit.void));
293
324
  while (true) {
294
325
  const exitOpt = yield* Fiber.poll(fiber);
@@ -311,7 +342,7 @@ var closeProgramScope = (params) => {
311
342
  yield* Fiber.interruptFork(fiber);
312
343
  return yield* Effect2.die(error);
313
344
  }
314
- yield* Effect2.promise(() => new Promise((r) => queueMicrotask(r)));
345
+ yield* yieldMicrotask;
315
346
  }
316
347
  });
317
348
  };
@@ -403,4 +434,4 @@ export {
403
434
  makeApp,
404
435
  provide
405
436
  };
406
- //# sourceMappingURL=chunk-EGK3KN7B.js.map
437
+ //# sourceMappingURL=chunk-TQYLVXGY.js.map