effect 4.0.0-beta.0 → 4.0.0-beta.10

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 (571) hide show
  1. package/dist/Cache.d.ts +2 -2
  2. package/dist/Cache.d.ts.map +1 -1
  3. package/dist/Cache.js +1 -1
  4. package/dist/Cache.js.map +1 -1
  5. package/dist/Cause.d.ts +1 -1
  6. package/dist/Cause.d.ts.map +1 -1
  7. package/dist/Channel.d.ts.map +1 -1
  8. package/dist/Channel.js +6 -4
  9. package/dist/Channel.js.map +1 -1
  10. package/dist/Combiner.d.ts +280 -13
  11. package/dist/Combiner.d.ts.map +1 -1
  12. package/dist/Combiner.js +198 -7
  13. package/dist/Combiner.js.map +1 -1
  14. package/dist/Config.d.ts +3 -3
  15. package/dist/Config.js +3 -3
  16. package/dist/Config.js.map +1 -1
  17. package/dist/ConfigProvider.d.ts +1 -1
  18. package/dist/Cron.d.ts +1 -1
  19. package/dist/Data.d.ts +534 -365
  20. package/dist/Data.d.ts.map +1 -1
  21. package/dist/Data.js +132 -79
  22. package/dist/Data.js.map +1 -1
  23. package/dist/DateTime.d.ts +23 -161
  24. package/dist/DateTime.d.ts.map +1 -1
  25. package/dist/DateTime.js +6 -51
  26. package/dist/DateTime.js.map +1 -1
  27. package/dist/Duration.d.ts +12 -12
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +12 -12
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +175 -240
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +73 -119
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Encoding.d.ts +194 -0
  36. package/dist/Encoding.d.ts.map +1 -0
  37. package/dist/Encoding.js +352 -0
  38. package/dist/Encoding.js.map +1 -0
  39. package/dist/Equal.d.ts +276 -109
  40. package/dist/Equal.d.ts.map +1 -1
  41. package/dist/Equal.js +124 -48
  42. package/dist/Equal.js.map +1 -1
  43. package/dist/FileSystem.d.ts +1 -1
  44. package/dist/FileSystem.d.ts.map +1 -1
  45. package/dist/FileSystem.js +5 -5
  46. package/dist/FileSystem.js.map +1 -1
  47. package/dist/Filter.d.ts +30 -1
  48. package/dist/Filter.d.ts.map +1 -1
  49. package/dist/Filter.js +15 -0
  50. package/dist/Filter.js.map +1 -1
  51. package/dist/Formatter.d.ts +131 -47
  52. package/dist/Formatter.d.ts.map +1 -1
  53. package/dist/Formatter.js +229 -51
  54. package/dist/Formatter.js.map +1 -1
  55. package/dist/Graph.d.ts +1 -1
  56. package/dist/Graph.d.ts.map +1 -1
  57. package/dist/Graph.js +2 -2
  58. package/dist/Graph.js.map +1 -1
  59. package/dist/JsonSchema.d.ts +299 -10
  60. package/dist/JsonSchema.d.ts.map +1 -1
  61. package/dist/JsonSchema.js +323 -4
  62. package/dist/JsonSchema.js.map +1 -1
  63. package/dist/Latch.d.ts +109 -0
  64. package/dist/Latch.d.ts.map +1 -0
  65. package/dist/Latch.js +72 -0
  66. package/dist/Latch.js.map +1 -0
  67. package/dist/LayerMap.d.ts +4 -4
  68. package/dist/LayerMap.d.ts.map +1 -1
  69. package/dist/LogLevel.d.ts +27 -0
  70. package/dist/LogLevel.d.ts.map +1 -1
  71. package/dist/LogLevel.js +28 -100
  72. package/dist/LogLevel.js.map +1 -1
  73. package/dist/Logger.d.ts +4 -4
  74. package/dist/Logger.d.ts.map +1 -1
  75. package/dist/Metric.d.ts +2 -2
  76. package/dist/Metric.d.ts.map +1 -1
  77. package/dist/Metric.js +1 -1
  78. package/dist/Metric.js.map +1 -1
  79. package/dist/Optic.d.ts +947 -18
  80. package/dist/Optic.d.ts.map +1 -1
  81. package/dist/Optic.js +454 -5
  82. package/dist/Optic.js.map +1 -1
  83. package/dist/Pipeable.d.ts +17 -0
  84. package/dist/Pipeable.d.ts.map +1 -1
  85. package/dist/Pipeable.js +19 -1
  86. package/dist/Pipeable.js.map +1 -1
  87. package/dist/PlatformError.d.ts +10 -9
  88. package/dist/PlatformError.d.ts.map +1 -1
  89. package/dist/PlatformError.js +2 -2
  90. package/dist/PlatformError.js.map +1 -1
  91. package/dist/Pool.d.ts +6 -4
  92. package/dist/Pool.d.ts.map +1 -1
  93. package/dist/Pool.js +7 -5
  94. package/dist/Pool.js.map +1 -1
  95. package/dist/PubSub.d.ts +3 -2
  96. package/dist/PubSub.d.ts.map +1 -1
  97. package/dist/PubSub.js +3 -2
  98. package/dist/PubSub.js.map +1 -1
  99. package/dist/Random.d.ts +18 -1
  100. package/dist/Random.d.ts.map +1 -1
  101. package/dist/Random.js +29 -12
  102. package/dist/Random.js.map +1 -1
  103. package/dist/RcMap.d.ts +2 -2
  104. package/dist/RcMap.d.ts.map +1 -1
  105. package/dist/RcMap.js +1 -1
  106. package/dist/RcMap.js.map +1 -1
  107. package/dist/RcRef.d.ts +1 -1
  108. package/dist/RcRef.d.ts.map +1 -1
  109. package/dist/Reducer.d.ts +166 -7
  110. package/dist/Reducer.d.ts.map +1 -1
  111. package/dist/Reducer.js +135 -1
  112. package/dist/Reducer.js.map +1 -1
  113. package/dist/Request.d.ts +1 -1
  114. package/dist/Request.d.ts.map +1 -1
  115. package/dist/Request.js +2 -1
  116. package/dist/Request.js.map +1 -1
  117. package/dist/RequestResolver.d.ts +6 -26
  118. package/dist/RequestResolver.d.ts.map +1 -1
  119. package/dist/RequestResolver.js +0 -20
  120. package/dist/RequestResolver.js.map +1 -1
  121. package/dist/Result.d.ts +12 -0
  122. package/dist/Result.d.ts.map +1 -1
  123. package/dist/Result.js +12 -0
  124. package/dist/Result.js.map +1 -1
  125. package/dist/Schedule.d.ts +33 -14
  126. package/dist/Schedule.d.ts.map +1 -1
  127. package/dist/Schedule.js +65 -24
  128. package/dist/Schedule.js.map +1 -1
  129. package/dist/Schema.d.ts +199 -49
  130. package/dist/Schema.d.ts.map +1 -1
  131. package/dist/Schema.js +386 -72
  132. package/dist/Schema.js.map +1 -1
  133. package/dist/SchemaGetter.d.ts +2 -2
  134. package/dist/SchemaGetter.d.ts.map +1 -1
  135. package/dist/SchemaGetter.js +12 -14
  136. package/dist/SchemaGetter.js.map +1 -1
  137. package/dist/SchemaRepresentation.d.ts +44 -43
  138. package/dist/SchemaRepresentation.d.ts.map +1 -1
  139. package/dist/SchemaRepresentation.js +43 -24
  140. package/dist/SchemaRepresentation.js.map +1 -1
  141. package/dist/SchemaTransformation.d.ts +37 -0
  142. package/dist/SchemaTransformation.d.ts.map +1 -1
  143. package/dist/SchemaTransformation.js +80 -0
  144. package/dist/SchemaTransformation.js.map +1 -1
  145. package/dist/ScopedCache.d.ts +2 -2
  146. package/dist/ScopedCache.d.ts.map +1 -1
  147. package/dist/ScopedCache.js +1 -1
  148. package/dist/ScopedCache.js.map +1 -1
  149. package/dist/Semaphore.d.ts +211 -0
  150. package/dist/Semaphore.d.ts.map +1 -0
  151. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  152. package/dist/Semaphore.js.map +1 -0
  153. package/dist/Stream.d.ts +19 -19
  154. package/dist/Stream.d.ts.map +1 -1
  155. package/dist/Stream.js +12 -11
  156. package/dist/Stream.js.map +1 -1
  157. package/dist/Struct.d.ts +16 -0
  158. package/dist/Struct.d.ts.map +1 -1
  159. package/dist/Struct.js +22 -0
  160. package/dist/Struct.js.map +1 -1
  161. package/dist/SubscriptionRef.d.ts +2 -1
  162. package/dist/SubscriptionRef.d.ts.map +1 -1
  163. package/dist/SubscriptionRef.js +2 -1
  164. package/dist/SubscriptionRef.js.map +1 -1
  165. package/dist/SynchronizedRef.d.ts +2 -1
  166. package/dist/SynchronizedRef.d.ts.map +1 -1
  167. package/dist/SynchronizedRef.js +2 -1
  168. package/dist/SynchronizedRef.js.map +1 -1
  169. package/dist/Types.d.ts +14 -6
  170. package/dist/Types.d.ts.map +1 -1
  171. package/dist/index.d.ts +499 -19
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +499 -19
  174. package/dist/index.js.map +1 -1
  175. package/dist/internal/core.js +11 -3
  176. package/dist/internal/core.js.map +1 -1
  177. package/dist/internal/dateTime.js +3 -11
  178. package/dist/internal/dateTime.js.map +1 -1
  179. package/dist/internal/effect.js +37 -22
  180. package/dist/internal/effect.js.map +1 -1
  181. package/dist/internal/random.d.ts +2 -0
  182. package/dist/internal/random.d.ts.map +1 -0
  183. package/dist/internal/random.js +13 -0
  184. package/dist/internal/random.js.map +1 -0
  185. package/dist/internal/rcRef.js +3 -2
  186. package/dist/internal/rcRef.js.map +1 -1
  187. package/dist/testing/TestClock.d.ts +7 -6
  188. package/dist/testing/TestClock.d.ts.map +1 -1
  189. package/dist/testing/TestClock.js +6 -4
  190. package/dist/testing/TestClock.js.map +1 -1
  191. package/dist/testing/TestSchema.d.ts +6 -6
  192. package/dist/testing/TestSchema.d.ts.map +1 -1
  193. package/dist/unstable/ai/AiError.d.ts +48 -48
  194. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  195. package/dist/unstable/ai/Chat.d.ts +3 -3
  196. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  197. package/dist/unstable/ai/Chat.js +4 -3
  198. package/dist/unstable/ai/Chat.js.map +1 -1
  199. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  200. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  201. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  202. package/dist/unstable/ai/McpServer.d.ts +1 -1
  203. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  204. package/dist/unstable/ai/McpServer.js.map +1 -1
  205. package/dist/unstable/ai/Prompt.d.ts +20 -20
  206. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  207. package/dist/unstable/ai/Response.d.ts +26 -26
  208. package/dist/unstable/ai/Response.d.ts.map +1 -1
  209. package/dist/unstable/ai/Response.js +1 -1
  210. package/dist/unstable/ai/Response.js.map +1 -1
  211. package/dist/unstable/cli/CliError.d.ts +5 -5
  212. package/dist/unstable/cli/Prompt.js +2 -2
  213. package/dist/unstable/cli/Prompt.js.map +1 -1
  214. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  215. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  216. package/dist/unstable/cluster/ClusterCron.js +1 -1
  217. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  218. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  219. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  220. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  221. package/dist/unstable/cluster/Entity.d.ts +5 -4
  222. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  223. package/dist/unstable/cluster/Entity.js.map +1 -1
  224. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  225. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  226. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  227. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  228. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  229. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  230. package/dist/unstable/cluster/Message.d.ts +10 -10
  231. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  232. package/dist/unstable/cluster/MessageStorage.js +2 -1
  233. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  234. package/dist/unstable/cluster/Reply.d.ts +6 -6
  235. package/dist/unstable/cluster/Runner.d.ts +1 -1
  236. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  237. package/dist/unstable/cluster/Runners.js +4 -3
  238. package/dist/unstable/cluster/Runners.js.map +1 -1
  239. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  240. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  241. package/dist/unstable/cluster/Sharding.js +8 -6
  242. package/dist/unstable/cluster/Sharding.js.map +1 -1
  243. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  244. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  245. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  246. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  247. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  248. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  249. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  250. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  251. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  252. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  253. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  254. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  255. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  256. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  257. package/dist/unstable/encoding/Sse.d.ts +4 -4
  258. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  259. package/dist/unstable/encoding/Sse.js.map +1 -1
  260. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  261. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  262. package/dist/unstable/eventlog/EventLog.js +2 -1
  263. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  264. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  265. package/dist/unstable/http/Cookies.d.ts +3 -3
  266. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  267. package/dist/unstable/http/Cookies.js +2 -2
  268. package/dist/unstable/http/Cookies.js.map +1 -1
  269. package/dist/unstable/http/HttpBody.d.ts +17 -2
  270. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  271. package/dist/unstable/http/HttpBody.js +28 -1
  272. package/dist/unstable/http/HttpBody.js.map +1 -1
  273. package/dist/unstable/http/HttpClient.d.ts +11 -11
  274. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  275. package/dist/unstable/http/HttpClient.js +4 -4
  276. package/dist/unstable/http/HttpClient.js.map +1 -1
  277. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  278. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  279. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  280. package/dist/unstable/http/HttpClientRequest.js +15 -3
  281. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  282. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  283. package/dist/unstable/http/HttpEffect.js +18 -26
  284. package/dist/unstable/http/HttpEffect.js.map +1 -1
  285. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  286. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  287. package/dist/unstable/http/HttpMethod.js +3 -3
  288. package/dist/unstable/http/HttpMethod.js.map +1 -1
  289. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  290. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  291. package/dist/unstable/http/HttpMiddleware.js +4 -9
  292. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  293. package/dist/unstable/http/HttpServerError.d.ts +6 -6
  294. package/dist/unstable/http/HttpServerResponse.js +1 -1
  295. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  296. package/dist/unstable/http/Multipart.d.ts +3 -3
  297. package/dist/unstable/http/UrlParams.d.ts +14 -6
  298. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  299. package/dist/unstable/http/UrlParams.js +1 -1
  300. package/dist/unstable/http/UrlParams.js.map +1 -1
  301. package/dist/unstable/httpapi/HttpApiBuilder.js +5 -5
  302. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  303. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  304. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  305. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  306. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  307. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  308. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  309. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  310. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  311. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  312. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  313. package/dist/unstable/httpapi/OpenApi.js +18 -16
  314. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  315. package/dist/unstable/observability/Otlp.d.ts +12 -12
  316. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  317. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  318. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  319. package/dist/unstable/observability/OtlpExporter.js +1 -1
  320. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  321. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  322. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  323. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  324. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  325. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  326. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  327. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  328. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  329. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  330. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  331. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  332. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  333. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  334. package/dist/unstable/persistence/PersistedCache.js +2 -1
  335. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  336. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  337. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  338. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  339. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  340. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  341. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  342. package/dist/unstable/persistence/Persistence.js +2 -2
  343. package/dist/unstable/persistence/Persistence.js.map +1 -1
  344. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  345. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  346. package/dist/unstable/persistence/RateLimiter.js +1 -1
  347. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  348. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  349. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  350. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  351. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  352. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  353. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  354. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  355. package/dist/unstable/reactivity/Atom.js +15 -12
  356. package/dist/unstable/reactivity/Atom.js.map +1 -1
  357. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  358. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  359. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  360. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  361. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  362. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  363. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  364. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  365. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  366. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  367. package/dist/unstable/reactivity/Hydration.js +76 -0
  368. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  369. package/dist/unstable/reactivity/index.d.ts +4 -0
  370. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  371. package/dist/unstable/reactivity/index.js +4 -0
  372. package/dist/unstable/reactivity/index.js.map +1 -1
  373. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  374. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  375. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  376. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  377. package/dist/unstable/rpc/RpcClient.js +6 -13
  378. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  379. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  380. package/dist/unstable/rpc/RpcServer.js +5 -3
  381. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  382. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  383. package/dist/unstable/rpc/Utils.js +2 -1
  384. package/dist/unstable/rpc/Utils.js.map +1 -1
  385. package/dist/unstable/schema/Model.d.ts +4 -4
  386. package/dist/unstable/schema/Model.d.ts.map +1 -1
  387. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  388. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  389. package/dist/unstable/schema/VariantSchema.js +13 -2
  390. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  391. package/dist/unstable/socket/Socket.d.ts +4 -4
  392. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  393. package/dist/unstable/socket/Socket.js +3 -2
  394. package/dist/unstable/socket/Socket.js.map +1 -1
  395. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  396. package/dist/unstable/sql/Migrator.d.ts +1 -1
  397. package/dist/unstable/sql/SqlError.d.ts +2 -2
  398. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  399. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  400. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  401. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  402. package/dist/unstable/sql/SqlSchema.js +24 -3
  403. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  404. package/dist/unstable/sql/Statement.js +0 -1
  405. package/dist/unstable/sql/Statement.js.map +1 -1
  406. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  407. package/dist/unstable/workers/Worker.js +2 -1
  408. package/dist/unstable/workers/Worker.js.map +1 -1
  409. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  410. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  411. package/dist/unstable/workflow/DurableClock.js +3 -3
  412. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  413. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  414. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  415. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  416. package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -1
  417. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  418. package/dist/unstable/workflow/WorkflowEngine.js +2 -1
  419. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  420. package/package.json +2 -2
  421. package/src/Cache.ts +3 -3
  422. package/src/Cause.ts +1 -1
  423. package/src/Channel.ts +6 -4
  424. package/src/Combiner.ts +280 -13
  425. package/src/Config.ts +3 -3
  426. package/src/Data.ts +538 -374
  427. package/src/DateTime.ts +24 -164
  428. package/src/Duration.ts +15 -15
  429. package/src/Effect.ts +202 -261
  430. package/src/Encoding.ts +879 -0
  431. package/src/Equal.ts +278 -111
  432. package/src/FileSystem.ts +7 -8
  433. package/src/Filter.ts +48 -1
  434. package/src/Formatter.ts +253 -51
  435. package/src/Graph.ts +8 -5
  436. package/src/JsonSchema.ts +383 -10
  437. package/src/Latch.ts +112 -0
  438. package/src/LayerMap.ts +5 -5
  439. package/src/LogLevel.ts +31 -0
  440. package/src/Logger.ts +5 -5
  441. package/src/Metric.ts +4 -4
  442. package/src/Optic.ts +948 -19
  443. package/src/Pipeable.ts +32 -1
  444. package/src/PlatformError.ts +5 -5
  445. package/src/Pool.ts +13 -11
  446. package/src/PubSub.ts +10 -9
  447. package/src/Random.ts +33 -14
  448. package/src/RcMap.ts +5 -5
  449. package/src/RcRef.ts +1 -1
  450. package/src/Reducer.ts +166 -7
  451. package/src/Request.ts +3 -2
  452. package/src/RequestResolver.ts +9 -29
  453. package/src/Result.ts +13 -0
  454. package/src/Schedule.ts +279 -140
  455. package/src/Schema.ts +575 -113
  456. package/src/SchemaGetter.ts +12 -14
  457. package/src/SchemaRepresentation.ts +43 -24
  458. package/src/SchemaTransformation.ts +104 -0
  459. package/src/ScopedCache.ts +3 -3
  460. package/src/Semaphore.ts +356 -0
  461. package/src/Stream.ts +43 -42
  462. package/src/Struct.ts +26 -0
  463. package/src/SubscriptionRef.ts +3 -2
  464. package/src/SynchronizedRef.ts +3 -2
  465. package/src/Types.ts +12 -2
  466. package/src/index.ts +502 -20
  467. package/src/internal/core.ts +12 -5
  468. package/src/internal/dateTime.ts +9 -30
  469. package/src/internal/effect.ts +70 -37
  470. package/src/internal/random.ts +20 -0
  471. package/src/internal/rcRef.ts +4 -3
  472. package/src/testing/TestClock.ts +13 -11
  473. package/src/testing/TestSchema.ts +8 -8
  474. package/src/unstable/ai/AiError.ts +2 -2
  475. package/src/unstable/ai/Chat.ts +12 -11
  476. package/src/unstable/ai/LanguageModel.ts +3 -3
  477. package/src/unstable/ai/McpServer.ts +2 -2
  478. package/src/unstable/ai/Prompt.ts +37 -37
  479. package/src/unstable/ai/Response.ts +25 -25
  480. package/src/unstable/cli/Prompt.ts +2 -2
  481. package/src/unstable/cluster/ClusterCron.ts +2 -2
  482. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  483. package/src/unstable/cluster/Entity.ts +7 -6
  484. package/src/unstable/cluster/EntityResource.ts +4 -4
  485. package/src/unstable/cluster/Envelope.ts +1 -1
  486. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  487. package/src/unstable/cluster/MessageStorage.ts +3 -5
  488. package/src/unstable/cluster/Runners.ts +6 -5
  489. package/src/unstable/cluster/Sharding.ts +11 -9
  490. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  491. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  492. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  493. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  494. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  495. package/src/unstable/encoding/Sse.ts +2 -4
  496. package/src/unstable/eventlog/EventLog.ts +2 -1
  497. package/src/unstable/http/Cookies.ts +3 -3
  498. package/src/unstable/http/HttpBody.ts +42 -1
  499. package/src/unstable/http/HttpClient.ts +19 -19
  500. package/src/unstable/http/HttpClientRequest.ts +38 -13
  501. package/src/unstable/http/HttpEffect.ts +17 -25
  502. package/src/unstable/http/HttpMethod.ts +16 -4
  503. package/src/unstable/http/HttpMiddleware.ts +5 -10
  504. package/src/unstable/http/HttpServerResponse.ts +1 -1
  505. package/src/unstable/http/Multipart.ts +2 -2
  506. package/src/unstable/http/UrlParams.ts +20 -5
  507. package/src/unstable/httpapi/HttpApiBuilder.ts +5 -5
  508. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  509. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  510. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  511. package/src/unstable/httpapi/OpenApi.ts +18 -16
  512. package/src/unstable/observability/Otlp.ts +12 -12
  513. package/src/unstable/observability/OtlpExporter.ts +3 -3
  514. package/src/unstable/observability/OtlpLogger.ts +4 -4
  515. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  516. package/src/unstable/observability/OtlpTracer.ts +4 -4
  517. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  518. package/src/unstable/persistence/Persistable.ts +2 -2
  519. package/src/unstable/persistence/PersistedCache.ts +20 -9
  520. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  521. package/src/unstable/persistence/Persistence.ts +3 -3
  522. package/src/unstable/persistence/RateLimiter.ts +4 -4
  523. package/src/unstable/process/ChildProcess.ts +2 -2
  524. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  525. package/src/unstable/reactivity/Atom.ts +20 -18
  526. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  527. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  528. package/src/unstable/reactivity/Hydration.ts +112 -0
  529. package/src/unstable/reactivity/index.ts +5 -0
  530. package/src/unstable/rpc/Rpc.ts +3 -3
  531. package/src/unstable/rpc/RpcClient.ts +12 -54
  532. package/src/unstable/rpc/RpcServer.ts +6 -4
  533. package/src/unstable/rpc/Utils.ts +2 -1
  534. package/src/unstable/schema/VariantSchema.ts +36 -7
  535. package/src/unstable/socket/Socket.ts +7 -6
  536. package/src/unstable/sql/SqlModel.ts +2 -2
  537. package/src/unstable/sql/SqlSchema.ts +62 -13
  538. package/src/unstable/sql/Statement.ts +0 -1
  539. package/src/unstable/workers/Worker.ts +2 -1
  540. package/src/unstable/workflow/DurableClock.ts +8 -8
  541. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  542. package/src/unstable/workflow/WorkflowEngine.ts +3 -2
  543. package/dist/PartitionedSemaphore.d.ts +0 -52
  544. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  545. package/dist/PartitionedSemaphore.js.map +0 -1
  546. package/dist/encoding/Base64.d.ts +0 -67
  547. package/dist/encoding/Base64.d.ts.map +0 -1
  548. package/dist/encoding/Base64.js +0 -146
  549. package/dist/encoding/Base64.js.map +0 -1
  550. package/dist/encoding/Base64Url.d.ts +0 -60
  551. package/dist/encoding/Base64Url.d.ts.map +0 -1
  552. package/dist/encoding/Base64Url.js +0 -89
  553. package/dist/encoding/Base64Url.js.map +0 -1
  554. package/dist/encoding/EncodingError.d.ts +0 -31
  555. package/dist/encoding/EncodingError.d.ts.map +0 -1
  556. package/dist/encoding/EncodingError.js +0 -22
  557. package/dist/encoding/EncodingError.js.map +0 -1
  558. package/dist/encoding/Hex.d.ts +0 -61
  559. package/dist/encoding/Hex.d.ts.map +0 -1
  560. package/dist/encoding/Hex.js +0 -115
  561. package/dist/encoding/Hex.js.map +0 -1
  562. package/dist/encoding/index.d.ts +0 -26
  563. package/dist/encoding/index.d.ts.map +0 -1
  564. package/dist/encoding/index.js +0 -27
  565. package/dist/encoding/index.js.map +0 -1
  566. package/src/PartitionedSemaphore.ts +0 -182
  567. package/src/encoding/Base64.ts +0 -366
  568. package/src/encoding/Base64Url.ts +0 -104
  569. package/src/encoding/EncodingError.ts +0 -35
  570. package/src/encoding/Hex.ts +0 -390
  571. package/src/encoding/index.ts +0 -31
