effect 4.0.0 → 4.0.2

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 (1001) hide show
  1. package/ai-docs/package.json +2 -2
  2. package/ai-docs/tsconfig.json +2 -1
  3. package/dist/Array.d.ts +339 -0
  4. package/dist/Array.d.ts.map +1 -1
  5. package/dist/Array.js +143 -3
  6. package/dist/Array.js.map +1 -1
  7. package/dist/BigDecimal.d.ts +88 -0
  8. package/dist/BigDecimal.d.ts.map +1 -1
  9. package/dist/BigDecimal.js +44 -0
  10. package/dist/BigDecimal.js.map +1 -1
  11. package/dist/BigInt.d.ts +68 -0
  12. package/dist/BigInt.d.ts.map +1 -1
  13. package/dist/BigInt.js +36 -0
  14. package/dist/BigInt.js.map +1 -1
  15. package/dist/Boolean.d.ts +34 -0
  16. package/dist/Boolean.d.ts.map +1 -1
  17. package/dist/Boolean.js +18 -0
  18. package/dist/Boolean.js.map +1 -1
  19. package/dist/Brand.d.ts +9 -0
  20. package/dist/Brand.d.ts.map +1 -1
  21. package/dist/Brand.js +6 -0
  22. package/dist/Brand.js.map +1 -1
  23. package/dist/ByteSize.d.ts +86 -0
  24. package/dist/ByteSize.d.ts.map +1 -1
  25. package/dist/ByteSize.js +51 -0
  26. package/dist/ByteSize.js.map +1 -1
  27. package/dist/Cache.d.ts +38 -1
  28. package/dist/Cache.d.ts.map +1 -1
  29. package/dist/Cache.js +47 -23
  30. package/dist/Cache.js.map +1 -1
  31. package/dist/Cause.d.ts +82 -0
  32. package/dist/Cause.d.ts.map +1 -1
  33. package/dist/Cause.js +61 -1
  34. package/dist/Cause.js.map +1 -1
  35. package/dist/Channel.d.ts +327 -4
  36. package/dist/Channel.d.ts.map +1 -1
  37. package/dist/Channel.js +168 -8
  38. package/dist/Channel.js.map +1 -1
  39. package/dist/ChannelSchema.d.ts +11 -0
  40. package/dist/ChannelSchema.d.ts.map +1 -1
  41. package/dist/ChannelSchema.js +6 -0
  42. package/dist/ChannelSchema.js.map +1 -1
  43. package/dist/Chunk.d.ts +192 -0
  44. package/dist/Chunk.d.ts.map +1 -1
  45. package/dist/Chunk.js +78 -0
  46. package/dist/Chunk.js.map +1 -1
  47. package/dist/Clock.d.ts +7 -0
  48. package/dist/Clock.d.ts.map +1 -1
  49. package/dist/Clock.js +5 -0
  50. package/dist/Clock.js.map +1 -1
  51. package/dist/Combiner.d.ts +10 -0
  52. package/dist/Combiner.d.ts.map +1 -1
  53. package/dist/Combiner.js +8 -0
  54. package/dist/Combiner.js.map +1 -1
  55. package/dist/Config.d.ts +52 -12
  56. package/dist/Config.d.ts.map +1 -1
  57. package/dist/Config.js +55 -5
  58. package/dist/Config.js.map +1 -1
  59. package/dist/ConfigProvider.d.ts +28 -0
  60. package/dist/ConfigProvider.d.ts.map +1 -1
  61. package/dist/ConfigProvider.js +19 -0
  62. package/dist/ConfigProvider.js.map +1 -1
  63. package/dist/Console.d.ts +22 -0
  64. package/dist/Console.d.ts.map +1 -1
  65. package/dist/Console.js +20 -0
  66. package/dist/Console.js.map +1 -1
  67. package/dist/Context.d.ts +50 -0
  68. package/dist/Context.d.ts.map +1 -1
  69. package/dist/Context.js +21 -0
  70. package/dist/Context.js.map +1 -1
  71. package/dist/Cron.d.ts +16 -0
  72. package/dist/Cron.d.ts.map +1 -1
  73. package/dist/Cron.js +26 -1
  74. package/dist/Cron.js.map +1 -1
  75. package/dist/Crypto.d.ts +5 -0
  76. package/dist/Crypto.d.ts.map +1 -1
  77. package/dist/Crypto.js +3 -0
  78. package/dist/Crypto.js.map +1 -1
  79. package/dist/Data.d.ts +13 -0
  80. package/dist/Data.d.ts.map +1 -1
  81. package/dist/Data.js +5 -0
  82. package/dist/Data.js.map +1 -1
  83. package/dist/DateTime.d.ts +171 -0
  84. package/dist/DateTime.d.ts.map +1 -1
  85. package/dist/DateTime.js +89 -0
  86. package/dist/DateTime.js.map +1 -1
  87. package/dist/Deferred.d.ts +51 -0
  88. package/dist/Deferred.d.ts.map +1 -1
  89. package/dist/Deferred.js +22 -0
  90. package/dist/Deferred.js.map +1 -1
  91. package/dist/Differ.d.ts +2 -0
  92. package/dist/Differ.d.ts.map +1 -1
  93. package/dist/Differ.js +1 -0
  94. package/dist/Duration.d.ts +90 -0
  95. package/dist/Duration.d.ts.map +1 -1
  96. package/dist/Duration.js +53 -0
  97. package/dist/Duration.js.map +1 -1
  98. package/dist/Effect.d.ts +677 -22
  99. package/dist/Effect.d.ts.map +1 -1
  100. package/dist/Effect.js +251 -10
  101. package/dist/Effect.js.map +1 -1
  102. package/dist/Effectable.d.ts +4 -0
  103. package/dist/Effectable.d.ts.map +1 -1
  104. package/dist/Effectable.js +3 -0
  105. package/dist/Effectable.js.map +1 -1
  106. package/dist/Equal.d.ts +8 -0
  107. package/dist/Equal.d.ts.map +1 -1
  108. package/dist/Equal.js +9 -1
  109. package/dist/Equal.js.map +1 -1
  110. package/dist/Equivalence.d.ts +21 -0
  111. package/dist/Equivalence.d.ts.map +1 -1
  112. package/dist/Equivalence.js +16 -0
  113. package/dist/Equivalence.js.map +1 -1
  114. package/dist/ErrorReporter.d.ts +36 -0
  115. package/dist/ErrorReporter.d.ts.map +1 -1
  116. package/dist/ErrorReporter.js +11 -0
  117. package/dist/ErrorReporter.js.map +1 -1
  118. package/dist/ExecutionPlan.d.ts +49 -8
  119. package/dist/ExecutionPlan.d.ts.map +1 -1
  120. package/dist/ExecutionPlan.js +7 -0
  121. package/dist/ExecutionPlan.js.map +1 -1
  122. package/dist/Exit.d.ts +40 -0
  123. package/dist/Exit.d.ts.map +1 -1
  124. package/dist/Exit.js +27 -0
  125. package/dist/Exit.js.map +1 -1
  126. package/dist/Fiber.d.ts +20 -0
  127. package/dist/Fiber.d.ts.map +1 -1
  128. package/dist/Fiber.js +11 -0
  129. package/dist/Fiber.js.map +1 -1
  130. package/dist/FiberHandle.d.ts +21 -0
  131. package/dist/FiberHandle.d.ts.map +1 -1
  132. package/dist/FiberHandle.js +21 -4
  133. package/dist/FiberHandle.js.map +1 -1
  134. package/dist/FiberMap.d.ts +35 -0
  135. package/dist/FiberMap.d.ts.map +1 -1
  136. package/dist/FiberMap.js +19 -0
  137. package/dist/FiberMap.js.map +1 -1
  138. package/dist/FiberSet.d.ts +20 -0
  139. package/dist/FiberSet.d.ts.map +1 -1
  140. package/dist/FiberSet.js +14 -0
  141. package/dist/FiberSet.js.map +1 -1
  142. package/dist/FileSystem.d.ts +15 -0
  143. package/dist/FileSystem.d.ts.map +1 -1
  144. package/dist/FileSystem.js +8 -0
  145. package/dist/FileSystem.js.map +1 -1
  146. package/dist/Filter.d.ts +55 -0
  147. package/dist/Filter.d.ts.map +1 -1
  148. package/dist/Filter.js +28 -0
  149. package/dist/Filter.js.map +1 -1
  150. package/dist/Formatter.d.ts +3 -0
  151. package/dist/Formatter.d.ts.map +1 -1
  152. package/dist/Formatter.js +39 -1
  153. package/dist/Formatter.js.map +1 -1
  154. package/dist/Function.d.ts +30 -0
  155. package/dist/Function.d.ts.map +1 -1
  156. package/dist/Function.js +20 -0
  157. package/dist/Function.js.map +1 -1
  158. package/dist/Graph.d.ts +247 -12
  159. package/dist/Graph.d.ts.map +1 -1
  160. package/dist/Graph.js +149 -28
  161. package/dist/Graph.js.map +1 -1
  162. package/dist/HKT.d.ts +5 -0
  163. package/dist/HKT.d.ts.map +1 -1
  164. package/dist/Hash.d.ts +14 -0
  165. package/dist/Hash.d.ts.map +1 -1
  166. package/dist/Hash.js +12 -0
  167. package/dist/Hash.js.map +1 -1
  168. package/dist/HashMap.d.ts +91 -0
  169. package/dist/HashMap.d.ts.map +1 -1
  170. package/dist/HashMap.js +39 -0
  171. package/dist/HashMap.js.map +1 -1
  172. package/dist/HashRing.d.ts +17 -0
  173. package/dist/HashRing.d.ts.map +1 -1
  174. package/dist/HashRing.js +22 -5
  175. package/dist/HashRing.js.map +1 -1
  176. package/dist/HashSet.d.ts +49 -0
  177. package/dist/HashSet.d.ts.map +1 -1
  178. package/dist/HashSet.js +19 -0
  179. package/dist/HashSet.js.map +1 -1
  180. package/dist/Inspectable.d.ts +7 -0
  181. package/dist/Inspectable.d.ts.map +1 -1
  182. package/dist/Inspectable.js +6 -0
  183. package/dist/Inspectable.js.map +1 -1
  184. package/dist/Iterable.d.ts +127 -0
  185. package/dist/Iterable.d.ts.map +1 -1
  186. package/dist/Iterable.js +51 -0
  187. package/dist/Iterable.js.map +1 -1
  188. package/dist/JsonPatch.d.ts +4 -0
  189. package/dist/JsonPatch.d.ts.map +1 -1
  190. package/dist/JsonPatch.js +3 -0
  191. package/dist/JsonPatch.js.map +1 -1
  192. package/dist/JsonPointer.d.ts +5 -0
  193. package/dist/JsonPointer.d.ts.map +1 -1
  194. package/dist/JsonPointer.js +5 -0
  195. package/dist/JsonPointer.js.map +1 -1
  196. package/dist/JsonSchema.d.ts +16 -0
  197. package/dist/JsonSchema.d.ts.map +1 -1
  198. package/dist/JsonSchema.js +11 -0
  199. package/dist/JsonSchema.js.map +1 -1
  200. package/dist/Latch.d.ts +14 -0
  201. package/dist/Latch.d.ts.map +1 -1
  202. package/dist/Latch.js +10 -0
  203. package/dist/Latch.js.map +1 -1
  204. package/dist/Layer.d.ts +100 -0
  205. package/dist/Layer.d.ts.map +1 -1
  206. package/dist/Layer.js +45 -1
  207. package/dist/Layer.js.map +1 -1
  208. package/dist/LayerMap.d.ts +7 -0
  209. package/dist/LayerMap.d.ts.map +1 -1
  210. package/dist/LayerMap.js +4 -0
  211. package/dist/LayerMap.js.map +1 -1
  212. package/dist/LayerRef.d.ts +5 -0
  213. package/dist/LayerRef.d.ts.map +1 -1
  214. package/dist/LayerRef.js +3 -0
  215. package/dist/LayerRef.js.map +1 -1
  216. package/dist/LogLevel.d.ts +20 -0
  217. package/dist/LogLevel.d.ts.map +1 -1
  218. package/dist/LogLevel.js +9 -0
  219. package/dist/LogLevel.js.map +1 -1
  220. package/dist/Logger.d.ts +25 -0
  221. package/dist/Logger.d.ts.map +1 -1
  222. package/dist/Logger.js +30 -4
  223. package/dist/Logger.js.map +1 -1
  224. package/dist/ManagedRuntime.d.ts +5 -0
  225. package/dist/ManagedRuntime.d.ts.map +1 -1
  226. package/dist/ManagedRuntime.js +9 -1
  227. package/dist/ManagedRuntime.js.map +1 -1
  228. package/dist/Match.d.ts +51 -0
  229. package/dist/Match.d.ts.map +1 -1
  230. package/dist/Match.js +39 -0
  231. package/dist/Match.js.map +1 -1
  232. package/dist/Metric.d.ts +59 -0
  233. package/dist/Metric.d.ts.map +1 -1
  234. package/dist/Metric.js +31 -0
  235. package/dist/Metric.js.map +1 -1
  236. package/dist/MutableHashMap.d.ts +32 -0
  237. package/dist/MutableHashMap.d.ts.map +1 -1
  238. package/dist/MutableHashMap.js +16 -0
  239. package/dist/MutableHashMap.js.map +1 -1
  240. package/dist/MutableHashSet.d.ts +16 -0
  241. package/dist/MutableHashSet.d.ts.map +1 -1
  242. package/dist/MutableHashSet.js +10 -0
  243. package/dist/MutableHashSet.js.map +1 -1
  244. package/dist/MutableList.d.ts +20 -0
  245. package/dist/MutableList.d.ts.map +1 -1
  246. package/dist/MutableList.js +18 -0
  247. package/dist/MutableList.js.map +1 -1
  248. package/dist/MutableRef.d.ts +31 -0
  249. package/dist/MutableRef.d.ts.map +1 -1
  250. package/dist/MutableRef.js +17 -0
  251. package/dist/MutableRef.js.map +1 -1
  252. package/dist/Newtype.d.ts +9 -0
  253. package/dist/Newtype.d.ts.map +1 -1
  254. package/dist/Newtype.js +6 -0
  255. package/dist/Newtype.js.map +1 -1
  256. package/dist/NonEmptyIterable.d.ts +4 -0
  257. package/dist/NonEmptyIterable.d.ts.map +1 -1
  258. package/dist/NonEmptyIterable.js +2 -0
  259. package/dist/NonEmptyIterable.js.map +1 -1
  260. package/dist/Number.d.ts +61 -0
  261. package/dist/Number.d.ts.map +1 -1
  262. package/dist/Number.js +31 -0
  263. package/dist/Number.js.map +1 -1
  264. package/dist/Optic.d.ts +41 -0
  265. package/dist/Optic.d.ts.map +1 -1
  266. package/dist/Optic.js +20 -0
  267. package/dist/Optic.js.map +1 -1
  268. package/dist/Option.d.ts +134 -0
  269. package/dist/Option.d.ts.map +1 -1
  270. package/dist/Option.js +61 -0
  271. package/dist/Option.js.map +1 -1
  272. package/dist/Order.d.ts +29 -0
  273. package/dist/Order.d.ts.map +1 -1
  274. package/dist/Order.js +24 -0
  275. package/dist/Order.js.map +1 -1
  276. package/dist/Ordering.d.ts +7 -0
  277. package/dist/Ordering.d.ts.map +1 -1
  278. package/dist/Ordering.js +3 -0
  279. package/dist/Ordering.js.map +1 -1
  280. package/dist/PartitionedSemaphore.d.ts +24 -0
  281. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  282. package/dist/PartitionedSemaphore.js +47 -21
  283. package/dist/PartitionedSemaphore.js.map +1 -1
  284. package/dist/Path.d.ts +6 -0
  285. package/dist/Path.d.ts.map +1 -1
  286. package/dist/Path.js +4 -0
  287. package/dist/Path.js.map +1 -1
  288. package/dist/Pipeable.d.ts +7 -0
  289. package/dist/Pipeable.d.ts.map +1 -1
  290. package/dist/Pipeable.js +5 -0
  291. package/dist/Pipeable.js.map +1 -1
  292. package/dist/PlatformError.d.ts +8 -0
  293. package/dist/PlatformError.d.ts.map +1 -1
  294. package/dist/PlatformError.js +7 -0
  295. package/dist/PlatformError.js.map +1 -1
  296. package/dist/Pool.d.ts +28 -5
  297. package/dist/Pool.d.ts.map +1 -1
  298. package/dist/Pool.js +42 -42
  299. package/dist/Pool.js.map +1 -1
  300. package/dist/Predicate.d.ts +84 -0
  301. package/dist/Predicate.d.ts.map +1 -1
  302. package/dist/Predicate.js +48 -0
  303. package/dist/Predicate.js.map +1 -1
  304. package/dist/PrimaryKey.d.ts +5 -0
  305. package/dist/PrimaryKey.d.ts.map +1 -1
  306. package/dist/PrimaryKey.js +4 -0
  307. package/dist/PrimaryKey.js.map +1 -1
  308. package/dist/PubSub.d.ts +67 -5
  309. package/dist/PubSub.d.ts.map +1 -1
  310. package/dist/PubSub.js +60 -8
  311. package/dist/PubSub.js.map +1 -1
  312. package/dist/Pull.d.ts +20 -0
  313. package/dist/Pull.d.ts.map +1 -1
  314. package/dist/Pull.js +10 -0
  315. package/dist/Pull.js.map +1 -1
  316. package/dist/Queue.d.ts +60 -0
  317. package/dist/Queue.d.ts.map +1 -1
  318. package/dist/Queue.js +58 -8
  319. package/dist/Queue.js.map +1 -1
  320. package/dist/Random.d.ts +13 -0
  321. package/dist/Random.d.ts.map +1 -1
  322. package/dist/Random.js +9 -0
  323. package/dist/Random.js.map +1 -1
  324. package/dist/RcMap.d.ts +23 -0
  325. package/dist/RcMap.d.ts.map +1 -1
  326. package/dist/RcMap.js +24 -1
  327. package/dist/RcMap.js.map +1 -1
  328. package/dist/RcRef.d.ts +6 -0
  329. package/dist/RcRef.d.ts.map +1 -1
  330. package/dist/RcRef.js +3 -0
  331. package/dist/RcRef.js.map +1 -1
  332. package/dist/Record.d.ts +100 -0
  333. package/dist/Record.d.ts.map +1 -1
  334. package/dist/Record.js +43 -0
  335. package/dist/Record.js.map +1 -1
  336. package/dist/Redactable.d.ts +6 -0
  337. package/dist/Redactable.d.ts.map +1 -1
  338. package/dist/Redactable.js +4 -0
  339. package/dist/Redactable.js.map +1 -1
  340. package/dist/Redacted.d.ts +8 -0
  341. package/dist/Redacted.d.ts.map +1 -1
  342. package/dist/Redacted.js +6 -0
  343. package/dist/Redacted.js.map +1 -1
  344. package/dist/Reducer.d.ts +4 -0
  345. package/dist/Reducer.d.ts.map +1 -1
  346. package/dist/Reducer.js +3 -0
  347. package/dist/Reducer.js.map +1 -1
  348. package/dist/Ref.d.ts +20 -0
  349. package/dist/Ref.d.ts.map +1 -1
  350. package/dist/Ref.js +16 -0
  351. package/dist/Ref.js.map +1 -1
  352. package/dist/References.d.ts +21 -0
  353. package/dist/References.d.ts.map +1 -1
  354. package/dist/References.js +19 -0
  355. package/dist/References.js.map +1 -1
  356. package/dist/RegExp.d.ts +3 -0
  357. package/dist/RegExp.d.ts.map +1 -1
  358. package/dist/RegExp.js +4 -0
  359. package/dist/RegExp.js.map +1 -1
  360. package/dist/Request.d.ts +32 -0
  361. package/dist/Request.d.ts.map +1 -1
  362. package/dist/Request.js +12 -0
  363. package/dist/Request.js.map +1 -1
  364. package/dist/RequestResolver.d.ts +42 -0
  365. package/dist/RequestResolver.d.ts.map +1 -1
  366. package/dist/RequestResolver.js +27 -6
  367. package/dist/RequestResolver.js.map +1 -1
  368. package/dist/Resource.d.ts +6 -0
  369. package/dist/Resource.d.ts.map +1 -1
  370. package/dist/Resource.js +6 -0
  371. package/dist/Resource.js.map +1 -1
  372. package/dist/Result.d.ts +91 -0
  373. package/dist/Result.d.ts.map +1 -1
  374. package/dist/Result.js +41 -0
  375. package/dist/Result.js.map +1 -1
  376. package/dist/Runtime.d.ts +9 -0
  377. package/dist/Runtime.d.ts.map +1 -1
  378. package/dist/Runtime.js +7 -0
  379. package/dist/Runtime.js.map +1 -1
  380. package/dist/Schedule.d.ts +57 -0
  381. package/dist/Schedule.d.ts.map +1 -1
  382. package/dist/Schedule.js +32 -0
  383. package/dist/Schedule.js.map +1 -1
  384. package/dist/Scheduler.d.ts +7 -0
  385. package/dist/Scheduler.d.ts.map +1 -1
  386. package/dist/Scheduler.js +5 -0
  387. package/dist/Scheduler.js.map +1 -1
  388. package/dist/Schema.d.ts +496 -1
  389. package/dist/Schema.d.ts.map +1 -1
  390. package/dist/Schema.js +280 -1
  391. package/dist/Schema.js.map +1 -1
  392. package/dist/SchemaAST.d.ts +107 -0
  393. package/dist/SchemaAST.d.ts.map +1 -1
  394. package/dist/SchemaAST.js +81 -1
  395. package/dist/SchemaAST.js.map +1 -1
  396. package/dist/SchemaGetter.d.ts +69 -2
  397. package/dist/SchemaGetter.d.ts.map +1 -1
  398. package/dist/SchemaGetter.js +63 -4
  399. package/dist/SchemaGetter.js.map +1 -1
  400. package/dist/SchemaIssue.d.ts +33 -0
  401. package/dist/SchemaIssue.d.ts.map +1 -1
  402. package/dist/SchemaIssue.js +18 -0
  403. package/dist/SchemaIssue.js.map +1 -1
  404. package/dist/SchemaParser.d.ts +25 -0
  405. package/dist/SchemaParser.d.ts.map +1 -1
  406. package/dist/SchemaParser.js +26 -0
  407. package/dist/SchemaParser.js.map +1 -1
  408. package/dist/SchemaRepresentation.d.ts +147 -0
  409. package/dist/SchemaRepresentation.d.ts.map +1 -1
  410. package/dist/SchemaRepresentation.js +99 -0
  411. package/dist/SchemaRepresentation.js.map +1 -1
  412. package/dist/SchemaTransformation.d.ts +53 -0
  413. package/dist/SchemaTransformation.d.ts.map +1 -1
  414. package/dist/SchemaTransformation.js +46 -0
  415. package/dist/SchemaTransformation.js.map +1 -1
  416. package/dist/Scope.d.ts +19 -0
  417. package/dist/Scope.d.ts.map +1 -1
  418. package/dist/Scope.js +12 -0
  419. package/dist/Scope.js.map +1 -1
  420. package/dist/ScopedCache.d.ts +34 -0
  421. package/dist/ScopedCache.d.ts.map +1 -1
  422. package/dist/ScopedCache.js +50 -19
  423. package/dist/ScopedCache.js.map +1 -1
  424. package/dist/ScopedRef.d.ts +9 -0
  425. package/dist/ScopedRef.d.ts.map +1 -1
  426. package/dist/ScopedRef.js +6 -0
  427. package/dist/ScopedRef.js.map +1 -1
  428. package/dist/Semaphore.d.ts +26 -0
  429. package/dist/Semaphore.d.ts.map +1 -1
  430. package/dist/Semaphore.js +10 -0
  431. package/dist/Semaphore.js.map +1 -1
  432. package/dist/Sink.d.ts +125 -1
  433. package/dist/Sink.d.ts.map +1 -1
  434. package/dist/Sink.js +75 -1
  435. package/dist/Sink.js.map +1 -1
  436. package/dist/StandardSchema.d.ts +1 -0
  437. package/dist/StandardSchema.d.ts.map +1 -1
  438. package/dist/StandardSchema.js +1 -0
  439. package/dist/Stdio.d.ts +7 -0
  440. package/dist/Stdio.d.ts.map +1 -1
  441. package/dist/Stdio.js +5 -0
  442. package/dist/Stdio.js.map +1 -1
  443. package/dist/Stream.d.ts +603 -6
  444. package/dist/Stream.d.ts.map +1 -1
  445. package/dist/Stream.js +316 -57
  446. package/dist/Stream.js.map +1 -1
  447. package/dist/String.d.ts +87 -0
  448. package/dist/String.d.ts.map +1 -1
  449. package/dist/String.js +61 -0
  450. package/dist/String.js.map +1 -1
  451. package/dist/Struct.d.ts +46 -0
  452. package/dist/Struct.d.ts.map +1 -1
  453. package/dist/Struct.js +19 -0
  454. package/dist/Struct.js.map +1 -1
  455. package/dist/SubscriptionRef.d.ts +65 -0
  456. package/dist/SubscriptionRef.d.ts.map +1 -1
  457. package/dist/SubscriptionRef.js +25 -0
  458. package/dist/SubscriptionRef.js.map +1 -1
  459. package/dist/Symbol.d.ts +2 -0
  460. package/dist/Symbol.d.ts.map +1 -1
  461. package/dist/Symbol.js +2 -0
  462. package/dist/Symbol.js.map +1 -1
  463. package/dist/SynchronizedRef.d.ts +63 -0
  464. package/dist/SynchronizedRef.d.ts.map +1 -1
  465. package/dist/SynchronizedRef.js +24 -0
  466. package/dist/SynchronizedRef.js.map +1 -1
  467. package/dist/Take.d.ts +3 -0
  468. package/dist/Take.d.ts.map +1 -1
  469. package/dist/Take.js +1 -0
  470. package/dist/Take.js.map +1 -1
  471. package/dist/Terminal.d.ts +8 -0
  472. package/dist/Terminal.d.ts.map +1 -1
  473. package/dist/Terminal.js +4 -0
  474. package/dist/Terminal.js.map +1 -1
  475. package/dist/Tracer.d.ts +23 -0
  476. package/dist/Tracer.d.ts.map +1 -1
  477. package/dist/Tracer.js +12 -0
  478. package/dist/Tracer.js.map +1 -1
  479. package/dist/Trie.d.ts +68 -0
  480. package/dist/Trie.d.ts.map +1 -1
  481. package/dist/Trie.js +28 -0
  482. package/dist/Trie.js.map +1 -1
  483. package/dist/Tuple.d.ts +38 -0
  484. package/dist/Tuple.d.ts.map +1 -1
  485. package/dist/Tuple.js +18 -0
  486. package/dist/Tuple.js.map +1 -1
  487. package/dist/TxChunk.d.ts +52 -0
  488. package/dist/TxChunk.d.ts.map +1 -1
  489. package/dist/TxChunk.js +23 -0
  490. package/dist/TxChunk.js.map +1 -1
  491. package/dist/TxDeferred.d.ts +15 -0
  492. package/dist/TxDeferred.d.ts.map +1 -1
  493. package/dist/TxDeferred.js +8 -0
  494. package/dist/TxDeferred.js.map +1 -1
  495. package/dist/TxHashMap.d.ts +83 -0
  496. package/dist/TxHashMap.d.ts.map +1 -1
  497. package/dist/TxHashMap.js +52 -7
  498. package/dist/TxHashMap.js.map +1 -1
  499. package/dist/TxHashSet.d.ts +51 -0
  500. package/dist/TxHashSet.d.ts.map +1 -1
  501. package/dist/TxHashSet.js +29 -4
  502. package/dist/TxHashSet.js.map +1 -1
  503. package/dist/TxPriorityQueue.d.ts +30 -0
  504. package/dist/TxPriorityQueue.d.ts.map +1 -1
  505. package/dist/TxPriorityQueue.js +22 -1
  506. package/dist/TxPriorityQueue.js.map +1 -1
  507. package/dist/TxPubSub.d.ts +25 -0
  508. package/dist/TxPubSub.d.ts.map +1 -1
  509. package/dist/TxPubSub.js +19 -0
  510. package/dist/TxPubSub.js.map +1 -1
  511. package/dist/TxQueue.d.ts +51 -0
  512. package/dist/TxQueue.d.ts.map +1 -1
  513. package/dist/TxQueue.js +30 -0
  514. package/dist/TxQueue.js.map +1 -1
  515. package/dist/TxReentrantLock.d.ts +24 -0
  516. package/dist/TxReentrantLock.d.ts.map +1 -1
  517. package/dist/TxReentrantLock.js +32 -18
  518. package/dist/TxReentrantLock.js.map +1 -1
  519. package/dist/TxRef.d.ts +14 -0
  520. package/dist/TxRef.d.ts.map +1 -1
  521. package/dist/TxRef.js +7 -0
  522. package/dist/TxRef.js.map +1 -1
  523. package/dist/TxSemaphore.d.ts +25 -0
  524. package/dist/TxSemaphore.d.ts.map +1 -1
  525. package/dist/TxSemaphore.js +29 -13
  526. package/dist/TxSemaphore.js.map +1 -1
  527. package/dist/TxSubscriptionRef.d.ts +25 -0
  528. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  529. package/dist/TxSubscriptionRef.js +12 -0
  530. package/dist/TxSubscriptionRef.js.map +1 -1
  531. package/dist/Types.d.ts +36 -0
  532. package/dist/Types.d.ts.map +1 -1
  533. package/dist/Types.js +1 -0
  534. package/dist/UndefinedOr.d.ts +15 -0
  535. package/dist/UndefinedOr.d.ts.map +1 -1
  536. package/dist/UndefinedOr.js +9 -0
  537. package/dist/UndefinedOr.js.map +1 -1
  538. package/dist/Unify.d.ts +15 -0
  539. package/dist/Unify.d.ts.map +1 -1
  540. package/dist/Unify.js +2 -0
  541. package/dist/Unify.js.map +1 -1
  542. package/dist/Utils.d.ts +4 -0
  543. package/dist/Utils.d.ts.map +1 -1
  544. package/dist/Utils.js +1 -0
  545. package/dist/Utils.js.map +1 -1
  546. package/dist/Version.d.ts +26 -0
  547. package/dist/Version.d.ts.map +1 -0
  548. package/dist/Version.js +36 -0
  549. package/dist/Version.js.map +1 -0
  550. package/dist/ai/Chat.js +1 -1
  551. package/dist/ai/Chat.js.map +1 -1
  552. package/dist/ai/DecisionModel.d.ts +22 -0
  553. package/dist/ai/DecisionModel.d.ts.map +1 -1
  554. package/dist/ai/DecisionModel.js +22 -4
  555. package/dist/ai/DecisionModel.js.map +1 -1
  556. package/dist/ai/LanguageModel.d.ts +8 -0
  557. package/dist/ai/LanguageModel.d.ts.map +1 -1
  558. package/dist/ai/LanguageModel.js +27 -15
  559. package/dist/ai/LanguageModel.js.map +1 -1
  560. package/dist/ai/McpSchema.d.ts +508 -508
  561. package/dist/ai/McpSchema.d.ts.map +1 -1
  562. package/dist/ai/McpSchema.js +1 -1
  563. package/dist/ai/McpSchema.js.map +1 -1
  564. package/dist/ai/McpServer.d.ts +32 -11
  565. package/dist/ai/McpServer.d.ts.map +1 -1
  566. package/dist/ai/McpServer.js +224 -172
  567. package/dist/ai/McpServer.js.map +1 -1
  568. package/dist/ai/Response.d.ts.map +1 -1
  569. package/dist/ai/Response.js +22 -12
  570. package/dist/ai/Response.js.map +1 -1
  571. package/dist/ai/Telemetry.d.ts +49 -41
  572. package/dist/ai/Telemetry.d.ts.map +1 -1
  573. package/dist/ai/Telemetry.js +6 -8
  574. package/dist/ai/Telemetry.js.map +1 -1
  575. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -0
  576. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  577. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -0
  578. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  579. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +1 -0
  580. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  581. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +1 -0
  582. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  583. package/dist/ai/internal/mcpRuntime.js +79 -46
  584. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  585. package/dist/ai/internal/mcpSchema/v2024_11_05.js +3 -1
  586. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  587. package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
  588. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  589. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  590. package/dist/cluster/ClusterWorkflowEngine.js +11 -2
  591. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  592. package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
  593. package/dist/cluster/K8sHttpClient.js +5 -2
  594. package/dist/cluster/K8sHttpClient.js.map +1 -1
  595. package/dist/cluster/Sharding.d.ts.map +1 -1
  596. package/dist/cluster/Sharding.js +14 -7
  597. package/dist/cluster/Sharding.js.map +1 -1
  598. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  599. package/dist/cluster/SqlMessageStorage.js +21 -12
  600. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  601. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  602. package/dist/cluster/SqlRunnerStorage.js +30 -44
  603. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  604. package/dist/cluster/internal/entityManager.js +63 -62
  605. package/dist/cluster/internal/entityManager.js.map +1 -1
  606. package/dist/cluster/internal/interruptors.js +8 -0
  607. package/dist/cluster/internal/interruptors.js.map +1 -1
  608. package/dist/cluster/internal/resourceMap.js +39 -14
  609. package/dist/cluster/internal/resourceMap.js.map +1 -1
  610. package/dist/cluster/internal/resourceRef.js +168 -87
  611. package/dist/cluster/internal/resourceRef.js.map +1 -1
  612. package/dist/encoding/Base64.d.ts +4 -0
  613. package/dist/encoding/Base64.d.ts.map +1 -1
  614. package/dist/encoding/Base64.js +4 -0
  615. package/dist/encoding/Base64.js.map +1 -1
  616. package/dist/encoding/Base64Url.d.ts +4 -0
  617. package/dist/encoding/Base64Url.d.ts.map +1 -1
  618. package/dist/encoding/Base64Url.js +4 -0
  619. package/dist/encoding/Base64Url.js.map +1 -1
  620. package/dist/encoding/EncodingError.d.ts +4 -0
  621. package/dist/encoding/EncodingError.d.ts.map +1 -1
  622. package/dist/encoding/EncodingError.js +4 -0
  623. package/dist/encoding/EncodingError.js.map +1 -1
  624. package/dist/encoding/Hex.d.ts +5 -0
  625. package/dist/encoding/Hex.d.ts.map +1 -1
  626. package/dist/encoding/Hex.js +5 -0
  627. package/dist/encoding/Hex.js.map +1 -1
  628. package/dist/encoding/Toml.js +2 -2
  629. package/dist/encoding/Toml.js.map +1 -1
  630. package/dist/encoding/Yaml.d.ts.map +1 -1
  631. package/dist/encoding/Yaml.js +6 -4
  632. package/dist/encoding/Yaml.js.map +1 -1
  633. package/dist/encoding/index.d.ts +4 -0
  634. package/dist/encoding/index.d.ts.map +1 -1
  635. package/dist/encoding/index.js +4 -0
  636. package/dist/encoding/index.js.map +1 -1
  637. package/dist/eventlog/SqlEventJournal.js +8 -4
  638. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  639. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
  640. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  641. package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
  642. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  643. package/dist/http/Headers.d.ts +3 -1
  644. package/dist/http/Headers.d.ts.map +1 -1
  645. package/dist/http/Headers.js +4 -2
  646. package/dist/http/Headers.js.map +1 -1
  647. package/dist/http/HttpClient.d.ts +9 -0
  648. package/dist/http/HttpClient.d.ts.map +1 -1
  649. package/dist/http/HttpClient.js +40 -21
  650. package/dist/http/HttpClient.js.map +1 -1
  651. package/dist/http/HttpClientResponse.js +3 -1
  652. package/dist/http/HttpClientResponse.js.map +1 -1
  653. package/dist/http/HttpEffect.d.ts +3 -0
  654. package/dist/http/HttpEffect.d.ts.map +1 -1
  655. package/dist/http/HttpEffect.js +5 -2
  656. package/dist/http/HttpEffect.js.map +1 -1
  657. package/dist/http/HttpMiddleware.d.ts +17 -0
  658. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  659. package/dist/http/HttpMiddleware.js +58 -40
  660. package/dist/http/HttpMiddleware.js.map +1 -1
  661. package/dist/http/HttpServer.d.ts +1 -1
  662. package/dist/http/HttpServer.d.ts.map +1 -1
  663. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  664. package/dist/http/HttpStaticServer.js +14 -0
  665. package/dist/http/HttpStaticServer.js.map +1 -1
  666. package/dist/http/HttpTraceContext.d.ts +1 -1
  667. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  668. package/dist/http/HttpTraceContext.js +4 -4
  669. package/dist/http/HttpTraceContext.js.map +1 -1
  670. package/dist/http/internal/tracing.d.ts +2 -0
  671. package/dist/http/internal/tracing.d.ts.map +1 -0
  672. package/dist/http/internal/tracing.js +37 -0
  673. package/dist/http/internal/tracing.js.map +1 -0
  674. package/dist/http-api/HttpApiBuilder.js +2 -1
  675. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  676. package/dist/http-api/HttpApiClient.d.ts +12 -3
  677. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  678. package/dist/http-api/HttpApiClient.js.map +1 -1
  679. package/dist/http-api/HttpApiError.d.ts +4 -2
  680. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  681. package/dist/http-api/HttpApiError.js +7 -3
  682. package/dist/http-api/HttpApiError.js.map +1 -1
  683. package/dist/http-api/HttpApiSecurity.d.ts +8 -8
  684. package/dist/http-api/HttpApiSecurity.js +8 -8
  685. package/dist/index.d.ts +155 -0
  686. package/dist/index.d.ts.map +1 -1
  687. package/dist/index.js +155 -0
  688. package/dist/index.js.map +1 -1
  689. package/dist/internal/arbitrary/array.js +3 -3
  690. package/dist/internal/arbitrary/array.js.map +1 -1
  691. package/dist/internal/arbitrary/model.js +26 -11
  692. package/dist/internal/arbitrary/model.js.map +1 -1
  693. package/dist/internal/arbitrary/runner.js +8 -8
  694. package/dist/internal/arbitrary/runner.js.map +1 -1
  695. package/dist/internal/arbitrary/schema.js +4 -5
  696. package/dist/internal/arbitrary/schema.js.map +1 -1
  697. package/dist/internal/core.js +43 -2
  698. package/dist/internal/core.js.map +1 -1
  699. package/dist/internal/dateTime.js +1 -1
  700. package/dist/internal/dateTime.js.map +1 -1
  701. package/dist/internal/effect.js +104 -120
  702. package/dist/internal/effect.js.map +1 -1
  703. package/dist/internal/rcRef.js +59 -23
  704. package/dist/internal/rcRef.js.map +1 -1
  705. package/dist/internal/schedule.js +7 -5
  706. package/dist/internal/schedule.js.map +1 -1
  707. package/dist/internal/schema/fromJsonSchemaDocument.js +11 -8
  708. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  709. package/dist/internal/schema/standardSchema.js +2 -2
  710. package/dist/internal/schema/standardSchema.js.map +1 -1
  711. package/dist/internal/version.d.ts +2 -0
  712. package/dist/internal/version.d.ts.map +1 -0
  713. package/dist/internal/version.js +3 -0
  714. package/dist/internal/version.js.map +1 -0
  715. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  716. package/dist/observability/OtlpExporter.js +5 -6
  717. package/dist/observability/OtlpExporter.js.map +1 -1
  718. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  719. package/dist/observability/OtlpLogger.js +23 -27
  720. package/dist/observability/OtlpLogger.js.map +1 -1
  721. package/dist/observability/OtlpMetrics.d.ts +5 -3
  722. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  723. package/dist/observability/OtlpMetrics.js +21 -94
  724. package/dist/observability/OtlpMetrics.js.map +1 -1
  725. package/dist/observability/OtlpResource.d.ts +4 -3
  726. package/dist/observability/OtlpResource.d.ts.map +1 -1
  727. package/dist/observability/OtlpResource.js +20 -23
  728. package/dist/observability/OtlpResource.js.map +1 -1
  729. package/dist/observability/OtlpTracer.d.ts +1 -0
  730. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  731. package/dist/observability/OtlpTracer.js +32 -36
  732. package/dist/observability/OtlpTracer.js.map +1 -1
  733. package/dist/observability/internal/otlpProtobuf.js +32 -1
  734. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  735. package/dist/reactivity/AsyncResult.d.ts +1 -1
  736. package/dist/reactivity/Atom.d.ts +5 -5
  737. package/dist/reactivity/Atom.d.ts.map +1 -1
  738. package/dist/reactivity/Atom.js +9 -5
  739. package/dist/reactivity/Atom.js.map +1 -1
  740. package/dist/reactivity/AtomHttpApi.d.ts +2 -2
  741. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  742. package/dist/reactivity/AtomRegistry.d.ts +8 -0
  743. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  744. package/dist/reactivity/AtomRegistry.js.map +1 -1
  745. package/dist/rpc/RpcClient.d.ts +21 -3
  746. package/dist/rpc/RpcClient.d.ts.map +1 -1
  747. package/dist/rpc/RpcClient.js +58 -34
  748. package/dist/rpc/RpcClient.js.map +1 -1
  749. package/dist/rpc/RpcServer.d.ts.map +1 -1
  750. package/dist/rpc/RpcServer.js +20 -23
  751. package/dist/rpc/RpcServer.js.map +1 -1
  752. package/dist/rpc/Utils.d.ts +2 -3
  753. package/dist/rpc/Utils.d.ts.map +1 -1
  754. package/dist/rpc/Utils.js +3 -4
  755. package/dist/rpc/Utils.js.map +1 -1
  756. package/dist/rpc/internal/tracing.d.ts +2 -0
  757. package/dist/rpc/internal/tracing.d.ts.map +1 -0
  758. package/dist/rpc/internal/tracing.js +18 -0
  759. package/dist/rpc/internal/tracing.js.map +1 -0
  760. package/dist/schema/SchemaCompiler/runtime.js +9 -1
  761. package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
  762. package/dist/sql/SqlClient.js +4 -4
  763. package/dist/sql/SqlClient.js.map +1 -1
  764. package/dist/sql/Statement.d.ts +21 -1
  765. package/dist/sql/Statement.d.ts.map +1 -1
  766. package/dist/sql/Statement.js +55 -7
  767. package/dist/sql/Statement.js.map +1 -1
  768. package/dist/testing/TestClock.d.ts +8 -0
  769. package/dist/testing/TestClock.d.ts.map +1 -1
  770. package/dist/testing/TestClock.js +7 -0
  771. package/dist/testing/TestClock.js.map +1 -1
  772. package/dist/testing/TestConsole.d.ts +7 -0
  773. package/dist/testing/TestConsole.d.ts.map +1 -1
  774. package/dist/testing/TestConsole.js +6 -0
  775. package/dist/testing/TestConsole.js.map +1 -1
  776. package/dist/testing/index.d.ts +3 -0
  777. package/dist/testing/index.d.ts.map +1 -1
  778. package/dist/testing/index.js +3 -0
  779. package/dist/testing/index.js.map +1 -1
  780. package/dist/workflow/WorkflowEngine.d.ts +2 -0
  781. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  782. package/dist/workflow/WorkflowEngine.js +1 -0
  783. package/dist/workflow/WorkflowEngine.js.map +1 -1
  784. package/package.json +3 -3
  785. package/src/Array.ts +351 -3
  786. package/src/BigDecimal.ts +88 -0
  787. package/src/BigInt.ts +68 -0
  788. package/src/Boolean.ts +34 -0
  789. package/src/Brand.ts +10 -0
  790. package/src/ByteSize.ts +87 -0
  791. package/src/Cache.ts +72 -24
  792. package/src/Cause.ts +83 -1
  793. package/src/Channel.ts +368 -18
  794. package/src/ChannelSchema.ts +13 -0
  795. package/src/Chunk.ts +193 -0
  796. package/src/Clock.ts +7 -0
  797. package/src/Combiner.ts +10 -0
  798. package/src/Config.ts +82 -8
  799. package/src/ConfigProvider.ts +28 -0
  800. package/src/Console.ts +26 -0
  801. package/src/Context.ts +50 -0
  802. package/src/Cron.ts +32 -1
  803. package/src/Crypto.ts +5 -0
  804. package/src/Data.ts +13 -0
  805. package/src/DateTime.ts +171 -0
  806. package/src/Deferred.ts +51 -0
  807. package/src/Differ.ts +2 -0
  808. package/src/Duration.ts +90 -0
  809. package/src/Effect.ts +692 -27
  810. package/src/Effectable.ts +4 -0
  811. package/src/Equal.ts +12 -1
  812. package/src/Equivalence.ts +22 -0
  813. package/src/ErrorReporter.ts +36 -0
  814. package/src/ExecutionPlan.ts +58 -14
  815. package/src/Exit.ts +40 -0
  816. package/src/Fiber.ts +20 -0
  817. package/src/FiberHandle.ts +29 -4
  818. package/src/FiberMap.ts +38 -0
  819. package/src/FiberSet.ts +21 -0
  820. package/src/FileSystem.ts +16 -0
  821. package/src/Filter.ts +55 -0
  822. package/src/Formatter.ts +42 -1
  823. package/src/Function.ts +30 -0
  824. package/src/Graph.ts +317 -36
  825. package/src/HKT.ts +5 -0
  826. package/src/Hash.ts +15 -0
  827. package/src/HashMap.ts +91 -0
  828. package/src/HashRing.ts +32 -5
  829. package/src/HashSet.ts +53 -0
  830. package/src/Inspectable.ts +8 -0
  831. package/src/Iterable.ts +127 -0
  832. package/src/JsonPatch.ts +5 -0
  833. package/src/JsonPointer.ts +5 -0
  834. package/src/JsonSchema.ts +17 -0
  835. package/src/Latch.ts +14 -0
  836. package/src/Layer.ts +101 -1
  837. package/src/LayerMap.ts +7 -0
  838. package/src/LayerRef.ts +5 -0
  839. package/src/LogLevel.ts +20 -0
  840. package/src/Logger.ts +41 -5
  841. package/src/ManagedRuntime.ts +12 -1
  842. package/src/Match.ts +52 -0
  843. package/src/Metric.ts +69 -0
  844. package/src/MutableHashMap.ts +44 -0
  845. package/src/MutableHashSet.ts +17 -0
  846. package/src/MutableList.ts +21 -0
  847. package/src/MutableRef.ts +32 -0
  848. package/src/Newtype.ts +9 -0
  849. package/src/NonEmptyIterable.ts +4 -0
  850. package/src/Number.ts +61 -0
  851. package/src/Optic.ts +57 -0
  852. package/src/Option.ts +134 -0
  853. package/src/Order.ts +30 -0
  854. package/src/Ordering.ts +7 -0
  855. package/src/PartitionedSemaphore.ts +61 -22
  856. package/src/Path.ts +6 -0
  857. package/src/Pipeable.ts +7 -0
  858. package/src/PlatformError.ts +8 -0
  859. package/src/Pool.ts +48 -37
  860. package/src/Predicate.ts +85 -0
  861. package/src/PrimaryKey.ts +5 -0
  862. package/src/PubSub.ts +90 -9
  863. package/src/Pull.ts +20 -0
  864. package/src/Queue.ts +80 -10
  865. package/src/Random.ts +13 -0
  866. package/src/RcMap.ts +49 -2
  867. package/src/RcRef.ts +6 -0
  868. package/src/Record.ts +100 -0
  869. package/src/Redactable.ts +6 -0
  870. package/src/Redacted.ts +8 -0
  871. package/src/Reducer.ts +4 -0
  872. package/src/Ref.ts +42 -0
  873. package/src/References.ts +21 -0
  874. package/src/RegExp.ts +4 -0
  875. package/src/Request.ts +32 -0
  876. package/src/RequestResolver.ts +59 -10
  877. package/src/Resource.ts +7 -0
  878. package/src/Result.ts +93 -0
  879. package/src/Runtime.ts +10 -0
  880. package/src/Schedule.ts +61 -0
  881. package/src/Scheduler.ts +7 -0
  882. package/src/Schema.ts +499 -4
  883. package/src/SchemaAST.ts +115 -1
  884. package/src/SchemaGetter.ts +80 -4
  885. package/src/SchemaIssue.ts +34 -0
  886. package/src/SchemaParser.ts +26 -0
  887. package/src/SchemaRepresentation.ts +148 -0
  888. package/src/SchemaTransformation.ts +53 -0
  889. package/src/Scope.ts +19 -0
  890. package/src/ScopedCache.ts +82 -19
  891. package/src/ScopedRef.ts +9 -0
  892. package/src/Semaphore.ts +26 -0
  893. package/src/Sink.ts +126 -2
  894. package/src/StandardSchema.ts +1 -0
  895. package/src/Stdio.ts +7 -0
  896. package/src/Stream.ts +780 -103
  897. package/src/String.ts +87 -0
  898. package/src/Struct.ts +46 -0
  899. package/src/SubscriptionRef.ts +65 -0
  900. package/src/Symbol.ts +2 -0
  901. package/src/SynchronizedRef.ts +63 -0
  902. package/src/Take.ts +3 -0
  903. package/src/Terminal.ts +8 -0
  904. package/src/Tracer.ts +23 -0
  905. package/src/Trie.ts +68 -0
  906. package/src/Tuple.ts +38 -0
  907. package/src/TxChunk.ts +52 -0
  908. package/src/TxDeferred.ts +15 -0
  909. package/src/TxHashMap.ts +97 -6
  910. package/src/TxHashSet.ts +83 -3
  911. package/src/TxPriorityQueue.ts +34 -2
  912. package/src/TxPubSub.ts +26 -0
  913. package/src/TxQueue.ts +51 -0
  914. package/src/TxReentrantLock.ts +53 -36
  915. package/src/TxRef.ts +14 -0
  916. package/src/TxSemaphore.ts +47 -31
  917. package/src/TxSubscriptionRef.ts +25 -0
  918. package/src/Types.ts +36 -0
  919. package/src/UndefinedOr.ts +15 -0
  920. package/src/Unify.ts +15 -0
  921. package/src/Utils.ts +4 -0
  922. package/src/Version.ts +38 -0
  923. package/src/ai/Chat.ts +1 -1
  924. package/src/ai/DecisionModel.ts +42 -1
  925. package/src/ai/LanguageModel.ts +43 -21
  926. package/src/ai/McpSchema.ts +3 -3
  927. package/src/ai/McpServer.ts +119 -39
  928. package/src/ai/Response.ts +27 -12
  929. package/src/ai/Telemetry.ts +62 -58
  930. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -0
  931. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -0
  932. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +1 -0
  933. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +1 -0
  934. package/src/ai/internal/mcpRuntime.ts +84 -43
  935. package/src/ai/internal/mcpSchema/v2024_11_05.ts +4 -2
  936. package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
  937. package/src/cluster/ClusterWorkflowEngine.ts +18 -4
  938. package/src/cluster/K8sHttpClient.ts +12 -2
  939. package/src/cluster/Sharding.ts +24 -24
  940. package/src/cluster/SqlMessageStorage.ts +26 -13
  941. package/src/cluster/SqlRunnerStorage.ts +85 -113
  942. package/src/cluster/internal/entityManager.ts +68 -80
  943. package/src/cluster/internal/interruptors.ts +13 -0
  944. package/src/cluster/internal/resourceMap.ts +55 -17
  945. package/src/cluster/internal/resourceRef.ts +189 -96
  946. package/src/encoding/Base64.ts +4 -0
  947. package/src/encoding/Base64Url.ts +4 -0
  948. package/src/encoding/EncodingError.ts +5 -0
  949. package/src/encoding/Hex.ts +5 -0
  950. package/src/encoding/Toml.ts +2 -2
  951. package/src/encoding/Yaml.ts +8 -4
  952. package/src/encoding/index.ts +4 -0
  953. package/src/eventlog/SqlEventJournal.ts +18 -4
  954. package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
  955. package/src/http/Headers.ts +8 -2
  956. package/src/http/HttpClient.ts +44 -27
  957. package/src/http/HttpClientResponse.ts +3 -1
  958. package/src/http/HttpEffect.ts +11 -2
  959. package/src/http/HttpMiddleware.ts +67 -46
  960. package/src/http/HttpServer.ts +1 -1
  961. package/src/http/HttpStaticServer.ts +16 -0
  962. package/src/http/HttpTraceContext.ts +8 -4
  963. package/src/http/internal/tracing.ts +52 -0
  964. package/src/http-api/HttpApiBuilder.ts +5 -1
  965. package/src/http-api/HttpApiClient.ts +13 -4
  966. package/src/http-api/HttpApiError.ts +8 -3
  967. package/src/http-api/HttpApiSecurity.ts +8 -8
  968. package/src/index.ts +156 -0
  969. package/src/internal/arbitrary/array.ts +3 -3
  970. package/src/internal/arbitrary/model.ts +37 -14
  971. package/src/internal/arbitrary/runner.ts +7 -7
  972. package/src/internal/arbitrary/schema.ts +4 -3
  973. package/src/internal/core.ts +56 -2
  974. package/src/internal/dateTime.ts +3 -1
  975. package/src/internal/effect.ts +156 -156
  976. package/src/internal/rcRef.ts +83 -33
  977. package/src/internal/schedule.ts +23 -17
  978. package/src/internal/schema/fromJsonSchemaDocument.ts +5 -3
  979. package/src/internal/schema/standardSchema.ts +2 -2
  980. package/src/internal/version.ts +2 -0
  981. package/src/observability/OtlpExporter.ts +9 -6
  982. package/src/observability/OtlpLogger.ts +20 -21
  983. package/src/observability/OtlpMetrics.ts +34 -93
  984. package/src/observability/OtlpResource.ts +18 -27
  985. package/src/observability/OtlpTracer.ts +34 -40
  986. package/src/observability/internal/otlpProtobuf.ts +60 -0
  987. package/src/reactivity/AsyncResult.ts +1 -1
  988. package/src/reactivity/Atom.ts +10 -6
  989. package/src/reactivity/AtomHttpApi.ts +2 -4
  990. package/src/reactivity/AtomRegistry.ts +7 -0
  991. package/src/rpc/RpcClient.ts +74 -46
  992. package/src/rpc/RpcServer.ts +28 -25
  993. package/src/rpc/Utils.ts +4 -10
  994. package/src/rpc/internal/tracing.ts +22 -0
  995. package/src/schema/SchemaCompiler/runtime.ts +4 -1
  996. package/src/sql/SqlClient.ts +4 -4
  997. package/src/sql/Statement.ts +59 -7
  998. package/src/testing/TestClock.ts +9 -0
  999. package/src/testing/TestConsole.ts +8 -0
  1000. package/src/testing/index.ts +3 -0
  1001. package/src/workflow/WorkflowEngine.ts +4 -0
