effect 4.0.0-beta.1 → 4.0.0-beta.11

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 (641) 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 +7 -7
  8. package/dist/Channel.d.ts.map +1 -1
  9. package/dist/Channel.js +6 -4
  10. package/dist/Channel.js.map +1 -1
  11. package/dist/Combiner.d.ts +280 -13
  12. package/dist/Combiner.d.ts.map +1 -1
  13. package/dist/Combiner.js +198 -7
  14. package/dist/Combiner.js.map +1 -1
  15. package/dist/Config.d.ts +3 -3
  16. package/dist/Config.js +3 -3
  17. package/dist/Config.js.map +1 -1
  18. package/dist/ConfigProvider.d.ts +1 -1
  19. package/dist/Cron.d.ts +1 -1
  20. package/dist/Data.d.ts +534 -365
  21. package/dist/Data.d.ts.map +1 -1
  22. package/dist/Data.js +132 -79
  23. package/dist/Data.js.map +1 -1
  24. package/dist/DateTime.d.ts +23 -161
  25. package/dist/DateTime.d.ts.map +1 -1
  26. package/dist/DateTime.js +6 -51
  27. package/dist/DateTime.js.map +1 -1
  28. package/dist/Duration.d.ts +12 -12
  29. package/dist/Duration.d.ts.map +1 -1
  30. package/dist/Duration.js +12 -12
  31. package/dist/Duration.js.map +1 -1
  32. package/dist/Effect.d.ts +342 -248
  33. package/dist/Effect.d.ts.map +1 -1
  34. package/dist/Effect.js +119 -119
  35. package/dist/Effect.js.map +1 -1
  36. package/dist/Encoding.d.ts +194 -0
  37. package/dist/Encoding.d.ts.map +1 -0
  38. package/dist/Encoding.js +352 -0
  39. package/dist/Encoding.js.map +1 -0
  40. package/dist/Equal.d.ts +276 -109
  41. package/dist/Equal.d.ts.map +1 -1
  42. package/dist/Equal.js +124 -48
  43. package/dist/Equal.js.map +1 -1
  44. package/dist/ErrorReporter.d.ts +376 -0
  45. package/dist/ErrorReporter.d.ts.map +1 -0
  46. package/dist/ErrorReporter.js +246 -0
  47. package/dist/ErrorReporter.js.map +1 -0
  48. package/dist/FileSystem.d.ts +1 -1
  49. package/dist/FileSystem.d.ts.map +1 -1
  50. package/dist/FileSystem.js +5 -5
  51. package/dist/FileSystem.js.map +1 -1
  52. package/dist/Filter.d.ts +30 -1
  53. package/dist/Filter.d.ts.map +1 -1
  54. package/dist/Filter.js +15 -0
  55. package/dist/Filter.js.map +1 -1
  56. package/dist/Formatter.d.ts +131 -47
  57. package/dist/Formatter.d.ts.map +1 -1
  58. package/dist/Formatter.js +229 -51
  59. package/dist/Formatter.js.map +1 -1
  60. package/dist/Graph.d.ts +1 -1
  61. package/dist/Graph.d.ts.map +1 -1
  62. package/dist/Graph.js +2 -2
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/JsonSchema.d.ts +299 -10
  65. package/dist/JsonSchema.d.ts.map +1 -1
  66. package/dist/JsonSchema.js +323 -4
  67. package/dist/JsonSchema.js.map +1 -1
  68. package/dist/Latch.d.ts +109 -0
  69. package/dist/Latch.d.ts.map +1 -0
  70. package/dist/Latch.js +72 -0
  71. package/dist/Latch.js.map +1 -0
  72. package/dist/LayerMap.d.ts +4 -4
  73. package/dist/LayerMap.d.ts.map +1 -1
  74. package/dist/LogLevel.d.ts +32 -0
  75. package/dist/LogLevel.d.ts.map +1 -1
  76. package/dist/LogLevel.js +28 -100
  77. package/dist/LogLevel.js.map +1 -1
  78. package/dist/Logger.d.ts +29 -95
  79. package/dist/Logger.d.ts.map +1 -1
  80. package/dist/Logger.js +2 -3
  81. package/dist/Logger.js.map +1 -1
  82. package/dist/Metric.d.ts +2 -2
  83. package/dist/Metric.d.ts.map +1 -1
  84. package/dist/Metric.js +1 -1
  85. package/dist/Metric.js.map +1 -1
  86. package/dist/Optic.d.ts +947 -18
  87. package/dist/Optic.d.ts.map +1 -1
  88. package/dist/Optic.js +454 -5
  89. package/dist/Optic.js.map +1 -1
  90. package/dist/Pipeable.d.ts +17 -0
  91. package/dist/Pipeable.d.ts.map +1 -1
  92. package/dist/Pipeable.js +19 -1
  93. package/dist/Pipeable.js.map +1 -1
  94. package/dist/PlatformError.d.ts +10 -9
  95. package/dist/PlatformError.d.ts.map +1 -1
  96. package/dist/PlatformError.js +2 -2
  97. package/dist/PlatformError.js.map +1 -1
  98. package/dist/Pool.d.ts +6 -4
  99. package/dist/Pool.d.ts.map +1 -1
  100. package/dist/Pool.js +7 -5
  101. package/dist/Pool.js.map +1 -1
  102. package/dist/PubSub.d.ts +3 -2
  103. package/dist/PubSub.d.ts.map +1 -1
  104. package/dist/PubSub.js +3 -2
  105. package/dist/PubSub.js.map +1 -1
  106. package/dist/Queue.d.ts.map +1 -1
  107. package/dist/Queue.js +0 -1
  108. package/dist/Queue.js.map +1 -1
  109. package/dist/Random.d.ts +18 -1
  110. package/dist/Random.d.ts.map +1 -1
  111. package/dist/Random.js +29 -12
  112. package/dist/Random.js.map +1 -1
  113. package/dist/RcMap.d.ts +2 -2
  114. package/dist/RcMap.d.ts.map +1 -1
  115. package/dist/RcMap.js +1 -1
  116. package/dist/RcMap.js.map +1 -1
  117. package/dist/RcRef.d.ts +1 -1
  118. package/dist/RcRef.d.ts.map +1 -1
  119. package/dist/Reducer.d.ts +166 -7
  120. package/dist/Reducer.d.ts.map +1 -1
  121. package/dist/Reducer.js +135 -1
  122. package/dist/Reducer.js.map +1 -1
  123. package/dist/References.d.ts +3 -3
  124. package/dist/References.d.ts.map +1 -1
  125. package/dist/Request.d.ts +1 -1
  126. package/dist/Request.d.ts.map +1 -1
  127. package/dist/Request.js +2 -1
  128. package/dist/Request.js.map +1 -1
  129. package/dist/RequestResolver.d.ts +6 -26
  130. package/dist/RequestResolver.d.ts.map +1 -1
  131. package/dist/RequestResolver.js +0 -20
  132. package/dist/RequestResolver.js.map +1 -1
  133. package/dist/Result.d.ts +12 -0
  134. package/dist/Result.d.ts.map +1 -1
  135. package/dist/Result.js +12 -0
  136. package/dist/Result.js.map +1 -1
  137. package/dist/Schedule.d.ts +33 -14
  138. package/dist/Schedule.d.ts.map +1 -1
  139. package/dist/Schedule.js +65 -24
  140. package/dist/Schedule.js.map +1 -1
  141. package/dist/Schema.d.ts +199 -49
  142. package/dist/Schema.d.ts.map +1 -1
  143. package/dist/Schema.js +386 -72
  144. package/dist/Schema.js.map +1 -1
  145. package/dist/SchemaAST.d.ts.map +1 -1
  146. package/dist/SchemaAST.js +2 -1
  147. package/dist/SchemaAST.js.map +1 -1
  148. package/dist/SchemaGetter.d.ts +2 -2
  149. package/dist/SchemaGetter.d.ts.map +1 -1
  150. package/dist/SchemaGetter.js +12 -14
  151. package/dist/SchemaGetter.js.map +1 -1
  152. package/dist/SchemaRepresentation.d.ts +44 -43
  153. package/dist/SchemaRepresentation.d.ts.map +1 -1
  154. package/dist/SchemaRepresentation.js +43 -24
  155. package/dist/SchemaRepresentation.js.map +1 -1
  156. package/dist/SchemaTransformation.d.ts +37 -0
  157. package/dist/SchemaTransformation.d.ts.map +1 -1
  158. package/dist/SchemaTransformation.js +80 -0
  159. package/dist/SchemaTransformation.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +2 -2
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +1 -1
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/Semaphore.d.ts +211 -0
  165. package/dist/Semaphore.d.ts.map +1 -0
  166. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  167. package/dist/Semaphore.js.map +1 -0
  168. package/dist/Stream.d.ts +24 -24
  169. package/dist/Stream.d.ts.map +1 -1
  170. package/dist/Stream.js +12 -11
  171. package/dist/Stream.js.map +1 -1
  172. package/dist/Struct.d.ts +16 -0
  173. package/dist/Struct.d.ts.map +1 -1
  174. package/dist/Struct.js +22 -0
  175. package/dist/Struct.js.map +1 -1
  176. package/dist/SubscriptionRef.d.ts +2 -1
  177. package/dist/SubscriptionRef.d.ts.map +1 -1
  178. package/dist/SubscriptionRef.js +2 -1
  179. package/dist/SubscriptionRef.js.map +1 -1
  180. package/dist/SynchronizedRef.d.ts +2 -1
  181. package/dist/SynchronizedRef.d.ts.map +1 -1
  182. package/dist/SynchronizedRef.js +2 -1
  183. package/dist/SynchronizedRef.js.map +1 -1
  184. package/dist/Types.d.ts +14 -6
  185. package/dist/Types.d.ts.map +1 -1
  186. package/dist/index.d.ts +503 -19
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +503 -19
  189. package/dist/index.js.map +1 -1
  190. package/dist/internal/core.js +11 -3
  191. package/dist/internal/core.js.map +1 -1
  192. package/dist/internal/dateTime.js +3 -11
  193. package/dist/internal/dateTime.js.map +1 -1
  194. package/dist/internal/effect.js +85 -26
  195. package/dist/internal/effect.js.map +1 -1
  196. package/dist/internal/hashMap.js +2 -2
  197. package/dist/internal/hashMap.js.map +1 -1
  198. package/dist/internal/random.d.ts +2 -0
  199. package/dist/internal/random.d.ts.map +1 -0
  200. package/dist/internal/random.js +13 -0
  201. package/dist/internal/random.js.map +1 -0
  202. package/dist/internal/rcRef.js +3 -2
  203. package/dist/internal/rcRef.js.map +1 -1
  204. package/dist/testing/TestClock.d.ts +7 -6
  205. package/dist/testing/TestClock.d.ts.map +1 -1
  206. package/dist/testing/TestClock.js +6 -4
  207. package/dist/testing/TestClock.js.map +1 -1
  208. package/dist/testing/TestSchema.d.ts +6 -6
  209. package/dist/testing/TestSchema.d.ts.map +1 -1
  210. package/dist/unstable/ai/AiError.d.ts +48 -48
  211. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  212. package/dist/unstable/ai/Chat.d.ts +3 -3
  213. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  214. package/dist/unstable/ai/Chat.js +4 -3
  215. package/dist/unstable/ai/Chat.js.map +1 -1
  216. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  217. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  218. package/dist/unstable/ai/LanguageModel.js +41 -0
  219. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  220. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  221. package/dist/unstable/ai/McpServer.d.ts +1 -1
  222. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  223. package/dist/unstable/ai/McpServer.js.map +1 -1
  224. package/dist/unstable/ai/Prompt.d.ts +20 -20
  225. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  226. package/dist/unstable/ai/Response.d.ts +26 -26
  227. package/dist/unstable/ai/Response.d.ts.map +1 -1
  228. package/dist/unstable/ai/Response.js +1 -1
  229. package/dist/unstable/ai/Response.js.map +1 -1
  230. package/dist/unstable/cli/CliError.d.ts +5 -5
  231. package/dist/unstable/cli/CliOutput.js +37 -6
  232. package/dist/unstable/cli/CliOutput.js.map +1 -1
  233. package/dist/unstable/cli/Command.d.ts +199 -7
  234. package/dist/unstable/cli/Command.d.ts.map +1 -1
  235. package/dist/unstable/cli/Command.js +116 -6
  236. package/dist/unstable/cli/Command.js.map +1 -1
  237. package/dist/unstable/cli/HelpDoc.d.ts +60 -2
  238. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  239. package/dist/unstable/cli/internal/command.d.ts +11 -1
  240. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  241. package/dist/unstable/cli/internal/command.js +33 -8
  242. package/dist/unstable/cli/internal/command.js.map +1 -1
  243. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
  244. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  245. package/dist/unstable/cli/internal/parser.js +10 -2
  246. package/dist/unstable/cli/internal/parser.js.map +1 -1
  247. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  248. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  249. package/dist/unstable/cluster/ClusterCron.js +1 -1
  250. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  251. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  252. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  253. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  254. package/dist/unstable/cluster/Entity.d.ts +5 -4
  255. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  256. package/dist/unstable/cluster/Entity.js.map +1 -1
  257. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  258. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  259. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  260. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  261. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  262. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  263. package/dist/unstable/cluster/Message.d.ts +10 -10
  264. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  265. package/dist/unstable/cluster/MessageStorage.js +2 -1
  266. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  267. package/dist/unstable/cluster/Reply.d.ts +6 -6
  268. package/dist/unstable/cluster/Runner.d.ts +1 -1
  269. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  270. package/dist/unstable/cluster/Runners.js +4 -3
  271. package/dist/unstable/cluster/Runners.js.map +1 -1
  272. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  273. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  274. package/dist/unstable/cluster/Sharding.js +8 -6
  275. package/dist/unstable/cluster/Sharding.js.map +1 -1
  276. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  277. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  278. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  279. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  280. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  281. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  282. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  283. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  284. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  285. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  286. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  287. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  288. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  289. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  290. package/dist/unstable/encoding/Sse.d.ts +4 -4
  291. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  292. package/dist/unstable/encoding/Sse.js.map +1 -1
  293. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  294. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  295. package/dist/unstable/eventlog/EventLog.js +2 -1
  296. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  297. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  298. package/dist/unstable/http/Cookies.d.ts +3 -3
  299. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  300. package/dist/unstable/http/Cookies.js +2 -2
  301. package/dist/unstable/http/Cookies.js.map +1 -1
  302. package/dist/unstable/http/Headers.d.ts.map +1 -1
  303. package/dist/unstable/http/Headers.js +27 -10
  304. package/dist/unstable/http/Headers.js.map +1 -1
  305. package/dist/unstable/http/HttpBody.d.ts +17 -2
  306. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  307. package/dist/unstable/http/HttpBody.js +28 -1
  308. package/dist/unstable/http/HttpBody.js.map +1 -1
  309. package/dist/unstable/http/HttpClient.d.ts +11 -11
  310. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  311. package/dist/unstable/http/HttpClient.js +4 -4
  312. package/dist/unstable/http/HttpClient.js.map +1 -1
  313. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  314. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  315. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  316. package/dist/unstable/http/HttpClientRequest.js +15 -3
  317. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  318. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  319. package/dist/unstable/http/HttpEffect.js +30 -33
  320. package/dist/unstable/http/HttpEffect.js.map +1 -1
  321. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  322. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  323. package/dist/unstable/http/HttpMethod.js +3 -3
  324. package/dist/unstable/http/HttpMethod.js.map +1 -1
  325. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  326. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  327. package/dist/unstable/http/HttpMiddleware.js +4 -9
  328. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  329. package/dist/unstable/http/HttpServerError.d.ts +14 -32
  330. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  331. package/dist/unstable/http/HttpServerError.js +11 -27
  332. package/dist/unstable/http/HttpServerError.js.map +1 -1
  333. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  334. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  335. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  336. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  337. package/dist/unstable/http/HttpServerResponse.d.ts +2 -1
  338. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  339. package/dist/unstable/http/HttpServerResponse.js +3 -1
  340. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  341. package/dist/unstable/http/Multipart.d.ts +3 -3
  342. package/dist/unstable/http/UrlParams.d.ts +14 -6
  343. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  344. package/dist/unstable/http/UrlParams.js +1 -1
  345. package/dist/unstable/http/UrlParams.js.map +1 -1
  346. package/dist/unstable/httpapi/HttpApiBuilder.js +6 -6
  347. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  348. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  349. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  350. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  351. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  352. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  353. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  354. package/dist/unstable/httpapi/HttpApiError.d.ts +11 -0
  355. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  356. package/dist/unstable/httpapi/HttpApiError.js +29 -9
  357. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  358. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  359. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  360. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  361. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  362. package/dist/unstable/httpapi/OpenApi.js +18 -16
  363. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  364. package/dist/unstable/observability/Otlp.d.ts +12 -12
  365. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  366. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  367. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  368. package/dist/unstable/observability/OtlpExporter.js +1 -1
  369. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  370. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  371. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  372. package/dist/unstable/observability/OtlpLogger.js +7 -4
  373. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  374. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  375. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  376. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  377. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  378. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  379. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  380. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  381. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  382. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  383. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  384. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  385. package/dist/unstable/persistence/PersistedCache.js +2 -1
  386. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  387. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  388. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  389. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  390. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  391. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  392. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  393. package/dist/unstable/persistence/Persistence.js +2 -2
  394. package/dist/unstable/persistence/Persistence.js.map +1 -1
  395. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  396. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  397. package/dist/unstable/persistence/RateLimiter.js +1 -1
  398. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  399. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  400. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  401. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  402. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  403. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  404. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  405. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  406. package/dist/unstable/reactivity/Atom.js +15 -12
  407. package/dist/unstable/reactivity/Atom.js.map +1 -1
  408. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  409. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  410. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  411. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  412. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  413. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  414. package/dist/unstable/reactivity/AtomRegistry.js +22 -1
  415. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  416. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  417. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  418. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  419. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  420. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  421. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  422. package/dist/unstable/reactivity/Hydration.js +76 -0
  423. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  424. package/dist/unstable/reactivity/index.d.ts +4 -0
  425. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  426. package/dist/unstable/reactivity/index.js +4 -0
  427. package/dist/unstable/reactivity/index.js.map +1 -1
  428. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  429. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  430. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  431. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  432. package/dist/unstable/rpc/RpcClient.js +6 -13
  433. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  434. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  435. package/dist/unstable/rpc/RpcServer.js +9 -3
  436. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  437. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  438. package/dist/unstable/rpc/Utils.js +2 -1
  439. package/dist/unstable/rpc/Utils.js.map +1 -1
  440. package/dist/unstable/schema/Model.d.ts +4 -4
  441. package/dist/unstable/schema/Model.d.ts.map +1 -1
  442. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  443. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  444. package/dist/unstable/schema/VariantSchema.js +13 -2
  445. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  446. package/dist/unstable/socket/Socket.d.ts +4 -4
  447. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  448. package/dist/unstable/socket/Socket.js +3 -2
  449. package/dist/unstable/socket/Socket.js.map +1 -1
  450. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  451. package/dist/unstable/sql/Migrator.d.ts +1 -1
  452. package/dist/unstable/sql/SqlError.d.ts +2 -2
  453. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  454. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  455. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  456. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  457. package/dist/unstable/sql/SqlSchema.js +24 -3
  458. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  459. package/dist/unstable/sql/Statement.js +0 -1
  460. package/dist/unstable/sql/Statement.js.map +1 -1
  461. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  462. package/dist/unstable/workers/Worker.js +2 -1
  463. package/dist/unstable/workers/Worker.js.map +1 -1
  464. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  465. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  466. package/dist/unstable/workflow/DurableClock.js +3 -3
  467. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  468. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  469. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  470. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  471. package/dist/unstable/workflow/WorkflowEngine.d.ts +8 -1
  472. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  473. package/dist/unstable/workflow/WorkflowEngine.js +133 -1
  474. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  475. package/package.json +2 -2
  476. package/src/Cache.ts +3 -3
  477. package/src/Cause.ts +1 -1
  478. package/src/Channel.ts +15 -13
  479. package/src/Combiner.ts +280 -13
  480. package/src/Config.ts +3 -3
  481. package/src/Data.ts +538 -374
  482. package/src/DateTime.ts +24 -164
  483. package/src/Duration.ts +15 -15
  484. package/src/Effect.ts +378 -269
  485. package/src/Encoding.ts +879 -0
  486. package/src/Equal.ts +278 -111
  487. package/src/ErrorReporter.ts +459 -0
  488. package/src/FileSystem.ts +7 -8
  489. package/src/Filter.ts +48 -1
  490. package/src/Formatter.ts +253 -51
  491. package/src/Graph.ts +8 -5
  492. package/src/JsonSchema.ts +383 -10
  493. package/src/Latch.ts +112 -0
  494. package/src/LayerMap.ts +5 -5
  495. package/src/LogLevel.ts +37 -0
  496. package/src/Logger.ts +33 -100
  497. package/src/Metric.ts +4 -4
  498. package/src/Optic.ts +948 -19
  499. package/src/Pipeable.ts +32 -1
  500. package/src/PlatformError.ts +5 -5
  501. package/src/Pool.ts +13 -11
  502. package/src/PubSub.ts +10 -9
  503. package/src/Queue.ts +0 -1
  504. package/src/Random.ts +33 -14
  505. package/src/RcMap.ts +5 -5
  506. package/src/RcRef.ts +1 -1
  507. package/src/Reducer.ts +166 -7
  508. package/src/References.ts +4 -4
  509. package/src/Request.ts +3 -2
  510. package/src/RequestResolver.ts +9 -29
  511. package/src/Result.ts +13 -0
  512. package/src/Schedule.ts +279 -140
  513. package/src/Schema.ts +575 -113
  514. package/src/SchemaAST.ts +2 -1
  515. package/src/SchemaGetter.ts +12 -14
  516. package/src/SchemaRepresentation.ts +43 -24
  517. package/src/SchemaTransformation.ts +104 -0
  518. package/src/ScopedCache.ts +3 -3
  519. package/src/Semaphore.ts +356 -0
  520. package/src/Stream.ts +50 -49
  521. package/src/Struct.ts +26 -0
  522. package/src/SubscriptionRef.ts +3 -2
  523. package/src/SynchronizedRef.ts +3 -2
  524. package/src/Types.ts +12 -2
  525. package/src/index.ts +507 -20
  526. package/src/internal/core.ts +12 -5
  527. package/src/internal/dateTime.ts +9 -30
  528. package/src/internal/effect.ts +194 -51
  529. package/src/internal/hashMap.ts +2 -2
  530. package/src/internal/random.ts +20 -0
  531. package/src/internal/rcRef.ts +4 -3
  532. package/src/testing/TestClock.ts +13 -11
  533. package/src/testing/TestSchema.ts +8 -8
  534. package/src/unstable/ai/AiError.ts +2 -2
  535. package/src/unstable/ai/Chat.ts +12 -11
  536. package/src/unstable/ai/LanguageModel.ts +74 -3
  537. package/src/unstable/ai/McpServer.ts +2 -2
  538. package/src/unstable/ai/Prompt.ts +37 -37
  539. package/src/unstable/ai/Response.ts +25 -25
  540. package/src/unstable/cli/CliOutput.ts +45 -6
  541. package/src/unstable/cli/Command.ts +298 -11
  542. package/src/unstable/cli/HelpDoc.ts +68 -2
  543. package/src/unstable/cli/internal/command.ts +47 -11
  544. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
  545. package/src/unstable/cli/internal/parser.ts +11 -3
  546. package/src/unstable/cluster/ClusterCron.ts +2 -2
  547. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  548. package/src/unstable/cluster/Entity.ts +7 -6
  549. package/src/unstable/cluster/EntityResource.ts +4 -4
  550. package/src/unstable/cluster/Envelope.ts +1 -1
  551. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  552. package/src/unstable/cluster/MessageStorage.ts +3 -5
  553. package/src/unstable/cluster/Runners.ts +6 -5
  554. package/src/unstable/cluster/Sharding.ts +11 -9
  555. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  556. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  557. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  558. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  559. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  560. package/src/unstable/encoding/Sse.ts +2 -4
  561. package/src/unstable/eventlog/EventLog.ts +2 -1
  562. package/src/unstable/http/Cookies.ts +3 -3
  563. package/src/unstable/http/Headers.ts +28 -13
  564. package/src/unstable/http/HttpBody.ts +42 -1
  565. package/src/unstable/http/HttpClient.ts +19 -19
  566. package/src/unstable/http/HttpClientRequest.ts +38 -13
  567. package/src/unstable/http/HttpEffect.ts +27 -30
  568. package/src/unstable/http/HttpMethod.ts +16 -4
  569. package/src/unstable/http/HttpMiddleware.ts +5 -10
  570. package/src/unstable/http/HttpServerError.ts +13 -27
  571. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  572. package/src/unstable/http/HttpServerResponse.ts +4 -2
  573. package/src/unstable/http/Multipart.ts +2 -2
  574. package/src/unstable/http/UrlParams.ts +20 -5
  575. package/src/unstable/httpapi/HttpApiBuilder.ts +6 -5
  576. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  577. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  578. package/src/unstable/httpapi/HttpApiError.ts +30 -9
  579. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  580. package/src/unstable/httpapi/OpenApi.ts +18 -16
  581. package/src/unstable/observability/Otlp.ts +12 -12
  582. package/src/unstable/observability/OtlpExporter.ts +3 -3
  583. package/src/unstable/observability/OtlpLogger.ts +13 -9
  584. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  585. package/src/unstable/observability/OtlpTracer.ts +4 -4
  586. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  587. package/src/unstable/persistence/Persistable.ts +2 -2
  588. package/src/unstable/persistence/PersistedCache.ts +20 -9
  589. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  590. package/src/unstable/persistence/Persistence.ts +3 -3
  591. package/src/unstable/persistence/RateLimiter.ts +4 -4
  592. package/src/unstable/process/ChildProcess.ts +2 -2
  593. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  594. package/src/unstable/reactivity/Atom.ts +20 -18
  595. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  596. package/src/unstable/reactivity/AtomRegistry.ts +29 -1
  597. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  598. package/src/unstable/reactivity/Hydration.ts +112 -0
  599. package/src/unstable/reactivity/index.ts +5 -0
  600. package/src/unstable/rpc/Rpc.ts +3 -3
  601. package/src/unstable/rpc/RpcClient.ts +12 -54
  602. package/src/unstable/rpc/RpcServer.ts +10 -4
  603. package/src/unstable/rpc/Utils.ts +2 -1
  604. package/src/unstable/schema/VariantSchema.ts +36 -7
  605. package/src/unstable/socket/Socket.ts +7 -6
  606. package/src/unstable/sql/SqlModel.ts +2 -2
  607. package/src/unstable/sql/SqlSchema.ts +62 -13
  608. package/src/unstable/sql/Statement.ts +0 -1
  609. package/src/unstable/workers/Worker.ts +2 -1
  610. package/src/unstable/workflow/DurableClock.ts +8 -8
  611. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  612. package/src/unstable/workflow/WorkflowEngine.ts +181 -2
  613. package/dist/PartitionedSemaphore.d.ts +0 -52
  614. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  615. package/dist/PartitionedSemaphore.js.map +0 -1
  616. package/dist/encoding/Base64.d.ts +0 -67
  617. package/dist/encoding/Base64.d.ts.map +0 -1
  618. package/dist/encoding/Base64.js +0 -146
  619. package/dist/encoding/Base64.js.map +0 -1
  620. package/dist/encoding/Base64Url.d.ts +0 -60
  621. package/dist/encoding/Base64Url.d.ts.map +0 -1
  622. package/dist/encoding/Base64Url.js +0 -89
  623. package/dist/encoding/Base64Url.js.map +0 -1
  624. package/dist/encoding/EncodingError.d.ts +0 -31
  625. package/dist/encoding/EncodingError.d.ts.map +0 -1
  626. package/dist/encoding/EncodingError.js +0 -22
  627. package/dist/encoding/EncodingError.js.map +0 -1
  628. package/dist/encoding/Hex.d.ts +0 -61
  629. package/dist/encoding/Hex.d.ts.map +0 -1
  630. package/dist/encoding/Hex.js +0 -115
  631. package/dist/encoding/Hex.js.map +0 -1
  632. package/dist/encoding/index.d.ts +0 -26
  633. package/dist/encoding/index.d.ts.map +0 -1
  634. package/dist/encoding/index.js +0 -27
  635. package/dist/encoding/index.js.map +0 -1
  636. package/src/PartitionedSemaphore.ts +0 -182
  637. package/src/encoding/Base64.ts +0 -366
  638. package/src/encoding/Base64Url.ts +0 -104
  639. package/src/encoding/EncodingError.ts +0 -35
  640. package/src/encoding/Hex.ts +0 -390
  641. package/src/encoding/index.ts +0 -31