package/src/Schema.ts CHANGED
@@ -2,8 +2,10 @@
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"
9
11
  import type * as Combiner from "./Combiner.ts"
@@ -12,13 +14,15 @@ import * as DateTime from "./DateTime.ts"
12
14
  import type { Differ } from "./Differ.ts"
13
15
  import * as Duration_ from "./Duration.ts"
14
16
  import * as Effect from "./Effect.ts"
15
- import * as Base64 from "./encoding/Base64.ts"
17
+ import * as Encoding from "./Encoding.ts"
16
18
  import * as Equal from "./Equal.ts"
17
19
  import * as Equivalence from "./Equivalence.ts"
18
20
  import * as Exit_ from "./Exit.ts"
19
21
  import type { Formatter } from "./Formatter.ts"
20
22
  import { format, formatDate, formatPropertyKey } from "./Formatter.ts"
21
23
  import { identity } from "./Function.ts"
24
+ import * as HashMap_ from "./HashMap.ts"
25
+ import * as HashSet_ from "./HashSet.ts"
22
26
  import * as core from "./internal/core.ts"
23
27
  import * as InternalAnnotations from "./internal/schema/annotations.ts"
24
28
  import * as InternalArbitrary from "./internal/schema/arbitrary.ts"
@@ -321,7 +325,7 @@ export declare namespace Schema {
321
325
  /**
322
326
  * @since 4.0.0
323
327
  */
324
- export type Type<S extends Top> = S["Type"]
328
+ export type Type<S> = S extends Top ? S["Type"] : never
325
329
  }
