effect 3.10.18 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/dist/cjs/Array.js +206 -0
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +181 -24
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/BigInt.js +54 -0
  6. package/dist/cjs/BigInt.js.map +1 -1
  7. package/dist/cjs/Boolean.js +24 -0
  8. package/dist/cjs/Boolean.js.map +1 -1
  9. package/dist/cjs/Brand.js +4 -0
  10. package/dist/cjs/Brand.js.map +1 -1
  11. package/dist/cjs/Channel.js +44 -4
  12. package/dist/cjs/Channel.js.map +1 -1
  13. package/dist/cjs/Chunk.js +8 -0
  14. package/dist/cjs/Chunk.js.map +1 -1
  15. package/dist/cjs/Config.js +10 -1
  16. package/dist/cjs/Config.js.map +1 -1
  17. package/dist/cjs/Context.js +50 -1
  18. package/dist/cjs/Context.js.map +1 -1
  19. package/dist/cjs/Cron.js +81 -67
  20. package/dist/cjs/Cron.js.map +1 -1
  21. package/dist/cjs/Data.js +14 -0
  22. package/dist/cjs/Data.js.map +1 -1
  23. package/dist/cjs/DateTime.js +178 -664
  24. package/dist/cjs/DateTime.js.map +1 -1
  25. package/dist/cjs/Duration.js +2 -0
  26. package/dist/cjs/Duration.js.map +1 -1
  27. package/dist/cjs/Effect.js +296 -4
  28. package/dist/cjs/Effect.js.map +1 -1
  29. package/dist/cjs/Either.js +38 -2
  30. package/dist/cjs/Either.js.map +1 -1
  31. package/dist/cjs/FiberHandle.js +6 -0
  32. package/dist/cjs/FiberHandle.js.map +1 -1
  33. package/dist/cjs/FiberMap.js +6 -0
  34. package/dist/cjs/FiberMap.js.map +1 -1
  35. package/dist/cjs/FiberSet.js +6 -0
  36. package/dist/cjs/FiberSet.js.map +1 -1
  37. package/dist/cjs/Function.js +34 -0
  38. package/dist/cjs/Function.js.map +1 -1
  39. package/dist/cjs/GlobalValue.js +2 -0
  40. package/dist/cjs/GlobalValue.js.map +1 -1
  41. package/dist/cjs/HashMap.js.map +1 -1
  42. package/dist/cjs/Inspectable.js +8 -4
  43. package/dist/cjs/Inspectable.js.map +1 -1
  44. package/dist/cjs/Iterable.js +18 -0
  45. package/dist/cjs/Iterable.js.map +1 -1
  46. package/dist/cjs/JSONSchema.js.map +1 -1
  47. package/dist/cjs/List.js +4 -0
  48. package/dist/cjs/List.js.map +1 -1
  49. package/dist/cjs/Logger.js +26 -0
  50. package/dist/cjs/Logger.js.map +1 -1
  51. package/dist/cjs/Mailbox.js +2 -0
  52. package/dist/cjs/Mailbox.js.map +1 -1
  53. package/dist/cjs/ManagedRuntime.js +2 -0
  54. package/dist/cjs/ManagedRuntime.js.map +1 -1
  55. package/dist/cjs/Metric.js +10 -0
  56. package/dist/cjs/Metric.js.map +1 -1
  57. package/dist/cjs/Micro.js +1104 -1069
  58. package/dist/cjs/Micro.js.map +1 -1
  59. package/dist/cjs/Number.js +44 -0
  60. package/dist/cjs/Number.js.map +1 -1
  61. package/dist/cjs/Option.js +70 -0
  62. package/dist/cjs/Option.js.map +1 -1
  63. package/dist/cjs/Order.js +2 -0
  64. package/dist/cjs/Order.js.map +1 -1
  65. package/dist/cjs/Ordering.js +4 -0
  66. package/dist/cjs/Ordering.js.map +1 -1
  67. package/dist/cjs/Predicate.js +68 -0
  68. package/dist/cjs/Predicate.js.map +1 -1
  69. package/dist/cjs/Random.js +4 -0
  70. package/dist/cjs/Random.js.map +1 -1
  71. package/dist/cjs/RateLimiter.js +4 -0
  72. package/dist/cjs/RateLimiter.js.map +1 -1
  73. package/dist/cjs/RcMap.js +2 -0
  74. package/dist/cjs/RcMap.js.map +1 -1
  75. package/dist/cjs/RcRef.js +2 -0
  76. package/dist/cjs/RcRef.js.map +1 -1
  77. package/dist/cjs/Record.js +56 -0
  78. package/dist/cjs/Record.js.map +1 -1
  79. package/dist/cjs/Redacted.js +8 -0
  80. package/dist/cjs/Redacted.js.map +1 -1
  81. package/dist/cjs/RegExp.js +4 -0
  82. package/dist/cjs/RegExp.js.map +1 -1
  83. package/dist/cjs/Request.js +4 -0
  84. package/dist/cjs/Request.js.map +1 -1
  85. package/dist/cjs/RequestResolver.js +2 -0
  86. package/dist/cjs/RequestResolver.js.map +1 -1
  87. package/dist/cjs/Runtime.js +6 -0
  88. package/dist/cjs/Runtime.js.map +1 -1
  89. package/dist/cjs/STM.js.map +1 -1
  90. package/dist/cjs/Schema.js +91 -8
  91. package/dist/cjs/Schema.js.map +1 -1
  92. package/dist/cjs/Sink.js +9 -1
  93. package/dist/cjs/Sink.js.map +1 -1
  94. package/dist/cjs/Stream.js +179 -7
  95. package/dist/cjs/Stream.js.map +1 -1
  96. package/dist/cjs/String.js +62 -0
  97. package/dist/cjs/String.js.map +1 -1
  98. package/dist/cjs/Struct.js +12 -0
  99. package/dist/cjs/Struct.js.map +1 -1
  100. package/dist/cjs/Symbol.js +2 -0
  101. package/dist/cjs/Symbol.js.map +1 -1
  102. package/dist/cjs/Trie.js +56 -0
  103. package/dist/cjs/Trie.js.map +1 -1
  104. package/dist/cjs/Tuple.js +18 -0
  105. package/dist/cjs/Tuple.js.map +1 -1
  106. package/dist/cjs/Utils.js +7 -1
  107. package/dist/cjs/Utils.js.map +1 -1
  108. package/dist/cjs/internal/channel/channelExecutor.js +5 -9
  109. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  110. package/dist/cjs/internal/channel.js +156 -130
  111. package/dist/cjs/internal/channel.js.map +1 -1
  112. package/dist/cjs/internal/config.js +13 -4
  113. package/dist/cjs/internal/config.js.map +1 -1
  114. package/dist/cjs/internal/context.js +46 -3
  115. package/dist/cjs/internal/context.js.map +1 -1
  116. package/dist/cjs/internal/dateTime.js +747 -0
  117. package/dist/cjs/internal/dateTime.js.map +1 -0
  118. package/dist/cjs/internal/fiberRuntime.js +34 -11
  119. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  120. package/dist/cjs/internal/groupBy.js +9 -3
  121. package/dist/cjs/internal/groupBy.js.map +1 -1
  122. package/dist/cjs/internal/layer.js +1 -1
  123. package/dist/cjs/internal/layer.js.map +1 -1
  124. package/dist/cjs/internal/mailbox.js +1 -1
  125. package/dist/cjs/internal/mailbox.js.map +1 -1
  126. package/dist/cjs/internal/sink.js +25 -21
  127. package/dist/cjs/internal/sink.js.map +1 -1
  128. package/dist/cjs/internal/stream.js +70 -71
  129. package/dist/cjs/internal/stream.js.map +1 -1
  130. package/dist/cjs/internal/version.js +1 -1
  131. package/dist/cjs/internal/version.js.map +1 -1
  132. package/dist/dts/Array.d.ts +534 -0
  133. package/dist/dts/Array.d.ts.map +1 -1
  134. package/dist/dts/BigDecimal.d.ts +172 -1
  135. package/dist/dts/BigDecimal.d.ts.map +1 -1
  136. package/dist/dts/BigInt.d.ts +114 -0
  137. package/dist/dts/BigInt.d.ts.map +1 -1
  138. package/dist/dts/Boolean.d.ts +56 -0
  139. package/dist/dts/Boolean.d.ts.map +1 -1
  140. package/dist/dts/Brand.d.ts +6 -0
  141. package/dist/dts/Brand.d.ts.map +1 -1
  142. package/dist/dts/Channel.d.ts +66 -5
  143. package/dist/dts/Channel.d.ts.map +1 -1
  144. package/dist/dts/Chunk.d.ts +30 -0
  145. package/dist/dts/Chunk.d.ts.map +1 -1
  146. package/dist/dts/Config.d.ts +25 -1
  147. package/dist/dts/Config.d.ts.map +1 -1
  148. package/dist/dts/Context.d.ts +155 -0
  149. package/dist/dts/Context.d.ts.map +1 -1
  150. package/dist/dts/Cron.d.ts +21 -6
  151. package/dist/dts/Cron.d.ts.map +1 -1
  152. package/dist/dts/Data.d.ts +26 -0
  153. package/dist/dts/Data.d.ts.map +1 -1
  154. package/dist/dts/DateTime.d.ts +192 -49
  155. package/dist/dts/DateTime.d.ts.map +1 -1
  156. package/dist/dts/Duration.d.ts +2 -0
  157. package/dist/dts/Duration.d.ts.map +1 -1
  158. package/dist/dts/Effect.d.ts +658 -1
  159. package/dist/dts/Effect.d.ts.map +1 -1
  160. package/dist/dts/Either.d.ts +84 -2
  161. package/dist/dts/Either.d.ts.map +1 -1
  162. package/dist/dts/FiberHandle.d.ts +6 -0
  163. package/dist/dts/FiberHandle.d.ts.map +1 -1
  164. package/dist/dts/FiberMap.d.ts +6 -0
  165. package/dist/dts/FiberMap.d.ts.map +1 -1
  166. package/dist/dts/FiberSet.d.ts +6 -0
  167. package/dist/dts/FiberSet.d.ts.map +1 -1
  168. package/dist/dts/Function.d.ts +50 -0
  169. package/dist/dts/Function.d.ts.map +1 -1
  170. package/dist/dts/GlobalValue.d.ts +2 -0
  171. package/dist/dts/GlobalValue.d.ts.map +1 -1
  172. package/dist/dts/HashMap.d.ts +6 -0
  173. package/dist/dts/HashMap.d.ts.map +1 -1
  174. package/dist/dts/Inspectable.d.ts.map +1 -1
  175. package/dist/dts/Iterable.d.ts +26 -0
  176. package/dist/dts/Iterable.d.ts.map +1 -1
  177. package/dist/dts/JSONSchema.d.ts +1 -0
  178. package/dist/dts/JSONSchema.d.ts.map +1 -1
  179. package/dist/dts/List.d.ts +20 -0
  180. package/dist/dts/List.d.ts.map +1 -1
  181. package/dist/dts/Logger.d.ts +34 -0
  182. package/dist/dts/Logger.d.ts.map +1 -1
  183. package/dist/dts/Mailbox.d.ts +2 -0
  184. package/dist/dts/Mailbox.d.ts.map +1 -1
  185. package/dist/dts/ManagedRuntime.d.ts +2 -0
  186. package/dist/dts/ManagedRuntime.d.ts.map +1 -1
  187. package/dist/dts/Metric.d.ts +18 -0
  188. package/dist/dts/Metric.d.ts.map +1 -1
  189. package/dist/dts/Micro.d.ts +880 -863
  190. package/dist/dts/Micro.d.ts.map +1 -1
  191. package/dist/dts/Number.d.ts +104 -0
  192. package/dist/dts/Number.d.ts.map +1 -1
  193. package/dist/dts/Option.d.ts +142 -0
  194. package/dist/dts/Option.d.ts.map +1 -1
  195. package/dist/dts/Order.d.ts +2 -0
  196. package/dist/dts/Order.d.ts.map +1 -1
  197. package/dist/dts/Ordering.d.ts +8 -0
  198. package/dist/dts/Ordering.d.ts.map +1 -1
  199. package/dist/dts/Predicate.d.ts +104 -0
  200. package/dist/dts/Predicate.d.ts.map +1 -1
  201. package/dist/dts/Random.d.ts +4 -0
  202. package/dist/dts/Random.d.ts.map +1 -1
  203. package/dist/dts/RateLimiter.d.ts +4 -0
  204. package/dist/dts/RateLimiter.d.ts.map +1 -1
  205. package/dist/dts/RcMap.d.ts +6 -0
  206. package/dist/dts/RcMap.d.ts.map +1 -1
  207. package/dist/dts/RcRef.d.ts +2 -0
  208. package/dist/dts/RcRef.d.ts.map +1 -1
  209. package/dist/dts/Record.d.ts +136 -0
  210. package/dist/dts/Record.d.ts.map +1 -1
  211. package/dist/dts/Redacted.d.ts +8 -0
  212. package/dist/dts/Redacted.d.ts.map +1 -1
  213. package/dist/dts/RegExp.d.ts +4 -0
  214. package/dist/dts/RegExp.d.ts.map +1 -1
  215. package/dist/dts/Request.d.ts +4 -0
  216. package/dist/dts/Request.d.ts.map +1 -1
  217. package/dist/dts/RequestResolver.d.ts +6 -0
  218. package/dist/dts/RequestResolver.d.ts.map +1 -1
  219. package/dist/dts/Runtime.d.ts +18 -0
  220. package/dist/dts/Runtime.d.ts.map +1 -1
  221. package/dist/dts/STM.d.ts +2 -0
  222. package/dist/dts/STM.d.ts.map +1 -1
  223. package/dist/dts/Schema.d.ts +90 -0
  224. package/dist/dts/Schema.d.ts.map +1 -1
  225. package/dist/dts/Sink.d.ts +8 -0
  226. package/dist/dts/Sink.d.ts.map +1 -1
  227. package/dist/dts/Stream.d.ts +394 -32
  228. package/dist/dts/Stream.d.ts.map +1 -1
  229. package/dist/dts/String.d.ts +94 -0
  230. package/dist/dts/String.d.ts.map +1 -1
  231. package/dist/dts/Struct.d.ts +24 -0
  232. package/dist/dts/Struct.d.ts.map +1 -1
  233. package/dist/dts/Symbol.d.ts +2 -0
  234. package/dist/dts/Symbol.d.ts.map +1 -1
  235. package/dist/dts/Trie.d.ts +132 -0
  236. package/dist/dts/Trie.d.ts.map +1 -1
  237. package/dist/dts/Tuple.d.ts +42 -0
  238. package/dist/dts/Tuple.d.ts.map +1 -1
  239. package/dist/dts/Types.d.ts +24 -0
  240. package/dist/dts/Types.d.ts.map +1 -1
  241. package/dist/dts/Utils.d.ts +4 -0
  242. package/dist/dts/Utils.d.ts.map +1 -1
  243. package/dist/dts/internal/context.d.ts +1 -1
  244. package/dist/dts/internal/context.d.ts.map +1 -1
  245. package/dist/dts/internal/dateTime.d.ts +2 -0
  246. package/dist/dts/internal/dateTime.d.ts.map +1 -0
  247. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  248. package/dist/dts/internal/stream.d.ts.map +1 -1
  249. package/dist/esm/Array.js +208 -0
  250. package/dist/esm/Array.js.map +1 -1
  251. package/dist/esm/BigDecimal.js +175 -20
  252. package/dist/esm/BigDecimal.js.map +1 -1
  253. package/dist/esm/BigInt.js +54 -0
  254. package/dist/esm/BigInt.js.map +1 -1
  255. package/dist/esm/Boolean.js +24 -0
  256. package/dist/esm/Boolean.js.map +1 -1
  257. package/dist/esm/Brand.js +4 -0
  258. package/dist/esm/Brand.js.map +1 -1
  259. package/dist/esm/Channel.js +42 -2
  260. package/dist/esm/Channel.js.map +1 -1
  261. package/dist/esm/Chunk.js +8 -0
  262. package/dist/esm/Chunk.js.map +1 -1
  263. package/dist/esm/Config.js +9 -0
  264. package/dist/esm/Config.js.map +1 -1
  265. package/dist/esm/Context.js +49 -0
  266. package/dist/esm/Context.js.map +1 -1
  267. package/dist/esm/Cron.js +81 -67
  268. package/dist/esm/Cron.js.map +1 -1
  269. package/dist/esm/Data.js +16 -0
  270. package/dist/esm/Data.js.map +1 -1
  271. package/dist/esm/DateTime.js +176 -627
  272. package/dist/esm/DateTime.js.map +1 -1
  273. package/dist/esm/Duration.js +2 -0
  274. package/dist/esm/Duration.js.map +1 -1
  275. package/dist/esm/Effect.js +297 -0
  276. package/dist/esm/Effect.js.map +1 -1
  277. package/dist/esm/Either.js +40 -2
  278. package/dist/esm/Either.js.map +1 -1
  279. package/dist/esm/FiberHandle.js +6 -0
  280. package/dist/esm/FiberHandle.js.map +1 -1
  281. package/dist/esm/FiberMap.js +6 -0
  282. package/dist/esm/FiberMap.js.map +1 -1
  283. package/dist/esm/FiberSet.js +6 -0
  284. package/dist/esm/FiberSet.js.map +1 -1
  285. package/dist/esm/Function.js +34 -0
  286. package/dist/esm/Function.js.map +1 -1
  287. package/dist/esm/GlobalValue.js +2 -0
  288. package/dist/esm/GlobalValue.js.map +1 -1
  289. package/dist/esm/HashMap.js.map +1 -1
  290. package/dist/esm/Inspectable.js +8 -4
  291. package/dist/esm/Inspectable.js.map +1 -1
  292. package/dist/esm/Iterable.js +18 -0
  293. package/dist/esm/Iterable.js.map +1 -1
  294. package/dist/esm/JSONSchema.js.map +1 -1
  295. package/dist/esm/List.js +4 -0
  296. package/dist/esm/List.js.map +1 -1
  297. package/dist/esm/Logger.js +26 -0
  298. package/dist/esm/Logger.js.map +1 -1
  299. package/dist/esm/Mailbox.js +2 -0
  300. package/dist/esm/Mailbox.js.map +1 -1
  301. package/dist/esm/ManagedRuntime.js +2 -0
  302. package/dist/esm/ManagedRuntime.js.map +1 -1
  303. package/dist/esm/Metric.js +10 -0
  304. package/dist/esm/Metric.js.map +1 -1
  305. package/dist/esm/Micro.js +1077 -1037
  306. package/dist/esm/Micro.js.map +1 -1
  307. package/dist/esm/Number.js +44 -0
  308. package/dist/esm/Number.js.map +1 -1
  309. package/dist/esm/Option.js +72 -0
  310. package/dist/esm/Option.js.map +1 -1
  311. package/dist/esm/Order.js +2 -0
  312. package/dist/esm/Order.js.map +1 -1
  313. package/dist/esm/Ordering.js +4 -0
  314. package/dist/esm/Ordering.js.map +1 -1
  315. package/dist/esm/Predicate.js +68 -0
  316. package/dist/esm/Predicate.js.map +1 -1
  317. package/dist/esm/Random.js +4 -0
  318. package/dist/esm/Random.js.map +1 -1
  319. package/dist/esm/RateLimiter.js +4 -0
  320. package/dist/esm/RateLimiter.js.map +1 -1
  321. package/dist/esm/RcMap.js +2 -0
  322. package/dist/esm/RcMap.js.map +1 -1
  323. package/dist/esm/RcRef.js +2 -0
  324. package/dist/esm/RcRef.js.map +1 -1
  325. package/dist/esm/Record.js +56 -0
  326. package/dist/esm/Record.js.map +1 -1
  327. package/dist/esm/Redacted.js +8 -0
  328. package/dist/esm/Redacted.js.map +1 -1
  329. package/dist/esm/RegExp.js +4 -0
  330. package/dist/esm/RegExp.js.map +1 -1
  331. package/dist/esm/Request.js +4 -0
  332. package/dist/esm/Request.js.map +1 -1
  333. package/dist/esm/RequestResolver.js +2 -0
  334. package/dist/esm/RequestResolver.js.map +1 -1
  335. package/dist/esm/Runtime.js +6 -0
  336. package/dist/esm/Runtime.js.map +1 -1
  337. package/dist/esm/STM.js.map +1 -1
  338. package/dist/esm/Schema.js +88 -0
  339. package/dist/esm/Schema.js.map +1 -1
  340. package/dist/esm/Sink.js +8 -0
  341. package/dist/esm/Sink.js.map +1 -1
  342. package/dist/esm/Stream.js +183 -5
  343. package/dist/esm/Stream.js.map +1 -1
  344. package/dist/esm/String.js +62 -0
  345. package/dist/esm/String.js.map +1 -1
  346. package/dist/esm/Struct.js +12 -0
  347. package/dist/esm/Struct.js.map +1 -1
  348. package/dist/esm/Symbol.js +2 -0
  349. package/dist/esm/Symbol.js.map +1 -1
  350. package/dist/esm/Trie.js +56 -0
  351. package/dist/esm/Trie.js.map +1 -1
  352. package/dist/esm/Tuple.js +22 -0
  353. package/dist/esm/Tuple.js.map +1 -1
  354. package/dist/esm/Utils.js +5 -0
  355. package/dist/esm/Utils.js.map +1 -1
  356. package/dist/esm/internal/channel/channelExecutor.js +5 -7
  357. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  358. package/dist/esm/internal/channel.js +152 -129
  359. package/dist/esm/internal/channel.js.map +1 -1
  360. package/dist/esm/internal/config.js +11 -3
  361. package/dist/esm/internal/config.js.map +1 -1
  362. package/dist/esm/internal/context.js +42 -2
  363. package/dist/esm/internal/context.js.map +1 -1
  364. package/dist/esm/internal/dateTime.js +704 -0
  365. package/dist/esm/internal/dateTime.js.map +1 -0
  366. package/dist/esm/internal/fiberRuntime.js +31 -9
  367. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  368. package/dist/esm/internal/groupBy.js +9 -3
  369. package/dist/esm/internal/groupBy.js.map +1 -1
  370. package/dist/esm/internal/layer.js +1 -1
  371. package/dist/esm/internal/layer.js.map +1 -1
  372. package/dist/esm/internal/mailbox.js +1 -1
  373. package/dist/esm/internal/mailbox.js.map +1 -1
  374. package/dist/esm/internal/sink.js +23 -20
  375. package/dist/esm/internal/sink.js.map +1 -1
  376. package/dist/esm/internal/stream.js +66 -69
  377. package/dist/esm/internal/stream.js.map +1 -1
  378. package/dist/esm/internal/version.js +1 -1
  379. package/dist/esm/internal/version.js.map +1 -1
  380. package/package.json +1 -1
  381. package/src/Array.ts +534 -0
  382. package/src/BigDecimal.ts +247 -21
  383. package/src/BigInt.ts +114 -0
  384. package/src/Boolean.ts +56 -0
  385. package/src/Brand.ts +6 -0
  386. package/src/Channel.ts +81 -5
  387. package/src/Chunk.ts +32 -0
  388. package/src/Config.ts +26 -1
  389. package/src/Context.ts +163 -0
  390. package/src/Cron.ts +91 -68
  391. package/src/Data.ts +26 -0
  392. package/src/DateTime.ts +307 -757
  393. package/src/Duration.ts +2 -0
  394. package/src/Effect.ts +910 -1
  395. package/src/Either.ts +84 -2
  396. package/src/FiberHandle.ts +6 -0
  397. package/src/FiberMap.ts +6 -0
  398. package/src/FiberSet.ts +6 -0
  399. package/src/Function.ts +50 -0
  400. package/src/GlobalValue.ts +2 -0
  401. package/src/HashMap.ts +6 -0
  402. package/src/Inspectable.ts +11 -7
  403. package/src/Iterable.ts +26 -0
  404. package/src/JSONSchema.ts +1 -0
  405. package/src/List.ts +24 -0
  406. package/src/Logger.ts +34 -0
  407. package/src/Mailbox.ts +2 -0
  408. package/src/ManagedRuntime.ts +2 -0
  409. package/src/Metric.ts +18 -0
  410. package/src/Micro.ts +2007 -1745
  411. package/src/Number.ts +104 -0
  412. package/src/Option.ts +142 -0
  413. package/src/Order.ts +2 -0
  414. package/src/Ordering.ts +8 -0
  415. package/src/Predicate.ts +104 -0
  416. package/src/Random.ts +4 -0
  417. package/src/RateLimiter.ts +4 -0
  418. package/src/RcMap.ts +6 -0
  419. package/src/RcRef.ts +2 -0
  420. package/src/Record.ts +136 -0
  421. package/src/Redacted.ts +8 -0
  422. package/src/RegExp.ts +4 -0
  423. package/src/Request.ts +4 -0
  424. package/src/RequestResolver.ts +6 -0
  425. package/src/Runtime.ts +18 -0
  426. package/src/STM.ts +2 -0
  427. package/src/Schema.ts +124 -0
  428. package/src/Sink.ts +11 -0
  429. package/src/Stream.ts +399 -44
  430. package/src/String.ts +94 -0
  431. package/src/Struct.ts +24 -0
  432. package/src/Symbol.ts +2 -0
  433. package/src/Trie.ts +132 -0
  434. package/src/Tuple.ts +42 -0
  435. package/src/Types.ts +24 -0
  436. package/src/Utils.ts +8 -0
  437. package/src/internal/channel/channelExecutor.ts +37 -33
  438. package/src/internal/channel.ts +504 -467
  439. package/src/internal/config.ts +18 -6
  440. package/src/internal/context.ts +56 -4
  441. package/src/internal/dateTime.ts +1126 -0
  442. package/src/internal/fiberRuntime.ts +35 -16
  443. package/src/internal/groupBy.ts +13 -22
  444. package/src/internal/layer.ts +5 -8
  445. package/src/internal/mailbox.ts +6 -4
  446. package/src/internal/sink.ts +55 -35
  447. package/src/internal/stream.ts +299 -299
  448. package/src/internal/version.ts +1 -1
