effect 4.0.0-beta.101 → 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 (1580) hide show
  1. package/dist/Array.d.ts +971 -1037
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +462 -412
  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 +541 -449
  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 +226 -174
  46. package/dist/Config.d.ts.map +1 -1
  47. package/dist/Config.js +339 -267
  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 +122 -87
  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 +18 -24
  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 +2897 -3342
  86. package/dist/Effect.d.ts.map +1 -1
  87. package/dist/Effect.js +1383 -1580
  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 +109 -75
  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 +230 -307
  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 +46 -103
  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 +300 -239
  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 +207 -452
  208. package/dist/Logger.js.map +1 -1
  209. package/dist/ManagedRuntime.d.ts +16 -5
  210. package/dist/ManagedRuntime.d.ts.map +1 -1
  211. package/dist/ManagedRuntime.js +10 -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 +202 -645
  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 +190 -292
  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 +213 -393
  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.d.ts.map +1 -1
  265. package/dist/PartitionedSemaphore.js +1 -4
  266. package/dist/PartitionedSemaphore.js.map +1 -1
  267. package/dist/Path.d.ts +38 -41
  268. package/dist/Path.d.ts.map +1 -1
  269. package/dist/Path.js +3 -4
  270. package/dist/Path.js.map +1 -1
  271. package/dist/Pipeable.d.ts +6 -5
  272. package/dist/Pipeable.d.ts.map +1 -1
  273. package/dist/Pipeable.js +2 -2
  274. package/dist/Pipeable.js.map +1 -1
  275. package/dist/PlatformError.d.ts +4 -4
  276. package/dist/PlatformError.js +3 -3
  277. package/dist/PlatformError.js.map +1 -1
  278. package/dist/Pool.d.ts +4 -2
  279. package/dist/Pool.d.ts.map +1 -1
  280. package/dist/Pool.js +4 -2
  281. package/dist/Pool.js.map +1 -1
  282. package/dist/Predicate.d.ts +200 -181
  283. package/dist/Predicate.d.ts.map +1 -1
  284. package/dist/Predicate.js +100 -108
  285. package/dist/Predicate.js.map +1 -1
  286. package/dist/PrimaryKey.d.ts +7 -7
  287. package/dist/PrimaryKey.js +5 -5
  288. package/dist/PrimaryKey.js.map +1 -1
  289. package/dist/PubSub.d.ts +425 -494
  290. package/dist/PubSub.d.ts.map +1 -1
  291. package/dist/PubSub.js +373 -362
  292. package/dist/PubSub.js.map +1 -1
  293. package/dist/Pull.d.ts +24 -18
  294. package/dist/Pull.d.ts.map +1 -1
  295. package/dist/Pull.js +11 -9
  296. package/dist/Pull.js.map +1 -1
  297. package/dist/Queue.d.ts +200 -159
  298. package/dist/Queue.d.ts.map +1 -1
  299. package/dist/Queue.js +162 -132
  300. package/dist/Queue.js.map +1 -1
  301. package/dist/Random.d.ts +49 -74
  302. package/dist/Random.d.ts.map +1 -1
  303. package/dist/Random.js +35 -54
  304. package/dist/Random.js.map +1 -1
  305. package/dist/RcMap.d.ts +121 -63
  306. package/dist/RcMap.d.ts.map +1 -1
  307. package/dist/RcMap.js +42 -21
  308. package/dist/RcMap.js.map +1 -1
  309. package/dist/RcRef.d.ts +24 -13
  310. package/dist/RcRef.d.ts.map +1 -1
  311. package/dist/RcRef.js +15 -9
  312. package/dist/RcRef.js.map +1 -1
  313. package/dist/Record.d.ts +361 -466
  314. package/dist/Record.d.ts.map +1 -1
  315. package/dist/Record.js +163 -216
  316. package/dist/Record.js.map +1 -1
  317. package/dist/Redactable.d.ts +6 -2
  318. package/dist/Redactable.d.ts.map +1 -1
  319. package/dist/Redactable.js +7 -2
  320. package/dist/Redactable.js.map +1 -1
  321. package/dist/Redacted.d.ts +25 -25
  322. package/dist/Redacted.d.ts.map +1 -1
  323. package/dist/Redacted.js +19 -20
  324. package/dist/Redacted.js.map +1 -1
  325. package/dist/Reducer.d.ts +8 -15
  326. package/dist/Reducer.d.ts.map +1 -1
  327. package/dist/Reducer.js +6 -12
  328. package/dist/Reducer.js.map +1 -1
  329. package/dist/Ref.d.ts +95 -165
  330. package/dist/Ref.d.ts.map +1 -1
  331. package/dist/Ref.js +75 -122
  332. package/dist/Ref.js.map +1 -1
  333. package/dist/References.d.ts +102 -213
  334. package/dist/References.d.ts.map +1 -1
  335. package/dist/References.js +102 -213
  336. package/dist/References.js.map +1 -1
  337. package/dist/RegExp.d.ts +10 -14
  338. package/dist/RegExp.d.ts.map +1 -1
  339. package/dist/RegExp.js +10 -14
  340. package/dist/RegExp.js.map +1 -1
  341. package/dist/Request.d.ts +31 -21
  342. package/dist/Request.d.ts.map +1 -1
  343. package/dist/Request.js +25 -19
  344. package/dist/Request.js.map +1 -1
  345. package/dist/RequestResolver.d.ts +201 -90
  346. package/dist/RequestResolver.d.ts.map +1 -1
  347. package/dist/RequestResolver.js +87 -41
  348. package/dist/RequestResolver.js.map +1 -1
  349. package/dist/Resource.js.map +1 -1
  350. package/dist/Result.d.ts +302 -470
  351. package/dist/Result.d.ts.map +1 -1
  352. package/dist/Result.js +135 -218
  353. package/dist/Result.js.map +1 -1
  354. package/dist/Runtime.d.ts +50 -75
  355. package/dist/Runtime.d.ts.map +1 -1
  356. package/dist/Runtime.js +39 -60
  357. package/dist/Runtime.js.map +1 -1
  358. package/dist/Schedule.d.ts +290 -1636
  359. package/dist/Schedule.d.ts.map +1 -1
  360. package/dist/Schedule.js +162 -803
  361. package/dist/Schedule.js.map +1 -1
  362. package/dist/Scheduler.d.ts +5 -5
  363. package/dist/Scheduler.d.ts.map +1 -1
  364. package/dist/Scheduler.js +18 -6
  365. package/dist/Scheduler.js.map +1 -1
  366. package/dist/Schema.d.ts +1835 -1060
  367. package/dist/Schema.d.ts.map +1 -1
  368. package/dist/Schema.js +2708 -1050
  369. package/dist/Schema.js.map +1 -1
  370. package/dist/SchemaAST.d.ts +29 -52
  371. package/dist/SchemaAST.d.ts.map +1 -1
  372. package/dist/SchemaAST.js +537 -391
  373. package/dist/SchemaAST.js.map +1 -1
  374. package/dist/SchemaError.d.ts +7 -6
  375. package/dist/SchemaError.d.ts.map +1 -1
  376. package/dist/SchemaError.js +8 -7
  377. package/dist/SchemaError.js.map +1 -1
  378. package/dist/SchemaGetter.d.ts +230 -185
  379. package/dist/SchemaGetter.d.ts.map +1 -1
  380. package/dist/SchemaGetter.js +252 -209
  381. package/dist/SchemaGetter.js.map +1 -1
  382. package/dist/SchemaIssue.d.ts +62 -190
  383. package/dist/SchemaIssue.d.ts.map +1 -1
  384. package/dist/SchemaIssue.js +74 -266
  385. package/dist/SchemaIssue.js.map +1 -1
  386. package/dist/SchemaParser.d.ts +2 -2
  387. package/dist/SchemaParser.d.ts.map +1 -1
  388. package/dist/SchemaParser.js +123 -86
  389. package/dist/SchemaParser.js.map +1 -1
  390. package/dist/SchemaRepresentation.d.ts +398 -1513
  391. package/dist/SchemaRepresentation.d.ts.map +1 -1
  392. package/dist/SchemaRepresentation.js +290 -2854
  393. package/dist/SchemaRepresentation.js.map +1 -1
  394. package/dist/SchemaTransformation.d.ts +116 -76
  395. package/dist/SchemaTransformation.d.ts.map +1 -1
  396. package/dist/SchemaTransformation.js +123 -88
  397. package/dist/SchemaTransformation.js.map +1 -1
  398. package/dist/Scope.d.ts +123 -151
  399. package/dist/Scope.d.ts.map +1 -1
  400. package/dist/Scope.js +72 -92
  401. package/dist/Scope.js.map +1 -1
  402. package/dist/ScopedCache.js.map +1 -1
  403. package/dist/ScopedRef.d.ts +3 -3
  404. package/dist/ScopedRef.js +2 -2
  405. package/dist/ScopedRef.js.map +1 -1
  406. package/dist/Semaphore.d.ts +101 -13
  407. package/dist/Semaphore.d.ts.map +1 -1
  408. package/dist/Semaphore.js +78 -39
  409. package/dist/Semaphore.js.map +1 -1
  410. package/dist/Sink.d.ts +117 -107
  411. package/dist/Sink.d.ts.map +1 -1
  412. package/dist/Sink.js +107 -100
  413. package/dist/Sink.js.map +1 -1
  414. package/dist/Stdio.d.ts +1 -1
  415. package/dist/Stdio.js.map +1 -1
  416. package/dist/Stream.d.ts +2430 -2958
  417. package/dist/Stream.d.ts.map +1 -1
  418. package/dist/Stream.js +1124 -1397
  419. package/dist/Stream.js.map +1 -1
  420. package/dist/String.d.ts +262 -308
  421. package/dist/String.d.ts.map +1 -1
  422. package/dist/String.js +184 -215
  423. package/dist/String.js.map +1 -1
  424. package/dist/Struct.d.ts +109 -114
  425. package/dist/Struct.d.ts.map +1 -1
  426. package/dist/Struct.js +46 -54
  427. package/dist/Struct.js.map +1 -1
  428. package/dist/SubscriptionRef.d.ts +282 -250
  429. package/dist/SubscriptionRef.d.ts.map +1 -1
  430. package/dist/SubscriptionRef.js +104 -92
  431. package/dist/SubscriptionRef.js.map +1 -1
  432. package/dist/Symbol.d.ts +3 -3
  433. package/dist/Symbol.js +3 -3
  434. package/dist/Symbol.js.map +1 -1
  435. package/dist/SynchronizedRef.js.map +1 -1
  436. package/dist/Take.js.map +1 -1
  437. package/dist/Terminal.d.ts +2 -2
  438. package/dist/Terminal.js +1 -1
  439. package/dist/Terminal.js.map +1 -1
  440. package/dist/Tracer.d.ts +100 -54
  441. package/dist/Tracer.d.ts.map +1 -1
  442. package/dist/Tracer.js +41 -24
  443. package/dist/Tracer.js.map +1 -1
  444. package/dist/Trie.d.ts +287 -679
  445. package/dist/Trie.d.ts.map +1 -1
  446. package/dist/Trie.js +109 -251
  447. package/dist/Trie.js.map +1 -1
  448. package/dist/Tuple.d.ts +92 -127
  449. package/dist/Tuple.d.ts.map +1 -1
  450. package/dist/Tuple.js +42 -57
  451. package/dist/Tuple.js.map +1 -1
  452. package/dist/TxChunk.d.ts +201 -121
  453. package/dist/TxChunk.d.ts.map +1 -1
  454. package/dist/TxChunk.js +85 -56
  455. package/dist/TxChunk.js.map +1 -1
  456. package/dist/TxDeferred.d.ts +62 -46
  457. package/dist/TxDeferred.d.ts.map +1 -1
  458. package/dist/TxDeferred.js +30 -22
  459. package/dist/TxDeferred.js.map +1 -1
  460. package/dist/TxHashMap.d.ts +631 -779
  461. package/dist/TxHashMap.d.ts.map +1 -1
  462. package/dist/TxHashMap.js +268 -330
  463. package/dist/TxHashMap.js.map +1 -1
  464. package/dist/TxHashSet.d.ts +297 -236
  465. package/dist/TxHashSet.d.ts.map +1 -1
  466. package/dist/TxHashSet.js +130 -100
  467. package/dist/TxHashSet.js.map +1 -1
  468. package/dist/TxPriorityQueue.d.ts +126 -95
  469. package/dist/TxPriorityQueue.d.ts.map +1 -1
  470. package/dist/TxPriorityQueue.js +74 -56
  471. package/dist/TxPriorityQueue.js.map +1 -1
  472. package/dist/TxPubSub.d.ts +101 -88
  473. package/dist/TxPubSub.d.ts.map +1 -1
  474. package/dist/TxPubSub.js +87 -66
  475. package/dist/TxPubSub.js.map +1 -1
  476. package/dist/TxQueue.d.ts +200 -180
  477. package/dist/TxQueue.d.ts.map +1 -1
  478. package/dist/TxQueue.js +160 -136
  479. package/dist/TxQueue.js.map +1 -1
  480. package/dist/TxReentrantLock.d.ts +97 -66
  481. package/dist/TxReentrantLock.d.ts.map +1 -1
  482. package/dist/TxReentrantLock.js +67 -45
  483. package/dist/TxReentrantLock.js.map +1 -1
  484. package/dist/TxRef.d.ts +51 -32
  485. package/dist/TxRef.d.ts.map +1 -1
  486. package/dist/TxRef.js +23 -15
  487. package/dist/TxRef.js.map +1 -1
  488. package/dist/TxSemaphore.d.ts +129 -95
  489. package/dist/TxSemaphore.d.ts.map +1 -1
  490. package/dist/TxSemaphore.js +85 -70
  491. package/dist/TxSemaphore.js.map +1 -1
  492. package/dist/TxSubscriptionRef.d.ts +97 -70
  493. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  494. package/dist/TxSubscriptionRef.js +44 -34
  495. package/dist/TxSubscriptionRef.js.map +1 -1
  496. package/dist/Types.d.ts +127 -70
  497. package/dist/Types.d.ts.map +1 -1
  498. package/dist/UndefinedOr.js.map +1 -1
  499. package/dist/Unify.d.ts +45 -65
  500. package/dist/Unify.d.ts.map +1 -1
  501. package/dist/Unify.js +6 -9
  502. package/dist/Unify.js.map +1 -1
  503. package/dist/Utils.d.ts +23 -16
  504. package/dist/Utils.d.ts.map +1 -1
  505. package/dist/Utils.js +3 -7
  506. package/dist/Utils.js.map +1 -1
  507. package/dist/index.d.ts +0 -4
  508. package/dist/index.d.ts.map +1 -1
  509. package/dist/index.js +0 -4
  510. package/dist/index.js.map +1 -1
  511. package/dist/internal/array.js.map +1 -1
  512. package/dist/internal/core.js +3 -2
  513. package/dist/internal/core.js.map +1 -1
  514. package/dist/internal/dateTime.js +4 -0
  515. package/dist/internal/dateTime.js.map +1 -1
  516. package/dist/internal/doNotation.js.map +1 -1
  517. package/dist/internal/effect.js +141 -61
  518. package/dist/internal/effect.js.map +1 -1
  519. package/dist/internal/equal.js.map +1 -1
  520. package/dist/internal/errors.js.map +1 -1
  521. package/dist/internal/executionPlan.js.map +1 -1
  522. package/dist/internal/hashMap.js.map +1 -1
  523. package/dist/internal/hashSet.js.map +1 -1
  524. package/dist/internal/layer.js.map +1 -1
  525. package/dist/internal/matcher.js +1 -1
  526. package/dist/internal/matcher.js.map +1 -1
  527. package/dist/internal/metric.js.map +1 -1
  528. package/dist/internal/option.js.map +1 -1
  529. package/dist/internal/persistence.d.ts +2 -0
  530. package/dist/internal/persistence.d.ts.map +1 -0
  531. package/dist/internal/persistence.js +3 -0
  532. package/dist/internal/persistence.js.map +1 -0
  533. package/dist/internal/random.js.map +1 -1
  534. package/dist/internal/rcRef.js.map +1 -1
  535. package/dist/internal/record.d.ts +0 -3
  536. package/dist/internal/record.d.ts.map +1 -1
  537. package/dist/internal/record.js +10 -5
  538. package/dist/internal/record.js.map +1 -1
  539. package/dist/internal/redacted.js.map +1 -1
  540. package/dist/internal/references.js +3 -4
  541. package/dist/internal/references.js.map +1 -1
  542. package/dist/internal/request.js.map +1 -1
  543. package/dist/internal/result.js.map +1 -1
  544. package/dist/internal/schedule.js.map +1 -1
  545. package/dist/internal/schema/annotations.js +12 -0
  546. package/dist/internal/schema/annotations.js.map +1 -1
  547. package/dist/internal/schema/cause.js.map +1 -1
  548. package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
  549. package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
  550. package/dist/internal/schema/fromJsonSchemaDocument.js +745 -0
  551. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
  552. package/dist/internal/schema/fromRepresentation.d.ts +2 -0
  553. package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
  554. package/dist/internal/schema/fromRepresentation.js +245 -0
  555. package/dist/internal/schema/fromRepresentation.js.map +1 -0
  556. package/dist/internal/schema/parser.d.ts +14 -0
  557. package/dist/internal/schema/parser.d.ts.map +1 -0
  558. package/dist/internal/schema/parser.js +13 -0
  559. package/dist/internal/schema/parser.js.map +1 -0
  560. package/dist/internal/schema/schema.js +28 -40
  561. package/dist/internal/schema/schema.js.map +1 -1
  562. package/dist/internal/schema/{arbitrary.d.ts → toArbitrary.d.ts} +1 -1
  563. package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
  564. package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -9
  565. package/dist/internal/schema/toArbitrary.js.map +1 -0
  566. package/dist/internal/schema/toCodeDocument.d.ts +2 -0
  567. package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
  568. package/dist/internal/schema/toCodeDocument.js +438 -0
  569. package/dist/internal/schema/toCodeDocument.js.map +1 -0
  570. package/dist/internal/schema/toEquivalence.d.ts +2 -0
  571. package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
  572. package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
  573. package/dist/internal/schema/toEquivalence.js.map +1 -0
  574. package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
  575. package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
  576. package/dist/internal/schema/toJsonSchemaDocument.js +508 -0
  577. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
  578. package/dist/internal/schema/toRepresentation.d.ts +2 -0
  579. package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
  580. package/dist/internal/schema/toRepresentation.js +349 -0
  581. package/dist/internal/schema/toRepresentation.js.map +1 -0
  582. package/dist/internal/stackTraceLimit.js +3 -6
  583. package/dist/internal/stackTraceLimit.js.map +1 -1
  584. package/dist/internal/stream.js.map +1 -1
  585. package/dist/internal/tracer.js.map +1 -1
  586. package/dist/internal/trie.js +13 -9
  587. package/dist/internal/trie.js.map +1 -1
  588. package/dist/testing/FastCheck.d.ts +8 -7
  589. package/dist/testing/FastCheck.d.ts.map +1 -1
  590. package/dist/testing/FastCheck.js +8 -7
  591. package/dist/testing/FastCheck.js.map +1 -1
  592. package/dist/testing/TestClock.d.ts +57 -28
  593. package/dist/testing/TestClock.d.ts.map +1 -1
  594. package/dist/testing/TestClock.js +54 -19
  595. package/dist/testing/TestClock.js.map +1 -1
  596. package/dist/testing/TestConsole.d.ts +32 -31
  597. package/dist/testing/TestConsole.d.ts.map +1 -1
  598. package/dist/testing/TestConsole.js +24 -22
  599. package/dist/testing/TestConsole.js.map +1 -1
  600. package/dist/testing/TestSchema.d.ts +29 -29
  601. package/dist/testing/TestSchema.js +25 -25
  602. package/dist/testing/TestSchema.js.map +1 -1
  603. package/dist/testing/index.js.map +1 -1
  604. package/dist/unstable/ai/AiError.d.ts +121 -144
  605. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  606. package/dist/unstable/ai/AiError.js +99 -121
  607. package/dist/unstable/ai/AiError.js.map +1 -1
  608. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +22 -7
  609. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  610. package/dist/unstable/ai/AnthropicStructuredOutput.js +87 -317
  611. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  612. package/dist/unstable/ai/Chat.d.ts +132 -97
  613. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  614. package/dist/unstable/ai/Chat.js +55 -51
  615. package/dist/unstable/ai/Chat.js.map +1 -1
  616. package/dist/unstable/ai/EmbeddingModel.d.ts +1 -1
  617. package/dist/unstable/ai/EmbeddingModel.js +1 -1
  618. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  619. package/dist/unstable/ai/IdGenerator.d.ts +32 -28
  620. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  621. package/dist/unstable/ai/IdGenerator.js +26 -21
  622. package/dist/unstable/ai/IdGenerator.js.map +1 -1
  623. package/dist/unstable/ai/LanguageModel.d.ts +111 -68
  624. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  625. package/dist/unstable/ai/LanguageModel.js +123 -81
  626. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  627. package/dist/unstable/ai/McpProtocol.d.ts +30 -0
  628. package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
  629. package/dist/unstable/ai/McpProtocol.js +20 -0
  630. package/dist/unstable/ai/McpProtocol.js.map +1 -0
  631. package/dist/unstable/ai/McpSchema.d.ts +316 -250
  632. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  633. package/dist/unstable/ai/McpSchema.js +71 -63
  634. package/dist/unstable/ai/McpSchema.js.map +1 -1
  635. package/dist/unstable/ai/McpServer.d.ts +71 -62
  636. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  637. package/dist/unstable/ai/McpServer.js +765 -245
  638. package/dist/unstable/ai/McpServer.js.map +1 -1
  639. package/dist/unstable/ai/Model.d.ts +8 -19
  640. package/dist/unstable/ai/Model.d.ts.map +1 -1
  641. package/dist/unstable/ai/Model.js +9 -20
  642. package/dist/unstable/ai/Model.js.map +1 -1
  643. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +33 -11
  644. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  645. package/dist/unstable/ai/OpenAiStructuredOutput.js +194 -378
  646. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  647. package/dist/unstable/ai/Prompt.d.ts +112 -38
  648. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  649. package/dist/unstable/ai/Prompt.js +53 -17
  650. package/dist/unstable/ai/Prompt.js.map +1 -1
  651. package/dist/unstable/ai/Response.d.ts +47 -33
  652. package/dist/unstable/ai/Response.d.ts.map +1 -1
  653. package/dist/unstable/ai/Response.js +23 -18
  654. package/dist/unstable/ai/Response.js.map +1 -1
  655. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
  656. package/dist/unstable/ai/Telemetry.d.ts +46 -13
  657. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  658. package/dist/unstable/ai/Telemetry.js +18 -7
  659. package/dist/unstable/ai/Telemetry.js.map +1 -1
  660. package/dist/unstable/ai/Tokenizer.d.ts +14 -3
  661. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  662. package/dist/unstable/ai/Tokenizer.js +10 -2
  663. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  664. package/dist/unstable/ai/Tool.d.ts +63 -44
  665. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  666. package/dist/unstable/ai/Tool.js +59 -42
  667. package/dist/unstable/ai/Tool.js.map +1 -1
  668. package/dist/unstable/ai/Toolkit.d.ts +35 -9
  669. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  670. package/dist/unstable/ai/Toolkit.js +32 -14
  671. package/dist/unstable/ai/Toolkit.js.map +1 -1
  672. package/dist/unstable/ai/index.d.ts +4 -0
  673. package/dist/unstable/ai/index.d.ts.map +1 -1
  674. package/dist/unstable/ai/index.js +4 -0
  675. package/dist/unstable/ai/index.js.map +1 -1
  676. package/dist/unstable/ai/internal/codec-transformer.js +15 -12
  677. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  678. package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
  679. package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
  680. package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
  681. package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
  682. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
  683. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
  684. package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
  685. package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
  686. package/dist/unstable/ai/internal/structured-output.d.ts +2 -0
  687. package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
  688. package/dist/unstable/ai/internal/structured-output.js +315 -0
  689. package/dist/unstable/ai/internal/structured-output.js.map +1 -0
  690. package/dist/unstable/cli/Argument.d.ts +273 -69
  691. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  692. package/dist/unstable/cli/Argument.js +111 -33
  693. package/dist/unstable/cli/Argument.js.map +1 -1
  694. package/dist/unstable/cli/CliConfig.js.map +1 -1
  695. package/dist/unstable/cli/CliError.d.ts +105 -74
  696. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  697. package/dist/unstable/cli/CliError.js +98 -63
  698. package/dist/unstable/cli/CliError.js.map +1 -1
  699. package/dist/unstable/cli/CliOutput.d.ts +35 -54
  700. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  701. package/dist/unstable/cli/CliOutput.js +26 -42
  702. package/dist/unstable/cli/CliOutput.js.map +1 -1
  703. package/dist/unstable/cli/Command.d.ts +705 -107
  704. package/dist/unstable/cli/Command.d.ts.map +1 -1
  705. package/dist/unstable/cli/Command.js +252 -47
  706. package/dist/unstable/cli/Command.js.map +1 -1
  707. package/dist/unstable/cli/Completions.js.map +1 -1
  708. package/dist/unstable/cli/Flag.d.ts +418 -138
  709. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  710. package/dist/unstable/cli/Flag.js +197 -71
  711. package/dist/unstable/cli/Flag.js.map +1 -1
  712. package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
  713. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  714. package/dist/unstable/cli/HelpDoc.d.ts +12 -4
  715. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  716. package/dist/unstable/cli/Param.d.ts +292 -78
  717. package/dist/unstable/cli/Param.d.ts.map +1 -1
  718. package/dist/unstable/cli/Param.js +131 -49
  719. package/dist/unstable/cli/Param.js.map +1 -1
  720. package/dist/unstable/cli/Primitive.d.ts +370 -149
  721. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  722. package/dist/unstable/cli/Primitive.js +345 -137
  723. package/dist/unstable/cli/Primitive.js.map +1 -1
  724. package/dist/unstable/cli/Prompt.d.ts +23 -14
  725. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  726. package/dist/unstable/cli/Prompt.js +23 -14
  727. package/dist/unstable/cli/Prompt.js.map +1 -1
  728. package/dist/unstable/cli/index.js.map +1 -1
  729. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  730. package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
  731. package/dist/unstable/cli/internal/command.d.ts +3 -1
  732. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  733. package/dist/unstable/cli/internal/command.js +11 -4
  734. package/dist/unstable/cli/internal/command.js.map +1 -1
  735. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  736. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  737. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  738. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  739. package/dist/unstable/cli/internal/config.d.ts +0 -48
  740. package/dist/unstable/cli/internal/config.d.ts.map +1 -1
  741. package/dist/unstable/cli/internal/config.js +8 -10
  742. package/dist/unstable/cli/internal/config.js.map +1 -1
  743. package/dist/unstable/cli/internal/help.js.map +1 -1
  744. package/dist/unstable/cli/internal/lexer.js +17 -7
  745. package/dist/unstable/cli/internal/lexer.js.map +1 -1
  746. package/dist/unstable/cli/internal/parser.js +2 -2
  747. package/dist/unstable/cli/internal/parser.js.map +1 -1
  748. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  749. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  750. package/dist/unstable/cluster/ClusterError.js.map +1 -1
  751. package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
  752. package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
  753. package/dist/unstable/cluster/ClusterSchema.js +8 -8
  754. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  755. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  756. package/dist/unstable/cluster/ClusterWorkflowEngine.js +6 -2
  757. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  758. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  759. package/dist/unstable/cluster/Entity.d.ts +10 -10
  760. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  761. package/dist/unstable/cluster/Entity.js +9 -9
  762. package/dist/unstable/cluster/Entity.js.map +1 -1
  763. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  764. package/dist/unstable/cluster/EntityId.js.map +1 -1
  765. package/dist/unstable/cluster/EntityProxy.d.ts +4 -2
  766. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  767. package/dist/unstable/cluster/EntityProxy.js +4 -2
  768. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  769. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  770. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  771. package/dist/unstable/cluster/EntityResource.js +2 -2
  772. package/dist/unstable/cluster/EntityResource.js.map +1 -1
  773. package/dist/unstable/cluster/EntityType.js.map +1 -1
  774. package/dist/unstable/cluster/Envelope.d.ts +3 -3
  775. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  776. package/dist/unstable/cluster/Envelope.js +5 -4
  777. package/dist/unstable/cluster/Envelope.js.map +1 -1
  778. package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
  779. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  780. package/dist/unstable/cluster/HttpRunner.js +6 -4
  781. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  782. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  783. package/dist/unstable/cluster/MachineId.js.map +1 -1
  784. package/dist/unstable/cluster/Message.d.ts +9 -9
  785. package/dist/unstable/cluster/Message.js +6 -6
  786. package/dist/unstable/cluster/Message.js.map +1 -1
  787. package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
  788. package/dist/unstable/cluster/MessageStorage.js +5 -5
  789. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  790. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  791. package/dist/unstable/cluster/Reply.js +5 -5
  792. package/dist/unstable/cluster/Reply.js.map +1 -1
  793. package/dist/unstable/cluster/Runner.d.ts +1 -1
  794. package/dist/unstable/cluster/Runner.js +1 -1
  795. package/dist/unstable/cluster/Runner.js.map +1 -1
  796. package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
  797. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  798. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  799. package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
  800. package/dist/unstable/cluster/RunnerHealth.js +1 -1
  801. package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
  802. package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
  803. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  804. package/dist/unstable/cluster/RunnerServer.js +16 -16
  805. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  806. package/dist/unstable/cluster/RunnerStorage.d.ts +2 -2
  807. package/dist/unstable/cluster/RunnerStorage.js +1 -1
  808. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  809. package/dist/unstable/cluster/Runners.d.ts +6 -6
  810. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  811. package/dist/unstable/cluster/Runners.js +19 -10
  812. package/dist/unstable/cluster/Runners.js.map +1 -1
  813. package/dist/unstable/cluster/ShardId.js +1 -1
  814. package/dist/unstable/cluster/ShardId.js.map +1 -1
  815. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  816. package/dist/unstable/cluster/Sharding.js +128 -26
  817. package/dist/unstable/cluster/Sharding.js.map +1 -1
  818. package/dist/unstable/cluster/ShardingConfig.d.ts +13 -5
  819. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  820. package/dist/unstable/cluster/ShardingConfig.js +3 -3
  821. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  822. package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
  823. package/dist/unstable/cluster/SingleRunner.d.ts +4 -2
  824. package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
  825. package/dist/unstable/cluster/SingleRunner.js +2 -1
  826. package/dist/unstable/cluster/SingleRunner.js.map +1 -1
  827. package/dist/unstable/cluster/Singleton.js.map +1 -1
  828. package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
  829. package/dist/unstable/cluster/SingletonAddress.js +1 -1
  830. package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
  831. package/dist/unstable/cluster/Snowflake.d.ts +8 -8
  832. package/dist/unstable/cluster/Snowflake.js +8 -8
  833. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  834. package/dist/unstable/cluster/SocketRunner.js.map +1 -1
  835. package/dist/unstable/cluster/SqlMessageStorage.d.ts +7 -4
  836. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  837. package/dist/unstable/cluster/SqlMessageStorage.js +56 -25
  838. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  839. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  840. package/dist/unstable/cluster/SqlRunnerStorage.js +127 -65
  841. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  842. package/dist/unstable/cluster/TestRunner.js.map +1 -1
  843. package/dist/unstable/cluster/index.js.map +1 -1
  844. package/dist/unstable/cluster/internal/entityManager.js +24 -12
  845. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  846. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  847. package/dist/unstable/cluster/internal/hash.js.map +1 -1
  848. package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
  849. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  850. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  851. package/dist/unstable/cluster/internal/shardLock.d.ts +2 -0
  852. package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
  853. package/dist/unstable/cluster/internal/shardLock.js +4 -0
  854. package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
  855. package/dist/unstable/devtools/DevTools.js.map +1 -1
  856. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  857. package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
  858. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  859. package/dist/unstable/devtools/DevToolsSchema.js +8 -5
  860. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  861. package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
  862. package/dist/unstable/devtools/index.js.map +1 -1
  863. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  864. package/dist/unstable/encoding/Msgpack.js +6 -8
  865. package/dist/unstable/encoding/Msgpack.js.map +1 -1
  866. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  867. package/dist/unstable/encoding/Sse.d.ts +72 -8
  868. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  869. package/dist/unstable/encoding/Sse.js +58 -8
  870. package/dist/unstable/encoding/Sse.js.map +1 -1
  871. package/dist/unstable/encoding/index.js.map +1 -1
  872. package/dist/unstable/eventlog/Event.d.ts +20 -20
  873. package/dist/unstable/eventlog/Event.js.map +1 -1
  874. package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
  875. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  876. package/dist/unstable/eventlog/EventJournal.d.ts +16 -16
  877. package/dist/unstable/eventlog/EventJournal.js +14 -14
  878. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  879. package/dist/unstable/eventlog/EventLog.d.ts +3 -3
  880. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  881. package/dist/unstable/eventlog/EventLog.js +18 -14
  882. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  883. package/dist/unstable/eventlog/EventLogEncryption.d.ts +2 -2
  884. package/dist/unstable/eventlog/EventLogEncryption.js +2 -2
  885. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  886. package/dist/unstable/eventlog/EventLogMessage.d.ts +6 -6
  887. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  888. package/dist/unstable/eventlog/EventLogMessage.js +9 -4
  889. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  890. package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
  891. package/dist/unstable/eventlog/EventLogRemote.js +1 -1
  892. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  893. package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
  894. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  895. package/dist/unstable/eventlog/EventLogServer.js +45 -21
  896. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  897. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
  898. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  899. package/dist/unstable/eventlog/EventLogServerEncrypted.js +13 -5
  900. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
  901. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
  902. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  903. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +14 -6
  904. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  905. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
  906. package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
  907. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
  908. package/dist/unstable/eventlog/SqlEventJournal.js +2 -2
  909. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  910. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
  911. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  912. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
  913. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  914. package/dist/unstable/eventlog/index.js.map +1 -1
  915. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  916. package/dist/unstable/http/Cookies.d.ts +2 -2
  917. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  918. package/dist/unstable/http/Cookies.js +54 -40
  919. package/dist/unstable/http/Cookies.js.map +1 -1
  920. package/dist/unstable/http/Etag.d.ts +1 -1
  921. package/dist/unstable/http/Etag.js +1 -1
  922. package/dist/unstable/http/Etag.js.map +1 -1
  923. package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
  924. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  925. package/dist/unstable/http/Headers.d.ts +2 -2
  926. package/dist/unstable/http/Headers.js +10 -10
  927. package/dist/unstable/http/Headers.js.map +1 -1
  928. package/dist/unstable/http/HttpBody.d.ts +5 -3
  929. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  930. package/dist/unstable/http/HttpBody.js +11 -5
  931. package/dist/unstable/http/HttpBody.js.map +1 -1
  932. package/dist/unstable/http/HttpClient.d.ts +51 -44
  933. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  934. package/dist/unstable/http/HttpClient.js +46 -17
  935. package/dist/unstable/http/HttpClient.js.map +1 -1
  936. package/dist/unstable/http/HttpClientError.js.map +1 -1
  937. package/dist/unstable/http/HttpClientRequest.d.ts +44 -0
  938. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  939. package/dist/unstable/http/HttpClientRequest.js +16 -0
  940. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  941. package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
  942. package/dist/unstable/http/HttpClientResponse.js +2 -2
  943. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  944. package/dist/unstable/http/HttpEffect.d.ts +6 -6
  945. package/dist/unstable/http/HttpEffect.js +3 -3
  946. package/dist/unstable/http/HttpEffect.js.map +1 -1
  947. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  948. package/dist/unstable/http/HttpMethod.d.ts +6 -9
  949. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  950. package/dist/unstable/http/HttpMethod.js +6 -9
  951. package/dist/unstable/http/HttpMethod.js.map +1 -1
  952. package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
  953. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  954. package/dist/unstable/http/HttpMiddleware.js +164 -39
  955. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  956. package/dist/unstable/http/HttpPlatform.d.ts +76 -0
  957. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  958. package/dist/unstable/http/HttpPlatform.js +32 -0
  959. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  960. package/dist/unstable/http/HttpRouter.d.ts +88 -89
  961. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  962. package/dist/unstable/http/HttpRouter.js +78 -79
  963. package/dist/unstable/http/HttpRouter.js.map +1 -1
  964. package/dist/unstable/http/HttpServer.d.ts +13 -13
  965. package/dist/unstable/http/HttpServer.js +6 -6
  966. package/dist/unstable/http/HttpServer.js.map +1 -1
  967. package/dist/unstable/http/HttpServerError.d.ts +2 -2
  968. package/dist/unstable/http/HttpServerError.js +2 -2
  969. package/dist/unstable/http/HttpServerError.js.map +1 -1
  970. package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
  971. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  972. package/dist/unstable/http/HttpServerRequest.js +9 -8
  973. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  974. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  975. package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
  976. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  977. package/dist/unstable/http/HttpServerResponse.js +10 -0
  978. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  979. package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
  980. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  981. package/dist/unstable/http/HttpStaticServer.js +35 -7
  982. package/dist/unstable/http/HttpStaticServer.js.map +1 -1
  983. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  984. package/dist/unstable/http/Multipart.d.ts +6 -6
  985. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  986. package/dist/unstable/http/Multipart.js +22 -20
  987. package/dist/unstable/http/Multipart.js.map +1 -1
  988. package/dist/unstable/http/Template.js +1 -1
  989. package/dist/unstable/http/Template.js.map +1 -1
  990. package/dist/unstable/http/Url.d.ts +33 -63
  991. package/dist/unstable/http/Url.d.ts.map +1 -1
  992. package/dist/unstable/http/Url.js +14 -28
  993. package/dist/unstable/http/Url.js.map +1 -1
  994. package/dist/unstable/http/UrlParams.d.ts +10 -18
  995. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  996. package/dist/unstable/http/UrlParams.js +26 -31
  997. package/dist/unstable/http/UrlParams.js.map +1 -1
  998. package/dist/unstable/http/index.js.map +1 -1
  999. package/dist/unstable/http/internal/compression.d.ts +2 -0
  1000. package/dist/unstable/http/internal/compression.d.ts.map +1 -0
  1001. package/dist/unstable/http/internal/compression.js +155 -0
  1002. package/dist/unstable/http/internal/compression.js.map +1 -0
  1003. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
  1004. package/dist/unstable/httpapi/HttpApi.js +3 -3
  1005. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  1006. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
  1007. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  1008. package/dist/unstable/httpapi/HttpApiBuilder.js +10 -11
  1009. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  1010. package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
  1011. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  1012. package/dist/unstable/httpapi/HttpApiClient.js +16 -18
  1013. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  1014. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +42 -42
  1015. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  1016. package/dist/unstable/httpapi/HttpApiError.d.ts +13 -13
  1017. package/dist/unstable/httpapi/HttpApiError.js +13 -13
  1018. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  1019. package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
  1020. package/dist/unstable/httpapi/HttpApiGroup.js +1 -1
  1021. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  1022. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
  1023. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  1024. package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
  1025. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  1026. package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
  1027. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  1028. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  1029. package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -6
  1030. package/dist/unstable/httpapi/HttpApiSchema.js +4 -4
  1031. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  1032. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  1033. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  1034. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  1035. package/dist/unstable/httpapi/OpenApi.d.ts +13 -13
  1036. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  1037. package/dist/unstable/httpapi/OpenApi.js +50 -37
  1038. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  1039. package/dist/unstable/httpapi/index.js.map +1 -1
  1040. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  1041. package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
  1042. package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
  1043. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
  1044. package/dist/unstable/observability/Otlp.js.map +1 -1
  1045. package/dist/unstable/observability/OtlpExporter.d.ts +70 -1
  1046. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  1047. package/dist/unstable/observability/OtlpExporter.js +84 -6
  1048. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  1049. package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
  1050. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  1051. package/dist/unstable/observability/OtlpLogger.js +2 -2
  1052. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  1053. package/dist/unstable/observability/OtlpMetrics.d.ts +11 -4
  1054. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  1055. package/dist/unstable/observability/OtlpMetrics.js +5 -2
  1056. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  1057. package/dist/unstable/observability/OtlpResource.d.ts +16 -7
  1058. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  1059. package/dist/unstable/observability/OtlpResource.js +21 -12
  1060. package/dist/unstable/observability/OtlpResource.js.map +1 -1
  1061. package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
  1062. package/dist/unstable/observability/OtlpTracer.d.ts +4 -3
  1063. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  1064. package/dist/unstable/observability/OtlpTracer.js +2 -2
  1065. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  1066. package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
  1067. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  1068. package/dist/unstable/observability/PrometheusMetrics.js +10 -3
  1069. package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
  1070. package/dist/unstable/observability/index.js.map +1 -1
  1071. package/dist/unstable/observability/internal/otlpEnv.js +1 -1
  1072. package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
  1073. package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
  1074. package/dist/unstable/observability/internal/protobuf.js +3 -0
  1075. package/dist/unstable/observability/internal/protobuf.js.map +1 -1
  1076. package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
  1077. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  1078. package/dist/unstable/persistence/KeyValueStore.js +22 -13
  1079. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  1080. package/dist/unstable/persistence/Persistable.d.ts +8 -8
  1081. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  1082. package/dist/unstable/persistence/Persistable.js +2 -1
  1083. package/dist/unstable/persistence/Persistable.js.map +1 -1
  1084. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  1085. package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
  1086. package/dist/unstable/persistence/PersistedQueue.js +6 -6
  1087. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  1088. package/dist/unstable/persistence/Persistence.d.ts +3 -3
  1089. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  1090. package/dist/unstable/persistence/Persistence.js +91 -15
  1091. package/dist/unstable/persistence/Persistence.js.map +1 -1
  1092. package/dist/unstable/persistence/RateLimiter.d.ts +28 -17
  1093. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  1094. package/dist/unstable/persistence/RateLimiter.js +26 -15
  1095. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  1096. package/dist/unstable/persistence/Redis.d.ts +2 -2
  1097. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  1098. package/dist/unstable/persistence/Redis.js +3 -3
  1099. package/dist/unstable/persistence/Redis.js.map +1 -1
  1100. package/dist/unstable/persistence/index.js.map +1 -1
  1101. package/dist/unstable/process/ChildProcess.d.ts +64 -21
  1102. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  1103. package/dist/unstable/process/ChildProcess.js +14 -5
  1104. package/dist/unstable/process/ChildProcess.js.map +1 -1
  1105. package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
  1106. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  1107. package/dist/unstable/process/ChildProcessSpawner.js +4 -2
  1108. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  1109. package/dist/unstable/process/index.js.map +1 -1
  1110. package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
  1111. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  1112. package/dist/unstable/reactivity/AsyncResult.js +14 -13
  1113. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  1114. package/dist/unstable/reactivity/Atom.d.ts +105 -19
  1115. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  1116. package/dist/unstable/reactivity/Atom.js +44 -12
  1117. package/dist/unstable/reactivity/Atom.js.map +1 -1
  1118. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  1119. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  1120. package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
  1121. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  1122. package/dist/unstable/reactivity/AtomRef.js.map +1 -1
  1123. package/dist/unstable/reactivity/AtomRegistry.js +25 -4
  1124. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  1125. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  1126. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  1127. package/dist/unstable/reactivity/AtomRpc.js +4 -1
  1128. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  1129. package/dist/unstable/reactivity/Hydration.d.ts +1 -1
  1130. package/dist/unstable/reactivity/Hydration.js +1 -1
  1131. package/dist/unstable/reactivity/Hydration.js.map +1 -1
  1132. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  1133. package/dist/unstable/reactivity/index.js.map +1 -1
  1134. package/dist/unstable/rpc/Rpc.d.ts +35 -33
  1135. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  1136. package/dist/unstable/rpc/Rpc.js +4 -2
  1137. package/dist/unstable/rpc/Rpc.js.map +1 -1
  1138. package/dist/unstable/rpc/RpcClient.d.ts +12 -12
  1139. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  1140. package/dist/unstable/rpc/RpcClient.js +14 -12
  1141. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  1142. package/dist/unstable/rpc/RpcClientError.js.map +1 -1
  1143. package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
  1144. package/dist/unstable/rpc/RpcGroup.js +1 -1
  1145. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  1146. package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
  1147. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  1148. package/dist/unstable/rpc/RpcMessage.js +6 -6
  1149. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  1150. package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
  1151. package/dist/unstable/rpc/RpcMiddleware.js +1 -1
  1152. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  1153. package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
  1154. package/dist/unstable/rpc/RpcSchema.js +3 -3
  1155. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  1156. package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
  1157. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  1158. package/dist/unstable/rpc/RpcSerialization.js +175 -96
  1159. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  1160. package/dist/unstable/rpc/RpcServer.d.ts +13 -13
  1161. package/dist/unstable/rpc/RpcServer.js +17 -13
  1162. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  1163. package/dist/unstable/rpc/RpcTest.js.map +1 -1
  1164. package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
  1165. package/dist/unstable/rpc/RpcWorker.js +4 -4
  1166. package/dist/unstable/rpc/RpcWorker.js.map +1 -1
  1167. package/dist/unstable/rpc/Utils.js.map +1 -1
  1168. package/dist/unstable/rpc/index.js.map +1 -1
  1169. package/dist/unstable/schema/Model.d.ts +52 -50
  1170. package/dist/unstable/schema/Model.d.ts.map +1 -1
  1171. package/dist/unstable/schema/Model.js +35 -33
  1172. package/dist/unstable/schema/Model.js.map +1 -1
  1173. package/dist/unstable/schema/VariantSchema.d.ts +6 -7
  1174. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  1175. package/dist/unstable/schema/VariantSchema.js +15 -12
  1176. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  1177. package/dist/unstable/schema/index.js.map +1 -1
  1178. package/dist/unstable/socket/Socket.d.ts +12 -4
  1179. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  1180. package/dist/unstable/socket/Socket.js +10 -5
  1181. package/dist/unstable/socket/Socket.js.map +1 -1
  1182. package/dist/unstable/socket/SocketServer.js.map +1 -1
  1183. package/dist/unstable/socket/index.js.map +1 -1
  1184. package/dist/unstable/sql/Migrator.js.map +1 -1
  1185. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  1186. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  1187. package/dist/unstable/sql/SqlClient.js +2 -2
  1188. package/dist/unstable/sql/SqlClient.js.map +1 -1
  1189. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  1190. package/dist/unstable/sql/SqlError.d.ts +2 -2
  1191. package/dist/unstable/sql/SqlError.js +2 -2
  1192. package/dist/unstable/sql/SqlError.js.map +1 -1
  1193. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  1194. package/dist/unstable/sql/SqlModel.js +2 -2
  1195. package/dist/unstable/sql/SqlModel.js.map +1 -1
  1196. package/dist/unstable/sql/SqlResolver.d.ts +5 -5
  1197. package/dist/unstable/sql/SqlResolver.js +2 -2
  1198. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  1199. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  1200. package/dist/unstable/sql/SqlStream.js.map +1 -1
  1201. package/dist/unstable/sql/Statement.d.ts +6 -6
  1202. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  1203. package/dist/unstable/sql/Statement.js +22 -21
  1204. package/dist/unstable/sql/Statement.js.map +1 -1
  1205. package/dist/unstable/sql/index.js.map +1 -1
  1206. package/dist/unstable/workers/Transferable.d.ts +1 -1
  1207. package/dist/unstable/workers/Transferable.js +1 -1
  1208. package/dist/unstable/workers/Transferable.js.map +1 -1
  1209. package/dist/unstable/workers/Worker.d.ts +2 -2
  1210. package/dist/unstable/workers/Worker.js +2 -2
  1211. package/dist/unstable/workers/Worker.js.map +1 -1
  1212. package/dist/unstable/workers/WorkerError.d.ts +7 -7
  1213. package/dist/unstable/workers/WorkerError.js +6 -6
  1214. package/dist/unstable/workers/WorkerError.js.map +1 -1
  1215. package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
  1216. package/dist/unstable/workers/WorkerRunner.js +1 -1
  1217. package/dist/unstable/workers/WorkerRunner.js.map +1 -1
  1218. package/dist/unstable/workers/index.js.map +1 -1
  1219. package/dist/unstable/workflow/Activity.d.ts +2 -2
  1220. package/dist/unstable/workflow/Activity.js +2 -2
  1221. package/dist/unstable/workflow/Activity.js.map +1 -1
  1222. package/dist/unstable/workflow/DurableClock.d.ts +1 -1
  1223. package/dist/unstable/workflow/DurableClock.js +1 -1
  1224. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  1225. package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
  1226. package/dist/unstable/workflow/DurableDeferred.js +5 -5
  1227. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  1228. package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
  1229. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  1230. package/dist/unstable/workflow/DurableQueue.js +22 -20
  1231. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  1232. package/dist/unstable/workflow/Workflow.d.ts +21 -21
  1233. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  1234. package/dist/unstable/workflow/Workflow.js +13 -14
  1235. package/dist/unstable/workflow/Workflow.js.map +1 -1
  1236. package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
  1237. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  1238. package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
  1239. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  1240. package/dist/unstable/workflow/WorkflowProxy.js +4 -2
  1241. package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
  1242. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  1243. package/dist/unstable/workflow/index.js.map +1 -1
  1244. package/dist/unstable/workflow/internal/crypto.js.map +1 -1
  1245. package/package.json +5 -6
  1246. package/src/Array.ts +1068 -1070
  1247. package/src/BigDecimal.ts +433 -756
  1248. package/src/BigInt.ts +213 -269
  1249. package/src/Boolean.ts +146 -188
  1250. package/src/Cache.ts +409 -255
  1251. package/src/Cause.ts +167 -277
  1252. package/src/Channel.ts +923 -830
  1253. package/src/ChannelSchema.ts +1 -1
  1254. package/src/Chunk.ts +841 -1181
  1255. package/src/Clock.ts +181 -49
  1256. package/src/Combiner.ts +20 -33
  1257. package/src/Config.ts +618 -334
  1258. package/src/ConfigProvider.ts +221 -127
  1259. package/src/Console.ts +289 -39
  1260. package/src/Context.ts +319 -378
  1261. package/src/Cron.ts +68 -77
  1262. package/src/Crypto.ts +13 -15
  1263. package/src/Data.ts +63 -82
  1264. package/src/DateTime.ts +564 -660
  1265. package/src/Deferred.ts +253 -256
  1266. package/src/Duration.ts +216 -308
  1267. package/src/Effect.ts +2958 -3390
  1268. package/src/Encoding.ts +22 -40
  1269. package/src/Equal.ts +49 -39
  1270. package/src/Equivalence.ts +103 -105
  1271. package/src/ErrorReporter.ts +51 -27
  1272. package/src/ExecutionPlan.ts +13 -55
  1273. package/src/Exit.ts +116 -192
  1274. package/src/Fiber.ts +81 -148
  1275. package/src/FiberHandle.ts +155 -107
  1276. package/src/FiberMap.ts +225 -174
  1277. package/src/FiberSet.ts +124 -82
  1278. package/src/FileSystem.ts +155 -263
  1279. package/src/Filter.ts +61 -33
  1280. package/src/Formatter.ts +54 -56
  1281. package/src/Function.ts +76 -145
  1282. package/src/Graph.ts +416 -770
  1283. package/src/HKT.ts +12 -6
  1284. package/src/Hash.ts +52 -83
  1285. package/src/HashMap.ts +319 -411
  1286. package/src/HashRing.ts +1 -0
  1287. package/src/HashSet.ts +177 -284
  1288. package/src/Inspectable.ts +12 -12
  1289. package/src/Iterable.ts +622 -787
  1290. package/src/JsonPatch.ts +60 -113
  1291. package/src/JsonPointer.ts +8 -8
  1292. package/src/JsonSchema.ts +405 -249
  1293. package/src/Latch.ts +23 -35
  1294. package/src/Layer.ts +359 -260
  1295. package/src/LayerMap.ts +49 -29
  1296. package/src/LayerRef.ts +6 -2
  1297. package/src/LogLevel.ts +114 -214
  1298. package/src/Logger.ts +347 -699
  1299. package/src/ManagedRuntime.ts +20 -5
  1300. package/src/Match.ts +217 -252
  1301. package/src/Metric.ts +520 -1092
  1302. package/src/MutableHashMap.ts +218 -255
  1303. package/src/MutableHashSet.ts +84 -89
  1304. package/src/MutableList.ts +73 -370
  1305. package/src/MutableRef.ts +420 -243
  1306. package/src/Newtype.ts +21 -14
  1307. package/src/NonEmptyIterable.ts +7 -137
  1308. package/src/Number.ts +196 -233
  1309. package/src/Optic.ts +246 -385
  1310. package/src/Option.ts +449 -813
  1311. package/src/Order.ts +109 -109
  1312. package/src/Ordering.ts +20 -23
  1313. package/src/PartitionedSemaphore.ts +1 -4
  1314. package/src/Path.ts +38 -41
  1315. package/src/Pipeable.ts +6 -5
  1316. package/src/PlatformError.ts +4 -4
  1317. package/src/Pool.ts +4 -2
  1318. package/src/Predicate.ts +200 -181
  1319. package/src/PrimaryKey.ts +7 -7
  1320. package/src/PubSub.ts +526 -552
  1321. package/src/Pull.ts +24 -18
  1322. package/src/Queue.ts +200 -159
  1323. package/src/Random.ts +49 -74
  1324. package/src/RcMap.ts +121 -63
  1325. package/src/RcRef.ts +24 -13
  1326. package/src/Record.ts +387 -487
  1327. package/src/Redactable.ts +10 -3
  1328. package/src/Redacted.ts +25 -25
  1329. package/src/Reducer.ts +8 -15
  1330. package/src/Ref.ts +221 -361
  1331. package/src/References.ts +102 -214
  1332. package/src/RegExp.ts +10 -14
  1333. package/src/Request.ts +36 -28
  1334. package/src/RequestResolver.ts +202 -91
  1335. package/src/Result.ts +314 -485
  1336. package/src/Runtime.ts +50 -75
  1337. package/src/Schedule.ts +308 -1734
  1338. package/src/Scheduler.ts +20 -7
  1339. package/src/Schema.ts +3156 -1634
  1340. package/src/SchemaAST.ts +676 -489
  1341. package/src/SchemaError.ts +8 -7
  1342. package/src/SchemaGetter.ts +277 -218
  1343. package/src/SchemaIssue.ts +90 -276
  1344. package/src/SchemaParser.ts +179 -116
  1345. package/src/SchemaRepresentation.ts +698 -3417
  1346. package/src/SchemaTransformation.ts +132 -91
  1347. package/src/Scope.ts +123 -151
  1348. package/src/ScopedRef.ts +4 -4
  1349. package/src/Semaphore.ts +157 -54
  1350. package/src/Sink.ts +128 -113
  1351. package/src/Stdio.ts +1 -1
  1352. package/src/Stream.ts +2665 -3142
  1353. package/src/String.ts +275 -312
  1354. package/src/Struct.ts +114 -118
  1355. package/src/SubscriptionRef.ts +284 -252
  1356. package/src/Symbol.ts +3 -3
  1357. package/src/Terminal.ts +2 -2
  1358. package/src/Tracer.ts +102 -55
  1359. package/src/Trie.ts +287 -679
  1360. package/src/Tuple.ts +92 -127
  1361. package/src/TxChunk.ts +201 -121
  1362. package/src/TxDeferred.ts +62 -46
  1363. package/src/TxHashMap.ts +645 -799
  1364. package/src/TxHashSet.ts +443 -356
  1365. package/src/TxPriorityQueue.ts +130 -98
  1366. package/src/TxPubSub.ts +107 -80
  1367. package/src/TxQueue.ts +214 -183
  1368. package/src/TxReentrantLock.ts +97 -66
  1369. package/src/TxRef.ts +51 -32
  1370. package/src/TxSemaphore.ts +129 -95
  1371. package/src/TxSubscriptionRef.ts +97 -70
  1372. package/src/Types.ts +127 -70
  1373. package/src/Unify.ts +45 -65
  1374. package/src/Utils.ts +23 -16
  1375. package/src/index.ts +0 -5
  1376. package/src/internal/core.ts +5 -4
  1377. package/src/internal/dateTime.ts +6 -0
  1378. package/src/internal/effect.ts +160 -79
  1379. package/src/internal/matcher.ts +1 -1
  1380. package/src/internal/persistence.ts +2 -0
  1381. package/src/internal/record.ts +11 -7
  1382. package/src/internal/references.ts +3 -7
  1383. package/src/internal/schema/annotations.ts +44 -0
  1384. package/src/internal/schema/fromJsonSchemaDocument.ts +959 -0
  1385. package/src/internal/schema/fromRepresentation.ts +339 -0
  1386. package/src/internal/schema/parser.ts +22 -0
  1387. package/src/internal/schema/schema.ts +45 -46
  1388. package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +8 -10
  1389. package/src/internal/schema/toCodeDocument.ts +572 -0
  1390. package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
  1391. package/src/internal/schema/toJsonSchemaDocument.ts +529 -0
  1392. package/src/internal/schema/toRepresentation.ts +386 -0
  1393. package/src/internal/stackTraceLimit.ts +3 -7
  1394. package/src/internal/trie.ts +10 -11
  1395. package/src/testing/FastCheck.ts +8 -7
  1396. package/src/testing/TestClock.ts +73 -31
  1397. package/src/testing/TestConsole.ts +32 -31
  1398. package/src/testing/TestSchema.ts +29 -29
  1399. package/src/unstable/ai/AiError.ts +100 -122
  1400. package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
  1401. package/src/unstable/ai/Chat.ts +132 -97
  1402. package/src/unstable/ai/EmbeddingModel.ts +1 -1
  1403. package/src/unstable/ai/IdGenerator.ts +32 -28
  1404. package/src/unstable/ai/LanguageModel.ts +137 -95
  1405. package/src/unstable/ai/McpProtocol.ts +48 -0
  1406. package/src/unstable/ai/McpSchema.ts +75 -65
  1407. package/src/unstable/ai/McpServer.ts +1045 -303
  1408. package/src/unstable/ai/Model.ts +9 -20
  1409. package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
  1410. package/src/unstable/ai/Prompt.ts +145 -43
  1411. package/src/unstable/ai/Response.ts +52 -38
  1412. package/src/unstable/ai/Telemetry.ts +46 -13
  1413. package/src/unstable/ai/Tokenizer.ts +14 -3
  1414. package/src/unstable/ai/Tool.ts +81 -48
  1415. package/src/unstable/ai/Toolkit.ts +45 -15
  1416. package/src/unstable/ai/index.ts +5 -0
  1417. package/src/unstable/ai/internal/codec-transformer.ts +13 -7
  1418. package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
  1419. package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
  1420. package/src/unstable/ai/internal/structured-output.ts +453 -0
  1421. package/src/unstable/cli/Argument.ts +273 -69
  1422. package/src/unstable/cli/CliError.ts +116 -77
  1423. package/src/unstable/cli/CliOutput.ts +44 -58
  1424. package/src/unstable/cli/Command.ts +709 -111
  1425. package/src/unstable/cli/Flag.ts +418 -138
  1426. package/src/unstable/cli/GlobalFlag.ts +1 -1
  1427. package/src/unstable/cli/HelpDoc.ts +12 -4
  1428. package/src/unstable/cli/Param.ts +295 -81
  1429. package/src/unstable/cli/Primitive.ts +371 -150
  1430. package/src/unstable/cli/Prompt.ts +28 -14
  1431. package/src/unstable/cli/internal/command.ts +13 -5
  1432. package/src/unstable/cli/internal/config.ts +8 -10
  1433. package/src/unstable/cli/internal/lexer.ts +8 -2
  1434. package/src/unstable/cli/internal/parser.ts +2 -2
  1435. package/src/unstable/cluster/ClusterSchema.ts +8 -8
  1436. package/src/unstable/cluster/ClusterWorkflowEngine.ts +8 -4
  1437. package/src/unstable/cluster/Entity.ts +16 -17
  1438. package/src/unstable/cluster/EntityProxy.ts +4 -2
  1439. package/src/unstable/cluster/EntityResource.ts +2 -2
  1440. package/src/unstable/cluster/Envelope.ts +5 -4
  1441. package/src/unstable/cluster/HttpRunner.ts +6 -4
  1442. package/src/unstable/cluster/Message.ts +9 -9
  1443. package/src/unstable/cluster/MessageStorage.ts +15 -15
  1444. package/src/unstable/cluster/Reply.ts +5 -7
  1445. package/src/unstable/cluster/Runner.ts +1 -1
  1446. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  1447. package/src/unstable/cluster/RunnerHealth.ts +1 -1
  1448. package/src/unstable/cluster/RunnerServer.ts +41 -8
  1449. package/src/unstable/cluster/RunnerStorage.ts +2 -2
  1450. package/src/unstable/cluster/Runners.ts +23 -12
  1451. package/src/unstable/cluster/ShardId.ts +1 -1
  1452. package/src/unstable/cluster/Sharding.ts +168 -42
  1453. package/src/unstable/cluster/ShardingConfig.ts +8 -4
  1454. package/src/unstable/cluster/SingleRunner.ts +4 -2
  1455. package/src/unstable/cluster/SingletonAddress.ts +1 -1
  1456. package/src/unstable/cluster/Snowflake.ts +8 -8
  1457. package/src/unstable/cluster/SqlMessageStorage.ts +84 -36
  1458. package/src/unstable/cluster/SqlRunnerStorage.ts +205 -119
  1459. package/src/unstable/cluster/internal/entityManager.ts +42 -25
  1460. package/src/unstable/cluster/internal/shardLock.ts +9 -0
  1461. package/src/unstable/devtools/DevToolsSchema.ts +10 -5
  1462. package/src/unstable/encoding/Msgpack.ts +6 -8
  1463. package/src/unstable/encoding/Sse.ts +98 -16
  1464. package/src/unstable/eventlog/Event.ts +20 -20
  1465. package/src/unstable/eventlog/EventGroup.ts +4 -4
  1466. package/src/unstable/eventlog/EventJournal.ts +16 -16
  1467. package/src/unstable/eventlog/EventLog.ts +24 -14
  1468. package/src/unstable/eventlog/EventLogEncryption.ts +2 -2
  1469. package/src/unstable/eventlog/EventLogMessage.ts +12 -5
  1470. package/src/unstable/eventlog/EventLogRemote.ts +1 -1
  1471. package/src/unstable/eventlog/EventLogServer.ts +41 -7
  1472. package/src/unstable/eventlog/EventLogServerEncrypted.ts +13 -5
  1473. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +14 -6
  1474. package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
  1475. package/src/unstable/eventlog/SqlEventJournal.ts +2 -2
  1476. package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
  1477. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
  1478. package/src/unstable/http/Cookies.ts +64 -45
  1479. package/src/unstable/http/Etag.ts +1 -1
  1480. package/src/unstable/http/FetchHttpClient.ts +3 -1
  1481. package/src/unstable/http/Headers.ts +10 -10
  1482. package/src/unstable/http/HttpBody.ts +20 -5
  1483. package/src/unstable/http/HttpClient.ts +83 -55
  1484. package/src/unstable/http/HttpClientRequest.ts +59 -0
  1485. package/src/unstable/http/HttpClientResponse.ts +4 -4
  1486. package/src/unstable/http/HttpEffect.ts +8 -8
  1487. package/src/unstable/http/HttpMethod.ts +6 -9
  1488. package/src/unstable/http/HttpMiddleware.ts +202 -39
  1489. package/src/unstable/http/HttpPlatform.ts +95 -0
  1490. package/src/unstable/http/HttpRouter.ts +102 -98
  1491. package/src/unstable/http/HttpServer.ts +13 -13
  1492. package/src/unstable/http/HttpServerError.ts +2 -2
  1493. package/src/unstable/http/HttpServerRequest.ts +9 -8
  1494. package/src/unstable/http/HttpServerResponse.ts +30 -0
  1495. package/src/unstable/http/HttpStaticServer.ts +35 -7
  1496. package/src/unstable/http/Multipart.ts +22 -19
  1497. package/src/unstable/http/Template.ts +1 -1
  1498. package/src/unstable/http/Url.ts +33 -63
  1499. package/src/unstable/http/UrlParams.ts +27 -32
  1500. package/src/unstable/http/internal/compression.ts +196 -0
  1501. package/src/unstable/httpapi/HttpApi.ts +3 -3
  1502. package/src/unstable/httpapi/HttpApiBuilder.ts +10 -9
  1503. package/src/unstable/httpapi/HttpApiClient.ts +19 -19
  1504. package/src/unstable/httpapi/HttpApiEndpoint.ts +42 -42
  1505. package/src/unstable/httpapi/HttpApiError.ts +13 -13
  1506. package/src/unstable/httpapi/HttpApiGroup.ts +16 -16
  1507. package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
  1508. package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
  1509. package/src/unstable/httpapi/HttpApiSchema.ts +6 -6
  1510. package/src/unstable/httpapi/OpenApi.ts +65 -41
  1511. package/src/unstable/observability/OtlpExporter.ts +126 -10
  1512. package/src/unstable/observability/OtlpLogger.ts +5 -5
  1513. package/src/unstable/observability/OtlpMetrics.ts +12 -5
  1514. package/src/unstable/observability/OtlpResource.ts +26 -17
  1515. package/src/unstable/observability/OtlpTracer.ts +8 -4
  1516. package/src/unstable/observability/PrometheusMetrics.ts +13 -4
  1517. package/src/unstable/observability/internal/otlpEnv.ts +1 -1
  1518. package/src/unstable/observability/internal/protobuf.ts +3 -0
  1519. package/src/unstable/persistence/KeyValueStore.ts +72 -49
  1520. package/src/unstable/persistence/Persistable.ts +11 -10
  1521. package/src/unstable/persistence/PersistedQueue.ts +6 -6
  1522. package/src/unstable/persistence/Persistence.ts +126 -19
  1523. package/src/unstable/persistence/RateLimiter.ts +28 -17
  1524. package/src/unstable/persistence/Redis.ts +4 -4
  1525. package/src/unstable/process/ChildProcess.ts +64 -21
  1526. package/src/unstable/process/ChildProcessSpawner.ts +22 -11
  1527. package/src/unstable/reactivity/AsyncResult.ts +16 -16
  1528. package/src/unstable/reactivity/Atom.ts +117 -22
  1529. package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
  1530. package/src/unstable/reactivity/AtomRegistry.ts +25 -4
  1531. package/src/unstable/reactivity/AtomRpc.ts +5 -4
  1532. package/src/unstable/reactivity/Hydration.ts +1 -1
  1533. package/src/unstable/rpc/Rpc.ts +35 -33
  1534. package/src/unstable/rpc/RpcClient.ts +18 -16
  1535. package/src/unstable/rpc/RpcGroup.ts +8 -8
  1536. package/src/unstable/rpc/RpcMessage.ts +31 -30
  1537. package/src/unstable/rpc/RpcMiddleware.ts +10 -10
  1538. package/src/unstable/rpc/RpcSchema.ts +4 -4
  1539. package/src/unstable/rpc/RpcSerialization.ts +167 -68
  1540. package/src/unstable/rpc/RpcServer.ts +18 -15
  1541. package/src/unstable/rpc/RpcWorker.ts +5 -5
  1542. package/src/unstable/schema/Model.ts +52 -50
  1543. package/src/unstable/schema/VariantSchema.ts +19 -29
  1544. package/src/unstable/socket/Socket.ts +18 -5
  1545. package/src/unstable/sql/SqlClient.ts +5 -6
  1546. package/src/unstable/sql/SqlError.ts +2 -2
  1547. package/src/unstable/sql/SqlModel.ts +2 -2
  1548. package/src/unstable/sql/SqlResolver.ts +5 -5
  1549. package/src/unstable/sql/Statement.ts +31 -29
  1550. package/src/unstable/workers/Transferable.ts +1 -1
  1551. package/src/unstable/workers/Worker.ts +2 -2
  1552. package/src/unstable/workers/WorkerError.ts +7 -7
  1553. package/src/unstable/workers/WorkerRunner.ts +1 -1
  1554. package/src/unstable/workflow/Activity.ts +2 -2
  1555. package/src/unstable/workflow/DurableClock.ts +1 -1
  1556. package/src/unstable/workflow/DurableDeferred.ts +10 -10
  1557. package/src/unstable/workflow/DurableQueue.ts +22 -20
  1558. package/src/unstable/workflow/Workflow.ts +23 -23
  1559. package/src/unstable/workflow/WorkflowEngine.ts +1 -1
  1560. package/src/unstable/workflow/WorkflowProxy.ts +4 -2
  1561. package/dist/SchemaUtils.d.ts +0 -28
  1562. package/dist/SchemaUtils.d.ts.map +0 -1
  1563. package/dist/SchemaUtils.js +0 -45
  1564. package/dist/SchemaUtils.js.map +0 -1
  1565. package/dist/internal/schema/arbitrary.d.ts.map +0 -1
  1566. package/dist/internal/schema/arbitrary.js.map +0 -1
  1567. package/dist/internal/schema/equivalence.d.ts +0 -2
  1568. package/dist/internal/schema/equivalence.d.ts.map +0 -1
  1569. package/dist/internal/schema/equivalence.js.map +0 -1
  1570. package/dist/internal/schema/representation.d.ts +0 -2
  1571. package/dist/internal/schema/representation.d.ts.map +0 -1
  1572. package/dist/internal/schema/representation.js +0 -865
  1573. package/dist/internal/schema/representation.js.map +0 -1
  1574. package/dist/internal/version.d.ts +0 -3
  1575. package/dist/internal/version.d.ts.map +0 -1
  1576. package/dist/internal/version.js +0 -2
  1577. package/dist/internal/version.js.map +0 -1
  1578. package/src/SchemaUtils.ts +0 -51
  1579. package/src/internal/schema/representation.ts +0 -795
  1580. package/src/internal/version.ts +0 -2
