effect 4.0.0-beta.102 → 4.0.0-beta.104

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 (1637) 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 +167 -102
  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 +730 -769
  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 +357 -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 +117 -81
  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 +153 -276
  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 +22 -15
  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 +144 -187
  84. package/dist/Duration.js.map +1 -1
  85. package/dist/Effect.d.ts +2993 -3281
  86. package/dist/Effect.d.ts.map +1 -1
  87. package/dist/Effect.js +1360 -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 +39 -23
  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 +86 -55
  107. package/dist/ExecutionPlan.d.ts.map +1 -1
  108. package/dist/ExecutionPlan.js +8 -29
  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 +86 -60
  129. package/dist/FiberSet.js.map +1 -1
  130. package/dist/FileSystem.d.ts +154 -265
  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 +80 -148
  143. package/dist/Function.d.ts.map +1 -1
  144. package/dist/Function.js +45 -62
  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 +239 -316
  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 +202 -180
  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 +292 -1638
  357. package/dist/Schedule.d.ts.map +1 -1
  358. package/dist/Schedule.js +164 -805
  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 +676 -674
  365. package/dist/Schema.d.ts.map +1 -1
  366. package/dist/Schema.js +513 -544
  367. package/dist/Schema.js.map +1 -1
  368. package/dist/SchemaAST.d.ts +30 -53
  369. package/dist/SchemaAST.d.ts.map +1 -1
  370. package/dist/SchemaAST.js +404 -301
  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 +137 -107
  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 +1 -1
  401. package/dist/ScopedCache.js.map +1 -1
  402. package/dist/ScopedRef.d.ts +3 -3
  403. package/dist/ScopedRef.js +2 -2
  404. package/dist/ScopedRef.js.map +1 -1
  405. package/dist/Semaphore.d.ts +96 -10
  406. package/dist/Semaphore.d.ts.map +1 -1
  407. package/dist/Semaphore.js +78 -39
  408. package/dist/Semaphore.js.map +1 -1
  409. package/dist/Sink.d.ts +118 -108
  410. package/dist/Sink.d.ts.map +1 -1
  411. package/dist/Sink.js +107 -100
  412. package/dist/Sink.js.map +1 -1
  413. package/dist/Stdio.d.ts +1 -1
  414. package/dist/Stdio.js.map +1 -1
  415. package/dist/Stream.d.ts +2442 -2953
  416. package/dist/Stream.d.ts.map +1 -1
  417. package/dist/Stream.js +1105 -1383
  418. package/dist/Stream.js.map +1 -1
  419. package/dist/String.d.ts +262 -308
  420. package/dist/String.d.ts.map +1 -1
  421. package/dist/String.js +184 -215
  422. package/dist/String.js.map +1 -1
  423. package/dist/Struct.d.ts +109 -114
  424. package/dist/Struct.d.ts.map +1 -1
  425. package/dist/Struct.js +41 -50
  426. package/dist/Struct.js.map +1 -1
  427. package/dist/SubscriptionRef.d.ts +282 -250
  428. package/dist/SubscriptionRef.d.ts.map +1 -1
  429. package/dist/SubscriptionRef.js +104 -92
  430. package/dist/SubscriptionRef.js.map +1 -1
  431. package/dist/Symbol.d.ts +3 -3
  432. package/dist/Symbol.js +3 -3
  433. package/dist/Symbol.js.map +1 -1
  434. package/dist/SynchronizedRef.js +1 -1
  435. package/dist/SynchronizedRef.js.map +1 -1
  436. package/dist/Take.js.map +1 -1
  437. package/dist/Terminal.d.ts +2 -2
  438. package/dist/Terminal.js +2 -2
  439. package/dist/Terminal.js.map +1 -1
  440. package/dist/Tracer.d.ts +100 -54
  441. package/dist/Tracer.d.ts.map +1 -1
  442. package/dist/Tracer.js +41 -24
  443. package/dist/Tracer.js.map +1 -1
  444. package/dist/Trie.d.ts +287 -679
  445. package/dist/Trie.d.ts.map +1 -1
  446. package/dist/Trie.js +109 -251
  447. package/dist/Trie.js.map +1 -1
  448. package/dist/Tuple.d.ts +98 -131
  449. package/dist/Tuple.d.ts.map +1 -1
  450. package/dist/Tuple.js +42 -57
  451. package/dist/Tuple.js.map +1 -1
  452. package/dist/TxChunk.d.ts +201 -121
  453. package/dist/TxChunk.d.ts.map +1 -1
  454. package/dist/TxChunk.js +85 -56
  455. package/dist/TxChunk.js.map +1 -1
  456. package/dist/TxDeferred.d.ts +62 -46
  457. package/dist/TxDeferred.d.ts.map +1 -1
  458. package/dist/TxDeferred.js +30 -22
  459. package/dist/TxDeferred.js.map +1 -1
  460. package/dist/TxHashMap.d.ts +631 -779
  461. package/dist/TxHashMap.d.ts.map +1 -1
  462. package/dist/TxHashMap.js +268 -330
  463. package/dist/TxHashMap.js.map +1 -1
  464. package/dist/TxHashSet.d.ts +297 -236
  465. package/dist/TxHashSet.d.ts.map +1 -1
  466. package/dist/TxHashSet.js +130 -100
  467. package/dist/TxHashSet.js.map +1 -1
  468. package/dist/TxPriorityQueue.d.ts +126 -95
  469. package/dist/TxPriorityQueue.d.ts.map +1 -1
  470. package/dist/TxPriorityQueue.js +74 -56
  471. package/dist/TxPriorityQueue.js.map +1 -1
  472. package/dist/TxPubSub.d.ts +101 -88
  473. package/dist/TxPubSub.d.ts.map +1 -1
  474. package/dist/TxPubSub.js +87 -66
  475. package/dist/TxPubSub.js.map +1 -1
  476. package/dist/TxQueue.d.ts +200 -180
  477. package/dist/TxQueue.d.ts.map +1 -1
  478. package/dist/TxQueue.js +160 -136
  479. package/dist/TxQueue.js.map +1 -1
  480. package/dist/TxReentrantLock.d.ts +89 -114
  481. package/dist/TxReentrantLock.d.ts.map +1 -1
  482. package/dist/TxReentrantLock.js +75 -53
  483. package/dist/TxReentrantLock.js.map +1 -1
  484. package/dist/TxRef.d.ts +51 -32
  485. package/dist/TxRef.d.ts.map +1 -1
  486. package/dist/TxRef.js +23 -15
  487. package/dist/TxRef.js.map +1 -1
  488. package/dist/TxSemaphore.d.ts +129 -95
  489. package/dist/TxSemaphore.d.ts.map +1 -1
  490. package/dist/TxSemaphore.js +85 -70
  491. package/dist/TxSemaphore.js.map +1 -1
  492. package/dist/TxSubscriptionRef.d.ts +97 -70
  493. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  494. package/dist/TxSubscriptionRef.js +44 -34
  495. package/dist/TxSubscriptionRef.js.map +1 -1
  496. package/dist/Types.d.ts +126 -67
  497. package/dist/Types.d.ts.map +1 -1
  498. package/dist/UndefinedOr.js.map +1 -1
  499. package/dist/Unify.d.ts +45 -65
  500. package/dist/Unify.d.ts.map +1 -1
  501. package/dist/Unify.js +6 -9
  502. package/dist/Unify.js.map +1 -1
  503. package/dist/Utils.d.ts +23 -16
  504. package/dist/Utils.d.ts.map +1 -1
  505. package/dist/Utils.js +3 -7
  506. package/dist/Utils.js.map +1 -1
  507. package/dist/index.js.map +1 -1
  508. package/dist/internal/array.js.map +1 -1
  509. package/dist/internal/core.js +1 -1
  510. package/dist/internal/core.js.map +1 -1
  511. package/dist/internal/dateTime.js +5 -1
  512. package/dist/internal/dateTime.js.map +1 -1
  513. package/dist/internal/doNotation.js.map +1 -1
  514. package/dist/internal/effect.js +77 -40
  515. package/dist/internal/effect.js.map +1 -1
  516. package/dist/internal/equal.js.map +1 -1
  517. package/dist/internal/errors.js.map +1 -1
  518. package/dist/internal/executionPlan.js +51 -3
  519. package/dist/internal/executionPlan.js.map +1 -1
  520. package/dist/internal/hashMap.js +12 -8
  521. package/dist/internal/hashMap.js.map +1 -1
  522. package/dist/internal/hashSet.js.map +1 -1
  523. package/dist/internal/layer.js.map +1 -1
  524. package/dist/internal/matcher.js +1 -1
  525. package/dist/internal/matcher.js.map +1 -1
  526. package/dist/internal/metric.js.map +1 -1
  527. package/dist/internal/option.js.map +1 -1
  528. package/dist/internal/persistence.d.ts +2 -0
  529. package/dist/internal/persistence.d.ts.map +1 -0
  530. package/dist/internal/persistence.js +3 -0
  531. package/dist/internal/persistence.js.map +1 -0
  532. package/dist/internal/random.js.map +1 -1
  533. package/dist/internal/rcRef.js.map +1 -1
  534. package/dist/internal/record.js.map +1 -1
  535. package/dist/internal/redacted.js.map +1 -1
  536. package/dist/internal/references.js +3 -0
  537. package/dist/internal/references.js.map +1 -1
  538. package/dist/internal/request.js.map +1 -1
  539. package/dist/internal/result.js.map +1 -1
  540. package/dist/internal/schedule.js.map +1 -1
  541. package/dist/internal/schema/annotations.js +2 -0
  542. package/dist/internal/schema/annotations.js.map +1 -1
  543. package/dist/internal/schema/cause.js.map +1 -1
  544. package/dist/internal/schema/fromJsonSchemaDocument.js +13 -11
  545. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  546. package/dist/internal/schema/fromRepresentation.js +8 -15
  547. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  548. package/dist/internal/schema/parser.d.ts +14 -0
  549. package/dist/internal/schema/parser.d.ts.map +1 -0
  550. package/dist/internal/schema/parser.js +13 -0
  551. package/dist/internal/schema/parser.js.map +1 -0
  552. package/dist/internal/schema/schema.js.map +1 -1
  553. package/dist/internal/schema/toArbitrary.js +1 -1
  554. package/dist/internal/schema/toArbitrary.js.map +1 -1
  555. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  556. package/dist/internal/schema/toEquivalence.js.map +1 -1
  557. package/dist/internal/schema/toJsonSchemaDocument.js +48 -6
  558. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  559. package/dist/internal/schema/toRepresentation.js +87 -107
  560. package/dist/internal/schema/toRepresentation.js.map +1 -1
  561. package/dist/internal/stackTraceLimit.js.map +1 -1
  562. package/dist/internal/stream.js.map +1 -1
  563. package/dist/internal/tracer.js.map +1 -1
  564. package/dist/internal/trie.js +24 -10
  565. package/dist/internal/trie.js.map +1 -1
  566. package/dist/testing/FastCheck.d.ts +8 -7
  567. package/dist/testing/FastCheck.d.ts.map +1 -1
  568. package/dist/testing/FastCheck.js +8 -7
  569. package/dist/testing/FastCheck.js.map +1 -1
  570. package/dist/testing/TestClock.d.ts +57 -28
  571. package/dist/testing/TestClock.d.ts.map +1 -1
  572. package/dist/testing/TestClock.js +61 -19
  573. package/dist/testing/TestClock.js.map +1 -1
  574. package/dist/testing/TestConsole.d.ts +32 -31
  575. package/dist/testing/TestConsole.d.ts.map +1 -1
  576. package/dist/testing/TestConsole.js +24 -22
  577. package/dist/testing/TestConsole.js.map +1 -1
  578. package/dist/testing/TestSchema.d.ts +30 -30
  579. package/dist/testing/TestSchema.d.ts.map +1 -1
  580. package/dist/testing/TestSchema.js +25 -25
  581. package/dist/testing/TestSchema.js.map +1 -1
  582. package/dist/testing/index.js.map +1 -1
  583. package/dist/unstable/ai/AiError.d.ts +95 -118
  584. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  585. package/dist/unstable/ai/AiError.js +113 -136
  586. package/dist/unstable/ai/AiError.js.map +1 -1
  587. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
  588. package/dist/unstable/ai/AnthropicStructuredOutput.js +1 -1
  589. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  590. package/dist/unstable/ai/Chat.d.ts +132 -97
  591. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  592. package/dist/unstable/ai/Chat.js +56 -52
  593. package/dist/unstable/ai/Chat.js.map +1 -1
  594. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  595. package/dist/unstable/ai/IdGenerator.d.ts +32 -28
  596. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  597. package/dist/unstable/ai/IdGenerator.js +26 -21
  598. package/dist/unstable/ai/IdGenerator.js.map +1 -1
  599. package/dist/unstable/ai/LanguageModel.d.ts +107 -67
  600. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  601. package/dist/unstable/ai/LanguageModel.js +108 -66
  602. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  603. package/dist/unstable/ai/McpProtocol.d.ts +30 -0
  604. package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
  605. package/dist/unstable/ai/McpProtocol.js +20 -0
  606. package/dist/unstable/ai/McpProtocol.js.map +1 -0
  607. package/dist/unstable/ai/McpSchema.d.ts +251 -185
  608. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  609. package/dist/unstable/ai/McpSchema.js +66 -58
  610. package/dist/unstable/ai/McpSchema.js.map +1 -1
  611. package/dist/unstable/ai/McpServer.d.ts +68 -59
  612. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  613. package/dist/unstable/ai/McpServer.js +695 -242
  614. package/dist/unstable/ai/McpServer.js.map +1 -1
  615. package/dist/unstable/ai/Model.d.ts +8 -19
  616. package/dist/unstable/ai/Model.d.ts.map +1 -1
  617. package/dist/unstable/ai/Model.js +9 -20
  618. package/dist/unstable/ai/Model.js.map +1 -1
  619. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
  620. package/dist/unstable/ai/OpenAiStructuredOutput.js +1 -1
  621. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  622. package/dist/unstable/ai/Prompt.d.ts +127 -41
  623. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  624. package/dist/unstable/ai/Prompt.js +59 -20
  625. package/dist/unstable/ai/Prompt.js.map +1 -1
  626. package/dist/unstable/ai/Response.d.ts +28 -14
  627. package/dist/unstable/ai/Response.d.ts.map +1 -1
  628. package/dist/unstable/ai/Response.js +9 -4
  629. package/dist/unstable/ai/Response.js.map +1 -1
  630. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
  631. package/dist/unstable/ai/Telemetry.d.ts +46 -13
  632. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  633. package/dist/unstable/ai/Telemetry.js +18 -7
  634. package/dist/unstable/ai/Telemetry.js.map +1 -1
  635. package/dist/unstable/ai/Tokenizer.d.ts +14 -3
  636. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  637. package/dist/unstable/ai/Tokenizer.js +10 -2
  638. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  639. package/dist/unstable/ai/Tool.d.ts +59 -44
  640. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  641. package/dist/unstable/ai/Tool.js +48 -39
  642. package/dist/unstable/ai/Tool.js.map +1 -1
  643. package/dist/unstable/ai/Toolkit.d.ts +26 -8
  644. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  645. package/dist/unstable/ai/Toolkit.js +18 -4
  646. package/dist/unstable/ai/Toolkit.js.map +1 -1
  647. package/dist/unstable/ai/index.d.ts +4 -0
  648. package/dist/unstable/ai/index.d.ts.map +1 -1
  649. package/dist/unstable/ai/index.js +4 -0
  650. package/dist/unstable/ai/index.js.map +1 -1
  651. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  652. package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
  653. package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
  654. package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
  655. package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
  656. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
  657. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
  658. package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
  659. package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
  660. package/dist/unstable/ai/internal/structured-output.js +14 -15
  661. package/dist/unstable/ai/internal/structured-output.js.map +1 -1
  662. package/dist/unstable/cli/Argument.d.ts +273 -69
  663. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  664. package/dist/unstable/cli/Argument.js +111 -33
  665. package/dist/unstable/cli/Argument.js.map +1 -1
  666. package/dist/unstable/cli/CliConfig.js.map +1 -1
  667. package/dist/unstable/cli/CliError.d.ts +70 -77
  668. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  669. package/dist/unstable/cli/CliError.js +66 -70
  670. package/dist/unstable/cli/CliError.js.map +1 -1
  671. package/dist/unstable/cli/CliOutput.d.ts +35 -54
  672. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  673. package/dist/unstable/cli/CliOutput.js +26 -42
  674. package/dist/unstable/cli/CliOutput.js.map +1 -1
  675. package/dist/unstable/cli/Command.d.ts +713 -115
  676. package/dist/unstable/cli/Command.d.ts.map +1 -1
  677. package/dist/unstable/cli/Command.js +245 -47
  678. package/dist/unstable/cli/Command.js.map +1 -1
  679. package/dist/unstable/cli/Completions.js.map +1 -1
  680. package/dist/unstable/cli/Flag.d.ts +418 -138
  681. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  682. package/dist/unstable/cli/Flag.js +197 -71
  683. package/dist/unstable/cli/Flag.js.map +1 -1
  684. package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
  685. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  686. package/dist/unstable/cli/HelpDoc.d.ts +12 -4
  687. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  688. package/dist/unstable/cli/Param.d.ts +299 -83
  689. package/dist/unstable/cli/Param.d.ts.map +1 -1
  690. package/dist/unstable/cli/Param.js +143 -57
  691. package/dist/unstable/cli/Param.js.map +1 -1
  692. package/dist/unstable/cli/Primitive.d.ts +370 -149
  693. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  694. package/dist/unstable/cli/Primitive.js +375 -160
  695. package/dist/unstable/cli/Primitive.js.map +1 -1
  696. package/dist/unstable/cli/Prompt.d.ts +23 -14
  697. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  698. package/dist/unstable/cli/Prompt.js +54 -31
  699. package/dist/unstable/cli/Prompt.js.map +1 -1
  700. package/dist/unstable/cli/index.js.map +1 -1
  701. package/dist/unstable/cli/internal/ansi.js +2 -2
  702. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  703. package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
  704. package/dist/unstable/cli/internal/command.d.ts +2 -2
  705. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  706. package/dist/unstable/cli/internal/command.js +10 -9
  707. package/dist/unstable/cli/internal/command.js.map +1 -1
  708. package/dist/unstable/cli/internal/completions/bash.js +69 -9
  709. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  710. package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
  711. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  712. package/dist/unstable/cli/internal/completions/fish.js +5 -5
  713. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  714. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  715. package/dist/unstable/cli/internal/config.js.map +1 -1
  716. package/dist/unstable/cli/internal/help.d.ts.map +1 -1
  717. package/dist/unstable/cli/internal/help.js +4 -2
  718. package/dist/unstable/cli/internal/help.js.map +1 -1
  719. package/dist/unstable/cli/internal/lexer.js +17 -7
  720. package/dist/unstable/cli/internal/lexer.js.map +1 -1
  721. package/dist/unstable/cli/internal/parser.js +5 -5
  722. package/dist/unstable/cli/internal/parser.js.map +1 -1
  723. package/dist/unstable/cli/internal/wizard.js +2 -2
  724. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  725. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  726. package/dist/unstable/cluster/ClusterError.js +7 -7
  727. package/dist/unstable/cluster/ClusterError.js.map +1 -1
  728. package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
  729. package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
  730. package/dist/unstable/cluster/ClusterSchema.js +8 -8
  731. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  732. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  733. package/dist/unstable/cluster/ClusterWorkflowEngine.js +6 -2
  734. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  735. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  736. package/dist/unstable/cluster/Entity.d.ts +10 -10
  737. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  738. package/dist/unstable/cluster/Entity.js +8 -8
  739. package/dist/unstable/cluster/Entity.js.map +1 -1
  740. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  741. package/dist/unstable/cluster/EntityId.js.map +1 -1
  742. package/dist/unstable/cluster/EntityProxy.d.ts +4 -2
  743. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  744. package/dist/unstable/cluster/EntityProxy.js +4 -2
  745. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  746. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  747. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  748. package/dist/unstable/cluster/EntityResource.js +2 -2
  749. package/dist/unstable/cluster/EntityResource.js.map +1 -1
  750. package/dist/unstable/cluster/EntityType.js.map +1 -1
  751. package/dist/unstable/cluster/Envelope.d.ts +3 -3
  752. package/dist/unstable/cluster/Envelope.js +3 -3
  753. package/dist/unstable/cluster/Envelope.js.map +1 -1
  754. package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
  755. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  756. package/dist/unstable/cluster/HttpRunner.js +6 -4
  757. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  758. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  759. package/dist/unstable/cluster/MachineId.js.map +1 -1
  760. package/dist/unstable/cluster/Message.d.ts +9 -9
  761. package/dist/unstable/cluster/Message.js +6 -6
  762. package/dist/unstable/cluster/Message.js.map +1 -1
  763. package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
  764. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  765. package/dist/unstable/cluster/MessageStorage.js +13 -6
  766. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  767. package/dist/unstable/cluster/Reply.d.ts +8 -0
  768. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  769. package/dist/unstable/cluster/Reply.js +16 -4
  770. package/dist/unstable/cluster/Reply.js.map +1 -1
  771. package/dist/unstable/cluster/Runner.js.map +1 -1
  772. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  773. package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
  774. package/dist/unstable/cluster/RunnerHealth.js +1 -1
  775. package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
  776. package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
  777. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  778. package/dist/unstable/cluster/RunnerServer.js +18 -16
  779. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  780. package/dist/unstable/cluster/RunnerStorage.d.ts +3 -4
  781. package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
  782. package/dist/unstable/cluster/RunnerStorage.js +8 -7
  783. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  784. package/dist/unstable/cluster/Runners.d.ts +6 -6
  785. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  786. package/dist/unstable/cluster/Runners.js +19 -10
  787. package/dist/unstable/cluster/Runners.js.map +1 -1
  788. package/dist/unstable/cluster/ShardId.js.map +1 -1
  789. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  790. package/dist/unstable/cluster/Sharding.js +25 -6
  791. package/dist/unstable/cluster/Sharding.js.map +1 -1
  792. package/dist/unstable/cluster/ShardingConfig.d.ts +3 -3
  793. package/dist/unstable/cluster/ShardingConfig.js +3 -3
  794. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  795. package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
  796. package/dist/unstable/cluster/SingleRunner.js.map +1 -1
  797. package/dist/unstable/cluster/Singleton.js.map +1 -1
  798. package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
  799. package/dist/unstable/cluster/SingletonAddress.js +1 -1
  800. package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
  801. package/dist/unstable/cluster/Snowflake.d.ts +8 -8
  802. package/dist/unstable/cluster/Snowflake.js +8 -8
  803. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  804. package/dist/unstable/cluster/SocketRunner.js.map +1 -1
  805. package/dist/unstable/cluster/SqlMessageStorage.js +1 -1
  806. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  807. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  808. package/dist/unstable/cluster/SqlRunnerStorage.js +20 -5
  809. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  810. package/dist/unstable/cluster/TestRunner.js.map +1 -1
  811. package/dist/unstable/cluster/index.js.map +1 -1
  812. package/dist/unstable/cluster/internal/entityManager.js +6 -6
  813. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  814. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  815. package/dist/unstable/cluster/internal/hash.js.map +1 -1
  816. package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
  817. package/dist/unstable/cluster/internal/resourceMap.js +2 -2
  818. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  819. package/dist/unstable/cluster/internal/resourceRef.js +17 -0
  820. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  821. package/dist/unstable/cluster/internal/shardLock.js.map +1 -1
  822. package/dist/unstable/devtools/DevTools.js.map +1 -1
  823. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  824. package/dist/unstable/devtools/DevToolsClient.js +7 -2
  825. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  826. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  827. package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
  828. package/dist/unstable/devtools/index.js.map +1 -1
  829. package/dist/unstable/encoding/Ini.d.ts +20 -0
  830. package/dist/unstable/encoding/Ini.d.ts.map +1 -0
  831. package/dist/unstable/encoding/Ini.js +153 -0
  832. package/dist/unstable/encoding/Ini.js.map +1 -0
  833. package/dist/unstable/encoding/Msgpack.d.ts +2 -1
  834. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  835. package/dist/unstable/encoding/Msgpack.js +27 -15
  836. package/dist/unstable/encoding/Msgpack.js.map +1 -1
  837. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  838. package/dist/unstable/encoding/Ndjson.js +7 -1
  839. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  840. package/dist/unstable/encoding/Sse.d.ts +72 -8
  841. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  842. package/dist/unstable/encoding/Sse.js +72 -31
  843. package/dist/unstable/encoding/Sse.js.map +1 -1
  844. package/dist/unstable/encoding/Toml.d.ts +19 -0
  845. package/dist/unstable/encoding/Toml.d.ts.map +1 -0
  846. package/dist/unstable/encoding/Toml.js +434 -0
  847. package/dist/unstable/encoding/Toml.js.map +1 -0
  848. package/dist/unstable/encoding/Yaml.d.ts +19 -0
  849. package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
  850. package/dist/unstable/encoding/Yaml.js +461 -0
  851. package/dist/unstable/encoding/Yaml.js.map +1 -0
  852. package/dist/unstable/encoding/index.d.ts +12 -0
  853. package/dist/unstable/encoding/index.d.ts.map +1 -1
  854. package/dist/unstable/encoding/index.js +12 -0
  855. package/dist/unstable/encoding/index.js.map +1 -1
  856. package/dist/unstable/eventlog/Event.d.ts +20 -20
  857. package/dist/unstable/eventlog/Event.js.map +1 -1
  858. package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
  859. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  860. package/dist/unstable/eventlog/EventJournal.d.ts +16 -16
  861. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  862. package/dist/unstable/eventlog/EventJournal.js +26 -18
  863. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  864. package/dist/unstable/eventlog/EventLog.d.ts +3 -3
  865. package/dist/unstable/eventlog/EventLog.js +3 -3
  866. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  867. package/dist/unstable/eventlog/EventLogEncryption.d.ts +1 -1
  868. package/dist/unstable/eventlog/EventLogEncryption.js +1 -1
  869. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  870. package/dist/unstable/eventlog/EventLogMessage.d.ts +2 -2
  871. package/dist/unstable/eventlog/EventLogMessage.js +2 -2
  872. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  873. package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
  874. package/dist/unstable/eventlog/EventLogRemote.js +1 -1
  875. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  876. package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
  877. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  878. package/dist/unstable/eventlog/EventLogServer.js +45 -21
  879. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  880. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
  881. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  882. package/dist/unstable/eventlog/EventLogServerEncrypted.js +13 -5
  883. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
  884. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
  885. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  886. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +15 -7
  887. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  888. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
  889. package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
  890. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
  891. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
  892. package/dist/unstable/eventlog/SqlEventJournal.js +1 -4
  893. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  894. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  895. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  896. package/dist/unstable/eventlog/index.js.map +1 -1
  897. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  898. package/dist/unstable/http/Cookies.d.ts +2 -2
  899. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  900. package/dist/unstable/http/Cookies.js +30 -18
  901. package/dist/unstable/http/Cookies.js.map +1 -1
  902. package/dist/unstable/http/Etag.d.ts +1 -1
  903. package/dist/unstable/http/Etag.js +1 -1
  904. package/dist/unstable/http/Etag.js.map +1 -1
  905. package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
  906. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  907. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts +11 -0
  908. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
  909. package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
  910. package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
  911. package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
  912. package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
  913. package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
  914. package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
  915. package/dist/unstable/http/FindMyWay.d.ts +33 -8
  916. package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
  917. package/dist/unstable/http/FindMyWay.js +4 -7
  918. package/dist/unstable/http/FindMyWay.js.map +1 -1
  919. package/dist/unstable/http/Headers.d.ts +2 -2
  920. package/dist/unstable/http/Headers.js +2 -2
  921. package/dist/unstable/http/Headers.js.map +1 -1
  922. package/dist/unstable/http/HttpBody.d.ts +5 -3
  923. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  924. package/dist/unstable/http/HttpBody.js +11 -5
  925. package/dist/unstable/http/HttpBody.js.map +1 -1
  926. package/dist/unstable/http/HttpClient.d.ts +51 -44
  927. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  928. package/dist/unstable/http/HttpClient.js +46 -17
  929. package/dist/unstable/http/HttpClient.js.map +1 -1
  930. package/dist/unstable/http/HttpClientError.js +1 -1
  931. package/dist/unstable/http/HttpClientError.js.map +1 -1
  932. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  933. package/dist/unstable/http/HttpClientRequest.js +2 -12
  934. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  935. package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
  936. package/dist/unstable/http/HttpClientResponse.js +3 -18
  937. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  938. package/dist/unstable/http/HttpEffect.d.ts +6 -6
  939. package/dist/unstable/http/HttpEffect.js +3 -3
  940. package/dist/unstable/http/HttpEffect.js.map +1 -1
  941. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  942. package/dist/unstable/http/HttpMethod.d.ts +6 -9
  943. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  944. package/dist/unstable/http/HttpMethod.js +6 -9
  945. package/dist/unstable/http/HttpMethod.js.map +1 -1
  946. package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
  947. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  948. package/dist/unstable/http/HttpMiddleware.js +164 -39
  949. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  950. package/dist/unstable/http/HttpPlatform.d.ts +76 -0
  951. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  952. package/dist/unstable/http/HttpPlatform.js +53 -3
  953. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  954. package/dist/unstable/http/HttpRouter.d.ts +88 -89
  955. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  956. package/dist/unstable/http/HttpRouter.js +78 -79
  957. package/dist/unstable/http/HttpRouter.js.map +1 -1
  958. package/dist/unstable/http/HttpServer.d.ts +13 -13
  959. package/dist/unstable/http/HttpServer.js +6 -6
  960. package/dist/unstable/http/HttpServer.js.map +1 -1
  961. package/dist/unstable/http/HttpServerError.d.ts +2 -2
  962. package/dist/unstable/http/HttpServerError.js +2 -2
  963. package/dist/unstable/http/HttpServerError.js.map +1 -1
  964. package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
  965. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  966. package/dist/unstable/http/HttpServerRequest.js +11 -10
  967. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  968. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  969. package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
  970. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  971. package/dist/unstable/http/HttpServerResponse.js +17 -5
  972. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  973. package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
  974. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  975. package/dist/unstable/http/HttpStaticServer.js +35 -7
  976. package/dist/unstable/http/HttpStaticServer.js.map +1 -1
  977. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  978. package/dist/unstable/http/Multipart.d.ts +7 -7
  979. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  980. package/dist/unstable/http/Multipart.js +14 -7
  981. package/dist/unstable/http/Multipart.js.map +1 -1
  982. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
  983. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
  984. package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
  985. package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
  986. package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
  987. package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
  988. package/dist/unstable/http/MultipartParser/Search.js +14 -0
  989. package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
  990. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
  991. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
  992. package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
  993. package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
  994. package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
  995. package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
  996. package/dist/unstable/http/MultipartParser/internal/headers.js +194 -0
  997. package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
  998. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
  999. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
  1000. package/dist/unstable/http/MultipartParser/internal/multipart.js +226 -0
  1001. package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
  1002. package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
  1003. package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
  1004. package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
  1005. package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
  1006. package/dist/unstable/http/MultipartParser.d.ts +98 -0
  1007. package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
  1008. package/dist/unstable/http/MultipartParser.js +23 -0
  1009. package/dist/unstable/http/MultipartParser.js.map +1 -0
  1010. package/dist/unstable/http/Template.d.ts.map +1 -1
  1011. package/dist/unstable/http/Template.js +2 -2
  1012. package/dist/unstable/http/Template.js.map +1 -1
  1013. package/dist/unstable/http/Url.d.ts +33 -63
  1014. package/dist/unstable/http/Url.d.ts.map +1 -1
  1015. package/dist/unstable/http/Url.js +14 -28
  1016. package/dist/unstable/http/Url.js.map +1 -1
  1017. package/dist/unstable/http/UrlParams.d.ts +10 -18
  1018. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  1019. package/dist/unstable/http/UrlParams.js +9 -17
  1020. package/dist/unstable/http/UrlParams.js.map +1 -1
  1021. package/dist/unstable/http/index.d.ts +1 -1
  1022. package/dist/unstable/http/index.d.ts.map +1 -1
  1023. package/dist/unstable/http/index.js +1 -1
  1024. package/dist/unstable/http/index.js.map +1 -1
  1025. package/dist/unstable/http/internal/compression.d.ts +2 -0
  1026. package/dist/unstable/http/internal/compression.d.ts.map +1 -0
  1027. package/dist/unstable/http/internal/compression.js +155 -0
  1028. package/dist/unstable/http/internal/compression.js.map +1 -0
  1029. package/dist/unstable/http/internal/httpBody.d.ts +2 -0
  1030. package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
  1031. package/dist/unstable/http/internal/httpBody.js +10 -0
  1032. package/dist/unstable/http/internal/httpBody.js.map +1 -0
  1033. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
  1034. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  1035. package/dist/unstable/httpapi/HttpApi.js +5 -5
  1036. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  1037. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
  1038. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  1039. package/dist/unstable/httpapi/HttpApiBuilder.js +78 -26
  1040. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  1041. package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
  1042. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  1043. package/dist/unstable/httpapi/HttpApiClient.js +76 -38
  1044. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  1045. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +48 -46
  1046. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  1047. package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
  1048. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  1049. package/dist/unstable/httpapi/HttpApiError.d.ts +18 -18
  1050. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  1051. package/dist/unstable/httpapi/HttpApiError.js +30 -30
  1052. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  1053. package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
  1054. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  1055. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
  1056. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  1057. package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
  1058. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  1059. package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
  1060. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  1061. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  1062. package/dist/unstable/httpapi/HttpApiSchema.d.ts +225 -6
  1063. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  1064. package/dist/unstable/httpapi/HttpApiSchema.js +174 -4
  1065. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  1066. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  1067. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  1068. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  1069. package/dist/unstable/httpapi/OpenApi.d.ts +21 -13
  1070. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  1071. package/dist/unstable/httpapi/OpenApi.js +58 -31
  1072. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  1073. package/dist/unstable/httpapi/index.js.map +1 -1
  1074. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  1075. package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
  1076. package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
  1077. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
  1078. package/dist/unstable/observability/Otlp.js.map +1 -1
  1079. package/dist/unstable/observability/OtlpExporter.d.ts +13 -15
  1080. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  1081. package/dist/unstable/observability/OtlpExporter.js +19 -5
  1082. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  1083. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  1084. package/dist/unstable/observability/OtlpLogger.js +2 -2
  1085. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  1086. package/dist/unstable/observability/OtlpMetrics.d.ts +6 -3
  1087. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  1088. package/dist/unstable/observability/OtlpMetrics.js +28 -15
  1089. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  1090. package/dist/unstable/observability/OtlpResource.d.ts +16 -7
  1091. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  1092. package/dist/unstable/observability/OtlpResource.js +21 -12
  1093. package/dist/unstable/observability/OtlpResource.js.map +1 -1
  1094. package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
  1095. package/dist/unstable/observability/OtlpTracer.js +1 -1
  1096. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  1097. package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
  1098. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  1099. package/dist/unstable/observability/PrometheusMetrics.js +10 -3
  1100. package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
  1101. package/dist/unstable/observability/index.js.map +1 -1
  1102. package/dist/unstable/observability/internal/otlpEnv.js +1 -1
  1103. package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
  1104. package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
  1105. package/dist/unstable/observability/internal/protobuf.js +3 -0
  1106. package/dist/unstable/observability/internal/protobuf.js.map +1 -1
  1107. package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
  1108. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  1109. package/dist/unstable/persistence/KeyValueStore.js +22 -13
  1110. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  1111. package/dist/unstable/persistence/Persistable.d.ts +8 -8
  1112. package/dist/unstable/persistence/Persistable.js.map +1 -1
  1113. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  1114. package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
  1115. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  1116. package/dist/unstable/persistence/PersistedQueue.js +15 -15
  1117. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  1118. package/dist/unstable/persistence/Persistence.d.ts +3 -3
  1119. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  1120. package/dist/unstable/persistence/Persistence.js +108 -22
  1121. package/dist/unstable/persistence/Persistence.js.map +1 -1
  1122. package/dist/unstable/persistence/RateLimiter.d.ts +45 -24
  1123. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  1124. package/dist/unstable/persistence/RateLimiter.js +29 -45
  1125. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  1126. package/dist/unstable/persistence/Redis.d.ts +2 -2
  1127. package/dist/unstable/persistence/Redis.js +2 -2
  1128. package/dist/unstable/persistence/Redis.js.map +1 -1
  1129. package/dist/unstable/persistence/index.js.map +1 -1
  1130. package/dist/unstable/process/ChildProcess.d.ts +64 -21
  1131. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  1132. package/dist/unstable/process/ChildProcess.js +14 -5
  1133. package/dist/unstable/process/ChildProcess.js.map +1 -1
  1134. package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
  1135. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  1136. package/dist/unstable/process/ChildProcessSpawner.js +1 -1
  1137. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  1138. package/dist/unstable/process/index.js.map +1 -1
  1139. package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
  1140. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  1141. package/dist/unstable/reactivity/AsyncResult.js +10 -10
  1142. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  1143. package/dist/unstable/reactivity/Atom.d.ts +25 -22
  1144. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  1145. package/dist/unstable/reactivity/Atom.js +14 -13
  1146. package/dist/unstable/reactivity/Atom.js.map +1 -1
  1147. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  1148. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  1149. package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
  1150. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  1151. package/dist/unstable/reactivity/AtomRef.js.map +1 -1
  1152. package/dist/unstable/reactivity/AtomRegistry.js +24 -3
  1153. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  1154. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  1155. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  1156. package/dist/unstable/reactivity/AtomRpc.js +4 -1
  1157. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  1158. package/dist/unstable/reactivity/Hydration.d.ts +1 -1
  1159. package/dist/unstable/reactivity/Hydration.js +1 -1
  1160. package/dist/unstable/reactivity/Hydration.js.map +1 -1
  1161. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  1162. package/dist/unstable/reactivity/index.js.map +1 -1
  1163. package/dist/unstable/rpc/Rpc.d.ts +35 -33
  1164. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  1165. package/dist/unstable/rpc/Rpc.js +4 -2
  1166. package/dist/unstable/rpc/Rpc.js.map +1 -1
  1167. package/dist/unstable/rpc/RpcClient.d.ts +26 -12
  1168. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  1169. package/dist/unstable/rpc/RpcClient.js +30 -20
  1170. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  1171. package/dist/unstable/rpc/RpcClientError.js +2 -2
  1172. package/dist/unstable/rpc/RpcClientError.js.map +1 -1
  1173. package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
  1174. package/dist/unstable/rpc/RpcGroup.js +1 -1
  1175. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  1176. package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
  1177. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  1178. package/dist/unstable/rpc/RpcMessage.js +6 -6
  1179. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  1180. package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
  1181. package/dist/unstable/rpc/RpcMiddleware.js +1 -1
  1182. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  1183. package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
  1184. package/dist/unstable/rpc/RpcSchema.js +3 -3
  1185. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  1186. package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
  1187. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  1188. package/dist/unstable/rpc/RpcSerialization.js +177 -96
  1189. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  1190. package/dist/unstable/rpc/RpcServer.d.ts +13 -13
  1191. package/dist/unstable/rpc/RpcServer.js +17 -13
  1192. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  1193. package/dist/unstable/rpc/RpcTest.js.map +1 -1
  1194. package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
  1195. package/dist/unstable/rpc/RpcWorker.js +4 -4
  1196. package/dist/unstable/rpc/RpcWorker.js.map +1 -1
  1197. package/dist/unstable/rpc/Utils.js.map +1 -1
  1198. package/dist/unstable/rpc/index.js.map +1 -1
  1199. package/dist/unstable/schema/Model.d.ts +53 -51
  1200. package/dist/unstable/schema/Model.d.ts.map +1 -1
  1201. package/dist/unstable/schema/Model.js +35 -33
  1202. package/dist/unstable/schema/Model.js.map +1 -1
  1203. package/dist/unstable/schema/VariantSchema.d.ts +10 -10
  1204. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  1205. package/dist/unstable/schema/VariantSchema.js +19 -11
  1206. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  1207. package/dist/unstable/schema/index.js.map +1 -1
  1208. package/dist/unstable/socket/Socket.d.ts +11 -3
  1209. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  1210. package/dist/unstable/socket/Socket.js +37 -16
  1211. package/dist/unstable/socket/Socket.js.map +1 -1
  1212. package/dist/unstable/socket/SocketServer.js.map +1 -1
  1213. package/dist/unstable/socket/index.js.map +1 -1
  1214. package/dist/unstable/sql/Migrator.js.map +1 -1
  1215. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  1216. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  1217. package/dist/unstable/sql/SqlClient.js +8 -4
  1218. package/dist/unstable/sql/SqlClient.js.map +1 -1
  1219. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  1220. package/dist/unstable/sql/SqlError.js +13 -13
  1221. package/dist/unstable/sql/SqlError.js.map +1 -1
  1222. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  1223. package/dist/unstable/sql/SqlModel.js +2 -2
  1224. package/dist/unstable/sql/SqlModel.js.map +1 -1
  1225. package/dist/unstable/sql/SqlResolver.d.ts +5 -5
  1226. package/dist/unstable/sql/SqlResolver.js +10 -8
  1227. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  1228. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  1229. package/dist/unstable/sql/SqlStream.js.map +1 -1
  1230. package/dist/unstable/sql/Statement.d.ts +6 -6
  1231. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  1232. package/dist/unstable/sql/Statement.js +23 -21
  1233. package/dist/unstable/sql/Statement.js.map +1 -1
  1234. package/dist/unstable/sql/index.js.map +1 -1
  1235. package/dist/unstable/workers/Transferable.d.ts +1 -1
  1236. package/dist/unstable/workers/Transferable.js +1 -1
  1237. package/dist/unstable/workers/Transferable.js.map +1 -1
  1238. package/dist/unstable/workers/Worker.d.ts +2 -2
  1239. package/dist/unstable/workers/Worker.js +2 -2
  1240. package/dist/unstable/workers/Worker.js.map +1 -1
  1241. package/dist/unstable/workers/WorkerError.d.ts +7 -7
  1242. package/dist/unstable/workers/WorkerError.js +11 -11
  1243. package/dist/unstable/workers/WorkerError.js.map +1 -1
  1244. package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
  1245. package/dist/unstable/workers/WorkerRunner.js +1 -1
  1246. package/dist/unstable/workers/WorkerRunner.js.map +1 -1
  1247. package/dist/unstable/workers/index.js.map +1 -1
  1248. package/dist/unstable/workflow/Activity.d.ts +2 -2
  1249. package/dist/unstable/workflow/Activity.js +2 -2
  1250. package/dist/unstable/workflow/Activity.js.map +1 -1
  1251. package/dist/unstable/workflow/DurableClock.d.ts +1 -1
  1252. package/dist/unstable/workflow/DurableClock.js +1 -1
  1253. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  1254. package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
  1255. package/dist/unstable/workflow/DurableDeferred.js +5 -5
  1256. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  1257. package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
  1258. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  1259. package/dist/unstable/workflow/DurableQueue.js +22 -20
  1260. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  1261. package/dist/unstable/workflow/Workflow.d.ts +21 -21
  1262. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  1263. package/dist/unstable/workflow/Workflow.js +13 -14
  1264. package/dist/unstable/workflow/Workflow.js.map +1 -1
  1265. package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -2
  1266. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  1267. package/dist/unstable/workflow/WorkflowEngine.js +3 -3
  1268. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  1269. package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
  1270. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  1271. package/dist/unstable/workflow/WorkflowProxy.js +4 -2
  1272. package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
  1273. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  1274. package/dist/unstable/workflow/index.js.map +1 -1
  1275. package/dist/unstable/workflow/internal/crypto.js.map +1 -1
  1276. package/package.json +6 -13
  1277. package/src/Array.ts +982 -1045
  1278. package/src/BigDecimal.ts +433 -756
  1279. package/src/BigInt.ts +213 -269
  1280. package/src/Boolean.ts +146 -188
  1281. package/src/Cache.ts +410 -256
  1282. package/src/Cause.ts +167 -277
  1283. package/src/Channel.ts +892 -817
  1284. package/src/ChannelSchema.ts +1 -1
  1285. package/src/Chunk.ts +841 -1181
  1286. package/src/Clock.ts +181 -49
  1287. package/src/Combiner.ts +20 -33
  1288. package/src/Config.ts +636 -332
  1289. package/src/ConfigProvider.ts +218 -121
  1290. package/src/Console.ts +289 -39
  1291. package/src/Context.ts +322 -381
  1292. package/src/Cron.ts +68 -77
  1293. package/src/Crypto.ts +30 -23
  1294. package/src/Data.ts +60 -80
  1295. package/src/DateTime.ts +564 -660
  1296. package/src/Deferred.ts +253 -256
  1297. package/src/Duration.ts +232 -310
  1298. package/src/Effect.ts +3034 -3296
  1299. package/src/Encoding.ts +22 -40
  1300. package/src/Equal.ts +59 -41
  1301. package/src/Equivalence.ts +103 -105
  1302. package/src/ErrorReporter.ts +51 -27
  1303. package/src/ExecutionPlan.ts +91 -56
  1304. package/src/Exit.ts +116 -192
  1305. package/src/Fiber.ts +81 -148
  1306. package/src/FiberHandle.ts +152 -105
  1307. package/src/FiberMap.ts +225 -174
  1308. package/src/FiberSet.ts +125 -83
  1309. package/src/FileSystem.ts +156 -264
  1310. package/src/Filter.ts +61 -33
  1311. package/src/Formatter.ts +54 -56
  1312. package/src/Function.ts +82 -151
  1313. package/src/Graph.ts +416 -770
  1314. package/src/HKT.ts +12 -6
  1315. package/src/Hash.ts +52 -83
  1316. package/src/HashMap.ts +319 -411
  1317. package/src/HashRing.ts +1 -0
  1318. package/src/HashSet.ts +177 -284
  1319. package/src/Inspectable.ts +12 -12
  1320. package/src/Iterable.ts +631 -796
  1321. package/src/JsonPatch.ts +58 -112
  1322. package/src/JsonPointer.ts +8 -8
  1323. package/src/JsonSchema.ts +402 -244
  1324. package/src/Latch.ts +23 -35
  1325. package/src/Layer.ts +366 -265
  1326. package/src/LayerMap.ts +49 -29
  1327. package/src/LayerRef.ts +6 -2
  1328. package/src/LogLevel.ts +114 -214
  1329. package/src/Logger.ts +344 -697
  1330. package/src/ManagedRuntime.ts +7 -5
  1331. package/src/Match.ts +217 -252
  1332. package/src/Metric.ts +516 -1089
  1333. package/src/MutableHashMap.ts +218 -255
  1334. package/src/MutableHashSet.ts +84 -89
  1335. package/src/MutableList.ts +73 -370
  1336. package/src/MutableRef.ts +420 -243
  1337. package/src/Newtype.ts +21 -14
  1338. package/src/NonEmptyIterable.ts +7 -137
  1339. package/src/Number.ts +196 -233
  1340. package/src/Optic.ts +243 -383
  1341. package/src/Option.ts +447 -812
  1342. package/src/Order.ts +109 -109
  1343. package/src/Ordering.ts +20 -23
  1344. package/src/Path.ts +38 -41
  1345. package/src/Pipeable.ts +6 -5
  1346. package/src/PlatformError.ts +4 -4
  1347. package/src/Pool.ts +4 -2
  1348. package/src/Predicate.ts +200 -181
  1349. package/src/PrimaryKey.ts +7 -7
  1350. package/src/PubSub.ts +526 -552
  1351. package/src/Pull.ts +24 -18
  1352. package/src/Queue.ts +200 -159
  1353. package/src/Random.ts +49 -74
  1354. package/src/RcMap.ts +121 -63
  1355. package/src/RcRef.ts +24 -13
  1356. package/src/Record.ts +291 -488
  1357. package/src/Redactable.ts +10 -3
  1358. package/src/Redacted.ts +25 -25
  1359. package/src/Reducer.ts +8 -15
  1360. package/src/Ref.ts +221 -361
  1361. package/src/References.ts +102 -168
  1362. package/src/RegExp.ts +10 -14
  1363. package/src/Request.ts +31 -21
  1364. package/src/RequestResolver.ts +202 -91
  1365. package/src/Result.ts +312 -484
  1366. package/src/Runtime.ts +50 -75
  1367. package/src/Schedule.ts +311 -1737
  1368. package/src/Scheduler.ts +20 -7
  1369. package/src/Schema.ts +766 -786
  1370. package/src/SchemaAST.ts +522 -382
  1371. package/src/SchemaError.ts +7 -6
  1372. package/src/SchemaGetter.ts +242 -190
  1373. package/src/SchemaIssue.ts +89 -275
  1374. package/src/SchemaParser.ts +217 -124
  1375. package/src/SchemaRepresentation.ts +22 -40
  1376. package/src/SchemaTransformation.ts +129 -88
  1377. package/src/Scope.ts +123 -151
  1378. package/src/ScopedCache.ts +1 -1
  1379. package/src/ScopedRef.ts +4 -4
  1380. package/src/Semaphore.ts +152 -51
  1381. package/src/Sink.ts +129 -114
  1382. package/src/Stdio.ts +1 -1
  1383. package/src/Stream.ts +2679 -3133
  1384. package/src/String.ts +275 -312
  1385. package/src/Struct.ts +109 -114
  1386. package/src/SubscriptionRef.ts +284 -252
  1387. package/src/Symbol.ts +3 -3
  1388. package/src/SynchronizedRef.ts +1 -1
  1389. package/src/Terminal.ts +3 -3
  1390. package/src/Tracer.ts +102 -55
  1391. package/src/Trie.ts +287 -679
  1392. package/src/Tuple.ts +99 -131
  1393. package/src/TxChunk.ts +201 -121
  1394. package/src/TxDeferred.ts +62 -46
  1395. package/src/TxHashMap.ts +645 -799
  1396. package/src/TxHashSet.ts +443 -356
  1397. package/src/TxPriorityQueue.ts +130 -98
  1398. package/src/TxPubSub.ts +107 -80
  1399. package/src/TxQueue.ts +214 -183
  1400. package/src/TxReentrantLock.ts +136 -101
  1401. package/src/TxRef.ts +51 -32
  1402. package/src/TxSemaphore.ts +129 -95
  1403. package/src/TxSubscriptionRef.ts +97 -70
  1404. package/src/Types.ts +126 -67
  1405. package/src/Unify.ts +45 -65
  1406. package/src/Utils.ts +23 -16
  1407. package/src/internal/core.ts +2 -2
  1408. package/src/internal/dateTime.ts +7 -1
  1409. package/src/internal/effect.ts +93 -48
  1410. package/src/internal/executionPlan.ts +105 -10
  1411. package/src/internal/hashMap.ts +20 -14
  1412. package/src/internal/matcher.ts +2 -2
  1413. package/src/internal/persistence.ts +2 -0
  1414. package/src/internal/references.ts +3 -2
  1415. package/src/internal/schedule.ts +4 -4
  1416. package/src/internal/schema/annotations.ts +3 -0
  1417. package/src/internal/schema/fromJsonSchemaDocument.ts +15 -13
  1418. package/src/internal/schema/fromRepresentation.ts +10 -16
  1419. package/src/internal/schema/parser.ts +22 -0
  1420. package/src/internal/schema/toArbitrary.ts +3 -1
  1421. package/src/internal/schema/toJsonSchemaDocument.ts +60 -6
  1422. package/src/internal/schema/toRepresentation.ts +104 -119
  1423. package/src/internal/trie.ts +21 -12
  1424. package/src/testing/FastCheck.ts +8 -7
  1425. package/src/testing/TestClock.ts +85 -31
  1426. package/src/testing/TestConsole.ts +32 -31
  1427. package/src/testing/TestSchema.ts +30 -30
  1428. package/src/unstable/ai/AiError.ts +114 -137
  1429. package/src/unstable/ai/AnthropicStructuredOutput.ts +1 -1
  1430. package/src/unstable/ai/Chat.ts +133 -98
  1431. package/src/unstable/ai/IdGenerator.ts +32 -28
  1432. package/src/unstable/ai/LanguageModel.ts +111 -69
  1433. package/src/unstable/ai/McpProtocol.ts +48 -0
  1434. package/src/unstable/ai/McpSchema.ts +77 -66
  1435. package/src/unstable/ai/McpServer.ts +931 -305
  1436. package/src/unstable/ai/Model.ts +9 -20
  1437. package/src/unstable/ai/OpenAiStructuredOutput.ts +1 -1
  1438. package/src/unstable/ai/Prompt.ts +166 -49
  1439. package/src/unstable/ai/Response.ts +28 -14
  1440. package/src/unstable/ai/Telemetry.ts +46 -13
  1441. package/src/unstable/ai/Tokenizer.ts +14 -3
  1442. package/src/unstable/ai/Tool.ts +59 -44
  1443. package/src/unstable/ai/Toolkit.ts +26 -8
  1444. package/src/unstable/ai/index.ts +5 -0
  1445. package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
  1446. package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
  1447. package/src/unstable/ai/internal/structured-output.ts +13 -18
  1448. package/src/unstable/cli/Argument.ts +273 -69
  1449. package/src/unstable/cli/CliError.ts +79 -86
  1450. package/src/unstable/cli/CliOutput.ts +44 -58
  1451. package/src/unstable/cli/Command.ts +716 -116
  1452. package/src/unstable/cli/Flag.ts +418 -138
  1453. package/src/unstable/cli/GlobalFlag.ts +1 -1
  1454. package/src/unstable/cli/HelpDoc.ts +12 -4
  1455. package/src/unstable/cli/Param.ts +333 -97
  1456. package/src/unstable/cli/Primitive.ts +381 -154
  1457. package/src/unstable/cli/Prompt.ts +64 -34
  1458. package/src/unstable/cli/internal/ansi.ts +2 -2
  1459. package/src/unstable/cli/internal/command.ts +15 -10
  1460. package/src/unstable/cli/internal/completions/bash.ts +59 -9
  1461. package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
  1462. package/src/unstable/cli/internal/completions/fish.ts +5 -7
  1463. package/src/unstable/cli/internal/help.ts +4 -2
  1464. package/src/unstable/cli/internal/lexer.ts +8 -2
  1465. package/src/unstable/cli/internal/parser.ts +5 -5
  1466. package/src/unstable/cli/internal/wizard.ts +2 -2
  1467. package/src/unstable/cluster/ClusterError.ts +7 -7
  1468. package/src/unstable/cluster/ClusterSchema.ts +8 -8
  1469. package/src/unstable/cluster/ClusterWorkflowEngine.ts +9 -2
  1470. package/src/unstable/cluster/Entity.ts +15 -16
  1471. package/src/unstable/cluster/EntityProxy.ts +4 -2
  1472. package/src/unstable/cluster/EntityResource.ts +2 -2
  1473. package/src/unstable/cluster/Envelope.ts +3 -3
  1474. package/src/unstable/cluster/HttpRunner.ts +6 -4
  1475. package/src/unstable/cluster/Message.ts +9 -9
  1476. package/src/unstable/cluster/MessageStorage.ts +24 -20
  1477. package/src/unstable/cluster/Reply.ts +25 -6
  1478. package/src/unstable/cluster/RunnerHealth.ts +1 -1
  1479. package/src/unstable/cluster/RunnerServer.ts +35 -8
  1480. package/src/unstable/cluster/RunnerStorage.ts +11 -9
  1481. package/src/unstable/cluster/Runners.ts +23 -12
  1482. package/src/unstable/cluster/Sharding.ts +42 -15
  1483. package/src/unstable/cluster/ShardingConfig.ts +3 -3
  1484. package/src/unstable/cluster/SingletonAddress.ts +1 -1
  1485. package/src/unstable/cluster/Snowflake.ts +8 -8
  1486. package/src/unstable/cluster/SqlMessageStorage.ts +1 -1
  1487. package/src/unstable/cluster/SqlRunnerStorage.ts +21 -5
  1488. package/src/unstable/cluster/internal/entityManager.ts +12 -16
  1489. package/src/unstable/cluster/internal/resourceMap.ts +5 -2
  1490. package/src/unstable/cluster/internal/resourceRef.ts +27 -5
  1491. package/src/unstable/devtools/DevToolsClient.ts +3 -2
  1492. package/src/unstable/encoding/Ini.ts +174 -0
  1493. package/src/unstable/encoding/Msgpack.ts +53 -36
  1494. package/src/unstable/encoding/Ndjson.ts +9 -1
  1495. package/src/unstable/encoding/Sse.ts +109 -37
  1496. package/src/unstable/encoding/Toml.ts +504 -0
  1497. package/src/unstable/encoding/Yaml.ts +541 -0
  1498. package/src/unstable/encoding/index.ts +15 -0
  1499. package/src/unstable/eventlog/Event.ts +20 -20
  1500. package/src/unstable/eventlog/EventGroup.ts +4 -4
  1501. package/src/unstable/eventlog/EventJournal.ts +29 -21
  1502. package/src/unstable/eventlog/EventLog.ts +3 -3
  1503. package/src/unstable/eventlog/EventLogEncryption.ts +1 -1
  1504. package/src/unstable/eventlog/EventLogMessage.ts +3 -3
  1505. package/src/unstable/eventlog/EventLogRemote.ts +1 -1
  1506. package/src/unstable/eventlog/EventLogServer.ts +41 -7
  1507. package/src/unstable/eventlog/EventLogServerEncrypted.ts +13 -5
  1508. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +15 -7
  1509. package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
  1510. package/src/unstable/eventlog/SqlEventJournal.ts +6 -4
  1511. package/src/unstable/http/Cookies.ts +35 -21
  1512. package/src/unstable/http/Etag.ts +1 -1
  1513. package/src/unstable/http/FetchHttpClient.ts +3 -1
  1514. package/src/unstable/http/FindMyWay/internal/queryString.ts +420 -0
  1515. package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
  1516. package/src/unstable/http/FindMyWay.ts +65 -6
  1517. package/src/unstable/http/Headers.ts +2 -2
  1518. package/src/unstable/http/HttpBody.ts +20 -5
  1519. package/src/unstable/http/HttpClient.ts +83 -55
  1520. package/src/unstable/http/HttpClientError.ts +1 -1
  1521. package/src/unstable/http/HttpClientRequest.ts +2 -12
  1522. package/src/unstable/http/HttpClientResponse.ts +5 -21
  1523. package/src/unstable/http/HttpEffect.ts +8 -8
  1524. package/src/unstable/http/HttpMethod.ts +6 -9
  1525. package/src/unstable/http/HttpMiddleware.ts +202 -39
  1526. package/src/unstable/http/HttpPlatform.ts +129 -6
  1527. package/src/unstable/http/HttpRouter.ts +102 -98
  1528. package/src/unstable/http/HttpServer.ts +13 -13
  1529. package/src/unstable/http/HttpServerError.ts +2 -2
  1530. package/src/unstable/http/HttpServerRequest.ts +18 -10
  1531. package/src/unstable/http/HttpServerResponse.ts +38 -6
  1532. package/src/unstable/http/HttpStaticServer.ts +35 -7
  1533. package/src/unstable/http/Multipart.ts +15 -8
  1534. package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
  1535. package/src/unstable/http/MultipartParser/Search.ts +17 -0
  1536. package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
  1537. package/src/unstable/http/MultipartParser/internal/headers.ts +615 -0
  1538. package/src/unstable/http/MultipartParser/internal/multipart.ts +262 -0
  1539. package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
  1540. package/src/unstable/http/MultipartParser.ts +115 -0
  1541. package/src/unstable/http/Template.ts +6 -5
  1542. package/src/unstable/http/Url.ts +33 -63
  1543. package/src/unstable/http/UrlParams.ts +10 -18
  1544. package/src/unstable/http/index.ts +1 -1
  1545. package/src/unstable/http/internal/compression.ts +196 -0
  1546. package/src/unstable/http/internal/httpBody.ts +15 -0
  1547. package/src/unstable/httpapi/HttpApi.ts +6 -7
  1548. package/src/unstable/httpapi/HttpApiBuilder.ts +129 -30
  1549. package/src/unstable/httpapi/HttpApiClient.ts +117 -54
  1550. package/src/unstable/httpapi/HttpApiEndpoint.ts +159 -71
  1551. package/src/unstable/httpapi/HttpApiError.ts +46 -52
  1552. package/src/unstable/httpapi/HttpApiGroup.ts +15 -15
  1553. package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
  1554. package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
  1555. package/src/unstable/httpapi/HttpApiSchema.ts +359 -6
  1556. package/src/unstable/httpapi/OpenApi.ts +83 -33
  1557. package/src/unstable/observability/OtlpExporter.ts +35 -21
  1558. package/src/unstable/observability/OtlpLogger.ts +3 -1
  1559. package/src/unstable/observability/OtlpMetrics.ts +36 -19
  1560. package/src/unstable/observability/OtlpResource.ts +26 -17
  1561. package/src/unstable/observability/OtlpTracer.ts +1 -1
  1562. package/src/unstable/observability/PrometheusMetrics.ts +13 -4
  1563. package/src/unstable/observability/internal/otlpEnv.ts +1 -1
  1564. package/src/unstable/observability/internal/protobuf.ts +3 -0
  1565. package/src/unstable/persistence/KeyValueStore.ts +72 -49
  1566. package/src/unstable/persistence/Persistable.ts +8 -8
  1567. package/src/unstable/persistence/PersistedQueue.ts +18 -15
  1568. package/src/unstable/persistence/Persistence.ts +153 -26
  1569. package/src/unstable/persistence/RateLimiter.ts +77 -43
  1570. package/src/unstable/persistence/Redis.ts +3 -3
  1571. package/src/unstable/process/ChildProcess.ts +64 -21
  1572. package/src/unstable/process/ChildProcessSpawner.ts +21 -10
  1573. package/src/unstable/reactivity/AsyncResult.ts +12 -13
  1574. package/src/unstable/reactivity/Atom.ts +28 -25
  1575. package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
  1576. package/src/unstable/reactivity/AtomRegistry.ts +24 -3
  1577. package/src/unstable/reactivity/AtomRpc.ts +5 -4
  1578. package/src/unstable/reactivity/Hydration.ts +1 -1
  1579. package/src/unstable/rpc/Rpc.ts +35 -33
  1580. package/src/unstable/rpc/RpcClient.ts +54 -27
  1581. package/src/unstable/rpc/RpcClientError.ts +2 -2
  1582. package/src/unstable/rpc/RpcGroup.ts +8 -8
  1583. package/src/unstable/rpc/RpcMessage.ts +31 -30
  1584. package/src/unstable/rpc/RpcMiddleware.ts +10 -10
  1585. package/src/unstable/rpc/RpcSchema.ts +4 -4
  1586. package/src/unstable/rpc/RpcSerialization.ts +167 -68
  1587. package/src/unstable/rpc/RpcServer.ts +18 -15
  1588. package/src/unstable/rpc/RpcWorker.ts +5 -5
  1589. package/src/unstable/schema/Model.ts +52 -50
  1590. package/src/unstable/schema/VariantSchema.ts +41 -23
  1591. package/src/unstable/socket/Socket.ts +41 -18
  1592. package/src/unstable/sql/SqlClient.ts +64 -56
  1593. package/src/unstable/sql/SqlError.ts +13 -13
  1594. package/src/unstable/sql/SqlModel.ts +2 -2
  1595. package/src/unstable/sql/SqlResolver.ts +13 -11
  1596. package/src/unstable/sql/Statement.ts +37 -31
  1597. package/src/unstable/workers/Transferable.ts +1 -1
  1598. package/src/unstable/workers/Worker.ts +2 -2
  1599. package/src/unstable/workers/WorkerError.ts +12 -12
  1600. package/src/unstable/workers/WorkerRunner.ts +1 -1
  1601. package/src/unstable/workflow/Activity.ts +2 -2
  1602. package/src/unstable/workflow/DurableClock.ts +1 -1
  1603. package/src/unstable/workflow/DurableDeferred.ts +10 -10
  1604. package/src/unstable/workflow/DurableQueue.ts +22 -20
  1605. package/src/unstable/workflow/Workflow.ts +23 -23
  1606. package/src/unstable/workflow/WorkflowEngine.ts +9 -4
  1607. package/src/unstable/workflow/WorkflowProxy.ts +4 -2
  1608. package/dist/internal/version.d.ts +0 -3
  1609. package/dist/internal/version.d.ts.map +0 -1
  1610. package/dist/internal/version.js +0 -2
  1611. package/dist/internal/version.js.map +0 -1
  1612. package/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
  1613. package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
  1614. package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
  1615. package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
  1616. package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
  1617. package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
  1618. package/dist/unstable/http/Multipasta/Node.js +0 -14
  1619. package/dist/unstable/http/Multipasta/Node.js.map +0 -1
  1620. package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
  1621. package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
  1622. package/dist/unstable/http/Multipasta/Search.js +0 -14
  1623. package/dist/unstable/http/Multipasta/Search.js.map +0 -1
  1624. package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
  1625. package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
  1626. package/dist/unstable/http/Multipasta/Web.js +0 -14
  1627. package/dist/unstable/http/Multipasta/Web.js.map +0 -1
  1628. package/dist/unstable/http/Multipasta.d.ts +0 -15
  1629. package/dist/unstable/http/Multipasta.d.ts.map +0 -1
  1630. package/dist/unstable/http/Multipasta.js +0 -15
  1631. package/dist/unstable/http/Multipasta.js.map +0 -1
  1632. package/src/internal/version.ts +0 -2
  1633. package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
  1634. package/src/unstable/http/Multipasta/Node.ts +0 -14
  1635. package/src/unstable/http/Multipasta/Search.ts +0 -14
  1636. package/src/unstable/http/Multipasta/Web.ts +0 -14
  1637. package/src/unstable/http/Multipasta.ts +0 -15
