effect 2.0.0-next.50 → 2.0.0-next.51

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 (318) hide show
  1. package/BigDecimal/dist/effect-BigDecimal.cjs.d.mts +2 -0
  2. package/BigDecimal/dist/effect-BigDecimal.cjs.d.mts.map +1 -0
  3. package/BigDecimal/dist/effect-BigDecimal.cjs.d.ts +2 -0
  4. package/BigDecimal/dist/effect-BigDecimal.cjs.d.ts.map +1 -0
  5. package/BigDecimal/dist/effect-BigDecimal.cjs.dev.js +914 -0
  6. package/BigDecimal/dist/effect-BigDecimal.cjs.js +7 -0
  7. package/BigDecimal/dist/effect-BigDecimal.cjs.mjs +38 -0
  8. package/BigDecimal/dist/effect-BigDecimal.cjs.prod.js +914 -0
  9. package/BigDecimal/dist/effect-BigDecimal.esm.js +869 -0
  10. package/BigDecimal/package.json +4 -0
  11. package/Cache/dist/effect-Cache.cjs.dev.js +21 -21
  12. package/Cache/dist/effect-Cache.cjs.prod.js +21 -21
  13. package/Cause/dist/effect-Cause.cjs.dev.js +4 -4
  14. package/Cause/dist/effect-Cause.cjs.prod.js +4 -4
  15. package/Channel/dist/effect-Channel.cjs.dev.js +33 -33
  16. package/Channel/dist/effect-Channel.cjs.prod.js +33 -33
  17. package/ChannelSingleProducerAsyncInput/dist/effect-ChannelSingleProducerAsyncInput.cjs.dev.js +28 -28
  18. package/ChannelSingleProducerAsyncInput/dist/effect-ChannelSingleProducerAsyncInput.cjs.prod.js +28 -28
  19. package/Chunk/dist/effect-Chunk.cjs.dev.js +2 -7
  20. package/Chunk/dist/effect-Chunk.cjs.mjs +0 -1
  21. package/Chunk/dist/effect-Chunk.cjs.prod.js +2 -7
  22. package/Chunk/dist/effect-Chunk.esm.js +3 -7
  23. package/Clock/dist/effect-Clock.cjs.dev.js +10 -10
  24. package/Clock/dist/effect-Clock.cjs.prod.js +10 -10
  25. package/Config/dist/effect-Config.cjs.dev.js +7 -7
  26. package/Config/dist/effect-Config.cjs.prod.js +7 -7
  27. package/ConfigError/dist/effect-ConfigError.cjs.dev.js +1 -1
  28. package/ConfigError/dist/effect-ConfigError.cjs.prod.js +1 -1
  29. package/ConfigProvider/dist/effect-ConfigProvider.cjs.dev.js +9 -9
  30. package/ConfigProvider/dist/effect-ConfigProvider.cjs.prod.js +9 -9
  31. package/ConfigProviderPathPatch/dist/effect-ConfigProviderPathPatch.cjs.dev.js +2 -2
  32. package/ConfigProviderPathPatch/dist/effect-ConfigProviderPathPatch.cjs.prod.js +2 -2
  33. package/ConfigSecret/dist/effect-ConfigSecret.cjs.dev.js +1 -1
  34. package/ConfigSecret/dist/effect-ConfigSecret.cjs.prod.js +1 -1
  35. package/Console/dist/effect-Console.cjs.dev.js +25 -25
  36. package/Console/dist/effect-Console.cjs.prod.js +25 -25
  37. package/Data/dist/effect-Data.cjs.dev.js +148 -58
  38. package/Data/dist/effect-Data.cjs.prod.js +148 -58
  39. package/Data/dist/effect-Data.esm.js +121 -31
  40. package/DefaultServices/dist/effect-DefaultServices.cjs.dev.js +10 -10
  41. package/DefaultServices/dist/effect-DefaultServices.cjs.prod.js +10 -10
  42. package/Deferred/dist/effect-Deferred.cjs.dev.js +4 -4
  43. package/Deferred/dist/effect-Deferred.cjs.prod.js +4 -4
  44. package/Differ/dist/effect-Differ.cjs.dev.js +1 -1
  45. package/Differ/dist/effect-Differ.cjs.prod.js +1 -1
  46. package/Effect/dist/effect-Effect.cjs.dev.js +27 -27
  47. package/Effect/dist/effect-Effect.cjs.prod.js +27 -27
  48. package/Exit/dist/effect-Exit.cjs.dev.js +4 -4
  49. package/Exit/dist/effect-Exit.cjs.prod.js +4 -4
  50. package/Fiber/dist/effect-Fiber.cjs.dev.js +22 -22
  51. package/Fiber/dist/effect-Fiber.cjs.prod.js +22 -22
  52. package/FiberId/dist/effect-FiberId.cjs.dev.js +2 -2
  53. package/FiberId/dist/effect-FiberId.cjs.prod.js +2 -2
  54. package/FiberRef/dist/effect-FiberRef.cjs.dev.js +22 -22
  55. package/FiberRef/dist/effect-FiberRef.cjs.prod.js +22 -22
  56. package/FiberRefs/dist/effect-FiberRefs.cjs.dev.js +5 -5
  57. package/FiberRefs/dist/effect-FiberRefs.cjs.prod.js +5 -5
  58. package/FiberRefsPatch/dist/effect-FiberRefsPatch.cjs.dev.js +6 -6
  59. package/FiberRefsPatch/dist/effect-FiberRefsPatch.cjs.prod.js +6 -6
  60. package/GroupBy/dist/effect-GroupBy.cjs.dev.js +34 -34
  61. package/GroupBy/dist/effect-GroupBy.cjs.prod.js +34 -34
  62. package/HashMap/dist/effect-HashMap.cjs.dev.js +1 -1
  63. package/HashMap/dist/effect-HashMap.cjs.prod.js +1 -1
  64. package/HashSet/dist/effect-HashSet.cjs.dev.js +1 -1
  65. package/HashSet/dist/effect-HashSet.cjs.prod.js +1 -1
  66. package/KeyedPool/dist/effect-KeyedPool.cjs.dev.js +22 -22
  67. package/KeyedPool/dist/effect-KeyedPool.cjs.prod.js +22 -22
  68. package/Layer/dist/effect-Layer.cjs.dev.js +28 -28
  69. package/Layer/dist/effect-Layer.cjs.prod.js +28 -28
  70. package/List/dist/effect-List.cjs.dev.js +4 -7
  71. package/List/dist/effect-List.cjs.mjs +0 -1
  72. package/List/dist/effect-List.cjs.prod.js +4 -7
  73. package/List/dist/effect-List.esm.js +5 -7
  74. package/LogLevel/dist/effect-LogLevel.cjs.dev.js +4 -4
  75. package/LogLevel/dist/effect-LogLevel.cjs.prod.js +4 -4
  76. package/Logger/dist/effect-Logger.cjs.dev.js +26 -26
  77. package/Logger/dist/effect-Logger.cjs.prod.js +26 -26
  78. package/Match/dist/effect-Match.cjs.dev.js +1 -1
  79. package/Match/dist/effect-Match.cjs.prod.js +1 -1
  80. package/Match/dist/effect-Match.esm.js +1 -1
  81. package/Metric/dist/effect-Metric.cjs.dev.js +20 -20
  82. package/Metric/dist/effect-Metric.cjs.prod.js +20 -20
  83. package/MetricBoundaries/dist/effect-MetricBoundaries.cjs.dev.js +1 -1
  84. package/MetricBoundaries/dist/effect-MetricBoundaries.cjs.prod.js +1 -1
  85. package/MetricHook/dist/effect-MetricHook.cjs.dev.js +2 -2
  86. package/MetricHook/dist/effect-MetricHook.cjs.prod.js +2 -2
  87. package/MetricKey/dist/effect-MetricKey.cjs.dev.js +2 -2
  88. package/MetricKey/dist/effect-MetricKey.cjs.prod.js +2 -2
  89. package/MetricPolling/dist/effect-MetricPolling.cjs.dev.js +22 -22
  90. package/MetricPolling/dist/effect-MetricPolling.cjs.prod.js +22 -22
  91. package/MetricRegistry/dist/effect-MetricRegistry.cjs.dev.js +3 -3
  92. package/MetricRegistry/dist/effect-MetricRegistry.cjs.prod.js +3 -3
  93. package/MutableHashMap/dist/effect-MutableHashMap.cjs.dev.js +1 -1
  94. package/MutableHashMap/dist/effect-MutableHashMap.cjs.prod.js +1 -1
  95. package/MutableHashSet/dist/effect-MutableHashSet.cjs.dev.js +1 -1
  96. package/MutableHashSet/dist/effect-MutableHashSet.cjs.prod.js +1 -1
  97. package/Pool/dist/effect-Pool.cjs.dev.js +22 -22
  98. package/Pool/dist/effect-Pool.cjs.prod.js +22 -22
  99. package/PubSub/dist/effect-PubSub.cjs.dev.js +21 -21
  100. package/PubSub/dist/effect-PubSub.cjs.prod.js +21 -21
  101. package/Queue/dist/effect-Queue.cjs.dev.js +21 -21
  102. package/Queue/dist/effect-Queue.cjs.prod.js +21 -21
  103. package/Random/dist/effect-Random.cjs.dev.js +10 -10
  104. package/Random/dist/effect-Random.cjs.prod.js +10 -10
  105. package/ReadonlyArray/dist/effect-ReadonlyArray.cjs.dev.js +1 -4
  106. package/ReadonlyArray/dist/effect-ReadonlyArray.cjs.mjs +0 -1
  107. package/ReadonlyArray/dist/effect-ReadonlyArray.cjs.prod.js +1 -4
  108. package/ReadonlyArray/dist/effect-ReadonlyArray.esm.js +2 -4
  109. package/Ref/dist/effect-Ref.cjs.dev.js +5 -5
  110. package/Ref/dist/effect-Ref.cjs.prod.js +5 -5
  111. package/Reloadable/dist/effect-Reloadable.cjs.dev.js +26 -26
  112. package/Reloadable/dist/effect-Reloadable.cjs.prod.js +26 -26
  113. package/Request/dist/effect-Request.cjs.dev.js +21 -21
  114. package/Request/dist/effect-Request.cjs.prod.js +21 -21
  115. package/RequestBlock/dist/effect-RequestBlock.cjs.dev.js +28 -28
  116. package/RequestBlock/dist/effect-RequestBlock.cjs.prod.js +28 -28
  117. package/RequestResolver/dist/effect-RequestResolver.cjs.dev.js +28 -28
  118. package/RequestResolver/dist/effect-RequestResolver.cjs.prod.js +28 -28
  119. package/Resource/dist/effect-Resource.cjs.dev.js +24 -24
  120. package/Resource/dist/effect-Resource.cjs.prod.js +24 -24
  121. package/Runtime/dist/effect-Runtime.cjs.dev.js +23 -23
  122. package/Runtime/dist/effect-Runtime.cjs.prod.js +23 -23
  123. package/RuntimeFlags/dist/effect-RuntimeFlags.cjs.dev.js +26 -26
  124. package/RuntimeFlags/dist/effect-RuntimeFlags.cjs.prod.js +26 -26
  125. package/RuntimeFlagsPatch/dist/effect-RuntimeFlagsPatch.cjs.dev.js +2 -2
  126. package/RuntimeFlagsPatch/dist/effect-RuntimeFlagsPatch.cjs.prod.js +2 -2
  127. package/STM/dist/effect-STM.cjs.dev.js +36 -36
  128. package/STM/dist/effect-STM.cjs.prod.js +36 -36
  129. package/Schedule/dist/effect-Schedule.cjs.dev.js +15 -15
  130. package/Schedule/dist/effect-Schedule.cjs.prod.js +15 -15
  131. package/Scheduler/dist/effect-Scheduler.cjs.dev.js +4 -4
  132. package/Scheduler/dist/effect-Scheduler.cjs.prod.js +4 -4
  133. package/Scope/dist/effect-Scope.cjs.dev.js +20 -20
  134. package/Scope/dist/effect-Scope.cjs.prod.js +20 -20
  135. package/ScopedCache/dist/effect-ScopedCache.cjs.dev.js +27 -27
  136. package/ScopedCache/dist/effect-ScopedCache.cjs.prod.js +27 -27
  137. package/ScopedRef/dist/effect-ScopedRef.cjs.dev.js +24 -24
  138. package/ScopedRef/dist/effect-ScopedRef.cjs.prod.js +24 -24
  139. package/Sink/dist/effect-Sink.cjs.dev.js +31 -31
  140. package/Sink/dist/effect-Sink.cjs.prod.js +31 -31
  141. package/Stream/dist/effect-Stream.cjs.dev.js +34 -34
  142. package/Stream/dist/effect-Stream.cjs.prod.js +34 -34
  143. package/Streamable/dist/effect-Streamable.cjs.dev.js +34 -34
  144. package/Streamable/dist/effect-Streamable.cjs.prod.js +34 -34
  145. package/Struct/dist/effect-Struct.cjs.dev.js +0 -1
  146. package/Struct/dist/effect-Struct.cjs.prod.js +0 -1
  147. package/Struct/dist/effect-Struct.esm.js +0 -1
  148. package/SubscriptionRef/dist/effect-SubscriptionRef.cjs.dev.js +33 -33
  149. package/SubscriptionRef/dist/effect-SubscriptionRef.cjs.prod.js +33 -33
  150. package/Supervisor/dist/effect-Supervisor.cjs.dev.js +26 -26
  151. package/Supervisor/dist/effect-Supervisor.cjs.prod.js +26 -26
  152. package/SynchronizedRef/dist/effect-SynchronizedRef.cjs.dev.js +23 -23
  153. package/SynchronizedRef/dist/effect-SynchronizedRef.cjs.prod.js +23 -23
  154. package/TArray/dist/effect-TArray.cjs.dev.js +38 -38
  155. package/TArray/dist/effect-TArray.cjs.prod.js +38 -38
  156. package/TDeferred/dist/effect-TDeferred.cjs.dev.js +37 -37
  157. package/TDeferred/dist/effect-TDeferred.cjs.prod.js +37 -37
  158. package/TMap/dist/effect-TMap.cjs.dev.js +39 -39
  159. package/TMap/dist/effect-TMap.cjs.prod.js +39 -39
  160. package/TPriorityQueue/dist/effect-TPriorityQueue.cjs.dev.js +36 -36
  161. package/TPriorityQueue/dist/effect-TPriorityQueue.cjs.prod.js +36 -36
  162. package/TPubSub/dist/effect-TPubSub.cjs.dev.js +38 -38
  163. package/TPubSub/dist/effect-TPubSub.cjs.prod.js +38 -38
  164. package/TQueue/dist/effect-TQueue.cjs.dev.js +38 -38
  165. package/TQueue/dist/effect-TQueue.cjs.prod.js +38 -38
  166. package/TRandom/dist/effect-TRandom.cjs.dev.js +38 -38
  167. package/TRandom/dist/effect-TRandom.cjs.prod.js +38 -38
  168. package/TReentrantLock/dist/effect-TReentrantLock.cjs.dev.js +36 -36
  169. package/TReentrantLock/dist/effect-TReentrantLock.cjs.prod.js +36 -36
  170. package/TRef/dist/effect-TRef.cjs.dev.js +36 -36
  171. package/TRef/dist/effect-TRef.cjs.prod.js +36 -36
  172. package/TSemaphore/dist/effect-TSemaphore.cjs.dev.js +37 -37
  173. package/TSemaphore/dist/effect-TSemaphore.cjs.prod.js +37 -37
  174. package/TSet/dist/effect-TSet.cjs.dev.js +39 -39
  175. package/TSet/dist/effect-TSet.cjs.prod.js +39 -39
  176. package/Take/dist/effect-Take.cjs.dev.js +28 -28
  177. package/Take/dist/effect-Take.cjs.prod.js +28 -28
  178. package/TestAnnotation/dist/effect-TestAnnotation.cjs.dev.js +1 -1
  179. package/TestAnnotation/dist/effect-TestAnnotation.cjs.prod.js +1 -1
  180. package/TestAnnotations/dist/effect-TestAnnotations.cjs.dev.js +15 -15
  181. package/TestAnnotations/dist/effect-TestAnnotations.cjs.prod.js +15 -15
  182. package/TestClock/dist/effect-TestClock.cjs.dev.js +25 -25
  183. package/TestClock/dist/effect-TestClock.cjs.prod.js +25 -25
  184. package/TestContext/dist/effect-TestContext.cjs.dev.js +27 -27
  185. package/TestContext/dist/effect-TestContext.cjs.prod.js +27 -27
  186. package/TestLive/dist/effect-TestLive.cjs.dev.js +10 -10
  187. package/TestLive/dist/effect-TestLive.cjs.prod.js +10 -10
  188. package/TestServices/dist/effect-TestServices.cjs.dev.js +27 -27
  189. package/TestServices/dist/effect-TestServices.cjs.prod.js +27 -27
  190. package/TestSized/dist/effect-TestSized.cjs.dev.js +4 -4
  191. package/TestSized/dist/effect-TestSized.cjs.prod.js +4 -4
  192. package/Tracer/dist/effect-Tracer.cjs.dev.js +10 -10
  193. package/Tracer/dist/effect-Tracer.cjs.prod.js +10 -10
  194. package/dist/{HashSet-251c8294.cjs.prod.js → HashSet-09ade044.cjs.prod.js} +1 -1
  195. package/dist/{HashSet-c12c037b.cjs.dev.js → HashSet-e9659fd4.cjs.dev.js} +1 -1
  196. package/dist/{Ref-00103de4.cjs.prod.js → Ref-50f14c13.cjs.prod.js} +1 -1
  197. package/dist/{Ref-f990026b.cjs.dev.js → Ref-d3a3826b.cjs.dev.js} +1 -1
  198. package/dist/{cache-d709d5cb.cjs.dev.js → cache-2a5d8381.cjs.dev.js} +4 -4
  199. package/dist/{cache-0b148e42.cjs.prod.js → cache-8f0c08cb.cjs.prod.js} +4 -4
  200. package/dist/{circular-6d2bb353.cjs.dev.js → circular-2effda94.cjs.dev.js} +4 -4
  201. package/dist/{circular-aa705e70.cjs.dev.js → circular-39e86dc8.cjs.dev.js} +7 -7
  202. package/dist/{circular-5b6f6504.cjs.prod.js → circular-4f03acf3.cjs.prod.js} +4 -4
  203. package/dist/{circular-952618e5.cjs.prod.js → circular-acb40239.cjs.prod.js} +7 -7
  204. package/dist/{config-f0bd27af.cjs.prod.js → config-00e6170c.cjs.prod.js} +3 -3
  205. package/dist/{config-8a7bf1ae.cjs.dev.js → config-beaa306c.cjs.dev.js} +3 -3
  206. package/dist/{configProvider-ae007b10.cjs.prod.js → configProvider-290d13e7.cjs.prod.js} +4 -4
  207. package/dist/{configProvider-3d85d4ef.cjs.dev.js → configProvider-aef50f41.cjs.dev.js} +4 -4
  208. package/dist/{core-d3f4e713.cjs.prod.js → core-279496f0.cjs.prod.js} +2 -2
  209. package/dist/{core-473934ce.cjs.prod.js → core-35439f06.cjs.prod.js} +2 -2
  210. package/dist/{core-dd1edd7a.cjs.dev.js → core-7445bfd4.cjs.dev.js} +2 -2
  211. package/dist/{core-b4bf44d3.cjs.dev.js → core-a0828fef.cjs.dev.js} +2 -2
  212. package/dist/{core-effect-f4b1aad8.cjs.dev.js → core-effect-02a7f1d7.cjs.dev.js} +6 -6
  213. package/dist/{core-effect-6666f2dc.cjs.prod.js → core-effect-460f968a.cjs.prod.js} +6 -6
  214. package/dist/{dataSource-d5d7f338.cjs.prod.js → dataSource-94fb44f9.cjs.prod.js} +2 -2
  215. package/dist/{dataSource-9f78e828.cjs.dev.js → dataSource-da4a602c.cjs.dev.js} +2 -2
  216. package/dist/declarations/src/BigDecimal.d.ts +622 -0
  217. package/dist/declarations/src/BigDecimal.d.ts.map +1 -0
  218. package/dist/declarations/src/Chunk.d.ts +14 -11
  219. package/dist/declarations/src/Chunk.d.ts.map +1 -1
  220. package/dist/declarations/src/Data.d.ts +192 -45
  221. package/dist/declarations/src/Data.d.ts.map +1 -1
  222. package/dist/declarations/src/List.d.ts +15 -10
  223. package/dist/declarations/src/List.d.ts.map +1 -1
  224. package/dist/declarations/src/Match.d.ts.map +1 -1
  225. package/dist/declarations/src/ReadonlyArray.d.ts +13 -8
  226. package/dist/declarations/src/ReadonlyArray.d.ts.map +1 -1
  227. package/dist/declarations/src/Struct.d.ts +3 -2
  228. package/dist/declarations/src/Struct.d.ts.map +1 -1
  229. package/dist/declarations/src/index.d.ts +16 -0
  230. package/dist/declarations/src/index.d.ts.map +1 -1
  231. package/dist/{defaultServices-8ea5e664.cjs.prod.js → defaultServices-61911fd4.cjs.prod.js} +2 -2
  232. package/dist/{defaultServices-6a9a2d2b.cjs.dev.js → defaultServices-f3f93337.cjs.dev.js} +2 -2
  233. package/dist/effect.cjs.dev.js +3 -0
  234. package/dist/effect.cjs.mjs +1 -0
  235. package/dist/effect.cjs.prod.js +3 -0
  236. package/dist/effect.esm.js +2 -0
  237. package/dist/{fiber-3d944398.cjs.dev.js → fiber-cac583ce.cjs.dev.js} +3 -3
  238. package/dist/{fiber-cbd0613f.cjs.prod.js → fiber-f67dca7d.cjs.prod.js} +3 -3
  239. package/dist/{fiberRefs-99808a27.cjs.prod.js → fiberRefs-59b59378.cjs.prod.js} +1 -1
  240. package/dist/{fiberRefs-ccc37f30.cjs.dev.js → fiberRefs-6bd9745e.cjs.dev.js} +1 -1
  241. package/dist/{fiberRuntime-f1e80ca7.cjs.prod.js → fiberRuntime-26f406c3.cjs.prod.js} +27 -23
  242. package/dist/{fiberRuntime-0c1e7478.cjs.dev.js → fiberRuntime-976a3e6f.cjs.dev.js} +27 -23
  243. package/dist/{groupBy-8ae74e3b.cjs.dev.js → groupBy-7fc93bc9.cjs.dev.js} +4 -4
  244. package/dist/{groupBy-30f6e9ba.cjs.prod.js → groupBy-8977b420.cjs.prod.js} +4 -4
  245. package/dist/{layer-bfb9802a.cjs.prod.js → layer-abbc91aa.cjs.prod.js} +8 -8
  246. package/dist/{layer-c284cf0d.cjs.dev.js → layer-c197624f.cjs.dev.js} +8 -8
  247. package/dist/{patch-cda9b6c8.cjs.dev.js → patch-2d425849.cjs.dev.js} +1 -1
  248. package/dist/{patch-256bc574.cjs.prod.js → patch-b7689042.cjs.prod.js} +1 -1
  249. package/dist/{pathPatch-31ce8101.cjs.dev.js → pathPatch-18fa425e.cjs.dev.js} +1 -1
  250. package/dist/{pathPatch-40b92af6.cjs.prod.js → pathPatch-b6020485.cjs.prod.js} +1 -1
  251. package/dist/{pool-f6ca2038.cjs.dev.js → pool-810c2214.cjs.dev.js} +5 -5
  252. package/dist/{pool-122f0fad.cjs.prod.js → pool-868dfa39.cjs.prod.js} +5 -5
  253. package/dist/{query-5cc0ddf8.cjs.prod.js → query-927b504e.cjs.prod.js} +5 -5
  254. package/dist/{query-7bffa3c3.cjs.dev.js → query-c6684e39.cjs.dev.js} +5 -5
  255. package/dist/{queue-e326fd89.cjs.prod.js → queue-062806c7.cjs.prod.js} +2 -2
  256. package/dist/{queue-4166cfdb.cjs.dev.js → queue-a0fc274d.cjs.dev.js} +2 -2
  257. package/dist/{registry-081e18a3.cjs.prod.js → registry-9268ec7c.cjs.prod.js} +1 -1
  258. package/dist/{registry-377855a9.cjs.dev.js → registry-e5ad2d74.cjs.dev.js} +1 -1
  259. package/dist/{runtime-d4514ab5.cjs.dev.js → runtime-340bd70b.cjs.dev.js} +5 -5
  260. package/dist/{runtime-4078f059.cjs.prod.js → runtime-ce0ad0ed.cjs.prod.js} +5 -5
  261. package/dist/{schedule-f036b254.cjs.prod.js → schedule-04b40c50.cjs.prod.js} +3 -3
  262. package/dist/{schedule-31e38871.cjs.dev.js → schedule-74c6207a.cjs.dev.js} +3 -3
  263. package/dist/{scopedRef-5ecf6468.cjs.dev.js → scopedRef-4f0dd122.cjs.dev.js} +6 -6
  264. package/dist/{scopedRef-8ce21228.cjs.prod.js → scopedRef-d429ec83.cjs.prod.js} +6 -6
  265. package/dist/{singleProducerAsyncInput-8879d87c.cjs.prod.js → singleProducerAsyncInput-06a9076a.cjs.prod.js} +1 -1
  266. package/dist/{singleProducerAsyncInput-ece7387b.cjs.dev.js → singleProducerAsyncInput-72c05452.cjs.dev.js} +1 -1
  267. package/dist/{sink-1794329b.cjs.dev.js → sink-301d2bb4.cjs.dev.js} +3 -3
  268. package/dist/{sink-9208df8d.cjs.prod.js → sink-46df55d3.cjs.prod.js} +3 -3
  269. package/dist/{stm-b080be31.cjs.dev.js → stm-0b50e3c1.cjs.dev.js} +3 -3
  270. package/dist/{stm-6ad7b384.cjs.prod.js → stm-c0489b43.cjs.prod.js} +3 -3
  271. package/dist/{stream-e19805ca.cjs.prod.js → stream-0c3160ef.cjs.prod.js} +4 -4
  272. package/dist/{stream-09aeeac3.cjs.dev.js → stream-44cdd7cb.cjs.dev.js} +4 -4
  273. package/dist/{synchronizedRef-cc04ecbd.cjs.prod.js → synchronizedRef-2f71b820.cjs.prod.js} +1 -1
  274. package/dist/{synchronizedRef-8fa16866.cjs.dev.js → synchronizedRef-78797507.cjs.dev.js} +1 -1
  275. package/dist/{tArray-5e42c290.cjs.prod.js → tArray-006f45b0.cjs.prod.js} +3 -3
  276. package/dist/{tArray-7d470ed7.cjs.dev.js → tArray-556355cd.cjs.dev.js} +3 -3
  277. package/dist/{tMap-f0df0ea0.cjs.dev.js → tMap-52d00ffb.cjs.dev.js} +4 -4
  278. package/dist/{tMap-a2cfde88.cjs.prod.js → tMap-9680b82b.cjs.prod.js} +4 -4
  279. package/dist/{tQueue-b80e940e.cjs.prod.js → tQueue-51cf109e.cjs.prod.js} +3 -3
  280. package/dist/{tQueue-085f70b5.cjs.dev.js → tQueue-ca56a2a8.cjs.dev.js} +3 -3
  281. package/dist/{tRef-42a212cb.cjs.prod.js → tRef-4a2a9689.cjs.prod.js} +1 -1
  282. package/dist/{tRef-2e495254.cjs.dev.js → tRef-b98e2e2a.cjs.dev.js} +1 -1
  283. package/internal/HashMap/node.esm.js +1 -1
  284. package/internal/fiberRuntime.esm.js +9 -8
  285. package/internal/query.esm.js +2 -2
  286. package/internal/supervisor/patch.esm.js +3 -3
  287. package/internal/supervisor.esm.js +5 -1
  288. package/package.json +10 -5
  289. package/src/BigDecimal.ts +977 -0
  290. package/src/Chunk.ts +17 -13
  291. package/src/Data.ts +219 -92
  292. package/src/List.ts +17 -11
  293. package/src/Match.ts +2 -2
  294. package/src/ReadonlyArray.ts +18 -9
  295. package/src/Struct.ts +3 -2
  296. package/src/index.ts +17 -0
  297. package/src/internal/HashMap/node.ts +1 -1
  298. package/src/internal/fiberRuntime.ts +56 -45
  299. package/src/internal/query.ts +12 -8
  300. package/src/internal/supervisor/patch.ts +2 -2
  301. package/src/internal/supervisor.ts +5 -0
  302. package/src/tsconfig.json +0 -1
  303. /package/dist/{FiberId-0f0b7779.cjs.prod.js → FiberId-88cc0067.cjs.prod.js} +0 -0
  304. /package/dist/{FiberId-6595cf4c.cjs.dev.js → FiberId-f329d0e3.cjs.dev.js} +0 -0
  305. /package/dist/{RuntimeFlagsPatch-7d62915d.cjs.dev.js → RuntimeFlagsPatch-063c5864.cjs.dev.js} +0 -0
  306. /package/dist/{RuntimeFlagsPatch-3890e860.cjs.prod.js → RuntimeFlagsPatch-233ac7d7.cjs.prod.js} +0 -0
  307. /package/dist/{boundaries-ebe66d32.cjs.prod.js → boundaries-0e5ddf7b.cjs.prod.js} +0 -0
  308. /package/dist/{boundaries-8dfe50cb.cjs.dev.js → boundaries-ce70e4e4.cjs.dev.js} +0 -0
  309. /package/dist/{configError-9021016b.cjs.prod.js → configError-72f57cd6.cjs.prod.js} +0 -0
  310. /package/dist/{configError-0c09b93c.cjs.dev.js → configError-834bedc1.cjs.dev.js} +0 -0
  311. /package/dist/{configSecret-0bdfadd8.cjs.prod.js → configSecret-80d3e36b.cjs.prod.js} +0 -0
  312. /package/dist/{configSecret-938818ad.cjs.dev.js → configSecret-abf643d8.cjs.dev.js} +0 -0
  313. /package/dist/{hook-ad5af092.cjs.dev.js → hook-13f4db1e.cjs.dev.js} +0 -0
  314. /package/dist/{hook-cab99f9e.cjs.prod.js → hook-8a020c3f.cjs.prod.js} +0 -0
  315. /package/dist/{key-9c7368c8.cjs.prod.js → key-2cf383a2.cjs.prod.js} +0 -0
  316. /package/dist/{key-e3189bbd.cjs.dev.js → key-4b5f6a7d.cjs.dev.js} +0 -0
  317. /package/dist/{take-114476e5.cjs.prod.js → take-07165139.cjs.prod.js} +0 -0
  318. /package/dist/{take-d4fa1beb.cjs.dev.js → take-689a29d5.cjs.dev.js} +0 -0
