effect 4.0.0-beta.3 → 4.0.0-beta.30

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 (983) hide show
  1. package/dist/Array.d.ts +126 -299
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +102 -62
  4. package/dist/Array.js.map +1 -1
  5. package/dist/Brand.d.ts +1 -1
  6. package/dist/Brand.d.ts.map +1 -1
  7. package/dist/Brand.js +1 -1
  8. package/dist/Brand.js.map +1 -1
  9. package/dist/Cache.d.ts +2 -2
  10. package/dist/Cache.d.ts.map +1 -1
  11. package/dist/Cache.js +6 -5
  12. package/dist/Cache.js.map +1 -1
  13. package/dist/Cause.d.ts +2 -2
  14. package/dist/Cause.d.ts.map +1 -1
  15. package/dist/Channel.d.ts +116 -30
  16. package/dist/Channel.d.ts.map +1 -1
  17. package/dist/Channel.js +82 -37
  18. package/dist/Channel.js.map +1 -1
  19. package/dist/Chunk.d.ts +54 -247
  20. package/dist/Chunk.d.ts.map +1 -1
  21. package/dist/Chunk.js +36 -67
  22. package/dist/Chunk.js.map +1 -1
  23. package/dist/Combiner.d.ts +280 -13
  24. package/dist/Combiner.d.ts.map +1 -1
  25. package/dist/Combiner.js +198 -7
  26. package/dist/Combiner.js.map +1 -1
  27. package/dist/Config.d.ts +165 -9
  28. package/dist/Config.d.ts.map +1 -1
  29. package/dist/Config.js +65 -10
  30. package/dist/Config.js.map +1 -1
  31. package/dist/ConfigProvider.d.ts +1 -1
  32. package/dist/Cron.d.ts +1 -1
  33. package/dist/Data.d.ts +535 -366
  34. package/dist/Data.d.ts.map +1 -1
  35. package/dist/Data.js +132 -79
  36. package/dist/Data.js.map +1 -1
  37. package/dist/DateTime.d.ts +23 -161
  38. package/dist/DateTime.d.ts.map +1 -1
  39. package/dist/DateTime.js +6 -51
  40. package/dist/DateTime.js.map +1 -1
  41. package/dist/Duration.d.ts +11 -11
  42. package/dist/Duration.d.ts.map +1 -1
  43. package/dist/Duration.js +11 -11
  44. package/dist/Duration.js.map +1 -1
  45. package/dist/Effect.d.ts +1206 -924
  46. package/dist/Effect.d.ts.map +1 -1
  47. package/dist/Effect.js +390 -329
  48. package/dist/Effect.js.map +1 -1
  49. package/dist/Encoding.d.ts +194 -0
  50. package/dist/Encoding.d.ts.map +1 -0
  51. package/dist/Encoding.js +352 -0
  52. package/dist/Encoding.js.map +1 -0
  53. package/dist/Equal.d.ts +276 -109
  54. package/dist/Equal.d.ts.map +1 -1
  55. package/dist/Equal.js +124 -48
  56. package/dist/Equal.js.map +1 -1
  57. package/dist/ErrorReporter.d.ts +374 -0
  58. package/dist/ErrorReporter.d.ts.map +1 -0
  59. package/dist/ErrorReporter.js +244 -0
  60. package/dist/ErrorReporter.js.map +1 -0
  61. package/dist/Exit.d.ts +24 -12
  62. package/dist/Exit.d.ts.map +1 -1
  63. package/dist/Exit.js +8 -4
  64. package/dist/Exit.js.map +1 -1
  65. package/dist/Fiber.d.ts +3 -2
  66. package/dist/Fiber.d.ts.map +1 -1
  67. package/dist/Fiber.js.map +1 -1
  68. package/dist/FileSystem.d.ts +1 -1
  69. package/dist/FileSystem.d.ts.map +1 -1
  70. package/dist/FileSystem.js +5 -5
  71. package/dist/FileSystem.js.map +1 -1
  72. package/dist/Filter.d.ts +34 -38
  73. package/dist/Filter.d.ts.map +1 -1
  74. package/dist/Filter.js +15 -13
  75. package/dist/Filter.js.map +1 -1
  76. package/dist/Formatter.d.ts +131 -47
  77. package/dist/Formatter.d.ts.map +1 -1
  78. package/dist/Formatter.js +229 -51
  79. package/dist/Formatter.js.map +1 -1
  80. package/dist/Function.d.ts +1 -9
  81. package/dist/Function.d.ts.map +1 -1
  82. package/dist/Function.js +2 -10
  83. package/dist/Function.js.map +1 -1
  84. package/dist/Graph.d.ts +1 -1
  85. package/dist/Graph.d.ts.map +1 -1
  86. package/dist/Graph.js +5 -8
  87. package/dist/Graph.js.map +1 -1
  88. package/dist/HashMap.d.ts +15 -14
  89. package/dist/HashMap.d.ts.map +1 -1
  90. package/dist/HashMap.js +4 -4
  91. package/dist/HashMap.js.map +1 -1
  92. package/dist/Iterable.d.ts +39 -39
  93. package/dist/Iterable.d.ts.map +1 -1
  94. package/dist/Iterable.js +94 -22
  95. package/dist/Iterable.js.map +1 -1
  96. package/dist/JsonSchema.d.ts +299 -10
  97. package/dist/JsonSchema.d.ts.map +1 -1
  98. package/dist/JsonSchema.js +323 -4
  99. package/dist/JsonSchema.js.map +1 -1
  100. package/dist/Latch.d.ts +109 -0
  101. package/dist/Latch.d.ts.map +1 -0
  102. package/dist/Latch.js +72 -0
  103. package/dist/Latch.js.map +1 -0
  104. package/dist/Layer.d.ts +121 -126
  105. package/dist/Layer.d.ts.map +1 -1
  106. package/dist/Layer.js +43 -44
  107. package/dist/Layer.js.map +1 -1
  108. package/dist/LayerMap.d.ts +8 -8
  109. package/dist/LayerMap.d.ts.map +1 -1
  110. package/dist/LayerMap.js +3 -3
  111. package/dist/LogLevel.d.ts +32 -0
  112. package/dist/LogLevel.d.ts.map +1 -1
  113. package/dist/LogLevel.js +28 -100
  114. package/dist/LogLevel.js.map +1 -1
  115. package/dist/Logger.d.ts +29 -95
  116. package/dist/Logger.d.ts.map +1 -1
  117. package/dist/Logger.js +2 -3
  118. package/dist/Logger.js.map +1 -1
  119. package/dist/ManagedRuntime.d.ts +2 -2
  120. package/dist/ManagedRuntime.js +2 -2
  121. package/dist/Metric.d.ts +4 -6
  122. package/dist/Metric.d.ts.map +1 -1
  123. package/dist/Metric.js +3 -5
  124. package/dist/Metric.js.map +1 -1
  125. package/dist/Newtype.d.ts +291 -0
  126. package/dist/Newtype.d.ts.map +1 -0
  127. package/dist/Newtype.js +161 -0
  128. package/dist/Newtype.js.map +1 -0
  129. package/dist/Optic.d.ts +947 -18
  130. package/dist/Optic.d.ts.map +1 -1
  131. package/dist/Optic.js +454 -5
  132. package/dist/Optic.js.map +1 -1
  133. package/dist/Option.d.ts +23 -16
  134. package/dist/Option.d.ts.map +1 -1
  135. package/dist/Option.js +15 -9
  136. package/dist/Option.js.map +1 -1
  137. package/dist/Pipeable.d.ts +17 -0
  138. package/dist/Pipeable.d.ts.map +1 -1
  139. package/dist/Pipeable.js +19 -1
  140. package/dist/Pipeable.js.map +1 -1
  141. package/dist/PlatformError.d.ts +10 -9
  142. package/dist/PlatformError.d.ts.map +1 -1
  143. package/dist/PlatformError.js +2 -2
  144. package/dist/PlatformError.js.map +1 -1
  145. package/dist/Pool.d.ts +6 -4
  146. package/dist/Pool.d.ts.map +1 -1
  147. package/dist/Pool.js +7 -5
  148. package/dist/Pool.js.map +1 -1
  149. package/dist/PubSub.d.ts +3 -2
  150. package/dist/PubSub.d.ts.map +1 -1
  151. package/dist/PubSub.js +3 -2
  152. package/dist/PubSub.js.map +1 -1
  153. package/dist/Pull.d.ts.map +1 -1
  154. package/dist/Pull.js +1 -1
  155. package/dist/Pull.js.map +1 -1
  156. package/dist/Queue.d.ts.map +1 -1
  157. package/dist/Queue.js +0 -1
  158. package/dist/Queue.js.map +1 -1
  159. package/dist/Random.d.ts +35 -1
  160. package/dist/Random.d.ts.map +1 -1
  161. package/dist/Random.js +46 -12
  162. package/dist/Random.js.map +1 -1
  163. package/dist/RcMap.d.ts +2 -2
  164. package/dist/RcMap.d.ts.map +1 -1
  165. package/dist/RcMap.js +1 -1
  166. package/dist/RcMap.js.map +1 -1
  167. package/dist/RcRef.d.ts +1 -1
  168. package/dist/RcRef.d.ts.map +1 -1
  169. package/dist/Record.d.ts +23 -120
  170. package/dist/Record.d.ts.map +1 -1
  171. package/dist/Record.js +21 -41
  172. package/dist/Record.js.map +1 -1
  173. package/dist/Reducer.d.ts +166 -7
  174. package/dist/Reducer.d.ts.map +1 -1
  175. package/dist/Reducer.js +135 -1
  176. package/dist/Reducer.js.map +1 -1
  177. package/dist/References.d.ts +9 -4
  178. package/dist/References.d.ts.map +1 -1
  179. package/dist/References.js +6 -1
  180. package/dist/References.js.map +1 -1
  181. package/dist/Request.d.ts +1 -1
  182. package/dist/Request.d.ts.map +1 -1
  183. package/dist/Request.js +2 -1
  184. package/dist/Request.js.map +1 -1
  185. package/dist/RequestResolver.d.ts +25 -45
  186. package/dist/RequestResolver.d.ts.map +1 -1
  187. package/dist/RequestResolver.js +10 -30
  188. package/dist/RequestResolver.js.map +1 -1
  189. package/dist/Result.d.ts +1 -1
  190. package/dist/Result.d.ts.map +1 -1
  191. package/dist/Result.js +1 -2
  192. package/dist/Result.js.map +1 -1
  193. package/dist/Runtime.d.ts +66 -0
  194. package/dist/Runtime.d.ts.map +1 -1
  195. package/dist/Runtime.js +79 -6
  196. package/dist/Runtime.js.map +1 -1
  197. package/dist/Schedule.d.ts +191 -102
  198. package/dist/Schedule.d.ts.map +1 -1
  199. package/dist/Schedule.js +152 -66
  200. package/dist/Schedule.js.map +1 -1
  201. package/dist/Scheduler.d.ts +9 -0
  202. package/dist/Scheduler.d.ts.map +1 -1
  203. package/dist/Scheduler.js +11 -0
  204. package/dist/Scheduler.js.map +1 -1
  205. package/dist/Schema.d.ts +309 -88
  206. package/dist/Schema.d.ts.map +1 -1
  207. package/dist/Schema.js +499 -109
  208. package/dist/Schema.js.map +1 -1
  209. package/dist/SchemaAST.d.ts.map +1 -1
  210. package/dist/SchemaAST.js +129 -23
  211. package/dist/SchemaAST.js.map +1 -1
  212. package/dist/SchemaGetter.d.ts +5 -5
  213. package/dist/SchemaGetter.d.ts.map +1 -1
  214. package/dist/SchemaGetter.js +12 -14
  215. package/dist/SchemaGetter.js.map +1 -1
  216. package/dist/SchemaParser.d.ts +5 -0
  217. package/dist/SchemaParser.d.ts.map +1 -1
  218. package/dist/SchemaParser.js +10 -0
  219. package/dist/SchemaParser.js.map +1 -1
  220. package/dist/SchemaRepresentation.d.ts +44 -43
  221. package/dist/SchemaRepresentation.d.ts.map +1 -1
  222. package/dist/SchemaRepresentation.js +49 -24
  223. package/dist/SchemaRepresentation.js.map +1 -1
  224. package/dist/SchemaTransformation.d.ts +107 -3
  225. package/dist/SchemaTransformation.d.ts.map +1 -1
  226. package/dist/SchemaTransformation.js +159 -4
  227. package/dist/SchemaTransformation.js.map +1 -1
  228. package/dist/ScopedCache.d.ts +2 -2
  229. package/dist/ScopedCache.d.ts.map +1 -1
  230. package/dist/ScopedCache.js +1 -1
  231. package/dist/ScopedCache.js.map +1 -1
  232. package/dist/Semaphore.d.ts +211 -0
  233. package/dist/Semaphore.d.ts.map +1 -0
  234. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  235. package/dist/Semaphore.js.map +1 -0
  236. package/dist/ServiceMap.d.ts +41 -31
  237. package/dist/ServiceMap.d.ts.map +1 -1
  238. package/dist/ServiceMap.js +3 -3
  239. package/dist/ServiceMap.js.map +1 -1
  240. package/dist/Sink.d.ts +13 -13
  241. package/dist/Sink.d.ts.map +1 -1
  242. package/dist/Sink.js +53 -6
  243. package/dist/Sink.js.map +1 -1
  244. package/dist/Stdio.d.ts +16 -4
  245. package/dist/Stdio.d.ts.map +1 -1
  246. package/dist/Stdio.js +18 -0
  247. package/dist/Stdio.js.map +1 -1
  248. package/dist/Stream.d.ts +250 -428
  249. package/dist/Stream.d.ts.map +1 -1
  250. package/dist/Stream.js +137 -82
  251. package/dist/Stream.js.map +1 -1
  252. package/dist/Struct.d.ts +16 -0
  253. package/dist/Struct.d.ts.map +1 -1
  254. package/dist/Struct.js +22 -0
  255. package/dist/Struct.js.map +1 -1
  256. package/dist/SubscriptionRef.d.ts +2 -1
  257. package/dist/SubscriptionRef.d.ts.map +1 -1
  258. package/dist/SubscriptionRef.js +2 -1
  259. package/dist/SubscriptionRef.js.map +1 -1
  260. package/dist/SynchronizedRef.d.ts +2 -1
  261. package/dist/SynchronizedRef.d.ts.map +1 -1
  262. package/dist/SynchronizedRef.js +2 -1
  263. package/dist/SynchronizedRef.js.map +1 -1
  264. package/dist/Trie.d.ts +18 -17
  265. package/dist/Trie.d.ts.map +1 -1
  266. package/dist/Trie.js +5 -5
  267. package/dist/Trie.js.map +1 -1
  268. package/dist/TxChunk.d.ts +37 -37
  269. package/dist/TxChunk.d.ts.map +1 -1
  270. package/dist/TxChunk.js +3 -3
  271. package/dist/TxChunk.js.map +1 -1
  272. package/dist/TxDeferred.d.ts +328 -0
  273. package/dist/TxDeferred.d.ts.map +1 -0
  274. package/dist/TxDeferred.js +196 -0
  275. package/dist/TxDeferred.js.map +1 -0
  276. package/dist/TxHashMap.d.ts +84 -83
  277. package/dist/TxHashMap.d.ts.map +1 -1
  278. package/dist/TxHashMap.js +24 -24
  279. package/dist/TxHashMap.js.map +1 -1
  280. package/dist/TxHashSet.d.ts +35 -35
  281. package/dist/TxHashSet.d.ts.map +1 -1
  282. package/dist/TxHashSet.js +14 -14
  283. package/dist/TxHashSet.js.map +1 -1
  284. package/dist/TxPriorityQueue.d.ts +609 -0
  285. package/dist/TxPriorityQueue.d.ts.map +1 -0
  286. package/dist/TxPriorityQueue.js +415 -0
  287. package/dist/TxPriorityQueue.js.map +1 -0
  288. package/dist/TxPubSub.d.ts +585 -0
  289. package/dist/TxPubSub.d.ts.map +1 -0
  290. package/dist/TxPubSub.js +521 -0
  291. package/dist/TxPubSub.js.map +1 -0
  292. package/dist/TxQueue.d.ts +32 -32
  293. package/dist/TxQueue.d.ts.map +1 -1
  294. package/dist/TxQueue.js +26 -26
  295. package/dist/TxQueue.js.map +1 -1
  296. package/dist/TxReentrantLock.d.ts +523 -0
  297. package/dist/TxReentrantLock.d.ts.map +1 -0
  298. package/dist/TxReentrantLock.js +504 -0
  299. package/dist/TxReentrantLock.js.map +1 -0
  300. package/dist/TxRef.d.ts +34 -34
  301. package/dist/TxRef.d.ts.map +1 -1
  302. package/dist/TxRef.js +21 -14
  303. package/dist/TxRef.js.map +1 -1
  304. package/dist/TxSemaphore.d.ts +8 -8
  305. package/dist/TxSemaphore.d.ts.map +1 -1
  306. package/dist/TxSemaphore.js +7 -7
  307. package/dist/TxSemaphore.js.map +1 -1
  308. package/dist/TxSubscriptionRef.d.ts +508 -0
  309. package/dist/TxSubscriptionRef.d.ts.map +1 -0
  310. package/dist/TxSubscriptionRef.js +293 -0
  311. package/dist/TxSubscriptionRef.js.map +1 -0
  312. package/dist/Types.d.ts +80 -23
  313. package/dist/Types.d.ts.map +1 -1
  314. package/dist/Utils.d.ts +137 -65
  315. package/dist/Utils.d.ts.map +1 -1
  316. package/dist/Utils.js +38 -66
  317. package/dist/Utils.js.map +1 -1
  318. package/dist/index.d.ts +718 -23
  319. package/dist/index.d.ts.map +1 -1
  320. package/dist/index.js +718 -23
  321. package/dist/index.js.map +1 -1
  322. package/dist/internal/core.js +11 -3
  323. package/dist/internal/core.js.map +1 -1
  324. package/dist/internal/dateTime.js +3 -11
  325. package/dist/internal/dateTime.js.map +1 -1
  326. package/dist/internal/effect.js +264 -126
  327. package/dist/internal/effect.js.map +1 -1
  328. package/dist/internal/hashMap.js +5 -4
  329. package/dist/internal/hashMap.js.map +1 -1
  330. package/dist/internal/random.d.ts +2 -0
  331. package/dist/internal/random.d.ts.map +1 -0
  332. package/dist/internal/random.js +13 -0
  333. package/dist/internal/random.js.map +1 -0
  334. package/dist/internal/rcRef.js +3 -2
  335. package/dist/internal/rcRef.js.map +1 -1
  336. package/dist/internal/request.js +2 -2
  337. package/dist/internal/request.js.map +1 -1
  338. package/dist/internal/schema/annotations.js +2 -0
  339. package/dist/internal/schema/annotations.js.map +1 -1
  340. package/dist/internal/schema/representation.js +47 -106
  341. package/dist/internal/schema/representation.js.map +1 -1
  342. package/dist/internal/schema/schema.js +1 -0
  343. package/dist/internal/schema/schema.js.map +1 -1
  344. package/dist/internal/schema/to-codec.js +7 -10
  345. package/dist/internal/schema/to-codec.js.map +1 -1
  346. package/dist/internal/trie.js +5 -4
  347. package/dist/internal/trie.js.map +1 -1
  348. package/dist/testing/TestClock.d.ts +8 -7
  349. package/dist/testing/TestClock.d.ts.map +1 -1
  350. package/dist/testing/TestClock.js +6 -4
  351. package/dist/testing/TestClock.js.map +1 -1
  352. package/dist/testing/TestSchema.d.ts +266 -32
  353. package/dist/testing/TestSchema.d.ts.map +1 -1
  354. package/dist/testing/TestSchema.js +296 -23
  355. package/dist/testing/TestSchema.js.map +1 -1
  356. package/dist/testing/index.d.ts +64 -1
  357. package/dist/testing/index.d.ts.map +1 -1
  358. package/dist/testing/index.js +64 -1
  359. package/dist/testing/index.js.map +1 -1
  360. package/dist/unstable/ai/AiError.d.ts +134 -51
  361. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  362. package/dist/unstable/ai/AiError.js +19 -16
  363. package/dist/unstable/ai/AiError.js.map +1 -1
  364. package/dist/unstable/ai/Chat.d.ts +5 -5
  365. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  366. package/dist/unstable/ai/Chat.js +38 -44
  367. package/dist/unstable/ai/Chat.js.map +1 -1
  368. package/dist/unstable/ai/LanguageModel.d.ts +16 -30
  369. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  370. package/dist/unstable/ai/LanguageModel.js +97 -37
  371. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  372. package/dist/unstable/ai/McpSchema.d.ts +183 -88
  373. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  374. package/dist/unstable/ai/McpSchema.js +57 -12
  375. package/dist/unstable/ai/McpSchema.js.map +1 -1
  376. package/dist/unstable/ai/McpServer.d.ts +66 -13
  377. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  378. package/dist/unstable/ai/McpServer.js +193 -51
  379. package/dist/unstable/ai/McpServer.js.map +1 -1
  380. package/dist/unstable/ai/Model.d.ts +25 -7
  381. package/dist/unstable/ai/Model.d.ts.map +1 -1
  382. package/dist/unstable/ai/Model.js +22 -6
  383. package/dist/unstable/ai/Model.js.map +1 -1
  384. package/dist/unstable/ai/Prompt.d.ts +20 -20
  385. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  386. package/dist/unstable/ai/Response.d.ts +26 -26
  387. package/dist/unstable/ai/Response.d.ts.map +1 -1
  388. package/dist/unstable/ai/Response.js +1 -1
  389. package/dist/unstable/ai/Response.js.map +1 -1
  390. package/dist/unstable/ai/Tool.d.ts +20 -4
  391. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  392. package/dist/unstable/ai/Tool.js +14 -9
  393. package/dist/unstable/ai/Tool.js.map +1 -1
  394. package/dist/unstable/ai/Toolkit.d.ts +1 -1
  395. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  396. package/dist/unstable/ai/Toolkit.js +4 -11
  397. package/dist/unstable/ai/Toolkit.js.map +1 -1
  398. package/dist/unstable/ai/index.d.ts +1 -1
  399. package/dist/unstable/ai/index.js +1 -1
  400. package/dist/unstable/ai/internal/codec-transformer.js +0 -5
  401. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  402. package/dist/unstable/cli/CliError.d.ts +27 -60
  403. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  404. package/dist/unstable/cli/CliError.js +25 -57
  405. package/dist/unstable/cli/CliError.js.map +1 -1
  406. package/dist/unstable/cli/CliOutput.js +59 -6
  407. package/dist/unstable/cli/CliOutput.js.map +1 -1
  408. package/dist/unstable/cli/Command.d.ts +368 -56
  409. package/dist/unstable/cli/Command.d.ts.map +1 -1
  410. package/dist/unstable/cli/Command.js +325 -64
  411. package/dist/unstable/cli/Command.js.map +1 -1
  412. package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
  413. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
  414. package/dist/unstable/cli/GlobalFlag.js +118 -0
  415. package/dist/unstable/cli/GlobalFlag.js.map +1 -0
  416. package/dist/unstable/cli/HelpDoc.d.ts +70 -2
  417. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  418. package/dist/unstable/cli/Primitive.d.ts +1 -1
  419. package/dist/unstable/cli/Primitive.js +1 -1
  420. package/dist/unstable/cli/Prompt.js +35 -8
  421. package/dist/unstable/cli/Prompt.js.map +1 -1
  422. package/dist/unstable/cli/index.d.ts +4 -0
  423. package/dist/unstable/cli/index.d.ts.map +1 -1
  424. package/dist/unstable/cli/index.js +4 -0
  425. package/dist/unstable/cli/index.js.map +1 -1
  426. package/dist/unstable/cli/internal/command.d.ts +40 -14
  427. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  428. package/dist/unstable/cli/internal/command.js +72 -46
  429. package/dist/unstable/cli/internal/command.js.map +1 -1
  430. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
  431. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  432. package/dist/unstable/cli/internal/config.js +42 -0
  433. package/dist/unstable/cli/internal/config.js.map +1 -1
  434. package/dist/unstable/cli/internal/help.d.ts +33 -0
  435. package/dist/unstable/cli/internal/help.d.ts.map +1 -0
  436. package/dist/unstable/cli/internal/help.js +125 -0
  437. package/dist/unstable/cli/internal/help.js.map +1 -0
  438. package/dist/unstable/cli/internal/parser.js +55 -42
  439. package/dist/unstable/cli/internal/parser.js.map +1 -1
  440. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  441. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  442. package/dist/unstable/cluster/ClusterCron.js +1 -1
  443. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  444. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  445. package/dist/unstable/cluster/ClusterWorkflowEngine.js +4 -3
  446. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  447. package/dist/unstable/cluster/Entity.d.ts +7 -6
  448. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  449. package/dist/unstable/cluster/Entity.js.map +1 -1
  450. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  451. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  452. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  453. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  454. package/dist/unstable/cluster/K8sHttpClient.js +4 -4
  455. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  456. package/dist/unstable/cluster/Message.d.ts +10 -10
  457. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  458. package/dist/unstable/cluster/MessageStorage.js +2 -1
  459. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  460. package/dist/unstable/cluster/Reply.d.ts +6 -6
  461. package/dist/unstable/cluster/Runner.d.ts +1 -1
  462. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  463. package/dist/unstable/cluster/Runners.js +4 -3
  464. package/dist/unstable/cluster/Runners.js.map +1 -1
  465. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  466. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  467. package/dist/unstable/cluster/Sharding.js +9 -7
  468. package/dist/unstable/cluster/Sharding.js.map +1 -1
  469. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  470. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  471. package/dist/unstable/cluster/ShardingConfig.js +20 -20
  472. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  473. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  474. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  475. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  476. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  477. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  478. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  479. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  480. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  481. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  482. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  483. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  484. package/dist/unstable/encoding/Sse.d.ts +4 -4
  485. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  486. package/dist/unstable/encoding/Sse.js +1 -1
  487. package/dist/unstable/encoding/Sse.js.map +1 -1
  488. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  489. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  490. package/dist/unstable/eventlog/EventLog.js +2 -1
  491. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  492. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  493. package/dist/unstable/http/Cookies.d.ts +47 -3
  494. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  495. package/dist/unstable/http/Cookies.js +24 -2
  496. package/dist/unstable/http/Cookies.js.map +1 -1
  497. package/dist/unstable/http/Headers.d.ts +16 -0
  498. package/dist/unstable/http/Headers.d.ts.map +1 -1
  499. package/dist/unstable/http/Headers.js +38 -10
  500. package/dist/unstable/http/Headers.js.map +1 -1
  501. package/dist/unstable/http/HttpBody.d.ts +3 -3
  502. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  503. package/dist/unstable/http/HttpBody.js +6 -6
  504. package/dist/unstable/http/HttpBody.js.map +1 -1
  505. package/dist/unstable/http/HttpClient.d.ts +117 -15
  506. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  507. package/dist/unstable/http/HttpClient.js +189 -12
  508. package/dist/unstable/http/HttpClient.js.map +1 -1
  509. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  510. package/dist/unstable/http/HttpClientRequest.d.ts +16 -11
  511. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  512. package/dist/unstable/http/HttpClientRequest.js +31 -20
  513. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  514. package/dist/unstable/http/HttpClientResponse.d.ts +2 -1
  515. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  516. package/dist/unstable/http/HttpClientResponse.js +4 -0
  517. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  518. package/dist/unstable/http/HttpEffect.d.ts +7 -5
  519. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  520. package/dist/unstable/http/HttpEffect.js +46 -54
  521. package/dist/unstable/http/HttpEffect.js.map +1 -1
  522. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  523. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  524. package/dist/unstable/http/HttpMethod.js +3 -3
  525. package/dist/unstable/http/HttpMethod.js.map +1 -1
  526. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  527. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  528. package/dist/unstable/http/HttpMiddleware.js +8 -17
  529. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  530. package/dist/unstable/http/HttpServerError.d.ts +20 -33
  531. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  532. package/dist/unstable/http/HttpServerError.js +37 -44
  533. package/dist/unstable/http/HttpServerError.js.map +1 -1
  534. package/dist/unstable/http/HttpServerRequest.d.ts +12 -1
  535. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  536. package/dist/unstable/http/HttpServerRequest.js +291 -1
  537. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  538. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  539. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  540. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  541. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  542. package/dist/unstable/http/HttpServerResponse.d.ts +50 -3
  543. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  544. package/dist/unstable/http/HttpServerResponse.js +234 -1
  545. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  546. package/dist/unstable/http/HttpStaticServer.d.ts +69 -0
  547. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -0
  548. package/dist/unstable/http/HttpStaticServer.js +353 -0
  549. package/dist/unstable/http/HttpStaticServer.js.map +1 -0
  550. package/dist/unstable/http/Multipart.d.ts +3 -3
  551. package/dist/unstable/http/UrlParams.d.ts +14 -6
  552. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  553. package/dist/unstable/http/UrlParams.js +1 -1
  554. package/dist/unstable/http/UrlParams.js.map +1 -1
  555. package/dist/unstable/http/index.d.ts +4 -0
  556. package/dist/unstable/http/index.d.ts.map +1 -1
  557. package/dist/unstable/http/index.js +4 -0
  558. package/dist/unstable/http/index.js.map +1 -1
  559. package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
  560. package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
  561. package/dist/unstable/http/internal/preResponseHandler.js +10 -0
  562. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
  563. package/dist/unstable/httpapi/HttpApi.d.ts +4 -4
  564. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  565. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  566. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +11 -5
  567. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  568. package/dist/unstable/httpapi/HttpApiBuilder.js +28 -18
  569. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  570. package/dist/unstable/httpapi/HttpApiClient.d.ts +66 -6
  571. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  572. package/dist/unstable/httpapi/HttpApiClient.js +40 -3
  573. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  574. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +41 -54
  575. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  576. package/dist/unstable/httpapi/HttpApiEndpoint.js +17 -26
  577. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  578. package/dist/unstable/httpapi/HttpApiError.d.ts +16 -14
  579. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  580. package/dist/unstable/httpapi/HttpApiError.js +44 -29
  581. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  582. package/dist/unstable/httpapi/HttpApiGroup.d.ts +4 -3
  583. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  584. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  585. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +4 -4
  586. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  587. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  588. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  589. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  590. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  591. package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
  592. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  593. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  594. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  595. package/dist/unstable/httpapi/OpenApi.js +32 -21
  596. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  597. package/dist/unstable/observability/Otlp.d.ts +12 -12
  598. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  599. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  600. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  601. package/dist/unstable/observability/OtlpExporter.js +1 -1
  602. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  603. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  604. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  605. package/dist/unstable/observability/OtlpLogger.js +7 -4
  606. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  607. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  608. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  609. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  610. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  611. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  612. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  613. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  614. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  615. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  616. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  617. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  618. package/dist/unstable/persistence/PersistedCache.js +2 -1
  619. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  620. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  621. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  622. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  623. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  624. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  625. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  626. package/dist/unstable/persistence/Persistence.js +2 -2
  627. package/dist/unstable/persistence/Persistence.js.map +1 -1
  628. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  629. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  630. package/dist/unstable/persistence/RateLimiter.js +1 -1
  631. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  632. package/dist/unstable/process/ChildProcess.d.ts +5 -128
  633. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  634. package/dist/unstable/process/ChildProcess.js +1 -65
  635. package/dist/unstable/process/ChildProcess.js.map +1 -1
  636. package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -7
  637. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  638. package/dist/unstable/process/ChildProcessSpawner.js +21 -1
  639. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  640. package/dist/unstable/reactivity/Atom.d.ts +73 -12
  641. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  642. package/dist/unstable/reactivity/Atom.js +107 -20
  643. package/dist/unstable/reactivity/Atom.js.map +1 -1
  644. package/dist/unstable/reactivity/AtomHttpApi.d.ts +10 -12
  645. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  646. package/dist/unstable/reactivity/AtomHttpApi.js +42 -12
  647. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  648. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  649. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  650. package/dist/unstable/reactivity/AtomRegistry.js +50 -9
  651. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  652. package/dist/unstable/reactivity/AtomRpc.d.ts +9 -9
  653. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  654. package/dist/unstable/reactivity/AtomRpc.js +47 -21
  655. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  656. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  657. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  658. package/dist/unstable/reactivity/Hydration.js +76 -0
  659. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  660. package/dist/unstable/reactivity/index.d.ts +4 -0
  661. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  662. package/dist/unstable/reactivity/index.js +4 -0
  663. package/dist/unstable/reactivity/index.js.map +1 -1
  664. package/dist/unstable/rpc/Rpc.d.ts +5 -5
  665. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  666. package/dist/unstable/rpc/Rpc.js.map +1 -1
  667. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  668. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  669. package/dist/unstable/rpc/RpcClient.js +6 -13
  670. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  671. package/dist/unstable/rpc/RpcGroup.d.ts +2 -2
  672. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  673. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  674. package/dist/unstable/rpc/RpcMiddleware.d.ts +8 -8
  675. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  676. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  677. package/dist/unstable/rpc/RpcSchema.d.ts +13 -0
  678. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  679. package/dist/unstable/rpc/RpcSchema.js +14 -0
  680. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  681. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  682. package/dist/unstable/rpc/RpcSerialization.js +34 -9
  683. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  684. package/dist/unstable/rpc/RpcServer.d.ts +5 -9
  685. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  686. package/dist/unstable/rpc/RpcServer.js +17 -17
  687. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  688. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  689. package/dist/unstable/rpc/Utils.js +3 -2
  690. package/dist/unstable/rpc/Utils.js.map +1 -1
  691. package/dist/unstable/schema/Model.d.ts +22 -1
  692. package/dist/unstable/schema/Model.d.ts.map +1 -1
  693. package/dist/unstable/schema/Model.js +15 -0
  694. package/dist/unstable/schema/Model.js.map +1 -1
  695. package/dist/unstable/schema/VariantSchema.d.ts +5 -5
  696. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  697. package/dist/unstable/schema/VariantSchema.js +6 -6
  698. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  699. package/dist/unstable/socket/Socket.d.ts +4 -4
  700. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  701. package/dist/unstable/socket/Socket.js +6 -5
  702. package/dist/unstable/socket/Socket.js.map +1 -1
  703. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  704. package/dist/unstable/sql/Migrator.d.ts +1 -1
  705. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  706. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  707. package/dist/unstable/sql/SqlError.d.ts +14 -14
  708. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  709. package/dist/unstable/sql/SqlError.js +9 -3
  710. package/dist/unstable/sql/SqlError.js.map +1 -1
  711. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  712. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  713. package/dist/unstable/sql/SqlModel.js +3 -3
  714. package/dist/unstable/sql/SqlModel.js.map +1 -1
  715. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  716. package/dist/unstable/sql/SqlResolver.js +17 -8
  717. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  718. package/dist/unstable/sql/SqlSchema.d.ts +17 -6
  719. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  720. package/dist/unstable/sql/SqlSchema.js +17 -7
  721. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  722. package/dist/unstable/sql/Statement.js +0 -1
  723. package/dist/unstable/sql/Statement.js.map +1 -1
  724. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  725. package/dist/unstable/workers/Worker.js +2 -1
  726. package/dist/unstable/workers/Worker.js.map +1 -1
  727. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  728. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  729. package/dist/unstable/workflow/DurableClock.js +3 -3
  730. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  731. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  732. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  733. package/dist/unstable/workflow/Workflow.d.ts +3 -3
  734. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  735. package/dist/unstable/workflow/Workflow.js +1 -1
  736. package/dist/unstable/workflow/Workflow.js.map +1 -1
  737. package/dist/unstable/workflow/WorkflowEngine.d.ts +12 -1
  738. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  739. package/dist/unstable/workflow/WorkflowEngine.js +137 -1
  740. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  741. package/package.json +2 -2
  742. package/src/Array.ts +192 -342
  743. package/src/Brand.ts +1 -1
  744. package/src/Cache.ts +9 -8
  745. package/src/Cause.ts +2 -2
  746. package/src/Channel.ts +554 -138
  747. package/src/Chunk.ts +81 -268
  748. package/src/Combiner.ts +280 -13
  749. package/src/Config.ts +186 -24
  750. package/src/Data.ts +539 -376
  751. package/src/DateTime.ts +24 -164
  752. package/src/Duration.ts +13 -13
  753. package/src/Effect.ts +1477 -1126
  754. package/src/Encoding.ts +879 -0
  755. package/src/Equal.ts +278 -111
  756. package/src/ErrorReporter.ts +457 -0
  757. package/src/Exit.ts +24 -12
  758. package/src/Fiber.ts +10 -2
  759. package/src/FileSystem.ts +7 -8
  760. package/src/Filter.ts +52 -63
  761. package/src/Formatter.ts +253 -51
  762. package/src/Function.ts +2 -10
  763. package/src/Graph.ts +24 -11
  764. package/src/HashMap.ts +15 -14
  765. package/src/Iterable.ts +104 -50
  766. package/src/JsonSchema.ts +383 -10
  767. package/src/Latch.ts +112 -0
  768. package/src/Layer.ts +123 -132
  769. package/src/LayerMap.ts +9 -9
  770. package/src/LogLevel.ts +37 -0
  771. package/src/Logger.ts +33 -100
  772. package/src/ManagedRuntime.ts +2 -2
  773. package/src/Metric.ts +6 -8
  774. package/src/Newtype.ts +308 -0
  775. package/src/Optic.ts +948 -19
  776. package/src/Option.ts +32 -24
  777. package/src/Pipeable.ts +32 -1
  778. package/src/PlatformError.ts +5 -5
  779. package/src/Pool.ts +13 -11
  780. package/src/PubSub.ts +10 -9
  781. package/src/Pull.ts +1 -1
  782. package/src/Queue.ts +0 -1
  783. package/src/Random.ts +51 -14
  784. package/src/RcMap.ts +5 -5
  785. package/src/RcRef.ts +1 -1
  786. package/src/Record.ts +42 -152
  787. package/src/Reducer.ts +166 -7
  788. package/src/References.ts +10 -5
  789. package/src/Request.ts +3 -2
  790. package/src/RequestResolver.ts +29 -49
  791. package/src/Result.ts +2 -4
  792. package/src/Runtime.ts +102 -6
  793. package/src/Schedule.ts +462 -242
  794. package/src/Scheduler.ts +12 -0
  795. package/src/Schema.ts +796 -194
  796. package/src/SchemaAST.ts +164 -31
  797. package/src/SchemaGetter.ts +15 -17
  798. package/src/SchemaParser.ts +11 -0
  799. package/src/SchemaRepresentation.ts +49 -24
  800. package/src/SchemaTransformation.ts +189 -4
  801. package/src/ScopedCache.ts +3 -3
  802. package/src/Semaphore.ts +356 -0
  803. package/src/ServiceMap.ts +50 -40
  804. package/src/Sink.ts +78 -26
  805. package/src/Stdio.ts +27 -4
  806. package/src/Stream.ts +586 -608
  807. package/src/Struct.ts +26 -0
  808. package/src/SubscriptionRef.ts +3 -2
  809. package/src/SynchronizedRef.ts +3 -2
  810. package/src/Trie.ts +18 -17
  811. package/src/TxChunk.ts +72 -53
  812. package/src/TxDeferred.ts +394 -0
  813. package/src/TxHashMap.ts +332 -285
  814. package/src/TxHashSet.ts +111 -116
  815. package/src/TxPriorityQueue.ts +767 -0
  816. package/src/TxPubSub.ts +789 -0
  817. package/src/TxQueue.ts +241 -251
  818. package/src/TxReentrantLock.ts +753 -0
  819. package/src/TxRef.ts +50 -38
  820. package/src/TxSemaphore.ts +29 -32
  821. package/src/TxSubscriptionRef.ts +639 -0
  822. package/src/Types.ts +73 -19
  823. package/src/Utils.ts +137 -111
  824. package/src/index.ts +728 -24
  825. package/src/internal/core.ts +12 -5
  826. package/src/internal/dateTime.ts +9 -30
  827. package/src/internal/effect.ts +774 -301
  828. package/src/internal/hashMap.ts +8 -7
  829. package/src/internal/random.ts +20 -0
  830. package/src/internal/rcRef.ts +4 -3
  831. package/src/internal/request.ts +2 -2
  832. package/src/internal/schema/annotations.ts +2 -0
  833. package/src/internal/schema/representation.ts +45 -94
  834. package/src/internal/schema/schema.ts +1 -0
  835. package/src/internal/schema/to-codec.ts +7 -17
  836. package/src/internal/trie.ts +15 -9
  837. package/src/testing/TestClock.ts +13 -11
  838. package/src/testing/TestSchema.ts +332 -35
  839. package/src/testing/index.ts +64 -1
  840. package/src/unstable/ai/AiError.ts +105 -48
  841. package/src/unstable/ai/Chat.ts +47 -61
  842. package/src/unstable/ai/LanguageModel.ts +153 -68
  843. package/src/unstable/ai/McpSchema.ts +73 -13
  844. package/src/unstable/ai/McpServer.ts +271 -61
  845. package/src/unstable/ai/Model.ts +40 -9
  846. package/src/unstable/ai/Prompt.ts +37 -37
  847. package/src/unstable/ai/Response.ts +25 -25
  848. package/src/unstable/ai/Tool.ts +20 -14
  849. package/src/unstable/ai/Toolkit.ts +5 -14
  850. package/src/unstable/ai/index.ts +1 -1
  851. package/src/unstable/ai/internal/codec-transformer.ts +0 -7
  852. package/src/unstable/cli/CliError.ts +47 -59
  853. package/src/unstable/cli/CliOutput.ts +75 -6
  854. package/src/unstable/cli/Command.ts +796 -187
  855. package/src/unstable/cli/GlobalFlag.ts +243 -0
  856. package/src/unstable/cli/HelpDoc.ts +80 -2
  857. package/src/unstable/cli/Primitive.ts +1 -1
  858. package/src/unstable/cli/Prompt.ts +31 -9
  859. package/src/unstable/cli/index.ts +5 -0
  860. package/src/unstable/cli/internal/command.ts +109 -63
  861. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
  862. package/src/unstable/cli/internal/config.ts +49 -0
  863. package/src/unstable/cli/internal/help.ts +171 -0
  864. package/src/unstable/cli/internal/parser.ts +66 -61
  865. package/src/unstable/cluster/ClusterCron.ts +2 -2
  866. package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -4
  867. package/src/unstable/cluster/Entity.ts +11 -10
  868. package/src/unstable/cluster/EntityResource.ts +4 -4
  869. package/src/unstable/cluster/Envelope.ts +1 -1
  870. package/src/unstable/cluster/K8sHttpClient.ts +5 -5
  871. package/src/unstable/cluster/MessageStorage.ts +3 -5
  872. package/src/unstable/cluster/Runners.ts +6 -5
  873. package/src/unstable/cluster/Sharding.ts +12 -10
  874. package/src/unstable/cluster/ShardingConfig.ts +30 -31
  875. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  876. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  877. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  878. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  879. package/src/unstable/encoding/Sse.ts +3 -5
  880. package/src/unstable/eventlog/EventLog.ts +2 -1
  881. package/src/unstable/http/Cookies.ts +87 -3
  882. package/src/unstable/http/Headers.ts +62 -13
  883. package/src/unstable/http/HttpBody.ts +6 -6
  884. package/src/unstable/http/HttpClient.ts +374 -33
  885. package/src/unstable/http/HttpClientRequest.ts +38 -30
  886. package/src/unstable/http/HttpClientResponse.ts +7 -2
  887. package/src/unstable/http/HttpEffect.ts +54 -68
  888. package/src/unstable/http/HttpMethod.ts +16 -4
  889. package/src/unstable/http/HttpMiddleware.ts +9 -24
  890. package/src/unstable/http/HttpServerError.ts +42 -45
  891. package/src/unstable/http/HttpServerRequest.ts +389 -2
  892. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  893. package/src/unstable/http/HttpServerResponse.ts +337 -4
  894. package/src/unstable/http/HttpStaticServer.ts +456 -0
  895. package/src/unstable/http/Multipart.ts +2 -2
  896. package/src/unstable/http/UrlParams.ts +20 -5
  897. package/src/unstable/http/index.ts +5 -0
  898. package/src/unstable/http/internal/preResponseHandler.ts +15 -0
  899. package/src/unstable/httpapi/HttpApi.ts +6 -6
  900. package/src/unstable/httpapi/HttpApiBuilder.ts +81 -28
  901. package/src/unstable/httpapi/HttpApiClient.ts +100 -11
  902. package/src/unstable/httpapi/HttpApiEndpoint.ts +71 -87
  903. package/src/unstable/httpapi/HttpApiError.ts +51 -28
  904. package/src/unstable/httpapi/HttpApiGroup.ts +7 -6
  905. package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -4
  906. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  907. package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
  908. package/src/unstable/httpapi/OpenApi.ts +41 -23
  909. package/src/unstable/observability/Otlp.ts +12 -12
  910. package/src/unstable/observability/OtlpExporter.ts +3 -3
  911. package/src/unstable/observability/OtlpLogger.ts +13 -9
  912. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  913. package/src/unstable/observability/OtlpTracer.ts +4 -4
  914. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  915. package/src/unstable/persistence/Persistable.ts +2 -2
  916. package/src/unstable/persistence/PersistedCache.ts +20 -9
  917. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  918. package/src/unstable/persistence/Persistence.ts +3 -3
  919. package/src/unstable/persistence/RateLimiter.ts +4 -4
  920. package/src/unstable/process/ChildProcess.ts +6 -208
  921. package/src/unstable/process/ChildProcessSpawner.ts +75 -14
  922. package/src/unstable/reactivity/Atom.ts +211 -50
  923. package/src/unstable/reactivity/AtomHttpApi.ts +66 -31
  924. package/src/unstable/reactivity/AtomRegistry.ts +61 -9
  925. package/src/unstable/reactivity/AtomRpc.ts +51 -20
  926. package/src/unstable/reactivity/Hydration.ts +112 -0
  927. package/src/unstable/reactivity/index.ts +5 -0
  928. package/src/unstable/rpc/Rpc.ts +7 -9
  929. package/src/unstable/rpc/RpcClient.ts +12 -54
  930. package/src/unstable/rpc/RpcGroup.ts +4 -4
  931. package/src/unstable/rpc/RpcMiddleware.ts +15 -9
  932. package/src/unstable/rpc/RpcSchema.ts +17 -0
  933. package/src/unstable/rpc/RpcSerialization.ts +44 -9
  934. package/src/unstable/rpc/RpcServer.ts +28 -32
  935. package/src/unstable/rpc/Utils.ts +3 -2
  936. package/src/unstable/schema/Model.ts +31 -0
  937. package/src/unstable/schema/VariantSchema.ts +9 -9
  938. package/src/unstable/socket/Socket.ts +16 -17
  939. package/src/unstable/sql/SqlClient.ts +1 -1
  940. package/src/unstable/sql/SqlError.ts +11 -9
  941. package/src/unstable/sql/SqlModel.ts +5 -5
  942. package/src/unstable/sql/SqlResolver.ts +17 -7
  943. package/src/unstable/sql/SqlSchema.ts +42 -26
  944. package/src/unstable/sql/Statement.ts +0 -1
  945. package/src/unstable/workers/Worker.ts +2 -1
  946. package/src/unstable/workflow/DurableClock.ts +8 -8
  947. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  948. package/src/unstable/workflow/Workflow.ts +6 -2
  949. package/src/unstable/workflow/WorkflowEngine.ts +185 -2
  950. package/dist/PartitionedSemaphore.d.ts +0 -52
  951. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  952. package/dist/PartitionedSemaphore.js.map +0 -1
  953. package/dist/encoding/Base64.d.ts +0 -67
  954. package/dist/encoding/Base64.d.ts.map +0 -1
  955. package/dist/encoding/Base64.js +0 -146
  956. package/dist/encoding/Base64.js.map +0 -1
  957. package/dist/encoding/Base64Url.d.ts +0 -60
  958. package/dist/encoding/Base64Url.d.ts.map +0 -1
  959. package/dist/encoding/Base64Url.js +0 -89
  960. package/dist/encoding/Base64Url.js.map +0 -1
  961. package/dist/encoding/EncodingError.d.ts +0 -31
  962. package/dist/encoding/EncodingError.d.ts.map +0 -1
  963. package/dist/encoding/EncodingError.js +0 -22
  964. package/dist/encoding/EncodingError.js.map +0 -1
  965. package/dist/encoding/Hex.d.ts +0 -61
  966. package/dist/encoding/Hex.d.ts.map +0 -1
  967. package/dist/encoding/Hex.js +0 -115
  968. package/dist/encoding/Hex.js.map +0 -1
  969. package/dist/encoding/index.d.ts +0 -26
  970. package/dist/encoding/index.d.ts.map +0 -1
  971. package/dist/encoding/index.js +0 -27
  972. package/dist/encoding/index.js.map +0 -1
  973. package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
  974. package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
  975. package/dist/unstable/cli/internal/builtInFlags.js +0 -44
  976. package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
  977. package/src/PartitionedSemaphore.ts +0 -182
  978. package/src/encoding/Base64.ts +0 -366
  979. package/src/encoding/Base64Url.ts +0 -104
  980. package/src/encoding/EncodingError.ts +0 -35
  981. package/src/encoding/Hex.ts +0 -390
  982. package/src/encoding/index.ts +0 -31
  983. package/src/unstable/cli/internal/builtInFlags.ts +0 -78