326
330
 
327
331
  /**
@@ -349,15 +353,15 @@ export declare namespace Codec {
349
353
  /**
350
354
  * @since 4.0.0
351
355
  */
352
- export type Encoded<S extends Top> = S["Encoded"]
356
+ export type Encoded<S> = S extends Top ? S["Encoded"] : never
353
357
  /**
354
358
  * @since 4.0.0
355
359
  */
356
- export type DecodingServices<S extends Top> = S["DecodingServices"]
360
+ export type DecodingServices<S> = S extends Top ? S["DecodingServices"] : never
357
361
  /**
358
362
  * @since 4.0.0
359
363
  */
360
- export type EncodingServices<S extends Top> = S["EncodingServices"]
364
+ export type EncodingServices<S> = S extends Top ? S["EncodingServices"] : never
361
365
  /**
362
366
  * @since 4.0.0
363
367
  */
@@ -1801,11 +1805,6 @@ export declare namespace Record {
1801
1805
  readonly "Iso": PropertyKey
1802
1806
  }
1803
1807
 
1804
- /**
1805
- * @since 4.0.0
1806
- */
1807
- export type Record = Record$<Record.Key, Top>
1808
-
1809
1808
  /**
1810
1809
  * @since 4.0.0
1811
1810
  */
@@ -1864,14 +1863,14 @@ export declare namespace Record {
1864
1863
  /**
1865
1864
  * @since 4.0.0
1866
1865
  */
1867
- export interface Record$<Key extends Record.Key, Value extends Top> extends
1866
+ export interface $Record<Key extends Record.Key, Value extends Top> extends
1868
1867
  Bottom<
1869
1868
  Record.Type<Key, Value>,
1870
1869
  Record.Encoded<Key, Value>,
1871
1870
  Record.DecodingServices<Key, Value>,
1872
1871
  Record.EncodingServices<Key, Value>,
1873
1872
  AST.Objects,
1874
- Record$<Key, Value>,
1873
+ $Record<Key, Value>,
1875
1874
  Simplify<Record.MakeIn<Key, Value>>,
1876
1875
  Record.Iso<Key, Value>
1877
1876
  >
@@ -1893,7 +1892,7 @@ export function Record<Key extends Record.Key, Value extends Top>(
1893
1892
  readonly encode?: Combiner.Combiner<readonly [Key["Encoded"], Value["Encoded"]]> | undefined
1894
1893
  }
1895
1894
  }