package/src/index.ts CHANGED
@@ -444,6 +444,65 @@ export * as Chunk from "./Chunk.ts"
444
444
  export * as Clock from "./Clock.ts"
445
445
 
446
446
  /**
447
+ * A module for combining two values of the same type into one.
448
+ *
449
+ * A `Combiner<A>` wraps a single binary function `(self: A, that: A) => A`.
450
+ * It describes *how* two values merge but carries no initial/empty value
451
+ * (for that, see {@link Reducer} which extends `Combiner` with an
452
+ * `initialValue`).
453
+ *
454
+ * ## Mental model
455
+ *
456
+ * - **Combiner** – an object with a `combine(self, that)` method that returns
457
+ * a value of the same type.
458
+ * - **Argument order** – `self` is the "left" / accumulator side, `that` is
459
+ * the "right" / incoming side.
460
+ * - **No identity element** – unlike a monoid, a `Combiner` does not require
461
+ * a neutral element. Use {@link Reducer} when you need one.
462
+ * - **Purity** – all combiners produced by this module are pure; they never
463
+ * mutate their arguments.
464
+ * - **Composability** – combiners can be lifted into `Option`, `Struct`,
465
+ * `Tuple`, and other container types via helpers in those modules.
466
+ *
467
+ * ## Common tasks
468
+ *
469
+ * - Create a combiner from any binary function → {@link make}
470
+ * - Swap argument order → {@link flip}
471
+ * - Pick the smaller / larger of two values → {@link min} / {@link max}
472
+ * - Always keep the first or last value → {@link first} / {@link last}
473
+ * - Ignore both values and return a fixed result → {@link constant}
474
+ * - Insert a separator between combined values → {@link intercalate}
475
+ *
476
+ * ## Gotchas
477
+ *
478
+ * - `min` and `max` require an `Order<A>`, not a raw comparator. Import from
479
+ * e.g. `Number.Order` or `String.Order`.
480
+ * - `intercalate` is curried: call it with the separator first, then pass the
481
+ * base combiner.
482
+ * - A `Reducer` (which adds `initialValue`) is also a valid `Combiner` — you
483
+ * can pass a `Reducer` anywhere a `Combiner` is expected.
484
+ *
485
+ * ## Quickstart
486
+ *
487
+ * **Example** (combining strings with a separator)
488
+ *
489
+ * ```ts
490
+ * import { Combiner, String } from "effect"
491
+ *
492
+ * const csv = Combiner.intercalate(",")(String.ReducerConcat)
493
+ *
494
+ * console.log(csv.combine("a", "b"))
495
+ * // Output: "a,b"
496
+ *
497
+ * console.log(csv.combine(csv.combine("a", "b"), "c"))
498
+ * // Output: "a,b,c"
499
+ * ```
500
+ *
501
+ * ## See also
502
+ *
503
+ * - {@link make} – the primary constructor
504
+ * - {@link Combiner} – the core interface
505
+ *
447
506
  * @since 4.0.0
448
507
  */