package/src/SchemaAST.ts CHANGED
@@ -13,16 +13,15 @@
13
13
 
14
14
  import * as Arr from "./Array.ts"
15
15
  import * as Cause from "./Cause.ts"
16
- import type * as Combiner from "./Combiner.ts"
17
16
  import * as Effect from "./Effect.ts"
18
17
  import * as Exit from "./Exit.ts"
19
18
  import { format, formatPropertyKey } from "./Formatter.ts"
20
- import { memoize } from "./Function.ts"
19
+ import { identity, memoize } from "./Function.ts"
21
20
  import { effectIsExit, iterateEager } from "./internal/effect.ts"
22
21
  import * as InternalRecord from "./internal/record.ts"
23
22
  import * as InternalAnnotations from "./internal/schema/annotations.ts"
24
23
  import * as InternalSchemaCause from "./internal/schema/cause.ts"
25
- import * as Option from "./Option.ts"
24
+ import * as InternalParser from "./internal/schema/parser.ts"
26
25
  import * as Pipeable from "./Pipeable.ts"
27
26
  import * as Predicate from "./Predicate.ts"
28
27
  import * as Result from "./Result.ts"
@@ -533,7 +532,7 @@ export const defaultParseOptions: ParseOptions = {}
533
532
  *
534
533
  * - `isOptional` — the property key may be absent from the input.
