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

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