449
508
  export * as Combiner from "./Combiner.ts"
@@ -684,15 +743,75 @@ export * as Console from "./Console.ts"
684
743
  export * as Cron from "./Cron.ts"
685
744
 
686
745
  /**
687
- * This module provides utilities for creating data types with structural equality
688
- * semantics. Unlike regular JavaScript objects, `Data` types support value-based
689
- * equality comparison using the `Equal` module.
746
+ * Immutable data constructors with discriminated-union support.
747
+ *
748
+ * The `Data` module provides base classes and factory functions for creating
749
+ * immutable value types with a `_tag` field for discriminated unions.
750
+ * It is the recommended way to define domain models, error types, and
751
+ * lightweight ADTs in Effect applications.
752
+ *
753
+ * ## Mental model
754
+ *
755
+ * - **`Class`** — base class for plain immutable data. Extend it with a type
756
+ * parameter to declare the fields. Instances are `Pipeable`.
757
+ * - **`TaggedClass`** — like `Class` but automatically adds a `readonly _tag`
758
+ * string literal field. Useful for single-variant types or ad-hoc tagged
759
+ * values.
760
+ * - **`TaggedEnum`** (type) + **`taggedEnum`** (value) — define a multi-variant
761
+ * discriminated union from a simple record. `taggedEnum()` returns per-variant
762
+ * constructors plus `$is` / `$match` helpers.
763
+ * - **`Error`** — like `Class` but extends `Cause.YieldableError`, so instances
764
+ * can be yielded inside `Effect.gen` to fail the effect.
765
+ * - **`TaggedError`** — like `TaggedClass` but extends `Cause.YieldableError`.
766
+ * Works with `Effect.catchTag` for tag-based error recovery.
767
+ *
768
+ * ## Common tasks
769
+ *
770
+ * - Define a simple value class → {@link Class}
771
+ * - Define a value class with a `_tag` → {@link TaggedClass}
772
+ * - Define a discriminated union with constructors → {@link TaggedEnum} + {@link taggedEnum}
773
+ * - Define a yieldable error → {@link Error}
774
+ * - Define a yieldable tagged error → {@link TaggedError}
775
+ * - Type-guard a tagged value → `$is` from {@link taggedEnum}
776
+ * - Pattern-match on a tagged union → `$match` from {@link taggedEnum}
777
+ *
778
+ * ## Gotchas
779
+ *
780
+ * - Variant records passed to `TaggedEnum` must **not** contain a `_tag` key;
781
+ * the `_tag` is added automatically from the record key.
782
+ * - When a class has no fields, the constructor argument is optional (`void`).
783
+ * - `taggedEnum()` creates **plain objects**, not class instances. If you need
784
+ * class-based variants, use `TaggedClass` or `TaggedError` instead.
785
+ * - `TaggedEnum.WithGenerics` supports up to 4 generic type parameters.
786
+ *
787
+ * ## Quickstart
788
+ *
789
+ * **Example** (tagged union with pattern matching)
790
+ *
791
+ * ```ts
792
+ * import { Data } from "effect"
793
+ *
794
+ * type Shape = Data.TaggedEnum<{
795
+ * Circle: { readonly radius: number }
796
+ * Rect: { readonly width: number; readonly height: number }
797
+ * }>
798
+ * const { Circle, Rect, $match } = Data.taggedEnum<Shape>()
799
+ *
800
+ * const area = $match({
801
+ * Circle: ({ radius }) => Math.PI * radius ** 2,
802
+ * Rect: ({ width, height }) => width * height
803
+ * })
804
+ *
805
+ * console.log(area(Circle({ radius: 5 })))
806
+ * // 78.53981633974483
807
+ * console.log(area(Rect({ width: 3, height: 4 })))
808
+ * // 12
809
+ * ```
690
810
  *
691
- * The main benefits of using `Data` types are:
692
- * - **Structural equality**: Two `Data` objects are equal if their contents are equal
693
- * - **Immutability**: `Data` types are designed to be immutable
694
- * - **Type safety**: Constructors ensure type safety and consistency
695
- * - **Effect integration**: Error types work seamlessly with Effect's error handling
811
+ * @see {@link Class} plain immutable data class
812
+ * @see {@link TaggedEnum} discriminated union type
813
+ * @see {@link taggedEnum} discriminated union constructors
814
+ * @see {@link TaggedError} yieldable tagged error class
696
815
  *
697
816
  * @since 2.0.0
698
817
  */
