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/Effect.ts CHANGED
@@ -84,7 +84,7 @@ import * as internalRequest from "./internal/request.ts"
84
84
  import * as internalSchedule from "./internal/schedule.ts"
85
85
  import type * as Layer from "./Layer.ts"
86
86
  import type { Logger } from "./Logger.ts"
87
- import type { LogLevel } from "./LogLevel.ts"
87
+ import type { Severity } from "./LogLevel.ts"
88
88
  import * as Metric from "./Metric.ts"
89
89
  import type { Option } from "./Option.ts"
90
90
  import type { Pipeable } from "./Pipeable.ts"
@@ -119,6 +119,7 @@ import type {
119
119
  NoInfer,
120
120
  ReasonOf,
121
121
  ReasonTags,
122
+ Simplify,
122
123
  Tags,
123
124
  unassigned
124
125
  } from "./Types.ts"
@@ -852,6 +853,214 @@ export const partition: {
852
853
  ): Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
853
854
  } = internal.partition
854
855
 
856
+ /**
857
+ * Applies an effectful function to each element and accumulates all failures.
858
+ *
859
+ * This function always evaluates every element. If at least one effect fails,
860
+ * all failures are returned as a non-empty array and successes are discarded.
861
+ * If all effects succeed, it returns all collected successes.
862
+ *
863
+ * Use `discard: true` to ignore successful values while still validating all
864
+ * elements.
865
+ *
866
+ * @example
867
+ * ```ts
868
+ * import { Effect } from "effect"
869
+ *
870
+ * const program = Effect.validate([0, 1, 2, 3], (n) =>
871
+ * n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
872
+ * )
873
+ *
874
+ * Effect.runPromiseExit(program).then(console.log)
875
+ * // {
876
+ * // _id: 'Exit',
877
+ * // _tag: 'Failure',
878
+ * // cause: {
879
+ * // _id: 'Cause',
880
+ * // reasons: [
881
+ * // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
882
+ * // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
883
+ * // ]
884
+ * // }
885
+ * // }
886
+ * ```
887
+ *
888
+ * @since 4.0.0
889
+ * @category Error Accumulation
890
+ */
891
+ export const validate: {
892
+ /**
893
+ * Applies an effectful function to each element and accumulates all failures.
894
+ *
895
+ * This function always evaluates every element. If at least one effect fails,
896
+ * all failures are returned as a non-empty array and successes are discarded.
897
+ * If all effects succeed, it returns all collected successes.
898
+ *
899
+ * Use `discard: true` to ignore successful values while still validating all
900
+ * elements.
901
+ *
902
+ * @example
903
+ * ```ts
904
+ * import { Effect } from "effect"
905
+ *
906
+ * const program = Effect.validate([0, 1, 2, 3], (n) =>
907
+ * n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
908
+ * )
909
+ *
910
+ * Effect.runPromiseExit(program).then(console.log)
911
+ * // {
912
+ * // _id: 'Exit',
913
+ * // _tag: 'Failure',
914
+ * // cause: {
915
+ * // _id: 'Cause',
916
+ * // reasons: [
917
+ * // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
918
+ * // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
919
+ * // ]
920
+ * // }
921
+ * // }
922
+ * ```
923
+ *
924
+ * @since 4.0.0
925
+ * @category Error Accumulation
926
+ */
927
+ <A, B, E, R>(
928
+ f: (a: A, i: number) => Effect<B, E, R>,
929
+ options?: {
930
+ readonly concurrency?: Concurrency | undefined
931
+ readonly discard?: false | undefined
932
+ } | undefined
933
+ ): (elements: Iterable<A>) => Effect<Array<B>, Arr.NonEmptyArray<E>, R>
934
+ /**
935
+ * Applies an effectful function to each element and accumulates all failures.
936
+ *
937
+ * This function always evaluates every element. If at least one effect fails,
938
+ * all failures are returned as a non-empty array and successes are discarded.
939
+ * If all effects succeed, it returns all collected successes.
940
+ *
941
+ * Use `discard: true` to ignore successful values while still validating all
942
+ * elements.
943
+ *
944
+ * @example
945
+ * ```ts
946
+ * import { Effect } from "effect"
947
+ *
948
+ * const program = Effect.validate([0, 1, 2, 3], (n) =>
949
+ * n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
950
+ * )
951
+ *
952
+ * Effect.runPromiseExit(program).then(console.log)
953
+ * // {
954
+ * // _id: 'Exit',
955
+ * // _tag: 'Failure',
956
+ * // cause: {
957
+ * // _id: 'Cause',
958
+ * // reasons: [
959
+ * // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
960
+ * // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
961
+ * // ]
962
+ * // }
963
+ * // }
964
+ * ```
965
+ *
966
+ * @since 4.0.0
967
+ * @category Error Accumulation
968
+ */
969
+ <A, B, E, R>(
970
+ f: (a: A, i: number) => Effect<B, E, R>,
971
+ options: {
972
+ readonly concurrency?: Concurrency | undefined
973
+ readonly discard: true
974
+ }
975
+ ): (elements: Iterable<A>) => Effect<void, Arr.NonEmptyArray<E>, R>
976
+ /**
977
+ * Applies an effectful function to each element and accumulates all failures.
978
+ *
979
+ * This function always evaluates every element. If at least one effect fails,
980
+ * all failures are returned as a non-empty array and successes are discarded.
981
+ * If all effects succeed, it returns all collected successes.
982
+ *
983
+ * Use `discard: true` to ignore successful values while still validating all
984
+ * elements.
985
+ *
986
+ * @example
987
+ * ```ts
988
+ * import { Effect } from "effect"
989
+ *
990
+ * const program = Effect.validate([0, 1, 2, 3], (n) =>
991
+ * n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
992
+ * )
993
+ *
994
+ * Effect.runPromiseExit(program).then(console.log)
995
+ * // {
996
+ * // _id: 'Exit',
997
+ * // _tag: 'Failure',
998
+ * // cause: {
999
+ * // _id: 'Cause',
1000
+ * // reasons: [
1001
+ * // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
1002
+ * // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
1003
+ * // ]
1004
+ * // }
1005
+ * // }
1006
+ * ```
1007
+ *
1008
+ * @since 4.0.0
1009
+ * @category Error Accumulation
1010
+ */
1011
+ <A, B, E, R>(
1012
+ elements: Iterable<A>,
1013
+ f: (a: A, i: number) => Effect<B, E, R>,
1014
+ options?: {
1015
+ readonly concurrency?: Concurrency | undefined
1016
+ readonly discard?: false | undefined
1017
+ } | undefined
1018
+ ): Effect<Array<B>, Arr.NonEmptyArray<E>, R>
1019
+ /**
1020
+ * Applies an effectful function to each element and accumulates all failures.
1021
+ *
1022
+ * This function always evaluates every element. If at least one effect fails,
1023
+ * all failures are returned as a non-empty array and successes are discarded.
1024
+ * If all effects succeed, it returns all collected successes.
1025
+ *
1026
+ * Use `discard: true` to ignore successful values while still validating all
1027
+ * elements.
1028
+ *
1029
+ * @example
1030
+ * ```ts
1031
+ * import { Effect } from "effect"
1032
+ *
1033
+ * const program = Effect.validate([0, 1, 2, 3], (n) =>
1034
+ * n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
1035
+ * )
1036
+ *
1037
+ * Effect.runPromiseExit(program).then(console.log)
1038
+ * // {
1039
+ * // _id: 'Exit',
1040
+ * // _tag: 'Failure',
1041
+ * // cause: {
1042
+ * // _id: 'Cause',
1043
+ * // reasons: [
1044
+ * // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
1045
+ * // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
1046
+ * // ]
1047
+ * // }
1048
+ * // }
1049
+ * ```
1050
+ *
1051
+ * @since 4.0.0
1052
+ * @category Error Accumulation
1053
+ */
1054
+ <A, B, E, R>(
1055
+ elements: Iterable<A>,
1056
+ f: (a: A, i: number) => Effect<B, E, R>,
1057
+ options: {
1058
+ readonly concurrency?: Concurrency | undefined
1059
+ readonly discard: true
1060
+ }
1061
+ ): Effect<void, Arr.NonEmptyArray<E>, R>
1062
+ } = internal.validate
1063
+
855
1064
  /**
856
1065
  * Executes an effectful operation for each element in an `Iterable`.
857
1066
  *
@@ -1511,6 +1720,103 @@ export const callback: <A, E = never, R = never>(
1511
1720
  */
