effect 4.0.0-beta.6 → 4.0.0-beta.60

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 (1475) hide show
  1. package/dist/Array.d.ts +213 -385
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +149 -102
  4. package/dist/Array.js.map +1 -1
  5. package/dist/BigDecimal.d.ts +82 -45
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +105 -52
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/BigInt.d.ts +39 -32
  10. package/dist/BigInt.d.ts.map +1 -1
  11. package/dist/BigInt.js +36 -33
  12. package/dist/BigInt.js.map +1 -1
  13. package/dist/Brand.d.ts +3 -5
  14. package/dist/Brand.d.ts.map +1 -1
  15. package/dist/Brand.js +1 -1
  16. package/dist/Brand.js.map +1 -1
  17. package/dist/Cache.d.ts +14 -45
  18. package/dist/Cache.d.ts.map +1 -1
  19. package/dist/Cache.js +21 -47
  20. package/dist/Cache.js.map +1 -1
  21. package/dist/Cause.d.ts +53 -22
  22. package/dist/Cause.d.ts.map +1 -1
  23. package/dist/Cause.js +108 -10
  24. package/dist/Cause.js.map +1 -1
  25. package/dist/Channel.d.ts +166 -48
  26. package/dist/Channel.d.ts.map +1 -1
  27. package/dist/Channel.js +176 -87
  28. package/dist/Channel.js.map +1 -1
  29. package/dist/Chunk.d.ts +112 -304
  30. package/dist/Chunk.d.ts.map +1 -1
  31. package/dist/Chunk.js +56 -88
  32. package/dist/Chunk.js.map +1 -1
  33. package/dist/Clock.d.ts +2 -2
  34. package/dist/Clock.d.ts.map +1 -1
  35. package/dist/Clock.js.map +1 -1
  36. package/dist/Combiner.d.ts +280 -13
  37. package/dist/Combiner.d.ts.map +1 -1
  38. package/dist/Combiner.js +198 -7
  39. package/dist/Combiner.js.map +1 -1
  40. package/dist/Config.d.ts +189 -29
  41. package/dist/Config.d.ts.map +1 -1
  42. package/dist/Config.js +85 -35
  43. package/dist/Config.js.map +1 -1
  44. package/dist/ConfigProvider.d.ts +6 -6
  45. package/dist/ConfigProvider.d.ts.map +1 -1
  46. package/dist/ConfigProvider.js +5 -5
  47. package/dist/ConfigProvider.js.map +1 -1
  48. package/dist/Console.d.ts +2 -2
  49. package/dist/Console.d.ts.map +1 -1
  50. package/dist/Console.js.map +1 -1
  51. package/dist/Context.d.ts +1150 -0
  52. package/dist/Context.d.ts.map +1 -0
  53. package/dist/{ServiceMap.js → Context.js} +181 -165
  54. package/dist/Context.js.map +1 -0
  55. package/dist/Cron.d.ts +11 -7
  56. package/dist/Cron.d.ts.map +1 -1
  57. package/dist/Cron.js +120 -63
  58. package/dist/Cron.js.map +1 -1
  59. package/dist/Data.d.ts +533 -365
  60. package/dist/Data.d.ts.map +1 -1
  61. package/dist/Data.js +125 -73
  62. package/dist/Data.js.map +1 -1
  63. package/dist/DateTime.d.ts +74 -255
  64. package/dist/DateTime.d.ts.map +1 -1
  65. package/dist/DateTime.js +17 -62
  66. package/dist/DateTime.js.map +1 -1
  67. package/dist/Deferred.d.ts +12 -5
  68. package/dist/Deferred.d.ts.map +1 -1
  69. package/dist/Deferred.js +13 -5
  70. package/dist/Deferred.js.map +1 -1
  71. package/dist/Duration.d.ts +74 -40
  72. package/dist/Duration.d.ts.map +1 -1
  73. package/dist/Duration.js +126 -87
  74. package/dist/Duration.js.map +1 -1
  75. package/dist/Effect.d.ts +1391 -927
  76. package/dist/Effect.d.ts.map +1 -1
  77. package/dist/Effect.js +472 -328
  78. package/dist/Effect.js.map +1 -1
  79. package/dist/Effectable.d.ts +29 -0
  80. package/dist/Effectable.d.ts.map +1 -0
  81. package/dist/Effectable.js +31 -0
  82. package/dist/Effectable.js.map +1 -0
  83. package/dist/Encoding.d.ts +1 -1
  84. package/dist/Equal.d.ts +276 -109
  85. package/dist/Equal.d.ts.map +1 -1
  86. package/dist/Equal.js +140 -48
  87. package/dist/Equal.js.map +1 -1
  88. package/dist/Equivalence.d.ts +60 -3
  89. package/dist/Equivalence.d.ts.map +1 -1
  90. package/dist/Equivalence.js +70 -13
  91. package/dist/Equivalence.js.map +1 -1
  92. package/dist/ErrorReporter.d.ts +374 -0
  93. package/dist/ErrorReporter.d.ts.map +1 -0
  94. package/dist/ErrorReporter.js +245 -0
  95. package/dist/ErrorReporter.js.map +1 -0
  96. package/dist/ExecutionPlan.d.ts +6 -6
  97. package/dist/ExecutionPlan.d.ts.map +1 -1
  98. package/dist/ExecutionPlan.js +4 -4
  99. package/dist/ExecutionPlan.js.map +1 -1
  100. package/dist/Exit.d.ts +24 -12
  101. package/dist/Exit.d.ts.map +1 -1
  102. package/dist/Exit.js +8 -4
  103. package/dist/Exit.js.map +1 -1
  104. package/dist/Fiber.d.ts +10 -8
  105. package/dist/Fiber.d.ts.map +1 -1
  106. package/dist/Fiber.js.map +1 -1
  107. package/dist/FiberHandle.d.ts +11 -10
  108. package/dist/FiberHandle.d.ts.map +1 -1
  109. package/dist/FiberHandle.js +12 -11
  110. package/dist/FiberHandle.js.map +1 -1
  111. package/dist/FiberMap.d.ts +22 -21
  112. package/dist/FiberMap.d.ts.map +1 -1
  113. package/dist/FiberMap.js +10 -10
  114. package/dist/FiberMap.js.map +1 -1
  115. package/dist/FiberSet.d.ts +2 -2
  116. package/dist/FiberSet.d.ts.map +1 -1
  117. package/dist/FiberSet.js +4 -4
  118. package/dist/FiberSet.js.map +1 -1
  119. package/dist/FileSystem.d.ts +20 -19
  120. package/dist/FileSystem.d.ts.map +1 -1
  121. package/dist/FileSystem.js +15 -11
  122. package/dist/FileSystem.js.map +1 -1
  123. package/dist/Filter.d.ts +4 -37
  124. package/dist/Filter.d.ts.map +1 -1
  125. package/dist/Filter.js +0 -13
  126. package/dist/Filter.js.map +1 -1
  127. package/dist/Formatter.d.ts +131 -47
  128. package/dist/Formatter.d.ts.map +1 -1
  129. package/dist/Formatter.js +243 -55
  130. package/dist/Formatter.js.map +1 -1
  131. package/dist/Function.d.ts +1 -9
  132. package/dist/Function.d.ts.map +1 -1
  133. package/dist/Function.js +2 -10
  134. package/dist/Function.js.map +1 -1
  135. package/dist/Graph.d.ts +65 -65
  136. package/dist/Graph.d.ts.map +1 -1
  137. package/dist/Graph.js +58 -60
  138. package/dist/Graph.js.map +1 -1
  139. package/dist/Hash.js +1 -1
  140. package/dist/Hash.js.map +1 -1
  141. package/dist/HashMap.d.ts +26 -19
  142. package/dist/HashMap.d.ts.map +1 -1
  143. package/dist/HashMap.js +7 -5
  144. package/dist/HashMap.js.map +1 -1
  145. package/dist/Inspectable.d.ts +0 -4
  146. package/dist/Inspectable.d.ts.map +1 -1
  147. package/dist/Inspectable.js +4 -13
  148. package/dist/Inspectable.js.map +1 -1
  149. package/dist/Iterable.d.ts +50 -50
  150. package/dist/Iterable.d.ts.map +1 -1
  151. package/dist/Iterable.js +106 -34
  152. package/dist/Iterable.js.map +1 -1
  153. package/dist/JsonSchema.d.ts +299 -10
  154. package/dist/JsonSchema.d.ts.map +1 -1
  155. package/dist/JsonSchema.js +323 -4
  156. package/dist/JsonSchema.js.map +1 -1
  157. package/dist/Latch.d.ts +69 -3
  158. package/dist/Latch.d.ts.map +1 -1
  159. package/dist/Latch.js +58 -0
  160. package/dist/Latch.js.map +1 -1
  161. package/dist/Layer.d.ts +599 -379
  162. package/dist/Layer.d.ts.map +1 -1
  163. package/dist/Layer.js +249 -180
  164. package/dist/Layer.js.map +1 -1
  165. package/dist/LayerMap.d.ts +27 -26
  166. package/dist/LayerMap.d.ts.map +1 -1
  167. package/dist/LayerMap.js +21 -18
  168. package/dist/LayerMap.js.map +1 -1
  169. package/dist/LogLevel.d.ts +32 -0
  170. package/dist/LogLevel.d.ts.map +1 -1
  171. package/dist/LogLevel.js +28 -100
  172. package/dist/LogLevel.js.map +1 -1
  173. package/dist/Logger.d.ts +31 -97
  174. package/dist/Logger.d.ts.map +1 -1
  175. package/dist/Logger.js +2 -3
  176. package/dist/Logger.js.map +1 -1
  177. package/dist/ManagedRuntime.d.ts +8 -8
  178. package/dist/ManagedRuntime.d.ts.map +1 -1
  179. package/dist/ManagedRuntime.js +34 -25
  180. package/dist/ManagedRuntime.js.map +1 -1
  181. package/dist/Metric.d.ts +23 -25
  182. package/dist/Metric.d.ts.map +1 -1
  183. package/dist/Metric.js +24 -26
  184. package/dist/Metric.js.map +1 -1
  185. package/dist/MutableHashMap.d.ts +7 -0
  186. package/dist/MutableHashMap.d.ts.map +1 -1
  187. package/dist/MutableHashMap.js +8 -0
  188. package/dist/MutableHashMap.js.map +1 -1
  189. package/dist/MutableHashSet.d.ts +7 -0
  190. package/dist/MutableHashSet.d.ts.map +1 -1
  191. package/dist/MutableHashSet.js +8 -0
  192. package/dist/MutableHashSet.js.map +1 -1
  193. package/dist/MutableList.d.ts.map +1 -1
  194. package/dist/MutableList.js +3 -0
  195. package/dist/MutableList.js.map +1 -1
  196. package/dist/Newtype.d.ts +291 -0
  197. package/dist/Newtype.d.ts.map +1 -0
  198. package/dist/Newtype.js +161 -0
  199. package/dist/Newtype.js.map +1 -0
  200. package/dist/Number.d.ts +74 -18
  201. package/dist/Number.d.ts.map +1 -1
  202. package/dist/Number.js +46 -18
  203. package/dist/Number.js.map +1 -1
  204. package/dist/Optic.d.ts +947 -18
  205. package/dist/Optic.d.ts.map +1 -1
  206. package/dist/Optic.js +454 -5
  207. package/dist/Optic.js.map +1 -1
  208. package/dist/Option.d.ts +25 -16
  209. package/dist/Option.d.ts.map +1 -1
  210. package/dist/Option.js +15 -9
  211. package/dist/Option.js.map +1 -1
  212. package/dist/Order.d.ts +6 -1
  213. package/dist/Order.d.ts.map +1 -1
  214. package/dist/Order.js +19 -14
  215. package/dist/Order.js.map +1 -1
  216. package/dist/PartitionedSemaphore.d.ts +183 -0
  217. package/dist/PartitionedSemaphore.d.ts.map +1 -0
  218. package/dist/PartitionedSemaphore.js +231 -0
  219. package/dist/PartitionedSemaphore.js.map +1 -0
  220. package/dist/Path.d.ts +2 -2
  221. package/dist/Path.d.ts.map +1 -1
  222. package/dist/Path.js +2 -2
  223. package/dist/Path.js.map +1 -1
  224. package/dist/PlatformError.d.ts +2 -2
  225. package/dist/Pool.d.ts +1 -1
  226. package/dist/Pool.d.ts.map +1 -1
  227. package/dist/Pool.js +5 -5
  228. package/dist/Pool.js.map +1 -1
  229. package/dist/Predicate.d.ts +1 -1
  230. package/dist/Predicate.d.ts.map +1 -1
  231. package/dist/PubSub.d.ts +5 -4
  232. package/dist/PubSub.d.ts.map +1 -1
  233. package/dist/PubSub.js +15 -8
  234. package/dist/PubSub.js.map +1 -1
  235. package/dist/Pull.d.ts.map +1 -1
  236. package/dist/Pull.js +1 -1
  237. package/dist/Pull.js.map +1 -1
  238. package/dist/Queue.d.ts +9 -6
  239. package/dist/Queue.d.ts.map +1 -1
  240. package/dist/Queue.js +7 -5
  241. package/dist/Queue.js.map +1 -1
  242. package/dist/Random.d.ts +36 -2
  243. package/dist/Random.d.ts.map +1 -1
  244. package/dist/Random.js +46 -35
  245. package/dist/Random.js.map +1 -1
  246. package/dist/RcMap.d.ts +4 -4
  247. package/dist/RcMap.d.ts.map +1 -1
  248. package/dist/RcMap.js +13 -13
  249. package/dist/RcMap.js.map +1 -1
  250. package/dist/RcRef.d.ts +1 -1
  251. package/dist/RcRef.d.ts.map +1 -1
  252. package/dist/Record.d.ts +63 -160
  253. package/dist/Record.d.ts.map +1 -1
  254. package/dist/Record.js +37 -56
  255. package/dist/Record.js.map +1 -1
  256. package/dist/Redactable.d.ts +139 -62
  257. package/dist/Redactable.d.ts.map +1 -1
  258. package/dist/Redactable.js +59 -55
  259. package/dist/Redactable.js.map +1 -1
  260. package/dist/Reducer.d.ts +166 -7
  261. package/dist/Reducer.d.ts.map +1 -1
  262. package/dist/Reducer.js +135 -1
  263. package/dist/Reducer.js.map +1 -1
  264. package/dist/References.d.ts +257 -229
  265. package/dist/References.d.ts.map +1 -1
  266. package/dist/References.js +240 -259
  267. package/dist/References.js.map +1 -1
  268. package/dist/Request.d.ts +5 -5
  269. package/dist/Request.d.ts.map +1 -1
  270. package/dist/Request.js.map +1 -1
  271. package/dist/RequestResolver.d.ts +25 -25
  272. package/dist/RequestResolver.d.ts.map +1 -1
  273. package/dist/RequestResolver.js +15 -16
  274. package/dist/RequestResolver.js.map +1 -1
  275. package/dist/Resource.d.ts +0 -3
  276. package/dist/Resource.d.ts.map +1 -1
  277. package/dist/Resource.js +5 -4
  278. package/dist/Resource.js.map +1 -1
  279. package/dist/Result.d.ts +1 -1
  280. package/dist/Result.d.ts.map +1 -1
  281. package/dist/Result.js +1 -2
  282. package/dist/Result.js.map +1 -1
  283. package/dist/Runtime.d.ts +66 -0
  284. package/dist/Runtime.d.ts.map +1 -1
  285. package/dist/Runtime.js +79 -6
  286. package/dist/Runtime.js.map +1 -1
  287. package/dist/Schedule.d.ts +174 -291
  288. package/dist/Schedule.d.ts.map +1 -1
  289. package/dist/Schedule.js +132 -120
  290. package/dist/Schedule.js.map +1 -1
  291. package/dist/Scheduler.d.ts +36 -125
  292. package/dist/Scheduler.d.ts.map +1 -1
  293. package/dist/Scheduler.js +37 -126
  294. package/dist/Scheduler.js.map +1 -1
  295. package/dist/Schema.d.ts +3213 -392
  296. package/dist/Schema.d.ts.map +1 -1
  297. package/dist/Schema.js +2058 -252
  298. package/dist/Schema.js.map +1 -1
  299. package/dist/SchemaAST.d.ts +13 -2
  300. package/dist/SchemaAST.d.ts.map +1 -1
  301. package/dist/SchemaAST.js +340 -257
  302. package/dist/SchemaAST.js.map +1 -1
  303. package/dist/SchemaGetter.d.ts +55 -13
  304. package/dist/SchemaGetter.d.ts.map +1 -1
  305. package/dist/SchemaGetter.js +73 -11
  306. package/dist/SchemaGetter.js.map +1 -1
  307. package/dist/SchemaIssue.d.ts.map +1 -1
  308. package/dist/SchemaIssue.js +29 -11
  309. package/dist/SchemaIssue.js.map +1 -1
  310. package/dist/SchemaParser.d.ts +44 -54
  311. package/dist/SchemaParser.d.ts.map +1 -1
  312. package/dist/SchemaParser.js +69 -4
  313. package/dist/SchemaParser.js.map +1 -1
  314. package/dist/SchemaRepresentation.d.ts +2 -2
  315. package/dist/SchemaRepresentation.d.ts.map +1 -1
  316. package/dist/SchemaRepresentation.js +63 -39
  317. package/dist/SchemaRepresentation.js.map +1 -1
  318. package/dist/SchemaTransformation.d.ts +245 -3
  319. package/dist/SchemaTransformation.d.ts.map +1 -1
  320. package/dist/SchemaTransformation.js +297 -33
  321. package/dist/SchemaTransformation.js.map +1 -1
  322. package/dist/Scope.d.ts +2 -2
  323. package/dist/Scope.d.ts.map +1 -1
  324. package/dist/Scope.js.map +1 -1
  325. package/dist/ScopedCache.d.ts +2 -2
  326. package/dist/ScopedCache.d.ts.map +1 -1
  327. package/dist/ScopedCache.js +5 -5
  328. package/dist/ScopedCache.js.map +1 -1
  329. package/dist/Semaphore.d.ts +148 -52
  330. package/dist/Semaphore.d.ts.map +1 -1
  331. package/dist/Semaphore.js +135 -117
  332. package/dist/Semaphore.js.map +1 -1
  333. package/dist/Sink.d.ts +22 -19
  334. package/dist/Sink.d.ts.map +1 -1
  335. package/dist/Sink.js +54 -7
  336. package/dist/Sink.js.map +1 -1
  337. package/dist/Stdio.d.ts +18 -6
  338. package/dist/Stdio.d.ts.map +1 -1
  339. package/dist/Stdio.js +20 -2
  340. package/dist/Stdio.js.map +1 -1
  341. package/dist/Stream.d.ts +465 -542
  342. package/dist/Stream.d.ts.map +1 -1
  343. package/dist/Stream.js +329 -145
  344. package/dist/Stream.js.map +1 -1
  345. package/dist/String.d.ts +114 -47
  346. package/dist/String.d.ts.map +1 -1
  347. package/dist/String.js +29 -47
  348. package/dist/String.js.map +1 -1
  349. package/dist/Struct.d.ts +7 -7
  350. package/dist/Struct.d.ts.map +1 -1
  351. package/dist/SubscriptionRef.d.ts +1 -2
  352. package/dist/SubscriptionRef.d.ts.map +1 -1
  353. package/dist/SubscriptionRef.js +83 -116
  354. package/dist/SubscriptionRef.js.map +1 -1
  355. package/dist/Terminal.d.ts +5 -4
  356. package/dist/Terminal.d.ts.map +1 -1
  357. package/dist/Terminal.js +2 -2
  358. package/dist/Terminal.js.map +1 -1
  359. package/dist/Tracer.d.ts +21 -20
  360. package/dist/Tracer.d.ts.map +1 -1
  361. package/dist/Tracer.js +13 -9
  362. package/dist/Tracer.js.map +1 -1
  363. package/dist/Trie.d.ts +44 -31
  364. package/dist/Trie.d.ts.map +1 -1
  365. package/dist/Trie.js +13 -9
  366. package/dist/Trie.js.map +1 -1
  367. package/dist/TxChunk.d.ts +4 -4
  368. package/dist/TxChunk.d.ts.map +1 -1
  369. package/dist/TxChunk.js +4 -4
  370. package/dist/TxChunk.js.map +1 -1
  371. package/dist/TxDeferred.d.ts +328 -0
  372. package/dist/TxDeferred.d.ts.map +1 -0
  373. package/dist/TxDeferred.js +197 -0
  374. package/dist/TxDeferred.js.map +1 -0
  375. package/dist/TxHashMap.d.ts +105 -86
  376. package/dist/TxHashMap.d.ts.map +1 -1
  377. package/dist/TxHashMap.js +51 -44
  378. package/dist/TxHashMap.js.map +1 -1
  379. package/dist/TxHashSet.d.ts +2 -2
  380. package/dist/TxHashSet.d.ts.map +1 -1
  381. package/dist/TxHashSet.js +16 -15
  382. package/dist/TxHashSet.js.map +1 -1
  383. package/dist/TxPriorityQueue.d.ts +609 -0
  384. package/dist/TxPriorityQueue.d.ts.map +1 -0
  385. package/dist/TxPriorityQueue.js +416 -0
  386. package/dist/TxPriorityQueue.js.map +1 -0
  387. package/dist/TxPubSub.d.ts +585 -0
  388. package/dist/TxPubSub.d.ts.map +1 -0
  389. package/dist/TxPubSub.js +521 -0
  390. package/dist/TxPubSub.js.map +1 -0
  391. package/dist/TxQueue.d.ts +1 -1
  392. package/dist/TxQueue.d.ts.map +1 -1
  393. package/dist/TxQueue.js +42 -57
  394. package/dist/TxQueue.js.map +1 -1
  395. package/dist/TxReentrantLock.d.ts +500 -0
  396. package/dist/TxReentrantLock.d.ts.map +1 -0
  397. package/dist/TxReentrantLock.js +481 -0
  398. package/dist/TxReentrantLock.js.map +1 -0
  399. package/dist/TxRef.d.ts +14 -20
  400. package/dist/TxRef.d.ts.map +1 -1
  401. package/dist/TxRef.js +8 -10
  402. package/dist/TxRef.js.map +1 -1
  403. package/dist/TxSemaphore.d.ts +162 -2
  404. package/dist/TxSemaphore.d.ts.map +1 -1
  405. package/dist/TxSemaphore.js +25 -10
  406. package/dist/TxSemaphore.js.map +1 -1
  407. package/dist/TxSubscriptionRef.d.ts +508 -0
  408. package/dist/TxSubscriptionRef.d.ts.map +1 -0
  409. package/dist/TxSubscriptionRef.js +293 -0
  410. package/dist/TxSubscriptionRef.js.map +1 -0
  411. package/dist/Types.d.ts +80 -22
  412. package/dist/Types.d.ts.map +1 -1
  413. package/dist/Unify.d.ts +8 -2
  414. package/dist/Unify.d.ts.map +1 -1
  415. package/dist/Unify.js.map +1 -1
  416. package/dist/Utils.d.ts +137 -65
  417. package/dist/Utils.d.ts.map +1 -1
  418. package/dist/Utils.js +38 -66
  419. package/dist/Utils.js.map +1 -1
  420. package/dist/index.d.ts +886 -71
  421. package/dist/index.d.ts.map +1 -1
  422. package/dist/index.js +886 -71
  423. package/dist/index.js.map +1 -1
  424. package/dist/internal/core.js.map +1 -1
  425. package/dist/internal/dateTime.js +77 -71
  426. package/dist/internal/dateTime.js.map +1 -1
  427. package/dist/internal/effect.js +488 -326
  428. package/dist/internal/effect.js.map +1 -1
  429. package/dist/internal/hashMap.js +7 -5
  430. package/dist/internal/hashMap.js.map +1 -1
  431. package/dist/internal/layer.js +3 -3
  432. package/dist/internal/layer.js.map +1 -1
  433. package/dist/internal/option.js +6 -0
  434. package/dist/internal/option.js.map +1 -1
  435. package/dist/internal/random.d.ts +2 -0
  436. package/dist/internal/random.d.ts.map +1 -0
  437. package/dist/internal/random.js +13 -0
  438. package/dist/internal/random.js.map +1 -0
  439. package/dist/internal/rcRef.js +9 -9
  440. package/dist/internal/rcRef.js.map +1 -1
  441. package/dist/internal/references.d.ts +2 -0
  442. package/dist/internal/references.d.ts.map +1 -0
  443. package/dist/internal/references.js +51 -0
  444. package/dist/internal/references.js.map +1 -0
  445. package/dist/internal/request.js +6 -6
  446. package/dist/internal/request.js.map +1 -1
  447. package/dist/internal/schedule.js +1 -1
  448. package/dist/internal/schedule.js.map +1 -1
  449. package/dist/internal/schema/annotations.js +2 -0
  450. package/dist/internal/schema/annotations.js.map +1 -1
  451. package/dist/internal/schema/representation.js +87 -109
  452. package/dist/internal/schema/representation.js.map +1 -1
  453. package/dist/internal/schema/schema.d.ts +10 -1
  454. package/dist/internal/schema/schema.d.ts.map +1 -1
  455. package/dist/internal/schema/schema.js +59 -1
  456. package/dist/internal/schema/schema.js.map +1 -1
  457. package/dist/internal/trie.js +8 -7
  458. package/dist/internal/trie.js.map +1 -1
  459. package/dist/testing/TestClock.d.ts +5 -5
  460. package/dist/testing/TestClock.d.ts.map +1 -1
  461. package/dist/testing/TestClock.js +2 -2
  462. package/dist/testing/TestClock.js.map +1 -1
  463. package/dist/testing/TestSchema.d.ts +267 -33
  464. package/dist/testing/TestSchema.d.ts.map +1 -1
  465. package/dist/testing/TestSchema.js +296 -23
  466. package/dist/testing/TestSchema.js.map +1 -1
  467. package/dist/testing/index.d.ts +64 -1
  468. package/dist/testing/index.d.ts.map +1 -1
  469. package/dist/testing/index.js +64 -1
  470. package/dist/testing/index.js.map +1 -1
  471. package/dist/unstable/ai/AiError.d.ts +127 -45
  472. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  473. package/dist/unstable/ai/AiError.js +29 -23
  474. package/dist/unstable/ai/AiError.js.map +1 -1
  475. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
  476. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  477. package/dist/unstable/ai/AnthropicStructuredOutput.js +9 -2
  478. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  479. package/dist/unstable/ai/Chat.d.ts +39 -11
  480. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  481. package/dist/unstable/ai/Chat.js +40 -47
  482. package/dist/unstable/ai/Chat.js.map +1 -1
  483. package/dist/unstable/ai/EmbeddingModel.d.ts +130 -0
  484. package/dist/unstable/ai/EmbeddingModel.d.ts.map +1 -0
  485. package/dist/unstable/ai/EmbeddingModel.js +127 -0
  486. package/dist/unstable/ai/EmbeddingModel.js.map +1 -0
  487. package/dist/unstable/ai/IdGenerator.d.ts +2 -2
  488. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  489. package/dist/unstable/ai/IdGenerator.js +2 -2
  490. package/dist/unstable/ai/IdGenerator.js.map +1 -1
  491. package/dist/unstable/ai/LanguageModel.d.ts +119 -49
  492. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  493. package/dist/unstable/ai/LanguageModel.js +260 -61
  494. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  495. package/dist/unstable/ai/McpSchema.d.ts +207 -112
  496. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  497. package/dist/unstable/ai/McpSchema.js +71 -19
  498. package/dist/unstable/ai/McpSchema.js.map +1 -1
  499. package/dist/unstable/ai/McpServer.d.ts +68 -15
  500. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  501. package/dist/unstable/ai/McpServer.js +225 -73
  502. package/dist/unstable/ai/McpServer.js.map +1 -1
  503. package/dist/unstable/ai/Model.d.ts +27 -9
  504. package/dist/unstable/ai/Model.d.ts.map +1 -1
  505. package/dist/unstable/ai/Model.js +25 -9
  506. package/dist/unstable/ai/Model.js.map +1 -1
  507. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
  508. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  509. package/dist/unstable/ai/OpenAiStructuredOutput.js +9 -1
  510. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  511. package/dist/unstable/ai/Prompt.d.ts +17 -17
  512. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  513. package/dist/unstable/ai/Prompt.js +6 -9
  514. package/dist/unstable/ai/Prompt.js.map +1 -1
  515. package/dist/unstable/ai/Response.d.ts +24 -24
  516. package/dist/unstable/ai/Response.d.ts.map +1 -1
  517. package/dist/unstable/ai/Response.js +7 -8
  518. package/dist/unstable/ai/Response.js.map +1 -1
  519. package/dist/unstable/ai/ResponseIdTracker.d.ts +38 -0
  520. package/dist/unstable/ai/ResponseIdTracker.d.ts.map +1 -0
  521. package/dist/unstable/ai/ResponseIdTracker.js +68 -0
  522. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -0
  523. package/dist/unstable/ai/Telemetry.d.ts +35 -2
  524. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  525. package/dist/unstable/ai/Telemetry.js +2 -2
  526. package/dist/unstable/ai/Telemetry.js.map +1 -1
  527. package/dist/unstable/ai/Tokenizer.d.ts +2 -2
  528. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  529. package/dist/unstable/ai/Tokenizer.js +2 -2
  530. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  531. package/dist/unstable/ai/Tool.d.ts +46 -16
  532. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  533. package/dist/unstable/ai/Tool.js +68 -22
  534. package/dist/unstable/ai/Tool.js.map +1 -1
  535. package/dist/unstable/ai/Toolkit.d.ts +4 -4
  536. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  537. package/dist/unstable/ai/Toolkit.js +14 -21
  538. package/dist/unstable/ai/Toolkit.js.map +1 -1
  539. package/dist/unstable/ai/index.d.ts +22 -1
  540. package/dist/unstable/ai/index.d.ts.map +1 -1
  541. package/dist/unstable/ai/index.js +22 -1
  542. package/dist/unstable/ai/index.js.map +1 -1
  543. package/dist/unstable/ai/internal/codec-transformer.js +5 -7
  544. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  545. package/dist/unstable/cli/Argument.d.ts +4 -7
  546. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  547. package/dist/unstable/cli/Argument.js +1 -3
  548. package/dist/unstable/cli/Argument.js.map +1 -1
  549. package/dist/unstable/cli/CliError.d.ts +51 -63
  550. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  551. package/dist/unstable/cli/CliError.js +32 -57
  552. package/dist/unstable/cli/CliError.js.map +1 -1
  553. package/dist/unstable/cli/CliOutput.d.ts +5 -4
  554. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  555. package/dist/unstable/cli/CliOutput.js +67 -12
  556. package/dist/unstable/cli/CliOutput.js.map +1 -1
  557. package/dist/unstable/cli/Command.d.ts +372 -59
  558. package/dist/unstable/cli/Command.d.ts.map +1 -1
  559. package/dist/unstable/cli/Command.js +328 -66
  560. package/dist/unstable/cli/Command.js.map +1 -1
  561. package/dist/unstable/cli/Completions.d.ts +97 -0
  562. package/dist/unstable/cli/Completions.d.ts.map +1 -0
  563. package/dist/unstable/cli/Completions.js +25 -0
  564. package/dist/unstable/cli/Completions.js.map +1 -0
  565. package/dist/unstable/cli/Flag.d.ts +4 -5
  566. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  567. package/dist/unstable/cli/Flag.js +1 -1
  568. package/dist/unstable/cli/Flag.js.map +1 -1
  569. package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
  570. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
  571. package/dist/unstable/cli/GlobalFlag.js +118 -0
  572. package/dist/unstable/cli/GlobalFlag.js.map +1 -0
  573. package/dist/unstable/cli/HelpDoc.d.ts +81 -11
  574. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  575. package/dist/unstable/cli/Param.d.ts +34 -6
  576. package/dist/unstable/cli/Param.d.ts.map +1 -1
  577. package/dist/unstable/cli/Param.js +24 -14
  578. package/dist/unstable/cli/Param.js.map +1 -1
  579. package/dist/unstable/cli/Primitive.d.ts +2 -2
  580. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  581. package/dist/unstable/cli/Primitive.js +1 -1
  582. package/dist/unstable/cli/Primitive.js.map +1 -1
  583. package/dist/unstable/cli/Prompt.js +266 -86
  584. package/dist/unstable/cli/Prompt.js.map +1 -1
  585. package/dist/unstable/cli/index.d.ts +10 -0
  586. package/dist/unstable/cli/index.d.ts.map +1 -1
  587. package/dist/unstable/cli/index.js +10 -0
  588. package/dist/unstable/cli/index.js.map +1 -1
  589. package/dist/unstable/cli/internal/command.d.ts +41 -15
  590. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  591. package/dist/unstable/cli/internal/command.js +84 -47
  592. package/dist/unstable/cli/internal/command.js.map +1 -1
  593. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  594. package/dist/unstable/cli/internal/completions/descriptor.d.ts +2 -0
  595. package/dist/unstable/cli/internal/completions/descriptor.d.ts.map +1 -0
  596. package/dist/unstable/cli/internal/completions/{CommandDescriptor.js → descriptor.js} +17 -5
  597. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -0
  598. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  599. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  600. package/dist/unstable/cli/internal/config.js +42 -0
  601. package/dist/unstable/cli/internal/config.js.map +1 -1
  602. package/dist/unstable/cli/internal/help.d.ts +33 -0
  603. package/dist/unstable/cli/internal/help.d.ts.map +1 -0
  604. package/dist/unstable/cli/internal/help.js +125 -0
  605. package/dist/unstable/cli/internal/help.js.map +1 -0
  606. package/dist/unstable/cli/internal/parser.js +155 -58
  607. package/dist/unstable/cli/internal/parser.js.map +1 -1
  608. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  609. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  610. package/dist/unstable/cluster/ClusterCron.js +1 -1
  611. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  612. package/dist/unstable/cluster/ClusterError.d.ts +7 -7
  613. package/dist/unstable/cluster/ClusterSchema.d.ts +28 -7
  614. package/dist/unstable/cluster/ClusterSchema.d.ts.map +1 -1
  615. package/dist/unstable/cluster/ClusterSchema.js +28 -8
  616. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  617. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +4 -2
  618. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  619. package/dist/unstable/cluster/ClusterWorkflowEngine.js +96 -63
  620. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  621. package/dist/unstable/cluster/DeliverAt.js +1 -1
  622. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  623. package/dist/unstable/cluster/Entity.d.ts +17 -16
  624. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  625. package/dist/unstable/cluster/Entity.js +31 -25
  626. package/dist/unstable/cluster/Entity.js.map +1 -1
  627. package/dist/unstable/cluster/EntityAddress.d.ts +2 -2
  628. package/dist/unstable/cluster/EntityAddress.d.ts.map +1 -1
  629. package/dist/unstable/cluster/EntityAddress.js +1 -1
  630. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  631. package/dist/unstable/cluster/EntityProxy.js +3 -3
  632. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  633. package/dist/unstable/cluster/EntityProxyServer.d.ts.map +1 -1
  634. package/dist/unstable/cluster/EntityProxyServer.js +6 -6
  635. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  636. package/dist/unstable/cluster/EntityResource.d.ts +4 -4
  637. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  638. package/dist/unstable/cluster/EntityResource.js +2 -2
  639. package/dist/unstable/cluster/EntityResource.js.map +1 -1
  640. package/dist/unstable/cluster/Envelope.d.ts +3 -3
  641. package/dist/unstable/cluster/HttpRunner.js +2 -2
  642. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  643. package/dist/unstable/cluster/K8sHttpClient.d.ts +4 -4
  644. package/dist/unstable/cluster/K8sHttpClient.d.ts.map +1 -1
  645. package/dist/unstable/cluster/K8sHttpClient.js +6 -6
  646. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  647. package/dist/unstable/cluster/Message.d.ts +16 -10
  648. package/dist/unstable/cluster/Message.d.ts.map +1 -1
  649. package/dist/unstable/cluster/Message.js +16 -8
  650. package/dist/unstable/cluster/Message.js.map +1 -1
  651. package/dist/unstable/cluster/MessageStorage.d.ts +46 -23
  652. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  653. package/dist/unstable/cluster/MessageStorage.js +40 -25
  654. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  655. package/dist/unstable/cluster/Reply.d.ts +7 -6
  656. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  657. package/dist/unstable/cluster/Reply.js +8 -7
  658. package/dist/unstable/cluster/Reply.js.map +1 -1
  659. package/dist/unstable/cluster/Runner.d.ts +1 -1
  660. package/dist/unstable/cluster/Runner.d.ts.map +1 -1
  661. package/dist/unstable/cluster/Runner.js +1 -1
  662. package/dist/unstable/cluster/Runner.js.map +1 -1
  663. package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
  664. package/dist/unstable/cluster/RunnerAddress.d.ts.map +1 -1
  665. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  666. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  667. package/dist/unstable/cluster/RunnerHealth.d.ts +2 -2
  668. package/dist/unstable/cluster/RunnerHealth.d.ts.map +1 -1
  669. package/dist/unstable/cluster/RunnerHealth.js +2 -2
  670. package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
  671. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  672. package/dist/unstable/cluster/RunnerServer.js +10 -9
  673. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  674. package/dist/unstable/cluster/RunnerStorage.d.ts +12 -12
  675. package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
  676. package/dist/unstable/cluster/RunnerStorage.js +3 -3
  677. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  678. package/dist/unstable/cluster/Runners.d.ts +5 -4
  679. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  680. package/dist/unstable/cluster/Runners.js +16 -14
  681. package/dist/unstable/cluster/Runners.js.map +1 -1
  682. package/dist/unstable/cluster/ShardId.d.ts +35 -49
  683. package/dist/unstable/cluster/ShardId.d.ts.map +1 -1
  684. package/dist/unstable/cluster/ShardId.js +65 -67
  685. package/dist/unstable/cluster/ShardId.js.map +1 -1
  686. package/dist/unstable/cluster/Sharding.d.ts +4 -4
  687. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  688. package/dist/unstable/cluster/Sharding.js +59 -49
  689. package/dist/unstable/cluster/Sharding.js.map +1 -1
  690. package/dist/unstable/cluster/ShardingConfig.d.ts +28 -27
  691. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  692. package/dist/unstable/cluster/ShardingConfig.js +27 -27
  693. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  694. package/dist/unstable/cluster/SingletonAddress.d.ts +2 -2
  695. package/dist/unstable/cluster/Snowflake.d.ts +2 -2
  696. package/dist/unstable/cluster/Snowflake.d.ts.map +1 -1
  697. package/dist/unstable/cluster/Snowflake.js +2 -2
  698. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  699. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  700. package/dist/unstable/cluster/SqlMessageStorage.js +24 -20
  701. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  702. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  703. package/dist/unstable/cluster/SqlRunnerStorage.js +7 -7
  704. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  705. package/dist/unstable/cluster/internal/entityManager.js +30 -24
  706. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  707. package/dist/unstable/cluster/internal/entityReaper.js +2 -2
  708. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  709. package/dist/unstable/cluster/internal/resourceMap.js +3 -3
  710. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  711. package/dist/unstable/devtools/DevToolsClient.d.ts +2 -2
  712. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  713. package/dist/unstable/devtools/DevToolsClient.js +9 -8
  714. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  715. package/dist/unstable/devtools/DevToolsSchema.d.ts +4 -4
  716. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  717. package/dist/unstable/devtools/DevToolsSchema.js +9 -2
  718. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  719. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  720. package/dist/unstable/encoding/Ndjson.d.ts +9 -9
  721. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  722. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  723. package/dist/unstable/encoding/Sse.d.ts +3 -3
  724. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  725. package/dist/unstable/encoding/Sse.js +1 -1
  726. package/dist/unstable/encoding/Sse.js.map +1 -1
  727. package/dist/unstable/eventlog/Event.d.ts +0 -6
  728. package/dist/unstable/eventlog/Event.d.ts.map +1 -1
  729. package/dist/unstable/eventlog/Event.js +0 -5
  730. package/dist/unstable/eventlog/Event.js.map +1 -1
  731. package/dist/unstable/eventlog/EventGroup.d.ts +0 -2
  732. package/dist/unstable/eventlog/EventGroup.d.ts.map +1 -1
  733. package/dist/unstable/eventlog/EventGroup.js +0 -2
  734. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  735. package/dist/unstable/eventlog/EventJournal.d.ts +27 -10
  736. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  737. package/dist/unstable/eventlog/EventJournal.js +130 -71
  738. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  739. package/dist/unstable/eventlog/EventLog.d.ts +94 -37
  740. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  741. package/dist/unstable/eventlog/EventLog.js +225 -151
  742. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  743. package/dist/unstable/eventlog/EventLogEncryption.d.ts +11 -9
  744. package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
  745. package/dist/unstable/eventlog/EventLogEncryption.js +15 -17
  746. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  747. package/dist/unstable/eventlog/EventLogMessage.d.ts +228 -0
  748. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -0
  749. package/dist/unstable/eventlog/EventLogMessage.js +214 -0
  750. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -0
  751. package/dist/unstable/eventlog/EventLogRemote.d.ts +112 -194
  752. package/dist/unstable/eventlog/EventLogRemote.d.ts.map +1 -1
  753. package/dist/unstable/eventlog/EventLogRemote.js +168 -322
  754. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  755. package/dist/unstable/eventlog/EventLogServer.d.ts +26 -48
  756. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  757. package/dist/unstable/eventlog/EventLogServer.js +128 -199
  758. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  759. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +60 -0
  760. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -0
  761. package/dist/unstable/eventlog/EventLogServerEncrypted.js +166 -0
  762. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -0
  763. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +183 -0
  764. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -0
  765. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +461 -0
  766. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -0
  767. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +117 -0
  768. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts.map +1 -0
  769. package/dist/unstable/eventlog/EventLogSessionAuth.js +284 -0
  770. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -0
  771. package/dist/unstable/eventlog/{SqlEventLogJournal.d.ts → SqlEventJournal.d.ts} +2 -2
  772. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -0
  773. package/dist/unstable/eventlog/{SqlEventLogJournal.js → SqlEventJournal.js} +28 -21
  774. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -0
  775. package/dist/unstable/eventlog/{SqlEventLogServer.d.ts → SqlEventLogServerEncrypted.d.ts} +5 -5
  776. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -0
  777. package/dist/unstable/eventlog/{SqlEventLogServer.js → SqlEventLogServerEncrypted.js} +69 -27
  778. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -0
  779. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts +25 -0
  780. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -0
  781. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +355 -0
  782. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -0
  783. package/dist/unstable/eventlog/index.d.ts +22 -2
  784. package/dist/unstable/eventlog/index.d.ts.map +1 -1
  785. package/dist/unstable/eventlog/index.js +22 -2
  786. package/dist/unstable/eventlog/index.js.map +1 -1
  787. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.d.ts +2 -0
  788. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.d.ts.map +1 -0
  789. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js +89 -0
  790. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -0
  791. package/dist/unstable/http/Cookies.d.ts +51 -6
  792. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  793. package/dist/unstable/http/Cookies.js +27 -6
  794. package/dist/unstable/http/Cookies.js.map +1 -1
  795. package/dist/unstable/http/Etag.d.ts +2 -2
  796. package/dist/unstable/http/Etag.d.ts.map +1 -1
  797. package/dist/unstable/http/Etag.js +7 -3
  798. package/dist/unstable/http/Etag.js.map +1 -1
  799. package/dist/unstable/http/FetchHttpClient.d.ts +6 -3
  800. package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
  801. package/dist/unstable/http/FetchHttpClient.js +5 -5
  802. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  803. package/dist/unstable/http/Headers.d.ts +24 -4
  804. package/dist/unstable/http/Headers.d.ts.map +1 -1
  805. package/dist/unstable/http/Headers.js +42 -13
  806. package/dist/unstable/http/Headers.js.map +1 -1
  807. package/dist/unstable/http/HttpBody.d.ts +1 -1
  808. package/dist/unstable/http/HttpClient.d.ts +125 -21
  809. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  810. package/dist/unstable/http/HttpClient.js +197 -19
  811. package/dist/unstable/http/HttpClient.js.map +1 -1
  812. package/dist/unstable/http/HttpClientError.d.ts +8 -8
  813. package/dist/unstable/http/HttpClientRequest.d.ts +43 -15
  814. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  815. package/dist/unstable/http/HttpClientRequest.js +131 -21
  816. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  817. package/dist/unstable/http/HttpClientResponse.d.ts +2 -1
  818. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  819. package/dist/unstable/http/HttpClientResponse.js +18 -3
  820. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  821. package/dist/unstable/http/HttpEffect.d.ts +13 -11
  822. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  823. package/dist/unstable/http/HttpEffect.js +51 -51
  824. package/dist/unstable/http/HttpEffect.js.map +1 -1
  825. package/dist/unstable/http/HttpIncomingMessage.d.ts +5 -4
  826. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  827. package/dist/unstable/http/HttpIncomingMessage.js +6 -10
  828. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  829. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  830. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  831. package/dist/unstable/http/HttpMethod.js +3 -3
  832. package/dist/unstable/http/HttpMethod.js.map +1 -1
  833. package/dist/unstable/http/HttpMiddleware.d.ts +4 -9
  834. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  835. package/dist/unstable/http/HttpMiddleware.js +47 -43
  836. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  837. package/dist/unstable/http/HttpPlatform.d.ts +2 -2
  838. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  839. package/dist/unstable/http/HttpPlatform.js +5 -4
  840. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  841. package/dist/unstable/http/HttpRouter.d.ts +9 -8
  842. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  843. package/dist/unstable/http/HttpRouter.js +36 -36
  844. package/dist/unstable/http/HttpRouter.js.map +1 -1
  845. package/dist/unstable/http/HttpServer.d.ts +2 -2
  846. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  847. package/dist/unstable/http/HttpServer.js +4 -4
  848. package/dist/unstable/http/HttpServer.js.map +1 -1
  849. package/dist/unstable/http/HttpServerError.d.ts +22 -34
  850. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  851. package/dist/unstable/http/HttpServerError.js +39 -45
  852. package/dist/unstable/http/HttpServerError.js.map +1 -1
  853. package/dist/unstable/http/HttpServerRequest.d.ts +19 -7
  854. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  855. package/dist/unstable/http/HttpServerRequest.js +307 -13
  856. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  857. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  858. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  859. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  860. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  861. package/dist/unstable/http/HttpServerResponse.d.ts +52 -5
  862. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  863. package/dist/unstable/http/HttpServerResponse.js +240 -5
  864. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  865. package/dist/unstable/http/HttpStaticServer.d.ts +69 -0
  866. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -0
  867. package/dist/unstable/http/HttpStaticServer.js +353 -0
  868. package/dist/unstable/http/HttpStaticServer.js.map +1 -0
  869. package/dist/unstable/http/HttpTraceContext.d.ts +3 -2
  870. package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
  871. package/dist/unstable/http/HttpTraceContext.js +27 -15
  872. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  873. package/dist/unstable/http/Multipart.d.ts +7 -7
  874. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  875. package/dist/unstable/http/Multipart.js +7 -7
  876. package/dist/unstable/http/Multipart.js.map +1 -1
  877. package/dist/unstable/http/Url.d.ts +604 -0
  878. package/dist/unstable/http/Url.d.ts.map +1 -0
  879. package/dist/unstable/http/Url.js +256 -0
  880. package/dist/unstable/http/Url.js.map +1 -0
  881. package/dist/unstable/http/UrlParams.d.ts +18 -9
  882. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  883. package/dist/unstable/http/UrlParams.js +6 -7
  884. package/dist/unstable/http/UrlParams.js.map +1 -1
  885. package/dist/unstable/http/index.d.ts +8 -0
  886. package/dist/unstable/http/index.d.ts.map +1 -1
  887. package/dist/unstable/http/index.js +8 -0
  888. package/dist/unstable/http/index.js.map +1 -1
  889. package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
  890. package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
  891. package/dist/unstable/http/internal/preResponseHandler.js +10 -0
  892. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
  893. package/dist/unstable/httpapi/HttpApi.d.ts +11 -11
  894. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  895. package/dist/unstable/httpapi/HttpApi.js +8 -8
  896. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  897. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +12 -9
  898. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  899. package/dist/unstable/httpapi/HttpApiBuilder.js +59 -40
  900. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  901. package/dist/unstable/httpapi/HttpApiClient.d.ts +82 -7
  902. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  903. package/dist/unstable/httpapi/HttpApiClient.js +79 -11
  904. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  905. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +210 -105
  906. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  907. package/dist/unstable/httpapi/HttpApiEndpoint.js +52 -47
  908. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  909. package/dist/unstable/httpapi/HttpApiError.d.ts +66 -29
  910. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  911. package/dist/unstable/httpapi/HttpApiError.js +138 -32
  912. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  913. package/dist/unstable/httpapi/HttpApiGroup.d.ts +9 -8
  914. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  915. package/dist/unstable/httpapi/HttpApiGroup.js +4 -4
  916. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  917. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +49 -17
  918. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  919. package/dist/unstable/httpapi/HttpApiMiddleware.js +38 -8
  920. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  921. package/dist/unstable/httpapi/HttpApiSchema.d.ts +88 -9
  922. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  923. package/dist/unstable/httpapi/HttpApiSchema.js +86 -11
  924. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  925. package/dist/unstable/httpapi/HttpApiSecurity.d.ts +9 -6
  926. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  927. package/dist/unstable/httpapi/HttpApiSecurity.js +6 -6
  928. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  929. package/dist/unstable/httpapi/OpenApi.d.ts +17 -25
  930. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  931. package/dist/unstable/httpapi/OpenApi.js +59 -60
  932. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  933. package/dist/unstable/observability/Otlp.d.ts +12 -12
  934. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  935. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  936. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  937. package/dist/unstable/observability/OtlpExporter.js +8 -8
  938. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  939. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  940. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  941. package/dist/unstable/observability/OtlpLogger.js +7 -4
  942. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  943. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  944. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  945. package/dist/unstable/observability/OtlpMetrics.js +2 -2
  946. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  947. package/dist/unstable/observability/OtlpSerialization.d.ts +2 -2
  948. package/dist/unstable/observability/OtlpSerialization.d.ts.map +1 -1
  949. package/dist/unstable/observability/OtlpSerialization.js +2 -2
  950. package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
  951. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  952. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  953. package/dist/unstable/observability/OtlpTracer.js +7 -3
  954. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  955. package/dist/unstable/observability/PrometheusMetrics.d.ts +3 -3
  956. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  957. package/dist/unstable/observability/PrometheusMetrics.js +4 -33
  958. package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
  959. package/dist/unstable/observability/internal/protobuf.js +4 -4
  960. package/dist/unstable/observability/internal/protobuf.js.map +1 -1
  961. package/dist/unstable/persistence/KeyValueStore.d.ts +24 -3
  962. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  963. package/dist/unstable/persistence/KeyValueStore.js +144 -2
  964. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  965. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  966. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  967. package/dist/unstable/persistence/Persistable.js +1 -1
  968. package/dist/unstable/persistence/Persistable.js.map +1 -1
  969. package/dist/unstable/persistence/PersistedCache.d.ts +1 -2
  970. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  971. package/dist/unstable/persistence/PersistedCache.js +10 -11
  972. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  973. package/dist/unstable/persistence/PersistedQueue.d.ts +16 -16
  974. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  975. package/dist/unstable/persistence/PersistedQueue.js +9 -9
  976. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  977. package/dist/unstable/persistence/Persistence.d.ts +5 -5
  978. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  979. package/dist/unstable/persistence/Persistence.js +5 -5
  980. package/dist/unstable/persistence/Persistence.js.map +1 -1
  981. package/dist/unstable/persistence/RateLimiter.d.ts +9 -9
  982. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  983. package/dist/unstable/persistence/RateLimiter.js +4 -4
  984. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  985. package/dist/unstable/persistence/Redis.d.ts +3 -3
  986. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  987. package/dist/unstable/persistence/Redis.js +2 -2
  988. package/dist/unstable/persistence/Redis.js.map +1 -1
  989. package/dist/unstable/process/ChildProcess.d.ts +5 -128
  990. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  991. package/dist/unstable/process/ChildProcess.js +1 -65
  992. package/dist/unstable/process/ChildProcess.js.map +1 -1
  993. package/dist/unstable/process/ChildProcessSpawner.d.ts +83 -8
  994. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  995. package/dist/unstable/process/ChildProcessSpawner.js +22 -2
  996. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  997. package/dist/unstable/reactivity/AsyncResult.d.ts +37 -17
  998. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  999. package/dist/unstable/reactivity/AsyncResult.js +9 -0
  1000. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  1001. package/dist/unstable/reactivity/Atom.d.ts +108 -47
  1002. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  1003. package/dist/unstable/reactivity/Atom.js +105 -25
  1004. package/dist/unstable/reactivity/Atom.js.map +1 -1
  1005. package/dist/unstable/reactivity/AtomHttpApi.d.ts +25 -20
  1006. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  1007. package/dist/unstable/reactivity/AtomHttpApi.js +58 -26
  1008. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  1009. package/dist/unstable/reactivity/AtomRegistry.d.ts +8 -2
  1010. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  1011. package/dist/unstable/reactivity/AtomRegistry.js +57 -14
  1012. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  1013. package/dist/unstable/reactivity/AtomRpc.d.ts +12 -12
  1014. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  1015. package/dist/unstable/reactivity/AtomRpc.js +59 -31
  1016. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  1017. package/dist/unstable/reactivity/Reactivity.d.ts +2 -2
  1018. package/dist/unstable/reactivity/Reactivity.d.ts.map +1 -1
  1019. package/dist/unstable/reactivity/Reactivity.js +6 -6
  1020. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  1021. package/dist/unstable/rpc/Rpc.d.ts +137 -19
  1022. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  1023. package/dist/unstable/rpc/Rpc.js +99 -7
  1024. package/dist/unstable/rpc/Rpc.js.map +1 -1
  1025. package/dist/unstable/rpc/RpcClient.d.ts +26 -47
  1026. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  1027. package/dist/unstable/rpc/RpcClient.js +117 -75
  1028. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  1029. package/dist/unstable/rpc/RpcClientError.d.ts +2 -2
  1030. package/dist/unstable/rpc/RpcGroup.d.ts +15 -11
  1031. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  1032. package/dist/unstable/rpc/RpcGroup.js +30 -20
  1033. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  1034. package/dist/unstable/rpc/RpcMiddleware.d.ts +12 -12
  1035. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  1036. package/dist/unstable/rpc/RpcMiddleware.js +5 -5
  1037. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  1038. package/dist/unstable/rpc/RpcSchema.d.ts +14 -1
  1039. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  1040. package/dist/unstable/rpc/RpcSchema.js +17 -2
  1041. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  1042. package/dist/unstable/rpc/RpcSerialization.d.ts +13 -2
  1043. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  1044. package/dist/unstable/rpc/RpcSerialization.js +60 -27
  1045. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  1046. package/dist/unstable/rpc/RpcServer.d.ts +8 -12
  1047. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  1048. package/dist/unstable/rpc/RpcServer.js +73 -43
  1049. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  1050. package/dist/unstable/rpc/RpcWorker.d.ts +2 -2
  1051. package/dist/unstable/rpc/RpcWorker.d.ts.map +1 -1
  1052. package/dist/unstable/rpc/RpcWorker.js +4 -4
  1053. package/dist/unstable/rpc/RpcWorker.js.map +1 -1
  1054. package/dist/unstable/rpc/Utils.d.ts +6 -3
  1055. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  1056. package/dist/unstable/rpc/Utils.js +46 -5
  1057. package/dist/unstable/rpc/Utils.js.map +1 -1
  1058. package/dist/unstable/schema/Model.d.ts +24 -3
  1059. package/dist/unstable/schema/Model.d.ts.map +1 -1
  1060. package/dist/unstable/schema/Model.js +17 -4
  1061. package/dist/unstable/schema/Model.js.map +1 -1
  1062. package/dist/unstable/schema/VariantSchema.d.ts +7 -7
  1063. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  1064. package/dist/unstable/schema/VariantSchema.js +7 -18
  1065. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  1066. package/dist/unstable/socket/Socket.d.ts +35 -15
  1067. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  1068. package/dist/unstable/socket/Socket.js +34 -27
  1069. package/dist/unstable/socket/Socket.js.map +1 -1
  1070. package/dist/unstable/socket/SocketServer.d.ts +8 -5
  1071. package/dist/unstable/socket/SocketServer.d.ts.map +1 -1
  1072. package/dist/unstable/socket/SocketServer.js +2 -2
  1073. package/dist/unstable/socket/SocketServer.js.map +1 -1
  1074. package/dist/unstable/sql/Migrator.d.ts +1 -1
  1075. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  1076. package/dist/unstable/sql/Migrator.js +2 -2
  1077. package/dist/unstable/sql/Migrator.js.map +1 -1
  1078. package/dist/unstable/sql/SqlClient.d.ts +24 -6
  1079. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  1080. package/dist/unstable/sql/SqlClient.js +37 -32
  1081. package/dist/unstable/sql/SqlClient.js.map +1 -1
  1082. package/dist/unstable/sql/SqlConnection.d.ts +2 -2
  1083. package/dist/unstable/sql/SqlConnection.d.ts.map +1 -1
  1084. package/dist/unstable/sql/SqlConnection.js +5 -2
  1085. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  1086. package/dist/unstable/sql/SqlError.d.ts +237 -17
  1087. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  1088. package/dist/unstable/sql/SqlError.js +260 -4
  1089. package/dist/unstable/sql/SqlError.js.map +1 -1
  1090. package/dist/unstable/sql/SqlModel.d.ts +8 -9
  1091. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  1092. package/dist/unstable/sql/SqlModel.js +12 -38
  1093. package/dist/unstable/sql/SqlModel.js.map +1 -1
  1094. package/dist/unstable/sql/SqlResolver.js +24 -17
  1095. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  1096. package/dist/unstable/sql/SqlSchema.d.ts +17 -6
  1097. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  1098. package/dist/unstable/sql/SqlSchema.js +17 -7
  1099. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  1100. package/dist/unstable/sql/Statement.d.ts +3 -5
  1101. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  1102. package/dist/unstable/sql/Statement.js +14 -13
  1103. package/dist/unstable/sql/Statement.js.map +1 -1
  1104. package/dist/unstable/workers/Transferable.d.ts +4 -4
  1105. package/dist/unstable/workers/Transferable.d.ts.map +1 -1
  1106. package/dist/unstable/workers/Transferable.js +7 -7
  1107. package/dist/unstable/workers/Transferable.js.map +1 -1
  1108. package/dist/unstable/workers/Worker.d.ts +3 -3
  1109. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  1110. package/dist/unstable/workers/Worker.js +6 -3
  1111. package/dist/unstable/workers/Worker.js.map +1 -1
  1112. package/dist/unstable/workers/WorkerError.d.ts +5 -5
  1113. package/dist/unstable/workers/WorkerRunner.d.ts +2 -2
  1114. package/dist/unstable/workers/WorkerRunner.d.ts.map +1 -1
  1115. package/dist/unstable/workers/WorkerRunner.js +5 -2
  1116. package/dist/unstable/workers/WorkerRunner.js.map +1 -1
  1117. package/dist/unstable/workflow/Activity.d.ts +8 -3
  1118. package/dist/unstable/workflow/Activity.d.ts.map +1 -1
  1119. package/dist/unstable/workflow/Activity.js +25 -11
  1120. package/dist/unstable/workflow/Activity.js.map +1 -1
  1121. package/dist/unstable/workflow/DurableClock.d.ts +3 -6
  1122. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  1123. package/dist/unstable/workflow/DurableClock.js +6 -6
  1124. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  1125. package/dist/unstable/workflow/DurableDeferred.d.ts +2 -5
  1126. package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
  1127. package/dist/unstable/workflow/DurableDeferred.js +33 -15
  1128. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  1129. package/dist/unstable/workflow/Workflow.d.ts +12 -14
  1130. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  1131. package/dist/unstable/workflow/Workflow.js +30 -26
  1132. package/dist/unstable/workflow/Workflow.js.map +1 -1
  1133. package/dist/unstable/workflow/WorkflowEngine.d.ts +24 -7
  1134. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  1135. package/dist/unstable/workflow/WorkflowEngine.js +165 -16
  1136. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  1137. package/dist/unstable/workflow/WorkflowProxyServer.d.ts.map +1 -1
  1138. package/dist/unstable/workflow/WorkflowProxyServer.js +4 -4
  1139. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  1140. package/package.json +11 -10
  1141. package/src/Array.ts +304 -447
  1142. package/src/BigDecimal.ts +137 -82
  1143. package/src/BigInt.ts +53 -45
  1144. package/src/Brand.ts +3 -5
  1145. package/src/Cache.ts +27 -54
  1146. package/src/Cause.ts +57 -22
  1147. package/src/Channel.ts +687 -220
  1148. package/src/Chunk.ts +149 -331
  1149. package/src/Clock.ts +2 -2
  1150. package/src/Combiner.ts +280 -13
  1151. package/src/Config.ts +214 -52
  1152. package/src/ConfigProvider.ts +5 -5
  1153. package/src/Console.ts +2 -2
  1154. package/src/Context.ts +1454 -0
  1155. package/src/Cron.ts +155 -63
  1156. package/src/Data.ts +530 -368
  1157. package/src/DateTime.ts +77 -258
  1158. package/src/Deferred.ts +15 -6
  1159. package/src/Duration.ts +151 -81
  1160. package/src/Effect.ts +1581 -1050
  1161. package/src/Effectable.ts +47 -0
  1162. package/src/Equal.ts +293 -109
  1163. package/src/Equivalence.ts +114 -52
  1164. package/src/ErrorReporter.ts +458 -0
  1165. package/src/ExecutionPlan.ts +8 -9
  1166. package/src/Exit.ts +24 -12
  1167. package/src/Fiber.ts +17 -8
  1168. package/src/FiberHandle.ts +15 -14
  1169. package/src/FiberMap.ts +27 -27
  1170. package/src/FiberSet.ts +5 -5
  1171. package/src/FileSystem.ts +30 -26
  1172. package/src/Filter.ts +4 -62
  1173. package/src/Formatter.ts +268 -60
  1174. package/src/Function.ts +2 -10
  1175. package/src/Graph.ts +123 -112
  1176. package/src/Hash.ts +2 -2
  1177. package/src/HashMap.ts +26 -19
  1178. package/src/Inspectable.ts +2 -22
  1179. package/src/Iterable.ts +117 -63
  1180. package/src/JsonSchema.ts +383 -10
  1181. package/src/Latch.ts +85 -3
  1182. package/src/Layer.ts +728 -441
  1183. package/src/LayerMap.ts +38 -35
  1184. package/src/LogLevel.ts +37 -0
  1185. package/src/Logger.ts +35 -102
  1186. package/src/ManagedRuntime.ts +61 -48
  1187. package/src/Metric.ts +64 -66
  1188. package/src/MutableHashMap.ts +9 -0
  1189. package/src/MutableHashSet.ts +9 -0
  1190. package/src/MutableList.ts +3 -0
  1191. package/src/Newtype.ts +308 -0
  1192. package/src/Number.ts +98 -29
  1193. package/src/Optic.ts +948 -19
  1194. package/src/Option.ts +34 -24
  1195. package/src/Order.ts +39 -32
  1196. package/src/PartitionedSemaphore.ts +414 -0
  1197. package/src/Path.ts +2 -2
  1198. package/src/Pool.ts +9 -9
  1199. package/src/Predicate.ts +1 -1
  1200. package/src/PubSub.ts +20 -11
  1201. package/src/Pull.ts +1 -1
  1202. package/src/Queue.ts +11 -9
  1203. package/src/Random.ts +51 -14
  1204. package/src/RcMap.ts +19 -19
  1205. package/src/RcRef.ts +1 -1
  1206. package/src/Record.ts +94 -199
  1207. package/src/Redactable.ts +146 -72
  1208. package/src/Reducer.ts +166 -7
  1209. package/src/References.ts +283 -287
  1210. package/src/Request.ts +5 -5
  1211. package/src/RequestResolver.ts +34 -35
  1212. package/src/Resource.ts +6 -5
  1213. package/src/Result.ts +2 -4
  1214. package/src/Runtime.ts +102 -6
  1215. package/src/Schedule.ts +243 -336
  1216. package/src/Scheduler.ts +52 -129
  1217. package/src/Schema.ts +3769 -597
  1218. package/src/SchemaAST.ts +480 -302
  1219. package/src/SchemaGetter.ts +80 -24
  1220. package/src/SchemaIssue.ts +28 -15
  1221. package/src/SchemaParser.ts +100 -29
  1222. package/src/SchemaRepresentation.ts +57 -33
  1223. package/src/SchemaTransformation.ts +321 -32
  1224. package/src/Scope.ts +2 -2
  1225. package/src/ScopedCache.ts +8 -8
  1226. package/src/Semaphore.ts +268 -182
  1227. package/src/Sink.ts +89 -34
  1228. package/src/Stdio.ts +29 -6
  1229. package/src/Stream.ts +908 -752
  1230. package/src/String.ts +122 -69
  1231. package/src/Struct.ts +7 -7
  1232. package/src/SubscriptionRef.ts +98 -118
  1233. package/src/Terminal.ts +5 -4
  1234. package/src/Tracer.ts +23 -22
  1235. package/src/Trie.ts +44 -31
  1236. package/src/TxChunk.ts +26 -16
  1237. package/src/TxDeferred.ts +391 -0
  1238. package/src/TxHashMap.ts +347 -291
  1239. package/src/TxHashSet.ts +54 -61
  1240. package/src/TxPriorityQueue.ts +762 -0
  1241. package/src/TxPubSub.ts +787 -0
  1242. package/src/TxQueue.ts +221 -245
  1243. package/src/TxReentrantLock.ts +729 -0
  1244. package/src/TxRef.ts +31 -31
  1245. package/src/TxSemaphore.ts +203 -31
  1246. package/src/TxSubscriptionRef.ts +637 -0
  1247. package/src/Types.ts +75 -23
  1248. package/src/Unify.ts +26 -2
  1249. package/src/Utils.ts +137 -111
  1250. package/src/index.ts +896 -73
  1251. package/src/internal/core.ts +9 -10
  1252. package/src/internal/dateTime.ts +91 -96
  1253. package/src/internal/effect.ts +1168 -621
  1254. package/src/internal/hashMap.ts +12 -10
  1255. package/src/internal/layer.ts +7 -7
  1256. package/src/internal/option.ts +7 -0
  1257. package/src/internal/random.ts +20 -0
  1258. package/src/internal/rcRef.ts +12 -12
  1259. package/src/internal/references.ts +72 -0
  1260. package/src/internal/request.ts +8 -8
  1261. package/src/internal/schedule.ts +3 -1
  1262. package/src/internal/schema/annotations.ts +2 -0
  1263. package/src/internal/schema/representation.ts +82 -97
  1264. package/src/internal/schema/schema.ts +68 -1
  1265. package/src/internal/trie.ts +21 -15
  1266. package/src/testing/TestClock.ts +6 -6
  1267. package/src/testing/TestSchema.ts +333 -36
  1268. package/src/testing/index.ts +64 -1
  1269. package/src/unstable/ai/AiError.ts +111 -53
  1270. package/src/unstable/ai/AnthropicStructuredOutput.ts +7 -3
  1271. package/src/unstable/ai/Chat.ts +136 -88
  1272. package/src/unstable/ai/EmbeddingModel.ts +209 -0
  1273. package/src/unstable/ai/IdGenerator.ts +2 -2
  1274. package/src/unstable/ai/LanguageModel.ts +685 -255
  1275. package/src/unstable/ai/McpSchema.ts +84 -22
  1276. package/src/unstable/ai/McpServer.ts +307 -87
  1277. package/src/unstable/ai/Model.ts +44 -13
  1278. package/src/unstable/ai/OpenAiStructuredOutput.ts +9 -2
  1279. package/src/unstable/ai/Prompt.ts +23 -29
  1280. package/src/unstable/ai/Response.ts +29 -31
  1281. package/src/unstable/ai/ResponseIdTracker.ts +95 -0
  1282. package/src/unstable/ai/Telemetry.ts +2 -2
  1283. package/src/unstable/ai/Tokenizer.ts +2 -2
  1284. package/src/unstable/ai/Tool.ts +62 -36
  1285. package/src/unstable/ai/Toolkit.ts +17 -26
  1286. package/src/unstable/ai/index.ts +24 -1
  1287. package/src/unstable/ai/internal/codec-transformer.ts +3 -9
  1288. package/src/unstable/cli/Argument.ts +5 -8
  1289. package/src/unstable/cli/CliError.ts +67 -66
  1290. package/src/unstable/cli/CliOutput.ts +87 -15
  1291. package/src/unstable/cli/Command.ts +808 -193
  1292. package/src/unstable/cli/Completions.ts +107 -0
  1293. package/src/unstable/cli/Flag.ts +5 -6
  1294. package/src/unstable/cli/GlobalFlag.ts +242 -0
  1295. package/src/unstable/cli/HelpDoc.ts +91 -11
  1296. package/src/unstable/cli/Param.ts +54 -27
  1297. package/src/unstable/cli/Primitive.ts +2 -2
  1298. package/src/unstable/cli/Prompt.ts +275 -104
  1299. package/src/unstable/cli/index.ts +12 -0
  1300. package/src/unstable/cli/internal/command.ts +125 -64
  1301. package/src/unstable/cli/internal/completions/bash.ts +7 -7
  1302. package/src/unstable/cli/internal/completions/{CommandDescriptor.ts → descriptor.ts} +16 -58
  1303. package/src/unstable/cli/internal/completions/fish.ts +7 -7
  1304. package/src/unstable/cli/internal/completions/zsh.ts +8 -14
  1305. package/src/unstable/cli/internal/config.ts +49 -0
  1306. package/src/unstable/cli/internal/help.ts +171 -0
  1307. package/src/unstable/cli/internal/parser.ts +201 -84
  1308. package/src/unstable/cluster/ClusterCron.ts +2 -2
  1309. package/src/unstable/cluster/ClusterSchema.ts +38 -10
  1310. package/src/unstable/cluster/ClusterWorkflowEngine.ts +142 -80
  1311. package/src/unstable/cluster/DeliverAt.ts +1 -1
  1312. package/src/unstable/cluster/Entity.ts +58 -45
  1313. package/src/unstable/cluster/EntityAddress.ts +1 -1
  1314. package/src/unstable/cluster/EntityProxy.ts +3 -3
  1315. package/src/unstable/cluster/EntityProxyServer.ts +6 -6
  1316. package/src/unstable/cluster/EntityResource.ts +6 -6
  1317. package/src/unstable/cluster/HttpRunner.ts +2 -2
  1318. package/src/unstable/cluster/K8sHttpClient.ts +7 -7
  1319. package/src/unstable/cluster/Message.ts +30 -17
  1320. package/src/unstable/cluster/MessageStorage.ts +74 -45
  1321. package/src/unstable/cluster/Reply.ts +13 -10
  1322. package/src/unstable/cluster/Runner.ts +1 -1
  1323. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  1324. package/src/unstable/cluster/RunnerHealth.ts +2 -2
  1325. package/src/unstable/cluster/RunnerServer.ts +11 -14
  1326. package/src/unstable/cluster/RunnerStorage.ts +9 -9
  1327. package/src/unstable/cluster/Runners.ts +22 -18
  1328. package/src/unstable/cluster/ShardId.ts +84 -74
  1329. package/src/unstable/cluster/Sharding.ts +75 -60
  1330. package/src/unstable/cluster/ShardingConfig.ts +39 -40
  1331. package/src/unstable/cluster/Snowflake.ts +2 -2
  1332. package/src/unstable/cluster/SqlMessageStorage.ts +29 -20
  1333. package/src/unstable/cluster/SqlRunnerStorage.ts +13 -7
  1334. package/src/unstable/cluster/internal/entityManager.ts +60 -41
  1335. package/src/unstable/cluster/internal/entityReaper.ts +2 -2
  1336. package/src/unstable/cluster/internal/resourceMap.ts +3 -3
  1337. package/src/unstable/devtools/DevToolsClient.ts +26 -21
  1338. package/src/unstable/devtools/DevToolsSchema.ts +16 -3
  1339. package/src/unstable/encoding/Ndjson.ts +17 -17
  1340. package/src/unstable/encoding/Sse.ts +3 -5
  1341. package/src/unstable/eventlog/Event.ts +0 -8
  1342. package/src/unstable/eventlog/EventGroup.ts +0 -4
  1343. package/src/unstable/eventlog/EventJournal.ts +148 -80
  1344. package/src/unstable/eventlog/EventLog.ts +360 -234
  1345. package/src/unstable/eventlog/EventLogEncryption.ts +18 -32
  1346. package/src/unstable/eventlog/EventLogMessage.ts +277 -0
  1347. package/src/unstable/eventlog/EventLogRemote.ts +264 -410
  1348. package/src/unstable/eventlog/EventLogServer.ts +183 -275
  1349. package/src/unstable/eventlog/EventLogServerEncrypted.ts +206 -0
  1350. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +749 -0
  1351. package/src/unstable/eventlog/EventLogSessionAuth.ts +437 -0
  1352. package/src/unstable/eventlog/{SqlEventLogJournal.ts → SqlEventJournal.ts} +38 -22
  1353. package/src/unstable/eventlog/{SqlEventLogServer.ts → SqlEventLogServerEncrypted.ts} +110 -43
  1354. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +506 -0
  1355. package/src/unstable/eventlog/index.ts +27 -2
  1356. package/src/unstable/eventlog/internal/identityRootSecretDerivation.ts +153 -0
  1357. package/src/unstable/http/Cookies.ts +94 -11
  1358. package/src/unstable/http/Etag.ts +7 -5
  1359. package/src/unstable/http/FetchHttpClient.ts +5 -5
  1360. package/src/unstable/http/Headers.ts +70 -20
  1361. package/src/unstable/http/HttpClient.ts +385 -42
  1362. package/src/unstable/http/HttpClientRequest.ts +151 -39
  1363. package/src/unstable/http/HttpClientResponse.ts +24 -8
  1364. package/src/unstable/http/HttpEffect.ts +71 -77
  1365. package/src/unstable/http/HttpIncomingMessage.ts +9 -8
  1366. package/src/unstable/http/HttpMethod.ts +16 -4
  1367. package/src/unstable/http/HttpMiddleware.ts +50 -50
  1368. package/src/unstable/http/HttpPlatform.ts +5 -4
  1369. package/src/unstable/http/HttpRouter.ts +46 -46
  1370. package/src/unstable/http/HttpServer.ts +5 -11
  1371. package/src/unstable/http/HttpServerError.ts +45 -47
  1372. package/src/unstable/http/HttpServerRequest.ts +414 -23
  1373. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  1374. package/src/unstable/http/HttpServerResponse.ts +351 -13
  1375. package/src/unstable/http/HttpStaticServer.ts +456 -0
  1376. package/src/unstable/http/HttpTraceContext.ts +31 -17
  1377. package/src/unstable/http/Multipart.ts +8 -8
  1378. package/src/unstable/http/Url.ts +650 -0
  1379. package/src/unstable/http/UrlParams.ts +30 -18
  1380. package/src/unstable/http/index.ts +10 -0
  1381. package/src/unstable/http/internal/preResponseHandler.ts +15 -0
  1382. package/src/unstable/httpapi/HttpApi.ts +22 -22
  1383. package/src/unstable/httpapi/HttpApiBuilder.ts +134 -54
  1384. package/src/unstable/httpapi/HttpApiClient.ts +185 -34
  1385. package/src/unstable/httpapi/HttpApiEndpoint.ts +225 -114
  1386. package/src/unstable/httpapi/HttpApiError.ts +129 -30
  1387. package/src/unstable/httpapi/HttpApiGroup.ts +18 -17
  1388. package/src/unstable/httpapi/HttpApiMiddleware.ts +95 -32
  1389. package/src/unstable/httpapi/HttpApiSchema.ts +106 -11
  1390. package/src/unstable/httpapi/HttpApiSecurity.ts +13 -13
  1391. package/src/unstable/httpapi/OpenApi.ts +74 -73
  1392. package/src/unstable/observability/Otlp.ts +12 -12
  1393. package/src/unstable/observability/OtlpExporter.ts +14 -10
  1394. package/src/unstable/observability/OtlpLogger.ts +13 -9
  1395. package/src/unstable/observability/OtlpMetrics.ts +6 -6
  1396. package/src/unstable/observability/OtlpSerialization.ts +2 -2
  1397. package/src/unstable/observability/OtlpTracer.ts +14 -10
  1398. package/src/unstable/observability/PrometheusMetrics.ts +5 -5
  1399. package/src/unstable/observability/internal/protobuf.ts +4 -4
  1400. package/src/unstable/persistence/KeyValueStore.ts +226 -3
  1401. package/src/unstable/persistence/Persistable.ts +3 -3
  1402. package/src/unstable/persistence/PersistedCache.ts +20 -17
  1403. package/src/unstable/persistence/PersistedQueue.ts +21 -21
  1404. package/src/unstable/persistence/Persistence.ts +7 -7
  1405. package/src/unstable/persistence/RateLimiter.ts +7 -7
  1406. package/src/unstable/persistence/Redis.ts +2 -2
  1407. package/src/unstable/process/ChildProcess.ts +6 -208
  1408. package/src/unstable/process/ChildProcessSpawner.ts +114 -15
  1409. package/src/unstable/reactivity/AsyncResult.ts +59 -17
  1410. package/src/unstable/reactivity/Atom.ts +280 -124
  1411. package/src/unstable/reactivity/AtomHttpApi.ts +127 -61
  1412. package/src/unstable/reactivity/AtomRegistry.ts +70 -16
  1413. package/src/unstable/reactivity/AtomRpc.ts +82 -37
  1414. package/src/unstable/reactivity/Reactivity.ts +6 -6
  1415. package/src/unstable/rpc/Rpc.ts +212 -32
  1416. package/src/unstable/rpc/RpcClient.ts +161 -142
  1417. package/src/unstable/rpc/RpcGroup.ts +51 -34
  1418. package/src/unstable/rpc/RpcMiddleware.ts +28 -22
  1419. package/src/unstable/rpc/RpcSchema.ts +24 -6
  1420. package/src/unstable/rpc/RpcSerialization.ts +97 -54
  1421. package/src/unstable/rpc/RpcServer.ts +91 -65
  1422. package/src/unstable/rpc/RpcWorker.ts +5 -5
  1423. package/src/unstable/rpc/Utils.ts +63 -4
  1424. package/src/unstable/schema/Model.ts +35 -6
  1425. package/src/unstable/schema/VariantSchema.ts +14 -27
  1426. package/src/unstable/socket/Socket.ts +102 -62
  1427. package/src/unstable/socket/SocketServer.ts +2 -2
  1428. package/src/unstable/sql/Migrator.ts +7 -5
  1429. package/src/unstable/sql/SqlClient.ts +48 -19
  1430. package/src/unstable/sql/SqlConnection.ts +2 -2
  1431. package/src/unstable/sql/SqlError.ts +365 -11
  1432. package/src/unstable/sql/SqlModel.ts +57 -85
  1433. package/src/unstable/sql/SqlResolver.ts +28 -20
  1434. package/src/unstable/sql/SqlSchema.ts +42 -26
  1435. package/src/unstable/sql/Statement.ts +21 -25
  1436. package/src/unstable/workers/Transferable.ts +17 -19
  1437. package/src/unstable/workers/Worker.ts +4 -4
  1438. package/src/unstable/workers/WorkerRunner.ts +2 -2
  1439. package/src/unstable/workflow/Activity.ts +36 -13
  1440. package/src/unstable/workflow/DurableClock.ts +11 -11
  1441. package/src/unstable/workflow/DurableDeferred.ts +36 -18
  1442. package/src/unstable/workflow/Workflow.ts +46 -35
  1443. package/src/unstable/workflow/WorkflowEngine.ts +236 -23
  1444. package/src/unstable/workflow/WorkflowProxyServer.ts +4 -4
  1445. package/dist/NullOr.d.ts +0 -149
  1446. package/dist/NullOr.d.ts.map +0 -1
  1447. package/dist/NullOr.js +0 -152
  1448. package/dist/NullOr.js.map +0 -1
  1449. package/dist/ServiceMap.d.ts +0 -1126
  1450. package/dist/ServiceMap.d.ts.map +0 -1
  1451. package/dist/ServiceMap.js.map +0 -1
  1452. package/dist/internal/schema/to-codec.d.ts +0 -2
  1453. package/dist/internal/schema/to-codec.d.ts.map +0 -1
  1454. package/dist/internal/schema/to-codec.js +0 -129
  1455. package/dist/internal/schema/to-codec.js.map +0 -1
  1456. package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
  1457. package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
  1458. package/dist/unstable/cli/internal/builtInFlags.js +0 -44
  1459. package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
  1460. package/dist/unstable/cli/internal/completions/CommandDescriptor.d.ts +0 -2
  1461. package/dist/unstable/cli/internal/completions/CommandDescriptor.d.ts.map +0 -1
  1462. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +0 -1
  1463. package/dist/unstable/cli/internal/completions/Completions.d.ts +0 -2
  1464. package/dist/unstable/cli/internal/completions/Completions.d.ts.map +0 -1
  1465. package/dist/unstable/cli/internal/completions/Completions.js +0 -23
  1466. package/dist/unstable/cli/internal/completions/Completions.js.map +0 -1
  1467. package/dist/unstable/eventlog/SqlEventLogJournal.d.ts.map +0 -1
  1468. package/dist/unstable/eventlog/SqlEventLogJournal.js.map +0 -1
  1469. package/dist/unstable/eventlog/SqlEventLogServer.d.ts.map +0 -1
  1470. package/dist/unstable/eventlog/SqlEventLogServer.js.map +0 -1
  1471. package/src/NullOr.ts +0 -204
  1472. package/src/ServiceMap.ts +0 -1410
  1473. package/src/internal/schema/to-codec.ts +0 -148
  1474. package/src/unstable/cli/internal/builtInFlags.ts +0 -78
  1475. package/src/unstable/cli/internal/completions/Completions.ts +0 -31