@@ -866,9 +985,80 @@ export * as Duration from "./Duration.ts"
866
985
  export * as Effect from "./Effect.ts"
867
986
 
868
987
  /**
869
- * This module provides functionality for defining and working with equality between values.
870
- * It includes the `Equal` interface for types that can determine equality with other values
871
- * of the same type, and utilities for comparing values.
988
+ * Encoding & decoding for Base64 (RFC4648), Base64Url, and Hex.
989
+ *
990
+ * @since 4.0.0
991
+ */
992
+ export * as Encoding from "./Encoding.ts"
993
+
994
+ /**
995
+ * Structural and custom equality for Effect values.
996
+ *
997
+ * The `Equal` module provides deep structural comparison for primitives, plain
998
+ * objects, arrays, Maps, Sets, Dates, and RegExps. Types that implement the
999
+ * {@link Equal} interface can supply their own comparison logic while staying
1000
+ * compatible with the rest of the ecosystem (HashMap, HashSet, etc.).
1001
+ *
1002
+ * ## Mental model
1003
+ *
1004
+ * - **Structural equality** — two values are equal when their contents match,
1005
+ * not when they share the same reference.
1006
+ * - **Hash-first shortcut** — before comparing fields, the module checks
1007
+ * {@link Hash.hash}. If the hashes differ the objects are unequal without
1008
+ * further traversal.
1009
+ * - **Equal interface** — any object that implements both {@link symbol} (the
1010
+ * equality method) and `Hash.symbol` (the hash method) can define custom
1011
+ * comparison logic.
1012
+ * - **Caching** — comparison results for object pairs are cached in a WeakMap.
1013
+ * This makes repeated checks fast but **requires immutability** after the
1014
+ * first comparison.
1015
+ * - **By-reference opt-out** — {@link byReference} and {@link byReferenceUnsafe}
1016
+ * let you switch individual objects back to reference equality when you need
1017
+ * mutable identity semantics.
1018
+ *
1019
+ * ## Common tasks
1020
+ *
1021
+ * - Compare two values → {@link equals}
1022
+ * - Check if a value implements `Equal` → {@link isEqual}
1023
+ * - Use `equals` where an `Equivalence` is expected → {@link asEquivalence}
1024
+ * - Implement custom equality on a class → implement {@link Equal} (see
1025
+ * example on the interface)
1026
+ * - Opt an object out of structural equality → {@link byReference} /
1027
+ * {@link byReferenceUnsafe}
1028
+ *
1029
+ * ## Gotchas
1030
+ *
1031
+ * - Objects **must be treated as immutable** after their first equality check.
1032
+ * Results are cached; mutating an object afterwards yields stale results.
1033
+ * - `NaN` is considered equal to `NaN` (unlike `===`).
1034
+ * - Functions without an `Equal` implementation are compared by reference.
1035
+ * - Map and Set comparisons are order-independent but O(n²) in size.
1036
+ * - If only one of two objects implements `Equal`, they are never equal.
1037
+ *
1038
+ * ## Quickstart
1039
+ *
1040
+ * **Example** (basic structural comparison)
1041
+ *
1042
+ * ```ts
1043
+ * import { Equal } from "effect"
1044
+ *
1045
+ * // Primitives
1046
+ * console.log(Equal.equals(1, 1)) // true
1047
+ * console.log(Equal.equals("a", "b")) // false
1048
+ *
1049
+ * // Objects and arrays
1050
+ * console.log(Equal.equals({ x: 1 }, { x: 1 })) // true
1051
+ * console.log(Equal.equals([1, 2], [1, 2])) // true
1052
+ *
1053
+ * // Curried form
1054
+ * const is42 = Equal.equals(42)
1055
+ * console.log(is42(42)) // true
1056
+ * console.log(is42(0)) // false
1057
+ * ```
1058
+ *
1059
+ * @see {@link equals} — the main comparison function
1060
+ * @see {@link Equal} — the interface for custom equality
1061
+ * @see {@link Hash} — the companion hashing module
872
1062
  *
873
1063
  * @since 2.0.0
874
1064
  */
