@fncts/base 0.0.1 → 0.0.4

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 (830) hide show
  1. package/_cjs/collection/Iterable/api/traverseConc.cjs +21 -15
  2. package/_cjs/collection/Iterable/api/traverseConc.cjs.map +1 -1
  3. package/_cjs/collection/Iterable/api.cjs +23 -37
  4. package/_cjs/collection/Iterable/api.cjs.map +1 -1
  5. package/_cjs/collection/Iterable.cjs +3 -3
  6. package/_cjs/collection/compat/Array/api.cjs +1 -1
  7. package/_cjs/collection/compat/Array/api.cjs.map +1 -1
  8. package/_cjs/collection/compat/Array.cjs +2 -2
  9. package/_cjs/collection/immutable/Conc/api.cjs +41 -53
  10. package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
  11. package/_cjs/collection/immutable/Conc/constructors.cjs +1 -1
  12. package/_cjs/collection/immutable/Conc/definition.cjs +49 -39
  13. package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
  14. package/_cjs/collection/immutable/Conc.cjs +6 -6
  15. package/_cjs/collection/immutable/Dictionary/definition.cjs +4 -2
  16. package/_cjs/collection/immutable/Dictionary/definition.cjs.map +1 -1
  17. package/_cjs/collection/immutable/HashMap/api.cjs +35 -108
  18. package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
  19. package/_cjs/collection/immutable/HashMap/definition.cjs +19 -15
  20. package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
  21. package/_cjs/collection/immutable/HashMap.cjs +2 -2
  22. package/_cjs/collection/immutable/HashSet/api.cjs +10 -10
  23. package/_cjs/collection/immutable/HashSet/api.cjs.map +1 -1
  24. package/_cjs/collection/immutable/HashSet.cjs +2 -2
  25. package/_cjs/collection/immutable/ImmutableArray/api.cjs +153 -248
  26. package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +1 -1
  27. package/_cjs/collection/immutable/ImmutableArray/definition.cjs +12 -10
  28. package/_cjs/collection/immutable/ImmutableArray/definition.cjs.map +1 -1
  29. package/_cjs/collection/immutable/ImmutableArray/instances.cjs +153 -157
  30. package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +1 -1
  31. package/_cjs/collection/immutable/ImmutableArray.cjs +4 -4
  32. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +118 -181
  33. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +1 -1
  34. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs +3 -0
  35. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +1 -1
  36. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs +45 -81
  37. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +1 -1
  38. package/_cjs/collection/immutable/ImmutableNonEmptyArray.cjs +5 -5
  39. package/_cjs/collection/immutable/List/api.cjs +4 -7
  40. package/_cjs/collection/immutable/List/api.cjs.map +1 -1
  41. package/_cjs/collection/immutable/List/constructors.cjs +1 -1
  42. package/_cjs/collection/immutable/List.cjs +5 -5
  43. package/_cjs/collection/immutable/Queue.cjs +4 -4
  44. package/_cjs/collection/immutable/RoseTree/api.cjs +485 -0
  45. package/_cjs/collection/immutable/RoseTree/api.cjs.map +1 -0
  46. package/_cjs/collection/immutable/RoseTree/definition.cjs +58 -0
  47. package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -0
  48. package/_cjs/collection/immutable/RoseTree.cjs +32 -0
  49. package/_cjs/collection/immutable/RoseTree.cjs.map +1 -0
  50. package/_cjs/collection/immutable/SortedMap/api.cjs +65 -65
  51. package/_cjs/collection/immutable/SortedMap/api.cjs.map +1 -1
  52. package/_cjs/collection/immutable/SortedMap.cjs +5 -5
  53. package/_cjs/collection/immutable/Vector/api.cjs +70 -15
  54. package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
  55. package/_cjs/collection/immutable/Vector/definition.cjs +13 -11
  56. package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
  57. package/_cjs/collection/immutable/Vector.cjs +2 -2
  58. package/_cjs/collection/mutable/HashMap.cjs +5 -5
  59. package/_cjs/collection/mutable/HashMap.cjs.map +1 -1
  60. package/_cjs/collection/mutable/HashSet.cjs +4 -4
  61. package/_cjs/collection/mutable/HashSet.cjs.map +1 -1
  62. package/_cjs/control/Eval/api.cjs +7 -1
  63. package/_cjs/control/Eval/api.cjs.map +1 -1
  64. package/_cjs/control/Eval/definition.cjs +7 -0
  65. package/_cjs/control/Eval/definition.cjs.map +1 -1
  66. package/_cjs/control/Eval/instance.cjs +14 -25
  67. package/_cjs/control/Eval/instance.cjs.map +1 -1
  68. package/_cjs/control/Eval.cjs +5 -5
  69. package/_cjs/control/Z/api.cjs +2 -2
  70. package/_cjs/control/Z/definition.cjs +10 -4
  71. package/_cjs/control/Z/definition.cjs.map +1 -1
  72. package/_cjs/control/Z/instances.cjs +7 -14
  73. package/_cjs/control/Z/instances.cjs.map +1 -1
  74. package/_cjs/control/Z/runtime.cjs +2 -2
  75. package/_cjs/control/Z.cjs +4 -4
  76. package/_cjs/data/Branded/definition.cjs +29 -0
  77. package/_cjs/data/Branded/definition.cjs.map +1 -0
  78. package/_cjs/data/Branded/derivations.cjs +58 -0
  79. package/_cjs/data/Branded/derivations.cjs.map +1 -0
  80. package/_cjs/data/Branded.cjs +32 -0
  81. package/_cjs/data/Branded.cjs.map +1 -0
  82. package/_cjs/data/Cause/api/fold.cjs +2 -0
  83. package/_cjs/data/Cause/api/fold.cjs.map +1 -1
  84. package/_cjs/data/Cause/api/unified.cjs +2 -2
  85. package/_cjs/data/Cause/api.cjs +30 -7
  86. package/_cjs/data/Cause/api.cjs.map +1 -1
  87. package/_cjs/data/Cause/definition.cjs +3 -3
  88. package/_cjs/data/Cause.cjs +2 -2
  89. package/_cjs/data/Const/api.cjs +3 -7
  90. package/_cjs/data/Const/api.cjs.map +1 -1
  91. package/_cjs/data/Const/definition.cjs +19 -1
  92. package/_cjs/data/Const/definition.cjs.map +1 -1
  93. package/_cjs/data/Const/instances.cjs +9 -20
  94. package/_cjs/data/Const/instances.cjs.map +1 -1
  95. package/_cjs/data/Const.cjs +3 -3
  96. package/_cjs/data/DecodeError/definition.cjs +308 -0
  97. package/_cjs/data/DecodeError/definition.cjs.map +1 -0
  98. package/_cjs/data/DecodeError.cjs +19 -0
  99. package/_cjs/data/DecodeError.cjs.map +1 -0
  100. package/_cjs/data/Decoder/api.cjs +217 -0
  101. package/_cjs/data/Decoder/api.cjs.map +1 -0
  102. package/_cjs/data/Decoder/definition.cjs +41 -0
  103. package/_cjs/data/Decoder/definition.cjs.map +1 -0
  104. package/_cjs/data/Decoder.cjs +32 -0
  105. package/_cjs/data/Decoder.cjs.map +1 -0
  106. package/_cjs/data/Duration/api.cjs +22 -9
  107. package/_cjs/data/Duration/api.cjs.map +1 -1
  108. package/_cjs/data/Duration/definition.cjs +1 -1
  109. package/_cjs/data/Duration.cjs +2 -2
  110. package/_cjs/data/Either/api/align.cjs +1 -1
  111. package/_cjs/data/Either/api/alignWith.cjs +2 -0
  112. package/_cjs/data/Either/api/alignWith.cjs.map +1 -1
  113. package/_cjs/data/Either/api.cjs +110 -47
  114. package/_cjs/data/Either/api.cjs.map +1 -1
  115. package/_cjs/data/Either/constructors.cjs +1 -1
  116. package/_cjs/data/Either/definition.cjs +39 -10
  117. package/_cjs/data/Either/definition.cjs.map +1 -1
  118. package/_cjs/data/Either/destructors.cjs +2 -0
  119. package/_cjs/data/Either/destructors.cjs.map +1 -1
  120. package/_cjs/data/Either/instances.cjs +123 -40
  121. package/_cjs/data/Either/instances.cjs.map +1 -1
  122. package/_cjs/data/Either.cjs +5 -5
  123. package/_cjs/data/Environment/api.cjs +29 -8
  124. package/_cjs/data/Environment/api.cjs.map +1 -1
  125. package/_cjs/data/Environment.cjs +2 -2
  126. package/_cjs/data/Exit/api.cjs +1 -1
  127. package/_cjs/data/Exit/constructors.cjs +1 -1
  128. package/_cjs/data/Exit/definition.cjs +2 -2
  129. package/_cjs/data/Exit.cjs +3 -3
  130. package/_cjs/data/FiberId/api.cjs +1 -1
  131. package/_cjs/data/FiberId/constructors.cjs +2 -2
  132. package/_cjs/data/FiberId/definition.cjs +1 -1
  133. package/_cjs/data/FiberId.cjs +3 -3
  134. package/_cjs/data/Identity/api.cjs +35 -6
  135. package/_cjs/data/Identity/api.cjs.map +1 -1
  136. package/_cjs/data/Identity/definition.cjs +10 -1
  137. package/_cjs/data/Identity/definition.cjs.map +1 -1
  138. package/_cjs/data/Identity/instances.cjs +12 -26
  139. package/_cjs/data/Identity/instances.cjs.map +1 -1
  140. package/_cjs/data/Identity.cjs +3 -3
  141. package/_cjs/data/Interval.cjs +154 -0
  142. package/_cjs/data/Interval.cjs.map +1 -0
  143. package/_cjs/data/Maybe/api.cjs +31 -44
  144. package/_cjs/data/Maybe/api.cjs.map +1 -1
  145. package/_cjs/data/Maybe/definition.cjs +46 -19
  146. package/_cjs/data/Maybe/definition.cjs.map +1 -1
  147. package/_cjs/data/Maybe/destructors.cjs +1 -0
  148. package/_cjs/data/Maybe/destructors.cjs.map +1 -1
  149. package/_cjs/data/Maybe/instances.cjs +62 -42
  150. package/_cjs/data/Maybe/instances.cjs.map +1 -1
  151. package/_cjs/data/Maybe.cjs +5 -5
  152. package/_cjs/data/Newtype.cjs +5 -3
  153. package/_cjs/data/Newtype.cjs.map +1 -1
  154. package/_cjs/data/Patch/api.cjs +1 -1
  155. package/_cjs/data/Patch/api.cjs.map +1 -1
  156. package/_cjs/data/Patch.cjs +2 -2
  157. package/_cjs/data/Predicate.cjs +2 -2
  158. package/_cjs/data/Refinement/api.cjs +0 -4
  159. package/_cjs/data/Refinement/api.cjs.map +1 -1
  160. package/_cjs/data/Refinement.cjs +2 -2
  161. package/_cjs/data/Struct/api.cjs +1 -1
  162. package/_cjs/data/Struct/definition.cjs +4 -2
  163. package/_cjs/data/Struct/definition.cjs.map +1 -1
  164. package/_cjs/data/Tag.cjs +2 -2
  165. package/_cjs/data/These/api.cjs +299 -0
  166. package/_cjs/data/These/api.cjs.map +1 -0
  167. package/_cjs/data/These/constructors.cjs +25 -5
  168. package/_cjs/data/These/constructors.cjs.map +1 -1
  169. package/_cjs/data/These/definition.cjs +16 -0
  170. package/_cjs/data/These/definition.cjs.map +1 -1
  171. package/_cjs/data/These/destructors.cjs +70 -0
  172. package/_cjs/data/These/destructors.cjs.map +1 -1
  173. package/_cjs/data/These/instances.cjs +54 -0
  174. package/_cjs/data/These/instances.cjs.map +1 -0
  175. package/_cjs/data/These.cjs +16 -3
  176. package/_cjs/data/These.cjs.map +1 -1
  177. package/_cjs/data/Trace.cjs +3 -3
  178. package/_cjs/data/TraceElement.cjs +1 -1
  179. package/_cjs/data/bigint/definition.cjs +6 -0
  180. package/_cjs/data/bigint/definition.cjs.map +1 -0
  181. package/_cjs/data/bigint/instances.cjs +24 -0
  182. package/_cjs/data/bigint/instances.cjs.map +1 -0
  183. package/_cjs/data/bigint.cjs +32 -0
  184. package/_cjs/data/bigint.cjs.map +1 -0
  185. package/_cjs/data/boolean/definition.cjs +6 -0
  186. package/_cjs/data/boolean/definition.cjs.map +1 -0
  187. package/_cjs/data/boolean/instances.cjs +24 -0
  188. package/_cjs/data/boolean/instances.cjs.map +1 -0
  189. package/_cjs/data/boolean.cjs +32 -0
  190. package/_cjs/data/boolean.cjs.map +1 -0
  191. package/_cjs/data/exceptions/InterruptedException.cjs +1 -1
  192. package/_cjs/data/exceptions.cjs +7 -7
  193. package/_cjs/data/function.cjs +3 -3
  194. package/_cjs/data/number/instances.cjs +19 -6
  195. package/_cjs/data/number/instances.cjs.map +1 -1
  196. package/_cjs/data/number.cjs +3 -3
  197. package/_cjs/data/object/instances.cjs +24 -0
  198. package/_cjs/data/object/instances.cjs.map +1 -0
  199. package/_cjs/data/object.cjs +1 -1
  200. package/_cjs/data/string/instances.cjs +25 -10
  201. package/_cjs/data/string/instances.cjs.map +1 -1
  202. package/_cjs/data/string.cjs +3 -3
  203. package/_cjs/internal/AtomicBoolean.cjs +1 -1
  204. package/_cjs/internal/AtomicNumber.cjs +1 -1
  205. package/_cjs/internal/Stack.cjs +4 -0
  206. package/_cjs/internal/Stack.cjs.map +1 -1
  207. package/_cjs/json/EitherJson.cjs +33 -0
  208. package/_cjs/json/EitherJson.cjs.map +1 -0
  209. package/_cjs/json/MaybeJson.cjs +31 -0
  210. package/_cjs/json/MaybeJson.cjs.map +1 -0
  211. package/_cjs/json/TheseJson.cjs +37 -0
  212. package/_cjs/json/TheseJson.cjs.map +1 -0
  213. package/_cjs/optics/At.cjs +2 -2
  214. package/_cjs/optics/Fold.cjs +1 -1
  215. package/_cjs/optics/Getter.cjs +1 -1
  216. package/_cjs/optics/Index.cjs +2 -2
  217. package/_cjs/optics/Iso.cjs +2 -2
  218. package/_cjs/optics/Lens.cjs +2 -2
  219. package/_cjs/optics/Optional/definition.cjs +6 -4
  220. package/_cjs/optics/Optional/definition.cjs.map +1 -1
  221. package/_cjs/optics/Optional.cjs +2 -2
  222. package/_cjs/optics/Prism.cjs +4 -4
  223. package/_cjs/optics/Setter.cjs +1 -1
  224. package/_cjs/optics/Traversal/api/compose.cjs +1 -1
  225. package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
  226. package/_cjs/optics/Traversal/api/fromTraversable.cjs +4 -4
  227. package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
  228. package/_cjs/optics/Traversal/definition.cjs +17 -12
  229. package/_cjs/optics/Traversal/definition.cjs.map +1 -1
  230. package/_cjs/optics/Traversal.cjs +3 -3
  231. package/_cjs/typeclass/Align.cjs +0 -20
  232. package/_cjs/typeclass/Align.cjs.map +1 -1
  233. package/_cjs/typeclass/Alt.cjs +5 -15
  234. package/_cjs/typeclass/Alt.cjs.map +1 -1
  235. package/_cjs/typeclass/Alternative.cjs +0 -23
  236. package/_cjs/typeclass/Alternative.cjs.map +1 -1
  237. package/_cjs/typeclass/Applicative.cjs +0 -22
  238. package/_cjs/typeclass/Applicative.cjs.map +1 -1
  239. package/_cjs/typeclass/ApplicativeExcept.cjs +40 -34
  240. package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
  241. package/_cjs/typeclass/Apply.cjs +93 -49
  242. package/_cjs/typeclass/Apply.cjs.map +1 -1
  243. package/_cjs/typeclass/Chain.cjs +40 -17
  244. package/_cjs/typeclass/Chain.cjs.map +1 -1
  245. package/_cjs/typeclass/Closure.cjs +1 -4
  246. package/_cjs/typeclass/Closure.cjs.map +1 -1
  247. package/_cjs/typeclass/Eq/definition.cjs +18 -0
  248. package/_cjs/typeclass/Eq/definition.cjs.map +1 -0
  249. package/_cjs/typeclass/Eq/derivations.cjs +59 -0
  250. package/_cjs/typeclass/Eq/derivations.cjs.map +1 -0
  251. package/_cjs/typeclass/Eq.cjs +11 -13
  252. package/_cjs/typeclass/Eq.cjs.map +1 -1
  253. package/_cjs/typeclass/Equatable.cjs +3 -3
  254. package/_cjs/typeclass/Fail.cjs +6 -12
  255. package/_cjs/typeclass/Fail.cjs.map +1 -1
  256. package/_cjs/typeclass/Filterable.cjs +31 -18
  257. package/_cjs/typeclass/Filterable.cjs.map +1 -1
  258. package/_cjs/typeclass/FilterableWithIndex.cjs +0 -26
  259. package/_cjs/typeclass/FilterableWithIndex.cjs.map +1 -1
  260. package/_cjs/typeclass/Foldable.cjs +33 -19
  261. package/_cjs/typeclass/Foldable.cjs.map +1 -1
  262. package/_cjs/typeclass/FoldableWithIndex.cjs +33 -21
  263. package/_cjs/typeclass/FoldableWithIndex.cjs.map +1 -1
  264. package/_cjs/typeclass/Functor.cjs +19 -16
  265. package/_cjs/typeclass/Functor.cjs.map +1 -1
  266. package/_cjs/typeclass/FunctorWithIndex.cjs +0 -21
  267. package/_cjs/typeclass/FunctorWithIndex.cjs.map +1 -1
  268. package/_cjs/typeclass/Guard/api.cjs +40 -0
  269. package/_cjs/typeclass/Guard/api.cjs.map +1 -0
  270. package/_cjs/typeclass/Guard/definition.cjs +40 -0
  271. package/_cjs/typeclass/Guard/definition.cjs.map +1 -0
  272. package/_cjs/typeclass/Guard/derivations.cjs +85 -0
  273. package/_cjs/typeclass/Guard/derivations.cjs.map +1 -0
  274. package/_cjs/typeclass/Guard.cjs +32 -0
  275. package/_cjs/typeclass/Guard.cjs.map +1 -0
  276. package/_cjs/typeclass/HashEq.cjs +3 -3
  277. package/_cjs/typeclass/HashEq.cjs.map +1 -1
  278. package/_cjs/typeclass/Hashable.cjs +2 -2
  279. package/_cjs/typeclass/Monad.cjs +0 -22
  280. package/_cjs/typeclass/Monad.cjs.map +1 -1
  281. package/_cjs/typeclass/MonadExcept.cjs +12 -19
  282. package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
  283. package/_cjs/typeclass/Monoid.cjs +56 -2
  284. package/_cjs/typeclass/Monoid.cjs.map +1 -1
  285. package/_cjs/typeclass/Nil.cjs +10 -0
  286. package/_cjs/typeclass/Nil.cjs.map +1 -1
  287. package/_cjs/typeclass/Ord/api/contramap.cjs +2 -4
  288. package/_cjs/typeclass/Ord/api/contramap.cjs.map +1 -1
  289. package/_cjs/typeclass/Ord/api/max.cjs +1 -1
  290. package/_cjs/typeclass/Ord/api/max.cjs.map +1 -1
  291. package/_cjs/typeclass/Ord/api/min.cjs +1 -1
  292. package/_cjs/typeclass/Ord/api/min.cjs.map +1 -1
  293. package/_cjs/typeclass/Ord/api.cjs +3 -3
  294. package/_cjs/typeclass/Ord/definition.cjs +2 -3
  295. package/_cjs/typeclass/Ord/definition.cjs.map +1 -1
  296. package/_cjs/typeclass/Ord/instances.cjs +7 -7
  297. package/_cjs/typeclass/Ord/instances.cjs.map +1 -1
  298. package/_cjs/typeclass/Ord.cjs +3 -3
  299. package/_cjs/typeclass/Pointed.cjs +6 -11
  300. package/_cjs/typeclass/Pointed.cjs.map +1 -1
  301. package/_cjs/typeclass/Semialign.cjs +77 -94
  302. package/_cjs/typeclass/Semialign.cjs.map +1 -1
  303. package/_cjs/typeclass/Semigroup/api.cjs +2 -2
  304. package/_cjs/typeclass/Semigroup/api.cjs.map +1 -1
  305. package/_cjs/typeclass/Semigroup/definition.cjs.map +1 -1
  306. package/_cjs/typeclass/Semigroup/derivations.cjs +63 -0
  307. package/_cjs/typeclass/Semigroup/derivations.cjs.map +1 -0
  308. package/_cjs/typeclass/Semigroup.cjs +2 -2
  309. package/_cjs/typeclass/Semimonoidal.cjs +9 -13
  310. package/_cjs/typeclass/Semimonoidal.cjs.map +1 -1
  311. package/_cjs/typeclass/Showable/show.cjs +11 -11
  312. package/_cjs/typeclass/Showable/show.cjs.map +1 -1
  313. package/_cjs/typeclass/Showable.cjs +2 -2
  314. package/_cjs/typeclass/Traversable.cjs +26 -34
  315. package/_cjs/typeclass/Traversable.cjs.map +1 -1
  316. package/_cjs/typeclass/TraversableWithIndex.cjs +7 -38
  317. package/_cjs/typeclass/TraversableWithIndex.cjs.map +1 -1
  318. package/_cjs/typeclass/Witherable.cjs +41 -42
  319. package/_cjs/typeclass/Witherable.cjs.map +1 -1
  320. package/_cjs/typeclass/WitherableWithIndex.cjs +41 -50
  321. package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
  322. package/_cjs/typeclass/builtin.cjs +1 -1
  323. package/_cjs/typeclass.cjs +49 -36
  324. package/_cjs/typeclass.cjs.map +1 -1
  325. package/_cjs/types.cjs +3 -3
  326. package/_cjs/util/predicates.cjs +5 -0
  327. package/_cjs/util/predicates.cjs.map +1 -1
  328. package/_mjs/collection/Iterable/api/traverseConc.mjs +20 -15
  329. package/_mjs/collection/Iterable/api/traverseConc.mjs.map +1 -1
  330. package/_mjs/collection/Iterable/api.mjs +21 -31
  331. package/_mjs/collection/Iterable/api.mjs.map +1 -1
  332. package/_mjs/collection/compat/Array/api.mjs +1 -1
  333. package/_mjs/collection/compat/Array/api.mjs.map +1 -1
  334. package/_mjs/collection/immutable/Conc/api.mjs +35 -36
  335. package/_mjs/collection/immutable/Conc/api.mjs.map +1 -1
  336. package/_mjs/collection/immutable/Conc/definition.mjs +48 -39
  337. package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
  338. package/_mjs/collection/immutable/Dictionary/definition.mjs +3 -2
  339. package/_mjs/collection/immutable/Dictionary/definition.mjs.map +1 -1
  340. package/_mjs/collection/immutable/HashMap/api.mjs +26 -66
  341. package/_mjs/collection/immutable/HashMap/api.mjs.map +1 -1
  342. package/_mjs/collection/immutable/HashMap/definition.mjs +18 -15
  343. package/_mjs/collection/immutable/HashMap/definition.mjs.map +1 -1
  344. package/_mjs/collection/immutable/HashSet/api.mjs +5 -5
  345. package/_mjs/collection/immutable/HashSet/api.mjs.map +1 -1
  346. package/_mjs/collection/immutable/ImmutableArray/api.mjs +135 -177
  347. package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +1 -1
  348. package/_mjs/collection/immutable/ImmutableArray/definition.mjs +11 -10
  349. package/_mjs/collection/immutable/ImmutableArray/definition.mjs.map +1 -1
  350. package/_mjs/collection/immutable/ImmutableArray/instances.mjs +151 -138
  351. package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +1 -1
  352. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +108 -142
  353. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +1 -1
  354. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs +2 -0
  355. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +1 -1
  356. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs +46 -67
  357. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +1 -1
  358. package/_mjs/collection/immutable/List/api.mjs +4 -5
  359. package/_mjs/collection/immutable/List/api.mjs.map +1 -1
  360. package/_mjs/collection/immutable/RoseTree/api.mjs +447 -0
  361. package/_mjs/collection/immutable/RoseTree/api.mjs.map +1 -0
  362. package/_mjs/collection/immutable/RoseTree/definition.mjs +35 -0
  363. package/_mjs/collection/immutable/RoseTree/definition.mjs.map +1 -0
  364. package/_mjs/collection/immutable/RoseTree.mjs +4 -0
  365. package/_mjs/collection/immutable/RoseTree.mjs.map +1 -0
  366. package/_mjs/collection/immutable/SortedMap/api.mjs +65 -65
  367. package/_mjs/collection/immutable/SortedMap/api.mjs.map +1 -1
  368. package/_mjs/collection/immutable/Vector/api.mjs +59 -15
  369. package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
  370. package/_mjs/collection/immutable/Vector/definition.mjs +12 -11
  371. package/_mjs/collection/immutable/Vector/definition.mjs.map +1 -1
  372. package/_mjs/collection/mutable/HashMap.mjs +5 -5
  373. package/_mjs/collection/mutable/HashMap.mjs.map +1 -1
  374. package/_mjs/collection/mutable/HashSet.mjs +4 -4
  375. package/_mjs/collection/mutable/HashSet.mjs.map +1 -1
  376. package/_mjs/control/Eval/api.mjs +5 -2
  377. package/_mjs/control/Eval/api.mjs.map +1 -1
  378. package/_mjs/control/Eval/definition.mjs +1 -0
  379. package/_mjs/control/Eval/definition.mjs.map +1 -1
  380. package/_mjs/control/Eval/instance.mjs +15 -18
  381. package/_mjs/control/Eval/instance.mjs.map +1 -1
  382. package/_mjs/control/Z/definition.mjs +2 -0
  383. package/_mjs/control/Z/definition.mjs.map +1 -1
  384. package/_mjs/control/Z/instances.mjs +7 -8
  385. package/_mjs/control/Z/instances.mjs.map +1 -1
  386. package/_mjs/data/Branded/definition.mjs +18 -0
  387. package/_mjs/data/Branded/definition.mjs.map +1 -0
  388. package/_mjs/data/Branded/derivations.mjs +39 -0
  389. package/_mjs/data/Branded/derivations.mjs.map +1 -0
  390. package/_mjs/data/Branded.mjs +4 -0
  391. package/_mjs/data/Branded.mjs.map +1 -0
  392. package/_mjs/data/Cause/api/fold.mjs +2 -0
  393. package/_mjs/data/Cause/api/fold.mjs.map +1 -1
  394. package/_mjs/data/Cause/api.mjs +20 -0
  395. package/_mjs/data/Cause/api.mjs.map +1 -1
  396. package/_mjs/data/Const/api.mjs +3 -3
  397. package/_mjs/data/Const/api.mjs.map +1 -1
  398. package/_mjs/data/Const/definition.mjs +13 -1
  399. package/_mjs/data/Const/definition.mjs.map +1 -1
  400. package/_mjs/data/Const/instances.mjs +7 -15
  401. package/_mjs/data/Const/instances.mjs.map +1 -1
  402. package/_mjs/data/DecodeError/definition.mjs +226 -0
  403. package/_mjs/data/DecodeError/definition.mjs.map +1 -0
  404. package/_mjs/data/DecodeError.mjs +3 -0
  405. package/_mjs/data/DecodeError.mjs.map +1 -0
  406. package/_mjs/data/Decoder/api.mjs +179 -0
  407. package/_mjs/data/Decoder/api.mjs.map +1 -0
  408. package/_mjs/data/Decoder/definition.mjs +24 -0
  409. package/_mjs/data/Decoder/definition.mjs.map +1 -0
  410. package/_mjs/data/Decoder.mjs +4 -0
  411. package/_mjs/data/Decoder.mjs.map +1 -0
  412. package/_mjs/data/Duration/api.mjs +17 -8
  413. package/_mjs/data/Duration/api.mjs.map +1 -1
  414. package/_mjs/data/Either/api/alignWith.mjs +2 -0
  415. package/_mjs/data/Either/api/alignWith.mjs.map +1 -1
  416. package/_mjs/data/Either/api.mjs +91 -21
  417. package/_mjs/data/Either/api.mjs.map +1 -1
  418. package/_mjs/data/Either/definition.mjs +25 -5
  419. package/_mjs/data/Either/definition.mjs.map +1 -1
  420. package/_mjs/data/Either/destructors.mjs +2 -0
  421. package/_mjs/data/Either/destructors.mjs.map +1 -1
  422. package/_mjs/data/Either/instances.mjs +109 -39
  423. package/_mjs/data/Either/instances.mjs.map +1 -1
  424. package/_mjs/data/Environment/api.mjs +23 -7
  425. package/_mjs/data/Environment/api.mjs.map +1 -1
  426. package/_mjs/data/Identity/api.mjs +24 -5
  427. package/_mjs/data/Identity/api.mjs.map +1 -1
  428. package/_mjs/data/Identity/definition.mjs +3 -1
  429. package/_mjs/data/Identity/definition.mjs.map +1 -1
  430. package/_mjs/data/Identity/instances.mjs +12 -18
  431. package/_mjs/data/Identity/instances.mjs.map +1 -1
  432. package/_mjs/data/Interval.mjs +114 -0
  433. package/_mjs/data/Interval.mjs.map +1 -0
  434. package/_mjs/data/Maybe/api.mjs +30 -35
  435. package/_mjs/data/Maybe/api.mjs.map +1 -1
  436. package/_mjs/data/Maybe/definition.mjs +37 -14
  437. package/_mjs/data/Maybe/definition.mjs.map +1 -1
  438. package/_mjs/data/Maybe/destructors.mjs +1 -0
  439. package/_mjs/data/Maybe/destructors.mjs.map +1 -1
  440. package/_mjs/data/Maybe/instances.mjs +56 -39
  441. package/_mjs/data/Maybe/instances.mjs.map +1 -1
  442. package/_mjs/data/Newtype.mjs +4 -3
  443. package/_mjs/data/Newtype.mjs.map +1 -1
  444. package/_mjs/data/Patch/api.mjs +1 -1
  445. package/_mjs/data/Patch/api.mjs.map +1 -1
  446. package/_mjs/data/Refinement/api.mjs +0 -4
  447. package/_mjs/data/Refinement/api.mjs.map +1 -1
  448. package/_mjs/data/Struct/definition.mjs +3 -2
  449. package/_mjs/data/Struct/definition.mjs.map +1 -1
  450. package/_mjs/data/These/api.mjs +262 -0
  451. package/_mjs/data/These/api.mjs.map +1 -0
  452. package/_mjs/data/These/constructors.mjs +14 -2
  453. package/_mjs/data/These/constructors.mjs.map +1 -1
  454. package/_mjs/data/These/definition.mjs +8 -0
  455. package/_mjs/data/These/definition.mjs.map +1 -1
  456. package/_mjs/data/These/destructors.mjs +53 -0
  457. package/_mjs/data/These/destructors.mjs.map +1 -1
  458. package/_mjs/data/These/instances.mjs +36 -0
  459. package/_mjs/data/These/instances.mjs.map +1 -0
  460. package/_mjs/data/These.mjs +1 -0
  461. package/_mjs/data/These.mjs.map +1 -1
  462. package/_mjs/data/bigint/definition.mjs +2 -0
  463. package/_mjs/data/bigint/definition.mjs.map +1 -0
  464. package/_mjs/data/bigint/instances.mjs +10 -0
  465. package/_mjs/data/bigint/instances.mjs.map +1 -0
  466. package/_mjs/data/bigint.mjs +4 -0
  467. package/_mjs/data/bigint.mjs.map +1 -0
  468. package/_mjs/data/boolean/definition.mjs +2 -0
  469. package/_mjs/data/boolean/definition.mjs.map +1 -0
  470. package/_mjs/data/boolean/instances.mjs +10 -0
  471. package/_mjs/data/boolean/instances.mjs.map +1 -0
  472. package/_mjs/data/boolean.mjs +4 -0
  473. package/_mjs/data/boolean.mjs.map +1 -0
  474. package/_mjs/data/number/instances.mjs +14 -4
  475. package/_mjs/data/number/instances.mjs.map +1 -1
  476. package/_mjs/data/object/instances.mjs +10 -0
  477. package/_mjs/data/object/instances.mjs.map +1 -0
  478. package/_mjs/data/string/instances.mjs +20 -8
  479. package/_mjs/data/string/instances.mjs.map +1 -1
  480. package/_mjs/internal/Stack.mjs +4 -0
  481. package/_mjs/internal/Stack.mjs.map +1 -1
  482. package/_mjs/json/EitherJson.mjs +18 -0
  483. package/_mjs/json/EitherJson.mjs.map +1 -0
  484. package/_mjs/json/MaybeJson.mjs +16 -0
  485. package/_mjs/json/MaybeJson.mjs.map +1 -0
  486. package/_mjs/json/TheseJson.mjs +22 -0
  487. package/_mjs/json/TheseJson.mjs.map +1 -0
  488. package/_mjs/optics/Optional/definition.mjs +5 -4
  489. package/_mjs/optics/Optional/definition.mjs.map +1 -1
  490. package/_mjs/optics/Traversal/api/compose.mjs +1 -1
  491. package/_mjs/optics/Traversal/api/compose.mjs.map +1 -1
  492. package/_mjs/optics/Traversal/api/fromTraversable.mjs +5 -4
  493. package/_mjs/optics/Traversal/api/fromTraversable.mjs.map +1 -1
  494. package/_mjs/optics/Traversal/definition.mjs +14 -12
  495. package/_mjs/optics/Traversal/definition.mjs.map +1 -1
  496. package/_mjs/typeclass/Align.mjs +0 -11
  497. package/_mjs/typeclass/Align.mjs.map +1 -1
  498. package/_mjs/typeclass/Alt.mjs +4 -7
  499. package/_mjs/typeclass/Alt.mjs.map +1 -1
  500. package/_mjs/typeclass/Alternative.mjs +0 -13
  501. package/_mjs/typeclass/Alternative.mjs.map +1 -1
  502. package/_mjs/typeclass/Applicative.mjs +0 -12
  503. package/_mjs/typeclass/Applicative.mjs.map +1 -1
  504. package/_mjs/typeclass/ApplicativeExcept.mjs +32 -24
  505. package/_mjs/typeclass/ApplicativeExcept.mjs.map +1 -1
  506. package/_mjs/typeclass/Apply.mjs +85 -42
  507. package/_mjs/typeclass/Apply.mjs.map +1 -1
  508. package/_mjs/typeclass/Chain.mjs +33 -12
  509. package/_mjs/typeclass/Chain.mjs.map +1 -1
  510. package/_mjs/typeclass/Closure.mjs +1 -4
  511. package/_mjs/typeclass/Closure.mjs.map +1 -1
  512. package/_mjs/typeclass/Eq/definition.mjs +9 -0
  513. package/_mjs/typeclass/Eq/definition.mjs.map +1 -0
  514. package/_mjs/typeclass/Eq/derivations.mjs +46 -0
  515. package/_mjs/typeclass/Eq/derivations.mjs.map +1 -0
  516. package/_mjs/typeclass/Eq.mjs +1 -11
  517. package/_mjs/typeclass/Eq.mjs.map +1 -1
  518. package/_mjs/typeclass/Fail.mjs +5 -7
  519. package/_mjs/typeclass/Fail.mjs.map +1 -1
  520. package/_mjs/typeclass/Filterable.mjs +27 -13
  521. package/_mjs/typeclass/Filterable.mjs.map +1 -1
  522. package/_mjs/typeclass/FilterableWithIndex.mjs +0 -16
  523. package/_mjs/typeclass/FilterableWithIndex.mjs.map +1 -1
  524. package/_mjs/typeclass/Foldable.mjs +29 -12
  525. package/_mjs/typeclass/Foldable.mjs.map +1 -1
  526. package/_mjs/typeclass/FoldableWithIndex.mjs +29 -13
  527. package/_mjs/typeclass/FoldableWithIndex.mjs.map +1 -1
  528. package/_mjs/typeclass/Functor.mjs +16 -9
  529. package/_mjs/typeclass/Functor.mjs.map +1 -1
  530. package/_mjs/typeclass/FunctorWithIndex.mjs +0 -12
  531. package/_mjs/typeclass/FunctorWithIndex.mjs.map +1 -1
  532. package/_mjs/typeclass/Guard/api.mjs +23 -0
  533. package/_mjs/typeclass/Guard/api.mjs.map +1 -0
  534. package/_mjs/typeclass/Guard/definition.mjs +23 -0
  535. package/_mjs/typeclass/Guard/definition.mjs.map +1 -0
  536. package/_mjs/typeclass/Guard/derivations.mjs +67 -0
  537. package/_mjs/typeclass/Guard/derivations.mjs.map +1 -0
  538. package/_mjs/typeclass/Guard.mjs +4 -0
  539. package/_mjs/typeclass/Guard.mjs.map +1 -0
  540. package/_mjs/typeclass/HashEq.mjs +3 -3
  541. package/_mjs/typeclass/HashEq.mjs.map +1 -1
  542. package/_mjs/typeclass/Monad.mjs +0 -12
  543. package/_mjs/typeclass/Monad.mjs.map +1 -1
  544. package/_mjs/typeclass/MonadExcept.mjs +9 -13
  545. package/_mjs/typeclass/MonadExcept.mjs.map +1 -1
  546. package/_mjs/typeclass/Monoid.mjs +50 -1
  547. package/_mjs/typeclass/Monoid.mjs.map +1 -1
  548. package/_mjs/typeclass/Nil.mjs +8 -1
  549. package/_mjs/typeclass/Nil.mjs.map +1 -1
  550. package/_mjs/typeclass/Ord/api/contramap.mjs +2 -4
  551. package/_mjs/typeclass/Ord/api/contramap.mjs.map +1 -1
  552. package/_mjs/typeclass/Ord/api/max.mjs +1 -1
  553. package/_mjs/typeclass/Ord/api/max.mjs.map +1 -1
  554. package/_mjs/typeclass/Ord/api/min.mjs +1 -1
  555. package/_mjs/typeclass/Ord/api/min.mjs.map +1 -1
  556. package/_mjs/typeclass/Ord/definition.mjs +2 -3
  557. package/_mjs/typeclass/Ord/definition.mjs.map +1 -1
  558. package/_mjs/typeclass/Ord/instances.mjs +7 -7
  559. package/_mjs/typeclass/Ord/instances.mjs.map +1 -1
  560. package/_mjs/typeclass/Pointed.mjs +5 -4
  561. package/_mjs/typeclass/Pointed.mjs.map +1 -1
  562. package/_mjs/typeclass/Semialign.mjs +67 -74
  563. package/_mjs/typeclass/Semialign.mjs.map +1 -1
  564. package/_mjs/typeclass/Semigroup/api.mjs +2 -2
  565. package/_mjs/typeclass/Semigroup/api.mjs.map +1 -1
  566. package/_mjs/typeclass/Semigroup/definition.mjs.map +1 -1
  567. package/_mjs/typeclass/Semigroup/derivations.mjs +50 -0
  568. package/_mjs/typeclass/Semigroup/derivations.mjs.map +1 -0
  569. package/_mjs/typeclass/Semigroup.mjs +1 -1
  570. package/_mjs/typeclass/Semimonoidal.mjs +8 -6
  571. package/_mjs/typeclass/Semimonoidal.mjs.map +1 -1
  572. package/_mjs/typeclass/Showable/show.mjs +11 -11
  573. package/_mjs/typeclass/Showable/show.mjs.map +1 -1
  574. package/_mjs/typeclass/Traversable.mjs +25 -24
  575. package/_mjs/typeclass/Traversable.mjs.map +1 -1
  576. package/_mjs/typeclass/TraversableWithIndex.mjs +6 -24
  577. package/_mjs/typeclass/TraversableWithIndex.mjs.map +1 -1
  578. package/_mjs/typeclass/Witherable.mjs +39 -32
  579. package/_mjs/typeclass/Witherable.mjs.map +1 -1
  580. package/_mjs/typeclass/WitherableWithIndex.mjs +39 -37
  581. package/_mjs/typeclass/WitherableWithIndex.mjs.map +1 -1
  582. package/_mjs/typeclass.mjs +1 -0
  583. package/_mjs/typeclass.mjs.map +1 -1
  584. package/_mjs/util/predicates.mjs +3 -0
  585. package/_mjs/util/predicates.mjs.map +1 -1
  586. package/_src/collection/Iterable/api/traverseConc.ts +21 -29
  587. package/_src/collection/Iterable/api.ts +20 -34
  588. package/_src/collection/compat/Array/api.ts +1 -1
  589. package/_src/collection/immutable/Conc/api.ts +26 -46
  590. package/_src/collection/immutable/Conc/definition.ts +19 -8
  591. package/_src/collection/immutable/Dictionary/definition.ts +1 -1
  592. package/_src/collection/immutable/HashMap/api.ts +24 -81
  593. package/_src/collection/immutable/HashMap/definition.ts +7 -9
  594. package/_src/collection/immutable/HashMap/internal.ts +1 -1
  595. package/_src/collection/immutable/HashSet/api.ts +4 -4
  596. package/_src/collection/immutable/ImmutableArray/api.ts +180 -219
  597. package/_src/collection/immutable/ImmutableArray/definition.ts +6 -8
  598. package/_src/collection/immutable/ImmutableArray/instances.ts +156 -134
  599. package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +87 -158
  600. package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +4 -8
  601. package/_src/collection/immutable/ImmutableNonEmptyArray/instances.ts +39 -49
  602. package/_src/collection/immutable/List/api.ts +2 -6
  603. package/_src/collection/immutable/RoseTree/api.ts +278 -0
  604. package/_src/collection/immutable/RoseTree/definition.ts +29 -0
  605. package/_src/collection/immutable/RoseTree.ts +4 -0
  606. package/_src/collection/immutable/SortedMap/api.ts +56 -53
  607. package/_src/collection/immutable/Vector/api.ts +57 -17
  608. package/_src/collection/immutable/Vector/definition.ts +10 -0
  609. package/_src/collection/mutable/HashMap.ts +5 -5
  610. package/_src/collection/mutable/HashSet.ts +4 -4
  611. package/_src/control/Eval/api.ts +5 -1
  612. package/_src/control/Eval/definition.ts +5 -8
  613. package/_src/control/Eval/instance.ts +16 -15
  614. package/_src/control/Z/definition.ts +26 -19
  615. package/_src/control/Z/instances.ts +9 -8
  616. package/_src/data/Branded/definition.ts +47 -0
  617. package/_src/data/Branded/derivations.ts +57 -0
  618. package/_src/data/Branded.ts +4 -0
  619. package/_src/data/Cause/api/fold.ts +1 -0
  620. package/_src/data/Cause/api.ts +18 -0
  621. package/_src/data/Const/api.ts +3 -3
  622. package/_src/data/Const/definition.ts +22 -5
  623. package/_src/data/Const/instances.ts +12 -21
  624. package/_src/data/DecodeError/definition.ts +227 -0
  625. package/_src/data/DecodeError.ts +3 -0
  626. package/_src/data/Decoder/api.ts +198 -0
  627. package/_src/data/Decoder/definition.ts +25 -0
  628. package/_src/data/Decoder.ts +4 -0
  629. package/_src/data/Duration/api.ts +21 -14
  630. package/_src/data/Either/api/alignWith.ts +2 -0
  631. package/_src/data/Either/api.ts +85 -30
  632. package/_src/data/Either/definition.ts +41 -19
  633. package/_src/data/Either/destructors.ts +1 -0
  634. package/_src/data/Either/instances.ts +102 -51
  635. package/_src/data/Environment/api.ts +19 -4
  636. package/_src/data/Identity/api.ts +19 -4
  637. package/_src/data/Identity/definition.ts +7 -3
  638. package/_src/data/Identity/instances.ts +15 -8
  639. package/_src/data/Interval.ts +103 -0
  640. package/_src/data/Maybe/api.ts +21 -31
  641. package/_src/data/Maybe/definition.ts +31 -19
  642. package/_src/data/Maybe/destructors.ts +1 -0
  643. package/_src/data/Maybe/instances.ts +61 -34
  644. package/_src/data/Newtype.ts +11 -32
  645. package/_src/data/Patch/api.ts +1 -1
  646. package/_src/data/Refinement/api.ts +4 -2
  647. package/_src/data/Struct/definition.ts +1 -1
  648. package/_src/data/These/api.ts +184 -0
  649. package/_src/data/These/constructors.ts +10 -0
  650. package/_src/data/These/definition.ts +7 -0
  651. package/_src/data/These/destructors.ts +45 -0
  652. package/_src/data/These/instances.ts +43 -0
  653. package/_src/data/These.ts +1 -0
  654. package/_src/data/bigint/definition.ts +13 -0
  655. package/_src/data/bigint/instances.ts +8 -0
  656. package/_src/data/bigint.ts +4 -0
  657. package/_src/data/boolean/definition.ts +13 -0
  658. package/_src/data/boolean/instances.ts +8 -0
  659. package/_src/data/boolean.ts +4 -0
  660. package/_src/data/number/instances.ts +13 -3
  661. package/_src/data/object/instances.ts +7 -0
  662. package/_src/data/string/instances.ts +17 -5
  663. package/_src/internal/Stack.ts +4 -0
  664. package/_src/json/EitherJson.ts +28 -0
  665. package/_src/json/MaybeJson.ts +27 -0
  666. package/_src/json/TheseJson.ts +31 -0
  667. package/_src/optics/Optional/definition.ts +2 -2
  668. package/_src/optics/Traversal/api/compose.ts +1 -1
  669. package/_src/optics/Traversal/api/fromTraversable.ts +15 -41
  670. package/_src/optics/Traversal/definition.ts +21 -23
  671. package/_src/typeclass/Align.ts +4 -18
  672. package/_src/typeclass/Alt.ts +59 -90
  673. package/_src/typeclass/Alternative.ts +4 -20
  674. package/_src/typeclass/Applicative.ts +3 -23
  675. package/_src/typeclass/ApplicativeExcept.ts +94 -193
  676. package/_src/typeclass/Apply.ts +319 -509
  677. package/_src/typeclass/Chain.ts +127 -199
  678. package/_src/typeclass/Closure.ts +4 -20
  679. package/_src/typeclass/Eq/definition.ts +20 -0
  680. package/_src/typeclass/Eq/derivations.ts +61 -0
  681. package/_src/typeclass/Eq.ts +2 -36
  682. package/_src/typeclass/Fail.ts +28 -27
  683. package/_src/typeclass/Filterable.ts +70 -117
  684. package/_src/typeclass/FilterableWithIndex.ts +27 -131
  685. package/_src/typeclass/Foldable.ts +35 -52
  686. package/_src/typeclass/FoldableWithIndex.ts +40 -75
  687. package/_src/typeclass/Functor.ts +21 -59
  688. package/_src/typeclass/FunctorWithIndex.ts +6 -34
  689. package/_src/typeclass/Guard/api.ts +32 -0
  690. package/_src/typeclass/Guard/definition.ts +23 -0
  691. package/_src/typeclass/Guard/derivations.ts +80 -0
  692. package/_src/typeclass/Guard.ts +5 -0
  693. package/_src/typeclass/HashEq.ts +3 -4
  694. package/_src/typeclass/Monad.ts +3 -18
  695. package/_src/typeclass/MonadExcept.ts +9 -32
  696. package/_src/typeclass/Monoid.ts +60 -2
  697. package/_src/typeclass/Nil.ts +26 -17
  698. package/_src/typeclass/Ord/api/contramap.ts +2 -4
  699. package/_src/typeclass/Ord/api/max.ts +1 -1
  700. package/_src/typeclass/Ord/api/min.ts +1 -1
  701. package/_src/typeclass/Ord/definition.ts +3 -19
  702. package/_src/typeclass/Ord/instances.ts +6 -6
  703. package/_src/typeclass/Pointed.ts +29 -25
  704. package/_src/typeclass/Semialign.ts +308 -444
  705. package/_src/typeclass/Semigroup/api.ts +2 -2
  706. package/_src/typeclass/Semigroup/definition.ts +2 -6
  707. package/_src/typeclass/Semigroup/derivations.ts +64 -0
  708. package/_src/typeclass/Semigroup.ts +1 -1
  709. package/_src/typeclass/Semimonoidal.ts +55 -84
  710. package/_src/typeclass/Showable/show.ts +6 -8
  711. package/_src/typeclass/Traversable.ts +67 -157
  712. package/_src/typeclass/TraversableWithIndex.ts +37 -127
  713. package/_src/typeclass/Witherable.ts +120 -279
  714. package/_src/typeclass/WitherableWithIndex.ts +129 -337
  715. package/_src/typeclass.ts +2 -0
  716. package/_src/util/predicates.ts +4 -0
  717. package/collection/Iterable/api/traverseConc.d.ts +6 -4
  718. package/collection/Iterable/api.d.ts +5 -13
  719. package/collection/immutable/Conc/api.d.ts +15 -23
  720. package/collection/immutable/Conc/definition.d.ts +10 -7
  721. package/collection/immutable/Dictionary/definition.d.ts +1 -1
  722. package/collection/immutable/HashMap/api.d.ts +15 -27
  723. package/collection/immutable/HashMap/definition.d.ts +6 -9
  724. package/collection/immutable/HashMap/internal.d.ts +1 -1
  725. package/collection/immutable/ImmutableArray/api.d.ts +42 -94
  726. package/collection/immutable/ImmutableArray/definition.d.ts +6 -8
  727. package/collection/immutable/ImmutableArray/instances.d.ts +86 -17
  728. package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +26 -47
  729. package/collection/immutable/ImmutableNonEmptyArray/definition.d.ts +4 -8
  730. package/collection/immutable/ImmutableNonEmptyArray/instances.d.ts +1 -1
  731. package/collection/immutable/List/api.d.ts +1 -2
  732. package/collection/immutable/RoseTree/api.d.ts +63 -0
  733. package/collection/immutable/RoseTree/definition.d.ts +23 -0
  734. package/collection/immutable/RoseTree.d.ts +2 -0
  735. package/collection/immutable/SortedMap/api.d.ts +2 -1
  736. package/collection/immutable/Vector/api.d.ts +31 -8
  737. package/collection/immutable/Vector/definition.d.ts +10 -0
  738. package/control/Eval/api.d.ts +1 -0
  739. package/control/Eval/definition.d.ts +5 -8
  740. package/control/Eval/instance.d.ts +4 -1
  741. package/control/Z/definition.d.ts +23 -18
  742. package/control/Z/instances.d.ts +4 -3
  743. package/data/Branded/definition.d.ts +36 -0
  744. package/data/Branded/derivations.d.ts +24 -0
  745. package/data/Branded.d.ts +2 -0
  746. package/data/Cause/api.d.ts +7 -1
  747. package/data/Const/api.d.ts +1 -1
  748. package/data/Const/definition.d.ts +23 -7
  749. package/data/Const/instances.d.ts +4 -12
  750. package/data/DecodeError/definition.d.ts +141 -0
  751. package/data/DecodeError.d.ts +1 -0
  752. package/data/Decoder/api.d.ts +65 -0
  753. package/data/Decoder/definition.d.ts +24 -0
  754. package/data/Decoder.d.ts +2 -0
  755. package/data/Duration/api.d.ts +12 -8
  756. package/data/Either/api.d.ts +29 -17
  757. package/data/Either/definition.d.ts +31 -14
  758. package/data/Either/instances.d.ts +26 -11
  759. package/data/Environment/api.d.ts +5 -0
  760. package/data/Identity/api.d.ts +11 -0
  761. package/data/Identity/definition.d.ts +7 -2
  762. package/data/Identity/instances.d.ts +5 -9
  763. package/data/Interval.d.ts +71 -0
  764. package/data/Maybe/api.d.ts +3 -17
  765. package/data/Maybe/definition.d.ts +20 -14
  766. package/data/Maybe/instances.d.ts +14 -8
  767. package/data/Newtype.d.ts +8 -9
  768. package/data/Refinement/api.d.ts +2 -0
  769. package/data/Struct/definition.d.ts +1 -1
  770. package/data/These/api.d.ts +73 -0
  771. package/data/These/constructors.d.ts +7 -1
  772. package/data/These/definition.d.ts +5 -0
  773. package/data/These/destructors.d.ts +27 -1
  774. package/data/These/instances.d.ts +13 -0
  775. package/data/These.d.ts +1 -0
  776. package/data/bigint/definition.d.ts +13 -0
  777. package/data/bigint/instances.d.ts +7 -0
  778. package/data/bigint.d.ts +2 -0
  779. package/data/boolean/definition.d.ts +13 -0
  780. package/data/boolean/instances.d.ts +7 -0
  781. package/data/boolean.d.ts +2 -0
  782. package/data/number/instances.d.ts +8 -0
  783. package/data/object/instances.d.ts +7 -0
  784. package/data/string/instances.d.ts +10 -0
  785. package/internal/Stack.d.ts +1 -0
  786. package/json/EitherJson.d.ts +24 -0
  787. package/json/MaybeJson.d.ts +23 -0
  788. package/json/TheseJson.d.ts +26 -0
  789. package/optics/Traversal/api/fromTraversable.d.ts +1 -1
  790. package/optics/Traversal/definition.d.ts +4 -9
  791. package/package.json +4 -4
  792. package/typeclass/Align.d.ts +3 -10
  793. package/typeclass/Alt.d.ts +6 -19
  794. package/typeclass/Alternative.d.ts +4 -12
  795. package/typeclass/Applicative.d.ts +3 -12
  796. package/typeclass/ApplicativeExcept.d.ts +14 -39
  797. package/typeclass/Apply.d.ts +41 -72
  798. package/typeclass/Chain.d.ts +18 -28
  799. package/typeclass/Closure.d.ts +2 -12
  800. package/typeclass/Eq/definition.d.ts +17 -0
  801. package/typeclass/Eq/derivations.d.ts +24 -0
  802. package/typeclass/Eq.d.ts +2 -27
  803. package/typeclass/Fail.d.ts +4 -10
  804. package/typeclass/Filterable.d.ts +30 -51
  805. package/typeclass/FilterableWithIndex.d.ts +10 -53
  806. package/typeclass/Foldable.d.ts +19 -31
  807. package/typeclass/FoldableWithIndex.d.ts +20 -33
  808. package/typeclass/Functor.d.ts +11 -22
  809. package/typeclass/FunctorWithIndex.d.ts +3 -19
  810. package/typeclass/Guard/api.d.ts +20 -0
  811. package/typeclass/Guard/definition.d.ts +22 -0
  812. package/typeclass/Guard/derivations.d.ts +36 -0
  813. package/typeclass/Guard.d.ts +2 -0
  814. package/typeclass/HashEq.d.ts +1 -2
  815. package/typeclass/Monad.d.ts +3 -11
  816. package/typeclass/MonadExcept.d.ts +6 -17
  817. package/typeclass/Monoid.d.ts +24 -2
  818. package/typeclass/Nil.d.ts +7 -8
  819. package/typeclass/Ord/definition.d.ts +2 -14
  820. package/typeclass/Pointed.d.ts +4 -10
  821. package/typeclass/Semialign.d.ts +51 -63
  822. package/typeclass/Semigroup/definition.d.ts +3 -5
  823. package/typeclass/Semigroup/derivations.d.ts +25 -0
  824. package/typeclass/Semimonoidal.d.ts +5 -14
  825. package/typeclass/Traversable.d.ts +17 -57
  826. package/typeclass/TraversableWithIndex.d.ts +9 -52
  827. package/typeclass/Witherable.d.ts +22 -82
  828. package/typeclass/WitherableWithIndex.d.ts +26 -98
  829. package/typeclass.d.ts +1 -0
  830. package/util/predicates.d.ts +1 -0