1896
- ): Record$<Key, Value> {
1895
+ ): $Record<Key, Value> {
1897
1896
  const keyValueCombiner = options?.keyValueCombiner?.decode || options?.keyValueCombiner?.encode
1898
1897
  ? new AST.KeyValueCombiner(options.keyValueCombiner.decode, options.keyValueCombiner.encode)
1899
1898
  : undefined
@@ -1912,7 +1911,7 @@ export declare namespace StructWithRest {
1912
1911
  /**
1913
1912
  * @since 4.0.0
1914
1913
  */
1915
- export type Records = ReadonlyArray<Record.Record>
1914
+ export type Records = ReadonlyArray<$Record<Record.Key, Top>>
1916
1915
 
1917
1916
  type MergeTuple<T extends ReadonlyArray<unknown>> = T extends readonly [infer Head, ...infer Tail] ?
1918
1917
  Head & MergeTuple<Tail>
@@ -2244,14 +2243,14 @@ export function TupleWithRest<S extends Tuple<Tuple.Elements>, const Rest extend
2244
2243
  /**
2245
2244
  * @since 4.0.0
2246
2245
  */
2247
- export interface Array$<S extends Top> extends
2246
+ export interface $Array<S extends Top> extends
2248
2247
  Bottom<
2249
2248
  ReadonlyArray<S["Type"]>,
2250
2249
  ReadonlyArray<S["Encoded"]>,
2251
2250
  S["DecodingServices"],
2252
2251
  S["EncodingServices"],
2253
2252
  AST.Arrays,
2254
- Array$<S>,
2253
+ $Array<S>,
2255
2254
  ReadonlyArray<S["~type.make"]>,
2256
2255
  ReadonlyArray<S["Iso"]>
2257
2256
  >
@@ -2261,8 +2260,8 @@ export interface Array$<S extends Top> extends
2261
2260
  }
2262
2261
 
2263
2262
  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
2263
+ <S extends Top>(self: S): $Array<S>
2264
+ readonly "~lambda.out": this["~lambda.in"] extends Top ? $Array<this["~lambda.in"]> : never
2266
2265
  }
2267
2266
 
2268
2267
  /**
@@ -2306,7 +2305,7 @@ export const NonEmptyArray = Struct_.lambda<NonEmptyArrayLambda>((schema) =>
2306
2305
  /**
2307
2306
  * @since 4.0.0
2308
2307
  */
2309
- export interface UniqueArray<S extends Top> extends Array$<S> {}
2308
+ export interface UniqueArray<S extends Top> extends $Array<S> {}
2310
2309
 
2311
2310
  /**
2312
2311
  * Returns a new array schema that ensures all elements are unique.
@@ -3309,12 +3308,12 @@ export interface TaggedUnion<Cases extends Record<string, Top>> extends
3309
3308
  readonly guards: { [K in keyof Cases]: (u: unknown) => u is Cases[K]["Type"] }
3310
3309
  readonly match: {
3311
3310
  <Output>(
3312
- value: Cases[keyof Cases]["Type"],
3313
3311
  cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
3314
- ): Output
3312
+ ): (value: Cases[keyof Cases]["Type"]) => Output
3315
3313
  <Output>(
3314
+ value: Cases[keyof Cases]["Type"],
3316
3315
  cases: { [K in keyof Cases]: (value: Cases[K]["Type"]) => Output }
3317
- ): (value: Cases[keyof Cases]["Type"]) => Output
3316
+ ): Output
3318
3317
  }
3319
3318
  }
3320
3319
 
@@ -4755,6 +4754,63 @@ export const isBetweenBigInt = makeIsBetween({
4755
4754
  })
4756
4755
  })
4757
4756
 
4757
+ /**
4758
+ * Validates that a BigDecimal is greater than the specified value (exclusive).
4759
+ *
4760
+ * @category BigDecimal checks
4761
+ * @since 4.0.0
4762
+ */
4763
+ export const isGreaterThanBigDecimal = makeIsGreaterThan({
4764
+ order: BigDecimal_.Order,
4765
+ formatter: (bd) => BigDecimal_.format(bd)
4766
+ })
4767
+
4768
+ /**
4769
+ * Validates that a BigDecimal is greater than or equal to the specified value
4770
+ * (inclusive).
4771
+ *
4772
+ * @category BigDecimal checks
4773
+ * @since 4.0.0
4774
+ */
4775
+ export const isGreaterThanOrEqualToBigDecimal = makeIsGreaterThanOrEqualTo({
4776
+ order: BigDecimal_.Order,
4777
+ formatter: (bd) => BigDecimal_.format(bd)
4778
+ })
4779
+
4780
+ /**
4781
+ * Validates that a BigDecimal is less than the specified value (exclusive).
4782
+ *
4783
+ * @category BigDecimal checks
4784
+ * @since 4.0.0
4785
+ */
4786
+ export const isLessThanBigDecimal = makeIsLessThan({
4787
+ order: BigDecimal_.Order,
4788
+ formatter: (bd) => BigDecimal_.format(bd)
4789
+ })
4790
+
4791
+ /**
4792
+ * Validates that a BigDecimal is less than or equal to the specified value
4793
+ * (inclusive).
4794
+ *
4795
+ * @category BigDecimal checks
4796
+ * @since 4.0.0
4797
+ */
4798
+ export const isLessThanOrEqualToBigDecimal = makeIsLessThanOrEqualTo({
4799
+ order: BigDecimal_.Order,
4800
+ formatter: (bd) => BigDecimal_.format(bd)
4801
+ })
4802
+
4803
+ /**
4804
+ * Validates that a BigDecimal is within a specified range.
4805
+ *
4806
+ * @category BigDecimal checks
4807
+ * @since 4.0.0
4808
+ */
4809
+ export const isBetweenBigDecimal = makeIsBetween({
4810
+ order: BigDecimal_.Order,
4811
+ formatter: (bd) => BigDecimal_.format(bd)
4812
+ })
4813
+
4758
4814
  /**
4759
4815
  * Validates that a value has at least the specified length. Works with strings
4760
4816
  * and arrays.
@@ -5651,15 +5707,15 @@ export function RedactedFromValue<S extends Top>(value: S, options?: {
5651
5707
  }
5652
5708
 
5653
5709
  /**
5654
- * @category CauseFailure
5710
+ * @category CauseReason
5655
5711
  * @since 4.0.0
5656
5712
  */
5657
- export interface CauseFailure<E extends Top, D extends Top> extends
5713
+ export interface CauseReason<E extends Top, D extends Top> extends
5658
5714
  declareConstructor<