@@ -929,6 +1119,11 @@ export * as Equal from "./Equal.ts"
929
1119
  */
930
1120
  export * as Equivalence from "./Equivalence.ts"
931
1121
 
1122
+ /**
1123
+ * @since 4.0.0
1124
+ */
1125
+ export * as ErrorReporter from "./ErrorReporter.ts"
1126
+
932
1127
  /**
933
1128
  * @since 3.16.0
934
1129
  */
@@ -1130,6 +1325,57 @@ export * as FileSystem from "./FileSystem.ts"
1130
1325
  export * as Filter from "./Filter.ts"
1131
1326
 
1132
1327
  /**
1328
+ * Utilities for converting arbitrary JavaScript values into human-readable
1329
+ * strings, with support for circular references, redaction, and common JS
1330
+ * types that `JSON.stringify` handles poorly.
1331
+ *
1332
+ * Mental model:
1333
+ * - A `Formatter<Value, Format>` is a callable `(value: Value) => Format`.
1334
+ * - {@link format} is the general-purpose pretty-printer: it handles
1335
+ * primitives, arrays, objects, `BigInt`, `Symbol`, `Date`, `RegExp`,
1336
+ * `Set`, `Map`, class instances, and circular references.
1337
+ * - {@link formatJson} is a safe `JSON.stringify` wrapper that silently
1338
+ * drops circular references and applies redaction.
1339
+ * - Both functions accept a `space` option for indentation control.
1340
+ *
1341
+ * Common tasks:
1342
+ * - Pretty-print any value for debugging / logging -> {@link format}
1343
+ * - Serialize to JSON safely (no circular throws) -> {@link formatJson}
1344
+ * - Format a single object property key -> {@link formatPropertyKey}
1345
+ * - Format a property path like `["a"]["b"]` -> {@link formatPath}
1346
+ * - Format a `Date` to ISO string safely -> {@link formatDate}
1347
+ *
1348
+ * Gotchas:
1349
+ * - {@link format} output is **not** valid JSON; use {@link formatJson} when
1350
+ * you need parseable JSON.
1351
+ * - {@link format} calls `toString()` on objects by default; pass
1352
+ * `ignoreToString: true` to disable.
1353
+ * - {@link formatJson} silently omits circular references (the key is
1354
+ * dropped from the output).
1355
+ * - Values implementing the `Redactable` protocol are automatically
1356
+ * redacted by both {@link format} and {@link formatJson}.
1357
+ *
1358
+ * **Example** (Pretty-print a value)
1359
+ *
1360
+ * ```ts
1361
+ * import { Formatter } from "effect"
1362
+ *
1363
+ * const obj = { name: "Alice", scores: [100, 97] }
1364
+ * console.log(Formatter.format(obj))
1365
+ * // {"name":"Alice","scores":[100,97]}
1366
+ *
1367
+ * console.log(Formatter.format(obj, { space: 2 }))
1368
+ * // {
1369
+ * // "name": "Alice",
1370
+ * // "scores": [
1371
+ * // 100,
1372
+ * // 97
1373
+ * // ]
1374
+ * // }
1375
+ * ```
1376
+ *
1377
+ * See also: {@link Formatter}, {@link format}, {@link formatJson}
1378
+ *
1133
1379
  * @since 4.0.0
1134
1380
  */