package/src/BigDecimal.ts CHANGED
@@ -26,6 +26,7 @@ import { type Pipeable, pipeArguments } from "./Pipeable.js"
26
26
  import { hasProperty } from "./Predicate.js"
27
27
 
28
28
  const DEFAULT_PRECISION = 100
29
+ const FINITE_INT_REGEX = /^[+-]?\d+$/
29
30
 
30
31
  /**
31
32
  * @since 2.0.0
@@ -134,10 +135,12 @@ const zero = unsafeMakeNormalized(bigint0, 0)
134
135
  * @param self - The `BigDecimal` to normalize.
135
136
  *
136
137
  * @example
138
+ * ```ts
137
139
  * import { normalize, make, unsafeFromString } from "effect/BigDecimal"
138
140
  *
139
141
  * assert.deepStrictEqual(normalize(unsafeFromString("123.00000")), normalize(make(123n, 0)))
140
142
  * assert.deepStrictEqual(normalize(unsafeFromString("12300000")), normalize(make(123n, -5)))
143
+ * ```
141
144
  *
142
145
  * @since 2.0.0
143
146
  * @category scaling
@@ -229,9 +232,11 @@ export const scale: {
229
232
  * @param that - The second operand.
230
233
  *
231
234
  * @example
235
+ * ```ts
232
236
  * import { sum, unsafeFromString } from "effect/BigDecimal"
233
237
  *
234
238
  * assert.deepStrictEqual(sum(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("5"))
239
+ * ```
235
240
  *
236
241
  * @since 2.0.0
237
242
  * @category math
@@ -244,9 +249,11 @@ export const sum: {
244
249
  * @param that - The second operand.
245
250
  *
246
251
  * @example
252
+ * ```ts
247
253
  * import { sum, unsafeFromString } from "effect/BigDecimal"
248
254
  *
249
255
  * assert.deepStrictEqual(sum(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("5"))
256
+ * ```
250
257
  *
251
258
  * @since 2.0.0
252
259
  * @category math
@@ -259,9 +266,11 @@ export const sum: {
259
266
  * @param that - The second operand.
260
267
  *
261
268
  * @example
269
+ * ```ts
262
270
  * import { sum, unsafeFromString } from "effect/BigDecimal"
263
271
  *
264
272
  * assert.deepStrictEqual(sum(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("5"))
273
+ * ```
265
274
  *
266
275
  * @since 2.0.0
267
276
  * @category math
@@ -294,9 +303,11 @@ export const sum: {
294
303
  * @param that - The second operand.
295
304
  *
296
305
  * @example
306
+ * ```ts
297
307
  * import { multiply, unsafeFromString } from "effect/BigDecimal"
298
308
  *
299
309
  * assert.deepStrictEqual(multiply(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("6"))
310
+ * ```
300
311
  *
301
312
  * @since 2.0.0
302
313
  * @category math
@@ -309,9 +320,11 @@ export const multiply: {
309
320
  * @param that - The second operand.
310
321
  *
311
322
  * @example
323
+ * ```ts
312
324
  * import { multiply, unsafeFromString } from "effect/BigDecimal"
313
325
  *
314
326
  * assert.deepStrictEqual(multiply(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("6"))
327
+ * ```
315
328
  *
316
329
  * @since 2.0.0
317
330
  * @category math
@@ -324,9 +337,11 @@ export const multiply: {
324
337
  * @param that - The second operand.
325
338
  *
326
339
  * @example
340
+ * ```ts
327
341
  * import { multiply, unsafeFromString } from "effect/BigDecimal"
328
342
  *
329
343
  * assert.deepStrictEqual(multiply(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("6"))
344
+ * ```
330
345
  *
331
346
  * @since 2.0.0
332
347
  * @category math
@@ -347,9 +362,11 @@ export const multiply: {
347
362
  * @param that - The second operand.
348
363
  *
349
364
  * @example
365
+ * ```ts
350
366
  * import { subtract, unsafeFromString } from "effect/BigDecimal"
351
367
  *
352
368
  * assert.deepStrictEqual(subtract(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("-1"))
369
+ * ```
353
370
  *
354
371
  * @since 2.0.0
355
372
  * @category math
@@ -362,9 +379,11 @@ export const subtract: {
362
379
  * @param that - The second operand.
363
380
  *
364
381
  * @example
382
+ * ```ts
365
383
  * import { subtract, unsafeFromString } from "effect/BigDecimal"
366
384
  *
367
385
  * assert.deepStrictEqual(subtract(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("-1"))
386
+ * ```
368
387
  *
369
388
  * @since 2.0.0
370
389
  * @category math
@@ -377,9 +396,11 @@ export const subtract: {
377
396
  * @param that - The second operand.
378
397
  *
379
398
  * @example
399
+ * ```ts
380
400
  * import { subtract, unsafeFromString } from "effect/BigDecimal"
381
401
  *
382
402
  * assert.deepStrictEqual(subtract(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("-1"))
403
+ * ```
383
404
  *
384
405
  * @since 2.0.0
385
406
  * @category math
@@ -485,11 +506,13 @@ export const roundTerminal = (n: bigint): bigint => {
485
506
  * @param that - The divisor operand.
486
507
  *
487
508
  * @example
509
+ * ```ts
488
510
  * import { BigDecimal, Option } from "effect"
489
511
  *
490
512
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("3")), Option.some(BigDecimal.unsafeFromString("2")))
491
513
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("4")), Option.some(BigDecimal.unsafeFromString("1.5")))
492
514
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("0")), Option.none())
515
+ * ```
493
516
  *
494
517
  * @since 2.0.0
495
518
  * @category math
@@ -507,11 +530,13 @@ export const divide: {
507
530
  * @param that - The divisor operand.
508
531
  *
509
532
  * @example
533
+ * ```ts
510
534
  * import { BigDecimal, Option } from "effect"
511
535
  *
512
536
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("3")), Option.some(BigDecimal.unsafeFromString("2")))
513
537
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("4")), Option.some(BigDecimal.unsafeFromString("1.5")))
514
538
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("0")), Option.none())
539
+ * ```
515
540
  *
516
541
  * @since 2.0.0
517
542
  * @category math
@@ -529,11 +554,13 @@ export const divide: {
529
554
  * @param that - The divisor operand.
530
555
  *
531
556
  * @example
557
+ * ```ts
532
558
  * import { BigDecimal, Option } from "effect"
533
559
  *
534
560
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("3")), Option.some(BigDecimal.unsafeFromString("2")))
535
561
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("4")), Option.some(BigDecimal.unsafeFromString("1.5")))
536
562
  * assert.deepStrictEqual(BigDecimal.divide(BigDecimal.unsafeFromString("6"), BigDecimal.unsafeFromString("0")), Option.none())
563
+ * ```
537
564
  *
538
565
  * @since 2.0.0
539
566
  * @category math
@@ -568,10 +595,12 @@ export const divide: {
568
595
  * @param that - The divisor operand.as
569
596
  *
570
597
  * @example
598
+ * ```ts
571
599
  * import { unsafeDivide, unsafeFromString } from "effect/BigDecimal"
572
600
  *
573
601
  * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("3")), unsafeFromString("2"))
574
602
  * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("4")), unsafeFromString("1.5"))
603
+ * ```
575
604
  *
576
605
  * @since 2.0.0
577
606
  * @category math
@@ -589,10 +618,12 @@ export const unsafeDivide: {
589
618
  * @param that - The divisor operand.as
590
619
  *
591
620
  * @example
621
+ * ```ts
592
622
  * import { unsafeDivide, unsafeFromString } from "effect/BigDecimal"
593
623
  *
594
624
  * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("3")), unsafeFromString("2"))
595
625
  * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("4")), unsafeFromString("1.5"))
626
+ * ```
596
627
  *
597
628
  * @since 2.0.0
598
629
  * @category math
@@ -610,10 +641,12 @@ export const unsafeDivide: {
610
641
  * @param that - The divisor operand.as
611
642
  *
612
643
  * @example
644
+ * ```ts
613
645
  * import { unsafeDivide, unsafeFromString } from "effect/BigDecimal"
614
646
  *
615
647
  * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("3")), unsafeFromString("2"))
616
648
  * assert.deepStrictEqual(unsafeDivide(unsafeFromString("6"), unsafeFromString("4")), unsafeFromString("1.5"))
649
+ * ```
617
650
  *
618
651
  * @since 2.0.0
619
652
  * @category math
@@ -663,11 +696,13 @@ export const Order: order.Order<BigDecimal> = order.make((self, that) => {
663
696
  * @param that - The second argument.
664
697
  *
665
698
  * @example
699
+ * ```ts
666
700
  * import { lessThan, unsafeFromString } from "effect/BigDecimal"
667
701
  *
668
702
  * assert.deepStrictEqual(lessThan(unsafeFromString("2"), unsafeFromString("3")), true)
669
703
  * assert.deepStrictEqual(lessThan(unsafeFromString("3"), unsafeFromString("3")), false)
670
704
  * assert.deepStrictEqual(lessThan(unsafeFromString("4"), unsafeFromString("3")), false)
705
+ * ```
671
706
  *
672
707
  * @since 2.0.0
673
708
  * @category predicates
@@ -680,11 +715,13 @@ export const lessThan: {
680
715
  * @param that - The second argument.
681
716
  *
682
717
  * @example
718
+ * ```ts
683
719
  * import { lessThan, unsafeFromString } from "effect/BigDecimal"
684
720
  *
685
721
  * assert.deepStrictEqual(lessThan(unsafeFromString("2"), unsafeFromString("3")), true)
686
722
  * assert.deepStrictEqual(lessThan(unsafeFromString("3"), unsafeFromString("3")), false)
687
723
  * assert.deepStrictEqual(lessThan(unsafeFromString("4"), unsafeFromString("3")), false)
724
+ * ```
688
725
  *
689
726
  * @since 2.0.0
690
727
  * @category predicates
@@ -697,11 +734,13 @@ export const lessThan: {
697
734
  * @param that - The second argument.
698
735
  *
699
736
  * @example
737
+ * ```ts
700
738
  * import { lessThan, unsafeFromString } from "effect/BigDecimal"
701
739
  *
702
740
  * assert.deepStrictEqual(lessThan(unsafeFromString("2"), unsafeFromString("3")), true)
703
741
  * assert.deepStrictEqual(lessThan(unsafeFromString("3"), unsafeFromString("3")), false)
704
742
  * assert.deepStrictEqual(lessThan(unsafeFromString("4"), unsafeFromString("3")), false)
743
+ * ```
705
744
  *
706
745
  * @since 2.0.0
707
746
  * @category predicates
@@ -716,11 +755,13 @@ export const lessThan: {
716
755
  * @param that - The second `BigDecimal` to compare with.
717
756
  *
718
757
  * @example
758
+ * ```ts
719
759
  * import { lessThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
720
760
  *
721
761
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), true)
722
762
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
723
763
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), false)
764
+ * ```
724
765
  *
725
766
  * @since 2.0.0
726
767
  * @category predicates
@@ -733,11 +774,13 @@ export const lessThanOrEqualTo: {
733
774
  * @param that - The second `BigDecimal` to compare with.
734
775
  *
735
776
  * @example
777
+ * ```ts
736
778
  * import { lessThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
737
779
  *
738
780
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), true)
739
781
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
740
782
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), false)
783
+ * ```
741
784
  *
742
785
  * @since 2.0.0
743
786
  * @category predicates
@@ -750,11 +793,13 @@ export const lessThanOrEqualTo: {
750
793
  * @param that - The second `BigDecimal` to compare with.
751
794
  *
752
795
  * @example
796
+ * ```ts
753
797
  * import { lessThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
754
798
  *
755
799
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), true)
756
800
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
757
801
  * assert.deepStrictEqual(lessThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), false)
802
+ * ```
758
803
  *
759
804
  * @since 2.0.0
760
805
  * @category predicates
@@ -769,11 +814,13 @@ export const lessThanOrEqualTo: {
769
814
  * @param that - The second argument.
770
815
  *
771
816
  * @example
817
+ * ```ts
772
818
  * import { greaterThan, unsafeFromString } from "effect/BigDecimal"
773
819
  *
774
820
  * assert.deepStrictEqual(greaterThan(unsafeFromString("2"), unsafeFromString("3")), false)
775
821
  * assert.deepStrictEqual(greaterThan(unsafeFromString("3"), unsafeFromString("3")), false)
776
822
  * assert.deepStrictEqual(greaterThan(unsafeFromString("4"), unsafeFromString("3")), true)
823
+ * ```
777
824
  *
778
825
  * @since 2.0.0
779
826
  * @category predicates
@@ -786,11 +833,13 @@ export const greaterThan: {
786
833
  * @param that - The second argument.
787
834
  *
788
835
  * @example
836
+ * ```ts
789
837
  * import { greaterThan, unsafeFromString } from "effect/BigDecimal"
790
838
  *
791
839
  * assert.deepStrictEqual(greaterThan(unsafeFromString("2"), unsafeFromString("3")), false)
792
840
  * assert.deepStrictEqual(greaterThan(unsafeFromString("3"), unsafeFromString("3")), false)
793
841
  * assert.deepStrictEqual(greaterThan(unsafeFromString("4"), unsafeFromString("3")), true)
842
+ * ```
794
843
  *
795
844
  * @since 2.0.0
796
845
  * @category predicates
@@ -803,11 +852,13 @@ export const greaterThan: {
803
852
  * @param that - The second argument.
804
853
  *
805
854
  * @example
855
+ * ```ts
806
856
  * import { greaterThan, unsafeFromString } from "effect/BigDecimal"
807
857
  *
808
858
  * assert.deepStrictEqual(greaterThan(unsafeFromString("2"), unsafeFromString("3")), false)
809
859
  * assert.deepStrictEqual(greaterThan(unsafeFromString("3"), unsafeFromString("3")), false)
810
860
  * assert.deepStrictEqual(greaterThan(unsafeFromString("4"), unsafeFromString("3")), true)
861
+ * ```
811
862
  *
812
863
  * @since 2.0.0
813
864
  * @category predicates
@@ -822,11 +873,13 @@ export const greaterThan: {
822
873
  * @param that - The second `BigDecimal` to compare with.
823
874
  *
824
875
  * @example
876
+ * ```ts
825
877
  * import { greaterThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
826
878
  *
827
879
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), false)
828
880
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
829
881
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), true)
882
+ * ```
830
883
  *
831
884
  * @since 2.0.0
832
885
  * @category predicates
@@ -839,11 +892,13 @@ export const greaterThanOrEqualTo: {
839
892
  * @param that - The second `BigDecimal` to compare with.
840
893
  *
841
894
  * @example
895
+ * ```ts
842
896
  * import { greaterThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
843
897
  *
844
898
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), false)
845
899
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
846
900
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), true)
901
+ * ```
847
902
  *
848
903
  * @since 2.0.0
849
904
  * @category predicates
@@ -856,11 +911,13 @@ export const greaterThanOrEqualTo: {
856
911
  * @param that - The second `BigDecimal` to compare with.
857
912
  *
858
913
  * @example
914
+ * ```ts
859
915
  * import { greaterThanOrEqualTo, unsafeFromString } from "effect/BigDecimal"
860
916
  *
861
917
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("2"), unsafeFromString("3")), false)
862
918
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("3"), unsafeFromString("3")), true)
863
919
  * assert.deepStrictEqual(greaterThanOrEqualTo(unsafeFromString("4"), unsafeFromString("3")), true)
920
+ * ```
864
921
  *
865
922
  * @since 2.0.0
866
923
  * @category predicates
@@ -876,6 +933,7 @@ export const greaterThanOrEqualTo: {
876
933
  * @param maximum - The `maximum` value to check.
877
934
  *
878
935
  * @example
936
+ * ```ts
879
937
  * import { BigDecimal } from "effect"
880
938
  *
881
939
  * const between = BigDecimal.between({
@@ -886,6 +944,7 @@ export const greaterThanOrEqualTo: {
886
944
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("3")), true)
887
945
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("0")), false)
888
946
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("6")), false)
947
+ * ```
889
948
  *
890
949
  * @since 2.0.0
891
950
  * @category predicates
@@ -899,6 +958,7 @@ export const between: {
899
958
  * @param maximum - The `maximum` value to check.
900
959
  *
901
960
  * @example
961
+ * ```ts
902
962
  * import { BigDecimal } from "effect"
903
963
  *
904
964
  * const between = BigDecimal.between({
@@ -909,6 +969,7 @@ export const between: {
909
969
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("3")), true)
910
970
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("0")), false)
911
971
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("6")), false)
972
+ * ```
912
973
  *
913
974
  * @since 2.0.0
914
975
  * @category predicates
@@ -927,6 +988,7 @@ export const between: {
927
988
  * @param maximum - The `maximum` value to check.
928
989
  *
929
990
  * @example
991
+ * ```ts
930
992
  * import { BigDecimal } from "effect"
931
993
  *
932
994
  * const between = BigDecimal.between({
@@ -937,6 +999,7 @@ export const between: {
937
999
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("3")), true)
938
1000
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("0")), false)
939
1001
  * assert.deepStrictEqual(between(BigDecimal.unsafeFromString("6")), false)
1002
+ * ```
940
1003
  *
941
1004
  * @since 2.0.0
942
1005
  * @category predicates
@@ -962,6 +1025,7 @@ export const between: {
962
1025
  * @param maximum - The upper end of the range.
963
1026
  *
964
1027
  * @example
1028
+ * ```ts
965
1029
  * import { BigDecimal } from "effect"
966
1030
  *
967
1031
  * const clamp = BigDecimal.clamp({
@@ -972,6 +1036,7 @@ export const between: {
972
1036
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("3")), BigDecimal.unsafeFromString("3"))
973
1037
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("0")), BigDecimal.unsafeFromString("1"))
974
1038
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("6")), BigDecimal.unsafeFromString("5"))
1039
+ * ```
975
1040
  *
976
1041
  * @since 2.0.0
977
1042
  * @category math
@@ -989,6 +1054,7 @@ export const clamp: {
989
1054
  * @param maximum - The upper end of the range.
990
1055
  *
991
1056
  * @example
1057
+ * ```ts
992
1058
  * import { BigDecimal } from "effect"
993
1059
  *
994
1060
  * const clamp = BigDecimal.clamp({
@@ -999,6 +1065,7 @@ export const clamp: {
999
1065
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("3")), BigDecimal.unsafeFromString("3"))
1000
1066
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("0")), BigDecimal.unsafeFromString("1"))
1001
1067
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("6")), BigDecimal.unsafeFromString("5"))
1068
+ * ```
1002
1069
  *
1003
1070
  * @since 2.0.0
1004
1071
  * @category math
@@ -1021,6 +1088,7 @@ export const clamp: {
1021
1088
  * @param maximum - The upper end of the range.
1022
1089
  *
1023
1090
  * @example
1091
+ * ```ts
1024
1092
  * import { BigDecimal } from "effect"
1025
1093
  *
1026
1094
  * const clamp = BigDecimal.clamp({
@@ -1031,6 +1099,7 @@ export const clamp: {
1031
1099
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("3")), BigDecimal.unsafeFromString("3"))
1032
1100
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("0")), BigDecimal.unsafeFromString("1"))
1033
1101
  * assert.deepStrictEqual(clamp(BigDecimal.unsafeFromString("6")), BigDecimal.unsafeFromString("5"))
1102
+ * ```
1034
1103
  *
1035
1104
  * @since 2.0.0
1036
1105
  * @category math
@@ -1051,9 +1120,11 @@ export const clamp: {
1051
1120
  * @param that - The second `BigDecimal`.
1052
1121
  *
1053
1122
  * @example
1123
+ * ```ts
1054
1124
  * import { min, unsafeFromString } from "effect/BigDecimal"
1055
1125
  *
1056
1126
  * assert.deepStrictEqual(min(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("2"))
1127
+ * ```
1057
1128
  *
1058
1129
  * @since 2.0.0
1059
1130
  * @category math
@@ -1066,9 +1137,11 @@ export const min: {
1066
1137
  * @param that - The second `BigDecimal`.
1067
1138
  *
1068
1139
  * @example
1140
+ * ```ts
1069
1141
  * import { min, unsafeFromString } from "effect/BigDecimal"
1070
1142
  *
1071
1143
  * assert.deepStrictEqual(min(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("2"))
1144
+ * ```
1072
1145
  *
1073
1146
  * @since 2.0.0
1074
1147
  * @category math
@@ -1081,9 +1154,11 @@ export const min: {
1081
1154
  * @param that - The second `BigDecimal`.
1082
1155
  *
1083
1156
  * @example
1157
+ * ```ts
1084
1158
  * import { min, unsafeFromString } from "effect/BigDecimal"
1085
1159
  *
1086
1160
  * assert.deepStrictEqual(min(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("2"))
1161
+ * ```
1087
1162
  *
1088
1163
  * @since 2.0.0
1089
1164
  * @category math
@@ -1098,9 +1173,11 @@ export const min: {
1098
1173
  * @param that - The second `BigDecimal`.
1099
1174
  *
1100
1175
  * @example
1176
+ * ```ts
1101
1177
  * import { max, unsafeFromString } from "effect/BigDecimal"
1102
1178
  *
1103
1179
  * assert.deepStrictEqual(max(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("3"))
1180
+ * ```
1104
1181
  *
1105
1182
  * @since 2.0.0
1106
1183
  * @category math
@@ -1113,9 +1190,11 @@ export const max: {
1113
1190
  * @param that - The second `BigDecimal`.
1114
1191
  *
1115
1192
  * @example
1193
+ * ```ts
1116
1194
  * import { max, unsafeFromString } from "effect/BigDecimal"
1117
1195
  *
1118
1196
  * assert.deepStrictEqual(max(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("3"))
1197
+ * ```
1119
1198
  *
1120
1199
  * @since 2.0.0
1121
1200
  * @category math
@@ -1128,9 +1207,11 @@ export const max: {
1128
1207
  * @param that - The second `BigDecimal`.
1129
1208
  *
1130
1209
  * @example
1210
+ * ```ts
1131
1211
  * import { max, unsafeFromString } from "effect/BigDecimal"
1132
1212
  *
1133
1213
  * assert.deepStrictEqual(max(unsafeFromString("2"), unsafeFromString("3")), unsafeFromString("3"))
1214
+ * ```
1134
1215
  *
1135
1216
  * @since 2.0.0
1136
1217
  * @category math
@@ -1144,11 +1225,13 @@ export const max: {
1144
1225
  * @param n - The `BigDecimal` to determine the sign of.
1145
1226
  *
1146
1227
  * @example
1228
+ * ```ts
1147
1229
  * import { sign, unsafeFromString } from "effect/BigDecimal"
1148
1230
  *
1149
1231
  * assert.deepStrictEqual(sign(unsafeFromString("-5")), -1)
1150
1232
  * assert.deepStrictEqual(sign(unsafeFromString("0")), 0)
1151
1233
  * assert.deepStrictEqual(sign(unsafeFromString("5")), 1)
1234
+ * ```
1152
1235
  *
1153
1236
  * @since 2.0.0
1154
1237
  * @category math
@@ -1161,11 +1244,13 @@ export const sign = (n: BigDecimal): Ordering => n.value === bigint0 ? 0 : n.val
1161
1244
  * @param n - The `BigDecimal` to determine the absolute value of.
1162
1245
  *
1163
1246
  * @example
1247
+ * ```ts
1164
1248
  * import { abs, unsafeFromString } from "effect/BigDecimal"
1165
1249
  *
1166
1250
  * assert.deepStrictEqual(abs(unsafeFromString("-5")), unsafeFromString("5"))
1167
1251
  * assert.deepStrictEqual(abs(unsafeFromString("0")), unsafeFromString("0"))
1168
1252
  * assert.deepStrictEqual(abs(unsafeFromString("5")), unsafeFromString("5"))
1253
+ * ```
1169
1254
  *
1170
1255
  * @since 2.0.0
1171
1256
  * @category math
@@ -1178,10 +1263,12 @@ export const abs = (n: BigDecimal): BigDecimal => n.value < bigint0 ? make(-n.va
1178
1263
  * @param n - The `BigDecimal` to negate.
1179
1264
  *
1180
1265
  * @example
1266
+ * ```ts
1181
1267
  * import { negate, unsafeFromString } from "effect/BigDecimal"
1182
1268
  *
1183
1269
  * assert.deepStrictEqual(negate(unsafeFromString("3")), unsafeFromString("-3"))
1184
1270
  * assert.deepStrictEqual(negate(unsafeFromString("-6")), unsafeFromString("6"))
1271
+ * ```
1185
1272
  *
1186
1273
  * @since 2.0.0
1187
1274
  * @category math
@@ -1197,11 +1284,13 @@ export const negate = (n: BigDecimal): BigDecimal => make(-n.value, n.scale)
1197
1284
  * @param divisor - The divisor.
1198
1285
  *
1199
1286
  * @example
1287
+ * ```ts
1200
1288
  * import { BigDecimal, Option } from "effect"
1201
1289
  *
1202
1290
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("2"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("0")))
1203
1291
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("3"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("1")))
1204
1292
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("-4"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("0")))
1293
+ * ```
1205
1294
  *
1206
1295
  * @since 2.0.0
1207
1296
  * @category math
@@ -1216,11 +1305,13 @@ export const remainder: {
1216
1305
  * @param divisor - The divisor.
1217
1306
  *
1218
1307
  * @example
1308
+ * ```ts
1219
1309
  * import { BigDecimal, Option } from "effect"
1220
1310
  *
1221
1311
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("2"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("0")))
1222
1312
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("3"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("1")))
1223
1313
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("-4"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("0")))
1314
+ * ```
1224
1315
  *
1225
1316
  * @since 2.0.0
1226
1317
  * @category math
@@ -1235,11 +1326,13 @@ export const remainder: {
1235
1326
  * @param divisor - The divisor.
1236
1327
  *
1237
1328
  * @example
1329
+ * ```ts
1238
1330
  * import { BigDecimal, Option } from "effect"
1239
1331
  *
1240
1332
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("2"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("0")))
1241
1333
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("3"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("1")))
1242
1334
  * assert.deepStrictEqual(BigDecimal.remainder(BigDecimal.unsafeFromString("-4"), BigDecimal.unsafeFromString("2")), Option.some(BigDecimal.unsafeFromString("0")))
1335
+ * ```
1243
1336
  *
1244
1337
  * @since 2.0.0
1245
1338
  * @category math
@@ -1263,11 +1356,13 @@ export const remainder: {
1263
1356
  * @param divisor - The divisor.
1264
1357
  *
1265
1358
  * @example
1359
+ * ```ts
1266
1360
  * import { unsafeRemainder, unsafeFromString } from "effect/BigDecimal"
1267
1361
  *
1268
1362
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("2"), unsafeFromString("2")), unsafeFromString("0"))
1269
1363
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("3"), unsafeFromString("2")), unsafeFromString("1"))
1270
1364
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("-4"), unsafeFromString("2")), unsafeFromString("0"))
1365
+ * ```
1271
1366
  *
1272
1367
  * @since 2.0.0
1273
1368
  * @category math
@@ -1282,11 +1377,13 @@ export const unsafeRemainder: {
1282
1377
  * @param divisor - The divisor.
1283
1378
  *
1284
1379
  * @example
1380
+ * ```ts
1285
1381
  * import { unsafeRemainder, unsafeFromString } from "effect/BigDecimal"
1286
1382
  *
1287
1383
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("2"), unsafeFromString("2")), unsafeFromString("0"))
1288
1384
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("3"), unsafeFromString("2")), unsafeFromString("1"))
1289
1385
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("-4"), unsafeFromString("2")), unsafeFromString("0"))
1386
+ * ```
1290
1387
  *
1291
1388
  * @since 2.0.0
1292
1389
  * @category math
@@ -1301,11 +1398,13 @@ export const unsafeRemainder: {
1301
1398
  * @param divisor - The divisor.
1302
1399
  *
1303
1400
  * @example
1401
+ * ```ts
1304
1402
  * import { unsafeRemainder, unsafeFromString } from "effect/BigDecimal"
1305
1403
  *
1306
1404
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("2"), unsafeFromString("2")), unsafeFromString("0"))
1307
1405
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("3"), unsafeFromString("2")), unsafeFromString("1"))
1308
1406
  * assert.deepStrictEqual(unsafeRemainder(unsafeFromString("-4"), unsafeFromString("2")), unsafeFromString("0"))
1407
+ * ```
1309
1408
  *
1310
1409
  * @since 2.0.0
1311
1410
  * @category math
@@ -1375,20 +1474,73 @@ export const fromBigInt = (n: bigint): BigDecimal => make(n, 0)
1375
1474
  * It is not recommended to convert a floating point number to a decimal directly,
1376
1475
  * as the floating point representation may be unexpected.
1377
1476
  *
1477
+ * Throws a `RangeError` if the number is not finite (`NaN`, `+Infinity` or `-Infinity`).
1478
+ *
1378
1479
  * @param value - The `number` value to create a `BigDecimal` from.
1379
1480
  *
1380
1481
  * @example
1482
+ * ```ts
1381
1483
  * import { fromNumber, make } from "effect/BigDecimal"
1382
1484
  *
1383
1485
  * assert.deepStrictEqual(fromNumber(123), make(123n, 0))
1384
1486
  * assert.deepStrictEqual(fromNumber(123.456), make(123456n, 3))
1487
+ * ```
1488
+ *
1489
+ * @since 3.11.0
1490
+ * @category constructors
1491
+ */
1492
+ export const unsafeFromNumber = (n: number): BigDecimal =>
1493
+ Option.getOrThrowWith(safeFromNumber(n), () => new RangeError(`Number must be finite, got ${n}`))
1494
+
1495
+ /**
1496
+ * Creates a `BigDecimal` from a `number` value.
1497
+ *
1498
+ * It is not recommended to convert a floating point number to a decimal directly,
1499
+ * as the floating point representation may be unexpected.
1500
+ *
1501
+ * Throws a `RangeError` if the number is not finite (`NaN`, `+Infinity` or `-Infinity`).
1502
+ *
1503
+ * @param value - The `number` value to create a `BigDecimal` from.
1385
1504
  *
1386
1505
  * @since 2.0.0
1387
1506
  * @category constructors
1507
+ * @deprecated Use {@link unsafeFromNumber} instead.
1388
1508
  */