1512
1721
  export const never: Effect<never> = internal.never
1513
1722
 
1723
+ /**
1724
+ * An `Effect` containing an empty record `{}`, used as the starting point for
1725
+ * do notation chains.
1726
+ *
1727
+ * @example
1728
+ * ```ts
1729
+ * import { Effect } from "effect"
1730
+ * import { pipe } from "effect/Function"
1731
+ *
1732
+ * const program = pipe(
1733
+ * Effect.Do,
1734
+ * Effect.bind("x", () => Effect.succeed(2)),
1735
+ * Effect.bind("y", ({ x }) => Effect.succeed(x + 1)),
1736
+ * Effect.let("sum", ({ x, y }) => x + y)
1737
+ * )
1738
+ * ```
1739
+ *
1740
+ * @since 4.0.0
1741
+ * @category Do notation
1742
+ */
1743
+ export const Do: Effect<{}> = internal.Do
1744
+
1745
+ /**
1746
+ * Gives a name to the success value of an `Effect`, creating a single-key
1747
+ * record used in do notation pipelines.
1748
+ *
1749
+ * @since 4.0.0
1750
+ * @category Do notation
1751
+ */
1752
+ export const bindTo: {
1753
+ /**
1754
+ * Gives a name to the success value of an `Effect`, creating a single-key
1755
+ * record used in do notation pipelines.
1756
+ *
1757
+ * @since 4.0.0
1758
+ * @category Do notation
1759
+ */
1760
+ <N extends string>(name: N): <A, E, R>(self: Effect<A, E, R>) => Effect<{ [K in N]: A }, E, R>
1761
+ /**
1762
+ * Gives a name to the success value of an `Effect`, creating a single-key
1763
+ * record used in do notation pipelines.
1764
+ *
1765
+ * @since 4.0.0
1766
+ * @category Do notation
1767
+ */
1768
+ <A, E, R, N extends string>(self: Effect<A, E, R>, name: N): Effect<{ [K in N]: A }, E, R>
1769
+ } = internal.bindTo
1770
+
1771
+ const let_: {
1772
+ <N extends string, A extends Record<string, any>, B>(
1773
+ name: N,
1774
+ f: (a: NoInfer<A>) => B
1775
+ ): <E, R>(
1776
+ self: Effect<A, E, R>
1777
+ ) => Effect<Simplify<Omit<A, N> & Record<N, B>>, E, R>
1778
+ <A extends Record<string, any>, E, R, B, N extends string>(
1779
+ self: Effect<A, E, R>,
1780
+ name: N,
1781
+ f: (a: NoInfer<A>) => B
1782
+ ): Effect<Simplify<Omit<A, N> & Record<N, B>>, E, R>
1783
+ } = internal.let
1784
+
1785
+ export {
1786
+ /**
1787
+ * Adds a computed plain value to the do notation record.
1788
+ *
1789
+ * @since 4.0.0
1790
+ * @category Do notation
1791
+ */
1792
+ let_ as let
1793
+ }
1794
+
1795
+ /**
1796
+ * Adds an `Effect` value to the do notation record under a given name.
1797
+ *
1798
+ * @since 4.0.0
1799
+ * @category Do notation
1800
+ */
1801
+ export const bind: {
1802
+ /**
1803
+ * Adds an `Effect` value to the do notation record under a given name.
1804
+ *
1805
+ * @since 4.0.0
1806
+ * @category Do notation
1807
+ */
1808
+ <N extends string, A extends Record<string, any>, B, E2, R2>(name: N, f: (a: NoInfer<A>) => Effect<B, E2, R2>): <E, R>(
1809
+ self: Effect<A, E, R>
1810
+ ) => Effect<Simplify<Omit<A, N> & Record<N, B>>, E | E2, R | R2>
1811
+ /**
1812
+ * Adds an `Effect` value to the do notation record under a given name.
1813
+ *
1814
+ * @since 4.0.0
1815
+ * @category Do notation
1816
+ */
1817
+ <A extends Record<string, any>, E, R, B, E2, R2, N extends string>(self: Effect<A, E, R>, name: N, f: (a: NoInfer<A>) => Effect<B, E2, R2>): Effect<Simplify<Omit<A, N> & Record<N, B>>, E | E2, R | R2>
1818
+ } = internal.bind
1819
+
1514
1820
  /**
1515
1821
  * Provides a way to write effectful code using generator functions, simplifying
1516
1822
  * control flow and error handling.
@@ -5124,6 +5430,36 @@ export const catchIf: {
5124
5430
  ): Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
5125
5431
  } = internal.catchIf
5126
5432
 
5433
+ /**
5434
+ * Catches `NoSuchElementError` failures and converts them to `Option.none`.
5435
+ *
5436
+ * Success values become `Option.some`, `NoSuchElementError` becomes
5437
+ * `Option.none`, and all other errors are preserved.
5438
+ *
5439
+ * @example
5440
+ * ```ts
5441
+ * import { Effect, Option } from "effect"
5442
+ *
5443
+ * const some = Effect.fromNullishOr(1).pipe(Effect.catchNoSuchElement)
5444
+ * const none = Effect.fromNullishOr(null).pipe(Effect.catchNoSuchElement)
5445
+ *
5446
+ * Effect.runPromise(some).then(console.log) // { _id: 'Option', _tag: 'Some', value: 1 }
5447
+ * Effect.runPromise(none).then(console.log) // { _id: 'Option', _tag: 'None' }
5448
+ * ```
5449
+ *
5450
+ * **Previously Known As**
5451
+ *
5452
+ * This API replaces the following from Effect 3.x:
5453
+ *
5454
+ * - `Effect.optionFromOptional`
5455
+ *
5456
+ * @since 2.0.0
5457
+ * @category Error Handling
5458
+ */
5459
+ export const catchNoSuchElement: <A, E, R>(
5460
+ self: Effect<A, E, R>
5461
+ ) => Effect<Option<A>, Exclude<E, Cause.NoSuchElementError>, R> = internal.catchNoSuchElement
5462
+
5127
5463
  /**
5128
5464
  * Recovers from specific failures based on a predicate.
5129
5465
  *
@@ -6807,14 +7143,14 @@ export const sandbox: <A, E, R>(
6807
7143
  */