1135
1381
  export * as Formatter from "./Formatter.ts"
@@ -1394,10 +1640,98 @@ export * as JsonPatch from "./JsonPatch.ts"
1394
1640
  export * as JsonPointer from "./JsonPointer.ts"
1395
1641
 
1396
1642
  /**
1643
+ * Convert JSON Schema documents between dialects (Draft-07, Draft-2020-12,
1644
+ * OpenAPI 3.0, OpenAPI 3.1). All dialects are normalized to an internal
1645
+ * `Document<"draft-2020-12">` representation before optional conversion to
1646
+ * an output dialect.
1647
+ *
1648
+ * ## Mental model
1649
+ *
1650
+ * - **JsonSchema** — a plain object with string keys; represents any single
1651
+ * JSON Schema node.
1652
+ * - **Dialect** — one of `"draft-07"`, `"draft-2020-12"`, `"openapi-3.1"`,
1653
+ * or `"openapi-3.0"`.
1654
+ * - **Document** — a structured container holding a root `schema`, its
1655
+ * companion `definitions`, and the target `dialect`. Definitions are
1656
+ * stored separately from the root schema so they can be relocated when
1657
+ * converting between dialects.
1658
+ * - **MultiDocument** — same as `Document` but carries multiple root
1659
+ * schemas (at least one). Useful when generating several schemas that
1660
+ * share a single definitions pool.
1661
+ * - **Definitions** — a `Record<string, JsonSchema>` keyed by definition
1662
+ * name. The ref pointer prefix depends on the dialect.
1663
+ * - **`from*` functions** — parse a raw JSON Schema object into the
1664
+ * canonical `Document<"draft-2020-12">`.
1665
+ * - **`to*` functions** — convert from the canonical representation to a
1666
+ * specific output dialect.
1667
+ *
1668
+ * ## Common tasks
1669
+ *
1670
+ * - Parse a Draft-07 schema → {@link fromSchemaDraft07}
1671
+ * - Parse a Draft-2020-12 schema → {@link fromSchemaDraft2020_12}
1672
+ * - Parse an OpenAPI 3.1 schema → {@link fromSchemaOpenApi3_1}
1673
+ * - Parse an OpenAPI 3.0 schema → {@link fromSchemaOpenApi3_0}
1674
+ * - Convert to Draft-07 output → {@link toDocumentDraft07}
1675
+ * - Convert to OpenAPI 3.1 output → {@link toMultiDocumentOpenApi3_1}
1676
+ * - Resolve a `$ref` against definitions → {@link resolve$ref}
1677
+ * - Inline the root `$ref` of a document → {@link resolveTopLevel$ref}
1678
+ *
1679
+ * ## Gotchas
1680
+ *
1681
+ * - All `from*` functions normalize to `Document<"draft-2020-12">`
1682
+ * regardless of the input dialect.
1683
+ * - Unsupported or unrecognized JSON Schema keywords are silently dropped
1684
+ * during conversion.
1685
+ * - Draft-07 tuple syntax (`items` as array + `additionalItems`) is
1686
+ * converted to 2020-12 form (`prefixItems` + `items`), and vice-versa.
1687
+ * - OpenAPI 3.0 `nullable: true` is expanded into `type` arrays or
1688
+ * `anyOf` unions. The `nullable` keyword is removed.
1689
+ * - OpenAPI 3.0 singular `example` is converted to `examples` (array).
1690
+ * - {@link resolve$ref} only looks up the last segment of the ref path in
1691
+ * the definitions map; it does not follow arbitrary JSON Pointer paths.
1692
+ *
1693
+ * ## Quickstart
1694
+ *
1695
+ * **Example** (Parse a Draft-07 schema and convert to Draft-07 output)
1696
+ *
1697
+ * ```ts
1698
+ * import { JsonSchema } from "effect"
1699
+ *
1700
+ * const raw: JsonSchema.JsonSchema = {
1701
+ * type: "object",
1702
+ * properties: {
1703
+ * name: { type: "string" }
1704
+ * },
1705
+ * required: ["name"]
1706
+ * }
1707
+ *
1708
+ * // Parse into canonical form
1709
+ * const doc = JsonSchema.fromSchemaDraft07(raw)
1710
+ *
1711
+ * // Convert back to Draft-07
1712
+ * const draft07 = JsonSchema.toDocumentDraft07(doc)
1713
+ *
1714
+ * console.log(draft07.dialect) // "draft-07"
1715
+ * console.log(draft07.schema) // { type: "object", properties: { name: { type: "string" } }, required: ["name"] }
1716
+ * ```
1717
+ *
1718
+ * ## See also
1719
+ *
1720
+ * - {@link Document}
1721
+ * - {@link MultiDocument}
1722
+ * - {@link fromSchemaDraft07}
1723
+ * - {@link toDocumentDraft07}
1724
+ * - {@link resolve$ref}
1725
+ *
1397
1726
  * @since 4.0.0
1398
1727
  */