535
534
  * - `isMutable` — the property is `readonly` when `false`.
536
- * - `defaultValue` — an {@link Encoding} applied during construction to
535
+ * - `constructorDefault` — a {@link Link} applied during construction to
537
536
  * supply missing values.
538
537
  * - `annotations` — key-level annotations (e.g. description of the key
539
538
  * itself).
@@ -547,19 +546,19 @@ export class Context {
547
546
  readonly isOptional: boolean
548
547
  readonly isMutable: boolean
549
548
  /** Used for constructor default values (e.g. `withConstructorDefault` API) */
550
- readonly defaultValue: Encoding | undefined
549
+ readonly constructorDefault: Link | undefined
551
550
  readonly annotations: Schema.Annotations.Key<unknown> | undefined
552
551
 
553
552
  constructor(
554
553
  isOptional: boolean,
555
554
  isMutable: boolean,
556
555
  /** Used for constructor default values (e.g. `withConstructorDefault` API) */
557
- defaultValue: Encoding | undefined = undefined,
556
+ constructorDefault: Link | undefined = undefined,
558
557
  annotations: Schema.Annotations.Key<unknown> | undefined = undefined
559
558
  ) {
560
559
  this.isOptional = isOptional
561
560
  this.isMutable = isMutable
562
- this.defaultValue = defaultValue
561
+ this.constructorDefault = constructorDefault
563
562
  this.annotations = annotations
564
563
  }
565
564
  }