@@ -2,6 +2,7 @@ import * as Arr from "../Array.ts"
2
2
  import type * as Cause from "../Cause.ts"
3
3
  import type * as Clock from "../Clock.ts"
4
4
  import type * as Console from "../Console.ts"
5
+ import * as Context from "../Context.ts"
5
6
  import * as Duration from "../Duration.ts"
6
7
  import type * as Effect from "../Effect.ts"
7
8
  import * as Equal from "../Equal.ts"
@@ -24,23 +25,10 @@ import { pipeArguments } from "../Pipeable.ts"
24
25
  import type * as Predicate from "../Predicate.ts"
25
26
  import { hasProperty, isIterable, isString, isTagged } from "../Predicate.ts"
26
27
  import { currentFiberTypeId, redact } from "../Redactable.ts"
27
- import {
28
- CurrentConcurrency,
29
- CurrentLogAnnotations,
30
- CurrentLogLevel,
31
- CurrentLogSpans,
32
- CurrentStackFrame,
33
- MinimumLogLevel,
34
- type StackFrame,
35
- TracerEnabled,
36
- TracerSpanAnnotations,
37
- TracerSpanLinks,
38
- TracerTimingEnabled
39
- } from "../References.ts"
28
+ import type { StackFrame } from "../References.ts"
40
29
  import * as Result from "../Result.ts"