package/src/Config.ts CHANGED
@@ -12,6 +12,7 @@ import * as ConfigProvider from "./ConfigProvider.ts"
12
12
  import * as Effect from "./Effect.ts"
13
13
  import * as Effectable from "./Effectable.ts"
14
14
  import { dual } from "./Function.ts"
15
+ import * as InternalRecord from "./internal/record.ts"
15
16
  import * as LogLevel_ from "./LogLevel.ts"
16
17
  import * as Option from "./Option.ts"
17
18
  import * as Predicate from "./Predicate.ts"
@@ -35,11 +36,11 @@ const TypeId = "~effect/Config"
35
36
  *
36
37
  * **Example** (Checking Config values)
37
38
  *
38
- * ```ts
39
+ * ```ts import.meta.vitest
39
40
  * import { Config } from "effect"
40
41
  *
41
- * console.log(Config.isConfig(Config.string("HOST"))) // true
42
- * console.log(Config.isConfig("not a config")) // false
42
+ * Config.isConfig(Config.string("HOST")) // => true
43
+ * Config.isConfig("not a config") // => false
43
44
  * ```
44
45
  *
45
46
  * @category guards
@@ -62,7 +63,7 @@ export const isConfig = (u: unknown): u is Config<unknown> => Predicate.hasPrope
62
63
  * (wrong type, out of range, missing key, etc.).
63
64
  *
64
65
  * @see {@link orElse} – recover from a ConfigError
65
- * @see {@link withDefault} – provide a fallback for missing-data errors
66
+ * @see {@link withDefault} – provide a fallback when relevant input is absent
66
67
  *
67
68
  * @category errors
68
69
  * @since 4.0.0
@@ -93,9 +94,7 @@ export class ConfigError {
93
94
  * **Details**
94
95
  *
95
96
  * Key members:
96
- * - `parse(provider, pathPrefix?)` – runs the config against a specific provider.
97
- * The optional path prefix is the logical scope accumulated from outer
98
- * `Config.nested` calls.
97
+ * - `parse(provider)` – runs the config against a specific provider.
99
98
  * - Yieldable – can be yielded inside `Effect.gen`, which automatically
100
99
  * resolves the current `ConfigProvider` from the context.
101
100
  * - Pipeable – supports `.pipe(Config.map(...))` etc.
@@ -107,10 +106,39 @@ export class ConfigError {
107
106
  */
108
107
  export interface Config<out T> extends Effect.Effect<T, ConfigError> {
109
108
  readonly [TypeId]: typeof TypeId
110
- readonly parse: (
111
- provider: ConfigProvider.ConfigProvider,
112
- pathPrefix?: Path
113
- ) => Effect.Effect<T, ConfigError>
109
+ readonly parse: (provider: ConfigProvider.ConfigProvider) => Effect.Effect<T, ConfigError>
110
+ }
111
+
112
+ // Config composition needs to distinguish an absent recipe from a hard failure
113
+ // before the public Effect error channel is finalized. `hasInput` records
114
+ // provider evidence separately from the value, because successful values such
115
+ // as `undefined` and values supplied by defaults are not evidence of input.
116
+ // Hard failures carry the same evidence so recovery cannot erase it.
117
+ interface Resolved<out T> {
118
+ readonly _tag: "Resolved"
119
+ readonly value: T
120
+ readonly hasInput: boolean
121
+ }
122
+
123
+ interface Absent {
124
+ readonly _tag: "Absent"
125
+ readonly error: ConfigError
126
+ }
127
+
128
+ type Resolution<T> = Resolved<T> | Absent
129
+
130
+ interface EvaluationFailure {
131
+ readonly error: ConfigError
132
+ readonly hasInput: boolean
133
+ }
134
+
135
+ type Evaluator<T> = (
136
+ provider: ConfigProvider.ConfigProvider,
137
+ pathPrefix: Path
138
+ ) => Effect.Effect<Resolution<T>, EvaluationFailure>
139
+
140
+ interface ConfigImpl<out T> extends Config<T> {
141
+ readonly evaluator: Evaluator<T>
114
142
  }
115
143
 
116
144
  const Proto = {
@@ -129,13 +157,69 @@ const Proto = {
129
157
  }
130
158
 
131
159
  function make<T>(
132
- parse: (provider: ConfigProvider.ConfigProvider, pathPrefix: Path) => Effect.Effect<T, ConfigError>
160
+ evaluator: Evaluator<T>
133
161
  ): Config<T> {
134
162
  const self = Object.create(Proto)
135
- self.parse = (provider: ConfigProvider.ConfigProvider, pathPrefix: Path = []) => parse(provider, pathPrefix)
163
+ self.evaluator = evaluator
164
+ self.parse = (provider: ConfigProvider.ConfigProvider) =>
165
+ evaluator(provider, []).pipe(
166
+ Effect.mapErrorEager((failure) => failure.error),
167
+ Effect.flatMapEager((resolution) =>
168
+ resolution._tag === "Resolved" ? Effect.succeed(resolution.value) : Effect.fail(resolution.error)
169
+ )
170
+ )
136
171
  return self
137
172
  }
138
173
 
174
+ const evaluateAt = <T>(
175
+ self: Config<T>,
176
+ provider: ConfigProvider.ConfigProvider,
177
+ pathPrefix: Path
178
+ ): Effect.Effect<Resolution<T>, EvaluationFailure> => (self as ConfigImpl<T>).evaluator(provider, pathPrefix)
179
+
180
+ const resolved = <T>(value: T, hasInput: boolean): Resolution<T> => ({
181
+ _tag: "Resolved",
182
+ value,
183
+ hasInput
184
+ })
185
+
186
+ const absent = (error: ConfigError): Absent => ({
187
+ _tag: "Absent",
188
+ error
189
+ })
190
+
191
+ const evaluationFailure = (error: ConfigError, hasInput: boolean): EvaluationFailure => ({
192
+ error,
193
+ hasInput
194
+ })
195
+
196
+ const catchSourceError = <A, E, R>(
197
+ self: Effect.Effect<A, E, R>,
198
+ hasInput: boolean
199
+ ): Effect.Effect<A, E | EvaluationFailure, R> =>
200
+ self.pipe(
201
+ Effect.catchDefect((defect) =>
202
+ defect instanceof ConfigProvider.SourceError
203
+ ? Effect.fail(evaluationFailure(new ConfigError(defect), hasInput))
204
+ : Effect.die(defect)
205
+ )
206
+ )
207
+
208
+ const preserveInputEvidence = <T>(
209
+ self: Effect.Effect<Resolution<T>, EvaluationFailure>,
210
+ hasInput: boolean
211
+ ): Effect.Effect<Resolution<T>, EvaluationFailure> => {
212
+ if (!hasInput) return self
213
+ return self.pipe(
214
+ Effect.mapErrorEager((failure) => evaluationFailure(failure.error, true)),
215
+ Effect.flatMapEager((resolution) =>
216
+ resolution._tag === "Resolved"
217
+ ? Effect.succeed(resolved(resolution.value, true))
218
+ : Effect.fail(evaluationFailure(resolution.error, true))
219
+ )
220
+ )
221
+ }
222
+
139
223
  /**
140
224
  * Transforms the parsed value of a config with a pure function.
141
225
  *
@@ -146,7 +230,7 @@ function make<T>(
146
230
  *
147
231
  * **Example** (Uppercasing a string config)
148
232
  *
149
- * ```ts
233
+ * ```ts import.meta.vitest
150
234
  * import { Config, ConfigProvider, Effect } from "effect"
151
235
  *
152
236
  * const upper = Config.string("name").pipe(
@@ -154,7 +238,7 @@ function make<T>(
154
238
  * )
155
239
  *
156
240
  * const provider = ConfigProvider.fromUnknown({ name: "alice" })
157
- * // Effect.runSync(upper.parse(provider)) // "ALICE"
241
+ * Effect.runSync(upper.parse(provider)) // => "ALICE"
158
242
  * ```