1399
1728
  export * as JsonSchema from "./JsonSchema.ts"
1400
1729
 
1730
+ /**
1731
+ * @since 3.8.0
1732
+ */
1733
+ export * as Latch from "./Latch.ts"
1734
+
1401
1735
  /**
1402
1736
  * A `Layer<ROut, E, RIn>` describes how to build one or more services in your
1403
1737
  * application. Services can be injected into effects via
@@ -2103,11 +2437,100 @@ export * as NullOr from "./NullOr.ts"
2103
2437
  export * as Number from "./Number.ts"
2104
2438
 
2105
2439
  /**
2106
- * Design: "pretty good" persistency.
2107
- * Real updates copy only the path; unrelated branches keep referential identity.
2108
- * No-op updates may still allocate a new root/parents — callers must not rely on identity for no-ops.
2440
+ * Composable, immutable accessors for reading and updating nested data
2441
+ * structures without mutation.
2442
+ *
2443
+ * **Mental model**
2444
+ *
2445
+ * - **Optic** — a first-class reference to a piece inside a larger structure.
2446
+ * Compose optics to reach deeply nested values.
2447
+ * - **Iso** — lossless two-way conversion (`get`/`set`) between `S` and `A`.
2448
+ * Extends both {@link Lens} and {@link Prism}.
2449
+ * - **Lens** — focuses on exactly one part of `S`. `get` always succeeds;
2450
+ * `replace` needs the original `S` to produce the updated whole.
2451
+ * - **Prism** — focuses on a part that may not be present (e.g. a union
2452
+ * variant). `getResult` can fail; `set` builds a new `S` from `A` alone.
2453
+ * - **Optional** — the most general optic: both reading and writing can fail.
2454
+ * - **Traversal** — focuses on zero or more elements of an array-like
2455
+ * structure. Technically `Optional<S, ReadonlyArray<A>>`.
2456
+ * - **Hierarchy** (strongest → weakest):
2457
+ * `Iso > Lens | Prism > Optional`. Composing a weaker optic with any other
2458
+ * produces the weaker kind.
2459
+ *
2460
+ * **Common tasks**
2461
+ *
2462
+ * - Start a chain → {@link id} (identity iso)
2463
+ * - Drill into a struct key → `.key("name")` / `.optionalKey("name")`
2464
+ * - Drill into a key that may not exist → `.at("name")`
2465
+ * - Narrow a tagged union → `.tag("MyVariant")`
2466
+ * - Narrow by type guard → `.refine(guard)`
2467
+ * - Add validation → `.check(Schema.isGreaterThan(0))`
2468
+ * - Filter out `undefined` → `.notUndefined()`
2469
+ * - Pick/omit struct keys → `.pick(["a","b"])` / `.omit(["c"])`
2470
+ * - Traverse array elements → `.forEach(el => el.key("field"))`
2471
+ * - Build an iso → {@link makeIso}
2472
+ * - Build a lens → {@link makeLens}
2473
+ * - Build a prism → {@link makePrism}, {@link fromChecks}
2474
+ * - Build an optional → {@link makeOptional}
2475
+ * - Focus into `Option.Some` → {@link some}
2476
+ * - Focus into `Result.Success`/`Failure` → {@link success}, {@link failure}
2477
+ * - Convert record ↔ entries → {@link entries}
2478
+ * - Extract all traversal elements → {@link getAll}
2479
+ *
2480
+ * **Gotchas**
2481
+ *
2482
+ * - Updates are structurally persistent: only nodes on the path are cloned.
2483
+ * Unrelated branches keep referential identity. However, **no-op updates
2484
+ * may still allocate** a new root — do not rely on reference identity to
2485
+ * detect no-ops.
2486
+ * - `replace` silently returns the original `S` when the optic cannot focus
2487
+ * (e.g. wrong tag). Use `replaceResult` for explicit failure.
2488
+ * - `modify` also returns the original `S` on focus failure — it never throws.
2489
+ * - `.key()` and `.optionalKey()` do not work on union types (compile error).
2490
+ * - Only plain objects (`Object.prototype` or `null` prototype) and arrays can
2491
+ * be cloned. Class instances cause a runtime error on `replace`/`modify`.
2492
+ *
2493
+ * **Quickstart**
2494
+ *
2495
+ * **Example** (reading and updating nested state)
2496
+ *
2497
+ * ```ts
2498
+ * import { Optic } from "effect"
2499
+ *
2500
+ * type State = { user: { name: string; age: number } }
2501
+ *
2502
+ * const _age = Optic.id<State>().key("user").key("age")
2503
+ *
2504
+ * const s1: State = { user: { name: "Alice", age: 30 } }
2505
+ *
2506
+ * // Read
2507
+ * console.log(_age.get(s1))
2508
+ * // Output: 30
2509
+ *
2510
+ * // Update immutably
2511
+ * const s2 = _age.replace(31, s1)
2512
+ * console.log(s2)
2513
+ * // Output: { user: { name: "Alice", age: 31 } }
2514
+ *
2515
+ * // Modify with a function
2516
+ * const s3 = _age.modify((n) => n + 1)(s1)
2517
+ * console.log(s3)
2518
+ * // Output: { user: { name: "Alice", age: 31 } }
2519
+ *
2520
+ * // Referential identity is preserved for unrelated branches
2521
+ * console.log(s2.user !== s1.user)
2522
+ * // Output: true (on the path)
2523
+ * ```
2524
+ *
2525
+ * **See also**
2526
+ *
2527
+ * - {@link id} — entry point for optic chains
2528
+ * - {@link Lens} / {@link Prism} / {@link Optional} — core optic types
2529
+ * - {@link Traversal} / {@link getAll} — multi-focus optics
2530
+ * - {@link some} / {@link success} / {@link failure} — built-in prisms
2109
2531
  *
2110
2532
  * @since 4.0.0
2533
+ * @module
2111
2534
  */
