modern-ts 0.8.0

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 (261) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +223 -0
  3. package/README.zh-CN.md +223 -0
  4. package/dist/chunks/Errors-BWEYu-AB.cjs +2 -0
  5. package/dist/chunks/Errors-BWEYu-AB.cjs.map +1 -0
  6. package/dist/chunks/Errors-DwUAvFIF.mjs +63 -0
  7. package/dist/chunks/Errors-DwUAvFIF.mjs.map +1 -0
  8. package/dist/chunks/Math-CGEH1ClN.mjs +68 -0
  9. package/dist/chunks/Math-CGEH1ClN.mjs.map +1 -0
  10. package/dist/chunks/Math-CWZVxSF-.cjs +2 -0
  11. package/dist/chunks/Math-CWZVxSF-.cjs.map +1 -0
  12. package/dist/chunks/base-B9k8Lqvf.mjs +56 -0
  13. package/dist/chunks/base-B9k8Lqvf.mjs.map +1 -0
  14. package/dist/chunks/base-BTXL1y_I.cjs +2 -0
  15. package/dist/chunks/base-BTXL1y_I.cjs.map +1 -0
  16. package/dist/chunks/base-BpECeKwU.mjs +19 -0
  17. package/dist/chunks/base-BpECeKwU.mjs.map +1 -0
  18. package/dist/chunks/base-BvHqpP_s.cjs +2 -0
  19. package/dist/chunks/base-BvHqpP_s.cjs.map +1 -0
  20. package/dist/chunks/base-K-RHLZ-S.mjs +46 -0
  21. package/dist/chunks/base-K-RHLZ-S.mjs.map +1 -0
  22. package/dist/chunks/base-r6kn0B0D.cjs +2 -0
  23. package/dist/chunks/base-r6kn0B0D.cjs.map +1 -0
  24. package/dist/chunks/combine-async-DcG-3p8i.cjs +2 -0
  25. package/dist/chunks/combine-async-DcG-3p8i.cjs.map +1 -0
  26. package/dist/chunks/combine-async-Dcg4ya1R.mjs +236 -0
  27. package/dist/chunks/combine-async-Dcg4ya1R.mjs.map +1 -0
  28. package/dist/chunks/delay-CG3cD7bk.cjs +2 -0
  29. package/dist/chunks/delay-CG3cD7bk.cjs.map +1 -0
  30. package/dist/chunks/delay-CKIXpP71.mjs +32 -0
  31. package/dist/chunks/delay-CKIXpP71.mjs.map +1 -0
  32. package/dist/chunks/helper-BVabbpmX.mjs +165 -0
  33. package/dist/chunks/helper-BVabbpmX.mjs.map +1 -0
  34. package/dist/chunks/helper-tsqZMRHW.cjs +3 -0
  35. package/dist/chunks/helper-tsqZMRHW.cjs.map +1 -0
  36. package/dist/chunks/local-8JVtLN0O.mjs +10 -0
  37. package/dist/chunks/local-8JVtLN0O.mjs.map +1 -0
  38. package/dist/chunks/local-Da4yU-nE.cjs +2 -0
  39. package/dist/chunks/local-Da4yU-nE.cjs.map +1 -0
  40. package/dist/chunks/types-B7X_LBjM.cjs +2 -0
  41. package/dist/chunks/types-B7X_LBjM.cjs.map +1 -0
  42. package/dist/chunks/types-DE2SnSbz.mjs +5 -0
  43. package/dist/chunks/types-DE2SnSbz.mjs.map +1 -0
  44. package/dist/index.cjs +2 -0
  45. package/dist/index.cjs.map +1 -0
  46. package/dist/index.mjs +759 -0
  47. package/dist/index.mjs.map +1 -0
  48. package/dist/subpath/Arr.cjs +2 -0
  49. package/dist/subpath/Arr.cjs.map +1 -0
  50. package/dist/subpath/Arr.mjs +539 -0
  51. package/dist/subpath/Arr.mjs.map +1 -0
  52. package/dist/subpath/Concurrent.cjs +15 -0
  53. package/dist/subpath/Concurrent.cjs.map +1 -0
  54. package/dist/subpath/Concurrent.mjs +4044 -0
  55. package/dist/subpath/Concurrent.mjs.map +1 -0
  56. package/dist/subpath/FetchQ.cjs +2 -0
  57. package/dist/subpath/FetchQ.cjs.map +1 -0
  58. package/dist/subpath/FetchQ.mjs +519 -0
  59. package/dist/subpath/FetchQ.mjs.map +1 -0
  60. package/dist/subpath/Fit.cjs +2 -0
  61. package/dist/subpath/Fit.cjs.map +1 -0
  62. package/dist/subpath/Fit.mjs +914 -0
  63. package/dist/subpath/Fit.mjs.map +1 -0
  64. package/dist/subpath/Lazy.cjs +2 -0
  65. package/dist/subpath/Lazy.cjs.map +1 -0
  66. package/dist/subpath/Lazy.mjs +72 -0
  67. package/dist/subpath/Lazy.mjs.map +1 -0
  68. package/dist/subpath/Maps.cjs +2 -0
  69. package/dist/subpath/Maps.cjs.map +1 -0
  70. package/dist/subpath/Maps.mjs +123 -0
  71. package/dist/subpath/Maps.mjs.map +1 -0
  72. package/dist/subpath/Maybe.cjs +2 -0
  73. package/dist/subpath/Maybe.cjs.map +1 -0
  74. package/dist/subpath/Maybe.mjs +329 -0
  75. package/dist/subpath/Maybe.mjs.map +1 -0
  76. package/dist/subpath/Reactive.cjs +2 -0
  77. package/dist/subpath/Reactive.cjs.map +1 -0
  78. package/dist/subpath/Reactive.mjs +1204 -0
  79. package/dist/subpath/Reactive.mjs.map +1 -0
  80. package/dist/subpath/Reader.cjs +2 -0
  81. package/dist/subpath/Reader.cjs.map +1 -0
  82. package/dist/subpath/Reader.mjs +75 -0
  83. package/dist/subpath/Reader.mjs.map +1 -0
  84. package/dist/subpath/ReaderT.cjs +2 -0
  85. package/dist/subpath/ReaderT.cjs.map +1 -0
  86. package/dist/subpath/ReaderT.mjs +148 -0
  87. package/dist/subpath/ReaderT.mjs.map +1 -0
  88. package/dist/subpath/Resource.cjs +2 -0
  89. package/dist/subpath/Resource.cjs.map +1 -0
  90. package/dist/subpath/Resource.mjs +150 -0
  91. package/dist/subpath/Resource.mjs.map +1 -0
  92. package/dist/subpath/Result.cjs +2 -0
  93. package/dist/subpath/Result.cjs.map +1 -0
  94. package/dist/subpath/Result.mjs +337 -0
  95. package/dist/subpath/Result.mjs.map +1 -0
  96. package/dist/subpath/Sets.cjs +2 -0
  97. package/dist/subpath/Sets.cjs.map +1 -0
  98. package/dist/subpath/Sets.mjs +92 -0
  99. package/dist/subpath/Sets.mjs.map +1 -0
  100. package/dist/subpath/Str.cjs +2 -0
  101. package/dist/subpath/Str.cjs.map +1 -0
  102. package/dist/subpath/Str.mjs +114 -0
  103. package/dist/subpath/Str.mjs.map +1 -0
  104. package/dist/subpath/TxScope.cjs +2 -0
  105. package/dist/subpath/TxScope.cjs.map +1 -0
  106. package/dist/subpath/TxScope.mjs +138 -0
  107. package/dist/subpath/TxScope.mjs.map +1 -0
  108. package/dist/subpath/TypeTool.cjs +2 -0
  109. package/dist/subpath/TypeTool.cjs.map +1 -0
  110. package/dist/subpath/TypeTool.mjs +9 -0
  111. package/dist/subpath/TypeTool.mjs.map +1 -0
  112. package/dist/subpath/Utils.cjs +2 -0
  113. package/dist/subpath/Utils.cjs.map +1 -0
  114. package/dist/subpath/Utils.mjs +835 -0
  115. package/dist/subpath/Utils.mjs.map +1 -0
  116. package/dist/subpath/VirtualTime.cjs +2 -0
  117. package/dist/subpath/VirtualTime.cjs.map +1 -0
  118. package/dist/subpath/VirtualTime.mjs +1186 -0
  119. package/dist/subpath/VirtualTime.mjs.map +1 -0
  120. package/dist/types/Arr.d.ts +2 -0
  121. package/dist/types/Concurrent/Lock/condition_variable.d.ts +138 -0
  122. package/dist/types/Concurrent/Lock/mutex.d.ts +185 -0
  123. package/dist/types/Concurrent/Lock/rwlock.d.ts +253 -0
  124. package/dist/types/Concurrent/Lock/semaphore.d.ts +208 -0
  125. package/dist/types/Concurrent/Valve/__export__.d.ts +5 -0
  126. package/dist/types/Concurrent/Valve/circuit-breaker.d.ts +146 -0
  127. package/dist/types/Concurrent/Valve/leaky-bucket.d.ts +115 -0
  128. package/dist/types/Concurrent/Valve/sliding-window.d.ts +91 -0
  129. package/dist/types/Concurrent/Valve/token-bucket.d.ts +68 -0
  130. package/dist/types/Concurrent/__export__.d.ts +15 -0
  131. package/dist/types/Concurrent/barrier.d.ts +255 -0
  132. package/dist/types/Concurrent/channel.d.ts +239 -0
  133. package/dist/types/Concurrent/delay.d.ts +42 -0
  134. package/dist/types/Concurrent/ext/map.d.ts +82 -0
  135. package/dist/types/Concurrent/ext/other.d.ts +113 -0
  136. package/dist/types/Concurrent/ext/race.d.ts +31 -0
  137. package/dist/types/Concurrent/ext/some.d.ts +64 -0
  138. package/dist/types/Concurrent/limiter.d.ts +131 -0
  139. package/dist/types/Concurrent/scheduler.d.ts +171 -0
  140. package/dist/types/Concurrent/task-scope.d.ts +282 -0
  141. package/dist/types/Concurrent.d.ts +2 -0
  142. package/dist/types/Errors.d.ts +66 -0
  143. package/dist/types/FetchQ.d.ts +2 -0
  144. package/dist/types/Fit/__export__.d.ts +5 -0
  145. package/dist/types/Fit/base.d.ts +325 -0
  146. package/dist/types/Fit/parser.d.ts +110 -0
  147. package/dist/types/Fit/standard-schema.d.ts +127 -0
  148. package/dist/types/Fit/sugar.d.ts +274 -0
  149. package/dist/types/Fit/tool.d.ts +585 -0
  150. package/dist/types/Fit.d.ts +2 -0
  151. package/dist/types/Lazy.d.ts +2 -0
  152. package/dist/types/Maps.d.ts +2 -0
  153. package/dist/types/Maybe/__export__.d.ts +6 -0
  154. package/dist/types/Maybe/base.d.ts +62 -0
  155. package/dist/types/Maybe/consumers-async.d.ts +58 -0
  156. package/dist/types/Maybe/consumers.d.ts +63 -0
  157. package/dist/types/Maybe/operators-async.d.ts +145 -0
  158. package/dist/types/Maybe/operators.d.ts +177 -0
  159. package/dist/types/Maybe/types.d.ts +12 -0
  160. package/dist/types/Maybe.d.ts +2 -0
  161. package/dist/types/MockClock/Timeline.d.ts +392 -0
  162. package/dist/types/MockClock/TimerHandle.d.ts +159 -0
  163. package/dist/types/MockClock/TimerHeap.d.ts +21 -0
  164. package/dist/types/MockClock/VirtualTimeManager.d.ts +23 -0
  165. package/dist/types/MockClock/__export__.d.ts +104 -0
  166. package/dist/types/MockClock/hooks/__export__.d.ts +9 -0
  167. package/dist/types/MockClock/hooks/hookAbortSignal.d.ts +3 -0
  168. package/dist/types/MockClock/hooks/hookDate.d.ts +3 -0
  169. package/dist/types/MockClock/hooks/hookIntl.d.ts +3 -0
  170. package/dist/types/MockClock/hooks/hookMessageChannel.d.ts +3 -0
  171. package/dist/types/MockClock/hooks/hookMicrotasks.d.ts +3 -0
  172. package/dist/types/MockClock/hooks/hookOs.d.ts +3 -0
  173. package/dist/types/MockClock/hooks/hookPerformance.d.ts +3 -0
  174. package/dist/types/MockClock/hooks/hookProcess.d.ts +3 -0
  175. package/dist/types/MockClock/hooks/hookTimers.d.ts +3 -0
  176. package/dist/types/MockClock/types.d.ts +103 -0
  177. package/dist/types/Other/FetchQ.d.ts +320 -0
  178. package/dist/types/Other/deque.d.ts +59 -0
  179. package/dist/types/Other/disjointSet.d.ts +53 -0
  180. package/dist/types/Other/heap.d.ts +41 -0
  181. package/dist/types/Other/lazy.d.ts +127 -0
  182. package/dist/types/Other/queue.d.ts +42 -0
  183. package/dist/types/Other/secret.d.ts +111 -0
  184. package/dist/types/Other/stack.d.ts +40 -0
  185. package/dist/types/Reactive/__export__.d.ts +4 -0
  186. package/dist/types/Reactive/event_emitter.d.ts +195 -0
  187. package/dist/types/Reactive/flow-combination.d.ts +74 -0
  188. package/dist/types/Reactive/flow.d.ts +180 -0
  189. package/dist/types/Reactive/pace.d.ts +80 -0
  190. package/dist/types/Reactive.d.ts +2 -0
  191. package/dist/types/Reader/__export-readerT__.d.ts +4 -0
  192. package/dist/types/Reader/__export-reader__.d.ts +4 -0
  193. package/dist/types/Reader/local.d.ts +39 -0
  194. package/dist/types/Reader/reader-async.d.ts +84 -0
  195. package/dist/types/Reader/reader.d.ts +96 -0
  196. package/dist/types/Reader/readerT-async.d.ts +186 -0
  197. package/dist/types/Reader/readerT.d.ts +178 -0
  198. package/dist/types/Reader/types.d.ts +37 -0
  199. package/dist/types/Reader.d.ts +2 -0
  200. package/dist/types/ReaderT.d.ts +2 -0
  201. package/dist/types/Resource/TxScope-async.d.ts +86 -0
  202. package/dist/types/Resource/TxScope.d.ts +85 -0
  203. package/dist/types/Resource/__export-TxScope__.d.ts +2 -0
  204. package/dist/types/Resource/__export-resource__.d.ts +2 -0
  205. package/dist/types/Resource/resource-async.d.ts +79 -0
  206. package/dist/types/Resource/resource.d.ts +78 -0
  207. package/dist/types/Resource/types.d.ts +79 -0
  208. package/dist/types/Resource.d.ts +2 -0
  209. package/dist/types/Result/Consumers/branch-async.d.ts +77 -0
  210. package/dist/types/Result/Consumers/branch.d.ts +70 -0
  211. package/dist/types/Result/Consumers/inspect.d.ts +66 -0
  212. package/dist/types/Result/Operators/Async/combine-async.d.ts +69 -0
  213. package/dist/types/Result/Operators/Async/partition-async.d.ts +29 -0
  214. package/dist/types/Result/Operators/Async/reduce-async.d.ts +15 -0
  215. package/dist/types/Result/Operators/Async/transform-async.d.ts +90 -0
  216. package/dist/types/Result/Operators/combine.d.ts +60 -0
  217. package/dist/types/Result/Operators/flatten.d.ts +26 -0
  218. package/dist/types/Result/Operators/partition.d.ts +25 -0
  219. package/dist/types/Result/Operators/reduce.d.ts +12 -0
  220. package/dist/types/Result/Operators/transform.d.ts +70 -0
  221. package/dist/types/Result/__export__.d.ts +14 -0
  222. package/dist/types/Result/base.d.ts +115 -0
  223. package/dist/types/Result/types.d.ts +34 -0
  224. package/dist/types/Result.d.ts +2 -0
  225. package/dist/types/Sets.d.ts +2 -0
  226. package/dist/types/Str.d.ts +2 -0
  227. package/dist/types/TxScope.d.ts +2 -0
  228. package/dist/types/TypeTool.d.ts +2 -0
  229. package/dist/types/Utils/Array/__export__.d.ts +10 -0
  230. package/dist/types/Utils/Array/filtering.d.ts +89 -0
  231. package/dist/types/Utils/Array/flatten.d.ts +45 -0
  232. package/dist/types/Utils/Array/grouping.d.ts +44 -0
  233. package/dist/types/Utils/Array/iteration.d.ts +86 -0
  234. package/dist/types/Utils/Array/operators.d.ts +62 -0
  235. package/dist/types/Utils/Array/randomization.d.ts +76 -0
  236. package/dist/types/Utils/Array/set.d.ts +108 -0
  237. package/dist/types/Utils/Array/slice.d.ts +189 -0
  238. package/dist/types/Utils/Array/sorting.d.ts +55 -0
  239. package/dist/types/Utils/Array/zip.d.ts +93 -0
  240. package/dist/types/Utils/Functions/__export__.d.ts +5 -0
  241. package/dist/types/Utils/Functions/base.d.ts +157 -0
  242. package/dist/types/Utils/Functions/curry.d.ts +73 -0
  243. package/dist/types/Utils/Functions/debounce.d.ts +240 -0
  244. package/dist/types/Utils/Functions/defer.d.ts +43 -0
  245. package/dist/types/Utils/Functions/pipe.d.ts +205 -0
  246. package/dist/types/Utils/Map.d.ts +284 -0
  247. package/dist/types/Utils/Math.d.ts +225 -0
  248. package/dist/types/Utils/Object/__export__.d.ts +2 -0
  249. package/dist/types/Utils/Object/base.d.ts +131 -0
  250. package/dist/types/Utils/Object/clone.d.ts +81 -0
  251. package/dist/types/Utils/Predicates.d.ts +361 -0
  252. package/dist/types/Utils/Set.d.ts +105 -0
  253. package/dist/types/Utils/String.d.ts +217 -0
  254. package/dist/types/Utils/__export__.d.ts +9 -0
  255. package/dist/types/Utils/type-tool.d.ts +168 -0
  256. package/dist/types/Utils.d.ts +2 -0
  257. package/dist/types/VirtualTime.d.ts +2 -0
  258. package/dist/types/helper.d.ts +71 -0
  259. package/dist/types/index.d.ts +21 -0
  260. package/dist/types/unknown-error.d.ts +98 -0
  261. package/package.json +179 -0
