@nicolastoulemont/std 0.6.0 → 0.7.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 (198) hide show
  1. package/README.md +232 -33
  2. package/dist/adt/index.d.mts +2 -2
  3. package/dist/adt/index.mjs +1 -1
  4. package/dist/adt-DajUZvJe.mjs +2 -0
  5. package/dist/adt-DajUZvJe.mjs.map +1 -0
  6. package/dist/brand/index.d.mts +2 -2
  7. package/dist/brand/index.mjs +1 -1
  8. package/dist/brand-Bia3Vj6l.mjs +2 -0
  9. package/dist/brand-Bia3Vj6l.mjs.map +1 -0
  10. package/dist/context/index.d.mts +2 -0
  11. package/dist/context/index.mjs +1 -0
  12. package/dist/context-CCHj1nab.mjs +2 -0
  13. package/dist/context-CCHj1nab.mjs.map +1 -0
  14. package/dist/context-r8ESJiFn.d.mts +176 -0
  15. package/dist/context-r8ESJiFn.d.mts.map +1 -0
  16. package/dist/data/index.d.mts +2 -2
  17. package/dist/data/index.mjs +1 -1
  18. package/dist/data-BLXO4XwS.mjs +2 -0
  19. package/dist/data-BLXO4XwS.mjs.map +1 -0
  20. package/dist/data.tagged-error.types-CGiKD-ES.d.mts +29 -0
  21. package/dist/data.tagged-error.types-CGiKD-ES.d.mts.map +1 -0
  22. package/dist/{discriminator.types-9PxvrZki.d.mts → discriminator.types-CTURejXz.d.mts} +1 -1
  23. package/dist/discriminator.types-CTURejXz.d.mts.map +1 -0
  24. package/dist/dual-CZhzZslG.mjs +2 -0
  25. package/dist/dual-CZhzZslG.mjs.map +1 -0
  26. package/dist/either/index.d.mts +2 -2
  27. package/dist/either/index.mjs +1 -1
  28. package/dist/either-BMLPfvMl.mjs +2 -0
  29. package/dist/either-BMLPfvMl.mjs.map +1 -0
  30. package/dist/{equality-CD4_A1Op.mjs → equality-CoyUHWh9.mjs} +1 -1
  31. package/dist/{equality-CD4_A1Op.mjs.map → equality-CoyUHWh9.mjs.map} +1 -1
  32. package/dist/{flow-CYjiodlC.mjs → flow-D8_tllWl.mjs} +1 -1
  33. package/dist/flow-D8_tllWl.mjs.map +1 -0
  34. package/dist/functions/index.d.mts +2 -0
  35. package/dist/functions/index.mjs +1 -0
  36. package/dist/functions-BkevX2Dw.mjs +2 -0
  37. package/dist/functions-BkevX2Dw.mjs.map +1 -0
  38. package/dist/fx/index.d.mts +2 -3
  39. package/dist/fx/index.mjs +1 -1
  40. package/dist/fx-K-a9Smhn.mjs +2 -0
  41. package/dist/fx-K-a9Smhn.mjs.map +1 -0
  42. package/dist/fx.runtime-DclEDyjY.mjs +2 -0
  43. package/dist/fx.runtime-DclEDyjY.mjs.map +1 -0
  44. package/dist/{fx.types-CDVjDn_3.mjs → fx.types-Bg-Mmdm5.mjs} +1 -1
  45. package/dist/fx.types-Bg-Mmdm5.mjs.map +1 -0
  46. package/dist/{fx.types-B34asVRX.d.mts → fx.types-DeEWEltG.d.mts} +2 -2
  47. package/dist/{fx.types-B34asVRX.d.mts.map → fx.types-DeEWEltG.d.mts.map} +1 -1
  48. package/dist/index-7Lv982Om.d.mts +217 -0
  49. package/dist/index-7Lv982Om.d.mts.map +1 -0
  50. package/dist/{index-CklRfom5.d.mts → index-B1-tBzc0.d.mts} +263 -368
  51. package/dist/index-B1-tBzc0.d.mts.map +1 -0
  52. package/dist/index-BNQ9xSAz.d.mts +464 -0
  53. package/dist/index-BNQ9xSAz.d.mts.map +1 -0
  54. package/dist/index-B_iY5tq0.d.mts +241 -0
  55. package/dist/index-B_iY5tq0.d.mts.map +1 -0
  56. package/dist/index-B_wWGszy.d.mts +129 -0
  57. package/dist/index-B_wWGszy.d.mts.map +1 -0
  58. package/dist/index-BiiE8NS7.d.mts +108 -0
  59. package/dist/index-BiiE8NS7.d.mts.map +1 -0
  60. package/dist/index-By6dNRc4.d.mts +277 -0
  61. package/dist/index-By6dNRc4.d.mts.map +1 -0
  62. package/dist/{index-BzYtgdX0.d.mts → index-CGiLfREk.d.mts} +123 -16
  63. package/dist/index-CGiLfREk.d.mts.map +1 -0
  64. package/dist/index-CUZn-ohG.d.mts +490 -0
  65. package/dist/index-CUZn-ohG.d.mts.map +1 -0
  66. package/dist/index-Cq2IFito.d.mts +121 -0
  67. package/dist/index-Cq2IFito.d.mts.map +1 -0
  68. package/dist/{index-B2l8_CiD.d.mts → index-DEAWPlcI.d.mts} +155 -216
  69. package/dist/index-DEAWPlcI.d.mts.map +1 -0
  70. package/dist/{index-C4v_3f3-.d.mts → index-DKS1g1oC.d.mts} +95 -42
  71. package/dist/index-DKS1g1oC.d.mts.map +1 -0
  72. package/dist/{index-jeC5jyRh.d.mts → index-DXbYlSnB.d.mts} +64 -101
  73. package/dist/index-DXbYlSnB.d.mts.map +1 -0
  74. package/dist/{index-CjZ95Dsv.d.mts → index-UzMbg1dh.d.mts} +188 -202
  75. package/dist/index-UzMbg1dh.d.mts.map +1 -0
  76. package/dist/index.d.mts +23 -16
  77. package/dist/index.mjs +1 -1
  78. package/dist/layer/index.d.mts +2 -0
  79. package/dist/layer/index.mjs +1 -0
  80. package/dist/layer-BttmtDrs.mjs +2 -0
  81. package/dist/layer-BttmtDrs.mjs.map +1 -0
  82. package/dist/layer.types-DgpCIsk_.d.mts +100 -0
  83. package/dist/layer.types-DgpCIsk_.d.mts.map +1 -0
  84. package/dist/multithread/index.d.mts +2 -0
  85. package/dist/multithread/index.mjs +1 -0
  86. package/dist/multithread-xUUh4eLn.mjs +19 -0
  87. package/dist/multithread-xUUh4eLn.mjs.map +1 -0
  88. package/dist/option/index.d.mts +2 -3
  89. package/dist/option/index.mjs +1 -1
  90. package/dist/option-Tfbo4wty.mjs +2 -0
  91. package/dist/option-Tfbo4wty.mjs.map +1 -0
  92. package/dist/option.types-D1mm0zUb.mjs +2 -0
  93. package/dist/option.types-D1mm0zUb.mjs.map +1 -0
  94. package/dist/{option.types-ClJiBTdg.d.mts → option.types-qPevEZQd.d.mts} +7 -12
  95. package/dist/option.types-qPevEZQd.d.mts.map +1 -0
  96. package/dist/order/index.d.mts +2 -0
  97. package/dist/order/index.mjs +1 -0
  98. package/dist/order-D5c4QChk.mjs +2 -0
  99. package/dist/order-D5c4QChk.mjs.map +1 -0
  100. package/dist/pipeable-COGyGMUV.mjs +2 -0
  101. package/dist/pipeable-COGyGMUV.mjs.map +1 -0
  102. package/dist/{pipeable-B4YJA56p.d.mts → pipeable-rfqacPxZ.d.mts} +2 -9
  103. package/dist/{pipeable-B4YJA56p.d.mts.map → pipeable-rfqacPxZ.d.mts.map} +1 -1
  104. package/dist/predicate/index.d.mts +2 -2
  105. package/dist/predicate/index.mjs +1 -1
  106. package/dist/predicate-DUhhQqWY.mjs +2 -0
  107. package/dist/predicate-DUhhQqWY.mjs.map +1 -0
  108. package/dist/provide/index.d.mts +2 -0
  109. package/dist/provide/index.mjs +1 -0
  110. package/dist/provide-C2cWOx2B.mjs +2 -0
  111. package/dist/provide-C2cWOx2B.mjs.map +1 -0
  112. package/dist/queue/index.d.mts +2 -0
  113. package/dist/queue/index.mjs +1 -0
  114. package/dist/queue-Sg6KJerl.mjs +2 -0
  115. package/dist/queue-Sg6KJerl.mjs.map +1 -0
  116. package/dist/queue.types-CD2LOu37.d.mts +36 -0
  117. package/dist/queue.types-CD2LOu37.d.mts.map +1 -0
  118. package/dist/result/index.d.mts +2 -3
  119. package/dist/result/index.mjs +1 -1
  120. package/dist/result-BEzV0DYC.mjs +2 -0
  121. package/dist/result-BEzV0DYC.mjs.map +1 -0
  122. package/dist/{result.types-HHDzgSTV.d.mts → result.types-_xDAei3-.d.mts} +5 -97
  123. package/dist/result.types-_xDAei3-.d.mts.map +1 -0
  124. package/dist/schedule/index.d.mts +2 -0
  125. package/dist/schedule/index.mjs +1 -0
  126. package/dist/schedule-C6tjcJ1O.mjs +2 -0
  127. package/dist/schedule-C6tjcJ1O.mjs.map +1 -0
  128. package/dist/schedule-DlX2Dg69.d.mts +144 -0
  129. package/dist/schedule-DlX2Dg69.d.mts.map +1 -0
  130. package/dist/scope/index.d.mts +2 -0
  131. package/dist/scope/index.mjs +1 -0
  132. package/dist/scope-CZdp4wKX.d.mts +79 -0
  133. package/dist/scope-CZdp4wKX.d.mts.map +1 -0
  134. package/dist/scope-D_kzd1nT.mjs +2 -0
  135. package/dist/scope-D_kzd1nT.mjs.map +1 -0
  136. package/dist/service/index.d.mts +2 -0
  137. package/dist/service/index.mjs +1 -0
  138. package/dist/service-3PYQTUdH.mjs +2 -0
  139. package/dist/service-3PYQTUdH.mjs.map +1 -0
  140. package/dist/service-DrXU7KJG.d.mts +69 -0
  141. package/dist/service-DrXU7KJG.d.mts.map +1 -0
  142. package/dist/service-resolution-C19smeaO.mjs +2 -0
  143. package/dist/service-resolution-C19smeaO.mjs.map +1 -0
  144. package/package.json +50 -12
  145. package/dist/adt-CkRcY_GA.mjs +0 -2
  146. package/dist/adt-CkRcY_GA.mjs.map +0 -1
  147. package/dist/apply-fn.types-0g_9eXRy.d.mts +0 -8
  148. package/dist/apply-fn.types-0g_9eXRy.d.mts.map +0 -1
  149. package/dist/brand-Gy0kW6-n.mjs +0 -2
  150. package/dist/brand-Gy0kW6-n.mjs.map +0 -1
  151. package/dist/data-C0_3MGwm.mjs +0 -2
  152. package/dist/data-C0_3MGwm.mjs.map +0 -1
  153. package/dist/discriminator.types-9PxvrZki.d.mts.map +0 -1
  154. package/dist/either-CPzK-s8W.mjs +0 -2
  155. package/dist/either-CPzK-s8W.mjs.map +0 -1
  156. package/dist/err/index.d.mts +0 -2
  157. package/dist/err/index.mjs +0 -1
  158. package/dist/err-3KpQ4pj9.mjs +0 -2
  159. package/dist/err-3KpQ4pj9.mjs.map +0 -1
  160. package/dist/flow/index.d.mts +0 -2
  161. package/dist/flow/index.mjs +0 -1
  162. package/dist/flow-CYjiodlC.mjs.map +0 -1
  163. package/dist/fx-vqywVJhV.mjs +0 -2
  164. package/dist/fx-vqywVJhV.mjs.map +0 -1
  165. package/dist/fx.types-CDVjDn_3.mjs.map +0 -1
  166. package/dist/index-8Ne4GdOG.d.mts +0 -288
  167. package/dist/index-8Ne4GdOG.d.mts.map +0 -1
  168. package/dist/index-B2l8_CiD.d.mts.map +0 -1
  169. package/dist/index-BOrJQBPO.d.mts +0 -80
  170. package/dist/index-BOrJQBPO.d.mts.map +0 -1
  171. package/dist/index-BsXtpnw-.d.mts +0 -225
  172. package/dist/index-BsXtpnw-.d.mts.map +0 -1
  173. package/dist/index-BzYtgdX0.d.mts.map +0 -1
  174. package/dist/index-C4v_3f3-.d.mts.map +0 -1
  175. package/dist/index-CjZ95Dsv.d.mts.map +0 -1
  176. package/dist/index-CklRfom5.d.mts.map +0 -1
  177. package/dist/index-DZdmFtjA.d.mts +0 -79
  178. package/dist/index-DZdmFtjA.d.mts.map +0 -1
  179. package/dist/index-a4MEBZZ1.d.mts +0 -850
  180. package/dist/index-a4MEBZZ1.d.mts.map +0 -1
  181. package/dist/index-jeC5jyRh.d.mts.map +0 -1
  182. package/dist/option-DawZC1cE.mjs +0 -2
  183. package/dist/option-DawZC1cE.mjs.map +0 -1
  184. package/dist/option.types-ClJiBTdg.d.mts.map +0 -1
  185. package/dist/pipe/index.d.mts +0 -2
  186. package/dist/pipe/index.mjs +0 -1
  187. package/dist/pipe-BPpJyZf7.mjs +0 -2
  188. package/dist/pipe-BPpJyZf7.mjs.map +0 -1
  189. package/dist/pipeable-BA0mXhs4.mjs +0 -2
  190. package/dist/pipeable-BA0mXhs4.mjs.map +0 -1
  191. package/dist/predicate-Cy_oHA1Q.mjs +0 -2
  192. package/dist/predicate-Cy_oHA1Q.mjs.map +0 -1
  193. package/dist/result-CgGYLp0L.mjs +0 -2
  194. package/dist/result-CgGYLp0L.mjs.map +0 -1
  195. package/dist/result.types-HHDzgSTV.d.mts.map +0 -1
  196. /package/dist/{chunk-DAexk1S7.mjs → chunk-C934ptG5.mjs} +0 -0
  197. /package/dist/{option-Bb-taghv.mjs → option-CBCwzF0L.mjs} +0 -0
  198. /package/dist/{result-fiJhwVGz.mjs → result-B5WbPg8C.mjs} +0 -0
