@nicolastoulemont/std 0.7.2 → 0.8.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 (209) hide show
  1. package/README.md +571 -166
  2. package/dist/adt/index.d.mts +1 -1
  3. package/dist/adt/index.mjs +1 -1
  4. package/dist/adt-CPG_sa8q.mjs +2 -0
  5. package/dist/adt-CPG_sa8q.mjs.map +1 -0
  6. package/dist/brand/index.d.mts +1 -1
  7. package/dist/brand/index.mjs +1 -1
  8. package/dist/brand-DZgGDrAe.mjs +2 -0
  9. package/dist/brand-DZgGDrAe.mjs.map +1 -0
  10. package/dist/brand.types-B3NDX1vo.d.mts +62 -0
  11. package/dist/brand.types-B3NDX1vo.d.mts.map +1 -0
  12. package/dist/context/index.d.mts +1 -1
  13. package/dist/context/index.mjs +1 -1
  14. package/dist/{context-CCHj1nab.mjs → context-0xDbwtpx.mjs} +2 -2
  15. package/dist/context-0xDbwtpx.mjs.map +1 -0
  16. package/dist/{context-r8ESJiFn.d.mts → context-B2dWloPl.d.mts} +2 -18
  17. package/dist/context-B2dWloPl.d.mts.map +1 -0
  18. package/dist/data/index.d.mts +1 -1
  19. package/dist/data/index.mjs +1 -1
  20. package/dist/{data-BLXO4XwS.mjs → data-BHYPdqWZ.mjs} +2 -2
  21. package/dist/{data-BLXO4XwS.mjs.map → data-BHYPdqWZ.mjs.map} +1 -1
  22. package/dist/{discriminator.types-CTURejXz.d.mts → discriminator.types-C-ygT2S1.d.mts} +1 -1
  23. package/dist/discriminator.types-C-ygT2S1.d.mts.map +1 -0
  24. package/dist/{dual-CZhzZslG.mjs → dual-fN6OUwN_.mjs} +1 -1
  25. package/dist/{dual-CZhzZslG.mjs.map → dual-fN6OUwN_.mjs.map} +1 -1
  26. package/dist/duration/index.d.mts +2 -0
  27. package/dist/duration/index.mjs +1 -0
  28. package/dist/duration-CYoDHcOR.mjs +2 -0
  29. package/dist/duration-CYoDHcOR.mjs.map +1 -0
  30. package/dist/either/index.d.mts +1 -1
  31. package/dist/either/index.mjs +1 -1
  32. package/dist/{either-BMLPfvMl.mjs → either-G7uOu4Ar.mjs} +2 -2
  33. package/dist/either-G7uOu4Ar.mjs.map +1 -0
  34. package/dist/{equality-CoyUHWh9.mjs → equality-BX6BUidG.mjs} +1 -1
  35. package/dist/{equality-CoyUHWh9.mjs.map → equality-BX6BUidG.mjs.map} +1 -1
  36. package/dist/{flow-D8_tllWl.mjs → flow-CNyLsPGb.mjs} +1 -1
  37. package/dist/flow-CNyLsPGb.mjs.map +1 -0
  38. package/dist/functions/index.d.mts +1 -1
  39. package/dist/functions/index.mjs +1 -1
  40. package/dist/functions-ByAk682_.mjs +2 -0
  41. package/dist/functions-ByAk682_.mjs.map +1 -0
  42. package/dist/fx/index.d.mts +1 -1
  43. package/dist/fx/index.mjs +1 -1
  44. package/dist/fx-DUXDxwsU.mjs +2 -0
  45. package/dist/fx-DUXDxwsU.mjs.map +1 -0
  46. package/dist/{fx.runtime-DclEDyjY.mjs → fx.runtime-jQxh77s3.mjs} +2 -2
  47. package/dist/{fx.runtime-DclEDyjY.mjs.map → fx.runtime-jQxh77s3.mjs.map} +1 -1
  48. package/dist/{fx.types-DeEWEltG.d.mts → fx.types-BdN1EWxr.d.mts} +1 -1
  49. package/dist/{fx.types-DeEWEltG.d.mts.map → fx.types-BdN1EWxr.d.mts.map} +1 -1
  50. package/dist/{fx.types-Bg-Mmdm5.mjs → fx.types-DyQVgTS8.mjs} +1 -1
  51. package/dist/{fx.types-Bg-Mmdm5.mjs.map → fx.types-DyQVgTS8.mjs.map} +1 -1
  52. package/dist/index-B4WfexUL.d.mts +57 -0
  53. package/dist/index-B4WfexUL.d.mts.map +1 -0
  54. package/dist/{index-DXbYlSnB.d.mts → index-BA0EsFxS.d.mts} +5 -74
  55. package/dist/index-BA0EsFxS.d.mts.map +1 -0
  56. package/dist/{index-UzMbg1dh.d.mts → index-BqJ1GWAF.d.mts} +20 -56
  57. package/dist/index-BqJ1GWAF.d.mts.map +1 -0
  58. package/dist/index-BsPOcZk9.d.mts +96 -0
  59. package/dist/index-BsPOcZk9.d.mts.map +1 -0
  60. package/dist/{index-DEAWPlcI.d.mts → index-CIvNgjsx.d.mts} +24 -56
  61. package/dist/index-CIvNgjsx.d.mts.map +1 -0
  62. package/dist/{index-B_iY5tq0.d.mts → index-CNTYbcY9.d.mts} +1 -21
  63. package/dist/index-CNTYbcY9.d.mts.map +1 -0
  64. package/dist/{index-Cq2IFito.d.mts → index-Ctqe1fD1.d.mts} +3 -17
  65. package/dist/index-Ctqe1fD1.d.mts.map +1 -0
  66. package/dist/{index-B_wWGszy.d.mts → index-D7mFNjot.d.mts} +1 -5
  67. package/dist/index-D7mFNjot.d.mts.map +1 -0
  68. package/dist/{index-CUZn-ohG.d.mts → index-D8rDE60Y.d.mts} +23 -54
  69. package/dist/index-D8rDE60Y.d.mts.map +1 -0
  70. package/dist/{index-By6dNRc4.d.mts → index-DR7hzXU4.d.mts} +3 -23
  71. package/dist/{index-By6dNRc4.d.mts.map → index-DR7hzXU4.d.mts.map} +1 -1
  72. package/dist/{index-DKS1g1oC.d.mts → index-DUki2Bcp.d.mts} +54 -45
  73. package/dist/index-DUki2Bcp.d.mts.map +1 -0
  74. package/dist/{index-BNQ9xSAz.d.mts → index-MsJqfQu0.d.mts} +64 -70
  75. package/dist/index-MsJqfQu0.d.mts.map +1 -0
  76. package/dist/{index-CGiLfREk.d.mts → index-UINIHFuh.d.mts} +39 -15
  77. package/dist/index-UINIHFuh.d.mts.map +1 -0
  78. package/dist/{index-BiiE8NS7.d.mts → index-crtzMG48.d.mts} +14 -23
  79. package/dist/index-crtzMG48.d.mts.map +1 -0
  80. package/dist/{index-B1-tBzc0.d.mts → index-dCRymj_g.d.mts} +23 -71
  81. package/dist/{index-B1-tBzc0.d.mts.map → index-dCRymj_g.d.mts.map} +1 -1
  82. package/dist/index-uE3S3Krx.d.mts +245 -0
  83. package/dist/index-uE3S3Krx.d.mts.map +1 -0
  84. package/dist/index.d.mts +21 -19
  85. package/dist/index.mjs +1 -1
  86. package/dist/layer/index.d.mts +1 -1
  87. package/dist/layer/index.mjs +1 -1
  88. package/dist/{layer-BttmtDrs.mjs → layer-CKtH7TRL.mjs} +2 -2
  89. package/dist/layer-CKtH7TRL.mjs.map +1 -0
  90. package/dist/{layer.types-DgpCIsk_.d.mts → layer.types-BB0MrvLg.d.mts} +4 -4
  91. package/dist/{layer.types-DgpCIsk_.d.mts.map → layer.types-BB0MrvLg.d.mts.map} +1 -1
  92. package/dist/multithread/index.d.mts +1 -1
  93. package/dist/multithread/index.mjs +1 -1
  94. package/dist/{multithread-xUUh4eLn.mjs → multithread-Cyc8Bz45.mjs} +2 -2
  95. package/dist/multithread-Cyc8Bz45.mjs.map +1 -0
  96. package/dist/option/index.d.mts +1 -1
  97. package/dist/option/index.mjs +1 -1
  98. package/dist/{option-Tfbo4wty.mjs → option-C2iCxAuJ.mjs} +2 -2
  99. package/dist/option-C2iCxAuJ.mjs.map +1 -0
  100. package/dist/{option.types-D1mm0zUb.mjs → option.types-CbY_swma.mjs} +1 -1
  101. package/dist/{option.types-D1mm0zUb.mjs.map → option.types-CbY_swma.mjs.map} +1 -1
  102. package/dist/{option.types-qPevEZQd.d.mts → option.types-D9hrKcfa.d.mts} +3 -3
  103. package/dist/{option.types-qPevEZQd.d.mts.map → option.types-D9hrKcfa.d.mts.map} +1 -1
  104. package/dist/order/index.d.mts +1 -1
  105. package/dist/order/index.mjs +1 -1
  106. package/dist/order-BXOBEKvB.mjs +2 -0
  107. package/dist/order-BXOBEKvB.mjs.map +1 -0
  108. package/dist/{pipeable-rfqacPxZ.d.mts → pipeable-BIrevC0D.d.mts} +1 -1
  109. package/dist/{pipeable-rfqacPxZ.d.mts.map → pipeable-BIrevC0D.d.mts.map} +1 -1
  110. package/dist/pipeable-Dp1_23zH.mjs +2 -0
  111. package/dist/{pipeable-COGyGMUV.mjs.map → pipeable-Dp1_23zH.mjs.map} +1 -1
  112. package/dist/predicate/index.d.mts +1 -1
  113. package/dist/predicate/index.mjs +1 -1
  114. package/dist/{predicate-DUhhQqWY.mjs → predicate-D_1SsIi4.mjs} +2 -2
  115. package/dist/predicate-D_1SsIi4.mjs.map +1 -0
  116. package/dist/provide/index.d.mts +1 -1
  117. package/dist/provide/index.mjs +1 -1
  118. package/dist/{provide-BmSM3Ruy.mjs → provide--yZE8x-n.mjs} +2 -2
  119. package/dist/provide--yZE8x-n.mjs.map +1 -0
  120. package/dist/queue/index.d.mts +1 -1
  121. package/dist/queue/index.mjs +1 -1
  122. package/dist/{queue-Sg6KJerl.mjs → queue-apiEOlRD.mjs} +2 -2
  123. package/dist/queue-apiEOlRD.mjs.map +1 -0
  124. package/dist/{queue.types-CD2LOu37.d.mts → queue.types-B-l5XYbU.d.mts} +1 -1
  125. package/dist/{queue.types-CD2LOu37.d.mts.map → queue.types-B-l5XYbU.d.mts.map} +1 -1
  126. package/dist/result/index.d.mts +1 -1
  127. package/dist/result/index.mjs +1 -1
  128. package/dist/{result-BEzV0DYC.mjs → result-D3VY0qBG.mjs} +2 -2
  129. package/dist/result-D3VY0qBG.mjs.map +1 -0
  130. package/dist/{result.types-_xDAei3-.d.mts → result.types-BKzChyWY.d.mts} +3 -3
  131. package/dist/{result.types-_xDAei3-.d.mts.map → result.types-BKzChyWY.d.mts.map} +1 -1
  132. package/dist/schedule/index.d.mts +1 -1
  133. package/dist/schedule/index.mjs +1 -1
  134. package/dist/schedule-B9K_2Z21.d.mts +183 -0
  135. package/dist/schedule-B9K_2Z21.d.mts.map +1 -0
  136. package/dist/schedule-C6iN3oMt.mjs +2 -0
  137. package/dist/schedule-C6iN3oMt.mjs.map +1 -0
  138. package/dist/schema/index.d.mts +2 -0
  139. package/dist/schema/index.mjs +1 -0
  140. package/dist/schema-CJ-aaQe8.mjs +2 -0
  141. package/dist/schema-CJ-aaQe8.mjs.map +1 -0
  142. package/dist/schema.shared-Bjyroa6b.mjs +2 -0
  143. package/dist/schema.shared-Bjyroa6b.mjs.map +1 -0
  144. package/dist/schema.types-CBEXCwfs.d.mts +60 -0
  145. package/dist/schema.types-CBEXCwfs.d.mts.map +1 -0
  146. package/dist/scope/index.d.mts +1 -1
  147. package/dist/scope/index.mjs +1 -1
  148. package/dist/{scope-CZdp4wKX.d.mts → scope-CuM3CzwG.d.mts} +3 -9
  149. package/dist/scope-CuM3CzwG.d.mts.map +1 -0
  150. package/dist/{scope-D_kzd1nT.mjs → scope-gVt4PESc.mjs} +2 -2
  151. package/dist/scope-gVt4PESc.mjs.map +1 -0
  152. package/dist/service/index.d.mts +1 -1
  153. package/dist/service/index.mjs +1 -1
  154. package/dist/{service-3PYQTUdH.mjs → service-CWAIEH46.mjs} +2 -2
  155. package/dist/service-CWAIEH46.mjs.map +1 -0
  156. package/dist/{service-DrXU7KJG.d.mts → service-D8mr0wwg.d.mts} +2 -8
  157. package/dist/service-D8mr0wwg.d.mts.map +1 -0
  158. package/dist/{service-resolution-C19smeaO.mjs → service-resolution-BefYr4nR.mjs} +1 -1
  159. package/dist/{service-resolution-C19smeaO.mjs.map → service-resolution-BefYr4nR.mjs.map} +1 -1
  160. package/package.json +9 -1
  161. package/dist/adt-DajUZvJe.mjs +0 -2
  162. package/dist/adt-DajUZvJe.mjs.map +0 -1
  163. package/dist/brand-Bia3Vj6l.mjs +0 -2
  164. package/dist/brand-Bia3Vj6l.mjs.map +0 -1
  165. package/dist/context-CCHj1nab.mjs.map +0 -1
  166. package/dist/context-r8ESJiFn.d.mts.map +0 -1
  167. package/dist/data.tagged-error.types-CGiKD-ES.d.mts +0 -29
  168. package/dist/data.tagged-error.types-CGiKD-ES.d.mts.map +0 -1
  169. package/dist/discriminator.types-CTURejXz.d.mts.map +0 -1
  170. package/dist/either-BMLPfvMl.mjs.map +0 -1
  171. package/dist/flow-D8_tllWl.mjs.map +0 -1
  172. package/dist/functions-BkevX2Dw.mjs +0 -2
  173. package/dist/functions-BkevX2Dw.mjs.map +0 -1
  174. package/dist/fx-K-a9Smhn.mjs +0 -2
  175. package/dist/fx-K-a9Smhn.mjs.map +0 -1
  176. package/dist/index-7Lv982Om.d.mts +0 -217
  177. package/dist/index-7Lv982Om.d.mts.map +0 -1
  178. package/dist/index-BNQ9xSAz.d.mts.map +0 -1
  179. package/dist/index-B_iY5tq0.d.mts.map +0 -1
  180. package/dist/index-B_wWGszy.d.mts.map +0 -1
  181. package/dist/index-BiiE8NS7.d.mts.map +0 -1
  182. package/dist/index-CGiLfREk.d.mts.map +0 -1
  183. package/dist/index-CUZn-ohG.d.mts.map +0 -1
  184. package/dist/index-Cq2IFito.d.mts.map +0 -1
  185. package/dist/index-DEAWPlcI.d.mts.map +0 -1
  186. package/dist/index-DKS1g1oC.d.mts.map +0 -1
  187. package/dist/index-DXbYlSnB.d.mts.map +0 -1
  188. package/dist/index-UzMbg1dh.d.mts.map +0 -1
  189. package/dist/layer-BttmtDrs.mjs.map +0 -1
  190. package/dist/multithread-xUUh4eLn.mjs.map +0 -1
  191. package/dist/option-Tfbo4wty.mjs.map +0 -1
  192. package/dist/order-D5c4QChk.mjs +0 -2
  193. package/dist/order-D5c4QChk.mjs.map +0 -1
  194. package/dist/pipeable-COGyGMUV.mjs +0 -2
  195. package/dist/predicate-DUhhQqWY.mjs.map +0 -1
  196. package/dist/provide-BmSM3Ruy.mjs.map +0 -1
  197. package/dist/queue-Sg6KJerl.mjs.map +0 -1
  198. package/dist/result-BEzV0DYC.mjs.map +0 -1
  199. package/dist/schedule-C6tjcJ1O.mjs +0 -2
  200. package/dist/schedule-C6tjcJ1O.mjs.map +0 -1
  201. package/dist/schedule-DlX2Dg69.d.mts +0 -144
  202. package/dist/schedule-DlX2Dg69.d.mts.map +0 -1
  203. package/dist/scope-CZdp4wKX.d.mts.map +0 -1
  204. package/dist/scope-D_kzd1nT.mjs.map +0 -1
  205. package/dist/service-3PYQTUdH.mjs.map +0 -1
  206. package/dist/service-DrXU7KJG.d.mts.map +0 -1
  207. /package/dist/{chunk-C934ptG5.mjs → chunk-oQKkju2G.mjs} +0 -0
  208. /package/dist/{option-CBCwzF0L.mjs → option-CXXiA1w-.mjs} +0 -0
  209. /package/dist/{result-B5WbPg8C.mjs → result-xFLfwriM.mjs} +0 -0