@@ -0,0 +1,58 @@
1
+ import { AnyMaybe, Maybe } from './types';
2
+ import { MaybePromise } from '../Utils/type-tool';
3
+ /**
4
+ * Asynchronously pattern matches on a Maybe value, executing the appropriate callback
5
+ * @param val - The Maybe value or Promise of Maybe to match on
6
+ * @param onSome - Callback executed when value is Some
7
+ * @param onNone - Callback executed when value is None
8
+ * @param signal - Optional AbortSignal for cancellation
9
+ * @returns Promise resolving to the result of the executed callback
10
+ */
11
+ export declare function matchAsync<T, R>(val: AnyMaybe<T>, onSome: (value: T, signal?: AbortSignal) => MaybePromise<R>, onNone: (signal?: AbortSignal) => MaybePromise<R>, signal?: AbortSignal): Promise<R>;
12
+ /**
13
+ * Executes callback only if Maybe value is Some (single callback version)
14
+ * @returns Promise resolving to callback result or undefined
15
+ */
16
+ export declare function ifSomeAsync<T, R1>(val: AnyMaybe<T>, onSome: (value: T) => MaybePromise<R1>): Promise<R1 | void>;
17
+ /**
18
+ * Executes appropriate callback based on Maybe value (two callback version)
19
+ * @returns Promise resolving to result of either callback
20
+ */
21
+ export declare function ifSomeAsync<T, R1, R2>(val: AnyMaybe<T>, onSome: (value: T) => MaybePromise<R1>, onElse: () => MaybePromise<R2>): Promise<R1 | R2>;
22
+ /**
23
+ * Executes callback only if Maybe value is None (single callback version)
24
+ * @returns Promise resolving to callback result or undefined
25
+ */
26
+ export declare function ifNoneAsync<T, R1>(val: AnyMaybe<T>, onNone: () => MaybePromise<R1>): Promise<R1 | void>;
27
+ /**
28
+ * Executes appropriate callback based on Maybe value (two callback version)
29
+ * @returns Promise resolving to result of either callback
30
+ */
31
+ export declare function ifNoneAsync<T, R1, R2>(val: AnyMaybe<T>, onNone: () => MaybePromise<R1>, onElse: (value: T) => MaybePromise<R2>): Promise<R1 | R2>;
32
+ /**
33
+ * Executes a side effect for Some values without modifying the Maybe
34
+ * @param val - The Maybe value or Promise of Maybe to inspect
35
+ * @param fn - Side effect function for Some values
36
+ * @param signal - Optional AbortSignal for cancellation
37
+ * @returns Promise resolving to the original Maybe value
38
+ */
39
+ export declare function peekAsync<T>(val: AnyMaybe<T>, fn: (v: T, signal?: AbortSignal) => MaybePromise<void>, signal?: AbortSignal): Promise<Maybe<T>>;
40
+ /**
41
+ * Executes a side effect for None values without modifying the Maybe
42
+ * @param val - The Maybe value or Promise of Maybe to inspect
43
+ * @param fn - Side effect function for None values
44
+ * @param signal - Optional AbortSignal for cancellation
45
+ * @returns Promise resolving to the original Maybe value
46
+ */
47
+ export declare function peekNoneAsync<T>(val: AnyMaybe<T>, fn: (signal?: AbortSignal) => MaybePromise<void>, signal?: AbortSignal): Promise<Maybe<T>>;
48
+ /**
49
+ * Executes side effects for both Some and None cases without modifying the Maybe
50
+ * @param val - The Maybe value or Promise of Maybe to inspect
51
+ * @param handlers - Object containing optional Some and None handlers
52
+ * @param signal - Optional AbortSignal for cancellation
53
+ * @returns Promise resolving to the original Maybe value
54
+ */
55
+ export declare function peekBothAsync<T>(val: AnyMaybe<T>, { fnSome, fnNone, }: {
56
+ fnSome?: (v: T, signal?: AbortSignal) => MaybePromise<void>;
57
+ fnNone?: (signal?: AbortSignal) => MaybePromise<void>;
58
+ }, signal?: AbortSignal): Promise<Maybe<T>>;
@@ -0,0 +1,63 @@
1
+ import { Maybe } from './types';
2
+ /**
3
+ * Pattern matching for Maybe type
4
+ * @param val - Maybe value to match
5
+ * @param onSome - Callback for Some case
6
+ * @param onNone - Callback for None case
7
+ * @returns Result of the matched case
8
+ */
9
+ export declare const match: <T, R>(val: Maybe<T>, onSome: (value: T) => R, onNone: () => R) => R;
10
+ /**
11
+ * Execute callback only if Maybe is Some
12
+ * @param val - Maybe value to check
13
+ * @param onSome - Callback for Some case
14
+ * @returns Callback result or undefined
15
+ */
16
+ export declare function ifSome<T, R1>(val: Maybe<T>, onSome: (value: T) => R1): R1 | void;
17
+ /**
18
+ * Execute callback for Some, fallback for None
19
+ * @param val - Maybe value to check
20
+ * @param onSome - Callback for Some case
21
+ * @param onElse - Fallback callback
22
+ * @returns Result of either callback
23
+ */
24
+ export declare function ifSome<T, R1, R2>(val: Maybe<T>, onSome: (value: T) => R1, onElse: () => R2): R1 | R2;
25
+ /**
26
+ * Execute callback only if Maybe is None
27
+ * @param val - Maybe value to check
28
+ * @param onNone - Callback for None case
29
+ * @returns Callback result or undefined
30
+ */
31
+ export declare function ifNone<T, R1>(val: Maybe<T>, onNone: () => R1): R1 | void;
32
+ /**
33
+ * Execute callback for None, fallback for Some
34
+ * @param val - Maybe value to check
35
+ * @param onNone - Callback for None case
36
+ * @param onElse - Fallback callback
37
+ * @returns Result of either callback
38
+ */
39
+ export declare function ifNone<T, R1, R2>(val: Maybe<T>, onNone: () => R1, onElse: (value: T) => R2): R1 | R2;
40
+ /**
41
+ * Peek at Some value without consuming
42
+ * @param val - Maybe value to inspect
43
+ * @param fn - Side effect callback
44
+ * @returns Original Maybe value
45
+ */
46
+ export declare const peek: <T>(val: Maybe<T>, fn: (v: T) => void) => Maybe<T>;
47
+ /**
48
+ * Peek at None case without consuming
49
+ * @param val - Maybe value to inspect
50
+ * @param fn - Side effect callback
51
+ * @returns Original Maybe value
52
+ */
53
+ export declare const peekNone: <T>(val: Maybe<T>, fn: () => void) => Maybe<T>;
54
+ /**
55
+ * Peek at both cases with separate callbacks
56
+ * @param val - Maybe value to inspect
57
+ * @param callbacks - Object with Some and None handlers
58
+ * @returns Original Maybe value
59
+ */
60
+ export declare function peekBoth<T>(val: Maybe<T>, { fnSome, fnNone, }: {
61
+ fnSome?: (v: T) => void;
62
+ fnNone?: () => void;
63
+ }): Maybe<T>;
@@ -0,0 +1,145 @@
1
+ import { AnyMaybe, AsyncMaybe } from './types';
2
+ /**
3
+ * Applies async function from Maybe to async value.
4
+ * @typeparam T - Input type
5
+ * @typeparam R - Result type
6
+ * @param fn_val - Maybe function
7
+ * @param val - Maybe value
8
+ * @param signal - Optional AbortSignal
9
+ * @returns AsyncMaybe<R>
10
+ */
11
+ export declare const apAsync: <T, R>(fn_val: AnyMaybe<(v: T) => R | Promise<R>>, val: AnyMaybe<T>, signal?: AbortSignal) => AsyncMaybe<R>;
12
+ /**
13
+ * Transforms async Maybe value with async function.
14
+ * @typeparam T - Input type
15
+ * @typeparam R - Result type
16
+ * @param val - Maybe value
17
+ * @param fn - Async transformation function
18
+ * @param signal - Optional AbortSignal
19
+ * @returns AsyncMaybe<R>
20
+ */
21
+ export declare const mapAsync: <T, R>(val: AnyMaybe<T>, fn: (v: T) => R | Promise<R>, signal?: AbortSignal) => AsyncMaybe<R>;
22
+ /**
23
+ * Maps value only if predicate passes (async).
24
+ * @typeparam T - Input type
25
+ * @typeparam R - Result type
26
+ * @param val - Maybe value
27
+ * @param predicate - Async condition check
28
+ * @param fn - Async transformation function
29
+ * @param signal - Optional AbortSignal
30
+ * @returns AsyncMaybe<R>
31
+ */
32
+ export declare const mapIfAsync: <T, R>(val: AnyMaybe<T>, predicate: (v: T) => boolean | Promise<boolean>, fn: (v: T) => R | Promise<R>, signal?: AbortSignal) => AsyncMaybe<R>;
33
+ /**
34
+ * Chains async computations that may fail.
35
+ * @typeparam T - Input type
36
+ * @typeparam R - Result type
37
+ * @param val - Maybe value
38
+ * @param fn - Async function returning Maybe
39
+ * @param signal - Optional AbortSignal
40
+ * @returns AsyncMaybe<R>
41
+ */
42
+ export declare const andThenAsync: <T, R>(val: AnyMaybe<T>, fn: (v: T) => AnyMaybe<R>, signal?: AbortSignal) => AsyncMaybe<R>;
43
+ /**
44
+ * Filters async Maybe value with async predicate.
45
+ * @typeparam T - Value type
46
+ * @param val - Maybe value
47
+ * @param predicate - Async filter condition
48
+ * @param signal - Optional AbortSignal
49
+ * @returns AsyncMaybe<T>
50
+ */
51
+ export declare const filterAsync: <T>(val: AnyMaybe<T>, predicate: (v: T) => boolean | Promise<boolean>, signal?: AbortSignal) => AsyncMaybe<T>;
52
+ /**
53
+ * Zips two async Maybes into tuple if both are Some.
54
+ * @typeparam T - First type
55
+ * @typeparam U - Second type
56
+ * @param a - First Maybe
57
+ * @param b - Second Maybe
58
+ * @param signal - Optional AbortSignal
59
+ * @returns AsyncMaybe<[T, U]>
60
+ */
61
+ export declare const zipAsync: <T, U>(a: AnyMaybe<T>, b: AnyMaybe<U>, signal?: AbortSignal) => AsyncMaybe<[T, U]>;
62
+ /**
63
+ * Extracts value from async Maybe or returns default.
64
+ * @typeparam T - Input type
65
+ * @typeparam R - Result type
66
+ * @param val - Maybe value
67
+ * @param initial - Default value or Promise
68
+ * @param onSome - Async handler for Some case
69
+ * @param signal - Optional AbortSignal
70
+ * @returns Promise<R>
71
+ */
72
+ export declare const foldAsync: <T, R>(val: AnyMaybe<T>, initial: R | Promise<R>, onSome: (v: T) => R | Promise<R>, signal?: AbortSignal) => Promise<R>;
73
+ /**
74
+ * Returns value if Some, otherwise async fallback.
75
+ * @typeparam T - Value type
76
+ * @param val - Maybe value
77
+ * @param fn - Async fallback supplier
78
+ * @param signal - Optional AbortSignal
79
+ * @returns AsyncMaybe<T>
80
+ */
81
+ export declare const orElseAsync: <T>(val: AnyMaybe<T>, fn: () => AnyMaybe<T>, signal?: AbortSignal) => AsyncMaybe<T>;
82
+ /**
83
+ * Maps array with async function, fails if any returns None.
84
+ * @typeparam T - Input type
85
+ * @typeparam R - Output type
86
+ * @param items - Input array
87
+ * @param fn - Async mapping function
88
+ * @param signal - Optional AbortSignal
89
+ * @returns AsyncMaybe<R[]>
90
+ */
91
+ export declare const mapAllAsync: <T, R>(items: readonly T[], fn: (it: T, i: number) => AnyMaybe<R>, signal?: AbortSignal) => AsyncMaybe<R[]>;
92
+ /**
93
+ * Returns all async values if all are Some, None otherwise.
94
+ * @typeparam T - Element type
95
+ * @param vals - Array of async Maybes
96
+ * @param signal - Optional AbortSignal
97
+ * @returns AsyncMaybe<T[]>
98
+ */
99
+ export declare const allAsync: <T>(vals: readonly AnyMaybe<T>[], signal?: AbortSignal) => AsyncMaybe<T[]>;
100
+ /**
101
+ * Returns first Some value from async array, None if none found.
102
+ * @typeparam T - Element type
103
+ * @param vals - Array of async Maybes
104
+ * @param signal - Optional AbortSignal
105
+ * @returns AsyncMaybe<T>
106
+ */
107
+ export declare const firstSomeAsync: <T>(vals: readonly AnyMaybe<T>[], signal?: AbortSignal) => AsyncMaybe<T>;
108
+ /**
109
+ * Reduces array of async Maybes with async reducer.
110
+ * @typeparam T - Element type
111
+ * @typeparam R - Result type
112
+ * @param vals - Array of async Maybes
113
+ * @param initial - Initial value
114
+ * @param reducer - Async reduction function
115
+ * @param signal - Optional AbortSignal
116
+ * @returns AsyncMaybe<R>
117
+ */
118
+ export declare function reduceAsync<T, R>(vals: readonly AnyMaybe<T>[], initial: R, reducer: (acc: R, v: T) => R | Promise<R>, signal?: AbortSignal): AsyncMaybe<R>;
119
+ /**
120
+ * Performs async scan reduction on array of async Maybes.
121
+ * @typeparam T - Element type
122
+ * @typeparam R - Result type
123
+ * @param vals - Array of async Maybes
124
+ * @param initial - Initial value
125
+ * @param scanner - Async scanning function
126
+ * @param signal - Optional AbortSignal
127
+ * @returns AsyncMaybe<R[]>
128
+ */
129
+ export declare function scanAsync<T, R>(vals: readonly AnyMaybe<T>[], initial: R, scanner: (acc: R, v: T) => R | Promise<R>, signal?: AbortSignal): AsyncMaybe<R[]>;
130
+ /**
131
+ * Collects all Some values from async array.
132
+ * @typeparam T - Element type
133
+ * @param vals - Array of async Maybes
134
+ * @param signal - Optional AbortSignal
135
+ * @returns Promise<T[]> - Only Some values
136
+ */
137
+ export declare const collectSomesAsync: <T>(vals: readonly AnyMaybe<T>[], signal?: AbortSignal) => Promise<T[]>;
138
+ /**
139
+ * Partitions async array into Some values and None count.
140
+ * @typeparam T - Element type
141
+ * @param vals - Array of async Maybes
142
+ * @param signal - Optional AbortSignal
143
+ * @returns Promise<[T[], number]> - [Some values, None count]
144
+ */
145
+ export declare const partitionAsync: <T>(vals: readonly AnyMaybe<T>[], signal?: AbortSignal) => Promise<[T[], number]>;
@@ -0,0 +1,177 @@
1
+ import { Maybe } from './types';
2
+ /**
3
+ * Transforms the contained value if Some, returns None otherwise.
4
+ * @typeparam T - Original value type
5
+ * @typeparam R - Result type
6
+ * @param val - Maybe value
7
+ * @param fn - Transformation function
8
+ * @returns Maybe<R>
9
+ */
10
+ export declare const map: <T, R>(val: Maybe<T>, fn: (value: T) => R) => Maybe<R>;
11
+ /**
12
+ * Chains computations that may fail. If Some, applies fn, otherwise returns None.
13
+ * @typeparam T - Original value type
14
+ * @typeparam R - Result type
15
+ * @param val - Maybe value
16
+ * @param fn - Function returning Maybe<R>
17
+ * @returns Maybe<R>
18
+ */
19
+ export declare const andThen: <T, R>(val: Maybe<T>, fn: (value: T) => Maybe<R>) => Maybe<R>;
20
+ /**
21
+ * Applies a Maybe-wrapped function to a Maybe value.
22
+ * @typeparam T - Input type
23
+ * @typeparam R - Result type
24
+ * @param fn_val - Maybe<(v: T) => R>
25
+ * @param val - Maybe<T>
26
+ * @returns Maybe<R>
27
+ */
28
+ export declare const ap: <T, R>(fn_val: Maybe<(v: T) => R>, val: Maybe<T>) => Maybe<R>;
29
+ /**
30
+ * Returns Some if value satisfies predicate, None otherwise.
31
+ * @typeparam T - Value type
32
+ * @param val - Maybe value
33
+ * @param predicate - Filter condition
34
+ * @returns Maybe<T>
35
+ */
36
+ export declare const filter: <T>(val: Maybe<T>, predicate: (v: T) => boolean) => Maybe<T>;
37
+ /**
38
+ * Maps value if predicate passes, returns None otherwise.
39
+ * @typeparam T - Original type
40
+ * @typeparam R - Result type
41
+ * @param val - Maybe value
42
+ * @param predicate - Condition to check
43
+ * @param fn - Transformation function
44
+ * @returns Maybe<R>
45
+ */
46
+ export declare const mapIf: <T, R>(val: Maybe<T>, predicate: (v: T) => boolean, fn: (v: T) => R) => Maybe<R>;
47
+ /**
48
+ * Returns other if val is Some, None otherwise.
49
+ * @typeparam T - First type
50
+ * @typeparam U - Second type
51
+ * @param val - Maybe<T>
52
+ * @param other - Maybe<U>
53
+ * @returns Maybe<U>
54
+ */
55
+ export declare const and: <T, U>(val: Maybe<T>, other: Maybe<U>) => Maybe<U>;
56
+ /**
57
+ * Returns first Some value, otherwise other.
58
+ * @typeparam T - Value type
59
+ * @param val - First Maybe
60
+ * @param other - Fallback Maybe
61
+ * @returns Maybe<T>
62
+ */
63
+ export declare const or: <T>(val: Maybe<T>, other: Maybe<T>) => Maybe<T>;
64
+ /**
65
+ * Returns val if Some, otherwise calls fn for fallback.
66
+ * @typeparam T - Value type
67
+ * @param val - Maybe value
68
+ * @param fn - Fallback supplier
69
+ * @returns Maybe<T>
70
+ */
71
+ export declare const orElse: <T>(val: Maybe<T>, fn: () => Maybe<T>) => Maybe<T>;
72
+ /**
73
+ * Extracts value or returns default.
74
+ * @typeparam T - Input type
75
+ * @typeparam R - Output type
76
+ * @param val - Maybe value
77
+ * @param initial - Default value
78
+ * @param onSome - Handler for Some case
79
+ * @returns R
80
+ */
81
+ export declare const fold: <T, R>(val: Maybe<T>, initial: R, onSome: (v: T) => R) => R;
82
+ /**
83
+ * Checks if Maybe contains specific value.
84
+ * @typeparam T - Value type
85
+ * @param val - Maybe value
86
+ * @param x - Value to compare
87
+ * @returns boolean
88
+ */
89
+ export declare const contains: <T>(val: Maybe<T>, x: T) => boolean;
90
+ /**
91
+ * Combines two Maybes into tuple if both are Some.
92
+ * @typeparam T - First type
93
+ * @typeparam U - Second type
94
+ * @param a - Maybe<T>
95
+ * @param b - Maybe<U>
96
+ * @returns Maybe<[T, U]>
97
+ */
98
+ export declare const zip: <T, U>(a: Maybe<T>, b: Maybe<U>) => Maybe<[T, U]>;
99
+ /**
100
+ * Applies function to two Maybes if both are Some.
101
+ * @typeparam T - First type
102
+ * @typeparam U - Second type
103
+ * @typeparam R - Result type
104
+ * @param ma - Maybe<T>
105
+ * @param mb - Maybe<U>
106
+ * @param fn - Combining function
107
+ * @returns Maybe<R>
108
+ */
109
+ export declare const zipWith: <T, U, R>(ma: Maybe<T>, mb: Maybe<U>, fn: (a: T, b: U) => R) => Maybe<R>;
110
+ /**
111
+ * Returns array of all values if all are Some, None otherwise.
112
+ * @typeparam T - Element type
113
+ * @param vals - Array of Maybes
114
+ * @returns Maybe<T[]>
115
+ */
116
+ export declare const all: <T>(vals: readonly Maybe<T>[]) => Maybe<T[]>;
117
+ /**
118
+ * Maps array to Maybes, returns Some of results if all succeed.
119
+ * @typeparam T - Input type
120
+ * @typeparam U - Output type
121
+ * @param items - Input array
122
+ * @param fn - Mapping function
123
+ * @returns Maybe<U[]>
124
+ */
125
+ export declare const mapAll: <T, U>(items: readonly T[], fn: (it: T, i: number) => Maybe<U>) => Maybe<U[]>;
126
+ /**
127
+ * Partitions array into Some values and None count.
128
+ * @typeparam T - Element type
129
+ * @param vals - Array of Maybes
130
+ * @returns [T[], number] - [Some values, None count]
131
+ */
132
+ export declare const partition: <T>(vals: readonly Maybe<T>[]) => [T[], number];
133
+ /**
134
+ * Collects all Some values from array.
135
+ * @typeparam T - Element type
136
+ * @param vals - Array of Maybes
137
+ * @returns T[] - Only Some values
138
+ */
139
+ export declare const collectSomes: <T>(vals: readonly Maybe<T>[]) => T[];
140
+ /**
141
+ * Returns first Some value in array, None if none found.
142
+ * @typeparam T - Element type
143
+ * @param vals - Array of Maybes
144
+ * @returns Maybe<T>
145
+ */
146
+ export declare const firstSome: <T>(vals: readonly Maybe<T>[]) => Maybe<T>;
147
+ /**
148
+ * Reduces array of Maybes. Returns None if any is None.
149
+ * @typeparam T - Element type
150
+ * @typeparam R - Result type
151
+ * @param vals - Array of Maybes
152
+ * @param initial - Initial value
153
+ * @param reducer - Reduction function
154
+ * @returns Maybe<R>
155
+ */
156
+ export declare function reduce<T, R>(vals: readonly Maybe<T>[], initial: R, reducer: (acc: R, v: T) => R): Maybe<R>;
157
+ /**
158
+ * Performs scan reduction. Returns None if any is None.
159
+ * @typeparam T - Element type
160
+ * @typeparam R - Result type
161
+ * @param vals - Array of Maybes
162
+ * @param initial - Initial value
163
+ * @param scanner - Scanning function
164
+ * @returns Maybe<R[]>
165
+ */
166
+ export declare function scan<T, R>(vals: readonly Maybe<T>[], initial: R, scanner: (acc: R, v: T) => R): Maybe<R[]>;
167
+ /**
168
+ * Folds with separate handlers for Some/None.
169
+ * @typeparam T - Element type
170
+ * @typeparam R - Result type
171
+ * @param vals - Array of Maybes
172
+ * @param initial - Initial value
173
+ * @param onSome - Handler for Some values
174
+ * @param onNone - Handler for None values
175
+ * @returns R
176
+ */
177
+ export declare const folds: <T, R>(vals: readonly Maybe<T>[], initial: R, onSome: (acc: R, v: T) => R, onNone: (acc: R) => R) => R;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A nullable type that can be `T`, `null`, or `undefined`.
3
+ */
4
+ export type Maybe<T> = T | null | undefined;
5
+ /**
6
+ * A Promise that resolves to a {@link Maybe} value.
7
+ */
8
+ export type AsyncMaybe<T> = Promise<Maybe<T>>;
9
+ /**
10
+ * A union of all possible maybe-like types - synchronous, asynchronous, or Promise-like.
11
+ */
12
+ export type AnyMaybe<T> = Maybe<T> | AsyncMaybe<T> | PromiseLike<Maybe<T>>;
@@ -0,0 +1,2 @@
1
+ export * from './Maybe/__export__'
2
+ export {}