@@ -0,0 +1,277 @@
1
+ import { i as Fx } from "./fx.types-DeEWEltG.mjs";
2
+ import { t as Result } from "./result.types-_xDAei3-.mjs";
3
+
4
+ //#region src/multithread/multithread.types.d.ts
5
+
6
+ /**
7
+ * Shared cancellation signal propagated to worker tasks.
8
+ *
9
+ * - When `null`, cooperative cancellation is unavailable in this environment.
10
+ * - When present, `Atomics.load(signal, 0) === 1` indicates cancellation.
11
+ */
12
+ type MultithreadSignal = Int32Array<SharedArrayBuffer> | null;
13
+ /**
14
+ * Cooperative cancellation context injected as the last argument in worker callbacks.
15
+ */
16
+ type MultithreadCtx = {
17
+ readonly signal: MultithreadSignal;
18
+ isCancelled(): boolean;
19
+ throwIfCancelled(): void;
20
+ };
21
+ type MultithreadRuntimeUnavailableError = {
22
+ readonly _tag: "MultithreadRuntimeUnavailableError";
23
+ readonly message: string;
24
+ readonly cause?: unknown;
25
+ };
26
+ type MultithreadRuntimeAlreadyInitializedError = {
27
+ readonly _tag: "MultithreadRuntimeAlreadyInitializedError";
28
+ readonly message: string;
29
+ };
30
+ type MultithreadWorkerExecutionError = {
31
+ readonly _tag: "MultithreadWorkerExecutionError";
32
+ readonly message: string;
33
+ readonly cause: unknown;
34
+ };
35
+ type MultithreadCancelledError = {
36
+ readonly _tag: "MultithreadCancelledError";
37
+ readonly message: string;
38
+ };
39
+ type MultithreadAllFailedError = {
40
+ readonly _tag: "MultithreadAllFailedError";
41
+ readonly message: string;
42
+ readonly errors: readonly unknown[];
43
+ };
44
+ /**
45
+ * Canonical error union for multithread operations.
46
+ */
47
+ type MultithreadError = MultithreadRuntimeUnavailableError | MultithreadRuntimeAlreadyInitializedError | MultithreadWorkerExecutionError | MultithreadCancelledError | MultithreadAllFailedError;
48
+ /**
49
+ * Worker callback output shape.
50
+ *
51
+ * Worker callbacks may return either:
52
+ * - raw values (wrapped as `Result.ok`), or
53
+ * - explicit `Result` values.
54
+ */
55
+ type WorkerReturn<A, E> = A | Result<A, E> | Promise<A> | Promise<Result<A, E>>;
56
+ /**
57
+ * Cold, memoized operation representing one multithread execution.
58
+ *
59
+ * - `result()` is the canonical Result-first API.
60
+ * - `await op` works through `then`.
61
+ * - `yield* op` works through async iterator yieldability.
62
+ */
63
+ type MultithreadOp<A, E> = Fx<A, E> & {
64
+ readonly _tag: "MultithreadOp";
65
+ result(): Promise<Result<A, E>>;
66
+ abort(): void;
67
+ then: PromiseLike<Result<A, E>>["then"];
68
+ [Symbol.asyncIterator](): AsyncGenerator<E, A, unknown>;
69
+ };
70
+ type MultithreadParallelOptions = {
71
+ readonly parallelism?: number;
72
+ };
73
+ type WorkerWithCtx<Args extends readonly unknown[], A, E> = (...args: [...Args, MultithreadCtx]) => WorkerReturn<A, E>;
74
+ type MultithreadRun = {
75
+ <A, E = never>(worker: (ctx: MultithreadCtx) => WorkerReturn<A, E>): MultithreadOp<A, E | MultithreadError>;
76
+ <Args extends readonly unknown[], A, E = never>(worker: WorkerWithCtx<Args, A, E>, ...args: Args): MultithreadOp<A, E | MultithreadError>;
77
+ };
78
+ type MultithreadTask = {
79
+ <A, E = never>(worker: (ctx: MultithreadCtx) => WorkerReturn<A, E>): () => MultithreadOp<A, E | MultithreadError>;
80
+ <Args extends readonly unknown[], A, E = never>(worker: WorkerWithCtx<Args, A, E>): (...args: Args) => MultithreadOp<A, E | MultithreadError>;
81
+ };
82
+ type MultithreadMapWorker<A, B, E> = (value: A, index: number, ctx: MultithreadCtx) => WorkerReturn<B, E>;
83
+ type MultithreadMap = {
84
+ <A, B, E = never>(values: readonly A[], worker: MultithreadMapWorker<A, B, E>, options?: MultithreadParallelOptions): MultithreadOp<readonly B[], E | MultithreadError>;
85
+ <A, B, E = never, InputE = never>(values: Result<readonly A[], InputE>, worker: MultithreadMapWorker<A, B, E>, options?: MultithreadParallelOptions): Promise<Result<readonly B[], E | InputE | MultithreadError>>;
86
+ <A, B, E = never>(worker: MultithreadMapWorker<A, B, E>, options?: MultithreadParallelOptions): <Input extends readonly A[] | Result<readonly A[], unknown>>(values: Input) => Input extends Result<readonly A[], infer InputE> ? Promise<Result<readonly B[], E | InputE | MultithreadError>> : MultithreadOp<readonly B[], E | MultithreadError>;
87
+ };
88
+ type MultithreadForEach = {
89
+ <A, E = never>(values: readonly A[], worker: MultithreadMapWorker<A, unknown, E>, options?: MultithreadParallelOptions): MultithreadOp<void, E | MultithreadError>;
90
+ <A, E = never, InputE = never>(values: Result<readonly A[], InputE>, worker: MultithreadMapWorker<A, unknown, E>, options?: MultithreadParallelOptions): Promise<Result<void, E | InputE | MultithreadError>>;
91
+ <A, E = never>(worker: MultithreadMapWorker<A, unknown, E>, options?: MultithreadParallelOptions): <Input extends readonly A[] | Result<readonly A[], unknown>>(values: Input) => Input extends Result<readonly A[], infer InputE> ? Promise<Result<void, E | InputE | MultithreadError>> : MultithreadOp<void, E | MultithreadError>;
92
+ };
93
+ type MultithreadFilterWorker<A, E> = (value: A, index: number, ctx: MultithreadCtx) => WorkerReturn<boolean, E>;
94
+ type MultithreadFilter = {
95
+ <A, E = never>(values: readonly A[], worker: MultithreadFilterWorker<A, E>, options?: MultithreadParallelOptions): MultithreadOp<readonly A[], E | MultithreadError>;
96
+ <A, E = never, InputE = never>(values: Result<readonly A[], InputE>, worker: MultithreadFilterWorker<A, E>, options?: MultithreadParallelOptions): Promise<Result<readonly A[], E | InputE | MultithreadError>>;
97
+ <A, E = never>(worker: MultithreadFilterWorker<A, E>, options?: MultithreadParallelOptions): <Input extends readonly A[] | Result<readonly A[], unknown>>(values: Input) => Input extends Result<readonly A[], infer InputE> ? Promise<Result<readonly A[], E | InputE | MultithreadError>> : MultithreadOp<readonly A[], E | MultithreadError>;
98
+ };
99
+ type MultithreadFlatMapWorker<A, B, E> = (value: A, index: number, ctx: MultithreadCtx) => WorkerReturn<readonly B[] | B[], E>;
100
+ type MultithreadFlatMap = {
101
+ <A, B, E = never>(values: readonly A[], worker: MultithreadFlatMapWorker<A, B, E>, options?: MultithreadParallelOptions): MultithreadOp<readonly B[], E | MultithreadError>;
102
+ <A, B, E = never, InputE = never>(values: Result<readonly A[], InputE>, worker: MultithreadFlatMapWorker<A, B, E>, options?: MultithreadParallelOptions): Promise<Result<readonly B[], E | InputE | MultithreadError>>;
103
+ <A, B, E = never>(worker: MultithreadFlatMapWorker<A, B, E>, options?: MultithreadParallelOptions): <Input extends readonly A[] | Result<readonly A[], unknown>>(values: Input) => Input extends Result<readonly A[], infer InputE> ? Promise<Result<readonly B[], E | InputE | MultithreadError>> : MultithreadOp<readonly B[], E | MultithreadError>;
104
+ };
105
+ type MultithreadValue<T> = T extends MultithreadOp<infer A, unknown> ? A : never;
106
+ type MultithreadOpError<T> = T extends MultithreadOp<unknown, infer E> ? E : never;
107
+ type MultithreadRace = {
108
+ <A, E>(operations: readonly MultithreadOp<A, E>[]): MultithreadOp<A, E | MultithreadError>;
109
+ <A, E, InputE = never>(operations: Result<readonly MultithreadOp<A, E>[], InputE>): Promise<Result<A, E | InputE | MultithreadError>>;
110
+ <Ops extends readonly MultithreadOp<unknown, unknown>[]>(operations: Ops): MultithreadOp<MultithreadValue<Ops[number]>, MultithreadOpError<Ops[number]> | MultithreadError>;
111
+ <Ops extends readonly MultithreadOp<unknown, unknown>[], InputE = never>(operations: Result<Ops, InputE>): Promise<Result<MultithreadValue<Ops[number]>, MultithreadOpError<Ops[number]> | InputE | MultithreadError>>;
112
+ };
113
+ type MultithreadFirstSuccess = {
114
+ <A, E>(operations: readonly MultithreadOp<A, E>[]): MultithreadOp<A, E | MultithreadError>;
115
+ <A, E, InputE = never>(operations: Result<readonly MultithreadOp<A, E>[], InputE>): Promise<Result<A, E | InputE | MultithreadError>>;
116
+ <Ops extends readonly MultithreadOp<unknown, unknown>[]>(operations: Ops): MultithreadOp<MultithreadValue<Ops[number]>, MultithreadOpError<Ops[number]> | MultithreadError>;
117
+ <Ops extends readonly MultithreadOp<unknown, unknown>[], InputE = never>(operations: Result<Ops, InputE>): Promise<Result<MultithreadValue<Ops[number]>, MultithreadOpError<Ops[number]> | InputE | MultithreadError>>;
118
+ };
119
+ declare namespace multithread_d_exports {
120
+ export { MultithreadCtx, MultithreadError, MultithreadOp, configure, filter, firstSuccess, flatMap, forEach, map, race, run, shutdown, task };
121
+ }
122
+ /**
123
+ * Execute one worker task as a cancelable `MultithreadOp`.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * import { Multithread } from "@nicolastoulemont/std"
128
+ *
129
+ * const op = Multithread.run((ctx) => (ctx.isCancelled() ? 0 : 42))
130
+ * // => cancelable operation with result() and abort()
131
+ * ```
132
+ *
133
+ * @category Constructors
134
+ */
135
+ declare const run: MultithreadRun;
136
+ /**
137
+ * Create a reusable worker task factory.
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * import { Multithread } from "@nicolastoulemont/std"
142
+ *
143
+ * const create = Multithread.task((ctx) => (ctx.isCancelled() ? 0 : 16))
144
+ * const op = create()
145
+ * // => operation that resolves to 16 when executed
146
+ * ```
147
+ *
148
+ * @category Constructors
149
+ */
150
+ declare const task: MultithreadTask;
151
+ /**
152
+ * Map a collection in parallel.
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * import { Multithread } from "@nicolastoulemont/std"
157
+ *
158
+ * const op = Multithread.map([1, 2, 3], (value) => value * 2)
159
+ * // => operation that resolves to [2, 4, 6]
160
+ * ```
161
+ *
162
+ * @category Mapping
163
+ */
164
+ declare const map: MultithreadMap;
165
+ /**
166
+ * Run side-effecting parallel work for each item.
167
+ *
168
+ * @example
169
+ * ```ts
170
+ * import { Multithread } from "@nicolastoulemont/std"
171
+ *
172
+ * const op = Multithread.forEach(["a", "b"], (value) => value.toUpperCase())
173
+ * // => operation that resolves to void after all items complete
174
+ * ```
175
+ *
176
+ * @category Sequencing
177
+ */
178
+ declare const forEach: MultithreadForEach;
179
+ /**
180
+ * Filter a collection in parallel.
181
+ *
182
+ * @example
183
+ * ```ts
184
+ * import { Multithread } from "@nicolastoulemont/std"
185
+ *
186
+ * const op = Multithread.filter([1, 2, 3, 4], (value) => value % 2 === 0)
187
+ * // => operation that resolves to [2, 4]
188
+ * ```
189
+ *
190
+ * @category Filtering
191
+ */
192
+ declare const filter: MultithreadFilter;
193
+ /**
194
+ * Flat-map a collection in parallel.
195
+ *
196
+ * @example
197
+ * ```ts
198
+ * import { Multithread } from "@nicolastoulemont/std"
199
+ *
200
+ * const op = Multithread.flatMap([1, 2], (value) => [value, value * 10])
201
+ * // => operation that resolves to [1, 10, 2, 20]
202
+ * ```
203
+ *
204
+ * @category Sequencing
205
+ */
206
+ declare const flatMap: MultithreadFlatMap;
207
+ /**
208
+ * Resolve with the first successfully completed operation.
209
+ *
210
+ * @example
211
+ * ```ts
212
+ * import { Multithread } from "@nicolastoulemont/std"
213
+ *
214
+ * const fast = Multithread.run(() => 1)
215
+ * const slow = Multithread.run(() => 2)
216
+ * const op = Multithread.race([fast, slow])
217
+ * // => operation that resolves with the first finished result
218
+ * ```
219
+ *
220
+ * @category Combining
221
+ */
222
+ declare const race: MultithreadRace;
223
+ /**
224
+ * Return the first successful operation, aggregating failures if none succeed.
225
+ *
226
+ * @example
227
+ * ```ts
228
+ * import { Multithread } from "@nicolastoulemont/std"
229
+ *
230
+ * import { Result } from "@nicolastoulemont/std"
231
+ *
232
+ * const fail = Multithread.run(() => Result.err("boom"))
233
+ * const pass = Multithread.run(() => Result.ok(1))
234
+ * const op = Multithread.firstSuccess([fail, pass])
235
+ * // => operation that resolves with 1
236
+ * ```
237
+ *
238
+ * @category Combining
239
+ */
240
+ declare const firstSuccess: MultithreadFirstSuccess;
241
+ /**
242
+ * Configure max worker count used by the underlying runtime.
243
+ *
244
+ * Must be called before first multithread operation starts.
245
+ *
246
+ * @example
247
+ * ```ts
248
+ * import { Multithread } from "@nicolastoulemont/std"
249
+ *
250
+ * const configured = Multithread.configure({ maxWorkers: 4 })
251
+ * // => { _tag: "Ok", value: undefined }
252
+ * ```
253
+ *
254
+ * @category Constructors
255
+ */
256
+ declare const configure: (config: {
257
+ maxWorkers: number;
258
+ }) => Result<void, MultithreadError>;
259
+ /**
260
+ * Shutdown worker runtime.
261
+ *
262
+ * This function is idempotent.
263
+ *
264
+ * @example
265
+ * ```ts
266
+ * import { Multithread } from "@nicolastoulemont/std"
267
+ *
268
+ * const shutdownPromise = Multithread.shutdown()
269
+ * // => Promise<Result<void, MultithreadError>>
270
+ * ```
271
+ *
272
+ * @category Utilities
273
+ */
274
+ declare const shutdown: () => Promise<Result<void, MultithreadError>>;
275
+ //#endregion
276
+ export { multithread_d_exports as t };
277
+ //# sourceMappingURL=index-By6dNRc4.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-By6dNRc4.d.mts","names":[],"sources":["../src/multithread/multithread.types.ts","../src/multithread/multithread.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { t as Discriminator } from "./discriminator.types-9PxvrZki.mjs";
1
+ import { t as Discriminator } from "./discriminator.types-CTURejXz.mjs";
2
+ import { t as TaggedErrorFactory } from "./data.tagged-error.types-CGiKD-ES.mjs";
2
3
 