6808
7144
  export const ignore: <
6809
7145
  Arg extends Effect<any, any, any> | {
6810
- readonly log?: boolean | LogLevel | undefined
7146
+ readonly log?: boolean | Severity | undefined
6811
7147
  } | undefined = {
6812
- readonly log?: boolean | LogLevel | undefined
7148
+ readonly log?: boolean | Severity | undefined
6813
7149
  }
6814
7150
  >(
6815
7151
  effectOrOptions?: Arg,
6816
7152
  options?: {
6817
- readonly log?: boolean | LogLevel | undefined
7153
+ readonly log?: boolean | Severity | undefined
6818
7154
  } | undefined
6819
7155
  ) => [Arg] extends [Effect<infer _A, infer _E, infer _R>] ? Effect<void, never, _R>
6820
7156
  : <A, E, R>(self: Effect<A, E, R>) => Effect<void, never, R> = internal.ignore
@@ -6839,14 +7175,14 @@ export const ignore: <
6839
7175
  */
6840
7176
  export const ignoreCause: <
6841
7177
  Arg extends Effect<any, any, any> | {
6842
- readonly log?: boolean | LogLevel | undefined
7178
+ readonly log?: boolean | Severity | undefined
6843
7179
  } | undefined = {
6844
- readonly log?: boolean | LogLevel | undefined
7180
+ readonly log?: boolean | Severity | undefined
6845
7181
  }
