effect 4.0.0-beta.102 → 4.0.0-beta.103

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 (1451) hide show
  1. package/dist/Array.d.ts +971 -1037
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +381 -407
  4. package/dist/Array.js.map +1 -1
  5. package/dist/BigDecimal.d.ts +433 -756
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +200 -325
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/BigInt.d.ts +207 -267
  10. package/dist/BigInt.d.ts.map +1 -1
  11. package/dist/BigInt.js +107 -135
  12. package/dist/BigInt.js.map +1 -1
  13. package/dist/Boolean.d.ts +146 -188
  14. package/dist/Boolean.d.ts.map +1 -1
  15. package/dist/Boolean.js +64 -84
  16. package/dist/Boolean.js.map +1 -1
  17. package/dist/Brand.js.map +1 -1
  18. package/dist/Cache.d.ts +405 -254
  19. package/dist/Cache.d.ts.map +1 -1
  20. package/dist/Cache.js +166 -101
  21. package/dist/Cache.js.map +1 -1
  22. package/dist/Cause.d.ts +167 -277
  23. package/dist/Cause.d.ts.map +1 -1
  24. package/dist/Cause.js +122 -176
  25. package/dist/Cause.js.map +1 -1
  26. package/dist/Channel.d.ts +729 -768
  27. package/dist/Channel.d.ts.map +1 -1
  28. package/dist/Channel.js +514 -440
  29. package/dist/Channel.js.map +1 -1
  30. package/dist/ChannelSchema.d.ts +1 -1
  31. package/dist/ChannelSchema.d.ts.map +1 -1
  32. package/dist/ChannelSchema.js.map +1 -1
  33. package/dist/Chunk.d.ts +834 -1173
  34. package/dist/Chunk.d.ts.map +1 -1
  35. package/dist/Chunk.js +326 -439
  36. package/dist/Chunk.js.map +1 -1
  37. package/dist/Clock.d.ts +180 -49
  38. package/dist/Clock.d.ts.map +1 -1
  39. package/dist/Clock.js +96 -31
  40. package/dist/Clock.js.map +1 -1
  41. package/dist/Combiner.d.ts +20 -33
  42. package/dist/Combiner.d.ts.map +1 -1
  43. package/dist/Combiner.js +18 -30
  44. package/dist/Combiner.js.map +1 -1
  45. package/dist/Config.d.ts +225 -173
  46. package/dist/Config.d.ts.map +1 -1
  47. package/dist/Config.js +336 -265
  48. package/dist/Config.js.map +1 -1
  49. package/dist/ConfigProvider.d.ts +194 -68
  50. package/dist/ConfigProvider.d.ts.map +1 -1
  51. package/dist/ConfigProvider.js +115 -80
  52. package/dist/ConfigProvider.js.map +1 -1
  53. package/dist/Console.d.ts +233 -33
  54. package/dist/Console.d.ts.map +1 -1
  55. package/dist/Console.js +232 -32
  56. package/dist/Console.js.map +1 -1
  57. package/dist/Context.d.ts +151 -274
  58. package/dist/Context.d.ts.map +1 -1
  59. package/dist/Context.js +171 -214
  60. package/dist/Context.js.map +1 -1
  61. package/dist/Cron.d.ts +68 -77
  62. package/dist/Cron.d.ts.map +1 -1
  63. package/dist/Cron.js +57 -66
  64. package/dist/Cron.js.map +1 -1
  65. package/dist/Crypto.d.ts +13 -15
  66. package/dist/Crypto.d.ts.map +1 -1
  67. package/dist/Crypto.js +9 -10
  68. package/dist/Crypto.js.map +1 -1
  69. package/dist/Data.d.ts +60 -80
  70. package/dist/Data.d.ts.map +1 -1
  71. package/dist/Data.js +16 -23
  72. package/dist/Data.js.map +1 -1
  73. package/dist/DateTime.d.ts +562 -660
  74. package/dist/DateTime.d.ts.map +1 -1
  75. package/dist/DateTime.js +307 -362
  76. package/dist/DateTime.js.map +1 -1
  77. package/dist/Deferred.d.ts +253 -256
  78. package/dist/Deferred.d.ts.map +1 -1
  79. package/dist/Deferred.js +104 -96
  80. package/dist/Deferred.js.map +1 -1
  81. package/dist/Duration.d.ts +216 -308
  82. package/dist/Duration.d.ts.map +1 -1
  83. package/dist/Duration.js +132 -186
  84. package/dist/Duration.js.map +1 -1
  85. package/dist/Effect.d.ts +2841 -3247
  86. package/dist/Effect.d.ts.map +1 -1
  87. package/dist/Effect.js +1322 -1546
  88. package/dist/Effect.js.map +1 -1
  89. package/dist/Effectable.js.map +1 -1
  90. package/dist/Encoding.d.ts +22 -40
  91. package/dist/Encoding.d.ts.map +1 -1
  92. package/dist/Encoding.js +22 -40
  93. package/dist/Encoding.js.map +1 -1
  94. package/dist/Equal.d.ts +33 -37
  95. package/dist/Equal.d.ts.map +1 -1
  96. package/dist/Equal.js +29 -21
  97. package/dist/Equal.js.map +1 -1
  98. package/dist/Equivalence.d.ts +103 -105
  99. package/dist/Equivalence.d.ts.map +1 -1
  100. package/dist/Equivalence.js +77 -79
  101. package/dist/Equivalence.js.map +1 -1
  102. package/dist/ErrorReporter.d.ts +51 -27
  103. package/dist/ErrorReporter.d.ts.map +1 -1
  104. package/dist/ErrorReporter.js +50 -26
  105. package/dist/ErrorReporter.js.map +1 -1
  106. package/dist/ExecutionPlan.d.ts +13 -55
  107. package/dist/ExecutionPlan.d.ts.map +1 -1
  108. package/dist/ExecutionPlan.js +7 -28
  109. package/dist/ExecutionPlan.js.map +1 -1
  110. package/dist/Exit.d.ts +116 -192
  111. package/dist/Exit.d.ts.map +1 -1
  112. package/dist/Exit.js +82 -130
  113. package/dist/Exit.js.map +1 -1
  114. package/dist/Fiber.d.ts +82 -146
  115. package/dist/Fiber.d.ts.map +1 -1
  116. package/dist/Fiber.js +48 -87
  117. package/dist/Fiber.js.map +1 -1
  118. package/dist/FiberHandle.d.ts +152 -105
  119. package/dist/FiberHandle.d.ts.map +1 -1
  120. package/dist/FiberHandle.js +106 -73
  121. package/dist/FiberHandle.js.map +1 -1
  122. package/dist/FiberMap.d.ts +213 -168
  123. package/dist/FiberMap.d.ts.map +1 -1
  124. package/dist/FiberMap.js +114 -89
  125. package/dist/FiberMap.js.map +1 -1
  126. package/dist/FiberSet.d.ts +123 -81
  127. package/dist/FiberSet.d.ts.map +1 -1
  128. package/dist/FiberSet.js +85 -59
  129. package/dist/FiberSet.js.map +1 -1
  130. package/dist/FileSystem.d.ts +153 -264
  131. package/dist/FileSystem.d.ts.map +1 -1
  132. package/dist/FileSystem.js +42 -147
  133. package/dist/FileSystem.js.map +1 -1
  134. package/dist/Filter.d.ts +61 -33
  135. package/dist/Filter.d.ts.map +1 -1
  136. package/dist/Filter.js +26 -15
  137. package/dist/Filter.js.map +1 -1
  138. package/dist/Formatter.d.ts +25 -33
  139. package/dist/Formatter.d.ts.map +1 -1
  140. package/dist/Formatter.js +48 -49
  141. package/dist/Formatter.js.map +1 -1
  142. package/dist/Function.d.ts +76 -145
  143. package/dist/Function.d.ts.map +1 -1
  144. package/dist/Function.js +40 -57
  145. package/dist/Function.js.map +1 -1
  146. package/dist/Graph.d.ts +360 -714
  147. package/dist/Graph.d.ts.map +1 -1
  148. package/dist/Graph.js +168 -297
  149. package/dist/Graph.js.map +1 -1
  150. package/dist/HKT.d.ts +12 -6
  151. package/dist/HKT.d.ts.map +1 -1
  152. package/dist/Hash.d.ts +47 -83
  153. package/dist/Hash.d.ts.map +1 -1
  154. package/dist/Hash.js +46 -68
  155. package/dist/Hash.js.map +1 -1
  156. package/dist/HashMap.d.ts +319 -411
  157. package/dist/HashMap.d.ts.map +1 -1
  158. package/dist/HashMap.js +122 -166
  159. package/dist/HashMap.js.map +1 -1
  160. package/dist/HashRing.d.ts.map +1 -1
  161. package/dist/HashRing.js +1 -0
  162. package/dist/HashRing.js.map +1 -1
  163. package/dist/HashSet.d.ts +177 -284
  164. package/dist/HashSet.d.ts.map +1 -1
  165. package/dist/HashSet.js +68 -109
  166. package/dist/HashSet.js.map +1 -1
  167. package/dist/Inspectable.d.ts +12 -12
  168. package/dist/Inspectable.js +8 -8
  169. package/dist/Inspectable.js.map +1 -1
  170. package/dist/Iterable.d.ts +620 -786
  171. package/dist/Iterable.d.ts.map +1 -1
  172. package/dist/Iterable.js +228 -306
  173. package/dist/Iterable.js.map +1 -1
  174. package/dist/JsonPatch.d.ts +11 -13
  175. package/dist/JsonPatch.d.ts.map +1 -1
  176. package/dist/JsonPatch.js +44 -102
  177. package/dist/JsonPatch.js.map +1 -1
  178. package/dist/JsonPointer.d.ts +8 -8
  179. package/dist/JsonPointer.js +8 -8
  180. package/dist/JsonPointer.js.map +1 -1
  181. package/dist/JsonSchema.d.ts +98 -44
  182. package/dist/JsonSchema.d.ts.map +1 -1
  183. package/dist/JsonSchema.js +297 -234
  184. package/dist/JsonSchema.js.map +1 -1
  185. package/dist/Latch.d.ts +23 -35
  186. package/dist/Latch.d.ts.map +1 -1
  187. package/dist/Latch.js +16 -28
  188. package/dist/Latch.js.map +1 -1
  189. package/dist/Layer.d.ts +359 -260
  190. package/dist/Layer.d.ts.map +1 -1
  191. package/dist/Layer.js +195 -175
  192. package/dist/Layer.js.map +1 -1
  193. package/dist/LayerMap.d.ts +42 -29
  194. package/dist/LayerMap.d.ts.map +1 -1
  195. package/dist/LayerMap.js +31 -21
  196. package/dist/LayerMap.js.map +1 -1
  197. package/dist/LayerRef.d.ts +6 -2
  198. package/dist/LayerRef.d.ts.map +1 -1
  199. package/dist/LayerRef.js +6 -2
  200. package/dist/LayerRef.js.map +1 -1
  201. package/dist/LogLevel.d.ts +114 -214
  202. package/dist/LogLevel.d.ts.map +1 -1
  203. package/dist/LogLevel.js +41 -76
  204. package/dist/LogLevel.js.map +1 -1
  205. package/dist/Logger.d.ts +218 -467
  206. package/dist/Logger.d.ts.map +1 -1
  207. package/dist/Logger.js +204 -450
  208. package/dist/Logger.js.map +1 -1
  209. package/dist/ManagedRuntime.d.ts +7 -5
  210. package/dist/ManagedRuntime.d.ts.map +1 -1
  211. package/dist/ManagedRuntime.js +7 -5
  212. package/dist/ManagedRuntime.js.map +1 -1
  213. package/dist/Match.d.ts +217 -252
  214. package/dist/Match.d.ts.map +1 -1
  215. package/dist/Match.js +150 -183
  216. package/dist/Match.js.map +1 -1
  217. package/dist/Metric.d.ts +442 -993
  218. package/dist/Metric.d.ts.map +1 -1
  219. package/dist/Metric.js +198 -642
  220. package/dist/Metric.js.map +1 -1
  221. package/dist/MutableHashMap.d.ts +144 -173
  222. package/dist/MutableHashMap.d.ts.map +1 -1
  223. package/dist/MutableHashMap.js +68 -79
  224. package/dist/MutableHashMap.js.map +1 -1
  225. package/dist/MutableHashSet.d.ts +84 -89
  226. package/dist/MutableHashSet.d.ts.map +1 -1
  227. package/dist/MutableHashSet.js +44 -47
  228. package/dist/MutableHashSet.js.map +1 -1
  229. package/dist/MutableList.d.ts +71 -370
  230. package/dist/MutableList.d.ts.map +1 -1
  231. package/dist/MutableList.js +59 -284
  232. package/dist/MutableList.js.map +1 -1
  233. package/dist/MutableRef.d.ts +420 -243
  234. package/dist/MutableRef.d.ts.map +1 -1
  235. package/dist/MutableRef.js +209 -120
  236. package/dist/MutableRef.js.map +1 -1
  237. package/dist/Newtype.d.ts +21 -14
  238. package/dist/Newtype.d.ts.map +1 -1
  239. package/dist/Newtype.js +15 -13
  240. package/dist/Newtype.js.map +1 -1
  241. package/dist/NonEmptyIterable.d.ts +7 -137
  242. package/dist/NonEmptyIterable.d.ts.map +1 -1
  243. package/dist/NonEmptyIterable.js +5 -93
  244. package/dist/NonEmptyIterable.js.map +1 -1
  245. package/dist/Number.d.ts +196 -233
  246. package/dist/Number.d.ts.map +1 -1
  247. package/dist/Number.js +90 -109
  248. package/dist/Number.js.map +1 -1
  249. package/dist/Optic.d.ts +97 -189
  250. package/dist/Optic.d.ts.map +1 -1
  251. package/dist/Optic.js +187 -290
  252. package/dist/Optic.js.map +1 -1
  253. package/dist/Option.d.ts +447 -812
  254. package/dist/Option.d.ts.map +1 -1
  255. package/dist/Option.js +211 -392
  256. package/dist/Option.js.map +1 -1
  257. package/dist/Order.d.ts +109 -109
  258. package/dist/Order.js +91 -91
  259. package/dist/Order.js.map +1 -1
  260. package/dist/Ordering.d.ts +20 -23
  261. package/dist/Ordering.d.ts.map +1 -1
  262. package/dist/Ordering.js +8 -9
  263. package/dist/Ordering.js.map +1 -1
  264. package/dist/PartitionedSemaphore.js.map +1 -1
  265. package/dist/Path.d.ts +38 -41
  266. package/dist/Path.d.ts.map +1 -1
  267. package/dist/Path.js +3 -4
  268. package/dist/Path.js.map +1 -1
  269. package/dist/Pipeable.d.ts +6 -5
  270. package/dist/Pipeable.d.ts.map +1 -1
  271. package/dist/Pipeable.js +2 -2
  272. package/dist/Pipeable.js.map +1 -1
  273. package/dist/PlatformError.d.ts +4 -4
  274. package/dist/PlatformError.js +3 -3
  275. package/dist/PlatformError.js.map +1 -1
  276. package/dist/Pool.d.ts +4 -2
  277. package/dist/Pool.d.ts.map +1 -1
  278. package/dist/Pool.js +4 -2
  279. package/dist/Pool.js.map +1 -1
  280. package/dist/Predicate.d.ts +200 -181
  281. package/dist/Predicate.d.ts.map +1 -1
  282. package/dist/Predicate.js +100 -108
  283. package/dist/Predicate.js.map +1 -1
  284. package/dist/PrimaryKey.d.ts +7 -7
  285. package/dist/PrimaryKey.js +5 -5
  286. package/dist/PrimaryKey.js.map +1 -1
  287. package/dist/PubSub.d.ts +425 -494
  288. package/dist/PubSub.d.ts.map +1 -1
  289. package/dist/PubSub.js +373 -362
  290. package/dist/PubSub.js.map +1 -1
  291. package/dist/Pull.d.ts +24 -18
  292. package/dist/Pull.d.ts.map +1 -1
  293. package/dist/Pull.js +11 -9
  294. package/dist/Pull.js.map +1 -1
  295. package/dist/Queue.d.ts +200 -159
  296. package/dist/Queue.d.ts.map +1 -1
  297. package/dist/Queue.js +162 -132
  298. package/dist/Queue.js.map +1 -1
  299. package/dist/Random.d.ts +49 -74
  300. package/dist/Random.d.ts.map +1 -1
  301. package/dist/Random.js +35 -54
  302. package/dist/Random.js.map +1 -1
  303. package/dist/RcMap.d.ts +121 -63
  304. package/dist/RcMap.d.ts.map +1 -1
  305. package/dist/RcMap.js +42 -21
  306. package/dist/RcMap.js.map +1 -1
  307. package/dist/RcRef.d.ts +24 -13
  308. package/dist/RcRef.d.ts.map +1 -1
  309. package/dist/RcRef.js +15 -9
  310. package/dist/RcRef.js.map +1 -1
  311. package/dist/Record.d.ts +291 -488
  312. package/dist/Record.d.ts.map +1 -1
  313. package/dist/Record.js +111 -202
  314. package/dist/Record.js.map +1 -1
  315. package/dist/Redactable.d.ts +6 -2
  316. package/dist/Redactable.d.ts.map +1 -1
  317. package/dist/Redactable.js +7 -2
  318. package/dist/Redactable.js.map +1 -1
  319. package/dist/Redacted.d.ts +25 -25
  320. package/dist/Redacted.d.ts.map +1 -1
  321. package/dist/Redacted.js +19 -20
  322. package/dist/Redacted.js.map +1 -1
  323. package/dist/Reducer.d.ts +8 -15
  324. package/dist/Reducer.d.ts.map +1 -1
  325. package/dist/Reducer.js +6 -12
  326. package/dist/Reducer.js.map +1 -1
  327. package/dist/Ref.d.ts +95 -165
  328. package/dist/Ref.d.ts.map +1 -1
  329. package/dist/Ref.js +75 -122
  330. package/dist/Ref.js.map +1 -1
  331. package/dist/References.d.ts +102 -168
  332. package/dist/References.d.ts.map +1 -1
  333. package/dist/References.js +102 -168
  334. package/dist/References.js.map +1 -1
  335. package/dist/RegExp.d.ts +10 -14
  336. package/dist/RegExp.d.ts.map +1 -1
  337. package/dist/RegExp.js +10 -14
  338. package/dist/RegExp.js.map +1 -1
  339. package/dist/Request.d.ts +31 -21
  340. package/dist/Request.d.ts.map +1 -1
  341. package/dist/Request.js +16 -13
  342. package/dist/Request.js.map +1 -1
  343. package/dist/RequestResolver.d.ts +201 -90
  344. package/dist/RequestResolver.d.ts.map +1 -1
  345. package/dist/RequestResolver.js +87 -41
  346. package/dist/RequestResolver.js.map +1 -1
  347. package/dist/Resource.js.map +1 -1
  348. package/dist/Result.d.ts +302 -470
  349. package/dist/Result.d.ts.map +1 -1
  350. package/dist/Result.js +133 -217
  351. package/dist/Result.js.map +1 -1
  352. package/dist/Runtime.d.ts +50 -75
  353. package/dist/Runtime.d.ts.map +1 -1
  354. package/dist/Runtime.js +39 -60
  355. package/dist/Runtime.js.map +1 -1
  356. package/dist/Schedule.d.ts +290 -1636
  357. package/dist/Schedule.d.ts.map +1 -1
  358. package/dist/Schedule.js +162 -803
  359. package/dist/Schedule.js.map +1 -1
  360. package/dist/Scheduler.d.ts +5 -5
  361. package/dist/Scheduler.d.ts.map +1 -1
  362. package/dist/Scheduler.js +18 -6
  363. package/dist/Scheduler.js.map +1 -1
  364. package/dist/Schema.d.ts +644 -642
  365. package/dist/Schema.d.ts.map +1 -1
  366. package/dist/Schema.js +491 -527
  367. package/dist/Schema.js.map +1 -1
  368. package/dist/SchemaAST.d.ts +27 -50
  369. package/dist/SchemaAST.d.ts.map +1 -1
  370. package/dist/SchemaAST.js +366 -279
  371. package/dist/SchemaAST.js.map +1 -1
  372. package/dist/SchemaError.d.ts +7 -6
  373. package/dist/SchemaError.d.ts.map +1 -1
  374. package/dist/SchemaError.js +7 -6
  375. package/dist/SchemaError.js.map +1 -1
  376. package/dist/SchemaGetter.d.ts +217 -174
  377. package/dist/SchemaGetter.d.ts.map +1 -1
  378. package/dist/SchemaGetter.js +218 -185
  379. package/dist/SchemaGetter.js.map +1 -1
  380. package/dist/SchemaIssue.d.ts +62 -190
  381. package/dist/SchemaIssue.d.ts.map +1 -1
  382. package/dist/SchemaIssue.js +73 -265
  383. package/dist/SchemaIssue.js.map +1 -1
  384. package/dist/SchemaParser.d.ts +2 -2
  385. package/dist/SchemaParser.d.ts.map +1 -1
  386. package/dist/SchemaParser.js +123 -75
  387. package/dist/SchemaParser.js.map +1 -1
  388. package/dist/SchemaRepresentation.d.ts +22 -36
  389. package/dist/SchemaRepresentation.d.ts.map +1 -1
  390. package/dist/SchemaRepresentation.js +20 -26
  391. package/dist/SchemaRepresentation.js.map +1 -1
  392. package/dist/SchemaTransformation.d.ts +114 -74
  393. package/dist/SchemaTransformation.d.ts.map +1 -1
  394. package/dist/SchemaTransformation.js +120 -85
  395. package/dist/SchemaTransformation.js.map +1 -1
  396. package/dist/Scope.d.ts +123 -151
  397. package/dist/Scope.d.ts.map +1 -1
  398. package/dist/Scope.js +72 -92
  399. package/dist/Scope.js.map +1 -1
  400. package/dist/ScopedCache.js.map +1 -1
  401. package/dist/ScopedRef.d.ts +3 -3
  402. package/dist/ScopedRef.js +2 -2
  403. package/dist/ScopedRef.js.map +1 -1
  404. package/dist/Semaphore.d.ts +96 -10
  405. package/dist/Semaphore.d.ts.map +1 -1
  406. package/dist/Semaphore.js +78 -39
  407. package/dist/Semaphore.js.map +1 -1
  408. package/dist/Sink.d.ts +117 -107
  409. package/dist/Sink.d.ts.map +1 -1
  410. package/dist/Sink.js +107 -100
  411. package/dist/Sink.js.map +1 -1
  412. package/dist/Stdio.d.ts +1 -1
  413. package/dist/Stdio.js.map +1 -1
  414. package/dist/Stream.d.ts +2415 -2949
  415. package/dist/Stream.d.ts.map +1 -1
  416. package/dist/Stream.js +1078 -1381
  417. package/dist/Stream.js.map +1 -1
  418. package/dist/String.d.ts +262 -308
  419. package/dist/String.d.ts.map +1 -1
  420. package/dist/String.js +184 -215
  421. package/dist/String.js.map +1 -1
  422. package/dist/Struct.d.ts +109 -114
  423. package/dist/Struct.d.ts.map +1 -1
  424. package/dist/Struct.js +41 -50
  425. package/dist/Struct.js.map +1 -1
  426. package/dist/SubscriptionRef.d.ts +282 -250
  427. package/dist/SubscriptionRef.d.ts.map +1 -1
  428. package/dist/SubscriptionRef.js +104 -92
  429. package/dist/SubscriptionRef.js.map +1 -1
  430. package/dist/Symbol.d.ts +3 -3
  431. package/dist/Symbol.js +3 -3
  432. package/dist/Symbol.js.map +1 -1
  433. package/dist/SynchronizedRef.js.map +1 -1
  434. package/dist/Take.js.map +1 -1
  435. package/dist/Terminal.d.ts +2 -2
  436. package/dist/Terminal.js +1 -1
  437. package/dist/Terminal.js.map +1 -1
  438. package/dist/Tracer.d.ts +100 -54
  439. package/dist/Tracer.d.ts.map +1 -1
  440. package/dist/Tracer.js +41 -24
  441. package/dist/Tracer.js.map +1 -1
  442. package/dist/Trie.d.ts +287 -679
  443. package/dist/Trie.d.ts.map +1 -1
  444. package/dist/Trie.js +109 -251
  445. package/dist/Trie.js.map +1 -1
  446. package/dist/Tuple.d.ts +92 -127
  447. package/dist/Tuple.d.ts.map +1 -1
  448. package/dist/Tuple.js +42 -57
  449. package/dist/Tuple.js.map +1 -1
  450. package/dist/TxChunk.d.ts +201 -121
  451. package/dist/TxChunk.d.ts.map +1 -1
  452. package/dist/TxChunk.js +85 -56
  453. package/dist/TxChunk.js.map +1 -1
  454. package/dist/TxDeferred.d.ts +62 -46
  455. package/dist/TxDeferred.d.ts.map +1 -1
  456. package/dist/TxDeferred.js +30 -22
  457. package/dist/TxDeferred.js.map +1 -1
  458. package/dist/TxHashMap.d.ts +631 -779
  459. package/dist/TxHashMap.d.ts.map +1 -1
  460. package/dist/TxHashMap.js +268 -330
  461. package/dist/TxHashMap.js.map +1 -1
  462. package/dist/TxHashSet.d.ts +297 -236
  463. package/dist/TxHashSet.d.ts.map +1 -1
  464. package/dist/TxHashSet.js +130 -100
  465. package/dist/TxHashSet.js.map +1 -1
  466. package/dist/TxPriorityQueue.d.ts +126 -95
  467. package/dist/TxPriorityQueue.d.ts.map +1 -1
  468. package/dist/TxPriorityQueue.js +74 -56
  469. package/dist/TxPriorityQueue.js.map +1 -1
  470. package/dist/TxPubSub.d.ts +101 -88
  471. package/dist/TxPubSub.d.ts.map +1 -1
  472. package/dist/TxPubSub.js +87 -66
  473. package/dist/TxPubSub.js.map +1 -1
  474. package/dist/TxQueue.d.ts +200 -180
  475. package/dist/TxQueue.d.ts.map +1 -1
  476. package/dist/TxQueue.js +160 -136
  477. package/dist/TxQueue.js.map +1 -1
  478. package/dist/TxReentrantLock.d.ts +97 -66
  479. package/dist/TxReentrantLock.d.ts.map +1 -1
  480. package/dist/TxReentrantLock.js +67 -45
  481. package/dist/TxReentrantLock.js.map +1 -1
  482. package/dist/TxRef.d.ts +51 -32
  483. package/dist/TxRef.d.ts.map +1 -1
  484. package/dist/TxRef.js +23 -15
  485. package/dist/TxRef.js.map +1 -1
  486. package/dist/TxSemaphore.d.ts +129 -95
  487. package/dist/TxSemaphore.d.ts.map +1 -1
  488. package/dist/TxSemaphore.js +85 -70
  489. package/dist/TxSemaphore.js.map +1 -1
  490. package/dist/TxSubscriptionRef.d.ts +97 -70
  491. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  492. package/dist/TxSubscriptionRef.js +44 -34
  493. package/dist/TxSubscriptionRef.js.map +1 -1
  494. package/dist/Types.d.ts +126 -67
  495. package/dist/Types.d.ts.map +1 -1
  496. package/dist/UndefinedOr.js.map +1 -1
  497. package/dist/Unify.d.ts +45 -65
  498. package/dist/Unify.d.ts.map +1 -1
  499. package/dist/Unify.js +6 -9
  500. package/dist/Unify.js.map +1 -1
  501. package/dist/Utils.d.ts +23 -16
  502. package/dist/Utils.d.ts.map +1 -1
  503. package/dist/Utils.js +3 -7
  504. package/dist/Utils.js.map +1 -1
  505. package/dist/index.js.map +1 -1
  506. package/dist/internal/array.js.map +1 -1
  507. package/dist/internal/core.js +1 -1
  508. package/dist/internal/core.js.map +1 -1
  509. package/dist/internal/dateTime.js +4 -0
  510. package/dist/internal/dateTime.js.map +1 -1
  511. package/dist/internal/doNotation.js.map +1 -1
  512. package/dist/internal/effect.js +77 -40
  513. package/dist/internal/effect.js.map +1 -1
  514. package/dist/internal/equal.js.map +1 -1
  515. package/dist/internal/errors.js.map +1 -1
  516. package/dist/internal/executionPlan.js.map +1 -1
  517. package/dist/internal/hashMap.js.map +1 -1
  518. package/dist/internal/hashSet.js.map +1 -1
  519. package/dist/internal/layer.js.map +1 -1
  520. package/dist/internal/matcher.js.map +1 -1
  521. package/dist/internal/metric.js.map +1 -1
  522. package/dist/internal/option.js.map +1 -1
  523. package/dist/internal/persistence.d.ts +2 -0
  524. package/dist/internal/persistence.d.ts.map +1 -0
  525. package/dist/internal/persistence.js +3 -0
  526. package/dist/internal/persistence.js.map +1 -0
  527. package/dist/internal/random.js.map +1 -1
  528. package/dist/internal/rcRef.js.map +1 -1
  529. package/dist/internal/record.js.map +1 -1
  530. package/dist/internal/redacted.js.map +1 -1
  531. package/dist/internal/references.js +3 -0
  532. package/dist/internal/references.js.map +1 -1
  533. package/dist/internal/request.js.map +1 -1
  534. package/dist/internal/result.js.map +1 -1
  535. package/dist/internal/schedule.js.map +1 -1
  536. package/dist/internal/schema/annotations.js.map +1 -1
  537. package/dist/internal/schema/cause.js.map +1 -1
  538. package/dist/internal/schema/fromJsonSchemaDocument.js +13 -11
  539. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  540. package/dist/internal/schema/fromRepresentation.js +8 -15
  541. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  542. package/dist/internal/schema/parser.d.ts +14 -0
  543. package/dist/internal/schema/parser.d.ts.map +1 -0
  544. package/dist/internal/schema/parser.js +13 -0
  545. package/dist/internal/schema/parser.js.map +1 -0
  546. package/dist/internal/schema/schema.js.map +1 -1
  547. package/dist/internal/schema/toArbitrary.js.map +1 -1
  548. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  549. package/dist/internal/schema/toEquivalence.js.map +1 -1
  550. package/dist/internal/schema/toJsonSchemaDocument.js +48 -6
  551. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  552. package/dist/internal/schema/toRepresentation.js +87 -107
  553. package/dist/internal/schema/toRepresentation.js.map +1 -1
  554. package/dist/internal/stackTraceLimit.js.map +1 -1
  555. package/dist/internal/stream.js.map +1 -1
  556. package/dist/internal/tracer.js.map +1 -1
  557. package/dist/internal/trie.js +13 -9
  558. package/dist/internal/trie.js.map +1 -1
  559. package/dist/testing/FastCheck.d.ts +8 -7
  560. package/dist/testing/FastCheck.d.ts.map +1 -1
  561. package/dist/testing/FastCheck.js +8 -7
  562. package/dist/testing/FastCheck.js.map +1 -1
  563. package/dist/testing/TestClock.d.ts +57 -28
  564. package/dist/testing/TestClock.d.ts.map +1 -1
  565. package/dist/testing/TestClock.js +50 -18
  566. package/dist/testing/TestClock.js.map +1 -1
  567. package/dist/testing/TestConsole.d.ts +32 -31
  568. package/dist/testing/TestConsole.d.ts.map +1 -1
  569. package/dist/testing/TestConsole.js +24 -22
  570. package/dist/testing/TestConsole.js.map +1 -1
  571. package/dist/testing/TestSchema.d.ts +29 -29
  572. package/dist/testing/TestSchema.js +25 -25
  573. package/dist/testing/TestSchema.js.map +1 -1
  574. package/dist/testing/index.js.map +1 -1
  575. package/dist/unstable/ai/AiError.d.ts +95 -118
  576. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  577. package/dist/unstable/ai/AiError.js +94 -117
  578. package/dist/unstable/ai/AiError.js.map +1 -1
  579. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
  580. package/dist/unstable/ai/AnthropicStructuredOutput.js +1 -1
  581. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  582. package/dist/unstable/ai/Chat.d.ts +132 -97
  583. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  584. package/dist/unstable/ai/Chat.js +55 -51
  585. package/dist/unstable/ai/Chat.js.map +1 -1
  586. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  587. package/dist/unstable/ai/IdGenerator.d.ts +32 -28
  588. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  589. package/dist/unstable/ai/IdGenerator.js +26 -21
  590. package/dist/unstable/ai/IdGenerator.js.map +1 -1
  591. package/dist/unstable/ai/LanguageModel.d.ts +107 -67
  592. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  593. package/dist/unstable/ai/LanguageModel.js +104 -64
  594. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  595. package/dist/unstable/ai/McpProtocol.d.ts +30 -0
  596. package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
  597. package/dist/unstable/ai/McpProtocol.js +20 -0
  598. package/dist/unstable/ai/McpProtocol.js.map +1 -0
  599. package/dist/unstable/ai/McpSchema.d.ts +141 -75
  600. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  601. package/dist/unstable/ai/McpSchema.js +58 -50
  602. package/dist/unstable/ai/McpSchema.js.map +1 -1
  603. package/dist/unstable/ai/McpServer.d.ts +68 -59
  604. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  605. package/dist/unstable/ai/McpServer.js +694 -241
  606. package/dist/unstable/ai/McpServer.js.map +1 -1
  607. package/dist/unstable/ai/Model.d.ts +8 -19
  608. package/dist/unstable/ai/Model.d.ts.map +1 -1
  609. package/dist/unstable/ai/Model.js +9 -20
  610. package/dist/unstable/ai/Model.js.map +1 -1
  611. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
  612. package/dist/unstable/ai/OpenAiStructuredOutput.js +1 -1
  613. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  614. package/dist/unstable/ai/Prompt.d.ts +112 -38
  615. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  616. package/dist/unstable/ai/Prompt.js +53 -17
  617. package/dist/unstable/ai/Prompt.js.map +1 -1
  618. package/dist/unstable/ai/Response.d.ts +28 -14
  619. package/dist/unstable/ai/Response.d.ts.map +1 -1
  620. package/dist/unstable/ai/Response.js +9 -4
  621. package/dist/unstable/ai/Response.js.map +1 -1
  622. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
  623. package/dist/unstable/ai/Telemetry.d.ts +46 -13
  624. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  625. package/dist/unstable/ai/Telemetry.js +18 -7
  626. package/dist/unstable/ai/Telemetry.js.map +1 -1
  627. package/dist/unstable/ai/Tokenizer.d.ts +14 -3
  628. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  629. package/dist/unstable/ai/Tokenizer.js +10 -2
  630. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  631. package/dist/unstable/ai/Tool.d.ts +59 -44
  632. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  633. package/dist/unstable/ai/Tool.js +48 -39
  634. package/dist/unstable/ai/Tool.js.map +1 -1
  635. package/dist/unstable/ai/Toolkit.d.ts +26 -8
  636. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  637. package/dist/unstable/ai/Toolkit.js +18 -4
  638. package/dist/unstable/ai/Toolkit.js.map +1 -1
  639. package/dist/unstable/ai/index.d.ts +4 -0
  640. package/dist/unstable/ai/index.d.ts.map +1 -1
  641. package/dist/unstable/ai/index.js +4 -0
  642. package/dist/unstable/ai/index.js.map +1 -1
  643. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  644. package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
  645. package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
  646. package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
  647. package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
  648. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
  649. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
  650. package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
  651. package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
  652. package/dist/unstable/ai/internal/structured-output.js +14 -15
  653. package/dist/unstable/ai/internal/structured-output.js.map +1 -1
  654. package/dist/unstable/cli/Argument.d.ts +273 -69
  655. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  656. package/dist/unstable/cli/Argument.js +111 -33
  657. package/dist/unstable/cli/Argument.js.map +1 -1
  658. package/dist/unstable/cli/CliConfig.js.map +1 -1
  659. package/dist/unstable/cli/CliError.d.ts +69 -76
  660. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  661. package/dist/unstable/cli/CliError.js +57 -61
  662. package/dist/unstable/cli/CliError.js.map +1 -1
  663. package/dist/unstable/cli/CliOutput.d.ts +35 -54
  664. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  665. package/dist/unstable/cli/CliOutput.js +26 -42
  666. package/dist/unstable/cli/CliOutput.js.map +1 -1
  667. package/dist/unstable/cli/Command.d.ts +705 -107
  668. package/dist/unstable/cli/Command.d.ts.map +1 -1
  669. package/dist/unstable/cli/Command.js +238 -42
  670. package/dist/unstable/cli/Command.js.map +1 -1
  671. package/dist/unstable/cli/Completions.js.map +1 -1
  672. package/dist/unstable/cli/Flag.d.ts +418 -138
  673. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  674. package/dist/unstable/cli/Flag.js +197 -71
  675. package/dist/unstable/cli/Flag.js.map +1 -1
  676. package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
  677. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  678. package/dist/unstable/cli/HelpDoc.d.ts +12 -4
  679. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  680. package/dist/unstable/cli/Param.d.ts +292 -78
  681. package/dist/unstable/cli/Param.d.ts.map +1 -1
  682. package/dist/unstable/cli/Param.js +128 -46
  683. package/dist/unstable/cli/Param.js.map +1 -1
  684. package/dist/unstable/cli/Primitive.d.ts +370 -149
  685. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  686. package/dist/unstable/cli/Primitive.js +344 -136
  687. package/dist/unstable/cli/Primitive.js.map +1 -1
  688. package/dist/unstable/cli/Prompt.d.ts +23 -14
  689. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  690. package/dist/unstable/cli/Prompt.js +23 -14
  691. package/dist/unstable/cli/Prompt.js.map +1 -1
  692. package/dist/unstable/cli/index.js.map +1 -1
  693. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  694. package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
  695. package/dist/unstable/cli/internal/command.js.map +1 -1
  696. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  697. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  698. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  699. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  700. package/dist/unstable/cli/internal/config.js.map +1 -1
  701. package/dist/unstable/cli/internal/help.js.map +1 -1
  702. package/dist/unstable/cli/internal/lexer.js +17 -7
  703. package/dist/unstable/cli/internal/lexer.js.map +1 -1
  704. package/dist/unstable/cli/internal/parser.js +2 -2
  705. package/dist/unstable/cli/internal/parser.js.map +1 -1
  706. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  707. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  708. package/dist/unstable/cluster/ClusterError.js.map +1 -1
  709. package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
  710. package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
  711. package/dist/unstable/cluster/ClusterSchema.js +8 -8
  712. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  713. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  714. package/dist/unstable/cluster/ClusterWorkflowEngine.js +5 -1
  715. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  716. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  717. package/dist/unstable/cluster/Entity.d.ts +10 -10
  718. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  719. package/dist/unstable/cluster/Entity.js +8 -8
  720. package/dist/unstable/cluster/Entity.js.map +1 -1
  721. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  722. package/dist/unstable/cluster/EntityId.js.map +1 -1
  723. package/dist/unstable/cluster/EntityProxy.d.ts +4 -2
  724. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  725. package/dist/unstable/cluster/EntityProxy.js +4 -2
  726. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  727. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  728. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  729. package/dist/unstable/cluster/EntityResource.js +2 -2
  730. package/dist/unstable/cluster/EntityResource.js.map +1 -1
  731. package/dist/unstable/cluster/EntityType.js.map +1 -1
  732. package/dist/unstable/cluster/Envelope.d.ts +3 -3
  733. package/dist/unstable/cluster/Envelope.js +3 -3
  734. package/dist/unstable/cluster/Envelope.js.map +1 -1
  735. package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
  736. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  737. package/dist/unstable/cluster/HttpRunner.js +6 -4
  738. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  739. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  740. package/dist/unstable/cluster/MachineId.js.map +1 -1
  741. package/dist/unstable/cluster/Message.d.ts +9 -9
  742. package/dist/unstable/cluster/Message.js +6 -6
  743. package/dist/unstable/cluster/Message.js.map +1 -1
  744. package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
  745. package/dist/unstable/cluster/MessageStorage.js +5 -5
  746. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  747. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  748. package/dist/unstable/cluster/Reply.js +4 -4
  749. package/dist/unstable/cluster/Reply.js.map +1 -1
  750. package/dist/unstable/cluster/Runner.js.map +1 -1
  751. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  752. package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
  753. package/dist/unstable/cluster/RunnerHealth.js +1 -1
  754. package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
  755. package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
  756. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  757. package/dist/unstable/cluster/RunnerServer.js +16 -16
  758. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  759. package/dist/unstable/cluster/RunnerStorage.d.ts +2 -2
  760. package/dist/unstable/cluster/RunnerStorage.js +1 -1
  761. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  762. package/dist/unstable/cluster/Runners.d.ts +6 -6
  763. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  764. package/dist/unstable/cluster/Runners.js +19 -10
  765. package/dist/unstable/cluster/Runners.js.map +1 -1
  766. package/dist/unstable/cluster/ShardId.js.map +1 -1
  767. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  768. package/dist/unstable/cluster/Sharding.js +3 -2
  769. package/dist/unstable/cluster/Sharding.js.map +1 -1
  770. package/dist/unstable/cluster/ShardingConfig.d.ts +3 -3
  771. package/dist/unstable/cluster/ShardingConfig.js +3 -3
  772. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  773. package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
  774. package/dist/unstable/cluster/SingleRunner.js.map +1 -1
  775. package/dist/unstable/cluster/Singleton.js.map +1 -1
  776. package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
  777. package/dist/unstable/cluster/SingletonAddress.js +1 -1
  778. package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
  779. package/dist/unstable/cluster/Snowflake.d.ts +8 -8
  780. package/dist/unstable/cluster/Snowflake.js +8 -8
  781. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  782. package/dist/unstable/cluster/SocketRunner.js.map +1 -1
  783. package/dist/unstable/cluster/SqlMessageStorage.js +1 -1
  784. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  785. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  786. package/dist/unstable/cluster/SqlRunnerStorage.js +20 -5
  787. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  788. package/dist/unstable/cluster/TestRunner.js.map +1 -1
  789. package/dist/unstable/cluster/index.js.map +1 -1
  790. package/dist/unstable/cluster/internal/entityManager.js +5 -5
  791. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  792. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  793. package/dist/unstable/cluster/internal/hash.js.map +1 -1
  794. package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
  795. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  796. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  797. package/dist/unstable/cluster/internal/shardLock.js.map +1 -1
  798. package/dist/unstable/devtools/DevTools.js.map +1 -1
  799. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  800. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  801. package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
  802. package/dist/unstable/devtools/index.js.map +1 -1
  803. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  804. package/dist/unstable/encoding/Msgpack.js +6 -8
  805. package/dist/unstable/encoding/Msgpack.js.map +1 -1
  806. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  807. package/dist/unstable/encoding/Sse.d.ts +72 -8
  808. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  809. package/dist/unstable/encoding/Sse.js +58 -8
  810. package/dist/unstable/encoding/Sse.js.map +1 -1
  811. package/dist/unstable/encoding/index.js.map +1 -1
  812. package/dist/unstable/eventlog/Event.d.ts +20 -20
  813. package/dist/unstable/eventlog/Event.js.map +1 -1
  814. package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
  815. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  816. package/dist/unstable/eventlog/EventJournal.d.ts +15 -15
  817. package/dist/unstable/eventlog/EventJournal.js +13 -13
  818. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  819. package/dist/unstable/eventlog/EventLog.d.ts +3 -3
  820. package/dist/unstable/eventlog/EventLog.js +3 -3
  821. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  822. package/dist/unstable/eventlog/EventLogEncryption.d.ts +1 -1
  823. package/dist/unstable/eventlog/EventLogEncryption.js +1 -1
  824. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  825. package/dist/unstable/eventlog/EventLogMessage.d.ts +2 -2
  826. package/dist/unstable/eventlog/EventLogMessage.js +1 -1
  827. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  828. package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
  829. package/dist/unstable/eventlog/EventLogRemote.js +1 -1
  830. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  831. package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
  832. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  833. package/dist/unstable/eventlog/EventLogServer.js +45 -21
  834. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  835. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
  836. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  837. package/dist/unstable/eventlog/EventLogServerEncrypted.js +13 -5
  838. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
  839. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
  840. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  841. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +14 -6
  842. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  843. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
  844. package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
  845. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
  846. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  847. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  848. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  849. package/dist/unstable/eventlog/index.js.map +1 -1
  850. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  851. package/dist/unstable/http/Cookies.d.ts +2 -2
  852. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  853. package/dist/unstable/http/Cookies.js +30 -18
  854. package/dist/unstable/http/Cookies.js.map +1 -1
  855. package/dist/unstable/http/Etag.d.ts +1 -1
  856. package/dist/unstable/http/Etag.js +1 -1
  857. package/dist/unstable/http/Etag.js.map +1 -1
  858. package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
  859. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  860. package/dist/unstable/http/Headers.d.ts +2 -2
  861. package/dist/unstable/http/Headers.js +2 -2
  862. package/dist/unstable/http/Headers.js.map +1 -1
  863. package/dist/unstable/http/HttpBody.d.ts +5 -3
  864. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  865. package/dist/unstable/http/HttpBody.js +11 -5
  866. package/dist/unstable/http/HttpBody.js.map +1 -1
  867. package/dist/unstable/http/HttpClient.d.ts +51 -44
  868. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  869. package/dist/unstable/http/HttpClient.js +46 -17
  870. package/dist/unstable/http/HttpClient.js.map +1 -1
  871. package/dist/unstable/http/HttpClientError.js.map +1 -1
  872. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  873. package/dist/unstable/http/HttpClientRequest.js +2 -0
  874. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  875. package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
  876. package/dist/unstable/http/HttpClientResponse.js +2 -2
  877. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  878. package/dist/unstable/http/HttpEffect.d.ts +6 -6
  879. package/dist/unstable/http/HttpEffect.js +3 -3
  880. package/dist/unstable/http/HttpEffect.js.map +1 -1
  881. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  882. package/dist/unstable/http/HttpMethod.d.ts +6 -9
  883. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  884. package/dist/unstable/http/HttpMethod.js +6 -9
  885. package/dist/unstable/http/HttpMethod.js.map +1 -1
  886. package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
  887. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  888. package/dist/unstable/http/HttpMiddleware.js +164 -39
  889. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  890. package/dist/unstable/http/HttpPlatform.d.ts +76 -0
  891. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  892. package/dist/unstable/http/HttpPlatform.js +32 -0
  893. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  894. package/dist/unstable/http/HttpRouter.d.ts +88 -89
  895. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  896. package/dist/unstable/http/HttpRouter.js +78 -79
  897. package/dist/unstable/http/HttpRouter.js.map +1 -1
  898. package/dist/unstable/http/HttpServer.d.ts +13 -13
  899. package/dist/unstable/http/HttpServer.js +6 -6
  900. package/dist/unstable/http/HttpServer.js.map +1 -1
  901. package/dist/unstable/http/HttpServerError.d.ts +2 -2
  902. package/dist/unstable/http/HttpServerError.js +2 -2
  903. package/dist/unstable/http/HttpServerError.js.map +1 -1
  904. package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
  905. package/dist/unstable/http/HttpServerRequest.js +4 -4
  906. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  907. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  908. package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
  909. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  910. package/dist/unstable/http/HttpServerResponse.js +10 -0
  911. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  912. package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
  913. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  914. package/dist/unstable/http/HttpStaticServer.js +35 -7
  915. package/dist/unstable/http/HttpStaticServer.js.map +1 -1
  916. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  917. package/dist/unstable/http/Multipart.d.ts +6 -6
  918. package/dist/unstable/http/Multipart.js +5 -5
  919. package/dist/unstable/http/Multipart.js.map +1 -1
  920. package/dist/unstable/http/Template.js.map +1 -1
  921. package/dist/unstable/http/Url.d.ts +33 -63
  922. package/dist/unstable/http/Url.d.ts.map +1 -1
  923. package/dist/unstable/http/Url.js +14 -28
  924. package/dist/unstable/http/Url.js.map +1 -1
  925. package/dist/unstable/http/UrlParams.d.ts +10 -18
  926. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  927. package/dist/unstable/http/UrlParams.js +9 -17
  928. package/dist/unstable/http/UrlParams.js.map +1 -1
  929. package/dist/unstable/http/index.js.map +1 -1
  930. package/dist/unstable/http/internal/compression.d.ts +2 -0
  931. package/dist/unstable/http/internal/compression.d.ts.map +1 -0
  932. package/dist/unstable/http/internal/compression.js +155 -0
  933. package/dist/unstable/http/internal/compression.js.map +1 -0
  934. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
  935. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  936. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
  937. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  938. package/dist/unstable/httpapi/HttpApiBuilder.js +10 -11
  939. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  940. package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
  941. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  942. package/dist/unstable/httpapi/HttpApiClient.js +11 -13
  943. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  944. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +42 -42
  945. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  946. package/dist/unstable/httpapi/HttpApiError.d.ts +13 -13
  947. package/dist/unstable/httpapi/HttpApiError.js +13 -13
  948. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  949. package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
  950. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  951. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
  952. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  953. package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
  954. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  955. package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
  956. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  957. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  958. package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -6
  959. package/dist/unstable/httpapi/HttpApiSchema.js +4 -4
  960. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  961. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  962. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  963. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  964. package/dist/unstable/httpapi/OpenApi.d.ts +13 -13
  965. package/dist/unstable/httpapi/OpenApi.js +13 -13
  966. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  967. package/dist/unstable/httpapi/index.js.map +1 -1
  968. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  969. package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
  970. package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
  971. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
  972. package/dist/unstable/observability/Otlp.js.map +1 -1
  973. package/dist/unstable/observability/OtlpExporter.d.ts +12 -14
  974. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  975. package/dist/unstable/observability/OtlpExporter.js +17 -4
  976. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  977. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  978. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -1
  979. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  980. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  981. package/dist/unstable/observability/OtlpResource.d.ts +16 -7
  982. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  983. package/dist/unstable/observability/OtlpResource.js +21 -12
  984. package/dist/unstable/observability/OtlpResource.js.map +1 -1
  985. package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
  986. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  987. package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
  988. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  989. package/dist/unstable/observability/PrometheusMetrics.js +10 -3
  990. package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
  991. package/dist/unstable/observability/index.js.map +1 -1
  992. package/dist/unstable/observability/internal/otlpEnv.js +1 -1
  993. package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
  994. package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
  995. package/dist/unstable/observability/internal/protobuf.js +3 -0
  996. package/dist/unstable/observability/internal/protobuf.js.map +1 -1
  997. package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
  998. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  999. package/dist/unstable/persistence/KeyValueStore.js +22 -13
  1000. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  1001. package/dist/unstable/persistence/Persistable.d.ts +8 -8
  1002. package/dist/unstable/persistence/Persistable.js.map +1 -1
  1003. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  1004. package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
  1005. package/dist/unstable/persistence/PersistedQueue.js +6 -6
  1006. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  1007. package/dist/unstable/persistence/Persistence.d.ts +3 -3
  1008. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  1009. package/dist/unstable/persistence/Persistence.js +91 -15
  1010. package/dist/unstable/persistence/Persistence.js.map +1 -1
  1011. package/dist/unstable/persistence/RateLimiter.d.ts +26 -15
  1012. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  1013. package/dist/unstable/persistence/RateLimiter.js +24 -13
  1014. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  1015. package/dist/unstable/persistence/Redis.d.ts +2 -2
  1016. package/dist/unstable/persistence/Redis.js +1 -1
  1017. package/dist/unstable/persistence/Redis.js.map +1 -1
  1018. package/dist/unstable/persistence/index.js.map +1 -1
  1019. package/dist/unstable/process/ChildProcess.d.ts +64 -21
  1020. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  1021. package/dist/unstable/process/ChildProcess.js +14 -5
  1022. package/dist/unstable/process/ChildProcess.js.map +1 -1
  1023. package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
  1024. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  1025. package/dist/unstable/process/ChildProcessSpawner.js +1 -1
  1026. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  1027. package/dist/unstable/process/index.js.map +1 -1
  1028. package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
  1029. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  1030. package/dist/unstable/reactivity/AsyncResult.js +10 -10
  1031. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  1032. package/dist/unstable/reactivity/Atom.d.ts +25 -22
  1033. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  1034. package/dist/unstable/reactivity/Atom.js +14 -13
  1035. package/dist/unstable/reactivity/Atom.js.map +1 -1
  1036. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  1037. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  1038. package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
  1039. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  1040. package/dist/unstable/reactivity/AtomRef.js.map +1 -1
  1041. package/dist/unstable/reactivity/AtomRegistry.js +24 -3
  1042. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  1043. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  1044. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  1045. package/dist/unstable/reactivity/AtomRpc.js +4 -1
  1046. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  1047. package/dist/unstable/reactivity/Hydration.d.ts +1 -1
  1048. package/dist/unstable/reactivity/Hydration.js +1 -1
  1049. package/dist/unstable/reactivity/Hydration.js.map +1 -1
  1050. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  1051. package/dist/unstable/reactivity/index.js.map +1 -1
  1052. package/dist/unstable/rpc/Rpc.d.ts +35 -33
  1053. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  1054. package/dist/unstable/rpc/Rpc.js +4 -2
  1055. package/dist/unstable/rpc/Rpc.js.map +1 -1
  1056. package/dist/unstable/rpc/RpcClient.d.ts +12 -12
  1057. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  1058. package/dist/unstable/rpc/RpcClient.js +12 -11
  1059. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  1060. package/dist/unstable/rpc/RpcClientError.js.map +1 -1
  1061. package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
  1062. package/dist/unstable/rpc/RpcGroup.js +1 -1
  1063. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  1064. package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
  1065. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  1066. package/dist/unstable/rpc/RpcMessage.js +6 -6
  1067. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  1068. package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
  1069. package/dist/unstable/rpc/RpcMiddleware.js +1 -1
  1070. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  1071. package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
  1072. package/dist/unstable/rpc/RpcSchema.js +3 -3
  1073. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  1074. package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
  1075. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  1076. package/dist/unstable/rpc/RpcSerialization.js +175 -96
  1077. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  1078. package/dist/unstable/rpc/RpcServer.d.ts +13 -13
  1079. package/dist/unstable/rpc/RpcServer.js +17 -13
  1080. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  1081. package/dist/unstable/rpc/RpcTest.js.map +1 -1
  1082. package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
  1083. package/dist/unstable/rpc/RpcWorker.js +4 -4
  1084. package/dist/unstable/rpc/RpcWorker.js.map +1 -1
  1085. package/dist/unstable/rpc/Utils.js.map +1 -1
  1086. package/dist/unstable/rpc/index.js.map +1 -1
  1087. package/dist/unstable/schema/Model.d.ts +52 -50
  1088. package/dist/unstable/schema/Model.d.ts.map +1 -1
  1089. package/dist/unstable/schema/Model.js +35 -33
  1090. package/dist/unstable/schema/Model.js.map +1 -1
  1091. package/dist/unstable/schema/VariantSchema.d.ts +5 -5
  1092. package/dist/unstable/schema/VariantSchema.js +2 -2
  1093. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  1094. package/dist/unstable/schema/index.js.map +1 -1
  1095. package/dist/unstable/socket/Socket.d.ts +11 -3
  1096. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  1097. package/dist/unstable/socket/Socket.js +9 -4
  1098. package/dist/unstable/socket/Socket.js.map +1 -1
  1099. package/dist/unstable/socket/SocketServer.js.map +1 -1
  1100. package/dist/unstable/socket/index.js.map +1 -1
  1101. package/dist/unstable/sql/Migrator.js.map +1 -1
  1102. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  1103. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  1104. package/dist/unstable/sql/SqlClient.js +2 -2
  1105. package/dist/unstable/sql/SqlClient.js.map +1 -1
  1106. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  1107. package/dist/unstable/sql/SqlError.js.map +1 -1
  1108. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  1109. package/dist/unstable/sql/SqlModel.js +2 -2
  1110. package/dist/unstable/sql/SqlModel.js.map +1 -1
  1111. package/dist/unstable/sql/SqlResolver.d.ts +5 -5
  1112. package/dist/unstable/sql/SqlResolver.js +2 -2
  1113. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  1114. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  1115. package/dist/unstable/sql/SqlStream.js.map +1 -1
  1116. package/dist/unstable/sql/Statement.d.ts +6 -6
  1117. package/dist/unstable/sql/Statement.js +15 -15
  1118. package/dist/unstable/sql/Statement.js.map +1 -1
  1119. package/dist/unstable/sql/index.js.map +1 -1
  1120. package/dist/unstable/workers/Transferable.d.ts +1 -1
  1121. package/dist/unstable/workers/Transferable.js +1 -1
  1122. package/dist/unstable/workers/Transferable.js.map +1 -1
  1123. package/dist/unstable/workers/Worker.d.ts +2 -2
  1124. package/dist/unstable/workers/Worker.js +2 -2
  1125. package/dist/unstable/workers/Worker.js.map +1 -1
  1126. package/dist/unstable/workers/WorkerError.d.ts +7 -7
  1127. package/dist/unstable/workers/WorkerError.js +6 -6
  1128. package/dist/unstable/workers/WorkerError.js.map +1 -1
  1129. package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
  1130. package/dist/unstable/workers/WorkerRunner.js +1 -1
  1131. package/dist/unstable/workers/WorkerRunner.js.map +1 -1
  1132. package/dist/unstable/workers/index.js.map +1 -1
  1133. package/dist/unstable/workflow/Activity.d.ts +2 -2
  1134. package/dist/unstable/workflow/Activity.js +2 -2
  1135. package/dist/unstable/workflow/Activity.js.map +1 -1
  1136. package/dist/unstable/workflow/DurableClock.d.ts +1 -1
  1137. package/dist/unstable/workflow/DurableClock.js +1 -1
  1138. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  1139. package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
  1140. package/dist/unstable/workflow/DurableDeferred.js +5 -5
  1141. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  1142. package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
  1143. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  1144. package/dist/unstable/workflow/DurableQueue.js +22 -20
  1145. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  1146. package/dist/unstable/workflow/Workflow.d.ts +21 -21
  1147. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  1148. package/dist/unstable/workflow/Workflow.js +13 -14
  1149. package/dist/unstable/workflow/Workflow.js.map +1 -1
  1150. package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
  1151. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  1152. package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
  1153. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  1154. package/dist/unstable/workflow/WorkflowProxy.js +4 -2
  1155. package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
  1156. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  1157. package/dist/unstable/workflow/index.js.map +1 -1
  1158. package/dist/unstable/workflow/internal/crypto.js.map +1 -1
  1159. package/package.json +5 -6
  1160. package/src/Array.ts +982 -1045
  1161. package/src/BigDecimal.ts +433 -756
  1162. package/src/BigInt.ts +213 -269
  1163. package/src/Boolean.ts +146 -188
  1164. package/src/Cache.ts +409 -255
  1165. package/src/Cause.ts +167 -277
  1166. package/src/Channel.ts +891 -816
  1167. package/src/ChannelSchema.ts +1 -1
  1168. package/src/Chunk.ts +841 -1181
  1169. package/src/Clock.ts +181 -49
  1170. package/src/Combiner.ts +20 -33
  1171. package/src/Config.ts +615 -332
  1172. package/src/ConfigProvider.ts +214 -120
  1173. package/src/Console.ts +289 -39
  1174. package/src/Context.ts +319 -378
  1175. package/src/Cron.ts +68 -77
  1176. package/src/Crypto.ts +13 -15
  1177. package/src/Data.ts +60 -80
  1178. package/src/DateTime.ts +564 -660
  1179. package/src/Deferred.ts +253 -256
  1180. package/src/Duration.ts +216 -308
  1181. package/src/Effect.ts +2893 -3279
  1182. package/src/Encoding.ts +22 -40
  1183. package/src/Equal.ts +49 -39
  1184. package/src/Equivalence.ts +103 -105
  1185. package/src/ErrorReporter.ts +51 -27
  1186. package/src/ExecutionPlan.ts +13 -55
  1187. package/src/Exit.ts +116 -192
  1188. package/src/Fiber.ts +81 -148
  1189. package/src/FiberHandle.ts +152 -105
  1190. package/src/FiberMap.ts +225 -174
  1191. package/src/FiberSet.ts +124 -82
  1192. package/src/FileSystem.ts +155 -263
  1193. package/src/Filter.ts +61 -33
  1194. package/src/Formatter.ts +54 -56
  1195. package/src/Function.ts +76 -145
  1196. package/src/Graph.ts +416 -770
  1197. package/src/HKT.ts +12 -6
  1198. package/src/Hash.ts +52 -83
  1199. package/src/HashMap.ts +319 -411
  1200. package/src/HashRing.ts +1 -0
  1201. package/src/HashSet.ts +177 -284
  1202. package/src/Inspectable.ts +12 -12
  1203. package/src/Iterable.ts +620 -786
  1204. package/src/JsonPatch.ts +58 -112
  1205. package/src/JsonPointer.ts +8 -8
  1206. package/src/JsonSchema.ts +402 -244
  1207. package/src/Latch.ts +23 -35
  1208. package/src/Layer.ts +359 -260
  1209. package/src/LayerMap.ts +49 -29
  1210. package/src/LayerRef.ts +6 -2
  1211. package/src/LogLevel.ts +114 -214
  1212. package/src/Logger.ts +344 -697
  1213. package/src/ManagedRuntime.ts +7 -5
  1214. package/src/Match.ts +217 -252
  1215. package/src/Metric.ts +516 -1089
  1216. package/src/MutableHashMap.ts +218 -255
  1217. package/src/MutableHashSet.ts +84 -89
  1218. package/src/MutableList.ts +73 -370
  1219. package/src/MutableRef.ts +420 -243
  1220. package/src/Newtype.ts +21 -14
  1221. package/src/NonEmptyIterable.ts +7 -137
  1222. package/src/Number.ts +196 -233
  1223. package/src/Optic.ts +243 -383
  1224. package/src/Option.ts +447 -812
  1225. package/src/Order.ts +109 -109
  1226. package/src/Ordering.ts +20 -23
  1227. package/src/Path.ts +38 -41
  1228. package/src/Pipeable.ts +6 -5
  1229. package/src/PlatformError.ts +4 -4
  1230. package/src/Pool.ts +4 -2
  1231. package/src/Predicate.ts +200 -181
  1232. package/src/PrimaryKey.ts +7 -7
  1233. package/src/PubSub.ts +526 -552
  1234. package/src/Pull.ts +24 -18
  1235. package/src/Queue.ts +200 -159
  1236. package/src/Random.ts +49 -74
  1237. package/src/RcMap.ts +121 -63
  1238. package/src/RcRef.ts +24 -13
  1239. package/src/Record.ts +291 -488
  1240. package/src/Redactable.ts +10 -3
  1241. package/src/Redacted.ts +25 -25
  1242. package/src/Reducer.ts +8 -15
  1243. package/src/Ref.ts +221 -361
  1244. package/src/References.ts +102 -168
  1245. package/src/RegExp.ts +10 -14
  1246. package/src/Request.ts +31 -21
  1247. package/src/RequestResolver.ts +202 -91
  1248. package/src/Result.ts +312 -484
  1249. package/src/Runtime.ts +50 -75
  1250. package/src/Schedule.ts +308 -1734
  1251. package/src/Scheduler.ts +20 -7
  1252. package/src/Schema.ts +716 -745
  1253. package/src/SchemaAST.ts +466 -358
  1254. package/src/SchemaError.ts +7 -6
  1255. package/src/SchemaGetter.ts +242 -190
  1256. package/src/SchemaIssue.ts +89 -275
  1257. package/src/SchemaParser.ts +180 -93
  1258. package/src/SchemaRepresentation.ts +22 -40
  1259. package/src/SchemaTransformation.ts +129 -88
  1260. package/src/Scope.ts +123 -151
  1261. package/src/ScopedRef.ts +4 -4
  1262. package/src/Semaphore.ts +152 -51
  1263. package/src/Sink.ts +128 -113
  1264. package/src/Stdio.ts +1 -1
  1265. package/src/Stream.ts +2602 -3123
  1266. package/src/String.ts +275 -312
  1267. package/src/Struct.ts +109 -114
  1268. package/src/SubscriptionRef.ts +284 -252
  1269. package/src/Symbol.ts +3 -3
  1270. package/src/Terminal.ts +2 -2
  1271. package/src/Tracer.ts +102 -55
  1272. package/src/Trie.ts +287 -679
  1273. package/src/Tuple.ts +92 -127
  1274. package/src/TxChunk.ts +201 -121
  1275. package/src/TxDeferred.ts +62 -46
  1276. package/src/TxHashMap.ts +645 -799
  1277. package/src/TxHashSet.ts +443 -356
  1278. package/src/TxPriorityQueue.ts +130 -98
  1279. package/src/TxPubSub.ts +107 -80
  1280. package/src/TxQueue.ts +214 -183
  1281. package/src/TxReentrantLock.ts +97 -66
  1282. package/src/TxRef.ts +51 -32
  1283. package/src/TxSemaphore.ts +129 -95
  1284. package/src/TxSubscriptionRef.ts +97 -70
  1285. package/src/Types.ts +126 -67
  1286. package/src/Unify.ts +45 -65
  1287. package/src/Utils.ts +23 -16
  1288. package/src/internal/core.ts +2 -2
  1289. package/src/internal/dateTime.ts +6 -0
  1290. package/src/internal/effect.ts +93 -48
  1291. package/src/internal/persistence.ts +2 -0
  1292. package/src/internal/references.ts +3 -2
  1293. package/src/internal/schema/fromJsonSchemaDocument.ts +15 -13
  1294. package/src/internal/schema/fromRepresentation.ts +10 -16
  1295. package/src/internal/schema/parser.ts +22 -0
  1296. package/src/internal/schema/toJsonSchemaDocument.ts +60 -6
  1297. package/src/internal/schema/toRepresentation.ts +104 -119
  1298. package/src/internal/trie.ts +10 -11
  1299. package/src/testing/FastCheck.ts +8 -7
  1300. package/src/testing/TestClock.ts +72 -30
  1301. package/src/testing/TestConsole.ts +32 -31
  1302. package/src/testing/TestSchema.ts +29 -29
  1303. package/src/unstable/ai/AiError.ts +95 -118
  1304. package/src/unstable/ai/AnthropicStructuredOutput.ts +1 -1
  1305. package/src/unstable/ai/Chat.ts +132 -97
  1306. package/src/unstable/ai/IdGenerator.ts +32 -28
  1307. package/src/unstable/ai/LanguageModel.ts +107 -67
  1308. package/src/unstable/ai/McpProtocol.ts +48 -0
  1309. package/src/unstable/ai/McpSchema.ts +60 -50
  1310. package/src/unstable/ai/McpServer.ts +930 -304
  1311. package/src/unstable/ai/Model.ts +9 -20
  1312. package/src/unstable/ai/OpenAiStructuredOutput.ts +1 -1
  1313. package/src/unstable/ai/Prompt.ts +145 -43
  1314. package/src/unstable/ai/Response.ts +28 -14
  1315. package/src/unstable/ai/Telemetry.ts +46 -13
  1316. package/src/unstable/ai/Tokenizer.ts +14 -3
  1317. package/src/unstable/ai/Tool.ts +59 -44
  1318. package/src/unstable/ai/Toolkit.ts +26 -8
  1319. package/src/unstable/ai/index.ts +5 -0
  1320. package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
  1321. package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
  1322. package/src/unstable/ai/internal/structured-output.ts +13 -18
  1323. package/src/unstable/cli/Argument.ts +273 -69
  1324. package/src/unstable/cli/CliError.ts +69 -76
  1325. package/src/unstable/cli/CliOutput.ts +44 -58
  1326. package/src/unstable/cli/Command.ts +705 -107
  1327. package/src/unstable/cli/Flag.ts +418 -138
  1328. package/src/unstable/cli/GlobalFlag.ts +1 -1
  1329. package/src/unstable/cli/HelpDoc.ts +12 -4
  1330. package/src/unstable/cli/Param.ts +292 -78
  1331. package/src/unstable/cli/Primitive.ts +370 -149
  1332. package/src/unstable/cli/Prompt.ts +28 -14
  1333. package/src/unstable/cli/internal/lexer.ts +8 -2
  1334. package/src/unstable/cli/internal/parser.ts +2 -2
  1335. package/src/unstable/cluster/ClusterSchema.ts +8 -8
  1336. package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -1
  1337. package/src/unstable/cluster/Entity.ts +15 -16
  1338. package/src/unstable/cluster/EntityProxy.ts +4 -2
  1339. package/src/unstable/cluster/EntityResource.ts +2 -2
  1340. package/src/unstable/cluster/Envelope.ts +3 -3
  1341. package/src/unstable/cluster/HttpRunner.ts +6 -4
  1342. package/src/unstable/cluster/Message.ts +9 -9
  1343. package/src/unstable/cluster/MessageStorage.ts +15 -15
  1344. package/src/unstable/cluster/Reply.ts +4 -6
  1345. package/src/unstable/cluster/RunnerHealth.ts +1 -1
  1346. package/src/unstable/cluster/RunnerServer.ts +41 -8
  1347. package/src/unstable/cluster/RunnerStorage.ts +2 -2
  1348. package/src/unstable/cluster/Runners.ts +23 -12
  1349. package/src/unstable/cluster/Sharding.ts +7 -8
  1350. package/src/unstable/cluster/ShardingConfig.ts +3 -3
  1351. package/src/unstable/cluster/SingletonAddress.ts +1 -1
  1352. package/src/unstable/cluster/Snowflake.ts +8 -8
  1353. package/src/unstable/cluster/SqlMessageStorage.ts +1 -1
  1354. package/src/unstable/cluster/SqlRunnerStorage.ts +21 -5
  1355. package/src/unstable/cluster/internal/entityManager.ts +11 -15
  1356. package/src/unstable/encoding/Msgpack.ts +6 -8
  1357. package/src/unstable/encoding/Sse.ts +98 -16
  1358. package/src/unstable/eventlog/Event.ts +20 -20
  1359. package/src/unstable/eventlog/EventGroup.ts +4 -4
  1360. package/src/unstable/eventlog/EventJournal.ts +15 -15
  1361. package/src/unstable/eventlog/EventLog.ts +3 -3
  1362. package/src/unstable/eventlog/EventLogEncryption.ts +1 -1
  1363. package/src/unstable/eventlog/EventLogMessage.ts +2 -2
  1364. package/src/unstable/eventlog/EventLogRemote.ts +1 -1
  1365. package/src/unstable/eventlog/EventLogServer.ts +41 -7
  1366. package/src/unstable/eventlog/EventLogServerEncrypted.ts +13 -5
  1367. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +14 -6
  1368. package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
  1369. package/src/unstable/http/Cookies.ts +35 -21
  1370. package/src/unstable/http/Etag.ts +1 -1
  1371. package/src/unstable/http/FetchHttpClient.ts +3 -1
  1372. package/src/unstable/http/Headers.ts +2 -2
  1373. package/src/unstable/http/HttpBody.ts +20 -5
  1374. package/src/unstable/http/HttpClient.ts +83 -55
  1375. package/src/unstable/http/HttpClientRequest.ts +2 -0
  1376. package/src/unstable/http/HttpClientResponse.ts +4 -4
  1377. package/src/unstable/http/HttpEffect.ts +8 -8
  1378. package/src/unstable/http/HttpMethod.ts +6 -9
  1379. package/src/unstable/http/HttpMiddleware.ts +202 -39
  1380. package/src/unstable/http/HttpPlatform.ts +95 -0
  1381. package/src/unstable/http/HttpRouter.ts +102 -98
  1382. package/src/unstable/http/HttpServer.ts +13 -13
  1383. package/src/unstable/http/HttpServerError.ts +2 -2
  1384. package/src/unstable/http/HttpServerRequest.ts +4 -4
  1385. package/src/unstable/http/HttpServerResponse.ts +30 -0
  1386. package/src/unstable/http/HttpStaticServer.ts +35 -7
  1387. package/src/unstable/http/Multipart.ts +6 -6
  1388. package/src/unstable/http/Url.ts +33 -63
  1389. package/src/unstable/http/UrlParams.ts +10 -18
  1390. package/src/unstable/http/internal/compression.ts +196 -0
  1391. package/src/unstable/httpapi/HttpApiBuilder.ts +10 -9
  1392. package/src/unstable/httpapi/HttpApiClient.ts +14 -14
  1393. package/src/unstable/httpapi/HttpApiEndpoint.ts +42 -42
  1394. package/src/unstable/httpapi/HttpApiError.ts +13 -13
  1395. package/src/unstable/httpapi/HttpApiGroup.ts +15 -15
  1396. package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
  1397. package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
  1398. package/src/unstable/httpapi/HttpApiSchema.ts +6 -6
  1399. package/src/unstable/httpapi/OpenApi.ts +13 -13
  1400. package/src/unstable/observability/OtlpExporter.ts +31 -19
  1401. package/src/unstable/observability/OtlpMetrics.ts +4 -1
  1402. package/src/unstable/observability/OtlpResource.ts +26 -17
  1403. package/src/unstable/observability/PrometheusMetrics.ts +13 -4
  1404. package/src/unstable/observability/internal/otlpEnv.ts +1 -1
  1405. package/src/unstable/observability/internal/protobuf.ts +3 -0
  1406. package/src/unstable/persistence/KeyValueStore.ts +72 -49
  1407. package/src/unstable/persistence/Persistable.ts +8 -8
  1408. package/src/unstable/persistence/PersistedQueue.ts +6 -6
  1409. package/src/unstable/persistence/Persistence.ts +126 -19
  1410. package/src/unstable/persistence/RateLimiter.ts +26 -15
  1411. package/src/unstable/persistence/Redis.ts +2 -2
  1412. package/src/unstable/process/ChildProcess.ts +64 -21
  1413. package/src/unstable/process/ChildProcessSpawner.ts +21 -10
  1414. package/src/unstable/reactivity/AsyncResult.ts +12 -13
  1415. package/src/unstable/reactivity/Atom.ts +28 -25
  1416. package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
  1417. package/src/unstable/reactivity/AtomRegistry.ts +24 -3
  1418. package/src/unstable/reactivity/AtomRpc.ts +5 -4
  1419. package/src/unstable/reactivity/Hydration.ts +1 -1
  1420. package/src/unstable/rpc/Rpc.ts +35 -33
  1421. package/src/unstable/rpc/RpcClient.ts +16 -15
  1422. package/src/unstable/rpc/RpcGroup.ts +8 -8
  1423. package/src/unstable/rpc/RpcMessage.ts +31 -30
  1424. package/src/unstable/rpc/RpcMiddleware.ts +10 -10
  1425. package/src/unstable/rpc/RpcSchema.ts +4 -4
  1426. package/src/unstable/rpc/RpcSerialization.ts +167 -68
  1427. package/src/unstable/rpc/RpcServer.ts +18 -15
  1428. package/src/unstable/rpc/RpcWorker.ts +5 -5
  1429. package/src/unstable/schema/Model.ts +52 -50
  1430. package/src/unstable/schema/VariantSchema.ts +5 -5
  1431. package/src/unstable/socket/Socket.ts +17 -4
  1432. package/src/unstable/sql/SqlClient.ts +5 -6
  1433. package/src/unstable/sql/SqlModel.ts +2 -2
  1434. package/src/unstable/sql/SqlResolver.ts +5 -5
  1435. package/src/unstable/sql/Statement.ts +24 -23
  1436. package/src/unstable/workers/Transferable.ts +1 -1
  1437. package/src/unstable/workers/Worker.ts +2 -2
  1438. package/src/unstable/workers/WorkerError.ts +7 -7
  1439. package/src/unstable/workers/WorkerRunner.ts +1 -1
  1440. package/src/unstable/workflow/Activity.ts +2 -2
  1441. package/src/unstable/workflow/DurableClock.ts +1 -1
  1442. package/src/unstable/workflow/DurableDeferred.ts +10 -10
  1443. package/src/unstable/workflow/DurableQueue.ts +22 -20
  1444. package/src/unstable/workflow/Workflow.ts +23 -23
  1445. package/src/unstable/workflow/WorkflowEngine.ts +1 -1
  1446. package/src/unstable/workflow/WorkflowProxy.ts +4 -2
  1447. package/dist/internal/version.d.ts +0 -3
  1448. package/dist/internal/version.d.ts.map +0 -1
  1449. package/dist/internal/version.js +0 -2
  1450. package/dist/internal/version.js.map +0 -1
  1451. package/src/internal/version.ts +0 -2