3
4
  //#region src/data/data.types.d.ts
4
-
5
5
  /**
6
6
  * A tagged value object created by tagged().
7
7
  * Contains the data fields plus a readonly _tag discriminator.
@@ -114,7 +114,7 @@ type ArrayValue<out T> = {
114
114
  * arr1.push(4) // TypeError
115
115
  * ```
116
116
  */
117
- declare function array<T>(items: readonly T[]): ArrayValue<T>;
117
+ declare function array$1<T>(items: readonly T[]): ArrayValue<T>;
118
118
  //#endregion
119
119
  //#region src/data/data.struct.d.ts
120
120
  /**
@@ -148,7 +148,7 @@ declare function array<T>(items: readonly T[]): ArrayValue<T>;
148
148
  * Object.keys(point) // ["x", "y"]
149
149
  * ```
150
150
  */
151
- declare function struct<T extends Record<string, unknown>>(input: T): StructValue<T>;
151
+ declare function struct$1<T extends Record<string, unknown>>(input: T): StructValue<T>;
152
152
  //#endregion
153
153
  //#region src/data/data.tagged.d.ts
154
154
  /**
@@ -183,7 +183,44 @@ declare function struct<T extends Record<string, unknown>>(input: T): StructValu
183
183
  * alice.name = "Bob" // TypeError
184
184
  * ```
185
185
  */