6846
7182
  >(
6847
7183
  effectOrOptions?: Arg,
6848
7184
  options?: {
6849
- readonly log?: boolean | LogLevel | undefined
7185
+ readonly log?: boolean | Severity | undefined
6850
7186
  } | undefined
6851
7187
  ) => [Arg] extends [Effect<infer _A, infer _E, infer _R>] ? Effect<void, never, _R>
6852
7188
  : <A, E, R>(self: Effect<A, E, R>) => Effect<void, never, R> = internal.ignoreCause
@@ -6953,6 +7289,25 @@ export const withExecutionPlan: {
6953
7289
  ): Effect<A, E | PlanE, Exclude<R, Provides> | PlanR>
6954
7290
  } = internalExecutionPlan.withExecutionPlan
6955
7291
 
7292
+ /**
7293
+ * Runs an effect and reports any errors to the configured `ErrorReporter`s.
7294
+ *
7295
+ * If the `defectsOnly` option is set to `true`, only defects (unrecoverable
7296
+ * errors) will be reported, while regular failures will be ignored.
7297
+ *
7298
+ * @since 4.0.0
7299
+ * @category Error Handling
7300
+ */
7301
+ export const withErrorReporting: <
7302
+ Arg extends Effect<any, any, any> | { readonly defectsOnly?: boolean | undefined } | undefined = {
7303
+ readonly defectsOnly?: boolean | undefined
7304
+ }
7305
+ >(
7306
+ effectOrOptions: Arg,
7307
+ options?: { readonly defectsOnly?: boolean | undefined } | undefined
7308
+ ) => [Arg] extends [Effect<infer _A, infer _E, infer _R>] ? Arg : <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R> =
7309
+ internal.withErrorReporting
7310
+
6956
7311
  // -----------------------------------------------------------------------------