package/src/Context.ts CHANGED
@@ -81,7 +81,7 @@ export interface Key<out Identifier, out Shape> extends Effect<Shape, never, Ide
81
81
  *
82
82
  * **Example** (Defining a service key)
83
83
  *
84
- * ```ts
84
+ * ```ts import.meta.vitest
85
85
  * import { Context } from "effect"
86
86
  *
87
87
  * // Define an identifier for a database service
@@ -91,9 +91,10 @@ export interface Key<out Identifier, out Shape> extends Effect<Shape, never, Ide
91
91
  *
92
92
  * // The key can be used to store and retrieve services
93
93
  * const context = Context.make(Database, { query: (sql) => `Result: ${sql}` })
94
+ * Context.get(context, Database).query("SELECT 1") // => "Result: SELECT 1"
94
95
  * ```
95
96
  *
96
- * @category models
97
+ * @category services
97
98
  * @since 4.0.0
98
99
  */
99
100
  export interface Service<in out Identifier, in out Shape> extends Key<Identifier, Shape> {
@@ -118,7 +119,7 @@ export interface Service<in out Identifier, in out Shape> extends Key<Identifier
118
119
  *
119
120
  * @see {@link Service} for creating function-style keys or class-style service keys
120
121
  *
121
- * @category models
122
+ * @category services
122
123
  * @since 4.0.0
123
124
  */
124
125
  export interface ServiceClass<in out Self, in out Identifier extends string, in out Shape>
@@ -139,7 +140,7 @@ export declare namespace ServiceClass {
139
140
  * Runtime and type-level metadata carried by a class-style service key,
140
141
  * including its service type identifier, string key, and service shape.
141
142
  *
142
- * @category models
143
+ * @category services
143
144
  * @since 4.0.0
144
145
  */
145
146
  export interface Shape<Identifier extends string, Service> {
@@ -172,7 +173,7 @@ export declare namespace ServiceClass {
172
173
  *
173
174
  * **Example** (Creating service keys)
174
175
  *
175
- * ```ts
176
+ * ```ts import.meta.vitest
176
177
  * import { Context } from "effect"
177
178
  *
178
179
  * // Create a simple service
@@ -190,11 +191,13 @@ export declare namespace ServiceClass {
190
191
  * query: (sql) => `Result: ${sql}`
191
192
  * })
192
193
  * const config = Context.make(Config, { port: 8080 })
194
+ * Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
195
+ * Context.get(config, Config).port // => 8080
193
196
  * ```
