effect 4.0.0-beta.5 → 4.0.0-beta.50

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