159
243
  *
160
244
  * @see {@link mapOrFail} – when the transformation can fail
@@ -173,7 +257,7 @@ export const map: {
173
257
  *
174
258
  * **Example** (Uppercasing a string config)
175
259
  *
176
- * ```ts
260
+ * ```ts import.meta.vitest
177
261
  * import { Config, ConfigProvider, Effect } from "effect"
178
262
  *
179
263
  * const upper = Config.string("name").pipe(
@@ -181,7 +265,7 @@ export const map: {
181
265
  * )
182
266
  *
183
267
  * const provider = ConfigProvider.fromUnknown({ name: "alice" })
184
- * // Effect.runSync(upper.parse(provider)) // "ALICE"
268
+ * Effect.runSync(upper.parse(provider)) // => "ALICE"
185
269
  * ```
186
270
  *
187
271
  * @see {@link mapOrFail} – when the transformation can fail
@@ -200,7 +284,7 @@ export const map: {
200
284
  *
201
285
  * **Example** (Uppercasing a string config)
202
286
  *
203
- * ```ts
287
+ * ```ts import.meta.vitest
204
288
  * import { Config, ConfigProvider, Effect } from "effect"
205
289
  *
206
290
  * const upper = Config.string("name").pipe(
@@ -208,7 +292,7 @@ export const map: {
208
292
  * )
209
293
  *
210
294
  * const provider = ConfigProvider.fromUnknown({ name: "alice" })
211
- * // Effect.runSync(upper.parse(provider)) // "ALICE"
295
+ * Effect.runSync(upper.parse(provider)) // => "ALICE"
212
296
  * ```
213
297
  *
214
298
  * @see {@link mapOrFail} – when the transformation can fail
@@ -218,7 +302,12 @@ export const map: {
218
302
  */
219
303
  <A, B>(self: Config<A>, f: (a: A) => B): Config<B>
220
304
  } = dual(2, <A, B>(self: Config<A>, f: (a: A) => B): Config<B> => {
221
- return make((provider, pathPrefix) => Effect.map(self.parse(provider, pathPrefix), f))
305
+ return make((provider, pathPrefix) =>
306
+ Effect.map(evaluateAt(self, provider, pathPrefix), (resolution) =>
307
+ resolution._tag === "Resolved"
308
+ ? resolved(f(resolution.value), resolution.hasInput)
309
+ : resolution)
310
+ )
222
311
  })
223
312
 
224
313
  /**
@@ -231,12 +320,14 @@ export const map: {
231
320
  *
232
321
  * **Example** (Wrapping a value in an effectful transformation)
233
322
  *
234
- * ```ts
235
- * import { Config, Effect } from "effect"
323
+ * ```ts import.meta.vitest
324
+ * import { Config, ConfigProvider, Effect } from "effect"
236
325
  *
237
326
  * const trimmed = Config.string("name").pipe(
238
327
  * Config.mapOrFail((s) => Effect.succeed(s.trim()))
239
328
  * )
329
+ * const provider = ConfigProvider.fromUnknown({ name: " Alice " })
330
+ * Effect.runSync(trimmed.parse(provider)) // => "Alice"
240
331
  * ```
241
332
  *
242
333
  * @see {@link map} – when the transformation cannot fail
@@ -255,12 +346,14 @@ export const mapOrFail: {
255
346
  *
256
347
  * **Example** (Wrapping a value in an effectful transformation)
257
348
  *
258
- * ```ts
259
- * import { Config, Effect } from "effect"
349
+ * ```ts import.meta.vitest
350
+ * import { Config, ConfigProvider, Effect } from "effect"
260
351
  *
261
352
  * const trimmed = Config.string("name").pipe(
262
353
  * Config.mapOrFail((s) => Effect.succeed(s.trim()))
263
354
  * )
355
+ * const provider = ConfigProvider.fromUnknown({ name: " Alice " })
356
+ * Effect.runSync(trimmed.parse(provider)) // => "Alice"
264
357
  * ```
265
358
  *
266
359
  * @see {@link map} – when the transformation cannot fail
@@ -279,12 +372,14 @@ export const mapOrFail: {
279
372
  *
280
373
  * **Example** (Wrapping a value in an effectful transformation)
281
374
  *
282
- * ```ts
283
- * import { Config, Effect } from "effect"
375
+ * ```ts import.meta.vitest
376
+ * import { Config, ConfigProvider, Effect } from "effect"
284
377
  *
285
378
  * const trimmed = Config.string("name").pipe(
286
379
  * Config.mapOrFail((s) => Effect.succeed(s.trim()))
287
380
  * )
381
+ * const provider = ConfigProvider.fromUnknown({ name: " Alice " })
382
+ * Effect.runSync(trimmed.parse(provider)) // => "Alice"
288
383
  * ```
289
384
  *
290
385
  * @see {@link map} – when the transformation cannot fail
@@ -294,7 +389,15 @@ export const mapOrFail: {
294
389
  */
295
390
  <A, B>(self: Config<A>, f: (a: A) => Effect.Effect<B, ConfigError>): Config<B>
296
391
  } = dual(2, <A, B>(self: Config<A>, f: (a: A) => Effect.Effect<B, ConfigError>): Config<B> => {
297
- return make((provider, pathPrefix) => Effect.flatMap(self.parse(provider, pathPrefix), f))
392
+ return make((provider, pathPrefix) =>
393
+ Effect.flatMap(evaluateAt(self, provider, pathPrefix), (resolution) =>
394
+ resolution._tag === "Resolved"
395
+ ? f(resolution.value).pipe(
396
+ Effect.mapEager((value) => resolved(value, resolution.hasInput)),
397
+ Effect.mapErrorEager((error) => evaluationFailure(error, resolution.hasInput))
398
+ )
399
+ : Effect.succeed(resolution))
400
+ )
298
401
  })
299
402
 
300
403
  /**
@@ -307,21 +410,30 @@ export const mapOrFail: {
307
410
  *
308
411
  * **Details**
309
412
  *
310
- * Unlike {@link withDefault}, this catches **all** `ConfigError`s (not just
311
- * missing data). The fallback function receives the error and returns a new
413
+ * Unlike {@link withDefault}, this handles both semantic absence and **all**
414
+ * `ConfigError`s. The fallback function receives the error and returns a new
312
415
  * `Config`.
313
416
  *
417
+ * **Gotchas**
418
+ *
419
+ * Recovery preserves whether the primary config read provider input. When the
420
+ * recovered config is composed with {@link all}, invalid input in the primary
421
+ * branch still makes the enclosing group partially supplied, so an outer
422
+ * {@link withDefault} or {@link option} does not replace the whole group.
423
+ *
314
424
  * **Example** (Falling back to a literal)
315
425
  *
316
- * ```ts
317
- * import { Config } from "effect"
426
+ * ```ts import.meta.vitest
427
+ * import { Config, ConfigProvider, Effect } from "effect"
318
428
  *
319
429
  * const hostConfig = Config.string("HOST").pipe(
320
430
  * Config.orElse(() => Config.succeed("localhost"))
321
431
  * )
432
+ * const provider = ConfigProvider.fromUnknown({})
433
+ * Effect.runSync(hostConfig.parse(provider)) // => "localhost"
322
434
  * ```
323
435
  *
324
- * @see {@link withDefault} – fallback only on missing data
436
+ * @see {@link withDefault} – fallback only on semantic absence
325
437
  *
326
438
  * @category combinators
327
439
  * @since 2.0.0
@@ -337,21 +449,30 @@ export const orElse: {
337
449
  *
338
450
  * **Details**
339
451
  *
340
- * Unlike {@link withDefault}, this catches **all** `ConfigError`s (not just
341
- * missing data). The fallback function receives the error and returns a new
452
+ * Unlike {@link withDefault}, this handles both semantic absence and **all**
453
+ * `ConfigError`s. The fallback function receives the error and returns a new
342
454
  * `Config`.
343
455
  *
456
+ * **Gotchas**
457
+ *
458
+ * Recovery preserves whether the primary config read provider input. When the
459
+ * recovered config is composed with {@link all}, invalid input in the primary
460
+ * branch still makes the enclosing group partially supplied, so an outer
461
+ * {@link withDefault} or {@link option} does not replace the whole group.
462
+ *
344
463
  * **Example** (Falling back to a literal)
345
464
  *
346
- * ```ts
347
- * import { Config } from "effect"
465
+ * ```ts import.meta.vitest
466
+ * import { Config, ConfigProvider, Effect } from "effect"
348
467
  *
349
468
  * const hostConfig = Config.string("HOST").pipe(
350
469
  * Config.orElse(() => Config.succeed("localhost"))
351
470
  * )
471
+ * const provider = ConfigProvider.fromUnknown({})
472
+ * Effect.runSync(hostConfig.parse(provider)) // => "localhost"
352
473
  * ```
353
474
  *
354
- * @see {@link withDefault} – fallback only on missing data
475
+ * @see {@link withDefault} – fallback only on semantic absence
355
476
  *
356
477
  * @category combinators
357
478
  * @since 2.0.0
@@ -367,30 +488,87 @@ export const orElse: {
367
488
  *
368
489
  * **Details**
369
490
  *
370
- * Unlike {@link withDefault}, this catches **all** `ConfigError`s (not just
371
- * missing data). The fallback function receives the error and returns a new
491
+ * Unlike {@link withDefault}, this handles both semantic absence and **all**
492
+ * `ConfigError`s. The fallback function receives the error and returns a new
372
493
  * `Config`.
373
494
  *
495
+ * **Gotchas**
496
+ *
497
+ * Recovery preserves whether the primary config read provider input. When the
498
+ * recovered config is composed with {@link all}, invalid input in the primary
499
+ * branch still makes the enclosing group partially supplied, so an outer
500
+ * {@link withDefault} or {@link option} does not replace the whole group.
501
+ *
374
502
  * **Example** (Falling back to a literal)
375
503
  *
376
- * ```ts
377
- * import { Config } from "effect"
504
+ * ```ts import.meta.vitest
505
+ * import { Config, ConfigProvider, Effect } from "effect"
378
506
  *
379
507
  * const hostConfig = Config.string("HOST").pipe(
380
508
  * Config.orElse(() => Config.succeed("localhost"))
381
509
  * )
510
+ * const provider = ConfigProvider.fromUnknown({})
511
+ * Effect.runSync(hostConfig.parse(provider)) // => "localhost"
382
512
  * ```
383
513
  *
384
- * @see {@link withDefault} – fallback only on missing data
514
+ * @see {@link withDefault} – fallback only on semantic absence
385
515
  *
386
516
  * @category combinators
387
517
  * @since 2.0.0
388
518
  */
389
519
  <A, A2>(self: Config<A>, that: (error: ConfigError) => Config<A2>): Config<A | A2>
390
520
  } = dual(2, <A, A2>(self: Config<A>, that: (error: ConfigError) => Config<A2>): Config<A | A2> => {
391
- return make((provider, pathPrefix) =>
392
- Effect.catch(self.parse(provider, pathPrefix), (error) => that(error).parse(provider, pathPrefix))
393
- )
521
+ return make</**
522
+ * Provides a fallback config when parsing fails with a `ConfigError`.
523
+ *
524
+ * **When to use**
525
+ *
526
+ * Use when you need to try an alternative config source after the primary one
527
+ * fails.
528
+ *
529
+ * **Details**
530
+ *
531
+ * Unlike {@link withDefault}, this handles both semantic absence and **all**
532
+ * `ConfigError`s. The fallback function receives the error and returns a new
533
+ * `Config`.
534
+ *
535
+ * **Gotchas**
536
+ *
537
+ * Recovery preserves whether the primary config read provider input. When the
538
+ * recovered config is composed with {@link all}, invalid input in the primary
539
+ * branch still makes the enclosing group partially supplied, so an outer
540
+ * {@link withDefault} or {@link option} does not replace the whole group.
541
+ *
542
+ * **Example** (Falling back to a literal)
543
+ *
544
+ * ```ts import.meta.vitest
545
+ * import { Config, ConfigProvider, Effect } from "effect"
546
+ *
547
+ * const hostConfig = Config.string("HOST").pipe(
548
+ * Config.orElse(() => Config.succeed("localhost"))
549
+ * )
550
+ * const provider = ConfigProvider.fromUnknown({})
551
+ * Effect.runSync(hostConfig.parse(provider)) // => "localhost"
552
+ * ```
553
+ *
554
+ * @see {@link withDefault} – fallback only on semantic absence
555
+ *
556
+ * @category combinators
557
+ * @since 2.0.0
558
+ */
559
+ A | A2>((provider, pathPrefix) =>
560
+ Effect.matchEffect(evaluateAt(self, provider, pathPrefix), {
561
+ onFailure: (failure) =>
562
+ preserveInputEvidence(
563
+ evaluateAt(that(failure.error), provider, pathPrefix),
564
+ failure.hasInput
565
+ ),
566
+ onSuccess: (resolution): Effect.Effect<Resolution<A | A2>, EvaluationFailure> =>
567
+ resolution._tag === "Absent"
568
+ ? evaluateAt(that(resolution.error), provider, pathPrefix)
569
+ : Effect.succeed(resolution)
570
+ })
571
+ );
394
572
  })