package/src/Schema.ts CHANGED
@@ -2,23 +2,28 @@
2
2
  * @since 4.0.0
3
3
  */
4
4
 
5
+ /** @effect-diagnostics schemaStructWithTag:skip-file */
5
6
  import type { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec"
6
7
  import * as Arr from "./Array.ts"
8
+ import * as BigDecimal_ from "./BigDecimal.ts"
7
9
  import type * as Brand from "./Brand.ts"
8
10
  import * as Cause_ from "./Cause.ts"
11
+ import * as Chunk_ from "./Chunk.ts"
9
12
  import type * as Combiner from "./Combiner.ts"
10
13
  import * as Data from "./Data.ts"
11
14
  import * as DateTime from "./DateTime.ts"
12
15
  import type { Differ } from "./Differ.ts"
13
16
  import * as Duration_ from "./Duration.ts"
14
17
  import * as Effect from "./Effect.ts"
15
- import * as Base64 from "./encoding/Base64.ts"
18
+ import * as Encoding from "./Encoding.ts"
16
19
  import * as Equal from "./Equal.ts"
17
20
  import * as Equivalence from "./Equivalence.ts"
18
21
  import * as Exit_ from "./Exit.ts"
19
22
  import type { Formatter } from "./Formatter.ts"
20
23
  import { format, formatDate, formatPropertyKey } from "./Formatter.ts"
21
24
  import { identity } from "./Function.ts"
25
+ import * as HashMap_ from "./HashMap.ts"
26
+ import * as HashSet_ from "./HashSet.ts"
22
27
  import * as core from "./internal/core.ts"
23
28
  import * as InternalAnnotations from "./internal/schema/annotations.ts"
24
29
  import * as InternalArbitrary from "./internal/schema/arbitrary.ts"
@@ -48,6 +53,7 @@ import type { Assign, Lambda, Mutable, Simplify } from "./Struct.ts"
48
53
  import * as Struct_ from "./Struct.ts"
49
54
  import * as FastCheck from "./testing/FastCheck.ts"
50
55
  import type { UnionToIntersection } from "./Types.ts"
56
+ import type { Unify } from "./Unify.ts"
51
57
 
52
58
  const TypeId = InternalSchema.TypeId
53
59
 
@@ -149,6 +155,7 @@ export interface Bottom<
149
155
  * @throws {Error} The issue is contained in the error cause.
150
156
  */
151
157
  makeUnsafe(input: this["~type.make.in"], options?: MakeOptions): this["Type"]
158
+ makeOption(input: this["~type.make.in"], options?: MakeOptions): Option_.Option<this["Type"]>
152
159
  }
