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,869 @@
1
+ import { symbol as symbol$1 } from '../../Equal/dist/effect-Equal.esm.js';
2
+ import { make as make$2 } from '../../Equivalence/dist/effect-Equivalence.esm.js';
3
+ import { dual, pipe } from '../../Function/dist/effect-Function.esm.js';
4
+ import { symbol, combine, number as number$1, hash } from '../../Hash/dist/effect-Hash.esm.js';
5
+ import { NodeInspectSymbol } from '../../Inspectable/dist/effect-Inspectable.esm.js';
6
+ import { none, some, getOrThrowWith } from '../../Option/dist/effect-Option.esm.js';
7
+ import { make as make$1, number, bigint, lessThan as lessThan$1, lessThanOrEqualTo as lessThanOrEqualTo$1, greaterThan as greaterThan$1, greaterThanOrEqualTo as greaterThanOrEqualTo$1, between as between$1, clamp as clamp$1, min as min$1, max as max$1 } from '../../Order/dist/effect-Order.esm.js';
8
+ import { pipeArguments } from '../../Pipeable/dist/effect-Pipeable.esm.js';
9
+
10
+ /**
11
+ * This module provides utility functions and type class instances for working with the `BigDecimal` type in TypeScript.
12
+ * It includes functions for basic arithmetic operations, as well as type class instances for `Equivalence` and `Order`.
13
+ *
14
+ * A `BigDecimal` allows storing any real number to arbitrary precision; which avoids common floating point errors
15
+ * (such as 0.1 + 0.2 ≠ 0.3) at the cost of complexity.
16
+ *
17
+ * Internally, `BigDecimal` uses a `BigInt` object, paired with a 64-bit integer which determines the position of the
18
+ * decimal point. Therefore, the precision *is not* actually arbitrary, but limited to 2<sup>63</sup> decimal places.
19
+ *
20
+ * It is not recommended to convert a floating point number to a decimal directly, as the floating point representation
21
+ * may be unexpected.
22
+ *
23
+ * @since 2.0.0
24
+ */
25
+ const DEFAULT_PRECISION = 100;
26
+
27
+ /**
28
+ * @since 2.0.0
29
+ * @category symbols
30
+ */
31
+ const TypeId = /*#__PURE__*/Symbol.for("effect/BigDecimal");
32
+
33
+ /**
34
+ * @since 2.0.0
35
+ * @category symbol
36
+ */
37
+
38
+ /**
39
+ * @since 2.0.0
40
+ * @category models
41
+ */
42
+
43
+ const BigDecimalProto = {
44
+ [TypeId]: TypeId,
45
+ [symbol]() {
46
+ const normalized = normalize(this);
47
+ return pipe(hash(normalized.value), combine(number$1(normalized.scale)));
48
+ },
49
+ [symbol$1](that) {
50
+ return isBigDecimal(that) && equals(this, that);
51
+ },
52
+ toString() {
53
+ return toString(this);
54
+ },
55
+ toJSON() {
56
+ return toString(this);
57
+ },
58
+ [NodeInspectSymbol]() {
59
+ return toString(this);
60
+ },
61
+ pipe() {
62
+ return pipeArguments(this, arguments);
63
+ }
64
+ };
65
+
66
+ /**
67
+ * Checks if a given value is a `BigDecimal`.
68
+ *
69
+ * @param u - The value to check.
70
+ *
71
+ * @since 2.0.0
72
+ * @category guards
73
+ */
74
+ const isBigDecimal = u => typeof u === "object" && u !== null && TypeId in u;
75
+
76
+ /**
77
+ * Creates a `BigDecimal` from a `bigint` value and a scale.
78
+ *
79
+ * @param value - The `bigint` value to create a `BigDecimal` from.
80
+ * @param scale - The scale of the `BigDecimal`.
81
+ *
82
+ * @since 2.0.0
83
+ * @category constructors
84
+ */
85
+ const make = (value, scale) => {
86
+ const o = Object.create(BigDecimalProto);
87
+ o.value = value;
88
+ o.scale = scale;
89
+ return o;
90
+ };
91
+ const bigint0 = /*#__PURE__*/BigInt(0);
92
+ const bigint1 = /*#__PURE__*/BigInt(1);
93
+ const bigint10 = /*#__PURE__*/BigInt(10);
94
+ const zero = /*#__PURE__*/make(bigint0, 0);
95
+
96
+ /**
97
+ * Normalizes a given `BigDecimal` by removing trailing zeros.
98
+ *
99
+ * @param self - The `BigDecimal` to normalize.
100
+ *
101
+ * @example
102
+ * import { normalize, make, unsafeFromString } from "effect/BigDecimal"
103
+ *
104
+ * assert.deepStrictEqual(normalize(unsafeFromString("123.00000")), make(123n, 0))
105
+ * assert.deepStrictEqual(normalize(unsafeFromString("12300000")), make(123n, -5))
106
+ *
107
+ * @since 2.0.0
108
+ * @category scaling
109
+ */
110
+ const normalize = self => {
111
+ if (self.normalized === undefined) {
112
+ if (self.value === bigint0) {
113
+ self.normalized = zero;
114
+ } else {
115
+ const digits = `${self.value}`;
116
+ let trail = 0;
117
+ for (let i = digits.length - 1; i >= 0; i--) {
118
+ if (digits[i] === "0") {
119
+ trail++;
120
+ } else {
121
+ break;
122
+ }
123
+ }
124
+ if (trail === 0) {
125
+ self.normalized = self;
126
+ }
127
+ const value = BigInt(digits.substring(0, digits.length - trail));
128
+ const scale = self.scale - trail;
129
+ self.normalized = make(value, scale);
130
+ }
131
+ }
132
+ return self.normalized;
133
+ };
134
+
135
+ /**
136
+ * Scales a given `BigDecimal` to the specified scale.
137
+ *
138
+ * If the given scale is smaller than the current scale, the value will be rounded down to
139
+ * the nearest integer.
140
+ *
141
+ * @param self - The `BigDecimal` to scale.
142
+ * @param scale - The scale to scale to.
143
+ *
144
+ * @since 2.0.0
145
+ * @category scaling
146
+ */
147
+ const scale = (self, scale) => {
148
+ if (scale > self.scale) {
149
+ return make(self.value * bigint10 ** BigInt(scale - self.scale), scale);
150
+ }
151
+ if (scale < self.scale) {
152
+ return make(self.value / bigint10 ** BigInt(self.scale - scale), scale);
153
+ }
154
+ return self;
155
+ };
156
+
157
+ /**
158
+ * Provides an addition operation on `BigDecimal`s.
159
+ *
160
+ * @param self - The first operand.
161
+ * @param that - The second operand.
162
+ *
163
+ * @example
164
+ * import { sum, unsafeFromString } from "effect/BigDecimal"
165
+ *
166
+ * assert.deepStrictEqual(sum(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("5"))
167
+ *
168
+ * @since 2.0.0
169
+ * @category math
170
+ */
171
+ const sum = /*#__PURE__*/dual(2, (self, that) => {
172
+ if (that.value === bigint0) {
173
+ return self;
174
+ }
175
+ if (self.value === bigint0) {
176
+ return that;
177
+ }
178
+ if (self.scale > that.scale) {
179
+ return make(scale(that, self.scale).value + self.value, self.scale);
180
+ }
181
+ if (self.scale < that.scale) {
182
+ return make(scale(self, that.scale).value + that.value, that.scale);
183
+ }
184
+ return make(self.value + that.value, self.scale);
185
+ });
186
+
187
+ /**
188
+ * Provides a multiplication operation on `BigDecimal`s.
189
+ *
190
+ * @param self - The first operand.
191
+ * @param that - The second operand.
192
+ *
193
+ * @example
194
+ * import { multiply, unsafeFromString } from "effect/BigDecimal"
195
+ *
196
+ * assert.deepStrictEqual(multiply(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("6"))
197
+ *
198
+ * @since 2.0.0
199
+ * @category math
200
+ */
201
+ const multiply = /*#__PURE__*/dual(2, (self, that) => {
202
+ if (that.value === bigint0 || self.value === bigint0) {
203
+ return zero;
204
+ }
205
+ return make(self.value * that.value, self.scale + that.scale);
206
+ });
207
+
208
+ /**
209
+ * Provides a subtraction operation on `BigDecimal`s.
210
+ *
211
+ * @param self - The first operand.
212
+ * @param that - The second operand.
213
+ *
214
+ * @example
215
+ * import { subtract, unsafeFromString } from "effect/BigDecimal"
216
+ *
217
+ * assert.deepStrictEqual(subtract(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("-1"))
218
+ *
219
+ * @since 2.0.0
220
+ * @category math
221
+ */
222
+ const subtract = /*#__PURE__*/dual(2, (self, that) => {
223
+ if (that.value === bigint0) {
224
+ return self;
225
+ }
226
+ if (self.value === bigint0) {
227
+ return make(-that.value, that.scale);
228
+ }
229
+ if (self.scale > that.scale) {
230
+ return make(self.value - scale(that, self.scale).value, self.scale);
231
+ }
232
+ if (self.scale < that.scale) {
233
+ return make(scale(self, that.scale).value - that.value, that.scale);
234
+ }
235
+ return make(self.value - that.value, self.scale);
236
+ });
237
+
238
+ /**
239
+ * Internal function used for arbitrary precision division.
240
+ */
241
+ const divideWithPrecision = (num, den, scale, precision) => {
242
+ if (num === bigint0) {
243
+ return zero;
244
+ }
245
+ const numNegative = num < bigint0;
246
+ const denNegative = den < bigint0;
247
+ const negateResult = numNegative !== denNegative;
248
+ num = numNegative ? -num : num;
249
+ den = denNegative ? -den : den;
250
+
251
+ // Shift digits until numerator is larger than denominator (set scale appropriately).
252
+ while (num < den) {
253
+ num *= bigint10;
254
+ scale++;
255
+ }
256
+
257
+ // First division.
258
+ let quotient = num / den;
259
+ let remainder = num % den;
260
+ if (remainder === bigint0) {
261
+ // No remainder, return immediately.
262
+ return make(negateResult ? -quotient : quotient, scale);
263
+ }
264
+
265
+ // The quotient is guaranteed to be non-negative at this point. No need to consider sign.
266
+ let count = `${quotient}`.length;
267
+
268
+ // Shift the remainder by 1 decimal; The quotient will be 1 digit upon next division.
269
+ remainder *= bigint10;
270
+ while (remainder !== bigint0 && count < precision) {
271
+ const q = remainder / den;
272
+ const r = remainder % den;
273
+ quotient = quotient * bigint10 + q;
274
+ remainder = r * bigint10;
275
+ count++;
276
+ scale++;
277
+ }
278
+ if (remainder !== bigint0) {
279
+ // Round final number with remainder.
280
+ quotient += roundTerminal(remainder / den);
281
+ }
282
+ return make(negateResult ? -quotient : quotient, scale);
283
+ };
284
+
285
+ /**
286
+ * Internal function used for rounding.
287
+ *
288
+ * Returns 1 if the most significant digit is >= 5, otherwise 0.
289
+ *
290
+ * This is used after dividing a number by a power of ten and rounding the last digit.
291
+ */
292
+ const roundTerminal = n => {
293
+ if (n === bigint0) {
294
+ return bigint0;
295
+ }
296
+ const pos = n > bigint0 ? 0 : 1;
297
+ return Number(`${n}`[pos]) < 5 ? bigint0 : bigint1;
298
+ };
299
+
300
+ /**
301
+ * Provides a division operation on `BigDecimal`s.
302
+ *
303
+ * If the dividend is not a multiple of the divisor the result will be a `BigDecimal` value
304
+ * which represents the integer division rounded down to the nearest integer.
305
+ *
306
+ * If the divisor is `0`, the result will be `None`.
307
+ *
308
+ * @param self - The dividend operand.
309
+ * @param that - The divisor operand.
310
+ *
311
+ * @example
312
+ * import { divide, unsafeFromString } from "effect/BigDecimal"
313
+ * import { some, none } from "effect/Option"
314
+ *
315
+ * assert.deepStrictEqual(divide(unsafeFromString("6"), unsafeFromString("3")), some(unsafeFromString("2")))
316
+ * assert.deepStrictEqual(divide(unsafeFromString("6"), unsafeFromString("4")), some(unsafeFromString("1.5")))
317
+ * assert.deepStrictEqual(divide(unsafeFromString("6"), unsafeFromString("0")), none())
318
+ *
319
+ * @since 2.0.0
320
+ * @category math
321
+ */
322
+ const divide = /*#__PURE__*/dual(2, (self, that) => {
323
+ if (that.value === bigint0) {
324
+ return none();
325
+ }
326
+ if (self.value === bigint0) {
327
+ return some(zero);
328
+ }
329
+ const scale = self.scale - that.scale;
330
+ if (self.value === that.value) {
331
+ return some(make(bigint1, scale));
332
+ }
333
+ return some(divideWithPrecision(self.value, that.value, scale, DEFAULT_PRECISION));
334
+ });
335
+
336
+ /**
337
+ * Provides an unsafe division operation on `BigDecimal`s.
338
+ *
339
+ * If the dividend is not a multiple of the divisor the result will be a `BigDecimal` value
340
+ * which represents the integer division rounded down to the nearest integer.
341
+ *
342
+ * Throws a `RangeError` if the divisor is `0`.
343
+ *
344
+ * @param self - The dividend operand.
345
+ * @param that - The divisor operand.as
346
+ *
347
+ * @example
348
+ * import { unsafeDivide, unsafeFromString } from "effect/BigDecimal"
349
+ *
350
+ * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("3")), unsafeFromString("2"))
351
+ * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("4")), unsafeFromString("1.5"))
352
+ *
353
+ * @since 2.0.0
354
+ * @category math
355
+ */
356
+ const unsafeDivide = /*#__PURE__*/dual(2, (self, that) => {
357
+ if (that.value === bigint0) {
358
+ throw new RangeError("Division by zero");
359
+ }
360
+ if (self.value === bigint0) {
361
+ return zero;
362
+ }
363
+ const scale = self.scale - that.scale;
364
+ if (self.value === that.value) {
365
+ return make(bigint1, scale);
366
+ }
367
+ return divideWithPrecision(self.value, that.value, scale, DEFAULT_PRECISION);
368
+ });
369
+
370
+ /**
371
+ * @since 2.0.0
372
+ * @category instances
373
+ */
374
+ const Order = /*#__PURE__*/make$1((self, that) => {
375
+ const scmp = number(sign(self), sign(that));
376
+ if (scmp !== 0) {
377
+ return scmp;
378
+ }
379
+ if (self.scale > that.scale) {
380
+ return bigint(self.value, scale(that, self.scale).value);
381
+ }
382
+ if (self.scale < that.scale) {
383
+ return bigint(scale(self, that.scale).value, that.value);
384
+ }
385
+ return bigint(self.value, that.value);
386
+ });
387
+
388
+ /**
389
+ * Returns `true` if the first argument is less than the second, otherwise `false`.
390
+ *
391
+ * @param self - The first argument.
392
+ * @param that - The second argument.
393
+ *
394
+ * @example
395
+ * import { lessThan, unsafeFromString } from "effect/BigDecimal"
396
+ *
397
+ * assert.deepStrictEqual(lessThan(unsafeFromString("2"), unsafeFromString("3")), true)
398
+ * assert.deepStrictEqual(lessThan(unsafeFromString("3"), unsafeFromString("3")), false)
399
+ * assert.deepStrictEqual(lessThan(unsafeFromString("4"), unsafeFromString("3")), false)
400
+ *
401
+ * @since 2.0.0
402
+ * @category predicates
403
+ */
404
+ const lessThan = /*#__PURE__*/lessThan$1(Order);
405
+
406
+ /**
407
+ * Checks if a given `BigDecimal` is less than or equal to the provided one.
408
+ *
409
+ * @param self - The first `BigDecimal` to compare with.
410
+ * @param that - The second `BigDecimal` to compare with.
411
+ *
412
+ * @example
413
+ * import { lessThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
414
+ *
415
+ * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), true)
416
+ * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
417
+ * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), false)
418
+ *
419
+ * @since 2.0.0
420
+ * @category predicates
421
+ */
422
+ const lessThanOrEqualTo = /*#__PURE__*/lessThanOrEqualTo$1(Order);
423
+
424
+ /**
425
+ * Returns `true` if the first argument is greater than the second, otherwise `false`.
426
+ *
427
+ * @param self - The first argument.
428
+ * @param that - The second argument.
429
+ *
430
+ * @example
431
+ * import { greaterThan, unsafeFromString } from "effect/BigDecimal"
432
+ *
433
+ * assert.deepStrictEqual(greaterThan(unsafeFromString("2"), unsafeFromString("3")), false)
434
+ * assert.deepStrictEqual(greaterThan(unsafeFromString("3"), unsafeFromString("3")), false)
435
+ * assert.deepStrictEqual(greaterThan(unsafeFromString("4"), unsafeFromString("3")), true)
436
+ *
437
+ * @since 2.0.0
438
+ * @category predicates
439
+ */
440
+ const greaterThan = /*#__PURE__*/greaterThan$1(Order);
441
+
442
+ /**
443
+ * Checks if a given `BigDecimal` is greater than or equal to the provided one.
444
+ *
445
+ * @param self - The first `BigDecimal` to compare with.
446
+ * @param that - The second `BigDecimal` to compare with.
447
+ *
448
+ * @example
449
+ * import { greaterThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
450
+ *
451
+ * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), false)
452
+ * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
453
+ * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), true)
454
+ *
455
+ * @since 2.0.0
456
+ * @category predicates
457
+ */
458
+ const greaterThanOrEqualTo = /*#__PURE__*/greaterThanOrEqualTo$1(Order);
459
+
460
+ /**
461
+ * Checks if a `BigDecimal` is between a `minimum` and `maximum` value (inclusive).
462
+ *
463
+ * @param self - The `number` to check.
464
+ * @param minimum - The `minimum` value to check.
465
+ * @param maximum - The `maximum` value to check.
466
+ *
467
+ * @example
468
+ * import { between, unsafeFromString } from "effect/BigDecimal"
469
+ *
470
+ * assert.deepStrictEqual(between(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("3")), true)
471
+ * assert.deepStrictEqual(between(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("-1")), false)
472
+ * assert.deepStrictEqual(between(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("6")), false)
473
+ *
474
+ * @since 2.0.0
475
+ * @category predicates
476
+ */
477
+ const between = /*#__PURE__*/between$1(Order);
478
+
479
+ /**
480
+ * Restricts the given `BigDecimal` to be within the range specified by the `minimum` and `maximum` values.
481
+ *
482
+ * - If the `BigDecimal` is less than the `minimum` value, the function returns the `minimum` value.
483
+ * - If the `BigDecimal` is greater than the `maximum` value, the function returns the `maximum` value.
484
+ * - Otherwise, it returns the original `BigDecimal`.
485
+ *
486
+ * @param self - The `BigDecimal` to be clamped.
487
+ * @param minimum - The lower end of the range.
488
+ * @param maximum - The upper end of the range.
489
+ *
490
+ * @example
491
+ * import { clamp, unsafeFromString } from "effect/BigDecimal"
492
+ *
493
+ * assert.deepStrictEqual(clamp(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("3")), unsafeFromString("3"))
494
+ * assert.deepStrictEqual(clamp(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("-1")), unsafeFromString("0"))
495
+ * assert.deepStrictEqual(clamp(unsafeFromString("0"), unsafeFromString("5"))(unsafeFromString("6")), unsafeFromString("5"))
496
+ *
497
+ * @since 2.0.0
498
+ * @category math
499
+ */
500
+ const clamp = /*#__PURE__*/clamp$1(Order);
501
+
502
+ /**
503
+ * Returns the minimum between two `BigDecimal`s.
504
+ *
505
+ * @param self - The first `BigDecimal`.
506
+ * @param that - The second `BigDecimal`.
507
+ *
508
+ * @example
509
+ * import { min, unsafeFromString } from "effect/BigDecimal"
510
+ *
511
+ * assert.deepStrictEqual(min(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("2"))
512
+ *
513
+ * @since 2.0.0
514
+ * @category math
515
+ */
516
+ const min = /*#__PURE__*/min$1(Order);
517
+
518
+ /**
519
+ * Returns the maximum between two `BigDecimal`s.
520
+ *
521
+ * @param self - The first `BigDecimal`.
522
+ * @param that - The second `BigDecimal`.
523
+ *
524
+ * @example
525
+ * import { max, unsafeFromString } from "effect/BigDecimal"
526
+ *
527
+ * assert.deepStrictEqual(max(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("3"))
528
+ *
529
+ * @since 2.0.0
530
+ * @category math
531
+ */
532
+ const max = /*#__PURE__*/max$1(Order);
533
+
534
+ /**
535
+ * Determines the sign of a given `BigDecimal`.
536
+ *
537
+ * @param n - The `BigDecimal` to determine the sign of.
538
+ *
539
+ * @example
540
+ * import { sign, unsafeFromString } from "effect/BigDecimal"
541
+ *
542
+ * assert.deepStrictEqual(sign(unsafeFromString("-5")), -1)
543
+ * assert.deepStrictEqual(sign(unsafeFromString("0")), 0)
544
+ * assert.deepStrictEqual(sign(unsafeFromString("5")), 1)
545
+ *
546
+ * @since 2.0.0
547
+ * @category math
548
+ */
549
+ const sign = n => n.value === bigint0 ? 0 : n.value < bigint0 ? -1 : 1;
550
+
551
+ /**
552
+ * Determines the absolute value of a given `BigDecimal`.
553
+ *
554
+ * @param n - The `BigDecimal` to determine the absolute value of.
555
+ *
556
+ * @example
557
+ * import { abs, unsafeFromString } from "effect/BigDecimal"
558
+ *
559
+ * assert.deepStrictEqual(abs(unsafeFromString("-5")), unsafeFromString("5"))
560
+ * assert.deepStrictEqual(abs(unsafeFromString("0")), unsafeFromString("0"))
561
+ * assert.deepStrictEqual(abs(unsafeFromString("5")), unsafeFromString("5"))
562
+ *
563
+ * @since 2.0.0
564
+ * @category math
565
+ */
566
+ const abs = n => n.value < bigint0 ? make(-n.value, n.scale) : n;
567
+
568
+ /**
569
+ * Provides a negate operation on `BigDecimal`s.
570
+ *
571
+ * @param n - The `BigDecimal` to negate.
572
+ *
573
+ * @example
574
+ * import { negate, unsafeFromString } from "effect/BigDecimal"
575
+ *
576
+ * assert.deepStrictEqual(negate(unsafeFromString("3")), unsafeFromString("-3"))
577
+ * assert.deepStrictEqual(negate(unsafeFromString("-6")), unsafeFromString("6"))
578
+ *
579
+ * @since 2.0.0
580
+ * @category math
581
+ */
582
+ const negate = n => make(-n.value, n.scale);
583
+
584
+ /**
585
+ * Returns the remainder left over when one operand is divided by a second operand.
586
+ *
587
+ * If the divisor is `0`, the result will be `None`.
588
+ *
589
+ * @param self - The dividend.
590
+ * @param divisor - The divisor.
591
+ *
592
+ * @example
593
+ * import { remainder, unsafeFromString } from "effect/BigDecimal"
594
+ * import { some, none } from "effect/Option"
595
+ *
596
+ * assert.deepStrictEqual(remainder(unsafeFromString("2"), unsafeFromString("2")), some(unsafeFromString("0")))
597
+ * assert.deepStrictEqual(remainder(unsafeFromString("3"), unsafeFromString("2")), some(unsafeFromString("1")))
598
+ * assert.deepStrictEqual(remainder(unsafeFromString("-4"), unsafeFromString("2")), some(unsafeFromString("0")))
599
+ *
600
+ * @since 2.0.0
601
+ * @category math
602
+ */
603
+ const remainder = /*#__PURE__*/dual(2, (self, divisor) => {
604
+ if (divisor.value === bigint0) {
605
+ return none();
606
+ }
607
+ const max = Math.max(self.scale, divisor.scale);
608
+ return some(make(scale(self, max).value % scale(divisor, max).value, max));
609
+ });
610
+
611
+ /**
612
+ * Returns the remainder left over when one operand is divided by a second operand.
613
+ *
614
+ * Throws a `RangeError` if the divisor is `0`.
615
+ *
616
+ * @param self - The dividend.
617
+ * @param divisor - The divisor.
618
+ *
619
+ * @example
620
+ * import { unsafeRemainder, unsafeFromString } from "effect/BigDecimal"
621
+ *
622
+ * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("2"), unsafeFromString("2")), unsafeFromString("0"))
623
+ * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("3"), unsafeFromString("2")), unsafeFromString("1"))
624
+ * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("-4"), unsafeFromString("2")), unsafeFromString("0"))
625
+ *
626
+ * @since 2.0.0
627
+ * @category math
628
+ */
629
+ const unsafeRemainder = /*#__PURE__*/dual(2, (self, divisor) => {
630
+ if (divisor.value === bigint0) {
631
+ throw new RangeError("Division by zero");
632
+ }
633
+ const max = Math.max(self.scale, divisor.scale);
634
+ return make(scale(self, max).value % scale(divisor, max).value, max);
635
+ });
636
+
637
+ /**
638
+ * @category instances
639
+ * @since 2.0.0
640
+ */
641
+ const Equivalence = /*#__PURE__*/make$2((self, that) => {
642
+ if (self.scale > that.scale) {
643
+ return scale(that, self.scale).value === self.value;
644
+ }
645
+ if (self.scale < that.scale) {
646
+ return scale(self, that.scale).value === that.value;
647
+ }
648
+ return self.value === that.value;
649
+ });
650
+
651
+ /**
652
+ * Checks if two `BigDecimal`s are equal.
653
+ *
654
+ * @since 2.0.0
655
+ * @category predicates
656
+ */
657
+ const equals = /*#__PURE__*/dual(2, (self, that) => Equivalence(self, that));
658
+
659
+ /**
660
+ * Creates a `BigDecimal` from a `bigint` value.
661
+ *
662
+ * @param value - The `bigint` value to create a `BigDecimal` from.
663
+ *
664
+ * @since 2.0.0
665
+ * @category constructors
666
+ */
667
+ const fromBigInt = n => make(n, 0);
668
+
669
+ /**
670
+ * Creates a `BigDecimal` from a `number` value.
671
+ *
672
+ * It is not recommended to convert a floating point number to a decimal directly,
673
+ * as the floating point representation may be unexpected.
674
+ *
675
+ * @param value - The `number` value to create a `BigDecimal` from.
676
+ *
677
+ * @example
678
+ * import { fromNumber, make } from "effect/BigDecimal"
679
+ *
680
+ * assert.deepStrictEqual(fromNumber(123), make(123n, 0))
681
+ * assert.deepStrictEqual(fromNumber(123.456), make(123456n, 3))
682
+ *
683
+ * @since 2.0.0
684
+ * @category constructors
685
+ */
686
+ const fromNumber = n => {
687
+ const [lead, trail = ""] = `${n}`.split(".");
688
+ return make(BigInt(`${lead}${trail}`), trail.length);
689
+ };
690
+
691
+ /**
692
+ * Parses a numerical `string` into a `BigDecimal`.
693
+ *
694
+ * @param s - The `string` to parse.
695
+ *
696
+ * @example
697
+ * import { fromString, make } from "effect/BigDecimal"
698
+ * import { some, none } from "effect/Option"
699
+ *
700
+ * assert.deepStrictEqual(fromString("123"), some(make(123n, 0)))
701
+ * assert.deepStrictEqual(fromString("123.456"), some(make(123456n, 3)))
702
+ * assert.deepStrictEqual(fromString("123.abc"), none())
703
+ *
704
+ * @since 2.0.0
705
+ * @category constructors
706
+ */
707
+ const fromString = s => {
708
+ let digits;
709
+ let scale;
710
+ const dot = s.search(/\./);
711
+ if (dot !== -1) {
712
+ const lead = s.slice(0, dot);
713
+ const trail = s.slice(dot + 1);
714
+ digits = `${lead}${trail}`;
715
+ scale = trail.length;
716
+ } else {
717
+ digits = s;
718
+ scale = 0;
719
+ }
720
+ if (digits === "") {
721
+ // TODO: This mimics the BigInt constructor behavior. Should this be `Option.none()`?
722
+ return some(zero);
723
+ }
724
+ if (!/^(?:\+|-)?\d+$/.test(digits)) {
725
+ return none();
726
+ }
727
+ return some(make(BigInt(digits), scale));
728
+ };
729
+
730
+ /**
731
+ * Parses a numerical `string` into a `BigDecimal`.
732
+ *
733
+ * @param s - The `string` to parse.
734
+ *
735
+ * @example
736
+ * import { unsafeFromString, make } from "effect/BigDecimal"
737
+ *
738
+ * assert.deepStrictEqual(unsafeFromString("123"), make(123n, 0))
739
+ * assert.deepStrictEqual(unsafeFromString("123.456"), make(123456n, 3))
740
+ * assert.throws(() => unsafeFromString("123.abc"))
741
+ *
742
+ * @since 2.0.0
743
+ * @category constructors
744
+ */
745
+ const unsafeFromString = s => getOrThrowWith(fromString(s), () => new Error("Invalid numerical string"));
746
+
747
+ /**
748
+ * Formats a given `BigDecimal` as a `string`.
749
+ *
750
+ * @param normalized - The `BigDecimal` to format.
751
+ *
752
+ * @example
753
+ * import { toString, unsafeFromString } from "effect/BigDecimal"
754
+ *
755
+ * assert.deepStrictEqual(toString(unsafeFromString("-5")), "-5")
756
+ * assert.deepStrictEqual(toString(unsafeFromString("123.456")), "123.456")
757
+ * assert.deepStrictEqual(toString(unsafeFromString("-0.00000123")), "-0.00000123")
758
+ *
759
+ * @since 2.0.0
760
+ * @category conversions
761
+ */
762
+ const toString = n => {
763
+ const negative = n.value < bigint0;
764
+ const absolute = negative ? `${n.value}`.substring(1) : `${n.value}`;
765
+ let before;
766
+ let after;
767
+ if (n.scale >= absolute.length) {
768
+ before = "0";
769
+ after = "0".repeat(n.scale - absolute.length) + absolute;
770
+ } else {
771
+ const location = absolute.length - n.scale;
772
+ if (location > absolute.length) {
773
+ const zeros = location - absolute.length;
774
+ before = `${absolute}${"0".repeat(zeros)}`;
775
+ after = "";
776
+ } else {
777
+ after = absolute.slice(location);
778
+ before = absolute.slice(0, location);
779
+ }
780
+ }
781
+ const complete = after === "" ? before : `${before}.${after}`;
782
+ return negative ? `-${complete}` : complete;
783
+ };
784
+
785
+ /**
786
+ * Converts a `BigDecimal` to a `number`.
787
+ *
788
+ * This function will produce incorrect results if the `BigDecimal` exceeds the 64-bit range of a `number`.
789
+ *
790
+ * @param n - The `BigDecimal` to convert.
791
+ *
792
+ * @example
793
+ * import { unsafeToNumber, unsafeFromString } from "effect/BigDecimal"
794
+ *
795
+ * assert.deepStrictEqual(unsafeToNumber(unsafeFromString("123.456")), 123.456)
796
+ *
797
+ * @since 2.0.0
798
+ * @category conversions
799
+ */
800
+ const unsafeToNumber = n => Number(toString(n));
801
+
802
+ /**
803
+ * Checks if a given `BigDecimal` is an integer.
804
+ *
805
+ * @param n - The `BigDecimal` to check.
806
+ *
807
+ * @example
808
+ * import { isInteger, unsafeFromString } from "effect/BigDecimal"
809
+ *
810
+ * assert.deepStrictEqual(isInteger(unsafeFromString("0")), true)
811
+ * assert.deepStrictEqual(isInteger(unsafeFromString("1")), true)
812
+ * assert.deepStrictEqual(isInteger(unsafeFromString("1.1")), false)
813
+ *
814
+ * @since 2.0.0
815
+ * @category predicates
816
+ */
817
+ const isInteger = n => normalize(n).scale <= 0;
818
+
819
+ /**
820
+ * Checks if a given `BigDecimal` is `0`.
821
+ *
822
+ * @param n - The `BigDecimal` to check.
823
+ *
824
+ * @example
825
+ * import { isZero, unsafeFromString } from "effect/BigDecimal"
826
+ *
827
+ * assert.deepStrictEqual(isZero(unsafeFromString("0")), true)
828
+ * assert.deepStrictEqual(isZero(unsafeFromString("1")), false)
829
+ *
830
+ * @since 2.0.0
831
+ * @category predicates
832
+ */
833
+ const isZero = n => n.value === bigint0;
834
+
835
+ /**
836
+ * Checks if a given `BigDecimal` is negative.
837
+ *
838
+ * @param n - The `BigDecimal` to check.
839
+ *
840
+ * @example
841
+ * import { isNegative, unsafeFromString } from "effect/BigDecimal"
842
+ *
843
+ * assert.deepStrictEqual(isNegative(unsafeFromString("-1")), true)
844
+ * assert.deepStrictEqual(isNegative(unsafeFromString("0")), false)
845
+ * assert.deepStrictEqual(isNegative(unsafeFromString("1")), false)
846
+ *
847
+ * @since 2.0.0
848
+ * @category predicates
849
+ */
850
+ const isNegative = n => n.value < bigint0;
851
+
852
+ /**
853
+ * Checks if a given `BigDecimal` is positive.
854
+ *
855
+ * @param n - The `BigDecimal` to check.
856
+ *
857
+ * @example
858
+ * import { isPositive, unsafeFromString } from "effect/BigDecimal"
859
+ *
860
+ * assert.deepStrictEqual(isPositive(unsafeFromString("-1")), false)
861
+ * assert.deepStrictEqual(isPositive(unsafeFromString("0")), false)
862
+ * assert.deepStrictEqual(isPositive(unsafeFromString("1")), true)
863
+ *
864
+ * @since 2.0.0
865
+ * @category predicates
866
+ */
867
+ const isPositive = n => n.value > bigint0;
868
+
869
+ export { Equivalence, Order, TypeId, abs, between, clamp, divide, equals, fromBigInt, fromNumber, fromString, greaterThan, greaterThanOrEqualTo, isBigDecimal, isInteger, isNegative, isPositive, isZero, lessThan, lessThanOrEqualTo, make, max, min, multiply, negate, normalize, remainder, scale, sign, subtract, sum, toString, unsafeDivide, unsafeFromString, unsafeRemainder, unsafeToNumber };