186
- declare function tagged<T extends Record<string, unknown>>(tag: string): TaggedConstructor<typeof tag, T>;
186
+ declare function tagged$1<T extends Record<string, unknown>>(tag: string): TaggedConstructor<typeof tag, T>;
187
+ //#endregion
188
+ //#region src/data/data.tagged-error.d.ts
189
+ /**
190
+ * Create a class-based tagged error type (Effect-style syntax).
191
+ * Returns a class that can be extended to create custom error types.
192
+ * Errors are native Error objects with proper stack traces and instanceof support.
193
+ * Implements Yieldable protocol so errors can be directly yielded in Fx.gen computations.
194
+ *
195
+ * @template Tag - The error tag (discriminator string)
196
+ * @param tag - The error tag
197
+ * @returns A class that can be extended with custom data
198
+ *
199
+ * @example
200
+ * ```ts
201
+ * // Error with data
202
+ * class NotFoundError extends TaggedError("NotFoundError")<{ id: string }> {}
203
+ * const err = new NotFoundError({ id: "123" })
204
+ * err.id // "123"
205
+ * err._tag // "NotFoundError"
206
+ * err.stack // Error stack trace
207
+ *
208
+ * // Error without data
209
+ * class UnauthorizedError extends TaggedError("UnauthorizedError") {}
210
+ * const err2 = new UnauthorizedError()
211
+ *
212
+ * // Direct yielding in Fx.gen computation
213
+ * const program = Fx.gen(function* () {
214
+ * yield* new NotFoundError({ id: "123" }) // Short-circuits with error
215
+ * })
216
+ *
217
+ * // instanceof checks work
218
+ * if (err instanceof NotFoundError) {
219
+ * console.log(err.id)
220
+ * }
221
+ * ```
222
+ */
223
+ declare function TaggedError$1<Tag extends string>(tag: Tag): TaggedErrorFactory<Tag>;
187
224
  //#endregion