@@ -672,10 +671,10 @@ export class Declaration extends Base {
672
671
  }
673
672
  /** @internal */
674
673
  getParser(): SchemaParser.Parser {
675
- const run = this.run(this.typeParameters)
676
- return (oinput, options) => {
677
- if (Option.isNone(oinput)) return Effect.succeedNone
678
- return Effect.mapEager(run(oinput.value, this, options), Option.some)
674
+ let run: ReturnType<typeof this.run>
675
+ return (input, options) => {
676
+ if (input === InternalParser.missing) return InternalParser.missingExit
677
+ return (run ??= this.run(this.typeParameters))(input, this, options)
679
678
  }
680
679
  }
681
680
  private _rebuild(recur: (ast: AST) => AST, checks: Checks | undefined, encodingChecks: Checks | undefined) {
@@ -816,7 +815,8 @@ export class Void extends Base {
816
815
  readonly _tag = "Void"
817
816
  /** @internal */
818
817
  getParser() {
819
- return fromAnyToConst(undefined)
818
+ const succeed = InternalParser.succeed(undefined)
819
+ return (input: unknown) => input === InternalParser.missing ? InternalParser.missingExit : succeed
820
820
  }
821
821
  /** @internal */
822
822
  toCodecJson(): AST {
@@ -1080,9 +1080,9 @@ function isTemplateLiteralPart(ast: AST): ast is TemplateLiteralPart {
1080
1080
  return true
1081
1081
  case "Literal":
1082
1082
  case "TemplateLiteral":
1083
- return ast.checks === undefined
1083
+ return !ast.checks
1084
1084
  case "Union":
1085
- return ast.checks === undefined && ast.types.every(isTemplateLiteralPart)
1085
+ return !ast.checks && ast.types.every(isTemplateLiteralPart)
1086
1086
  default:
1087
1087
  return false
1088
1088
  }
@@ -1106,6 +1106,10 @@ export class TemplateLiteral extends Base {
1106
1106
  readonly parts: ReadonlyArray<AST>
1107
1107
  /** @internal */
1108
1108
  readonly encodedParts: ReadonlyArray<TemplateLiteralPart>
1109
+ /** @internal */
1110
+ readonly literals: ReadonlyArray<string | undefined>
1111
+ /** @internal */
1112
+ readonly suffixLengths: ReadonlyArray<number>
1109
1113
 
1110
1114
  constructor(
1111
1115
  parts: ReadonlyArray<AST>,
@@ -1116,25 +1120,40 @@ export class TemplateLiteral extends Base {
1116
1120
  ) {
1117
1121
  super(annotations, checks, encoding, context)
1118
1122
  const encodedParts: Array<TemplateLiteralPart> = []
1123
+ const literals: Array<string | undefined> = []
1119
1124
  for (const part of parts) {
1120
1125
  const encoded = toEncoded(part)
1121
1126
  if (isTemplateLiteralPart(encoded)) {
1122
1127
  encodedParts.push(encoded)
1128
+ literals.push(encoded._tag === "Literal" ? globalThis.String(encoded.literal) : undefined)
1123
1129
  } else {
1124
1130
  throw new Error(`Invalid TemplateLiteral part ${encoded._tag}`)
1125
1131
  }
1126
1132
  }
1133
+ const suffixLengths = new Array<number>(encodedParts.length + 1)
1134
+ suffixLengths[encodedParts.length] = 0
1135
+ for (let i = encodedParts.length - 1; i >= 0; i--) {
1136
+ suffixLengths[i] = suffixLengths[i + 1] + (literals[i]?.length ?? 0)
1137
+ }
1127
1138
  this.parts = parts
1128
1139
  this.encodedParts = encodedParts
1140
+ this.literals = literals
1141
+ this.suffixLengths = suffixLengths
1129
1142
  }
1130
1143
  /** @internal */
1131
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
1132
- const parser = recur(this.asTemplateLiteralParser())
1133
- return (oinput: Option.Option<unknown>, options: ParseOptions) =>
1134
- Effect.mapBothEager(parser(oinput, options), {
1135
- onSuccess: () => oinput,
1136
- onFailure: (issue) => new SchemaIssue.Composite(this, oinput, [issue])
1144
+ getParser(compile: SchemaParser.Compiler): SchemaParser.Parser {
1145
+ const parser = compile(this.asTemplateLiteralParser())
1146
+ return (input, options) => {
1147
+ if (input === InternalParser.missing) return InternalParser.missingExit
1148
+ const result = parser(input, options)
1149
+ if ((result as Exit.Exit<unknown, unknown>)._tag === "Success") {
1150
+ return InternalParser.sameExit
1151
+ }
1152
+ return Effect.mapBothEager(result, {
1153
+ onSuccess: () => input,
1154
+ onFailure: (issue) => new SchemaIssue.Composite(this, [issue])
1137
1155
  })
1156
+ }
1138
1157
  }
1139
1158
  /** @internal */
1140
1159
  getExpected(): string {
@@ -1142,7 +1161,7 @@ export class TemplateLiteral extends Base {
1142
1161
  }
1143
1162
  /** @internal */
1144
1163
  matchPart(s: string, options: ParseOptions): string | undefined {
1145
- return segmentTemplateLiteralParts(this.encodedParts, s, options) === undefined ? undefined : s
1164
+ return segmentTemplateLiteralParts(this, s, options) === undefined ? undefined : s
1146
1165
  }
1147
1166
  /** @internal */
1148
1167
  asTemplateLiteralParser(): Arrays {
@@ -1152,11 +1171,11 @@ export class TemplateLiteral extends Base {
1152
1171
  tuple,
1153
1172
  new SchemaTransformation.Transformation(
1154
1173
  SchemaGetter.transformOrFail((s: string, options) => {
1155
- const segments = segmentTemplateLiteralParts(this.encodedParts, s, options)
1156
- if (segments !== undefined) return Effect.succeed(segments)
1174
+ const segments = segmentTemplateLiteralParts(this, s, options)
1175
+ if (segments) return Effect.succeed(segments)
1157
1176
  return Effect.fail(
1158
- new SchemaIssue.InvalidValue(Option.some(s), {
1159
- message: `Expected a string matching template literal parts, got ${format(s)}`
1177
+ new SchemaIssue.InvalidValue({
1178
+ message: "Expected a string matching template literal parts"
1160
1179
  })
1161
1180
  )
1162
1181
  }),
@@ -1228,11 +1247,11 @@ export type LiteralValue = string | number | boolean | bigint
1228
1247
  *
1229
1248
  * **Example** (Creating a literal AST)
1230
1249
  *
1231
- * ```ts
1250
+ * ```ts import.meta.vitest
1232
1251
  * import { SchemaAST } from "effect"
1233
1252
  *
1234
1253
  * const ast = new SchemaAST.Literal("active")
1235
- * console.log(ast.literal) // "active"
1254
+ * ast.literal // => "active"
1236
1255
  * ```
1237
1256
  *
1238
1257
  * @see {@link LiteralValue}
@@ -1309,7 +1328,8 @@ export class String extends Base {
1309
1328
  }
1310
1329
  /** @internal */
1311
1330
  matchPart(s: string, options: ParseOptions): string | undefined {
1312
- return applyTemplateLiteralPartChecks(this, s, options)
1331
+ const checks = this.checks
1332
+ return checks && !options.disableChecks && collectIssues(checks, s, undefined, this, options) ? undefined : s
1313
1333
  }
1314
1334
  /** @internal */
1315
1335
  getExpected(): string {
@@ -1366,9 +1386,10 @@ export class Number extends Base {
1366
1386
  return this._match(isStringFiniteRegExp, s, options)
1367
1387
  }
1368
1388
  private _match(regexp: RegExp, s: string, options: ParseOptions): number | undefined {
1369
- return regexp.test(s)
1370
- ? applyTemplateLiteralPartChecks(this, globalThis.Number(s), options)
1371
- : undefined
1389
+ if (!regexp.test(s)) return undefined
1390
+ const value = globalThis.Number(s)
1391
+ if (options.disableChecks || !this.checks) return value
1392
+ return collectIssues(this.checks, value, undefined, this, options) ? undefined : value
1372
1393
  }
1373
1394
  /** @internal */
1374
1395
  toCodecJson(): AST {
@@ -1401,7 +1422,7 @@ function hasCheck(checks: ReadonlyArray<Check<unknown>>, id: string): boolean {
1401
1422
  }
1402
1423
 
1403
1424
  function numberToJson(checks: Checks | undefined): Link {
1404
- const encodedFinite = checks === undefined
1425
+ const encodedFinite = !checks
1405
1426
  ? finite
1406
1427
  : appendChecks(finite, checks)
1407
1428
 
@@ -1493,7 +1514,8 @@ export class Symbol extends Base {
1493
1514
  }
1494
1515
  /** @internal */
1495
1516
  matchKey(s: symbol, options: ParseOptions): symbol | undefined {
1496
- return applyTemplateLiteralPartChecks(this, s, options)
1517
+ if (options.disableChecks || !this.checks) return s
1518
+ return collectIssues(this.checks, s, undefined, this, options) ? undefined : s
1497
1519
  }
1498
1520
  /** @internal */
1499
1521
  toCodecStringTree(): AST {
@@ -1546,9 +1568,10 @@ export class BigInt extends Base {
1546
1568
  }
1547
1569
  /** @internal */
1548
1570
  matchPart(s: string, options: ParseOptions): bigint | undefined {
1549
- return isStringBigIntRegExp.test(s)
1550
- ? applyTemplateLiteralPartChecks(this, globalThis.BigInt(s), options)
1551
- : undefined
1571
+ if (!isStringBigIntRegExp.test(s)) return undefined
1572
+ const value = globalThis.BigInt(s)
1573
+ if (options.disableChecks || !this.checks) return value
1574
+ return collectIssues(this.checks, value, undefined, this, options) ? undefined : value
1552
1575
  }
1553
1576
  /** @internal */
1554
1577
  toCodecStringTree(): AST {
@@ -1602,15 +1625,14 @@ export const bigInt = new BigInt()
1602
1625
  *
1603
1626
  * **Example** (Inspecting a tuple AST)
1604
1627
  *
1605
- * ```ts
1628
+ * ```ts import.meta.vitest
1606
1629
  * import { Schema, SchemaAST } from "effect"
1607
1630
  *
1608
1631
  * const schema = Schema.Tuple([Schema.String, Schema.Number])
1609
1632
  * const ast = schema.ast
1610
1633
  *
1611
1634
  * if (SchemaAST.isArrays(ast)) {
1612
- * console.log(ast.elements.length) // 2
1613
- * console.log(ast.rest.length) // 0
1635
+ * [ast.elements.length, ast.rest.length] // => [2, 0]
1614
1636
  * }
1615
1637
  * ```
1616
1638
  *
@@ -1642,58 +1664,71 @@ export class Arrays extends Base {
1642
1664
  this.rest = rest
1643
1665
  this.encodingChecks = encodingChecks
1644
1666
 
1645
- // A required element cannot follow an optional element. ts(1257)
1646
- const i = elements.findIndex(isOptional)
1647
- if (i !== -1 && (elements.slice(i + 1).some((e) => !isOptional(e)) || rest.length > 1)) {
1667
+ let hasOptional = false
1668
+ for (let i = 0; i < elements.length; i++) {
1669
+ if (isOptional(elements[i])) {
1670
+ hasOptional = true
1671
+ } else if (hasOptional) {
1672
+ throw new Error("A required element cannot follow an optional element. ts(1257)")
1673
+ }
1674
+ }
1675
+ if (hasOptional && rest.length > 1) {
1648
1676
  throw new Error("A required element cannot follow an optional element. ts(1257)")
1649
1677
  }
1650
1678
 
1651
1679
  // An optional element cannot follow a rest element.ts(1266)
1652
- if (rest.length > 1 && rest.slice(1).some(isOptional)) {
1653
- throw new Error("An optional element cannot follow a rest element. ts(1266)")
1680
+ for (let i = 1; i < rest.length; i++) {
1681
+ if (isOptional(rest[i])) {
1682
+ throw new Error("An optional element cannot follow a rest element. ts(1266)")
1683
+ }
1654
1684
  }
1655
1685
  }
1656
1686
  /** @internal */
1657
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
1687
+ getParser(
1688
+ compile: SchemaParser.Compiler,
1689
+ compileConstructorDefault: SchemaParser.Compiler = compile
1690
+ ): SchemaParser.Parser {
1658
1691
  // oxlint-disable-next-line @typescript-eslint/no-this-alias
1659
1692
  const ast = this
1660
- const elements = ast.elements.map((ast) => ({ ast, parser: recur(ast) }))
1661
- const rest = ast.rest.map((ast) => ({ ast, parser: recur(ast) }))
1662
- const elementLen = elements.length
1663
-
1664
- const [head, ...tail] = rest
1665
- const tailLen = tail.length
1693
+ type ElementParser = { readonly ast: AST; readonly parser: SchemaParser.Parser }
1694
+ let elements: Array<ElementParser> | undefined
1695
+ let rest: Array<ElementParser> | undefined
1696
+ const elementLen = ast.elements.length
1697
+ const tailLen = Math.max(0, ast.rest.length - 1)
1666
1698
 
1667
1699
  function getParser(
1668
1700
  tailThreshold: number,
1669
1701
  index: number
1670
1702
  ): { readonly ast: AST; readonly parser: SchemaParser.Parser } {
1671
1703
  if (index < elementLen) {
1672
- return elements[index]
1704
+ return elements![index]
1673
1705
  } else if (index >= tailThreshold) {
1674
- return tail[index - tailThreshold]
1706
+ return rest![index - tailThreshold + 1]
1675
1707
  }
1676
- return head
1708
+ return rest![0]
1677
1709
  }
1678
1710
 
1679
- return Effect.fnUntracedEager(function*(oinput, options) {
1680
- if (oinput._tag === "None") {
1681
- return oinput
1711
+ return Effect.fnUntracedEager(function*(input, options) {
1712
+ if (input === InternalParser.missing) {
1713
+ return InternalParser.missing
1682
1714
  }
1683
- const input = oinput.value
1684
1715
 
1685
1716
  // If the input is not an array, return early with an error
1686
1717
  if (!Array.isArray(input)) {
1687
- return yield* Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
1718
+ return yield* Effect.fail(new SchemaIssue.InvalidType(ast))
1719
+ }
1720
+ if (!elements) {
1721
+ elements = ast.elements.map((ast) => ({ ast, parser: compileConstructorDefault(ast) }))
1722
+ rest = ast.rest.map((ast) => ({ ast, parser: compileConstructorDefault(ast) }))
1688
1723
  }
1689
1724
 
1690
1725
  const len = input.length
1691
1726
  const state = {
1692
1727
  ast,
1693
1728
  getParser,
1694
- oinput,
1729
+ input,
1695
1730
  len,
1696
- tailThreshold: resolveTailThreshold(len, elementLen, tailLen),
1731
+ tailThreshold: Math.max(elementLen, len - tailLen),
1697
1732
  output: new globalThis.Array(len),
1698
1733
  issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
1699
1734
  options
@@ -1710,19 +1745,23 @@ export class Arrays extends Base {
1710
1745
  // ---------------------------------------------
1711
1746
  if (ast.rest.length === 0 && len > elementLen) {
1712
1747
  for (let i = elementLen; i <= len - 1; i++) {
1713
- const issue = new SchemaIssue.Pointer([i], new SchemaIssue.UnexpectedKey(ast, input[i]))
1748
+ const issue = new SchemaIssue.Pointer([i], new SchemaIssue.UnexpectedKey(ast))
1714
1749
  if (options.errors === "all") {
1715
1750
  if (state.issues) state.issues.push(issue)
1716
1751
  else state.issues = [issue]
1717
1752
  } else {
1718
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, [issue]))
1753
+ return yield* Effect.fail(
1754
+ new SchemaIssue.Composite(ast, [issue])
1755
+ )
1719
1756
  }
1720
1757
  }
1721
1758
  }
1722
1759
  if (state.issues) {
1723
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, state.issues))
1760
+ return yield* Effect.fail(
1761
+ new SchemaIssue.Composite(ast, state.issues)
1762
+ )
1724
1763
  }
1725
- return Option.some(state.output)
1764
+ return state.output
1726
1765
  })
1727
1766
  }
1728
1767
  private _rebuild(recur: (ast: AST) => AST, checks: Checks | undefined, encodingChecks: Checks | undefined) {
@@ -1757,7 +1796,7 @@ export class Arrays extends Base {
1757
1796
  }
1758
1797
  const parseArray = iterateEager<{
1759
1798
  readonly ast: AST
1760
- readonly oinput: Option.Option<unknown>
1799
+ readonly input: unknown
1761
1800
  readonly len: number
1762
1801
  readonly getParser: (
1763
1802
  tailThreshold: number,
@@ -1769,14 +1808,18 @@ const parseArray = iterateEager<{
1769
1808
  issues: Array<SchemaIssue.Issue> | undefined
1770
1809
  }, unknown>()({
1771
1810
  onItem(s, item, i) {
1772
- const value = i < s.len ? Option.some(item) : Option.none()
1811
+ const value = i < s.len ? item : InternalParser.missing
1773
1812
  return s.getParser(s.tailThreshold, i).parser(value, s.options)
1774
1813
  },
1775
- step(s, _, exit, i) {
1814
+ step(s, item, exit, i) {
1776
1815
  if (exit._tag === "Failure") {
1777
1816
  return wrapPropertyKeyIssue(s, s.ast, i, exit)
1778
- } else if (exit.value._tag === "Some") {
1779
- s.output[i] = exit.value.value
1817
+ }
1818
+ const value = exit === InternalParser.sameExit
1819
+ ? item
1820
+ : (exit as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
1821
+ if (value !== InternalParser.missing) {
1822
+ s.output[i] = value
1780
1823
  } else {
1781
1824
  const p = s.getParser(s.tailThreshold, i)
1782
1825
  if (isOptional(p.ast)) return
@@ -1785,20 +1828,14 @@ const parseArray = iterateEager<{
1785
1828
  if (s.issues) s.issues.push(issue)
1786
1829
  else s.issues = [issue]
1787
1830
  } else {
1788
- return Exit.fail(new SchemaIssue.Composite(s.ast, s.oinput, [issue]))
1831
+ return Exit.fail(
1832
+ new SchemaIssue.Composite(s.ast, [issue])
1833
+ )
1789
1834
  }
1790
1835
  }
1791
1836
  }
1792
1837
  })
1793
1838
 
1794
- function resolveTailThreshold(
1795
- inputLen: number,
1796
- elementLen: number,
1797
- tailLen: number
1798
- ) {
1799
- return Math.max(elementLen, inputLen - tailLen)
1800
- }
1801
-
1802
1839
  const resolveConcurrency = (value: number | "unbounded" | undefined) => {
1803
1840
  value = value === "unbounded" ? Infinity : value ?? 1
1804
1841
  return value > 1 ? { concurrency: value } : undefined
@@ -1806,7 +1843,7 @@ const resolveConcurrency = (value: number | "unbounded" | undefined) => {
1806
1843
 
1807
1844
  const wrapPropertyKeyIssue = (
1808
1845
  s: {
1809
- readonly oinput: Option.Option<unknown>
1846
+ readonly input: unknown
1810
1847
  readonly options: ParseOptions
1811
1848
  issues: Array<SchemaIssue.Issue> | undefined
1812
1849
  },
@@ -1822,7 +1859,11 @@ const wrapPropertyKeyIssue = (
1822
1859
  return Exit.failCause(
1823
1860
  Cause.map(
1824
1861
  exit.cause,
1825
- (issue) => new SchemaIssue.Composite(ast, s.oinput, [new SchemaIssue.Pointer([key], issue)])
1862
+ (issue) =>
1863
+ new SchemaIssue.Composite(
1864
+ ast,
1865
+ [new SchemaIssue.Pointer([key], issue)]
1866
+ )
1826
1867
  )
1827
1868
  )
1828
1869
  }
@@ -1831,7 +1872,9 @@ const wrapPropertyKeyIssue = (
1831
1872
  if (s.issues) s.issues.push(pointer)
1832
1873
  else s.issues = [pointer]
1833
1874
  } else {
1834
- return Exit.fail(new SchemaIssue.Composite(ast, s.oinput, [pointer]))
1875
+ return Exit.fail(
1876
+ new SchemaIssue.Composite(ast, [pointer])
1877
+ )
1835
1878
  }
1836
1879
  }
1837
1880
 
@@ -1899,37 +1942,6 @@ export class PropertySignature {
1899
1942
  }
1900
1943
  }
1901
1944
 
1902
- /**
1903
- * Represents a bidirectional merge strategy for index signature key-value pairs.
1904
- *
1905
- * **Details**
1906
- *
1907
- * Used by {@link IndexSignature} when the same key appears multiple times
1908
- * (e.g. from `Schema.extend` or overlapping records). Provides separate
1909
- * `decode` and `encode` combiners that determine how duplicate entries are
1910
- * merged.
1911
- *
1912
- * @see {@link IndexSignature}
1913
- * @category models
1914
- * @since 4.0.0
1915
- */
1916
- export class KeyValueCombiner {
1917
- readonly decode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
1918
- readonly encode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
1919
-
1920
- constructor(
1921
- decode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined,
1922
- encode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
1923
- ) {
1924
- this.decode = decode
1925
- this.encode = encode
1926
- }
1927
- /** @internal */
1928
- flip(): KeyValueCombiner {
1929
- return new KeyValueCombiner(this.encode, this.decode)
1930
- }
1931
- }
1932
-
1933
1945
  type IndexSignatureParameter =
1934
1946
  | String
1935
1947
  | Number
@@ -1968,7 +1980,6 @@ function isIndexSignatureParameter(ast: AST): ast is IndexSignatureParameter {
1968
1980
  * - `parameter` — the key type AST (e.g. {@link String} for `string` keys,
1969
1981
  * {@link TemplateLiteral} for patterned keys).
1970
1982
  * - `type` — the value type SchemaAST.
1971
- * - `merge` — optional {@link KeyValueCombiner} for handling duplicate keys.
1972
1983
  *
1973
1984
  * **Gotchas**
1974
1985
  *
@@ -1983,19 +1994,16 @@ function isIndexSignatureParameter(ast: AST): ast is IndexSignatureParameter {
1983
1994
  export class IndexSignature {
1984
1995
  readonly parameter: IndexSignatureParameter
1985
1996
  readonly type: AST
1986
- readonly merge: KeyValueCombiner | undefined
1987
1997
 
1988
1998
  constructor(
1989
1999
  parameter: AST,
1990
- type: AST,
1991
- merge: KeyValueCombiner | undefined
2000
+ type: AST
1992
2001
  ) {
1993
2002
  if (!isIndexSignatureParameter(parameter)) {
1994
2003
  throw new Error(`Invalid index signature parameter ${parameter._tag}`)
1995
2004
  }
1996
2005
  this.parameter = parameter
1997
2006
  this.type = type
1998
- this.merge = merge
1999
2007
  if (isOptional(type) && !containsUndefined(type)) {
2000
2008
  throw new Error("Cannot use `Schema.optionalKey` with index signatures, use `Schema.optional` instead.")
2001
2009
  }
@@ -2026,17 +2034,14 @@ export class IndexSignature {
2026
2034
  *
2027
2035
  * **Example** (Inspecting a struct AST)
2028
2036
  *
2029
- * ```ts
2037
+ * ```ts import.meta.vitest
2030
2038
  * import { Schema, SchemaAST } from "effect"
2031
2039
  *
2032
2040
  * const schema = Schema.Struct({ name: Schema.String })
2033
2041
  * const ast = schema.ast
2034
2042
  *
2035
2043
  * if (SchemaAST.isObjects(ast)) {
2036
- * for (const ps of ast.propertySignatures) {
2037
- * console.log(ps.name, ps.type._tag)
2038
- * }
2039
- * // "name" "String"
2044
+ * ast.propertySignatures.map((ps) => [ps.name, ps.type._tag]) // => [["name", "String"]]
2040
2045
  * }
2041
2046
  * ```
2042
2047
  *
@@ -2074,101 +2079,126 @@ export class Objects extends Base {
2074
2079
  }
2075
2080
  }
2076
2081
  /** @internal */
2077
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
2082
+ getParser(
2083
+ compile: SchemaParser.Compiler,
2084
+ compileConstructorDefault: SchemaParser.Compiler = compile
2085
+ ): SchemaParser.Parser {
2078
2086
  // oxlint-disable-next-line @typescript-eslint/no-this-alias
2079
2087
  const ast = this
2080
2088
  const expectedKeys: Array<PropertyKey> = []
2081
- const expectedKeysSet = new Set<PropertyKey>()
2082
- const properties: Array<{
2083
- readonly ps: PropertySignature | IndexSignature
2084
- readonly parser: SchemaParser.Parser
2085
- readonly name: PropertyKey
2086
- readonly type: AST
2087
- }> = []
2088
2089
  for (const ps of ast.propertySignatures) {
2089
2090
  expectedKeys.push(ps.name)
2090
- expectedKeysSet.add(ps.name)
2091
- properties.push({
2092
- ps,
2093
- parser: recur(ps.type),
2094
- name: ps.name,
2095
- type: ps.type
2096
- })
2097
2091
  }
2092
+ const hasProperties = expectedKeys.length
2098
2093
  const indexCount = ast.indexSignatures.length
2094
+ let expectedKeysSet = hasProperties && indexCount ? new Set(expectedKeys) : undefined
2099
2095
  // ---------------------------------------------
2100
2096
  // handle empty struct
2101
2097
  // ---------------------------------------------
2102
- if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 0) {
2098
+ if (!hasProperties && !indexCount) {
2103
2099
  return fromRefinement(ast, Predicate.isNotNullish)
2104
2100
  }
2105
2101
 
2106
- const parseIndexes = indexCount > 0 ?
2107
- iterateEager<{
2108
- readonly oinput: Option.Option<unknown>
2109
- readonly input: Record<PropertyKey, unknown>
2110
- readonly options: ParseOptions
2111
- readonly out: Record<PropertyKey, unknown>
2112
- issues: Array<SchemaIssue.Issue> | undefined
2113
- }, [key: PropertyKey, is: IndexSignature]>()({
2114
- onItem: Effect.fnUntracedEager(function*(
2115
- s,
2116
- [key, is]
2117
- ) {
2118
- const parserKey = recur(parameterFromPropertyKey(is.parameter))
2119
- const effKey = parserKey(Option.some(key), s.options)
2120
- const exitKey = (effectIsExit(effKey) ? effKey : yield* Effect.exit(effKey)) as Exit.Exit<
2121
- Option.Option<PropertyKey>,
2122
- SchemaIssue.Issue
2123
- >
2124
- if (exitKey._tag === "Failure") {
2125
- const eff = wrapPropertyKeyIssue(s, ast, key, exitKey)
2126
- if (eff) yield* eff
2127
- return
2128
- }
2129
-
2130
- const value: Option.Option<unknown> = Option.some(s.input[key])
2131
- const parserValue = recur(is.type)
2132
- const effValue = parserValue(value, s.options)
2133
- const exitValue = effectIsExit(effValue) ? effValue : yield* Effect.exit(effValue)
2134
- if (exitValue._tag === "Failure") {
2135
- const eff = wrapPropertyKeyIssue(s, ast, key, exitValue)
2136
- if (eff) yield* eff
2137
- return
2138
- } else if (exitKey.value._tag === "Some" && exitValue.value._tag === "Some") {
2139
- const k2 = exitKey.value.value
2140
- if (expectedKeysSet.has(key) || expectedKeysSet.has(k2)) {
2141
- return
2142
- }
2143
- const v2 = exitValue.value.value
2144
- if (is.merge && is.merge.decode && Object.hasOwn(s.out, k2)) {
2145
- const [k, v] = is.merge.decode.combine([k2, s.out[k2]], [k2, v2])
2146
- InternalRecord.assignProperty(s.out, k, v)
2147
- } else {
2148
- InternalRecord.assignProperty(s.out, k2, v2)
2149
- }
2150
- }
2151
- }),
2102
+ let properties: Array<ParsedProperty> | undefined
2103
+ let indexes:
2104
+ | Array<{
2105
+ readonly is: IndexSignature
2106
+ readonly parserKey: SchemaParser.Parser
2107
+ readonly parserValue: SchemaParser.Parser
2108
+ }>
2109
+ | undefined
2110
+ type Index = NonNullable<typeof indexes>[number]
2111
+ const finishIndex = (
2112
+ s: ObjectParserState,
2113
+ key: PropertyKey,
2114
+ k2: PropertyKey | typeof InternalParser.missing,
2115
+ inputValue: unknown,
2116
+ exitValue: Exit.Exit<unknown, SchemaIssue.Issue>
2117
+ ): Effect.Effect<void, SchemaIssue.Issue, any> => {
2118
+ if (exitValue._tag === "Failure") {
2119
+ return wrapPropertyKeyIssue(s, ast, key, exitValue) ?? Exit.void
2120
+ }
2121
+ const value = exitValue === InternalParser.sameExit
2122
+ ? inputValue
2123
+ : (exitValue as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
2124
+ if (k2 !== InternalParser.missing && value !== InternalParser.missing) {
2125
+ if (hasProperties && (expectedKeysSet!.has(key) || expectedKeysSet!.has(k2))) return Exit.void
2126
+ InternalRecord.assignProperty(s.out, k2, value)
2127
+ }
2128
+ return Exit.void
2129
+ }
2130
+ const parseIndex = (
2131
+ s: ObjectParserState,
2132
+ key: PropertyKey,
2133
+ index: Index,
2134
+ exitKey?: Exit.Exit<unknown, SchemaIssue.Issue>
2135
+ ): Effect.Effect<void, SchemaIssue.Issue, any> => {
2136
+ if (!exitKey) {
2137
+ const eff = index.parserKey(key, s.options)
2138
+ if (!effectIsExit(eff)) {
2139
+ return Effect.flatMap(Effect.exit(eff), (exit) => parseIndex(s, key, index, exit))
2140
+ }
2141
+ exitKey = eff
2142
+ }
2143
+ if (exitKey._tag === "Failure") {
2144
+ return wrapPropertyKeyIssue(s, ast, key, exitKey) ?? Exit.void
2145
+ }
2146
+ const k2 = exitKey === InternalParser.sameExit
2147
+ ? key
2148
+ : (exitKey as InternalParser.Success<PropertyKey, SchemaIssue.Issue>)[InternalParser.args]
2149
+ const inputValue = s.input[key]
2150
+ const result = index.parserValue(inputValue, s.options)
2151
+ return effectIsExit(result)
2152
+ ? finishIndex(s, key, k2, inputValue, result)
2153
+ : Effect.flatMap(Effect.exit(result), (exit) => finishIndex(s, key, k2, inputValue, exit))
2154
+ }
2155
+ const parseStringIndex = (
2156
+ s: ObjectParserState,
2157
+ key: PropertyKey,
2158
+ index: Index
2159
+ ): Effect.Effect<void, SchemaIssue.Issue, any> => {
2160
+ const inputValue = s.input[key]
2161
+ const result = index.parserValue(inputValue, s.options)
2162
+ return effectIsExit(result)
2163
+ ? finishIndex(s, key, key, inputValue, result)
2164
+ : Effect.flatMap(Effect.exit(result), (exit) => finishIndex(s, key, key, inputValue, exit))
2165
+ }
2166
+ const parseIndexes = indexCount ?
2167
+ iterateEager<ObjectParserState, [key: PropertyKey, index: Index]>()({
2168
+ onItem: (s, [key, index]) => parseIndex(s, key, index),
2152
2169
  step: (_s, _, exit: Exit.Exit<void, SchemaIssue.Issue>) => exit._tag === "Failure" ? exit : undefined
2153
2170
  }) :
2154
2171
  undefined
2155
2172
 
2156
- return Effect.fnUntracedEager(function*(oinput, options) {
2157
- if (oinput._tag === "None") {
2158
- return oinput
2173
+ return Effect.fnUntracedEager(function*(input, options) {
2174
+ if (input === InternalParser.missing) {
2175
+ return InternalParser.missing
2159
2176
  }
2160
- const input = oinput.value as Record<PropertyKey, unknown>
2161
2177
 
2162
2178
  // If the input is not a record, return early with an error
2163
2179
  if (!(typeof input === "object" && input !== null && !Array.isArray(input))) {
2164
- return yield* Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
2180
+ return yield* Effect.fail(new SchemaIssue.InvalidType(ast))
2181
+ }
2182
+ if (!properties) {
2183
+ properties = ast.propertySignatures.map((ps) => ({
2184
+ parser: compileConstructorDefault(ps.type),
2185
+ name: ps.name,
2186
+ type: ps.type
2187
+ }))
2188
+ indexes = indexCount
2189
+ ? ast.indexSignatures.map((is) => ({
2190
+ is,
2191
+ parserKey: compile(parameterFromPropertyKey(is.parameter)),
2192
+ parserValue: compileConstructorDefault(is.type)
2193
+ }))
2194
+ : undefined
2165
2195
  }
2166
2196
 
2197
+ const record = input as Record<PropertyKey, unknown>
2167
2198
  const out: Record<PropertyKey, unknown> = {}
2168
2199
  const state = {
2169
2200
  ast,
2170
- oinput,
2171
- input,
2201
+ input: record,
2172
2202
  out,
2173
2203
  issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
2174
2204
  options
@@ -2181,14 +2211,15 @@ export class Objects extends Base {
2181
2211
  // handle excess properties
2182
2212
  // ---------------------------------------------
2183
2213
  let inputKeys: Array<PropertyKey> | undefined
2184
- if (ast.indexSignatures.length === 0 && (onExcessPropertyError || onExcessPropertyPreserve)) {
2185
- inputKeys = Reflect.ownKeys(input)
2214
+ if (!indexCount && (onExcessPropertyError || onExcessPropertyPreserve)) {
2215
+ expectedKeysSet ??= new Set(expectedKeys)
2216
+ inputKeys = Reflect.ownKeys(record)
2186
2217
  for (let i = 0; i < inputKeys.length; i++) {
2187
2218
  const key = inputKeys[i]
2188
2219
  if (!expectedKeysSet.has(key)) {
2189
2220
  // key is unexpected
2190
2221
  if (onExcessPropertyError) {
2191
- const issue = new SchemaIssue.Pointer([key], new SchemaIssue.UnexpectedKey(ast, input[key]))
2222
+ const issue = new SchemaIssue.Pointer([key], new SchemaIssue.UnexpectedKey(ast))
2192
2223
  if (errorsAllOption) {
2193
2224
  if (state.issues) {
2194
2225
  state.issues.push(issue)
@@ -2197,11 +2228,13 @@ export class Objects extends Base {
2197
2228
  }
2198
2229
  continue
2199
2230
  } else {
2200
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, [issue]))
2231
+ return yield* Effect.fail(
2232
+ new SchemaIssue.Composite(ast, [issue])
2233
+ )
2201
2234
  }
2202
2235
  } else {
2203
2236
  // preserve key
2204
- InternalRecord.assignProperty(out, key, input[key])
2237
+ InternalRecord.assignProperty(out, key, record[key])
2205
2238
  }
2206
2239
  }
2207
2240
  }
@@ -2212,20 +2245,34 @@ export class Objects extends Base {
2212
2245
  // ---------------------------------------------
2213
2246
  // handle property signatures
2214
2247
  // ---------------------------------------------
2215
- const eff = parseProperties(state, properties, concurrency)
2216
- if (eff) yield* eff
2248
+ if (hasProperties) {
2249
+ const eff = parseProperties(state, properties!, concurrency)
2250
+ if (eff) yield* eff
2251
+ }
2217
2252
 
2218
2253
  // ---------------------------------------------
2219
2254
  // handle index signatures
2220
2255
  // ---------------------------------------------
2221
- if (parseIndexes) {
2222
- const keyPairs = Arr.empty<[PropertyKey, IndexSignature]>()
2256
+ if (indexCount && !concurrency) {
2223
2257
  for (let i = 0; i < indexCount; i++) {
2224
- const is = ast.indexSignatures[i]
2225
- const keys = getIndexSignatureKeys(input, is.parameter, options)
2258
+ const index = indexes![i]
2259
+ const parse = index.is.parameter === string ? parseStringIndex : parseIndex
2260
+ const keys = index.is.parameter === string
2261
+ ? Object.keys(record)
2262
+ : getIndexSignatureKeys(record, index.is.parameter, options)
2226
2263
  for (let j = 0; j < keys.length; j++) {
2227
- const key = keys[j]
2228
- keyPairs.push([key, is])
2264
+ const eff = parse(state, keys[j], index)
2265
+ if (!effectIsExit(eff)) yield* eff
2266
+ else if (eff._tag === "Failure") return yield* eff as Exit.Exit<never, SchemaIssue.Issue>
2267
+ }
2268
+ }
2269
+ } else if (parseIndexes) {
2270
+ const keyPairs = Arr.empty<[PropertyKey, Index]>()
2271
+ for (let i = 0; i < indexCount; i++) {
2272
+ const index = indexes![i]
2273
+ const keys = getIndexSignatureKeys(record, index.is.parameter, options)
2274
+ for (let j = 0; j < keys.length; j++) {
2275
+ keyPairs.push([keys[j], index])
2229
2276
  }
2230
2277
  }
2231
2278
  const eff = parseIndexes(state, keyPairs, concurrency)
@@ -2233,26 +2280,27 @@ export class Objects extends Base {
2233
2280
  }
2234
2281
 
2235
2282
  if (state.issues) {
2236
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, state.issues))
2283
+ return yield* Effect.fail(
2284
+ new SchemaIssue.Composite(ast, state.issues)
2285
+ )
2237
2286
  }
2238
2287
  if (options.propertyOrder === "original") {
2239
2288
  // preserve input keys order
2240
- const keys = (inputKeys ?? Reflect.ownKeys(input)).concat(expectedKeys)
2289
+ const keys = (inputKeys ?? Reflect.ownKeys(record)).concat(expectedKeys)
2241
2290
  const preserved: Record<PropertyKey, unknown> = {}
2242
2291
  for (const key of keys) {
2243
2292
  if (Object.hasOwn(out, key)) {
2244
2293
  InternalRecord.assignProperty(preserved, key, out[key])
2245
2294
  }
2246
2295
  }
2247
- return Option.some(preserved)
2296
+ return preserved
2248
2297
  }
2249
- return Option.some(out)
2298
+ return out
2250
2299
  })
2251
2300
  }
2252
2301
  private _rebuild(
2253
2302
  recur: (ast: AST) => AST,
2254
2303
  recurParameter: (ast: AST) => AST,
2255
- flipMerge: boolean,
2256
2304
  checks: Checks | undefined,
2257
2305
  encodingChecks: Checks | undefined
2258
2306
  ): Objects {
@@ -2264,10 +2312,9 @@ export class Objects extends Base {
2264
2312
  const indexes = mapOrSame(this.indexSignatures, (is) => {
2265
2313
  const p = recurParameter(is.parameter)
2266
2314
  const t = recur(is.type)
2267
- const merge = flipMerge ? is.merge?.flip() : is.merge
2268
- return p === is.parameter && t === is.type && merge === is.merge
2315
+ return p === is.parameter && t === is.type
2269
2316
  ? is
2270
- : new IndexSignature(p, t, merge)
2317
+ : new IndexSignature(p, t)
2271
2318
  })
2272
2319
 
2273
2320
  return props === this.propertySignatures && indexes === this.indexSignatures && checks === this.checks &&
@@ -2285,11 +2332,11 @@ export class Objects extends Base {
2285
2332
  }
2286
2333
  /** @internal */
2287
2334
  flip(recur: (ast: AST) => AST): AST {
2288
- return this._rebuild(recur, recur, true, this.encodingChecks, this.checks)
2335
+ return this._rebuild(recur, recur, this.encodingChecks, this.checks)
2289
2336
  }
2290
2337
  /** @internal */
2291
2338
  recur(recur: (ast: AST) => AST, recurParameter: (ast: AST) => AST = recur): AST {
2292
- return this._rebuild(recur, recurParameter, false, this.checks, this.encodingChecks)
2339
+ return this._rebuild(recur, recurParameter, this.checks, this.encodingChecks)
2293
2340
  }
2294
2341
  /** @internal */
2295
2342
  getExpected(): string {
@@ -2298,42 +2345,41 @@ export class Objects extends Base {
2298
2345
  }
2299
2346
  }
2300
2347
 
2348
+ type ObjectParserState = {
2349
+ readonly ast: Objects
2350
+ readonly input: Record<PropertyKey, unknown>
2351
+ readonly options: ParseOptions
2352
+ readonly out: Record<PropertyKey, unknown>
2353
+ issues: Array<SchemaIssue.Issue> | undefined
2354
+ }
2355
+
2301
2356
  type ParsedProperty = {
2302
- readonly ps: PropertySignature | IndexSignature
2303
2357
  readonly parser: SchemaParser.Parser
2304
2358
  readonly name: PropertyKey
2305
2359
  readonly type: AST
2306
2360
  }
2307
2361
 
2308
- const parseProperties = iterateEager<{
2309
- readonly ast: AST
2310
- readonly oinput: Option.Option<unknown>
2311
- readonly input: Record<PropertyKey, unknown>
2312
- readonly options: ParseOptions
2313
- readonly out: Record<PropertyKey, unknown>
2314
- issues: Array<SchemaIssue.Issue> | undefined
2315
- }, ParsedProperty>()({
2316
- onItem(
2317
- s: {
2318
- readonly oinput: Option.Option<unknown>
2319
- readonly input: Record<PropertyKey, unknown>
2320
- readonly options: ParseOptions
2321
- readonly out: Record<PropertyKey, unknown>
2322
- issues: Array<SchemaIssue.Issue> | undefined
2323
- },
2324
- p
2325
- ) {
2326
- const value: Option.Option<unknown> = Object.hasOwn(s.input, p.name)
2327
- ? Option.some(s.input[p.name])
2328
- : Option.none()
2362
+ const parseProperties = iterateEager<ObjectParserState, ParsedProperty>()({
2363
+ onItem(s, p) {
2364
+ if (!Object.hasOwn(s.input, p.name)) {
2365
+ return p.parser(InternalParser.missing, s.options)
2366
+ }
2367
+ const value = s.input[p.name]
2368
+ InternalRecord.assignProperty(s.out, p.name, value)
2329
2369
  return p.parser(value, s.options)
2330
2370
  },
2331
2371
  step(s, p, exit) {
2332
2372
  if (exit._tag === "Failure") {
2333
2373
  return wrapPropertyKeyIssue(s, s.ast, p.name, exit)
2334
- } else if (exit.value._tag === "Some") {
2335
- InternalRecord.assignProperty(s.out, p.name, exit.value.value)
2336
- } else if (!isOptional(p.type)) {
2374
+ }
2375
+ if (exit === InternalParser.sameExit) return
2376
+ const value = (exit as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
2377
+ if (value !== InternalParser.missing) {
2378
+ InternalRecord.assignProperty(s.out, p.name, value)
2379
+ return
2380
+ }
2381
+ delete s.out[p.name]
2382
+ if (!isOptional(p.type)) {
2337
2383
  const issue = new SchemaIssue.Pointer([p.name], new SchemaIssue.MissingKey(p.type.context?.annotations))
2338
2384
  if (s.options.errors === "all") {
2339
2385
  if (s.issues) s.issues.push(issue)
@@ -2341,7 +2387,7 @@ const parseProperties = iterateEager<{
2341
2387
  return
2342
2388
  } else {
2343
2389
  return Exit.fail(
2344
- new SchemaIssue.Composite(s.ast, s.oinput, [issue])
2390
+ new SchemaIssue.Composite(s.ast, [issue])
2345
2391
  )
2346
2392
  }
2347
2393
  }
@@ -2434,6 +2480,21 @@ export type Sentinel = {
2434
2480
  readonly literal: LiteralValue | symbol
2435
2481
  }
2436
2482
 
2483
+ const toCandidate = memoize((ast: AST): AST => {
2484
+ while (true) {
2485
+ if (isSuspend(ast)) return unknown
2486
+ const encoding = ast.encoding
2487
+ if (!encoding) {
2488
+ // Index signature parameters do not participate in union selection.
2489
+ return (ast as any).recur?.(toCandidate, identity) ?? ast
2490
+ }
2491
+ if (
2492
+ encoding.some((link) => link.transformation._tag === "Middleware" && link.transformation.decode !== identity)
2493
+ ) return unknown
2494
+ ast = encoding[encoding.length - 1].to
2495
+ }
2496
+ })
2497
+
2437
2498
  function getCandidateTypes(ast: AST): ReadonlyArray<Type> {
2438
2499
  switch (ast._tag) {
2439
2500
  case "Null":
@@ -2505,63 +2566,100 @@ export function collectSentinels(ast: AST): Array<Sentinel> {
2505
2566
  return []
2506
2567
  })
2507
2568
  case "Arrays":
2508
- return ast.elements.flatMap((e, i) => {
2509
- return isLiteral(e) && !isOptional(e)
2510
- ? [{ key: i, literal: e.literal }]
2511
- : []
2569
+ return ast.elements.flatMap((e, i): Array<Sentinel> => {
2570
+ if (!isOptional(e)) {
2571
+ if (isLiteral(e)) {
2572
+ return [{ key: i, literal: e.literal }]
2573
+ }
2574
+ if (isUniqueSymbol(e)) {
2575
+ return [{ key: i, literal: e.symbol }]
2576
+ }
2577
+ }
2578
+ return []
2512
2579
  })
2513
2580
  case "Suspend":
2514
2581
  return collectSentinels(ast.thunk())
2515
2582
  }
2516
2583
  }
2517
2584
 
2518
- type CandidateIndex = {
2519
- byType?: { [K in Type]?: Array<number> }
2520
- bySentinel?: Map<PropertyKey, Map<LiteralValue | symbol, Array<number>>>
2521
- otherwise?: { [K in Type]?: Array<number> }
2522
- }
2585
+ type CandidateIndex =
2586
+ | ((input: any, isConstructor: boolean) => ReadonlyArray<AST>)
2587
+ | {
2588
+ bySentinel?: Map<PropertyKey, Map<LiteralValue | symbol, Array<number>>>
2589
+ otherwise?: { [K in Type]?: Array<number> }
2590
+ }
2523
2591
 
2524
2592
  const candidateIndexCache = new WeakMap<ReadonlyArray<AST>, CandidateIndex>()
2593
+ const emptyCandidates: ReadonlyArray<never> = Object.freeze([])
2525
2594
 
2526
2595
  function getIndex(types: ReadonlyArray<AST>): CandidateIndex {
2527
2596
  let idx = candidateIndexCache.get(types)
2528
2597
  if (idx) return idx
2529
2598
 
2530
2599
  idx = {}
2600
+ let literalCandidates: Map<LiteralValue | symbol, Array<AST>> | null | undefined
2531
2601
  for (let i = 0; i < types.length; i++) {
2532
2602
  const a = types[i]
2533
- const encoded = toEncoded(a)
2603
+ const encoded = toCandidate(a)
2534
2604
  if (isNever(encoded)) continue
2535
2605
 
2536
- const candidateTypes = getCandidateTypes(encoded)
2537
- const sentinels = collectSentinels(encoded)
2606
+ if (literalCandidates !== null) {
2607
+ if (isLiteral(encoded) || isUniqueSymbol(encoded)) {
2608
+ literalCandidates ??= new Map()
2609
+ const literal = isLiteral(encoded) ? encoded.literal : encoded.symbol
2610
+ let arr = literalCandidates.get(literal)
2611
+ if (!arr) literalCandidates.set(literal, arr = [])
2612
+ arr.push(a)
2613
+ } else {
2614
+ literalCandidates = null
2615
+ }
2616
+ }
2538
2617
 
2539
- // by-type (always filled – cheap primary filter)
2540
- idx.byType ??= {}
2541
- for (const t of candidateTypes) (idx.byType[t] ??= []).push(i)
2618
+ const sentinels = collectSentinels(encoded)
2542
2619
 
2543
- if (sentinels.length > 0) { // discriminated variants
2620
+ if (sentinels.length) { // discriminated variants
2544
2621
  idx.bySentinel ??= new Map()
2545
2622
  for (const { key, literal } of sentinels) {
2546
2623
  let m = idx.bySentinel.get(key)
2547
2624
  if (!m) idx.bySentinel.set(key, m = new Map())
2548
2625
  let arr = m.get(literal)
2549
2626
  if (!arr) m.set(literal, arr = [])
2550
- arr.push(i)
2627
+ if (arr[arr.length - 1] !== i) arr.push(i)
2551
2628
  }
2552
2629
  } else { // non-discriminated
2553
2630
  idx.otherwise ??= {}
2631
+ const candidateTypes = getCandidateTypes(encoded)
2554
2632
  for (const t of candidateTypes) (idx.otherwise[t] ??= []).push(i)
2555
2633
  }
2556
2634
  }
2557
2635
 
2636
+ if (literalCandidates) {
2637
+ literalCandidates.forEach(Object.freeze)
2638
+ idx = (input) => literalCandidates.get(input) ?? emptyCandidates
2639
+ } else if (idx.bySentinel?.size === 1 && !idx.otherwise) {
2640
+ for (const [key, byValue] of idx.bySentinel) {
2641
+ const candidates = byValue as unknown as Map<LiteralValue | symbol, ReadonlyArray<AST>>
2642
+ for (const [literal, indexes] of byValue) {
2643
+ candidates.set(literal, Object.freeze(indexes.map((index) => types[index])))
2644
+ }
2645
+ idx = (input, isConstructor) => {
2646
+ if (Predicate.isObjectKeyword(input)) {
2647
+ const value = Object.hasOwn(input, key) ? (input as any)[key] : undefined
2648
+ if (value !== undefined) return candidates.get(value) ?? emptyCandidates
2649
+ if (isConstructor) return types
2650
+ }
2651
+ return emptyCandidates
2652
+ }
2653
+ }
2654
+ }
2655
+
2558
2656
  candidateIndexCache.set(types, idx)
2559
2657
  return idx
2560
2658
  }
2561
2659
 
2562
2660
  function filterLiterals(input: any) {
2563
2661
  return (ast: AST) => {
2564
- const encoded = toEncoded(ast)
2662
+ const encoded = toCandidate(ast)
2565
2663
  return encoded._tag === "Literal" ?
2566
2664
  encoded.literal === input
2567
2665
  : encoded._tag === "UniqueSymbol" ?
@@ -2576,30 +2674,41 @@ function filterLiterals(input: any) {
2576
2674
  *
2577
2675
  * @internal
2578
2676
  */
2579
- export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyArray<AST> {
2677
+ export function getCandidates(
2678
+ input: any,
2679
+ types: ReadonlyArray<AST>,
2680
+ isConstructor = false
2681
+ ): ReadonlyArray<AST> {
2580
2682
  const idx = getIndex(types)
2683
+ if (typeof idx === "function") return idx(input, isConstructor)
2684
+
2581
2685
  const runtimeType: Type = input === null ? "null" : Array.isArray(input) ? "array" : typeof input
2582
2686
 
2583
2687
  // 1. Try sentinel-based dispatch (most selective)
2584
2688
  if (idx.bySentinel) {
2585
- const base = idx.otherwise?.[runtimeType] ?? []
2586
- if (runtimeType === "object" || runtimeType === "array") {
2689
+ const base = idx.otherwise?.[runtimeType] ?? emptyCandidates
2690
+ if (Predicate.isObjectKeyword(input)) {
2587
2691
  const selected = new Set(base)
2588
2692
  for (const [k, m] of idx.bySentinel) {
2589
- if (Object.hasOwn(input, k)) {
2590
- const match = m.get((input as any)[k])
2693
+ const value = Object.hasOwn(input, k) ? (input as any)[k] : undefined
2694
+ if (value !== undefined) {
2695
+ const match = m.get(value)
2591
2696
  if (match) {
2592
2697
  for (const candidate of match) selected.add(candidate)
2593
2698
  }
2699
+ } else if (isConstructor) {
2700
+ for (const indexes of m.values()) {
2701
+ for (const candidate of indexes) selected.add(candidate)
2702
+ }
2594
2703
  }
2595
2704
  }
2596
- return Array.from(selected).sort((a, b) => a - b).map((i) => types[i]).filter(filterLiterals(input))
2705
+ return Array.from(selected).sort((a, b) => a - b).map((i) => types[i])
2597
2706
  }
2598
2707
  return base.map((i) => types[i])
2599
2708
  }
2600
2709
 
2601
2710
  // 2. Fallback: runtime-type dispatch only
2602
- return (idx.byType?.[runtimeType] ?? []).map((i) => types[i]).filter(filterLiterals(input))
2711
+ return (idx.otherwise?.[runtimeType] ?? emptyCandidates).map((i) => types[i]).filter(filterLiterals(input))
2603
2712
  }
2604
2713
 
2605
2714
  /**
@@ -2617,15 +2726,14 @@ export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyAr
2617
2726
  *
2618
2727
  * **Example** (Inspecting a union AST)
2619
2728
  *
2620
- * ```ts
2729
+ * ```ts import.meta.vitest
2621
2730
  * import { Schema, SchemaAST } from "effect"
2622
2731
  *
2623
2732
  * const schema = Schema.Union([Schema.String, Schema.Number])
2624
2733
  * const ast = schema.ast
2625
2734
  *
2626
2735
  * if (SchemaAST.isUnion(ast)) {
2627
- * console.log(ast.types.length) // 2
2628
- * console.log(ast.mode) // "anyOf"
2736
+ * [ast.types.length, ast.mode] // => [2, "anyOf"]
2629
2737
  * }
2630
2738
  * ```
2631
2739
  *
@@ -2654,38 +2762,45 @@ export class Union<A extends AST = AST> extends Base {
2654
2762
  this.encodingChecks = encodingChecks
2655
2763
  }
2656
2764
  /** @internal */
2657
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
2765
+ getParser(
2766
+ compile: SchemaParser.Compiler,
2767
+ compileConstructorDefault?: SchemaParser.Compiler
2768
+ ): SchemaParser.Parser {
2658
2769
  // oxlint-disable-next-line @typescript-eslint/no-this-alias
2659
2770
  const ast = this
2660
2771
 
2661
- return (oinput, options) => {
2662
- if (oinput._tag === "None") {
2663
- return Effect.succeed(oinput)
2772
+ return (input, options) => {
2773
+ if (input === InternalParser.missing) {
2774
+ return InternalParser.missingExit
2775
+ }
2776
+ const candidates = getCandidates(input, ast.types, compileConstructorDefault !== undefined)
2777
+
2778
+ if (candidates.length === 1) {
2779
+ const result = compile(candidates[0])(input, options)
2780
+ if ((result as Exit.Exit<unknown, SchemaIssue.Issue>)._tag === "Success") return result
2781
+ return effectIsExit(result)
2782
+ ? failSingleUnionCandidate(ast, (result as Exit.Failure<unknown, SchemaIssue.Issue>).cause)
2783
+ : Effect.catchCause(result, (cause) => failSingleUnionCandidate(ast, cause))
2664
2784
  }
2665
- const input = oinput.value
2666
- const candidates = getCandidates(input, ast.types)
2667
2785
 
2668
2786
  const state = {
2669
2787
  ast,
2670
- recur,
2671
- oinput,
2788
+ compile,
2672
2789
  input,
2673
2790
  out: undefined,
2674
- successes: [],
2791
+ successes: ast.mode === "oneOf" ? [] : undefined,
2675
2792
  issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
2676
2793
  options
2677
2794
  }
2678
2795
  const concurrency = resolveConcurrency(options?.concurrency)
2679
2796
  const eff = parseUnion(state, candidates, concurrency ? { ...concurrency, orderedStep: true } : undefined)
2680
2797
  if (!eff) {
2681
- return state.out
2682
- ? Effect.succeed(state.out)
2683
- : Effect.fail(new SchemaIssue.AnyOf(ast, input, state.issues ?? []))
2798
+ return state.out ?? Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? []))
2684
2799
  }
2685
- return Effect.flatMap(eff, (_) => {
2686
- return state.out
2687
- ? Effect.succeed(state.out)
2688
- : Effect.fail(new SchemaIssue.AnyOf(ast, input, state.issues ?? []))
2800
+ return Effect.flatMapEager(eff, (_) => {
2801
+ return state.out === InternalParser.sameExit
2802
+ ? Effect.succeed(input)
2803
+ : state.out ?? Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? []))
2689
2804
  })
2690
2805
  }
2691
2806
  }
@@ -2750,19 +2865,28 @@ export class Union<A extends AST = AST> extends Base {
2750
2865
  }
2751
2866
  }
2752
2867
 
2868
+ function failSingleUnionCandidate(
2869
+ ast: Union,
2870
+ cause: Cause.Cause<SchemaIssue.Issue>
2871
+ ) {
2872
+ const issue = InternalSchemaCause.getSchemaIssue(cause)
2873
+ return issue
2874
+ ? Exit.fail(new SchemaIssue.AnyOf(ast, [issue]))
2875
+ : Exit.failCause(cause)
2876
+ }
2877
+
2753
2878
  const parseUnion = iterateEager<{
2754
- readonly recur: (ast: AST) => SchemaParser.Parser
2879
+ readonly compile: (ast: AST) => SchemaParser.Parser
2755
2880
  readonly ast: Union
2756
- readonly oinput: Option.Option<unknown>
2757
2881
  readonly input: unknown
2758
2882
  readonly options: ParseOptions
2759
- out: Option.Option<unknown> | undefined
2760
- successes: Array<AST>
2883
+ out: Exit.Success<unknown, SchemaIssue.Issue> | undefined
2884
+ readonly successes: Array<AST> | undefined
2761
2885
  issues: Array<SchemaIssue.Issue> | undefined
2762
2886
  }, AST>()({
2763
2887
  onItem(s, ast) {
2764
- const parser = s.recur(ast)
2765
- return parser(s.oinput, s.options)
2888
+ const parser = s.compile(ast)
2889
+ return parser(s.input, s.options)
2766
2890
  },
2767
2891
  step(s, candidate, exit) {
2768
2892
  if (exit._tag === "Failure") {
@@ -2773,13 +2897,14 @@ const parseUnion = iterateEager<{
2773
2897
  if (s.issues) s.issues.push(issue)
2774
2898
  else s.issues = [issue]
2775
2899
  } else {
2776
- if (s.out && s.ast.mode === "oneOf") {
2900
+ if (s.out && s.successes) {
2777
2901
  s.successes.push(candidate)
2778
- return Exit.fail(new SchemaIssue.OneOf(s.ast, s.input, s.successes))
2902
+ return Exit.fail(new SchemaIssue.OneOf(s.ast, s.successes))
2779
2903
  }
2780
- s.out = exit.value
2781
- s.successes.push(candidate)
2782
- if (s.ast.mode === "anyOf") {
2904
+ s.out = exit
2905
+ if (s.successes) {
2906
+ s.successes.push(candidate)
2907
+ } else {
2783
2908
  return Exit.void
2784
2909
  }
2785
2910
  }
@@ -2825,7 +2950,7 @@ export function memoizeThunk<A>(f: () => A): () => A {
2825
2950
  *
2826
2951
  * **Example** (Defining recursive schema ASTs)
2827
2952
  *
2828
- * ```ts
2953
+ * ```ts import.meta.vitest
2829
2954
  * import { Schema, SchemaAST } from "effect"
2830
2955
  *
2831
2956
  * interface Category {
@@ -2838,7 +2963,7 @@ export function memoizeThunk<A>(f: () => A): () => A {
2838
2963
  * children: Schema.Array(Schema.suspend((): Schema.Codec<Category> => Category))
2839
2964
  * })
2840
2965
  *
2841
- * // The recursive branch is a Suspend node
2966
+ * SchemaAST.isObjects(Category.ast) // => true
2842
2967
  * ```
2843
2968
  *
2844
2969
  * @see {@link isSuspend}
@@ -2856,15 +2981,16 @@ export class Suspend extends Base {
2856
2981
  encoding?: Encoding,
2857
2982
  context?: Context
2858
2983
  ) {
2859
- if (checks !== undefined) {
2984
+ if (checks) {
2860
2985
  throw new Error("Cannot add checks to Suspend")
2861
2986
  }
2862
2987
  super(annotations, undefined, encoding, context)
2863
2988
  this.thunk = memoizeThunk(thunk)
2864
2989
  }
2865
2990
  /** @internal */
2866
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
2867
- return recur(this.thunk())
2991
+ getParser(compile: SchemaParser.Compiler): SchemaParser.Parser {
2992
+ let parser: SchemaParser.Parser
2993
+ return (input, options) => (parser ??= compile(this.thunk()))(input, options)
2868
2994
  }
2869
2995
  /** @internal */
2870
2996
  recur(recur: (ast: AST) => AST) {
@@ -2999,7 +3125,7 @@ export function makeFilter<T>(
2999
3125
  aborted: boolean = false
3000
3126
  ): Filter<T> {
3001
3127
  return new Filter(
3002
- (input, ast, options) => SchemaIssue.make(input, ast, filter(input, ast, options)),
3128
+ (input, ast, options) => SchemaIssue.normalizeFilterOutput(ast, filter(input, ast, options)),
3003
3129
  annotations,
3004
3130
  aborted
3005
3131
  )
@@ -3011,7 +3137,7 @@ export function makeFilterByGuard<T extends E, E>(
3011
3137
  annotations?: Schema.Annotations.Filter
3012
3138
  ): Filter<any> {
3013
3139
  return new Filter(
3014
- (input: E) => is(input) ? undefined : new SchemaIssue.InvalidValue(Option.some(input)),
3140
+ (input: E) => is(input) ? undefined : new SchemaIssue.InvalidValue(),
3015
3141
  annotations,
3016
3142
  true // after a guard, we always want to abort
3017
3143
  )
@@ -3054,21 +3180,25 @@ export const finite = appendChecks(number, [isFinite()])
3054
3180
  * **Details**
3055
3181
  *
3056
3182
  * The filter can be used with `Schema.filter` or attached directly to a
3057
- * `String` AST node through checks. The regular expression source is stored in
3058
- * annotations for serialization and arbitrary generation.
3183
+ * `String` AST node through checks. The regular expression is cloned and its
3184
+ * `lastIndex` is reset before each test, so global and sticky expressions are
3185
+ * deterministic and the provided regular expression is not mutated. The
3186
+ * regular expression source is stored in annotations for serialization and
3187
+ * arbitrary generation.
3059
3188
  *
3060
3189
  * **Gotchas**
3061
3190
  *
3062
- * Use a non-global, non-sticky regular expression, or reset `lastIndex`
3063
- * yourself, because `RegExp.test` is stateful for expressions with the `g` or
3064
- * `y` flag.
3191
+ * When deriving an arbitrary, only `regExp.source` is used. Regular expression
3192
+ * flags are ignored because fast-check does not support them.
3065
3193
  *
3066
3194
  * **Example** (Validating an email pattern)
3067
3195
  *
3068
- * ```ts
3196
+ * ```ts import.meta.vitest
3069
3197
  * import { SchemaAST } from "effect"
3070
3198
  *
3071
3199
  * const emailFilter = SchemaAST.isPattern(/^[^@]+@[^@]+$/)
3200
+ * emailFilter.run("alice@example.com", SchemaAST.string, {}) // => undefined
3201
+ * emailFilter.run("invalid", SchemaAST.string, {})?._tag // => "InvalidValue"
3072
3202
  * ```
3073
3203
  *
3074
3204
  * @see {@link Filter}
@@ -3077,8 +3207,12 @@ export const finite = appendChecks(number, [isFinite()])
3077
3207
  */
3078
3208
  export function isPattern(regExp: globalThis.RegExp, annotations?: Schema.Annotations.Filter) {
3079
3209
  const source = regExp.source
3210
+ const pattern = new globalThis.RegExp(source, regExp.flags)
3080
3211
  return makeFilter(
3081
- (s: string) => regExp.test(s),
3212
+ (s: string) => {
3213
+ pattern.lastIndex = 0
3214
+ return pattern.test(s)
3215
+ },
3082
3216
  {
3083
3217
  expected: `a string matching the RegExp ${source}`,
3084
3218
  representation: {
@@ -3145,7 +3279,7 @@ export function annotate<A extends AST>(ast: A, annotations: Schema.Annotations.
3145
3279
 
3146
3280
  /** @internal */
3147
3281
  export function replaceChecks<A extends AST>(ast: A, checks: Checks | undefined): A {
3148
- if (ast._tag === "Suspend" && checks !== undefined) {
3282
+ if (ast._tag === "Suspend" && checks) {
3149
3283
  throw new Error("Cannot add checks to Suspend")
3150
3284
  }
3151
3285
  if (ast.checks === checks) {
@@ -3252,7 +3386,7 @@ export function annotateKey<A extends AST>(ast: A, annotations: Schema.Annotatio
3252
3386
  new Context(
3253
3387
  ast.context.isOptional,
3254
3388
  ast.context.isMutable,
3255
- ast.context.defaultValue,
3389
+ ast.context.constructorDefault,
3256
3390
  { ...ast.context.annotations, ...annotations }
3257
3391
  ) :
3258
3392
  new Context(false, false, undefined, annotations)
@@ -3278,7 +3412,7 @@ const optionalKeyLastLink = applyToLastLink(optionalKey)
3278
3412
  export function optionalKey<A extends AST>(ast: A): A {
3279
3413
  const context = ast.context ?
3280
3414
  ast.context.isOptional === false ?
3281
- new Context(true, ast.context.isMutable, ast.context.defaultValue, ast.context.annotations) :
3415
+ new Context(true, ast.context.isMutable, ast.context.constructorDefault, ast.context.annotations) :
3282
3416
  ast.context :
3283
3417
  new Context(true, false)
3284
3418
  return optionalKeyLastLink(replaceContext(ast, context))
@@ -3290,7 +3424,7 @@ const mutableKeyLastLink = applyToLastLink(mutableKey)
3290
3424
  export function mutableKey<A extends AST>(ast: A): A {
3291
3425
  const context = ast.context ?
3292
3426
  ast.context.isMutable === false ?
3293
- new Context(ast.context.isOptional, true, ast.context.defaultValue, ast.context.annotations) :
3427
+ new Context(ast.context.isOptional, true, ast.context.constructorDefault, ast.context.annotations) :
3294
3428
  ast.context :
3295
3429
  new Context(false, true)
3296
3430
  return mutableKeyLastLink(replaceContext(ast, context))
@@ -3305,10 +3439,10 @@ export function withConstructorDefault<A extends AST>(
3305
3439
  SchemaGetter.withDefault(defaultValue),
3306
3440
  SchemaGetter.passthrough()
3307
3441
  )
3308
- const encoding: Encoding = [new Link(unknown, transformation)]
3442
+ const constructorDefault = new Link(unknown, transformation)
3309
3443
  const context = ast.context ?
3310
- new Context(ast.context.isOptional, ast.context.isMutable, encoding, ast.context.annotations) :
3311
- new Context(false, false, encoding)
3444
+ new Context(ast.context.isOptional, ast.context.isMutable, constructorDefault, ast.context.annotations) :
3445
+ new Context(false, false, constructorDefault)
3312
3446
  return replaceContext(ast, context)
3313
3447
  }
3314
3448
 
@@ -3370,11 +3504,11 @@ function parseParameter(ast: AST): {
3370
3504
  }
3371
3505
 
3372
3506
  /** @internal */
3373
- export function record(key: AST, value: AST, keyValueCombiner: KeyValueCombiner | undefined): Objects {
3507
+ export function record(key: AST, value: AST): Objects {
3374
3508
  const { literals, parameters: indexSignatures } = parseParameter(key)
3375
3509
  return new Objects(
3376
3510
  literals.map((literal) => new PropertySignature(literal, value)),
3377
- indexSignatures.map((parameter) => new IndexSignature(parameter, value, keyValueCombiner))
3511
+ indexSignatures.map((parameter) => new IndexSignature(parameter, value))
3378
3512
  )
3379
3513
  }
3380
3514
 
@@ -3430,12 +3564,12 @@ function extractStructuralChecks(checks: Checks): Checks | undefined {
3430
3564
  *
3431
3565
  * **Example** (Getting the type AST)
3432
3566
  *
3433
- * ```ts
3567
+ * ```ts import.meta.vitest
3434
3568
  * import { Schema, SchemaAST } from "effect"
3435
3569
  *
3436
3570
  * const schema = Schema.NumberFromString
3437
3571
  * const typeAst = SchemaAST.toType(schema.ast)
3438
- * console.log(typeAst._tag) // "Number"
3572
+ * typeAst._tag // => "Number"
3439
3573
  * ```
3440
3574
  *
3441
3575
  * @see {@link toEncoded}
@@ -3477,12 +3611,12 @@ export const toType = memoize(<A extends AST>(ast: A): A => {
3477
3611
  *
3478
3612
  * **Example** (Getting the encoded AST)
3479
3613
  *
3480
- * ```ts
3614
+ * ```ts import.meta.vitest
3481
3615
  * import { Schema, SchemaAST } from "effect"
3482
3616
  *
3483
3617
  * const schema = Schema.NumberFromString
3484
3618
  * const encodedAst = SchemaAST.toEncoded(schema.ast)
3485
- * console.log(encodedAst._tag) // "String"
3619
+ * encodedAst._tag // => "String"
3486
3620
  * ```
3487
3621
  *
3488
3622
  * @see {@link toType}
@@ -3553,63 +3687,50 @@ function fromConst<const T>(
3553
3687
  ast: AST,
3554
3688
  value: T
3555
3689
  ): SchemaParser.Parser {
3556
- const succeed = Effect.succeedSome(value)
3557
- return (oinput) => {
3558
- if (oinput._tag === "None") {
3559
- return Effect.succeedNone
3560
- }
3561
- return oinput.value === value
3690
+ const succeed = InternalParser.succeed(value)
3691
+ return (input) => {
3692
+ if (input === InternalParser.missing) return InternalParser.missingExit
3693
+ return input === value
3562
3694
  ? succeed
3563
- : Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
3695
+ : Effect.fail(
3696
+ new SchemaIssue.InvalidType(ast)
3697
+ )
3564
3698
  }
3565
3699
  }
3566
3700
 
3567
- function fromAnyToConst<const T>(value: T): SchemaParser.Parser {
3568
- const succeed = Effect.succeedSome(value)
3569
- return (oinput) => oinput._tag === "None" ? Effect.succeedNone : succeed
3570
- }
3571
-
3572
3701
  function fromRefinement<T>(
3573
3702
  ast: AST,
3574
3703
  refinement: (input: unknown) => input is T
3575
3704
  ): SchemaParser.Parser {
3576
- return (oinput) => {
3577
- if (oinput._tag === "None") {
3578
- return Effect.succeedNone
3579
- }
3580
- return refinement(oinput.value)
3581
- ? Effect.succeed(oinput)
3582
- : Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
3705
+ return (input) => {
3706
+ if (input === InternalParser.missing) return InternalParser.missingExit
3707
+ return refinement(input)
3708
+ ? InternalParser.sameExit
3709
+ : Effect.fail(
3710
+ new SchemaIssue.InvalidType(ast)
3711
+ )
3583
3712
  }
3584
3713
  }
3585
3714
 
3586
- function applyTemplateLiteralPartChecks<A>(ast: AST, value: A, options: ParseOptions): A | undefined {
3587
- if (options?.disableChecks || ast.checks === undefined) return value
3588
- const issues: Array<SchemaIssue.Issue> = []
3589
- collectIssues(ast.checks, value, issues, ast, options)
3590
- return issues.length === 0 ? value : undefined
3591
- }
3592
-
3593
3715
  function segmentTemplateLiteralParts(
3594
- parts: ReadonlyArray<TemplateLiteralPart>,
3716
+ ast: TemplateLiteral,
3595
3717
  input: string,
3596
3718
  options: ParseOptions
3597
3719
  ): Array<string> | undefined {
3598
- const literals = parts.map((part) => part._tag === "Literal" ? globalThis.String(part.literal) : undefined)
3599
- if (literals.some((literal) => literal !== undefined && !input.includes(literal))) return undefined
3600
-
3601
- const minimumLengths = new Array<number>(parts.length + 1)
3602
- minimumLengths[parts.length] = 0
3603
- for (let i = parts.length - 1; i >= 0; i--) {
3604
- minimumLengths[i] = minimumLengths[i + 1] + (literals[i]?.length ?? 0)
3720
+ const parts = ast.encodedParts
3721
+ const literals = ast.literals
3722
+ const inputLength = input.length
3723
+ for (let i = 0; i < literals.length; i++) {
3724
+ const literal = literals[i]
3725
+ if (literal && !input.includes(literal)) return undefined
3605
3726
  }
3606
- if (minimumLengths[0] > input.length) return undefined
3727
+ if (ast.suffixLengths[0] > inputLength) return undefined
3607
3728
 
3608
3729
  const out = new Array<string>(parts.length)
3609
- const failures = parts.map(() => new Set<number>())
3730
+ let failures: Set<number> | undefined
3610
3731
  function go(i: number, pos: number): boolean {
3611
- if (i === parts.length) return pos === input.length
3612
- if (failures[i].has(pos)) return false
3732
+ if (i === parts.length) return pos === inputLength
3733
+ if (failures?.has(i * (inputLength + 1) + pos)) return false
3613
3734
  const part = parts[i]
3614
3735
  if (i === parts.length - 1) {
3615
3736
  const s = input.slice(pos)
@@ -3624,7 +3745,7 @@ function segmentTemplateLiteralParts(
3624
3745
  return true
3625
3746
  }
3626
3747
  } else {
3627
- const maximumEnd = input.length - minimumLengths[i + 1]
3748
+ const maximumEnd = inputLength - ast.suffixLengths[i + 1]
3628
3749
  // Splits preceding a literal only need to consider occurrences of that literal.
3629
3750
  const anchor = literals[i + 1]
3630
3751
  let end = anchor === undefined ? maximumEnd : input.lastIndexOf(anchor, maximumEnd)
@@ -3638,7 +3759,8 @@ function segmentTemplateLiteralParts(
3638
3759
  end = anchor === undefined ? end - 1 : input.lastIndexOf(anchor, end - 1)
3639
3760
  }
3640
3761
  }
3641
- failures[i].add(pos)
3762
+ failures ??= new Set()
3763
+ failures.add(i * (inputLength + 1) + pos)
3642
3764
  return false
3643
3765
  }
3644
3766
  return go(0, 0) ? out : undefined
@@ -3780,7 +3902,7 @@ const symbolToString = new Link(
3780
3902
  return Effect.succeed(globalThis.String(sym))
3781
3903
  }
3782
3904
  return Effect.fail(
3783
- new SchemaIssue.Forbidden(Option.some(sym), { message: "cannot serialize to string, Symbol is not registered" })
3905
+ new SchemaIssue.Forbidden({ message: "cannot serialize to string, Symbol is not registered" })
3784
3906
  )
3785
3907
  })
3786
3908
  )
@@ -3806,24 +3928,33 @@ export function isStringSymbol(annotations?: Schema.Annotations.Filter) {
3806
3928
  export function collectIssues<T>(
3807
3929
  checks: ReadonlyArray<Check<T>>,
3808
3930
  value: T,
3809
- issues: Array<SchemaIssue.Issue>,
3931
+ issues: Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
3810
3932
  ast: AST,
3811
3933
  options: ParseOptions
3812
- ) {
3934
+ ): Arr.NonEmptyArray<SchemaIssue.Issue> | undefined {
3813
3935
  for (let i = 0; i < checks.length; i++) {
3814
3936
  const check = checks[i]
3815
3937
  if (check._tag === "FilterGroup") {
3816
- collectIssues(check.checks, value, issues, ast, options)
3938
+ issues = collectIssues(check.checks, value, issues, ast, options)
3939
+ if (
3940
+ issues &&
3941
+ (options.errors !== "all" || (issues[issues.length - 1] as SchemaIssue.Filter).filter.aborted)
3942
+ ) {
3943
+ return issues
3944
+ }
3817
3945
  } else {
3818
3946
  const issue = check.run(value, ast, options)
3819
3947
  if (issue) {
3820
- issues.push(new SchemaIssue.Filter(value, check, issue))
3821
- if (check.aborted || options?.errors !== "all") {
3822
- return
3948
+ const filter = new SchemaIssue.Filter(check, issue)
3949
+ if (issues) issues.push(filter)
3950
+ else issues = [filter]
3951
+ if (options.errors !== "all" || check.aborted) {
3952
+ return issues
3823
3953
  }
3824
3954
  }
3825
3955
  }
3826
3956
  }
3957
+ return issues
3827
3958
  }
3828
3959
 
3829
3960
  /** @internal */
@@ -3831,17 +3962,26 @@ export function runChecks<T>(
3831
3962
  checks: readonly [Check<T>, ...Array<Check<T>>],
3832
3963
  s: T
3833
3964
  ): Result.Result<T, SchemaIssue.Issue> {
3834
- const issues: Array<SchemaIssue.Issue> = []
3835
- collectIssues(checks, s, issues, unknown, { errors: "all" })
3836
- if (Arr.isArrayNonEmpty(issues)) {
3837
- const issue = new SchemaIssue.Composite(unknown, Option.some(s), issues)
3965
+ const issues = collectIssues(checks, s, undefined, unknown, { errors: "all" })
3966
+ if (issues) {
3967
+ const issue = new SchemaIssue.Composite(unknown, issues)
3838
3968
  return Result.fail(issue)
3839
3969
  }
3840
3970
  return Result.succeed(s)
3841
3971
  }
3842
3972
 
3843
3973
  /** @internal */
3844
- export const ClassTypeId = "~effect/Schema/Class"
3974
+ export interface ConstructorDescriptor {
3975
+ readonly isConstructed: Predicate.Predicate<unknown>
3976
+ readonly link: Link
3977
+ }
3978
+
3979
+ /** @internal */
3980
+ export function getConstructorDescriptor(ast: AST): ConstructorDescriptor | undefined {
3981
+ if (!isDeclaration(ast)) return undefined
3982
+ const getDescriptor = ast.annotations?.[InternalAnnotations.CONSTRUCTOR_ANNOTATION_KEY]
3983
+ return Predicate.isFunction(getDescriptor) ? getDescriptor(ast.typeParameters) : undefined
3984
+ }
3845
3985
 
3846
3986
  /**
3847
3987
  * Returns all annotations from the AST node.
@@ -3854,12 +3994,12 @@ export const ClassTypeId = "~effect/Schema/Class"
3854
3994
  *
3855
3995
  * **Example** (Reading annotations)
3856
3996
  *
3857
- * ```ts
3997
+ * ```ts import.meta.vitest
3858
3998
  * import { Schema, SchemaAST } from "effect"
3859
3999
  *
3860
4000
  * const schema = Schema.String.annotate({ title: "Name" })
3861
4001
  * const annotations = SchemaAST.resolve(schema.ast)
3862
- * console.log(annotations?.title) // "Name"
4002
+ * annotations?.title // => "Name"
3863
4003
  * ```
3864
4004
  *
3865
4005
  * @see {@link resolveAt}
@@ -4016,8 +4156,8 @@ export const Json = new Declaration(
4016
4156
  [],
4017
4157
  () => (input, ast) =>
4018
4158
  isJson(input) ?
4019
- Effect.succeed(input) :
4020
- Effect.fail(new SchemaIssue.InvalidType(ast, Option.some(input))),
4159
+ InternalParser.sameExit :
4160
+ Effect.fail(new SchemaIssue.InvalidType(ast)),
4021
4161
  {
4022
4162
  representation: {
4023
4163
  id: "effect/schema/Json",
@@ -4048,7 +4188,7 @@ export const unknownToJson = new Link(
4048
4188
  export const objectKeywordToJson = new Link(
4049
4189
  new Union([
4050
4190
  new Arrays(false, [], [Json]),
4051
- new Objects([], [new IndexSignature(string, Json, undefined)])
4191
+ new Objects([], [new IndexSignature(string, Json)])
4052
4192
  ], "anyOf"),
4053
4193
  SchemaTransformation.passthrough()
4054
4194
  )
@@ -4068,8 +4208,8 @@ const StringTree = new Declaration(
4068
4208
  [],
4069
4209
  () => (input, ast) =>
4070
4210
  isStringTree(input) ?
4071
- Effect.succeed(input) :
4072
- Effect.fail(new SchemaIssue.InvalidType(ast, Option.some(input))),
4211
+ InternalParser.sameExit :
4212
+ Effect.fail(new SchemaIssue.InvalidType(ast)),
4073
4213
  { expected: "StringTree", toCodecStringTree: () => undefined }
4074
4214
  )
4075
4215