194
197
  *
195
198
  * @see {@link Reference} for service keys with default values
196
199
  *
197
- * @category constructors
200
+ * @category services
198
201
  * @since 4.0.0
199
202
  */
200
203
  export const Service: {
@@ -221,7 +224,7 @@ export const Service: {
221
224
  *
222
225
  * **Example** (Creating service keys)
223
226
  *
224
- * ```ts
227
+ * ```ts import.meta.vitest
225
228
  * import { Context } from "effect"
226
229
  *
227
230
  * // Create a simple service
@@ -239,14 +242,22 @@ export const Service: {
239
242
  * query: (sql) => `Result: ${sql}`
240
243
  * })
241
244
  * const config = Context.make(Config, { port: 8080 })
245
+ * Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
246
+ * Context.get(config, Config).port // => 8080
242
247
  * ```
243
248
  *
244
249
  * @see {@link Reference} for service keys with default values
245
250
  *
246
- * @category constructors
251
+ * @category services
247
252
  * @since 4.0.0
248
253
  */
249
- <Identifier, Shape = Identifier>(key: string): Service<Identifier, Shape>
254
+ <Identifier, Shape = Identifier>(
255
+ key: string,
256
+ options?: {
257
+ /** @internal */
258
+ readonly fiberCached?: boolean | undefined
259
+ } | undefined
260
+ ): Service<Identifier, Shape>
250
261
  /**
251
262
  * Creates a `Context` service key.
252
263
  *
@@ -270,7 +281,7 @@ export const Service: {
270
281
  *
271
282
  * **Example** (Creating service keys)
272
283
  *
273
- * ```ts
284
+ * ```ts import.meta.vitest
274
285
  * import { Context } from "effect"
275
286
  *
276
287
  * // Create a simple service
@@ -288,11 +299,13 @@ export const Service: {
288
299
  * query: (sql) => `Result: ${sql}`
289
300
  * })
290
301
  * const config = Context.make(Config, { port: 8080 })
302
+ * Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
303
+ * Context.get(config, Config).port // => 8080
291
304
  * ```
292
305
  *
293
306
  * @see {@link Reference} for service keys with default values
294
307
  *
295
- * @category constructors
308
+ * @category services
296
309
  * @since 4.0.0
297
310
  */
298
311
  <Self, Shape>(): <
@@ -303,7 +316,9 @@ export const Service: {
303
316
  >(
304
317
  id: Identifier,
305
318
  options?: {
306
- readonly make: ((...args: Args) => Effect<Shape, E, R>) | Effect<Shape, E, R> | undefined
319
+ readonly make?: ((...args: Args) => Effect<Shape, E, R>) | Effect<Shape, E, R> | undefined
320
+ /** @internal */
321
+ readonly fiberCached?: boolean | undefined
307
322
  } | undefined
308
323
  ) =>
309
324
  & ServiceClass<Self, Identifier, Shape>
@@ -332,7 +347,7 @@ export const Service: {
332
347
  *
333
348
  * **Example** (Creating service keys)
334
349
  *
335
- * ```ts
350
+ * ```ts import.meta.vitest
336
351
  * import { Context } from "effect"
337
352
  *
338
353
  * // Create a simple service
@@ -350,11 +365,13 @@ export const Service: {
350
365
  * query: (sql) => `Result: ${sql}`
351
366
  * })
352
367
  * const config = Context.make(Config, { port: 8080 })
368
+ * Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
369
+ * Context.get(config, Config).port // => 8080
353
370
  * ```
354
371
  *
355
372
  * @see {@link Reference} for service keys with default values
356
373
  *
357
- * @category constructors
374
+ * @category services
358
375
  * @since 4.0.0
359
376
  */
360
377
  <Self>(): <
@@ -364,6 +381,8 @@ export const Service: {
364
381
  id: Identifier,
365
382
  options: {
366
383
  readonly make: Make
384
+ /** @internal */
385
+ readonly fiberCached?: boolean | undefined
367
386
  }
368
387
  ) =>
369
388
  & ServiceClass<
@@ -388,23 +407,25 @@ export const Service: {
388
407
  return err.stack
389
408
  }
390
409
  })
391
- if (arguments.length > 0) {
392
- self.key = arguments[0]
393
- if (arguments[1]?.defaultValue) {
394
- self[ReferenceTypeId] = ReferenceTypeId
395
- self.defaultValue = arguments[1].defaultValue
396
- }
397
- return self
398
- }
399
- return function(key: string, options?: {
410
+ const init = (key: string, options?: {
411
+ readonly defaultValue?: any
400
412
  readonly make?: any
401
- }) {
413
+ readonly fiberCached?: boolean
414
+ }) => {
402
415
  self.key = key
416
+ if (options?.defaultValue) {
417
+ self[ReferenceTypeId] = ReferenceTypeId
418
+ self.defaultValue = options.defaultValue
419
+ }
403
420
  if (options?.make) {
404
421
  ;(self as any).make = options.make
405
422
  }
423
+ if (options?.fiberCached) {
424
+ cacheKeys.add(key)
425
+ }
406
426
  return self
407
427
  }
428
+ return arguments.length > 0 ? init(arguments[0], arguments[1]) : init
408
429
  } as any
409
430
 
410
431
  const ServiceProto: any = {
@@ -439,6 +460,8 @@ const ServiceProto: any = {
439
460
  }
440
461
  }
441
462
 
463
+ const cacheKeys = new Set<string>()
464
+
442
465
  const ReferenceTypeId = "~effect/Context/Reference" as const
443
466
 
444
467
  /**
@@ -452,21 +475,24 @@ const ReferenceTypeId = "~effect/Context/Reference" as const
452
475
  *
453
476
  * **Example** (Defining a reference with a default value)
454
477
  *
455
- * ```ts
478
+ * ```ts import.meta.vitest
456
479
  * import { Context } from "effect"
457
480
  *
458
481
  * // Define a reference with a default value
482
+ * const messages: Array<string> = []
459
483
  * const LoggerRef: Context.Reference<{ log: (msg: string) => void }> =
460
484
  * Context.Reference("Logger", {
461
- * defaultValue: () => ({ log: (msg: string) => console.log(msg) })
485
+ * defaultValue: () => ({ log: (msg) => { messages.push(msg) } })
462
486
  * })
463
487
  *
464
488
  * // The reference can be used without explicit provision
465
489
  * const context = Context.empty()
466
490
  * const logger = Context.get(context, LoggerRef) // Uses default value
491
+ * logger.log("default logger")
492
+ * messages // => ["default logger"]
467
493
  * ```
468
494
  *
469
- * @category models
495
+ * @category services
470
496
  * @since 3.11.0
471
497
  */
472
498
  export interface Reference<in out Shape> extends Service<never, Shape> {
@@ -481,7 +507,7 @@ export interface Reference<in out Shape> extends Service<never, Shape> {
481
507
  *
482
508
  * **Example** (Extracting service types)
483
509
  *
484
- * ```ts
510
+ * ```ts import.meta.vitest
485
511
  * import { Context } from "effect"
486
512
  *
487
513
  * const Database = Context.Service<{
@@ -493,6 +519,8 @@ export interface Reference<in out Shape> extends Service<never, Shape> {
493
519
  *
494
520
  * // Extract identifier type from a key
495
521
  * type DatabaseId = Context.Service.Identifier<typeof Database>
522
+ *
523
+ * Database.key // => "Database"
496
524
  * ```
497
525
  *
498
526
  * @since 2.0.0
@@ -504,7 +532,7 @@ export declare namespace Service {
504
532
  *
505
533
  * **Example** (Typing any service key)
506
534
  *
507
- * ```ts
535
+ * ```ts import.meta.vitest
508
536
  * import { Context } from "effect"
509
537
  *
510
538
  * // Any represents any possible service type
@@ -512,9 +540,10 @@ export declare namespace Service {
512
540
  * Context.Service<{ log: (msg: string) => void }>("Logger"),
513
541
  * Context.Service<{ query: (sql: string) => string }>("Database")
514
542
  * ]
543
+ * services.map((service) => service.key) // => ["Logger", "Database"]
515
544
  * ```
516
545
  *
517
- * @category models
546
+ * @category utility types
518
547
  * @since 4.0.0
519
548
  */
520
549
  export type Any = Key<never, any> | Key<any, any>
@@ -525,7 +554,7 @@ export declare namespace Service {
525
554
  *
526
555
  * **Example** (Extracting a service shape)
527
556
  *
528
- * ```ts
557
+ * ```ts import.meta.vitest
529
558
  * import { Context } from "effect"
530
559
  *
531
560
  * const Database = Context.Service<{ query: (sql: string) => string }>(
@@ -535,9 +564,10 @@ export declare namespace Service {
535
564
  * // Extract the service shape from the service
536
565
  * type DatabaseService = Context.Service.Shape<typeof Database>
537
566
  * // DatabaseService is { query: (sql: string) => string }
567
+ * Database.key // => "Database"
538
568
  * ```
539
569
  *
540
- * @category models
570
+ * @category utility types
541
571
  * @since 4.0.0
542
572
  */
543
573
  export type Shape<T> = T extends Key<infer _I, infer S> ? S : never
@@ -548,7 +578,7 @@ export declare namespace Service {
548
578
  *
549
579
  * **Example** (Extracting a service identifier)
550
580
  *
551
- * ```ts
581
+ * ```ts import.meta.vitest
552
582
  * import { Context } from "effect"
553
583
  *
554
584
  * const Database = Context.Service<{ query: (sql: string) => string }>(
@@ -558,9 +588,10 @@ export declare namespace Service {
558
588
  * // Extract the identifier type from a key
559
589
  * type DatabaseId = Context.Service.Identifier<typeof Database>
560
590
  * // DatabaseId is the identifier type
591
+ * Database.key // => "Database"
561
592
  * ```
562
593
  *
563
- * @category models
594
+ * @category utility types
564
595
  * @since 2.0.0
565
596
  */
566
597
  export type Identifier<T> = T extends Key<infer I, infer _S> ? I : never
@@ -579,7 +610,7 @@ const TypeId = "~effect/Context" as const
579
610
  *
580
611
  * **Example** (Creating a context with multiple services)
581
612
  *
582
- * ```ts
613
+ * ```ts import.meta.vitest
583
614
  * import { Context } from "effect"
584
615
  *
585
616
  * // Create a context with multiple services
@@ -588,10 +619,9 @@ const TypeId = "~effect/Context" as const
588
619
  * "Database"
589
620
  * )
590
621
  *
591
- * const context = Context.make(Logger, {
592
- * log: (msg: string) => console.log(msg)
593
- * })
622
+ * const context = Context.make(Logger, { log: (_msg: string) => {} })
594
623
  * .pipe(Context.add(Database, { query: (sql) => `Result: ${sql}` }))
624
+ * Context.get(context, Database).query("SELECT 1") // => "Result: SELECT 1"
595
625
  * ```
596
626
  *
597
627
  * @category models
@@ -602,7 +632,81 @@ export interface Context<in Services> extends Equal.Equal, Pipeable, Inspectable
602
632
  readonly _Services: Types.Contravariant<Services>
603
633
  }
604
634
  readonly mapUnsafe: ReadonlyMap<string, any>
605
- mutable: boolean
635
+ }
636
+
637
+ interface ContextImpl<in Services> extends Context<Services> {
638
+ cacheRoot: ContextImpl<any> | undefined
639
+ base: ReadonlyMap<string, any>
640
+ baseHits: number
641
+ overlay: Overlay | undefined
642
+ depth: number
643
+ _flat: ReadonlyMap<string, any> | undefined
644
+ }
645
+
646
+ interface Overlay {
647
+ readonly key: string
648
+ readonly value: unknown
649
+ readonly parent: Overlay | undefined
650
+ }
651
+
652
+ const MaxDepth = 8
653
+ const FlattenAfterBaseHits = 8
654
+
655
+ const makeImpl = <Services>(
656
+ cacheRoot: ContextImpl<any> | undefined,
657
+ base: ReadonlyMap<string, any>,
658
+ overlay: Overlay | undefined,
659
+ depth: number
660
+ ): ContextImpl<Services> => {
661
+ const self: ContextImpl<Services> = Object.create(Proto)
662
+ self.cacheRoot = cacheRoot ?? self
663
+ self.base = base
664
+ self.overlay = overlay
665
+ self.depth = depth
666
+ self._flat = undefined
667
+ self.baseHits = 0
668
+ return self
669
+ }
670
+
671
+ const applyOverlays = (map: Map<string, any>, overlay: Overlay | undefined): void => {
672
+ if (!overlay) return
673
+ applyOverlays(map, overlay.parent)
674
+ map.set(overlay.key, overlay.value)
675
+ }
676
+
677
+ const flatten = (self: ContextImpl<any>): ReadonlyMap<string, any> => {
678
+ if (self._flat) return self._flat
679
+ if (!self.overlay) return self._flat = self.base
680
+ const map = new Map(self.base)
681
+ applyOverlays(map, self.overlay)
682
+ return self._flat = map
683
+ }
684
+
685
+ const withFlat = <B>(self: Context<any>, f: (map: Map<string, any>) => void): Context<B> => {
686
+ const map = new Map(self.mapUnsafe)
687
+ f(map)
688
+ return makeUnsafe(map)
689
+ }
690
+
691
+ // A private symbol so user code cannot forge a value that reads as absent
692
+ const notFound = Symbol()
693
+
694
+ const lookup = (self: Context<any>, key: string): unknown => {
695
+ const impl = self as ContextImpl<any>
696
+ for (let overlay = impl.overlay; overlay; overlay = overlay.parent) {
697
+ if (overlay.key === key) return overlay.value
698
+ }
699
+ const value = impl.base.get(key)
700
+ // Misses must not advance the counter: reference-default lookups miss the
701
+ // base on every fiber cache refresh, which would flatten every short-lived
702
+ // request context and reintroduce the O(services) per-request cost
703
+ if (value === undefined && !impl.base.has(key)) return notFound
704
+ if (impl.overlay && ++impl.baseHits >= FlattenAfterBaseHits) {
705
+ impl.base = flatten(impl)
706
+ impl.overlay = undefined
707
+ impl.depth = 0
708
+ }
709
+ return value
606
710
  }
607
711
 
608
712
  /**
@@ -615,38 +719,41 @@ export interface Context<in Services> extends Equal.Equal, Pipeable, Inspectable
615
719
  *
616
720
  * **Gotchas**
617
721
  *
618
- * This is unsafe because later mutation of the provided map can affect the
619
- * created `Context`. Prefer `empty`, `make`, `add`, or `merge` for normal
620
- * Context construction.
722
+ * The provided map is retained without copying and must not be mutated after
723
+ * construction. Prefer `empty`, `make`, `add`, or `merge` for normal Context
724
+ * construction.
621
725
  *
622
726
  * **Example** (Creating a context from a map)
623
727
  *
624
- * ```ts
728
+ * ```ts import.meta.vitest
625
729
  * import { Context } from "effect"
626
730
  *
627
731
  * // Create a context from a Map (unsafe)
628
732
  * const map = new Map([
629
- * ["Logger", { log: (msg: string) => console.log(msg) }]
733
+ * ["Logger", { log: (_msg: string) => {} }]
630
734
  * ])
631
735
  *
632
736
  * const context = Context.makeUnsafe(map)
737
+ * context.mapUnsafe.size // => 1
633
738
  * ```
634
739
  *
635
740
  * @category constructors
636
741
  * @since 4.0.0
637
742
  */
638
- export const makeUnsafe = <Services = never>(mapUnsafe: ReadonlyMap<string, any>): Context<Services> => {
639
- const self = Object.create(Proto)
640
- self.mapUnsafe = mapUnsafe
641
- self.mutable = false
642
- return self
643
- }
743
+ export const makeUnsafe = <Services = never>(mapUnsafe: ReadonlyMap<string, any>): Context<Services> =>
744
+ makeImpl(undefined, mapUnsafe, undefined, 0)
644
745
 
645
- const Proto: Omit<Context<never>, "mapUnsafe" | "mutable"> = {
746
+ const Proto: Omit<
747
+ ContextImpl<never>,
748
+ "cacheRoot" | "base" | "overlay" | "depth" | "_flat" | "baseHits"
749
+ > = {
646
750
  ...PipeInspectableProto,
647
751
  [TypeId]: {
648
752
  _Services: (_: never) => _
649
753
  },
754
+ get mapUnsafe() {
755
+ return flatten(this as any as ContextImpl<any>)
756
+ },
650
757
  toJSON(this: Context<never>) {
651
758
  return {
652
759
  _id: "Context",
@@ -654,17 +761,12 @@ const Proto: Omit<Context<never>, "mapUnsafe" | "mutable"> = {
654
761
  }
655
762
  },
656
763
  [Equal.symbol]<A>(this: Context<A>, that: unknown): boolean {
657
- if (
658
- !isContext(that)
659
- || this.mapUnsafe.size !== that.mapUnsafe.size
660
- ) return false
661
- for (const k of this.mapUnsafe.keys()) {
662
- if (
663
- !that.mapUnsafe.has(k) ||
664
- !Equal.equals(this.mapUnsafe.get(k), that.mapUnsafe.get(k))
665
- ) {
666
- return false
667
- }
764
+ if (!isContext(that)) return false
765
+ const self = this.mapUnsafe
766
+ const other = that.mapUnsafe
767
+ if (self.size !== other.size) return false
768
+ for (const [key, value] of self) {
769
+ if (!other.has(key) || !Equal.equals(value, other.get(key))) return false
668
770
  }
669
771
  return true
670
772
  },
@@ -673,6 +775,12 @@ const Proto: Omit<Context<never>, "mapUnsafe" | "mutable"> = {
673
775
  }
674
776
  }
675
777
 
778
+ /** @internal */
779
+ export const hasSameCache = <Services, Services2>(
780
+ self: Context<Services>,
781
+ that: Context<Services2>
782
+ ): boolean => (self as ContextImpl<Services>).cacheRoot === (that as ContextImpl<Services2>).cacheRoot
783
+
676
784
  /**
677
785
  * Checks whether the provided argument is a `Context`.
678
786
  *
@@ -693,11 +801,9 @@ const Proto: Omit<Context<never>, "mapUnsafe" | "mutable"> = {
693
801
  *
694
802
  * **Example** (Checking for contexts)
695
803
  *
696
- * ```ts
804
+ * ```ts import.meta.vitest
697
805
  * import { Context } from "effect"
698
- * import * as assert from "node:assert"
699
- *
700
- * assert.strictEqual(Context.isContext(Context.empty()), true)
806
+ * Context.isContext(Context.empty()) // => true
701
807
  * ```
702
808
  *
703
809
  * @see {@link isKey} for checking service keys
@@ -713,11 +819,9 @@ export const isContext = (u: unknown): u is Context<never> => hasProperty(u, Typ
713
819
  *
714
820
  * **Example** (Checking for keys)
715
821
  *
716
- * ```ts
822
+ * ```ts import.meta.vitest
717
823
  * import { Context } from "effect"
718
- * import * as assert from "node:assert"
719
- *
720
- * assert.strictEqual(Context.isKey(Context.Service("Service")), true)
824
+ * Context.isKey(Context.Service("Service")) // => true
721
825
  * ```
722
826
  *
723
827
  * @category guards
@@ -730,33 +834,30 @@ export const isKey = (u: unknown): u is Key<any, any> => hasProperty(u, ServiceT
730
834
  *
731
835
  * **Example** (Checking for references)
732
836
  *
733
- * ```ts
837
+ * ```ts import.meta.vitest
734
838
  * import { Context } from "effect"
735
- * import * as assert from "node:assert"
736
839
  *
737
840
  * const LoggerRef = Context.Reference("Logger", {
738
- * defaultValue: () => ({ log: (msg: string) => console.log(msg) })
841
+ * defaultValue: () => ({ log: (_msg: string) => {} })
739
842
  * })
740
843
  *
741
- * assert.strictEqual(Context.isReference(LoggerRef), true)
742
- * assert.strictEqual(Context.isReference(Context.Service("Key")), false)
844
+ * Context.isReference(LoggerRef) // => true
845
+ * Context.isReference(Context.Service("Key")) // => false
743
846
  * ```
744
847
  *
745
848
  * @category guards
746
849
  * @since 3.11.0
747
850
  */
748
- export const isReference = (u: unknown): u is Reference<any> => hasProperty(u, ReferenceTypeId)
851
+ export const isReference = <I, S>(u: Key<I, S>): u is Reference<S> => !!(u as Reference<S>)[ReferenceTypeId]
749
852
 
750
853
  /**
751
854
  * Returns an empty `Context`.
752
855
  *
753
856
  * **Example** (Creating an empty context)
754
857
  *
755
- * ```ts
858
+ * ```ts import.meta.vitest
756
859
  * import { Context } from "effect"
757
- * import * as assert from "node:assert"
758
- *
759
- * assert.strictEqual(Context.isContext(Context.empty()), true)
860
+ * Context.empty().mapUnsafe.size // => 0
760
861
  * ```
761
862
  *
762
863
  * @category constructors
@@ -770,15 +871,14 @@ const emptyContext = makeUnsafe(new Map())
770
871
  *
771
872
  * **Example** (Creating a context with one service)
772
873
  *
773
- * ```ts
874
+ * ```ts import.meta.vitest
774
875
  * import { Context } from "effect"
775
- * import * as assert from "node:assert"
776
876
  *
777
877
  * const Port = Context.Service<{ PORT: number }>("Port")
778
878
  *
779
879
  * const context = Context.make(Port, { PORT: 8080 })
780
880
  *
781
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
881
+ * Context.get(context, Port).PORT // => 8080
782
882
  * ```
783
883
  *
784
884
  * @category constructors
@@ -803,9 +903,8 @@ export const make = <I, S>(
803
903
  *
804
904
  * **Example** (Adding a service to a context)
805
905
  *
806
- * ```ts
906
+ * ```ts import.meta.vitest
807
907
  * import { Context, pipe } from "effect"
808
- * import * as assert from "node:assert"
809
908
  *
810
909
  * const Port = Context.Service<{ PORT: number }>("Port")
811
910
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -817,13 +916,13 @@ export const make = <I, S>(
817
916
  * Context.add(Timeout, { TIMEOUT: 5000 })
818
917
  * )
819
918
  *
820
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
821
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
919
+ * const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
920
+ * values // => [8080, 5000]
822
921
  * ```
823
922
  *
824
923
  * @see {@link addOrOmit} for adding or removing a service from an `Option`
825
924
  *
826
- * @category adders
925
+ * @category combining
827
926
  * @since 2.0.0
828
927
  */
829
928
  export const add: {
@@ -841,9 +940,8 @@ export const add: {
841
940
  *
842
941
  * **Example** (Adding a service to a context)
843
942
  *
844
- * ```ts
943
+ * ```ts import.meta.vitest
845
944
  * import { Context, pipe } from "effect"
846
- * import * as assert from "node:assert"
847
945
  *
848
946
  * const Port = Context.Service<{ PORT: number }>("Port")
849
947
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -855,13 +953,13 @@ export const add: {
855
953
  * Context.add(Timeout, { TIMEOUT: 5000 })
856
954
  * )
857
955
  *
858
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
859
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
956
+ * const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
957
+ * values // => [8080, 5000]
860
958
  * ```
861
959
  *
862
960
  * @see {@link addOrOmit} for adding or removing a service from an `Option`
863
961
  *
864
- * @category adders
962
+ * @category combining
865
963
  * @since 2.0.0
866
964
  */
867
965
  <I, S>(key: Key<I, S>, service: Types.NoInfer<S>): <Services>(self: Context<Services>) => Context<Services | I>
@@ -879,9 +977,8 @@ export const add: {
879
977
  *
880
978
  * **Example** (Adding a service to a context)
881
979
  *
882
- * ```ts
980
+ * ```ts import.meta.vitest
883
981
  * import { Context, pipe } from "effect"
884
- * import * as assert from "node:assert"
885
982
  *
886
983
  * const Port = Context.Service<{ PORT: number }>("Port")
887
984
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -893,13 +990,13 @@ export const add: {
893
990
  * Context.add(Timeout, { TIMEOUT: 5000 })
894
991
  * )
895
992
  *
896
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
897
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
993
+ * const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
994
+ * values // => [8080, 5000]
898
995
  * ```
899
996
  *
900
997
  * @see {@link addOrOmit} for adding or removing a service from an `Option`
901
998
  *
902
- * @category adders
999
+ * @category combining
903
1000
  * @since 2.0.0
904
1001
  */
905
1002
  <Services, I, S>(self: Context<Services>, key: Key<I, S>, service: Types.NoInfer<S>): Context<Services | I>
@@ -907,10 +1004,24 @@ export const add: {
907
1004
  self: Context<Services>,
908
1005
  key: Key<I, S>,
909
1006
  service: Types.NoInfer<S>
910
- ): Context<Services | I> =>
911
- withMapUnsafe(self, (map) => {
1007
+ ): Context<Services | I> => {
1008
+ const impl = self as ContextImpl<Services>
1009
+ const cacheRoot = cacheKeys.has(key.key) ? undefined : impl.cacheRoot
1010
+ if (impl.depth >= MaxDepth) {
1011
+ // Rebase the overlay chain into a flat map, keeping the cacheRoot so a
1012
+ // rebase on an ordinary key does not invalidate fiber caches
1013
+ const map = new Map(impl.mapUnsafe)
912
1014
  map.set(key.key, service)
913
- }))
1015
+ return makeImpl(cacheRoot, map, undefined, 0)
1016
+ }
1017
+
1018
+ return makeImpl(
1019
+ cacheRoot,
1020
+ impl.base,
1021
+ { key: key.key, value: service, parent: impl.overlay },
1022
+ impl.depth + 1
1023
+ )
1024
+ })
914
1025
 
915
1026
  /**
916
1027
  * Adds or removes a service depending on an `Option`.
@@ -926,7 +1037,7 @@ export const add: {
926
1037
  *
927
1038
  * **Example** (Adding optional services)
928
1039
  *
929
- * ```ts
1040
+ * ```ts import.meta.vitest
930
1041
  * import { Context, Option } from "effect"
931
1042
  *
932
1043
  * const Port = Context.Service<{ PORT: number }>("Port")
@@ -938,11 +1049,13 @@ export const add: {
938
1049
  * const withoutPort = withPort.pipe(
939
1050
  * Context.addOrOmit(Port, Option.none())
940
1051
  * )
1052
+ * Context.getOption(withPort, Port) // => Option.some({ PORT: 8080 })
1053
+ * Context.getOption(withoutPort, Port) // => Option.none()
941
1054
  * ```
942
1055
  *
943
1056
  * @see {@link add} for always storing a service value
944
1057
  *
945
- * @category adders
1058
+ * @category combining
946
1059
  * @since 4.0.0
947
1060
  */
948
1061
  export const addOrOmit: {
@@ -960,7 +1073,7 @@ export const addOrOmit: {
960
1073
  *
961
1074
  * **Example** (Adding optional services)
962
1075
  *
963
- * ```ts
1076
+ * ```ts import.meta.vitest
964
1077
  * import { Context, Option } from "effect"
965
1078
  *
966
1079
  * const Port = Context.Service<{ PORT: number }>("Port")
@@ -972,11 +1085,13 @@ export const addOrOmit: {
972
1085
  * const withoutPort = withPort.pipe(
973
1086
  * Context.addOrOmit(Port, Option.none())
974
1087
  * )
1088
+ * Context.getOption(withPort, Port) // => Option.some({ PORT: 8080 })
1089
+ * Context.getOption(withoutPort, Port) // => Option.none()
975
1090
  * ```
976
1091
  *
977
1092
  * @see {@link add} for always storing a service value
978
1093
  *
979
- * @category adders
1094
+ * @category combining
980
1095
  * @since 4.0.0
981
1096
  */
982
1097
  <I, S>(key: Key<I, S>, service: Option.Option<Types.NoInfer<S>>): <Services>(self: Context<Services>) => Context<Services | I>
@@ -994,7 +1109,7 @@ export const addOrOmit: {
994
1109
  *
995
1110
  * **Example** (Adding optional services)
996
1111
  *
997
- * ```ts
1112
+ * ```ts import.meta.vitest
998
1113
  * import { Context, Option } from "effect"
999
1114
  *
1000
1115
  * const Port = Context.Service<{ PORT: number }>("Port")
@@ -1006,11 +1121,13 @@ export const addOrOmit: {
1006
1121
  * const withoutPort = withPort.pipe(
1007
1122
  * Context.addOrOmit(Port, Option.none())
1008
1123
  * )
1124
+ * Context.getOption(withPort, Port) // => Option.some({ PORT: 8080 })
1125
+ * Context.getOption(withoutPort, Port) // => Option.none()
1009
1126
  * ```
1010
1127
  *
1011
1128
  * @see {@link add} for always storing a service value
1012
1129
  *
1013
- * @category adders
1130
+ * @category combining
1014
1131
  * @since 4.0.0
1015
1132
  */
1016
1133
  <Services, I, S>(
@@ -1023,13 +1140,9 @@ export const addOrOmit: {
1023
1140
  key: Key<I, S>,
1024
1141
  service: Option.Option<Types.NoInfer<S>>
1025
1142
  ): Context<Services | I> =>
1026
- withMapUnsafe(self, (map) => {
1027
- if (service._tag === "None") {
1028
- map.delete(key.key)
1029
- } else {
1030
- map.set(key.key, service.value)
1031
- }
1032
- }))
1143
+ service._tag === "None"
1144
+ ? omit(key)(self) as any
1145
+ : add(self, key, service.value))
1033
1146
 
1034
1147
  /**
1035
1148
  * Gets the service for a key, or evaluates the fallback when a non-reference
@@ -1052,7 +1165,7 @@ export const addOrOmit: {
1052
1165
  *
1053
1166
  * **Example** (Falling back for missing services)
1054
1167
  *
1055
- * ```ts
1168
+ * ```ts import.meta.vitest
1056
1169
  * import { Context } from "effect"
1057
1170
  *
1058
1171
  * const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
@@ -1060,9 +1173,7 @@ export const addOrOmit: {
1060
1173
  * "Database"
1061
1174
  * )
1062
1175
  *
1063
- * const context = Context.make(Logger, {
1064
- * log: (msg: string) => console.log(msg)
1065
- * })
1176
+ * const context = Context.make(Logger, { log: (_msg: string) => {} })
1066
1177
  *
1067
1178
  * const logger = Context.getOrElse(context, Logger, () => ({ log: () => {} }))
1068
1179
  * const database = Context.getOrElse(
@@ -1071,8 +1182,8 @@ export const addOrOmit: {
1071
1182
  * () => ({ query: () => "fallback" })
1072
1183
  * )
1073
1184
  *
1074
- * console.log(logger === Context.get(context, Logger)) // true
1075
- * console.log(database.query("SELECT 1")) // "fallback"
1185
+ * logger === Context.get(context, Logger) // => true
1186
+ * database.query("SELECT 1") // => "fallback"
1076
1187
  * ```
1077
1188
  *
1078
1189
  * @see {@link getOption} for returning `Option.none` when a non-reference key is missing
@@ -1102,7 +1213,7 @@ export const getOrElse: {
1102
1213
  *
1103
1214
  * **Example** (Falling back for missing services)
1104
1215
  *
1105
- * ```ts
1216
+ * ```ts import.meta.vitest
1106
1217
  * import { Context } from "effect"
1107
1218
  *
1108
1219
  * const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
@@ -1110,9 +1221,7 @@ export const getOrElse: {
1110
1221
  * "Database"
1111
1222
  * )
1112
1223
  *
1113
- * const context = Context.make(Logger, {
1114
- * log: (msg: string) => console.log(msg)
1115
- * })
1224
+ * const context = Context.make(Logger, { log: (_msg: string) => {} })
1116
1225
  *
1117
1226
  * const logger = Context.getOrElse(context, Logger, () => ({ log: () => {} }))
1118
1227
  * const database = Context.getOrElse(
@@ -1121,8 +1230,8 @@ export const getOrElse: {
1121
1230
  * () => ({ query: () => "fallback" })
1122
1231
  * )
1123
1232
  *
1124
- * console.log(logger === Context.get(context, Logger)) // true
1125
- * console.log(database.query("SELECT 1")) // "fallback"
1233
+ * logger === Context.get(context, Logger) // => true
1234
+ * database.query("SELECT 1") // => "fallback"
1126
1235
  * ```
1127
1236
  *
1128
1237
  * @see {@link getOption} for returning `Option.none` when a non-reference key is missing
@@ -1152,7 +1261,7 @@ export const getOrElse: {
1152
1261
  *
1153
1262
  * **Example** (Falling back for missing services)
1154
1263
  *
1155
- * ```ts
1264
+ * ```ts import.meta.vitest
1156
1265
  * import { Context } from "effect"
1157
1266
  *
1158
1267
  * const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
@@ -1160,9 +1269,7 @@ export const getOrElse: {
1160
1269
  * "Database"
1161
1270
  * )
1162
1271
  *
1163
- * const context = Context.make(Logger, {
1164
- * log: (msg: string) => console.log(msg)
1165
- * })
1272
+ * const context = Context.make(Logger, { log: (_msg: string) => {} })
1166
1273
  *
1167
1274
  * const logger = Context.getOrElse(context, Logger, () => ({ log: () => {} }))
1168
1275
  * const database = Context.getOrElse(
@@ -1171,8 +1278,8 @@ export const getOrElse: {
1171
1278
  * () => ({ query: () => "fallback" })
1172
1279
  * )
1173
1280
  *
1174
- * console.log(logger === Context.get(context, Logger)) // true
1175
- * console.log(database.query("SELECT 1")) // "fallback"
1281
+ * logger === Context.get(context, Logger) // => true
1282
+ * database.query("SELECT 1") // => "fallback"
1176
1283
  * ```
1177
1284
  *
1178
1285
  * @see {@link getOption} for returning `Option.none` when a non-reference key is missing
@@ -1182,9 +1289,8 @@ export const getOrElse: {
1182
1289
  */
1183
1290
  <Services, S, I, B>(self: Context<Services>, key: Key<I, S>, orElse: LazyArg<B>): S | B
1184
1291
  } = dual(3, <Services, S, I, B>(self: Context<Services>, key: Key<I, S>, orElse: LazyArg<B>): S | B => {
1185
- if (self.mapUnsafe.has(key.key)) {
1186
- return self.mapUnsafe.get(key.key)! as any
1187
- }
1292
+ const value = lookup(self, key.key)
1293
+ if (value !== notFound) return value as any
1188
1294
  return isReference(key) ? getDefaultValue(key) : orElse()
1189
1295
  })
1190
1296
 
@@ -1250,9 +1356,15 @@ export const getOrUndefined: {
1250
1356
  <Services, S, I>(self: Context<Services>, key: Key<I, S>): S | undefined
1251
1357
  } = dual(
1252
1358
  2,
1253
- <Services, S, I>(self: Context<Services>, key: Key<I, S>): S | undefined => self.mapUnsafe.get(key.key)
1359
+ <Services, S, I>(self: Context<Services>, key: Key<I, S>): S | undefined => getOrUndefinedUnsafe(self, key.key)
1254
1360
  )
1255
1361
 
1362
+ /** @internal */
1363
+ export const getOrUndefinedUnsafe = <A, Services = never>(self: Context<Services>, key: string): A | undefined => {
1364
+ const value = lookup(self, key)
1365
+ return value === notFound ? undefined : value as A
1366
+ }
1367
+
1256
1368
  /**
1257
1369
  * Gets the service for a key, throwing if an absent non-reference key cannot be
1258
1370
  * resolved.
@@ -1270,17 +1382,16 @@ export const getOrUndefined: {
1270
1382
  *
1271
1383
  * **Example** (Getting services unsafely)
1272
1384
  *
1273
- * ```ts
1274
- * import { Context } from "effect"
1275
- * import * as assert from "node:assert"
1385
+ * ```ts import.meta.vitest
1386
+ * import { Context, Option } from "effect"
1276
1387
  *
1277
1388
  * const Port = Context.Service<{ PORT: number }>("Port")
1278
1389
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
1279
1390
  *
1280
1391
  * const context = Context.make(Port, { PORT: 8080 })
1281
1392
  *
1282
- * assert.deepStrictEqual(Context.getUnsafe(context, Port), { PORT: 8080 })
1283
- * assert.throws(() => Context.getUnsafe(context, Timeout))
1393
+ * Context.getUnsafe(context, Port).PORT // => 8080
1394
+ * Context.getOption(context, Timeout) // => Option.none()
1284
1395
  * ```
1285
1396
  *
1286
1397
  * @see {@link get} for type-checked service access
@@ -1307,17 +1418,16 @@ export const getUnsafe: {
1307
1418
  *
1308
1419
  * **Example** (Getting services unsafely)
1309
1420
  *
1310
- * ```ts
1311
- * import { Context } from "effect"
1312
- * import * as assert from "node:assert"
1421
+ * ```ts import.meta.vitest
1422
+ * import { Context, Option } from "effect"
1313
1423
  *
1314
1424
  * const Port = Context.Service<{ PORT: number }>("Port")
1315
1425
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
1316
1426
  *
1317
1427
  * const context = Context.make(Port, { PORT: 8080 })
1318
1428
  *
1319
- * assert.deepStrictEqual(Context.getUnsafe(context, Port), { PORT: 8080 })
1320
- * assert.throws(() => Context.getUnsafe(context, Timeout))
1429
+ * Context.getUnsafe(context, Port).PORT // => 8080
1430
+ * Context.getOption(context, Timeout) // => Option.none()
1321
1431
  * ```
1322
1432
  *
1323
1433
  * @see {@link get} for type-checked service access
@@ -1344,17 +1454,16 @@ export const getUnsafe: {
1344
1454
  *
1345
1455
  * **Example** (Getting services unsafely)
1346
1456
  *
1347
- * ```ts
1348
- * import { Context } from "effect"
1349
- * import * as assert from "node:assert"
1457
+ * ```ts import.meta.vitest
1458
+ * import { Context, Option } from "effect"
1350
1459
  *
1351
1460
  * const Port = Context.Service<{ PORT: number }>("Port")
1352
1461
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
1353
1462
  *
1354
1463
  * const context = Context.make(Port, { PORT: 8080 })
1355
1464
  *
1356
- * assert.deepStrictEqual(Context.getUnsafe(context, Port), { PORT: 8080 })
1357
- * assert.throws(() => Context.getUnsafe(context, Timeout))
1465
+ * Context.getUnsafe(context, Port).PORT // => 8080
1466
+ * Context.getOption(context, Timeout) // => Option.none()
1358
1467
  * ```
1359
1468
  *
1360
1469
  * @see {@link get} for type-checked service access
@@ -1367,11 +1476,12 @@ export const getUnsafe: {
1367
1476
  } = dual(
1368
1477
  2,
1369
1478
  <Services, I extends Services, S>(self: Context<Services>, service: Key<I, S>): S => {
1370
- if (!self.mapUnsafe.has(service.key)) {
1371
- if (ReferenceTypeId in service) return getDefaultValue(service as any)
1479
+ const value = lookup(self, service.key)
1480
+ if (value === notFound) {
1481
+ if (isReference(service)) return getDefaultValue(service as any)
1372
1482
  throw serviceNotFoundError(service)
1373
1483
  }
1374
- return self.mapUnsafe.get(service.key)! as any
1484
+ return value as any
1375
1485
  }
1376
1486
  )
1377
1487
 
@@ -1385,9 +1495,8 @@ export const getUnsafe: {
1385
1495
  *
1386
1496
  * **Example** (Getting a service from a context)
1387
1497
  *
1388
- * ```ts
1498
+ * ```ts import.meta.vitest
1389
1499
  * import { Context, pipe } from "effect"
1390
- * import * as assert from "node:assert"
1391
1500
  *
1392
1501
  * const Port = Context.Service<{ PORT: number }>("Port")
1393
1502
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1397,7 +1506,7 @@ export const getUnsafe: {
1397
1506
  * Context.add(Timeout, { TIMEOUT: 5000 })
1398
1507
  * )
1399
1508
  *
1400
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
1509
+ * Context.get(context, Timeout).TIMEOUT // => 5000
1401
1510
  * ```
1402
1511
  *
1403
1512
  * @see {@link getOption} for optional service access
@@ -1417,9 +1526,8 @@ export const get: {
1417
1526
  *
1418
1527
  * **Example** (Getting a service from a context)
1419
1528
  *
1420
- * ```ts
1529
+ * ```ts import.meta.vitest
1421
1530
  * import { Context, pipe } from "effect"
1422
- * import * as assert from "node:assert"
1423
1531
  *
1424
1532
  * const Port = Context.Service<{ PORT: number }>("Port")
1425
1533
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1429,7 +1537,7 @@ export const get: {
1429
1537
  * Context.add(Timeout, { TIMEOUT: 5000 })
1430
1538
  * )
1431
1539
  *
1432
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
1540
+ * Context.get(context, Timeout).TIMEOUT // => 5000
1433
1541
  * ```
1434
1542
  *
1435
1543
  * @see {@link getOption} for optional service access
@@ -1449,9 +1557,8 @@ export const get: {
1449
1557
  *
1450
1558
  * **Example** (Getting a service from a context)
1451
1559
  *
1452
- * ```ts
1560
+ * ```ts import.meta.vitest
1453
1561
  * import { Context, pipe } from "effect"
1454
- * import * as assert from "node:assert"
1455
1562
  *
1456
1563
  * const Port = Context.Service<{ PORT: number }>("Port")
1457
1564
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1461,7 +1568,7 @@ export const get: {
1461
1568
  * Context.add(Timeout, { TIMEOUT: 5000 })
1462
1569
  * )
1463
1570
  *
1464
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
1571
+ * Context.get(context, Timeout).TIMEOUT // => 5000
1465
1572
  * ```
1466
1573
  *
1467
1574
  * @see {@link getOption} for optional service access
@@ -1473,54 +1580,6 @@ export const get: {
1473
1580
  <Services, I extends Services, S>(self: Context<Services>, service: Key<I, S>): S
1474
1581
  } = getUnsafe
1475
1582
 
1476
- /**
1477
- * Gets the value for a `Context.Reference`, returning its cached default when
1478
- * the context does not contain an override.
1479
- *
1480
- * **When to use**
1481
- *
1482
- * Use when you need a `Context.Reference` value resolved from either a stored
1483
- * override or the reference's default value.
1484
- *
1485
- * **Details**
1486
- *
1487
- * Stored overrides take precedence. If no override is present, the reference's
1488
- * default value is computed lazily and cached on the reference itself.
1489
- *
1490
- * **Gotchas**
1491
- *
1492
- * Mutable default values can be shared across contexts unless an override is
1493
- * provided, because the default is cached on the `Context.Reference`.
1494
- *
1495
- * **Example** (Getting reference defaults unsafely)
1496
- *
1497
- * ```ts
1498
- * import { Context } from "effect"
1499
- *
1500
- * const LoggerRef = Context.Reference("Logger", {
1501
- * defaultValue: () => ({ log: (msg: string) => console.log(msg) })
1502
- * })
1503
- *
1504
- * const context = Context.empty()
1505
- * const logger = Context.getReferenceUnsafe(context, LoggerRef)
1506
- *
1507
- * console.log(typeof logger.log) // "function"
1508
- * ```
1509
- *
1510
- * @see {@link getUnsafe} for unsafe access with any service key
1511
- * @see {@link get} for type-checked reference-aware access
1512
- * @see {@link getOption} for optional access to non-reference keys
1513
- *
1514
- * @category unsafe
1515
- * @since 4.0.0
1516
- */
1517
- export const getReferenceUnsafe = <Services, S>(self: Context<Services>, service: Reference<S>): S => {
1518
- if (!self.mapUnsafe.has(service.key)) {
1519
- return getDefaultValue(service as any)
1520
- }
1521
- return self.mapUnsafe.get(service.key)! as any
1522
- }
1523
-
1524
1583
  const defaultValueCacheKey = "~effect/Context/defaultValue" as const
1525
1584
 
1526
1585
  const getDefaultValue = (ref: Reference<any>) => {
@@ -1567,20 +1626,16 @@ const serviceNotFoundError = (service: Key<any, any>) => {
1567
1626
  *
1568
1627
  * **Example** (Getting optional services)
1569
1628
  *
1570
- * ```ts
1629
+ * ```ts import.meta.vitest
1571
1630
  * import { Context, Option } from "effect"
1572
- * import * as assert from "node:assert"
1573
1631
  *
1574
1632
  * const Port = Context.Service<{ PORT: number }>("Port")
1575
1633
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
1576
1634
  *
1577
1635
  * const context = Context.make(Port, { PORT: 8080 })
1578
1636
  *
1579
- * assert.deepStrictEqual(
1580
- * Context.getOption(context, Port),
1581
- * Option.some({ PORT: 8080 })
1582
- * )
1583
- * assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
1637
+ * Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
1638
+ * Context.getOption(context, Timeout) // => Option.none()
1584
1639
  * ```
1585
1640
  *
1586
1641
  * @see {@link getOrElse} for returning a fallback value directly
@@ -1605,20 +1660,16 @@ export const getOption: {
1605
1660
  *
1606
1661
  * **Example** (Getting optional services)
1607
1662
  *
1608
- * ```ts
1663
+ * ```ts import.meta.vitest
1609
1664
  * import { Context, Option } from "effect"
1610
- * import * as assert from "node:assert"
1611
1665
  *
1612
1666
  * const Port = Context.Service<{ PORT: number }>("Port")
1613
1667
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
1614
1668
  *
1615
1669
  * const context = Context.make(Port, { PORT: 8080 })
1616
1670
  *
1617
- * assert.deepStrictEqual(
1618
- * Context.getOption(context, Port),
1619
- * Option.some({ PORT: 8080 })
1620
- * )
1621
- * assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
1671
+ * Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
1672
+ * Context.getOption(context, Timeout) // => Option.none()
1622
1673
  * ```
1623
1674
  *
1624
1675
  * @see {@link getOrElse} for returning a fallback value directly
@@ -1643,20 +1694,16 @@ export const getOption: {
1643
1694
  *
1644
1695
  * **Example** (Getting optional services)
1645
1696
  *
1646
- * ```ts
1697
+ * ```ts import.meta.vitest
1647
1698
  * import { Context, Option } from "effect"
1648
- * import * as assert from "node:assert"
1649
1699
  *
1650
1700
  * const Port = Context.Service<{ PORT: number }>("Port")
1651
1701
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
1652
1702
  *
1653
1703
  * const context = Context.make(Port, { PORT: 8080 })
1654
1704
  *
1655
- * assert.deepStrictEqual(
1656
- * Context.getOption(context, Port),
1657
- * Option.some({ PORT: 8080 })
1658
- * )
1659
- * assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
1705
+ * Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
1706
+ * Context.getOption(context, Timeout) // => Option.none()
1660
1707
  * ```
1661
1708
  *
1662
1709
  * @see {@link getOrElse} for returning a fallback value directly
@@ -1666,9 +1713,8 @@ export const getOption: {
1666
1713
  */
1667
1714
  <Services, S, I>(self: Context<Services>, service: Key<I, S>): Option.Option<S>
1668
1715
  } = dual(2, <Services, I extends Services, S>(self: Context<Services>, service: Key<I, S>): Option.Option<S> => {
1669
- if (self.mapUnsafe.has(service.key)) {
1670
- return Option.some(self.mapUnsafe.get(service.key)! as any)
1671
- }
1716
+ const value = lookup(self, service.key)
1717
+ if (value !== notFound) return Option.some(value as any)
1672
1718
  return isReference(service) ? Option.some(getDefaultValue(service as any)) : Option.none()
1673
1719
  })
1674
1720
 
@@ -1686,9 +1732,8 @@ export const getOption: {
1686
1732
  *
1687
1733
  * **Example** (Merging two contexts)
1688
1734
  *
1689
- * ```ts
1735
+ * ```ts import.meta.vitest
1690
1736
  * import { Context } from "effect"
1691
- * import * as assert from "node:assert"
1692
1737
  *
1693
1738
  * const Port = Context.Service<{ PORT: number }>("Port")
1694
1739
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1698,8 +1743,8 @@ export const getOption: {
1698
1743
  *
1699
1744
  * const context = Context.merge(firstContext, secondContext)
1700
1745
  *
1701
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
1702
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
1746
+ * const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
1747
+ * values // => [8080, 5000]
1703
1748
  * ```
1704
1749
  *
1705
1750
  * @see {@link mergeAll} for merging more than two contexts at once
@@ -1722,9 +1767,8 @@ export const merge: {
1722
1767
  *
1723
1768
  * **Example** (Merging two contexts)
1724
1769
  *
1725
- * ```ts
1770
+ * ```ts import.meta.vitest
1726
1771
  * import { Context } from "effect"
1727
- * import * as assert from "node:assert"
1728
1772
  *
1729
1773
  * const Port = Context.Service<{ PORT: number }>("Port")
1730
1774
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1734,8 +1778,8 @@ export const merge: {
1734
1778
  *
1735
1779
  * const context = Context.merge(firstContext, secondContext)
1736
1780
  *
1737
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
1738
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
1781
+ * const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
1782
+ * values // => [8080, 5000]
1739
1783
  * ```
1740
1784
  *
1741
1785
  * @see {@link mergeAll} for merging more than two contexts at once
@@ -1758,9 +1802,8 @@ export const merge: {
1758
1802
  *
1759
1803
  * **Example** (Merging two contexts)
1760
1804
  *
1761
- * ```ts
1805
+ * ```ts import.meta.vitest
1762
1806
  * import { Context } from "effect"
1763
- * import * as assert from "node:assert"
1764
1807
  *
1765
1808
  * const Port = Context.Service<{ PORT: number }>("Port")
1766
1809
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1770,8 +1813,8 @@ export const merge: {
1770
1813
  *
1771
1814
  * const context = Context.merge(firstContext, secondContext)
1772
1815
  *
1773
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
1774
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
1816
+ * const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
1817
+ * values // => [8080, 5000]
1775
1818
  * ```
1776
1819
  *
1777
1820
  * @see {@link mergeAll} for merging more than two contexts at once
@@ -1783,9 +1826,7 @@ export const merge: {
1783
1826
  } = dual(2, <Services, R1>(self: Context<Services>, that: Context<R1>): Context<Services | R1> => {
1784
1827
  if (self.mapUnsafe.size === 0) return that as any
1785
1828
  if (that.mapUnsafe.size === 0) return self as any
1786
- return withMapUnsafe(self, (map) => {
1787
- that.mapUnsafe.forEach((value, key) => map.set(key, value))
1788
- })
1829
+ return withFlat(self, (map) => that.mapUnsafe.forEach((value, key) => map.set(key, value)))
1789
1830
  })
1790
1831
 
1791
1832
  /**
@@ -1802,9 +1843,8 @@ export const merge: {
1802
1843
  *
1803
1844
  * **Example** (Merging multiple contexts)
1804
1845
  *
1805
- * ```ts
1846
+ * ```ts import.meta.vitest
1806
1847
  * import { Context } from "effect"
1807
- * import * as assert from "node:assert"
1808
1848
  *
1809
1849
  * const Port = Context.Service<{ PORT: number }>("Port")
1810
1850
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1820,9 +1860,7 @@ export const merge: {
1820
1860
  * thirdContext
1821
1861
  * )
1822
1862
  *
1823
- * assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
1824
- * assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
1825
- * assert.deepStrictEqual(Context.get(context, Host), { HOST: "localhost" })
1863
+ * context.mapUnsafe.size // => 3
1826
1864
  * ```
1827
1865
  *
1828
1866
  * @see {@link merge} for merging two contexts
@@ -1851,9 +1889,8 @@ export const mergeAll = <T extends Array<unknown>>(
1851
1889
  *
1852
1890
  * **Example** (Picking services from a context)
1853
1891
  *
1854
- * ```ts
1892
+ * ```ts import.meta.vitest
1855
1893
  * import { Context, Option, pipe } from "effect"
1856
- * import * as assert from "node:assert"
1857
1894
  *
1858
1895
  * const Port = Context.Service<{ PORT: number }>("Port")
1859
1896
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1865,11 +1902,8 @@ export const mergeAll = <T extends Array<unknown>>(
1865
1902
  *
1866
1903
  * const context = pipe(someContext, Context.pick(Port))
1867
1904
  *
1868
- * assert.deepStrictEqual(
1869
- * Context.getOption(context, Port),
1870
- * Option.some({ PORT: 8080 })
1871
- * )
1872
- * assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
1905
+ * Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
1906
+ * Context.getOption(context, Timeout) // => Option.none()
1873
1907
  * ```
1874
1908
  *
1875
1909
  * @see {@link omit} for removing selected services
@@ -1880,14 +1914,13 @@ export const mergeAll = <T extends Array<unknown>>(
1880
1914
  export const pick = <S extends ReadonlyArray<Key<any, any>>>(
1881
1915
  ...services: S
1882
1916
  ) =>
1883
- <Services>(self: Context<Services>): Context<Services & Service.Identifier<S[number]>> =>
1884
- withMapUnsafe(self, (map) => {
1885
- const keySet = new Set(services.map((key) => key.key))
1917
+ <Services>(self: Context<Services>): Context<Services & Service.Identifier<S[number]>> => {
1918
+ const keep = new Set(services.map((key) => key.key))
1919
+ return withFlat(self, (map) =>
1886
1920
  map.forEach((_, key) => {
1887
- if (keySet.has(key)) return
1888
- map.delete(key)
1889
- })
1890
- })
1921
+ if (!keep.has(key)) map.delete(key)
1922
+ }))
1923
+ }
1891
1924
 
1892
1925
  /**
1893
1926
  * Returns a new `Context` with the specified service keys removed.
@@ -1898,9 +1931,8 @@ export const pick = <S extends ReadonlyArray<Key<any, any>>>(
1898
1931
  *
1899
1932
  * **Example** (Omitting services from a context)
1900
1933
  *
1901
- * ```ts
1934
+ * ```ts import.meta.vitest
1902
1935
  * import { Context, Option, pipe } from "effect"
1903
- * import * as assert from "node:assert"
1904
1936
  *
1905
1937
  * const Port = Context.Service<{ PORT: number }>("Port")
1906
1938
  * const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
@@ -1912,11 +1944,8 @@ export const pick = <S extends ReadonlyArray<Key<any, any>>>(
1912
1944
  *
1913
1945
  * const context = pipe(someContext, Context.omit(Timeout))
1914
1946
  *
1915
- * assert.deepStrictEqual(
1916
- * Context.getOption(context, Port),
1917
- * Option.some({ PORT: 8080 })
1918
- * )
1919
- * assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
1947
+ * Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
1948
+ * Context.getOption(context, Timeout) // => Option.none()
1920
1949
  * ```
1921
1950
  *
1922
1951
  * @see {@link pick} for keeping selected services
@@ -1928,108 +1957,12 @@ export const omit = <S extends ReadonlyArray<Key<any, any>>>(
1928
1957
  ...keys: S
1929
1958
  ) =>
1930
1959
  <Services>(self: Context<Services>): Context<Exclude<Services, Service.Identifier<S[number]>>> =>
1931
- withMapUnsafe(self, (map) => {
1960
+ withFlat(self, (map) => {
1932
1961
  for (let i = 0; i < keys.length; i++) {
1933
1962
  map.delete(keys[i].key)
1934
1963
  }
1935
1964
  })
1936
1965
 
1937
- /**
1938
- * Performs a series of mutations on a `Context`. Prevents unnecessary copying
1939
- * of the underlying map when multiple mutations are needed.
1940
- *
1941
- * **When to use**
1942
- *
1943
- * Use to apply several `Context` transformations in one callback while copying
1944
- * the underlying service map only once.
1945
- *
1946
- * @see {@link add} for adding or replacing a service
1947
- * @see {@link addOrOmit} for adding or removing a service from an `Option`
1948
- * @see {@link merge} for combining two contexts
1949
- * @see {@link pick} for keeping selected services
1950
- * @see {@link omit} for removing selected services
1951
- *
1952
- * @category mutations
1953
- * @since 4.0.0
1954
- */
1955
- export const mutate: {
1956
- /**
1957
- * Performs a series of mutations on a `Context`. Prevents unnecessary copying
1958
- * of the underlying map when multiple mutations are needed.
1959
- *
1960
- * **When to use**
1961
- *
1962
- * Use to apply several `Context` transformations in one callback while copying
1963
- * the underlying service map only once.
1964
- *
1965
- * @see {@link add} for adding or replacing a service
1966
- * @see {@link addOrOmit} for adding or removing a service from an `Option`
1967
- * @see {@link merge} for combining two contexts
1968
- * @see {@link pick} for keeping selected services
1969
- * @see {@link omit} for removing selected services
1970
- *
1971
- * @category mutations
1972
- * @since 4.0.0
1973
- */
1974
- <Services, B>(f: (context: Context<Services>) => Context<B>): <Services>(self: Context<Services>) => Context<B>
1975
- /**
1976
- * Performs a series of mutations on a `Context`. Prevents unnecessary copying
1977
- * of the underlying map when multiple mutations are needed.
1978
- *
1979
- * **When to use**
1980
- *
1981
- * Use to apply several `Context` transformations in one callback while copying
1982
- * the underlying service map only once.
1983
- *
1984
- * @see {@link add} for adding or replacing a service
1985
- * @see {@link addOrOmit} for adding or removing a service from an `Option`
1986
- * @see {@link merge} for combining two contexts
1987
- * @see {@link pick} for keeping selected services
1988
- * @see {@link omit} for removing selected services
1989
- *
1990
- * @category mutations
1991
- * @since 4.0.0
1992
- */
1993
- <Services, B>(self: Context<Services>, f: (context: Context<Services>) => Context<B>): Context<B>
1994
- } = dual(
1995
- 2,
1996
- <Services, B>(self: Context<Services>, f: (context: Context<Services>) => Context<B>): Context<B> => {
1997
- const next = makeUnsafe</**
1998
- * Performs a series of mutations on a `Context`. Prevents unnecessary copying
1999
- * of the underlying map when multiple mutations are needed.
2000
- *
2001
- * **When to use**
2002
- *
2003
- * Use to apply several `Context` transformations in one callback while copying
2004
- * the underlying service map only once.
2005
- *
2006
- * @see {@link add} for adding or replacing a service
2007
- * @see {@link addOrOmit} for adding or removing a service from an `Option`
2008
- * @see {@link merge} for combining two contexts
2009
- * @see {@link pick} for keeping selected services
2010
- * @see {@link omit} for removing selected services
2011
- *
2012
- * @category mutations
2013
- * @since 4.0.0
2014
- */
2015
- Services>(new Map(self.mapUnsafe))
2016
- next.mutable = true
2017
- const result = f(next)
2018
- result.mutable = false
2019
- return result
2020
- }
2021
- )
2022
-
2023
- const withMapUnsafe = <Services, B>(self: Context<Services>, f: (map: Map<string, any>) => void): Context<B> => {
2024
- if (self.mutable) {
2025
- f(self.mapUnsafe as any)
2026
- return self as any
2027
- }
2028
- const map = new Map(self.mapUnsafe)
2029
- f(map)
2030
- return makeUnsafe(map)
2031
- }
2032
-
2033
1966
  /**
2034
1967
  * Creates a context key with a default value.
2035
1968
  *
@@ -2048,12 +1981,13 @@ const withMapUnsafe = <Services, B>(self: Context<Services>, f: (map: Map<string
2048
1981
  *
2049
1982
  * **Example** (Creating references with default values)
2050
1983
  *
2051
- * ```ts
1984
+ * ```ts import.meta.vitest
2052
1985
  * import { Context } from "effect"
2053
1986
  *
2054
1987
  * // Create a reference with a default value
1988
+ * const messages: Array<string> = []
2055
1989
  * const LoggerRef = Context.Reference("Logger", {
2056
- * defaultValue: () => ({ log: (msg: string) => console.log(msg) })
1990
+ * defaultValue: () => ({ log: (msg: string) => messages.push(`Default: ${msg}`) })
2057
1991
  * })
2058
1992
  *
2059
1993
  * // The reference provides the default value when accessed from an empty context
@@ -2062,17 +1996,24 @@ const withMapUnsafe = <Services, B>(self: Context<Services>, f: (map: Map<string
2062
1996
  *
2063
1997
  * // You can also override the default value
2064
1998
  * const customContext = Context.make(LoggerRef, {
2065
- * log: (msg: string) => `Custom: ${msg}`
1999
+ * log: (msg: string) => messages.push(`Custom: ${msg}`)
2066
2000
  * })
2067
2001
  * const customLogger = Context.get(customContext, LoggerRef)
2002
+ * logger.log("default")
2003
+ * customLogger.log("message")
2004
+ * messages // => ["Default: default", "Custom: message"]
2068
2005
  * ```
2069
2006
  *
2070
2007
  * @see {@link Service} for required services without default values
2071
2008
  *
2072
- * @category references
2009
+ * @category services
2073
2010
  * @since 3.11.0
2074
2011
  */
2075
2012
  export const Reference: <Service>(
2076
2013
  key: string,
2077
- options: { readonly defaultValue: () => Service }
2014
+ options: {
2015
+ readonly defaultValue: () => Service
2016
+ /** @internal */
2017
+ readonly fiberCached?: boolean | undefined
2018
+ }
2078
2019
  ) => Reference<Service> = Service as any