153
160
 
154
161
  /**
@@ -321,7 +328,7 @@ export declare namespace Schema {
321
328
  /**
322
329
  * @since 4.0.0
323
330
  */
324
- export type Type<S extends Top> = S["Type"]
331
+ export type Type<S> = S extends Top ? S["Type"] : never
325
332
  }
326
333
 
327
334
  /**
@@ -349,15 +356,15 @@ export declare namespace Codec {
349
356
  /**
350
357
  * @since 4.0.0
351
358
  */
352
- export type Encoded<S extends Top> = S["Encoded"]
359
+ export type Encoded<S> = S extends Top ? S["Encoded"] : never
353
360
  /**
354
361
  * @since 4.0.0
355
362
  */
356
- export type DecodingServices<S extends Top> = S["DecodingServices"]
363
+ export type DecodingServices<S> = S extends Top ? S["DecodingServices"] : never
357
364
  /**
358
365
  * @since 4.0.0
359
366
  */
360
- export type EncodingServices<S extends Top> = S["EncodingServices"]
367
+ export type EncodingServices<S> = S extends Top ? S["EncodingServices"] : never
361
368
  /**
362
369
  * @since 4.0.0
363
370
  */
@@ -1631,6 +1638,27 @@ export interface Struct<Fields extends Struct.Fields> extends
1631
1638
  >