1389
- export const fromNumber = (n: number): BigDecimal => {
1390
- const [lead, trail = ""] = `${n}`.split(".")
1391
- return make(BigInt(`${lead}${trail}`), trail.length)
1509
+ export const fromNumber: (n: number) => BigDecimal = unsafeFromNumber
1510
+
1511
+ /**
1512
+ * Creates a `BigDecimal` from a `number` value.
1513
+ *
1514
+ * It is not recommended to convert a floating point number to a decimal directly,
1515
+ * as the floating point representation may be unexpected.
1516
+ *
1517
+ * Returns `None` if the number is not finite (`NaN`, `+Infinity` or `-Infinity`).
1518
+ *
1519
+ * @param n - The `number` value to create a `BigDecimal` from.
1520
+ *
1521
+ * @example
1522
+ * import { BigDecimal, Option } from "effect"
1523
+ *
1524
+ * assert.deepStrictEqual(BigDecimal.safeFromNumber(123), Option.some(BigDecimal.make(123n, 0)))
1525
+ * assert.deepStrictEqual(BigDecimal.safeFromNumber(123.456), Option.some(BigDecimal.make(123456n, 3)))
1526
+ * assert.deepStrictEqual(BigDecimal.safeFromNumber(Infinity), Option.none())
1527
+ *
1528
+ * @since 3.11.0
1529
+ * @category constructors
1530
+ */
1531
+ export const safeFromNumber = (n: number): Option.Option<BigDecimal> => {
1532
+ // TODO: Rename this to `fromNumber` after removing the current, unsafe implementation of `fromNumber`.
1533
+ if (!Number.isFinite(n)) {
1534
+ return Option.none()
1535
+ }
1536
+
1537
+ const string = `${n}`
1538
+ if (string.includes("e")) {
1539
+ return fromString(string)
1540
+ }
1541
+
1542
+ const [lead, trail = ""] = string.split(".")
1543
+ return Option.some(make(BigInt(`${lead}${trail}`), trail.length))
1392
1544
  }
1393
1545
 
1394
1546
  /**
@@ -1397,36 +1549,56 @@ export const fromNumber = (n: number): BigDecimal => {
1397
1549
  * @param s - The `string` to parse.
1398
1550
  *
1399
1551
  * @example
1552
+ * ```ts
1400
1553
  * import { BigDecimal, Option } from "effect"
1401
1554
  *
1402
1555
  * assert.deepStrictEqual(BigDecimal.fromString("123"), Option.some(BigDecimal.make(123n, 0)))
1403
1556
  * assert.deepStrictEqual(BigDecimal.fromString("123.456"), Option.some(BigDecimal.make(123456n, 3)))
1404
1557
  * assert.deepStrictEqual(BigDecimal.fromString("123.abc"), Option.none())
1558
+ * ```
1405
1559
  *
1406
1560
  * @since 2.0.0
1407
1561
  * @category constructors
1408
1562
  */
1409
1563
  export const fromString = (s: string): Option.Option<BigDecimal> => {
1410
- let digits: string
1411
- let scale: number
1564
+ if (s === "") {
1565
+ return Option.some(zero)
1566
+ }
1412
1567
 
1413
- const dot = s.search(/\./)
1568
+ let base: string
1569
+ let exp: number
1570
+ const seperator = s.search(/[eE]/)
1571
+ if (seperator !== -1) {
1572
+ const trail = s.slice(seperator + 1)
1573
+ base = s.slice(0, seperator)
1574
+ exp = Number(trail)
1575
+ if (base === "" || !Number.isSafeInteger(exp) || !FINITE_INT_REGEX.test(trail)) {
1576
+ return Option.none()
1577
+ }
1578
+ } else {
1579
+ base = s
1580
+ exp = 0
1581
+ }
1582
+
1583
+ let digits: string
1584
+ let offset: number
1585
+ const dot = base.search(/\./)
1414
1586
  if (dot !== -1) {
1415
- const lead = s.slice(0, dot)
1416
- const trail = s.slice(dot + 1)
1587
+ const lead = base.slice(0, dot)
1588
+ const trail = base.slice(dot + 1)
1417
1589
  digits = `${lead}${trail}`
1418
- scale = trail.length
1590
+ offset = trail.length
1419
1591
  } else {
1420
- digits = s
1421
- scale = 0
1592
+ digits = base
1593
+ offset = 0
1422
1594
  }
1423
1595
 
1424
- if (digits === "") {
1425
- // TODO: This mimics the BigInt constructor behavior. Should this be `Option.none()`?
1426
- return Option.some(zero)
1596
+ if (!FINITE_INT_REGEX.test(digits)) {
1597
+ return Option.none()
1427
1598
  }
1428
1599
 
1429
- if (!/^(?:\+|-)?\d+$/.test(digits)) {
1600
+ const scale = offset - exp
1601
+ if (!Number.isSafeInteger(scale)) {
1430
1602
  return Option.none()
1431
1603
  }
1432
1604
 
@@ -1439,11 +1611,13 @@ export const fromString = (s: string): Option.Option<BigDecimal> => {
1439
1611
  * @param s - The `string` to parse.
1440
1612
  *
1441
1613
  * @example
1614
+ * ```ts
1442
1615
  * import { unsafeFromString, make } from "effect/BigDecimal"
1443
1616
  *
1444
1617
  * assert.deepStrictEqual(unsafeFromString("123"), make(123n, 0))
1445
1618
  * assert.deepStrictEqual(unsafeFromString("123.456"), make(123456n, 3))
1446
1619
  * assert.throws(() => unsafeFromString("123.abc"))
1620
+ * ```
1447
1621
  *
1448
1622
  * @since 2.0.0
1449
1623
  * @category constructors
@@ -1454,30 +1628,40 @@ export const unsafeFromString = (s: string): BigDecimal =>
1454
1628
  /**
1455
1629
  * Formats a given `BigDecimal` as a `string`.
1456
1630
  *
1457
- * @param normalized - The `BigDecimal` to format.
1631
+ * If the scale of the `BigDecimal` is greater than or equal to 16, the `BigDecimal` will
1632
+ * be formatted in scientific notation.
1633
+ *
1634
+ * @param n - The `BigDecimal` to format.
1458
1635
  *
1459
1636
  * @example
1637
+ * ```ts
1460
1638
  * import { format, unsafeFromString } from "effect/BigDecimal"
1461
1639
  *
1462
1640
  * assert.deepStrictEqual(format(unsafeFromString("-5")), "-5")
1463
1641
  * assert.deepStrictEqual(format(unsafeFromString("123.456")), "123.456")
1464
1642
  * assert.deepStrictEqual(format(unsafeFromString("-0.00000123")), "-0.00000123")
1643
+ * ```
1465
1644
  *
1466
1645
  * @since 2.0.0
1467
1646
  * @category conversions
1468
1647
  */
1469
1648
  export const format = (n: BigDecimal): string => {
1470
- const negative = n.value < bigint0
1471
- const absolute = negative ? `${n.value}`.substring(1) : `${n.value}`
1649
+ const normalized = normalize(n)
1650
+ if (Math.abs(normalized.scale) >= 16) {
1651
+ return toExponential(normalized)
1652
+ }
1653
+
1654
+ const negative = normalized.value < bigint0
1655
+ const absolute = negative ? `${normalized.value}`.substring(1) : `${normalized.value}`
1472
1656
 
1473
1657
  let before: string
1474
1658
  let after: string
1475
1659
 
1476
- if (n.scale >= absolute.length) {
1660
+ if (normalized.scale >= absolute.length) {
1477
1661
  before = "0"
1478
- after = "0".repeat(n.scale - absolute.length) + absolute
1662
+ after = "0".repeat(normalized.scale - absolute.length) + absolute
1479
1663
  } else {
1480
- const location = absolute.length - n.scale
1664
+ const location = absolute.length - normalized.scale
1481
1665
  if (location > absolute.length) {
1482
1666
  const zeros = location - absolute.length
1483
1667
  before = `${absolute}${"0".repeat(zeros)}`
@@ -1492,6 +1676,38 @@ export const format = (n: BigDecimal): string => {
1492
1676
  return negative ? `-${complete}` : complete
1493
1677
  }
1494
1678
 
1679
+ /**
1680
+ * Formats a given `BigDecimal` as a `string` in scientific notation.
1681
+ *
1682
+ * @param n - The `BigDecimal` to format.
1683
+ *
1684
+ * @example
1685
+ * import { toExponential, make } from "effect/BigDecimal"
1686
+ *
1687
+ * assert.deepStrictEqual(toExponential(make(123456n, -5)), "1.23456e+10")
1688
+ *
1689
+ * @since 3.11.0
1690
+ * @category conversions
1691
+ */
1692
+ export const toExponential = (n: BigDecimal): string => {
1693
+ if (isZero(n)) {
1694
+ return "0e+0"
1695
+ }
1696
+
1697
+ const normalized = normalize(n)
1698
+ const digits = `${abs(normalized).value}`
1699
+ const head = digits.slice(0, 1)
1700
+ const tail = digits.slice(1)
1701
+
1702
+ let output = `${isNegative(normalized) ? "-" : ""}${head}`
1703
+ if (tail !== "") {
1704
+ output += `.${tail}`
1705
+ }
1706
+
1707
+ const exp = tail.length - normalized.scale
1708
+ return `${output}e${exp >= 0 ? "+" : ""}${exp}`
1709
+ }
1710
+
1495
1711
  /**
1496
1712
  * Converts a `BigDecimal` to a `number`.
1497
1713
  *
@@ -1500,9 +1716,11 @@ export const format = (n: BigDecimal): string => {
1500
1716
  * @param n - The `BigDecimal` to convert.
1501
1717
  *
1502
1718
  * @example
1719
+ * ```ts
1503
1720
  * import { unsafeToNumber, unsafeFromString } from "effect/BigDecimal"
1504
1721
  *
1505
1722
  * assert.deepStrictEqual(unsafeToNumber(unsafeFromString("123.456")), 123.456)
1723
+ * ```
1506
1724
  *
1507
1725
  * @since 2.0.0
1508
1726
  * @category conversions
@@ -1515,11 +1733,13 @@ export const unsafeToNumber = (n: BigDecimal): number => Number(format(n))
1515
1733
  * @param n - The `BigDecimal` to check.
1516
1734
  *
1517
1735
  * @example
1736
+ * ```ts
1518
1737
  * import { isInteger, unsafeFromString } from "effect/BigDecimal"
1519
1738
  *
1520
1739
  * assert.deepStrictEqual(isInteger(unsafeFromString("0")), true)
1521
1740
  * assert.deepStrictEqual(isInteger(unsafeFromString("1")), true)
1522
1741
  * assert.deepStrictEqual(isInteger(unsafeFromString("1.1")), false)
1742
+ * ```
1523
1743
  *
1524
1744
  * @since 2.0.0
1525
1745
  * @category predicates
@@ -1532,10 +1752,12 @@ export const isInteger = (n: BigDecimal): boolean => normalize(n).scale <= 0
1532
1752
  * @param n - The `BigDecimal` to check.
1533
1753
  *
1534
1754
  * @example
1755
+ * ```ts
1535
1756
  * import { isZero, unsafeFromString } from "effect/BigDecimal"
1536
1757
  *
1537
1758
  * assert.deepStrictEqual(isZero(unsafeFromString("0")), true)
1538
1759
  * assert.deepStrictEqual(isZero(unsafeFromString("1")), false)
1760
+ * ```
1539
1761
  *
1540
1762
  * @since 2.0.0
1541
1763
  * @category predicates
@@ -1548,11 +1770,13 @@ export const isZero = (n: BigDecimal): boolean => n.value === bigint0
1548
1770
  * @param n - The `BigDecimal` to check.
1549
1771
  *
1550
1772
  * @example
1773
+ * ```ts
1551
1774
  * import { isNegative, unsafeFromString } from "effect/BigDecimal"
1552
1775
  *
1553
1776
  * assert.deepStrictEqual(isNegative(unsafeFromString("-1")), true)
1554
1777
  * assert.deepStrictEqual(isNegative(unsafeFromString("0")), false)
1555
1778
  * assert.deepStrictEqual(isNegative(unsafeFromString("1")), false)
1779
+ * ```
1556
1780
  *
1557
1781
  * @since 2.0.0
1558
1782
  * @category predicates
@@ -1565,11 +1789,13 @@ export const isNegative = (n: BigDecimal): boolean => n.value < bigint0
1565
1789
  * @param n - The `BigDecimal` to check.
1566
1790
  *
1567
1791
  * @example
1792
+ * ```ts
1568
1793
  * import { isPositive, unsafeFromString } from "effect/BigDecimal"
1569
1794
  *
1570
1795
  * assert.deepStrictEqual(isPositive(unsafeFromString("-1")), false)
1571
1796
  * assert.deepStrictEqual(isPositive(unsafeFromString("0")), false)
1572
1797
  * assert.deepStrictEqual(isPositive(unsafeFromString("1")), true)
1798
+ * ```
1573
1799
  *
1574
1800
  * @since 2.0.0
1575
1801
  * @category predicates