395
573
 
396
574
  /**
@@ -405,9 +583,19 @@ export const orElse: {
405
583
  * Accepts a tuple (preserves positions), an iterable, or a record of configs.
406
584
  * Returns a config whose parsed value mirrors the input shape.
407
585
  *
586
+ * A combined config is absent when at least one child cannot resolve and none
587
+ * of the other children read provider input. This lets {@link withDefault} and
588
+ * {@link option} handle a wholly absent group. Once any child reads input, a
589
+ * missing sibling makes the group incomplete and parsing fails. Values supplied
590
+ * by child defaults do not count as provider input.
591
+ *
592
+ * Unlike a `Schema.Struct` passed to {@link schema}, `all` only considers input
593
+ * read by its children. An explicitly present but empty parent container does
594
+ * not by itself make the group present.
595
+ *
408
596
  * **Example** (Combining configs as a struct)
409
597
  *
410
- * ```ts
598
+ * ```ts import.meta.vitest
411
599
  * import { Config, ConfigProvider, Effect } from "effect"
412
600
  *
413
601
  * const dbConfig = Config.all({
@@ -416,8 +604,7 @@ export const orElse: {
416
604
  * })
417
605
  *
418
606
  * const provider = ConfigProvider.fromUnknown({ host: "localhost", port: 5432 })
419
- * // Effect.runSync(dbConfig.parse(provider))
420
- * // { host: "localhost", port: 5432 }
607
+ * Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
421
608
  * ```
422
609
  *
423
610
  * @category combinators
@@ -442,46 +629,65 @@ export function all<const Arg extends Iterable<Config<any>> | Record<string, Con
442
629
  : arg
443
630
  if (Array.isArray(configs)) {
444
631
  return make((provider, pathPrefix) =>
445
- Effect.all(configs.map((config) => config.parse(provider, pathPrefix)))
632
+ Effect.flatMapEager(
633
+ Effect.all(configs.map((config) => evaluateAt(config, provider, pathPrefix))),
634
+ resolveArray
635
+ )
446
636
  ) as any
447
637
  } else {
448
638
  return make((provider, pathPrefix) =>
449
- Effect.all(Rec.map(configs, (config) => config.parse(provider, pathPrefix)))
639
+ Effect.flatMapEager(
640
+ Effect.all(Rec.map(configs, (config) => evaluateAt(config, provider, pathPrefix))),
641
+ resolveRecord
642
+ )
450
643
  ) as any
451
644
  }
452
645
  }
453
646
 
454
- function isMissingDataOnly(issue: SchemaIssue.Issue): boolean {
455
- switch (issue._tag) {
456
- case "MissingKey":
457
- return true
458
- case "InvalidType":
459
- case "InvalidValue":
460
- return Option.isNone(issue.actual) || (Option.isSome(issue.actual) && issue.actual.value === undefined)
461
- case "OneOf":
462
- return issue.actual === undefined
463
- case "Encoding":
464
- return Option.isNone(issue.actual) || (Option.isSome(issue.actual) && issue.actual.value === undefined)
465
- ? true
466
- : isMissingDataOnly(issue.issue)
467
- case "Pointer":
468
- return isMissingDataOnly(issue.issue)
469
- case "Filter":
470
- case "UnexpectedKey":
471
- case "Forbidden":
472
- return false
473
- case "Composite":
474
- return issue.issues.every(isMissingDataOnly)
475
- case "AnyOf":
476
- if (issue.issues.length === 0) {
477
- return issue.actual === undefined
478
- }
479
- return issue.issues.every(isMissingDataOnly)
647
+ const resolveArray = (
648
+ resolutions: ReadonlyArray<Resolution<any>>
649
+ ): Effect.Effect<Resolution<Array<any>>, EvaluationFailure> => {
650
+ const values: Array<any> = []
651
+ let firstAbsent: Absent | undefined
652
+ let hasInput = false
653
+ for (const resolution of resolutions) {
654
+ if (resolution._tag === "Absent") {
655
+ firstAbsent ??= resolution
656
+ } else {
657
+ values.push(resolution.value)
658
+ hasInput = hasInput || resolution.hasInput
659
+ }
660
+ }
661
+ if (firstAbsent !== undefined) {
662
+ return hasInput ? Effect.fail(evaluationFailure(firstAbsent.error, true)) : Effect.succeed(firstAbsent)
663
+ }
664
+ return Effect.succeed(resolved(values, hasInput))
665
+ }
666
+
667
+ const resolveRecord = (
668
+ resolutions: Record<string, Resolution<any>>
669
+ ): Effect.Effect<Resolution<Record<string, any>>, EvaluationFailure> => {
670
+ const values: Record<string, any> = {}
671
+ let firstAbsent: Absent | undefined
672
+ let hasInput = false
673
+ for (const key in resolutions) {
674
+ const resolution = resolutions[key]
675
+ if (resolution._tag === "Absent") {
676
+ firstAbsent ??= resolution
677
+ } else {
678
+ InternalRecord.assignProperty(values, key, resolution.value)
679
+ hasInput = hasInput || resolution.hasInput
680
+ }
480
681
  }
682
+ if (firstAbsent !== undefined) {
683
+ return hasInput ? Effect.fail(evaluationFailure(firstAbsent.error, true)) : Effect.succeed(firstAbsent)
684
+ }
685
+ return Effect.succeed(resolved(values, hasInput))
481
686
  }
482
687
 
483
688
  /**
484
- * Provides a fallback value when the config fails due to missing data.
689
+ * Provides a fallback value when the config cannot resolve because none of its
690
+ * relevant input is present.
485
691
  *
486
692
  * **When to use**
487
693
  *
@@ -489,30 +695,33 @@ function isMissingDataOnly(issue: SchemaIssue.Issue): boolean {
489
695
  *
490
696
  * **Gotchas**
491
697
  *
492
- * Only applies when the error is a `SchemaError` caused exclusively by
493
- * missing data (missing keys, undefined values). Validation errors (wrong
494
- * type, out of range) still propagate.
698
+ * Validation errors and partially supplied groups still propagate. A schema
699
+ * that successfully decodes absent input also keeps its decoded value instead
700
+ * of using the default. Schema configs first represent a missing or
701
+ * incompatible provider shape as `undefined`; the default is used only when
702
+ * the schema rejects that value and no relevant input was found.
495
703
  *
496
704
  * **Example** (Defaulting a missing port)
497
705
  *
498
- * ```ts
706
+ * ```ts import.meta.vitest
499
707
  * import { Config, ConfigProvider, Effect } from "effect"
500
708
  *
501
709
  * const port = Config.number("port").pipe(Config.withDefault(3000))
502
710
  *
503
711
  * const provider = ConfigProvider.fromUnknown({})
504
- * // Effect.runSync(port.parse(provider)) // 3000
712
+ * Effect.runSync(port.parse(provider)) // => 3000
505
713
  * ```
506
714
  *
507
715
  * @see {@link option} – returns `Option` instead of a default value
508
- * @see {@link orElse} – catches all errors, not just missing data
716
+ * @see {@link orElse} – catches all errors, not just absent input
509
717
  *
510
718
  * @category combinators
511
719
  * @since 2.0.0
512
720
  */