@@ -0,0 +1,914 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Equal_dist_effectEqual = require('../../Equal/dist/effect-Equal.cjs.dev.js');
6
+ var Equivalence_dist_effectEquivalence = require('../../Equivalence/dist/effect-Equivalence.cjs.dev.js');
7
+ var Function_dist_effectFunction = require('../../Function/dist/effect-Function.cjs.dev.js');
8
+ var Hash_dist_effectHash = require('../../Hash/dist/effect-Hash.cjs.dev.js');
9
+ var Inspectable_dist_effectInspectable = require('../../Inspectable/dist/effect-Inspectable.cjs.dev.js');
10
+ var Option_dist_effectOption = require('../../Option/dist/effect-Option.cjs.dev.js');
11
+ var Order_dist_effectOrder = require('../../Order/dist/effect-Order.cjs.dev.js');
12
+ var Pipeable_dist_effectPipeable = require('../../Pipeable/dist/effect-Pipeable.cjs.dev.js');
13
+ require('../../GlobalValue/dist/effect-GlobalValue.cjs.dev.js');
14
+ require('../../Utils/dist/effect-Utils.cjs.dev.js');
15
+ require('../../Predicate/dist/effect-Predicate.cjs.dev.js');
16
+ require('../../dist/Either-e7500e90.cjs.dev.js');
17
+ require('../../dist/Option-01caa9d4.cjs.dev.js');
18
+ require('../../dist/Effectable-71c10ab9.cjs.dev.js');
19
+
20
+ /**
21
+ * This module provides utility functions and type class instances for working with the `BigDecimal` type in TypeScript.
22
+ * It includes functions for basic arithmetic operations, as well as type class instances for `Equivalence` and `Order`.
23
+ *
24
+ * A `BigDecimal` allows storing any real number to arbitrary precision; which avoids common floating point errors
25
+ * (such as 0.1 + 0.2 ≠ 0.3) at the cost of complexity.
26
+ *
27
+ * Internally, `BigDecimal` uses a `BigInt` object, paired with a 64-bit integer which determines the position of the
28
+ * decimal point. Therefore, the precision *is not* actually arbitrary, but limited to 2<sup>63</sup> decimal places.
29
+ *
30
+ * It is not recommended to convert a floating point number to a decimal directly, as the floating point representation
31
+ * may be unexpected.
32
+ *
33
+ * @since 2.0.0
34
+ */
35
+ const DEFAULT_PRECISION = 100;
36
+
37
+ /**
38
+ * @since 2.0.0
39
+ * @category symbols
40
+ */
41
+ const TypeId = /*#__PURE__*/Symbol.for("effect/BigDecimal");
42
+
43
+ /**
44
+ * @since 2.0.0
45
+ * @category symbol
46
+ */
47
+
48
+ /**
49
+ * @since 2.0.0
50
+ * @category models
51
+ */
52
+
53
+ const BigDecimalProto = {
54
+ [TypeId]: TypeId,
55
+ [Hash_dist_effectHash.symbol]() {
56
+ const normalized = normalize(this);
57
+ return Function_dist_effectFunction.pipe(Hash_dist_effectHash.hash(normalized.value), Hash_dist_effectHash.combine(Hash_dist_effectHash.number(normalized.scale)));
58
+ },
59
+ [Equal_dist_effectEqual.symbol](that) {
60
+ return isBigDecimal(that) && equals(this, that);
61
+ },
62
+ toString() {
63
+ return toString(this);
64
+ },
65
+ toJSON() {
66
+ return toString(this);
67
+ },
68
+ [Inspectable_dist_effectInspectable.NodeInspectSymbol]() {
69
+ return toString(this);
70
+ },
71
+ pipe() {
72
+ return Pipeable_dist_effectPipeable.pipeArguments(this, arguments);
73
+ }
74
+ };
75
+
76
+ /**
77
+ * Checks if a given value is a `BigDecimal`.
78
+ *
79
+ * @param u - The value to check.
80
+ *
81
+ * @since 2.0.0
82
+ * @category guards
83
+ */
84
+ const isBigDecimal = u => typeof u === "object" && u !== null && TypeId in u;
85
+
86
+ /**
87
+ * Creates a `BigDecimal` from a `bigint` value and a scale.
88
+ *
89
+ * @param value - The `bigint` value to create a `BigDecimal` from.
90
+ * @param scale - The scale of the `BigDecimal`.
91
+ *
92
+ * @since 2.0.0
93
+ * @category constructors
94
+ */
95
+ const make = (value, scale) => {
96
+ const o = Object.create(BigDecimalProto);
97
+ o.value = value;
98
+ o.scale = scale;
99
+ return o;
100
+ };
101
+ const bigint0 = /*#__PURE__*/BigInt(0);
102
+ const bigint1 = /*#__PURE__*/BigInt(1);
103
+ const bigint10 = /*#__PURE__*/BigInt(10);
104
+ const zero = /*#__PURE__*/make(bigint0, 0);
105
+
106
+ /**
107
+ * Normalizes a given `BigDecimal` by removing trailing zeros.
108
+ *
109
+ * @param self - The `BigDecimal` to normalize.
110
+ *
111
+ * @example
112
+ * import { normalize, make, unsafeFromString } from "effect/BigDecimal"
113
+ *
114
+ * assert.deepStrictEqual(normalize(unsafeFromString("123.00000")), make(123n, 0))
115
+ * assert.deepStrictEqual(normalize(unsafeFromString("12300000")), make(123n, -5))
116
+ *
117
+ * @since 2.0.0
118
+ * @category scaling
119
+ */
120
+ const normalize = self => {
121
+ if (self.normalized === undefined) {
122
+ if (self.value === bigint0) {
123
+ self.normalized = zero;
124
+ } else {
125
+ const digits = `${self.value}`;
126
+ let trail = 0;
127
+ for (let i = digits.length - 1; i >= 0; i--) {
128
+ if (digits[i] === "0") {
129
+ trail++;
130
+ } else {
131
+ break;
132
+ }
133
+ }
134
+ if (trail === 0) {
135
+ self.normalized = self;
136
+ }
137
+ const value = BigInt(digits.substring(0, digits.length - trail));
138
+ const scale = self.scale - trail;
139
+ self.normalized = make(value, scale);
140
+ }
141
+ }
142
+ return self.normalized;
143
+ };
144
+
145
+ /**
146
+ * Scales a given `BigDecimal` to the specified scale.
147
+ *
148
+ * If the given scale is smaller than the current scale, the value will be rounded down to
149
+ * the nearest integer.
150
+ *
151
+ * @param self - The `BigDecimal` to scale.
152
+ * @param scale - The scale to scale to.
153
+ *
154
+ * @since 2.0.0
155
+ * @category scaling
156
+ */
157
+ const scale = (self, scale) => {
158
+ if (scale > self.scale) {
159
+ return make(self.value * bigint10 ** BigInt(scale - self.scale), scale);
160
+ }
161
+ if (scale < self.scale) {
162
+ return make(self.value / bigint10 ** BigInt(self.scale - scale), scale);
163
+ }
164
+ return self;
165
+ };
166
+
167
+ /**
168
+ * Provides an addition operation on `BigDecimal`s.
169
+ *
170
+ * @param self - The first operand.
171
+ * @param that - The second operand.
172
+ *
173
+ * @example
174
+ * import { sum, unsafeFromString } from "effect/BigDecimal"
175
+ *
176
+ * assert.deepStrictEqual(sum(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("5"))
177
+ *
178
+ * @since 2.0.0
179
+ * @category math
180
+ */
181
+ const sum = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, that) => {
182
+ if (that.value === bigint0) {
183
+ return self;
184
+ }
185
+ if (self.value === bigint0) {
186
+ return that;
187
+ }
188
+ if (self.scale > that.scale) {
189
+ return make(scale(that, self.scale).value + self.value, self.scale);
190
+ }
191
+ if (self.scale < that.scale) {
192
+ return make(scale(self, that.scale).value + that.value, that.scale);
193
+ }
194
+ return make(self.value + that.value, self.scale);
195
+ });
196
+
197
+ /**
198
+ * Provides a multiplication operation on `BigDecimal`s.
199
+ *
200
+ * @param self - The first operand.
201
+ * @param that - The second operand.
202
+ *
203
+ * @example
204
+ * import { multiply, unsafeFromString } from "effect/BigDecimal"
205
+ *
206
+ * assert.deepStrictEqual(multiply(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("6"))
207
+ *
208
+ * @since 2.0.0
209
+ * @category math
210
+ */
211
+ const multiply = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, that) => {
212
+ if (that.value === bigint0 || self.value === bigint0) {
213
+ return zero;
214
+ }
215
+ return make(self.value * that.value, self.scale + that.scale);
216
+ });
217
+
218
+ /**
219
+ * Provides a subtraction operation on `BigDecimal`s.
220
+ *
221
+ * @param self - The first operand.
222
+ * @param that - The second operand.
223
+ *
224
+ * @example
225
+ * import { subtract, unsafeFromString } from "effect/BigDecimal"
226
+ *
227
+ * assert.deepStrictEqual(subtract(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("-1"))
228
+ *
229
+ * @since 2.0.0
230
+ * @category math
231
+ */
232
+ const subtract = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, that) => {
233
+ if (that.value === bigint0) {
234
+ return self;
235
+ }
236
+ if (self.value === bigint0) {
237
+ return make(-that.value, that.scale);
238
+ }
239
+ if (self.scale > that.scale) {
240
+ return make(self.value - scale(that, self.scale).value, self.scale);
241
+ }
242
+ if (self.scale < that.scale) {
243
+ return make(scale(self, that.scale).value - that.value, that.scale);
244
+ }
245
+ return make(self.value - that.value, self.scale);
246
+ });
247
+
248
+ /**
249
+ * Internal function used for arbitrary precision division.
250
+ */
251
+ const divideWithPrecision = (num, den, scale, precision) => {
252
+ if (num === bigint0) {
253
+ return zero;
254
+ }
255
+ const numNegative = num < bigint0;
256
+ const denNegative = den < bigint0;
257
+ const negateResult = numNegative !== denNegative;
258
+ num = numNegative ? -num : num;
259
+ den = denNegative ? -den : den;
260
+
261
+ // Shift digits until numerator is larger than denominator (set scale appropriately).
262
+ while (num < den) {
263
+ num *= bigint10;
264
+ scale++;
265
+ }
266
+
267
+ // First division.
268
+ let quotient = num / den;
269
+ let remainder = num % den;
270
+ if (remainder === bigint0) {
271
+ // No remainder, return immediately.
272
+ return make(negateResult ? -quotient : quotient, scale);
273
+ }
274
+
275
+ // The quotient is guaranteed to be non-negative at this point. No need to consider sign.
276
+ let count = `${quotient}`.length;
277
+
278
+ // Shift the remainder by 1 decimal; The quotient will be 1 digit upon next division.
279
+ remainder *= bigint10;
280
+ while (remainder !== bigint0 && count < precision) {
281
+ const q = remainder / den;
282
+ const r = remainder % den;
283
+ quotient = quotient * bigint10 + q;
284
+ remainder = r * bigint10;
285
+ count++;
286
+ scale++;
287
+ }
288
+ if (remainder !== bigint0) {
289
+ // Round final number with remainder.
290
+ quotient += roundTerminal(remainder / den);
291
+ }
292
+ return make(negateResult ? -quotient : quotient, scale);
293
+ };
294
+
295
+ /**
296
+ * Internal function used for rounding.
297
+ *
298
+ * Returns 1 if the most significant digit is >= 5, otherwise 0.
299
+ *
300
+ * This is used after dividing a number by a power of ten and rounding the last digit.
301
+ */
302
+ const roundTerminal = n => {
303
+ if (n === bigint0) {
304
+ return bigint0;
305
+ }
306
+ const pos = n > bigint0 ? 0 : 1;
307
+ return Number(`${n}`[pos]) < 5 ? bigint0 : bigint1;
308
+ };
309
+
310
+ /**
311
+ * Provides a division operation on `BigDecimal`s.
312
+ *
313
+ * If the dividend is not a multiple of the divisor the result will be a `BigDecimal` value
314
+ * which represents the integer division rounded down to the nearest integer.
315
+ *
316
+ * If the divisor is `0`, the result will be `None`.
317
+ *
318
+ * @param self - The dividend operand.
319
+ * @param that - The divisor operand.
320
+ *
321
+ * @example
322
+ * import { divide, unsafeFromString } from "effect/BigDecimal"
323
+ * import { some, none } from "effect/Option"
324
+ *
325
+ * assert.deepStrictEqual(divide(unsafeFromString("6"), unsafeFromString("3")), some(unsafeFromString("2")))
326
+ * assert.deepStrictEqual(divide(unsafeFromString("6"), unsafeFromString("4")), some(unsafeFromString("1.5")))
327
+ * assert.deepStrictEqual(divide(unsafeFromString("6"), unsafeFromString("0")), none())
328
+ *
329
+ * @since 2.0.0
330
+ * @category math
331
+ */
332
+ const divide = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, that) => {
333
+ if (that.value === bigint0) {
334
+ return Option_dist_effectOption.none();
335
+ }
336
+ if (self.value === bigint0) {
337
+ return Option_dist_effectOption.some(zero);
338
+ }
339
+ const scale = self.scale - that.scale;
340
+ if (self.value === that.value) {
341
+ return Option_dist_effectOption.some(make(bigint1, scale));
342
+ }
343
+ return Option_dist_effectOption.some(divideWithPrecision(self.value, that.value, scale, DEFAULT_PRECISION));
344
+ });
345
+
346
+ /**
347
+ * Provides an unsafe division operation on `BigDecimal`s.
348
+ *
349
+ * If the dividend is not a multiple of the divisor the result will be a `BigDecimal` value
350
+ * which represents the integer division rounded down to the nearest integer.
351
+ *
352
+ * Throws a `RangeError` if the divisor is `0`.
353
+ *
354
+ * @param self - The dividend operand.
355
+ * @param that - The divisor operand.as
356
+ *
357
+ * @example
358
+ * import { unsafeDivide, unsafeFromString } from "effect/BigDecimal"
359
+ *
360
+ * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("3")), unsafeFromString("2"))
361
+ * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("4")), unsafeFromString("1.5"))
362
+ *
363
+ * @since 2.0.0
364
+ * @category math
365
+ */
366
+ const unsafeDivide = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, that) => {
367
+ if (that.value === bigint0) {
368
+ throw new RangeError("Division by zero");
369
+ }
370
+ if (self.value === bigint0) {
371
+ return zero;
372
+ }
373
+ const scale = self.scale - that.scale;
374
+ if (self.value === that.value) {
375
+ return make(bigint1, scale);
376
+ }
377
+ return divideWithPrecision(self.value, that.value, scale, DEFAULT_PRECISION);
378
+ });
379
+
380
+ /**
381
+ * @since 2.0.0
382
+ * @category instances
383
+ */
384
+ const Order = /*#__PURE__*/Order_dist_effectOrder.make((self, that) => {
385
+ const scmp = Order_dist_effectOrder.number(sign(self), sign(that));
386
+ if (scmp !== 0) {
387
+ return scmp;
388
+ }
389
+ if (self.scale > that.scale) {
390
+ return Order_dist_effectOrder.bigint(self.value, scale(that, self.scale).value);
391
+ }
392
+ if (self.scale < that.scale) {
393
+ return Order_dist_effectOrder.bigint(scale(self, that.scale).value, that.value);
394
+ }
395
+ return Order_dist_effectOrder.bigint(self.value, that.value);
396
+ });
397
+
398
+ /**
399
+ * Returns `true` if the first argument is less than the second, otherwise `false`.
400
+ *
401
+ * @param self - The first argument.
402
+ * @param that - The second argument.
403
+ *
404
+ * @example
405
+ * import { lessThan, unsafeFromString } from "effect/BigDecimal"
406
+ *
407
+ * assert.deepStrictEqual(lessThan(unsafeFromString("2"), unsafeFromString("3")), true)
408
+ * assert.deepStrictEqual(lessThan(unsafeFromString("3"), unsafeFromString("3")), false)
409
+ * assert.deepStrictEqual(lessThan(unsafeFromString("4"), unsafeFromString("3")), false)
410
+ *
411
+ * @since 2.0.0
412
+ * @category predicates
413
+ */
414
+ const lessThan = /*#__PURE__*/Order_dist_effectOrder.lessThan(Order);
415
+
416
+ /**
417
+ * Checks if a given `BigDecimal` is less than or equal to the provided one.
418
+ *
419
+ * @param self - The first `BigDecimal` to compare with.
420
+ * @param that - The second `BigDecimal` to compare with.
421
+ *
422
+ * @example
423
+ * import { lessThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
424
+ *
425
+ * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), true)
426
+ * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
427
+ * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), false)
428
+ *
429
+ * @since 2.0.0
430
+ * @category predicates
431
+ */
432
+ const lessThanOrEqualTo = /*#__PURE__*/Order_dist_effectOrder.lessThanOrEqualTo(Order);
433
+
434
+ /**
435
+ * Returns `true` if the first argument is greater than the second, otherwise `false`.
436
+ *
437
+ * @param self - The first argument.
438
+ * @param that - The second argument.
439
+ *
440
+ * @example
441
+ * import { greaterThan, unsafeFromString } from "effect/BigDecimal"
442
+ *
443
+ * assert.deepStrictEqual(greaterThan(unsafeFromString("2"), unsafeFromString("3")), false)
444
+ * assert.deepStrictEqual(greaterThan(unsafeFromString("3"), unsafeFromString("3")), false)
445
+ * assert.deepStrictEqual(greaterThan(unsafeFromString("4"), unsafeFromString("3")), true)
446
+ *
447
+ * @since 2.0.0
448
+ * @category predicates
449
+ */
450
+ const greaterThan = /*#__PURE__*/Order_dist_effectOrder.greaterThan(Order);
451
+
452
+ /**
453
+ * Checks if a given `BigDecimal` is greater than or equal to the provided one.
454
+ *
455
+ * @param self - The first `BigDecimal` to compare with.
456
+ * @param that - The second `BigDecimal` to compare with.
457
+ *
458
+ * @example
459
+ * import { greaterThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
460
+ *
461
+ * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), false)
462
+ * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
463
+ * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), true)
464
+ *
465
+ * @since 2.0.0
466
+ * @category predicates
467
+ */
468
+ const greaterThanOrEqualTo = /*#__PURE__*/Order_dist_effectOrder.greaterThanOrEqualTo(Order);
469
+
470
+ /**
471
+ * Checks if a `BigDecimal` is between a `minimum` and `maximum` value (inclusive).
472
+ *
473
+ * @param self - The `number` to check.
474
+ * @param minimum - The `minimum` value to check.
475
+ * @param maximum - The `maximum` value to check.
476
+ *
477
+ * @example
478
+ * import { between, unsafeFromString } from "effect/BigDecimal"
479
+ *
480
+ * assert.deepStrictEqual(between(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("3")), true)
481
+ * assert.deepStrictEqual(between(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("-1")), false)
482
+ * assert.deepStrictEqual(between(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("6")), false)
483
+ *
484
+ * @since 2.0.0
485
+ * @category predicates
486
+ */
487
+ const between = /*#__PURE__*/Order_dist_effectOrder.between(Order);
488
+
489
+ /**
490
+ * Restricts the given `BigDecimal` to be within the range specified by the `minimum` and `maximum` values.
491
+ *
492
+ * - If the `BigDecimal` is less than the `minimum` value, the function returns the `minimum` value.
493
+ * - If the `BigDecimal` is greater than the `maximum` value, the function returns the `maximum` value.
494
+ * - Otherwise, it returns the original `BigDecimal`.
495
+ *
496
+ * @param self - The `BigDecimal` to be clamped.
497
+ * @param minimum - The lower end of the range.
498
+ * @param maximum - The upper end of the range.
499
+ *
500
+ * @example
501
+ * import { clamp, unsafeFromString } from "effect/BigDecimal"
502
+ *
503
+ * assert.deepStrictEqual(clamp(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("3")), unsafeFromString("3"))
504
+ * assert.deepStrictEqual(clamp(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("-1")), unsafeFromString("0"))
505
+ * assert.deepStrictEqual(clamp(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("6")), unsafeFromString("5"))
506
+ *
507
+ * @since 2.0.0
508
+ * @category math
509
+ */
510
+ const clamp = /*#__PURE__*/Order_dist_effectOrder.clamp(Order);
511
+
512
+ /**
513
+ * Returns the minimum between two `BigDecimal`s.
514
+ *
515
+ * @param self - The first `BigDecimal`.
516
+ * @param that - The second `BigDecimal`.
517
+ *
518
+ * @example
519
+ * import { min, unsafeFromString } from "effect/BigDecimal"
520
+ *
521
+ * assert.deepStrictEqual(min(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("2"))
522
+ *
523
+ * @since 2.0.0
524
+ * @category math
525
+ */
526
+ const min = /*#__PURE__*/Order_dist_effectOrder.min(Order);
527
+
528
+ /**
529
+ * Returns the maximum between two `BigDecimal`s.
530
+ *
531
+ * @param self - The first `BigDecimal`.
532
+ * @param that - The second `BigDecimal`.
533
+ *
534
+ * @example
535
+ * import { max, unsafeFromString } from "effect/BigDecimal"
536
+ *
537
+ * assert.deepStrictEqual(max(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("3"))
538
+ *
539
+ * @since 2.0.0
540
+ * @category math
541
+ */
542
+ const max = /*#__PURE__*/Order_dist_effectOrder.max(Order);
543
+
544
+ /**
545
+ * Determines the sign of a given `BigDecimal`.
546
+ *
547
+ * @param n - The `BigDecimal` to determine the sign of.
548
+ *
549
+ * @example
550
+ * import { sign, unsafeFromString } from "effect/BigDecimal"
551
+ *
552
+ * assert.deepStrictEqual(sign(unsafeFromString("-5")), -1)
553
+ * assert.deepStrictEqual(sign(unsafeFromString("0")), 0)
554
+ * assert.deepStrictEqual(sign(unsafeFromString("5")), 1)
555
+ *
556
+ * @since 2.0.0
557
+ * @category math
558
+ */
559
+ const sign = n => n.value === bigint0 ? 0 : n.value < bigint0 ? -1 : 1;
560
+
561
+ /**
562
+ * Determines the absolute value of a given `BigDecimal`.
563
+ *
564
+ * @param n - The `BigDecimal` to determine the absolute value of.
565
+ *
566
+ * @example
567
+ * import { abs, unsafeFromString } from "effect/BigDecimal"
568
+ *
569
+ * assert.deepStrictEqual(abs(unsafeFromString("-5")), unsafeFromString("5"))
570
+ * assert.deepStrictEqual(abs(unsafeFromString("0")), unsafeFromString("0"))
571
+ * assert.deepStrictEqual(abs(unsafeFromString("5")), unsafeFromString("5"))
572
+ *
573
+ * @since 2.0.0
574
+ * @category math
575
+ */
576
+ const abs = n => n.value < bigint0 ? make(-n.value, n.scale) : n;
577
+
578
+ /**
579
+ * Provides a negate operation on `BigDecimal`s.
580
+ *
581
+ * @param n - The `BigDecimal` to negate.
582
+ *
583
+ * @example
584
+ * import { negate, unsafeFromString } from "effect/BigDecimal"
585
+ *
586
+ * assert.deepStrictEqual(negate(unsafeFromString("3")), unsafeFromString("-3"))
587
+ * assert.deepStrictEqual(negate(unsafeFromString("-6")), unsafeFromString("6"))
588
+ *
589
+ * @since 2.0.0
590
+ * @category math
591
+ */
592
+ const negate = n => make(-n.value, n.scale);
593
+
594
+ /**
595
+ * Returns the remainder left over when one operand is divided by a second operand.
596
+ *
597
+ * If the divisor is `0`, the result will be `None`.
598
+ *
599
+ * @param self - The dividend.
600
+ * @param divisor - The divisor.
601
+ *
602
+ * @example
603
+ * import { remainder, unsafeFromString } from "effect/BigDecimal"
604
+ * import { some, none } from "effect/Option"
605
+ *
606
+ * assert.deepStrictEqual(remainder(unsafeFromString("2"), unsafeFromString("2")), some(unsafeFromString("0")))
607
+ * assert.deepStrictEqual(remainder(unsafeFromString("3"), unsafeFromString("2")), some(unsafeFromString("1")))
608
+ * assert.deepStrictEqual(remainder(unsafeFromString("-4"), unsafeFromString("2")), some(unsafeFromString("0")))
609
+ *
610
+ * @since 2.0.0
611
+ * @category math
612
+ */
613
+ const remainder = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, divisor) => {
614
+ if (divisor.value === bigint0) {
615
+ return Option_dist_effectOption.none();
616
+ }
617
+ const max = Math.max(self.scale, divisor.scale);
618
+ return Option_dist_effectOption.some(make(scale(self, max).value % scale(divisor, max).value, max));
619
+ });
620
+
621
+ /**
622
+ * Returns the remainder left over when one operand is divided by a second operand.
623
+ *
624
+ * Throws a `RangeError` if the divisor is `0`.
625
+ *
626
+ * @param self - The dividend.
627
+ * @param divisor - The divisor.
628
+ *
629
+ * @example
630
+ * import { unsafeRemainder, unsafeFromString } from "effect/BigDecimal"
631
+ *
632
+ * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("2"), unsafeFromString("2")), unsafeFromString("0"))
633
+ * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("3"), unsafeFromString("2")), unsafeFromString("1"))
634
+ * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("-4"), unsafeFromString("2")), unsafeFromString("0"))
635
+ *
636
+ * @since 2.0.0
637
+ * @category math
638
+ */
639
+ const unsafeRemainder = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, divisor) => {
640
+ if (divisor.value === bigint0) {
641
+ throw new RangeError("Division by zero");
642
+ }
643
+ const max = Math.max(self.scale, divisor.scale);
644
+ return make(scale(self, max).value % scale(divisor, max).value, max);
645
+ });
646
+
647
+ /**
648
+ * @category instances
649
+ * @since 2.0.0
650
+ */
651
+ const Equivalence = /*#__PURE__*/Equivalence_dist_effectEquivalence.make((self, that) => {
652
+ if (self.scale > that.scale) {
653
+ return scale(that, self.scale).value === self.value;
654
+ }
655
+ if (self.scale < that.scale) {
656
+ return scale(self, that.scale).value === that.value;
657
+ }
658
+ return self.value === that.value;
659
+ });
660
+
661
+ /**
662
+ * Checks if two `BigDecimal`s are equal.
663
+ *
664
+ * @since 2.0.0
665
+ * @category predicates
666
+ */
667
+ const equals = /*#__PURE__*/Function_dist_effectFunction.dual(2, (self, that) => Equivalence(self, that));
668
+
669
+ /**
670
+ * Creates a `BigDecimal` from a `bigint` value.
671
+ *
672
+ * @param value - The `bigint` value to create a `BigDecimal` from.
673
+ *
674
+ * @since 2.0.0
675
+ * @category constructors
676
+ */
677
+ const fromBigInt = n => make(n, 0);
678
+
679
+ /**
680
+ * Creates a `BigDecimal` from a `number` value.
681
+ *
682
+ * It is not recommended to convert a floating point number to a decimal directly,
683
+ * as the floating point representation may be unexpected.
684
+ *
685
+ * @param value - The `number` value to create a `BigDecimal` from.
686
+ *
687
+ * @example
688
+ * import { fromNumber, make } from "effect/BigDecimal"
689
+ *
690
+ * assert.deepStrictEqual(fromNumber(123), make(123n, 0))
691
+ * assert.deepStrictEqual(fromNumber(123.456), make(123456n, 3))
692
+ *
693
+ * @since 2.0.0
694
+ * @category constructors
695
+ */
696
+ const fromNumber = n => {
697
+ const [lead, trail = ""] = `${n}`.split(".");
698
+ return make(BigInt(`${lead}${trail}`), trail.length);
699
+ };
700
+
701
+ /**
702
+ * Parses a numerical `string` into a `BigDecimal`.
703
+ *
704
+ * @param s - The `string` to parse.
705
+ *
706
+ * @example
707
+ * import { fromString, make } from "effect/BigDecimal"
708
+ * import { some, none } from "effect/Option"
709
+ *
710
+ * assert.deepStrictEqual(fromString("123"), some(make(123n, 0)))
711
+ * assert.deepStrictEqual(fromString("123.456"), some(make(123456n, 3)))
712
+ * assert.deepStrictEqual(fromString("123.abc"), none())
713
+ *
714
+ * @since 2.0.0
715
+ * @category constructors
716
+ */
717
+ const fromString = s => {
718
+ let digits;
719
+ let scale;
720
+ const dot = s.search(/\./);
721
+ if (dot !== -1) {
722
+ const lead = s.slice(0, dot);
723
+ const trail = s.slice(dot + 1);
724
+ digits = `${lead}${trail}`;
725
+ scale = trail.length;
726
+ } else {
727
+ digits = s;
728
+ scale = 0;
729
+ }
730
+ if (digits === "") {
731
+ // TODO: This mimics the BigInt constructor behavior. Should this be `Option.none()`?
732
+ return Option_dist_effectOption.some(zero);
733
+ }
734
+ if (!/^(?:\+|-)?\d+$/.test(digits)) {
735
+ return Option_dist_effectOption.none();
736
+ }
737
+ return Option_dist_effectOption.some(make(BigInt(digits), scale));
738
+ };
739
+
740
+ /**
741
+ * Parses a numerical `string` into a `BigDecimal`.
742
+ *
743
+ * @param s - The `string` to parse.
744
+ *
745
+ * @example
746
+ * import { unsafeFromString, make } from "effect/BigDecimal"
747
+ *
748
+ * assert.deepStrictEqual(unsafeFromString("123"), make(123n, 0))
749
+ * assert.deepStrictEqual(unsafeFromString("123.456"), make(123456n, 3))
750
+ * assert.throws(() => unsafeFromString("123.abc"))
751
+ *
752
+ * @since 2.0.0
753
+ * @category constructors
754
+ */
755
+ const unsafeFromString = s => Option_dist_effectOption.getOrThrowWith(fromString(s), () => new Error("Invalid numerical string"));
756
+
757
+ /**
758
+ * Formats a given `BigDecimal` as a `string`.
759
+ *
760
+ * @param normalized - The `BigDecimal` to format.
761
+ *
762
+ * @example
763
+ * import { toString, unsafeFromString } from "effect/BigDecimal"
764
+ *
765
+ * assert.deepStrictEqual(toString(unsafeFromString("-5")), "-5")
766
+ * assert.deepStrictEqual(toString(unsafeFromString("123.456")), "123.456")
767
+ * assert.deepStrictEqual(toString(unsafeFromString("-0.00000123")), "-0.00000123")
768
+ *
769
+ * @since 2.0.0
770
+ * @category conversions
771
+ */
772
+ const toString = n => {
773
+ const negative = n.value < bigint0;
774
+ const absolute = negative ? `${n.value}`.substring(1) : `${n.value}`;
775
+ let before;
776
+ let after;
777
+ if (n.scale >= absolute.length) {
778
+ before = "0";
779
+ after = "0".repeat(n.scale - absolute.length) + absolute;
780
+ } else {
781
+ const location = absolute.length - n.scale;
782
+ if (location > absolute.length) {
783
+ const zeros = location - absolute.length;
784
+ before = `${absolute}${"0".repeat(zeros)}`;
785
+ after = "";
786
+ } else {
787
+ after = absolute.slice(location);
788
+ before = absolute.slice(0, location);
789
+ }
790
+ }
791
+ const complete = after === "" ? before : `${before}.${after}`;
792
+ return negative ? `-${complete}` : complete;
793
+ };
794
+
795
+ /**
796
+ * Converts a `BigDecimal` to a `number`.
797
+ *
798
+ * This function will produce incorrect results if the `BigDecimal` exceeds the 64-bit range of a `number`.
799
+ *
800
+ * @param n - The `BigDecimal` to convert.
801
+ *
802
+ * @example
803
+ * import { unsafeToNumber, unsafeFromString } from "effect/BigDecimal"
804
+ *
805
+ * assert.deepStrictEqual(unsafeToNumber(unsafeFromString("123.456")), 123.456)
806
+ *
807
+ * @since 2.0.0
808
+ * @category conversions
809
+ */
810
+ const unsafeToNumber = n => Number(toString(n));
811
+
812
+ /**
813
+ * Checks if a given `BigDecimal` is an integer.
814
+ *
815
+ * @param n - The `BigDecimal` to check.
816
+ *
817
+ * @example
818
+ * import { isInteger, unsafeFromString } from "effect/BigDecimal"
819
+ *
820
+ * assert.deepStrictEqual(isInteger(unsafeFromString("0")), true)
821
+ * assert.deepStrictEqual(isInteger(unsafeFromString("1")), true)
822
+ * assert.deepStrictEqual(isInteger(unsafeFromString("1.1")), false)
823
+ *
824
+ * @since 2.0.0
825
+ * @category predicates
826
+ */
827
+ const isInteger = n => normalize(n).scale <= 0;
828
+
829
+ /**
830
+ * Checks if a given `BigDecimal` is `0`.
831
+ *
832
+ * @param n - The `BigDecimal` to check.
833
+ *
834
+ * @example
835
+ * import { isZero, unsafeFromString } from "effect/BigDecimal"
836
+ *
837
+ * assert.deepStrictEqual(isZero(unsafeFromString("0")), true)
838
+ * assert.deepStrictEqual(isZero(unsafeFromString("1")), false)
839
+ *
840
+ * @since 2.0.0
841
+ * @category predicates
842
+ */
843
+ const isZero = n => n.value === bigint0;
844
+
845
+ /**
846
+ * Checks if a given `BigDecimal` is negative.
847
+ *
848
+ * @param n - The `BigDecimal` to check.
849
+ *
850
+ * @example
851
+ * import { isNegative, unsafeFromString } from "effect/BigDecimal"
852
+ *
853
+ * assert.deepStrictEqual(isNegative(unsafeFromString("-1")), true)
854
+ * assert.deepStrictEqual(isNegative(unsafeFromString("0")), false)
855
+ * assert.deepStrictEqual(isNegative(unsafeFromString("1")), false)
856
+ *
857
+ * @since 2.0.0
858
+ * @category predicates
859
+ */
860
+ const isNegative = n => n.value < bigint0;
861
+
862
+ /**
863
+ * Checks if a given `BigDecimal` is positive.
864
+ *
865
+ * @param n - The `BigDecimal` to check.
866
+ *
867
+ * @example
868
+ * import { isPositive, unsafeFromString } from "effect/BigDecimal"
869
+ *
870
+ * assert.deepStrictEqual(isPositive(unsafeFromString("-1")), false)
871
+ * assert.deepStrictEqual(isPositive(unsafeFromString("0")), false)
872
+ * assert.deepStrictEqual(isPositive(unsafeFromString("1")), true)
873
+ *
874
+ * @since 2.0.0
875
+ * @category predicates
876
+ */
877
+ const isPositive = n => n.value > bigint0;
878
+
879
+ exports.Equivalence = Equivalence;
880
+ exports.Order = Order;
881
+ exports.TypeId = TypeId;
882
+ exports.abs = abs;
883
+ exports.between = between;
884
+ exports.clamp = clamp;
885
+ exports.divide = divide;
886
+ exports.equals = equals;
887
+ exports.fromBigInt = fromBigInt;
888
+ exports.fromNumber = fromNumber;
889
+ exports.fromString = fromString;
890
+ exports.greaterThan = greaterThan;
891
+ exports.greaterThanOrEqualTo = greaterThanOrEqualTo;
892
+ exports.isBigDecimal = isBigDecimal;
893
+ exports.isInteger = isInteger;
894
+ exports.isNegative = isNegative;
895
+ exports.isPositive = isPositive;
896
+ exports.isZero = isZero;
897
+ exports.lessThan = lessThan;
898
+ exports.lessThanOrEqualTo = lessThanOrEqualTo;
899
+ exports.make = make;
900
+ exports.max = max;
901
+ exports.min = min;
902
+ exports.multiply = multiply;
903
+ exports.negate = negate;
904
+ exports.normalize = normalize;
905
+ exports.remainder = remainder;
906
+ exports.scale = scale;
907
+ exports.sign = sign;
908
+ exports.subtract = subtract;
909
+ exports.sum = sum;
910
+ exports.toString = toString;
911
+ exports.unsafeDivide = unsafeDivide;
912
+ exports.unsafeFromString = unsafeFromString;
913
+ exports.unsafeRemainder = unsafeRemainder;
914
+ exports.unsafeToNumber = unsafeToNumber;