6957
7312
  // Fallback
6958
7313
  // -----------------------------------------------------------------------------
@@ -7194,7 +7549,7 @@ export const timeout: {
7194
7549
  * @since 2.0.0
7195
7550
  * @category Delays & Timeouts
7196
7551
  */
7197
- (duration: Duration.DurationInput): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | Cause.TimeoutError, R>
7552
+ (duration: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | Cause.TimeoutError, R>
7198
7553
  // -----------------------------------------------------------------------------
7199
7554
  // Delays & timeouts
7200
7555
  // -----------------------------------------------------------------------------
@@ -7245,7 +7600,7 @@ export const timeout: {
7245
7600
  * @since 2.0.0
7246
7601
  * @category Delays & Timeouts
7247
7602
  */
7248
- <A, E, R>(self: Effect<A, E, R>, duration: Duration.DurationInput): Effect<A, E | Cause.TimeoutError, R>
7603
+ <A, E, R>(self: Effect<A, E, R>, duration: Duration.Input): Effect<A, E | Cause.TimeoutError, R>
7249
7604
  } = internal.timeout
7250
7605
 
7251
7606
  /**
@@ -7347,7 +7702,7 @@ export const timeoutOption: {
7347
7702
  * @since 3.1.0
7348
7703
  * @category Delays & Timeouts
7349
7704
  */
7350
- (duration: Duration.DurationInput): <A, E, R>(self: Effect<A, E, R>) => Effect<Option<A>, E, R>
7705
+ (duration: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<Option<A>, E, R>
7351
7706
  /**
7352
7707
  * Handles timeouts by returning an `Option` that represents either the result
7353
7708
  * or a timeout.
@@ -7397,7 +7752,7 @@ export const timeoutOption: {
7397
7752
  * @since 3.1.0
7398
7753
  * @category Delays & Timeouts
7399
7754
  */
7400
- <A, E, R>(self: Effect<A, E, R>, duration: Duration.DurationInput): Effect<Option<A>, E, R>
7755
+ <A, E, R>(self: Effect<A, E, R>, duration: Duration.Input): Effect<Option<A>, E, R>
7401
7756
  } = internal.timeoutOption
7402
7757
 
7403
7758
  /**
@@ -7475,7 +7830,7 @@ export const timeoutOrElse: {
7475
7830
  */
7476
7831
  <A2, E2, R2>(
7477
7832
  options: {
7478
- readonly duration: Duration.DurationInput
7833
+ readonly duration: Duration.Input
7479
7834
  readonly onTimeout: LazyArg<Effect<A2, E2, R2>>
7480
7835
  }
7481
7836
  ): <A, E, R>(self: Effect<A, E, R>) => Effect<A | A2, E | E2, R | R2>
@@ -7518,7 +7873,7 @@ export const timeoutOrElse: {
7518
7873
  <A, E, R, A2, E2, R2>(
7519
7874
  self: Effect<A, E, R>,
7520
7875
  options: {
7521
- readonly duration: Duration.DurationInput
7876
+ readonly duration: Duration.Input
7522
7877
  readonly onTimeout: LazyArg<Effect<A2, E2, R2>>
7523
7878
  }
7524
7879
  ): Effect<A | A2, E | E2, R | R2>
@@ -7565,7 +7920,7 @@ export const delay: {
7565
7920
  * @since 2.0.0
7566
7921
  * @category Delays & Timeouts
7567
7922
  */
7568
- (duration: Duration.DurationInput): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
7923
+ (duration: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
7569
7924
  /**
7570
7925
  * Returns an effect that is delayed from this effect by the specified
7571
7926
  * `Duration`.
@@ -7586,7 +7941,7 @@ export const delay: {
7586
7941
  * @since 2.0.0
7587
7942
  * @category Delays & Timeouts
7588
7943
  */
7589
- <A, E, R>(self: Effect<A, E, R>, duration: Duration.DurationInput): Effect<A, E, R>
7944
+ <A, E, R>(self: Effect<A, E, R>, duration: Duration.Input): Effect<A, E, R>
7590
7945
  } = internal.delay
7591
7946
 
7592
7947
  /**
@@ -7611,7 +7966,7 @@ export const delay: {
7611
7966
  * @since 2.0.0
7612
7967
  * @category Delays & Timeouts
7613
7968
  */
7614
- export const sleep: (duration: Duration.DurationInput) => Effect<void> = internal.sleep
7969
+ export const sleep: (duration: Duration.Input) => Effect<void> = internal.sleep
7615
7970
 
7616
7971
  /**
7617
7972
  * Measures the runtime of an effect and returns the duration with its result.
@@ -12242,7 +12597,7 @@ export const cachedWithTTL: {
12242
12597
  * @since 2.0.0
12243
12598
  * @category Caching
12244
12599
  */
12245
- (timeToLive: Duration.DurationInput): <A, E, R>(self: Effect<A, E, R>) => Effect<Effect<A, E, R>>
12600
+ (timeToLive: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<Effect<A, E, R>>
12246
12601
  /**
12247
12602
  * Returns an effect that caches its result for a specified `Duration`,
12248
12603
  * known as "timeToLive" (TTL).
@@ -12309,7 +12664,7 @@ export const cachedWithTTL: {
12309
12664
  * @since 2.0.0
12310
12665
  * @category Caching
12311
12666
  */
12312
- <A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.DurationInput): Effect<Effect<A, E, R>>
12667
+ <A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.Input): Effect<Effect<A, E, R>>
12313
12668
  } = internal.cachedWithTTL
12314
12669
 
12315
12670
  /**
@@ -12451,7 +12806,7 @@ export const cachedInvalidateWithTTL: {
12451
12806
  * @since 2.0.0
12452
12807
  * @category Caching
12453
12808
  */
12454
- (timeToLive: Duration.DurationInput): <A, E, R>(self: Effect<A, E, R>) => Effect<[Effect<A, E, R>, Effect<void>]>
12809
+ (timeToLive: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<[Effect<A, E, R>, Effect<void>]>
12455
12810
  /**
12456
12811
  * Caches an effect's result for a specified duration and allows manual
12457
12812
  * invalidation before expiration.
@@ -12521,7 +12876,7 @@ export const cachedInvalidateWithTTL: {
12521
12876
  * @since 2.0.0
12522
12877
  * @category Caching
12523
12878
  */
12524
- <A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.DurationInput): Effect<[Effect<A, E, R>, Effect<void>]>
12879
+ <A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.Input): Effect<[Effect<A, E, R>, Effect<void>]>
12525
12880
  } = internal.cachedInvalidateWithTTL