2112
2535
  export * as Optic from "./Optic.ts"
2113
2536
 
@@ -2269,12 +2692,6 @@ export * as Order from "./Order.ts"
2269
2692
  */
2270
2693
  export * as Ordering from "./Ordering.ts"
2271
2694
 
2272
- /**
2273
- * @since 3.19.4
2274
- * @experimental
2275
- */
2276
- export * as PartitionedSemaphore from "./PartitionedSemaphore.ts"
2277
-
2278
2695
  /**
2279
2696
  * @since 4.0.0
2280
2697
  */
@@ -2451,6 +2868,71 @@ export * as Redactable from "./Redactable.ts"
2451
2868
  export * as Redacted from "./Redacted.ts"
2452
2869
 
2453
2870
  /**
2871
+ * A module for reducing collections of values into a single result.
2872
+ *
2873
+ * A `Reducer<A>` extends {@link Combiner.Combiner} by adding an
2874
+ * `initialValue` (identity element) and a `combineAll` method that folds an
2875
+ * entire collection. Think `Array.prototype.reduce`, but packaged as a
2876
+ * reusable, composable value.
2877
+ *
2878
+ * ## Mental model
2879
+ *
2880
+ * - **Reducer** – a {@link Combiner.Combiner} plus an `initialValue` and a
2881
+ * `combineAll` method.
2882
+ * - **initialValue** – the neutral/identity element. Combining any value with
2883
+ * `initialValue` should return the original value unchanged (e.g. `0` for
2884
+ * addition, `""` for string concatenation).
2885
+ * - **combineAll** – folds an `Iterable<A>` starting from `initialValue`.
2886
+ * When omitted from {@link make}, a default left-to-right fold is used.
2887
+ * - **Purity** – all reducers produced by this module are pure; they never
2888
+ * mutate their arguments.
2889
+ * - **Composability** – reducers can be lifted into `Option`, `Struct`,
2890
+ * `Tuple`, `Record`, and other container types via helpers in those modules.
2891
+ * - **Subtype of Combiner** – every `Reducer` is also a valid
2892
+ * `Combiner`, so you can pass a `Reducer` anywhere a `Combiner` is
2893
+ * expected.
2894
+ *
2895
+ * ## Common tasks
2896
+ *
2897
+ * - Create a reducer from a combine function and initial value → {@link make}
2898
+ * - Swap argument order → {@link flip}
2899
+ * - Combine two values without an initial value → use {@link Combiner.Combiner}
2900
+ * instead
2901
+ *
2902
+ * ## Gotchas
2903
+ *
2904
+ * - `combineAll` on an empty iterable returns `initialValue`, not an error.
2905
+ * - The default `combineAll` folds left-to-right. If your `combine` is not
2906
+ * associative, order matters. Pass a custom `combineAll` to {@link make} if
2907
+ * you need different traversal or short-circuiting.
2908
+ * - A `Reducer` is also a valid `Combiner` — but a `Combiner` is *not* a
2909
+ * `Reducer` (it lacks `initialValue`).
2910
+ *
2911
+ * ## Quickstart
2912
+ *
2913
+ * **Example** (summing a list of numbers)
2914
+ *
2915
+ * ```ts
2916
+ * import { Reducer } from "effect"
2917
+ *
2918
+ * const Sum = Reducer.make<number>((a, b) => a + b, 0)
2919
+ *
2920
+ * console.log(Sum.combine(3, 4))
2921
+ * // Output: 7
2922
+ *
2923
+ * console.log(Sum.combineAll([1, 2, 3, 4]))
2924
+ * // Output: 10
2925
+ *
2926
+ * console.log(Sum.combineAll([]))
2927
+ * // Output: 0
2928
+ * ```
2929
+ *
2930
+ * ## See also
2931
+ *
2932
+ * - {@link make} – the primary constructor
2933
+ * - {@link Reducer} – the core interface
2934
+ * - {@link Combiner.Combiner} – the parent interface (no `initialValue`)
2935
+ *
2454
2936
  * @since 4.0.0
2455
2937
  */
2456
2938
  export * as Reducer from "./Reducer.ts"
@@ -3137,6 +3619,11 @@ export * as ScopedCache from "./ScopedCache.ts"
3137
3619
  */
3138
3620
  export * as ScopedRef from "./ScopedRef.ts"
3139
3621
 
3622
+ /**
3623
+ * @since 2.0.0
3624
+ */
3625
+ export * as Semaphore from "./Semaphore.ts"
3626
+
3140
3627
  /**
3141
3628
  * This module provides a data structure called `ServiceMap` that can be used
3142
3629
  * for dependency injection in effectful programs. It is essentially a table
@@ -70,7 +70,7 @@ export const PipeInspectableProto = {
70
70
  return { ...this }
71
71
  },
72
72
  toString() {
73
- return format(this, { ignoreToString: true })
73
+ return format(this.toJSON(), { ignoreToString: true, space: 2 })
74
74
  },
75
75
  [NodeInspectSymbol]() {
76
76
  return this.toJSON()
@@ -102,6 +102,14 @@ export const YieldableProto = {
102
102
  }
103
103
  }
104
104
 
105
+ /** @internal */
106
+ export const YieldableErrorProto = {
107
+ ...YieldableProto,
108
+ pipe() {
109
+ return pipeArguments(this, arguments)
110
+ }
111
+ }
112
+
105
113
  /** @internal */
106
114
  export const EffectProto = {
107
115
  [EffectTypeId]: effectVariance,
@@ -581,13 +589,13 @@ export const YieldableError: new(
581
589
  return exitFail(this)
582
590
  }
583
591
  }
584
- Object.assign(YieldableError.prototype, YieldableProto)
592
+ Object.assign(YieldableError.prototype, YieldableErrorProto)
585
593
  return YieldableError as any
586
594
  })()
587
595
 
588
596
  /** @internal */
589
597
  export const Error: new<A extends Record<string, any> = {}>(
590
- args: Types.Equals<A, {}> extends true ? void : { readonly [P in keyof A]: A[P] }
598
+ args: Types.VoidIfEmpty<{ readonly [P in keyof A]: A[P] }>
591
599
  ) => Cause.YieldableError & Readonly<A> = (function() {
592
600
  const plainArgsSymbol = Symbol.for("effect/Data/Error/plainArgs")
593
601
  return class Base extends YieldableError {
@@ -611,8 +619,7 @@ export const Error: new<A extends Record<string, any> = {}>(
611
619
  export const TaggedError = <Tag extends string>(
612
620
  tag: Tag
613
621
  ): new<A extends Record<string, any> = {}>(
614
- args: Types.Equals<A, {}> extends true ? void
615
- : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }
622
+ args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>
616
623
  ) => Cause.YieldableError & { readonly _tag: Tag } & Readonly<A> => {
617
624
  class Base extends Error<{}> {
618
625
  readonly _tag = tag