513
721
  export const withDefault: {
514
722
  /**
515
- * Provides a fallback value when the config fails due to missing data.
723
+ * Provides a fallback value when the config cannot resolve because none of its
724
+ * relevant input is present.
516
725
  *
517
726
  * **When to use**
518
727
  *
@@ -520,30 +729,33 @@ export const withDefault: {
520
729
  *
521
730
  * **Gotchas**
522
731
  *
523
- * Only applies when the error is a `SchemaError` caused exclusively by
524
- * missing data (missing keys, undefined values). Validation errors (wrong
525
- * type, out of range) still propagate.
732
+ * Validation errors and partially supplied groups still propagate. A schema
733
+ * that successfully decodes absent input also keeps its decoded value instead
734
+ * of using the default. Schema configs first represent a missing or
735
+ * incompatible provider shape as `undefined`; the default is used only when
736
+ * the schema rejects that value and no relevant input was found.
526
737
  *
527
738
  * **Example** (Defaulting a missing port)
528
739
  *
529
- * ```ts
740
+ * ```ts import.meta.vitest
530
741
  * import { Config, ConfigProvider, Effect } from "effect"
531
742
  *
532
743
  * const port = Config.number("port").pipe(Config.withDefault(3000))
533
744
  *
534
745
  * const provider = ConfigProvider.fromUnknown({})
535
- * // Effect.runSync(port.parse(provider)) // 3000
746
+ * Effect.runSync(port.parse(provider)) // => 3000
536
747
  * ```
537
748
  *
538
749
  * @see {@link option} – returns `Option` instead of a default value
539
- * @see {@link orElse} – catches all errors, not just missing data
750
+ * @see {@link orElse} – catches all errors, not just absent input
540
751
  *
541
752
  * @category combinators
542
753
  * @since 2.0.0
543
754
  */
544
755
  <const A2>(defaultValue: A2): <A>(self: Config<A>) => Config<A2 | A>
545
756
  /**
546
- * Provides a fallback value when the config fails due to missing data.
757
+ * Provides a fallback value when the config cannot resolve because none of its
758
+ * relevant input is present.
547
759
  *
548
760
  * **When to use**
549
761
  *
@@ -551,43 +763,75 @@ export const withDefault: {
551
763
  *
552
764
  * **Gotchas**
553
765
  *
554
- * Only applies when the error is a `SchemaError` caused exclusively by
555
- * missing data (missing keys, undefined values). Validation errors (wrong
556
- * type, out of range) still propagate.
766
+ * Validation errors and partially supplied groups still propagate. A schema
767
+ * that successfully decodes absent input also keeps its decoded value instead
768
+ * of using the default. Schema configs first represent a missing or
769
+ * incompatible provider shape as `undefined`; the default is used only when
770
+ * the schema rejects that value and no relevant input was found.
557
771
  *
558
772
  * **Example** (Defaulting a missing port)
559
773
  *
560
- * ```ts
774
+ * ```ts import.meta.vitest
561
775
  * import { Config, ConfigProvider, Effect } from "effect"
562
776
  *
563
777
  * const port = Config.number("port").pipe(Config.withDefault(3000))
564
778
  *
565
779
  * const provider = ConfigProvider.fromUnknown({})
566
- * // Effect.runSync(port.parse(provider)) // 3000
780
+ * Effect.runSync(port.parse(provider)) // => 3000
567
781
  * ```
568
782
  *
569
783
  * @see {@link option} – returns `Option` instead of a default value
570
- * @see {@link orElse} – catches all errors, not just missing data
784
+ * @see {@link orElse} – catches all errors, not just absent input
571
785
  *
572
786
  * @category combinators
573
787
  * @since 2.0.0
574
788
  */
575
789
  <A, const A2>(self: Config<A>, defaultValue: A2): Config<A | A2>
576
790
  } = dual(2, <A, const A2>(self: Config<A>, defaultValue: A2): Config<A | A2> => {
577
- return orElse(self, (err) => {
578
- if (Schema.isSchemaError(err.cause)) {
579
- const issue = err.cause.issue
580
- if (isMissingDataOnly(issue)) {
581
- return succeed(defaultValue)
582
- }
583
- }
584
- return fail(err.cause)
585
- })
791
+ return make</**
792
+ * Provides a fallback value when the config cannot resolve because none of its
793
+ * relevant input is present.
794
+ *
795
+ * **When to use**
796
+ *
797
+ * Use when you need to make a config key optional with a sensible default.
798
+ *
799
+ * **Gotchas**
800
+ *
801
+ * Validation errors and partially supplied groups still propagate. A schema
802
+ * that successfully decodes absent input also keeps its decoded value instead
803
+ * of using the default. Schema configs first represent a missing or
804
+ * incompatible provider shape as `undefined`; the default is used only when
805
+ * the schema rejects that value and no relevant input was found.
806
+ *
807
+ * **Example** (Defaulting a missing port)
808
+ *
809
+ * ```ts import.meta.vitest
810
+ * import { Config, ConfigProvider, Effect } from "effect"
811
+ *
812
+ * const port = Config.number("port").pipe(Config.withDefault(3000))
813
+ *
814
+ * const provider = ConfigProvider.fromUnknown({})
815
+ * Effect.runSync(port.parse(provider)) // => 3000
816
+ * ```
817
+ *
818
+ * @see {@link option} – returns `Option` instead of a default value
819
+ * @see {@link orElse} – catches all errors, not just absent input
820
+ *
821
+ * @category combinators
822
+ * @since 2.0.0
823
+ */
824
+ A | A2>((provider, pathPrefix) =>
825
+ Effect.mapEager(
826
+ evaluateAt(self, provider, pathPrefix),
827
+ (resolution) => resolution._tag === "Absent" ? resolved(defaultValue, false) : resolution
828
+ )
829
+ );
586
830
  })