@@ -1,8 +1,8 @@
1
- import { a as FxError, c as FxTypeId, d as FxYieldable, f as RunnableFx, h as isServiceRequest, i as Fx, l as FxValue, m as SyncFx, n as AsyncFxGenerator, o as FxGenerator, p as ServiceRequest, r as AsyncFxYieldable, s as FxRequirements, t as AsyncFx, u as FxYield } from "./fx.types-DeEWEltG.mjs";
2
- import { a as ResultFromTry, m as Ok, p as Err, t as Result } from "./result.types-_xDAei3-.mjs";
3
- import { r as Option } from "./option.types-qPevEZQd.mjs";
4
- import { t as Concurrency } from "./queue.types-CD2LOu37.mjs";
5
- import { n as SyncRetrySchedule, t as RetrySchedule } from "./schedule-DlX2Dg69.mjs";
1
+ import { a as FxError, c as FxTypeId, d as FxYieldable, f as RunnableFx, h as isServiceRequest, i as Fx, l as FxValue, m as SyncFx, n as AsyncFxGenerator, o as FxGenerator, p as ServiceRequest, r as AsyncFxYieldable, s as FxRequirements, t as AsyncFx, u as FxYield } from "./fx.types-BdN1EWxr.mjs";
2
+ import { a as ResultFromTry, m as Ok, p as Err, t as Result } from "./result.types-BKzChyWY.mjs";
3
+ import { r as Option } from "./option.types-D9hrKcfa.mjs";
4
+ import { t as Concurrency } from "./queue.types-B-l5XYbU.mjs";
5
+ import { n as SyncRetrySchedule, t as RetrySchedule } from "./schedule-B9K_2Z21.mjs";
6
6
 