5659
5715
  Cause_.Reason<E["Type"]>,
5660
5716
  Cause_.Reason<E["Encoded"]>,
5661
5717
  readonly [E, D],
5662
- CauseFailureIso<E, D>
5718
+ CauseReasonIso<E, D>
5663
5719
  >
5664
5720
  {
5665
5721
  readonly error: E
@@ -5667,10 +5723,10 @@ export interface CauseFailure<E extends Top, D extends Top> extends
5667
5723
  }
5668
5724
 
5669
5725
  /**
5670
- * @category CauseFailure
5726
+ * @category CauseReason
5671
5727
  * @since 4.0.0
5672
5728
  */
5673
- export type CauseFailureIso<E extends Top, D extends Top> = {
5729
+ export type CauseReasonIso<E extends Top, D extends Top> = {
5674
5730
  readonly _tag: "Fail"
5675
5731
  readonly error: E["Iso"]
5676
5732
  } | {
@@ -5682,11 +5738,11 @@ export type CauseFailureIso<E extends Top, D extends Top> = {
5682
5738
  }
5683
5739
 
5684
5740
  /**
5685
- * @category CauseFailure
5741
+ * @category CauseReason
5686
5742
  * @since 4.0.0
5687
5743
  */
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>>()(
5744
+ export function CauseReason<E extends Top, D extends Top>(error: E, defect: D): CauseReason<E, D> {
5745
+ const schema = declareConstructor<Cause_.Reason<E["Type"]>, Cause_.Reason<E["Encoded"]>, CauseReasonIso<E, D>>()(
5690
5746
  [error, defect],
5691
5747
  ([error, defect]) => (input, ast, options) => {
5692
5748
  if (!Cause_.isReason(input)) {
@@ -5719,7 +5775,7 @@ export function CauseFailure<E extends Top, D extends Top>(error: E, defect: D):
5719
5775
  _tag: "effect/Cause/Failure"
5720
5776
  },
5721
5777
  generation: {
5722
- runtime: `Schema.CauseFailure(?, ?)`,
5778
+ runtime: `Schema.CauseReason(?, ?)`,
5723
5779
  Type: `Cause.Failure<?, ?>`,
5724
5780
  importDeclaration: `import * as Cause from "effect/Cause"`
5725
5781
  },
@@ -5745,15 +5801,15 @@ export function CauseFailure<E extends Top, D extends Top>(error: E, defect: D):
5745
5801
  encode: identity
5746
5802
  })
5747
5803
  ),
5748
- toArbitrary: ([error, defect]) => causeFailureToArbitrary(error, defect),
5749
- toEquivalence: ([error, defect]) => causeFailureToEquivalence(error, defect),
5750
- toFormatter: ([error, defect]) => causeFailureToFormatter(error, defect)
5804
+ toArbitrary: ([error, defect]) => causeReasonToArbitrary(error, defect),
5805
+ toEquivalence: ([error, defect]) => causeReasonToEquivalence(error, defect),
5806
+ toFormatter: ([error, defect]) => causeReasonToFormatter(error, defect)
5751
5807
  }
5752
5808
  )
5753
5809
  return make(schema.ast, { error, defect })
5754
5810
  }
5755
5811
 
