@logixjs/core 0.0.1

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 (345) hide show
  1. package/dist/Action-BkRHy2vg.d.cts +10 -0
  2. package/dist/Action-mqVvtEHt.d.ts +10 -0
  3. package/dist/Action.cjs +57 -0
  4. package/dist/Action.cjs.map +1 -0
  5. package/dist/Action.d.cts +2 -0
  6. package/dist/Action.d.ts +2 -0
  7. package/dist/Action.js +9 -0
  8. package/dist/Action.js.map +1 -0
  9. package/dist/Actions-AsQ07yTP.d.cts +22 -0
  10. package/dist/Actions-AsQ07yTP.d.ts +22 -0
  11. package/dist/Actions.cjs +19 -0
  12. package/dist/Actions.cjs.map +1 -0
  13. package/dist/Actions.d.cts +2 -0
  14. package/dist/Actions.d.ts +2 -0
  15. package/dist/Actions.js +2 -0
  16. package/dist/Actions.js.map +1 -0
  17. package/dist/Bound-BN1DQ_lM.d.ts +23 -0
  18. package/dist/Bound-BPIfH9SS.d.cts +23 -0
  19. package/dist/Bound.cjs +1532 -0
  20. package/dist/Bound.cjs.map +1 -0
  21. package/dist/Bound.d.cts +7 -0
  22. package/dist/Bound.d.ts +7 -0
  23. package/dist/Bound.js +25 -0
  24. package/dist/Bound.js.map +1 -0
  25. package/dist/Debug-B5q5Bkzx.d.ts +320 -0
  26. package/dist/Debug-Bq8Sqjcr.d.cts +320 -0
  27. package/dist/Debug.cjs +1821 -0
  28. package/dist/Debug.cjs.map +1 -0
  29. package/dist/Debug.d.cts +13 -0
  30. package/dist/Debug.d.ts +13 -0
  31. package/dist/Debug.js +76 -0
  32. package/dist/Debug.js.map +1 -0
  33. package/dist/EffectOp.cjs +169 -0
  34. package/dist/EffectOp.cjs.map +1 -0
  35. package/dist/EffectOp.d.cts +118 -0
  36. package/dist/EffectOp.d.ts +118 -0
  37. package/dist/EffectOp.js +28 -0
  38. package/dist/EffectOp.js.map +1 -0
  39. package/dist/Env-DuJ6JrU2.d.cts +10 -0
  40. package/dist/Env-DuJ6JrU2.d.ts +10 -0
  41. package/dist/Env.cjs +60 -0
  42. package/dist/Env.cjs.map +1 -0
  43. package/dist/Env.d.cts +1 -0
  44. package/dist/Env.d.ts +1 -0
  45. package/dist/Env.js +11 -0
  46. package/dist/Env.js.map +1 -0
  47. package/dist/Flow-1fZT8MpX.d.cts +152 -0
  48. package/dist/Flow-BhpjE22E.d.ts +152 -0
  49. package/dist/Flow.cjs +504 -0
  50. package/dist/Flow.cjs.map +1 -0
  51. package/dist/Flow.d.cts +8 -0
  52. package/dist/Flow.d.ts +8 -0
  53. package/dist/Flow.js +15 -0
  54. package/dist/Flow.js.map +1 -0
  55. package/dist/Handle-D8D1zPb_.d.cts +30 -0
  56. package/dist/Handle-D_cLW1Z3.d.ts +30 -0
  57. package/dist/Handle.cjs +42 -0
  58. package/dist/Handle.cjs.map +1 -0
  59. package/dist/Handle.d.cts +7 -0
  60. package/dist/Handle.d.ts +7 -0
  61. package/dist/Handle.js +10 -0
  62. package/dist/Handle.js.map +1 -0
  63. package/dist/Kernel-8kC-jOda.d.cts +171 -0
  64. package/dist/Kernel-CnGE1Fyk.d.ts +171 -0
  65. package/dist/Kernel.cjs +284 -0
  66. package/dist/Kernel.cjs.map +1 -0
  67. package/dist/Kernel.d.cts +14 -0
  68. package/dist/Kernel.d.ts +14 -0
  69. package/dist/Kernel.js +36 -0
  70. package/dist/Kernel.js.map +1 -0
  71. package/dist/Link-Db7975nU.d.ts +45 -0
  72. package/dist/Link-fX8x1eCK.d.cts +45 -0
  73. package/dist/Link.cjs +542 -0
  74. package/dist/Link.cjs.map +1 -0
  75. package/dist/Link.d.cts +7 -0
  76. package/dist/Link.d.ts +7 -0
  77. package/dist/Link.js +35 -0
  78. package/dist/Link.js.map +1 -0
  79. package/dist/Logic-BRjEMr-W.d.ts +38 -0
  80. package/dist/Logic-DRh4sDZj.d.cts +38 -0
  81. package/dist/Logic.cjs +37 -0
  82. package/dist/Logic.cjs.map +1 -0
  83. package/dist/Logic.d.cts +7 -0
  84. package/dist/Logic.d.ts +7 -0
  85. package/dist/Logic.js +10 -0
  86. package/dist/Logic.js.map +1 -0
  87. package/dist/MatchBuilder-0QOc-nlU.d.ts +14 -0
  88. package/dist/MatchBuilder-CJk5oCkR.d.cts +14 -0
  89. package/dist/MatchBuilder.cjs +85 -0
  90. package/dist/MatchBuilder.cjs.map +1 -0
  91. package/dist/MatchBuilder.d.cts +8 -0
  92. package/dist/MatchBuilder.d.ts +8 -0
  93. package/dist/MatchBuilder.js +11 -0
  94. package/dist/MatchBuilder.js.map +1 -0
  95. package/dist/Middleware.cjs +411 -0
  96. package/dist/Middleware.cjs.map +1 -0
  97. package/dist/Middleware.d.cts +88 -0
  98. package/dist/Middleware.d.ts +88 -0
  99. package/dist/Middleware.js +27 -0
  100. package/dist/Middleware.js.map +1 -0
  101. package/dist/Module-B_0xRDMR.d.cts +203 -0
  102. package/dist/Module-DnzluX2J.d.ts +203 -0
  103. package/dist/Module.cjs +13512 -0
  104. package/dist/Module.cjs.map +1 -0
  105. package/dist/Module.d.cts +8 -0
  106. package/dist/Module.d.ts +8 -0
  107. package/dist/Module.js +53 -0
  108. package/dist/Module.js.map +1 -0
  109. package/dist/ModuleTag-C8FHY_sY.d.ts +93 -0
  110. package/dist/ModuleTag-EGbgBMpZ.d.cts +93 -0
  111. package/dist/ModuleTag.cjs +12231 -0
  112. package/dist/ModuleTag.cjs.map +1 -0
  113. package/dist/ModuleTag.d.cts +8 -0
  114. package/dist/ModuleTag.d.ts +8 -0
  115. package/dist/ModuleTag.js +39 -0
  116. package/dist/ModuleTag.js.map +1 -0
  117. package/dist/Observability-COqEvp2C.d.cts +713 -0
  118. package/dist/Observability-cY4kLn0S.d.ts +713 -0
  119. package/dist/Observability.cjs +5865 -0
  120. package/dist/Observability.cjs.map +1 -0
  121. package/dist/Observability.d.cts +9 -0
  122. package/dist/Observability.d.ts +9 -0
  123. package/dist/Observability.js +41 -0
  124. package/dist/Observability.js.map +1 -0
  125. package/dist/Platform-C49Pv956.d.cts +21 -0
  126. package/dist/Platform-C49Pv956.d.ts +21 -0
  127. package/dist/Platform-CHX8o-U4.d.ts +51 -0
  128. package/dist/Platform-CVlv0xLQ.d.cts +51 -0
  129. package/dist/Platform.cjs +58 -0
  130. package/dist/Platform.cjs.map +1 -0
  131. package/dist/Platform.d.cts +4 -0
  132. package/dist/Platform.d.ts +4 -0
  133. package/dist/Platform.js +15 -0
  134. package/dist/Platform.js.map +1 -0
  135. package/dist/Process-CM9xbMdP.d.ts +92 -0
  136. package/dist/Process-mL8fHDSB.d.cts +92 -0
  137. package/dist/Process.cjs +575 -0
  138. package/dist/Process.cjs.map +1 -0
  139. package/dist/Process.d.cts +8 -0
  140. package/dist/Process.d.ts +8 -0
  141. package/dist/Process.js +42 -0
  142. package/dist/Process.js.map +1 -0
  143. package/dist/ReadQuery-BlMwhe-F.d.ts +30 -0
  144. package/dist/ReadQuery-CL5XlXts.d.cts +30 -0
  145. package/dist/ReadQuery-SinbStGF.d.cts +38 -0
  146. package/dist/ReadQuery-SinbStGF.d.ts +38 -0
  147. package/dist/ReadQuery.cjs +377 -0
  148. package/dist/ReadQuery.cjs.map +1 -0
  149. package/dist/ReadQuery.d.cts +2 -0
  150. package/dist/ReadQuery.d.ts +2 -0
  151. package/dist/ReadQuery.js +14 -0
  152. package/dist/ReadQuery.js.map +1 -0
  153. package/dist/Reflection-CQnKwPXj.d.ts +182 -0
  154. package/dist/Reflection-Kabo1mlU.d.cts +182 -0
  155. package/dist/Reflection.cjs +2954 -0
  156. package/dist/Reflection.cjs.map +1 -0
  157. package/dist/Reflection.d.cts +17 -0
  158. package/dist/Reflection.d.ts +17 -0
  159. package/dist/Reflection.js +40 -0
  160. package/dist/Reflection.js.map +1 -0
  161. package/dist/Resource-Dy1xD_DG.d.cts +75 -0
  162. package/dist/Resource-Dy1xD_DG.d.ts +75 -0
  163. package/dist/Resource.cjs +166 -0
  164. package/dist/Resource.cjs.map +1 -0
  165. package/dist/Resource.d.cts +3 -0
  166. package/dist/Resource.d.ts +3 -0
  167. package/dist/Resource.js +21 -0
  168. package/dist/Resource.js.map +1 -0
  169. package/dist/Root-7ADUMk4t.d.cts +29 -0
  170. package/dist/Root-7ADUMk4t.d.ts +29 -0
  171. package/dist/Root.cjs +125 -0
  172. package/dist/Root.cjs.map +1 -0
  173. package/dist/Root.d.cts +4 -0
  174. package/dist/Root.d.ts +4 -0
  175. package/dist/Root.js +12 -0
  176. package/dist/Root.js.map +1 -0
  177. package/dist/Runtime-B-aL-f29.d.cts +274 -0
  178. package/dist/Runtime-CtyzZG4i.d.ts +274 -0
  179. package/dist/Runtime.cjs +5740 -0
  180. package/dist/Runtime.cjs.map +1 -0
  181. package/dist/Runtime.d.cts +19 -0
  182. package/dist/Runtime.d.ts +19 -0
  183. package/dist/Runtime.js +62 -0
  184. package/dist/Runtime.js.map +1 -0
  185. package/dist/ScopeRegistry-D1owDNSm.d.cts +61 -0
  186. package/dist/ScopeRegistry-D1owDNSm.d.ts +61 -0
  187. package/dist/ScopeRegistry.cjs +152 -0
  188. package/dist/ScopeRegistry.cjs.map +1 -0
  189. package/dist/ScopeRegistry.d.cts +2 -0
  190. package/dist/ScopeRegistry.d.ts +2 -0
  191. package/dist/ScopeRegistry.js +16 -0
  192. package/dist/ScopeRegistry.js.map +1 -0
  193. package/dist/State-CU50R26M.d.cts +19 -0
  194. package/dist/State-CU50R26M.d.ts +19 -0
  195. package/dist/State.cjs +19 -0
  196. package/dist/State.cjs.map +1 -0
  197. package/dist/State.d.cts +2 -0
  198. package/dist/State.d.ts +2 -0
  199. package/dist/State.js +2 -0
  200. package/dist/State.js.map +1 -0
  201. package/dist/StateTrait-BGsZghTz.d.ts +122 -0
  202. package/dist/StateTrait-OWhbj12c.d.cts +122 -0
  203. package/dist/StateTrait.cjs +2737 -0
  204. package/dist/StateTrait.cjs.map +1 -0
  205. package/dist/StateTrait.d.cts +9 -0
  206. package/dist/StateTrait.d.ts +9 -0
  207. package/dist/StateTrait.js +39 -0
  208. package/dist/StateTrait.js.map +1 -0
  209. package/dist/TraitLifecycle-CwV5WPFX.d.cts +88 -0
  210. package/dist/TraitLifecycle-LdIWmKlg.d.ts +88 -0
  211. package/dist/TraitLifecycle.cjs +581 -0
  212. package/dist/TraitLifecycle.cjs.map +1 -0
  213. package/dist/TraitLifecycle.d.cts +8 -0
  214. package/dist/TraitLifecycle.d.ts +8 -0
  215. package/dist/TraitLifecycle.js +24 -0
  216. package/dist/TraitLifecycle.js.map +1 -0
  217. package/dist/action-DiMDD_0v.d.cts +35 -0
  218. package/dist/action-DiMDD_0v.d.ts +35 -0
  219. package/dist/chunk-24VULZ7A.js +76 -0
  220. package/dist/chunk-24VULZ7A.js.map +1 -0
  221. package/dist/chunk-3IYZ5IGG.js +17 -0
  222. package/dist/chunk-3IYZ5IGG.js.map +1 -0
  223. package/dist/chunk-3QMIVH35.js +43 -0
  224. package/dist/chunk-3QMIVH35.js.map +1 -0
  225. package/dist/chunk-3RMKLXHX.js +83 -0
  226. package/dist/chunk-3RMKLXHX.js.map +1 -0
  227. package/dist/chunk-3TMODYZV.js +111 -0
  228. package/dist/chunk-3TMODYZV.js.map +1 -0
  229. package/dist/chunk-3VG5TWQR.js +27 -0
  230. package/dist/chunk-3VG5TWQR.js.map +1 -0
  231. package/dist/chunk-4CQAV7YB.js +37 -0
  232. package/dist/chunk-4CQAV7YB.js.map +1 -0
  233. package/dist/chunk-4SO6JMZL.js +7 -0
  234. package/dist/chunk-4SO6JMZL.js.map +1 -0
  235. package/dist/chunk-66ALHVEX.js +40 -0
  236. package/dist/chunk-66ALHVEX.js.map +1 -0
  237. package/dist/chunk-76WT3HOR.js +397 -0
  238. package/dist/chunk-76WT3HOR.js.map +1 -0
  239. package/dist/chunk-ANLBCBDC.js +285 -0
  240. package/dist/chunk-ANLBCBDC.js.map +1 -0
  241. package/dist/chunk-AUIR5O6W.js +75 -0
  242. package/dist/chunk-AUIR5O6W.js.map +1 -0
  243. package/dist/chunk-BABLDP24.js +445 -0
  244. package/dist/chunk-BABLDP24.js.map +1 -0
  245. package/dist/chunk-BE3HW4FY.js +1099 -0
  246. package/dist/chunk-BE3HW4FY.js.map +1 -0
  247. package/dist/chunk-BZ2SHDN2.js +54 -0
  248. package/dist/chunk-BZ2SHDN2.js.map +1 -0
  249. package/dist/chunk-CW6T36TN.js +393 -0
  250. package/dist/chunk-CW6T36TN.js.map +1 -0
  251. package/dist/chunk-DFNM3WX2.js +632 -0
  252. package/dist/chunk-DFNM3WX2.js.map +1 -0
  253. package/dist/chunk-DMBALCE2.js +1034 -0
  254. package/dist/chunk-DMBALCE2.js.map +1 -0
  255. package/dist/chunk-EGK3KN7B.js +406 -0
  256. package/dist/chunk-EGK3KN7B.js.map +1 -0
  257. package/dist/chunk-EY4NZKDR.js +19 -0
  258. package/dist/chunk-EY4NZKDR.js.map +1 -0
  259. package/dist/chunk-G5ZBFPNU.js +23 -0
  260. package/dist/chunk-G5ZBFPNU.js.map +1 -0
  261. package/dist/chunk-GMPEOUP2.js +31 -0
  262. package/dist/chunk-GMPEOUP2.js.map +1 -0
  263. package/dist/chunk-IHVBV5C2.js +279 -0
  264. package/dist/chunk-IHVBV5C2.js.map +1 -0
  265. package/dist/chunk-IPF7E66P.js +23 -0
  266. package/dist/chunk-IPF7E66P.js.map +1 -0
  267. package/dist/chunk-JCXGZRMU.js +204 -0
  268. package/dist/chunk-JCXGZRMU.js.map +1 -0
  269. package/dist/chunk-JGIWG6SR.js +6359 -0
  270. package/dist/chunk-JGIWG6SR.js.map +1 -0
  271. package/dist/chunk-JWOYLO27.js +241 -0
  272. package/dist/chunk-JWOYLO27.js.map +1 -0
  273. package/dist/chunk-KIXAU3GM.js +137 -0
  274. package/dist/chunk-KIXAU3GM.js.map +1 -0
  275. package/dist/chunk-KL5ACTCT.js +8 -0
  276. package/dist/chunk-KL5ACTCT.js.map +1 -0
  277. package/dist/chunk-KP7MUZNX.js +83 -0
  278. package/dist/chunk-KP7MUZNX.js.map +1 -0
  279. package/dist/chunk-LEU6UA5J.js +1 -0
  280. package/dist/chunk-LEU6UA5J.js.map +1 -0
  281. package/dist/chunk-M2RGJPXX.js +35 -0
  282. package/dist/chunk-M2RGJPXX.js.map +1 -0
  283. package/dist/chunk-M3BFQ7HK.js +13 -0
  284. package/dist/chunk-M3BFQ7HK.js.map +1 -0
  285. package/dist/chunk-M3WTHJHJ.js +1051 -0
  286. package/dist/chunk-M3WTHJHJ.js.map +1 -0
  287. package/dist/chunk-M7IYCTJV.js +79 -0
  288. package/dist/chunk-M7IYCTJV.js.map +1 -0
  289. package/dist/chunk-NBD3KUOZ.js +838 -0
  290. package/dist/chunk-NBD3KUOZ.js.map +1 -0
  291. package/dist/chunk-NQZ2OSGR.js +151 -0
  292. package/dist/chunk-NQZ2OSGR.js.map +1 -0
  293. package/dist/chunk-NZJKFF45.js +106 -0
  294. package/dist/chunk-NZJKFF45.js.map +1 -0
  295. package/dist/chunk-OFADUJWJ.js +175 -0
  296. package/dist/chunk-OFADUJWJ.js.map +1 -0
  297. package/dist/chunk-OGWBVHB3.js +461 -0
  298. package/dist/chunk-OGWBVHB3.js.map +1 -0
  299. package/dist/chunk-PAYXCY6A.js +1696 -0
  300. package/dist/chunk-PAYXCY6A.js.map +1 -0
  301. package/dist/chunk-PYOE4VSI.js +1924 -0
  302. package/dist/chunk-PYOE4VSI.js.map +1 -0
  303. package/dist/chunk-PZ5AY32C.js +10 -0
  304. package/dist/chunk-PZ5AY32C.js.map +1 -0
  305. package/dist/chunk-QCHIQWAJ.js +21 -0
  306. package/dist/chunk-QCHIQWAJ.js.map +1 -0
  307. package/dist/chunk-QMM6O4CD.js +71 -0
  308. package/dist/chunk-QMM6O4CD.js.map +1 -0
  309. package/dist/chunk-RNFE3ML2.js +22 -0
  310. package/dist/chunk-RNFE3ML2.js.map +1 -0
  311. package/dist/chunk-TAAPQVZN.js +23 -0
  312. package/dist/chunk-TAAPQVZN.js.map +1 -0
  313. package/dist/chunk-THATMZXD.js +21 -0
  314. package/dist/chunk-THATMZXD.js.map +1 -0
  315. package/dist/chunk-TKZ7MEIA.js +27 -0
  316. package/dist/chunk-TKZ7MEIA.js.map +1 -0
  317. package/dist/chunk-TQOBJYDP.js +7 -0
  318. package/dist/chunk-TQOBJYDP.js.map +1 -0
  319. package/dist/chunk-VZB726PE.js +93 -0
  320. package/dist/chunk-VZB726PE.js.map +1 -0
  321. package/dist/chunk-W3TEWHLO.js +568 -0
  322. package/dist/chunk-W3TEWHLO.js.map +1 -0
  323. package/dist/chunk-YS3AZQ2G.js +52 -0
  324. package/dist/chunk-YS3AZQ2G.js.map +1 -0
  325. package/dist/chunk-ZDTRWK5F.js +40 -0
  326. package/dist/chunk-ZDTRWK5F.js.map +1 -0
  327. package/dist/chunk-ZFLHVFUC.js +192 -0
  328. package/dist/chunk-ZFLHVFUC.js.map +1 -0
  329. package/dist/chunk-ZFY7U2FR.js +133 -0
  330. package/dist/chunk-ZFY7U2FR.js.map +1 -0
  331. package/dist/chunk-ZGDVUPTM.js +270 -0
  332. package/dist/chunk-ZGDVUPTM.js.map +1 -0
  333. package/dist/index.cjs +19700 -0
  334. package/dist/index.cjs.map +1 -0
  335. package/dist/index.d.cts +195 -0
  336. package/dist/index.d.ts +195 -0
  337. package/dist/index.js +286 -0
  338. package/dist/index.js.map +1 -0
  339. package/dist/ir-BMP7yxJJ.d.cts +39 -0
  340. package/dist/ir-DUOz6H-5.d.ts +39 -0
  341. package/dist/module-B8CBqIZ_.d.cts +1191 -0
  342. package/dist/module-k7m3txak.d.ts +1191 -0
  343. package/dist/protocol-g_1897M2.d.cts +127 -0
  344. package/dist/protocol-g_1897M2.d.ts +127 -0
  345. package/package.json +162 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/observability/runSession.ts","../src/internal/effect-op.ts"],"sourcesContent":["import { Context, Layer } from 'effect'\nimport type { JsonValue } from './jsonValue.js'\nimport type { EvidencePackage, EvidencePackageSource, ObservationEnvelope } from './evidence.js'\nimport { exportEvidencePackage, OBSERVABILITY_PROTOCOL_VERSION } from './evidence.js'\n\nexport type RunId = string\n\nexport interface RunSessionLocalState {\n /**\n * once: a de-dup key set for \"emit only once\" behavior (must be isolated per session to avoid cross-session pollution).\n * Returns true if it's the first occurrence, false if the key has been seen before.\n */\n readonly once: (key: string) => boolean\n\n /**\n * seq: allocate monotonic sequences by key (e.g. opSeq/eventSeq), must be isolated per session.\n */\n readonly nextSeq: (namespace: string, key: string) => number\n\n /** Tests/reset only: clear this session's local state. */\n readonly clear: () => void\n}\n\nexport interface RunSession {\n readonly runId: RunId\n readonly source: EvidencePackageSource\n readonly startedAt: number\n readonly local: RunSessionLocalState\n}\n\nclass RunSessionTagImpl extends Context.Tag('@logixjs/core/RunSession')<RunSessionTagImpl, RunSession>() {}\n\nexport const RunSessionTag = RunSessionTagImpl\n\nexport interface EvidenceSink {\n readonly record: (type: string, payload: JsonValue, options?: { readonly timestamp?: number }) => void\n readonly export: (options?: {\n readonly protocolVersion?: string\n readonly createdAt?: number\n readonly summary?: JsonValue\n readonly maxEvents?: number\n }) => EvidencePackage\n readonly clear: () => void\n}\n\nconst NEXT_RUN_SEQ_KEY = Symbol.for('@logixjs/core/runSession/nextRunSeq')\nlet fallbackNextRunSeq = 0\n\nconst nextRunSeq = (): number => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const g: any = globalThis as any\n const prev = typeof g[NEXT_RUN_SEQ_KEY] === 'number' ? (g[NEXT_RUN_SEQ_KEY] as number) : 0\n const next = prev + 1\n g[NEXT_RUN_SEQ_KEY] = next\n return next\n } catch {\n fallbackNextRunSeq += 1\n return fallbackNextRunSeq\n }\n}\n\nconst makeRunId = (startedAt: number): RunId => `run-${startedAt}.${nextRunSeq()}`\n\nexport const makeRunSessionLocalState = (): RunSessionLocalState => {\n const onceKeys = new Set<string>()\n const seqByNamespace = new Map<string, Map<string, number>>()\n\n return {\n once: (key) => {\n if (onceKeys.has(key)) return false\n onceKeys.add(key)\n return true\n },\n nextSeq: (namespace, key) => {\n const byKey = seqByNamespace.get(namespace) ?? new Map<string, number>()\n if (!seqByNamespace.has(namespace)) seqByNamespace.set(namespace, byKey)\n const prev = byKey.get(key) ?? 0\n const next = prev + 1\n byKey.set(key, next)\n return next\n },\n clear: () => {\n onceKeys.clear()\n seqByNamespace.clear()\n },\n }\n}\n\nexport const makeRunSession = (options?: {\n readonly runId?: RunId\n readonly source?: EvidencePackageSource\n readonly startedAt?: number\n readonly local?: RunSessionLocalState\n}): RunSession => {\n const startedAt = options?.startedAt ?? Date.now()\n return {\n runId: options?.runId ?? makeRunId(startedAt),\n source: options?.source ?? { host: 'unknown' },\n startedAt,\n local: options?.local ?? makeRunSessionLocalState(),\n }\n}\n\nexport const makeEvidenceSink = (session: RunSession): EvidenceSink => {\n const events: ObservationEnvelope[] = []\n let nextSeq = 1\n\n return {\n record: (type, payload, options) => {\n events.push({\n protocolVersion: OBSERVABILITY_PROTOCOL_VERSION,\n runId: session.runId,\n seq: nextSeq++,\n timestamp: options?.timestamp ?? Date.now(),\n type,\n payload,\n })\n },\n export: (options) => {\n const protocolVersion = options?.protocolVersion ?? OBSERVABILITY_PROTOCOL_VERSION\n const maxEvents = options?.maxEvents\n\n const selected =\n typeof maxEvents === 'number' && Number.isFinite(maxEvents) && maxEvents > 0\n ? events.slice(Math.max(0, events.length - Math.floor(maxEvents)))\n : events.slice()\n\n return exportEvidencePackage({\n protocolVersion,\n runId: session.runId,\n source: session.source,\n createdAt: options?.createdAt,\n events: selected,\n summary: options?.summary,\n })\n },\n clear: () => {\n events.length = 0\n nextSeq = 1\n },\n }\n}\n\nexport const runSessionLayer = (session?: RunSession): Layer.Layer<RunSessionTagImpl, never, never> =>\n Layer.succeed(RunSessionTag, session ?? makeRunSession()) as Layer.Layer<RunSessionTagImpl, never, never>\n","// Internal EffectOp API (for internal implementation code).\n//\n// Goal:\n// - Internal modules must never import root public submodules (e.g. `../EffectOp`).\n// - This file hosts the shared implementation; public `src/EffectOp.ts` delegates to it.\n\nimport { Effect, Option } from 'effect'\nimport * as Core from './runtime/core/EffectOpCore.js'\nimport { RunSessionTag } from './observability/runSession.js'\n\nexport type EffectOp<Out = unknown, Err = unknown, Env = unknown> = Core.EffectOp<Out, Err, Env>\n\nexport type OperationPolicy = Core.OperationPolicy\n\nexport type OperationRejected = Core.OperationRejected\n\nexport type OperationError<E> = Core.OperationError<E>\n\nexport type Middleware = Core.Middleware\n\nexport type MiddlewareStack = Core.MiddlewareStack\n\nexport const composeMiddleware = Core.composeMiddleware\n\nexport const makeOperationRejected = Core.makeOperationRejected\n\n/**\n * Generate a stable id for identifying an EffectOp.\n * - Uses a monotonic sequence by default to avoid non-replayability from randomness/time.\n * - If meta.instanceId is available, prefer deriving `${instanceId}::o${opSeq}`.\n */\nlet nextGlobalOpSeq = 0\n\nconst nextOpSeq = (): number => {\n nextGlobalOpSeq += 1\n return nextGlobalOpSeq\n}\n\nconst makeId = (instanceId: string | undefined, opSeq: number): string =>\n instanceId ? `${instanceId}::o${opSeq}` : `o${opSeq}`\n\n/**\n * EffectOp.make:\n * - Create an EffectOp with basic meta.\n * - Generates a stable id by default (based on `instanceId` + monotonic `opSeq`); callers may override externally.\n */\nexport const make = <A, E, R>(params: {\n readonly kind: EffectOp['kind']\n readonly name: string\n readonly effect: Effect.Effect<A, E, R>\n readonly payload?: unknown\n readonly meta?: EffectOp['meta']\n readonly id?: string\n}): EffectOp<A, E, R> => ({\n ...(params.id\n ? { id: params.id, meta: params.meta }\n : (() => {\n const meta: any = params.meta ?? {}\n const instanceId: string | undefined = meta.instanceId\n const opSeq: number =\n typeof meta.opSeq === 'number' && Number.isFinite(meta.opSeq) ? Math.floor(meta.opSeq) : nextOpSeq()\n return {\n id: makeId(instanceId, opSeq),\n meta: meta.opSeq === opSeq ? meta : { ...meta, opSeq },\n }\n })()),\n kind: params.kind,\n name: params.name,\n payload: params.payload,\n effect: params.effect,\n})\n\n/**\n * EffectOp.makeInRunSession:\n * - Allocate a stable `opSeq` within a RunSession scope (per-session + per-instance).\n * - If RunSession is missing from Env, fall back to a process-wide monotonic sequence (no process-wide Map).\n */\nexport const makeInRunSession = <A, E, R>(params: {\n readonly kind: EffectOp['kind']\n readonly name: string\n readonly effect: Effect.Effect<A, E, R>\n readonly payload?: unknown\n readonly meta?: EffectOp['meta']\n readonly id?: string\n}): Effect.Effect<EffectOp<A, E, R>, never, any> =>\n Effect.gen(function* () {\n if (params.id) {\n return {\n id: params.id,\n kind: params.kind,\n name: params.name,\n payload: params.payload,\n meta: params.meta,\n effect: params.effect,\n } satisfies EffectOp<A, E, R>\n }\n\n const meta: any = params.meta ?? {}\n const instanceId: string | undefined = meta.instanceId\n\n let opSeq: number\n if (typeof meta.opSeq === 'number' && Number.isFinite(meta.opSeq)) {\n opSeq = Math.floor(meta.opSeq)\n } else {\n const sessionOpt = yield* Effect.serviceOption(RunSessionTag)\n if (Option.isSome(sessionOpt)) {\n const key = instanceId ?? 'global'\n opSeq = sessionOpt.value.local.nextSeq('opSeq', key)\n } else {\n opSeq = nextOpSeq()\n }\n }\n\n return {\n id: makeId(instanceId, opSeq),\n kind: params.kind,\n name: params.name,\n payload: params.payload,\n meta: meta.opSeq === opSeq ? meta : { ...meta, opSeq },\n effect: params.effect,\n } satisfies EffectOp<A, E, R>\n })\n\n/**\n * EffectOp.withMeta:\n * - Append or override meta fields on an existing EffectOp.\n * - Does not change the effect itself.\n */\nexport const withMeta = <A, E, R>(\n op: EffectOp<A, E, R>,\n meta: Partial<NonNullable<EffectOp['meta']>>,\n): EffectOp<A, E, R> => ({\n ...op,\n meta: { ...(op.meta ?? {}), ...meta },\n})\n\n/**\n * EffectOp.run:\n * - Execute an EffectOp using the given MiddlewareStack.\n * - If the stack is empty, return op.effect directly.\n */\nexport const run = <A, E, R>(op: EffectOp<A, E, R>, stack: MiddlewareStack): Effect.Effect<A, E, R> =>\n Core.runWithMiddleware(op, stack)\n"],"mappings":"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","names":["composeMiddleware","makeOperationRejected"]}