@@ -1,11 +1,28 @@
1
1
  /**
2
- * @tsplus type fncts.Const
2
+ * @tsplus type fncts.ConstF
3
3
  */
4
- export type Const<E, A> = E & { readonly _A: A };
4
+ export interface ConstF extends Const<any, any> {}
5
5
 
6
6
  /**
7
- * @tsplus type fncts.ConstOps
7
+ * @tsplus type fncts.ConstF
8
+ */
9
+ export interface Const1F<E> extends Const1<E, any> {}
10
+
11
+ /**
12
+ * @tsplus type fncts.Const
13
+ * @tsplus companion fncts.ConstOps
8
14
  */
9
- export interface ConstOps {}
15
+ export class Const<E, A> {
16
+ readonly [HKT.F]!: ConstF;
17
+ readonly [HKT.E]!: () => E;
18
+ readonly [HKT.A]!: () => A;
19
+ readonly [HKT.T]!: Const<HKT._E<this>, HKT._A<this>>;
20
+ constructor(readonly getConst: E) {}
21
+ }
10
22
 
11
- export const Const: ConstOps = {};
23
+ export interface Const1<E, A> {
24
+ readonly [HKT.F]: ConstF;
25
+ readonly [HKT.E]: () => E;
26
+ readonly [HKT.A]: () => A;
27
+ readonly [HKT.T]: Const<E, HKT._A<this>>;
28
+ }
@@ -1,34 +1,25 @@
1
- import * as P from "../../typeclass.js";
2
- import { map_ } from "./api.js";
1
+ import type * as P from "../../typeclass.js";
2
+ import type { Const1F,ConstF } from "@fncts/base/data/Const/definition";
3
3
 