1632
1639
  {
1633
1640
  readonly "~rebuild.out": this
1641
+ /**
1642
+ * The field definitions of this struct. Spread them into a new struct to
1643
+ * reuse fields across schemas.
1644
+ *
1645
+ * **Example** (Reusing fields across structs)
1646
+ *
1647
+ * ```ts
1648
+ * import { Schema } from "effect"
1649
+ *
1650
+ * const Timestamped = Schema.Struct({
1651
+ * createdAt: Schema.Date,
1652
+ * updatedAt: Schema.Date
1653
+ * })
1654
+ *
1655
+ * const User = Schema.Struct({
1656
+ * ...Timestamped.fields,
1657
+ * name: Schema.String,
1658
+ * email: Schema.String
1659
+ * })
1660
+ * ```
1661
+ */
1634
1662
  readonly fields: Fields
1635
1663
  /**
1636
1664
  * Returns a new struct with the fields modified by the provided function.
@@ -1713,7 +1741,7 @@ export function fieldsAssign<const NewFields extends Struct.Fields>(fields: NewF
1713
1741
  * @since 4.0.0
1714
1742
  */
1715
1743
  export function encodeKeys<
1716
- S extends Struct<Struct.Fields>,
1744
+ S extends Top & { readonly fields: Struct.Fields },
1717
1745
  const M extends { readonly [K in keyof S["fields"]]?: PropertyKey }
1718
1746
  >(mapping: M) {
1719
1747
  return function(
@@ -1731,11 +1759,12 @@ export function encodeKeys<
1731
1759
  const fields: any = {}
1732
1760
  const reverseMapping: any = {}
1733
1761
  for (const k in self.fields) {
1762
+ const encoded = toEncoded(self.fields[k])
1734
1763
  if (Object.hasOwn(mapping, k)) {
1735
- fields[mapping[k]!] = toEncoded(self.fields[k])
1764
+ fields[mapping[k]!] = encoded
1736
1765
  reverseMapping[mapping[k]!] = k
1737
1766
  } else {
1738
- fields[k] = self.fields[k]
1767
+ fields[k] = encoded
1739
1768
  }
1740
1769
  }
1741
1770
  return Struct(fields).pipe(decodeTo(
@@ -1801,11 +1830,6 @@ export declare namespace Record {
1801
1830
  readonly "Iso": PropertyKey
1802
1831
  }
1803
1832
 
1804
- /**
1805
- * @since 4.0.0
1806
- */
1807
- export type Record = Record$<Record.Key, Top>
1808
-
1809
1833
  /**
1810
1834
  * @since 4.0.0
1811
1835
  */
@@ -1864,14 +1888,14 @@ export declare namespace Record {
1864
1888
  /**
1865
1889
  * @since 4.0.0
1866
1890
  */
1867
- export interface Record$<Key extends Record.Key, Value extends Top> extends
1891
+ export interface $Record<Key extends Record.Key, Value extends Top> extends
1868
1892
  Bottom<
1869
1893
  Record.Type<Key, Value>,
1870
1894
  Record.Encoded<Key, Value>,
1871
1895
  Record.DecodingServices<Key, Value>,
1872
1896
  Record.EncodingServices<Key, Value>,
1873
1897
  AST.Objects,
1874
- Record$<Key, Value>,
1898
+ $Record<Key, Value>,
1875
1899
  Simplify<Record.MakeIn<Key, Value>>,
1876
1900
  Record.Iso<Key, Value>
1877
1901
  >
@@ -1893,7 +1917,7 @@ export function Record<Key extends Record.Key, Value extends Top>(
1893
1917
  readonly encode?: Combiner.Combiner<readonly [Key["Encoded"], Value["Encoded"]]> | undefined
1894
1918
  }
1895
1919
  }
1896
- ): Record$<Key, Value> {
1920
+ ): $Record<Key, Value> {
1897
1921
  const keyValueCombiner = options?.keyValueCombiner?.decode || options?.keyValueCombiner?.encode
1898
1922
  ? new AST.KeyValueCombiner(options.keyValueCombiner.decode, options.keyValueCombiner.encode)
1899
1923
  : undefined
@@ -1912,7 +1936,7 @@ export declare namespace StructWithRest {
1912
1936
  /**
1913
1937
  * @since 4.0.0
1914
1938
  */
1915
- export type Records = ReadonlyArray<Record.Record>
1939
+ export type Records = ReadonlyArray<$Record<Record.Key, Top>>
1916
1940
 
1917
1941
  type MergeTuple<T extends ReadonlyArray<unknown>> = T extends readonly [infer Head, ...infer Tail] ?
1918
1942
  Head & MergeTuple<Tail>
@@ -2244,14 +2268,14 @@ export function TupleWithRest<S extends Tuple<Tuple.Elements>, const Rest extend
2244
2268
  /**
2245
2269
  * @since 4.0.0
2246
2270
  */
2247
- export interface Array$<S extends Top> extends
2271
+ export interface $Array<S extends Top> extends
2248
2272
  Bottom<
2249
2273
  ReadonlyArray<S["Type"]>,
2250
2274
  ReadonlyArray<S["Encoded"]>,
2251
2275
  S["DecodingServices"],
2252
2276
  S["EncodingServices"],
2253
2277
  AST.Arrays,
2254
- Array$<S>,
2278
+ $Array<S>,
2255
2279
  ReadonlyArray<S["~type.make"]>,
2256
2280
  ReadonlyArray<S["Iso"]>
2257
2281
  >
@@ -2261,8 +2285,8 @@ export interface Array$<S extends Top> extends
2261
2285
  }
2262
2286
 
2263
2287
  interface ArrayLambda extends Lambda {
2264
- <S extends Top>(self: S): Array$<S>
2265
- readonly "~lambda.out": this["~lambda.in"] extends Top ? Array$<this["~lambda.in"]> : never
2288
+ <S extends Top>(self: S): $Array<S>
2289
+ readonly "~lambda.out": this["~lambda.in"] extends Top ? $Array<this["~lambda.in"]> : never
2266
2290
  }
2267
2291
 
2268
2292
  /**
@@ -2306,7 +2330,7 @@ export const NonEmptyArray = Struct_.lambda<NonEmptyArrayLambda>((schema) =>
2306
2330
  /**
2307
2331
  * @since 4.0.0
2308
2332
  */
2309
- export interface UniqueArray<S extends Top> extends Array$<S> {}
2333
+ export interface UniqueArray<S extends Top> extends $Array<S> {}
2310
2334
 
2311
2335
  /**
2312
2336
  * Returns a new array schema that ensures all elements are unique.
@@ -3203,25 +3227,19 @@ type TaggedUnionUtils<
3203
3227
  ) => (value: Members[number]["Type"]) => value is Extract<Members[number]["Type"], { _tag: Keys }>
3204
3228
  readonly guards: { [M in Flattened[number] as M["Type"][Tag]]: (u: unknown) => u is M["Type"] }
3205
3229
  readonly match: {
3206
- <Output>(
3230
+ <
3231
+ Cases extends { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => any }
3232
+ >(
3207
3233
  value: Members[number]["Type"],
3208
- cases: { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => Output }
3209
- ): Output
3210
- <Output>(
3211
- cases: { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => Output }
3212
- ): (value: Members[number]["Type"]) => Output
3213
- }
3214
- }
3215
-
3216
- /** @internal */
3217
- export function _getTagValueIfPropertyKey(tag: PropertyKey, ast: AST.Objects): PropertyKey | undefined {
3218
- const ps = ast.propertySignatures.find((p) => p.name === tag)
3219
- if (ps) {
3220
- if (AST.isLiteral(ps.type) && Predicate.isPropertyKey(ps.type.literal)) {
3221
- return ps.type.literal
3222
- } else if (AST.isUniqueSymbol(ps.type)) {
3223
- return ps.type.symbol
3224
- }
3234
+ cases: Cases
3235
+ ): Cases[keyof Cases] extends (value: any) => infer R ? Unify<R>
3236
+ : never
3237
+ <
3238
+ Cases extends { [M in Flattened[number] as M["Type"][Tag]]: (value: M["Type"]) => any }
3239
+ >(
3240
+ cases: Cases
3241
+ ): (value: Members[number]["Type"]) => Cases[keyof Cases] extends (value: any) => infer R ? Unify<R>
3242
+ : never
3225
3243
  }
3226
3244
  }
3227
3245
 
@@ -3260,16 +3278,17 @@ export function toTaggedUnion<const Tag extends PropertyKey>(tag: Tag) {
3260
3278
  return schema.members.forEach(walk)
3261
3279
  }
3262
3280
 
3263
- if (AST.isObjects(ast)) {
3264
- const key = _getTagValueIfPropertyKey(tag, ast)
3265
- if (key !== undefined) {
3266
- cases[key] = schema
3267
- guards[key] = is(toType(schema))
3281
+ const sentinels = AST.collectSentinels(ast)
3282
+ if (sentinels.length > 0) {
3283
+ const literal = sentinels.find((s) => s.key === tag)?.literal
3284
+ if (Predicate.isPropertyKey(literal)) {
3285
+ cases[literal] = schema
3286
+ guards[literal] = is(toType(schema))
3268
3287
  return
3269
3288
  }
3270
3289
  }
3271
3290
 
3272
- throw new globalThis.Error("No literal found")
3291
+ throw new globalThis.Error("No literal or unique symbol found")
3273
3292
  }
3274
3293
 
3275
3294
  function match() {
@@ -3309,12 +3328,12 @@ export interface TaggedUnion<Cases extends Record<string, Top>> extends
3309
3328
  readonly guards: { [K in keyof Cases]: (u: unknown) => u is Cases[K]["Type"] }
3310
3329
  readonly match: {
3311
3330
  <Output>(
3312
- value: Cases[keyof Cases]["Type"],
3313
3331
  cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
3314
- ): Output
3332
+ ): (value: Cases[keyof Cases]["Type"]) => Output
3315
3333
  <Output>(
3334
+ value: Cases[keyof Cases]["Type"],
3316
3335
  cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
3317
- ): (value: Cases[keyof Cases]["Type"]) => Output
3336
+ ): Output
3318
3337
  }
3319
3338
  }
3320
3339
 
@@ -3578,7 +3597,7 @@ const getUUIDRegExp = (version?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8): globalThis.RegE
3578
3597
  * @category String checks
3579
3598
  * @since 4.0.0
3580
3599
  */
3581
- export function isUUID(version: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | undefined, annotations?: Annotations.Filter) {
3600
+ export function isUUID(version?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8, annotations?: Annotations.Filter) {
3582
3601
  const regExp = getUUIDRegExp(version)
3583
3602
  return isPattern(
3584
3603
  regExp,
@@ -4755,6 +4774,63 @@ export const isBetweenBigInt = makeIsBetween({
4755
4774
  })
4756
4775
  })
4757
4776
 
4777
+ /**
4778
+ * Validates that a BigDecimal is greater than the specified value (exclusive).
4779
+ *
4780
+ * @category BigDecimal checks
4781
+ * @since 4.0.0
4782
+ */
4783
+ export const isGreaterThanBigDecimal = makeIsGreaterThan({
4784
+ order: BigDecimal_.Order,
4785
+ formatter: (bd) => BigDecimal_.format(bd)
4786
+ })
4787
+
4788
+ /**
4789
+ * Validates that a BigDecimal is greater than or equal to the specified value
4790
+ * (inclusive).
4791
+ *
4792
+ * @category BigDecimal checks
4793
+ * @since 4.0.0
4794
+ */
4795
+ export const isGreaterThanOrEqualToBigDecimal = makeIsGreaterThanOrEqualTo({
4796
+ order: BigDecimal_.Order,
4797
+ formatter: (bd) => BigDecimal_.format(bd)
4798
+ })
4799
+
4800
+ /**
4801
+ * Validates that a BigDecimal is less than the specified value (exclusive).
4802
+ *
4803
+ * @category BigDecimal checks
4804
+ * @since 4.0.0
4805
+ */
4806
+ export const isLessThanBigDecimal = makeIsLessThan({
4807
+ order: BigDecimal_.Order,
4808
+ formatter: (bd) => BigDecimal_.format(bd)
4809
+ })
4810
+
4811
+ /**
4812
+ * Validates that a BigDecimal is less than or equal to the specified value
4813
+ * (inclusive).
4814
+ *
4815
+ * @category BigDecimal checks
4816
+ * @since 4.0.0
4817
+ */
4818
+ export const isLessThanOrEqualToBigDecimal = makeIsLessThanOrEqualTo({
4819
+ order: BigDecimal_.Order,
4820
+ formatter: (bd) => BigDecimal_.format(bd)
4821
+ })
4822
+
4823
+ /**
4824
+ * Validates that a BigDecimal is within a specified range.
4825
+ *
4826
+ * @category BigDecimal checks
4827
+ * @since 4.0.0
4828
+ */
4829
+ export const isBetweenBigDecimal = makeIsBetween({
4830
+ order: BigDecimal_.Order,
4831
+ formatter: (bd) => BigDecimal_.format(bd)
4832
+ })
4833
+
4758
4834
  /**
4759
4835
  * Validates that a value has at least the specified length. Works with strings
4760
4836
  * and arrays.
@@ -5363,6 +5439,63 @@ export function OptionFromNullOr<S extends Top>(schema: S): OptionFromNullOr<S>
5363
5439
  ))
5364
5440
  }
5365
5441
 
5442
+ /**
5443
+ * @since 4.0.0
5444
+ */
5445
+ export interface OptionFromUndefinedOr<S extends Top> extends decodeTo<Option<toType<S>>, UndefinedOr<S>> {}
5446
+
5447
+ /**
5448
+ * Decodes an undefined-or value `T` to a required `Option<T>` value.
5449
+ *
5450
+ * Decoding:
5451
+ * - `undefined` is decoded as `None`
5452
+ * - other values are decoded as `Some`
5453
+ *
5454
+ * Encoding:
5455
+ * - `None` is encoded as `undefined`
5456
+ * - `Some` is encoded as the value
5457
+ *
5458
+ * @category Option
5459
+ * @since 4.0.0
5460
+ */
5461
+ export function OptionFromUndefinedOr<S extends Top>(schema: S): OptionFromUndefinedOr<S> {
5462
+ return UndefinedOr(schema).pipe(decodeTo(
5463
+ Option(toType(schema)),
5464
+ Transformation.optionFromUndefinedOr()
5465
+ ))
5466
+ }
5467
+
5468
+ /**
5469
+ * @since 4.0.0
5470
+ */
5471
+ export interface OptionFromNullishOr<S extends Top> extends decodeTo<Option<toType<S>>, NullishOr<S>> {}
5472
+
5473
+ /**
5474
+ * Decodes a nullish value `T` to a required `Option<T>` value.
5475
+ *
5476
+ * Decoding:
5477
+ * - `null` and `undefined` are decoded as `None`
5478
+ * - other values are decoded as `Some`
5479
+ *
5480
+ * Encoding:
5481
+ * - `None` is encoded as `null` or `undefined` depending on the provided `options.onNoneEncoding` (defaults to `undefined`)
5482
+ * - `Some` is encoded as the value
5483
+ *
5484
+ * @category Option
5485
+ * @since 4.0.0
5486
+ */
5487
+ export function OptionFromNullishOr<S extends Top>(
5488
+ schema: S,
5489
+ options?: {
5490
+ onNoneEncoding: null | undefined
5491
+ }
5492
+ ): OptionFromNullishOr<S> {
5493
+ return NullishOr(schema).pipe(decodeTo(
5494
+ Option(toType(schema)),
5495
+ Transformation.optionFromNullishOr(options)
5496
+ ))
5497
+ }
5498
+
5366
5499
  /**
5367
5500
  * @since 4.0.0
5368
5501
  */
@@ -5651,15 +5784,15 @@ export function RedactedFromValue<S extends Top>(value: S, options?: {
5651
5784
  }
5652
5785
 
5653
5786
  /**
5654
- * @category CauseFailure
5787
+ * @category CauseReason
5655
5788
  * @since 4.0.0
5656
5789
  */
5657
- export interface CauseFailure<E extends Top, D extends Top> extends
5790
+ export interface CauseReason<E extends Top, D extends Top> extends
5658
5791
  declareConstructor<
5659
5792
  Cause_.Reason<E["Type"]>,
5660
5793
  Cause_.Reason<E["Encoded"]>,
5661
5794
  readonly [E, D],
5662
- CauseFailureIso<E, D>
5795
+ CauseReasonIso<E, D>
5663
5796
  >
5664
5797
  {
5665
5798
  readonly error: E
@@ -5667,10 +5800,10 @@ export interface CauseFailure<E extends Top, D extends Top> extends
5667
5800
  }
5668
5801
 
5669
5802
  /**
5670
- * @category CauseFailure
5803
+ * @category CauseReason
5671
5804
  * @since 4.0.0
5672
5805
  */
5673
- export type CauseFailureIso<E extends Top, D extends Top> = {
5806
+ export type CauseReasonIso<E extends Top, D extends Top> = {
5674
5807
  readonly _tag: "Fail"
5675
5808
  readonly error: E["Iso"]
5676
5809
  } | {
@@ -5682,11 +5815,11 @@ export type CauseFailureIso<E extends Top, D extends Top> = {
5682
5815
  }
5683
5816
 
5684
5817
  /**
5685
- * @category CauseFailure
5818
+ * @category CauseReason
5686
5819
  * @since 4.0.0
5687
5820
  */
5688
- export function CauseFailure<E extends Top, D extends Top>(error: E, defect: D): CauseFailure<E, D> {
5689
- const schema = declareConstructor<Cause_.Reason<E["Type"]>, Cause_.Reason<E["Encoded"]>, CauseFailureIso<E, D>>()(
5821
+ export function CauseReason<E extends Top, D extends Top>(error: E, defect: D): CauseReason<E, D> {
5822
+ const schema = declareConstructor<Cause_.Reason<E["Type"]>, Cause_.Reason<E["Encoded"]>, CauseReasonIso<E, D>>()(
5690
5823
  [error, defect],
5691
5824
  ([error, defect]) => (input, ast, options) => {
5692
5825
  if (!Cause_.isReason(input)) {
@@ -5719,7 +5852,7 @@ export function CauseFailure<E extends Top, D extends Top>(error: E, defect: D):
5719
5852
  _tag: "effect/Cause/Failure"
5720
5853
  },
5721
5854
  generation: {
5722
- runtime: `Schema.CauseFailure(?, ?)`,
5855
+ runtime: `Schema.CauseReason(?, ?)`,
5723
5856
  Type: `Cause.Failure<?, ?>`,
5724
5857
  importDeclaration: `import * as Cause from "effect/Cause"`
5725
5858
  },
@@ -5745,15 +5878,15 @@ export function CauseFailure<E extends Top, D extends Top>(error: E, defect: D):
5745
5878
  encode: identity
5746
5879
  })
5747
5880
  ),
5748
- toArbitrary: ([error, defect]) => causeFailureToArbitrary(error, defect),
5749
- toEquivalence: ([error, defect]) => causeFailureToEquivalence(error, defect),
5750
- toFormatter: ([error, defect]) => causeFailureToFormatter(error, defect)
5881
+ toArbitrary: ([error, defect]) => causeReasonToArbitrary(error, defect),
5882
+ toEquivalence: ([error, defect]) => causeReasonToEquivalence(error, defect),
5883
+ toFormatter: ([error, defect]) => causeReasonToFormatter(error, defect)
5751
5884
  }
5752
5885
  )
5753
5886
  return make(schema.ast, { error, defect })
5754
5887
  }
5755
5888
 
5756
- function causeFailureToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: FastCheck.Arbitrary<D>) {
5889
+ function causeReasonToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: FastCheck.Arbitrary<D>) {
5757
5890
  return (fc: typeof FastCheck, ctx: Annotations.ToArbitrary.Context | undefined) => {
5758
5891
  return fc.oneof(
5759
5892
  ctx?.isSuspend ? { maxDepth: 2, depthIdentifier: "Cause.Failure" } : {},
@@ -5765,7 +5898,7 @@ function causeFailureToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: Fa
5765
5898
  }
5766
5899
  }
5767
5900
 
5768
- function causeFailureToEquivalence<E>(error: Equivalence.Equivalence<E>, defect: Equivalence.Equivalence<unknown>) {
5901
+ function causeReasonToEquivalence<E>(error: Equivalence.Equivalence<E>, defect: Equivalence.Equivalence<unknown>) {
5769
5902
  return (a: Cause_.Reason<E>, b: Cause_.Reason<E>) => {
5770
5903
  if (a._tag !== b._tag) return false
5771
5904
  switch (a._tag) {
@@ -5779,7 +5912,7 @@ function causeFailureToEquivalence<E>(error: Equivalence.Equivalence<E>, defect:
5779
5912
  }
5780
5913
  }
5781
5914
 
5782
- function causeFailureToFormatter<E>(error: Formatter<E>, defect: Formatter<unknown>) {
5915
+ function causeReasonToFormatter<E>(error: Formatter<E>, defect: Formatter<unknown>) {
5783
5916
  return (t: Cause_.Reason<E>) => {
5784
5917
  switch (t._tag) {
5785
5918
  case "Fail":
@@ -5812,7 +5945,7 @@ export interface Cause<E extends Top, D extends Top> extends
5812
5945
  * @category Cause
5813
5946
  * @since 4.0.0
5814
5947
  */
5815
- export type CauseIso<E extends Top, D extends Top> = ReadonlyArray<CauseFailureIso<E, D>>
5948
+ export type CauseIso<E extends Top, D extends Top> = ReadonlyArray<CauseReasonIso<E, D>>
5816
5949
 
5817
5950
  /**
5818
5951
  * @category Cause
@@ -5821,15 +5954,17 @@ export type CauseIso<E extends Top, D extends Top> = ReadonlyArray<CauseFailureI
5821
5954
  export function Cause<E extends Top, D extends Top>(error: E, defect: D): Cause<E, D> {
5822
5955
  const schema = declareConstructor<Cause_.Cause<E["Type"]>, Cause_.Cause<E["Encoded"]>, CauseIso<E, D>>()(
5823
5956
  [error, defect],
5824
- ([error, defect]) => (input, ast, options) => {
5825
- if (!Cause_.isCause(input)) {
5826
- return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
5957
+ ([error, defect]) => {
5958
+ const failures = Array(CauseReason(error, defect))
5959
+ return (input, ast, options) => {
5960
+ if (!Cause_.isCause(input)) {
5961
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
5962
+ }
5963
+ return Effect.mapBothEager(Parser.decodeUnknownEffect(failures)(input.reasons, options), {
5964
+ onSuccess: Cause_.fromReasons,
5965
+ onFailure: (issue) => new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["failures"], issue)])
5966
+ })
5827
5967
  }
5828
- const failures = Array(CauseFailure(error, defect))
5829
- return Effect.mapBothEager(Parser.decodeUnknownEffect(failures)(input.reasons, options), {
5830
- onSuccess: Cause_.fromReasons,
5831
- onFailure: (issue) => new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["failures"], issue)])
5832
- })
5833
5968
  },
5834
5969
  {
5835
5970
  typeConstructor: {
@@ -5843,7 +5978,7 @@ export function Cause<E extends Top, D extends Top>(error: E, defect: D): Cause<
5843
5978
  expected: "Cause",
5844
5979
  toCodec: ([error, defect]) =>
5845
5980
  link<Cause_.Cause<E["Encoded"]>>()(
5846
- Array(CauseFailure(error, defect)),
5981
+ Array(CauseReason(error, defect)),
5847
5982
  Transformation.transform({
5848
5983
  decode: Cause_.fromReasons,
5849
5984
  encode: ({ reasons: failures }) => failures
@@ -5859,18 +5994,18 @@ export function Cause<E extends Top, D extends Top>(error: E, defect: D): Cause<
5859
5994
 
5860
5995
  function causeToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: FastCheck.Arbitrary<D>) {
5861
5996
  return (fc: typeof FastCheck, ctx: Annotations.ToArbitrary.Context | undefined) => {
5862
- return fc.array(causeFailureToArbitrary(error, defect)(fc, ctx)).map(Cause_.fromReasons)
5997
+ return fc.array(causeReasonToArbitrary(error, defect)(fc, ctx)).map(Cause_.fromReasons)
5863
5998
  }
5864
5999
  }
5865
6000
 
5866
6001
  function causeToEquivalence<E>(error: Equivalence.Equivalence<E>, defect: Equivalence.Equivalence<unknown>) {
5867
- const failures = Equivalence.Array(causeFailureToEquivalence(error, defect))
6002
+ const failures = Equivalence.Array(causeReasonToEquivalence(error, defect))
5868
6003
  return (a: Cause_.Cause<E>, b: Cause_.Cause<E>) => failures(a.reasons, b.reasons)
5869
6004
  }
5870
6005
 
5871
6006
  function causeToFormatter<E>(error: Formatter<E>, defect: Formatter<unknown>) {
5872
- const causeFailure = causeFailureToFormatter(error, defect)
5873
- return (t: Cause_.Cause<E>) => `Cause([${t.reasons.map(causeFailure).join(", ")}])`
6007
+ const causeReason = causeReasonToFormatter(error, defect)
6008
+ return (t: Cause_.Cause<E>) => `Cause([${t.reasons.map(causeReason).join(", ")}])`
5874
6009
  }
5875
6010
 
5876
6011
  /**
@@ -6044,28 +6179,32 @@ export function Exit<A extends Top, E extends Top, D extends Top>(value: A, erro
6044
6179
  ExitIso<A, E, D>
6045
6180
  >()(
6046
6181
  [value, error, defect],
6047
- ([value, error, defect]) => (input, ast, options) => {
6048
- if (!Exit_.isExit(input)) {
6049
- return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6050
- }
6182
+ ([value, error, defect]) => {
6051
6183
  const cause = Cause(error, defect)
6052
- switch (input._tag) {
6053
- case "Success":
6054
- return Effect.mapBothEager(
6055
- Parser.decodeUnknownEffect(value)(input.value, options),
6056
- {
6057
- onSuccess: Exit_.succeed,
6058
- onFailure: (issue) => new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["value"], issue)])
6059
- }
6060
- )
6061
- case "Failure":
6062
- return Effect.mapBothEager(
6063
- Parser.decodeUnknownEffect(cause)(input.cause, options),
6064
- {
6065
- onSuccess: Exit_.failCause,
6066
- onFailure: (issue) => new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["cause"], issue)])
6067
- }
6068
- )
6184
+ return (input, ast, options) => {
6185
+ if (!Exit_.isExit(input)) {
6186
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6187
+ }
6188
+ switch (input._tag) {
6189
+ case "Success":
6190
+ return Effect.mapBothEager(
6191
+ Parser.decodeUnknownEffect(value)(input.value, options),
6192
+ {
6193
+ onSuccess: Exit_.succeed,
6194
+ onFailure: (issue) =>
6195
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["value"], issue)])
6196
+ }
6197
+ )
6198
+ case "Failure":
6199
+ return Effect.mapBothEager(
6200
+ Parser.decodeUnknownEffect(cause)(input.cause, options),
6201
+ {
6202
+ onSuccess: Exit_.failCause,
6203
+ onFailure: (issue) =>
6204
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["cause"], issue)])
6205
+ }
6206
+ )
6207
+ }
6069
6208
  }
6070
6209
  },
6071
6210
  {
@@ -6131,7 +6270,7 @@ export function Exit<A extends Top, E extends Top, D extends Top>(value: A, erro
6131
6270
  * @category ReadonlyMap
6132
6271
  * @since 4.0.0
6133
6272
  */
6134
- export interface ReadonlyMap$<Key extends Top, Value extends Top> extends
6273
+ export interface $ReadonlyMap<Key extends Top, Value extends Top> extends
6135
6274
  declareConstructor<
6136
6275
  globalThis.ReadonlyMap<Key["Type"], Value["Type"]>,
6137
6276
  globalThis.ReadonlyMap<Key["Encoded"], Value["Encoded"]>,
@@ -6156,25 +6295,28 @@ export type ReadonlyMapIso<Key extends Top, Value extends Top> = ReadonlyArray<r
6156
6295
  * @category ReadonlyMap
6157
6296
  * @since 4.0.0
6158
6297
  */
6159
- export function ReadonlyMap<Key extends Top, Value extends Top>(key: Key, value: Value): ReadonlyMap$<Key, Value> {
6298
+ export function ReadonlyMap<Key extends Top, Value extends Top>(key: Key, value: Value): $ReadonlyMap<Key, Value> {
6160
6299
  const schema = declareConstructor<
6161
6300
  globalThis.ReadonlyMap<Key["Type"], Value["Type"]>,
6162
6301
  globalThis.ReadonlyMap<Key["Encoded"], Value["Encoded"]>,
6163
6302
  ReadonlyMapIso<Key, Value>
6164
6303
  >()(
6165
6304
  [key, value],
6166
- ([key, value]) => (input, ast, options) => {
6167
- if (input instanceof globalThis.Map) {
6168
- const array = Array(Tuple([key, value]))
6169
- return Effect.mapBothEager(
6170
- Parser.decodeUnknownEffect(array)([...input], options),
6171
- {
6172
- onSuccess: (array: ReadonlyArray<readonly [Key["Type"], Value["Type"]]>) => new globalThis.Map(array),
6173
- onFailure: (issue) => new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["entries"], issue)])
6174
- }
6175
- )
6305
+ ([key, value]) => {
6306
+ const array = Array(Tuple([key, value]))
6307
+ return (input, ast, options) => {
6308
+ if (input instanceof globalThis.Map) {
6309
+ return Effect.mapBothEager(
6310
+ Parser.decodeUnknownEffect(array)([...input], options),
6311
+ {
6312
+ onSuccess: (array: ReadonlyArray<readonly [Key["Type"], Value["Type"]]>) => new globalThis.Map(array),
6313
+ onFailure: (issue) =>
6314
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["entries"], issue)])
6315
+ }
6316
+ )
6317
+ }
6318
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6176
6319
  }
6177
- return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6178
6320
  },
6179
6321
  {
6180
6322
  typeConstructor: {
@@ -6214,11 +6356,102 @@ export function ReadonlyMap<Key extends Top, Value extends Top>(key: Key, value:
6214
6356
  return make(schema.ast, { key, value })
6215
6357
  }
6216
6358
 
6359
+ /**
6360
+ * @category HashMap
6361
+ * @since 4.0.0
6362
+ */
6363
+ export interface HashMap<Key extends Top, Value extends Top> extends
6364
+ declareConstructor<
6365
+ HashMap_.HashMap<Key["Type"], Value["Type"]>,
6366
+ HashMap_.HashMap<Key["Encoded"], Value["Encoded"]>,
6367
+ readonly [Key, Value],
6368
+ HashMapIso<Key, Value>
6369
+ >
6370
+ {
6371
+ readonly key: Key
6372
+ readonly value: Value
6373
+ }
6374
+
6375
+ /**
6376
+ * @category HashMap
6377
+ * @since 4.0.0
6378
+ */
6379
+ export type HashMapIso<Key extends Top, Value extends Top> = ReadonlyArray<readonly [Key["Iso"], Value["Iso"]]>
6380
+
6381
+ /**
6382
+ * Creates a schema that validates a `HashMap` where keys and values must
6383
+ * conform to the provided schemas.
6384
+ *
6385
+ * @category HashMap
6386
+ * @since 4.0.0
6387
+ */
6388
+ export function HashMap<Key extends Top, Value extends Top>(key: Key, value: Value): HashMap<Key, Value> {
6389
+ const schema = declareConstructor<
6390
+ HashMap_.HashMap<Key["Type"], Value["Type"]>,
6391
+ HashMap_.HashMap<Key["Encoded"], Value["Encoded"]>,
6392
+ HashMapIso<Key, Value>
6393
+ >()(
6394
+ [key, value],
6395
+ ([key, value]) => {
6396
+ const entries = Array(Tuple([key, value]))
6397
+ return (input, ast, options) => {
6398
+ if (HashMap_.isHashMap(input)) {
6399
+ return Effect.mapBothEager(
6400
+ Parser.decodeUnknownEffect(entries)(HashMap_.toEntries(input), options),
6401
+ {
6402
+ onSuccess: HashMap_.fromIterable,
6403
+ onFailure: (issue) =>
6404
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["entries"], issue)])
6405
+ }
6406
+ )
6407
+ }
6408
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6409
+ }
6410
+ },
6411
+ {
6412
+ typeConstructor: {
6413
+ _tag: "effect/HashMap"
6414
+ },
6415
+ generation: {
6416
+ runtime: `Schema.HashMap(?, ?)`,
6417
+ Type: `HashMap.HashMap<?, ?>`,
6418
+ importDeclaration: `import * as HashMap from "effect/HashMap"`
6419
+ },
6420
+ expected: "HashMap",
6421
+ toCodec: ([key, value]) =>
6422
+ link<HashMap_.HashMap<Key["Encoded"], Value["Encoded"]>>()(
6423
+ Array(Tuple([key, value])),
6424
+ Transformation.transform({
6425
+ decode: HashMap_.fromIterable,
6426
+ encode: HashMap_.toEntries
6427
+ })
6428
+ ),
6429
+ toArbitrary: ([key, value]) => (fc, ctx) => {
6430
+ return fc.oneof(
6431
+ ctx?.isSuspend ? { maxDepth: 2, depthIdentifier: "HashMap" } : {},
6432
+ fc.constant([]),
6433
+ fc.array(fc.tuple(key, value), ctx?.constraints?.array)
6434
+ ).map(HashMap_.fromIterable)
6435
+ },
6436
+ toEquivalence: ([key, value]) => Equal.makeCompareMap(key, value),
6437
+ toFormatter: ([key, value]) => (t) => {
6438
+ const size = HashMap_.size(t)
6439
+ if (size === 0) {
6440
+ return "HashMap(0) {}"
6441
+ }
6442
+ const entries = HashMap_.toEntries(t).sort().map(([k, v]) => `${key(k)} => ${value(v)}`)
6443
+ return `HashMap(${size}) { ${entries.join(", ")} }`
6444
+ }
6445
+ }
6446
+ )
6447
+ return make(schema.ast, { key, value })
6448
+ }
6449
+
6217
6450
  /**
6218
6451
  * @category ReadonlySet
6219
6452
  * @since 4.0.0
6220
6453
  */
6221
- export interface ReadonlySet$<Value extends Top> extends
6454
+ export interface $ReadonlySet<Value extends Top> extends
6222
6455
  declareConstructor<
6223
6456
  globalThis.ReadonlySet<Value["Type"]>,
6224
6457
  globalThis.ReadonlySet<Value["Encoded"]>,
@@ -6239,25 +6472,28 @@ export type ReadonlySetIso<Value extends Top> = ReadonlyArray<Value["Iso"]>
6239
6472
  * @category ReadonlySet
6240
6473
  * @since 4.0.0
6241
6474
  */
6242
- export function ReadonlySet<Value extends Top>(value: Value): ReadonlySet$<Value> {
6475
+ export function ReadonlySet<Value extends Top>(value: Value): $ReadonlySet<Value> {
6243
6476
  const schema = declareConstructor<
6244
6477
  globalThis.ReadonlySet<Value["Type"]>,
6245
6478
  globalThis.ReadonlySet<Value["Encoded"]>,
6246
6479
  ReadonlySetIso<Value>
6247
6480
  >()(
6248
6481
  [value],
6249
- ([value]) => (input, ast, options) => {
6250
- if (input instanceof globalThis.Set) {
6251
- const array = Array(value)
6252
- return Effect.mapBothEager(
6253
- Parser.decodeUnknownEffect(array)([...input], options),
6254
- {
6255
- onSuccess: (array: ReadonlyArray<Value["Type"]>) => new globalThis.Set(array),
6256
- onFailure: (issue) => new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["values"], issue)])
6257
- }
6258
- )
6482
+ ([value]) => {
6483
+ const array = Array(value)
6484
+ return (input, ast, options) => {
6485
+ if (input instanceof globalThis.Set) {
6486
+ return Effect.mapBothEager(
6487
+ Parser.decodeUnknownEffect(array)([...input], options),
6488
+ {
6489
+ onSuccess: (array: ReadonlyArray<Value["Type"]>) => new globalThis.Set(array),
6490
+ onFailure: (issue) =>
6491
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["values"], issue)])
6492
+ }
6493
+ )
6494
+ }
6495
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6259
6496
  }
6260
- return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6261
6497
  },
6262
6498
  {
6263
6499
  typeConstructor: {
@@ -6297,6 +6533,184 @@ export function ReadonlySet<Value extends Top>(value: Value): ReadonlySet$<Value
6297
6533
  return make(schema.ast, { value })
6298
6534
  }
6299
6535
 
6536
+ /**
6537
+ * @category HashSet
6538
+ * @since 4.0.0
6539
+ */
6540
+ export interface HashSet<Value extends Top> extends
6541
+ declareConstructor<
6542
+ HashSet_.HashSet<Value["Type"]>,
6543
+ HashSet_.HashSet<Value["Encoded"]>,
6544
+ readonly [Value],
6545
+ HashSetIso<Value>
6546
+ >
6547
+ {
6548
+ readonly value: Value
6549
+ }
6550
+
6551
+ /**
6552
+ * @category HashSet
6553
+ * @since 4.0.0
6554
+ */
6555
+ export type HashSetIso<Value extends Top> = ReadonlyArray<Value["Iso"]>
6556
+
6557
+ /**
6558
+ * Creates a schema that validates a `HashSet` where values must conform to the
6559
+ * provided schema.
6560
+ *
6561
+ * @category HashSet
6562
+ * @since 4.0.0
6563
+ */
6564
+ export function HashSet<Value extends Top>(value: Value): HashSet<Value> {
6565
+ const schema = declareConstructor<
6566
+ HashSet_.HashSet<Value["Type"]>,
6567
+ HashSet_.HashSet<Value["Encoded"]>,
6568
+ HashSetIso<Value>
6569
+ >()(
6570
+ [value],
6571
+ ([value]) => {
6572
+ const values = Array(value)
6573
+ return (input, ast, options) => {
6574
+ if (HashSet_.isHashSet(input)) {
6575
+ return Effect.mapBothEager(
6576
+ Parser.decodeUnknownEffect(values)(Arr.fromIterable(input), options),
6577
+ {
6578
+ onSuccess: HashSet_.fromIterable,
6579
+ onFailure: (issue) =>
6580
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["values"], issue)])
6581
+ }
6582
+ )
6583
+ }
6584
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6585
+ }
6586
+ },
6587
+ {
6588
+ typeConstructor: {
6589
+ _tag: "effect/HashSet"
6590
+ },
6591
+ generation: {
6592
+ runtime: `Schema.HashSet(?)`,
6593
+ Type: `HashSet.HashSet<?>`
6594
+ },
6595
+ expected: "HashSet",
6596
+ toCodec: ([value]) =>
6597
+ link<HashSet_.HashSet<Value["Encoded"]>>()(
6598
+ Array(value),
6599
+ Transformation.transform({
6600
+ decode: HashSet_.fromIterable,
6601
+ encode: Arr.fromIterable
6602
+ })
6603
+ ),
6604
+ toArbitrary: ([value]) => (fc, ctx) => {
6605
+ return fc.oneof(
6606
+ ctx?.isSuspend ? { maxDepth: 2, depthIdentifier: "HashSet" } : {},
6607
+ fc.constant([]),
6608
+ fc.array(value, ctx?.constraints?.array)
6609
+ ).map(HashSet_.fromIterable)
6610
+ },
6611
+ toEquivalence: ([value]) => Equal.makeCompareSet(value),
6612
+ toFormatter: ([value]) => (t) => {
6613
+ const size = HashSet_.size(t)
6614
+ if (size === 0) {
6615
+ return "HashSet(0) {}"
6616
+ }
6617
+ const values = globalThis.Array.from(t).sort().map((v) => `${value(v)}`)
6618
+ return `HashSet(${size}) { ${values.join(", ")} }`
6619
+ }
6620
+ }
6621
+ )
6622
+ return make(schema.ast, { value })
6623
+ }
6624
+
6625
+ /**
6626
+ * @category Chunk
6627
+ * @since 4.0.0
6628
+ */
6629
+ export interface Chunk<Value extends Top> extends
6630
+ declareConstructor<
6631
+ Chunk_.Chunk<Value["Type"]>,
6632
+ Chunk_.Chunk<Value["Encoded"]>,
6633
+ readonly [Value],
6634
+ ChunkIso<Value>
6635
+ >
6636
+ {
6637
+ readonly value: Value
6638
+ }
6639
+
6640
+ /**
6641
+ * @category Chunk
6642
+ * @since 4.0.0
6643
+ */
6644
+ export type ChunkIso<Value extends Top> = ReadonlyArray<Value["Iso"]>
6645
+
6646
+ /**
6647
+ * Creates a schema that validates a `Chunk` where values must conform to the
6648
+ * provided schema.
6649
+ *
6650
+ * @category Chunk
6651
+ * @since 4.0.0
6652
+ */
6653
+ export function Chunk<Value extends Top>(value: Value): Chunk<Value> {
6654
+ const schema = declareConstructor<
6655
+ Chunk_.Chunk<Value["Type"]>,
6656
+ Chunk_.Chunk<Value["Encoded"]>,
6657
+ ChunkIso<Value>
6658
+ >()(
6659
+ [value],
6660
+ ([value]) => {
6661
+ const values = Array(value)
6662
+ return (input, ast, options) => {
6663
+ if (Chunk_.isChunk(input)) {
6664
+ return Effect.mapBothEager(
6665
+ Parser.decodeUnknownEffect(values)(Arr.fromIterable(input), options),
6666
+ {
6667
+ onSuccess: Chunk_.fromIterable,
6668
+ onFailure: (issue) =>
6669
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["values"], issue)])
6670
+ }
6671
+ )
6672
+ }
6673
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6674
+ }
6675
+ },
6676
+ {
6677
+ typeConstructor: {
6678
+ _tag: "effect/Chunk"
6679
+ },
6680
+ generation: {
6681
+ runtime: `Schema.Chunk(?)`,
6682
+ Type: `Chunk.Chunk<?>`
6683
+ },
6684
+ expected: "Chunk",
6685
+ toCodec: ([value]) =>
6686
+ link<Chunk_.Chunk<Value["Encoded"]>>()(
6687
+ Array(value),
6688
+ Transformation.transform({
6689
+ decode: Chunk_.fromIterable,
6690
+ encode: Arr.fromIterable
6691
+ })
6692
+ ),
6693
+ toArbitrary: ([value]) => (fc, ctx) => {
6694
+ return fc.oneof(
6695
+ ctx?.isSuspend ? { maxDepth: 2, depthIdentifier: "Chunk" } : {},
6696
+ fc.constant([]),
6697
+ fc.array(value, ctx?.constraints?.array)
6698
+ ).map(Chunk_.fromIterable)
6699
+ },
6700
+ toEquivalence: ([value]) => Chunk_.makeEquivalence(value),
6701
+ toFormatter: ([value]) => (t) => {
6702
+ const size = Chunk_.size(t)
6703
+ if (size === 0) {
6704
+ return "Chunk(0) {}"
6705
+ }
6706
+ const values = globalThis.Array.from(t).sort().map((v) => `${value(v)}`)
6707
+ return `Chunk(${size}) { ${values.join(", ")} }`
6708
+ }
6709
+ }
6710
+ )
6711
+ return make(schema.ast, { value })
6712
+ }
6713
+
6300
6714
  /**
6301
6715
  * @since 4.0.0
6302
6716
  */
@@ -6588,6 +7002,45 @@ export const DurationFromMillis: DurationFromMillis = Number.check(isGreaterThan
6588
7002
  decodeTo(Duration, Transformation.durationFromMillis)
6589
7003
  )
6590
7004
 
7005
+ /**
7006
+ * @since 4.0.0
7007
+ */
7008
+ export interface BigDecimal extends declare<BigDecimal_.BigDecimal> {}
7009
+
7010
+ /**
7011
+ * A schema for `BigDecimal` values.
7012
+ *
7013
+ * **Default JSON serializer**
7014
+ *
7015
+ * - encodes `BigDecimal` as a `string`
7016
+ *
7017
+ * @since 4.0.0
7018
+ */
7019
+ export const BigDecimal: BigDecimal = declare(
7020
+ BigDecimal_.isBigDecimal,
7021
+ {
7022
+ typeConstructor: {
7023
+ _tag: "effect/BigDecimal"
7024
+ },
7025
+ generation: {
7026
+ runtime: `Schema.BigDecimal`,
7027
+ Type: `BigDecimal.BigDecimal`,
7028
+ importDeclaration: `import * as BigDecimal from "effect/BigDecimal"`
7029
+ },
7030
+ expected: "BigDecimal",
7031
+ toCodecJson: () =>
7032
+ link<BigDecimal_.BigDecimal>()(
7033
+ String.annotate({ expected: "a string that will be decoded as a BigDecimal" }),
7034
+ Transformation.bigDecimalFromString
7035
+ ),
7036
+ toArbitrary: () => (fc) =>
7037
+ fc.tuple(fc.bigInt(), fc.integer({ min: 0, max: 20 }))
7038
+ .map(([value, scale]) => BigDecimal_.make(value, scale)),
7039
+ toFormatter: () => (bd) => BigDecimal_.format(bd),
7040
+ toEquivalence: () => BigDecimal_.Equivalence
7041
+ }
7042
+ )
7043
+
6591
7044
  /**
6592
7045
  * @since 4.0.0
6593
7046
  */
@@ -6720,7 +7173,7 @@ export const File: File = instanceOf(globalThis.File, {
6720
7173
  }),
6721
7174
  Transformation.transformOrFail({
6722
7175
  decode: (e) =>
6723
- Result_.match(Base64.decode(e.data), {
7176
+ Result_.match(Encoding.decodeBase64(e.data), {
6724
7177
  onFailure: (error) =>
6725
7178
  Effect.fail(
6726
7179
  new Issue.InvalidValue(Option_.some(e.data), {
@@ -6739,7 +7192,7 @@ export const File: File = instanceOf(globalThis.File, {
6739
7192
  try: async () => {
6740
7193
  const bytes = new globalThis.Uint8Array(await file.arrayBuffer())
6741
7194
  return {
6742
- data: Base64.encode(bytes),
7195
+ data: Encoding.encodeBase64(bytes),
6743
7196
  type: file.type,
6744
7197
  name: file.name,
6745
7198
  lastModified: file.lastModified
@@ -7273,7 +7726,7 @@ export const DateTimeUtc: DateTimeUtc = declare(
7273
7726
  (u) => DateTime.isDateTime(u) && DateTime.isUtc(u),
7274
7727
  {
7275
7728
  typeConstructor: {
7276
- _tag: "DateTime.Utc"
7729
+ _tag: "effect/DateTime.Utc"
7277
7730
  },
7278
7731
  generation: {
7279
7732
  runtime: `Schema.DateTimeUtc`,
@@ -7284,10 +7737,7 @@ export const DateTimeUtc: DateTimeUtc = declare(
7284
7737
  toCodecJson: () =>
7285
7738
  link<DateTime.Utc>()(
7286
7739
  String,
7287
- {
7288
- decode: Getter.dateTimeUtcFromInput(),
7289
- encode: Getter.transform(DateTime.formatIso)
7290
- }
7740
+ Transformation.dateTimeUtcFromString
7291
7741
  ),
7292
7742
  toArbitrary: () => (fc, ctx) =>
7293
7743
  fc.date({ noInvalidDate: true, ...ctx?.constraints?.date }).map((date) => DateTime.fromDateUnsafe(date)),
@@ -7344,10 +7794,7 @@ export const DateTimeUtcFromString: DateTimeUtcFromString = String.annotate({
7344
7794
  }).pipe(
7345
7795
  decodeTo(
7346
7796
  DateTimeUtc,
7347
- Transformation.transform({
7348
- decode: DateTime.makeUnsafe,
7349
- encode: DateTime.formatIso
7350
- })
7797
+ Transformation.dateTimeUtcFromString
7351
7798
  )
7352
7799
  )
7353
7800
 
@@ -7375,6 +7822,183 @@ export const DateTimeUtcFromMillis: DateTimeUtcFromMillis = Number.pipe(
7375
7822
  })
7376
7823
  )
7377
7824
 
7825
+ /**
7826
+ * @since 4.0.0
7827
+ */
7828
+ export interface TimeZoneOffset extends declare<DateTime.TimeZone.Offset> {}
7829
+
7830
+ /**
7831
+ * A schema for `DateTime.TimeZone.Offset` values.
7832
+ *
7833
+ * **Default JSON serializer**
7834
+ *
7835
+ * - encodes `DateTime.TimeZone.Offset` as a number (offset in milliseconds)
7836
+ *
7837
+ * @category DateTime
7838
+ * @since 4.0.0
7839
+ */
7840
+ export const TimeZoneOffset: TimeZoneOffset = declare(
7841
+ DateTime.isTimeZoneOffset,
7842
+ {
7843
+ typeConstructor: {
7844
+ _tag: "effect/DateTime.TimeZone.Offset"
7845
+ },
7846
+ generation: {
7847
+ runtime: `Schema.TimeZoneOffset`,
7848
+ Type: `DateTime.TimeZone.Offset`,
7849
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7850
+ },
7851
+ expected: "DateTime.TimeZone.Offset",
7852
+ toCodecJson: () =>
7853
+ link<DateTime.TimeZone.Offset>()(
7854
+ Number,
7855
+ Transformation.timeZoneOffsetFromNumber
7856
+ ),
7857
+ toArbitrary: () => (fc) =>
7858
+ fc.integer({ min: -12 * 60 * 60 * 1000, max: 14 * 60 * 60 * 1000 }).map((n) => DateTime.zoneMakeOffset(n)),
7859
+ toFormatter: () => (tz) => DateTime.zoneToString(tz),
7860
+ toEquivalence: () => (a, b) => a.offset === b.offset
7861
+ }
7862
+ )
7863
+
7864
+ /**
7865
+ * @since 4.0.0
7866
+ */
7867
+ export interface TimeZoneNamed extends declare<DateTime.TimeZone.Named> {}
7868
+
7869
+ /**
7870
+ * A schema for `DateTime.TimeZone.Named` values.
7871
+ *
7872
+ * **Default JSON serializer**
7873
+ *
7874
+ * - encodes `DateTime.TimeZone.Named` as a string (IANA time zone identifier)
7875
+ *
7876
+ * @category DateTime
7877
+ * @since 4.0.0
7878
+ */
7879
+ export const TimeZoneNamed: TimeZoneNamed = declare(
7880
+ DateTime.isTimeZoneNamed,
7881
+ {
7882
+ typeConstructor: {
7883
+ _tag: "effect/DateTime.TimeZone.Named"
7884
+ },
7885
+ generation: {
7886
+ runtime: `Schema.TimeZoneNamed`,
7887
+ Type: `DateTime.TimeZone.Named`,
7888
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7889
+ },
7890
+ expected: "DateTime.TimeZone.Named",
7891
+ toCodecJson: () =>
7892
+ link<DateTime.TimeZone.Named>()(
7893
+ String.annotate({ expected: "an IANA time zone identifier" }),
7894
+ Transformation.timeZoneNamedFromString
7895
+ ),
7896
+ toArbitrary: () => (fc) =>
7897
+ fc.constantFrom(
7898
+ ...["UTC", "Europe/London", "America/New_York", "Asia/Tokyo", "Australia/Sydney"].map(
7899
+ DateTime.zoneMakeNamedUnsafe
7900
+ )
7901
+ ),
7902
+ toFormatter: () => (tz) => DateTime.zoneToString(tz),
7903
+ toEquivalence: () => (a, b) => a.id === b.id
7904
+ }
7905
+ )
7906
+
7907
+ /**
7908
+ * @since 4.0.0
7909
+ */
7910
+ export interface TimeZone extends declare<DateTime.TimeZone> {}
7911
+
7912
+ /**
7913
+ * A schema for `DateTime.TimeZone` values.
7914
+ *
7915
+ * **Default JSON serializer**
7916
+ *
7917
+ * - encodes `DateTime.TimeZone` as a string (IANA identifier or offset like
7918
+ * `+03:00`)
7919
+ *
7920
+ * @category DateTime
7921
+ * @since 4.0.0
7922
+ */
7923
+ export const TimeZone: TimeZone = declare(
7924
+ DateTime.isTimeZone,
7925
+ {
7926
+ typeConstructor: {
7927
+ _tag: "effect/DateTime.TimeZone"
7928
+ },
7929
+ generation: {
7930
+ runtime: `Schema.TimeZone`,
7931
+ Type: `DateTime.TimeZone`,
7932
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7933
+ },
7934
+ expected: "DateTime.TimeZone",
7935
+ toCodecJson: () =>
7936
+ link<DateTime.TimeZone>()(
7937
+ String.annotate({ expected: "a time zone string (IANA identifier or offset like +03:00)" }),
7938
+ Transformation.timeZoneFromString
7939
+ ),
7940
+ toArbitrary: () => (fc) =>
7941
+ fc.oneof(
7942
+ fc.integer({ min: -12 * 60 * 60 * 1000, max: 14 * 60 * 60 * 1000 }).map((n) => DateTime.zoneMakeOffset(n)),
7943
+ fc.constantFrom(
7944
+ ...["UTC", "Europe/London", "America/New_York", "Asia/Tokyo", "Australia/Sydney"].map(
7945
+ DateTime.zoneMakeNamedUnsafe
7946
+ )
7947
+ )
7948
+ ),
7949
+ toFormatter: () => (tz) => DateTime.zoneToString(tz),
7950
+ toEquivalence: () => (a, b) => DateTime.zoneToString(a) === DateTime.zoneToString(b)
7951
+ }
7952
+ )
7953
+
7954
+ /**
7955
+ * @since 4.0.0
7956
+ */
7957
+ export interface DateTimeZoned extends declare<DateTime.Zoned> {}
7958
+
7959
+ /**
7960
+ * A schema for `DateTime.Zoned` values.
7961
+ *
7962
+ * **Default JSON serializer**
7963
+ *
7964
+ * - encodes `DateTime.Zoned` as a string in the format
7965
+ * `YYYY-MM-DDTHH:mm:ss.sss+HH:MM[Time/Zone]`
7966
+ *
7967
+ * @category DateTime
7968
+ * @since 4.0.0
7969
+ */
7970
+ export const DateTimeZoned: DateTimeZoned = declare(
7971
+ (u) => DateTime.isDateTime(u) && DateTime.isZoned(u),
7972
+ {
7973
+ typeConstructor: {
7974
+ _tag: "effect/DateTime.Zoned"
7975
+ },
7976
+ generation: {
7977
+ runtime: `Schema.DateTimeZoned`,
7978
+ Type: `DateTime.Zoned`,
7979
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7980
+ },
7981
+ expected: "DateTime.Zoned",
7982
+ toCodecJson: () =>
7983
+ link<DateTime.Zoned>()(
7984
+ String.annotate({ expected: "a zoned DateTime string (e.g. 2024-01-01T00:00:00.000+00:00[Europe/London])" }),
7985
+ Transformation.dateTimeZonedFromString
7986
+ ),
7987
+ toArbitrary: () => (fc, ctx) =>
7988
+ fc.tuple(
7989
+ fc.date({
7990
+ noInvalidDate: true,
7991
+ min: new globalThis.Date(-8640000000000000 + 14 * 60 * 60 * 1000),
7992
+ max: new globalThis.Date(8640000000000000 - 14 * 60 * 60 * 1000),
7993
+ ...ctx?.constraints?.date
7994
+ }),
7995
+ fc.constantFrom("UTC", "Europe/London", "America/New_York", "Asia/Tokyo", "Australia/Sydney")
7996
+ ).map(([date, zone]) => DateTime.makeZonedUnsafe(date, { timeZone: zone })),
7997
+ toFormatter: () => (zoned) => DateTime.formatIsoZoned(zoned),
7998
+ toEquivalence: () => DateTime.Equivalence
7999
+ }
8000
+ )
8001
+
7378
8002
  // -----------------------------------------------------------------------------
7379
8003
  // Class
7380
8004
  // -----------------------------------------------------------------------------
@@ -7402,7 +8026,10 @@ export interface Class<Self, S extends Top & { readonly fields: Struct.Fields },
7402
8026
  >
7403
8027
  {
7404
8028
  // intentionally left without `readonly "~rebuild.out": this`
7405
- new(props: S["~type.make.in"], options?: MakeOptions): S["Type"] & Inherited
8029
+ new(
8030
+ ...args: {} extends S["~type.make.in"] ? [props?: S["~type.make.in"], options?: MakeOptions]
8031
+ : [props: S["~type.make.in"], options?: MakeOptions]
8032
+ ): S["Type"] & Inherited
7406
8033
  readonly identifier: string
7407
8034
  readonly fields: S["fields"]
7408
8035
  /**
@@ -7463,11 +8090,12 @@ function makeClass<
7463
8090
 
7464
8091
  return class extends Inherited {
7465
8092
  constructor(...[input, options]: ReadonlyArray<any>) {
8093
+ const props = input ?? {}
7466
8094
  if (options?.disableValidation) {
7467
- super(input, options)
8095
+ super(props, options)
7468
8096
  } else {
7469
- const validated = struct.makeUnsafe(input, options)
7470
- super({ ...input, ...validated }, { ...options, disableValidation: true })
8097
+ const validated = struct.makeUnsafe(props, options)
8098
+ super({ ...props, ...validated }, { ...options, disableValidation: true })
7471
8099
  }
7472
8100
  }
7473
8101
 
@@ -7516,6 +8144,9 @@ function makeClass<
7516
8144
  static makeUnsafe(input: S["~type.make.in"], options?: MakeOptions): Self {
7517
8145
  return new this(input, options)
7518
8146
  }
8147
+ static makeOption(input: S["~type.make.in"], options?: MakeOptions): Option_.Option<Self> {
8148
+ return Parser.makeOption(getClassSchema(this) as any)(input, options) as any
8149
+ }
7519
8150
  static annotate(annotations: Annotations.Declaration<Self, readonly [S]>) {
7520
8151
  return this.rebuild(AST.annotate(this.ast, annotations))
7521
8152
  }
@@ -7590,6 +8221,7 @@ function getClassSchemaFactory<S extends Top>(
7590
8221
  toArbitrary: ([from]: readonly [FastCheck.Arbitrary<S["Type"]>]) => () =>
7591
8222
  from.map((args) => new self(args)),
7592
8223
  toFormatter: ([from]: readonly [Formatter<S["Type"]>]) => (t: Self) => `${self.identifier}(${from(t)})`,
8224
+ "~sentinels": AST.collectSentinels(from.ast),
7593
8225
  ...annotations
7594
8226
  }
7595
8227
  )
@@ -7723,7 +8355,9 @@ export const ErrorClass: {
7723
8355
  annotations?: Annotations.Declaration<Self, readonly [Struct<Struct.Fields>]>
7724
8356
  ): ErrorClass<Self, Struct<Struct.Fields>, Cause_.YieldableError & Brand> => {
7725
8357
  const struct = isStruct(schema) ? schema : Struct(schema)
7726
- return makeClass(core.Error, identifier, struct, annotations)
8358
+ const self = makeClass(core.Error, identifier, struct, annotations)
8359
+ ;(self.prototype as any).name = identifier
8360
+ return self
7727
8361
  }
7728
8362
 
7729
8363
  /**
@@ -8042,11 +8676,11 @@ export function toJsonSchemaDocument(schema: Top, options?: ToJsonSchemaOptions)
8042
8676
  }
8043
8677
 
8044
8678
  // -----------------------------------------------------------------------------
8045
- // Serializer
8679
+ // Canonical Codecs
8046
8680
  // -----------------------------------------------------------------------------
8047
8681
 
8048
8682
  /**
8049
- * @category Serializer
8683
+ * @category Canonical Codecs
8050
8684
  * @since 4.0.0
8051
8685
  */
8052
8686
  export function toCodecJson<T, E, RD, RE>(schema: Codec<T, E, RD, RE>): Codec<T, unknown, RD, RE> {
@@ -8054,7 +8688,7 @@ export function toCodecJson<T, E, RD, RE>(schema: Codec<T, E, RD, RE>): Codec<T,
8054
8688
  }
8055
8689
 
8056
8690
  /**
8057
- * @category Serializer
8691
+ * @category Canonical Codecs
8058
8692
  * @since 4.0.0
8059
8693
  */
8060
8694
  export function toCodecIso<S extends Top>(schema: S): Codec<S["Type"], S["Iso"]> {
@@ -8062,13 +8696,13 @@ export function toCodecIso<S extends Top>(schema: S): Codec<S["Type"], S["Iso"]>
8062
8696
  }
8063
8697
 
8064
8698
  /**
8065
- * @category Serializer
8699
+ * @category Canonical Codecs
8066
8700
  * @since 4.0.0
8067
8701
  */
8068
8702
  export type StringTree = Tree<string | undefined>
8069
8703
 
8070
8704
  /**
8071
- * The StringTree serializer converts **every leaf value to a string**, while
8705
+ * The StringTree canonical codec converts **every leaf value to a string**, while
8072
8706
  * preserving the original structure.
8073
8707
  *
8074
8708
  * Declarations are converted to `undefined` (unless they have a
@@ -8082,7 +8716,7 @@ export type StringTree = Tree<string | undefined>
8082
8716
  *
8083
8717
  * Defaults to `false`.
8084
8718
  *
8085
- * @category Serializer
8719
+ * @category Canonical Codecs
8086
8720
  * @since 4.0.0
8087
8721
  */
8088
8722
  export function toCodecStringTree<T, E, RD, RE>(schema: Codec<T, E, RD, RE>): Codec<T, StringTree, RD, RE>
@@ -8115,7 +8749,7 @@ type XmlEncoderOptions = {
8115
8749
  }
8116
8750
 
8117
8751
  /**
8118
- * @category Serializer
8752
+ * @category Canonical Codecs
8119
8753
  * @since 4.0.0
8120
8754
  */
8121
8755
  export function toEncoderXml<T, E, RD, RE>(
@@ -8235,8 +8869,6 @@ function serializerTree(
8235
8869
  onMissingAnnotation: (ast: AST.AST) => AST.AST
8236
8870
  ): AST.AST {
8237
8871
  switch (ast._tag) {
8238
- case "Unknown":
8239
- case "ObjectKeyword":
8240
8872
  case "Declaration": {
8241
8873
  const getLink = ast.annotations?.toCodecJson ?? ast.annotations?.toCodec
8242
8874
  if (Predicate.isFunction(getLink)) {
@@ -8253,6 +8885,9 @@ function serializerTree(
8253
8885
  return AST.replaceEncoding(ast, [nullToString])
8254
8886
  case "Boolean":
8255
8887
  return AST.replaceEncoding(ast, [booleanToString])
8888
+ case "Unknown":
8889
+ case "ObjectKeyword":
8890
+ return AST.replaceEncoding(ast, [AST.unknownToStringTree])
8256
8891
  case "Enum":
8257
8892
  case "Number":
8258
8893
  case "Literal":
@@ -8479,13 +9114,13 @@ export function toDifferJsonPatch<T, E>(schema: Codec<T, E>): Differ<T, JsonPatc
8479
9114
  * @category Tree
8480
9115
  * @since 4.0.0
8481
9116
  */
8482
- export type Tree<Node> = Node | TreeObject<Node> | ReadonlyArray<Tree<Node>>
9117
+ export type Tree<Node> = Node | TreeRecord<Node> | ReadonlyArray<Tree<Node>>
8483
9118
 
8484
9119
  /**
8485
9120
  * @category Tree
8486
9121
  * @since 4.0.0
8487
9122
  */
8488
- export interface TreeObject<A> {
9123
+ export interface TreeRecord<A> {
8489
9124
  readonly [x: string]: Tree<A>
8490
9125
  }
8491
9126
 
@@ -8508,51 +9143,12 @@ export function Tree<S extends Top>(node: S) {
8508
9143
  return Tree
8509
9144
  }
8510
9145
 
8511
- /**
8512
- * @category Tree
8513
- * @since 4.0.0
8514
- */
8515
- export type MutableTree<A> = A | MutableTreeRecord<A> | Array<MutableTree<A>>
8516
-
8517
- /**
8518
- * @category Tree
8519
- * @since 4.0.0
8520
- */
8521
- export interface MutableTreeRecord<A> {
8522
- [x: string]: MutableTree<A>
8523
- }
8524
-
8525
- /**
8526
- * @category Tree
8527
- * @since 4.0.0
8528
- */
8529
- export function MutableTree<S extends Top>(node: S) {
8530
- const MutableTree$ref = suspend((): Codec<
8531
- MutableTree<S["Type"]>,
8532
- MutableTree<S["Encoded"]>,
8533
- S["DecodingServices"],
8534
- S["EncodingServices"]
8535
- > => MutableTree)
8536
- const MutableTree = Union([
8537
- node,
8538
- mutable(Array(MutableTree$ref)),
8539
- Record(String, mutableKey(MutableTree$ref))
8540
- ])
8541
- return MutableTree
8542
- }
8543
-
8544
9146
  /**
8545
9147
  * @category JSON
8546
9148
  * @since 4.0.0
8547
9149
  */
8548
9150
  export type Json = null | number | boolean | string | JsonArray | JsonObject
8549
9151
 
8550
- /**
8551
- * @category JSON
8552
- * @since 4.0.0
8553
- */
8554
- export const Json: Codec<Json> = Tree(Union([Null, Number, Boolean, String]))
8555
-
8556
9152
  /**
8557
9153
  * @category JSON
8558
9154
  * @since 4.0.0
@@ -8571,13 +9167,13 @@ export interface JsonObject {
8571
9167
  * @category JSON
8572
9168
  * @since 4.0.0
8573
9169
  */
8574
- export type MutableJson = null | number | boolean | string | MutableJsonArray | MutableJsonObject
9170
+ export const Json: Codec<Json> = make(AST.Json)
8575
9171
 
8576
9172
  /**
8577
9173
  * @category JSON
8578
9174
  * @since 4.0.0
8579
9175
  */
8580
- export const MutableJson: Codec<MutableJson> = MutableTree(Union([Null, Number, Boolean, String]))
9176
+ export type MutableJson = null | number | boolean | string | MutableJsonArray | MutableJsonObject
8581
9177
 
8582
9178
  /**
8583
9179
  * @category JSON
@@ -8593,6 +9189,12 @@ export interface MutableJsonObject {
8593
9189
  [x: string]: MutableJson
8594
9190
  }
8595
9191
 
9192
+ /**
9193
+ * @category JSON
9194
+ * @since 4.0.0
9195
+ */
9196
+ export const MutableJson: Codec<MutableJson> = make(AST.MutableJson)
9197
+
8596
9198
  // -----------------------------------------------------------------------------
8597
9199
  // Annotations
8598
9200
  // -----------------------------------------------------------------------------