@@ -50,7 +50,7 @@ import type { Primitive } from "./core.ts"
50
50
  import {
51
51
  args,
52
52
  causeAnnotate,
53
- causeDie,
53
+ causeCombine,
54
54
  causeEmpty,
55
55
  causeFromReasons,
56
56
  CauseImpl,
@@ -238,48 +238,6 @@ export const causeAnnotations = <E>(
238
238
  return Context.makeUnsafe(map)
239
239
  }
240
240
 
241
- const dedupeReasons = <E>(
242
- self: ReadonlyArray<Cause.Reason<E>>,
243
- that: ReadonlyArray<Cause.Reason<E>>
244
- ): Array<Cause.Reason<E>> => {
245
- // Keep deduplication local so causeCombine does not retain Array.ts in the core bundle.
246
- // Snapshot both arrays before invoking user-defined hash or equality methods.
247
- const buckets = new Map<number, Array<Cause.Reason<E>>>()
248
- const out: Array<Cause.Reason<E>> = []
249
- for (const reason of self.concat(that)) {
250
- const hash = Hash.hash(reason)
251
- const bucket = buckets.get(hash)
252
- if (bucket === undefined) {
253
- buckets.set(hash, [reason])
254
- } else if (bucket.some((previous) => Equal.equals(previous, reason))) {
255
- continue
256
- } else {
257
- bucket.push(reason)
258
- }
259
- out.push(reason)
260
- }
261
- return out
262
- }
263
-
264
- /** @internal */
265
- export const causeCombine: {
266
- <E2>(that: Cause.Cause<E2>): <E>(self: Cause.Cause<E>) => Cause.Cause<E | E2>
267
- <E, E2>(self: Cause.Cause<E>, that: Cause.Cause<E2>): Cause.Cause<E | E2>
268
- } = dual(
269
- 2,
270
- <E, E2>(self: Cause.Cause<E>, that: Cause.Cause<E2>): Cause.Cause<E | E2> => {
271
- if (self.reasons.length === 0) {
272
- return that as Cause.Cause<E | E2>
273
- } else if (that.reasons.length === 0) {
274
- return self as Cause.Cause<E | E2>
275
- }
276
- const newCause = new CauseImpl<E | E2>(
277
- dedupeReasons<E | E2>(self.reasons, that.reasons)
278
- )
279
- return Equal.equals(self, newCause) ? self : newCause
280
- }
281
- )
282
-
283
241
  /** @internal */
284
242
  export const causeMap: {
285
243
  <E, E2>(f: (error: NoInfer<E>) => E2): (self: Cause.Cause<E>) => Cause.Cause<E2>
@@ -387,6 +345,8 @@ export const causePrettyError = (
387
345
  error = new globalThis.Error(
388
346
  !original ? `Unknown error: ${original}` : kind === "string" ? original as any : formatJson(original)
389
347
  )
348
+ const stack = `${error.name}: ${error.message}`
349
+ error.stack = annotations ? addStackAnnotations(stack, annotations) : stack
390
350
  }
391
351
  return error
392
352
  }
@@ -504,6 +464,21 @@ const fiberVariance = {
504
464
 
505
465
  const fiberIdStore = { id: 0 }
506
466
 
467
+ interface AsyncContext {
468
+ runInAsyncScope<This, Arg, R>(fn: (this: This, arg: Arg) => R, thisArg: This, arg: Arg): R
469
+ }
470
+
471
+ const AsyncResource: (new(type: string) => AsyncContext) | undefined = (() => {
472
+ try {
473
+ return (globalThis as any).process?.getBuiltinModule?.("node:async_hooks")?.AsyncResource
474
+ } catch {
475
+ return undefined
476
+ }
477
+ })()
478
+
479
+ const captureAsyncContext = (): AsyncContext | undefined =>
480
+ AsyncResource === undefined ? undefined : new AsyncResource("effect/Fiber")
481
+
507
482
  /** @internal */
508
483
  export const getCurrentFiber = (): Fiber.Fiber<any, any> | undefined => (globalThis as any)[currentFiberTypeId]
509
484
 
@@ -526,6 +501,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
526
501
  this._running = false
527
502
  this._deferredInterrupt = false
528
503
  this._parent = undefined
504
+ this._asyncContext = undefined
529
505
  this.cache.runtimeMetrics?.recordFiberStart(this.context)
530
506
  }
531
507
 
@@ -545,6 +521,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
545
521
  declare _running: boolean
546
522
  declare _deferredInterrupt: boolean
547
523
  declare _parent: FiberImpl<any, any> | undefined
524
+ declare _asyncContext: AsyncContext | undefined
548
525
 
549
526
  // set in setContext
550
527
  declare context: Context.Context<never>
@@ -605,6 +582,10 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
605
582
  evaluate(effect: Primitive): void {
606
583
  if (this._exit) {
607
584
  return
585
+ } else if (this._asyncContext !== undefined) {
586
+ const asyncContext = this._asyncContext
587
+ this._asyncContext = undefined
588
+ return asyncContext.runInAsyncScope(this.evaluate, this, effect)
608
589
  } else if (this._yielded !== undefined) {
609
590
  const yielded = this._yielded as () => void
610
591
  this._yielded = undefined
@@ -612,6 +593,7 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
612
593
  }
613
594
  const exit = this.runLoop(effect)
614
595
  if (exit === Yield) {
596
+ this._asyncContext = captureAsyncContext()
615
597
  return
616
598
  }
617
599
  // the interruptChildren middleware is added in Effect.forkChild, so it can be
@@ -649,44 +631,46 @@ export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
649
631
  this.currentOpCount = 0
650
632
  try {
651
633
  while (true) {
652
- if (this._deferredInterrupt) {
653
- this._deferredInterrupt = false
654
- current = failCause(this._interruptedCause!) as any
655
- }
656
- this.currentOpCount++
657
- // Refresh the cache because a primitive can replace the fiber context.
658
- const cache = this.cache
659
- if (
660
- !yielding &&
661
- !cache.preventYield &&
662
- cache.scheduler.shouldYield(this as any)
663
- ) {
664
- yielding = true
665
- const prev = current
666
- current = flatMap(yieldNow, () => prev as any) as any
667
- }
668
- current = cache.tracerContext
669
- ? cache.tracerContext(current as any, this)
670
- : (current as any)[evaluate](this)
671
- if (current === Yield) {
672
- const yielded = this._yielded!
673
- if (ExitTypeId in yielded) {
634
+ try {
635
+ if (this._deferredInterrupt) {
674
636
  this._deferredInterrupt = false
675
- this._yielded = undefined
676
- return yielded
677
- } else if (this._deferredInterrupt) {
678
- this._yielded = undefined
679
- yielded()
680
- continue
637
+ current = failCause(this._interruptedCause!) as any
638
+ }
639
+ this.currentOpCount++
640
+ // Refresh the cache because a primitive can replace the fiber context.
641
+ const cache = this.cache
642
+ if (
643
+ !yielding &&
644
+ !cache.preventYield &&
645
+ cache.scheduler.shouldYield(this as any)
646
+ ) {
647
+ yielding = true
648
+ const prev = current
649
+ current = flatMap(yieldNow, () => prev as any) as any
650
+ }
651
+ current = cache.tracerContext
652
+ ? cache.tracerContext(current as any, this)
653
+ : (current as any)[evaluate](this)
654
+ if (current === Yield) {
655
+ const yielded = this._yielded!
656
+ if (ExitTypeId in yielded) {
657
+ this._deferredInterrupt = false
658
+ this._yielded = undefined
659
+ return yielded
660
+ } else if (this._deferredInterrupt) {
661
+ this._yielded = undefined
662
+ yielded()
663
+ continue
664
+ }
665
+ return Yield
666
+ }
667
+ } catch (error) {
668
+ if (!hasProperty(current, evaluate)) {
669
+ return exitDie(`Fiber.runLoop: Not a valid effect: ${String(current)}`)
681
670
  }
682
- return Yield
671
+ current = exitDie(error) as any
683
672
  }
684
673
  }
685
- } catch (error) {
686
- if (!hasProperty(current, evaluate)) {
687
- return exitDie(`Fiber.runLoop: Not a valid effect: ${String(current)}`)
688
- }
689
- return this.runLoop(exitDie(error) as any)
690
674
  } finally {
691
675
  this._running = prevRunning
692
676
  ;(globalThis as any)[currentFiberTypeId] = prevFiber
@@ -1122,20 +1106,22 @@ export const tryPromise = <A, E = Cause.UnknownError>(
1122
1106
  ? ((cause: unknown) => new UnknownError(cause, "An error occurred in Effect.tryPromise"))
1123
1107
  : options.catch
1124
1108
  return callbackOptions<A, E>(function(resume, signal) {
1125
- const failWithCatch = (cause: unknown) => {
1126
- try {
1127
- resume(fail(internalCall(() => catcher(cause)) as E))
1128
- } catch (err) {
1129
- resume(die(err))
1130
- }
1131
- }
1109
+ // Defer the catcher until the fiber restores its async context.
1110
+ const failWithCatch = (cause: unknown) =>
1111
+ suspend(() => {
1112
+ try {
1113
+ return fail(internalCall(() => catcher(cause)) as E)
1114
+ } catch (err) {
1115
+ return die(err)
1116
+ }
1117
+ })
1132
1118
  try {
1133
1119
  f(signal!).then(
1134
1120
  (a) => resume(succeed(a)),
1135
- failWithCatch
1121
+ (e) => resume(failWithCatch(e))
1136
1122
  )
1137
1123
  } catch (err) {
1138
- failWithCatch(err)
1124
+ resume(failWithCatch(err))
1139
1125
  }
1140
1126
  }, f.length !== 0)
1141
1127
  }
@@ -3946,10 +3932,8 @@ export const scopeTag: Context.Service<Scope.Scope, Scope.Scope> = Context.Servi
3946
3932
  /** @internal */
3947
3933
  export const scopeClose = <A, E>(self: Scope.Scope, exit_: Exit.Exit<A, E>) =>
3948
3934
  withFiber((fiber) => {
3949
- const close = scopeCloseUnsafe(self, exit_)
3950
- if (close === undefined) return void_
3951
3935
  fiberEnterUninterruptibleUnsafe(fiber)
3952
- return close
3936
+ return scopeCloseUnsafe(self, exit_) ?? void_
3953
3937
  })
3954
3938
 
3955
3939
  /** @internal */
@@ -4457,48 +4441,78 @@ export const cachedInvalidateWithTTL: {
4457
4441
  self: Effect.Effect<A, E, R>,
4458
4442
  ttl: Duration.Input | ((exit: Exit.Exit<A, E>) => Duration.Input)
4459
4443
  ): Effect.Effect<[Effect.Effect<A, E, R>, Effect.Effect<void>]> =>
4460
- sync(() => {
4461
- const ttlMillis = typeof ttl === "function"
4462
- ? (exit: Exit.Exit<A, E>) => Duration.toMillis(Duration.fromInputUnsafe(ttl(exit)))
4463
- : constant(Duration.toMillis(Duration.fromInputUnsafe(ttl)))
4464
- const latch = makeLatchUnsafe(false)
4465
- let expiresAt = 0
4466
- let running = false
4467
- let exit: Exit.Exit<A, E> | undefined
4468
- const wait = flatMap(latch.await, () => exit!)
4469
- return [
4470
- withFiber((fiber) => {
4471
- const clock = fiber.getRef(ClockRef)
4472
- const now = expiresAt === Infinity ? 0 : clock.currentTimeMillisUnsafe()
4473
- if (running || now < expiresAt) return exit ?? wait
4474
- running = true
4475
- latch.closeUnsafe()
4476
- exit = undefined
4477
- onExitUnsafe<A, E>(fiber, (exit_) =>
4478
- sync(() => {
4479
- try {
4480
- const duration = ttlMillis(exit_)
4481
- expiresAt = clock.currentTimeMillisUnsafe() + duration
4482
- exit = exit_
4483
- } catch (error) {
4484
- const cause = causeDie(error)
4485
- // Publish the same combined cause that onExit returns to the owner.
4486
- exit = exitFailCause(exitIsFailure(exit_) ? causeCombine(exit_.cause, cause) : cause)
4487
- throw error
4488
- } finally {
4489
- running = false
4490
- latch.openUnsafe()
4491
- }
4492
- }))
4493
- return self
4494
- }),
4495
- sync(() => {
4496
- expiresAt = 0
4497
- latch.closeUnsafe()
4498
- exit = undefined
4499
- })
4500
- ]
4501
- }))
4444
+ sync(() =>
4445
+ makeCachedUnsafe(
4446
+ self,
4447
+ typeof ttl === "function"
4448
+ ? (exit: Exit.Exit<A, E>) => Duration.toMillis(Duration.fromInputUnsafe(ttl(exit)))
4449
+ : constant(Duration.toMillis(Duration.fromInputUnsafe(ttl)))
4450
+ )
4451
+ ))
4452
+
4453
+ const infiniteTTL = constant(Infinity)
4454
+
4455
+ interface CachedRun<A, E> {
4456
+ fiber: FiberImpl<A, E> | undefined
4457
+ awaiters: number
4458
+ }
4459
+
4460
+ const makeCachedUnsafe = <A, E, R>(
4461
+ self: Effect.Effect<A, E, R>,
4462
+ ttlMillis: (exit: Exit.Exit<A, E>) => number
4463
+ ): [Effect.Effect<A, E, R>, Effect.Effect<void>] => {
4464
+ let expiresAt = 0
4465
+ let exit: Exit.Exit<A, E> | undefined
4466
+ let current: CachedRun<A, E> | undefined
4467
+
4468
+ const join = (fiber: Fiber.Fiber<unknown, unknown>, run: CachedRun<A, E>): Effect.Effect<A, E> => {
4469
+ run.awaiters++
4470
+ onExitUnsafe(fiber, () => {
4471
+ // Abandon the run once every caller has left, unless it already finished.
4472
+ if (--run.awaiters > 0 || current !== run) return
4473
+ // Detach it first so new callers start a fresh run instead of joining
4474
+ // one that is being interrupted.
4475
+ current = undefined
4476
+ return fiberInterrupt(run.fiber!)
4477
+ })
4478
+ return fiberJoin(run.fiber!)
4479
+ }
4480
+
4481
+ return [
4482
+ withFiber((fiber) => {
4483
+ if (current !== undefined) return join(fiber, current)
4484
+ if (
4485
+ exit !== undefined &&
4486
+ (expiresAt === Infinity || fiber.getRef(ClockRef).currentTimeMillisUnsafe() < expiresAt)
4487
+ ) {
4488
+ return exit
4489
+ }
4490
+ exit = undefined
4491
+ const clock = fiber.getRef(ClockRef)
4492
+ const run: CachedRun<A, E> = { fiber: undefined, awaiters: 0 }
4493
+ current = run
4494
+ run.fiber = forkUnsafe(
4495
+ fiber,
4496
+ onExitPrimitive(self, (exit_) => {
4497
+ // An abandoned run must not overwrite or clear a replacement run.
4498
+ if (current !== run) return
4499
+ current = undefined
4500
+ // Interruption is abandonment, so it is never cached.
4501
+ if (exitHasInterrupts(exit_)) return
4502
+ const duration = ttlMillis(exit_)
4503
+ expiresAt = duration === Infinity ? Infinity : clock.currentTimeMillisUnsafe() + duration
4504
+ exit = exit_
4505
+ }),
4506
+ true,
4507
+ true
4508
+ )
4509
+ return run.fiber._exit ?? join(fiber, run)
4510
+ }),
4511
+ sync(() => {
4512
+ exit = undefined
4513
+ })
4514
+ ]
4515
+ }
4502
4516
 
4503
4517
  /** @internal */
4504
4518
  export const cachedWithTTL: {
@@ -4525,23 +4539,7 @@ export const cachedWithTTL: {
4525
4539
 
4526
4540
  /** @internal */
4527
4541
  export const cached = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Effect.Effect<A, E, R>> =>
4528
- sync(() => {
4529
- const latch = makeLatchUnsafe(false)
4530
- let started = false
4531
- let exit: Exit.Exit<A, E> | undefined
4532
- const wait = flatMap(latch.await, () => exit!)
4533
- return withFiber((fiber) => {
4534
- if (exit !== undefined) return exit
4535
- if (started) return wait
4536
- started = true
4537
- onExitUnsafe<A, E>(fiber, (result) =>
4538
- sync(() => {
4539
- exit = result
4540
- latch.openUnsafe()
4541
- }))
4542
- return self
4543
- })
4544
- })
4542
+ sync(() => makeCachedUnsafe(self, infiniteTTL)[0])
4545
4543
 
4546
4544
  // ----------------------------------------------------------------------------
4547
4545
  // interruption
@@ -5528,15 +5526,17 @@ export const forkUnsafe = <FA, FE, A, E, R>(
5528
5526
  const parentRuntime = parent as FiberImpl<FA, FE>
5529
5527
  const interruptible = uninterruptible === "inherit" ? parentRuntime.interruptible : !uninterruptible
5530
5528
  const child = new FiberImpl<A, E>(parentRuntime.context, interruptible)
5529
+ if (!daemon) {
5530
+ parentRuntime.children().add(child)
5531
+ child._parent = parentRuntime
5532
+ }
5531
5533
  if (immediate) {
5532
5534
  child.evaluate(effect as any)
5533
5535
  } else {
5536
+ // Preserve the fork context rather than the dispatcher's context.
5537
+ child._asyncContext = captureAsyncContext()
5534
5538
  parentRuntime.currentDispatcher.scheduleTask(() => child.evaluate(effect as any), 0)
5535
5539
  }
5536
- if (!daemon && !child._exit) {
5537
- parentRuntime.children().add(child)
5538
- child._parent = parentRuntime
5539
- }
5540
5540
  return child
5541
5541
  }
5542
5542
 
@@ -5713,9 +5713,9 @@ export const fiberRunIn: {
5713
5713
  self.interruptUnsafe(self.id)
5714
5714
  return self
5715
5715
  }
5716
- const key = {}
5717
- scopeAddFinalizerUnsafe(scope, key, () => fiberInterrupt(self))
5718
- self.addObserver(() => scopeRemoveFinalizerUnsafe(scope, key))
5716
+ scopeRemoveFinalizerUnsafe(scope, self)
5717
+ scopeAddFinalizerUnsafe(scope, self, () => fiberInterrupt(self))
5718
+ self.addObserver(() => scopeRemoveFinalizerUnsafe(scope, self))
5719
5719
  return self
5720
5720
  })
5721
5721
 
@@ -6028,7 +6028,7 @@ export const makeSpanUnsafe = <XA, XE>(
6028
6028
  links,
6029
6029
  startTime: timingEnabled ? clock.currentTimeNanosUnsafe() : bigint0,
6030
6030
  kind: options?.kind ?? "internal",
6031
- root: options?.root ?? Option.isNone(parent),
6031
+ root: options?.root ?? false,
6032
6032
  sampled: options?.sampled ??
6033
6033
  (Option.isSome(parent) && parent.value.sampled === false
6034
6034
  ? false
@@ -7,17 +7,26 @@ import { identity } from "../Function.ts"
7
7
  import { pipeArguments } from "../Pipeable.ts"
8
8
  import type * as RcRef from "../RcRef.ts"
9
9
  import * as Scope from "../Scope.ts"
10
- import * as Semaphore from "../Semaphore.ts"
11
10
 
12
11
  const TypeId = "~effect/RcRef"
13
12
 
14
- type State<A> = State.Empty | State.Acquired<A> | State.Closed
13
+ type State<A> = State.Empty | State.Acquiring<A> | State.Acquired<A> | State.Closed
15
14
 
16
15
  declare namespace State {
17
16
  interface Empty {
18
17
  readonly _tag: "Empty"
19
18
  }
20
19
 
20
+ interface Acquiring<A> {
21
+ readonly _tag: "Acquiring"
22
+ // Assigned as soon as the acquisition is forked.
23
+ fiber: Fiber.Fiber<Acquired<A>, unknown>
24
+ awaiters: number
25
+ // Set once references are allocated to the waiters, which can happen
26
+ // before the acquisition fiber exits.
27
+ acquired: Acquired<A> | undefined
28
+ }
29
+
21
30
  interface Acquired<A> {
22
31
  readonly _tag: "Acquired"
23
32
  readonly value: A
@@ -48,7 +57,6 @@ class RcRefImpl<A, E> implements RcRef.RcRef<A, E> {
48
57
  }
49
58
 
50
59
  state: State<A> = stateEmpty
51
- readonly semaphore = Semaphore.makeUnsafe(1)
52
60
  readonly acquire: Effect.Effect<A, E>
53
61
  readonly context: Context.Context<never>
54
62
  readonly scope: Scope.Scope
@@ -85,11 +93,11 @@ export const make = <A, E, R>(options: {
85
93
  )
86
94
  return Effect.as(
87
95
  Scope.addFinalizerExit(scope, () => {
88
- const close = ref.state._tag === "Acquired"
89
- ? Scope.close(ref.state.scope, Exit.void)
90
- : Effect.void
96
+ const state = ref.state
91
97
  ref.state = stateClosed
92
- return close
98
+ if (state._tag === "Acquired") return Scope.close(state.scope, Exit.void)
99
+ if (state._tag === "Acquiring") return Fiber.interrupt(state.fiber)
100
+ return Effect.void
93
101
  }),
94
102
  ref
95
103
  )
@@ -110,40 +118,82 @@ const getState = <A, E>(
110
118
  ? Effect.as(Fiber.interrupt(state.fiber), state)
111
119
  : Effect.succeed(state)
112
120
  }
121
+ case "Acquiring": {
122
+ const state = self.state
123
+ state.awaiters++
124
+ return awaitAcquiring(self, state, restore)
125
+ }
113
126
  case "Empty": {
114
- return self.semaphore.withPermit(
115
- Effect.suspend(() => {
116
- if (self.state._tag !== "Empty") {
117
- return getState(self, restore)
127
+ // The caller that starts the acquisition counts as its first awaiter.
128
+ const acquiring: State.Acquiring<A> = {
129
+ _tag: "Acquiring",
130
+ fiber: undefined as any,
131
+ awaiters: 1,
132
+ acquired: undefined
133
+ }
134
+ self.state = acquiring
135
+ const scope = Scope.makeUnsafe()
136
+ // Acquire on a detached fiber so the acquisition is shared by every
137
+ // caller and only interrupted once all of them have been interrupted.
138
+ const acquire = Effect.provideContext(
139
+ self.acquire as Effect.Effect<A, E>,
140
+ Context.add(self.context, Scope.Scope, scope)
141
+ ).pipe(
142
+ Effect.flatMap((value) => {
143
+ // The ref was closed, or the acquisition was abandoned.
144
+ if (self.state !== acquiring) {
145
+ return Effect.interrupt
146
+ }
147
+ const state: State.Acquired<A> = {
148
+ _tag: "Acquired",
149
+ value,
150
+ scope,
151
+ fiber: undefined,
152
+ // Every caller still waiting holds a reference.
153
+ refCount: acquiring.awaiters,
154
+ invalidated: false
118
155
  }
119
- const scope = Scope.makeUnsafe()
120
- return restore(Effect.provideContext(
121
- self.acquire as Effect.Effect<A, E>,
122
- Context.add(self.context, Scope.Scope, scope)
123
- )).pipe(
124
- Effect.flatMap((value) => {
125
- if (self.state._tag === "Closed") {
126
- return Effect.interrupt
127
- }
128
- const state: State.Acquired<A> = {
129
- _tag: "Acquired",
130
- value,
131
- scope,
132
- fiber: undefined,
133
- refCount: 1,
134
- invalidated: false
135
- }
136
- self.state = state
137
- return Effect.succeed(state)
138
- }),
139
- Effect.onExit((exit) => Exit.isFailure(exit) ? Scope.close(scope, exit) : Effect.void)
140
- )
156
+ self.state = state
157
+ acquiring.acquired = state
158
+ return Effect.succeed(state)
159
+ }),
160
+ Effect.onExit((exit) => {
161
+ if (Exit.isSuccess(exit)) return Effect.void
162
+ if (self.state === acquiring) self.state = stateEmpty
163
+ return Scope.close(scope, exit)
141
164
  })
142
165
  )
166
+ acquiring.fiber = Effect.runForkWith(Fiber.getCurrent()!.context)(acquire)
167
+ return awaitAcquiring(self, acquiring, restore)
143
168
  }
144
169
  }
145
170
  }
146
171
 
172
+ const awaitAcquiring = <A, E>(
173
+ self: RcRefImpl<A, E>,
174
+ acquiring: State.Acquiring<A>,
175
+ restore: <AX, EX, RX>(effect: Effect.Effect<AX, EX, RX>) => Effect.Effect<AX, EX, RX>
176
+ ): Effect.Effect<State.Acquired<A>, E> =>
177
+ Effect.onExit(
178
+ restore(Fiber.join(acquiring.fiber)) as Effect.Effect<State.Acquired<A>, E>,
179
+ (exit) => {
180
+ const acquired = acquiring.acquired
181
+ if (acquired !== undefined) {
182
+ // The acquisition counted this caller as a reference, possibly before
183
+ // its fiber exited. Release it if the caller was interrupted before it
184
+ // could register its finalizer.
185
+ return Exit.isFailure(exit) ? release(self, acquired) : Effect.void
186
+ }
187
+ // Abandon the acquisition once every caller has left, unless it already
188
+ // failed (a failed acquisition allocated no references).
189
+ if (--acquiring.awaiters > 0 || self.state !== acquiring) return Effect.void
190
+ // Detach it first so new callers start a fresh acquisition instead of
191
+ // joining one that is being interrupted.
192
+ self.state = stateEmpty
193
+ return Fiber.interrupt(acquiring.fiber)
194
+ }
195
+ )
196
+
147
197
  /** @internal */
148
198
  export const get = <A, E>(self_: RcRef.RcRef<A, E>): Effect.Effect<A, E, Scope.Scope> => {
149
199
  const self = self_ as RcRefImpl<A, E>
@@ -3,12 +3,16 @@ import type { Effect, Repeat, Retry } from "../Effect.ts"
3
3
  import { constant, constTrue, dual, identity } from "../Function.ts"
4
4
  import * as Option from "../Option.ts"
5
5
  import * as Pull from "../Pull.ts"
6
+ import * as Result from "../Result.ts"
6
7
  import * as Schedule from "../Schedule.ts"
7
8
  import type { NoInfer } from "../Types.ts"
8
9
  import { internalCall } from "../Utils.ts"
9
10
  import * as core from "./core.ts"
10
11
  import * as effect from "./effect.ts"
11
12
 
13
+ const findErrorOnly = <E>(cause: Cause.Cause<E>): Result.Result<E, Cause.Cause<never>> =>
14
+ cause.reasons.every(core.isFailReason) ? effect.findError(cause) : Result.fail(cause as Cause.Cause<never>)
15
+
12
16
  /** @internal */
13
17
  export const repeatOrElse: {
14
18
  <R2, A, B, E, E2, E3, R3>(
@@ -29,21 +33,22 @@ export const repeatOrElse: {
29
33
  ): Effect<B, E3, R | R2 | R3> =>
30
34
  effect.flatMap(Schedule.toStepWithMetadata(schedule), (step) => {
31
35
  let meta = Schedule.CurrentMetadata.defaultValue()
32
- return effect.catch_(
33
- effect.forever(
34
- effect.tap(
35
- effect.flatMap(effect.suspend(() => effect.provideService(self, Schedule.CurrentMetadata, meta)), step),
36
- (meta_) =>
37
- effect.sync(() => {
38
- meta = meta_
39
- })
36
+ return effect.catchCauseFilter(
37
+ Pull.catchDone(
38
+ effect.forever(
39
+ effect.tap(
40
+ effect.flatMap(effect.suspend(() => effect.provideService(self, Schedule.CurrentMetadata, meta)), step),
41
+ (meta_) =>
42
+ effect.sync(() => {
43
+ meta = meta_
44
+ })
45
+ ),
46
+ { disableYield: true }
40
47
  ),
41
- { disableYield: true }
48
+ (out) => effect.succeed(out as B)
42
49
  ),
43
- (error) =>
44
- core.isDone(error)
45
- ? effect.succeed(error.value as B)
46
- : orElse(error as E | E2, meta.attempt === 0 ? Option.none() : Option.some(meta as any))
50
+ findErrorOnly,
51
+ (error) => orElse(error, meta.attempt === 0 ? Option.none() : Option.some(meta as any))
47
52
  )
48
53
  }))
49
54
 
@@ -66,8 +71,9 @@ export const retryOrElse: {
66
71
  effect.flatMap(Schedule.toStepWithMetadata(policy), (step) => {
67
72
  let meta = Schedule.CurrentMetadata.defaultValue()
68
73
  let lastError!: E
69
- const loop: Effect<A, E1 | Cause.Done<A1>, R | R1> = effect.catch_(
74
+ const loop: Effect<A, E1 | Cause.Done<A1>, R | R1> = effect.catchCauseFilter(
70
75
  effect.suspend(() => effect.provideService(self, Schedule.CurrentMetadata, meta)),
76
+ findErrorOnly,
71
77
  (error) => {
72
78
  lastError = error
73
79
  return effect.flatMap(step(error), (meta_) => {
@@ -198,7 +204,7 @@ export const scheduleFrom = dual<
198
204
  effect.flatMap(Schedule.toStepWithMetadata(schedule), (step) => {
199
205
  let meta = Schedule.CurrentMetadata.defaultValue()
200
206
  const selfWithMeta = effect.suspend(() => effect.provideService(self, Schedule.CurrentMetadata, meta))
201
- return effect.catch_(
207
+ return Pull.catchDone(
202
208
  effect.flatMap(
203
209
  step(initial),
204
210
  (meta_) => {
@@ -210,10 +216,10 @@ export const scheduleFrom = dual<
210
216
  step(meta_) {
211
217
  meta = meta_
212
218
  }
213
- }) as Effect<never, E, R | Env>
219
+ }) as Effect<never, E | Error | Cause.Done<Output>, R | Env>
214
220
  }
215
221
  ),
216
- (error) => core.isDone(error) ? effect.succeed(error.value as Output) : effect.fail(error as E | Error)
222
+ (out) => effect.succeed(out as Output)
217
223
  )
218
224
  }))
219
225