587
831
 
588
832
  /**
589
- * Makes a config optional: returns `Some(value)` on success and `None` when
590
- * data is missing.
833
+ * Makes a config optional: returns `Some(value)` on success and `None` when the
834
+ * config cannot resolve because none of its relevant input is present.
591
835
  *
592
836
  * **When to use**
593
837
  *
@@ -595,18 +839,21 @@ export const withDefault: {
595
839
  *
596
840
  * **Gotchas**
597
841
  *
598
- * Like {@link withDefault}, only missing-data errors produce `None`.
599
- * Validation errors still propagate.
842
+ * Validation errors and partially supplied groups still propagate. Successful
843
+ * values are always wrapped in `Some`, including `undefined` when the schema
844
+ * explicitly accepts it. Schema configs first represent a missing or
845
+ * incompatible provider shape as `undefined`; `None` is returned only when the
846
+ * schema rejects that value and no relevant input was found.
600
847
  *
601
848
  * **Example** (Reading optional config)
602
849
  *
603
- * ```ts
604
- * import { Config, ConfigProvider, Effect } from "effect"
850
+ * ```ts import.meta.vitest
851
+ * import { Config, ConfigProvider, Effect, Option } from "effect"
605
852
  *
606
853
  * const maybePort = Config.option(Config.number("port"))
607
854
  *
608
855
  * const provider = ConfigProvider.fromUnknown({})
609
- * // Effect.runSync(maybePort.parse(provider)) // { _tag: "None" }
856
+ * Effect.runSync(maybePort.parse(provider)) // => Option.none()
610
857
  * ```
611
858
  *
612
859
  * @see {@link withDefault} – provide a concrete fallback value instead
@@ -648,7 +895,7 @@ export type Success<T> = [T] extends [Config<infer A>] ? A : never
648
895
  *
649
896
  * @see {@link unwrap} – construct a `Config` from a `Wrap<T>`
650
897
  *
651
- * @category Wrap
898
+ * @category utility types
652
899
  * @since 2.0.0
653
900
  */
654
901
  export type Wrap<A> = [NonNullable<A>] extends [infer T] ? [IsPlainObject<T>] extends [true] ?
@@ -676,8 +923,8 @@ type IsPlainObject<A> = [A] extends [Record<string, any>]
676
923
  *
677
924
  * **Example** (Unwrapping a record of configs)
678
925
  *
679
- * ```ts
680
- * import { Config } from "effect"
926
+ * ```ts import.meta.vitest
927
+ * import { Config, ConfigProvider, Effect } from "effect"
681
928
  *