188
225
  //#region src/data/data.tuple.d.ts
189
226
  /**
@@ -216,15 +253,85 @@ declare function tagged<T extends Record<string, unknown>>(tag: string): TaggedC
216
253
  * t1[0] = 5 // TypeError
217
254
  * ```
218
255
  */
219
- declare function tuple<T extends readonly unknown[]>(...args: T): TupleValue<T>;
220
- //#endregion
221
- //#region src/data/data.d.ts
222
- declare const Data: {
223
- readonly tagged: typeof tagged;
224
- readonly struct: typeof struct;
225
- readonly tuple: typeof tuple;
226
- readonly array: typeof array;
227
- };
256
+ declare function tuple$1<T extends readonly unknown[]>(...args: T): TupleValue<T>;
257
+ declare namespace data_d_exports {
258
+ export { TaggedError, array, struct, tagged, tuple };
259
+ }
260
+ /**
261
+ * Construct tagged data objects.
262
+ *
263
+ * @example
264
+ * ```ts
265
+ * import { Data } from "@nicolastoulemont/std"
266
+ *
267
+ * const User = Data.tagged<{ id: string }>("User")
268
+ * const user = User({ id: "u1" })
269
+ * // => { _tag: "User", id: "u1" }
270
+ * ```
271
+ *
272
+ * @category Constructors
273
+ */
274
+ declare const tagged: typeof tagged$1;
275
+ /**
276
+ * Construct tagged error classes.
277
+ *
278
+ * @example
279
+ * ```ts
280
+ * import { Data } from "@nicolastoulemont/std"
281
+ *
282
+ * class NotFoundError extends Data.TaggedError("NotFoundError")<{ id: string }> {}
283
+ * const error = new NotFoundError({ id: "u1" })
284
+ * // => { _tag: "NotFoundError", id: "u1" }
285
+ * ```
286
+ *
287
+ * @category Constructors
288
+ */
289
+ declare const TaggedError: typeof TaggedError$1;
290
+ /**
291
+ * Construct immutable-like structs with stable structural behavior.
292
+ *
293
+ * @example
294
+ * ```ts
295
+ * import { Data } from "@nicolastoulemont/std"
296
+ *
297
+ * const point = Data.struct({ x: 1, y: 2 })
298
+ * const same = point.equals({ x: 1, y: 2 })
299
+ * // => true
300
+ * ```
301
+ *
302
+ * @category Constructors
303
+ */
304
+ declare const struct: typeof struct$1;
305
+ /**
306
+ * Construct immutable-like tuples with stable structural behavior.
307
+ *
308
+ * @example
309
+ * ```ts
310
+ * import { Data } from "@nicolastoulemont/std"
311
+ *
312
+ * const pair = Data.tuple("left", 1)
313
+ * const first = pair[0]
314
+ * // => "left"
315
+ * ```
316
+ *
317
+ * @category Constructors
318
+ */
319
+ declare const tuple: typeof tuple$1;
320
+ /**
321
+ * Construct immutable-like arrays with stable structural behavior.
322
+ *
323
+ * @example
324
+ * ```ts
325
+ * import { Data } from "@nicolastoulemont/std"
326
+ *
327
+ * const ids = Data.array(["a", "b"])
328
+ * const upper = ids.map((id) => id.toUpperCase())
329
+ * // => ["A", "B"]
330
+ * ```
331
+ *
332
+ * @category Constructors
333
+ */
334
+ declare const array: typeof array$1;
228
335
  //#endregion
229
- export { TaggedValue as a, TaggedConstructor as i, ArrayValue as n, TupleValue as o, StructValue as r, Data as t };
230
- //# sourceMappingURL=index-BzYtgdX0.d.mts.map
336
+ export { data_d_exports as t };
337
+ //# sourceMappingURL=index-CGiLfREk.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CGiLfREk.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.ts","../src/data/data.tuple.ts","../src/data/data.ts"],"sourcesContent":[],"mappings":"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"}