@@ -0,0 +1,461 @@
1
+ import {
2
+ Reducer,
3
+ make
4
+ } from "./chunk-76WT3HOR.js";
5
+ import {
6
+ attachLogicUnitMeta,
7
+ getLogicUnitMeta,
8
+ updateLogicUnitMeta
9
+ } from "./chunk-JGIWG6SR.js";
10
+ import {
11
+ isActionToken,
12
+ normalizeActions
13
+ } from "./chunk-YS3AZQ2G.js";
14
+ import {
15
+ internal,
16
+ record
17
+ } from "./chunk-W3TEWHLO.js";
18
+ import {
19
+ isDevEnv
20
+ } from "./chunk-3QMIVH35.js";
21
+ import {
22
+ __export
23
+ } from "./chunk-PZ5AY32C.js";
24
+
25
+ // src/Module.ts
26
+ var Module_exports = {};
27
+ __export(Module_exports, {
28
+ Manage: () => Manage,
29
+ Reducer: () => Reducer2,
30
+ descriptor: () => descriptor,
31
+ hasImpl: () => hasImpl,
32
+ is: () => is,
33
+ make: () => make2,
34
+ unwrapImpl: () => unwrapImpl,
35
+ unwrapTag: () => unwrapTag
36
+ });
37
+ import { Context, Effect, FiberRef } from "effect";
38
+ var attachLogicUnitMeta2 = (logic, meta) => attachLogicUnitMeta(logic, meta);
39
+ var MODULE_INTERNAL = /* @__PURE__ */ Symbol.for("logix.module.internal");
40
+ var MODULE_DECLARED_EFFECTS = /* @__PURE__ */ Symbol.for("logix.module.effects.declared");
41
+ var is = (value) => {
42
+ if (!value || typeof value !== "object") return false;
43
+ const kind = value._kind;
44
+ if (kind !== "ModuleDef" && kind !== "Module") return false;
45
+ return Context.isTag(value.tag);
46
+ };
47
+ var hasImpl = (value) => {
48
+ if (!is(value)) return false;
49
+ return typeof value.impl === "object" && value.impl !== null && value.impl._tag === "ModuleImpl";
50
+ };
51
+ var unwrapTag = (module) => module.tag;
52
+ var unwrapImpl = (module) => module.impl;
53
+ var descriptor = (module, runtime) => {
54
+ const actionKeys = Object.keys(module.tag.shape?.actionMap ?? {});
55
+ const internal2 = module[MODULE_INTERNAL];
56
+ const logicUnits = internal2 ? internal2.mounted.map((u) => ({
57
+ kind: u.kind,
58
+ id: u.id,
59
+ derived: u.derived ? true : void 0,
60
+ name: u.name
61
+ })) : [];
62
+ const schemaKeys = module.schemas && typeof module.schemas === "object" ? Object.keys(module.schemas) : void 0;
63
+ const meta = module.meta && typeof module.meta === "object" ? module.meta : void 0;
64
+ const source = module.dev?.source;
65
+ return {
66
+ id: module.id,
67
+ moduleId: String(runtime.moduleId),
68
+ instanceId: String(runtime.instanceId),
69
+ actionKeys,
70
+ logicUnits,
71
+ schemaKeys,
72
+ meta,
73
+ source
74
+ };
75
+ };
76
+ var normalizeMountInput = (input) => {
77
+ if (Array.isArray(input)) {
78
+ return { logic: input[0], options: input[1] };
79
+ }
80
+ return { logic: input };
81
+ };
82
+ var resolveLogicUnit = (existing, logic, options) => {
83
+ const meta = getLogicUnitMeta(logic);
84
+ const explicitId = options?.id;
85
+ const defaultId = meta?.id;
86
+ const kind = (options?.kind ?? meta?.kind ?? "user").trim() || "user";
87
+ const name = options?.name ?? meta?.name ?? (typeof defaultId === "string" && defaultId.length > 0 ? defaultId : void 0);
88
+ const source = options?.source ?? meta?.source;
89
+ if (typeof explicitId === "string" && explicitId.trim().length > 0) {
90
+ return {
91
+ id: explicitId.trim(),
92
+ derived: false,
93
+ kind,
94
+ name,
95
+ source,
96
+ logic,
97
+ origin: { explicitId: explicitId.trim(), defaultId }
98
+ };
99
+ }
100
+ if (typeof defaultId === "string" && defaultId.trim().length > 0) {
101
+ return {
102
+ id: defaultId.trim(),
103
+ derived: false,
104
+ kind,
105
+ name,
106
+ source,
107
+ logic,
108
+ origin: { defaultId: defaultId.trim() }
109
+ };
110
+ }
111
+ const used = new Set(existing.map((u) => u.id));
112
+ const baseRaw = (name ?? kind ?? "logic").trim() || "logic";
113
+ const base = baseRaw.replace(/\s+/g, "_");
114
+ let n = 1;
115
+ while (used.has(`${base}#${n}`)) n += 1;
116
+ const derivedId = `${base}#${n}`;
117
+ return {
118
+ id: derivedId,
119
+ derived: true,
120
+ kind,
121
+ name: name ?? baseRaw,
122
+ source,
123
+ logic,
124
+ origin: { derivedBase: baseRaw }
125
+ };
126
+ };
127
+ var mountLogicUnit = (current, overrides, input) => {
128
+ const nextUnit = resolveLogicUnit(current, input.logic, input.options);
129
+ updateLogicUnitMeta(nextUnit.logic, {
130
+ resolvedId: nextUnit.id,
131
+ resolvedIdKind: nextUnit.derived ? "derived" : "explicit",
132
+ resolvedKind: nextUnit.kind,
133
+ resolvedName: nextUnit.name,
134
+ resolvedSource: nextUnit.source
135
+ });
136
+ const prevIndex = current.findIndex((u) => u.id === nextUnit.id);
137
+ if (prevIndex < 0) {
138
+ return { mounted: [...current, nextUnit], overrides };
139
+ }
140
+ const prev = current[prevIndex];
141
+ const nextMounted = [...current.slice(0, prevIndex), ...current.slice(prevIndex + 1), nextUnit];
142
+ const nextOverrides = [
143
+ ...overrides,
144
+ {
145
+ id: nextUnit.id,
146
+ from: {
147
+ kind: prev.kind,
148
+ name: prev.name,
149
+ source: prev.source,
150
+ order: prevIndex
151
+ },
152
+ to: {
153
+ kind: nextUnit.kind,
154
+ name: nextUnit.name,
155
+ source: nextUnit.source,
156
+ order: nextMounted.length - 1
157
+ }
158
+ }
159
+ ];
160
+ return { mounted: nextMounted, overrides: nextOverrides };
161
+ };
162
+ var formatSource = (source) => {
163
+ if (!source) return "unknown";
164
+ return `${source.file}:${source.line}:${source.column}`;
165
+ };
166
+ var makeOverrideDiagnosticsLogic = (tag, overrides) => {
167
+ if (overrides.length === 0) {
168
+ return Effect.void;
169
+ }
170
+ return tag.logic(
171
+ () => Effect.gen(function* () {
172
+ if (!isDevEnv()) return;
173
+ const diagnosticsLevel = yield* FiberRef.get(internal.currentDiagnosticsLevel);
174
+ if (diagnosticsLevel === "off") return;
175
+ const runtime = yield* tag;
176
+ yield* Effect.forEach(
177
+ overrides,
178
+ (o) => record({
179
+ type: "diagnostic",
180
+ moduleId: runtime.moduleId,
181
+ instanceId: runtime.instanceId,
182
+ code: "module_logic::override",
183
+ severity: "warning",
184
+ message: `logicUnitId "${o.id}" overridden (last-write-wins).`,
185
+ hint: `from(#${o.from.order}) kind=${o.from.kind} name=${o.from.name ?? "unknown"} source=${formatSource(o.from.source)}
186
+ to(#${o.to.order}) kind=${o.to.kind} name=${o.to.name ?? "unknown"} source=${formatSource(o.to.source)}`,
187
+ kind: "logic_unit_override"
188
+ }),
189
+ { discard: true }
190
+ );
191
+ })
192
+ );
193
+ };
194
+ var makeDeclaredEffectsLogic = (tag, effects, moduleId) => {
195
+ if (!effects || typeof effects !== "object" || Object.keys(effects).length === 0) {
196
+ return Effect.void;
197
+ }
198
+ const logic = tag.logic(($) => ({
199
+ setup: Effect.gen(function* () {
200
+ const actions = $.actions;
201
+ const effectApi = $.effect;
202
+ if (typeof effectApi !== "function") return;
203
+ const wrappedHandlers = /* @__PURE__ */ new WeakMap();
204
+ for (const actionTag of Object.keys(effects).sort()) {
205
+ const token = actions[actionTag];
206
+ if (!isActionToken(token)) continue;
207
+ const handlers = effects[actionTag];
208
+ if (!Array.isArray(handlers)) continue;
209
+ for (const handler of handlers) {
210
+ if (typeof handler !== "function") continue;
211
+ let wrapped = wrappedHandlers.get(handler);
212
+ if (!wrapped) {
213
+ wrapped = (payload) => handler($, payload);
214
+ wrappedHandlers.set(handler, wrapped);
215
+ }
216
+ yield* effectApi(token, wrapped);
217
+ }
218
+ }
219
+ }),
220
+ run: Effect.void
221
+ }));
222
+ attachLogicUnitMeta(logic, {
223
+ id: "__logix_internal:effects:declared",
224
+ kind: "internal",
225
+ name: "effects:declared",
226
+ moduleId
227
+ });
228
+ return logic;
229
+ };
230
+ var makeLogicFactory = (selfModule) => {
231
+ const tag = selfModule.tag;
232
+ return (build, options) => {
233
+ const eff = tag.logic((api) => {
234
+ const withSelf = Object.create(api);
235
+ withSelf.self = Effect.suspend(() => api.use(selfModule));
236
+ return build(withSelf);
237
+ });
238
+ const meta = {
239
+ id: options?.id,
240
+ kind: options?.kind,
241
+ name: options?.name,
242
+ source: options?.source,
243
+ moduleId: selfModule.id
244
+ };
245
+ return attachLogicUnitMeta2(eff, meta);
246
+ };
247
+ };
248
+ var mergeMakeDef = (base, extend) => {
249
+ const baseActions = base.actions;
250
+ const extActions = extend?.actions ?? {};
251
+ for (const key of Object.keys(extActions)) {
252
+ if (key in baseActions && baseActions[key] !== extActions[key]) {
253
+ throw new Error(
254
+ `[Logix.Module.make] action key "${key}" already exists; overriding action schemas is not supported (define a new action tag instead).`
255
+ );
256
+ }
257
+ }
258
+ const mergedActionDefs = { ...base.actions, ...extend?.actions };
259
+ const actions = normalizeActions(mergedActionDefs);
260
+ const mergeEffects = () => {
261
+ const baseEffects = base.effects ?? {};
262
+ const extEffects = extend?.effects ?? {};
263
+ const keys = Array.from(/* @__PURE__ */ new Set([...Object.keys(baseEffects), ...Object.keys(extEffects)])).sort();
264
+ if (keys.length === 0) return void 0;
265
+ const out = {};
266
+ for (const key of keys) {
267
+ if (!(key in actions)) {
268
+ throw new Error(`[Logix.Module.make] effect key "${key}" does not exist in actionMap.`);
269
+ }
270
+ const baseValue = baseEffects[key];
271
+ const extValue = extEffects[key];
272
+ const baseArr = Array.isArray(baseValue) ? baseValue : baseValue === void 0 ? [] : null;
273
+ const extArr = Array.isArray(extValue) ? extValue : extValue === void 0 ? [] : null;
274
+ if (baseArr === null) {
275
+ throw new Error(`[Logix.Module.make] effects["${key}"] must be an array of handlers.`);
276
+ }
277
+ if (extArr === null) {
278
+ throw new Error(`[Logix.Module.make] effects["${key}"] must be an array of handlers.`);
279
+ }
280
+ const merged = [...baseArr, ...extArr].filter((h) => h !== void 0);
281
+ for (const h of merged) {
282
+ if (typeof h !== "function") {
283
+ throw new Error(`[Logix.Module.make] effects["${key}"] handlers must be functions.`);
284
+ }
285
+ }
286
+ if (merged.length > 0) {
287
+ out[key] = merged;
288
+ }
289
+ }
290
+ return Object.keys(out).length > 0 ? out : void 0;
291
+ };
292
+ const effects = mergeEffects();
293
+ const wrapImmerReducers = (mutators) => {
294
+ if (!mutators) return {};
295
+ const out = {};
296
+ for (const key of Object.keys(mutators)) {
297
+ const mutator = mutators[key];
298
+ if (typeof mutator !== "function") continue;
299
+ out[key] = Reducer.mutate(mutator);
300
+ }
301
+ return out;
302
+ };
303
+ const reducers = {
304
+ ...wrapImmerReducers(base.immerReducers),
305
+ ...base.reducers ?? {},
306
+ ...wrapImmerReducers(extend?.immerReducers),
307
+ ...extend?.reducers ?? {}
308
+ };
309
+ for (const key of Object.keys(reducers)) {
310
+ if (!(key in actions)) {
311
+ throw new Error(`[Logix.Module.make] reducer key "${key}" does not exist in actionMap.`);
312
+ }
313
+ }
314
+ const schemas = base.schemas || extend?.schemas ? { ...base.schemas ?? {}, ...extend?.schemas ?? {} } : void 0;
315
+ const meta = base.meta || extend?.meta ? { ...base.meta ?? {}, ...extend?.meta ?? {} } : void 0;
316
+ const services = base.services || extend?.services ? { ...base.services ?? {}, ...extend?.services ?? {} } : void 0;
317
+ const dev = base.dev || extend?.dev ? { ...base.dev ?? {}, ...extend?.dev ?? {} } : void 0;
318
+ return {
319
+ ...base,
320
+ actions,
321
+ reducers: Object.keys(reducers).length > 0 ? reducers : void 0,
322
+ effects,
323
+ schemas,
324
+ meta,
325
+ services,
326
+ dev
327
+ };
328
+ };
329
+ var Reducer2 = Reducer;
330
+ function make2(id, def, extend) {
331
+ const merged = mergeMakeDef(def, extend);
332
+ const tag = make(id, {
333
+ state: merged.state,
334
+ actions: merged.actions,
335
+ reducers: merged.reducers,
336
+ traits: merged.traits
337
+ });
338
+ if (merged.effects && typeof merged.effects === "object" && Object.keys(merged.effects).length > 0) {
339
+ Object.defineProperty(tag, MODULE_DECLARED_EFFECTS, {
340
+ value: merged.effects,
341
+ enumerable: false,
342
+ configurable: true,
343
+ writable: false
344
+ });
345
+ }
346
+ const base = {
347
+ _kind: "ModuleDef",
348
+ id,
349
+ tag,
350
+ shape: tag.shape,
351
+ stateSchema: tag.stateSchema,
352
+ actionSchema: tag.actionSchema,
353
+ actions: merged.actions,
354
+ reducers: merged.reducers,
355
+ effects: merged.effects,
356
+ live: tag.live,
357
+ schemas: merged.schemas,
358
+ meta: merged.meta,
359
+ services: merged.services,
360
+ dev: merged.dev
361
+ };
362
+ base.logic = makeLogicFactory(base);
363
+ base.implement = (config) => {
364
+ const initial = config.initial;
365
+ const imports = config.imports;
366
+ const processes = config.processes;
367
+ const stateTransaction = config.stateTransaction;
368
+ const mountedResult = (config.logics ?? []).reduce(
369
+ (acc, logic) => mountLogicUnit(acc.mounted, acc.overrides, { logic }),
370
+ { mounted: [], overrides: [] }
371
+ );
372
+ const buildImpl = (state) => {
373
+ const diagnosticsLogic = makeOverrideDiagnosticsLogic(tag, state.overrides);
374
+ const declaredEffectsLogic = makeDeclaredEffectsLogic(tag, merged.effects, id);
375
+ const allLogics = [...state.mounted.map((u) => u.logic), declaredEffectsLogic, diagnosticsLogic];
376
+ let impl = tag.implement({
377
+ initial,
378
+ logics: allLogics,
379
+ imports,
380
+ processes,
381
+ stateTransaction
382
+ });
383
+ for (const layer of state.layers) {
384
+ impl = impl.withLayer(layer);
385
+ }
386
+ return impl;
387
+ };
388
+ const createModule = (state) => {
389
+ const internal2 = {
390
+ initial,
391
+ imports,
392
+ processes,
393
+ stateTransaction,
394
+ mounted: state.mounted,
395
+ overrides: state.overrides,
396
+ layers: state.layers,
397
+ rebuild: () => buildImpl(state)
398
+ };
399
+ const mod = {
400
+ ...base,
401
+ _kind: "Module",
402
+ impl: buildImpl(state)
403
+ };
404
+ Object.defineProperty(mod, MODULE_INTERNAL, {
405
+ value: internal2,
406
+ enumerable: false,
407
+ configurable: true
408
+ });
409
+ mod.logic = makeLogicFactory(mod);
410
+ mod.withLogic = (logic, options) => mod.withLogics([logic, options]);
411
+ mod.withLogics = (...inputs) => {
412
+ const current = mod[MODULE_INTERNAL];
413
+ const normalized = inputs.map(normalizeMountInput);
414
+ const next = normalized.reduce((acc, item) => mountLogicUnit(acc.mounted, acc.overrides, item), {
415
+ mounted: current.mounted,
416
+ overrides: current.overrides
417
+ });
418
+ return createModule({
419
+ mounted: next.mounted,
420
+ overrides: next.overrides,
421
+ layers: current.layers
422
+ });
423
+ };
424
+ mod.withLayer = (layer) => {
425
+ const current = mod[MODULE_INTERNAL];
426
+ return createModule({
427
+ mounted: current.mounted,
428
+ overrides: current.overrides,
429
+ layers: [...current.layers, layer]
430
+ });
431
+ };
432
+ mod.withLayers = (...layers) => layers.reduce((acc, layer) => acc.withLayer(layer), mod);
433
+ return mod;
434
+ };
435
+ return createModule({
436
+ mounted: mountedResult.mounted,
437
+ overrides: mountedResult.overrides,
438
+ layers: []
439
+ });
440
+ };
441
+ return base;
442
+ }
443
+ var Manage = {
444
+ make: (config) => ({
445
+ kind: config.kind,
446
+ make: config.define
447
+ })
448
+ };
449
+
450
+ export {
451
+ is,
452
+ hasImpl,
453
+ unwrapTag,
454
+ unwrapImpl,
455
+ descriptor,
456
+ Reducer2 as Reducer,
457
+ make2 as make,
458
+ Manage,
459
+ Module_exports
460
+ };
461
+ //# sourceMappingURL=chunk-OGWBVHB3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Module.ts"],"sourcesContent":["import { Context, Effect, FiberRef, Layer, Schema } from 'effect'\nimport * as Debug from './Debug.js'\nimport * as Logic from './Logic.js'\nimport * as ModuleTagNS from './ModuleTag.js'\nimport * as Action from './internal/action.js'\nimport { isDevEnv } from './internal/runtime/core/env.js'\nimport * as LogicUnitMetaInternal from './internal/runtime/core/LogicUnitMeta.js'\nimport type {\n ActionsFromMap,\n ActionOf,\n AnyModuleShape,\n AnySchema,\n BoundApi,\n ModuleLike,\n ModuleHandle,\n ModuleImpl,\n ModuleImplementStateTransactionOptions,\n ModuleLogic,\n ModuleRuntime,\n ModuleTag,\n ModuleShape,\n MutatorsFromMap,\n ReducersFromMap,\n StateChangeWithMeta,\n StateCommitMeta,\n StateCommitMode,\n StateCommitPriority,\n StateOf,\n} from './internal/module.js'\n\n/**\n * Module (definition object) public API.\n *\n * - Domain factories (Form / CRUD / ...) should return this object.\n * - `.tag` is the identity anchor (ModuleTag/Context.Tag), used by `$.use(...)` and Env injection.\n * - `.impl` is the assembly blueprint (ModuleImpl), consumed by React/Runtime entry points.\n * - `.logic()` only produces the logic value; `.withLogic/withLayer(s)` changes the runnable shape (immutable: returns a new object).\n */\n\nexport type {\n AnySchema,\n AnyModuleShape,\n ModuleShape,\n ModuleLogic,\n ModuleImpl,\n ModuleRuntime,\n ModuleHandle,\n ModuleTag,\n StateOf,\n ActionOf,\n ActionsFromMap,\n MutatorsFromMap,\n ReducersFromMap,\n BoundApi,\n StateCommitMode,\n StateCommitPriority,\n StateCommitMeta,\n StateChangeWithMeta,\n} from './internal/module.js'\n\nexport interface DevSource {\n readonly file: string\n readonly line: number\n readonly column: number\n}\n\nexport interface ModuleDev {\n readonly source?: DevSource\n}\n\nexport interface LogicUnitOptions {\n readonly id?: string\n readonly kind?: string\n readonly name?: string\n readonly source?: DevSource\n}\n\nexport interface MountedLogicUnitSummary {\n readonly kind: string\n readonly id: string\n readonly derived?: boolean\n readonly name?: string\n}\n\nexport interface ModuleDescriptor {\n readonly id: string\n readonly moduleId: string\n readonly instanceId: string\n readonly actionKeys: ReadonlyArray<string>\n readonly logicUnits: ReadonlyArray<MountedLogicUnitSummary>\n readonly schemaKeys?: ReadonlyArray<string>\n readonly meta?: Record<string, unknown>\n readonly source?: DevSource\n}\n\nexport type HandleExtendFn<Sh extends AnyModuleShape, Ext extends object> = (\n runtime: ModuleRuntime<StateOf<Sh>, ActionOf<Sh>>,\n base: ModuleHandle<Sh>,\n) => Ext | (ModuleHandle<Sh> & Ext) | null | undefined\n\ntype LogicUnitMeta = LogicUnitMetaInternal.LogicUnitMeta\nconst attachLogicUnitMeta = <L extends object>(logic: L, meta: LogicUnitMeta): L =>\n LogicUnitMetaInternal.attachLogicUnitMeta(logic, meta as any) as any\n\ntype NoInfer_<T> = [T][T extends any ? 0 : never]\n\ntype MountedLogicUnit<Sh extends AnyModuleShape> = {\n readonly id: string\n readonly derived: boolean\n readonly kind: string\n readonly name?: string\n readonly source?: DevSource\n readonly logic: ModuleLogic<Sh, any, any>\n readonly origin?: {\n readonly explicitId?: string\n readonly defaultId?: string\n readonly derivedBase?: string\n }\n}\n\ntype LogicOverrideWarning = {\n readonly id: string\n readonly from: Pick<MountedLogicUnit<any>, 'kind' | 'name' | 'source'> & {\n readonly order: number\n }\n readonly to: Pick<MountedLogicUnit<any>, 'kind' | 'name' | 'source'> & {\n readonly order: number\n }\n}\n\ntype ModuleInternal<Id extends string, Sh extends AnyModuleShape> = {\n readonly initial: StateOf<Sh>\n readonly imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n readonly processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n readonly stateTransaction?: ModuleImplementStateTransactionOptions\n readonly mounted: ReadonlyArray<MountedLogicUnit<Sh>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n readonly layers: ReadonlyArray<Layer.Layer<any, never, any>>\n readonly rebuild: () => ModuleImpl<Id, Sh, any>\n}\n\nconst MODULE_INTERNAL = Symbol.for('logix.module.internal')\nconst MODULE_DECLARED_EFFECTS = Symbol.for('logix.module.effects.declared')\n\ntype ModuleDefBase<\n Id extends string = string,\n Sh extends AnyModuleShape = AnyModuleShape,\n Ext extends object = {},\n> = ModuleLike<Id, Sh, Ext> & {\n readonly shape: Sh\n readonly stateSchema: Sh['stateSchema']\n readonly actionSchema: Sh['actionSchema']\n /**\n * Raw ActionMap (tag -> payload schema).\n * - Mainly for DX/reflection; runtime contract is still based on tag.shape/actionSchema.\n */\n readonly actions: Sh['actionMap']\n /**\n * Raw reducers (if provided by the definition).\n * - Mainly for DX/reflection; runtime normalizes them into primary reducers inside ModuleTag/ModuleFactory.\n */\n readonly reducers?: ReducersFromMap<Sh['stateSchema'], Sh['actionMap']>\n readonly live: <R = never, E = never>(\n initial: StateOf<Sh>,\n ...logics: Array<ModuleLogic<Sh, R, E>>\n ) => Layer.Layer<ModuleRuntime<StateOf<Sh>, ActionOf<Sh>>, E, R>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n readonly logic: <R = never, E = unknown>(\n build: (\n api: BoundApi<Sh, R> & {\n readonly self: Logic.Of<Sh, R, ModuleHandle<Sh> & Ext, never>\n },\n ) => ModuleLogic<Sh, R, E>,\n options?: LogicUnitOptions,\n ) => ModuleLogic<Sh, R, E>\n}\n\nexport type AnyModule = {\n readonly _kind: 'Module'\n readonly id: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly impl: ModuleImpl<any, AnyModuleShape, any>\n readonly actions: Record<string, AnySchema>\n readonly reducers?: Record<string, unknown>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\nexport type Module<Id extends string, Sh extends AnyModuleShape, Ext extends object = {}, R = never> = ModuleDefBase<\n Id,\n Sh,\n Ext\n> & {\n readonly _kind: 'Module'\n readonly impl: ModuleImpl<Id, Sh, R>\n readonly withLogic: (logic: ModuleLogic<Sh, any, any>, options?: LogicUnitOptions) => Module<Id, Sh, Ext, R>\n readonly withLogics: (...inputs: ReadonlyArray<MountInput<Sh>>) => Module<Id, Sh, Ext, R>\n readonly withLayer: (layer: Layer.Layer<any, never, any>) => Module<Id, Sh, Ext, R>\n readonly withLayers: (...layers: ReadonlyArray<Layer.Layer<any, never, any>>) => Module<Id, Sh, Ext, R>\n}\n\nexport type ModuleDef<Id extends string, Sh extends AnyModuleShape, Ext extends object = {}> = ModuleDefBase<\n Id,\n Sh,\n Ext\n> & {\n readonly _kind: 'ModuleDef'\n readonly implement: <R = never>(config: {\n readonly initial: StateOf<Sh>\n readonly logics?: Array<ModuleLogic<Sh, R, any>>\n readonly imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n readonly processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n readonly stateTransaction?: ModuleImplementStateTransactionOptions\n }) => Module<Id, Sh, Ext, R>\n}\n\nexport const is = (value: unknown): value is ModuleDefBase => {\n if (!value || typeof value !== 'object') return false\n const kind = (value as any)._kind\n if (kind !== 'ModuleDef' && kind !== 'Module') return false\n return Context.isTag((value as any).tag)\n}\n\nexport const hasImpl = (value: unknown): value is AnyModule => {\n if (!is(value)) return false\n return (\n typeof (value as any).impl === 'object' && (value as any).impl !== null && (value as any).impl._tag === 'ModuleImpl'\n )\n}\n\nexport const unwrapTag = <Id extends string, Sh extends AnyModuleShape>(\n module: ModuleLike<Id, Sh, any>,\n): ModuleTag<Id, Sh> => module.tag\n\nexport const unwrapImpl = <Id extends string, Sh extends AnyModuleShape>(\n module: AnyModule & { readonly id: Id; readonly tag: ModuleTag<Id, Sh> },\n): ModuleImpl<Id, Sh, any> => (module as any).impl as ModuleImpl<Id, Sh, any>\n\nexport const descriptor = (\n module: ModuleDefBase<string, AnyModuleShape, any>,\n runtime: ModuleRuntime<any, any>,\n): ModuleDescriptor => {\n const actionKeys = Object.keys((module.tag as any).shape?.actionMap ?? {})\n\n const internal = (module as any)[MODULE_INTERNAL] as ModuleInternal<string, AnyModuleShape> | undefined\n\n const logicUnits: ReadonlyArray<MountedLogicUnitSummary> = internal\n ? internal.mounted.map((u) => ({\n kind: u.kind,\n id: u.id,\n derived: u.derived ? true : undefined,\n name: u.name,\n }))\n : []\n\n const schemaKeys = module.schemas && typeof module.schemas === 'object' ? Object.keys(module.schemas) : undefined\n\n const meta = module.meta && typeof module.meta === 'object' ? module.meta : undefined\n\n const source = module.dev?.source\n\n return {\n id: module.id,\n moduleId: String(runtime.moduleId),\n instanceId: String(runtime.instanceId),\n actionKeys,\n logicUnits,\n schemaKeys,\n meta,\n source,\n }\n}\n\ntype MountInput<Sh extends AnyModuleShape> =\n | ModuleLogic<Sh, any, any>\n | readonly [ModuleLogic<Sh, any, any>, LogicUnitOptions]\n\nconst normalizeMountInput = <Sh extends AnyModuleShape>(\n input: MountInput<Sh>,\n): { readonly logic: ModuleLogic<Sh, any, any>; readonly options?: LogicUnitOptions } => {\n if (Array.isArray(input)) {\n return { logic: input[0], options: input[1] }\n }\n return { logic: input as ModuleLogic<Sh, any, any> }\n}\n\nconst resolveLogicUnit = <Sh extends AnyModuleShape>(\n existing: ReadonlyArray<MountedLogicUnit<Sh>>,\n logic: ModuleLogic<Sh, any, any>,\n options?: LogicUnitOptions,\n): MountedLogicUnit<Sh> => {\n const meta = LogicUnitMetaInternal.getLogicUnitMeta(logic)\n const explicitId = options?.id\n const defaultId = meta?.id\n\n const kind = (options?.kind ?? meta?.kind ?? 'user').trim() || 'user'\n const name =\n options?.name ?? meta?.name ?? (typeof defaultId === 'string' && defaultId.length > 0 ? defaultId : undefined)\n\n const source = options?.source ?? meta?.source\n\n if (typeof explicitId === 'string' && explicitId.trim().length > 0) {\n return {\n id: explicitId.trim(),\n derived: false,\n kind,\n name,\n source,\n logic,\n origin: { explicitId: explicitId.trim(), defaultId },\n }\n }\n\n if (typeof defaultId === 'string' && defaultId.trim().length > 0) {\n return {\n id: defaultId.trim(),\n derived: false,\n kind,\n name,\n source,\n logic,\n origin: { defaultId: defaultId.trim() },\n }\n }\n\n // Derived id: reproducible within the same composition order.\n const used = new Set(existing.map((u) => u.id))\n const baseRaw = (name ?? kind ?? 'logic').trim() || 'logic'\n const base = baseRaw.replace(/\\s+/g, '_')\n\n let n = 1\n while (used.has(`${base}#${n}`)) n += 1\n const derivedId = `${base}#${n}`\n\n return {\n id: derivedId,\n derived: true,\n kind,\n name: name ?? baseRaw,\n source,\n logic,\n origin: { derivedBase: baseRaw },\n }\n}\n\nconst mountLogicUnit = <Sh extends AnyModuleShape>(\n current: ReadonlyArray<MountedLogicUnit<Sh>>,\n overrides: ReadonlyArray<LogicOverrideWarning>,\n input: { readonly logic: ModuleLogic<Sh, any, any>; readonly options?: LogicUnitOptions },\n): {\n readonly mounted: ReadonlyArray<MountedLogicUnit<Sh>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n} => {\n const nextUnit = resolveLogicUnit(current, input.logic, input.options)\n // Write the resolved verdict back to logic meta for provenance/diagnostics (aligned with 022-module).\n LogicUnitMetaInternal.updateLogicUnitMeta(nextUnit.logic as any, {\n resolvedId: nextUnit.id,\n resolvedIdKind: nextUnit.derived ? 'derived' : 'explicit',\n resolvedKind: nextUnit.kind,\n resolvedName: nextUnit.name,\n resolvedSource: nextUnit.source as any,\n })\n\n const prevIndex = current.findIndex((u) => u.id === nextUnit.id)\n if (prevIndex < 0) {\n return { mounted: [...current, nextUnit], overrides }\n }\n\n const prev = current[prevIndex]\n const nextMounted = [...current.slice(0, prevIndex), ...current.slice(prevIndex + 1), nextUnit]\n\n const nextOverrides: ReadonlyArray<LogicOverrideWarning> = [\n ...overrides,\n {\n id: nextUnit.id,\n from: {\n kind: prev.kind,\n name: prev.name,\n source: prev.source,\n order: prevIndex,\n },\n to: {\n kind: nextUnit.kind,\n name: nextUnit.name,\n source: nextUnit.source,\n order: nextMounted.length - 1,\n },\n },\n ]\n\n return { mounted: nextMounted, overrides: nextOverrides }\n}\n\nconst formatSource = (source?: DevSource): string => {\n if (!source) return 'unknown'\n return `${source.file}:${source.line}:${source.column}`\n}\n\nconst makeOverrideDiagnosticsLogic = (\n tag: ModuleTag<any, AnyModuleShape>,\n overrides: ReadonlyArray<LogicOverrideWarning>,\n): ModuleLogic<any, any, never> => {\n if (overrides.length === 0) {\n return Effect.void as any\n }\n\n return tag.logic(() =>\n Effect.gen(function* () {\n if (!isDevEnv()) return\n\n const diagnosticsLevel = yield* FiberRef.get(Debug.internal.currentDiagnosticsLevel as any)\n if (diagnosticsLevel === 'off') return\n\n const runtime = (yield* tag) as ModuleRuntime<any, any>\n\n yield* Effect.forEach(\n overrides,\n (o) =>\n Debug.record({\n type: 'diagnostic',\n moduleId: runtime.moduleId,\n instanceId: runtime.instanceId,\n code: 'module_logic::override',\n severity: 'warning',\n message: `logicUnitId \"${o.id}\" overridden (last-write-wins).`,\n hint:\n `from(#${o.from.order}) kind=${o.from.kind} name=${o.from.name ?? 'unknown'} source=${formatSource(o.from.source)}\\n` +\n `to(#${o.to.order}) kind=${o.to.kind} name=${o.to.name ?? 'unknown'} source=${formatSource(o.to.source)}`,\n kind: 'logic_unit_override',\n }),\n { discard: true },\n )\n }),\n )\n}\n\nconst makeDeclaredEffectsLogic = (\n tag: ModuleTag<any, AnyModuleShape>,\n effects: Record<string, ReadonlyArray<unknown> | undefined> | undefined,\n moduleId: string,\n): ModuleLogic<any, any, never> => {\n if (!effects || typeof effects !== 'object' || Object.keys(effects).length === 0) {\n return Effect.void as any\n }\n\n const logic = tag.logic(($) => ({\n setup: Effect.gen(function* () {\n const actions = ($ as any).actions as Record<string, Action.AnyActionToken>\n const effectApi = ($ as any).effect as\n | ((token: unknown, handler: (payload: unknown) => Effect.Effect<void, any, any>) => Effect.Effect<void, never, any>)\n | undefined\n if (typeof effectApi !== 'function') return\n\n const wrappedHandlers = new WeakMap<(...args: any[]) => any, (payload: unknown) => Effect.Effect<void, any, any>>()\n\n for (const actionTag of Object.keys(effects).sort()) {\n const token = actions[actionTag]\n if (!Action.isActionToken(token)) continue\n\n const handlers = effects[actionTag]\n if (!Array.isArray(handlers)) continue\n\n for (const handler of handlers) {\n if (typeof handler !== 'function') continue\n let wrapped = wrappedHandlers.get(handler)\n if (!wrapped) {\n wrapped = (payload: unknown) => (handler as any)($, payload)\n wrappedHandlers.set(handler, wrapped)\n }\n yield* effectApi(token, wrapped)\n }\n }\n }),\n run: Effect.void,\n })) as ModuleLogic<any, any, never>\n\n LogicUnitMetaInternal.attachLogicUnitMeta(logic as any, {\n id: '__logix_internal:effects:declared',\n kind: 'internal',\n name: 'effects:declared',\n moduleId,\n })\n\n return logic\n}\n\nconst makeLogicFactory = <Id extends string, Sh extends AnyModuleShape, Ext extends object>(\n selfModule: ModuleDefBase<Id, Sh, Ext>,\n): ModuleDefBase<Id, Sh, Ext>['logic'] => {\n const tag = selfModule.tag\n return (build, options) => {\n const eff = tag.logic((api) => {\n const withSelf = Object.create(api) as BoundApi<Sh, any> & {\n readonly self: Logic.Of<Sh, any, ModuleHandle<Sh> & Ext, never>\n }\n ;(withSelf as any).self = Effect.suspend(() => (api as any).use(selfModule as any))\n return build(withSelf as any)\n }) as ModuleLogic<Sh, any, any>\n\n const meta: LogicUnitMeta = {\n id: options?.id,\n kind: options?.kind,\n name: options?.name,\n source: options?.source,\n moduleId: selfModule.id,\n }\n\n return attachLogicUnitMeta(eff as any, meta) as any\n }\n}\n\ntype MakeDef<Id extends string, SSchema extends AnySchema, AMap extends Action.ActionDefs> = {\n readonly state: SSchema\n readonly actions: AMap\n readonly reducers?: ReducersFromMap<SSchema, NoInfer_<AMap>>\n readonly immerReducers?: MutatorsFromMap<SSchema, NoInfer_<AMap>>\n readonly effects?: EffectsFromMap<NoInfer_<AMap>>\n readonly traits?: unknown\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\ntype AnyActionMap = Action.ActionDefs\ntype EmptyActionMap = Record<never, never>\n\ntype PayloadOfActionDef<V> = V extends Schema.Schema<any, any, any>\n ? Schema.Schema.Type<V>\n : V extends Action.ActionToken<any, infer P, any>\n ? P\n : never\n\ntype DeclaredEffectHandler<Payload> = ($: unknown, payload: Payload) => Effect.Effect<void, any, any>\n\ntype EffectsFromMap<M extends AnyActionMap> = {\n readonly [K in keyof M]?: ReadonlyArray<DeclaredEffectHandler<PayloadOfActionDef<M[K]>>>\n}\n\ntype MergeActionMap<Base extends AnyActionMap, Ext extends AnyActionMap> = {\n readonly [K in keyof Base | keyof Ext]: K extends keyof Ext ? Ext[K] : K extends keyof Base ? Base[K] : never\n}\n\n/**\n * Module.make \"app-side extension/override\" parameters (a two-stage responsibility split: domain library author → app developer).\n *\n * - `actions`: add-only (cannot override existing action schema); used to extend actionMap.\n * - `reducers`: add and override; used to override domain reducers or provide reducers for new actions.\n * - Other reflective fields (schemas/meta/services/dev) are shallow-merged (last-write-wins).\n */\nexport type MakeExtendDef<\n SSchema extends AnySchema,\n BaseActions extends AnyActionMap,\n ExtActions extends AnyActionMap = EmptyActionMap,\n> = {\n readonly actions?: ExtActions\n readonly reducers?: ReducersFromMap<SSchema, MergeActionMap<BaseActions, ExtActions>>\n readonly immerReducers?: MutatorsFromMap<SSchema, MergeActionMap<BaseActions, ExtActions>>\n readonly effects?: EffectsFromMap<MergeActionMap<BaseActions, ExtActions>>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, unknown>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\nconst mergeMakeDef = <\n Id extends string,\n SSchema extends AnySchema,\n BaseActions extends AnyActionMap,\n ExtActions extends AnyActionMap,\n>(\n base: MakeDef<Id, SSchema, BaseActions>,\n extend?: MakeExtendDef<SSchema, BaseActions, ExtActions>,\n): MakeDef<Id, SSchema, MergeActionMap<BaseActions, ExtActions>> => {\n const baseActions = base.actions as Record<string, AnySchema>\n const extActions = (extend?.actions ?? {}) as Record<string, AnySchema>\n\n for (const key of Object.keys(extActions)) {\n if (key in baseActions && baseActions[key] !== extActions[key]) {\n throw new Error(\n `[Logix.Module.make] action key \"${key}\" already exists; overriding action schemas is not supported (define a new action tag instead).`,\n )\n }\n }\n\n const mergedActionDefs = { ...(base.actions as any), ...(extend?.actions as any) } as MergeActionMap<\n BaseActions,\n ExtActions\n >\n const actions = Action.normalizeActions(mergedActionDefs)\n\n const mergeEffects = (): Record<string, ReadonlyArray<unknown>> | undefined => {\n const baseEffects = (base.effects ?? {}) as Record<string, unknown>\n const extEffects = (extend?.effects ?? {}) as Record<string, unknown>\n\n const keys = Array.from(new Set([...Object.keys(baseEffects), ...Object.keys(extEffects)])).sort()\n if (keys.length === 0) return undefined\n\n const out: Record<string, ReadonlyArray<unknown>> = {}\n for (const key of keys) {\n if (!(key in actions)) {\n throw new Error(`[Logix.Module.make] effect key \"${key}\" does not exist in actionMap.`)\n }\n\n const baseValue = baseEffects[key]\n const extValue = extEffects[key]\n const baseArr = Array.isArray(baseValue) ? baseValue : baseValue === undefined ? [] : null\n const extArr = Array.isArray(extValue) ? extValue : extValue === undefined ? [] : null\n\n if (baseArr === null) {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] must be an array of handlers.`)\n }\n if (extArr === null) {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] must be an array of handlers.`)\n }\n\n const merged = [...baseArr, ...extArr].filter((h) => h !== undefined)\n for (const h of merged) {\n if (typeof h !== 'function') {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] handlers must be functions.`)\n }\n }\n\n if (merged.length > 0) {\n out[key] = merged as ReadonlyArray<unknown>\n }\n }\n\n return Object.keys(out).length > 0 ? out : undefined\n }\n\n const effects = mergeEffects()\n\n const wrapImmerReducers = (mutators?: Record<string, ((draft: unknown, payload: unknown) => void) | undefined>) => {\n if (!mutators) return {}\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(mutators)) {\n const mutator = mutators[key]\n if (typeof mutator !== 'function') continue\n out[key] = ModuleTagNS.Reducer.mutate(mutator as any)\n }\n return out\n }\n\n const reducers = {\n ...wrapImmerReducers(base.immerReducers as any),\n ...(base.reducers ?? {}),\n ...wrapImmerReducers(extend?.immerReducers as any),\n ...(extend?.reducers ?? {}),\n } as Record<string, unknown>\n\n for (const key of Object.keys(reducers)) {\n if (!(key in actions)) {\n throw new Error(`[Logix.Module.make] reducer key \"${key}\" does not exist in actionMap.`)\n }\n }\n\n const schemas =\n base.schemas || extend?.schemas ? { ...(base.schemas ?? {}), ...(extend?.schemas ?? {}) } : undefined\n\n const meta = base.meta || extend?.meta ? { ...(base.meta ?? {}), ...(extend?.meta ?? {}) } : undefined\n\n const services =\n base.services || extend?.services ? { ...(base.services ?? {}), ...(extend?.services ?? {}) } : undefined\n\n const dev = base.dev || extend?.dev ? { ...(base.dev ?? {}), ...(extend?.dev ?? {}) } : undefined\n\n return {\n ...base,\n actions: actions as any,\n reducers: Object.keys(reducers).length > 0 ? (reducers as any) : undefined,\n effects: effects as any,\n schemas,\n meta,\n services,\n dev,\n } as any\n}\n\nexport const Reducer = ModuleTagNS.Reducer\n\nexport type Shape<S extends AnySchema, M extends Action.ActionDefs> = ModuleShape<\n S,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<M>>>,\n Action.NormalizedActionTokens<M>\n>\n\nexport function make<\n Id extends string,\n SSchema extends AnySchema,\n AMap extends Action.ActionDefs,\n Ext extends object = {},\n>(\n id: Id,\n def: MakeDef<Id, SSchema, AMap>,\n): ModuleDef<\n Id,\n ModuleShape<\n SSchema,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<AMap>>>,\n Action.NormalizedActionTokens<AMap>\n >,\n Ext\n>\n\nexport function make<\n Id extends string,\n SSchema extends AnySchema,\n AMap extends Action.ActionDefs,\n Ext extends object = {},\n ExtActions extends Action.ActionDefs = EmptyActionMap,\n>(\n id: Id,\n def: MakeDef<Id, SSchema, AMap>,\n extend: MakeExtendDef<SSchema, NoInfer_<AMap>, ExtActions>,\n): ModuleDef<\n Id,\n ModuleShape<\n SSchema,\n Schema.Schema<ActionsFromMap<Action.NormalizedActionTokens<MergeActionMap<AMap, ExtActions>>>>,\n Action.NormalizedActionTokens<MergeActionMap<AMap, ExtActions>>\n >,\n Ext\n>\n\nexport function make(id: any, def: any, extend?: any): any {\n const merged = mergeMakeDef(def as any, extend as any)\n\n const tag = ModuleTagNS.make(id, {\n state: merged.state,\n actions: merged.actions,\n reducers: merged.reducers,\n traits: merged.traits,\n }) as unknown as ModuleTag<any, AnyModuleShape>\n\n if (merged.effects && typeof merged.effects === 'object' && Object.keys(merged.effects).length > 0) {\n Object.defineProperty(tag as any, MODULE_DECLARED_EFFECTS, {\n value: merged.effects,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n }\n\n const base: any = {\n _kind: 'ModuleDef' as const,\n id,\n tag,\n shape: tag.shape,\n stateSchema: tag.stateSchema,\n actionSchema: tag.actionSchema,\n actions: merged.actions,\n reducers: merged.reducers,\n effects: merged.effects,\n live: tag.live,\n schemas: merged.schemas,\n meta: merged.meta,\n services: merged.services,\n dev: merged.dev,\n }\n\n base.logic = makeLogicFactory(base as any)\n\n base.implement = (config: any) => {\n type Sh = AnyModuleShape\n\n const initial = config.initial as any\n const imports = config.imports as any\n const processes = config.processes as any\n const stateTransaction = config.stateTransaction as any\n\n const mountedResult = (config.logics ?? []).reduce(\n (\n acc: {\n mounted: ReadonlyArray<MountedLogicUnit<any>>\n overrides: ReadonlyArray<LogicOverrideWarning>\n },\n logic: any,\n ) => mountLogicUnit(acc.mounted, acc.overrides, { logic }),\n { mounted: [] as const, overrides: [] as const },\n )\n\n type State = {\n readonly mounted: ReadonlyArray<MountedLogicUnit<any>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n readonly layers: ReadonlyArray<Layer.Layer<any, never, any>>\n }\n\n const buildImpl = (state: State): ModuleImpl<any, AnyModuleShape, any> => {\n const diagnosticsLogic = makeOverrideDiagnosticsLogic(tag as any, state.overrides)\n const declaredEffectsLogic = makeDeclaredEffectsLogic(tag as any, merged.effects, id)\n const allLogics = [...state.mounted.map((u) => u.logic), declaredEffectsLogic, diagnosticsLogic]\n\n let impl = (tag as any).implement({\n initial,\n logics: allLogics,\n imports,\n processes,\n stateTransaction,\n }) as ModuleImpl<any, AnyModuleShape, any>\n\n for (const layer of state.layers) {\n impl = impl.withLayer(layer)\n }\n\n return impl\n }\n\n const createModule = (state: State): any => {\n const internal: ModuleInternal<any, AnyModuleShape> = {\n initial,\n imports,\n processes,\n stateTransaction,\n mounted: state.mounted,\n overrides: state.overrides,\n layers: state.layers,\n rebuild: () => buildImpl(state),\n }\n\n const mod: any = {\n ...base,\n _kind: 'Module' as const,\n impl: buildImpl(state),\n }\n\n Object.defineProperty(mod, MODULE_INTERNAL, {\n value: internal,\n enumerable: false,\n configurable: true,\n })\n\n mod.logic = makeLogicFactory(mod)\n\n mod.withLogic = (logic: any, options?: LogicUnitOptions) => mod.withLogics([logic, options] as any)\n\n mod.withLogics = (...inputs: ReadonlyArray<MountInput<any>>) => {\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n const normalized = inputs.map(normalizeMountInput)\n const next = normalized.reduce((acc, item) => mountLogicUnit(acc.mounted, acc.overrides, item as any), {\n mounted: current.mounted,\n overrides: current.overrides,\n })\n\n return createModule({\n mounted: next.mounted,\n overrides: next.overrides,\n layers: current.layers,\n })\n }\n\n mod.withLayer = (layer: Layer.Layer<any, never, any>) => {\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n return createModule({\n mounted: current.mounted,\n overrides: current.overrides,\n layers: [...current.layers, layer],\n })\n }\n\n mod.withLayers = (...layers: ReadonlyArray<Layer.Layer<any, never, any>>) =>\n layers.reduce((acc, layer) => acc.withLayer(layer), mod as any)\n\n return mod as any\n }\n\n return createModule({\n mounted: mountedResult.mounted,\n overrides: mountedResult.overrides,\n layers: [],\n })\n }\n\n return base\n}\n\nexport const Manage = {\n make: <D extends (...args: any[]) => AnyModule>(config: {\n readonly kind?: string\n readonly define: D\n }): { readonly kind?: string; readonly make: D } => ({\n kind: config.kind,\n make: config.define,\n }),\n} as const\n"],"mappings":"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","names":["Reducer","make","attachLogicUnitMeta","internal","Reducer","make"]}