682
929
  * interface Options {
683
930
  * key: string
@@ -685,128 +932,158 @@ type IsPlainObject<A> = [A] extends [Record<string, any>]
685
932
  *
686
933
  * const makeConfig = (config: Config.Wrap<Options>): Config.Config<Options> =>
687
934
  * Config.unwrap(config)
935
+ *
936
+ * const config = makeConfig({ key: Config.string("key") })
937
+ * const provider = ConfigProvider.fromUnknown({ key: "value" })
938
+ * Effect.runSync(config.parse(provider)) // => { key: "value" }
688
939
  * ```
689
940
  *
690
941
  * @see {@link Wrap} – the utility type accepted by this function
691
942
  *
692
- * @category Wrap
943
+ * @category converting
693
944
  * @since 2.0.0
694
945
  */
695
946
  export const unwrap = <T>(wrapped: Wrap<T>): Config<T> => {
696
947
  if (isConfig(wrapped)) return wrapped
697
- return make((provider, pathPrefix) => {
698
- const entries = Object.entries(wrapped)
699
- const configs = entries.map(([key, config]) =>
700
- unwrap(config as any).parse(provider, pathPrefix).pipe(Effect.map((value) => [key, value] as const))
701
- )
702
- return Effect.all(configs).pipe(Effect.map(Object.fromEntries))
703
- })
948
+ return all(Rec.map(wrapped as Record<string, Wrap<any>>, (config) => unwrap(config))) as Config<T>
704
949
  }
705
950
 
706
951
  // -----------------------------------------------------------------------------
707
952
  // schema
708
953
  // -----------------------------------------------------------------------------
709
954
 
710
- const dump: (
955
+ interface ConfigCursor {
956
+ readonly provider: ConfigProvider.ConfigProvider
957
+ readonly path: Path
958
+ readonly node: ConfigProvider.Node | undefined
959
+ readonly toString: () => string
960
+ }
961
+
962
+ const cursorToString = (): string => "<configuration>"
963
+
964
+ const loadCursor: (
711
965
  provider: ConfigProvider.ConfigProvider,
712
966
  path: Path
713
- ) => Effect.Effect<Schema.StringTree, SourceError> = Effect.fnUntraced(function*(
714
- provider,
715
- path
716
- ) {
717
- const stat = yield* provider.load(path)
718
- if (stat === undefined) return undefined
719
- switch (stat._tag) {
720
- case "Value":
721
- return stat.value
722
- case "Record": {
723
- if (stat.value !== undefined) return stat.value
724
- const out: Record<string, Schema.StringTree> = {}
725
- for (const key of stat.keys) {
726
- const child = yield* dump(provider, [...path, key])
727
- if (child !== undefined) out[key] = child
728
- }
729
- return out
730
- }
731
- case "Array": {
732
- if (stat.value !== undefined) return stat.value
733
- const out: Array<Schema.StringTree> = []
734
- for (let i = 0; i < stat.length; i++) {
735
- out.push(yield* dump(provider, [...path, i]))
736
- }
737
- return out
738
- }
967
+ ) => Effect.Effect<ConfigCursor> = (provider, path) =>
968
+ provider.load(path).pipe(
969
+ Effect.orDie,
970
+ Effect.mapEager((node) => ({ provider, path, node, toString: cursorToString }))
971
+ )
972
+
973
+ const loadChildCursor = (cursor: ConfigCursor, segment: string | number): Effect.Effect<ConfigCursor> =>
974
+ loadCursor(cursor.provider, [...cursor.path, segment])
975
+
976
+ const getScalar = (node: ConfigProvider.Node | undefined): string | undefined => node?.value
977
+
978
+ const decodeFromCursor = (
979
+ ast: SchemaAST.AST,
980
+ decode: (cursor: ConfigCursor) => Effect.Effect<unknown, SchemaIssue.Issue>
981
+ ): SchemaAST.AST =>
982
+ SchemaAST.decodeTo(
983
+ SchemaAST.unknown,
984
+ ast,
985
+ new SchemaTransformation.Transformation(
986
+ SchemaGetter.transformOrFail((input: unknown) => decode(input as ConfigCursor)),
987
+ SchemaGetter.passthrough()
988
+ )
989
+ )
990
+
991
+ const isScalarInput = (ast: SchemaAST.AST): boolean => {
992
+ switch (ast._tag) {
993
+ case "Union":
994
+ return ast.types.every(isScalarInput)
995
+ case "Objects":
996
+ case "Arrays":
997
+ case "Suspend":
998
+ return false
999
+ default:
1000
+ return true
739
1001
  }
740
- })
1002
+ }
741
1003
 
742
- const recur: (
1004
+ const hasProviderInput = (
743
1005
  ast: SchemaAST.AST,
744
- provider: ConfigProvider.ConfigProvider,
745
- path: Path
746
- ) => Effect.Effect<Schema.StringTree, Schema.SchemaError | SourceError> = Effect.fnUntraced(
747
- function*(ast, provider, path) {
1006
+ node: ConfigProvider.Node | undefined
1007
+ ): boolean => {
1008
+ switch (ast._tag) {
1009
+ case "Objects":
1010
+ return node?._tag === "Record"
1011
+ case "Arrays":
1012
+ return node?._tag === "Array"
1013
+ case "Union":
1014
+ return ast.types.some((ast) => hasProviderInput(ast, node))
1015
+ case "Suspend":
1016
+ return hasProviderInput(ast.thunk(), node)
1017
+ default:
1018
+ return getScalar(node) !== undefined
1019
+ }
1020
+ }
1021
+
1022
+ const toConfigCursorAST = (root: SchemaAST.AST): SchemaAST.AST => {
1023
+ const seen = new WeakSet<SchemaAST.AST>()
1024
+ const recur = SchemaAST.applyToSelfOrLastLinkEncoding((ast) => {
1025
+ seen.add(ast)
748
1026
  switch (ast._tag) {
749
1027
  case "Objects": {
750
- const stat = yield* provider.load(path)
751
- if (stat === undefined && path.length > 0) return undefined
752
- const out: Record<string, Schema.StringTree> = {}
753
- for (const ps of ast.propertySignatures) {
754
- const name = ps.name
755
- if (typeof name === "string") {
756
- const value = yield* recur(ps.type, provider, [...path, name])
757
- if (value !== undefined) out[name] = value
1028
+ const matchesIndex = ast.indexSignatures.map((is) => SchemaParser._is(is.parameter))
1029
+ const materialize = Effect.fnUntraced(function*(cursor: ConfigCursor) {
1030
+ if (cursor.node?._tag !== "Record") {
1031
+ return undefined
758
1032
  }
759
- }
760
- if (ast.indexSignatures.length > 0) {
761
- if (stat && stat._tag === "Record") {
762
- for (const is of ast.indexSignatures) {
763
- const matches = SchemaParser._is(is.parameter)
764
- for (const key of stat.keys) {
765
- if (!Object.hasOwn(out, key) && matches(key)) {
766
- const value = yield* recur(is.type, provider, [...path, key])
767
- if (value !== undefined) out[key] = value
768
- }
769
- }
1033
+ const node = cursor.node
1034
+ const keys = new Set<string>()
1035
+ for (const property of ast.propertySignatures) {
1036
+ if (typeof property.name === "string") keys.add(property.name)
1037
+ }
1038
+ if (matchesIndex.length > 0) {
1039
+ for (const key of node.keys) {
1040
+ if (matchesIndex.some((matches) => matches(key))) keys.add(key)
770
1041
  }
771
1042
  }
772
- }
773
- return out
1043
+ const out: Record<string, ConfigCursor> = {}
1044
+ for (const key of keys) {
1045
+ const child = yield* loadChildCursor(cursor, key)
1046
+ if (child.node !== undefined) InternalRecord.assignProperty(out, key, child)
1047
+ }
1048
+ return out
1049
+ })
1050
+ return decodeFromCursor(ast.recur(recur, (ast) => ast), materialize)
774
1051
  }
775
1052
  case "Arrays": {
776
- const stat = yield* provider.load(path)
777
- if (stat === undefined) return undefined
778
- if (stat && stat._tag === "Value") return stat.value === "" ? [] : stat.value.split(",")
779
- if (stat && stat._tag === "Array" && stat.value !== undefined) {
780
- return stat.value === "" ? [] : stat.value.split(",")
781
- }
782
- const out: Array<Schema.StringTree> = []
783
- const length = stat && stat._tag === "Array" ? stat.length : ast.elements.length
784
- for (let i = 0; i < length; i++) {
785
- const element = ast.elements[i] ?? ast.rest[0]
786
- if (element !== undefined) {
787
- out.push(yield* recur(element, provider, [...path, i]))
1053
+ const materialize = Effect.fnUntraced(function*(cursor: ConfigCursor) {
1054
+ if (cursor.node?._tag !== "Array") {
1055
+ return undefined
788
1056
  }
789
- }
790
- return out
1057
+ const out: Array<ConfigCursor> = []
1058
+ for (let i = 0; i < cursor.node.length; i++) {
1059
+ out.push(yield* loadChildCursor(cursor, i))
1060
+ }
1061
+ return out
1062
+ })
1063
+ return decodeFromCursor(ast.recur(recur), materialize)
791
1064
  }
792
1065
  case "Union":
793
- // Let downstream decoding decide; dump can return a string, object, or array.
794
- return yield* dump(provider, path)
795
- case "Suspend":
796
- return yield* recur(ast.thunk(), provider, path)
797
- default: {
798
- // Base primitives / string-like encoded nodes.
799
- const stat = yield* provider.load(path)
800
- if (stat === undefined) return undefined
801
- if (stat._tag === "Value") return stat.value
802
- if (stat._tag === "Record" && stat.value !== undefined) return stat.value
803
- if (stat._tag === "Array" && stat.value !== undefined) return stat.value
804
- // Container without a co-located value cannot satisfy a scalar request.
805
- return undefined
1066
+ for (const member of ast.types) {
1067
+ recur(member)
1068
+ }
1069
+ return isScalarInput(ast)
1070
+ ? decodeFromCursor(ast, (cursor) => Effect.succeed(getScalar(cursor.node)))
1071
+ : ast.recur(recur)
1072
+ case "Suspend": {
1073
+ const target = ast.thunk()
1074
+ // Force new branches so opaque encodings fail when the Config is constructed.
1075
+ if (!seen.has(target)) recur(target)
1076
+ return ast.recur(recur)
806
1077
  }
1078
+ case "Declaration":
1079
+ case "Any":
1080
+ throw new globalThis.Error("Config.schema does not support opaque StringTree encodings", { cause: ast })
1081
+ default:
1082
+ return decodeFromCursor(ast, (cursor) => Effect.succeed(getScalar(cursor.node)))
807
1083
  }
808
- }
809
- )
1084
+ })
1085
+ return recur(root)
1086
+ }
810
1087
 
811
1088
  /**
812
1089
  * Creates a `Config<T>` from a `Schema.Codec`.
@@ -825,12 +1102,47 @@ const recur: (
825
1102
  * Convenience constructors such as `string`, `number`, and `boolean` delegate
826
1103
  * to this API.
827
1104
  *
828
- * The codec is used to decode the raw `StringTree` produced by the provider
829
- * into `T`. Schema validation errors are wrapped in `ConfigError`.
1105
+ * The codec is converted to its canonical `StringTree` form. Its encoded shape
1106
+ * determines how provider data is loaded: scalar schemas read a co-located
1107
+ * scalar value, object schemas read declared properties and matching record
1108
+ * keys, and array schemas read indexed children. A mixed-shape union loads each
1109
+ * member according to that member's shape before applying the union's mode and
1110
+ * checks.
1111
+ *
1112
+ * At the config's lookup path, a missing node or a node that cannot provide the
1113
+ * representation required by the schema is decoded as `undefined`. Missing
1114
+ * object properties remain omitted so the schema's property semantics still
1115
+ * apply. Decoding success always wins, even when no provider input was found.
1116
+ * For example,
1117
+ * `Schema.UndefinedOr(Schema.String)` decodes to `undefined` and is not replaced
1118
+ * by {@link withDefault}. If decoding fails and no relevant representation was
1119
+ * found, the config is absent. Invalid data in a relevant representation is a
1120
+ * validation failure. Provider `SourceError`s are always failures.
1121
+ *
1122
+ * **Gotchas**
1123
+ *
1124
+ * Plain `Schema.Array` and `Schema.Record` schemas use structural provider
1125
+ * input. Use {@link Array} or {@link Record} when a flat separated string must
1126
+ * also be accepted.
1127
+ *
1128
+ * `Schema.Struct` and {@link all} describe different lookup models. An
1129
+ * explicitly present empty object is relevant input for a struct and required
1130
+ * fields are validated. The same empty parent container does not make an
1131
+ * `all` group present when all of its child configs are absent.
1132
+ *
1133
+ * The canonical `StringTree` encoding must expose a concrete scalar, object,
1134
+ * array, or union shape. Opaque encodings such as `Schema.Any`,
1135
+ * `Schema.Unknown`, `Schema.ObjectKeyword`, `Schema.Json`, and
1136
+ * `Schema.MutableJson` are rejected synchronously when this config is
1137
+ * constructed, including when they are nested in another schema. Suspended
1138
+ * recursive schemas remain supported when their eventual shape is concrete.
1139
+ * Declarations such as `Schema.URL` also remain supported when their canonical
1140
+ * encoding has a concrete shape. To read arbitrary JSON from one scalar value,
1141
+ * use `Schema.fromJsonString(Schema.Json)`.
830
1142
  *
831
1143
  * **Example** (Reading a structured config)
832
1144
  *
833
- * ```ts
1145
+ * ```ts import.meta.vitest
834
1146
  * import { Config, ConfigProvider, Effect, Schema } from "effect"
835
1147
  *
836
1148
  * const DbConfig = Config.schema(
@@ -845,8 +1157,7 @@ const recur: (
845
1157
  * db: { host: "localhost", port: 5432 }
846
1158
  * })
847
1159
  *
848
- * // Effect.runSync(DbConfig.parse(provider))
849
- * // { host: "localhost", port: 5432 }
1160
+ * Effect.runSync(DbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
850
1161
  * ```
851
1162
  *
852
1163
  * @see {@link string} / {@link number} / {@link boolean} – shortcuts for
@@ -857,20 +1168,31 @@ const recur: (
857
1168
  */
858
1169
  export function schema<T>(codec: Schema.ConstraintCodec<T, unknown>, path?: string | ConfigProvider.Path): Config<T> {
859
1170
  const codecStringTree = Schema.toCodecStringTree(codec)
860
- const decodeUnknownEffect = SchemaParser.decodeUnknownEffect(codecStringTree)
861
- const codecStringTreeEncoded = SchemaAST.toEncoded(codecStringTree.ast)
1171
+ const encodedAst = SchemaAST.toEncoded(codecStringTree.ast)
1172
+ const decodeCursor = SchemaParser.decodeUnknownEffect(
1173
+ Schema.make<Schema.Codec<T, ConfigCursor>>(toConfigCursorAST(codecStringTree.ast))
1174
+ )
862
1175
  const localPath = typeof path === "string" ? [path] : path ?? []
863
1176
  return make((provider, pathPrefix) => {
864
1177
  const fullPath = [...pathPrefix, ...localPath]
865
- return recur(codecStringTreeEncoded, provider, fullPath).pipe(
866
- Effect.flatMapEager((tree) =>
867
- decodeUnknownEffect(tree).pipe(
868
- Effect.mapErrorEager((issue) =>
869
- new Schema.SchemaError(fullPath.length > 0 ? new SchemaIssue.Pointer(fullPath, issue) : issue)
870
- )
1178
+ return catchSourceError(loadCursor(provider, fullPath), false).pipe(
1179
+ Effect.flatMapEager((cursor) => {
1180
+ const hasInput = hasProviderInput(encodedAst, cursor.node)
1181
+ return catchSourceError(
1182
+ decodeCursor(cursor).pipe(
1183
+ Effect.mapEager((value) => resolved(value, hasInput)),
1184
+ Effect.catchEager((issue) => {
1185
+ const error = new ConfigError(
1186
+ new Schema.SchemaError(fullPath.length > 0 ? new SchemaIssue.Pointer(fullPath, issue) : issue)
1187
+ )
1188
+ return hasInput
1189
+ ? Effect.fail(evaluationFailure(error, true))
1190
+ : Effect.succeed(absent(error))
1191
+ })
1192
+ ),
1193
+ hasInput
871
1194
  )
872
- ),
873
- Effect.mapErrorEager((cause) => new ConfigError(cause))
1195
+ })
874
1196
  )
875
1197
  })
876
1198
  }
@@ -961,7 +1283,7 @@ export const LogLevel = Schema.Literals(LogLevel_.values)
961
1283
  *
962
1284
  * **Example** (Parsing a comma-separated record)
963
1285
  *
964
- * ```ts
1286
+ * ```ts import.meta.vitest
965
1287
  * import { Config, ConfigProvider, Effect, Schema } from "effect"
966
1288
  *
967
1289
  * const schema = Config.Record(Schema.String, Schema.String)
@@ -974,14 +1296,14 @@ export const LogLevel = Schema.Literals(LogLevel_.values)
974
1296
  * }
975
1297
  * })
976
1298
  *
977
- * console.dir(Effect.runSync(config.parse(provider)))
978
- * // {
979
- * // 'service.name': 'my-service',
980
- * // 'service.version': '1.0.0',
981
- * // 'custom.attribute': 'value'
982
- * // }
1299
+ * const result = Effect.runSync(config.parse(provider))
1300
+ * result["service.name"] // => "my-service"
1301
+ * result["service.version"] // => "1.0.0"
1302
+ * result["custom.attribute"] // => "value"
983
1303
  * ```
984
1304
  *
1305
+ * @see {@link Array} for separated or structural array input
1306
+ *
985
1307
  * @category schemas
986
1308
  * @since 4.0.0
987
1309
  */
@@ -990,35 +1312,31 @@ export const Record = <K extends Schema.Record.Key, V extends Schema.Constraint>
990
1312
  readonly keyValueSeparator?: string | undefined
991
1313
  }) => {
992
1314
  const record = Schema.Record(key, value)
1315
+ const split = SchemaTransformation.splitKeyValue(options)
993
1316
  const recordString = Schema.String.pipe(
994
- Schema.decodeTo(
995
- Schema.Record(Schema.String, Schema.String),
996
- SchemaTransformation.splitKeyValue(options)
997
- ),
998
- Schema.decodeTo(record)
1317
+ Schema.decodeTo(Schema.toCodecStringTree(record), {
1318
+ decode: split.decode,
1319
+ encode: SchemaGetter.passthrough<Record<string, string>, Schema.StringTree>({ strict: false }).compose(
1320
+ split.encode
1321
+ )
1322
+ })
999
1323
  )
1000
1324
 
1001
1325
  return Schema.Union([record, recordString])
1002
1326
  }
1003
1327
 
1004
- /**
1005
- * @category schemas
1006
- * @since 4.0.0
1007
- */
1008
1328
  const ArrayConfig = <V extends Schema.Constraint>(value: V, options?: {
1009
1329
  readonly separator?: string | undefined
1010
1330
  }) => {
1011
1331
  const array = Schema.Array(value)
1012
1332
  const separator = options?.separator ?? ","
1013
1333
  const arrayString = Schema.String.pipe(
1014
- Schema.decodeTo(
1015
- Schema.Array(Schema.String),
1016
- {
1017
- decode: SchemaGetter.split(options),
1018
- encode: SchemaGetter.transform((input: ReadonlyArray<string>) => input.join(separator))
1019
- }
1020
- ),
1021
- Schema.decodeTo(array)
1334
+ Schema.decodeTo(Schema.toCodecStringTree(array), {
1335
+ decode: SchemaGetter.split(options),
1336
+ encode: SchemaGetter.passthrough<ReadonlyArray<string>, Schema.StringTree>({ strict: false }).compose(
1337
+ SchemaGetter.transform((input) => input.join(separator))
1338
+ )
1339
+ })
1022
1340
  )
1023
1341
 
1024
1342
  return Schema.Union([arrayString, array])
@@ -1038,6 +1356,8 @@ export {
1038
1356
  * Accepts either a JSON-like array from the provider or a flat string like
1039
1357
  * `"a,b,c"`. The `separator` defaults to `","` and can be customized.
1040
1358
  *
1359
+ * @see {@link Record} for separated or structural record input
1360
+ *
1041
1361
  * @category schemas
1042
1362
  * @since 4.0.0
1043
1363
  */
@@ -1060,7 +1380,7 @@ export {
1060
1380
  * @since 2.0.0
1061
1381
  */
1062
1382
  export function fail(err: SourceError | Schema.SchemaError) {
1063
- return make(() => Effect.fail(new ConfigError(err)))
1383
+ return make(() => Effect.fail(evaluationFailure(new ConfigError(err), false)))
1064
1384
  }
1065
1385
 
1066
1386
  /**
@@ -1074,19 +1394,21 @@ export function fail(err: SourceError | Schema.SchemaError) {
1074
1394
  *
1075
1395
  * **Example** (Returning a constant fallback)
1076
1396
  *
1077
- * ```ts
1078
- * import { Config } from "effect"
1397
+ * ```ts import.meta.vitest
1398
+ * import { Config, ConfigProvider, Effect } from "effect"
1079
1399
  *
1080
1400
  * const host = Config.string("HOST").pipe(
1081
1401
  * Config.orElse(() => Config.succeed("localhost"))
1082
1402
  * )
1403
+ * const provider = ConfigProvider.fromUnknown({})
1404
+ * Effect.runSync(host.parse(provider)) // => "localhost"
1083
1405
  * ```
1084
1406
  *
1085
1407
  * @category constructors
1086
1408
  * @since 2.0.0
1087
1409
  */
1088
1410
  export function succeed<T>(value: T) {
1089
- return make(() => Effect.succeed(value))
1411
+ return make(() => Effect.succeed(resolved(value, false)))
1090
1412
  }
1091
1413
 
1092
1414
  /**
@@ -1102,13 +1424,13 @@ export function succeed<T>(value: T) {
1102
1424
  *
1103
1425
  * **Example** (Reading a string config)
1104
1426
  *
1105
- * ```ts
1427
+ * ```ts import.meta.vitest
1106
1428
  * import { Config, ConfigProvider, Effect } from "effect"
1107
1429
  *
1108
1430
  * const host = Config.string("HOST")
1109
1431
  *
1110
1432
  * const provider = ConfigProvider.fromUnknown({ HOST: "localhost" })
1111
- * // Effect.runSync(host.parse(provider)) // "localhost"
1433
+ * Effect.runSync(host.parse(provider)) // => "localhost"
1112
1434
  * ```
1113
1435
  *
1114
1436
  * @see {@link nonEmptyString} – rejects empty strings
@@ -1219,10 +1541,12 @@ export function int(name?: string) {
1219
1541
  *
1220
1542
  * **Example** (Restricting to a literal)
1221
1543
  *
1222
- * ```ts
1223
- * import { Config } from "effect"
1544
+ * ```ts import.meta.vitest
1545
+ * import { Config, ConfigProvider, Effect } from "effect"
1224
1546
  *
1225
1547
  * const env = Config.literal("production", "ENV")
1548
+ * const provider = ConfigProvider.fromUnknown({ ENV: "production" })
1549
+ * Effect.runSync(env.parse(provider)) // => "production"
1226
1550
  * ```
1227
1551
  *
1228
1552
  * @see {@link literals} – accepts multiple literal values
@@ -1246,10 +1570,12 @@ export function literal<L extends SchemaAST.LiteralValue>(literal: L, name?: str
1246
1570
  *
1247
1571
  * **Example** (Restricting to a set of literals)
1248
1572
  *
1249
- * ```ts
1250
- * import { Config } from "effect"
1573
+ * ```ts import.meta.vitest
1574
+ * import { Config, ConfigProvider, Effect } from "effect"
1251
1575
  *
1252
1576
  * const env = Config.literals(["development", "production"], "ENV")
1577
+ * const provider = ConfigProvider.fromUnknown({ ENV: "development" })
1578
+ * Effect.runSync(env.parse(provider)) // => "development"
1253
1579
  * ```
1254
1580
  *
1255
1581
  * @see {@link literal} for accepting one specific literal value
@@ -1278,13 +1604,10 @@ export function literals<const L extends ReadonlyArray<SchemaAST.LiteralValue>>(
1278
1604
  *
1279
1605
  * **Example** (Reading a boolean flag)
1280
1606
  *
1281
- * ```ts
1607
+ * ```ts import.meta.vitest
1282
1608
  * import { Config, ConfigProvider, Effect } from "effect"
1283
1609
  *
1284
- * const program = Effect.gen(function*() {
1285
- * const flag = yield* Config.boolean("FEATURE_FLAG")
1286
- * console.log(flag)
1287
- * })
1610
+ * const program = Config.boolean("FEATURE_FLAG")
1288
1611
  *
1289
1612
  * const provider = ConfigProvider.fromEnv({
1290
1613
  * env: {
@@ -1294,8 +1617,7 @@ export function literals<const L extends ReadonlyArray<SchemaAST.LiteralValue>>(
1294
1617
  *
1295
1618
  * Effect.runSync(
1296
1619
  * program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
1297
- * )
1298
- * // Output: true
1620
+ * ) // => true
1299
1621
  * ```
1300
1622
  *
1301
1623
  * @see {@link Boolean} for the underlying boolean codec
@@ -1324,13 +1646,10 @@ export function boolean(name?: string) {
1324
1646
  *
1325
1647
  * **Example** (Reading a duration)
1326
1648
  *
1327
- * ```ts
1328
- * import { Config, ConfigProvider, Effect } from "effect"
1649
+ * ```ts import.meta.vitest
1650
+ * import { Config, ConfigProvider, Duration, Effect } from "effect"
1329
1651
  *
1330
- * const program = Effect.gen(function*() {
1331
- * const duration = yield* Config.duration("DURATION")
1332
- * console.log(duration)
1333
- * })
1652
+ * const program = Config.duration("DURATION").pipe(Effect.map(Duration.toMillis))
1334
1653
  *
1335
1654
  * const provider = ConfigProvider.fromEnv({
1336
1655
  * env: {
@@ -1340,8 +1659,7 @@ export function boolean(name?: string) {
1340
1659
  *
1341
1660
  * Effect.runSync(
1342
1661
  * program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
1343
- * )
1344
- * // Output: Duration { _tag: "millis", value: 10000 }
1662
+ * ) // => 10000
1345
1663
  * ```
1346
1664
  *
1347
1665
  * @see {@link schema} for decoding configuration values with a custom codec
@@ -1366,13 +1684,10 @@ export function duration(name?: string) {
1366
1684
  *
1367
1685
  * **Example** (Reading a port)
1368
1686
  *
1369
- * ```ts
1687
+ * ```ts import.meta.vitest
1370
1688
  * import { Config, ConfigProvider, Effect } from "effect"
1371
1689
  *
1372
- * const program = Effect.gen(function*() {
1373
- * const port = yield* Config.port("PORT")
1374
- * console.log(port)
1375
- * })
1690
+ * const program = Config.port("PORT")
1376
1691
  *
1377
1692
  * const provider = ConfigProvider.fromEnv({
1378
1693
  * env: {
@@ -1382,8 +1697,7 @@ export function duration(name?: string) {
1382
1697
  *
1383
1698
  * Effect.runSync(
1384
1699
  * program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
1385
- * )
1386
- * // Output: 8080
1700
+ * ) // => 8080
1387
1701
  * ```
1388
1702
  *
1389
1703
  * @see {@link int} for integer config values outside the port range
@@ -1412,13 +1726,10 @@ export function port(name?: string) {
1412
1726
  *
1413
1727
  * **Example** (Reading a log level)
1414
1728
  *
1415
- * ```ts
1729
+ * ```ts import.meta.vitest
1416
1730
  * import { Config, ConfigProvider, Effect } from "effect"
1417
1731
  *
1418
- * const program = Effect.gen(function*() {
1419
- * const logLevel = yield* Config.logLevel("LOG_LEVEL")
1420
- * console.log(logLevel)
1421
- * })
1732
+ * const program = Config.logLevel("LOG_LEVEL")
1422
1733
  *
1423
1734
  * const provider = ConfigProvider.fromEnv({
1424
1735
  * env: {
@@ -1428,8 +1739,7 @@ export function port(name?: string) {
1428
1739
  *
1429
1740
  * Effect.runSync(
1430
1741
  * program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
1431
- * )
1432
- * // Output: "Info"
1742
+ * ) // => "Info"
1433
1743
  * ```
1434
1744
  *
1435
1745
  * @see {@link LogLevel} for the underlying log-level codec
@@ -1456,13 +1766,10 @@ export function logLevel(name?: string) {
1456
1766
  *
1457
1767
  * **Example** (Reading a secret)
1458
1768
  *
1459
- * ```ts
1769
+ * ```ts import.meta.vitest
1460
1770
  * import { Config, ConfigProvider, Effect } from "effect"
1461
1771
  *
1462
- * const program = Effect.gen(function*() {
1463
- * const apiKey = yield* Config.redacted("API_KEY")
1464
- * console.log(apiKey)
1465
- * })
1772
+ * const program = Config.redacted("API_KEY").pipe(Effect.map(String))
1466
1773
  *
1467
1774
  * const provider = ConfigProvider.fromEnv({
1468
1775
  * env: {
@@ -1472,8 +1779,7 @@ export function logLevel(name?: string) {
1472
1779
  *
1473
1780
  * Effect.runSync(
1474
1781
  * program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
1475
- * )
1476
- * // Output: <redacted>
1782
+ * ) // => "<redacted>"
1477
1783
  * ```
1478
1784
  *
1479
1785
  * @see {@link string} for non-secret string settings
@@ -1502,13 +1808,10 @@ export function redacted(name?: string) {
1502
1808
  *
1503
1809
  * **Example** (Reading a URL)
1504
1810
  *
1505
- * ```ts
1811
+ * ```ts import.meta.vitest
1506
1812
  * import { Config, ConfigProvider, Effect } from "effect"
1507
1813
  *
1508
- * const program = Effect.gen(function*() {
1509
- * const url = yield* Config.url("URL")
1510
- * console.log(url)
1511
- * })
1814
+ * const program = Config.url("URL").pipe(Effect.map((url) => url.href))
1512
1815
  *
1513
1816
  * const provider = ConfigProvider.fromEnv({
1514
1817
  * env: {
@@ -1518,22 +1821,7 @@ export function redacted(name?: string) {
1518
1821
  *
1519
1822
  * Effect.runSync(
1520
1823
  * program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
1521
- * )
1522
- * // Output:
1523
- * // URL {
1524
- * // href: 'https://example.com/',
1525
- * // origin: 'https://example.com',
1526
- * // protocol: 'https:',
1527
- * // username: '',
1528
- * // password: '',
1529
- * // host: 'example.com',
1530
- * // hostname: 'example.com',
1531
- * // port: '',
1532
- * // pathname: '/',
1533
- * // search: '',
1534
- * // searchParams: URLSearchParams {},
1535
- * // hash: ''
1536
- * // }
1824
+ * ) // => "https://example.com/"
1537
1825
  * ```
1538
1826
  *
1539
1827
  * @see {@link schema} for decoding configuration values with a custom codec
@@ -1554,7 +1842,7 @@ export function url(name?: string) {
1554
1842
  *
1555
1843
  * **Details**
1556
1844
  *
1557
- * Shortcut for `Config.schema(Schema.DateValid, name)`.
1845
+ * Shortcut for `Config.schema(Schema.Date, name)`.
1558
1846
  *
1559
1847
  * **Gotchas**
1560
1848
  *
@@ -1562,21 +1850,20 @@ export function url(name?: string) {
1562
1850
  *
1563
1851
  * **Example** (Reading a date)
1564
1852
  *
1565
- * ```ts
1853
+ * ```ts import.meta.vitest
1566
1854
  * import { Config, ConfigProvider, Effect } from "effect"
1567
1855
  *
1568
1856
  * const createdAt = Config.date("CREATED_AT")
1569
1857
  *
1570
1858
  * const provider = ConfigProvider.fromUnknown({ CREATED_AT: "2024-01-15" })
1571
- * // Effect.runSync(createdAt.parse(provider))
1572
- * // Date("2024-01-15T00:00:00.000Z")
1859
+ * Effect.runSync(createdAt.parse(provider)).toISOString() // => "2024-01-15T00:00:00.000Z"
1573
1860
  * ```
1574
1861
  *
1575
1862
  * @category constructors
1576
1863
  * @since 2.0.0
1577
1864
  */
1578
1865
  export function date(name?: string) {
1579
- return schema(Schema.DateValid, name)
1866
+ return schema(Schema.Date, name)
1580
1867
  }
1581
1868
 
1582
1869
  /**
@@ -1597,7 +1884,7 @@ export function date(name?: string) {
1597
1884
  *
1598
1885
  * **Example** (Nesting a struct config under `"database"`)
1599
1886
  *
1600
- * ```ts
1887
+ * ```ts import.meta.vitest
1601
1888
  * import { Config, ConfigProvider, Effect } from "effect"
1602
1889
  *
1603
1890
  * const dbConfig = Config.all({
@@ -1608,13 +1895,12 @@ export function date(name?: string) {
1608
1895
  * const provider = ConfigProvider.fromUnknown({
1609
1896
  * database: { host: "localhost", port: "5432" }
1610
1897
  * })
1611
- * // Effect.runSync(dbConfig.parse(provider))
1612
- * // { host: "localhost", port: 5432 }
1898
+ * Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
1613
1899
  * ```
1614
1900
  *
1615
1901
  * **Example** (Reading env vars with a nested prefix)
1616
1902
  *
1617
- * ```ts
1903
+ * ```ts import.meta.vitest
1618
1904
  * import { Config, ConfigProvider, Effect } from "effect"
1619
1905
  *
1620
1906
  * const host = Config.string("host").pipe(Config.nested("database"))
@@ -1622,7 +1908,7 @@ export function date(name?: string) {
1622
1908
  * const provider = ConfigProvider.fromEnv({
1623
1909
  * env: { database_host: "localhost" }
1624
1910
  * })
1625
- * // Effect.runSync(host.parse(provider)) // "localhost"
1911
+ * Effect.runSync(host.parse(provider)) // => "localhost"
1626
1912
  * ```
1627
1913
  *
1628
1914
  * @see {@link all} – combine multiple configs into a struct
@@ -1650,7 +1936,7 @@ export const nested: {
1650
1936
  *
1651
1937
  * **Example** (Nesting a struct config under `"database"`)
1652
1938
  *
1653
- * ```ts
1939
+ * ```ts import.meta.vitest
1654
1940
  * import { Config, ConfigProvider, Effect } from "effect"
1655
1941
  *
1656
1942
  * const dbConfig = Config.all({
@@ -1661,13 +1947,12 @@ export const nested: {
1661
1947
  * const provider = ConfigProvider.fromUnknown({
1662
1948
  * database: { host: "localhost", port: "5432" }
1663
1949
  * })
1664
- * // Effect.runSync(dbConfig.parse(provider))
1665
- * // { host: "localhost", port: 5432 }
1950
+ * Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
1666
1951
  * ```
1667
1952
  *
1668
1953
  * **Example** (Reading env vars with a nested prefix)
1669
1954
  *
1670
- * ```ts
1955
+ * ```ts import.meta.vitest
1671
1956
  * import { Config, ConfigProvider, Effect } from "effect"
1672
1957
  *
1673
1958
  * const host = Config.string("host").pipe(Config.nested("database"))
@@ -1675,7 +1960,7 @@ export const nested: {
1675
1960
  * const provider = ConfigProvider.fromEnv({
1676
1961
  * env: { database_host: "localhost" }
1677
1962
  * })
1678
- * // Effect.runSync(host.parse(provider)) // "localhost"
1963
+ * Effect.runSync(host.parse(provider)) // => "localhost"
1679
1964
  * ```
1680
1965
  *
1681
1966
  * @see {@link all} – combine multiple configs into a struct
@@ -1703,7 +1988,7 @@ export const nested: {
1703
1988
  *
1704
1989
  * **Example** (Nesting a struct config under `"database"`)
1705
1990
  *
1706
- * ```ts
1991
+ * ```ts import.meta.vitest
1707
1992
  * import { Config, ConfigProvider, Effect } from "effect"
1708
1993
  *
1709
1994
  * const dbConfig = Config.all({
@@ -1714,13 +1999,12 @@ export const nested: {
1714
1999
  * const provider = ConfigProvider.fromUnknown({
1715
2000
  * database: { host: "localhost", port: "5432" }
1716
2001
  * })
1717
- * // Effect.runSync(dbConfig.parse(provider))
1718
- * // { host: "localhost", port: 5432 }
2002
+ * Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
1719
2003
  * ```
1720
2004
  *
1721
2005
  * **Example** (Reading env vars with a nested prefix)
1722
2006
  *
1723
- * ```ts
2007
+ * ```ts import.meta.vitest
1724
2008
  * import { Config, ConfigProvider, Effect } from "effect"
1725
2009
  *
1726
2010
  * const host = Config.string("host").pipe(Config.nested("database"))
@@ -1728,7 +2012,7 @@ export const nested: {
1728
2012
  * const provider = ConfigProvider.fromEnv({
1729
2013
  * env: { database_host: "localhost" }
1730
2014
  * })
1731
- * // Effect.runSync(host.parse(provider)) // "localhost"
2015
+ * Effect.runSync(host.parse(provider)) // => "localhost"
1732
2016
  * ```
1733
2017
  *
1734
2018
  * @see {@link all} – combine multiple configs into a struct
@@ -1741,5 +2025,5 @@ export const nested: {
1741
2025
  } = dual(
1742
2026
  2,
1743
2027
  <A>(self: Config<A>, name: string): Config<A> =>
1744
- make((provider, pathPrefix) => self.parse(provider, [...pathPrefix, name]))
2028
+ make((provider, pathPrefix) => evaluateAt(self, provider, [...pathPrefix, name]))
1745
2029
  )