7
7
  //#region src/fx/exit.d.ts
8
8
  /**
@@ -100,17 +100,14 @@ type FxGenRequirements<Yielded> = Yielded extends Fx<unknown, unknown, infer R>
100
100
  *
101
101
  * @example
102
102
  * ```ts
103
- * const getUser = (id: string) => Fx.gen(function* () {
104
- * const db = yield* Database
105
- * const logger = yield* Logger
103
+ * import { Fx, Provide, Service } from "@nicolastoulemont/std"
106
104
  *
107
- * logger.info(`Fetching user ${id}`)
108
- * return yield* db.query<User>(`SELECT * FROM users WHERE id = '${id}'`)
105
+ * const Port = Service.tag<number>("Port")
106
+ * const readPort = Fx.gen(function* () {
107
+ * return yield* Port
109
108
  * })
110
- * // Type: SyncFx<User[], DatabaseError, Database | Logger>
111
- *
112
- * // Execute later with dependencies provided
113
- * const exit = pipe(getUser("123"), Provide.layer(AppLayer)).run()
109
+ * const exit = Fx.run(Provide.service(Port, 3000)(readPort))
110
+ * // => { _tag: "Ok", value: 3000 }
114
111
  * ```
115
112
  */
116
113
  declare function fxGen<Yielded, A$1>(generatorFn: () => Generator<Yielded, A$1, unknown>): SyncFx<A$1, FxGenError<Yielded>, FxGenRequirements<Yielded>>;
