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/Cron.ts CHANGED
@@ -2,13 +2,16 @@
2
2
  * @since 2.0.0
3
3
  */
4
4
  import * as Arr from "./Array.js"
5
+ import type * as DateTime from "./DateTime.js"
5
6
  import * as Either from "./Either.js"
6
7
  import * as Equal from "./Equal.js"
7
8
  import * as equivalence from "./Equivalence.js"
8
9
  import { dual, pipe } from "./Function.js"
9
10
  import * as Hash from "./Hash.js"
10
11
  import { format, type Inspectable, NodeInspectSymbol } from "./Inspectable.js"
12
+ import * as dateTime from "./internal/dateTime.js"
11
13
  import * as N from "./Number.js"
14
+ import * as Option from "./Option.js"
12
15
  import { type Pipeable, pipeArguments } from "./Pipeable.js"
13
16
  import { hasProperty } from "./Predicate.js"
14
17
  import * as String from "./String.js"
@@ -32,6 +35,7 @@ export type TypeId = typeof TypeId
32
35
  */
33
36
  export interface Cron extends Pipeable, Equal.Equal, Inspectable {
34
37
  readonly [TypeId]: TypeId
38
+ readonly tz: Option.Option<DateTime.TimeZone>
35
39
  readonly minutes: ReadonlySet<number>
36
40
  readonly hours: ReadonlySet<number>
37
41
  readonly days: ReadonlySet<number>
@@ -39,14 +43,15 @@ export interface Cron extends Pipeable, Equal.Equal, Inspectable {
39
43
  readonly weekdays: ReadonlySet<number>
40
44
  }
41
45
 
42
- const CronProto: Omit<Cron, "minutes" | "hours" | "days" | "months" | "weekdays"> = {
46
+ const CronProto: Omit<Cron, "minutes" | "hours" | "days" | "months" | "weekdays" | "tz"> = {
43
47
  [TypeId]: TypeId,
44
48
  [Equal.symbol](this: Cron, that: unknown) {
45
49
  return isCron(that) && equals(this, that)
46
50
  },
47
51
  [Hash.symbol](this: Cron): number {
48
52
  return pipe(
49
- Hash.array(Arr.fromIterable(this.minutes)),
53
+ Hash.hash(this.tz),
54
+ Hash.combine(Hash.array(Arr.fromIterable(this.minutes))),
50
55
  Hash.combine(Hash.array(Arr.fromIterable(this.hours))),
51
56
  Hash.combine(Hash.array(Arr.fromIterable(this.days))),
52
57
  Hash.combine(Hash.array(Arr.fromIterable(this.months))),
@@ -60,6 +65,7 @@ const CronProto: Omit<Cron, "minutes" | "hours" | "days" | "months" | "weekdays"
60
65
  toJSON(this: Cron) {
61
66
  return {
62
67
  _id: "Cron",
68
+ tz: this.tz,
63
69
  minutes: Arr.fromIterable(this.minutes),
64
70
  hours: Arr.fromIterable(this.hours),
65
71
  days: Arr.fromIterable(this.days),
@@ -86,7 +92,7 @@ const CronProto: Omit<Cron, "minutes" | "hours" | "days" | "months" | "weekdays"
86
92
  export const isCron = (u: unknown): u is Cron => hasProperty(u, TypeId)
87
93
 
88
94
  /**
89
- * Creates a `Cron` instance from.
95
+ * Creates a `Cron` instance.
90
96
  *
91
97
  * @param constraints - The cron constraints.
92
98
  *
@@ -98,6 +104,7 @@ export const make = ({
98
104
  hours,
99
105
  minutes,
100
106
  months,
107
+ tz,
101
108
  weekdays
102
109
  }: {
103
110
  readonly minutes: Iterable<number>
@@ -105,6 +112,7 @@ export const make = ({
105
112
  readonly days: Iterable<number>
106
113
  readonly months: Iterable<number>
107
114
  readonly weekdays: Iterable<number>
115
+ readonly tz?: DateTime.TimeZone | undefined
108
116
  }): Cron => {
109
117
  const o: Mutable<Cron> = Object.create(CronProto)
110
118
  o.minutes = new Set(Arr.sort(minutes, N.Order))
@@ -112,6 +120,7 @@ export const make = ({
112
120
  o.days = new Set(Arr.sort(days, N.Order))
113
121
  o.months = new Set(Arr.sort(months, N.Order))
114
122
  o.weekdays = new Set(Arr.sort(weekdays, N.Order))
123
+ o.tz = Option.fromNullable(tz)
115
124
  return o
116
125
  }
117
126
 
@@ -170,6 +179,7 @@ export const isParseError = (u: unknown): u is ParseError => hasProperty(u, Pars
170
179
  * @param cron - The cron expression to parse.
171
180
  *
172
181
  * @example
182
+ * ```ts
173
183
  * import { Cron, Either } from "effect"
174
184
  *
175
185
  * // At 04:00 on every day-of-month from 8 through 14.
@@ -180,11 +190,12 @@ export const isParseError = (u: unknown): u is ParseError => hasProperty(u, Pars
180
190
  * months: [],
181
191
  * weekdays: []
182
192
  * })))
193
+ * ```
183
194
  *
184
195
  * @since 2.0.0
185
196
  * @category constructors
186
197
  */
187
- export const parse = (cron: string): Either.Either<Cron, ParseError> => {
198
+ export const parse = (cron: string, tz?: DateTime.TimeZone): Either.Either<Cron, ParseError> => {
188
199
  const segments = cron.split(" ").filter(String.isNonEmpty)
189
200
  if (segments.length !== 5) {
190
201
  return Either.left(ParseError(`Invalid number of segments in cron expression`, cron))
@@ -197,57 +208,58 @@ export const parse = (cron: string): Either.Either<Cron, ParseError> => {
197
208
  days: parseSegment(days, dayOptions),
198
209
  months: parseSegment(months, monthOptions),
199
210
  weekdays: parseSegment(weekdays, weekdayOptions)
200
- }).pipe(Either.map((segments) => make(segments)))
211
+ }).pipe(Either.map((segments) => make({ ...segments, tz })))
201
212
  }
202
213
 
203
214
  /**
204
215
  * Checks if a given `Date` falls within an active `Cron` time window.
205
216
  *
217
+ * @throws `IllegalArgumentException` if the given `DateTime.Input` is invalid.
218
+ *
206
219
  * @param cron - The `Cron` instance.
207
220
  * @param date - The `Date` to check against.
208
221
  *
209
222
  * @example
223
+ * ```ts
210
224
  * import { Cron, Either } from "effect"
211
225
  *
212
226
  * const cron = Either.getOrThrow(Cron.parse("0 4 8-14 * *"))
213
227
  * assert.deepStrictEqual(Cron.match(cron, new Date("2021-01-08 04:00:00")), true)
214
228
  * assert.deepStrictEqual(Cron.match(cron, new Date("2021-01-08 05:00:00")), false)
229
+ * ```
215
230
  *
216
231
  * @since 2.0.0
217
232
  */
218
- export const match = (cron: Cron, date: Date): boolean => {
219
- const { days, hours, minutes, months, weekdays } = cron
233
+ export const match = (cron: Cron, date: DateTime.DateTime.Input): boolean => {
234
+ const zoned = dateTime.unsafeMakeZoned(date)
235
+ const adjusted = Option.isSome(cron.tz) ? dateTime.setZone(zoned, cron.tz.value) : zoned
236
+ const parts = dateTime.toParts(adjusted)
220
237
 
221
- const minute = date.getMinutes()
222
- if (minutes.size !== 0 && !minutes.has(minute)) {
238
+ if (cron.minutes.size !== 0 && !cron.minutes.has(parts.minutes)) {
223
239
  return false
224
240
  }
225
241
 
226
- const hour = date.getHours()
227
- if (hours.size !== 0 && !hours.has(hour)) {
242
+ if (cron.hours.size !== 0 && !cron.hours.has(parts.hours)) {
228
243
  return false
229
244
  }
230
245
 
231
- const month = date.getMonth() + 1
232
- if (months.size !== 0 && !months.has(month)) {
246
+ if (cron.months.size !== 0 && !cron.months.has(parts.month)) {
233
247
  return false
234
248
  }
235
249
 
236
- if (days.size === 0 && weekdays.size === 0) {
250
+ if (cron.days.size === 0 && cron.weekdays.size === 0) {
237
251
  return true
238
252
  }
239
253
 
240
- const day = date.getDate()
241
- if (weekdays.size === 0) {
242
- return days.has(day)
254
+ if (cron.weekdays.size === 0) {
255
+ return cron.days.has(parts.day)
243
256
  }
244
257
 
245
- const weekday = date.getDay()
246
- if (days.size === 0) {
247
- return weekdays.has(weekday)
258
+ if (cron.days.size === 0) {
259
+ return cron.weekdays.has(parts.weekDay)
248
260
  }
249
261
 
250
- return days.has(day) || weekdays.has(weekday)
262
+ return cron.days.has(parts.day) || cron.weekdays.has(parts.weekDay)
251
263
  }
252
264
 
253
265
  /**
@@ -255,19 +267,24 @@ export const match = (cron: Cron, date: Date): boolean => {
255
267
  *
256
268
  * Uses the current time as a starting point if no value is provided for `now`.
257
269
  *
270
+ * @throws `IllegalArgumentException` if the given `DateTime.Input` is invalid.
271
+ * @throws `Error` if the next run date cannot be found within 10,000 iterations.
272
+ *
258
273
  * @example
274
+ * ```ts
259
275
  * import { Cron, Either } from "effect"
260
276
  *
261
277
  * const after = new Date("2021-01-01 00:00:00")
262
278
  * const cron = Either.getOrThrow(Cron.parse("0 4 8-14 * *"))
263
279
  * assert.deepStrictEqual(Cron.next(cron, after), new Date("2021-01-08 04:00:00"))
280
+ * ```
264
281
  *
265
282
  * @param cron - The `Cron` instance.
266
283
  * @param now - The `Date` to start searching from.
267
284
  *
268
285
  * @since 2.0.0
269
286
  */
270
- export const next = (cron: Cron, now?: Date): Date => {
287
+ export const next = (cron: Cron, now?: DateTime.DateTime.Input): Date => {
271
288
  const { days, hours, minutes, months, weekdays } = cron
272
289
 
273
290
  const restrictMinutes = minutes.size !== 0
@@ -276,61 +293,67 @@ export const next = (cron: Cron, now?: Date): Date => {
276
293
  const restrictMonths = months.size !== 0
277
294
  const restrictWeekdays = weekdays.size !== 0
278
295
 
279
- const current = now ? new Date(now.getTime()) : new Date()
280
- // Increment by one minute to ensure we don't match the current date.
281
- current.setMinutes(current.getMinutes() + 1)
282
- current.setSeconds(0)
283
- current.setMilliseconds(0)
284
-
285
- // Only search 8 years into the future.
286
- const limit = new Date(current).setFullYear(current.getFullYear() + 8)
287
- while (current.getTime() <= limit) {
288
- if (restrictMonths && !months.has(current.getMonth() + 1)) {
289
- current.setMonth(current.getMonth() + 1)
290
- current.setDate(1)
291
- current.setHours(0)
292
- current.setMinutes(0)
293
- continue
294
- }
295
-
296
- if (restrictDays && restrictWeekdays) {
297
- if (!days.has(current.getDate()) && !weekdays.has(current.getDay())) {
298
- current.setDate(current.getDate() + 1)
299
- current.setHours(0)
300
- current.setMinutes(0)
296
+ // TODO: This is unsafe.
297
+ const zoned = dateTime.unsafeMakeZoned(now ?? new Date())
298
+ const adjusted = Option.isSome(cron.tz) ? dateTime.setZone(zoned, cron.tz.value) : zoned
299
+
300
+ // TODO: This algorithm can be optimized to avoid some unnecessary iterations.
301
+ const result = dateTime.mutate(adjusted, (current) => {
302
+ // Increment by one minute to ensure we don't match the current date.
303
+ current.setUTCMinutes(current.getUTCMinutes() + 1)
304
+ current.setUTCSeconds(0)
305
+ current.setUTCMilliseconds(0)
306
+
307
+ for (let i = 0; i < 10_000; i++) {
308
+ if (restrictMonths && !months.has(current.getUTCMonth() + 1)) {
309
+ current.setUTCMonth(current.getUTCMonth() + 1)
310
+ current.setUTCDate(1)
311
+ current.setUTCHours(0)
312
+ current.setUTCMinutes(0)
301
313
  continue
302
314
  }
303
- } else if (restrictDays) {
304
- if (!days.has(current.getDate())) {
305
- current.setDate(current.getDate() + 1)
306
- current.setHours(0)
307
- current.setMinutes(0)
308
- continue
315
+
316
+ if (restrictDays && restrictWeekdays) {
317
+ if (!days.has(current.getUTCDate()) && !weekdays.has(current.getUTCDay())) {
318
+ current.setUTCDate(current.getUTCDate() + 1)
319
+ current.setUTCHours(0)
320
+ current.setUTCMinutes(0)
321
+ continue
322
+ }
323
+ } else if (restrictDays) {
324
+ if (!days.has(current.getUTCDate())) {
325
+ current.setUTCDate(current.getUTCDate() + 1)
326
+ current.setUTCHours(0)
327
+ current.setUTCMinutes(0)
328
+ continue
329
+ }
330
+ } else if (restrictWeekdays) {
331
+ if (!weekdays.has(current.getUTCDay())) {
332
+ current.setUTCDate(current.getUTCDate() + 1)
333
+ current.setUTCHours(0)
334
+ current.setUTCMinutes(0)
335
+ continue
336
+ }
309
337
  }
310
- } else if (restrictWeekdays) {
311
- if (!weekdays.has(current.getDay())) {
312
- current.setDate(current.getDate() + 1)
313
- current.setHours(0)
314
- current.setMinutes(0)
338
+
339
+ if (restrictHours && !hours.has(current.getUTCHours())) {
340
+ current.setUTCHours(current.getUTCHours() + 1)
341
+ current.setUTCMinutes(0)
315
342
  continue
316
343
  }
317
- }
318
344
 
319
- if (restrictHours && !hours.has(current.getHours())) {
320
- current.setHours(current.getHours() + 1)
321
- current.setMinutes(0)
322
- continue
323
- }
345
+ if (restrictMinutes && !minutes.has(current.getUTCMinutes())) {
346
+ current.setUTCMinutes(current.getUTCMinutes() + 1)
347
+ continue
348
+ }
324
349
 
325
- if (restrictMinutes && !minutes.has(current.getMinutes())) {
326
- current.setMinutes(current.getMinutes() + 1)
327
- continue
350
+ return
328
351
  }
329
352
 
330
- return current
331
- }
353
+ throw new Error("Unable to find next cron date")
354
+ })
332
355
 
333
- throw new Error("Unable to find next cron date")
356
+ return dateTime.toDateUtc(result)
334
357
  }
335
358
 
336
359
  /**
@@ -341,7 +364,7 @@ export const next = (cron: Cron, now?: Date): Date => {
341
364
  *
342
365
  * @since 2.0.0
343
366
  */
344
- export const sequence = function*(cron: Cron, now?: Date): IterableIterator<Date> {
367
+ export const sequence = function*(cron: Cron, now?: DateTime.DateTime.Input): IterableIterator<Date> {
345
368
  while (true) {
346
369
  yield now = next(cron, now)
347
370
  }
package/src/Data.ts CHANGED
@@ -27,6 +27,7 @@ export declare namespace Case {
27
27
 
28
28
  /**
29
29
  * @example
30
+ * ```ts
30
31
  * import { Data, Equal } from "effect"
31
32
  *
32
33
  * const alice = Data.struct({ name: "Alice", age: 30 })
@@ -38,6 +39,7 @@ export declare namespace Case {
38
39
  *
39
40
  * assert.deepStrictEqual(Equal.equals(alice, { name: "Alice", age: 30 }), false)
40
41
  * assert.deepStrictEqual(Equal.equals(alice, bob), false)
42
+ * ```
41
43
  *
42
44
  * @category constructors
43
45
  * @since 2.0.0
@@ -53,6 +55,7 @@ export const unsafeStruct = <A extends Record<string, any>>(as: A): { readonly [
53
55
 
54
56
  /**
55
57
  * @example
58
+ * ```ts
56
59
  * import { Data, Equal } from "effect"
57
60
  *
58
61
  * const alice = Data.tuple("Alice", 30)
@@ -64,6 +67,7 @@ export const unsafeStruct = <A extends Record<string, any>>(as: A): { readonly [
64
67
  *
65
68
  * assert.deepStrictEqual(Equal.equals(alice, ["Alice", 30]), false)
66
69
  * assert.deepStrictEqual(Equal.equals(alice, bob), false)
70
+ * ```
67
71
  *
68
72
  * @category constructors
69
73
  * @since 2.0.0
@@ -72,6 +76,7 @@ export const tuple = <As extends ReadonlyArray<any>>(...as: As): Readonly<As> =>
72
76
 
73
77
  /**
74
78
  * @example
79
+ * ```ts
75
80
  * import { Data, Equal } from "effect"
76
81
  *
77
82
  * const alice = Data.struct({ name: "Alice", age: 30 })
@@ -89,6 +94,7 @@ export const tuple = <As extends ReadonlyArray<any>>(...as: As): Readonly<As> =>
89
94
  * ),
90
95
  * true
91
96
  * )
97
+ * ```
92
98
  *
93
99
  * @category constructors
94
100
  * @since 2.0.0
@@ -110,6 +116,7 @@ export {
110
116
  * Provides a constructor for the specified `Case`.
111
117
  *
112
118
  * @example
119
+ * ```ts
113
120
  * import { Data, Equal } from "effect"
114
121
  *
115
122
  * interface Person {
@@ -128,6 +135,7 @@ export {
128
135
  * assert.deepStrictEqual(Equal.equals(mike1, mike2), true)
129
136
  * assert.deepStrictEqual(Equal.equals(mike1, john), false)
130
137
  *
138
+ * ```
131
139
  * @since 2.0.0
132
140
  * @category constructors
133
141
  */
@@ -138,6 +146,7 @@ export {
138
146
  * Provides a tagged constructor for the specified `Case`.
139
147
  *
140
148
  * @example
149
+ * ```ts
141
150
  * import { Data } from "effect"
142
151
  *
143
152
  * interface Person {
@@ -150,6 +159,7 @@ export {
150
159
  * const mike = Person({ name: "Mike" })
151
160
  *
152
161
  * assert.deepEqual(mike, { _tag: "Person", name: "Mike" })
162
+ * ```
153
163
  *
154
164
  * @since 2.0.0
155
165
  * @category constructors
@@ -167,6 +177,7 @@ export const tagged = <A extends { readonly _tag: string }>(
167
177
  * Provides a constructor for a Case Class.
168
178
  *
169
179
  * @example
180
+ * ```ts
170
181
  * import { Data, Equal } from "effect"
171
182
  *
172
183
  * class Person extends Data.Class<{ readonly name: string }> {}
@@ -179,6 +190,7 @@ export const tagged = <A extends { readonly _tag: string }>(
179
190
  * // Checking equality
180
191
  * assert.deepStrictEqual(Equal.equals(mike1, mike2), true)
181
192
  * assert.deepStrictEqual(Equal.equals(mike1, john), false)
193
+ * ```
182
194
  *
183
195
  * @since 2.0.0
184
196
  * @category constructors
@@ -192,6 +204,7 @@ export const Class: new<A extends Record<string, any> = {}>(
192
204
  * Provides a Tagged constructor for a Case Class.
193
205
  *
194
206
  * @example
207
+ * ```ts
195
208
  * import { Data, Equal } from "effect"
196
209
  *
197
210
  * class Person extends Data.TaggedClass("Person")<{ readonly name: string }> {}
@@ -206,6 +219,7 @@ export const Class: new<A extends Record<string, any> = {}>(
206
219
  * assert.deepStrictEqual(Equal.equals(mike1, john), false)
207
220
  *
208
221
  * assert.deepStrictEqual(mike1._tag, "Person")
222
+ * ```
209
223
  *
210
224
  * @since 2.0.0
211
225
  * @category constructors
@@ -403,6 +417,7 @@ export declare namespace TaggedEnum {
403
417
  * the constructor.
404
418
  *
405
419
  * @example
420
+ * ```ts
406
421
  * import { Data } from "effect"
407
422
  *
408
423
  * const { BadRequest, NotFound } = Data.taggedEnum<
@@ -411,6 +426,7 @@ export declare namespace TaggedEnum {
411
426
  * >()
412
427
  *
413
428
  * const notFound = NotFound({ status: 404, message: "Not Found" })
429
+ * ```
414
430
  *
415
431
  * @example
416
432
  * import { Data } from "effect"
@@ -437,6 +453,7 @@ export const taggedEnum: {
437
453
  * the constructor.
438
454
  *
439
455
  * @example
456
+ * ```ts
440
457
  * import { Data } from "effect"
441
458
  *
442
459
  * const { BadRequest, NotFound } = Data.taggedEnum<
@@ -445,6 +462,7 @@ export const taggedEnum: {
445
462
  * >()
446
463
  *
447
464
  * const notFound = NotFound({ status: 404, message: "Not Found" })
465
+ * ```
448
466
  *
449
467
  * @example
450
468
  * import { Data } from "effect"
@@ -482,6 +500,7 @@ export const taggedEnum: {
482
500
  * the constructor.
483
501
  *
484
502
  * @example
503
+ * ```ts
485
504
  * import { Data } from "effect"
486
505
  *
487
506
  * const { BadRequest, NotFound } = Data.taggedEnum<
@@ -490,6 +509,7 @@ export const taggedEnum: {
490
509
  * >()
491
510
  *
492
511
  * const notFound = NotFound({ status: 404, message: "Not Found" })
512
+ * ```
493
513
  *
494
514
  * @example
495
515
  * import { Data } from "effect"
@@ -527,6 +547,7 @@ export const taggedEnum: {
527
547
  * the constructor.
528
548
  *
529
549
  * @example
550
+ * ```ts
530
551
  * import { Data } from "effect"
531
552
  *
532
553
  * const { BadRequest, NotFound } = Data.taggedEnum<
@@ -535,6 +556,7 @@ export const taggedEnum: {
535
556
  * >()
536
557
  *
537
558
  * const notFound = NotFound({ status: 404, message: "Not Found" })
559
+ * ```
538
560
  *
539
561
  * @example
540
562
  * import { Data } from "effect"
@@ -572,6 +594,7 @@ export const taggedEnum: {
572
594
  * the constructor.
573
595
  *
574
596
  * @example
597
+ * ```ts
575
598
  * import { Data } from "effect"
576
599
  *
577
600
  * const { BadRequest, NotFound } = Data.taggedEnum<
@@ -580,6 +603,7 @@ export const taggedEnum: {
580
603
  * >()
581
604
  *
582
605
  * const notFound = NotFound({ status: 404, message: "Not Found" })
606
+ * ```
583
607
  *
584
608
  * @example
585
609
  * import { Data } from "effect"
@@ -617,6 +641,7 @@ export const taggedEnum: {
617
641
  * the constructor.
618
642
  *
619
643
  * @example
644
+ * ```ts
620
645
  * import { Data } from "effect"
621
646
  *
622
647
  * const { BadRequest, NotFound } = Data.taggedEnum<
@@ -625,6 +650,7 @@ export const taggedEnum: {
625
650
  * >()
626
651
  *
627
652
  * const notFound = NotFound({ status: 404, message: "Not Found" })
653
+ * ```
628
654
  *
629
655
  * @example
630
656
  * import { Data } from "effect"