4
- export interface ConstF extends HKT {
5
- readonly type: Const<this["E"], this["A"]>;
6
- readonly variance: {
7
- E: "_";
8
- A: "_";
9
- };
10
- }
4
+ import { Const } from "@fncts/base/data/Const/definition";
11
5
 
12
6
  /**
13
7
  * @tsplus static fncts.ConstOps getApply
14
8
  */
15
- export function getApply<E>(S: P.Semigroup<E>): P.Apply<ConstF, HKT.Fix<"E", E>> {
16
- type CE = HKT.Fix<"E", E>;
17
- const ap_: P.ap_<ConstF, CE> = (fab, fa) => Const(S.combine_(fab, fa));
18
- const zipWith_: P.zipWith_<ConstF, CE> = (fa, fb, _f) => Const(S.combine_(fa, fb));
19
- return P.Apply({
20
- map_,
21
- ap_,
22
- zipWith_,
23
- });
9
+ export function getApply<E>(S: P.Semigroup<E>): P.Apply<Const1F<E>> {
10
+ return {
11
+ map: (fa, f) => fa.map(f),
12
+ zip: (self, that) => Const(S.combine(self.getConst, that.getConst)),
13
+ zipWith: (self, that, _f) => Const(S.combine(self.getConst, that.getConst)),
14
+ };
24
15
  }
25
16
 
26
17
  /**
27
18
  * @tsplus static fncts.ConstOps getApplicative
28
19
  */
29
- export function getApplicative<E>(M: P.Monoid<E>): P.Applicative<ConstF, HKT.Fix<"E", E>> {
30
- return P.Applicative({
20
+ export function getApplicative<E>(M: P.Monoid<E>): P.Applicative<Const1F<E>> {
21
+ return {
31
22
  ...getApply(M),
32
23
  pure: <A>() => Const<E, A>(M.nat),
33
- });
24
+ };
34
25
  }
@@ -0,0 +1,227 @@
1
+ import { show } from "@fncts/base/typeclass/Showable";
2
+
3
+ export const DecodeErrorTypeId = Symbol.for("fncts.DecodeError");
4
+ export type DecodeErrorTypeId = typeof DecodeErrorTypeId;
5
+
6
+ export abstract class DecodeError {
7
+ readonly _typeId: DecodeErrorTypeId = DecodeErrorTypeId;
8
+ abstract render: Eval<RoseTree<string>>;
9
+ }
10
+
11
+ export class RequiredKeyError extends DecodeError {
12
+ readonly _tag = "RequiredKey";
13
+ constructor(readonly key: string, readonly error: DecodeError) {
14
+ super();
15
+ }
16
+ render = Eval.defer(this.error.render.map((error) => RoseTree(`on required key ${this.key}`, Vector(error))));
17
+ }
18
+
19
+ export class OptionalKeyError extends DecodeError {
20
+ readonly _tag = "OptionalKey";
21
+ constructor(readonly key: PropertyKey, readonly error: DecodeError) {
22
+ super();
23
+ }
24
+ render = Eval.defer(this.error.render.map((error) => RoseTree(`on optional key ${show(this.key)}`, Vector(error))));
25
+ }
26
+
27
+ export class RequiredIndexError<I, E extends DecodeError> extends DecodeError {
28
+ readonly _tag = "RequiredIndex";
29
+ constructor(readonly index: I, readonly error: E) {
30
+ super();
31
+ }
32
+ render = Eval.defer(this.error.render.map((error) => RoseTree(`on required index ${this.index}`, Vector(error))));
33
+ }
34
+
35
+ export class OptionalIndexError<I, E extends DecodeError> extends DecodeError {
36
+ readonly _tag = "RequiredIndex";
37
+ constructor(readonly index: I, readonly error: E) {
38
+ super();
39
+ }
40
+ render = Eval.defer(this.error.render.map((error) => RoseTree(`on optional index ${this.index}`, Vector(error))));
41
+ }
42
+
43
+ export class LazyError<E extends DecodeError> extends DecodeError {
44
+ readonly _tag = "Lazy";
45
+ constructor(readonly error: E) {
46
+ super();
47
+ }
48
+ render = Eval.defer(this.error.render.map((error) => RoseTree("while decoding a lazy decoder", Vector(error))));
49
+ }
50
+
51
+ export class MemberError extends DecodeError {
52
+ readonly _tag = "Member";
53
+ constructor(readonly label: string, readonly error: DecodeError) {
54
+ super();
55
+ }
56
+ render = Eval.defer(this.error.render.map((error) => RoseTree(`on member ${this.label}`, Vector(error))));
57
+ }
58
+
59
+ const vowels = ["a", "e", "i", "o", "u", "y"];
60
+
61
+ function startsWithVowel(s: string): boolean {
62
+ for (let i = 0; i < vowels.length; i++) {
63
+ if (s.startsWith(vowels[i]!)) return true;
64
+ }
65
+ return false;
66
+ }
67
+
68
+ export class CompoundError<E extends DecodeError> extends DecodeError {
69
+ readonly _tag = "Compound";
70
+ constructor(readonly name: string, readonly errors: Vector<E>) {
71
+ super();
72
+ }
73
+ render = Eval.defer(
74
+ this.errors
75
+ .traverse((error) => error.render)
76
+ .map((errors) =>
77
+ RoseTree(
78
+ `${this.errors.length} error(s) found while decoding ${startsWithVowel(this.name) ? "an" : "a"} ${this.name}`,
79
+ errors,
80
+ ),
81
+ ),
82
+ );
83
+ }
84
+
85
+ export class CompositionError<E extends DecodeError> extends DecodeError {
86
+ readonly _tag = "Composition";
87
+ constructor(readonly errors: Vector<E>) {
88
+ super();
89
+ }
90
+ render = Eval.defer(
91
+ this.errors
92
+ .traverse((error) => error.render)
93
+ .map((errors) =>
94
+ errors.length === 1
95
+ ? errors.unsafeGet(1)!
96
+ : RoseTree(`${errors.length} errors found while decoding a composition`, errors),
97
+ ),
98
+ );
99
+ }
100
+
101
+ export class StringError extends DecodeError {
102
+ readonly _tag = "String";
103
+ constructor(readonly actual: unknown) {
104
+ super();
105
+ }
106
+ render = Eval(RoseTree(cannotDecode(this.actual, "a string")));
107
+ }
108
+
109
+ export class NumberError extends DecodeError {
110
+ readonly _tag = "Number";
111
+ constructor(readonly actual: unknown) {
112
+ super();
113
+ }
114
+ render = Eval(RoseTree(cannotDecode(this.actual, "a number")));
115
+ }
116
+
117
+ export class NaNError extends DecodeError {
118
+ readonly _tag = "NaN";
119
+ render = Eval.now(RoseTree("value is NaN"));
120
+ }
121
+
122
+ export class InfinityError extends DecodeError {
123
+ readonly _tag = "Infinity";
124
+ render = Eval(RoseTree("value is Infinity"));
125
+ }
126
+
127
+ export class BooleanError extends DecodeError {
128
+ readonly _tag = "Boolean";
129
+ constructor(readonly actual: unknown) {
130
+ super();
131
+ }
132
+ render = Eval(RoseTree(cannotDecode(this.actual, "a boolean")));
133
+ }
134
+
135
+ export class PrimitiveError extends DecodeError {
136
+ readonly _tag = "Primitive";
137
+ constructor(readonly actual: unknown, readonly name: string) {
138
+ super();
139
+ }
140
+ render = Eval(RoseTree(cannotDecode(this.actual, this.name)));
141
+ }
142
+
143
+ export class LiteralError<A extends string | number | boolean> extends DecodeError {
144
+ readonly _tag = "Literal";
145
+ constructor(readonly actual: unknown, readonly literals: Vector<A>) {
146
+ super();
147
+ }
148
+ render = Eval(
149
+ RoseTree(cannotDecode(this.actual, `one of ${this.literals.map((literal) => show(literal)).join(", ")}`)),
150
+ );
151
+ }
152
+
153
+ export class UnexpectedKeysError extends DecodeError {
154
+ readonly _tag = "UnexpectedKeys";
155
+ constructor(readonly keys: Vector<string>) {
156
+ super();
157
+ }
158
+ render = Eval(
159
+ RoseTree(
160
+ `${this.keys.length} error(s) found while checking keys`,
161
+ this.keys.map((key) => RoseTree(`unexpected key ${show(key)}`)),
162
+ ),
163
+ );
164
+ }
165
+
166
+ export class UnexpectedIndicesError extends DecodeError {
167
+ readonly _tag = "UnexpectedIndices";
168
+ constructor(readonly indices: Vector<number>) {
169
+ super();
170
+ }
171
+ render = Eval(
172
+ RoseTree(
173
+ `${this.indices.length} error(s) found while checking indices`,
174
+ this.indices.map((index) => RoseTree(`unexpected index ${show(index)}`)),
175
+ ),
176
+ );
177
+ }
178
+
179
+ export class MissingKeyError extends DecodeError {
180
+ readonly _tag = "MissingKeys";
181
+ constructor(readonly key: PropertyKey) {
182
+ super();
183
+ }
184
+ render = Eval(RoseTree(`missing required key ${show(this.key)}`));
185
+ }
186
+
187
+ export class MissingIndicesError extends DecodeError {
188
+ readonly _tag = "MissingIndices";
189
+ constructor(readonly keys: Vector<PropertyKey>) {
190
+ super();
191
+ }
192
+ render = Eval(
193
+ RoseTree(
194
+ `${this.keys.length} error(s) found while checking indices`,
195
+ this.keys.map((key) => RoseTree(`missing required index ${show(key)}`)),
196
+ ),
197
+ );
198
+ }
199
+
200
+ function cannotDecode(u: unknown, expected: string): string {
201
+ return `cannot decode ${show(u)}, expected ${expected}`;
202
+ }
203
+
204
+ export class BrandedError extends DecodeError {
205
+ readonly _tag = "BrandedError";
206
+ constructor(readonly name: string, readonly brands: Vector<string>) {
207
+ super();
208
+ }
209
+ render = Eval(
210
+ RoseTree(
211
+ `${this.brands.length} brand(s) failed to be validated while decoding ${this.name}`,
212
+ this.brands.map((brand) => RoseTree(brand)),
213
+ ),
214
+ );
215
+ }
216
+
217
+ export class UnionError extends DecodeError {
218
+ readonly _tag = "UnionError";
219
+ constructor(readonly label: string, readonly errors: Vector<DecodeError>) {
220
+ super();
221
+ }
222
+ render = Eval.defer(
223
+ this.errors
224
+ .traverse((error) => error.render)
225
+ .map((errors) => RoseTree(`${this.errors.length} error(s) found while decoding ${this.label}`, errors)),
226
+ );
227
+ }
@@ -0,0 +1,3 @@
1
+ // codegen:start { preset: barrel, include: ./DecodeError/*.ts }
2
+ export * from "./DecodeError/definition.js";
3
+ // codegen:end
@@ -0,0 +1,198 @@
1
+ import type { DecodeError } from "@fncts/base/data/DecodeError";
2
+ import type { Check } from "@fncts/typelevel/Check";
3
+ import type { OptionalKeys, RequiredKeys } from "@fncts/typelevel/Object";
4
+
5
+ import {
6
+ CompoundError,
7
+ LiteralError,
8
+ MemberError,
9
+ MissingKeyError,
10
+ OptionalKeyError,
11
+ PrimitiveError,
12
+ RequiredKeyError,
13
+ UnionError,
14
+ } from "@fncts/base/data/DecodeError";
15
+ import { Decoder } from "@fncts/base/data/Decoder/definition";
16
+
17
+ /**
18
+ * @tsplus fluent fncts.Decoder __call
19
+ */
20
+ export function decode<I, E, A>(self: Decoder<A>, input: unknown): These<DecodeError, A> {
21
+ return self.decode(input);
22
+ }
23
+
24
+ export function fromGuard<A>(guard: Guard<A>, onFalse: (i: unknown) => DecodeError, label: string): Decoder<A> {
25
+ return Decoder((a) => (guard.is(a) ? These.right(a) : These.left(onFalse(a))), label);
26
+ }
27
+
28
+ /**
29
+ * @tsplus implicit
30
+ */
31
+ export const string: Decoder<string> = fromGuard(String.Guard, (u) => new PrimitiveError(u, "string"), "string");
32
+
33
+ /**
34
+ * @tsplus implicit
35
+ */
36
+ export const number: Decoder<number> = fromGuard(Number.Guard, (u) => new PrimitiveError(u, "number"), "number");
37
+
38
+ /**
39
+ * @tsplus implicit
40
+ */
41
+ export const boolean: Decoder<boolean> = fromGuard(Boolean.Guard, (u) => new PrimitiveError(u, "boolean"), "boolean");
42
+
43
+ /**
44
+ * @tsplus implicit
45
+ */
46
+ export const record: Decoder<{}> = fromGuard(Object.Guard, (u) => new PrimitiveError(u, "{}"), "{}");
47
+
48
+ /**
49
+ * @tsplus derive fncts.Decoder lazy
50
+ */
51
+ export function deriveLazy<A>(f: (_: Decoder<A>) => Decoder<A>): Decoder<A> {
52
+ let cached: Decoder<A> | undefined;
53
+ const decoder: Decoder<A> = Decoder((u) => {
54
+ if (!cached) {
55
+ cached = f(decoder);
56
+ }
57
+ return cached.decode(u);
58
+ }, "[Recursive]");
59
+ return decoder;
60
+ }
61
+
62
+ /**
63
+ * @tsplus derive fncts.Decoder<_> 20
64
+ */
65
+ export function deriveLiteral<A extends string | number | boolean>(
66
+ ...[value]: Check<Check.IsLiteral<A> & Check.Not<Check.IsUnion<A>>> extends Check.True ? [value: A] : never
67
+ ): Decoder<A> {
68
+ return Decoder(
69
+ (u) => (u === value ? These.right(u as A) : These.left(new LiteralError(u, Vector(value)))),
70
+ value.toString(),
71
+ );
72
+ }
73
+
74
+ /**
75
+ * @tsplus derive fncts.Decoder<|> 30
76
+ */
77
+ export function deriveUnion<A extends ReadonlyArray<unknown>>(
78
+ ...elements: {
79
+ [K in keyof A]: Decoder<A[K]>;
80
+ }
81
+ ): Decoder<A[number]> {
82
+ const label = elements.map((decoder) => decoder.label).join(" | ");
83
+ return Decoder((u) => {
84
+ const errors: Array<MemberError> = [];
85
+ for (const decoder of elements) {
86
+ const result = decoder.decode(u);
87
+ if (result.isLeft()) {
88
+ errors.push(new MemberError(decoder.label, result.left));
89
+ } else {
90
+ return These.rightOrBoth(result.leftMaybe, result.right);
91
+ }
92
+ }
93
+ return These.left(new UnionError(label, Vector.from(errors)));
94
+ }, label);
95
+ }
96
+
97
+ /**
98
+ * @tsplus derive fncts.Decoder<_> 10
99
+ */
100
+ export function deriveStruct<A extends Record<string, any>>(
101
+ ...[requiredFields, optionalFields]: Check<Check.IsStruct<A>> extends Check.True
102
+ ? [
103
+ ...[
104
+ requiredFields: {
105
+ [k in RequiredKeys<A>]: Decoder<A[k]>;
106
+ },
107
+ ],
108
+ ...([OptionalKeys<A>] extends [never]
109
+ ? []
110
+ : [
111
+ optionalFields: {
112
+ [k in OptionalKeys<A>]: Decoder<NonNullable<A[k]>>;
113
+ },
114
+ ]),
115
+ ]
116
+ : never
117
+ ): Decoder<A> {
118
+ let label = "{";
119
+ let first = true;
120
+ for (const k in requiredFields) {
121
+ if (first) {
122
+ label += ` ${k}: ${(requiredFields[k] as Decoder<any>).label}`;
123
+ } else {
124
+ label += `, ${k}: ${(requiredFields[k] as Decoder<any>).label}`;
125
+ }
126
+ first = false;
127
+ }
128
+ if (optionalFields) {
129
+ for (const k in optionalFields) {
130
+ if (first) {
131
+ label += ` ${k}?: ${(optionalFields[k] as Decoder<any>).label}`;
132
+ } else {
133
+ label += `, ${k}?: ${(optionalFields[k] as Decoder<any>).label}`;
134
+ }
135
+ }
136
+ }
137
+ if (label.length > 1) {
138
+ label += " ";
139
+ }
140
+ label += "}";
141
+
142
+ return Decoder((u) => {
143
+ const recordResult = record.decode(u);
144
+ if (recordResult.isLeft()) {
145
+ return recordResult;
146
+ }
147
+ const input = recordResult.right;
148
+ let errored = false;
149
+ const errors: Array<RequiredKeyError | OptionalKeyError> = [];
150
+ const decoded = {} as A;
151
+ for (const key in requiredFields) {
152
+ if (!(key in input)) {
153
+ errors.push(new RequiredKeyError(key, new MissingKeyError(key)));
154
+ errored = true;
155
+ } else {
156
+ const res = (requiredFields[key] as Decoder<any>).decode(input[key]);
157
+ res.match2(
158
+ (e) => {
159
+ errored = true;
160
+ errors.push(new RequiredKeyError(key, e));
161
+ },
162
+ (warning, a) => {
163
+ decoded[key as keyof A] = a;
164
+ if (warning.isJust()) {
165
+ errors.push(new RequiredKeyError(key, warning.value));
166
+ }
167
+ },
168
+ );
169
+ }
170
+ }
171
+ if (optionalFields) {
172
+ for (const key in optionalFields) {
173
+ if (key in input && typeof input[key as string] !== "undefined") {
174
+ const res = (optionalFields[key] as Decoder<any>).decode(input[key as string]);
175
+ res.match2(
176
+ (e) => {
177
+ errored = true;
178
+ errors.push(new OptionalKeyError(key, e));
179
+ },
180
+ (warning, a) => {
181
+ decoded[key as keyof A] = a;
182
+ if (warning.isJust()) {
183
+ errors.push(new RequiredKeyError(key, warning.value));
184
+ }
185
+ },
186
+ );
187
+ }
188
+ }
189
+ }
190
+ if (errored) {
191
+ return These.left(new CompoundError("struct", Vector.from(errors)));
192
+ }
193
+ if (errors.length !== 0) {
194
+ return These.both(new CompoundError("struct", Vector.from(errors)), decoded);
195
+ }
196
+ return These.right(decoded);
197
+ }, label);
198
+ }
@@ -0,0 +1,25 @@
1
+ import type { DecodeError } from "@fncts/base/data/DecodeError";
2
+
3
+ export const DecoderTypeId = Symbol.for("fncts.Decoder");
4
+ export type DecoderTypeId = typeof DecoderTypeId;
5
+
6
+ export interface DecoderF extends Decoder<any> {}
7
+
8
+ /**
9
+ * @tsplus type fncts.Decoder
10
+ * @tsplus companion fncts.DecoderOps
11
+ */
12
+ export class Decoder<A> {
13
+ readonly _typeId: DecoderTypeId = DecoderTypeId;
14
+ readonly [HKT.F]!: DecoderF;
15
+ readonly [HKT.A]!: () => A;
16
+ readonly [HKT.T]!: Decoder<HKT._A<this>>;
17
+ constructor(readonly decode: (input: unknown) => These<DecodeError, A>, readonly label: string) {}
18
+ }
19
+
20
+ /**
21
+ * @tsplus static fncts.DecoderOps __call
22
+ */
23
+ export function makeDecoder<A>(decode: (input: unknown) => These<DecodeError, A>, label: string): Decoder<A> {
24
+ return new Decoder(decode, label);
25
+ }
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: "./Decoder/*.ts" }
2
+ export * from "./Decoder/api.js";
3
+ export * from "./Decoder/definition.js";
4
+ // codegen:end
@@ -4,54 +4,54 @@ import type { IsInt } from "@fncts/base/types";
4
4
  * @tsplus getter fncts.Number milliseconds
5
5
  * @tsplus static fncts.DurationOps milliseconds
6
6
  */
7
- export function milliseconds<N extends number>(self: IsInt<N>): Duration {
8
- return new Duration(self);
7
+ export function milliseconds(self: number): Duration {
8
+ return new Duration(Math.round(self));
9
9
  }
10
10
 
11
11
  /**
12
12
  * @tsplus getter fncts.Number seconds
13
13
  * @tsplus static fncts.DurationOps seconds
14
14
  */
15
- export function seconds<N extends number>(self: IsInt<N>): Duration {
16
- return new Duration(self * 1000);
15
+ export function seconds(self: number): Duration {
16
+ return new Duration(Math.round(self * 1000));
17
17
  }
18
18
 
19
19
  /**
20
20
  * @tsplus getter fncts.Number minutes
21
21
  * @tsplus static fncts.DurationOps minutes
22
22
  */
23
- export function minutes<N extends number>(self: IsInt<N>): Duration {
24
- return new Duration(self * 60_000);
23
+ export function minutes(self: number): Duration {
24
+ return new Duration(Math.round(self * 60_000));
25
25
  }
26
26
 
27
27
  /**
28
28
  * @tsplus getter fncts.Number hours
29
29
  * @tsplus static fncts.DurationOps hours
30
30
  */
31
- export function hours<N extends number>(self: IsInt<N>): Duration {
32
- return new Duration(self * 3_600_000);
31
+ export function hours(self: number): Duration {
32
+ return new Duration(Math.round(self * 3_600_000));
33
33
  }
34
34
 
35
35
  /**
36
36
  * @tsplus getter fncts.Number days
37
37
  * @tsplus static fncts.DurationOps days
38
38
  */
39
- export function days<N extends number>(self: IsInt<N>): Duration {
40
- return new Duration(self * 86_400_000);
39
+ export function days(self: number): Duration {
40
+ return new Duration(Math.round(self * 86_400_000));
41
41
  }
42
42
 
43
43
  /**
44
44
  * @tsplus operator fncts.Duration *
45
45
  */
46
- export function mult<N extends number>(self: Duration, multiplicand: IsInt<N>) {
47
- return new Duration(self.milliseconds * multiplicand);
46
+ export function mult(self: Duration, multiplicand: number) {
47
+ return new Duration(self.milliseconds * Math.round(multiplicand));
48
48
  }
49
49
 
50
50
  /**
51
51
  * @tsplus operator fncts.Duration *
52
52
  */
53
- export function multInverted<N extends number>(multiplicand: IsInt<N>, self: Duration) {
54
- return new Duration(self.milliseconds * multiplicand);
53
+ export function multInverted(multiplicand: number, self: Duration) {
54
+ return new Duration(Math.round(self.milliseconds) * multiplicand);
55
55
  }
56
56
 
57
57
  /**
@@ -67,3 +67,10 @@ export function sum(self: Duration, that: Duration): Duration {
67
67
  export function difference(self: Duration, that: Duration): Duration {
68
68
  return new Duration(self.milliseconds - that.milliseconds);
69
69
  }
70
+
71
+ /**
72
+ * @tsplus static fncts.DurationOps fromInterval
73
+ */
74
+ export function fromInterval(start: number, end: number): Duration {
75
+ return Duration.milliseconds(Math.round(end) - Math.round(start));
76
+ }
@@ -11,6 +11,8 @@ export function alignWith_<E1, A, E2, B, C>(
11
11
  fb: Either<E2, B>,
12
12
  f: (_: These<A, B>) => C,
13
13
  ): Either<E1 | E2, C> {
14
+ self.concrete();
15
+ fb.concrete();
14
16
  return self._tag === EitherTag.Left
15
17
  ? fb._tag === EitherTag.Left
16
18
  ? self