@@ -125,14 +122,16 @@ declare function fxGen<Yielded, A$1>(generatorFn: () => Generator<Yielded, A$1,
125
122
  *
126
123
  * @example
127
124
  * ```ts
128
- * const fetchData = (url: string) => Fx.gen(async function* () {
129
- * const logger = yield* Logger
125
+ * import { Fx, Provide, Service } from "@nicolastoulemont/std"
130
126
  *
131
- * logger.info(`Fetching ${url}`)
132
- * const response = await fetch(url)
133
- * return yield* Result.try(async () => await response.json())
127
+ * const Token = Service.tag<string>("Token")
128
+ * const readToken = Fx.gen(async function* () {
129
+ * const token = yield* Token
130
+ * const suffix = await Promise.resolve("-ok")
131
+ * return `${token}${suffix}`
134
132
  * })
135
- * // Type: AsyncFx<unknown, Error, Logger>
133
+ * const exit = await Fx.run(Provide.service(Token, "abc")(readToken))
134
+ * // => { _tag: "Ok", value: "abc-ok" }
136
135
  * ```
137
136
  */
138
137
  declare function fxGen<Yielded, A$1>(generatorFn: () => AsyncGenerator<Yielded, A$1, unknown>): AsyncFx<A$1, FxGenError<Yielded>, FxGenRequirements<Yielded>>;
@@ -148,13 +147,15 @@ declare function fxGen<Yielded, A$1>(generatorFn: () => AsyncGenerator<Yielded,
148
147
  *
149
148
  * @example
150
149
  * ```ts
151
- * const getUser = Fx.gen(function* ({userId}: {userId: string}) {
152
- * const db = yield* Database
153
- * return yield* db.query(`SELECT * FROM users WHERE id = '${userId}'`)
154
- * })
155
- * // Type: (params: {userId: string}) => SyncFx<...>
150
+ * import { Fx, Provide, Service } from "@nicolastoulemont/std"
156
151
  *
157
- * const exit = Fx.run(pipe(getUser({userId: "123"}), Provide.layer(DbLayer)))
152
+ * const Port = Service.tag<number>("Port")
153
+ * const describePort = Fx.gen(function* (label: string) {
154
+ * const port = yield* Port
155
+ * return `${label}:${port}`
156
+ * })
157
+ * const exit = Fx.run(Provide.service(Port, 3000)(describePort("port")))
158
+ * // => { _tag: "Ok", value: "port:3000" }
158
159
  * ```
159
160
  */
160
161
  declare function fxGen<P extends [unknown, ...unknown[]], Yielded, A$1>(generatorFn: (...params: P) => Generator<Yielded, A$1, unknown>): (...params: P) => SyncFx<A$1, FxGenError<Yielded>, FxGenRequirements<Yielded>>;
@@ -170,11 +171,16 @@ declare function fxGen<P extends [unknown, ...unknown[]], Yielded, A$1>(generato
170
171
  *
171
172
  * @example
172
173
  * ```ts
173
- * const fetchUser = Fx.gen(async function* ({url}: {url: string}) {
174
- * const response = await fetch(url)
175
- * return yield* Result.try(async () => await response.json())
174
+ * import { Fx, Provide, Service } from "@nicolastoulemont/std"
175
+ *
176
+ * const Token = Service.tag<string>("Token")
177
+ * const describeToken = Fx.gen(async function* (prefix: string) {
178
+ * const token = yield* Token
179
+ * const suffix = await Promise.resolve("!")
180
+ * return `${prefix}:${token}${suffix}`
176
181
  * })
177
- * // Type: (params: {url: string}) => AsyncFx<...>
182
+ * const exit = await Fx.run(Provide.service(Token, "abc")(describeToken("token")))
183
+ * // => { _tag: "Ok", value: "token:abc!" }
178
184
  * ```
179
185
  */
180
186
  declare function fxGen<P extends [unknown, ...unknown[]], Yielded, A$1>(generatorFn: (...params: P) => AsyncGenerator<Yielded, A$1, unknown>): (...params: P) => AsyncFx<A$1, FxGenError<Yielded>, FxGenRequirements<Yielded>>;
@@ -191,13 +197,14 @@ type FxRunResult<F extends RunnableFx<unknown, unknown, unknown>> = F extends As
191
197
  *
192
198
  * @example
193
199
  * ```ts
200
+ * import { Fx } from "@nicolastoulemont/std"
201
+ *
194
202
  * const exit = Fx.fn(function* () {
195
- * const a = yield* Result.ok(10)
196
- * const b = yield* Result.ok(20)
203
+ * const a = yield* Fx.ok(10)
204
+ * const b = yield* Fx.ok(20)
197
205
  * return a + b
198
206
  * })
199
- * // Type: Exit<number, never>
200
- * // exit = { _tag: "Ok", value: 30 }
207
+ * // => { _tag: "Ok", value: 30 }
201
208
  * ```
202
209
  */
203
210
  declare function fxFn<A$1, E$1>(generatorFn: () => FxGenerator<A$1, E$1, never>): Exit<A$1, E$1>;
@@ -213,12 +220,13 @@ declare function fxFn<A$1, E$1>(generatorFn: () => FxGenerator<A$1, E$1, never>)
213
220
  *
214
221
  * @example
215
222
  * ```ts
223
+ * import { Fx } from "@nicolastoulemont/std"
224
+ *
216
225
  * const exit = await Fx.fn(async function* () {
217
- * const response = await fetch("/api/users")
218
- * const data = yield* Result.try(async () => await response.json())
219
- * return data
226
+ * const value = await Promise.resolve(2)
227
+ * return value + 1
220
228
  * })
221
- * // Type: Promise<Exit<unknown, Error>>
229
+ * // => { _tag: "Ok", value: 3 }
222
230
  * ```
223
231
  */
224
232
  declare function fxFn<A$1, E$1>(generatorFn: () => AsyncFxGenerator<A$1, E$1, never>): Promise<Exit<A$1, E$1>>;
@@ -236,13 +244,15 @@ declare function fxFn<A$1, E$1>(generatorFn: () => AsyncFxGenerator<A$1, E$1, ne
236
244
  *
237
245
  * @example
238
246
  * ```ts
247
+ * import { Fx, Provide, Service } from "@nicolastoulemont/std"
248
+ *
249
+ * const Port = Service.tag<number>("Port")
250
+ *
239
251
  * const exit = Fx.fn(function* () {
240
- * const config = yield* Config
241
- * const logger = yield* Logger
242
- * logger.info(`DB URL: ${config.dbUrl}`)
243
- * return config.dbUrl
244
- * }, Provide.layer(AppLayer))
245
- * // Type: Exit<string, never>
252
+ * const port = yield* Port
253
+ * return port + 1
254
+ * }, Provide.service(Port, 3000))
255
+ * // => { _tag: "Ok", value: 3001 }
246
256
  * ```
247
257
  */
248
258
  declare function fxFn<A$1, E$1, R$1, ProvidedFx extends RunnableFx<unknown, unknown, unknown>>(generatorFn: () => FxGenerator<A$1, E$1, R$1>, provider: (fx: SyncFx<A$1, E$1, R$1>) => ProvidedFx): FxRunResult<ProvidedFx>;
@@ -260,12 +270,16 @@ declare function fxFn<A$1, E$1, R$1, ProvidedFx extends RunnableFx<unknown, unkn
260
270
  *
261
271
  * @example
262
272
  * ```ts
273
+ * import { Fx, Provide, Service } from "@nicolastoulemont/std"
274
+ *
275
+ * const Token = Service.tag<string>("Token")
276
+ *
263
277
  * const exit = await Fx.fn(async function* () {
264
- * const config = yield* Config
265
- * await doAsyncWork()
266
- * return config.dbUrl
267
- * }, Provide.layer(AppLayer))
268
- * // Type: Promise<Exit<string, never>>
278
+ * const token = yield* Token
279
+ * const suffix = await Promise.resolve("!")
280
+ * return `${token}${suffix}`
281
+ * }, Provide.service(Token, "abc"))
282
+ * // => { _tag: "Ok", value: "abc!" }
269
283
  * ```
270
284
  */
271
285
  declare function fxFn<A$1, E$1, R$1, ProvidedFx extends RunnableFx<unknown, unknown, unknown>>(generatorFn: () => AsyncFxGenerator<A$1, E$1, R$1>, provider: (fx: AsyncFx<A$1, E$1, R$1>) => ProvidedFx): FxRunResult<ProvidedFx>;
@@ -279,8 +293,6 @@ declare function fxFn<A$1, E$1, R$1, ProvidedFx extends RunnableFx<unknown, unkn
279
293
  *
280
294
  * type Example = typeof Fx
281
295
  * ```
282
- *
283
- * @category Type-level
284
296
  */
285
297
  type TaggedMatch<T extends {
286
298
  readonly _tag: string;
@@ -301,8 +313,6 @@ type TaggedMatch<T extends {
301
313
  * const exit = Fx.run(program)
302
314
  * // => { _tag: "Ok", value: 3 }
303
315
  * ```
304
- *
305
- * @category Constructors
306
316
  */
307
317
  declare const gen: typeof fxGen;
308
318
  /**
@@ -317,8 +327,6 @@ declare const gen: typeof fxGen;
317
327
  * })
318
328
  * // => { _tag: "Ok", value: 2 }
319
329
  * ```
320
- *
321
- * @category Utilities
322
330
  */
323
331
  declare const fn: typeof fxFn;
324
332
  /**
@@ -333,8 +341,6 @@ declare const fn: typeof fxFn;
333
341
  * }))
334
342
  * // => { _tag: "Ok", value: 1 }
335
343
  * ```
336
- *
337
- * @category Utilities
338
344
  */
339
345
  declare const run: typeof fxRun;
340
346
  /**
@@ -355,8 +361,6 @@ declare const run: typeof fxRun;
355
361
  * const exit = Fx.run(retried)
356
362
  * // => { _tag: "Err", error: "boom" }
357
363
  * ```
358
- *
359
- * @category Error Handling
360
364
  */
361
365
  declare const retry: {
362
366
  <Fx$1 extends RunnableFx<unknown, unknown, unknown>, S extends RetrySchedule>(fx: Fx$1, schedule: S): RetryResult<Fx$1, S>;
@@ -374,8 +378,6 @@ declare const retry: {
374
378
  * }))
375
379
  * // => AsyncFx<readonly number[], ...>
376
380
  * ```
377
- *
378
- * @category Sequencing
379
381
  */
380
382
  declare const forEach: {
381
383
  <A$1, F extends (a: A$1, i: number) => RunnableFx<unknown, unknown, unknown>, const Discard extends boolean = false>(self: Iterable<A$1>, f: F, options?: {
@@ -403,8 +405,6 @@ declare const forEach: {
403
405
  * const value = Fx.ok(42)
404
406
  * // => { _tag: "Ok", value: 42 }
405
407
  * ```
406
- *
407
- * @category Constructors
408
408
  */
409
409
  declare const ok: <T>(value: T) => Result<T, never>;
410
410
  /**
@@ -417,8 +417,6 @@ declare const ok: <T>(value: T) => Result<T, never>;
417
417
  * const value = Fx.err("boom")
418
418
  * // => { _tag: "Err", error: "boom" }
419
419
  * ```
420
- *
421
- * @category Constructors
422
420
  */
423
421
  declare const err: <E$1>(error: E$1) => Result<never, E$1>;
424
422
  /**
@@ -431,8 +429,6 @@ declare const err: <E$1>(error: E$1) => Result<never, E$1>;
431
429
  * const value = Fx.option("token")
432
430
  * // => { _tag: "Some", value: "token" }
433
431
  * ```
434
- *
435
- * @category Conversions
436
432
  */
437
433
  declare const option: <T>(value: T) => Option<NonNullable<T>>;
438
434
  declare const try_: ResultFromTry;
@@ -448,8 +444,6 @@ declare const try_: ResultFromTry;
448
444
  * })
449
445
  * // => 3
450
446
  * ```
451
- *
452
- * @category Pattern Matching
453
447
  */
454
448
  declare const match: {
455
449
  <T extends {
@@ -461,4 +455,4 @@ declare const match: {
461
455
  };
462
456
  //#endregion
463
457
  export { fx_d_exports as t };
464
- //# sourceMappingURL=index-BNQ9xSAz.d.mts.map
458
+ //# sourceMappingURL=index-MsJqfQu0.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-MsJqfQu0.d.mts","names":[],"sources":["../src/fx/exit.ts","../src/fx/fx.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { t as Discriminator } from "./discriminator.types-CTURejXz.mjs";
2
- import { t as TaggedErrorFactory } from "./data.tagged-error.types-CGiKD-ES.mjs";
1
+ import { i as Fx } from "./fx.types-BdN1EWxr.mjs";
2
+ import { t as Discriminator } from "./discriminator.types-C-ygT2S1.mjs";
3
3
 
4
4
  //#region src/data/data.types.d.ts
5
5
  /**
@@ -185,6 +185,40 @@ declare function struct$1<T extends Record<string, unknown>>(input: T): StructVa
185
185
  */
186
186
  declare function tagged$1<T extends Record<string, unknown>>(tag: string): TaggedConstructor<typeof tag, T>;
187
187
  //#endregion
188
+ //#region src/data/data.tagged-error.types.d.ts
189
+ interface TaggedErrorCore<Tag extends string, Data extends object = object> extends Error, Fx<never, TaggedErrorInstance<Tag, Data>, never> {
190
+ readonly _tag: Tag;
191
+ [Symbol.iterator](): Generator<TaggedErrorInstance<Tag, Data>, never, unknown>;
192
+ }
193
+ /**
194
+ * Type for instances created by the TaggedError class factory.
195
+ * Extends Error and includes the tag, data, Fx protocol, and Yieldable protocol.
196
+ * When yielded, yields itself as an Fx type for proper inference.
197
+ *
198
+ * @template Tag - The error tag (discriminator string)
199
+ * @template Data - Additional error data (optional)
200
+ */
201
+ type TaggedErrorInstance<Tag extends string, Data extends object = object> = TaggedErrorCore<Tag, Data> & Readonly<Data>;
202
+ /**
203
+ * Public constructor shape for tagged error classes with a fixed payload.
204
+ *
205
+ * @template Tag - The error tag (discriminator string)
206
+ * @template Data - Additional error data (optional)
207
+ */
208
+ type TaggedErrorClass<Tag extends string, Data extends object = object> = {
209
+ new (...args: keyof Data extends never ? [] : [data: Data]): TaggedErrorInstance<Tag, Data>;
210
+ readonly _tag: Tag;
211
+ };
212
+ /**
213
+ * Type for the class returned by TaggedError factory.
214
+ * Supports the Effect-style curried syntax: `TaggedError("Tag")<{ data }>` and `TaggedError("Tag")`
215
+ *
216
+ * @template Tag - The error tag (discriminator string)
217
+ */
218
+ type TaggedErrorFactory<Tag extends string> = TaggedErrorClass<Tag> & {
219
+ new <Data extends object = object>(...args: keyof Data extends never ? [] : [data: Data]): TaggedErrorInstance<Tag, Data>;
220
+ };
221
+ //#endregion
188
222
  //#region src/data/data.tagged-error.d.ts
189
223
  /**
190
224
  * Create a class-based tagged error type (Effect-style syntax).
@@ -255,7 +289,7 @@ declare function TaggedError$1<Tag extends string>(tag: Tag): TaggedErrorFactory
255
289
  */
256
290
  declare function tuple$1<T extends readonly unknown[]>(...args: T): TupleValue<T>;
257
291
  declare namespace data_d_exports {
258
- export { TaggedError, array, struct, tagged, tuple };
292
+ export { TaggedError, TaggedErrorClass, TaggedErrorFactory, TaggedErrorInstance, array, struct, tagged, tuple };
259
293
  }
260
294
  /**
261
295
  * Construct tagged data objects.
@@ -268,8 +302,6 @@ declare namespace data_d_exports {
268
302
  * const user = User({ id: "u1" })
269
303
  * // => { _tag: "User", id: "u1" }
270
304
  * ```
271
- *
272
- * @category Constructors
273
305
  */
274
306
  declare const tagged: typeof tagged$1;
275
307
  /**
@@ -283,8 +315,6 @@ declare const tagged: typeof tagged$1;
283
315
  * const error = new NotFoundError({ id: "u1" })
284
316
  * // => { _tag: "NotFoundError", id: "u1" }
285
317
  * ```
286
- *
287
- * @category Constructors
288
318
  */
289
319
  declare const TaggedError: typeof TaggedError$1;
290
320
  /**
@@ -298,8 +328,6 @@ declare const TaggedError: typeof TaggedError$1;
298
328
  * const same = point.equals({ x: 1, y: 2 })
299
329
  * // => true
300
330
  * ```
301
- *
302
- * @category Constructors
303
331
  */
304
332
  declare const struct: typeof struct$1;
305
333
  /**
@@ -313,8 +341,6 @@ declare const struct: typeof struct$1;
313
341
  * const first = pair[0]
314
342
  * // => "left"
315
343
  * ```
316
- *
317
- * @category Constructors
318
344
  */
319
345
  declare const tuple: typeof tuple$1;
320
346
  /**
@@ -328,10 +354,8 @@ declare const tuple: typeof tuple$1;
328
354
  * const upper = ids.map((id) => id.toUpperCase())
329
355
  * // => ["A", "B"]
330
356
  * ```
331
- *
332
- * @category Constructors
333
357
  */
334
358
  declare const array: typeof array$1;
335
359
  //#endregion
336
- export { data_d_exports as t };
337
- //# sourceMappingURL=index-CGiLfREk.d.mts.map
360
+ export { TaggedErrorFactory as n, data_d_exports as t };
361
+ //# sourceMappingURL=index-UINIHFuh.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-UINIHFuh.d.mts","names":[],"sources":["../src/data/data.types.ts","../src/data/data.array.ts","../src/data/data.struct.ts","../src/data/data.tagged.ts","../src/data/data.tagged-error.types.ts","../src/data/data.tagged-error.ts","../src/data/data.tuple.ts","../src/data/data.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { f as RunnableFx, m as SyncFx, t as AsyncFx } from "./fx.types-DeEWEltG.mjs";
2
- import { t as ServiceClass } from "./service-DrXU7KJG.mjs";
3
- import { t as Context } from "./context-r8ESJiFn.mjs";
4
- import { n as Layer } from "./layer.types-DgpCIsk_.mjs";
1
+ import { f as RunnableFx, m as SyncFx, t as AsyncFx } from "./fx.types-BdN1EWxr.mjs";
2
+ import { t as ServiceClass } from "./service-D8mr0wwg.mjs";
3
+ import { t as Context } from "./context-B2dWloPl.mjs";
4
+ import { n as Layer } from "./layer.types-BB0MrvLg.mjs";
5
5
 
6
6
  //#region src/provide/provide.d.ts
7
7
  declare namespace provide_d_exports {
@@ -39,9 +39,7 @@ type ProvideResult<E2, LayerSync extends boolean, Fx extends RunnableFx<unknown,
39
39
  *
40
40
  * @example
41
41
  * ```ts
42
- * import { Provide } from "@nicolastoulemont/std"
43
- *
44
- * import { Fx, Layer, Service } from "@nicolastoulemont/std"
42
+ * import { Fx, Layer, Provide, Service } from "@nicolastoulemont/std"
45
43
  *
46
44
  * const Port = Service.tag<number>("Port")
47
45
  * const portLayer = Layer.ok(Port, 3000)
@@ -49,10 +47,9 @@ type ProvideResult<E2, LayerSync extends boolean, Fx extends RunnableFx<unknown,
49
47
  * return yield* Port
50
48
  * })
51
49
  * const provided = Provide.layer(portLayer)(readPort)
52
- * // => Fx with Port dependency resolved
50
+ * const exit = Fx.run(provided)
51
+ * // => { _tag: "Ok", value: 3000 }
53
52
  * ```
54
- *
55
- * @category Utilities
56
53
  */
57
54
  declare function layer<ROut, E2, LayerSync extends boolean>(layer: Layer<ROut, E2, never, LayerSync>): <Fx extends RunnableFx<unknown, unknown, ROut>>(fx: Fx) => ProvideResult<E2, LayerSync, Fx>;
58
55
  /**
@@ -63,9 +60,7 @@ declare function layer<ROut, E2, LayerSync extends boolean>(layer: Layer<ROut, E
63
60
  *
64
61
  * @example
65
62
  * ```ts
66
- * import { Provide } from "@nicolastoulemont/std"
67
- *
68
- * import { Context, Fx, Service } from "@nicolastoulemont/std"
63
+ * import { Context, Fx, Provide, Service } from "@nicolastoulemont/std"
69
64
  *
70
65
  * const Port = Service.tag<number>("Port")
71
66
  * const ctx = Context.make(Port, 3000)
@@ -73,10 +68,9 @@ declare function layer<ROut, E2, LayerSync extends boolean>(layer: Layer<ROut, E
73
68
  * return yield* Port
74
69
  * })
75
70
  * const provided = Provide.context(ctx)(readPort)
76
- * // => Fx runnable without Port requirement
71
+ * const exit = Fx.run(provided)
72
+ * // => { _tag: "Ok", value: 3000 }
77
73
  * ```
78
- *
79
- * @category Utilities
80
74
  */
81
75
  declare const context: <R>(ctx: Context<R>) => <A, E>(fx: RunnableFx<A, E, R>) => RunnableFx<A, E>;
82
76
  /**
@@ -88,21 +82,18 @@ declare const context: <R>(ctx: Context<R>) => <A, E>(fx: RunnableFx<A, E, R>) =
88
82
  *
89
83
  * @example
90
84
  * ```ts
91
- * import { Provide } from "@nicolastoulemont/std"
92
- *
93
- * import { Fx, Service } from "@nicolastoulemont/std"
85
+ * import { Fx, Provide, Service } from "@nicolastoulemont/std"
94
86
  *
95
87
  * const Port = Service.tag<number>("Port")
96
88
  * const readPort = Fx.gen(function* () {
97
89
  * return yield* Port
98
90
  * })
99
91
  * const provided = Provide.service(Port, 3000)(readPort)
100
- * // => Fx runnable without Port requirement
92
+ * const exit = Fx.run(provided)
93
+ * // => { _tag: "Ok", value: 3000 }
101
94
  * ```
102
- *
103
- * @category Utilities
104
95
  */
105
96
  declare const service: <S>(service: ServiceClass<S>, impl: S) => <A, E, R>(fx: RunnableFx<A, E, R | S>) => RunnableFx<A, E, Exclude<R, S>>;
106
97
  //#endregion
107
98
  export { provide_d_exports as t };
108
- //# sourceMappingURL=index-BiiE8NS7.d.mts.map
99
+ //# sourceMappingURL=index-crtzMG48.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-crtzMG48.d.mts","names":[],"sources":["../src/provide/provide.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAoBK,iBAAiB,UAAU;;;;KAK3B,iBAAiB,UAAU;AAlBsB;AAaZ;AAKA;;;;;;KAUrC,aAMqC,CAAA,EAAA,EAAA,kBAAA,OAAA,EAAA,WAH7B,UAG6B,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA,CAAA,GAFtC,SAEsC,SAAA,IAAA,GADtC,EACsC,CAAA,MAAA,CAAA,SAAA,QAAA,GAApC,MAAoC,CAA7B,WAA6B,CAAjB,EAAiB,CAAA,EAAZ,WAAY,CAAA,EAAA,CAAA,GAAM,EAAN,CAAA,GACpC,OADoC,CAC5B,WAD4B,CAChB,EADgB,CAAA,EACX,WADW,CACC,EADD,CAAA,GACO,EADP,CAAA,GAEtC,SAFsC,SAAA,KAAA,GAGpC,OAHoC,CAG5B,WAH4B,CAGhB,EAHgB,CAAA,EAGX,WAHW,CAGC,EAHD,CAAA,GAGO,EAHP,CAAA,GAIpC,UAJoC,CAIzB,WAJyB,CAIb,EAJa,CAAA,EAIR,WAJQ,CAII,EAJJ,CAAA,GAIU,EAJV,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAiC1C;;;;AACS,iBADO,KACP,CAAA,IAAA,EAAA,EAAA,EAAA,kBAAA,OAAA,CAAA,CAAA,KAAA,EAAA,KAAA,CAAM,IAAN,EAAY,EAAZ,EAAA,KAAA,EAAuB,SAAvB,CAAA,CAAA,EAAA,CAAA,WACM,UADN,CAAA,OAAA,EAAA,OAAA,EACmC,IADnC,CAAA,CAAA,CAAA,EAAA,EAC8C,EAD9C,EAAA,GACqD,aADrD,CACmE,EADnE,EACuE,SADvE,EACkF,EADlF,CAAA;;;;;;;;;AA+LT;;;;;;;;;;;AA8FA;AAC4B,cA/Ff,OA+Fe,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EA9FjB,OA8FiB,CA9FT,CA8FS,CAAA,EAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EA7Ff,UA6Fe,CA7FJ,CA6FI,EA7FD,CA6FC,EA7FE,CA6FF,CAAA,EAAA,GA7FO,UA6FP,CA7FkB,CA6FlB,EA7FqB,CA6FrB,CAAA;;;;;;;;;;;;;;;;;;;;;cADf,sBACE,aAAa,UAAU,oBACtB,WAAW,GAAG,GAAG,IAAI,OAAK,WAAW,GAAG,GAAG,QAAQ,GAAG"}