41
30
  import * as Scheduler from "../Scheduler.ts"
42
31
  import type * as Scope from "../Scope.ts"
43
- import * as ServiceMap from "../ServiceMap.ts"
44
32
  import * as Tracer from "../Tracer.ts"
45
33
  import type {
46
34
  Concurrency,
@@ -49,7 +37,9 @@ import type {
49
37
  ExcludeTag,
50
38
  ExtractReason,
51
39
  ExtractTag,
40
+ NarrowReason,
52
41
  NoInfer,
42
+ OmitReason,
53
43
  ReasonOf,
54
44
  ReasonTags,
55
45
  Simplify,
@@ -68,7 +58,6 @@ import {
68
58
  contA,
69
59
  contAll,
70
60
  contE,
71
- Die,
72
61
  evaluate,
73
62
  exitDie,
74
63
  exitFail,
@@ -94,6 +83,19 @@ import {
94
83
  } from "./core.ts"
95
84
  import * as doNotation from "./doNotation.ts"
96
85
  import * as InternalMetric from "./metric.ts"
86
+ import {
87
+ CurrentConcurrency,
88
+ CurrentErrorReporters,
89
+ CurrentLogAnnotations,
90
+ CurrentLogLevel,
91
+ CurrentLogSpans,
92
+ CurrentStackFrame,
93
+ MinimumLogLevel,
94
+ TracerEnabled,
95
+ TracerSpanAnnotations,
96
+ TracerSpanLinks,
97
+ TracerTimingEnabled
98
+ } from "./references.ts"
97
99
  import { addSpanStackTrace, type ErrorWithStackTraceLimit, makeStackCleaner } from "./tracer.ts"
98
100
  import { version } from "./version.ts"
99
101
 
@@ -213,17 +215,18 @@ export const causeInterruptors = <E>(self: Cause.Cause<E>): ReadonlySet<number>
213
215
  const emptySet = new Set<number>()
214
216
 
215
217
  /** @internal */
216
- export const hasInterruptsOnly = <E>(self: Cause.Cause<E>): boolean => self.reasons.every(isInterruptReason)
218
+ export const hasInterruptsOnly = <E>(self: Cause.Cause<E>): boolean =>
219
+ self.reasons.length > 0 && self.reasons.every(isInterruptReason)
217
220
 
218
221
  /** @internal */
219
222
  export const reasonAnnotations = <E>(
220
223
  self: Cause.Reason<E>
221
- ): ServiceMap.ServiceMap<never> => ServiceMap.makeUnsafe(self.annotations)
224
+ ): Context.Context<never> => Context.makeUnsafe(self.annotations)
222
225
 
223
226
  /** @internal */
224
227
  export const causeAnnotations = <E>(
225
228
  self: Cause.Cause<E>
226
- ): ServiceMap.ServiceMap<never> => {
229
+ ): Context.Context<never> => {
227
230
  const map = new Map<string, unknown>()
228
231
  for (const f of self.reasons) {
229
232
  if (f.annotations.size > 0) {
@@ -232,7 +235,7 @@ export const causeAnnotations = <E>(
232
235
  }
233
236
  }
234
237
  }
235
- return ServiceMap.makeUnsafe(map)
238
+ return Context.makeUnsafe(map)
236
239
  }
237
240
 
238
241
  /** @internal */
@@ -341,7 +344,8 @@ export const causePrettyErrors = <E>(self: Cause.Cause<E>): Array<Error> => {
341
344
  return errors
342
345
  }
343
346
 
344
- const causePrettyError = (
347
+ /** @internal */
348
+ export const causePrettyError = (
345
349
  original: Record<string, unknown> | Error,
346
350
  annotations?: ReadonlyMap<string, unknown>
347
351
  ): Error => {
@@ -489,32 +493,14 @@ const fiberIdStore = { id: 0 }
489
493
  /** @internal */
490
494
  export const getCurrentFiber = (): Fiber.Fiber<any, any> | undefined => (globalThis as any)[currentFiberTypeId]
491
495
 
492
- const keepAlive = (() => {
493
- let count = 0
494
- let running: ReturnType<typeof globalThis.setInterval> | undefined = undefined
495
- return ({
496
- increment() {
497
- count++
498
- running ??= globalThis.setInterval(constVoid, 2_147_483_647)
499
- },
500
- decrement() {
501
- count--
502
- if (count === 0 && running !== undefined) {
503
- globalThis.clearInterval(running)
504
- running = undefined
505
- }
506
- }
507
- })
508
- })()
509
-
510
496
  /** @internal */
511
497
  export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
512
498
  constructor(
513
- services: ServiceMap.ServiceMap<never>,
499
+ context: Context.Context<never>,
514
500
  interruptible: boolean = true
515
501
  ) {
516
502
  this[FiberTypeId] = fiberVariance as any
517
- this.setServices(services)
503
+ this.setContext(context)
518
504
  this.id = ++fiberIdStore.id
519
505
  this.currentOpCount = 0
520
506
  this.currentLoopCount = 0
@@ -541,8 +527,8 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
541
527
  _interruptedCause: Cause.Cause<never> | undefined
542
528
  _yielded: Exit.Exit<any, any> | (() => void) | undefined
543
529
 
544
- // set in setServices
545
- services!: ServiceMap.ServiceMap<never>
530
+ // set in setContext
531
+ context!: Context.Context<never>
546
532
  currentScheduler!: Scheduler.Scheduler
547
533
  currentTracerContext: Tracer.Tracer["context"]
548
534
  currentSpan: Tracer.AnySpan | undefined
@@ -551,9 +537,15 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
551
537
  currentStackFrame: StackFrame | undefined
552
538
  runtimeMetrics: Metric.FiberRuntimeMetricsService | undefined
553
539
  maxOpsBeforeYield!: number
540
+ currentPreventYield!: boolean
541
+
542
+ _dispatcher: Scheduler.SchedulerDispatcher | undefined = undefined
543
+ get currentDispatcher(): Scheduler.SchedulerDispatcher {
544
+ return this._dispatcher ??= this.currentScheduler.makeDispatcher()
545
+ }
554
546
 
555
- getRef<X>(ref: ServiceMap.Reference<X>): X {
556
- return ServiceMap.getReferenceUnsafe(this.services, ref)
547
+ getRef<X>(ref: Context.Reference<X>): X {
548
+ return Context.getReferenceUnsafe(this.context, ref)
557
549
  }
558
550
  addObserver(cb: (exit: Exit.Exit<A, E>) => void): () => void {
559
551
  if (this._exit) {
@@ -568,13 +560,13 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
568
560
  }
569
561
  }
570
562
  }
571
- interruptUnsafe(fiberId?: number | undefined, annotations?: ServiceMap.ServiceMap<never> | undefined): void {
563
+ interruptUnsafe(fiberId?: number | undefined, annotations?: Context.Context<never> | undefined): void {
572
564
  if (this._exit) {
573
565
  return
574
566
  }
575
567
  let cause = causeInterrupt(fiberId)
576
568
  if (this.currentStackFrame) {
577
- cause = causeAnnotate(cause, ServiceMap.make(CauseStackTrace, this.currentStackFrame))
569
+ cause = causeAnnotate(cause, Context.make(CauseStackTrace, this.currentStackFrame))
578
570
  }
579
571
  if (annotations) {
580
572
  cause = causeAnnotate(cause, annotations)
@@ -590,7 +582,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
590
582
  return this._exit
591
583
  }
592
584
  evaluate(effect: Primitive): void {
593
- this.runtimeMetrics?.recordFiberStart(this.services)
585
+ this.runtimeMetrics?.recordFiberStart(this.context)
594
586
  if (this._exit) {
595
587
  return
596
588
  } else if (this._yielded !== undefined) {
@@ -611,7 +603,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
611
603
  }
612
604
 
613
605
  this._exit = exit
614
- this.runtimeMetrics?.recordFiberEnd(this.services, this._exit)
606
+ this.runtimeMetrics?.recordFiberEnd(this.context, this._exit)
615
607
  for (let i = 0; i < this._observers.length; i++) {
616
608
  this._observers[i](exit)
617
609
  }
@@ -629,6 +621,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
629
621
  this.currentOpCount++
630
622
  if (
631
623
  !yielding &&
624
+ !this.currentPreventYield &&
632
625
  this.currentScheduler.shouldYield(this as any)
633
626
  ) {
634
627
  yielding = true
@@ -684,16 +677,21 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
684
677
  pipe() {
685
678
  return pipeArguments(this, arguments)
686
679
  }
687
- setServices(services: ServiceMap.ServiceMap<never>): void {
688
- this.services = services
689
- this.currentScheduler = this.getRef(Scheduler.Scheduler)
690
- this.currentSpan = services.mapUnsafe.get(Tracer.ParentSpanKey)
680
+ setContext(context: Context.Context<never>): void {
681
+ this.context = context
682
+ const scheduler = this.getRef(Scheduler.Scheduler)
683
+ if (scheduler !== this.currentScheduler) {
684
+ this.currentScheduler = scheduler
685
+ this._dispatcher = undefined
686
+ }
687
+ this.currentSpan = context.mapUnsafe.get(Tracer.ParentSpanKey)
691
688
  this.currentLogLevel = this.getRef(CurrentLogLevel)
692
689
  this.minimumLogLevel = this.getRef(MinimumLogLevel)
693
- this.currentStackFrame = services.mapUnsafe.get(CurrentStackFrame.key)
690
+ this.currentStackFrame = context.mapUnsafe.get(CurrentStackFrame.key)
694
691
  this.maxOpsBeforeYield = this.getRef(Scheduler.MaxOpsBeforeYield)
695
- this.runtimeMetrics = services.mapUnsafe.get(InternalMetric.FiberRuntimeMetricsKey)
696
- const currentTracer = services.mapUnsafe.get(Tracer.TracerKey)
692
+ this.currentPreventYield = this.getRef(Scheduler.PreventSchedulerYield)
693
+ this.runtimeMetrics = context.mapUnsafe.get(InternalMetric.FiberRuntimeMetricsKey)
694
+ const currentTracer = context.mapUnsafe.get(Tracer.TracerKey)
697
695
  this.currentTracerContext = currentTracer ? currentTracer["context"] : undefined
698
696
  }
699
697
  get currentSpanLocal(): Tracer.Span | undefined {
@@ -711,7 +709,7 @@ const fiberStackAnnotations = (fiber: Fiber.Fiber<any, any>) => {
711
709
  if (!fiber.currentStackFrame) return undefined
712
710
  const annotations = new Map<string, unknown>()
713
711
  annotations.set(CauseStackTrace.key, fiber.currentStackFrame)
714
- return ServiceMap.makeUnsafe(annotations)
712
+ return Context.makeUnsafe(annotations)
715
713
  }
716
714
 
717
715
  const fiberInterruptChildren = (fiber: FiberImpl) => {
@@ -785,6 +783,7 @@ export const fiberJoinAll = <A extends Iterable<Fiber.Fiber<any, any>>>(self: A)
785
783
  > =>
786
784
  callback((resume) => {
787
785
  const fibers = Array.from(self)
786
+ if (fibers.length === 0) return resume(succeed(Arr.empty() as any))
788
787
  const out = new Array<any>(fibers.length) as Arr.NonEmptyArray<any>
789
788
  const cancels = Arr.empty<() => void>()
790
789
  let done = 0
@@ -813,13 +812,29 @@ export const fiberInterrupt = <A, E>(
813
812
 
814
813
  /** @internal */
815
814
  export const fiberInterruptAs: {
816
- (fiberId: number): <A, E>(self: Fiber.Fiber<A, E>) => Effect.Effect<void>
817
- <A, E>(self: Fiber.Fiber<A, E>, fiberId: number): Effect.Effect<void>
818
- } = dual(2, <A, E>(self: Fiber.Fiber<A, E>, fiberId: number): Effect.Effect<void> =>
819
- withFiber((parent) => {
820
- self.interruptUnsafe(fiberId, fiberStackAnnotations(parent))
821
- return asVoid(fiberAwait(self))
822
- }))
815
+ (
816
+ fiberId: number | undefined,
817
+ annotations?: Context.Context<never> | undefined
818
+ ): <A, E>(self: Fiber.Fiber<A, E>) => Effect.Effect<void>
819
+ <A, E>(
820
+ self: Fiber.Fiber<A, E>,
821
+ fiberId: number | undefined,
822
+ annotations?: Context.Context<never> | undefined
823
+ ): Effect.Effect<void>
824
+ } = dual(
825
+ (args) => hasProperty(args[0], FiberTypeId),
826
+ <A, E>(
827
+ self: Fiber.Fiber<A, E>,
828
+ fiberId: number | undefined,
829
+ annotations?: Context.Context<never> | undefined
830
+ ): Effect.Effect<void> =>
831
+ withFiber((parent) => {
832
+ let ann = fiberStackAnnotations(parent)
833
+ ann = ann && annotations ? Context.merge(ann, annotations) : ann ?? annotations
834
+ self.interruptUnsafe(fiberId, ann)
835
+ return asVoid(fiberAwait(self))
836
+ })
837
+ )
823
838
 
824
839
  /** @internal */
825
840
  export const fiberInterruptAll = <A extends Iterable<Fiber.Fiber<any, any>>>(
@@ -896,7 +911,7 @@ export const yieldNowWith: (priority?: number) => Effect.Effect<void> = makePrim
896
911
  op: "Yield",
897
912
  [evaluate](fiber) {
898
913
  let resumed = false
899
- fiber.currentScheduler.scheduleTask(() => {
914
+ fiber.currentDispatcher.scheduleTask(() => {
900
915
  if (resumed) return
901
916
  fiber.evaluate(exitVoid as any)
902
917
  }, this[args] ?? 0)
@@ -1019,10 +1034,8 @@ const callbackOptions: <A, E = never, R = never>(
1019
1034
  }, controller?.signal)
1020
1035
  if (yielded !== false) return yielded
1021
1036
  yielded = true
1022
- keepAlive.increment()
1023
1037
  fiber._yielded = () => {
1024
1038
  resumed = true
1025
- keepAlive.decrement()
1026
1039
  }
1027
1040
  if (controller === undefined && onCancel === undefined) {
1028
1041
  return Yield
@@ -1096,7 +1109,7 @@ export const fnUntraced: Effect.fn.Untraced = (
1096
1109
  body: Function,
1097
1110
  ...pipeables: Array<any>
1098
1111
  ) => {
1099
- return pipeables.length === 0
1112
+ const fn = pipeables.length === 0
1100
1113
  ? function(this: any) {
1101
1114
  return suspend(() => fromIteratorUnsafe(body.apply(this, arguments)))
1102
1115
  }
@@ -1107,8 +1120,15 @@ export const fnUntraced: Effect.fn.Untraced = (
1107
1120
  }
1108
1121
  return effect
1109
1122
  }
1123
+ return defineFunctionLength(body.length, fn)
1110
1124
  }
1111
1125
 
1126
+ const defineFunctionLength = <F extends Function>(length: number, fn: F): F =>
1127
+ Object.defineProperty(fn, "length", {
1128
+ value: length,
1129
+ configurable: true
1130
+ })
1131
+
1112
1132
  const fnStackCleaner = makeStackCleaner(2)
1113
1133
 
1114
1134
  /** @internal */
@@ -1149,7 +1169,7 @@ const makeFn = (
1149
1169
  ? bodyOrOptions
1150
1170
  : (pipeables.pop()!).bind(bodyOrOptions.self)
1151
1171
 
1152
- return function(this: any, ...args: Array<any>) {
1172
+ return defineFunctionLength(body.length, function(this: any, ...args: Array<any>) {
1153
1173
  let result = suspend(() => {
1154
1174
  const iter = body.apply(this, arguments)
1155
1175
  return isEffect(iter) ? iter : fromIteratorUnsafe(iter)
@@ -1179,7 +1199,7 @@ const makeFn = (
1179
1199
  }
1180
1200
  })
1181
1201
  )
1182
- }
1202
+ })
1183
1203
  }
1184
1204
 
1185
1205
  /** @internal */
@@ -1187,17 +1207,20 @@ export const fnUntracedEager: Effect.fn.Untraced = (
1187
1207
  body: Function,
1188
1208
  ...pipeables: Array<any>
1189
1209
  ) =>
1190
- pipeables.length === 0
1191
- ? function(this: any) {
1192
- return fromIteratorEagerUnsafe(() => body.apply(this, arguments))
1193
- }
1194
- : function(this: any) {
1195
- let effect = fromIteratorEagerUnsafe(() => body.apply(this, arguments))
1196
- for (const pipeable of pipeables) {
1197
- effect = pipeable(effect)
1210
+ defineFunctionLength(
1211
+ body.length,
1212
+ pipeables.length === 0
1213
+ ? function(this: any) {
1214
+ return fromIteratorEagerUnsafe(() => body.apply(this, arguments))
1198
1215
  }
1199
- return effect
1200
- }
1216
+ : function(this: any) {
1217
+ let effect = fromIteratorEagerUnsafe(() => body.apply(this, arguments))
1218
+ for (const pipeable of pipeables) {
1219
+ effect = pipeable(effect)
1220
+ }
1221
+ return effect
1222
+ }
1223
+ )
1201
1224
 
1202
1225
  const fromIteratorEagerUnsafe = (
1203
1226
  evaluate: () => Iterator<Effect.Yieldable<any, any, any, any>>
@@ -1946,61 +1969,46 @@ export const exitFindErrorOption = <A, E>(self: Exit.Exit<A, E>): Option.Option<
1946
1969
 
1947
1970
  /** @internal */
1948
1971
  export const service: {
1949
- <I, S>(service: ServiceMap.Service<I, S>): Effect.Effect<S, never, I>
1972
+ <I, S>(service: Context.Key<I, S>): Effect.Effect<S, never, I>
1950
1973
  } = fromYieldable as any
1951
1974
 
1952
1975
  /** @internal */
1953
1976
  export const serviceOption = <I, S>(
1954
- service: ServiceMap.Service<I, S>
1955
- ): Effect.Effect<Option.Option<S>> => withFiber((fiber) => succeed(ServiceMap.getOption(fiber.services, service)))
1977
+ service: Context.Key<I, S>
1978
+ ): Effect.Effect<Option.Option<S>> => withFiber((fiber) => succeed(Context.getOption(fiber.context, service)))
1956
1979
 
1957
1980
  /** @internal */
1958
1981
  export const serviceOptional = <I, S>(
1959
- service: ServiceMap.Service<I, S>
1982
+ service: Context.Key<I, S>
1960
1983
  ): Effect.Effect<S, Cause.NoSuchElementError> =>
1961
1984
  withFiber((fiber) =>
1962
- fiber.services.mapUnsafe.has(service.key)
1963
- ? succeed(ServiceMap.getUnsafe(fiber.services, service))
1985
+ fiber.context.mapUnsafe.has(service.key)
1986
+ ? succeed(Context.getUnsafe(fiber.context, service))
1964
1987
  : fail(new NoSuchElementError())
1965
1988
  )
1966
1989
 
1967
1990
  /** @internal */
1968
- export const updateServices: {
1991
+ export const updateContext: {
1969
1992
  <R2, R>(
1970
- f: (services: ServiceMap.ServiceMap<R2>) => ServiceMap.ServiceMap<NoInfer<R>>
1993
+ f: (context: Context.Context<R2>) => Context.Context<NoInfer<R>>
1971
1994
  ): <A, E>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R2>
1972
1995
  <A, E, R, R2>(
1973
1996
  self: Effect.Effect<A, E, R>,
1974
- f: (services: ServiceMap.ServiceMap<R2>) => ServiceMap.ServiceMap<NoInfer<R>>
1997
+ f: (context: Context.Context<R2>) => Context.Context<NoInfer<R>>
1975
1998
  ): Effect.Effect<A, E, R2>
1976
1999
  } = dual(
1977
2000
  2,
1978
2001
  <A, E, R, R2>(
1979
2002
  self: Effect.Effect<A, E, R>,
1980
- f: (services: ServiceMap.ServiceMap<R2>) => ServiceMap.ServiceMap<NoInfer<R>>
2003
+ f: (context: Context.Context<R2>) => Context.Context<NoInfer<R>>
1981
2004
  ): Effect.Effect<A, E, R2> =>
1982
2005
  withFiber<A, E, R2>((fiber) => {
1983
- const prev = fiber.services as ServiceMap.ServiceMap<R2>
1984
- const nextServices = f(prev)
1985
- if (prev === nextServices) return self as any
1986
- fiber.setServices(nextServices)
1987
- const newServices = new Map<string, unknown>()
1988
- for (const [key, value] of fiber.services.mapUnsafe) {
1989
- if (!prev.mapUnsafe.has(key) || value !== prev.mapUnsafe.get(key)) {
1990
- newServices.set(key, value)
1991
- }
1992
- }
1993
- return onExitPrimitive(self as any, () => {
1994
- const map = new Map(fiber.services.mapUnsafe)
1995
- for (const [key, value] of newServices) {
1996
- if (value !== map.get(key)) continue
1997
- if (prev.mapUnsafe.has(key)) {
1998
- map.set(key, prev.mapUnsafe.get(key))
1999
- } else {
2000
- map.delete(key)
2001
- }
2002
- }
2003
- fiber.setServices(ServiceMap.makeUnsafe(map))
2006
+ const prevContext = fiber.context as Context.Context<R2>
2007
+ const nextContext = f(prevContext)
2008
+ if (prevContext === nextContext) return self as any
2009
+ fiber.setContext(nextContext)
2010
+ return onExitPrimitive(self, () => {
2011
+ fiber.setContext(prevContext)
2004
2012
  return undefined
2005
2013
  })
2006
2014
  })
@@ -2009,78 +2017,77 @@ export const updateServices: {
2009
2017
  /** @internal */
2010
2018
  export const updateService: {
2011
2019
  <I, A>(
2012
- service: ServiceMap.Service<I, A>,
2020
+ service: Context.Key<I, A>,
2013
2021
  f: (value: A) => A
2014
2022
  ): <XA, E, R>(self: Effect.Effect<XA, E, R>) => Effect.Effect<XA, E, R | I>
2015
2023
  <XA, E, R, I, A>(
2016
2024
  self: Effect.Effect<XA, E, R>,
2017
- service: ServiceMap.Service<I, A>,
2025
+ service: Context.Key<I, A>,
2018
2026
  f: (value: A) => A
2019
2027
  ): Effect.Effect<XA, E, R | I>
2020
2028
  } = dual(
2021
2029
  3,
2022
2030
  <XA, E, R, I, A>(
2023
2031
  self: Effect.Effect<XA, E, R>,
2024
- service: ServiceMap.Service<I, A>,
2032
+ service: Context.Key<I, A>,
2025
2033
  f: (value: A) => A
2026
2034
  ): Effect.Effect<XA, E, R | I> =>
2027
- withFiber((fiber) => {
2028
- const prev = ServiceMap.getUnsafe(fiber.services, service)
2035
+ updateContext(self, (s) => {
2036
+ const prev = Context.getUnsafe(s, service)
2029
2037
  const next = f(prev)
2030
- if (prev === next) return self
2031
- fiber.setServices(ServiceMap.add(fiber.services, service, next))
2032
- return onExit(self, () => sync(() => fiber.setServices(ServiceMap.add(fiber.services, service, prev))))
2038
+ if (prev === next) return s
2039
+ return Context.add(s, service, next)
2033
2040
  })
2034
2041
  )
2035
2042
 
2036
2043
  /** @internal */
2037
- export const services = <R = never>(): Effect.Effect<ServiceMap.ServiceMap<R>> => getServiceMap as any
2038
- const getServiceMap = withFiber((fiber) => succeed(fiber.services))
2044
+ export const context = <R = never>(): Effect.Effect<Context.Context<R>> => getContext as any
2045
+ const getContext = withFiber((fiber) => succeed(fiber.context))
2039
2046
 
2040
2047
  /** @internal */
2041
- export const servicesWith = <R, A, E, R2>(
2042
- f: (services: ServiceMap.ServiceMap<R>) => Effect.Effect<A, E, R2>
2043
- ): Effect.Effect<A, E, R | R2> => withFiber((fiber) => f(fiber.services as ServiceMap.ServiceMap<R>))
2048
+ export const contextWith = <R, A, E, R2>(
2049
+ f: (context: Context.Context<R>) => Effect.Effect<A, E, R2>
2050
+ ): Effect.Effect<A, E, R | R2> => withFiber((fiber) => f(fiber.context as Context.Context<R>))
2044
2051
 
2045
2052
  /** @internal */
2046
- export const provideServices: {
2053
+ export const provideContext: {
2047
2054
  <XR>(
2048
- services: ServiceMap.ServiceMap<XR>
2055
+ context: Context.Context<XR>
2049
2056
  ): <A, E, R>(
2050
2057
  self: Effect.Effect<A, E, R>
2051
2058
  ) => Effect.Effect<A, E, Exclude<R, XR>>
2052
2059
  <A, E, R, XR>(
2053
2060
  self: Effect.Effect<A, E, R>,
2054
- services: ServiceMap.ServiceMap<XR>
2061
+ context: Context.Context<XR>
2055
2062
  ): Effect.Effect<A, E, Exclude<R, XR>>
2056
2063
  } = dual(
2057
2064
  2,
2058
2065
  <A, E, R, XR>(
2059
2066
  self: Effect.Effect<A, E, R>,
2060
- services: ServiceMap.ServiceMap<XR>
2067
+ context: Context.Context<XR>
2061
2068
  ): Effect.Effect<A, E, Exclude<R, XR>> => {
2062
2069
  if (effectIsExit(self)) return self as any
2063
- return updateServices(self, ServiceMap.merge(services)) as any
2070
+ return updateContext(self, Context.merge(context)) as any
2064
2071
  }
2065
2072
  )
2066
2073
 
2067
2074
  /** @internal */
2068
2075
  export const provideService: {
2069
2076
  <I, S>(
2070
- service: ServiceMap.Service<I, S>
2077
+ service: Context.Key<I, S>
2071
2078
  ): {
2072
2079
  (implementation: S): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, I>>
2073
2080
  <A, E, R>(self: Effect.Effect<A, E, R>, implementation: S): Effect.Effect<A, E, Exclude<R, I>>
2074
2081
  }
2075
2082
  <I, S>(
2076
- key: ServiceMap.Service<I, S>,
2083
+ key: Context.Key<I, S>,
2077
2084
  implementation: S
2078
2085
  ): <A, E, R>(
2079
2086
  self: Effect.Effect<A, E, R>
2080
2087
  ) => Effect.Effect<A, E, Exclude<R, I>>
2081
2088
  <A, E, R, I, S>(
2082
2089
  self: Effect.Effect<A, E, R>,
2083
- service: ServiceMap.Service<I, S>,
2090
+ service: Context.Key<I, S>,
2084
2091
  implementation: S
2085
2092
  ): Effect.Effect<A, E, Exclude<R, I>>
2086
2093
  } = function(this: any) {
@@ -2093,34 +2100,33 @@ export const provideService: {
2093
2100
 
2094
2101
  const provideServiceImpl = <A, E, R, I, S>(
2095
2102
  self: Effect.Effect<A, E, R>,
2096
- service: ServiceMap.Service<I, S>,
2103
+ service: Context.Key<I, S>,
2097
2104
  implementation: S
2098
2105
  ): Effect.Effect<A, E, Exclude<R, I>> =>
2099
- withFiber((fiber) => {
2100
- const prev = ServiceMap.getOption(fiber.services, service)
2101
- if (prev._tag === "Some" && prev.value === implementation) return self
2102
- fiber.setServices(ServiceMap.add(fiber.services, service, implementation))
2103
- return onExit(self, () => sync(() => fiber.setServices(ServiceMap.addOrOmit(fiber.services, service, prev))))
2106
+ updateContext(self, (s) => {
2107
+ const prev = s.mapUnsafe.get(service.key)
2108
+ if (prev === implementation) return s
2109
+ return Context.add(s, service, implementation)
2104
2110
  }) as any
2105
2111
 
2106
2112
  /** @internal */
2107
2113
  export const provideServiceEffect: {
2108
2114
  <I, S, E2, R2>(
2109
- service: ServiceMap.Service<I, S>,
2115
+ service: Context.Key<I, S>,
2110
2116
  acquire: Effect.Effect<S, E2, R2>
2111
2117
  ): <A, E, R>(
2112
2118
  self: Effect.Effect<A, E, R>
2113
2119
  ) => Effect.Effect<A, E | E2, Exclude<R, I> | R2>
2114
2120
  <A, E, R, I, S, E2, R2>(
2115
2121
  self: Effect.Effect<A, E, R>,
2116
- service: ServiceMap.Service<I, S>,
2122
+ service: Context.Key<I, S>,
2117
2123
  acquire: Effect.Effect<S, E2, R2>
2118
2124
  ): Effect.Effect<A, E | E2, Exclude<R, I> | R2>
2119
2125
  } = dual(
2120
2126
  3,
2121
2127
  <A, E, R, I, S, E2, R2>(
2122
2128
  self: Effect.Effect<A, E, R>,
2123
- service: ServiceMap.Service<I, S>,
2129
+ service: Context.Key<I, S>,
2124
2130
  acquire: Effect.Effect<S, E2, R2>
2125
2131
  ): Effect.Effect<A, E | E2, Exclude<R, I> | R2> =>
2126
2132
  flatMap(acquire, (implementation) => provideService(self, service, implementation))
@@ -2204,19 +2210,12 @@ export const filterOrFail: {
2204
2210
  predicate: Predicate.Predicate<NoInfer<A>>,
2205
2211
  orFailWith: (a: NoInfer<A>) => E2
2206
2212
  ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E2 | E, R>
2207
- <A, B, X, E2>(
2208
- filter: Filter.Filter<NoInfer<A>, B, X>,
2209
- orFailWith: (x: X) => E2
2210
- ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R>
2211
2213
  <A, B extends A>(
2212
2214
  refinement: Predicate.Refinement<NoInfer<A>, B>
2213
2215
  ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, Cause.NoSuchElementError | E, R>
2214
2216
  <A>(
2215
2217
  predicate: Predicate.Predicate<NoInfer<A>>
2216
2218
  ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, Cause.NoSuchElementError | E, R>
2217
- <A, B, X>(
2218
- filter: Filter.Filter<NoInfer<A>, B, X>
2219
- ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, Cause.NoSuchElementError | E, R>
2220
2219
  <A, E, R, E2, B extends A>(
2221
2220
  self: Effect.Effect<A, E, R>,
2222
2221
  refinement: Predicate.Refinement<NoInfer<A>, B>,
@@ -2227,11 +2226,6 @@ export const filterOrFail: {
2227
2226
  predicate: Predicate.Predicate<NoInfer<A>>,
2228
2227
  orFailWith: (a: NoInfer<A>) => E2
2229
2228
  ): Effect.Effect<A, E2 | E, R>
2230
- <A, E, R, B, X, E2>(
2231
- self: Effect.Effect<A, E, R>,
2232
- filter: Filter.Filter<A, B, X>,
2233
- orFailWith: (x: X) => E2
2234
- ): Effect.Effect<B, E2 | E, R>
2235
2229
  <A, E, R, B extends A>(
2236
2230
  self: Effect.Effect<A, E, R>,
2237
2231
  refinement: Predicate.Refinement<NoInfer<A>, B>
@@ -2240,18 +2234,14 @@ export const filterOrFail: {
2240
2234
  self: Effect.Effect<A, E, R>,
2241
2235
  predicate: Predicate.Predicate<NoInfer<A>>
2242
2236
  ): Effect.Effect<A, E | Cause.NoSuchElementError, R>
2243
- <A, E, R, B, X>(
2244
- self: Effect.Effect<A, E, R>,
2245
- filter: Filter.Filter<A, B, X>
2246
- ): Effect.Effect<B, E | Cause.NoSuchElementError, R>
2247
2237
  } = dual((args) => isEffect(args[0]), <A, E, R, E2>(
2248
2238
  self: Effect.Effect<A, E, R>,
2249
- filter: Predicate.Predicate<NoInfer<A>> | Filter.Filter<A, any, any>,
2239
+ predicate: Predicate.Predicate<NoInfer<A>>,
2250
2240
  orFailWith?: (a: any) => E2
2251
2241
  ): Effect.Effect<any, E | E2 | Cause.NoSuchElementError, R> =>
2252
2242
  filterOrElse(
2253
2243
  self,
2254
- filter as any,
2244
+ predicate as any,
2255
2245
  orFailWith ? (a: any) => fail(orFailWith(a)) : () => fail(new NoSuchElementError() as E2)
2256
2246
  ))
2257
2247
 
@@ -2401,27 +2391,55 @@ const OnFailureProto = makePrimitiveProto({
2401
2391
 
2402
2392
  /** @internal */
2403
2393
  export const catchCauseIf: {
2404
- <E, Result extends Filter.ResultOrBool<Cause.Cause<any>>, B, E2, R2>(
2405
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
2406
- f: (failure: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2394
+ <E, B, E2, R2>(
2395
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
2396
+ f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2397
+ ): <A, R>(
2398
+ self: Effect.Effect<A, E, R>
2399
+ ) => Effect.Effect<A | B, E | E2, R | R2>
2400
+ <A, E, R, B, E2, R2>(
2401
+ self: Effect.Effect<A, E, R>,
2402
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
2403
+ f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2404
+ ): Effect.Effect<A | B, E | E2, R | R2>
2405
+ } = dual(
2406
+ 3,
2407
+ <A, E, R, B, E2, R2>(
2408
+ self: Effect.Effect<A, E, R>,
2409
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
2410
+ f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2411
+ ): Effect.Effect<A | B, E | E2, R | R2> =>
2412
+ catchCause(self, (cause): Effect.Effect<B, E | E2, R2> => {
2413
+ if (!predicate(cause)) {
2414
+ return failCause(cause) as any
2415
+ }
2416
+ return internalCall(() => f(cause))
2417
+ })
2418
+ )
2419
+
2420
+ /** @internal */
2421
+ export const catchCauseFilter: {
2422
+ <E, B, E2, R2, EB, X extends Cause.Cause<any>>(
2423
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
2424
+ f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2407
2425
  ): <A, R>(
2408
2426
  self: Effect.Effect<A, E, R>
2409
- ) => Effect.Effect<A | B, Cause.Cause.Error<Filter.Fail<Cause.Cause<E>, Result>> | E2, R | R2>
2410
- <A, E, R, B, E2, R2, Result extends Filter.ResultOrBool<Cause.Cause<any>>>(
2427
+ ) => Effect.Effect<A | B, Cause.Cause.Error<X> | E2, R | R2>
2428
+ <A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
2411
2429
  self: Effect.Effect<A, E, R>,
2412
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
2413
- f: (failure: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2414
- ): Effect.Effect<A | B, Cause.Cause.Error<Filter.Fail<Cause.Cause<E>, Result>> | E2, R | R2>
2430
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
2431
+ f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2432
+ ): Effect.Effect<A | B, Cause.Cause.Error<X> | E2, R | R2>
2415
2433
  } = dual(
2416
2434
  3,
2417
- <A, E, R, B, E2, R2, Result extends Filter.ResultOrBool<Cause.Cause<any>>>(
2418
- self: Effect.Effect<A, E, R>,
2419
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
2420
- f: (failure: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2421
- ): Effect.Effect<A | B, Cause.Cause.Error<Filter.Fail<Cause.Cause<E>, Result>> | E2, R | R2> =>
2422
- catchCause(self, (cause): Effect.Effect<B, Cause.Cause.Error<Filter.Fail<Cause.Cause<E>, Result>> | E2, R | R2> => {
2423
- const eb = Filter.apply(filter as any, cause)
2424
- return !Result.isFailure(eb) ? internalCall(() => f(eb.success as any, cause)) : failCause(eb.failure as any)
2435
+ <A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
2436
+ self: Effect.Effect<A, E, R>,
2437
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
2438
+ f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2439
+ ): Effect.Effect<A | B, Cause.Cause.Error<X> | E2, R | R2> =>
2440
+ catchCause(self, (cause): Effect.Effect<B, Cause.Cause.Error<X> | E2, R2> => {
2441
+ const eb = filter(cause)
2442
+ return Result.isFailure(eb) ? failCause(eb.failure) : internalCall(() => f(eb.success, cause))
2425
2443
  })
2426
2444
  )
2427
2445
 
@@ -2439,7 +2457,7 @@ export const catch_: {
2439
2457
  <A, E, R, B, E2, R2>(
2440
2458
  self: Effect.Effect<A, E, R>,
2441
2459
  f: (a: NoInfer<E>) => Effect.Effect<B, E2, R2>
2442
- ): Effect.Effect<A | B, E2, R | R2> => catchCauseIf(self, findError as any, (e: any) => f(e)) as any
2460
+ ): Effect.Effect<A | B, E2, R | R2> => catchCauseFilter(self, findError as any, (e: any) => f(e)) as any
2443
2461
  )
2444
2462
 
2445
2463
  /** @internal */
@@ -2470,7 +2488,7 @@ export const catchDefect: {
2470
2488
  <A, E, R, B, E2, R2>(
2471
2489
  self: Effect.Effect<A, E, R>,
2472
2490
  f: (defect: unknown) => Effect.Effect<B, E2, R2>
2473
- ): Effect.Effect<A | B, E | E2, R | R2> => catchCauseIf(self, findDefect as any, f as any) as any
2491
+ ): Effect.Effect<A | B, E | E2, R | R2> => catchCauseFilter(self, findDefect as any, f as any) as any
2474
2492
  )
2475
2493
 
2476
2494
  /** @internal */
@@ -2493,32 +2511,56 @@ export const tapCause: {
2493
2511
 
2494
2512
  /** @internal */
2495
2513
  export const tapCauseIf: {
2496
- <E, Result extends Filter.ResultOrBool, B, E2, R2>(
2497
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
2498
- f: (a: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2514
+ <E, B, E2, R2>(
2515
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
2516
+ f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2499
2517
  ): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>
2500
- <A, E, R, Result extends Filter.ResultOrBool, B, E2, R2>(
2518
+ <A, E, R, B, E2, R2>(
2501
2519
  self: Effect.Effect<A, E, R>,
2502
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
2503
- f: (a: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2520
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
2521
+ f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2504
2522
  ): Effect.Effect<A, E | E2, R | R2>
2505
2523
  } = dual(
2506
2524
  3,
2507
- <A, E, R, Result extends Filter.ResultOrBool, B, E2, R2>(
2525
+ <A, E, R, B, E2, R2>(
2508
2526
  self: Effect.Effect<A, E, R>,
2509
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
2510
- f: (a: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2527
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
2528
+ f: (cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2511
2529
  ): Effect.Effect<A, E | E2, R | R2> =>
2512
2530
  catchCauseIf(
2513
2531
  self,
2514
- ((cause: Cause.Cause<E>) => {
2515
- const result = Filter.apply(filter as any, cause)
2516
- return Result.isFailure(result) ? Result.fail(cause) : result
2517
- }) as any,
2518
- (failure: any, cause: Cause.Cause<E>) => andThen(internalCall(() => f(failure, cause)), failCause(cause))
2532
+ predicate,
2533
+ (cause) => andThen(internalCall(() => f(cause)), failCause(cause))
2519
2534
  )
2520
2535
  )
2521
2536
 
2537
+ /** @internal */
2538
+ export const tapCauseFilter: {
2539
+ <E, B, E2, R2, EB, X extends Cause.Cause<any>>(
2540
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
2541
+ f: (a: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2542
+ ): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>
2543
+ <A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
2544
+ self: Effect.Effect<A, E, R>,
2545
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
2546
+ f: (a: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2547
+ ): Effect.Effect<A, E | E2, R | R2>
2548
+ } = dual(
2549
+ 3,
2550
+ <A, E, R, B, E2, R2, EB, X extends Cause.Cause<any>>(
2551
+ self: Effect.Effect<A, E, R>,
2552
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
2553
+ f: (a: EB, cause: Cause.Cause<E>) => Effect.Effect<B, E2, R2>
2554
+ ): Effect.Effect<A, E | E2, R | R2> =>
2555
+ catchCause(self, (cause) => {
2556
+ const result = filter(cause)
2557
+ if (Result.isFailure(result)) {
2558
+ return failCause(cause)
2559
+ }
2560
+ return andThen(internalCall(() => f(result.success, cause)), failCause(cause))
2561
+ })
2562
+ )
2563
+
2522
2564
  /** @internal */
2523
2565
  export const tapError: {
2524
2566
  <E, B, E2, R2>(
@@ -2533,7 +2575,7 @@ export const tapError: {
2533
2575
  <A, E, R, B, E2, R2>(
2534
2576
  self: Effect.Effect<A, E, R>,
2535
2577
  f: (e: NoInfer<E>) => Effect.Effect<B, E2, R2>
2536
- ): Effect.Effect<A, E | E2, R | R2> => tapCauseIf(self, findError as any, (e: any) => f(e)) as any
2578
+ ): Effect.Effect<A, E | E2, R | R2> => tapCauseFilter(self, findError as any, (e: any) => f(e)) as any
2537
2579
  )
2538
2580
 
2539
2581
  /** @internal */
@@ -2600,7 +2642,7 @@ export const tapDefect: {
2600
2642
  <A, E, R, B, E2, R2>(
2601
2643
  self: Effect.Effect<A, E, R>,
2602
2644
  f: (defect: unknown) => Effect.Effect<B, E2, R2>
2603
- ): Effect.Effect<A, E | E2, R | R2> => tapCauseIf(self, findDefect as any, (_: any) => f(_)) as any
2645
+ ): Effect.Effect<A, E | E2, R | R2> => tapCauseFilter(self, findDefect as any, (_: any) => f(_)) as any
2604
2646
  )
2605
2647
 
2606
2648
  /** @internal */
@@ -2610,10 +2652,10 @@ export const catchIf: {
2610
2652
  f: (e: EB) => Effect.Effect<A2, E2, R2>,
2611
2653
  orElse?: ((e: Exclude<E, EB>) => Effect.Effect<A3, E3, R3>) | undefined
2612
2654
  ): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
2613
- <E, Result extends Filter.ResultOrBool, A2, E2, R2, A3 = never, E3 = Filter.Fail<E, Result>, R3 = never>(
2614
- filter: Filter.OrPredicate<NoInfer<E>, Result>,
2615
- f: (e: Filter.Pass<E, Result>) => Effect.Effect<A2, E2, R2>,
2616
- orElse?: ((e: Filter.Fail<E, Result>) => Effect.Effect<A3, E3, R3>) | undefined
2655
+ <E, A2, E2, R2, A3 = never, E3 = E, R3 = never>(
2656
+ predicate: Predicate.Predicate<NoInfer<E>>,
2657
+ f: (e: NoInfer<E>) => Effect.Effect<A2, E2, R2>,
2658
+ orElse?: ((e: NoInfer<E>) => Effect.Effect<A3, E3, R3>) | undefined
2617
2659
  ): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
2618
2660
  <A, E, R, EB extends E, A2, E2, R2, A3 = never, E3 = Exclude<E, EB>, R3 = never>(
2619
2661
  self: Effect.Effect<A, E, R>,
@@ -2621,28 +2663,59 @@ export const catchIf: {
2621
2663
  f: (e: EB) => Effect.Effect<A2, E2, R2>,
2622
2664
  orElse?: ((e: Exclude<E, EB>) => Effect.Effect<A3, E3, R3>) | undefined
2623
2665
  ): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
2624
- <A, E, R, Result extends Filter.ResultOrBool, A2, E2, R2, A3 = never, E3 = Filter.Fail<E, Result>, R3 = never>(
2666
+ <A, E, R, A2, E2, R2, A3 = never, E3 = E, R3 = never>(
2667
+ self: Effect.Effect<A, E, R>,
2668
+ predicate: Predicate.Predicate<E>,
2669
+ f: (e: E) => Effect.Effect<A2, E2, R2>,
2670
+ orElse?: ((e: E) => Effect.Effect<A3, E3, R3>) | undefined
2671
+ ): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
2672
+ } = dual(
2673
+ (args) => isEffect(args[0]),
2674
+ <A, E, R, A2, E2, R2, A3 = never, E3 = E, R3 = never>(
2675
+ self: Effect.Effect<A, E, R>,
2676
+ predicate: Predicate.Predicate<E>,
2677
+ f: (e: E) => Effect.Effect<A2, E2, R2>,
2678
+ orElse?: ((e: E) => Effect.Effect<A3, E3, R3>) | undefined
2679
+ ): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3> =>
2680
+ catchCause(self, (cause): Effect.Effect<A2 | A3, E2 | E3, R2 | R3> => {
2681
+ const error = findError(cause)
2682
+ if (Result.isFailure(error)) return failCause(error.failure)
2683
+ if (!predicate(error.success)) {
2684
+ return orElse ? internalCall(() => orElse(error.success as any)) : failCause(cause as any as Cause.Cause<E3>)
2685
+ }
2686
+ return internalCall(() => f(error.success as any))
2687
+ })
2688
+ )
2689
+
2690
+ /** @internal */
2691
+ export const catchFilter: {
2692
+ <E, EB, A2, E2, R2, X, A3 = never, E3 = X, R3 = never>(
2693
+ filter: Filter.Filter<NoInfer<E>, EB, X>,
2694
+ f: (e: EB) => Effect.Effect<A2, E2, R2>,
2695
+ orElse?: ((e: X) => Effect.Effect<A3, E3, R3>) | undefined
2696
+ ): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
2697
+ <A, E, R, EB, A2, E2, R2, X, A3 = never, E3 = X, R3 = never>(
2625
2698
  self: Effect.Effect<A, E, R>,
2626
- filter: Filter.OrPredicate<NoInfer<E>, Result>,
2627
- f: (e: Filter.Pass<E, Result>) => Effect.Effect<A2, E2, R2>,
2628
- orElse?: ((e: Filter.Fail<E, Result>) => Effect.Effect<A3, E3, R3>) | undefined
2699
+ filter: Filter.Filter<NoInfer<E>, EB, X>,
2700
+ f: (e: EB) => Effect.Effect<A2, E2, R2>,
2701
+ orElse?: ((e: X) => Effect.Effect<A3, E3, R3>) | undefined
2629
2702
  ): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
2630
2703
  } = dual(
2631
2704
  (args) => isEffect(args[0]),
2632
2705
  <A, E, R, EB, A2, E2, R2, X, A3 = never, E3 = X, R3 = never>(
2633
2706
  self: Effect.Effect<A, E, R>,
2634
- filter: Filter.Filter<NoInfer<E>, EB, X> | Predicate.Predicate<NoInfer<E>>,
2707
+ filter: Filter.Filter<NoInfer<E>, EB, X>,
2635
2708
  f: (e: EB) => Effect.Effect<A2, E2, R2>,
2636
2709
  orElse?: ((e: X) => Effect.Effect<A3, E3, R3>) | undefined
2637
2710
  ): Effect.Effect<A | A2 | A3, E2 | E3, R | R2 | R3> =>
2638
2711
  catchCause(self, (cause): Effect.Effect<A2 | A3, E2 | E3, R2 | R3> => {
2639
2712
  const error = findError(cause)
2640
2713
  if (Result.isFailure(error)) return failCause(error.failure)
2641
- const result = Filter.apply(filter as any, error.success)
2714
+ const result = filter(error.success)
2642
2715
  if (Result.isFailure(result)) {
2643
2716
  return orElse ? internalCall(() => orElse(result.failure as any)) : failCause(cause as any as Cause.Cause<E3>)
2644
2717
  }
2645
- return internalCall(() => f(result.success as any))
2718
+ return internalCall(() => f(result.success))
2646
2719
  })
2647
2720
  )
2648
2721
 
@@ -2778,7 +2851,7 @@ export const catchTags: {
2778
2851
  >
2779
2852
  } = dual((args) => isEffect(args[0]), (self: Effect.Effect<any, any, any>, cases: Record<string, any>, orElse: any) => {
2780
2853
  let keys: Array<string>
2781
- return catchIf(
2854
+ return catchFilter(
2782
2855
  self,
2783
2856
  (e) => {
2784
2857
  keys ??= Object.keys(cases)
@@ -2788,7 +2861,7 @@ export const catchTags: {
2788
2861
  },
2789
2862
  (e: any) => internalCall(() => cases[e["_tag"] as string](e)),
2790
2863
  orElse
2791
- )
2864
+ ) as any
2792
2865
  })
2793
2866
 
2794
2867
  /** @internal */
@@ -2806,8 +2879,16 @@ export const catchReason: {
2806
2879
  >(
2807
2880
  errorTag: K,
2808
2881
  reasonTag: RK,
2809
- f: (reason: ExtractReason<ExtractTag<NoInfer<E>, K>, RK>) => Effect.Effect<A2, E2, R2>,
2810
- orElse?: ((reasons: ExcludeReason<ExtractTag<NoInfer<E>, K>, RK>) => Effect.Effect<A3, E3, R3>) | undefined
2882
+ f: (
2883
+ reason: ExtractReason<ExtractTag<NoInfer<E>, K>, RK>,
2884
+ error: NarrowReason<ExtractTag<NoInfer<E>, K>, RK>
2885
+ ) => Effect.Effect<A2, E2, R2>,
2886
+ orElse?:
2887
+ | ((
2888
+ reasons: ExcludeReason<ExtractTag<NoInfer<E>, K>, RK>,
2889
+ error: OmitReason<ExtractTag<NoInfer<E>, K>, RK>
2890
+ ) => Effect.Effect<A3, E3, R3>)
2891
+ | undefined
2811
2892
  ): <A, R>(
2812
2893
  self: Effect.Effect<A, E, R>
2813
2894
  ) => Effect.Effect<
@@ -2831,8 +2912,16 @@ export const catchReason: {
2831
2912
  self: Effect.Effect<A, E, R>,
2832
2913
  errorTag: K,
2833
2914
  reasonTag: RK,
2834
- f: (reason: ExtractReason<ExtractTag<E, K>, RK>) => Effect.Effect<A2, E2, R2>,
2835
- orElse?: ((reasons: ExcludeReason<ExtractTag<E, K>, RK>) => Effect.Effect<A3, E3, R3>) | undefined
2915
+ f: (
2916
+ reason: ExtractReason<ExtractTag<E, K>, RK>,
2917
+ error: NarrowReason<ExtractTag<E, K>, RK>
2918
+ ) => Effect.Effect<A2, E2, R2>,
2919
+ orElse?:
2920
+ | ((
2921
+ reasons: ExcludeReason<ExtractTag<E, K>, RK>,
2922
+ error: OmitReason<ExtractTag<E, K>, RK>
2923
+ ) => Effect.Effect<A3, E3, R3>)
2924
+ | undefined
2836
2925
  ): Effect.Effect<
2837
2926
  A | A2 | Exclude<A3, unassigned>,
2838
2927
  (A3 extends unassigned ? E : ExcludeTag<E, K>) | E2 | E3,
@@ -2856,8 +2945,13 @@ export const catchReason: {
2856
2945
  self: Effect.Effect<A, E, R>,
2857
2946
  errorTag: K,
2858
2947
  reasonTag: RK,
2859
- f: (reason: ExtractReason<ExtractTag<E, K>, RK>) => Effect.Effect<A2, E2, R2>,
2860
- orElse?: ((reasons: ExcludeReason<ExtractTag<E, K>, RK>) => Effect.Effect<A3, E3, R3>) | undefined
2948
+ f: (reason: ExtractReason<ExtractTag<E, K>, RK>, error: ExtractTag<E, K>) => Effect.Effect<A2, E2, R2>,
2949
+ orElse?:
2950
+ | ((
2951
+ reasons: ExcludeReason<ExtractTag<E, K>, RK>,
2952
+ error: OmitReason<ExtractTag<E, K>, RK>
2953
+ ) => Effect.Effect<A3, E3, R3>)
2954
+ | undefined
2861
2955
  ): Effect.Effect<
2862
2956
  A | A2 | Exclude<A3, unassigned>,
2863
2957
  (A3 extends unassigned ? E : ExcludeTag<E, K>) | E2 | E3,
@@ -2868,8 +2962,8 @@ export const catchReason: {
2868
2962
  ((e: any) => isTagged(e, errorTag) && hasProperty(e, "reason")) as any,
2869
2963
  (e: any): Effect.Effect<A2 | A3, E | E2 | E3, R2 | R3> => {
2870
2964
  const reason = e.reason as any
2871
- if (isTagged(reason, reasonTag)) return f(reason as any)
2872
- return orElse ? internalCall(() => orElse(reason)) : fail(e)
2965
+ if (isTagged(reason, reasonTag)) return f(reason as any, e)
2966
+ return orElse ? internalCall(() => orElse(reason, e)) : fail(e)
2873
2967
  }
2874
2968
  ) as any
2875
2969
  )
@@ -2881,7 +2975,8 @@ export const catchReasons: {
2881
2975
  E,
2882
2976
  Cases extends {
2883
2977
  [RK in ReasonTags<ExtractTag<NoInfer<E>, K>>]+?: (
2884
- reason: ExtractReason<ExtractTag<NoInfer<E>, K>, RK>
2978
+ reason: ExtractReason<ExtractTag<NoInfer<E>, K>, RK>,
2979
+ error: NarrowReason<ExtractTag<NoInfer<E>, K>, RK>
2885
2980
  ) => Effect.Effect<any, any, any>
2886
2981
  },
2887
2982
  A2 = unassigned,
@@ -2892,7 +2987,8 @@ export const catchReasons: {
2892
2987
  cases: Cases,
2893
2988
  orElse?:
2894
2989
  | ((
2895
- reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>
2990
+ reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>,
2991
+ error: OmitReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>
2896
2992
  ) => Effect.Effect<A2, E2, R2>)
2897
2993
  | undefined
2898
2994
  ): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<
@@ -2919,7 +3015,8 @@ export const catchReasons: {
2919
3015
  K extends Tags<E>,
2920
3016
  Cases extends {
2921
3017
  [RK in ReasonTags<ExtractTag<E, K>>]+?: (
2922
- reason: ExtractReason<ExtractTag<E, K>, RK>
3018
+ reason: ExtractReason<ExtractTag<E, K>, RK>,
3019
+ error: NarrowReason<ExtractTag<E, K>, RK>
2923
3020
  ) => Effect.Effect<any, any, any>
2924
3021
  },
2925
3022
  A2 = unassigned,
@@ -2931,7 +3028,8 @@ export const catchReasons: {
2931
3028
  cases: Cases,
2932
3029
  orElse?:
2933
3030
  | ((
2934
- reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>
3031
+ reason: ExcludeReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>,
3032
+ error: OmitReason<ExtractTag<NoInfer<E>, K>, Extract<keyof Cases, string>>
2935
3033
  ) => Effect.Effect<A2, E2, R2>)
2936
3034
  | undefined
2937
3035
  ): Effect.Effect<
@@ -2964,9 +3062,9 @@ export const catchReasons: {
2964
3062
  const reason = e.reason
2965
3063
  keys ??= Object.keys(cases)
2966
3064
  if (keys.includes(reason._tag)) {
2967
- return internalCall(() => (cases as any)[reason._tag](reason))
3065
+ return internalCall(() => (cases as any)[reason._tag](reason, e))
2968
3066
  }
2969
- return orElse ? internalCall(() => orElse(reason)) : fail(e)
3067
+ return orElse ? internalCall(() => orElse(reason, e)) : fail(e)
2970
3068
  }
2971
3069
  )
2972
3070
  })
@@ -2999,7 +3097,7 @@ export const unwrapReason: {
2999
3097
  self: Effect.Effect<A, E, R>,
3000
3098
  errorTag: K
3001
3099
  ): Effect.Effect<A, ExcludeTag<E, K> | ReasonOf<ExtractTag<E, K>>, R> =>
3002
- catchIf(
3100
+ catchFilter(
3003
3101
  self,
3004
3102
  (e: any) => {
3005
3103
  if (isTagged(e, errorTag) && hasProperty(e, "reason")) {
@@ -3008,7 +3106,7 @@ export const unwrapReason: {
3008
3106
  return Result.fail(e)
3009
3107
  },
3010
3108
  fail as any
3011
- )
3109
+ ) as any
3012
3110
  )
3013
3111
 
3014
3112
  /** @internal */
@@ -3092,14 +3190,17 @@ export const eventually = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect
3092
3190
  /** @internal */
3093
3191
  export const ignore: <
3094
3192
  Arg extends Effect.Effect<any, any, any> | {
3095
- readonly log?: boolean | LogLevel.LogLevel | undefined
3193
+ readonly log?: boolean | LogLevel.Severity | undefined
3194
+ readonly message?: string | undefined
3096
3195
  } | undefined = {
3097
- readonly log?: boolean | LogLevel.LogLevel | undefined
3196
+ readonly log?: boolean | LogLevel.Severity | undefined
3197
+ readonly message?: string | undefined
3098
3198
  }
3099
3199
  >(
3100
3200
  effectOrOptions: Arg,
3101
3201
  options?: {
3102
- readonly log?: boolean | LogLevel.LogLevel | undefined
3202
+ readonly log?: boolean | LogLevel.Severity | undefined
3203
+ readonly message?: string | undefined
3103
3204
  } | undefined
3104
3205
  ) => [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ? Effect.Effect<void, never, _R>
3105
3206
  : <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, never, R> = dual(
@@ -3107,7 +3208,8 @@ export const ignore: <
3107
3208
  <A, E, R>(
3108
3209
  self: Effect.Effect<A, E, R>,
3109
3210
  options?: {
3110
- readonly log?: boolean | LogLevel.LogLevel | undefined
3211
+ readonly log?: boolean | LogLevel.Severity | undefined
3212
+ readonly message?: string | undefined
3111
3213
  } | undefined
3112
3214
  ): Effect.Effect<void, never, R> => {
3113
3215
  if (!options?.log) {
@@ -3117,7 +3219,11 @@ export const ignore: <
3117
3219
  return matchCauseEffect(self, {
3118
3220
  onFailure(cause) {
3119
3221
  const failure = findFail(cause)
3120
- return Result.isFailure(failure) ? failCause(failure.failure) : logEffect(cause)
3222
+ return Result.isFailure(failure)
3223
+ ? failCause(failure.failure)
3224
+ : options.message === undefined
3225
+ ? logEffect(cause)
3226
+ : logEffect(options.message, cause)
3121
3227
  },
3122
3228
  onSuccess: (_) => void_
3123
3229
  })
@@ -3127,14 +3233,17 @@ export const ignore: <
3127
3233
  /** @internal */
3128
3234
  export const ignoreCause: <
3129
3235
  Arg extends Effect.Effect<any, any, any> | {
3130
- readonly log?: boolean | LogLevel.LogLevel | undefined
3236
+ readonly log?: boolean | LogLevel.Severity | undefined
3237
+ readonly message?: string | undefined
3131
3238
  } | undefined = {
3132
- readonly log?: boolean | LogLevel.LogLevel | undefined
3239
+ readonly log?: boolean | LogLevel.Severity | undefined
3240
+ readonly message?: string | undefined
3133
3241
  }
3134
3242
  >(
3135
3243
  effectOrOptions: Arg,
3136
3244
  options?: {
3137
- readonly log?: boolean | LogLevel.LogLevel | undefined
3245
+ readonly log?: boolean | LogLevel.Severity | undefined
3246
+ readonly message?: string | undefined
3138
3247
  } | undefined
3139
3248
  ) => [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ? Effect.Effect<void, never, _R>
3140
3249
  : <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, never, R> = dual(
@@ -3142,14 +3251,18 @@ export const ignoreCause: <
3142
3251
  <A, E, R>(
3143
3252
  self: Effect.Effect<A, E, R>,
3144
3253
  options?: {
3145
- readonly log?: boolean | LogLevel.LogLevel | undefined
3254
+ readonly log?: boolean | LogLevel.Severity | undefined
3255
+ readonly message?: string | undefined
3146
3256
  } | undefined
3147
3257
  ): Effect.Effect<void, never, R> => {
3148
3258
  if (!options?.log) {
3149
3259
  return matchCauseEffect(self, { onFailure: (_) => void_, onSuccess: (_) => void_ })
3150
3260
  }
3151
3261
  const logEffect = logWithLevel(options.log === true ? undefined : options.log)
3152
- return matchCauseEffect(self, { onFailure: logEffect, onSuccess: (_) => void_ })
3262
+ return matchCauseEffect(self, {
3263
+ onFailure: (cause) => options.message === undefined ? logEffect(cause) : logEffect(options.message, cause),
3264
+ onSuccess: (_) => void_
3265
+ })
3153
3266
  }
3154
3267
  )
3155
3268
 
@@ -3404,33 +3517,33 @@ export const isSuccess: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect
3404
3517
  /** @internal */
3405
3518
  export const delay: {
3406
3519
  (
3407
- duration: Duration.DurationInput
3520
+ duration: Duration.Input
3408
3521
  ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
3409
3522
  <A, E, R>(
3410
3523
  self: Effect.Effect<A, E, R>,
3411
- duration: Duration.DurationInput
3524
+ duration: Duration.Input
3412
3525
  ): Effect.Effect<A, E, R>
3413
3526
  } = dual(
3414
3527
  2,
3415
3528
  <A, E, R>(
3416
3529
  self: Effect.Effect<A, E, R>,
3417
- duration: Duration.DurationInput
3530
+ duration: Duration.Input
3418
3531
  ): Effect.Effect<A, E, R> => andThen(sleep(duration), self)
3419
3532
  )
3420
3533
 
3421
3534
  /** @internal */
3422
3535
  export const timeoutOrElse: {
3423
3536
  <A2, E2, R2>(options: {
3424
- readonly duration: Duration.DurationInput
3425
- readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
3537
+ readonly duration: Duration.Input
3538
+ readonly orElse: LazyArg<Effect.Effect<A2, E2, R2>>
3426
3539
  }): <A, E, R>(
3427
3540
  self: Effect.Effect<A, E, R>
3428
3541
  ) => Effect.Effect<A | A2, E | E2, R | R2>
3429
3542
  <A, E, R, A2, E2, R2>(
3430
3543
  self: Effect.Effect<A, E, R>,
3431
3544
  options: {
3432
- readonly duration: Duration.DurationInput
3433
- readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
3545
+ readonly duration: Duration.Input
3546
+ readonly orElse: LazyArg<Effect.Effect<A2, E2, R2>>
3434
3547
  }
3435
3548
  ): Effect.Effect<A | A2, E | E2, R | R2>
3436
3549
  } = dual(
@@ -3438,55 +3551,55 @@ export const timeoutOrElse: {
3438
3551
  <A, E, R, A2, E2, R2>(
3439
3552
  self: Effect.Effect<A, E, R>,
3440
3553
  options: {
3441
- readonly duration: Duration.DurationInput
3442
- readonly onTimeout: LazyArg<Effect.Effect<A2, E2, R2>>
3554
+ readonly duration: Duration.Input
3555
+ readonly orElse: LazyArg<Effect.Effect<A2, E2, R2>>
3443
3556
  }
3444
3557
  ): Effect.Effect<A | A2, E | E2, R | R2> =>
3445
3558
  raceFirst(
3446
3559
  self,
3447
- flatMap(sleep(options.duration), options.onTimeout)
3560
+ flatMap(sleep(options.duration), options.orElse)
3448
3561
  )
3449
3562
  )
3450
3563
 
3451
3564
  /** @internal */
3452
3565
  export const timeout: {
3453
3566
  (
3454
- duration: Duration.DurationInput
3567
+ duration: Duration.Input
3455
3568
  ): <A, E, R>(
3456
3569
  self: Effect.Effect<A, E, R>
3457
3570
  ) => Effect.Effect<A, E | Cause.TimeoutError, R>
3458
3571
  <A, E, R>(
3459
3572
  self: Effect.Effect<A, E, R>,
3460
- duration: Duration.DurationInput
3573
+ duration: Duration.Input
3461
3574
  ): Effect.Effect<A, E | Cause.TimeoutError, R>
3462
3575
  } = dual(
3463
3576
  2,
3464
3577
  <A, E, R>(
3465
3578
  self: Effect.Effect<A, E, R>,
3466
- duration: Duration.DurationInput
3579
+ duration: Duration.Input
3467
3580
  ): Effect.Effect<A, E | TimeoutError, R> =>
3468
3581
  timeoutOrElse(self, {
3469
3582
  duration,
3470
- onTimeout: () => fail(new TimeoutError())
3583
+ orElse: () => fail(new TimeoutError())
3471
3584
  })
3472
3585
  )
3473
3586
 
3474
3587
  /** @internal */
3475
3588
  export const timeoutOption: {
3476
3589
  (
3477
- duration: Duration.DurationInput
3590
+ duration: Duration.Input
3478
3591
  ): <A, E, R>(
3479
3592
  self: Effect.Effect<A, E, R>
3480
3593
  ) => Effect.Effect<Option.Option<A>, E, R>
3481
3594
  <A, E, R>(
3482
3595
  self: Effect.Effect<A, E, R>,
3483
- duration: Duration.DurationInput
3596
+ duration: Duration.Input
3484
3597
  ): Effect.Effect<Option.Option<A>, E, R>
3485
3598
  } = dual(
3486
3599
  2,
3487
3600
  <A, E, R>(
3488
3601
  self: Effect.Effect<A, E, R>,
3489
- duration: Duration.DurationInput
3602
+ duration: Duration.Input
3490
3603
  ): Effect.Effect<Option.Option<A>, E, R> =>
3491
3604
  raceFirst(
3492
3605
  asSome(self),
@@ -3514,7 +3627,7 @@ export const ScopeTypeId = "~effect/Scope"
3514
3627
  export const ScopeCloseableTypeId = "~effect/Scope/Closeable"
3515
3628
 
3516
3629
  /** @internal */
3517
- export const scopeTag: ServiceMap.Service<Scope.Scope, Scope.Scope> = ServiceMap.Service<Scope.Scope>("effect/Scope")
3630
+ export const scopeTag: Context.Service<Scope.Scope, Scope.Scope> = Context.Service<Scope.Scope>("effect/Scope")
3518
3631
 
3519
3632
  /** @internal */
3520
3633
  export const scopeClose = <A, E>(self: Scope.Scope, exit_: Exit.Exit<A, E>) =>
@@ -3647,11 +3760,11 @@ export const provideScope: {
3647
3760
  /** @internal */
3648
3761
  export const scoped = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, Exclude<R, Scope.Scope>> =>
3649
3762
  withFiber((fiber) => {
3650
- const prev = ServiceMap.getOption(fiber.services, scopeTag)
3763
+ const prev = fiber.context
3651
3764
  const scope = scopeMakeUnsafe()
3652
- fiber.setServices(ServiceMap.add(fiber.services, scopeTag, scope))
3765
+ fiber.setContext(Context.add(fiber.context, scopeTag, scope))
3653
3766
  return onExitPrimitive(self, (exit) => {
3654
- fiber.setServices(ServiceMap.addOrOmit(fiber.services, scopeTag, prev))
3767
+ fiber.setContext(prev)
3655
3768
  return scopeCloseUnsafe(scope, exit)
3656
3769
  })
3657
3770
  }) as any
@@ -3678,13 +3791,22 @@ export const scopedWith = <A, E, R>(
3678
3791
  })
3679
3792
 
3680
3793
  /** @internal */
3681
- export const acquireRelease = <A, E, R>(
3794
+ export const acquireRelease = <A, E, R, R2>(
3682
3795
  acquire: Effect.Effect<A, E, R>,
3683
- release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown>
3684
- ): Effect.Effect<A, E, R | Scope.Scope> =>
3685
- uninterruptible(
3686
- flatMap(scope, (scope) =>
3687
- tap(acquire, (a) => scopeAddFinalizerExit(scope, (exit) => internalCall(() => release(a, exit)))))
3796
+ release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown, never, R2>,
3797
+ options?: { readonly interruptible?: boolean }
3798
+ ): Effect.Effect<A, E, R | R2 | Scope.Scope> =>
3799
+ contextWith((context: Context.Context<R2>) =>
3800
+ uninterruptibleMask((restore) =>
3801
+ flatMap(
3802
+ scope,
3803
+ (scope) =>
3804
+ tap(
3805
+ options?.interruptible ? restore(acquire) : acquire,
3806
+ (a) => scopeAddFinalizerExit(scope, (exit) => provideContext(release(a, exit), context))
3807
+ )
3808
+ )
3809
+ )
3688
3810
  )
3689
3811
 
3690
3812
  /** @internal */
@@ -3694,8 +3816,8 @@ export const addFinalizer = <R>(
3694
3816
  flatMap(
3695
3817
  scope,
3696
3818
  (scope) =>
3697
- servicesWith((services: ServiceMap.ServiceMap<R>) =>
3698
- scopeAddFinalizerExit(scope, (exit) => provideServices(finalizer(exit), services))
3819
+ contextWith((context: Context.Context<R>) =>
3820
+ scopeAddFinalizerExit(scope, (exit) => provideContext(finalizer(exit), context))
3699
3821
  )
3700
3822
  )
3701
3823
 
@@ -3759,34 +3881,51 @@ export const ensuring: {
3759
3881
 
3760
3882
  /** @internal */
3761
3883
  export const onExitIf: {
3762
- <A, E, XE, XR, Result extends Filter.ResultOrBool>(
3763
- filter: Filter.OrPredicate<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
3764
- f: (
3765
- pass: Filter.Pass<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
3766
- exit: Exit.Exit<NoInfer<A>, NoInfer<E>>
3767
- ) => Effect.Effect<void, XE, XR>
3884
+ <A, E, XE, XR>(
3885
+ predicate: Predicate.Predicate<Exit.Exit<NoInfer<A>, NoInfer<E>>>,
3886
+ f: (exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
3768
3887
  ): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
3769
- <A, E, R, XE, XR, Result extends Filter.ResultOrBool>(
3888
+ <A, E, R, XE, XR>(
3770
3889
  self: Effect.Effect<A, E, R>,
3771
- filter: Filter.OrPredicate<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
3772
- f: (
3773
- pass: Filter.Pass<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
3774
- exit: Exit.Exit<NoInfer<A>, NoInfer<E>>
3775
- ) => Effect.Effect<void, XE, XR>
3890
+ predicate: Predicate.Predicate<Exit.Exit<NoInfer<A>, NoInfer<E>>>,
3891
+ f: (exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
3776
3892
  ): Effect.Effect<A, E | XE, R | XR>
3777
3893
  } = dual(
3778
3894
  3,
3779
- <A, E, R, XE, XR, Result extends Filter.ResultOrBool>(
3895
+ <A, E, R, XE, XR>(
3780
3896
  self: Effect.Effect<A, E, R>,
3781
- filter: Filter.OrPredicate<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
3782
- f: (
3783
- pass: Filter.Pass<Exit.Exit<NoInfer<A>, NoInfer<E>>, Result>,
3784
- exit: Exit.Exit<NoInfer<A>, NoInfer<E>>
3785
- ) => Effect.Effect<void, XE, XR>
3897
+ predicate: Predicate.Predicate<Exit.Exit<NoInfer<A>, NoInfer<E>>>,
3898
+ f: (exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
3899
+ ): Effect.Effect<A, E | XE, R | XR> =>
3900
+ onExit(self, (exit) => {
3901
+ if (!predicate(exit)) {
3902
+ return void_
3903
+ }
3904
+ return f(exit)
3905
+ })
3906
+ )
3907
+
3908
+ /** @internal */
3909
+ export const onExitFilter: {
3910
+ <A, E, XE, XR, B, X>(
3911
+ filter: Filter.Filter<Exit.Exit<NoInfer<A>, NoInfer<E>>, B, X>,
3912
+ f: (b: B, exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
3913
+ ): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
3914
+ <A, E, R, XE, XR, B, X>(
3915
+ self: Effect.Effect<A, E, R>,
3916
+ filter: Filter.Filter<Exit.Exit<NoInfer<A>, NoInfer<E>>, B, X>,
3917
+ f: (b: B, exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
3918
+ ): Effect.Effect<A, E | XE, R | XR>
3919
+ } = dual(
3920
+ 3,
3921
+ <A, E, R, XE, XR, B, X>(
3922
+ self: Effect.Effect<A, E, R>,
3923
+ filter: Filter.Filter<Exit.Exit<NoInfer<A>, NoInfer<E>>, B, X>,
3924
+ f: (b: B, exit: Exit.Exit<NoInfer<A>, NoInfer<E>>) => Effect.Effect<void, XE, XR>
3786
3925
  ): Effect.Effect<A, E | XE, R | XR> =>
3787
3926
  onExit(self, (exit) => {
3788
- const pass = Filter.apply(filter, exit)
3789
- return Result.isFailure(pass) ? void_ : f(pass.success as any, exit)
3927
+ const b = filter(exit)
3928
+ return Result.isFailure(b) ? void_ : f(b.success, exit)
3790
3929
  })
3791
3930
  )
3792
3931
 
@@ -3804,37 +3943,66 @@ export const onError: {
3804
3943
  <A, E, R, XE, XR>(
3805
3944
  self: Effect.Effect<A, E, R>,
3806
3945
  f: (cause: Cause.Cause<NoInfer<E>>) => Effect.Effect<void, XE, XR>
3807
- ): Effect.Effect<A, E | XE, R | XR> => onExitIf(self, exitFilterCause as any, f as any) as any
3946
+ ): Effect.Effect<A, E | XE, R | XR> => onExitFilter(self, exitFilterCause as any, f as any) as any
3808
3947
  )
3809
3948
 
3810
3949
  /** @internal */
3811
3950
  export const onErrorIf: {
3812
- <E, Result extends Filter.ResultOrBool, XE, XR>(
3813
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
3814
- f: (failure: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3951
+ <E, XE, XR>(
3952
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
3953
+ f: (cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3815
3954
  ): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
3816
- <A, E, R, XE, XR, Result extends Filter.ResultOrBool>(
3955
+ <A, E, R, XE, XR>(
3817
3956
  self: Effect.Effect<A, E, R>,
3818
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
3819
- f: (failure: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3957
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
3958
+ f: (cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3820
3959
  ): Effect.Effect<A, E | XE, R | XR>
3821
3960
  } = dual(
3822
3961
  3,
3823
- <A, E, R, XE, XR, Result extends Filter.ResultOrBool>(
3962
+ <A, E, R, XE, XR>(
3824
3963
  self: Effect.Effect<A, E, R>,
3825
- filter: Filter.OrPredicate<Cause.Cause<E>, Result>,
3826
- f: (failure: Filter.Pass<Cause.Cause<E>, Result>, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3964
+ predicate: Predicate.Predicate<Cause.Cause<E>>,
3965
+ f: (cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3827
3966
  ): Effect.Effect<A, E | XE, R | XR> =>
3828
3967
  onExitIf(
3829
3968
  self,
3830
- ((exit: Exit.Exit<any, any>) => {
3831
- if (exit._tag !== "Failure") return Result.fail(exit)
3832
- return Filter.apply(filter, exit.cause)
3833
- }) as any,
3834
- (eb: any, exit: any) => f(eb, (exit as Exit.Failure<any, any>).cause)
3969
+ (exit): exit is Exit.Failure<A, E> => {
3970
+ if (exit._tag !== "Failure") {
3971
+ return false
3972
+ }
3973
+ return predicate(exit.cause)
3974
+ },
3975
+ (exit) => f((exit as Exit.Failure<A, E>).cause)
3835
3976
  ) as any
3836
3977
  )
3837
3978
 
3979
+ /** @internal */
3980
+ export const onErrorFilter: {
3981
+ <A, E, EB, X, XE, XR>(
3982
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
3983
+ f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3984
+ ): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | XE, R | XR>
3985
+ <A, E, R, EB, X, XE, XR>(
3986
+ self: Effect.Effect<A, E, R>,
3987
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
3988
+ f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3989
+ ): Effect.Effect<A, E | XE, R | XR>
3990
+ } = dual(
3991
+ 3,
3992
+ <A, E, R, EB, X, XE, XR>(
3993
+ self: Effect.Effect<A, E, R>,
3994
+ filter: Filter.Filter<Cause.Cause<E>, EB, X>,
3995
+ f: (failure: EB, cause: Cause.Cause<E>) => Effect.Effect<void, XE, XR>
3996
+ ): Effect.Effect<A, E | XE, R | XR> =>
3997
+ onExit(self, (exit) => {
3998
+ if (exit._tag !== "Failure") {
3999
+ return void_
4000
+ }
4001
+ const result = filter(exit.cause)
4002
+ return Result.isFailure(result) ? void_ : f(result.success, exit.cause)
4003
+ })
4004
+ )
4005
+
3838
4006
  /** @internal */
3839
4007
  export const onInterrupt: {
3840
4008
  <XE, XR>(
@@ -3849,8 +4017,7 @@ export const onInterrupt: {
3849
4017
  <A, E, R, XE, XR>(
3850
4018
  self: Effect.Effect<A, E, R>,
3851
4019
  finalizer: (interruptors: ReadonlySet<number>) => Effect.Effect<void, XE, XR>
3852
- ): Effect.Effect<A, E | XE, R | XR> =>
3853
- onErrorIf<E, Result.Result<Set<number>, Cause.Cause<E>>, XE, XR>(causeFilterInterruptors, finalizer)(self)
4020
+ ): Effect.Effect<A, E | XE, R | XR> => onErrorFilter(causeFilterInterruptors as any, finalizer)(self) as any
3854
4021
  )
3855
4022
 
3856
4023
  /** @internal */
@@ -3874,19 +4041,19 @@ export const acquireUseRelease = <Resource, E, R, A, E2, R2, E3, R3>(
3874
4041
 
3875
4042
  /** @internal */
3876
4043
  export const cachedInvalidateWithTTL: {
3877
- (timeToLive: Duration.DurationInput): <A, E, R>(
4044
+ (timeToLive: Duration.Input): <A, E, R>(
3878
4045
  self: Effect.Effect<A, E, R>
3879
4046
  ) => Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]>
3880
4047
  <A, E, R>(
3881
4048
  self: Effect.Effect<A, E, R>,
3882
- timeToLive: Duration.DurationInput
4049
+ timeToLive: Duration.Input
3883
4050
  ): Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]>
3884
4051
  } = dual(2, <A, E, R>(
3885
4052
  self: Effect.Effect<A, E, R>,
3886
- ttl: Duration.DurationInput
4053
+ ttl: Duration.Input
3887
4054
  ): Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]> =>
3888
4055
  sync(() => {
3889
- const ttlMillis = Duration.toMillis(Duration.fromDurationInputUnsafe(ttl))
4056
+ const ttlMillis = Duration.toMillis(Duration.fromInputUnsafe(ttl))
3890
4057
  const isFinite = Number.isFinite(ttlMillis)
3891
4058
  const latch = makeLatchUnsafe(false)
3892
4059
  let expiresAt = 0
@@ -3895,7 +4062,8 @@ export const cachedInvalidateWithTTL: {
3895
4062
  const wait = flatMap(latch.await, () => exit!)
3896
4063
  return [
3897
4064
  withFiber((fiber) => {
3898
- const now = isFinite ? fiber.getRef(ClockRef).currentTimeMillisUnsafe() : 0
4065
+ const clock = fiber.getRef(ClockRef)
4066
+ const now = isFinite ? clock.currentTimeMillisUnsafe() : 0
3899
4067
  if (running || now < expiresAt) return exit ?? wait
3900
4068
  running = true
3901
4069
  latch.closeUnsafe()
@@ -3903,7 +4071,7 @@ export const cachedInvalidateWithTTL: {
3903
4071
  return onExit(self, (exit_) =>
3904
4072
  sync(() => {
3905
4073
  running = false
3906
- expiresAt = now + ttlMillis
4074
+ expiresAt = clock.currentTimeMillisUnsafe() + ttlMillis
3907
4075
  exit = exit_
3908
4076
  latch.openUnsafe()
3909
4077
  }))
@@ -3919,17 +4087,17 @@ export const cachedInvalidateWithTTL: {
3919
4087
  /** @internal */
3920
4088
  export const cachedWithTTL: {
3921
4089
  (
3922
- timeToLive: Duration.DurationInput
4090
+ timeToLive: Duration.Input
3923
4091
  ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Effect.Effect<A, E, R>>
3924
4092
  <A, E, R>(
3925
4093
  self: Effect.Effect<A, E, R>,
3926
- timeToLive: Duration.DurationInput
4094
+ timeToLive: Duration.Input
3927
4095
  ): Effect.Effect<Effect.Effect<A, E, R>>
3928
4096
  } = dual(
3929
4097
  2,
3930
4098
  <A, E, R>(
3931
4099
  self: Effect.Effect<A, E, R>,
3932
- timeToLive: Duration.DurationInput
4100
+ timeToLive: Duration.Input
3933
4101
  ): Effect.Effect<Effect.Effect<A, E, R>> => map(cachedInvalidateWithTTL(self, timeToLive), (tuple) => tuple[0])
3934
4102
  )
3935
4103
 
@@ -4009,6 +4177,15 @@ export const interruptibleMask = <A, E, R>(
4009
4177
  return f(uninterruptible)
4010
4178
  })
4011
4179
 
4180
+ /** @internal */
4181
+ export const abortSignal: Effect.Effect<AbortSignal, never, Scope.Scope> = map(
4182
+ acquireRelease(
4183
+ sync(() => new AbortController()),
4184
+ (controller) => sync(() => controller.abort())
4185
+ ),
4186
+ (_) => _.signal
4187
+ )
4188
+
4012
4189
  // ========================================================================
4013
4190
  // collecting & elements
4014
4191
  // ========================================================================
@@ -4075,64 +4252,201 @@ export const partition: {
4075
4252
  ): Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R> =>
4076
4253
  map(
4077
4254
  forEach(elements, (a, i) => result(f(a, i)), options),
4078
- (results) => Arr.partitionMap(results, identity)
4255
+ (results) => Arr.partition(results, identity)
4079
4256
  )
4080
4257
  )
4081
4258
 
4082
4259
  /** @internal */
4083
- export const whileLoop: <A, E, R>(options: {
4084
- readonly while: LazyArg<boolean>
4085
- readonly body: LazyArg<Effect.Effect<A, E, R>>
4086
- readonly step: (a: A) => void
4087
- }) => Effect.Effect<void, E, R> = makePrimitive({
4088
- op: "While",
4089
- [contA](value, fiber) {
4090
- this[args].step(value)
4091
- if (this[args].while()) {
4092
- fiber._stack.push(this)
4093
- return this[args].body()
4094
- }
4095
- return exitVoid
4096
- },
4097
- [evaluate](fiber) {
4098
- if (this[args].while()) {
4099
- fiber._stack.push(this)
4100
- return this[args].body()
4101
- }
4102
- return exitVoid
4103
- }
4104
- })
4105
-
4106
- /** @internal */
4107
- export const forEach: {
4108
- <B, E, R, S extends Iterable<any>, const Discard extends boolean = false>(
4109
- f: (a: Arr.ReadonlyArray.Infer<S>, i: number) => Effect.Effect<B, E, R>,
4260
+ export const validate: {
4261
+ <A, B, E, R>(
4262
+ f: (a: A, i: number) => Effect.Effect<B, E, R>,
4110
4263
  options?: {
4111
4264
  readonly concurrency?: Concurrency | undefined
4112
- readonly discard?: Discard | undefined
4265
+ readonly discard?: false | undefined
4113
4266
  } | undefined
4114
- ): (
4115
- self: S
4116
- ) => Effect.Effect<Discard extends false ? Arr.ReadonlyArray.With<S, B> : void, E, R>
4117
- <B, E, R, S extends Iterable<any>, const Discard extends boolean = false>(
4118
- self: S,
4119
- f: (a: Arr.ReadonlyArray.Infer<S>, i: number) => Effect.Effect<B, E, R>,
4267
+ ): (elements: Iterable<A>) => Effect.Effect<Array<B>, Arr.NonEmptyArray<E>, R>
4268
+ <A, B, E, R>(
4269
+ f: (a: A, i: number) => Effect.Effect<B, E, R>,
4270
+ options: {
4271
+ readonly concurrency?: Concurrency | undefined
4272
+ readonly discard: true
4273
+ }
4274
+ ): (elements: Iterable<A>) => Effect.Effect<void, Arr.NonEmptyArray<E>, R>
4275
+ <A, B, E, R>(
4276
+ elements: Iterable<A>,
4277
+ f: (a: A, i: number) => Effect.Effect<B, E, R>,
4120
4278
  options?: {
4121
4279
  readonly concurrency?: Concurrency | undefined
4122
- readonly discard?: Discard | undefined
4280
+ readonly discard?: false | undefined
4123
4281
  } | undefined
4124
- ): Effect.Effect<Discard extends false ? Arr.ReadonlyArray.With<S, B> : void, E, R>
4125
- } = dual((args) => typeof args[1] === "function", <A, B, E, R>(
4126
- iterable: Iterable<A>,
4127
- f: (a: A, index: number) => Effect.Effect<B, E, R>,
4128
- options?: {
4129
- readonly concurrency?: Concurrency | undefined
4130
- readonly discard?: boolean | undefined
4131
- }
4132
- ): Effect.Effect<any, E, R> =>
4133
- withFiber((parent) => {
4134
- const concurrencyOption = options?.concurrency === "inherit"
4135
- ? parent.getRef(CurrentConcurrency)
4282
+ ): Effect.Effect<Array<B>, Arr.NonEmptyArray<E>, R>
4283
+ <A, B, E, R>(
4284
+ elements: Iterable<A>,
4285
+ f: (a: A, i: number) => Effect.Effect<B, E, R>,
4286
+ options: {
4287
+ readonly concurrency?: Concurrency | undefined
4288
+ readonly discard: true
4289
+ }
4290
+ ): Effect.Effect<void, Arr.NonEmptyArray<E>, R>
4291
+ } = dual(
4292
+ (args) => isIterable(args[0]) && !isEffect(args[0]),
4293
+ <A, B, E, R>(
4294
+ elements: Iterable<A>,
4295
+ f: (a: A, i: number) => Effect.Effect<B, E, R>,
4296
+ options?: {
4297
+ readonly concurrency?: Concurrency | undefined
4298
+ readonly discard?: boolean | undefined
4299
+ } | undefined
4300
+ ): Effect.Effect<Array<B> | void, Arr.NonEmptyArray<E>, R> =>
4301
+ flatMap(
4302
+ partition(elements, f, { concurrency: options?.concurrency }),
4303
+ ([excluded, satisfying]) => {
4304
+ if (Arr.isArrayNonEmpty(excluded)) {
4305
+ return fail(excluded)
4306
+ }
4307
+ return options?.discard ? void_ : succeed(satisfying)
4308
+ }
4309
+ )
4310
+ )
4311
+
4312
+ /** @internal */
4313
+ export const findFirst: {
4314
+ <A, E, R>(
4315
+ predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
4316
+ ): (elements: Iterable<A>) => Effect.Effect<Option.Option<A>, E, R>
4317
+ <A, E, R>(
4318
+ elements: Iterable<A>,
4319
+ predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
4320
+ ): Effect.Effect<Option.Option<A>, E, R>
4321
+ } = dual(
4322
+ (args) => isIterable(args[0]) && !isEffect(args[0]),
4323
+ <A, E, R>(
4324
+ elements: Iterable<A>,
4325
+ predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>
4326
+ ): Effect.Effect<Option.Option<A>, E, R> =>
4327
+ suspend(() => {
4328
+ const iterator = elements[Symbol.iterator]()
4329
+ const next = iterator.next()
4330
+ if (!next.done) {
4331
+ return findFirstLoop(iterator, 0, predicate, next.value)
4332
+ }
4333
+ return succeed(Option.none())
4334
+ })
4335
+ )
4336
+
4337
+ const findFirstLoop = <A, E, R>(
4338
+ iterator: Iterator<A>,
4339
+ index: number,
4340
+ predicate: (a: A, i: number) => Effect.Effect<boolean, E, R>,
4341
+ value: A
4342
+ ): Effect.Effect<Option.Option<A>, E, R> =>
4343
+ flatMap(predicate(value, index), (keep) => {
4344
+ if (keep) {
4345
+ return succeed(Option.some(value))
4346
+ }
4347
+ const next = iterator.next()
4348
+ if (!next.done) {
4349
+ return findFirstLoop(iterator, index + 1, predicate, next.value)
4350
+ }
4351
+ return succeed(Option.none())
4352
+ })
4353
+
4354
+ /** @internal */
4355
+ export const findFirstFilter: {
4356
+ <A, B, X, E, R>(
4357
+ filter: (input: NoInfer<A>, i: number) => Effect.Effect<Result.Result<B, X>, E, R>
4358
+ ): (elements: Iterable<A>) => Effect.Effect<Option.Option<B>, E, R>
4359
+ <A, B, X, E, R>(
4360
+ elements: Iterable<A>,
4361
+ filter: (input: NoInfer<A>, i: number) => Effect.Effect<Result.Result<B, X>, E, R>
4362
+ ): Effect.Effect<Option.Option<B>, E, R>
4363
+ } = dual(
4364
+ (args) => isIterable(args[0]) && !isEffect(args[0]),
4365
+ <A, B, X, E, R>(
4366
+ elements: Iterable<A>,
4367
+ filter: (input: A, i: number) => Effect.Effect<Result.Result<B, X>, E, R>
4368
+ ): Effect.Effect<Option.Option<B>, E, R> =>
4369
+ suspend(() => {
4370
+ const iterator = elements[Symbol.iterator]()
4371
+ const next = iterator.next()
4372
+ if (!next.done) {
4373
+ return findFirstFilterLoop(iterator, 0, filter, next.value)
4374
+ }
4375
+ return succeed(Option.none())
4376
+ })
4377
+ )
4378
+
4379
+ const findFirstFilterLoop = <A, B, X, E, R>(
4380
+ iterator: Iterator<A>,
4381
+ index: number,
4382
+ filter: (input: A, i: number) => Effect.Effect<Result.Result<B, X>, E, R>,
4383
+ value: A
4384
+ ): Effect.Effect<Option.Option<B>, E, R> =>
4385
+ flatMap(filter(value, index), (result) => {
4386
+ if (Result.isSuccess(result)) {
4387
+ return succeed(Option.some(result.success))
4388
+ }
4389
+ const next = iterator.next()
4390
+ if (!next.done) {
4391
+ return findFirstFilterLoop(iterator, index + 1, filter, next.value)
4392
+ }
4393
+ return succeed(Option.none())
4394
+ })
4395
+
4396
+ /** @internal */
4397
+ export const whileLoop: <A, E, R>(options: {
4398
+ readonly while: LazyArg<boolean>
4399
+ readonly body: LazyArg<Effect.Effect<A, E, R>>
4400
+ readonly step: (a: A) => void
4401
+ }) => Effect.Effect<void, E, R> = makePrimitive({
4402
+ op: "While",
4403
+ [contA](value, fiber) {
4404
+ this[args].step(value)
4405
+ if (this[args].while()) {
4406
+ fiber._stack.push(this)
4407
+ return this[args].body()
4408
+ }
4409
+ return exitVoid
4410
+ },
4411
+ [evaluate](fiber) {
4412
+ if (this[args].while()) {
4413
+ fiber._stack.push(this)
4414
+ return this[args].body()
4415
+ }
4416
+ return exitVoid
4417
+ }
4418
+ })
4419
+
4420
+ /** @internal */
4421
+ export const forEach: {
4422
+ <B, E, R, S extends Iterable<any>, const Discard extends boolean = false>(
4423
+ f: (a: Arr.ReadonlyArray.Infer<S>, i: number) => Effect.Effect<B, E, R>,
4424
+ options?: {
4425
+ readonly concurrency?: Concurrency | undefined
4426
+ readonly discard?: Discard | undefined
4427
+ } | undefined
4428
+ ): (
4429
+ self: S
4430
+ ) => Effect.Effect<Discard extends false ? Arr.ReadonlyArray.With<S, B> : void, E, R>
4431
+ <B, E, R, S extends Iterable<any>, const Discard extends boolean = false>(
4432
+ self: S,
4433
+ f: (a: Arr.ReadonlyArray.Infer<S>, i: number) => Effect.Effect<B, E, R>,
4434
+ options?: {
4435
+ readonly concurrency?: Concurrency | undefined
4436
+ readonly discard?: Discard | undefined
4437
+ } | undefined
4438
+ ): Effect.Effect<Discard extends false ? Arr.ReadonlyArray.With<S, B> : void, E, R>
4439
+ } = dual((args) => typeof args[1] === "function", <A, B, E, R>(
4440
+ iterable: Iterable<A>,
4441
+ f: (a: A, index: number) => Effect.Effect<B, E, R>,
4442
+ options?: {
4443
+ readonly concurrency?: Concurrency | undefined
4444
+ readonly discard?: boolean | undefined
4445
+ }
4446
+ ): Effect.Effect<any, E, R> =>
4447
+ withFiber((parent) => {
4448
+ const concurrencyOption = options?.concurrency === "inherit"
4449
+ ? parent.getRef(CurrentConcurrency)
4136
4450
  : (options?.concurrency ?? 1)
4137
4451
  const concurrency = concurrencyOption === "unbounded"
4138
4452
  ? Number.POSITIVE_INFINITY
@@ -4151,72 +4465,8 @@ export const forEach: {
4151
4465
  const out: Array<B> | undefined = options?.discard
4152
4466
  ? undefined
4153
4467
  : new Array(length)
4154
- let index = 0
4155
- const annotations = fiberStackAnnotations(parent)
4156
-
4157
- return callback((resume) => {
4158
- const fibers = new Set<Fiber.Fiber<unknown, unknown>>()
4159
- const failures: Array<Cause.Reason<E>> = []
4160
- let failed = false
4161
- let inProgress = 0
4162
- let doneCount = 0
4163
- let pumping = false
4164
- let interrupted = false
4165
- function pump() {
4166
- pumping = true
4167
- while (inProgress < concurrency && index < length) {
4168
- const currentIndex = index
4169
- const item = items[currentIndex]
4170
- index++
4171
- inProgress++
4172
- try {
4173
- const child = forkUnsafe(parent, f(item, currentIndex), true, true, "inherit")
4174
- fibers.add(child)
4175
- child.addObserver((exit) => {
4176
- if (interrupted) {
4177
- return
4178
- }
4179
- fibers.delete(child)
4180
- if (exit._tag === "Failure") {
4181
- if (!failed) {
4182
- failed = true
4183
- length = index
4184
- failures.push(...exit.cause.reasons)
4185
- fibers.forEach((fiber) => fiber.interruptUnsafe(parent.id, annotations))
4186
- } else {
4187
- for (const f of exit.cause.reasons) {
4188
- if (f._tag === "Interrupt") continue
4189
- failures.push(f)
4190
- }
4191
- }
4192
- } else if (out !== undefined) {
4193
- out[currentIndex] = exit.value
4194
- }
4195
- doneCount++
4196
- inProgress--
4197
- if (doneCount === length) {
4198
- resume(failures.length > 0 ? exitFailCause(causeFromReasons(failures)) : succeed(out))
4199
- } else if (!pumping && !failed && inProgress < concurrency) {
4200
- pump()
4201
- }
4202
- })
4203
- } catch (err) {
4204
- failed = true
4205
- length = index
4206
- failures.push(new Die(err))
4207
- fibers.forEach((fiber) => fiber.interruptUnsafe(parent.id, annotations))
4208
- }
4209
- }
4210
- pumping = false
4211
- }
4212
- pump()
4213
-
4214
- return suspend(() => {
4215
- interrupted = true
4216
- index = length
4217
- return fiberInterruptAll(fibers)
4218
- })
4219
- })
4468
+ const eff = forEachConcurrent({ f, out }, items, { concurrency })
4469
+ return eff ? as(eff, out as any) : succeed(out as any)
4220
4470
  }))
4221
4471
 
4222
4472
  const forEachSequential = <A, B, E, R>(
@@ -4244,39 +4494,273 @@ const forEachSequential = <A, B, E, R>(
4244
4494
  )
4245
4495
  })
4246
4496
 
4497
+ const iterateEagerImpl = <S, A, X, E, R, E2>(options: {
4498
+ readonly onItem: (state: S, item: A, index: number) => Effect.Effect<X, E, R>
4499
+ readonly step: (state: NoInfer<S>, item: A, exit: Exit.Exit<X, E>, index: number) => Exit.Exit<void, E2> | void
4500
+ }): (
4501
+ initialState: S,
4502
+ items: ReadonlyArray<A>,
4503
+ options?: {
4504
+ readonly concurrency?: number | undefined
4505
+ readonly start?: number | undefined
4506
+ readonly end?: number | undefined
4507
+ }
4508
+ ) => Effect.Effect<void, E | E2, R> | undefined => {
4509
+ const onItem = options.onItem
4510
+ const step = options.step
4511
+
4512
+ return (
4513
+ state: S,
4514
+ items: ReadonlyArray<A>,
4515
+ opts: {
4516
+ readonly concurrency?: number | undefined
4517
+ readonly start?: number | undefined
4518
+ readonly end?: number | undefined
4519
+ } | undefined
4520
+ ): Effect.Effect<void, E | E2, R> | undefined => {
4521
+ let index = opts?.start ?? 0
4522
+ const end = opts?.end ?? items.length
4523
+ const concurrency = opts?.concurrency ?? 1
4524
+ let done = false
4525
+ let parentFiber: Fiber.Fiber<any, any> | undefined
4526
+ let fibers: Set<Fiber.Fiber<any, any>> | undefined
4527
+ let resume: ((effect: Effect.Effect<void, E | E2, R>) => void) | undefined
4528
+ let interrupted = false
4529
+ let terminal: Exit.Exit<void, E | E2> | void
4530
+ let effect: Effect.Effect<X, E, R> | undefined
4531
+
4532
+ const go = (): Effect.Effect<void, E | E2, R> | undefined => {
4533
+ let paused = false
4534
+ for (; !terminal && index < end; index++) {
4535
+ const item = items[index]
4536
+ const eff = effect ?? onItem(state, item, index)
4537
+
4538
+ // fast case (already an exit)
4539
+ if (effectIsExit(eff)) {
4540
+ terminal = step(state, item, eff, index)
4541
+ if (terminal) break
4542
+
4543
+ // Use flatMap for concurrency of 1
4544
+ } else if (concurrency === 1) {
4545
+ return flatMap(exit(eff), (exit) => {
4546
+ terminal = step(state, item, exit, index)
4547
+ index++
4548
+ return terminal ?? go() ?? void_
4549
+ })
4550
+
4551
+ // We have an effect, so enter "async" mode
4552
+ } else if (!parentFiber) {
4553
+ return callback((cb) => {
4554
+ parentFiber = getCurrentFiber()!
4555
+ effect = eff
4556
+ resume = cb
4557
+ const result = go()
4558
+ if (result) return cb(result)
4559
+ return suspend(() => {
4560
+ terminal = exitVoid
4561
+ interrupted = true
4562
+ return fibers ? fiberInterruptAll(fibers) : void_
4563
+ })
4564
+ })
4565
+
4566
+ // Fork the effect with concurrency > 1
4567
+ } else {
4568
+ // Clear the temporary effect from capturing the parentFiber
4569
+ effect = undefined
4570
+
4571
+ const fiber = forkUnsafe(parentFiber, eff, true, true, "inherit")
4572
+ if (fiber._exit) {
4573
+ terminal = step(state, item, fiber._exit, index)
4574
+ if (terminal) break
4575
+ continue
4576
+ }
4577
+
4578
+ // Add the fiber to the Set
4579
+ if (fibers) fibers.add(fiber)
4580
+ else fibers = new Set([fiber])
4581
+
4582
+ const currentIndex = index
4583
+ fiber.addObserver((exit) => {
4584
+ fibers!.delete(fiber)
4585
+ if (terminal) {
4586
+ if (!interrupted && exit._tag === "Failure") {
4587
+ for (const reason of exit.cause.reasons) {
4588
+ if (reason._tag === "Interrupt") continue
4589
+ else if (terminal._tag === "Failure") {
4590
+ ;(terminal.cause.reasons as Array<any>).push(reason)
4591
+ } else {
4592
+ terminal = exitFailCause(causeFromReasons([reason]))
4593
+ }
4594
+ }
4595
+ }
4596
+ } else {
4597
+ const result = step(state, item, exit, currentIndex)
4598
+ if (result) {
4599
+ terminal = result._tag === "Failure"
4600
+ ? exitFailCause(causeFromReasons(result.cause.reasons.slice()))
4601
+ : result
4602
+ go()
4603
+ }
4604
+ }
4605
+
4606
+ if (paused) {
4607
+ const eff = go()
4608
+ if (eff) resume!(eff)
4609
+ } else if (done && fibers!.size === 0) {
4610
+ resume!(terminal ?? void_)
4611
+ }
4612
+ })
4613
+
4614
+ // Check if we have reached the concurrency limit
4615
+ if (fibers.size < concurrency) continue
4616
+ paused = true
4617
+ index++
4618
+ return
4619
+ }
4620
+ }
4621
+
4622
+ done = true
4623
+
4624
+ if (terminal) {
4625
+ if (fibers && fibers.size > 0) {
4626
+ const annotations = fiberStackAnnotations(parentFiber!)
4627
+ fibers.forEach((f) => f.interruptUnsafe(parentFiber!.id, annotations))
4628
+ return
4629
+ }
4630
+ if (resume || terminal._tag === "Failure") {
4631
+ return terminal
4632
+ }
4633
+ } else if (resume) {
4634
+ if (!fibers) {
4635
+ return exitVoid
4636
+ } else if (fibers.size === 0) {
4637
+ resume(void_)
4638
+ }
4639
+ }
4640
+ }
4641
+
4642
+ return go()
4643
+ }
4644
+ }
4645
+
4646
+ /** @internal */
4647
+ export const iterateEager = <S, A>(): <X, E, R, E2>(options: {
4648
+ readonly onItem: (state: S, item: A, index: number) => Effect.Effect<X, E, R>
4649
+ readonly step: (state: NoInfer<S>, item: A, exit: Exit.Exit<X, E>, index: number) => Exit.Exit<void, E2> | void
4650
+ }) => (
4651
+ initialState: S,
4652
+ items: ReadonlyArray<A>,
4653
+ options?: {
4654
+ readonly concurrency?: number | undefined
4655
+ readonly start?: number | undefined
4656
+ readonly end?: number | undefined
4657
+ }
4658
+ ) => Effect.Effect<void, E | E2, R> | undefined => iterateEagerImpl
4659
+
4660
+ const forEachConcurrent = iterateEagerImpl({
4661
+ onItem(
4662
+ state: {
4663
+ readonly f: (a: any, i: number) => Effect.Effect<any, any, any>
4664
+ readonly out: Array<any> | undefined
4665
+ },
4666
+ item,
4667
+ index
4668
+ ) {
4669
+ return state.f(item, index)
4670
+ },
4671
+ step(state, _, exit, index) {
4672
+ if (exit._tag === "Failure") return exit
4673
+ else if (state.out) {
4674
+ state.out[index] = exit.value
4675
+ }
4676
+ }
4677
+ })
4678
+
4247
4679
  /* @internal */
4248
4680
  export const filterOrElse: {
4249
4681
  <A, C, E2, R2, B extends A>(
4250
4682
  refinement: Predicate.Refinement<NoInfer<A>, B>,
4251
4683
  orElse: (a: EqualsWith<A, B, NoInfer<A>, Exclude<NoInfer<A>, B>>) => Effect.Effect<C, E2, R2>
4252
4684
  ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B | C, E2 | E, R2 | R>
4253
- <A, Result extends Filter.ResultOrBool, C, E2, R2>(
4254
- filter: Filter.OrPredicate<NoInfer<A>, Result>,
4255
- orElse: (a: Filter.Fail<A, Result>) => Effect.Effect<C, E2, R2>
4256
- ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Filter.Pass<A, Result> | C, E2 | E, R2 | R>
4685
+ <A, C, E2, R2>(
4686
+ predicate: Predicate.Predicate<NoInfer<A>>,
4687
+ orElse: (a: NoInfer<A>) => Effect.Effect<C, E2, R2>
4688
+ ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | C, E2 | E, R2 | R>
4257
4689
  <A, E, R, C, E2, R2, B extends A>(
4258
4690
  self: Effect.Effect<A, E, R>,
4259
4691
  refinement: Predicate.Refinement<A, B>,
4260
4692
  orElse: (a: EqualsWith<A, B, A, Exclude<A, B>>) => Effect.Effect<C, E2, R2>
4261
4693
  ): Effect.Effect<B | C, E | E2, R | R2>
4262
- <A, E, R, Result extends Filter.ResultOrBool, C, E2, R2>(
4694
+ <A, E, R, C, E2, R2>(
4695
+ self: Effect.Effect<A, E, R>,
4696
+ predicate: Predicate.Predicate<NoInfer<A>>,
4697
+ orElse: (a: NoInfer<A>) => Effect.Effect<C, E2, R2>
4698
+ ): Effect.Effect<A | C, E | E2, R | R2>
4699
+ } = dual(3, <A, E, R, B, E2, R2>(
4700
+ self: Effect.Effect<A, E, R>,
4701
+ predicate: Predicate.Predicate<A>,
4702
+ orElse: (a: A) => Effect.Effect<B, E2, R2>
4703
+ ): Effect.Effect<A | B, E | E2, R | R2> =>
4704
+ flatMap(
4705
+ self,
4706
+ (a) => predicate(a) ? succeed<A | B>(a) : orElse(a)
4707
+ ))
4708
+
4709
+ /** @internal */
4710
+ export const filterMapOrElse: {
4711
+ <A, B, X, C, E2, R2>(
4712
+ filter: Filter.Filter<NoInfer<A>, B, X>,
4713
+ orElse: (x: X) => Effect.Effect<C, E2, R2>
4714
+ ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B | C, E2 | E, R2 | R>
4715
+ <A, E, R, B, X, C, E2, R2>(
4263
4716
  self: Effect.Effect<A, E, R>,
4264
- filter: Filter.OrPredicate<NoInfer<A>, Result>,
4265
- orElse: (a: Filter.Fail<A, Result>) => Effect.Effect<C, E2, R2>
4266
- ): Effect.Effect<Filter.Pass<A, Result> | C, E | E2, R | R2>
4267
- } = dual(3, <A, E, R, Result extends Filter.ResultOrBool, C, E2, R2>(
4717
+ filter: Filter.Filter<NoInfer<A>, B, X>,
4718
+ orElse: (x: X) => Effect.Effect<C, E2, R2>
4719
+ ): Effect.Effect<B | C, E | E2, R | R2>
4720
+ } = dual(3, <A, E, R, B, X, C, E2, R2>(
4268
4721
  self: Effect.Effect<A, E, R>,
4269
- filter: Filter.OrPredicate<NoInfer<A>, Result>,
4270
- orElse: (a: Filter.Fail<A, Result>) => Effect.Effect<C, E2, R2>
4271
- ): Effect.Effect<Filter.Pass<A, Result> | C, E | E2, R | R2> =>
4722
+ filter: Filter.Filter<NoInfer<A>, B, X>,
4723
+ orElse: (x: X) => Effect.Effect<C, E2, R2>
4724
+ ): Effect.Effect<B | C, E | E2, R | R2> =>
4272
4725
  flatMap(
4273
4726
  self,
4274
4727
  (a) => {
4275
- const result = Filter.apply(filter, a)
4276
- return Result.isFailure(result) ? orElse(result.failure) : succeed(result.success) as any
4728
+ const result = filter(a)
4729
+ return (Result.isFailure(result)
4730
+ ? orElse(result.failure)
4731
+ : succeed(result.success)) as Effect.Effect<B | C, E2, R2>
4277
4732
  }
4278
4733
  ))
4279
4734
 
4735
+ /* @internal */
4736
+ export const filterMapOrFail: {
4737
+ <A, B, X, E2>(
4738
+ filter: Filter.Filter<NoInfer<A>, B, X>,
4739
+ orFailWith: (x: X) => E2
4740
+ ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R>
4741
+ <A, B, X>(
4742
+ filter: Filter.Filter<NoInfer<A>, B, X>
4743
+ ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, Cause.NoSuchElementError | E, R>
4744
+ <A, E, R, B, X, E2>(
4745
+ self: Effect.Effect<A, E, R>,
4746
+ filter: Filter.Filter<NoInfer<A>, B, X>,
4747
+ orFailWith: (x: X) => E2
4748
+ ): Effect.Effect<B, E2 | E, R>
4749
+ <A, E, R, B, X>(
4750
+ self: Effect.Effect<A, E, R>,
4751
+ filter: Filter.Filter<NoInfer<A>, B, X>
4752
+ ): Effect.Effect<B, Cause.NoSuchElementError | E, R>
4753
+ } = dual((args) => isEffect(args[0]), <A, E, R, B, X, E2>(
4754
+ self: Effect.Effect<A, E, R>,
4755
+ filter: Filter.Filter<NoInfer<A>, B, X>,
4756
+ orFailWith?: (x: X) => E2
4757
+ ): Effect.Effect<B, E2 | Cause.NoSuchElementError | E, R> =>
4758
+ filterMapOrElse(
4759
+ self,
4760
+ filter,
4761
+ orFailWith ? (x: X) => fail(orFailWith(x)) : () => fail(new NoSuchElementError() as E2)
4762
+ ))
4763
+
4280
4764
  /** @internal */
4281
4765
  export const filter: {
4282
4766
  <A, B extends A>(
@@ -4285,13 +4769,6 @@ export const filter: {
4285
4769
  <A>(
4286
4770
  predicate: Predicate.Predicate<NoInfer<A>>
4287
4771
  ): (elements: Iterable<A>) => Effect.Effect<Array<A>>
4288
- <A, B, X>(
4289
- filter: Filter.Filter<NoInfer<A>, B, X>
4290
- ): (elements: Iterable<A>) => Effect.Effect<Array<B>>
4291
- <A, B, X, E, R>(
4292
- filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
4293
- options?: { readonly concurrency?: Concurrency | undefined }
4294
- ): (elements: Iterable<A>) => Effect.Effect<Array<B>, E, R>
4295
4772
  <A, E, R>(
4296
4773
  predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>,
4297
4774
  options?: { readonly concurrency?: Concurrency | undefined }
@@ -4304,15 +4781,6 @@ export const filter: {
4304
4781
  elements: Iterable<A>,
4305
4782
  predicate: Predicate.Predicate<A>
4306
4783
  ): Effect.Effect<Array<A>>
4307
- <A, B, X>(
4308
- elements: Iterable<A>,
4309
- filter: Filter.Filter<NoInfer<A>, B, X>
4310
- ): Effect.Effect<Array<B>>
4311
- <A, B, X, E, R>(
4312
- elements: Iterable<A>,
4313
- filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
4314
- options?: { readonly concurrency?: Concurrency | undefined }
4315
- ): Effect.Effect<Array<B>, E, R>
4316
4784
  <A, E, R>(
4317
4785
  iterable: Iterable<A>,
4318
4786
  predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>,
@@ -4320,36 +4788,27 @@ export const filter: {
4320
4788
  ): Effect.Effect<Array<A>, E, R>
4321
4789
  } = dual(
4322
4790
  (args) => isIterable(args[0]) && !isEffect(args[0]),
4323
- <A, B, X, E, R>(
4791
+ <A, E, R>(
4324
4792
  elements: Iterable<A>,
4325
- filter:
4326
- | Filter.FilterEffect<A, B, X, E, R>
4793
+ predicate:
4327
4794
  | Predicate.Predicate<A>
4328
4795
  | ((a: A, i: number) => Effect.Effect<boolean, E, R>),
4329
4796
  options?: { readonly concurrency?: Concurrency | undefined }
4330
- ): Effect.Effect<Array<B>, E, R> =>
4797
+ ): Effect.Effect<Array<A>, E, R> =>
4331
4798
  suspend(() => {
4332
- const out: Array<any> = []
4799
+ const out: Array<A> = []
4333
4800
  return as(
4334
4801
  forEach(
4335
4802
  elements,
4336
4803
  (a, i) => {
4337
- const result = (filter as Function)(a, i)
4804
+ const result = (predicate as Function)(a, i)
4338
4805
  if (typeof result === "boolean") {
4339
4806
  if (result) out.push(a)
4340
4807
  return void_ as any
4341
4808
  }
4342
- if (!isEffect(result)) {
4343
- if (!Result.isFailure(result)) {
4344
- out.push(result.success)
4345
- }
4346
- return void_ as any
4347
- }
4348
- return map(result, (r: any) => {
4349
- if (typeof r === "boolean") {
4350
- if (r) out.push(a)
4351
- } else if (!Result.isFailure(r)) {
4352
- out.push(r.success)
4809
+ return map(result, (keep) => {
4810
+ if (keep) {
4811
+ out.push(a)
4353
4812
  }
4354
4813
  })
4355
4814
  },
@@ -4363,6 +4822,72 @@ export const filter: {
4363
4822
  })
4364
4823
  )
4365
4824
 
4825
+ /** @internal */
4826
+ export const filterMap: {
4827
+ <A, B, X>(
4828
+ filter: Filter.Filter<NoInfer<A>, B, X>
4829
+ ): (elements: Iterable<A>) => Effect.Effect<Array<B>>
4830
+ <A, B, X>(
4831
+ elements: Iterable<A>,
4832
+ filter: Filter.Filter<NoInfer<A>, B, X>
4833
+ ): Effect.Effect<Array<B>>
4834
+ } = dual(
4835
+ (args) => isIterable(args[0]) && !isEffect(args[0]),
4836
+ <A, B, X>(
4837
+ elements: Iterable<A>,
4838
+ filter: Filter.Filter<A, B, X>
4839
+ ): Effect.Effect<Array<B>> =>
4840
+ suspend(() => {
4841
+ const out: Array<B> = []
4842
+ for (const a of elements) {
4843
+ const result = filter(a)
4844
+ if (Result.isSuccess(result)) {
4845
+ out.push(result.success)
4846
+ }
4847
+ }
4848
+ return succeed(out)
4849
+ })
4850
+ )
4851
+
4852
+ /** @internal */
4853
+ export const filterMapEffect: {
4854
+ <A, B, X, E, R>(
4855
+ filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
4856
+ options?: { readonly concurrency?: Concurrency | undefined }
4857
+ ): (elements: Iterable<A>) => Effect.Effect<Array<B>, E, R>
4858
+ <A, B, X, E, R>(
4859
+ elements: Iterable<A>,
4860
+ filter: Filter.FilterEffect<NoInfer<A>, B, X, E, R>,
4861
+ options?: { readonly concurrency?: Concurrency | undefined }
4862
+ ): Effect.Effect<Array<B>, E, R>
4863
+ } = dual(
4864
+ (args) => isIterable(args[0]) && !isEffect(args[0]),
4865
+ <A, B, X, E, R>(
4866
+ elements: Iterable<A>,
4867
+ filter: Filter.FilterEffect<A, B, X, E, R>,
4868
+ options?: { readonly concurrency?: Concurrency | undefined }
4869
+ ): Effect.Effect<Array<B>, E, R> =>
4870
+ suspend(() => {
4871
+ const out: Array<B> = []
4872
+ return as(
4873
+ forEach(
4874
+ elements,
4875
+ (a) =>
4876
+ map(filter(a), (result) => {
4877
+ if (Result.isSuccess(result)) {
4878
+ out.push(result.success)
4879
+ }
4880
+ }),
4881
+ {
4882
+ discard: true,
4883
+ concurrency: options?.concurrency
4884
+ }
4885
+ ),
4886
+ out
4887
+ )
4888
+ })
4889
+ )
4890
+
4366
4891
  // ----------------------------------------------------------------------------
4367
4892
  // do notation
4368
4893
  // ----------------------------------------------------------------------------
@@ -4463,13 +4988,13 @@ export const forkUnsafe = <FA, FE, A, E, R>(
4463
4988
  immediate = false,
4464
4989
  daemon = false,
4465
4990
  uninterruptible: boolean | "inherit" = false
4466
- ): Fiber.Fiber<A, E> => {
4991
+ ): FiberImpl<A, E> => {
4467
4992
  const interruptible = uninterruptible === "inherit" ? parent.interruptible : !uninterruptible
4468
- const child = new FiberImpl<A, E>(parent.services, interruptible)
4993
+ const child = new FiberImpl<A, E>(parent.context, interruptible)
4469
4994
  if (immediate) {
4470
4995
  child.evaluate(effect as any)
4471
4996
  } else {
4472
- parent.currentScheduler.scheduleTask(() => child.evaluate(effect as any), 0)
4997
+ parent.currentDispatcher.scheduleTask(() => child.evaluate(effect as any), 0)
4473
4998
  }
4474
4999
  if (!daemon && !child._exit) {
4475
5000
  parent.children().add(child)
@@ -4589,7 +5114,8 @@ export const forkScoped: {
4589
5114
  readonly startImmediately?: boolean | undefined
4590
5115
  readonly uninterruptible?: boolean | "inherit" | undefined
4591
5116
  } | undefined
4592
- ): [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ? Effect.Effect<Fiber.Fiber<_A, _E>, never, _R>
5117
+ ): [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ?
5118
+ Effect.Effect<Fiber.Fiber<_A, _E>, never, _R | Scope.Scope>
4593
5119
  : <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Fiber.Fiber<A, E>, never, R | Scope.Scope>
4594
5120
  } = dual((args) => isEffect(args[0]), <A, E, R>(
4595
5121
  self: Effect.Effect<A, E, R>,
@@ -4604,15 +5130,13 @@ export const forkScoped: {
4604
5130
  // ----------------------------------------------------------------------------
4605
5131
 
4606
5132
  /** @internal */
4607
- export const runForkWith = <R>(services: ServiceMap.ServiceMap<R>) =>
5133
+ export const runForkWith = <R>(context: Context.Context<R>) =>
4608
5134
  <A, E>(
4609
5135
  effect: Effect.Effect<A, E, R>,
4610
5136
  options?: Effect.RunOptions | undefined
4611
5137
  ): Fiber.Fiber<A, E> => {
4612
- const scheduler = options?.scheduler ||
4613
- (!services.mapUnsafe.has(Scheduler.Scheduler.key) && new Scheduler.MixedScheduler())
4614
5138
  const fiber = new FiberImpl<A, E>(
4615
- scheduler ? ServiceMap.add(services, Scheduler.Scheduler, scheduler) : services,
5139
+ options?.scheduler ? Context.add(context, Scheduler.Scheduler, options.scheduler) : context,
4616
5140
  options?.uninterruptible !== true
4617
5141
  )
4618
5142
  fiber.evaluate(effect as any)
@@ -4627,6 +5151,9 @@ export const runForkWith = <R>(services: ServiceMap.ServiceMap<R>) =>
4627
5151
  fiber.addObserver(() => options.signal!.removeEventListener("abort", abort))
4628
5152
  }
4629
5153
  }
5154
+ if (options?.onFiberStart) {
5155
+ options.onFiberStart(fiber)
5156
+ }
4630
5157
  return fiber
4631
5158
  }
4632
5159
 
@@ -4657,11 +5184,11 @@ export const fiberRunIn: {
4657
5184
  export const runFork: <A, E>(
4658
5185
  effect: Effect.Effect<A, E, never>,
4659
5186
  options?: Effect.RunOptions | undefined
4660
- ) => Fiber.Fiber<A, E> = runForkWith(ServiceMap.empty())
5187
+ ) => Fiber.Fiber<A, E> = runForkWith(Context.empty())
4661
5188
 
4662
5189
  /** @internal */
4663
- export const runCallbackWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4664
- const runFork = runForkWith(services)
5190
+ export const runCallbackWith = <R>(context: Context.Context<R>) => {
5191
+ const runFork = runForkWith(context)
4665
5192
  return <A, E>(
4666
5193
  effect: Effect.Effect<A, E, R>,
4667
5194
  options?:
@@ -4681,11 +5208,11 @@ export const runCallbackWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4681
5208
  }
4682
5209
 
4683
5210
  /** @internal */
4684
- export const runCallback = runCallbackWith(ServiceMap.empty())
5211
+ export const runCallback = runCallbackWith(Context.empty())
4685
5212
 
4686
5213
  /** @internal */
4687
- export const runPromiseExitWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4688
- const runFork = runForkWith(services)
5214
+ export const runPromiseExitWith = <R>(context: Context.Context<R>) => {
5215
+ const runFork = runForkWith(context)
4689
5216
  return <A, E>(
4690
5217
  effect: Effect.Effect<A, E, R>,
4691
5218
  options?: Effect.RunOptions | undefined
@@ -4698,11 +5225,11 @@ export const runPromiseExitWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4698
5225
  }
4699
5226
 
4700
5227
  /** @internal */
4701
- export const runPromiseExit = runPromiseExitWith(ServiceMap.empty())
5228
+ export const runPromiseExit = runPromiseExitWith(Context.empty())
4702
5229
 
4703
5230
  /** @internal */
4704
- export const runPromiseWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4705
- const runPromiseExit = runPromiseExitWith(services)
5231
+ export const runPromiseWith = <R>(context: Context.Context<R>) => {
5232
+ const runPromiseExit = runPromiseExitWith(context)
4706
5233
  return <A, E>(
4707
5234
  effect: Effect.Effect<A, E, R>,
4708
5235
  options?:
@@ -4723,28 +5250,28 @@ export const runPromise: <A, E>(
4723
5250
  options?:
4724
5251
  | Effect.RunOptions
4725
5252
  | undefined
4726
- ) => Promise<A> = runPromiseWith(ServiceMap.empty())
5253
+ ) => Promise<A> = runPromiseWith(Context.empty())
4727
5254
 
4728
5255
  /** @internal */
4729
- export const runSyncExitWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4730
- const runFork = runForkWith(services)
5256
+ export const runSyncExitWith = <R>(context: Context.Context<R>) => {
5257
+ const runFork = runForkWith(context)
4731
5258
  return <A, E>(effect: Effect.Effect<A, E, R>): Exit.Exit<A, E> => {
4732
5259
  if (effectIsExit(effect)) return effect
4733
5260
  const scheduler = new Scheduler.MixedScheduler("sync")
4734
5261
  const fiber = runFork(effect, { scheduler })
4735
- scheduler.flush()
4736
- return (fiber as FiberImpl<A, E>)._exit ?? exitDie(fiber)
5262
+ fiber.currentDispatcher?.flush()
5263
+ return (fiber as FiberImpl<A, E>)._exit ?? exitDie(new AsyncFiberError(fiber))
4737
5264
  }
4738
5265
  }
4739
5266
 
4740
5267
  /** @internal */
4741
5268
  export const runSyncExit: <A, E>(effect: Effect.Effect<A, E>) => Exit.Exit<A, E> = runSyncExitWith(
4742
- ServiceMap.empty()
5269
+ Context.empty()
4743
5270
  )
4744
5271
 
4745
5272
  /** @internal */
4746
- export const runSyncWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4747
- const runSyncExit = runSyncExitWith(services)
5273
+ export const runSyncWith = <R>(context: Context.Context<R>) => {
5274
+ const runSyncExit = runSyncExitWith(context)
4748
5275
  return <A, E>(effect: Effect.Effect<A, E, R>): A => {
4749
5276
  const exit = runSyncExit(effect)
4750
5277
  if (exit._tag === "Failure") throw causeSquash(exit.cause)
@@ -4753,104 +5280,7 @@ export const runSyncWith = <R>(services: ServiceMap.ServiceMap<R>) => {
4753
5280
  }
4754
5281
 
4755
5282
  /** @internal */
4756
- export const runSync: <A, E>(effect: Effect.Effect<A, E>) => A = runSyncWith(ServiceMap.empty())
4757
-
4758
- // ----------------------------------------------------------------------------
4759
- // Semaphore
4760
- // ----------------------------------------------------------------------------
4761
-
4762
- /** @internal */
4763
- class Semaphore {
4764
- public waiters = new Set<() => void>()
4765
- public taken = 0
4766
- public permits: number
4767
-
4768
- constructor(permits: number) {
4769
- this.permits = permits
4770
- }
4771
-
4772
- get free() {
4773
- return this.permits - this.taken
4774
- }
4775
-
4776
- readonly take = (n: number): Effect.Effect<number> =>
4777
- callback<number>((resume) => {
4778
- if (this.free < n) {
4779
- const observer = () => {
4780
- if (this.free < n) {
4781
- return
4782
- }
4783
- this.waiters.delete(observer)
4784
- this.taken += n
4785
- resume(succeed(n))
4786
- }
4787
- this.waiters.add(observer)
4788
- return sync(() => {
4789
- this.waiters.delete(observer)
4790
- })
4791
- }
4792
- this.taken += n
4793
- return resume(succeed(n))
4794
- })
4795
-
4796
- updateTakenUnsafe(fiber: Fiber.Fiber<any, any>, f: (n: number) => number): Effect.Effect<number> {
4797
- this.taken = f(this.taken)
4798
- if (this.waiters.size > 0) {
4799
- fiber.currentScheduler.scheduleTask(() => {
4800
- const iter = this.waiters.values()
4801
- let item = iter.next()
4802
- while (item.done === false && this.free > 0) {
4803
- item.value()
4804
- item = iter.next()
4805
- }
4806
- }, 0)
4807
- }
4808
- return succeed(this.free)
4809
- }
4810
-
4811
- updateTaken(f: (n: number) => number): Effect.Effect<number> {
4812
- return withFiber((fiber) => this.updateTakenUnsafe(fiber, f))
4813
- }
4814
-
4815
- readonly resize = (permits: number) =>
4816
- asVoid(
4817
- withFiber((fiber) => {
4818
- this.permits = permits
4819
- if (this.free < 0) {
4820
- return void_
4821
- }
4822
- return this.updateTakenUnsafe(fiber, (taken) => taken)
4823
- })
4824
- )
4825
-
4826
- readonly release = (n: number): Effect.Effect<number> => this.updateTaken((taken) => taken - n)
4827
-
4828
- readonly releaseAll: Effect.Effect<number> = this.updateTaken((_) => 0)
4829
-
4830
- readonly withPermits = (n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
4831
- uninterruptibleMask((restore) =>
4832
- flatMap(restore(this.take(n)), (permits) => ensuring(restore(self), this.release(permits)))
4833
- )
4834
-
4835
- readonly withPermit = this.withPermits(1)
4836
-
4837
- readonly withPermitsIfAvailable = (n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
4838
- uninterruptibleMask((restore) =>
4839
- suspend(() => {
4840
- if (this.free < n) {
4841
- return succeedNone
4842
- }
4843
- this.taken += n
4844
- return ensuring(restore(asSome(self)), this.release(n))
4845
- })
4846
- )
4847
- }
4848
-
4849
- /** @internal */
4850
- export const makeSemaphoreUnsafe = (permits: number): Semaphore => new Semaphore(permits)
4851
-
4852
- /** @internal */
4853
- export const makeSemaphore = (permits: number) => sync(() => makeSemaphoreUnsafe(permits))
5283
+ export const runSync: <A, E>(effect: Effect.Effect<A, E>) => A = runSyncWith(Context.empty())
4854
5284
 
4855
5285
  const succeedTrue = succeed(true)
4856
5286
  const succeedFalse = succeed(false)
@@ -4869,7 +5299,7 @@ class Latch implements _Latch.Latch {
4869
5299
  return succeedTrue
4870
5300
  }
4871
5301
  this.scheduled = true
4872
- fiber.currentScheduler.scheduleTask(this.flushWaiters, 0)
5302
+ fiber.currentDispatcher.scheduleTask(this.flushWaiters, 0)
4873
5303
  return succeedTrue
4874
5304
  }
4875
5305
  private flushWaiters = () => {
@@ -4886,7 +5316,7 @@ class Latch implements _Latch.Latch {
4886
5316
  this.isOpen = true
4887
5317
  return this.scheduleUnsafe(fiber)
4888
5318
  })
4889
- release = withFiber<boolean>((fiber) => this.open ? succeedFalse : this.scheduleUnsafe(fiber))
5319
+ release = withFiber<boolean>((fiber) => this.isOpen ? succeedFalse : this.scheduleUnsafe(fiber))
4890
5320
  openUnsafe() {
4891
5321
  if (this.isOpen) return false
4892
5322
  this.isOpen = true
@@ -4911,7 +5341,7 @@ class Latch implements _Latch.Latch {
4911
5341
  return true
4912
5342
  }
4913
5343
  close = sync(() => this.closeUnsafe())
4914
- whenOpen = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => andThen(this.await, self)
5344
+ whenOpen = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => flatMap(this.await, () => self)
4915
5345
  }
4916
5346
 
4917
5347
  /** @internal */
@@ -4974,16 +5404,15 @@ const NoopSpanProto: Omit<Tracer.Span, "parent" | "name" | "annotations" | "leve
4974
5404
  /** @internal */
4975
5405
  export const noopSpan = (options: {
4976
5406
  readonly name: string
4977
- readonly parent: Tracer.AnySpan | undefined
4978
- readonly annotations: ServiceMap.ServiceMap<never>
5407
+ readonly parent: Option.Option<Tracer.AnySpan>
5408
+ readonly annotations: Context.Context<never>
4979
5409
  }): Tracer.Span => Object.assign(Object.create(NoopSpanProto), options)
4980
5410
 
4981
- const filterDisablePropagation = (span: Tracer.AnySpan | undefined): Tracer.AnySpan | undefined => {
4982
- if (span) {
4983
- return ServiceMap.get(span.annotations, Tracer.DisablePropagation)
4984
- ? span._tag === "Span" ? filterDisablePropagation(span.parent) : undefined
4985
- : span
4986
- }
5411
+ const filterDisablePropagation = (span: Tracer.AnySpan | undefined): Option.Option<Tracer.AnySpan> => {
5412
+ if (!span) return Option.none()
5413
+ return Context.get(span.annotations, Tracer.DisablePropagation)
5414
+ ? span._tag === "Span" ? filterDisablePropagation(Option.getOrUndefined(span.parent)) : Option.none()
5415
+ : Option.some(span)
4987
5416
  }
4988
5417
 
4989
5418
  /** @internal */
@@ -4993,8 +5422,12 @@ export const makeSpanUnsafe = <XA, XE>(
4993
5422
  options: Tracer.SpanOptionsNoTrace | undefined
4994
5423
  ) => {
4995
5424
  const disablePropagation = !fiber.getRef(TracerEnabled) ||
4996
- (options?.annotations && ServiceMap.get(options.annotations, Tracer.DisablePropagation))
4997
- const parent = options?.parent ?? (options?.root ? undefined : filterDisablePropagation(fiber.currentSpan))
5425
+ (options?.annotations && Context.get(options.annotations, Tracer.DisablePropagation))
5426
+ const parent = options?.parent !== undefined
5427
+ ? Option.some(options.parent)
5428
+ : options?.root
5429
+ ? Option.none<Tracer.AnySpan>()
5430
+ : filterDisablePropagation(fiber.currentSpan)
4998
5431
 
4999
5432
  let span: Tracer.Span
5000
5433
 
@@ -5002,8 +5435,8 @@ export const makeSpanUnsafe = <XA, XE>(
5002
5435
  span = noopSpan({
5003
5436
  name,
5004
5437
  parent,
5005
- annotations: ServiceMap.add(
5006
- options?.annotations ?? ServiceMap.empty(),
5438
+ annotations: Context.add(
5439
+ options?.annotations ?? Context.empty(),
5007
5440
  Tracer.DisablePropagation,
5008
5441
  true
5009
5442
  )
@@ -5023,13 +5456,13 @@ export const makeSpanUnsafe = <XA, XE>(
5023
5456
  span = tracer.span({
5024
5457
  name,
5025
5458
  parent,
5026
- annotations: options?.annotations ?? ServiceMap.empty(),
5459
+ annotations: options?.annotations ?? Context.empty(),
5027
5460
  links,
5028
- startTime: timingEnabled ? clock.currentTimeNanosUnsafe() : 0n,
5461
+ startTime: timingEnabled ? clock.currentTimeNanosUnsafe() : BigInt(0),
5029
5462
  kind: options?.kind ?? "internal",
5030
- root: options?.root ?? options?.parent === undefined,
5463
+ root: options?.root ?? Option.isNone(parent),
5031
5464
  sampled: options?.sampled ??
5032
- (parent?.sampled === false
5465
+ (Option.isSome(parent) && parent.value.sampled === false
5033
5466
  ? false
5034
5467
  : !isLogLevelGreaterThan(fiber.getRef(Tracer.MinimumTraceLevel), level))
5035
5468
  })
@@ -5060,7 +5493,7 @@ export const makeSpanScoped = (
5060
5493
  ): Effect.Effect<Tracer.Span, never, Scope.Scope> =>
5061
5494
  uninterruptible(
5062
5495
  withFiber((fiber) => {
5063
- const scope = ServiceMap.getUnsafe(fiber.services, scopeTag)
5496
+ const scope = Context.getUnsafe(fiber.context, scopeTag)
5064
5497
  const span = makeSpanUnsafe(fiber, name, options ?? {})
5065
5498
  const clock = fiber.getRef(ClockRef)
5066
5499
  const timingEnabled = fiber.getRef(TracerTimingEnabled)
@@ -5292,7 +5725,7 @@ export const currentParentSpan: Effect.Effect<Tracer.AnySpan, Cause.NoSuchElemen
5292
5725
  // ----------------------------------------------------------------------------
5293
5726
 
5294
5727
  /** @internal */
5295
- export const ClockRef = ServiceMap.Reference<Clock.Clock>("effect/Clock", {
5728
+ export const ClockRef = Context.Reference<Clock.Clock>("effect/Clock", {
5296
5729
  defaultValue: (): Clock.Clock => new ClockImpl()
5297
5730
  })
5298
5731
 
@@ -5345,8 +5778,8 @@ export const clockWith = <A, E, R>(f: (clock: Clock.Clock) => Effect.Effect<A, E
5345
5778
  withFiber((fiber) => f(fiber.getRef(ClockRef)))
5346
5779
 
5347
5780
  /** @internal */
5348
- export const sleep = (duration: Duration.DurationInput): Effect.Effect<void> =>
5349
- clockWith((clock) => clock.sleep(Duration.fromDurationInputUnsafe(duration)))
5781
+ export const sleep = (duration: Duration.Input): Effect.Effect<void> =>
5782
+ clockWith((clock) => clock.sleep(Duration.fromInputUnsafe(duration)))
5350
5783
 
5351
5784
  /** @internal */
5352
5785
  export const currentTimeMillis: Effect.Effect<number> = clockWith((clock) => clock.currentTimeMillis)
@@ -5404,6 +5837,28 @@ export class ExceededCapacityError extends TaggedError("ExceededCapacityError")
5404
5837
  }
5405
5838
  }
5406
5839
 
5840
+ /** @internal */
5841
+ export const AsyncFiberErrorTypeId = "~effect/Cause/AsyncFiberError"
5842
+
5843
+ /** @internal */
5844
+ export const isAsyncFiberError = (
5845
+ u: unknown
5846
+ ): u is Cause.AsyncFiberError => hasProperty(u, AsyncFiberErrorTypeId)
5847
+
5848
+ /** @internal */
5849
+ export class AsyncFiberError extends TaggedError("AsyncFiberError")<{
5850
+ fiber: Fiber.Fiber<unknown, unknown>
5851
+ message: string
5852
+ }> {
5853
+ readonly [AsyncFiberErrorTypeId] = AsyncFiberErrorTypeId
5854
+ constructor(fiber: Fiber.Fiber<unknown, unknown>) {
5855
+ super({
5856
+ message: "An asynchronous Effect was executed with Effect.runSync",
5857
+ fiber
5858
+ })
5859
+ }
5860
+ }
5861
+
5407
5862
  /** @internal */
5408
5863
  export const UnknownErrorTypeId = "~effect/Cause/UnknownError"
5409
5864
 
@@ -5413,7 +5868,10 @@ export const isUnknownError = (
5413
5868
  ): u is Cause.UnknownError => hasProperty(u, UnknownErrorTypeId)
5414
5869
 
5415
5870
  /** @internal */
5416
- export class UnknownError extends TaggedError("UnknownError") {
5871
+ export class UnknownError extends TaggedError("UnknownError")<{
5872
+ cause: unknown
5873
+ message?: string | undefined
5874
+ }> {
5417
5875
  readonly [UnknownErrorTypeId] = UnknownErrorTypeId
5418
5876
  constructor(cause: unknown, message?: string) {
5419
5877
  super({ message, cause } as any)
@@ -5425,7 +5883,7 @@ export class UnknownError extends TaggedError("UnknownError") {
5425
5883
  // ----------------------------------------------------------------------------
5426
5884
 
5427
5885
  /** @internal */
5428
- export const ConsoleRef = ServiceMap.Reference<Console.Console>(
5886
+ export const ConsoleRef = Context.Reference<Console.Console>(
5429
5887
  "effect/Console/CurrentConsole",
5430
5888
  { defaultValue: (): Console.Console => globalThis.console }
5431
5889
  )
@@ -5467,17 +5925,51 @@ export const isLogLevelGreaterThan = Order.isGreaterThan(LogLevelOrder)
5467
5925
  // ----------------------------------------------------------------------------
5468
5926
 
5469
5927
  /** @internal */
5470
- export const CurrentLoggers = ServiceMap.Reference<
5928
+ export const CurrentLoggers = Context.Reference<
5471
5929
  ReadonlySet<Logger.Logger<unknown, any>>
5472
5930
  >("effect/Loggers/CurrentLoggers", {
5473
5931
  defaultValue: () => new Set([defaultLogger, tracerLogger])
5474
5932
  })
5475
5933
 
5476
5934
  /** @internal */
5477
- export const LogToStderr = ServiceMap.Reference<boolean>("effect/Logger/LogToStderr", {
5935
+ export const LogToStderr = Context.Reference<boolean>("effect/Logger/LogToStderr", {
5478
5936
  defaultValue: constFalse
5479
5937
  })
5480
5938
 
5939
+ /** @internal */
5940
+ export const annotateLogsScoped: {
5941
+ (key: string, value: unknown): Effect.Effect<void, never, Scope.Scope>
5942
+ (values: Record<string, unknown>): Effect.Effect<void, never, Scope.Scope>
5943
+ } = function() {
5944
+ const entries = typeof arguments[0] === "string" ?
5945
+ [[arguments[0], arguments[1]]] :
5946
+ Object.entries(arguments[0])
5947
+ return uninterruptible(withFiber((fiber) => {
5948
+ const prev = fiber.getRef(CurrentLogAnnotations)
5949
+ const next = { ...prev }
5950
+ for (let i = 0; i < entries.length; i++) {
5951
+ const [key, value] = entries[i]
5952
+ next[key] = value
5953
+ }
5954
+ fiber.setContext(Context.add(fiber.context, CurrentLogAnnotations, next))
5955
+ return scopeAddFinalizerExit(Context.getUnsafe(fiber.context, scopeTag), (_) => {
5956
+ const current = fiber.getRef(CurrentLogAnnotations)
5957
+ const next = { ...current }
5958
+ for (let i = 0; i < entries.length; i++) {
5959
+ const [key, value] = entries[i]
5960
+ if (current[key] !== value) continue
5961
+ if (key in prev) {
5962
+ next[key] = prev[key]
5963
+ } else {
5964
+ delete next[key]
5965
+ }
5966
+ }
5967
+ fiber.setContext(Context.add(fiber.context, CurrentLogAnnotations, next))
5968
+ return void_
5969
+ })
5970
+ }))
5971
+ }
5972
+
5481
5973
  /** @internal */
5482
5974
  export const LoggerTypeId = "~effect/Logger"
5483
5975
 
@@ -5493,7 +5985,7 @@ const LoggerProto = {
5493
5985
 
5494
5986
  /** @internal */
5495
5987
  export const loggerMake = <Message, Output>(
5496
- log: (options: Logger.Logger.Options<Message>) => Output
5988
+ log: (options: Logger.Options<Message>) => Output
5497
5989
  ): Logger.Logger<Message, Output> => {
5498
5990
  const self = Object.create(LoggerProto)
5499
5991
  self.log = log
@@ -5533,7 +6025,7 @@ export const structuredMessage = (u: unknown): unknown => {
5533
6025
  }
5534
6026
 
5535
6027
  /** @internal */
5536
- export const logWithLevel = (level?: LogLevel.LogLevel) =>
6028
+ export const logWithLevel = (level?: LogLevel.Severity) =>
5537
6029
  (
5538
6030
  ...message: ReadonlyArray<any>
5539
6031
  ): Effect.Effect<void> => {
@@ -5652,10 +6144,11 @@ const prettyLoggerTty = (options: {
5652
6144
  readonly formatDate: (date: Date) => string
5653
6145
  }) => {
5654
6146
  const processIsBun = typeof process === "object" && "isBun" in process && process.isBun === true
5655
- const color = options.colors && processStdoutIsTTY ? withColor : withColorNoop
6147
+ const color = options.colors ? withColor : withColorNoop
5656
6148
  return loggerMake<unknown, void>(
5657
6149
  ({ cause, date, fiber, logLevel, message: message_ }) => {
5658
6150
  const console = fiber.getRef(ConsoleRef)
6151
+ // oxlint-disable-next-line no-console
5659
6152
  const log = fiber.getRef(LogToStderr) ? console.error : console.log
5660
6153
 
5661
6154
  const message = Array.isArray(message_) ? message_.slice() : [message_]
@@ -5681,6 +6174,7 @@ const prettyLoggerTty = (options: {
5681
6174
  }
5682
6175
 
5683
6176
  log(firstLine)
6177
+ // oxlint-disable-next-line no-console
5684
6178
  if (!processIsBun) console.group()
5685
6179
 
5686
6180
  if (cause.reasons.length > 0) {
@@ -5698,6 +6192,7 @@ const prettyLoggerTty = (options: {
5698
6192
  log(color(`${key}:`, colors.bold, colors.white), redact(value))
5699
6193
  }
5700
6194
 
6195
+ // oxlint-disable-next-line no-console
5701
6196
  if (!processIsBun) console.groupEnd()
5702
6197
  }
5703
6198
  )
@@ -5744,14 +6239,17 @@ const prettyLoggerBrowser = (options: {
5744
6239
  }
5745
6240
  }
5746
6241
 
6242
+ // oxlint-disable-next-line no-console
5747
6243
  console.groupCollapsed(firstLine, ...firstParams)
5748
6244
 
5749
6245
  if (cause.reasons.length > 0) {
6246
+ // oxlint-disable-next-line no-console
5750
6247
  console.error(causePretty(cause))
5751
6248
  }
5752
6249
 
5753
6250
  if (messageIndex < message.length) {
5754
6251
  for (; messageIndex < message.length; messageIndex++) {
6252
+ // oxlint-disable-next-line no-console
5755
6253
  console.log(redact(message[messageIndex]))
5756
6254
  }
5757
6255
  }
@@ -5760,12 +6258,15 @@ const prettyLoggerBrowser = (options: {
5760
6258
  for (const [key, value] of Object.entries(annotations)) {
5761
6259
  const redacted = redact(value)
5762
6260
  if (options.colors) {
6261
+ // oxlint-disable-next-line no-console
5763
6262
  console.log(`%c${key}:`, "color:gray", redacted)
5764
6263
  } else {
6264
+ // oxlint-disable-next-line no-console
5765
6265
  console.log(`${key}:`, redacted)
5766
6266
  }
5767
6267
  }
5768
6268
 
6269
+ // oxlint-disable-next-line no-console
5769
6270
  console.groupEnd()
5770
6271
  }
5771
6272
  )
@@ -5775,7 +6276,7 @@ const prettyLoggerBrowser = (options: {
5775
6276
  export const defaultLogger = loggerMake<unknown, void>(({ cause, date, fiber, logLevel, message }) => {
5776
6277
  const message_ = Array.isArray(message) ? message.slice() : [message]
5777
6278
  if (cause.reasons.length > 0) {
5778
- message_.unshift(causePretty(cause))
6279
+ message_.push(causePretty(cause))
5779
6280
  }
5780
6281
  const now = date.getTime()
5781
6282
  const spans = fiber.getRef(CurrentLogSpans)
@@ -5788,6 +6289,7 @@ export const defaultLogger = loggerMake<unknown, void>(({ cause, date, fiber, lo
5788
6289
  message_.push(annotations)
5789
6290
  }
5790
6291
  const console = fiber.getRef(ConsoleRef)
6292
+ // oxlint-disable-next-line no-console
5791
6293
  const log = fiber.getRef(LogToStderr) ? console.error : console.log
5792
6294
  log(`[${defaultDateFormat(date)}] ${logLevel.toUpperCase()} (#${fiber.id})${spanString}:`, ...message_)
5793
6295
  })
@@ -5824,3 +6326,48 @@ const undefined_ = succeed(undefined)
5824
6326
 
5825
6327
  /** @internal */
5826
6328
  export { undefined_ as undefined }
6329
+
6330
+ // ----------------------------------------------------------------------------
6331
+ // ErrorReporter
6332
+ // ----------------------------------------------------------------------------
6333
+
6334
+ /** @internal */
6335
+ export const withErrorReporting: <
6336
+ Arg extends Effect.Effect<any, any, any> | {
6337
+ readonly defectsOnly?: boolean | undefined
6338
+ } | undefined = {
6339
+ readonly defectsOnly?: boolean | undefined
6340
+ }
6341
+ >(
6342
+ effectOrOptions: Arg,
6343
+ options?: {
6344
+ readonly defectsOnly?: boolean | undefined
6345
+ } | undefined
6346
+ ) => [Arg] extends [Effect.Effect<infer _A, infer _E, infer _R>] ? Arg
6347
+ : <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> = dual(
6348
+ (args) => isEffect(args[0]),
6349
+ <A, E, R>(
6350
+ self: Effect.Effect<A, E, R>,
6351
+ options?: {
6352
+ readonly defectsOnly?: boolean | undefined
6353
+ } | undefined
6354
+ ): Effect.Effect<A, E, R> =>
6355
+ onError(self, (cause) =>
6356
+ withFiber((fiber) => {
6357
+ reportCauseUnsafe(fiber, cause, options?.defectsOnly)
6358
+ return void_
6359
+ }))
6360
+ )
6361
+
6362
+ /** @internal */
6363
+ export const reportCauseUnsafe = (
6364
+ fiber: Fiber.Fiber<unknown, unknown>,
6365
+ cause: Cause.Cause<unknown>,
6366
+ defectsOnly?: boolean
6367
+ ) => {
6368
+ const reporters = fiber.getRef(CurrentErrorReporters)
6369
+ if (reporters.size === 0) return
6370
+ if (defectsOnly && !hasDies(cause)) return
6371
+ const opts = { cause, fiber, timestamp: fiber.getRef(ClockRef).currentTimeNanosUnsafe() }
6372
+ reporters.forEach((reporter) => reporter.report(opts))
6373
+ }