12526
12881
 
12527
12882
  // -----------------------------------------------------------------------------
@@ -12747,252 +13102,6 @@ export const interruptibleMask: <A, E, R>(
12747
13102
  ) => Effect<A, E, R>
12748
13103
  ) => Effect<A, E, R> = internal.interruptibleMask
12749
13104
 
12750
- // -----------------------------------------------------------------------------
12751
- // Semaphore
12752
- // -----------------------------------------------------------------------------
12753
-
12754
- /**
12755
- * @category Semaphore
12756
- * @since 2.0.0
12757
- * @example
12758
- * ```ts
12759
- * import { Effect } from "effect"
12760
- *
12761
- * // Create and use a semaphore for controlling concurrent access
12762
- * const program = Effect.gen(function*() {
12763
- * const semaphore = yield* Effect.makeSemaphore(2)
12764
- *
12765
- * return yield* semaphore.withPermits(1)(
12766
- * Effect.succeed("Resource accessed")
12767
- * )
12768
- * })
12769
- * ```
12770
- */
12771
- export interface Semaphore {
12772
- /**
12773
- * Adjusts the number of permits available in the semaphore.
12774
- */
12775
- resize(permits: number): Effect<void>
12776
-
12777
- /**
12778
- * Runs an effect with the given number of permits and releases the permits
12779
- * when the effect completes.
12780
- *
12781
- * **Details**
12782
- *
12783
- * This function acquires the specified number of permits before executing
12784
- * the provided effect. Once the effect finishes, the permits are released.
12785
- * If insufficient permits are available, the function will wait until they
12786
- * are released by other tasks.
12787
- */
12788
- withPermits(permits: number): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
12789
-
12790
- /**
12791
- * Runs an effect with the given number of permits and releases the permits
12792
- * when the effect completes.
12793
- *
12794
- * **Details**
12795
- *
12796
- * This function acquires the specified number of permits before executing
12797
- * the provided effect. Once the effect finishes, the permits are released.
12798
- * If insufficient permits are available, the function will wait until they
12799
- * are released by other tasks.
12800
- */
12801
- withPermit<A, E, R>(self: Effect<A, E, R>): Effect<A, E, R>
12802
-
12803
- /**
12804
- * Runs an effect only if the specified number of permits are immediately
12805
- * available.
12806
- *
12807
- * **Details**
12808
- *
12809
- * This function attempts to acquire the specified number of permits. If they
12810
- * are available, it runs the effect and releases the permits after the effect
12811
- * completes. If permits are not available, the effect does not execute, and
12812
- * the result is `Option.none`.
12813
- */
12814
- withPermitsIfAvailable(permits: number): <A, E, R>(self: Effect<A, E, R>) => Effect<Option<A>, E, R>
12815
-
12816
- /**
12817
- * Acquires the specified number of permits and returns the resulting
12818
- * available permits, suspending the task if they are not yet available.
12819
- * Concurrent pending `take` calls are processed in a first-in, first-out manner.
12820
- */
12821
- take(permits: number): Effect<number>
12822
-
12823
- /**
12824
- * Releases the specified number of permits and returns the resulting
12825
- * available permits.
12826
- */
12827
- release(permits: number): Effect<number>
12828
-
12829
- /**
12830
- * Releases all permits held by this semaphore and returns the resulting available permits.
12831
- */
12832
- releaseAll: Effect<number>
12833
- }
12834
-
12835
- /**
12836
- * Unsafely creates a new Semaphore.
12837
- *
12838
- * @example
12839
- * ```ts
12840
- * import { Effect } from "effect"
12841
- *
12842
- * const semaphore = Effect.makeSemaphoreUnsafe(3)
12843
- *
12844
- * const task = (id: number) =>
12845
- * semaphore.withPermits(1)(
12846
- * Effect.gen(function*() {
12847
- * yield* Effect.log(`Task ${id} started`)
12848
- * yield* Effect.sleep("1 second")
12849
- * yield* Effect.log(`Task ${id} completed`)
12850
- * })
12851
- * )
12852
- *
12853
- * // Only 3 tasks can run concurrently
12854
- * const program = Effect.all([
12855
- * task(1),
12856
- * task(2),
12857
- * task(3),
12858
- * task(4),
12859
- * task(5)
12860
- * ], { concurrency: "unbounded" })
12861
- * ```
12862
- *
12863
- * @since 2.0.0
12864
- * @category Semaphore
12865
- */
12866
- export const makeSemaphoreUnsafe: (permits: number) => Semaphore = internal.makeSemaphoreUnsafe
12867
-
12868
- /**
12869
- * Creates a new Semaphore.
12870
- *
12871
- * @example
12872
- * ```ts
12873
- * import { Effect } from "effect"
12874
- *
12875
- * const program = Effect.gen(function*() {
12876
- * const semaphore = yield* Effect.makeSemaphore(2)
12877
- *
12878
- * const task = (id: number) =>
12879
- * semaphore.withPermits(1)(
12880
- * Effect.gen(function*() {
12881
- * yield* Effect.log(`Task ${id} acquired permit`)
12882
- * yield* Effect.sleep("1 second")
12883
- * yield* Effect.log(`Task ${id} releasing permit`)
12884
- * })
12885
- * )
12886
- *
12887
- * // Run 4 tasks, but only 2 can run concurrently
12888
- * yield* Effect.all([task(1), task(2), task(3), task(4)])
12889
- * })
12890
- * ```
12891
- *
12892
- * @since 2.0.0
12893
- * @category Semaphore
12894
- */
12895
- export const makeSemaphore: (permits: number) => Effect<Semaphore> = internal.makeSemaphore
12896
-
12897
- // -----------------------------------------------------------------------------
12898
- // Latch
12899
- // -----------------------------------------------------------------------------
12900
-
12901
- /**
12902
- * @category Latch
12903
- * @since 3.8.0
12904
- * @example
12905
- * ```ts
12906
- * import { Effect } from "effect"
12907
- *
12908
- * // Create and use a latch for coordination between fibers
12909
- * const program = Effect.gen(function*() {
12910
- * const latch = yield* Effect.makeLatch()
12911
- *
12912
- * // Wait for the latch to be opened
12913
- * yield* latch.await
12914
- *
12915
- * return "Latch was opened!"
12916
- * })
12917
- * ```
12918
- */
12919
- export interface Latch {
12920
- /** open the latch, releasing all fibers waiting on it */
12921
- readonly open: Effect<boolean>
12922
- /** open the latch, releasing all fibers waiting on it */
12923
- readonly openUnsafe: () => boolean
12924
- /** release all fibers waiting on the latch, without opening it */
12925
- readonly release: Effect<boolean>
12926
- /** wait for the latch to be opened */
12927
- readonly await: Effect<void>
12928
- /** close the latch */
12929
- readonly close: Effect<boolean>
12930
- /** close the latch */
12931
- readonly closeUnsafe: () => boolean
12932
- /** only run the given effect when the latch is open */
12933
- readonly whenOpen: <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
12934
- }
12935
-
12936
- /**
12937
- * Creates a new Latch.
12938
- *
12939
- * @example
12940
- * ```ts
12941
- * import { Effect } from "effect"
12942
- *
12943
- * const latch = Effect.makeLatchUnsafe(false)
12944
- *
12945
- * const waiter = Effect.gen(function*() {
12946
- * yield* Effect.log("Waiting for latch to open...")
12947
- * yield* latch.await
12948
- * yield* Effect.log("Latch opened! Continuing...")
12949
- * })
12950
- *
12951
- * const opener = Effect.gen(function*() {
12952
- * yield* Effect.sleep("2 seconds")
12953
- * yield* Effect.log("Opening latch...")
12954
- * yield* latch.open
12955
- * })
12956
- *
12957
- * const program = Effect.all([waiter, opener])
12958
- * ```
12959
- *
12960
- * @category Latch
12961
- * @since 3.8.0
12962
- */
12963
- export const makeLatchUnsafe: (open?: boolean | undefined) => Latch = internal.makeLatchUnsafe
12964
-
12965
- /**
12966
- * Creates a new Latch.
12967
- *
12968
- * @example
12969
- * ```ts
12970
- * import { Effect } from "effect"
12971
- *
12972
- * const program = Effect.gen(function*() {
12973
- * const latch = yield* Effect.makeLatch(false)
12974
- *
12975
- * const waiter = Effect.gen(function*() {
12976
- * yield* Effect.log("Waiting for latch to open...")
12977
- * yield* latch.await
12978
- * yield* Effect.log("Latch opened! Continuing...")
12979
- * })
12980
- *
12981
- * const opener = Effect.gen(function*() {
12982
- * yield* Effect.sleep("2 seconds")
12983
- * yield* Effect.log("Opening latch...")
12984
- * yield* latch.open
12985
- * })
12986
- *
12987
- * yield* Effect.all([waiter, opener])
12988
- * })
12989
- * ```
12990
- *
12991
- * @category Latch
12992
- * @since 3.8.0
12993
- */
12994
- export const makeLatch: (open?: boolean | undefined) => Effect<Latch> = internal.makeLatch
12995
-
12996
13105
  // -----------------------------------------------------------------------------
12997
13106
  // Repetition & Recursion
12998
13107
  // -----------------------------------------------------------------------------
@@ -20309,7 +20418,7 @@ export const clockWith: <A, E, R>(
20309
20418
  * @since 2.0.0
20310
20419
  * @category Logging
20311
20420
  */
20312
- export const logWithLevel: (level?: LogLevel) => (...message: ReadonlyArray<any>) => Effect<void> =
20421
+ export const logWithLevel: (level?: Severity) => (...message: ReadonlyArray<any>) => Effect<void> =
20313
20422
  internal.logWithLevel
20314
20423
 
20315
20424
  /**
@@ -22121,8 +22230,8 @@ export const trackDuration: {
22121
22230
  return onExit(self, () => {
22122
22231
  const endTime = clock.currentTimeNanosUnsafe()
22123
22232
  const duration = Duration.subtract(
22124
- Duration.fromDurationInputUnsafe(endTime),
22125
- Duration.fromDurationInputUnsafe(startTime)
22233
+ Duration.fromInputUnsafe(endTime),
22234
+ Duration.fromInputUnsafe(startTime)
22126
22235
  )
22127
22236
  const input = f === undefined ? duration : internalCall(() => f(duration))
22128
22237
  return Metric.update(metric, input as any)