5756
- function causeFailureToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: FastCheck.Arbitrary<D>) {
5812
+ function causeReasonToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: FastCheck.Arbitrary<D>) {
5757
5813
  return (fc: typeof FastCheck, ctx: Annotations.ToArbitrary.Context | undefined) => {
5758
5814
  return fc.oneof(
5759
5815
  ctx?.isSuspend ? { maxDepth: 2, depthIdentifier: "Cause.Failure" } : {},
@@ -5765,7 +5821,7 @@ function causeFailureToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: Fa
5765
5821
  }
5766
5822
  }
5767
5823
 
5768
- function causeFailureToEquivalence<E>(error: Equivalence.Equivalence<E>, defect: Equivalence.Equivalence<unknown>) {
5824
+ function causeReasonToEquivalence<E>(error: Equivalence.Equivalence<E>, defect: Equivalence.Equivalence<unknown>) {
5769
5825
  return (a: Cause_.Reason<E>, b: Cause_.Reason<E>) => {
5770
5826
  if (a._tag !== b._tag) return false
5771
5827
  switch (a._tag) {
@@ -5779,7 +5835,7 @@ function causeFailureToEquivalence<E>(error: Equivalence.Equivalence<E>, defect:
5779
5835
  }
5780
5836
  }
5781
5837
 
5782
- function causeFailureToFormatter<E>(error: Formatter<E>, defect: Formatter<unknown>) {
5838
+ function causeReasonToFormatter<E>(error: Formatter<E>, defect: Formatter<unknown>) {
5783
5839
  return (t: Cause_.Reason<E>) => {
5784
5840
  switch (t._tag) {
5785
5841
  case "Fail":
@@ -5812,7 +5868,7 @@ export interface Cause<E extends Top, D extends Top> extends
5812
5868
  * @category Cause
5813
5869
  * @since 4.0.0
5814
5870
  */
5815
- export type CauseIso<E extends Top, D extends Top> = ReadonlyArray<CauseFailureIso<E, D>>
5871
+ export type CauseIso<E extends Top, D extends Top> = ReadonlyArray<CauseReasonIso<E, D>>
5816
5872
 
5817
5873
  /**
5818
5874
  * @category Cause
@@ -5821,15 +5877,17 @@ export type CauseIso<E extends Top, D extends Top> = ReadonlyArray<CauseFailureI
5821
5877
  export function Cause<E extends Top, D extends Top>(error: E, defect: D): Cause<E, D> {
5822
5878
  const schema = declareConstructor<Cause_.Cause<E["Type"]>, Cause_.Cause<E["Encoded"]>, CauseIso<E, D>>()(
5823
5879
  [error, defect],
5824
- ([error, defect]) => (input, ast, options) => {
5825
- if (!Cause_.isCause(input)) {
5826
- return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
5880
+ ([error, defect]) => {
5881
+ const failures = Array(CauseReason(error, defect))
5882
+ return (input, ast, options) => {
5883
+ if (!Cause_.isCause(input)) {
5884
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
5885
+ }
5886
+ return Effect.mapBothEager(Parser.decodeUnknownEffect(failures)(input.reasons, options), {
5887
+ onSuccess: Cause_.fromReasons,
5888
+ onFailure: (issue) => new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["failures"], issue)])
5889
+ })
5827
5890
  }
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
5891
  },
5834
5892
  {
5835
5893
  typeConstructor: {
@@ -5843,7 +5901,7 @@ export function Cause<E extends Top, D extends Top>(error: E, defect: D): Cause<
5843
5901
  expected: "Cause",
5844
5902
  toCodec: ([error, defect]) =>
5845
5903
  link<Cause_.Cause<E["Encoded"]>>()(
5846
- Array(CauseFailure(error, defect)),
5904
+ Array(CauseReason(error, defect)),
5847
5905
  Transformation.transform({
5848
5906
  decode: Cause_.fromReasons,
5849
5907
  encode: ({ reasons: failures }) => failures
@@ -5859,18 +5917,18 @@ export function Cause<E extends Top, D extends Top>(error: E, defect: D): Cause<
5859
5917
 
5860
5918
  function causeToArbitrary<E, D>(error: FastCheck.Arbitrary<E>, defect: FastCheck.Arbitrary<D>) {
5861
5919
  return (fc: typeof FastCheck, ctx: Annotations.ToArbitrary.Context | undefined) => {
5862
- return fc.array(causeFailureToArbitrary(error, defect)(fc, ctx)).map(Cause_.fromReasons)
5920
+ return fc.array(causeReasonToArbitrary(error, defect)(fc, ctx)).map(Cause_.fromReasons)
5863
5921
  }
5864
5922
  }
5865
5923
 
5866
5924
  function causeToEquivalence<E>(error: Equivalence.Equivalence<E>, defect: Equivalence.Equivalence<unknown>) {
5867
- const failures = Equivalence.Array(causeFailureToEquivalence(error, defect))
5925
+ const failures = Equivalence.Array(causeReasonToEquivalence(error, defect))
5868
5926
  return (a: Cause_.Cause<E>, b: Cause_.Cause<E>) => failures(a.reasons, b.reasons)
5869
5927
  }
5870
5928
 
5871
5929
  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(", ")}])`
5930
+ const causeReason = causeReasonToFormatter(error, defect)
5931
+ return (t: Cause_.Cause<E>) => `Cause([${t.reasons.map(causeReason).join(", ")}])`
5874
5932
  }
5875
5933
 
5876
5934
  /**
@@ -6044,28 +6102,32 @@ export function Exit<A extends Top, E extends Top, D extends Top>(value: A, erro
6044
6102
  ExitIso<A, E, D>
6045
6103
  >()(
6046
6104
  [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
- }
6105
+ ([value, error, defect]) => {
6051
6106
  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
- )
6107
+ return (input, ast, options) => {
6108
+ if (!Exit_.isExit(input)) {
6109
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6110
+ }
6111
+ switch (input._tag) {
6112
+ case "Success":
6113
+ return Effect.mapBothEager(
6114
+ Parser.decodeUnknownEffect(value)(input.value, options),
6115
+ {
6116
+ onSuccess: Exit_.succeed,
6117
+ onFailure: (issue) =>
6118
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["value"], issue)])
6119
+ }
6120
+ )
6121
+ case "Failure":
6122
+ return Effect.mapBothEager(
6123
+ Parser.decodeUnknownEffect(cause)(input.cause, options),
6124
+ {
6125
+ onSuccess: Exit_.failCause,
6126
+ onFailure: (issue) =>
6127
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["cause"], issue)])
6128
+ }
6129
+ )
6130
+ }
6069
6131
  }
6070
6132
  },
6071
6133
  {
@@ -6131,7 +6193,7 @@ export function Exit<A extends Top, E extends Top, D extends Top>(value: A, erro
6131
6193
  * @category ReadonlyMap
6132
6194
  * @since 4.0.0
6133
6195
  */
6134
- export interface ReadonlyMap$<Key extends Top, Value extends Top> extends
6196
+ export interface $ReadonlyMap<Key extends Top, Value extends Top> extends
6135
6197
  declareConstructor<
6136
6198
  globalThis.ReadonlyMap<Key["Type"], Value["Type"]>,
6137
6199
  globalThis.ReadonlyMap<Key["Encoded"], Value["Encoded"]>,
@@ -6156,25 +6218,28 @@ export type ReadonlyMapIso<Key extends Top, Value extends Top> = ReadonlyArray<r
6156
6218
  * @category ReadonlyMap
6157
6219
  * @since 4.0.0
6158
6220
  */
6159
- export function ReadonlyMap<Key extends Top, Value extends Top>(key: Key, value: Value): ReadonlyMap$<Key, Value> {
6221
+ export function ReadonlyMap<Key extends Top, Value extends Top>(key: Key, value: Value): $ReadonlyMap<Key, Value> {
6160
6222
  const schema = declareConstructor<
6161
6223
  globalThis.ReadonlyMap<Key["Type"], Value["Type"]>,
6162
6224
  globalThis.ReadonlyMap<Key["Encoded"], Value["Encoded"]>,
6163
6225
  ReadonlyMapIso<Key, Value>
6164
6226
  >()(
6165
6227
  [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
- )
6228
+ ([key, value]) => {
6229
+ const array = Array(Tuple([key, value]))
6230
+ return (input, ast, options) => {
6231
+ if (input instanceof globalThis.Map) {
6232
+ return Effect.mapBothEager(
6233
+ Parser.decodeUnknownEffect(array)([...input], options),
6234
+ {
6235
+ onSuccess: (array: ReadonlyArray<readonly [Key["Type"], Value["Type"]]>) => new globalThis.Map(array),
6236
+ onFailure: (issue) =>
6237
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["entries"], issue)])
6238
+ }
6239
+ )
6240
+ }
6241
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6176
6242
  }
6177
- return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6178
6243
  },
6179
6244
  {
6180
6245
  typeConstructor: {
@@ -6214,11 +6279,102 @@ export function ReadonlyMap<Key extends Top, Value extends Top>(key: Key, value:
6214
6279
  return make(schema.ast, { key, value })
6215
6280
  }
6216
6281
 
6282
+ /**
6283
+ * @category HashMap
6284
+ * @since 4.0.0
6285
+ */
6286
+ export interface HashMap<Key extends Top, Value extends Top> extends
6287
+ declareConstructor<
6288
+ HashMap_.HashMap<Key["Type"], Value["Type"]>,
6289
+ HashMap_.HashMap<Key["Encoded"], Value["Encoded"]>,
6290
+ readonly [Key, Value],
6291
+ HashMapIso<Key, Value>
6292
+ >
6293
+ {
6294
+ readonly key: Key
6295
+ readonly value: Value
6296
+ }
6297
+
6298
+ /**
6299
+ * @category HashMap
6300
+ * @since 4.0.0
6301
+ */
6302
+ export type HashMapIso<Key extends Top, Value extends Top> = ReadonlyArray<readonly [Key["Iso"], Value["Iso"]]>
6303
+
6304
+ /**
6305
+ * Creates a schema that validates a `HashMap` where keys and values must
6306
+ * conform to the provided schemas.
6307
+ *
6308
+ * @category HashMap
6309
+ * @since 4.0.0
6310
+ */
6311
+ export function HashMap<Key extends Top, Value extends Top>(key: Key, value: Value): HashMap<Key, Value> {
6312
+ const schema = declareConstructor<
6313
+ HashMap_.HashMap<Key["Type"], Value["Type"]>,
6314
+ HashMap_.HashMap<Key["Encoded"], Value["Encoded"]>,
6315
+ HashMapIso<Key, Value>
6316
+ >()(
6317
+ [key, value],
6318
+ ([key, value]) => {
6319
+ const entries = Array(Tuple([key, value]))
6320
+ return (input, ast, options) => {
6321
+ if (HashMap_.isHashMap(input)) {
6322
+ return Effect.mapBothEager(
6323
+ Parser.decodeUnknownEffect(entries)(HashMap_.toEntries(input), options),
6324
+ {
6325
+ onSuccess: HashMap_.fromIterable,
6326
+ onFailure: (issue) =>
6327
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["entries"], issue)])
6328
+ }
6329
+ )
6330
+ }
6331
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6332
+ }
6333
+ },
6334
+ {
6335
+ typeConstructor: {
6336
+ _tag: "effect/HashMap"
6337
+ },
6338
+ generation: {
6339
+ runtime: `Schema.HashMap(?, ?)`,
6340
+ Type: `HashMap.HashMap<?, ?>`,
6341
+ importDeclaration: `import * as HashMap from "effect/HashMap"`
6342
+ },
6343
+ expected: "HashMap",
6344
+ toCodec: ([key, value]) =>
6345
+ link<HashMap_.HashMap<Key["Encoded"], Value["Encoded"]>>()(
6346
+ Array(Tuple([key, value])),
6347
+ Transformation.transform({
6348
+ decode: HashMap_.fromIterable,
6349
+ encode: HashMap_.toEntries
6350
+ })
6351
+ ),
6352
+ toArbitrary: ([key, value]) => (fc, ctx) => {
6353
+ return fc.oneof(
6354
+ ctx?.isSuspend ? { maxDepth: 2, depthIdentifier: "HashMap" } : {},
6355
+ fc.constant([]),
6356
+ fc.array(fc.tuple(key, value), ctx?.constraints?.array)
6357
+ ).map(HashMap_.fromIterable)
6358
+ },
6359
+ toEquivalence: ([key, value]) => Equal.makeCompareMap(key, value),
6360
+ toFormatter: ([key, value]) => (t) => {
6361
+ const size = HashMap_.size(t)
6362
+ if (size === 0) {
6363
+ return "HashMap(0) {}"
6364
+ }
6365
+ const entries = HashMap_.toEntries(t).sort().map(([k, v]) => `${key(k)} => ${value(v)}`)
6366
+ return `HashMap(${size}) { ${entries.join(", ")} }`
6367
+ }
6368
+ }
6369
+ )
6370
+ return make(schema.ast, { key, value })
6371
+ }
6372
+
6217
6373
  /**
6218
6374
  * @category ReadonlySet
6219
6375
  * @since 4.0.0
6220
6376
  */
6221
- export interface ReadonlySet$<Value extends Top> extends
6377
+ export interface $ReadonlySet<Value extends Top> extends
6222
6378
  declareConstructor<
6223
6379
  globalThis.ReadonlySet<Value["Type"]>,
6224
6380
  globalThis.ReadonlySet<Value["Encoded"]>,
@@ -6239,25 +6395,28 @@ export type ReadonlySetIso<Value extends Top> = ReadonlyArray<Value["Iso"]>
6239
6395
  * @category ReadonlySet
6240
6396
  * @since 4.0.0
6241
6397
  */
6242
- export function ReadonlySet<Value extends Top>(value: Value): ReadonlySet$<Value> {
6398
+ export function ReadonlySet<Value extends Top>(value: Value): $ReadonlySet<Value> {
6243
6399
  const schema = declareConstructor<
6244
6400
  globalThis.ReadonlySet<Value["Type"]>,
6245
6401
  globalThis.ReadonlySet<Value["Encoded"]>,
6246
6402
  ReadonlySetIso<Value>
6247
6403
  >()(
6248
6404
  [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
- )
6405
+ ([value]) => {
6406
+ const array = Array(value)
6407
+ return (input, ast, options) => {
6408
+ if (input instanceof globalThis.Set) {
6409
+ return Effect.mapBothEager(
6410
+ Parser.decodeUnknownEffect(array)([...input], options),
6411
+ {
6412
+ onSuccess: (array: ReadonlyArray<Value["Type"]>) => new globalThis.Set(array),
6413
+ onFailure: (issue) =>
6414
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["values"], issue)])
6415
+ }
6416
+ )
6417
+ }
6418
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6259
6419
  }
6260
- return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6261
6420
  },
6262
6421
  {
6263
6422
  typeConstructor: {
@@ -6297,6 +6456,95 @@ export function ReadonlySet<Value extends Top>(value: Value): ReadonlySet$<Value
6297
6456
  return make(schema.ast, { value })
6298
6457
  }
6299
6458
 
6459
+ /**
6460
+ * @category HashSet
6461
+ * @since 4.0.0
6462
+ */
6463
+ export interface HashSet<Value extends Top> extends
6464
+ declareConstructor<
6465
+ HashSet_.HashSet<Value["Type"]>,
6466
+ HashSet_.HashSet<Value["Encoded"]>,
6467
+ readonly [Value],
6468
+ HashSetIso<Value>
6469
+ >
6470
+ {
6471
+ readonly value: Value
6472
+ }
6473
+
6474
+ /**
6475
+ * @category HashSet
6476
+ * @since 4.0.0
6477
+ */
6478
+ export type HashSetIso<Value extends Top> = ReadonlyArray<Value["Iso"]>
6479
+
6480
+ /**
6481
+ * Creates a schema that validates a `HashSet` where values must conform to the
6482
+ * provided schema.
6483
+ *
6484
+ * @category HashSet
6485
+ * @since 4.0.0
6486
+ */
6487
+ export function HashSet<Value extends Top>(value: Value): HashSet<Value> {
6488
+ const schema = declareConstructor<
6489
+ HashSet_.HashSet<Value["Type"]>,
6490
+ HashSet_.HashSet<Value["Encoded"]>,
6491
+ HashSetIso<Value>
6492
+ >()(
6493
+ [value],
6494
+ ([value]) => {
6495
+ const values = Array(value)
6496
+ return (input, ast, options) => {
6497
+ if (HashSet_.isHashSet(input)) {
6498
+ return Effect.mapBothEager(
6499
+ Parser.decodeUnknownEffect(values)(Arr.fromIterable(input), options),
6500
+ {
6501
+ onSuccess: HashSet_.fromIterable,
6502
+ onFailure: (issue) =>
6503
+ new Issue.Composite(ast, Option_.some(input), [new Issue.Pointer(["values"], issue)])
6504
+ }
6505
+ )
6506
+ }
6507
+ return Effect.fail(new Issue.InvalidType(ast, Option_.some(input)))
6508
+ }
6509
+ },
6510
+ {
6511
+ typeConstructor: {
6512
+ _tag: "effect/HashSet"
6513
+ },
6514
+ generation: {
6515
+ runtime: `Schema.HashSet(?)`,
6516
+ Type: `HashSet.HashSet<?>`
6517
+ },
6518
+ expected: "HashSet",
6519
+ toCodec: ([value]) =>
6520
+ link<HashSet_.HashSet<Value["Encoded"]>>()(
6521
+ Array(value),
6522
+ Transformation.transform({
6523
+ decode: HashSet_.fromIterable,
6524
+ encode: Arr.fromIterable
6525
+ })
6526
+ ),
6527
+ toArbitrary: ([value]) => (fc, ctx) => {
6528
+ return fc.oneof(
6529
+ ctx?.isSuspend ? { maxDepth: 2, depthIdentifier: "HashSet" } : {},
6530
+ fc.constant([]),
6531
+ fc.array(value, ctx?.constraints?.array)
6532
+ ).map(HashSet_.fromIterable)
6533
+ },
6534
+ toEquivalence: ([value]) => Equal.makeCompareSet(value),
6535
+ toFormatter: ([value]) => (t) => {
6536
+ const size = HashSet_.size(t)
6537
+ if (size === 0) {
6538
+ return "HashSet(0) {}"
6539
+ }
6540
+ const values = globalThis.Array.from(t).sort().map((v) => `${value(v)}`)
6541
+ return `HashSet(${size}) { ${values.join(", ")} }`
6542
+ }
6543
+ }
6544
+ )
6545
+ return make(schema.ast, { value })
6546
+ }
6547
+
6300
6548
  /**
6301
6549
  * @since 4.0.0
6302
6550
  */
@@ -6588,6 +6836,45 @@ export const DurationFromMillis: DurationFromMillis = Number.check(isGreaterThan
6588
6836
  decodeTo(Duration, Transformation.durationFromMillis)
6589
6837
  )
6590
6838
 
6839
+ /**
6840
+ * @since 4.0.0
6841
+ */
6842
+ export interface BigDecimal extends declare<BigDecimal_.BigDecimal> {}
6843
+
6844
+ /**
6845
+ * A schema for `BigDecimal` values.
6846
+ *
6847
+ * **Default JSON serializer**
6848
+ *
6849
+ * - encodes `BigDecimal` as a `string`
6850
+ *
6851
+ * @since 4.0.0
6852
+ */
6853
+ export const BigDecimal: BigDecimal = declare(
6854
+ BigDecimal_.isBigDecimal,
6855
+ {
6856
+ typeConstructor: {
6857
+ _tag: "effect/BigDecimal"
6858
+ },
6859
+ generation: {
6860
+ runtime: `Schema.BigDecimal`,
6861
+ Type: `BigDecimal.BigDecimal`,
6862
+ importDeclaration: `import * as BigDecimal from "effect/BigDecimal"`
6863
+ },
6864
+ expected: "BigDecimal",
6865
+ toCodecJson: () =>
6866
+ link<BigDecimal_.BigDecimal>()(
6867
+ String.annotate({ expected: "a string that will be decoded as a BigDecimal" }),
6868
+ Transformation.bigDecimalFromString
6869
+ ),
6870
+ toArbitrary: () => (fc) =>
6871
+ fc.tuple(fc.bigInt(), fc.integer({ min: 0, max: 20 }))
6872
+ .map(([value, scale]) => BigDecimal_.make(value, scale)),
6873
+ toFormatter: () => (bd) => BigDecimal_.format(bd),
6874
+ toEquivalence: () => BigDecimal_.Equivalence
6875
+ }
6876
+ )
6877
+
6591
6878
  /**
6592
6879
  * @since 4.0.0
6593
6880
  */
@@ -6720,7 +7007,7 @@ export const File: File = instanceOf(globalThis.File, {
6720
7007
  }),
6721
7008
  Transformation.transformOrFail({
6722
7009
  decode: (e) =>
6723
- Result_.match(Base64.decode(e.data), {
7010
+ Result_.match(Encoding.decodeBase64(e.data), {
6724
7011
  onFailure: (error) =>
6725
7012
  Effect.fail(
6726
7013
  new Issue.InvalidValue(Option_.some(e.data), {
@@ -6739,7 +7026,7 @@ export const File: File = instanceOf(globalThis.File, {
6739
7026
  try: async () => {
6740
7027
  const bytes = new globalThis.Uint8Array(await file.arrayBuffer())
6741
7028
  return {
6742
- data: Base64.encode(bytes),
7029
+ data: Encoding.encodeBase64(bytes),
6743
7030
  type: file.type,
6744
7031
  name: file.name,
6745
7032
  lastModified: file.lastModified
@@ -7273,7 +7560,7 @@ export const DateTimeUtc: DateTimeUtc = declare(
7273
7560
  (u) => DateTime.isDateTime(u) && DateTime.isUtc(u),
7274
7561
  {
7275
7562
  typeConstructor: {
7276
- _tag: "DateTime.Utc"
7563
+ _tag: "effect/DateTime.Utc"
7277
7564
  },
7278
7565
  generation: {
7279
7566
  runtime: `Schema.DateTimeUtc`,
@@ -7284,10 +7571,7 @@ export const DateTimeUtc: DateTimeUtc = declare(
7284
7571
  toCodecJson: () =>
7285
7572
  link<DateTime.Utc>()(
7286
7573
  String,
7287
- {
7288
- decode: Getter.dateTimeUtcFromInput(),
7289
- encode: Getter.transform(DateTime.formatIso)
7290
- }
7574
+ Transformation.dateTimeUtcFromString
7291
7575
  ),
7292
7576
  toArbitrary: () => (fc, ctx) =>
7293
7577
  fc.date({ noInvalidDate: true, ...ctx?.constraints?.date }).map((date) => DateTime.fromDateUnsafe(date)),
@@ -7344,10 +7628,7 @@ export const DateTimeUtcFromString: DateTimeUtcFromString = String.annotate({
7344
7628
  }).pipe(
7345
7629
  decodeTo(
7346
7630
  DateTimeUtc,
7347
- Transformation.transform({
7348
- decode: DateTime.makeUnsafe,
7349
- encode: DateTime.formatIso
7350
- })
7631
+ Transformation.dateTimeUtcFromString
7351
7632
  )
7352
7633
  )
7353
7634
 
@@ -7375,6 +7656,183 @@ export const DateTimeUtcFromMillis: DateTimeUtcFromMillis = Number.pipe(
7375
7656
  })
7376
7657
  )
7377
7658
 
7659
+ /**
7660
+ * @since 4.0.0
7661
+ */
7662
+ export interface TimeZoneOffset extends declare<DateTime.TimeZone.Offset> {}
7663
+
7664
+ /**
7665
+ * A schema for `DateTime.TimeZone.Offset` values.
7666
+ *
7667
+ * **Default JSON serializer**
7668
+ *
7669
+ * - encodes `DateTime.TimeZone.Offset` as a number (offset in milliseconds)
7670
+ *
7671
+ * @category DateTime
7672
+ * @since 4.0.0
7673
+ */
7674
+ export const TimeZoneOffset: TimeZoneOffset = declare(
7675
+ DateTime.isTimeZoneOffset,
7676
+ {
7677
+ typeConstructor: {
7678
+ _tag: "effect/DateTime.TimeZone.Offset"
7679
+ },
7680
+ generation: {
7681
+ runtime: `Schema.TimeZoneOffset`,
7682
+ Type: `DateTime.TimeZone.Offset`,
7683
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7684
+ },
7685
+ expected: "DateTime.TimeZone.Offset",
7686
+ toCodecJson: () =>
7687
+ link<DateTime.TimeZone.Offset>()(
7688
+ Number,
7689
+ Transformation.timeZoneOffsetFromNumber
7690
+ ),
7691
+ toArbitrary: () => (fc) =>
7692
+ fc.integer({ min: -12 * 60 * 60 * 1000, max: 14 * 60 * 60 * 1000 }).map((n) => DateTime.zoneMakeOffset(n)),
7693
+ toFormatter: () => (tz) => DateTime.zoneToString(tz),
7694
+ toEquivalence: () => (a, b) => a.offset === b.offset
7695
+ }
7696
+ )
7697
+
7698
+ /**
7699
+ * @since 4.0.0
7700
+ */
7701
+ export interface TimeZoneNamed extends declare<DateTime.TimeZone.Named> {}
7702
+
7703
+ /**
7704
+ * A schema for `DateTime.TimeZone.Named` values.
7705
+ *
7706
+ * **Default JSON serializer**
7707
+ *
7708
+ * - encodes `DateTime.TimeZone.Named` as a string (IANA time zone identifier)
7709
+ *
7710
+ * @category DateTime
7711
+ * @since 4.0.0
7712
+ */
7713
+ export const TimeZoneNamed: TimeZoneNamed = declare(
7714
+ DateTime.isTimeZoneNamed,
7715
+ {
7716
+ typeConstructor: {
7717
+ _tag: "effect/DateTime.TimeZone.Named"
7718
+ },
7719
+ generation: {
7720
+ runtime: `Schema.TimeZoneNamed`,
7721
+ Type: `DateTime.TimeZone.Named`,
7722
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7723
+ },
7724
+ expected: "DateTime.TimeZone.Named",
7725
+ toCodecJson: () =>
7726
+ link<DateTime.TimeZone.Named>()(
7727
+ String.annotate({ expected: "an IANA time zone identifier" }),
7728
+ Transformation.timeZoneNamedFromString
7729
+ ),
7730
+ toArbitrary: () => (fc) =>
7731
+ fc.constantFrom(
7732
+ ...["UTC", "Europe/London", "America/New_York", "Asia/Tokyo", "Australia/Sydney"].map(
7733
+ DateTime.zoneMakeNamedUnsafe
7734
+ )
7735
+ ),
7736
+ toFormatter: () => (tz) => DateTime.zoneToString(tz),
7737
+ toEquivalence: () => (a, b) => a.id === b.id
7738
+ }
7739
+ )
7740
+
7741
+ /**
7742
+ * @since 4.0.0
7743
+ */
7744
+ export interface TimeZone extends declare<DateTime.TimeZone> {}
7745
+
7746
+ /**
7747
+ * A schema for `DateTime.TimeZone` values.
7748
+ *
7749
+ * **Default JSON serializer**
7750
+ *
7751
+ * - encodes `DateTime.TimeZone` as a string (IANA identifier or offset like
7752
+ * `+03:00`)
7753
+ *
7754
+ * @category DateTime
7755
+ * @since 4.0.0
7756
+ */
7757
+ export const TimeZone: TimeZone = declare(
7758
+ DateTime.isTimeZone,
7759
+ {
7760
+ typeConstructor: {
7761
+ _tag: "effect/DateTime.TimeZone"
7762
+ },
7763
+ generation: {
7764
+ runtime: `Schema.TimeZone`,
7765
+ Type: `DateTime.TimeZone`,
7766
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7767
+ },
7768
+ expected: "DateTime.TimeZone",
7769
+ toCodecJson: () =>
7770
+ link<DateTime.TimeZone>()(
7771
+ String.annotate({ expected: "a time zone string (IANA identifier or offset like +03:00)" }),
7772
+ Transformation.timeZoneFromString
7773
+ ),
7774
+ toArbitrary: () => (fc) =>
7775
+ fc.oneof(
7776
+ fc.integer({ min: -12 * 60 * 60 * 1000, max: 14 * 60 * 60 * 1000 }).map((n) => DateTime.zoneMakeOffset(n)),
7777
+ fc.constantFrom(
7778
+ ...["UTC", "Europe/London", "America/New_York", "Asia/Tokyo", "Australia/Sydney"].map(
7779
+ DateTime.zoneMakeNamedUnsafe
7780
+ )
7781
+ )
7782
+ ),
7783
+ toFormatter: () => (tz) => DateTime.zoneToString(tz),
7784
+ toEquivalence: () => (a, b) => DateTime.zoneToString(a) === DateTime.zoneToString(b)
7785
+ }
7786
+ )
7787
+
7788
+ /**
7789
+ * @since 4.0.0
7790
+ */
7791
+ export interface DateTimeZoned extends declare<DateTime.Zoned> {}
7792
+
7793
+ /**
7794
+ * A schema for `DateTime.Zoned` values.
7795
+ *
7796
+ * **Default JSON serializer**
7797
+ *
7798
+ * - encodes `DateTime.Zoned` as a string in the format
7799
+ * `YYYY-MM-DDTHH:mm:ss.sss+HH:MM[Time/Zone]`
7800
+ *
7801
+ * @category DateTime
7802
+ * @since 4.0.0
7803
+ */
7804
+ export const DateTimeZoned: DateTimeZoned = declare(
7805
+ (u) => DateTime.isDateTime(u) && DateTime.isZoned(u),
7806
+ {
7807
+ typeConstructor: {
7808
+ _tag: "effect/DateTime.Zoned"
7809
+ },
7810
+ generation: {
7811
+ runtime: `Schema.DateTimeZoned`,
7812
+ Type: `DateTime.Zoned`,
7813
+ importDeclaration: `import * as DateTime from "effect/DateTime"`
7814
+ },
7815
+ expected: "DateTime.Zoned",
7816
+ toCodecJson: () =>
7817
+ link<DateTime.Zoned>()(
7818
+ String.annotate({ expected: "a zoned DateTime string (e.g. 2024-01-01T00:00:00.000+00:00[Europe/London])" }),
7819
+ Transformation.dateTimeZonedFromString
7820
+ ),
7821
+ toArbitrary: () => (fc, ctx) =>
7822
+ fc.tuple(
7823
+ fc.date({
7824
+ noInvalidDate: true,
7825
+ min: new globalThis.Date(-8640000000000000 + 14 * 60 * 60 * 1000),
7826
+ max: new globalThis.Date(8640000000000000 - 14 * 60 * 60 * 1000),
7827
+ ...ctx?.constraints?.date
7828
+ }),
7829
+ fc.constantFrom("UTC", "Europe/London", "America/New_York", "Asia/Tokyo", "Australia/Sydney")
7830
+ ).map(([date, zone]) => DateTime.makeZonedUnsafe(date, { timeZone: zone })),
7831
+ toFormatter: () => (zoned) => DateTime.formatIsoZoned(zoned),
7832
+ toEquivalence: () => DateTime.Equivalence
7833
+ }
7834
+ )
7835
+
7378
7836
  // -----------------------------------------------------------------------------
7379
7837
  // Class
7380
7838
  // -----------------------------------------------------------------------------
@@ -7402,7 +7860,10 @@ export interface Class<Self, S extends Top & { readonly fields: Struct.Fields },
7402
7860
  >
7403
7861
  {
7404
7862
  // intentionally left without `readonly "~rebuild.out": this`
7405
- new(props: S["~type.make.in"], options?: MakeOptions): S["Type"] & Inherited
7863
+ new(
7864
+ ...args: {} extends S["~type.make.in"] ? [props?: S["~type.make.in"], options?: MakeOptions]
7865
+ : [props: S["~type.make.in"], options?: MakeOptions]
7866
+ ): S["Type"] & Inherited
7406
7867
  readonly identifier: string
7407
7868
  readonly fields: S["fields"]
7408
7869
  /**
@@ -7463,11 +7924,12 @@ function makeClass<
7463
7924
 
7464
7925
  return class extends Inherited {
7465
7926
  constructor(...[input, options]: ReadonlyArray<any>) {
7927
+ const props = input ?? {}
7466
7928
  if (options?.disableValidation) {
7467
- super(input, options)
7929
+ super(props, options)
7468
7930
  } else {
7469
- const validated = struct.makeUnsafe(input, options)
7470
- super({ ...input, ...validated }, { ...options, disableValidation: true })
7931
+ const validated = struct.makeUnsafe(props, options)
7932
+ super({ ...props, ...validated }, { ...options, disableValidation: true })
7471
7933
  }
7472
7934
  }
7473
7935