effect 4.0.0-beta.99 → 4.0.0-rc.108

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 (1835) hide show
  1. package/AGENTS.md +381 -0
  2. package/CLAUDE.md +381 -0
  3. package/README.md +14 -19
  4. package/ai-docs/README.md +44 -0
  5. package/ai-docs/package.json +36 -0
  6. package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
  7. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
  8. package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
  9. package/ai-docs/src/01_effect/01_basics/index.md +5 -0
  10. package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
  11. package/ai-docs/src/01_effect/02_schema/index.md +7 -0
  12. package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
  13. package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
  14. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
  15. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
  16. package/ai-docs/src/01_effect/03_services/index.md +5 -0
  17. package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
  18. package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
  19. package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
  20. package/ai-docs/src/01_effect/04_errors/index.md +1 -0
  21. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
  22. package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
  23. package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
  24. package/ai-docs/src/01_effect/05_resources/index.md +3 -0
  25. package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
  26. package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
  27. package/ai-docs/src/01_effect/06_running/index.md +1 -0
  28. package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
  29. package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
  30. package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
  31. package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
  32. package/ai-docs/src/03_stream/30_encoding.ts +165 -0
  33. package/ai-docs/src/03_stream/index.md +4 -0
  34. package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
  35. package/ai-docs/src/04_integration/index.md +5 -0
  36. package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
  37. package/ai-docs/src/05_batching/index.md +3 -0
  38. package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
  39. package/ai-docs/src/06_schedule/index.md +3 -0
  40. package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
  41. package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
  42. package/ai-docs/src/07_datetime/index.md +5 -0
  43. package/ai-docs/src/08_observability/10_logging.ts +66 -0
  44. package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
  45. package/ai-docs/src/08_observability/index.md +7 -0
  46. package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
  47. package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
  48. package/ai-docs/src/09_testing/index.md +1 -0
  49. package/ai-docs/src/10_predicate/01_basics.ts +14 -0
  50. package/ai-docs/src/10_predicate/index.md +9 -0
  51. package/ai-docs/src/50_http-client/10_basics.ts +102 -0
  52. package/ai-docs/src/50_http-client/index.md +3 -0
  53. package/ai-docs/src/51_http-server/10_basics.ts +116 -0
  54. package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  55. package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  56. package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  57. package/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
  58. package/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
  59. package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  60. package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
  61. package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
  62. package/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
  63. package/ai-docs/src/51_http-server/index.md +3 -0
  64. package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  65. package/ai-docs/src/60_child-process/index.md +3 -0
  66. package/ai-docs/src/70_cli/10_basics.ts +136 -0
  67. package/ai-docs/src/70_cli/index.md +5 -0
  68. package/ai-docs/src/71_ai/10_language-model.ts +156 -0
  69. package/ai-docs/src/71_ai/20_tools.ts +226 -0
  70. package/ai-docs/src/71_ai/30_chat.ts +158 -0
  71. package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  72. package/ai-docs/src/71_ai/index.md +5 -0
  73. package/ai-docs/src/80_cluster/10_entities.ts +97 -0
  74. package/ai-docs/src/80_cluster/index.md +4 -0
  75. package/ai-docs/src/index.md +10 -0
  76. package/ai-docs/tsconfig.json +24 -0
  77. package/dist/Array.d.ts +971 -1037
  78. package/dist/Array.d.ts.map +1 -1
  79. package/dist/Array.js +462 -412
  80. package/dist/Array.js.map +1 -1
  81. package/dist/BigDecimal.d.ts +433 -756
  82. package/dist/BigDecimal.d.ts.map +1 -1
  83. package/dist/BigDecimal.js +200 -325
  84. package/dist/BigDecimal.js.map +1 -1
  85. package/dist/BigInt.d.ts +207 -267
  86. package/dist/BigInt.d.ts.map +1 -1
  87. package/dist/BigInt.js +107 -135
  88. package/dist/BigInt.js.map +1 -1
  89. package/dist/Boolean.d.ts +146 -188
  90. package/dist/Boolean.d.ts.map +1 -1
  91. package/dist/Boolean.js +64 -84
  92. package/dist/Boolean.js.map +1 -1
  93. package/dist/Brand.d.ts +3 -3
  94. package/dist/Brand.d.ts.map +1 -1
  95. package/dist/Brand.js +4 -3
  96. package/dist/Brand.js.map +1 -1
  97. package/dist/Cache.d.ts +409 -256
  98. package/dist/Cache.d.ts.map +1 -1
  99. package/dist/Cache.js +213 -134
  100. package/dist/Cache.js.map +1 -1
  101. package/dist/Cause.d.ts +167 -277
  102. package/dist/Cause.d.ts.map +1 -1
  103. package/dist/Cause.js +122 -176
  104. package/dist/Cause.js.map +1 -1
  105. package/dist/Channel.d.ts +756 -769
  106. package/dist/Channel.d.ts.map +1 -1
  107. package/dist/Channel.js +588 -449
  108. package/dist/Channel.js.map +1 -1
  109. package/dist/ChannelSchema.d.ts +1 -1
  110. package/dist/ChannelSchema.d.ts.map +1 -1
  111. package/dist/ChannelSchema.js.map +1 -1
  112. package/dist/Chunk.d.ts +834 -1173
  113. package/dist/Chunk.d.ts.map +1 -1
  114. package/dist/Chunk.js +326 -439
  115. package/dist/Chunk.js.map +1 -1
  116. package/dist/Clock.d.ts +180 -49
  117. package/dist/Clock.d.ts.map +1 -1
  118. package/dist/Clock.js +96 -31
  119. package/dist/Clock.js.map +1 -1
  120. package/dist/Combiner.d.ts +20 -33
  121. package/dist/Combiner.d.ts.map +1 -1
  122. package/dist/Combiner.js +18 -30
  123. package/dist/Combiner.js.map +1 -1
  124. package/dist/Config.d.ts +226 -174
  125. package/dist/Config.d.ts.map +1 -1
  126. package/dist/Config.js +361 -267
  127. package/dist/Config.js.map +1 -1
  128. package/dist/ConfigProvider.d.ts +229 -71
  129. package/dist/ConfigProvider.d.ts.map +1 -1
  130. package/dist/ConfigProvider.js +164 -95
  131. package/dist/ConfigProvider.js.map +1 -1
  132. package/dist/Console.d.ts +233 -33
  133. package/dist/Console.d.ts.map +1 -1
  134. package/dist/Console.js +232 -32
  135. package/dist/Console.js.map +1 -1
  136. package/dist/Context.d.ts +153 -277
  137. package/dist/Context.d.ts.map +1 -1
  138. package/dist/Context.js +172 -236
  139. package/dist/Context.js.map +1 -1
  140. package/dist/Cron.d.ts +144 -176
  141. package/dist/Cron.d.ts.map +1 -1
  142. package/dist/Cron.js +227 -162
  143. package/dist/Cron.js.map +1 -1
  144. package/dist/Crypto.d.ts +13 -15
  145. package/dist/Crypto.d.ts.map +1 -1
  146. package/dist/Crypto.js +22 -15
  147. package/dist/Crypto.js.map +1 -1
  148. package/dist/Data.d.ts +60 -80
  149. package/dist/Data.d.ts.map +1 -1
  150. package/dist/Data.js +18 -24
  151. package/dist/Data.js.map +1 -1
  152. package/dist/DateTime.d.ts +562 -660
  153. package/dist/DateTime.d.ts.map +1 -1
  154. package/dist/DateTime.js +307 -362
  155. package/dist/DateTime.js.map +1 -1
  156. package/dist/Deferred.d.ts +253 -256
  157. package/dist/Deferred.d.ts.map +1 -1
  158. package/dist/Deferred.js +110 -98
  159. package/dist/Deferred.js.map +1 -1
  160. package/dist/Duration.d.ts +216 -308
  161. package/dist/Duration.d.ts.map +1 -1
  162. package/dist/Duration.js +157 -188
  163. package/dist/Duration.js.map +1 -1
  164. package/dist/Effect.d.ts +3142 -3345
  165. package/dist/Effect.d.ts.map +1 -1
  166. package/dist/Effect.js +1452 -1570
  167. package/dist/Effect.js.map +1 -1
  168. package/dist/Effectable.js.map +1 -1
  169. package/dist/Encoding.d.ts +22 -40
  170. package/dist/Encoding.d.ts.map +1 -1
  171. package/dist/Encoding.js +22 -40
  172. package/dist/Encoding.js.map +1 -1
  173. package/dist/Equal.d.ts +33 -37
  174. package/dist/Equal.d.ts.map +1 -1
  175. package/dist/Equal.js +39 -23
  176. package/dist/Equal.js.map +1 -1
  177. package/dist/Equivalence.d.ts +103 -105
  178. package/dist/Equivalence.d.ts.map +1 -1
  179. package/dist/Equivalence.js +77 -79
  180. package/dist/Equivalence.js.map +1 -1
  181. package/dist/ErrorReporter.d.ts +51 -27
  182. package/dist/ErrorReporter.d.ts.map +1 -1
  183. package/dist/ErrorReporter.js +50 -26
  184. package/dist/ErrorReporter.js.map +1 -1
  185. package/dist/ExecutionPlan.d.ts +86 -55
  186. package/dist/ExecutionPlan.d.ts.map +1 -1
  187. package/dist/ExecutionPlan.js +8 -29
  188. package/dist/ExecutionPlan.js.map +1 -1
  189. package/dist/Exit.d.ts +116 -192
  190. package/dist/Exit.d.ts.map +1 -1
  191. package/dist/Exit.js +82 -130
  192. package/dist/Exit.js.map +1 -1
  193. package/dist/Fiber.d.ts +83 -147
  194. package/dist/Fiber.d.ts.map +1 -1
  195. package/dist/Fiber.js +48 -87
  196. package/dist/Fiber.js.map +1 -1
  197. package/dist/FiberHandle.d.ts +152 -105
  198. package/dist/FiberHandle.d.ts.map +1 -1
  199. package/dist/FiberHandle.js +109 -75
  200. package/dist/FiberHandle.js.map +1 -1
  201. package/dist/FiberMap.d.ts +213 -168
  202. package/dist/FiberMap.d.ts.map +1 -1
  203. package/dist/FiberMap.js +114 -89
  204. package/dist/FiberMap.js.map +1 -1
  205. package/dist/FiberSet.d.ts +123 -81
  206. package/dist/FiberSet.d.ts.map +1 -1
  207. package/dist/FiberSet.js +86 -60
  208. package/dist/FiberSet.js.map +1 -1
  209. package/dist/FileSystem.d.ts +154 -265
  210. package/dist/FileSystem.d.ts.map +1 -1
  211. package/dist/FileSystem.js +42 -147
  212. package/dist/FileSystem.js.map +1 -1
  213. package/dist/Filter.d.ts +61 -33
  214. package/dist/Filter.d.ts.map +1 -1
  215. package/dist/Filter.js +26 -15
  216. package/dist/Filter.js.map +1 -1
  217. package/dist/Formatter.d.ts +24 -32
  218. package/dist/Formatter.d.ts.map +1 -1
  219. package/dist/Formatter.js +55 -60
  220. package/dist/Formatter.js.map +1 -1
  221. package/dist/Function.d.ts +106 -148
  222. package/dist/Function.d.ts.map +1 -1
  223. package/dist/Function.js +81 -62
  224. package/dist/Function.js.map +1 -1
  225. package/dist/Graph.d.ts +360 -714
  226. package/dist/Graph.d.ts.map +1 -1
  227. package/dist/Graph.js +168 -297
  228. package/dist/Graph.js.map +1 -1
  229. package/dist/HKT.d.ts +12 -6
  230. package/dist/HKT.d.ts.map +1 -1
  231. package/dist/Hash.d.ts +47 -83
  232. package/dist/Hash.d.ts.map +1 -1
  233. package/dist/Hash.js +46 -68
  234. package/dist/Hash.js.map +1 -1
  235. package/dist/HashMap.d.ts +319 -411
  236. package/dist/HashMap.d.ts.map +1 -1
  237. package/dist/HashMap.js +122 -166
  238. package/dist/HashMap.js.map +1 -1
  239. package/dist/HashRing.d.ts.map +1 -1
  240. package/dist/HashRing.js +1 -0
  241. package/dist/HashRing.js.map +1 -1
  242. package/dist/HashSet.d.ts +177 -284
  243. package/dist/HashSet.d.ts.map +1 -1
  244. package/dist/HashSet.js +68 -109
  245. package/dist/HashSet.js.map +1 -1
  246. package/dist/Inspectable.d.ts +19 -18
  247. package/dist/Inspectable.d.ts.map +1 -1
  248. package/dist/Inspectable.js +20 -16
  249. package/dist/Inspectable.js.map +1 -1
  250. package/dist/Iterable.d.ts +620 -786
  251. package/dist/Iterable.d.ts.map +1 -1
  252. package/dist/Iterable.js +241 -317
  253. package/dist/Iterable.js.map +1 -1
  254. package/dist/JsonPatch.d.ts +11 -13
  255. package/dist/JsonPatch.d.ts.map +1 -1
  256. package/dist/JsonPatch.js +46 -103
  257. package/dist/JsonPatch.js.map +1 -1
  258. package/dist/JsonPointer.d.ts +8 -8
  259. package/dist/JsonPointer.js +8 -8
  260. package/dist/JsonPointer.js.map +1 -1
  261. package/dist/JsonSchema.d.ts +98 -44
  262. package/dist/JsonSchema.d.ts.map +1 -1
  263. package/dist/JsonSchema.js +319 -241
  264. package/dist/JsonSchema.js.map +1 -1
  265. package/dist/Latch.d.ts +23 -35
  266. package/dist/Latch.d.ts.map +1 -1
  267. package/dist/Latch.js +16 -28
  268. package/dist/Latch.js.map +1 -1
  269. package/dist/Layer.d.ts +359 -260
  270. package/dist/Layer.d.ts.map +1 -1
  271. package/dist/Layer.js +202 -180
  272. package/dist/Layer.js.map +1 -1
  273. package/dist/LayerMap.d.ts +42 -29
  274. package/dist/LayerMap.d.ts.map +1 -1
  275. package/dist/LayerMap.js +31 -21
  276. package/dist/LayerMap.js.map +1 -1
  277. package/dist/LayerRef.d.ts +6 -2
  278. package/dist/LayerRef.d.ts.map +1 -1
  279. package/dist/LayerRef.js +6 -2
  280. package/dist/LayerRef.js.map +1 -1
  281. package/dist/LogLevel.d.ts +114 -214
  282. package/dist/LogLevel.d.ts.map +1 -1
  283. package/dist/LogLevel.js +41 -76
  284. package/dist/LogLevel.js.map +1 -1
  285. package/dist/Logger.d.ts +218 -467
  286. package/dist/Logger.d.ts.map +1 -1
  287. package/dist/Logger.js +208 -453
  288. package/dist/Logger.js.map +1 -1
  289. package/dist/ManagedRuntime.d.ts +16 -5
  290. package/dist/ManagedRuntime.d.ts.map +1 -1
  291. package/dist/ManagedRuntime.js +10 -5
  292. package/dist/ManagedRuntime.js.map +1 -1
  293. package/dist/Match.d.ts +217 -252
  294. package/dist/Match.d.ts.map +1 -1
  295. package/dist/Match.js +150 -183
  296. package/dist/Match.js.map +1 -1
  297. package/dist/Metric.d.ts +442 -993
  298. package/dist/Metric.d.ts.map +1 -1
  299. package/dist/Metric.js +202 -645
  300. package/dist/Metric.js.map +1 -1
  301. package/dist/MutableHashMap.d.ts +144 -173
  302. package/dist/MutableHashMap.d.ts.map +1 -1
  303. package/dist/MutableHashMap.js +68 -79
  304. package/dist/MutableHashMap.js.map +1 -1
  305. package/dist/MutableHashSet.d.ts +84 -89
  306. package/dist/MutableHashSet.d.ts.map +1 -1
  307. package/dist/MutableHashSet.js +44 -47
  308. package/dist/MutableHashSet.js.map +1 -1
  309. package/dist/MutableList.d.ts +71 -370
  310. package/dist/MutableList.d.ts.map +1 -1
  311. package/dist/MutableList.js +63 -284
  312. package/dist/MutableList.js.map +1 -1
  313. package/dist/MutableRef.d.ts +420 -243
  314. package/dist/MutableRef.d.ts.map +1 -1
  315. package/dist/MutableRef.js +209 -120
  316. package/dist/MutableRef.js.map +1 -1
  317. package/dist/Newtype.d.ts +21 -14
  318. package/dist/Newtype.d.ts.map +1 -1
  319. package/dist/Newtype.js +15 -13
  320. package/dist/Newtype.js.map +1 -1
  321. package/dist/NonEmptyIterable.d.ts +7 -137
  322. package/dist/NonEmptyIterable.d.ts.map +1 -1
  323. package/dist/NonEmptyIterable.js +5 -93
  324. package/dist/NonEmptyIterable.js.map +1 -1
  325. package/dist/Number.d.ts +196 -233
  326. package/dist/Number.d.ts.map +1 -1
  327. package/dist/Number.js +90 -109
  328. package/dist/Number.js.map +1 -1
  329. package/dist/Optic.d.ts +132 -210
  330. package/dist/Optic.d.ts.map +1 -1
  331. package/dist/Optic.js +221 -324
  332. package/dist/Optic.js.map +1 -1
  333. package/dist/Option.d.ts +447 -812
  334. package/dist/Option.d.ts.map +1 -1
  335. package/dist/Option.js +213 -393
  336. package/dist/Option.js.map +1 -1
  337. package/dist/Order.d.ts +109 -109
  338. package/dist/Order.js +91 -91
  339. package/dist/Order.js.map +1 -1
  340. package/dist/Ordering.d.ts +20 -23
  341. package/dist/Ordering.d.ts.map +1 -1
  342. package/dist/Ordering.js +8 -9
  343. package/dist/Ordering.js.map +1 -1
  344. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  345. package/dist/PartitionedSemaphore.js +1 -4
  346. package/dist/PartitionedSemaphore.js.map +1 -1
  347. package/dist/Path.d.ts +38 -41
  348. package/dist/Path.d.ts.map +1 -1
  349. package/dist/Path.js +3 -4
  350. package/dist/Path.js.map +1 -1
  351. package/dist/Pipeable.d.ts +6 -5
  352. package/dist/Pipeable.d.ts.map +1 -1
  353. package/dist/Pipeable.js +2 -2
  354. package/dist/Pipeable.js.map +1 -1
  355. package/dist/PlatformError.d.ts +4 -4
  356. package/dist/PlatformError.js +3 -3
  357. package/dist/PlatformError.js.map +1 -1
  358. package/dist/Pool.d.ts +4 -2
  359. package/dist/Pool.d.ts.map +1 -1
  360. package/dist/Pool.js +4 -2
  361. package/dist/Pool.js.map +1 -1
  362. package/dist/Predicate.d.ts +200 -181
  363. package/dist/Predicate.d.ts.map +1 -1
  364. package/dist/Predicate.js +100 -108
  365. package/dist/Predicate.js.map +1 -1
  366. package/dist/PrimaryKey.d.ts +7 -7
  367. package/dist/PrimaryKey.js +5 -5
  368. package/dist/PrimaryKey.js.map +1 -1
  369. package/dist/PubSub.d.ts +425 -494
  370. package/dist/PubSub.d.ts.map +1 -1
  371. package/dist/PubSub.js +373 -362
  372. package/dist/PubSub.js.map +1 -1
  373. package/dist/Pull.d.ts +24 -18
  374. package/dist/Pull.d.ts.map +1 -1
  375. package/dist/Pull.js +11 -9
  376. package/dist/Pull.js.map +1 -1
  377. package/dist/Queue.d.ts +200 -159
  378. package/dist/Queue.d.ts.map +1 -1
  379. package/dist/Queue.js +166 -138
  380. package/dist/Queue.js.map +1 -1
  381. package/dist/Random.d.ts +49 -74
  382. package/dist/Random.d.ts.map +1 -1
  383. package/dist/Random.js +35 -54
  384. package/dist/Random.js.map +1 -1
  385. package/dist/RcMap.d.ts +121 -63
  386. package/dist/RcMap.d.ts.map +1 -1
  387. package/dist/RcMap.js +42 -21
  388. package/dist/RcMap.js.map +1 -1
  389. package/dist/RcRef.d.ts +24 -13
  390. package/dist/RcRef.d.ts.map +1 -1
  391. package/dist/RcRef.js +15 -9
  392. package/dist/RcRef.js.map +1 -1
  393. package/dist/Record.d.ts +361 -466
  394. package/dist/Record.d.ts.map +1 -1
  395. package/dist/Record.js +163 -216
  396. package/dist/Record.js.map +1 -1
  397. package/dist/Redactable.d.ts +6 -2
  398. package/dist/Redactable.d.ts.map +1 -1
  399. package/dist/Redactable.js +7 -2
  400. package/dist/Redactable.js.map +1 -1
  401. package/dist/Redacted.d.ts +25 -25
  402. package/dist/Redacted.d.ts.map +1 -1
  403. package/dist/Redacted.js +19 -20
  404. package/dist/Redacted.js.map +1 -1
  405. package/dist/Reducer.d.ts +8 -15
  406. package/dist/Reducer.d.ts.map +1 -1
  407. package/dist/Reducer.js +6 -12
  408. package/dist/Reducer.js.map +1 -1
  409. package/dist/Ref.d.ts +95 -165
  410. package/dist/Ref.d.ts.map +1 -1
  411. package/dist/Ref.js +75 -122
  412. package/dist/Ref.js.map +1 -1
  413. package/dist/References.d.ts +102 -213
  414. package/dist/References.d.ts.map +1 -1
  415. package/dist/References.js +102 -213
  416. package/dist/References.js.map +1 -1
  417. package/dist/RegExp.d.ts +10 -14
  418. package/dist/RegExp.d.ts.map +1 -1
  419. package/dist/RegExp.js +10 -14
  420. package/dist/RegExp.js.map +1 -1
  421. package/dist/Request.d.ts +31 -21
  422. package/dist/Request.d.ts.map +1 -1
  423. package/dist/Request.js +25 -19
  424. package/dist/Request.js.map +1 -1
  425. package/dist/RequestResolver.d.ts +201 -90
  426. package/dist/RequestResolver.d.ts.map +1 -1
  427. package/dist/RequestResolver.js +87 -41
  428. package/dist/RequestResolver.js.map +1 -1
  429. package/dist/Resource.js.map +1 -1
  430. package/dist/Result.d.ts +302 -470
  431. package/dist/Result.d.ts.map +1 -1
  432. package/dist/Result.js +135 -218
  433. package/dist/Result.js.map +1 -1
  434. package/dist/Runtime.d.ts +50 -75
  435. package/dist/Runtime.d.ts.map +1 -1
  436. package/dist/Runtime.js +39 -60
  437. package/dist/Runtime.js.map +1 -1
  438. package/dist/Schedule.d.ts +292 -1638
  439. package/dist/Schedule.d.ts.map +1 -1
  440. package/dist/Schedule.js +164 -805
  441. package/dist/Schedule.js.map +1 -1
  442. package/dist/Scheduler.d.ts +5 -5
  443. package/dist/Scheduler.d.ts.map +1 -1
  444. package/dist/Scheduler.js +18 -6
  445. package/dist/Scheduler.js.map +1 -1
  446. package/dist/Schema.d.ts +2056 -1269
  447. package/dist/Schema.d.ts.map +1 -1
  448. package/dist/Schema.js +2868 -1135
  449. package/dist/Schema.js.map +1 -1
  450. package/dist/SchemaAST.d.ts +64 -72
  451. package/dist/SchemaAST.d.ts.map +1 -1
  452. package/dist/SchemaAST.js +698 -468
  453. package/dist/SchemaAST.js.map +1 -1
  454. package/dist/SchemaGetter.d.ts +236 -188
  455. package/dist/SchemaGetter.d.ts.map +1 -1
  456. package/dist/SchemaGetter.js +281 -234
  457. package/dist/SchemaGetter.js.map +1 -1
  458. package/dist/SchemaIssue.d.ts +219 -190
  459. package/dist/SchemaIssue.d.ts.map +1 -1
  460. package/dist/SchemaIssue.js +303 -309
  461. package/dist/SchemaIssue.js.map +1 -1
  462. package/dist/SchemaParser.d.ts +32 -2
  463. package/dist/SchemaParser.d.ts.map +1 -1
  464. package/dist/SchemaParser.js +170 -118
  465. package/dist/SchemaParser.js.map +1 -1
  466. package/dist/SchemaRepresentation.d.ts +433 -1511
  467. package/dist/SchemaRepresentation.d.ts.map +1 -1
  468. package/dist/SchemaRepresentation.js +301 -2854
  469. package/dist/SchemaRepresentation.js.map +1 -1
  470. package/dist/SchemaTransformation.d.ts +117 -77
  471. package/dist/SchemaTransformation.d.ts.map +1 -1
  472. package/dist/SchemaTransformation.js +139 -104
  473. package/dist/SchemaTransformation.js.map +1 -1
  474. package/dist/Scope.d.ts +123 -151
  475. package/dist/Scope.d.ts.map +1 -1
  476. package/dist/Scope.js +72 -92
  477. package/dist/Scope.js.map +1 -1
  478. package/dist/ScopedCache.js +1 -1
  479. package/dist/ScopedCache.js.map +1 -1
  480. package/dist/ScopedRef.d.ts +3 -3
  481. package/dist/ScopedRef.d.ts.map +1 -1
  482. package/dist/ScopedRef.js +2 -2
  483. package/dist/ScopedRef.js.map +1 -1
  484. package/dist/Semaphore.d.ts +101 -13
  485. package/dist/Semaphore.d.ts.map +1 -1
  486. package/dist/Semaphore.js +78 -39
  487. package/dist/Semaphore.js.map +1 -1
  488. package/dist/Sink.d.ts +118 -108
  489. package/dist/Sink.d.ts.map +1 -1
  490. package/dist/Sink.js +107 -100
  491. package/dist/Sink.js.map +1 -1
  492. package/dist/Stdio.d.ts +18 -5
  493. package/dist/Stdio.d.ts.map +1 -1
  494. package/dist/Stdio.js +6 -3
  495. package/dist/Stdio.js.map +1 -1
  496. package/dist/Stream.d.ts +2467 -2962
  497. package/dist/Stream.d.ts.map +1 -1
  498. package/dist/Stream.js +1154 -1413
  499. package/dist/Stream.js.map +1 -1
  500. package/dist/String.d.ts +262 -308
  501. package/dist/String.d.ts.map +1 -1
  502. package/dist/String.js +184 -215
  503. package/dist/String.js.map +1 -1
  504. package/dist/Struct.d.ts +109 -114
  505. package/dist/Struct.d.ts.map +1 -1
  506. package/dist/Struct.js +46 -54
  507. package/dist/Struct.js.map +1 -1
  508. package/dist/SubscriptionRef.d.ts +282 -250
  509. package/dist/SubscriptionRef.d.ts.map +1 -1
  510. package/dist/SubscriptionRef.js +104 -92
  511. package/dist/SubscriptionRef.js.map +1 -1
  512. package/dist/Symbol.d.ts +3 -3
  513. package/dist/Symbol.js +3 -3
  514. package/dist/Symbol.js.map +1 -1
  515. package/dist/SynchronizedRef.js +1 -1
  516. package/dist/SynchronizedRef.js.map +1 -1
  517. package/dist/Take.js.map +1 -1
  518. package/dist/Terminal.d.ts +2 -2
  519. package/dist/Terminal.js +2 -2
  520. package/dist/Terminal.js.map +1 -1
  521. package/dist/Tracer.d.ts +100 -54
  522. package/dist/Tracer.d.ts.map +1 -1
  523. package/dist/Tracer.js +41 -24
  524. package/dist/Tracer.js.map +1 -1
  525. package/dist/Trie.d.ts +287 -679
  526. package/dist/Trie.d.ts.map +1 -1
  527. package/dist/Trie.js +109 -251
  528. package/dist/Trie.js.map +1 -1
  529. package/dist/Tuple.d.ts +98 -131
  530. package/dist/Tuple.d.ts.map +1 -1
  531. package/dist/Tuple.js +42 -57
  532. package/dist/Tuple.js.map +1 -1
  533. package/dist/TxChunk.d.ts +201 -121
  534. package/dist/TxChunk.d.ts.map +1 -1
  535. package/dist/TxChunk.js +85 -56
  536. package/dist/TxChunk.js.map +1 -1
  537. package/dist/TxDeferred.d.ts +62 -46
  538. package/dist/TxDeferred.d.ts.map +1 -1
  539. package/dist/TxDeferred.js +30 -22
  540. package/dist/TxDeferred.js.map +1 -1
  541. package/dist/TxHashMap.d.ts +631 -779
  542. package/dist/TxHashMap.d.ts.map +1 -1
  543. package/dist/TxHashMap.js +268 -330
  544. package/dist/TxHashMap.js.map +1 -1
  545. package/dist/TxHashSet.d.ts +297 -236
  546. package/dist/TxHashSet.d.ts.map +1 -1
  547. package/dist/TxHashSet.js +130 -100
  548. package/dist/TxHashSet.js.map +1 -1
  549. package/dist/TxPriorityQueue.d.ts +126 -95
  550. package/dist/TxPriorityQueue.d.ts.map +1 -1
  551. package/dist/TxPriorityQueue.js +74 -56
  552. package/dist/TxPriorityQueue.js.map +1 -1
  553. package/dist/TxPubSub.d.ts +101 -88
  554. package/dist/TxPubSub.d.ts.map +1 -1
  555. package/dist/TxPubSub.js +87 -66
  556. package/dist/TxPubSub.js.map +1 -1
  557. package/dist/TxQueue.d.ts +200 -180
  558. package/dist/TxQueue.d.ts.map +1 -1
  559. package/dist/TxQueue.js +161 -137
  560. package/dist/TxQueue.js.map +1 -1
  561. package/dist/TxReentrantLock.d.ts +89 -114
  562. package/dist/TxReentrantLock.d.ts.map +1 -1
  563. package/dist/TxReentrantLock.js +75 -53
  564. package/dist/TxReentrantLock.js.map +1 -1
  565. package/dist/TxRef.d.ts +51 -32
  566. package/dist/TxRef.d.ts.map +1 -1
  567. package/dist/TxRef.js +23 -15
  568. package/dist/TxRef.js.map +1 -1
  569. package/dist/TxSemaphore.d.ts +129 -95
  570. package/dist/TxSemaphore.d.ts.map +1 -1
  571. package/dist/TxSemaphore.js +85 -70
  572. package/dist/TxSemaphore.js.map +1 -1
  573. package/dist/TxSubscriptionRef.d.ts +97 -70
  574. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  575. package/dist/TxSubscriptionRef.js +44 -34
  576. package/dist/TxSubscriptionRef.js.map +1 -1
  577. package/dist/Types.d.ts +127 -70
  578. package/dist/Types.d.ts.map +1 -1
  579. package/dist/UndefinedOr.js.map +1 -1
  580. package/dist/Unify.d.ts +45 -65
  581. package/dist/Unify.d.ts.map +1 -1
  582. package/dist/Unify.js +6 -9
  583. package/dist/Unify.js.map +1 -1
  584. package/dist/Utils.d.ts +23 -16
  585. package/dist/Utils.d.ts.map +1 -1
  586. package/dist/Utils.js +3 -7
  587. package/dist/Utils.js.map +1 -1
  588. package/dist/index.d.ts +0 -8
  589. package/dist/index.d.ts.map +1 -1
  590. package/dist/index.js +0 -8
  591. package/dist/index.js.map +1 -1
  592. package/dist/internal/array.js.map +1 -1
  593. package/dist/internal/core.js +4 -3
  594. package/dist/internal/core.js.map +1 -1
  595. package/dist/internal/dateTime.js +5 -1
  596. package/dist/internal/dateTime.js.map +1 -1
  597. package/dist/internal/doNotation.js.map +1 -1
  598. package/dist/internal/effect.js +252 -108
  599. package/dist/internal/effect.js.map +1 -1
  600. package/dist/internal/equal.js.map +1 -1
  601. package/dist/internal/errors.js.map +1 -1
  602. package/dist/internal/executionPlan.js +52 -3
  603. package/dist/internal/executionPlan.js.map +1 -1
  604. package/dist/internal/hashMap.js +12 -8
  605. package/dist/internal/hashMap.js.map +1 -1
  606. package/dist/internal/hashSet.js.map +1 -1
  607. package/dist/internal/layer.js.map +1 -1
  608. package/dist/internal/matcher.js +2 -2
  609. package/dist/internal/matcher.js.map +1 -1
  610. package/dist/internal/metric.js.map +1 -1
  611. package/dist/internal/option.js.map +1 -1
  612. package/dist/internal/persistence.d.ts +2 -0
  613. package/dist/internal/persistence.d.ts.map +1 -0
  614. package/dist/internal/persistence.js +3 -0
  615. package/dist/internal/persistence.js.map +1 -0
  616. package/dist/internal/random.js.map +1 -1
  617. package/dist/internal/rcRef.js +18 -13
  618. package/dist/internal/rcRef.js.map +1 -1
  619. package/dist/internal/record.d.ts +0 -3
  620. package/dist/internal/record.d.ts.map +1 -1
  621. package/dist/internal/record.js +10 -5
  622. package/dist/internal/record.js.map +1 -1
  623. package/dist/internal/redacted.js.map +1 -1
  624. package/dist/internal/references.js +3 -4
  625. package/dist/internal/references.js.map +1 -1
  626. package/dist/internal/request.js.map +1 -1
  627. package/dist/internal/result.js.map +1 -1
  628. package/dist/internal/schedule.js.map +1 -1
  629. package/dist/internal/schema/annotations.js +15 -1
  630. package/dist/internal/schema/annotations.js.map +1 -1
  631. package/dist/internal/schema/cause.js.map +1 -1
  632. package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
  633. package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
  634. package/dist/internal/schema/fromJsonSchemaDocument.js +761 -0
  635. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
  636. package/dist/internal/schema/fromRepresentation.d.ts +2 -0
  637. package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
  638. package/dist/internal/schema/fromRepresentation.js +245 -0
  639. package/dist/internal/schema/fromRepresentation.js.map +1 -0
  640. package/dist/internal/schema/parser.d.ts +14 -0
  641. package/dist/internal/schema/parser.d.ts.map +1 -0
  642. package/dist/internal/schema/parser.js +13 -0
  643. package/dist/internal/schema/parser.js.map +1 -0
  644. package/dist/internal/schema/schema.js +29 -49
  645. package/dist/internal/schema/schema.js.map +1 -1
  646. package/dist/internal/schema/toArbitrary.d.ts +2 -0
  647. package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
  648. package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -83
  649. package/dist/internal/schema/toArbitrary.js.map +1 -0
  650. package/dist/internal/schema/toCodeDocument.d.ts +2 -0
  651. package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
  652. package/dist/internal/schema/toCodeDocument.js +438 -0
  653. package/dist/internal/schema/toCodeDocument.js.map +1 -0
  654. package/dist/internal/schema/toEquivalence.d.ts +2 -0
  655. package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
  656. package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
  657. package/dist/internal/schema/toEquivalence.js.map +1 -0
  658. package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
  659. package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
  660. package/dist/internal/schema/toJsonSchemaDocument.js +522 -0
  661. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
  662. package/dist/internal/schema/toRepresentation.d.ts +2 -0
  663. package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
  664. package/dist/internal/schema/toRepresentation.js +351 -0
  665. package/dist/internal/schema/toRepresentation.js.map +1 -0
  666. package/dist/internal/stackTraceLimit.js +3 -6
  667. package/dist/internal/stackTraceLimit.js.map +1 -1
  668. package/dist/internal/stream.js.map +1 -1
  669. package/dist/internal/tracer.js.map +1 -1
  670. package/dist/internal/trie.js +24 -10
  671. package/dist/internal/trie.js.map +1 -1
  672. package/dist/testing/FastCheck.d.ts +8 -7
  673. package/dist/testing/FastCheck.d.ts.map +1 -1
  674. package/dist/testing/FastCheck.js +8 -7
  675. package/dist/testing/FastCheck.js.map +1 -1
  676. package/dist/testing/TestClock.d.ts +57 -28
  677. package/dist/testing/TestClock.d.ts.map +1 -1
  678. package/dist/testing/TestClock.js +65 -20
  679. package/dist/testing/TestClock.js.map +1 -1
  680. package/dist/testing/TestConsole.d.ts +32 -31
  681. package/dist/testing/TestConsole.d.ts.map +1 -1
  682. package/dist/testing/TestConsole.js +24 -22
  683. package/dist/testing/TestConsole.js.map +1 -1
  684. package/dist/testing/TestSchema.d.ts +31 -31
  685. package/dist/testing/TestSchema.d.ts.map +1 -1
  686. package/dist/testing/TestSchema.js +35 -34
  687. package/dist/testing/TestSchema.js.map +1 -1
  688. package/dist/testing/index.js.map +1 -1
  689. package/dist/unstable/ai/AiError.d.ts +121 -144
  690. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  691. package/dist/unstable/ai/AiError.js +118 -140
  692. package/dist/unstable/ai/AiError.js.map +1 -1
  693. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +22 -7
  694. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  695. package/dist/unstable/ai/AnthropicStructuredOutput.js +87 -317
  696. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  697. package/dist/unstable/ai/Chat.d.ts +132 -97
  698. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  699. package/dist/unstable/ai/Chat.js +56 -52
  700. package/dist/unstable/ai/Chat.js.map +1 -1
  701. package/dist/unstable/ai/EmbeddingModel.d.ts +1 -1
  702. package/dist/unstable/ai/EmbeddingModel.js +1 -1
  703. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  704. package/dist/unstable/ai/IdGenerator.d.ts +32 -28
  705. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  706. package/dist/unstable/ai/IdGenerator.js +26 -21
  707. package/dist/unstable/ai/IdGenerator.js.map +1 -1
  708. package/dist/unstable/ai/LanguageModel.d.ts +111 -68
  709. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  710. package/dist/unstable/ai/LanguageModel.js +127 -83
  711. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  712. package/dist/unstable/ai/McpProtocol.d.ts +30 -0
  713. package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
  714. package/dist/unstable/ai/McpProtocol.js +20 -0
  715. package/dist/unstable/ai/McpProtocol.js.map +1 -0
  716. package/dist/unstable/ai/McpSchema.d.ts +320 -254
  717. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  718. package/dist/unstable/ai/McpSchema.js +79 -71
  719. package/dist/unstable/ai/McpSchema.js.map +1 -1
  720. package/dist/unstable/ai/McpServer.d.ts +71 -62
  721. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  722. package/dist/unstable/ai/McpServer.js +777 -245
  723. package/dist/unstable/ai/McpServer.js.map +1 -1
  724. package/dist/unstable/ai/Model.d.ts +8 -19
  725. package/dist/unstable/ai/Model.d.ts.map +1 -1
  726. package/dist/unstable/ai/Model.js +9 -20
  727. package/dist/unstable/ai/Model.js.map +1 -1
  728. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +33 -11
  729. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  730. package/dist/unstable/ai/OpenAiStructuredOutput.js +194 -378
  731. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  732. package/dist/unstable/ai/Prompt.d.ts +131 -44
  733. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  734. package/dist/unstable/ai/Prompt.js +100 -36
  735. package/dist/unstable/ai/Prompt.js.map +1 -1
  736. package/dist/unstable/ai/Response.d.ts +47 -33
  737. package/dist/unstable/ai/Response.d.ts.map +1 -1
  738. package/dist/unstable/ai/Response.js +23 -18
  739. package/dist/unstable/ai/Response.js.map +1 -1
  740. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
  741. package/dist/unstable/ai/Telemetry.d.ts +46 -13
  742. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  743. package/dist/unstable/ai/Telemetry.js +18 -7
  744. package/dist/unstable/ai/Telemetry.js.map +1 -1
  745. package/dist/unstable/ai/Tokenizer.d.ts +14 -3
  746. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  747. package/dist/unstable/ai/Tokenizer.js +10 -2
  748. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  749. package/dist/unstable/ai/Tool.d.ts +63 -44
  750. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  751. package/dist/unstable/ai/Tool.js +59 -42
  752. package/dist/unstable/ai/Tool.js.map +1 -1
  753. package/dist/unstable/ai/Toolkit.d.ts +35 -9
  754. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  755. package/dist/unstable/ai/Toolkit.js +32 -14
  756. package/dist/unstable/ai/Toolkit.js.map +1 -1
  757. package/dist/unstable/ai/index.d.ts +4 -0
  758. package/dist/unstable/ai/index.d.ts.map +1 -1
  759. package/dist/unstable/ai/index.js +4 -0
  760. package/dist/unstable/ai/index.js.map +1 -1
  761. package/dist/unstable/ai/internal/codec-transformer.js +15 -12
  762. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  763. package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
  764. package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
  765. package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
  766. package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
  767. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
  768. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
  769. package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
  770. package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
  771. package/dist/unstable/ai/internal/structured-output.d.ts +2 -0
  772. package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
  773. package/dist/unstable/ai/internal/structured-output.js +315 -0
  774. package/dist/unstable/ai/internal/structured-output.js.map +1 -0
  775. package/dist/unstable/cli/Argument.d.ts +279 -72
  776. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  777. package/dist/unstable/cli/Argument.js +113 -34
  778. package/dist/unstable/cli/Argument.js.map +1 -1
  779. package/dist/unstable/cli/CliConfig.js.map +1 -1
  780. package/dist/unstable/cli/CliError.d.ts +126 -76
  781. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  782. package/dist/unstable/cli/CliError.js +136 -76
  783. package/dist/unstable/cli/CliError.js.map +1 -1
  784. package/dist/unstable/cli/CliOutput.d.ts +35 -54
  785. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  786. package/dist/unstable/cli/CliOutput.js +26 -42
  787. package/dist/unstable/cli/CliOutput.js.map +1 -1
  788. package/dist/unstable/cli/Command.d.ts +736 -115
  789. package/dist/unstable/cli/Command.d.ts.map +1 -1
  790. package/dist/unstable/cli/Command.js +282 -56
  791. package/dist/unstable/cli/Command.js.map +1 -1
  792. package/dist/unstable/cli/Completions.js.map +1 -1
  793. package/dist/unstable/cli/Flag.d.ts +418 -138
  794. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  795. package/dist/unstable/cli/Flag.js +197 -71
  796. package/dist/unstable/cli/Flag.js.map +1 -1
  797. package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
  798. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  799. package/dist/unstable/cli/HelpDoc.d.ts +12 -4
  800. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  801. package/dist/unstable/cli/Param.d.ts +299 -83
  802. package/dist/unstable/cli/Param.d.ts.map +1 -1
  803. package/dist/unstable/cli/Param.js +146 -60
  804. package/dist/unstable/cli/Param.js.map +1 -1
  805. package/dist/unstable/cli/Primitive.d.ts +370 -149
  806. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  807. package/dist/unstable/cli/Primitive.js +377 -162
  808. package/dist/unstable/cli/Primitive.js.map +1 -1
  809. package/dist/unstable/cli/Prompt.d.ts +23 -14
  810. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  811. package/dist/unstable/cli/Prompt.js +54 -31
  812. package/dist/unstable/cli/Prompt.js.map +1 -1
  813. package/dist/unstable/cli/index.js.map +1 -1
  814. package/dist/unstable/cli/internal/ansi.js +2 -2
  815. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  816. package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
  817. package/dist/unstable/cli/internal/command.d.ts +5 -3
  818. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  819. package/dist/unstable/cli/internal/command.js +21 -13
  820. package/dist/unstable/cli/internal/command.js.map +1 -1
  821. package/dist/unstable/cli/internal/completions/bash.js +69 -9
  822. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  823. package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
  824. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  825. package/dist/unstable/cli/internal/completions/fish.js +5 -5
  826. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  827. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  828. package/dist/unstable/cli/internal/config.d.ts +0 -48
  829. package/dist/unstable/cli/internal/config.d.ts.map +1 -1
  830. package/dist/unstable/cli/internal/config.js +8 -10
  831. package/dist/unstable/cli/internal/config.js.map +1 -1
  832. package/dist/unstable/cli/internal/help.d.ts.map +1 -1
  833. package/dist/unstable/cli/internal/help.js +4 -2
  834. package/dist/unstable/cli/internal/help.js.map +1 -1
  835. package/dist/unstable/cli/internal/lexer.js +17 -7
  836. package/dist/unstable/cli/internal/lexer.js.map +1 -1
  837. package/dist/unstable/cli/internal/parser.js +5 -5
  838. package/dist/unstable/cli/internal/parser.js.map +1 -1
  839. package/dist/unstable/cli/internal/wizard.js +2 -2
  840. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  841. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  842. package/dist/unstable/cluster/ClusterError.js +7 -7
  843. package/dist/unstable/cluster/ClusterError.js.map +1 -1
  844. package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
  845. package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
  846. package/dist/unstable/cluster/ClusterSchema.js +8 -8
  847. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  848. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  849. package/dist/unstable/cluster/ClusterWorkflowEngine.js +32 -16
  850. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  851. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  852. package/dist/unstable/cluster/Entity.d.ts +12 -12
  853. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  854. package/dist/unstable/cluster/Entity.js +9 -9
  855. package/dist/unstable/cluster/Entity.js.map +1 -1
  856. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  857. package/dist/unstable/cluster/EntityId.js.map +1 -1
  858. package/dist/unstable/cluster/EntityProxy.d.ts +7 -5
  859. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  860. package/dist/unstable/cluster/EntityProxy.js +8 -5
  861. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  862. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  863. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  864. package/dist/unstable/cluster/EntityResource.js +2 -2
  865. package/dist/unstable/cluster/EntityResource.js.map +1 -1
  866. package/dist/unstable/cluster/EntityType.js.map +1 -1
  867. package/dist/unstable/cluster/Envelope.d.ts +3 -3
  868. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  869. package/dist/unstable/cluster/Envelope.js +5 -4
  870. package/dist/unstable/cluster/Envelope.js.map +1 -1
  871. package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
  872. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  873. package/dist/unstable/cluster/HttpRunner.js +6 -4
  874. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  875. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  876. package/dist/unstable/cluster/MachineId.js.map +1 -1
  877. package/dist/unstable/cluster/Message.d.ts +9 -9
  878. package/dist/unstable/cluster/Message.js +6 -6
  879. package/dist/unstable/cluster/Message.js.map +1 -1
  880. package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
  881. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  882. package/dist/unstable/cluster/MessageStorage.js +13 -6
  883. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  884. package/dist/unstable/cluster/Reply.d.ts +8 -0
  885. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  886. package/dist/unstable/cluster/Reply.js +17 -5
  887. package/dist/unstable/cluster/Reply.js.map +1 -1
  888. package/dist/unstable/cluster/Runner.d.ts +1 -1
  889. package/dist/unstable/cluster/Runner.js +1 -1
  890. package/dist/unstable/cluster/Runner.js.map +1 -1
  891. package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
  892. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  893. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  894. package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
  895. package/dist/unstable/cluster/RunnerHealth.js +1 -1
  896. package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
  897. package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
  898. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  899. package/dist/unstable/cluster/RunnerServer.js +29 -23
  900. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  901. package/dist/unstable/cluster/RunnerStorage.d.ts +3 -4
  902. package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
  903. package/dist/unstable/cluster/RunnerStorage.js +8 -7
  904. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  905. package/dist/unstable/cluster/Runners.d.ts +11 -15
  906. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  907. package/dist/unstable/cluster/Runners.js +32 -22
  908. package/dist/unstable/cluster/Runners.js.map +1 -1
  909. package/dist/unstable/cluster/ShardId.js +1 -1
  910. package/dist/unstable/cluster/ShardId.js.map +1 -1
  911. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  912. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  913. package/dist/unstable/cluster/Sharding.js +164 -31
  914. package/dist/unstable/cluster/Sharding.js.map +1 -1
  915. package/dist/unstable/cluster/ShardingConfig.d.ts +13 -5
  916. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  917. package/dist/unstable/cluster/ShardingConfig.js +3 -3
  918. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  919. package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
  920. package/dist/unstable/cluster/SingleRunner.d.ts +4 -2
  921. package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
  922. package/dist/unstable/cluster/SingleRunner.js +2 -1
  923. package/dist/unstable/cluster/SingleRunner.js.map +1 -1
  924. package/dist/unstable/cluster/Singleton.js.map +1 -1
  925. package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
  926. package/dist/unstable/cluster/SingletonAddress.js +1 -1
  927. package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
  928. package/dist/unstable/cluster/Snowflake.d.ts +8 -8
  929. package/dist/unstable/cluster/Snowflake.js +8 -8
  930. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  931. package/dist/unstable/cluster/SocketRunner.js.map +1 -1
  932. package/dist/unstable/cluster/SqlMessageStorage.d.ts +7 -4
  933. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  934. package/dist/unstable/cluster/SqlMessageStorage.js +56 -25
  935. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  936. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  937. package/dist/unstable/cluster/SqlRunnerStorage.js +141 -79
  938. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  939. package/dist/unstable/cluster/TestRunner.js.map +1 -1
  940. package/dist/unstable/cluster/index.js.map +1 -1
  941. package/dist/unstable/cluster/internal/entityManager.js +25 -13
  942. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  943. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  944. package/dist/unstable/cluster/internal/hash.js.map +1 -1
  945. package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
  946. package/dist/unstable/cluster/internal/resourceMap.js +2 -2
  947. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  948. package/dist/unstable/cluster/internal/resourceRef.js +17 -0
  949. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  950. package/dist/unstable/cluster/internal/shardLock.d.ts +2 -0
  951. package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
  952. package/dist/unstable/cluster/internal/shardLock.js +4 -0
  953. package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
  954. package/dist/unstable/devtools/DevTools.js.map +1 -1
  955. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  956. package/dist/unstable/devtools/DevToolsClient.js +7 -2
  957. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  958. package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
  959. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  960. package/dist/unstable/devtools/DevToolsSchema.js +8 -5
  961. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  962. package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
  963. package/dist/unstable/devtools/index.js.map +1 -1
  964. package/dist/unstable/encoding/Ini.d.ts +20 -0
  965. package/dist/unstable/encoding/Ini.d.ts.map +1 -0
  966. package/dist/unstable/encoding/Ini.js +153 -0
  967. package/dist/unstable/encoding/Ini.js.map +1 -0
  968. package/dist/unstable/encoding/Msgpack.d.ts +2 -1
  969. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  970. package/dist/unstable/encoding/Msgpack.js +31 -19
  971. package/dist/unstable/encoding/Msgpack.js.map +1 -1
  972. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  973. package/dist/unstable/encoding/Ndjson.js +7 -1
  974. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  975. package/dist/unstable/encoding/Sse.d.ts +72 -8
  976. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  977. package/dist/unstable/encoding/Sse.js +72 -31
  978. package/dist/unstable/encoding/Sse.js.map +1 -1
  979. package/dist/unstable/encoding/Toml.d.ts +19 -0
  980. package/dist/unstable/encoding/Toml.d.ts.map +1 -0
  981. package/dist/unstable/encoding/Toml.js +434 -0
  982. package/dist/unstable/encoding/Toml.js.map +1 -0
  983. package/dist/unstable/encoding/Yaml.d.ts +19 -0
  984. package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
  985. package/dist/unstable/encoding/Yaml.js +461 -0
  986. package/dist/unstable/encoding/Yaml.js.map +1 -0
  987. package/dist/unstable/encoding/index.d.ts +12 -0
  988. package/dist/unstable/encoding/index.d.ts.map +1 -1
  989. package/dist/unstable/encoding/index.js +12 -0
  990. package/dist/unstable/encoding/index.js.map +1 -1
  991. package/dist/unstable/eventlog/Event.d.ts +20 -20
  992. package/dist/unstable/eventlog/Event.js.map +1 -1
  993. package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
  994. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  995. package/dist/unstable/eventlog/EventJournal.d.ts +17 -17
  996. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  997. package/dist/unstable/eventlog/EventJournal.js +27 -19
  998. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  999. package/dist/unstable/eventlog/EventLog.d.ts +3 -3
  1000. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  1001. package/dist/unstable/eventlog/EventLog.js +18 -14
  1002. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  1003. package/dist/unstable/eventlog/EventLogEncryption.d.ts +8 -7
  1004. package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
  1005. package/dist/unstable/eventlog/EventLogEncryption.js +16 -14
  1006. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  1007. package/dist/unstable/eventlog/EventLogMessage.d.ts +31 -31
  1008. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  1009. package/dist/unstable/eventlog/EventLogMessage.js +12 -8
  1010. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  1011. package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
  1012. package/dist/unstable/eventlog/EventLogRemote.js +5 -5
  1013. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  1014. package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
  1015. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  1016. package/dist/unstable/eventlog/EventLogServer.js +45 -21
  1017. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  1018. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
  1019. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  1020. package/dist/unstable/eventlog/EventLogServerEncrypted.js +16 -7
  1021. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
  1022. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
  1023. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  1024. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +15 -7
  1025. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  1026. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
  1027. package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
  1028. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
  1029. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
  1030. package/dist/unstable/eventlog/SqlEventJournal.js +3 -6
  1031. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  1032. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
  1033. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  1034. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
  1035. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  1036. package/dist/unstable/eventlog/index.js.map +1 -1
  1037. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  1038. package/dist/unstable/http/Cookies.d.ts +2 -2
  1039. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  1040. package/dist/unstable/http/Cookies.js +54 -40
  1041. package/dist/unstable/http/Cookies.js.map +1 -1
  1042. package/dist/unstable/http/Etag.d.ts +1 -1
  1043. package/dist/unstable/http/Etag.js +1 -1
  1044. package/dist/unstable/http/Etag.js.map +1 -1
  1045. package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
  1046. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  1047. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts +11 -0
  1048. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
  1049. package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
  1050. package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
  1051. package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
  1052. package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
  1053. package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
  1054. package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
  1055. package/dist/unstable/http/FindMyWay.d.ts +33 -8
  1056. package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
  1057. package/dist/unstable/http/FindMyWay.js +4 -7
  1058. package/dist/unstable/http/FindMyWay.js.map +1 -1
  1059. package/dist/unstable/http/Headers.d.ts +2 -2
  1060. package/dist/unstable/http/Headers.js +10 -10
  1061. package/dist/unstable/http/Headers.js.map +1 -1
  1062. package/dist/unstable/http/HttpBody.d.ts +5 -3
  1063. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  1064. package/dist/unstable/http/HttpBody.js +11 -5
  1065. package/dist/unstable/http/HttpBody.js.map +1 -1
  1066. package/dist/unstable/http/HttpClient.d.ts +110 -47
  1067. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  1068. package/dist/unstable/http/HttpClient.js +79 -36
  1069. package/dist/unstable/http/HttpClient.js.map +1 -1
  1070. package/dist/unstable/http/HttpClientError.js +1 -1
  1071. package/dist/unstable/http/HttpClientError.js.map +1 -1
  1072. package/dist/unstable/http/HttpClientRequest.d.ts +44 -0
  1073. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  1074. package/dist/unstable/http/HttpClientRequest.js +16 -12
  1075. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  1076. package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
  1077. package/dist/unstable/http/HttpClientResponse.js +3 -18
  1078. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  1079. package/dist/unstable/http/HttpEffect.d.ts +7 -9
  1080. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  1081. package/dist/unstable/http/HttpEffect.js +7 -8
  1082. package/dist/unstable/http/HttpEffect.js.map +1 -1
  1083. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  1084. package/dist/unstable/http/HttpMethod.d.ts +6 -9
  1085. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  1086. package/dist/unstable/http/HttpMethod.js +6 -9
  1087. package/dist/unstable/http/HttpMethod.js.map +1 -1
  1088. package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
  1089. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  1090. package/dist/unstable/http/HttpMiddleware.js +164 -39
  1091. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  1092. package/dist/unstable/http/HttpPlatform.d.ts +76 -0
  1093. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  1094. package/dist/unstable/http/HttpPlatform.js +53 -3
  1095. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  1096. package/dist/unstable/http/HttpRouter.d.ts +91 -92
  1097. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  1098. package/dist/unstable/http/HttpRouter.js +78 -79
  1099. package/dist/unstable/http/HttpRouter.js.map +1 -1
  1100. package/dist/unstable/http/HttpServer.d.ts +13 -13
  1101. package/dist/unstable/http/HttpServer.js +6 -6
  1102. package/dist/unstable/http/HttpServer.js.map +1 -1
  1103. package/dist/unstable/http/HttpServerError.d.ts +2 -2
  1104. package/dist/unstable/http/HttpServerError.js +2 -2
  1105. package/dist/unstable/http/HttpServerError.js.map +1 -1
  1106. package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
  1107. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  1108. package/dist/unstable/http/HttpServerRequest.js +23 -15
  1109. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  1110. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  1111. package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
  1112. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  1113. package/dist/unstable/http/HttpServerResponse.js +17 -5
  1114. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  1115. package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
  1116. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  1117. package/dist/unstable/http/HttpStaticServer.js +35 -7
  1118. package/dist/unstable/http/HttpStaticServer.js.map +1 -1
  1119. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  1120. package/dist/unstable/http/Multipart.d.ts +28 -9
  1121. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  1122. package/dist/unstable/http/Multipart.js +65 -35
  1123. package/dist/unstable/http/Multipart.js.map +1 -1
  1124. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
  1125. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
  1126. package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
  1127. package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
  1128. package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
  1129. package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
  1130. package/dist/unstable/http/MultipartParser/Search.js +14 -0
  1131. package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
  1132. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
  1133. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
  1134. package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
  1135. package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
  1136. package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
  1137. package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
  1138. package/dist/unstable/http/MultipartParser/internal/headers.js +208 -0
  1139. package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
  1140. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
  1141. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
  1142. package/dist/unstable/http/MultipartParser/internal/multipart.js +241 -0
  1143. package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
  1144. package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
  1145. package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
  1146. package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
  1147. package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
  1148. package/dist/unstable/http/MultipartParser.d.ts +98 -0
  1149. package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
  1150. package/dist/unstable/http/MultipartParser.js +23 -0
  1151. package/dist/unstable/http/MultipartParser.js.map +1 -0
  1152. package/dist/unstable/http/Template.d.ts.map +1 -1
  1153. package/dist/unstable/http/Template.js +3 -3
  1154. package/dist/unstable/http/Template.js.map +1 -1
  1155. package/dist/unstable/http/Url.d.ts +33 -63
  1156. package/dist/unstable/http/Url.d.ts.map +1 -1
  1157. package/dist/unstable/http/Url.js +14 -28
  1158. package/dist/unstable/http/Url.js.map +1 -1
  1159. package/dist/unstable/http/UrlParams.d.ts +10 -18
  1160. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  1161. package/dist/unstable/http/UrlParams.js +26 -31
  1162. package/dist/unstable/http/UrlParams.js.map +1 -1
  1163. package/dist/unstable/http/index.d.ts +1 -1
  1164. package/dist/unstable/http/index.d.ts.map +1 -1
  1165. package/dist/unstable/http/index.js +1 -1
  1166. package/dist/unstable/http/index.js.map +1 -1
  1167. package/dist/unstable/http/internal/compression.d.ts +2 -0
  1168. package/dist/unstable/http/internal/compression.d.ts.map +1 -0
  1169. package/dist/unstable/http/internal/compression.js +155 -0
  1170. package/dist/unstable/http/internal/compression.js.map +1 -0
  1171. package/dist/unstable/http/internal/httpBody.d.ts +2 -0
  1172. package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
  1173. package/dist/unstable/http/internal/httpBody.js +10 -0
  1174. package/dist/unstable/http/internal/httpBody.js.map +1 -0
  1175. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
  1176. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  1177. package/dist/unstable/httpapi/HttpApi.js +9 -9
  1178. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  1179. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
  1180. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  1181. package/dist/unstable/httpapi/HttpApiBuilder.js +82 -30
  1182. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  1183. package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
  1184. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  1185. package/dist/unstable/httpapi/HttpApiClient.js +89 -51
  1186. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  1187. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +48 -46
  1188. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  1189. package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
  1190. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  1191. package/dist/unstable/httpapi/HttpApiError.d.ts +18 -18
  1192. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  1193. package/dist/unstable/httpapi/HttpApiError.js +30 -30
  1194. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  1195. package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
  1196. package/dist/unstable/httpapi/HttpApiGroup.js +2 -2
  1197. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  1198. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
  1199. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  1200. package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
  1201. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  1202. package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
  1203. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  1204. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  1205. package/dist/unstable/httpapi/HttpApiSchema.d.ts +225 -6
  1206. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  1207. package/dist/unstable/httpapi/HttpApiSchema.js +174 -4
  1208. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  1209. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  1210. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  1211. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  1212. package/dist/unstable/httpapi/OpenApi.d.ts +21 -13
  1213. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  1214. package/dist/unstable/httpapi/OpenApi.js +110 -57
  1215. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  1216. package/dist/unstable/httpapi/index.js.map +1 -1
  1217. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  1218. package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
  1219. package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
  1220. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
  1221. package/dist/unstable/observability/Otlp.js.map +1 -1
  1222. package/dist/unstable/observability/OtlpExporter.d.ts +71 -2
  1223. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  1224. package/dist/unstable/observability/OtlpExporter.js +86 -7
  1225. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  1226. package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
  1227. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  1228. package/dist/unstable/observability/OtlpLogger.js +4 -4
  1229. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  1230. package/dist/unstable/observability/OtlpMetrics.d.ts +11 -4
  1231. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  1232. package/dist/unstable/observability/OtlpMetrics.js +31 -15
  1233. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  1234. package/dist/unstable/observability/OtlpResource.d.ts +16 -7
  1235. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  1236. package/dist/unstable/observability/OtlpResource.js +21 -12
  1237. package/dist/unstable/observability/OtlpResource.js.map +1 -1
  1238. package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
  1239. package/dist/unstable/observability/OtlpTracer.d.ts +4 -3
  1240. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  1241. package/dist/unstable/observability/OtlpTracer.js +3 -3
  1242. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  1243. package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
  1244. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  1245. package/dist/unstable/observability/PrometheusMetrics.js +10 -3
  1246. package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
  1247. package/dist/unstable/observability/index.js.map +1 -1
  1248. package/dist/unstable/observability/internal/otlpEnv.js +1 -1
  1249. package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
  1250. package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
  1251. package/dist/unstable/observability/internal/protobuf.js +3 -0
  1252. package/dist/unstable/observability/internal/protobuf.js.map +1 -1
  1253. package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
  1254. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  1255. package/dist/unstable/persistence/KeyValueStore.js +22 -13
  1256. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  1257. package/dist/unstable/persistence/Persistable.d.ts +8 -8
  1258. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  1259. package/dist/unstable/persistence/Persistable.js +2 -1
  1260. package/dist/unstable/persistence/Persistable.js.map +1 -1
  1261. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  1262. package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
  1263. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  1264. package/dist/unstable/persistence/PersistedQueue.js +15 -15
  1265. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  1266. package/dist/unstable/persistence/Persistence.d.ts +3 -3
  1267. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  1268. package/dist/unstable/persistence/Persistence.js +108 -22
  1269. package/dist/unstable/persistence/Persistence.js.map +1 -1
  1270. package/dist/unstable/persistence/RateLimiter.d.ts +47 -26
  1271. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  1272. package/dist/unstable/persistence/RateLimiter.js +31 -47
  1273. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  1274. package/dist/unstable/persistence/Redis.d.ts +2 -2
  1275. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  1276. package/dist/unstable/persistence/Redis.js +4 -4
  1277. package/dist/unstable/persistence/Redis.js.map +1 -1
  1278. package/dist/unstable/persistence/index.js.map +1 -1
  1279. package/dist/unstable/process/ChildProcess.d.ts +72 -21
  1280. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  1281. package/dist/unstable/process/ChildProcess.js +14 -5
  1282. package/dist/unstable/process/ChildProcess.js.map +1 -1
  1283. package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
  1284. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  1285. package/dist/unstable/process/ChildProcessSpawner.js +4 -2
  1286. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  1287. package/dist/unstable/process/index.js.map +1 -1
  1288. package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
  1289. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  1290. package/dist/unstable/reactivity/AsyncResult.js +14 -13
  1291. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  1292. package/dist/unstable/reactivity/Atom.d.ts +131 -30
  1293. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  1294. package/dist/unstable/reactivity/Atom.js +53 -34
  1295. package/dist/unstable/reactivity/Atom.js.map +1 -1
  1296. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  1297. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  1298. package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
  1299. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  1300. package/dist/unstable/reactivity/AtomRef.js.map +1 -1
  1301. package/dist/unstable/reactivity/AtomRegistry.js +25 -4
  1302. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  1303. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  1304. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  1305. package/dist/unstable/reactivity/AtomRpc.js +4 -1
  1306. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  1307. package/dist/unstable/reactivity/Hydration.d.ts +1 -1
  1308. package/dist/unstable/reactivity/Hydration.js +1 -1
  1309. package/dist/unstable/reactivity/Hydration.js.map +1 -1
  1310. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  1311. package/dist/unstable/reactivity/index.js.map +1 -1
  1312. package/dist/unstable/rpc/Rpc.d.ts +35 -33
  1313. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  1314. package/dist/unstable/rpc/Rpc.js +4 -2
  1315. package/dist/unstable/rpc/Rpc.js.map +1 -1
  1316. package/dist/unstable/rpc/RpcClient.d.ts +26 -12
  1317. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  1318. package/dist/unstable/rpc/RpcClient.js +40 -22
  1319. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  1320. package/dist/unstable/rpc/RpcClientError.js +2 -2
  1321. package/dist/unstable/rpc/RpcClientError.js.map +1 -1
  1322. package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
  1323. package/dist/unstable/rpc/RpcGroup.js +1 -1
  1324. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  1325. package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
  1326. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  1327. package/dist/unstable/rpc/RpcMessage.js +6 -6
  1328. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  1329. package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
  1330. package/dist/unstable/rpc/RpcMiddleware.js +1 -1
  1331. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  1332. package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
  1333. package/dist/unstable/rpc/RpcSchema.js +3 -3
  1334. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  1335. package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
  1336. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  1337. package/dist/unstable/rpc/RpcSerialization.js +177 -96
  1338. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  1339. package/dist/unstable/rpc/RpcServer.d.ts +13 -13
  1340. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  1341. package/dist/unstable/rpc/RpcServer.js +20 -15
  1342. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  1343. package/dist/unstable/rpc/RpcTest.js.map +1 -1
  1344. package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
  1345. package/dist/unstable/rpc/RpcWorker.js +4 -4
  1346. package/dist/unstable/rpc/RpcWorker.js.map +1 -1
  1347. package/dist/unstable/rpc/Utils.js.map +1 -1
  1348. package/dist/unstable/rpc/index.js.map +1 -1
  1349. package/dist/unstable/schema/Model.d.ts +53 -51
  1350. package/dist/unstable/schema/Model.d.ts.map +1 -1
  1351. package/dist/unstable/schema/Model.js +35 -33
  1352. package/dist/unstable/schema/Model.js.map +1 -1
  1353. package/dist/unstable/schema/VariantSchema.d.ts +11 -12
  1354. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  1355. package/dist/unstable/schema/VariantSchema.js +28 -17
  1356. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  1357. package/dist/unstable/schema/index.js.map +1 -1
  1358. package/dist/unstable/socket/Socket.d.ts +12 -4
  1359. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  1360. package/dist/unstable/socket/Socket.js +38 -17
  1361. package/dist/unstable/socket/Socket.js.map +1 -1
  1362. package/dist/unstable/socket/SocketServer.js.map +1 -1
  1363. package/dist/unstable/socket/index.js.map +1 -1
  1364. package/dist/unstable/sql/Migrator.d.ts +9 -1
  1365. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  1366. package/dist/unstable/sql/Migrator.js +15 -2
  1367. package/dist/unstable/sql/Migrator.js.map +1 -1
  1368. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  1369. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  1370. package/dist/unstable/sql/SqlClient.js +8 -4
  1371. package/dist/unstable/sql/SqlClient.js.map +1 -1
  1372. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  1373. package/dist/unstable/sql/SqlError.d.ts +2 -2
  1374. package/dist/unstable/sql/SqlError.js +15 -15
  1375. package/dist/unstable/sql/SqlError.js.map +1 -1
  1376. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  1377. package/dist/unstable/sql/SqlModel.js +2 -2
  1378. package/dist/unstable/sql/SqlModel.js.map +1 -1
  1379. package/dist/unstable/sql/SqlResolver.d.ts +5 -5
  1380. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  1381. package/dist/unstable/sql/SqlResolver.js +30 -24
  1382. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  1383. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  1384. package/dist/unstable/sql/SqlStream.js.map +1 -1
  1385. package/dist/unstable/sql/Statement.d.ts +6 -6
  1386. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  1387. package/dist/unstable/sql/Statement.js +30 -27
  1388. package/dist/unstable/sql/Statement.js.map +1 -1
  1389. package/dist/unstable/sql/index.js.map +1 -1
  1390. package/dist/unstable/workers/Transferable.d.ts +1 -1
  1391. package/dist/unstable/workers/Transferable.js +1 -1
  1392. package/dist/unstable/workers/Transferable.js.map +1 -1
  1393. package/dist/unstable/workers/Worker.d.ts +2 -2
  1394. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  1395. package/dist/unstable/workers/Worker.js +13 -14
  1396. package/dist/unstable/workers/Worker.js.map +1 -1
  1397. package/dist/unstable/workers/WorkerError.d.ts +7 -7
  1398. package/dist/unstable/workers/WorkerError.js +11 -11
  1399. package/dist/unstable/workers/WorkerError.js.map +1 -1
  1400. package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
  1401. package/dist/unstable/workers/WorkerRunner.js +1 -1
  1402. package/dist/unstable/workers/WorkerRunner.js.map +1 -1
  1403. package/dist/unstable/workers/index.js.map +1 -1
  1404. package/dist/unstable/workflow/Activity.d.ts +2 -2
  1405. package/dist/unstable/workflow/Activity.js +2 -2
  1406. package/dist/unstable/workflow/Activity.js.map +1 -1
  1407. package/dist/unstable/workflow/DurableClock.d.ts +1 -1
  1408. package/dist/unstable/workflow/DurableClock.js +1 -1
  1409. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  1410. package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
  1411. package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
  1412. package/dist/unstable/workflow/DurableDeferred.js +13 -8
  1413. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  1414. package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
  1415. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  1416. package/dist/unstable/workflow/DurableQueue.js +22 -20
  1417. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  1418. package/dist/unstable/workflow/Workflow.d.ts +21 -21
  1419. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  1420. package/dist/unstable/workflow/Workflow.js +13 -14
  1421. package/dist/unstable/workflow/Workflow.js.map +1 -1
  1422. package/dist/unstable/workflow/WorkflowEngine.d.ts +26 -3
  1423. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  1424. package/dist/unstable/workflow/WorkflowEngine.js +72 -6
  1425. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  1426. package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
  1427. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  1428. package/dist/unstable/workflow/WorkflowProxy.js +4 -2
  1429. package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
  1430. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  1431. package/dist/unstable/workflow/index.js.map +1 -1
  1432. package/dist/unstable/workflow/internal/crypto.js.map +1 -1
  1433. package/package.json +10 -14
  1434. package/src/Array.ts +1068 -1070
  1435. package/src/BigDecimal.ts +433 -756
  1436. package/src/BigInt.ts +213 -269
  1437. package/src/Boolean.ts +146 -188
  1438. package/src/Brand.ts +4 -4
  1439. package/src/Cache.ts +469 -851
  1440. package/src/Cause.ts +167 -277
  1441. package/src/Channel.ts +982 -831
  1442. package/src/ChannelSchema.ts +1 -1
  1443. package/src/Chunk.ts +841 -1181
  1444. package/src/Clock.ts +181 -49
  1445. package/src/Combiner.ts +20 -33
  1446. package/src/Config.ts +642 -335
  1447. package/src/ConfigProvider.ts +267 -135
  1448. package/src/Console.ts +289 -39
  1449. package/src/Context.ts +323 -404
  1450. package/src/Cron.ts +271 -219
  1451. package/src/Crypto.ts +30 -23
  1452. package/src/Data.ts +63 -82
  1453. package/src/DateTime.ts +564 -660
  1454. package/src/Deferred.ts +259 -258
  1455. package/src/Duration.ts +244 -311
  1456. package/src/Effect.ts +3215 -3394
  1457. package/src/Encoding.ts +22 -40
  1458. package/src/Equal.ts +59 -41
  1459. package/src/Equivalence.ts +103 -105
  1460. package/src/ErrorReporter.ts +51 -27
  1461. package/src/ExecutionPlan.ts +91 -56
  1462. package/src/Exit.ts +116 -192
  1463. package/src/Fiber.ts +82 -149
  1464. package/src/FiberHandle.ts +155 -107
  1465. package/src/FiberMap.ts +225 -174
  1466. package/src/FiberSet.ts +125 -83
  1467. package/src/FileSystem.ts +156 -264
  1468. package/src/Filter.ts +61 -33
  1469. package/src/Formatter.ts +69 -76
  1470. package/src/Function.ts +119 -151
  1471. package/src/Graph.ts +416 -770
  1472. package/src/HKT.ts +12 -6
  1473. package/src/Hash.ts +52 -83
  1474. package/src/HashMap.ts +319 -411
  1475. package/src/HashRing.ts +1 -0
  1476. package/src/HashSet.ts +177 -284
  1477. package/src/Inspectable.ts +22 -20
  1478. package/src/Iterable.ts +633 -797
  1479. package/src/JsonPatch.ts +60 -113
  1480. package/src/JsonPointer.ts +8 -8
  1481. package/src/JsonSchema.ts +408 -251
  1482. package/src/Latch.ts +23 -35
  1483. package/src/Layer.ts +366 -265
  1484. package/src/LayerMap.ts +49 -29
  1485. package/src/LayerRef.ts +6 -2
  1486. package/src/LogLevel.ts +114 -214
  1487. package/src/Logger.ts +348 -700
  1488. package/src/ManagedRuntime.ts +20 -5
  1489. package/src/Match.ts +217 -252
  1490. package/src/Metric.ts +520 -1092
  1491. package/src/MutableHashMap.ts +218 -255
  1492. package/src/MutableHashSet.ts +84 -89
  1493. package/src/MutableList.ts +77 -370
  1494. package/src/MutableRef.ts +420 -243
  1495. package/src/Newtype.ts +21 -14
  1496. package/src/NonEmptyIterable.ts +7 -137
  1497. package/src/Number.ts +196 -233
  1498. package/src/Optic.ts +303 -441
  1499. package/src/Option.ts +449 -813
  1500. package/src/Order.ts +109 -109
  1501. package/src/Ordering.ts +20 -23
  1502. package/src/PartitionedSemaphore.ts +1 -4
  1503. package/src/Path.ts +38 -41
  1504. package/src/Pipeable.ts +6 -5
  1505. package/src/PlatformError.ts +4 -4
  1506. package/src/Pool.ts +4 -2
  1507. package/src/Predicate.ts +200 -181
  1508. package/src/PrimaryKey.ts +7 -7
  1509. package/src/PubSub.ts +526 -552
  1510. package/src/Pull.ts +24 -18
  1511. package/src/Queue.ts +204 -165
  1512. package/src/Random.ts +49 -74
  1513. package/src/RcMap.ts +121 -63
  1514. package/src/RcRef.ts +24 -13
  1515. package/src/Record.ts +387 -487
  1516. package/src/Redactable.ts +10 -3
  1517. package/src/Redacted.ts +25 -25
  1518. package/src/Reducer.ts +8 -15
  1519. package/src/Ref.ts +221 -361
  1520. package/src/References.ts +102 -214
  1521. package/src/RegExp.ts +10 -14
  1522. package/src/Request.ts +36 -28
  1523. package/src/RequestResolver.ts +202 -91
  1524. package/src/Result.ts +314 -485
  1525. package/src/Runtime.ts +50 -75
  1526. package/src/Schedule.ts +311 -1737
  1527. package/src/Scheduler.ts +20 -7
  1528. package/src/Schema.ts +3475 -1913
  1529. package/src/SchemaAST.ts +902 -573
  1530. package/src/SchemaGetter.ts +351 -233
  1531. package/src/SchemaIssue.ts +367 -334
  1532. package/src/SchemaParser.ts +254 -148
  1533. package/src/SchemaRepresentation.ts +732 -3414
  1534. package/src/SchemaTransformation.ts +186 -97
  1535. package/src/Scope.ts +123 -151
  1536. package/src/ScopedCache.ts +1 -1
  1537. package/src/ScopedRef.ts +6 -4
  1538. package/src/Semaphore.ts +157 -54
  1539. package/src/Sink.ts +129 -114
  1540. package/src/Stdio.ts +24 -5
  1541. package/src/Stream.ts +2745 -3173
  1542. package/src/String.ts +275 -312
  1543. package/src/Struct.ts +114 -118
  1544. package/src/SubscriptionRef.ts +284 -252
  1545. package/src/Symbol.ts +3 -3
  1546. package/src/SynchronizedRef.ts +1 -1
  1547. package/src/Terminal.ts +3 -3
  1548. package/src/Tracer.ts +102 -55
  1549. package/src/Trie.ts +287 -679
  1550. package/src/Tuple.ts +99 -131
  1551. package/src/TxChunk.ts +201 -121
  1552. package/src/TxDeferred.ts +62 -46
  1553. package/src/TxHashMap.ts +645 -799
  1554. package/src/TxHashSet.ts +443 -356
  1555. package/src/TxPriorityQueue.ts +130 -98
  1556. package/src/TxPubSub.ts +107 -80
  1557. package/src/TxQueue.ts +215 -184
  1558. package/src/TxReentrantLock.ts +136 -101
  1559. package/src/TxRef.ts +51 -32
  1560. package/src/TxSemaphore.ts +129 -95
  1561. package/src/TxSubscriptionRef.ts +97 -70
  1562. package/src/Types.ts +127 -70
  1563. package/src/Unify.ts +45 -65
  1564. package/src/Utils.ts +23 -16
  1565. package/src/index.ts +0 -10
  1566. package/src/internal/core.ts +6 -5
  1567. package/src/internal/dateTime.ts +7 -1
  1568. package/src/internal/effect.ts +304 -134
  1569. package/src/internal/executionPlan.ts +106 -10
  1570. package/src/internal/hashMap.ts +20 -14
  1571. package/src/internal/matcher.ts +3 -3
  1572. package/src/internal/persistence.ts +2 -0
  1573. package/src/internal/rcRef.ts +24 -16
  1574. package/src/internal/record.ts +11 -7
  1575. package/src/internal/references.ts +3 -7
  1576. package/src/internal/schedule.ts +4 -4
  1577. package/src/internal/schema/annotations.ts +48 -1
  1578. package/src/internal/schema/fromJsonSchemaDocument.ts +977 -0
  1579. package/src/internal/schema/fromRepresentation.ts +339 -0
  1580. package/src/internal/schema/parser.ts +22 -0
  1581. package/src/internal/schema/schema.ts +46 -63
  1582. package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +9 -81
  1583. package/src/internal/schema/toCodeDocument.ts +572 -0
  1584. package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
  1585. package/src/internal/schema/toJsonSchemaDocument.ts +549 -0
  1586. package/src/internal/schema/toRepresentation.ts +404 -0
  1587. package/src/internal/stackTraceLimit.ts +3 -7
  1588. package/src/internal/trie.ts +21 -12
  1589. package/src/testing/FastCheck.ts +8 -7
  1590. package/src/testing/TestClock.ts +86 -32
  1591. package/src/testing/TestConsole.ts +32 -31
  1592. package/src/testing/TestSchema.ts +40 -40
  1593. package/src/unstable/ai/AiError.ts +119 -141
  1594. package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
  1595. package/src/unstable/ai/Chat.ts +133 -98
  1596. package/src/unstable/ai/EmbeddingModel.ts +1 -1
  1597. package/src/unstable/ai/IdGenerator.ts +32 -28
  1598. package/src/unstable/ai/LanguageModel.ts +141 -97
  1599. package/src/unstable/ai/McpProtocol.ts +48 -0
  1600. package/src/unstable/ai/McpSchema.ts +92 -81
  1601. package/src/unstable/ai/McpServer.ts +1057 -303
  1602. package/src/unstable/ai/Model.ts +9 -20
  1603. package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
  1604. package/src/unstable/ai/Prompt.ts +212 -63
  1605. package/src/unstable/ai/Response.ts +52 -38
  1606. package/src/unstable/ai/Telemetry.ts +46 -13
  1607. package/src/unstable/ai/Tokenizer.ts +14 -3
  1608. package/src/unstable/ai/Tool.ts +81 -48
  1609. package/src/unstable/ai/Toolkit.ts +45 -15
  1610. package/src/unstable/ai/index.ts +5 -0
  1611. package/src/unstable/ai/internal/codec-transformer.ts +13 -7
  1612. package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
  1613. package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
  1614. package/src/unstable/ai/internal/structured-output.ts +453 -0
  1615. package/src/unstable/cli/Argument.ts +279 -72
  1616. package/src/unstable/cli/CliError.ts +159 -91
  1617. package/src/unstable/cli/CliOutput.ts +44 -58
  1618. package/src/unstable/cli/Command.ts +764 -124
  1619. package/src/unstable/cli/Flag.ts +418 -138
  1620. package/src/unstable/cli/GlobalFlag.ts +1 -1
  1621. package/src/unstable/cli/HelpDoc.ts +12 -4
  1622. package/src/unstable/cli/Param.ts +336 -100
  1623. package/src/unstable/cli/Primitive.ts +383 -156
  1624. package/src/unstable/cli/Prompt.ts +64 -34
  1625. package/src/unstable/cli/internal/ansi.ts +2 -2
  1626. package/src/unstable/cli/internal/command.ts +28 -15
  1627. package/src/unstable/cli/internal/completions/bash.ts +59 -9
  1628. package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
  1629. package/src/unstable/cli/internal/completions/fish.ts +5 -7
  1630. package/src/unstable/cli/internal/config.ts +8 -10
  1631. package/src/unstable/cli/internal/help.ts +4 -2
  1632. package/src/unstable/cli/internal/lexer.ts +8 -2
  1633. package/src/unstable/cli/internal/parser.ts +5 -5
  1634. package/src/unstable/cli/internal/wizard.ts +2 -2
  1635. package/src/unstable/cluster/ClusterError.ts +7 -7
  1636. package/src/unstable/cluster/ClusterSchema.ts +8 -8
  1637. package/src/unstable/cluster/ClusterWorkflowEngine.ts +36 -20
  1638. package/src/unstable/cluster/Entity.ts +23 -19
  1639. package/src/unstable/cluster/EntityProxy.ts +16 -7
  1640. package/src/unstable/cluster/EntityResource.ts +2 -2
  1641. package/src/unstable/cluster/Envelope.ts +5 -4
  1642. package/src/unstable/cluster/HttpRunner.ts +6 -4
  1643. package/src/unstable/cluster/Message.ts +9 -9
  1644. package/src/unstable/cluster/MessageStorage.ts +24 -20
  1645. package/src/unstable/cluster/Reply.ts +26 -7
  1646. package/src/unstable/cluster/Runner.ts +1 -1
  1647. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  1648. package/src/unstable/cluster/RunnerHealth.ts +1 -1
  1649. package/src/unstable/cluster/RunnerServer.ts +45 -18
  1650. package/src/unstable/cluster/RunnerStorage.ts +11 -9
  1651. package/src/unstable/cluster/Runners.ts +48 -26
  1652. package/src/unstable/cluster/ShardId.ts +1 -1
  1653. package/src/unstable/cluster/Sharding.ts +223 -55
  1654. package/src/unstable/cluster/ShardingConfig.ts +8 -4
  1655. package/src/unstable/cluster/SingleRunner.ts +4 -2
  1656. package/src/unstable/cluster/SingletonAddress.ts +1 -1
  1657. package/src/unstable/cluster/Snowflake.ts +8 -8
  1658. package/src/unstable/cluster/SqlMessageStorage.ts +84 -36
  1659. package/src/unstable/cluster/SqlRunnerStorage.ts +223 -133
  1660. package/src/unstable/cluster/internal/entityManager.ts +43 -26
  1661. package/src/unstable/cluster/internal/resourceMap.ts +5 -2
  1662. package/src/unstable/cluster/internal/resourceRef.ts +27 -5
  1663. package/src/unstable/cluster/internal/shardLock.ts +9 -0
  1664. package/src/unstable/devtools/DevToolsClient.ts +3 -2
  1665. package/src/unstable/devtools/DevToolsSchema.ts +10 -5
  1666. package/src/unstable/encoding/Ini.ts +174 -0
  1667. package/src/unstable/encoding/Msgpack.ts +61 -40
  1668. package/src/unstable/encoding/Ndjson.ts +9 -1
  1669. package/src/unstable/encoding/Sse.ts +109 -37
  1670. package/src/unstable/encoding/Toml.ts +504 -0
  1671. package/src/unstable/encoding/Yaml.ts +541 -0
  1672. package/src/unstable/encoding/index.ts +15 -0
  1673. package/src/unstable/eventlog/Event.ts +20 -20
  1674. package/src/unstable/eventlog/EventGroup.ts +4 -4
  1675. package/src/unstable/eventlog/EventJournal.ts +30 -22
  1676. package/src/unstable/eventlog/EventLog.ts +24 -14
  1677. package/src/unstable/eventlog/EventLogEncryption.ts +17 -18
  1678. package/src/unstable/eventlog/EventLogMessage.ts +15 -9
  1679. package/src/unstable/eventlog/EventLogRemote.ts +5 -5
  1680. package/src/unstable/eventlog/EventLogServer.ts +41 -7
  1681. package/src/unstable/eventlog/EventLogServerEncrypted.ts +15 -7
  1682. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +15 -7
  1683. package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
  1684. package/src/unstable/eventlog/SqlEventJournal.ts +8 -6
  1685. package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
  1686. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
  1687. package/src/unstable/http/Cookies.ts +64 -45
  1688. package/src/unstable/http/Etag.ts +1 -1
  1689. package/src/unstable/http/FetchHttpClient.ts +3 -1
  1690. package/src/unstable/http/FindMyWay/internal/queryString.ts +420 -0
  1691. package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
  1692. package/src/unstable/http/FindMyWay.ts +65 -6
  1693. package/src/unstable/http/Headers.ts +10 -10
  1694. package/src/unstable/http/HttpBody.ts +20 -5
  1695. package/src/unstable/http/HttpClient.ts +215 -78
  1696. package/src/unstable/http/HttpClientError.ts +1 -1
  1697. package/src/unstable/http/HttpClientRequest.ts +59 -12
  1698. package/src/unstable/http/HttpClientResponse.ts +5 -21
  1699. package/src/unstable/http/HttpEffect.ts +20 -19
  1700. package/src/unstable/http/HttpMethod.ts +6 -9
  1701. package/src/unstable/http/HttpMiddleware.ts +202 -39
  1702. package/src/unstable/http/HttpPlatform.ts +129 -6
  1703. package/src/unstable/http/HttpRouter.ts +109 -101
  1704. package/src/unstable/http/HttpServer.ts +13 -13
  1705. package/src/unstable/http/HttpServerError.ts +2 -2
  1706. package/src/unstable/http/HttpServerRequest.ts +31 -17
  1707. package/src/unstable/http/HttpServerResponse.ts +38 -6
  1708. package/src/unstable/http/HttpStaticServer.ts +35 -7
  1709. package/src/unstable/http/Multipart.ts +67 -36
  1710. package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
  1711. package/src/unstable/http/MultipartParser/Search.ts +17 -0
  1712. package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
  1713. package/src/unstable/http/MultipartParser/internal/headers.ts +244 -0
  1714. package/src/unstable/http/MultipartParser/internal/multipart.ts +279 -0
  1715. package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
  1716. package/src/unstable/http/MultipartParser.ts +115 -0
  1717. package/src/unstable/http/Template.ts +7 -6
  1718. package/src/unstable/http/Url.ts +33 -63
  1719. package/src/unstable/http/UrlParams.ts +27 -32
  1720. package/src/unstable/http/index.ts +1 -1
  1721. package/src/unstable/http/internal/compression.ts +196 -0
  1722. package/src/unstable/http/internal/httpBody.ts +15 -0
  1723. package/src/unstable/httpapi/HttpApi.ts +10 -11
  1724. package/src/unstable/httpapi/HttpApiBuilder.ts +154 -33
  1725. package/src/unstable/httpapi/HttpApiClient.ts +142 -61
  1726. package/src/unstable/httpapi/HttpApiEndpoint.ts +159 -71
  1727. package/src/unstable/httpapi/HttpApiError.ts +46 -52
  1728. package/src/unstable/httpapi/HttpApiGroup.ts +17 -17
  1729. package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
  1730. package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
  1731. package/src/unstable/httpapi/HttpApiSchema.ts +359 -6
  1732. package/src/unstable/httpapi/OpenApi.ts +153 -62
  1733. package/src/unstable/observability/OtlpExporter.ts +130 -12
  1734. package/src/unstable/observability/OtlpLogger.ts +8 -6
  1735. package/src/unstable/observability/OtlpMetrics.ts +42 -21
  1736. package/src/unstable/observability/OtlpResource.ts +26 -17
  1737. package/src/unstable/observability/OtlpTracer.ts +9 -5
  1738. package/src/unstable/observability/PrometheusMetrics.ts +13 -4
  1739. package/src/unstable/observability/internal/otlpEnv.ts +1 -1
  1740. package/src/unstable/observability/internal/protobuf.ts +3 -0
  1741. package/src/unstable/persistence/KeyValueStore.ts +72 -49
  1742. package/src/unstable/persistence/Persistable.ts +11 -10
  1743. package/src/unstable/persistence/PersistedQueue.ts +18 -15
  1744. package/src/unstable/persistence/Persistence.ts +153 -26
  1745. package/src/unstable/persistence/RateLimiter.ts +79 -45
  1746. package/src/unstable/persistence/Redis.ts +5 -5
  1747. package/src/unstable/process/ChildProcess.ts +72 -21
  1748. package/src/unstable/process/ChildProcessSpawner.ts +22 -11
  1749. package/src/unstable/reactivity/AsyncResult.ts +23 -18
  1750. package/src/unstable/reactivity/Atom.ts +161 -47
  1751. package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
  1752. package/src/unstable/reactivity/AtomRegistry.ts +25 -4
  1753. package/src/unstable/reactivity/AtomRpc.ts +5 -4
  1754. package/src/unstable/reactivity/Hydration.ts +1 -1
  1755. package/src/unstable/rpc/Rpc.ts +35 -33
  1756. package/src/unstable/rpc/RpcClient.ts +65 -29
  1757. package/src/unstable/rpc/RpcClientError.ts +2 -2
  1758. package/src/unstable/rpc/RpcGroup.ts +8 -8
  1759. package/src/unstable/rpc/RpcMessage.ts +31 -30
  1760. package/src/unstable/rpc/RpcMiddleware.ts +10 -10
  1761. package/src/unstable/rpc/RpcSchema.ts +4 -4
  1762. package/src/unstable/rpc/RpcSerialization.ts +167 -68
  1763. package/src/unstable/rpc/RpcServer.ts +22 -17
  1764. package/src/unstable/rpc/RpcWorker.ts +5 -5
  1765. package/src/unstable/schema/Model.ts +52 -50
  1766. package/src/unstable/schema/VariantSchema.ts +51 -43
  1767. package/src/unstable/socket/Socket.ts +42 -19
  1768. package/src/unstable/sql/Migrator.ts +22 -9
  1769. package/src/unstable/sql/SqlClient.ts +64 -56
  1770. package/src/unstable/sql/SqlError.ts +15 -15
  1771. package/src/unstable/sql/SqlModel.ts +2 -2
  1772. package/src/unstable/sql/SqlResolver.ts +41 -31
  1773. package/src/unstable/sql/Statement.ts +44 -37
  1774. package/src/unstable/workers/Transferable.ts +1 -1
  1775. package/src/unstable/workers/Worker.ts +15 -16
  1776. package/src/unstable/workers/WorkerError.ts +12 -12
  1777. package/src/unstable/workers/WorkerRunner.ts +1 -1
  1778. package/src/unstable/workflow/Activity.ts +2 -2
  1779. package/src/unstable/workflow/DurableClock.ts +1 -1
  1780. package/src/unstable/workflow/DurableDeferred.ts +18 -13
  1781. package/src/unstable/workflow/DurableQueue.ts +22 -20
  1782. package/src/unstable/workflow/Workflow.ts +23 -26
  1783. package/src/unstable/workflow/WorkflowEngine.ts +111 -8
  1784. package/src/unstable/workflow/WorkflowProxy.ts +4 -2
  1785. package/dist/SchemaError.d.ts +0 -53
  1786. package/dist/SchemaError.d.ts.map +0 -1
  1787. package/dist/SchemaError.js +0 -61
  1788. package/dist/SchemaError.js.map +0 -1
  1789. package/dist/SchemaUtils.d.ts +0 -28
  1790. package/dist/SchemaUtils.d.ts.map +0 -1
  1791. package/dist/SchemaUtils.js +0 -45
  1792. package/dist/SchemaUtils.js.map +0 -1
  1793. package/dist/internal/schema/arbitrary.d.ts +0 -5
  1794. package/dist/internal/schema/arbitrary.d.ts.map +0 -1
  1795. package/dist/internal/schema/arbitrary.js.map +0 -1
  1796. package/dist/internal/schema/equivalence.d.ts +0 -2
  1797. package/dist/internal/schema/equivalence.d.ts.map +0 -1
  1798. package/dist/internal/schema/equivalence.js.map +0 -1
  1799. package/dist/internal/schema/representation.d.ts +0 -2
  1800. package/dist/internal/schema/representation.d.ts.map +0 -1
  1801. package/dist/internal/schema/representation.js +0 -865
  1802. package/dist/internal/schema/representation.js.map +0 -1
  1803. package/dist/internal/version.d.ts +0 -3
  1804. package/dist/internal/version.d.ts.map +0 -1
  1805. package/dist/internal/version.js +0 -2
  1806. package/dist/internal/version.js.map +0 -1
  1807. package/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
  1808. package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
  1809. package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
  1810. package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
  1811. package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
  1812. package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
  1813. package/dist/unstable/http/Multipasta/Node.js +0 -14
  1814. package/dist/unstable/http/Multipasta/Node.js.map +0 -1
  1815. package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
  1816. package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
  1817. package/dist/unstable/http/Multipasta/Search.js +0 -14
  1818. package/dist/unstable/http/Multipasta/Search.js.map +0 -1
  1819. package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
  1820. package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
  1821. package/dist/unstable/http/Multipasta/Web.js +0 -14
  1822. package/dist/unstable/http/Multipasta/Web.js.map +0 -1
  1823. package/dist/unstable/http/Multipasta.d.ts +0 -15
  1824. package/dist/unstable/http/Multipasta.d.ts.map +0 -1
  1825. package/dist/unstable/http/Multipasta.js +0 -15
  1826. package/dist/unstable/http/Multipasta.js.map +0 -1
  1827. package/src/SchemaError.ts +0 -64
  1828. package/src/SchemaUtils.ts +0 -51
  1829. package/src/internal/schema/representation.ts +0 -795
  1830. package/src/internal/version.ts +0 -2
  1831. package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
  1832. package/src/unstable/http/Multipasta/Node.ts +0 -14
  1833. package/src/unstable/http/Multipasta/Search.ts +0 -14
  1834. package/src/unstable/http/Multipasta/Web.ts +0 -14
  1835. 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, memoizeIdempotent } from "./Function.ts"
21
20
  import { effectIsExit, iterateEager } from "./internal/effect.ts"
22
- import * as internalRecord from "./internal/record.ts"
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"
@@ -451,6 +450,8 @@ export type Encoding = readonly [Link, ...Array<Link>]
451
450
  * transformations.
452
451
  * - `concurrency` — maximum number of async parse effects to run concurrently;
453
452
  * defaults to `1`, or use `"unbounded"`.
453
+ * - `reportInput` — includes rejected input values in value-bearing schema
454
+ * issues.
454
455
  *
455
456
  * @category options
456
457
  * @since 3.10.0
@@ -517,6 +518,35 @@ export interface ParseOptions {
517
518
  * @default 1
518
519
  */
519
520
  readonly concurrency?: number | "unbounded" | undefined
521
+
522
+ /**
523
+ * Whether schema issues should retain and report rejected input values.
524
+ *
525
+ * **Details**
526
+ *
527
+ * When enabled, value-bearing issues created by the parser expose an `input`
528
+ * field. Built-in formatters may include reported input in default messages.
529
+ * The input is retained by reference rather than copied.
530
+ *
531
+ * **Gotchas**
532
+ *
533
+ * Enabling this option can retain or disclose secrets, personally
534
+ * identifiable information, and large object graphs. The `input` field is
535
+ * enumerable and may be included by object enumeration, spread, or
536
+ * serialization. Disabling it on a nested schema does not redact that value
537
+ * from an ancestor issue whose input reporting remains enabled. Issues
538
+ * returned directly by user-defined declarations, checks, transformations,
539
+ * and middleware are not modified; their authors decide whether to retain an
540
+ * input. To respect this option, pass the callback's input and parse options
541
+ * directly to a value-bearing issue constructor. Custom messages and
542
+ * annotations remain the caller's responsibility regardless of this option.
543
+ * Formatting an issue with `SchemaIssue.makeFormatterDefault()`, reading
544
+ * `SchemaError.message`, or formatting a Standard Schema failure can disclose
545
+ * retained input.
546
+ *
547
+ * @default false
548
+ */
549
+ readonly reportInput?: boolean | undefined
520
550
  }
521
551
 
522
552
  /** @internal */
@@ -533,7 +563,7 @@ export const defaultParseOptions: ParseOptions = {}
533
563
  *
534
564
  * - `isOptional` — the property key may be absent from the input.
535
565
  * - `isMutable` — the property is `readonly` when `false`.
536
- * - `defaultValue` — an {@link Encoding} applied during construction to
566
+ * - `constructorDefault` — a {@link Link} applied during construction to
537
567
  * supply missing values.
538
568
  * - `annotations` — key-level annotations (e.g. description of the key
539
569
  * itself).
@@ -547,19 +577,19 @@ export class Context {
547
577
  readonly isOptional: boolean
548
578
  readonly isMutable: boolean
549
579
  /** Used for constructor default values (e.g. `withConstructorDefault` API) */
550
- readonly defaultValue: Encoding | undefined
580
+ readonly constructorDefault: Link | undefined
551
581
  readonly annotations: Schema.Annotations.Key<unknown> | undefined
552
582
 
553
583
  constructor(
554
584
  isOptional: boolean,
555
585
  isMutable: boolean,
556
586
  /** Used for constructor default values (e.g. `withConstructorDefault` API) */
557
- defaultValue: Encoding | undefined = undefined,
587
+ constructorDefault: Link | undefined = undefined,
558
588
  annotations: Schema.Annotations.Key<unknown> | undefined = undefined
559
589
  ) {
560
590
  this.isOptional = isOptional
561
591
  this.isMutable = isMutable
562
- this.defaultValue = defaultValue
592
+ this.constructorDefault = constructorDefault
563
593
  this.annotations = annotations
564
594
  }
565
595
  }
@@ -672,10 +702,10 @@ export class Declaration extends Base {
672
702
  }
673
703
  /** @internal */
674
704
  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)
705
+ let run: ReturnType<typeof this.run>
706
+ return (input, options) => {
707
+ if (input === InternalParser.missing) return InternalParser.missingExit
708
+ return (run ??= this.run(this.typeParameters))(input, this, options)
679
709
  }
680
710
  }
681
711
  private _rebuild(recur: (ast: AST) => AST, checks: Checks | undefined, encodingChecks: Checks | undefined) {
@@ -816,7 +846,8 @@ export class Void extends Base {
816
846
  readonly _tag = "Void"
817
847
  /** @internal */
818
848
  getParser() {
819
- return fromAnyToConst(undefined)
849
+ const succeed = InternalParser.succeed(undefined)
850
+ return (input: unknown) => input === InternalParser.missing ? InternalParser.missingExit : succeed
820
851
  }
821
852
  /** @internal */
822
853
  toCodecJson(): AST {
@@ -1080,9 +1111,9 @@ function isTemplateLiteralPart(ast: AST): ast is TemplateLiteralPart {
1080
1111
  return true
1081
1112
  case "Literal":
1082
1113
  case "TemplateLiteral":
1083
- return ast.checks === undefined
1114
+ return !ast.checks
1084
1115
  case "Union":
1085
- return ast.checks === undefined && ast.types.every(isTemplateLiteralPart)
1116
+ return !ast.checks && ast.types.every(isTemplateLiteralPart)
1086
1117
  default:
1087
1118
  return false
1088
1119
  }
@@ -1106,6 +1137,10 @@ export class TemplateLiteral extends Base {
1106
1137
  readonly parts: ReadonlyArray<AST>
1107
1138
  /** @internal */
1108
1139
  readonly encodedParts: ReadonlyArray<TemplateLiteralPart>
1140
+ /** @internal */
1141
+ readonly literals: ReadonlyArray<string | undefined>
1142
+ /** @internal */
1143
+ readonly suffixLengths: ReadonlyArray<number>
1109
1144
 
1110
1145
  constructor(
1111
1146
  parts: ReadonlyArray<AST>,
@@ -1116,25 +1151,40 @@ export class TemplateLiteral extends Base {
1116
1151
  ) {
1117
1152
  super(annotations, checks, encoding, context)
1118
1153
  const encodedParts: Array<TemplateLiteralPart> = []
1154
+ const literals: Array<string | undefined> = []
1119
1155
  for (const part of parts) {
1120
1156
  const encoded = toEncoded(part)
1121
1157
  if (isTemplateLiteralPart(encoded)) {
1122
1158
  encodedParts.push(encoded)
1159
+ literals.push(encoded._tag === "Literal" ? globalThis.String(encoded.literal) : undefined)
1123
1160
  } else {
1124
1161
  throw new Error(`Invalid TemplateLiteral part ${encoded._tag}`)
1125
1162
  }
1126
1163
  }
1164
+ const suffixLengths = new Array<number>(encodedParts.length + 1)
1165
+ suffixLengths[encodedParts.length] = 0
1166
+ for (let i = encodedParts.length - 1; i >= 0; i--) {
1167
+ suffixLengths[i] = suffixLengths[i + 1] + (literals[i]?.length ?? 0)
1168
+ }
1127
1169
  this.parts = parts
1128
1170
  this.encodedParts = encodedParts
1171
+ this.literals = literals
1172
+ this.suffixLengths = suffixLengths
1129
1173
  }
1130
1174
  /** @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])
1175
+ getParser(compile: SchemaParser.Compiler): SchemaParser.Parser {
1176
+ const parser = compile(this.asTemplateLiteralParser())
1177
+ return (input, options) => {
1178
+ if (input === InternalParser.missing) return InternalParser.missingExit
1179
+ const result = parser(input, options)
1180
+ if ((result as Exit.Exit<unknown, unknown>)._tag === "Success") {
1181
+ return InternalParser.sameExit
1182
+ }
1183
+ return Effect.mapBothEager(result, {
1184
+ onSuccess: () => input,
1185
+ onFailure: (issue) => new SchemaIssue.Composite(this, [issue], input, options)
1137
1186
  })
1187
+ }
1138
1188
  }
1139
1189
  /** @internal */
1140
1190
  getExpected(): string {
@@ -1142,7 +1192,7 @@ export class TemplateLiteral extends Base {
1142
1192
  }
1143
1193
  /** @internal */
1144
1194
  matchPart(s: string, options: ParseOptions): string | undefined {
1145
- return segmentTemplateLiteralParts(this.encodedParts, s, options) === undefined ? undefined : s
1195
+ return segmentTemplateLiteralParts(this, s, options) === undefined ? undefined : s
1146
1196
  }
1147
1197
  /** @internal */
1148
1198
  asTemplateLiteralParser(): Arrays {
@@ -1152,12 +1202,14 @@ export class TemplateLiteral extends Base {
1152
1202
  tuple,
1153
1203
  new SchemaTransformation.Transformation(
1154
1204
  SchemaGetter.transformOrFail((s: string, options) => {
1155
- const segments = segmentTemplateLiteralParts(this.encodedParts, s, options)
1156
- if (segments !== undefined) return Effect.succeed(segments)
1205
+ const segments = segmentTemplateLiteralParts(this, s, options)
1206
+ if (segments) return Effect.succeed(segments)
1157
1207
  return Effect.fail(
1158
- new SchemaIssue.InvalidValue(Option.some(s), {
1159
- message: `Expected a string matching template literal parts, got ${format(s)}`
1160
- })
1208
+ new SchemaIssue.InvalidValue(
1209
+ { expected: "a string matching template literal parts" },
1210
+ s,
1211
+ options
1212
+ )
1161
1213
  )
1162
1214
  }),
1163
1215
  SchemaGetter.transform((parts) => parts.join(""))
@@ -1228,11 +1280,11 @@ export type LiteralValue = string | number | boolean | bigint
1228
1280
  *
1229
1281
  * **Example** (Creating a literal AST)
1230
1282
  *
1231
- * ```ts
1283
+ * ```ts import.meta.vitest
1232
1284
  * import { SchemaAST } from "effect"
1233
1285
  *
1234
1286
  * const ast = new SchemaAST.Literal("active")
1235
- * console.log(ast.literal) // "active"
1287
+ * ast.literal // => "active"
1236
1288
  * ```
1237
1289
  *
1238
1290
  * @see {@link LiteralValue}
@@ -1309,7 +1361,8 @@ export class String extends Base {
1309
1361
  }
1310
1362
  /** @internal */
1311
1363
  matchPart(s: string, options: ParseOptions): string | undefined {
1312
- return applyTemplateLiteralPartChecks(this, s, options)
1364
+ const checks = this.checks
1365
+ return checks && !options.disableChecks && collectIssues(checks, s, undefined, this, options) ? undefined : s
1313
1366
  }
1314
1367
  /** @internal */
1315
1368
  getExpected(): string {
@@ -1366,20 +1419,24 @@ export class Number extends Base {
1366
1419
  return this._match(isStringFiniteRegExp, s, options)
1367
1420
  }
1368
1421
  private _match(regexp: RegExp, s: string, options: ParseOptions): number | undefined {
1369
- return regexp.test(s)
1370
- ? applyTemplateLiteralPartChecks(this, globalThis.Number(s), options)
1371
- : undefined
1422
+ if (!regexp.test(s)) return undefined
1423
+ const value = globalThis.Number(s)
1424
+ if (options.disableChecks || !this.checks) return value
1425
+ return collectIssues(this.checks, value, undefined, this, options) ? undefined : value
1372
1426
  }
1373
1427
  /** @internal */
1374
1428
  toCodecJson(): AST {
1375
- if (this.checks && (hasCheck(this.checks, "isFinite") || hasCheck(this.checks, "isInt"))) {
1429
+ if (
1430
+ this.checks &&
1431
+ (hasCheck(this.checks, "effect/schema/isFinite") || hasCheck(this.checks, "effect/schema/isInt"))
1432
+ ) {
1376
1433
  return this
1377
1434
  }
1378
- return replaceEncoding(this, [numberToJson])
1435
+ return replaceEncoding(this, [numberToJson(this.checks)])
1379
1436
  }
1380
1437
  /** @internal */
1381
1438
  toCodecStringTree(): AST {
1382
- if (this.checks && (hasCheck(this.checks, "isFinite") || hasCheck(this.checks, "isInt"))) {
1439
+ if (this.toCodecJson() === this) {
1383
1440
  return replaceEncoding(this, [finiteToString])
1384
1441
  }
1385
1442
  return replaceEncoding(this, [numberToString])
@@ -1390,16 +1447,25 @@ export class Number extends Base {
1390
1447
  }
1391
1448
  }
1392
1449
 
1393
- // oxlint-disable-next-line only-used-in-recursion - @gcanti what's this? :-)
1394
- function hasCheck(checks: ReadonlyArray<Check<unknown>>, tag: string): boolean {
1395
- return checks.some((c) => {
1396
- switch (c._tag) {
1397
- case "Filter":
1398
- return c.annotations?.meta?._tag === tag
1399
- case "FilterGroup":
1400
- return hasCheck(c.checks, tag)
1401
- }
1402
- })
1450
+ function hasCheck(checks: ReadonlyArray<Check<unknown>>, id: string): boolean {
1451
+ return checks.some((check) =>
1452
+ check.annotations?.representation?.id === id ||
1453
+ (check._tag === "FilterGroup" && hasCheck(check.checks, id))
1454
+ )
1455
+ }
1456
+
1457
+ function numberToJson(checks: Checks | undefined): Link {
1458
+ const encodedFinite = !checks
1459
+ ? finite
1460
+ : appendChecks(finite, checks)
1461
+
1462
+ return new Link(
1463
+ new Union([encodedFinite, nonFiniteLiterals], "anyOf"),
1464
+ new SchemaTransformation.Transformation(
1465
+ SchemaGetter.Number(),
1466
+ SchemaGetter.transform((n) => globalThis.Number.isFinite(n) ? n : globalThis.String(n))
1467
+ )
1468
+ )
1403
1469
  }
1404
1470
 
1405
1471
  /**
@@ -1481,7 +1547,8 @@ export class Symbol extends Base {
1481
1547
  }
1482
1548
  /** @internal */
1483
1549
  matchKey(s: symbol, options: ParseOptions): symbol | undefined {
1484
- return applyTemplateLiteralPartChecks(this, s, options)
1550
+ if (options.disableChecks || !this.checks) return s
1551
+ return collectIssues(this.checks, s, undefined, this, options) ? undefined : s
1485
1552
  }
1486
1553
  /** @internal */
1487
1554
  toCodecStringTree(): AST {
@@ -1534,9 +1601,10 @@ export class BigInt extends Base {
1534
1601
  }
1535
1602
  /** @internal */
1536
1603
  matchPart(s: string, options: ParseOptions): bigint | undefined {
1537
- return isStringBigIntRegExp.test(s)
1538
- ? applyTemplateLiteralPartChecks(this, globalThis.BigInt(s), options)
1539
- : undefined
1604
+ if (!isStringBigIntRegExp.test(s)) return undefined
1605
+ const value = globalThis.BigInt(s)
1606
+ if (options.disableChecks || !this.checks) return value
1607
+ return collectIssues(this.checks, value, undefined, this, options) ? undefined : value
1540
1608
  }
1541
1609
  /** @internal */
1542
1610
  toCodecStringTree(): AST {
@@ -1590,15 +1658,14 @@ export const bigInt = new BigInt()
1590
1658
  *
1591
1659
  * **Example** (Inspecting a tuple AST)
1592
1660
  *
1593
- * ```ts
1661
+ * ```ts import.meta.vitest
1594
1662
  * import { Schema, SchemaAST } from "effect"
1595
1663
  *
1596
1664
  * const schema = Schema.Tuple([Schema.String, Schema.Number])
1597
1665
  * const ast = schema.ast
1598
1666
  *
1599
1667
  * if (SchemaAST.isArrays(ast)) {
1600
- * console.log(ast.elements.length) // 2
1601
- * console.log(ast.rest.length) // 0
1668
+ * [ast.elements.length, ast.rest.length] // => [2, 0]
1602
1669
  * }
1603
1670
  * ```
1604
1671
  *
@@ -1630,58 +1697,71 @@ export class Arrays extends Base {
1630
1697
  this.rest = rest
1631
1698
  this.encodingChecks = encodingChecks
1632
1699
 
1633
- // A required element cannot follow an optional element. ts(1257)
1634
- const i = elements.findIndex(isOptional)
1635
- if (i !== -1 && (elements.slice(i + 1).some((e) => !isOptional(e)) || rest.length > 1)) {
1700
+ let hasOptional = false
1701
+ for (let i = 0; i < elements.length; i++) {
1702
+ if (isOptional(elements[i])) {
1703
+ hasOptional = true
1704
+ } else if (hasOptional) {
1705
+ throw new Error("A required element cannot follow an optional element. ts(1257)")
1706
+ }
1707
+ }
1708
+ if (hasOptional && rest.length > 1) {
1636
1709
  throw new Error("A required element cannot follow an optional element. ts(1257)")
1637
1710
  }
1638
1711
 
1639
1712
  // An optional element cannot follow a rest element.ts(1266)
1640
- if (rest.length > 1 && rest.slice(1).some(isOptional)) {
1641
- throw new Error("An optional element cannot follow a rest element. ts(1266)")
1713
+ for (let i = 1; i < rest.length; i++) {
1714
+ if (isOptional(rest[i])) {
1715
+ throw new Error("An optional element cannot follow a rest element. ts(1266)")
1716
+ }
1642
1717
  }
1643
1718
  }
1644
1719
  /** @internal */
1645
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
1720
+ getParser(
1721
+ compile: SchemaParser.Compiler,
1722
+ compileConstructorDefault: SchemaParser.Compiler = compile
1723
+ ): SchemaParser.Parser {
1646
1724
  // oxlint-disable-next-line @typescript-eslint/no-this-alias
1647
1725
  const ast = this
1648
- const elements = ast.elements.map((ast) => ({ ast, parser: recur(ast) }))
1649
- const rest = ast.rest.map((ast) => ({ ast, parser: recur(ast) }))
1650
- const elementLen = elements.length
1651
-
1652
- const [head, ...tail] = rest
1653
- const tailLen = tail.length
1726
+ type ElementParser = { readonly ast: AST; readonly parser: SchemaParser.Parser }
1727
+ let elements: Array<ElementParser> | undefined
1728
+ let rest: Array<ElementParser> | undefined
1729
+ const elementLen = ast.elements.length
1730
+ const tailLen = Math.max(0, ast.rest.length - 1)
1654
1731
 
1655
1732
  function getParser(
1656
1733
  tailThreshold: number,
1657
1734
  index: number
1658
1735
  ): { readonly ast: AST; readonly parser: SchemaParser.Parser } {
1659
1736
  if (index < elementLen) {
1660
- return elements[index]
1737
+ return elements![index]
1661
1738
  } else if (index >= tailThreshold) {
1662
- return tail[index - tailThreshold]
1739
+ return rest![index - tailThreshold + 1]
1663
1740
  }
1664
- return head
1741
+ return rest![0]
1665
1742
  }
1666
1743
 
1667
- return Effect.fnUntracedEager(function*(oinput, options) {
1668
- if (oinput._tag === "None") {
1669
- return oinput
1744
+ return Effect.fnUntracedEager(function*(input, options) {
1745
+ if (input === InternalParser.missing) {
1746
+ return InternalParser.missing
1670
1747
  }
1671
- const input = oinput.value
1672
1748
 
1673
1749
  // If the input is not an array, return early with an error
1674
1750
  if (!Array.isArray(input)) {
1675
- return yield* Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
1751
+ return yield* Effect.fail(new SchemaIssue.InvalidType(ast, input, options))
1752
+ }
1753
+ if (!elements) {
1754
+ elements = ast.elements.map((ast) => ({ ast, parser: compileConstructorDefault(ast) }))
1755
+ rest = ast.rest.map((ast) => ({ ast, parser: compileConstructorDefault(ast) }))
1676
1756
  }
1677
1757
 
1678
1758
  const len = input.length
1679
1759
  const state = {
1680
1760
  ast,
1681
1761
  getParser,
1682
- oinput,
1762
+ input,
1683
1763
  len,
1684
- tailThreshold: resolveTailThreshold(len, elementLen, tailLen),
1764
+ tailThreshold: Math.max(elementLen, len - tailLen),
1685
1765
  output: new globalThis.Array(len),
1686
1766
  issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
1687
1767
  options
@@ -1698,19 +1778,24 @@ export class Arrays extends Base {
1698
1778
  // ---------------------------------------------
1699
1779
  if (ast.rest.length === 0 && len > elementLen) {
1700
1780
  for (let i = elementLen; i <= len - 1; i++) {
1701
- const issue = new SchemaIssue.Pointer([i], new SchemaIssue.UnexpectedKey(ast, input[i]))
1781
+ const unexpected = new SchemaIssue.UnexpectedKey(ast, input[i], options)
1782
+ const issue = new SchemaIssue.Pointer([i], unexpected)
1702
1783
  if (options.errors === "all") {
1703
1784
  if (state.issues) state.issues.push(issue)
1704
1785
  else state.issues = [issue]
1705
1786
  } else {
1706
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, [issue]))
1787
+ return yield* Effect.fail(
1788
+ new SchemaIssue.Composite(ast, [issue], input, options)
1789
+ )
1707
1790
  }
1708
1791
  }
1709
1792
  }
1710
1793
  if (state.issues) {
1711
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, state.issues))
1794
+ return yield* Effect.fail(
1795
+ new SchemaIssue.Composite(ast, state.issues, input, options)
1796
+ )
1712
1797
  }
1713
- return Option.some(state.output)
1798
+ return state.output
1714
1799
  })
1715
1800
  }
1716
1801
  private _rebuild(recur: (ast: AST) => AST, checks: Checks | undefined, encodingChecks: Checks | undefined) {
@@ -1745,7 +1830,7 @@ export class Arrays extends Base {
1745
1830
  }
1746
1831
  const parseArray = iterateEager<{
1747
1832
  readonly ast: AST
1748
- readonly oinput: Option.Option<unknown>
1833
+ readonly input: unknown
1749
1834
  readonly len: number
1750
1835
  readonly getParser: (
1751
1836
  tailThreshold: number,
@@ -1757,14 +1842,18 @@ const parseArray = iterateEager<{
1757
1842
  issues: Array<SchemaIssue.Issue> | undefined
1758
1843
  }, unknown>()({
1759
1844
  onItem(s, item, i) {
1760
- const value = i < s.len ? Option.some(item) : Option.none()
1845
+ const value = i < s.len ? item : InternalParser.missing
1761
1846
  return s.getParser(s.tailThreshold, i).parser(value, s.options)
1762
1847
  },
1763
- step(s, _, exit, i) {
1848
+ step(s, item, exit, i) {
1764
1849
  if (exit._tag === "Failure") {
1765
1850
  return wrapPropertyKeyIssue(s, s.ast, i, exit)
1766
- } else if (exit.value._tag === "Some") {
1767
- s.output[i] = exit.value.value
1851
+ }
1852
+ const value = exit === InternalParser.sameExit
1853
+ ? item
1854
+ : (exit as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
1855
+ if (value !== InternalParser.missing) {
1856
+ s.output[i] = value
1768
1857
  } else {
1769
1858
  const p = s.getParser(s.tailThreshold, i)
1770
1859
  if (isOptional(p.ast)) return
@@ -1773,20 +1862,14 @@ const parseArray = iterateEager<{
1773
1862
  if (s.issues) s.issues.push(issue)
1774
1863
  else s.issues = [issue]
1775
1864
  } else {
1776
- return Exit.fail(new SchemaIssue.Composite(s.ast, s.oinput, [issue]))
1865
+ return Exit.fail(
1866
+ new SchemaIssue.Composite(s.ast, [issue], s.input, s.options)
1867
+ )
1777
1868
  }
1778
1869
  }
1779
1870
  }
1780
1871
  })
1781
1872
 
1782
- function resolveTailThreshold(
1783
- inputLen: number,
1784
- elementLen: number,
1785
- tailLen: number
1786
- ) {
1787
- return Math.max(elementLen, inputLen - tailLen)
1788
- }
1789
-
1790
1873
  const resolveConcurrency = (value: number | "unbounded" | undefined) => {
1791
1874
  value = value === "unbounded" ? Infinity : value ?? 1
1792
1875
  return value > 1 ? { concurrency: value } : undefined
@@ -1794,7 +1877,7 @@ const resolveConcurrency = (value: number | "unbounded" | undefined) => {
1794
1877
 
1795
1878
  const wrapPropertyKeyIssue = (
1796
1879
  s: {
1797
- readonly oinput: Option.Option<unknown>
1880
+ readonly input: unknown
1798
1881
  readonly options: ParseOptions
1799
1882
  issues: Array<SchemaIssue.Issue> | undefined
1800
1883
  },
@@ -1810,7 +1893,13 @@ const wrapPropertyKeyIssue = (
1810
1893
  return Exit.failCause(
1811
1894
  Cause.map(
1812
1895
  exit.cause,
1813
- (issue) => new SchemaIssue.Composite(ast, s.oinput, [new SchemaIssue.Pointer([key], issue)])
1896
+ (issue) =>
1897
+ new SchemaIssue.Composite(
1898
+ ast,
1899
+ [new SchemaIssue.Pointer([key], issue)],
1900
+ s.input,
1901
+ s.options
1902
+ )
1814
1903
  )
1815
1904
  )
1816
1905
  }
@@ -1819,7 +1908,9 @@ const wrapPropertyKeyIssue = (
1819
1908
  if (s.issues) s.issues.push(pointer)
1820
1909
  else s.issues = [pointer]
1821
1910
  } else {
1822
- return Exit.fail(new SchemaIssue.Composite(ast, s.oinput, [pointer]))
1911
+ return Exit.fail(
1912
+ new SchemaIssue.Composite(ast, [pointer], s.input, s.options)
1913
+ )
1823
1914
  }
1824
1915
  }
1825
1916
 
@@ -1887,37 +1978,6 @@ export class PropertySignature {
1887
1978
  }
1888
1979
  }
1889
1980
 
1890
- /**
1891
- * Represents a bidirectional merge strategy for index signature key-value pairs.
1892
- *
1893
- * **Details**
1894
- *
1895
- * Used by {@link IndexSignature} when the same key appears multiple times
1896
- * (e.g. from `Schema.extend` or overlapping records). Provides separate
1897
- * `decode` and `encode` combiners that determine how duplicate entries are
1898
- * merged.
1899
- *
1900
- * @see {@link IndexSignature}
1901
- * @category models
1902
- * @since 4.0.0
1903
- */
1904
- export class KeyValueCombiner {
1905
- readonly decode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
1906
- readonly encode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
1907
-
1908
- constructor(
1909
- decode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined,
1910
- encode: Combiner.Combiner<readonly [key: PropertyKey, value: any]> | undefined
1911
- ) {
1912
- this.decode = decode
1913
- this.encode = encode
1914
- }
1915
- /** @internal */
1916
- flip(): KeyValueCombiner {
1917
- return new KeyValueCombiner(this.encode, this.decode)
1918
- }
1919
- }
1920
-
1921
1981
  type IndexSignatureParameter =
1922
1982
  | String
1923
1983
  | Number
@@ -1956,7 +2016,6 @@ function isIndexSignatureParameter(ast: AST): ast is IndexSignatureParameter {
1956
2016
  * - `parameter` — the key type AST (e.g. {@link String} for `string` keys,
1957
2017
  * {@link TemplateLiteral} for patterned keys).
1958
2018
  * - `type` — the value type SchemaAST.
1959
- * - `merge` — optional {@link KeyValueCombiner} for handling duplicate keys.
1960
2019
  *
1961
2020
  * **Gotchas**
1962
2021
  *
@@ -1971,19 +2030,16 @@ function isIndexSignatureParameter(ast: AST): ast is IndexSignatureParameter {
1971
2030
  export class IndexSignature {
1972
2031
  readonly parameter: IndexSignatureParameter
1973
2032
  readonly type: AST
1974
- readonly merge: KeyValueCombiner | undefined
1975
2033
 
1976
2034
  constructor(
1977
2035
  parameter: AST,
1978
- type: AST,
1979
- merge: KeyValueCombiner | undefined
2036
+ type: AST
1980
2037
  ) {
1981
2038
  if (!isIndexSignatureParameter(parameter)) {
1982
2039
  throw new Error(`Invalid index signature parameter ${parameter._tag}`)
1983
2040
  }
1984
2041
  this.parameter = parameter
1985
2042
  this.type = type
1986
- this.merge = merge
1987
2043
  if (isOptional(type) && !containsUndefined(type)) {
1988
2044
  throw new Error("Cannot use `Schema.optionalKey` with index signatures, use `Schema.optional` instead.")
1989
2045
  }
@@ -2014,17 +2070,14 @@ export class IndexSignature {
2014
2070
  *
2015
2071
  * **Example** (Inspecting a struct AST)
2016
2072
  *
2017
- * ```ts
2073
+ * ```ts import.meta.vitest
2018
2074
  * import { Schema, SchemaAST } from "effect"
2019
2075
  *
2020
2076
  * const schema = Schema.Struct({ name: Schema.String })
2021
2077
  * const ast = schema.ast
2022
2078
  *
2023
2079
  * if (SchemaAST.isObjects(ast)) {
2024
- * for (const ps of ast.propertySignatures) {
2025
- * console.log(ps.name, ps.type._tag)
2026
- * }
2027
- * // "name" "String"
2080
+ * ast.propertySignatures.map((ps) => [ps.name, ps.type._tag]) // => [["name", "String"]]
2028
2081
  * }
2029
2082
  * ```
2030
2083
  *
@@ -2062,101 +2115,126 @@ export class Objects extends Base {
2062
2115
  }
2063
2116
  }
2064
2117
  /** @internal */
2065
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
2118
+ getParser(
2119
+ compile: SchemaParser.Compiler,
2120
+ compileConstructorDefault: SchemaParser.Compiler = compile
2121
+ ): SchemaParser.Parser {
2066
2122
  // oxlint-disable-next-line @typescript-eslint/no-this-alias
2067
2123
  const ast = this
2068
2124
  const expectedKeys: Array<PropertyKey> = []
2069
- const expectedKeysSet = new Set<PropertyKey>()
2070
- const properties: Array<{
2071
- readonly ps: PropertySignature | IndexSignature
2072
- readonly parser: SchemaParser.Parser
2073
- readonly name: PropertyKey
2074
- readonly type: AST
2075
- }> = []
2076
2125
  for (const ps of ast.propertySignatures) {
2077
2126
  expectedKeys.push(ps.name)
2078
- expectedKeysSet.add(ps.name)
2079
- properties.push({
2080
- ps,
2081
- parser: recur(ps.type),
2082
- name: ps.name,
2083
- type: ps.type
2084
- })
2085
2127
  }
2128
+ const hasProperties = expectedKeys.length
2086
2129
  const indexCount = ast.indexSignatures.length
2130
+ let expectedKeysSet = hasProperties && indexCount ? new Set(expectedKeys) : undefined
2087
2131
  // ---------------------------------------------
2088
2132
  // handle empty struct
2089
2133
  // ---------------------------------------------
2090
- if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 0) {
2134
+ if (!hasProperties && !indexCount) {
2091
2135
  return fromRefinement(ast, Predicate.isNotNullish)
2092
2136
  }
2093
2137
 
2094
- const parseIndexes = indexCount > 0 ?
2095
- iterateEager<{
2096
- readonly oinput: Option.Option<unknown>
2097
- readonly input: Record<PropertyKey, unknown>
2098
- readonly options: ParseOptions
2099
- readonly out: Record<PropertyKey, unknown>
2100
- issues: Array<SchemaIssue.Issue> | undefined
2101
- }, [key: PropertyKey, is: IndexSignature]>()({
2102
- onItem: Effect.fnUntracedEager(function*(
2103
- s,
2104
- [key, is]
2105
- ) {
2106
- const parserKey = recur(parameterFromPropertyKey(is.parameter))
2107
- const effKey = parserKey(Option.some(key), s.options)
2108
- const exitKey = (effectIsExit(effKey) ? effKey : yield* Effect.exit(effKey)) as Exit.Exit<
2109
- Option.Option<PropertyKey>,
2110
- SchemaIssue.Issue
2111
- >
2112
- if (exitKey._tag === "Failure") {
2113
- const eff = wrapPropertyKeyIssue(s, ast, key, exitKey)
2114
- if (eff) yield* eff
2115
- return
2116
- }
2117
-
2118
- const value: Option.Option<unknown> = Option.some(s.input[key])
2119
- const parserValue = recur(is.type)
2120
- const effValue = parserValue(value, s.options)
2121
- const exitValue = effectIsExit(effValue) ? effValue : yield* Effect.exit(effValue)
2122
- if (exitValue._tag === "Failure") {
2123
- const eff = wrapPropertyKeyIssue(s, ast, key, exitValue)
2124
- if (eff) yield* eff
2125
- return
2126
- } else if (exitKey.value._tag === "Some" && exitValue.value._tag === "Some") {
2127
- const k2 = exitKey.value.value
2128
- if (expectedKeysSet.has(key) || expectedKeysSet.has(k2)) {
2129
- return
2130
- }
2131
- const v2 = exitValue.value.value
2132
- if (is.merge && is.merge.decode && Object.hasOwn(s.out, k2)) {
2133
- const [k, v] = is.merge.decode.combine([k2, s.out[k2]], [k2, v2])
2134
- internalRecord.set(s.out, k, v)
2135
- } else {
2136
- internalRecord.set(s.out, k2, v2)
2137
- }
2138
- }
2139
- }),
2138
+ let properties: Array<ParsedProperty> | undefined
2139
+ let indexes:
2140
+ | Array<{
2141
+ readonly is: IndexSignature
2142
+ readonly parserKey: SchemaParser.Parser
2143
+ readonly parserValue: SchemaParser.Parser
2144
+ }>
2145
+ | undefined
2146
+ type Index = NonNullable<typeof indexes>[number]
2147
+ const finishIndex = (
2148
+ s: ObjectParserState,
2149
+ key: PropertyKey,
2150
+ k2: PropertyKey | typeof InternalParser.missing,
2151
+ inputValue: unknown,
2152
+ exitValue: Exit.Exit<unknown, SchemaIssue.Issue>
2153
+ ): Effect.Effect<void, SchemaIssue.Issue, any> => {
2154
+ if (exitValue._tag === "Failure") {
2155
+ return wrapPropertyKeyIssue(s, ast, key, exitValue) ?? Exit.void
2156
+ }
2157
+ const value = exitValue === InternalParser.sameExit
2158
+ ? inputValue
2159
+ : (exitValue as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
2160
+ if (k2 !== InternalParser.missing && value !== InternalParser.missing) {
2161
+ if (hasProperties && (expectedKeysSet!.has(key) || expectedKeysSet!.has(k2))) return Exit.void
2162
+ InternalRecord.assignProperty(s.out, k2, value)
2163
+ }
2164
+ return Exit.void
2165
+ }
2166
+ const parseIndex = (
2167
+ s: ObjectParserState,
2168
+ key: PropertyKey,
2169
+ index: Index,
2170
+ exitKey?: Exit.Exit<unknown, SchemaIssue.Issue>
2171
+ ): Effect.Effect<void, SchemaIssue.Issue, any> => {
2172
+ if (!exitKey) {
2173
+ const eff = index.parserKey(key, s.options)
2174
+ if (!effectIsExit(eff)) {
2175
+ return Effect.flatMap(Effect.exit(eff), (exit) => parseIndex(s, key, index, exit))
2176
+ }
2177
+ exitKey = eff
2178
+ }
2179
+ if (exitKey._tag === "Failure") {
2180
+ return wrapPropertyKeyIssue(s, ast, key, exitKey) ?? Exit.void
2181
+ }
2182
+ const k2 = exitKey === InternalParser.sameExit
2183
+ ? key
2184
+ : (exitKey as InternalParser.Success<PropertyKey, SchemaIssue.Issue>)[InternalParser.args]
2185
+ const inputValue = s.input[key]
2186
+ const result = index.parserValue(inputValue, s.options)
2187
+ return effectIsExit(result)
2188
+ ? finishIndex(s, key, k2, inputValue, result)
2189
+ : Effect.flatMap(Effect.exit(result), (exit) => finishIndex(s, key, k2, inputValue, exit))
2190
+ }
2191
+ const parseStringIndex = (
2192
+ s: ObjectParserState,
2193
+ key: PropertyKey,
2194
+ index: Index
2195
+ ): Effect.Effect<void, SchemaIssue.Issue, any> => {
2196
+ const inputValue = s.input[key]
2197
+ const result = index.parserValue(inputValue, s.options)
2198
+ return effectIsExit(result)
2199
+ ? finishIndex(s, key, key, inputValue, result)
2200
+ : Effect.flatMap(Effect.exit(result), (exit) => finishIndex(s, key, key, inputValue, exit))
2201
+ }
2202
+ const parseIndexes = indexCount ?
2203
+ iterateEager<ObjectParserState, [key: PropertyKey, index: Index]>()({
2204
+ onItem: (s, [key, index]) => parseIndex(s, key, index),
2140
2205
  step: (_s, _, exit: Exit.Exit<void, SchemaIssue.Issue>) => exit._tag === "Failure" ? exit : undefined
2141
2206
  }) :
2142
2207
  undefined
2143
2208
 
2144
- return Effect.fnUntracedEager(function*(oinput, options) {
2145
- if (oinput._tag === "None") {
2146
- return oinput
2209
+ return Effect.fnUntracedEager(function*(input, options) {
2210
+ if (input === InternalParser.missing) {
2211
+ return InternalParser.missing
2147
2212
  }
2148
- const input = oinput.value as Record<PropertyKey, unknown>
2149
2213
 
2150
2214
  // If the input is not a record, return early with an error
2151
2215
  if (!(typeof input === "object" && input !== null && !Array.isArray(input))) {
2152
- return yield* Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
2216
+ return yield* Effect.fail(new SchemaIssue.InvalidType(ast, input, options))
2217
+ }
2218
+ if (!properties) {
2219
+ properties = ast.propertySignatures.map((ps) => ({
2220
+ parser: compileConstructorDefault(ps.type),
2221
+ name: ps.name,
2222
+ type: ps.type
2223
+ }))
2224
+ indexes = indexCount
2225
+ ? ast.indexSignatures.map((is) => ({
2226
+ is,
2227
+ parserKey: compile(parameterFromPropertyKey(is.parameter)),
2228
+ parserValue: compileConstructorDefault(is.type)
2229
+ }))
2230
+ : undefined
2153
2231
  }
2154
2232
 
2233
+ const record = input as Record<PropertyKey, unknown>
2155
2234
  const out: Record<PropertyKey, unknown> = {}
2156
2235
  const state = {
2157
2236
  ast,
2158
- oinput,
2159
- input,
2237
+ input: record,
2160
2238
  out,
2161
2239
  issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
2162
2240
  options
@@ -2169,14 +2247,16 @@ export class Objects extends Base {
2169
2247
  // handle excess properties
2170
2248
  // ---------------------------------------------
2171
2249
  let inputKeys: Array<PropertyKey> | undefined
2172
- if (ast.indexSignatures.length === 0 && (onExcessPropertyError || onExcessPropertyPreserve)) {
2173
- inputKeys = Reflect.ownKeys(input)
2250
+ if (!indexCount && (onExcessPropertyError || onExcessPropertyPreserve)) {
2251
+ expectedKeysSet ??= new Set(expectedKeys)
2252
+ inputKeys = Reflect.ownKeys(record)
2174
2253
  for (let i = 0; i < inputKeys.length; i++) {
2175
2254
  const key = inputKeys[i]
2176
2255
  if (!expectedKeysSet.has(key)) {
2177
2256
  // key is unexpected
2178
2257
  if (onExcessPropertyError) {
2179
- const issue = new SchemaIssue.Pointer([key], new SchemaIssue.UnexpectedKey(ast, input[key]))
2258
+ const unexpected = new SchemaIssue.UnexpectedKey(ast, record[key], options)
2259
+ const issue = new SchemaIssue.Pointer([key], unexpected)
2180
2260
  if (errorsAllOption) {
2181
2261
  if (state.issues) {
2182
2262
  state.issues.push(issue)
@@ -2185,11 +2265,13 @@ export class Objects extends Base {
2185
2265
  }
2186
2266
  continue
2187
2267
  } else {
2188
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, [issue]))
2268
+ return yield* Effect.fail(
2269
+ new SchemaIssue.Composite(ast, [issue], input, options)
2270
+ )
2189
2271
  }
2190
2272
  } else {
2191
2273
  // preserve key
2192
- internalRecord.set(out, key, input[key])
2274
+ InternalRecord.assignProperty(out, key, record[key])
2193
2275
  }
2194
2276
  }
2195
2277
  }
@@ -2200,20 +2282,34 @@ export class Objects extends Base {
2200
2282
  // ---------------------------------------------
2201
2283
  // handle property signatures
2202
2284
  // ---------------------------------------------
2203
- const eff = parseProperties(state, properties, concurrency)
2204
- if (eff) yield* eff
2285
+ if (hasProperties) {
2286
+ const eff = parseProperties(state, properties!, concurrency)
2287
+ if (eff) yield* eff
2288
+ }
2205
2289
 
2206
2290
  // ---------------------------------------------
2207
2291
  // handle index signatures
2208
2292
  // ---------------------------------------------
2209
- if (parseIndexes) {
2210
- const keyPairs = Arr.empty<[PropertyKey, IndexSignature]>()
2293
+ if (indexCount && !concurrency) {
2294
+ for (let i = 0; i < indexCount; i++) {
2295
+ const index = indexes![i]
2296
+ const parse = index.is.parameter === string ? parseStringIndex : parseIndex
2297
+ const keys = index.is.parameter === string
2298
+ ? Object.keys(record)
2299
+ : getIndexSignatureKeys(record, index.is.parameter, options)
2300
+ for (let j = 0; j < keys.length; j++) {
2301
+ const eff = parse(state, keys[j], index)
2302
+ if (!effectIsExit(eff)) yield* eff
2303
+ else if (eff._tag === "Failure") return yield* eff as Exit.Exit<never, SchemaIssue.Issue>
2304
+ }
2305
+ }
2306
+ } else if (parseIndexes) {
2307
+ const keyPairs = Arr.empty<[PropertyKey, Index]>()
2211
2308
  for (let i = 0; i < indexCount; i++) {
2212
- const is = ast.indexSignatures[i]
2213
- const keys = getIndexSignatureKeys(input, is.parameter, options)
2309
+ const index = indexes![i]
2310
+ const keys = getIndexSignatureKeys(record, index.is.parameter, options)
2214
2311
  for (let j = 0; j < keys.length; j++) {
2215
- const key = keys[j]
2216
- keyPairs.push([key, is])
2312
+ keyPairs.push([keys[j], index])
2217
2313
  }
2218
2314
  }
2219
2315
  const eff = parseIndexes(state, keyPairs, concurrency)
@@ -2221,26 +2317,27 @@ export class Objects extends Base {
2221
2317
  }
2222
2318
 
2223
2319
  if (state.issues) {
2224
- return yield* Effect.fail(new SchemaIssue.Composite(ast, oinput, state.issues))
2320
+ return yield* Effect.fail(
2321
+ new SchemaIssue.Composite(ast, state.issues, input, options)
2322
+ )
2225
2323
  }
2226
2324
  if (options.propertyOrder === "original") {
2227
2325
  // preserve input keys order
2228
- const keys = (inputKeys ?? Reflect.ownKeys(input)).concat(expectedKeys)
2326
+ const keys = (inputKeys ?? Reflect.ownKeys(record)).concat(expectedKeys)
2229
2327
  const preserved: Record<PropertyKey, unknown> = {}
2230
2328
  for (const key of keys) {
2231
2329
  if (Object.hasOwn(out, key)) {
2232
- internalRecord.set(preserved, key, out[key])
2330
+ InternalRecord.assignProperty(preserved, key, out[key])
2233
2331
  }
2234
2332
  }
2235
- return Option.some(preserved)
2333
+ return preserved
2236
2334
  }
2237
- return Option.some(out)
2335
+ return out
2238
2336
  })
2239
2337
  }
2240
2338
  private _rebuild(
2241
2339
  recur: (ast: AST) => AST,
2242
2340
  recurParameter: (ast: AST) => AST,
2243
- flipMerge: boolean,
2244
2341
  checks: Checks | undefined,
2245
2342
  encodingChecks: Checks | undefined
2246
2343
  ): Objects {
@@ -2252,10 +2349,9 @@ export class Objects extends Base {
2252
2349
  const indexes = mapOrSame(this.indexSignatures, (is) => {
2253
2350
  const p = recurParameter(is.parameter)
2254
2351
  const t = recur(is.type)
2255
- const merge = flipMerge ? is.merge?.flip() : is.merge
2256
- return p === is.parameter && t === is.type && merge === is.merge
2352
+ return p === is.parameter && t === is.type
2257
2353
  ? is
2258
- : new IndexSignature(p, t, merge)
2354
+ : new IndexSignature(p, t)
2259
2355
  })
2260
2356
 
2261
2357
  return props === this.propertySignatures && indexes === this.indexSignatures && checks === this.checks &&
@@ -2273,11 +2369,11 @@ export class Objects extends Base {
2273
2369
  }
2274
2370
  /** @internal */
2275
2371
  flip(recur: (ast: AST) => AST): AST {
2276
- return this._rebuild(recur, recur, true, this.encodingChecks, this.checks)
2372
+ return this._rebuild(recur, recur, this.encodingChecks, this.checks)
2277
2373
  }
2278
2374
  /** @internal */
2279
2375
  recur(recur: (ast: AST) => AST, recurParameter: (ast: AST) => AST = recur): AST {
2280
- return this._rebuild(recur, recurParameter, false, this.checks, this.encodingChecks)
2376
+ return this._rebuild(recur, recurParameter, this.checks, this.encodingChecks)
2281
2377
  }
2282
2378
  /** @internal */
2283
2379
  getExpected(): string {
@@ -2286,42 +2382,41 @@ export class Objects extends Base {
2286
2382
  }
2287
2383
  }
2288
2384
 
2385
+ type ObjectParserState = {
2386
+ readonly ast: Objects
2387
+ readonly input: Record<PropertyKey, unknown>
2388
+ readonly options: ParseOptions
2389
+ readonly out: Record<PropertyKey, unknown>
2390
+ issues: Array<SchemaIssue.Issue> | undefined
2391
+ }
2392
+
2289
2393
  type ParsedProperty = {
2290
- readonly ps: PropertySignature | IndexSignature
2291
2394
  readonly parser: SchemaParser.Parser
2292
2395
  readonly name: PropertyKey
2293
2396
  readonly type: AST
2294
2397
  }
2295
2398
 
2296
- const parseProperties = iterateEager<{
2297
- readonly ast: AST
2298
- readonly oinput: Option.Option<unknown>
2299
- readonly input: Record<PropertyKey, unknown>
2300
- readonly options: ParseOptions
2301
- readonly out: Record<PropertyKey, unknown>
2302
- issues: Array<SchemaIssue.Issue> | undefined
2303
- }, ParsedProperty>()({
2304
- onItem(
2305
- s: {
2306
- readonly oinput: Option.Option<unknown>
2307
- readonly input: Record<PropertyKey, unknown>
2308
- readonly options: ParseOptions
2309
- readonly out: Record<PropertyKey, unknown>
2310
- issues: Array<SchemaIssue.Issue> | undefined
2311
- },
2312
- p
2313
- ) {
2314
- const value: Option.Option<unknown> = Object.hasOwn(s.input, p.name)
2315
- ? Option.some(s.input[p.name])
2316
- : Option.none()
2399
+ const parseProperties = iterateEager<ObjectParserState, ParsedProperty>()({
2400
+ onItem(s, p) {
2401
+ if (!Object.hasOwn(s.input, p.name)) {
2402
+ return p.parser(InternalParser.missing, s.options)
2403
+ }
2404
+ const value = s.input[p.name]
2405
+ InternalRecord.assignProperty(s.out, p.name, value)
2317
2406
  return p.parser(value, s.options)
2318
2407
  },
2319
2408
  step(s, p, exit) {
2320
2409
  if (exit._tag === "Failure") {
2321
2410
  return wrapPropertyKeyIssue(s, s.ast, p.name, exit)
2322
- } else if (exit.value._tag === "Some") {
2323
- internalRecord.set(s.out, p.name, exit.value.value)
2324
- } else if (!isOptional(p.type)) {
2411
+ }
2412
+ if (exit === InternalParser.sameExit) return
2413
+ const value = (exit as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
2414
+ if (value !== InternalParser.missing) {
2415
+ InternalRecord.assignProperty(s.out, p.name, value)
2416
+ return
2417
+ }
2418
+ delete s.out[p.name]
2419
+ if (!isOptional(p.type)) {
2325
2420
  const issue = new SchemaIssue.Pointer([p.name], new SchemaIssue.MissingKey(p.type.context?.annotations))
2326
2421
  if (s.options.errors === "all") {
2327
2422
  if (s.issues) s.issues.push(issue)
@@ -2329,7 +2424,7 @@ const parseProperties = iterateEager<{
2329
2424
  return
2330
2425
  } else {
2331
2426
  return Exit.fail(
2332
- new SchemaIssue.Composite(s.ast, s.oinput, [issue])
2427
+ new SchemaIssue.Composite(s.ast, [issue], s.input, s.options)
2333
2428
  )
2334
2429
  }
2335
2430
  }
@@ -2422,6 +2517,21 @@ export type Sentinel = {
2422
2517
  readonly literal: LiteralValue | symbol
2423
2518
  }
2424
2519
 
2520
+ const toCandidate = memoizeIdempotent((ast: AST): AST => {
2521
+ while (true) {
2522
+ if (isSuspend(ast)) return unknown
2523
+ const encoding = ast.encoding
2524
+ if (!encoding) {
2525
+ // Index signature parameters do not participate in union selection.
2526
+ return (ast as any).recur?.(toCandidate, identity) ?? ast
2527
+ }
2528
+ if (
2529
+ encoding.some((link) => link.transformation._tag === "Middleware" && link.transformation.decode !== identity)
2530
+ ) return unknown
2531
+ ast = encoding[encoding.length - 1].to
2532
+ }
2533
+ })
2534
+
2425
2535
  function getCandidateTypes(ast: AST): ReadonlyArray<Type> {
2426
2536
  switch (ast._tag) {
2427
2537
  case "Null":
@@ -2447,7 +2557,7 @@ function getCandidateTypes(ast: AST): ReadonlyArray<Type> {
2447
2557
  case "Objects":
2448
2558
  return ast.propertySignatures.length || ast.indexSignatures.length
2449
2559
  ? ["object"]
2450
- : ["object", "array"]
2560
+ : ["string", "number", "boolean", "symbol", "bigint", "object", "array", "function"]
2451
2561
  case "Enum":
2452
2562
  return Array.from(new Set(ast.enums.map(([, v]) => typeof v)))
2453
2563
  case "Literal":
@@ -2471,12 +2581,12 @@ function getCandidateTypes(ast: AST): ReadonlyArray<Type> {
2471
2581
  }
2472
2582
 
2473
2583
  /** @internal */
2474
- export function collectSentinels(ast: AST): Array<Sentinel> {
2584
+ export function collectSentinels(ast: AST): ReadonlyArray<Sentinel> {
2475
2585
  switch (ast._tag) {
2476
2586
  default:
2477
2587
  return []
2478
2588
  case "Declaration": {
2479
- const s = ast.annotations?.["~sentinels"]
2589
+ const s = ast.annotations?.[InternalAnnotations.SENTINELS_ANNOTATION_KEY]
2480
2590
  return Array.isArray(s) ? s : []
2481
2591
  }
2482
2592
  case "Objects":
@@ -2493,63 +2603,182 @@ export function collectSentinels(ast: AST): Array<Sentinel> {
2493
2603
  return []
2494
2604
  })
2495
2605
  case "Arrays":
2496
- return ast.elements.flatMap((e, i) => {
2497
- return isLiteral(e) && !isOptional(e)
2498
- ? [{ key: i, literal: e.literal }]
2499
- : []
2606
+ return ast.elements.flatMap((e, i): Array<Sentinel> => {
2607
+ if (!isOptional(e)) {
2608
+ if (isLiteral(e)) {
2609
+ return [{ key: i, literal: e.literal }]
2610
+ }
2611
+ if (isUniqueSymbol(e)) {
2612
+ return [{ key: i, literal: e.symbol }]
2613
+ }
2614
+ }
2615
+ return []
2500
2616
  })
2617
+ case "Union": {
2618
+ if (ast.types.length === 0) return []
2619
+ const members = ast.types.map((type) => collectSentinels(toCandidate(type)))
2620
+ return members[0].filter((s) =>
2621
+ members.every((sentinels) => sentinels.some((o) => o.key === s.key && o.literal === s.literal))
2622
+ )
2623
+ }
2501
2624
  case "Suspend":
2502
2625
  return collectSentinels(ast.thunk())
2503
2626
  }
2504
2627
  }
2505
2628
 
2506
- type CandidateIndex = {
2507
- byType?: { [K in Type]?: Array<number> }
2508
- bySentinel?: Map<PropertyKey, Map<LiteralValue | symbol, Array<number>>>
2509
- otherwise?: { [K in Type]?: Array<number> }
2510
- }
2629
+ type CandidateIndex = (input: any, isConstructor: boolean) => ReadonlyArray<AST>
2630
+ type SentinelEntry = readonly [
2631
+ byValue: Map<LiteralValue | symbol, Set<number>>,
2632
+ all: Set<number>
2633
+ ]
2634
+ type SentinelIndex = Map<PropertyKey, SentinelEntry>
2511
2635
 
2512
2636
  const candidateIndexCache = new WeakMap<ReadonlyArray<AST>, CandidateIndex>()
2637
+ const emptyCandidates: ReadonlyArray<never> = Object.freeze([])
2513
2638
 
2514
2639
  function getIndex(types: ReadonlyArray<AST>): CandidateIndex {
2515
- let idx = candidateIndexCache.get(types)
2516
- if (idx) return idx
2517
-
2518
- idx = {}
2640
+ let index = candidateIndexCache.get(types)
2641
+ if (index) return index
2642
+
2643
+ let bySentinel: SentinelIndex | undefined
2644
+ let sentinelCandidateCount = 0
2645
+ let otherwise: { [K in Type]?: Array<number> } | undefined
2646
+ let literalCandidates: Map<LiteralValue | symbol, Array<AST>> | undefined
2647
+ let onlyLiterals = true
2519
2648
  for (let i = 0; i < types.length; i++) {
2520
2649
  const a = types[i]
2521
- const encoded = toEncoded(a)
2650
+ const encoded = toCandidate(a)
2522
2651
  if (isNever(encoded)) continue
2523
2652
 
2524
- const candidateTypes = getCandidateTypes(encoded)
2525
- const sentinels = collectSentinels(encoded)
2653
+ if (onlyLiterals) {
2654
+ if (isLiteral(encoded) || isUniqueSymbol(encoded)) {
2655
+ literalCandidates ??= new Map()
2656
+ const literal = isLiteral(encoded) ? encoded.literal : encoded.symbol
2657
+ let arr = literalCandidates.get(literal)
2658
+ if (!arr) literalCandidates.set(literal, arr = [])
2659
+ arr.push(a)
2660
+ } else {
2661
+ onlyLiterals = false
2662
+ }
2663
+ }
2526
2664
 
2527
- // by-type (always filled – cheap primary filter)
2528
- idx.byType ??= {}
2529
- for (const t of candidateTypes) (idx.byType[t] ??= []).push(i)
2665
+ const sentinels = collectSentinels(encoded)
2530
2666
 
2531
- if (sentinels.length > 0) { // discriminated variants
2532
- idx.bySentinel ??= new Map()
2667
+ if (sentinels.length) { // discriminated variants
2668
+ bySentinel ??= new Map()
2669
+ sentinelCandidateCount++
2533
2670
  for (const { key, literal } of sentinels) {
2534
- let m = idx.bySentinel.get(key)
2535
- if (!m) idx.bySentinel.set(key, m = new Map())
2536
- let arr = m.get(literal)
2537
- if (!arr) m.set(literal, arr = [])
2538
- arr.push(i)
2671
+ let entry = bySentinel.get(key)
2672
+ if (!entry) bySentinel.set(key, entry = [new Map(), new Set()])
2673
+ entry[1].add(i)
2674
+ let indexes = entry[0].get(literal)
2675
+ if (!indexes) entry[0].set(literal, indexes = new Set())
2676
+ indexes.add(i)
2539
2677
  }
2540
2678
  } else { // non-discriminated
2541
- idx.otherwise ??= {}
2542
- for (const t of candidateTypes) (idx.otherwise[t] ??= []).push(i)
2679
+ otherwise ??= {}
2680
+ const candidateTypes = getCandidateTypes(encoded)
2681
+ for (const t of candidateTypes) (otherwise[t] ??= []).push(i)
2543
2682
  }
2544
2683
  }
2545
2684
 
2546
- candidateIndexCache.set(types, idx)
2547
- return idx
2685
+ if (onlyLiterals && literalCandidates) {
2686
+ literalCandidates.forEach(Object.freeze)
2687
+ index = (input) => literalCandidates.get(input) ?? emptyCandidates
2688
+ } else if (bySentinel?.size === 1 && !otherwise) {
2689
+ const [key, [byValue]] = bySentinel.entries().next().value!
2690
+ const candidates = byValue as unknown as Map<LiteralValue | symbol, ReadonlyArray<AST>>
2691
+ for (const [literal, indexes] of byValue) {
2692
+ candidates.set(literal, Object.freeze(Array.from(indexes, (index) => types[index])))
2693
+ }
2694
+ index = (input, isConstructor) => {
2695
+ if (Predicate.isObjectKeyword(input)) {
2696
+ const value = Object.hasOwn(input, key) ? (input as any)[key] : undefined
2697
+ if (value !== undefined) return candidates.get(value) ?? emptyCandidates
2698
+ if (isConstructor) return types
2699
+ }
2700
+ return emptyCandidates
2701
+ }
2702
+ } else if (bySentinel) {
2703
+ // A key owned by every discriminated candidate is safe to use as the initial selector: no candidate can
2704
+ // be excluded merely because it uses a different sentinel key. Prefer the key with the most distinct values
2705
+ // to minimize the matching bucket.
2706
+ let commonSentinel: [PropertyKey, SentinelEntry] | undefined
2707
+ for (const entry of bySentinel) {
2708
+ if (
2709
+ (!commonSentinel || entry[1][0].size > commonSentinel[1][0].size) &&
2710
+ entry[1][1].size === sentinelCandidateCount
2711
+ ) {
2712
+ commonSentinel = entry
2713
+ }
2714
+ }
2715
+
2716
+ index = (input, isConstructor) => {
2717
+ const runtimeType: Type = input === null ? "null" : Array.isArray(input) ? "array" : typeof input
2718
+ const base = otherwise?.[runtimeType] ?? emptyCandidates
2719
+ if (!Predicate.isObjectKeyword(input)) return base.map((i) => types[i])
2720
+
2721
+ // Non-discriminated candidates are runtime-type fallbacks and are never removed by sentinel checks.
2722
+ const selected = new Set(base)
2723
+ let directKey: PropertyKey | undefined
2724
+ // An observed common key can seed the selection directly; an unknown value rules out every
2725
+ // discriminated candidate.
2726
+ if (commonSentinel) {
2727
+ const [key, [byValue]] = commonSentinel
2728
+ const hasKey = Object.hasOwn(input, key)
2729
+ const value = hasKey ? (input as any)[key] : undefined
2730
+ if (hasKey && (!isConstructor || value !== undefined)) {
2731
+ const match = byValue.get(value)
2732
+ if (!match) return base.map((i) => types[i])
2733
+ for (const i of match) selected.add(i)
2734
+ directKey = key
2735
+ }
2736
+ }
2737
+
2738
+ // Without an observed common key, collect positive matches from every sentinel. Constructor mode treats
2739
+ // absent and undefined keys as unconstrained and therefore selects every candidate that owns the key.
2740
+ if (directKey === undefined) {
2741
+ for (const [key, [byValue, all]] of bySentinel) {
2742
+ const hasKey = Object.hasOwn(input, key)
2743
+ const value = hasKey ? (input as any)[key] : undefined
2744
+ if (hasKey && (!isConstructor || value !== undefined)) {
2745
+ const match = byValue.get(value)
2746
+ if (match) {
2747
+ for (const i of match) selected.add(i)
2748
+ }
2749
+ } else if (isConstructor) {
2750
+ for (const i of all) selected.add(i)
2751
+ }
2752
+ }
2753
+ }
2754
+ // Missing keys are neutral. An observed key rejects only selected candidates that own it and do not match.
2755
+ for (const [key, [byValue, all]] of bySentinel) {
2756
+ if (key === directKey) continue
2757
+ const hasKey = Object.hasOwn(input, key)
2758
+ const value = hasKey ? (input as any)[key] : undefined
2759
+ if (hasKey && (!isConstructor || value !== undefined)) {
2760
+ const match = byValue.get(value)
2761
+ for (const i of selected) {
2762
+ if (all.has(i) && !match?.has(i)) selected.delete(i)
2763
+ }
2764
+ }
2765
+ }
2766
+ return Array.from(selected).sort((a, b) => a - b).map((i) => types[i])
2767
+ }
2768
+ } else {
2769
+ index = (input) => {
2770
+ const runtimeType: Type = input === null ? "null" : Array.isArray(input) ? "array" : typeof input
2771
+ return (otherwise?.[runtimeType] ?? emptyCandidates).map((i) => types[i]).filter(filterLiterals(input))
2772
+ }
2773
+ }
2774
+
2775
+ candidateIndexCache.set(types, index)
2776
+ return index
2548
2777
  }
2549
2778
 
2550
2779
  function filterLiterals(input: any) {
2551
2780
  return (ast: AST) => {
2552
- const encoded = toEncoded(ast)
2781
+ const encoded = toCandidate(ast)
2553
2782
  return encoded._tag === "Literal" ?
2554
2783
  encoded.literal === input
2555
2784
  : encoded._tag === "UniqueSymbol" ?
@@ -2564,30 +2793,12 @@ function filterLiterals(input: any) {
2564
2793
  *
2565
2794
  * @internal
2566
2795
  */
2567
- export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyArray<AST> {
2568
- const idx = getIndex(types)
2569
- const runtimeType: Type = input === null ? "null" : Array.isArray(input) ? "array" : typeof input
2570
-
2571
- // 1. Try sentinel-based dispatch (most selective)
2572
- if (idx.bySentinel) {
2573
- const base = idx.otherwise?.[runtimeType] ?? []
2574
- if (runtimeType === "object" || runtimeType === "array") {
2575
- const selected = new Set(base)
2576
- for (const [k, m] of idx.bySentinel) {
2577
- if (Object.hasOwn(input, k)) {
2578
- const match = m.get((input as any)[k])
2579
- if (match) {
2580
- for (const candidate of match) selected.add(candidate)
2581
- }
2582
- }
2583
- }
2584
- return Array.from(selected).sort((a, b) => a - b).map((i) => types[i]).filter(filterLiterals(input))
2585
- }
2586
- return base.map((i) => types[i])
2587
- }
2588
-
2589
- // 2. Fallback: runtime-type dispatch only
2590
- return (idx.byType?.[runtimeType] ?? []).map((i) => types[i]).filter(filterLiterals(input))
2796
+ export function getCandidates(
2797
+ input: any,
2798
+ types: ReadonlyArray<AST>,
2799
+ isConstructor = false
2800
+ ): ReadonlyArray<AST> {
2801
+ return getIndex(types)(input, isConstructor)
2591
2802
  }
2592
2803
 
2593
2804
  /**
@@ -2605,15 +2816,14 @@ export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyAr
2605
2816
  *
2606
2817
  * **Example** (Inspecting a union AST)
2607
2818
  *
2608
- * ```ts
2819
+ * ```ts import.meta.vitest
2609
2820
  * import { Schema, SchemaAST } from "effect"
2610
2821
  *
2611
2822
  * const schema = Schema.Union([Schema.String, Schema.Number])
2612
2823
  * const ast = schema.ast
2613
2824
  *
2614
2825
  * if (SchemaAST.isUnion(ast)) {
2615
- * console.log(ast.types.length) // 2
2616
- * console.log(ast.mode) // "anyOf"
2826
+ * [ast.types.length, ast.mode] // => [2, "anyOf"]
2617
2827
  * }
2618
2828
  * ```
2619
2829
  *
@@ -2642,38 +2852,46 @@ export class Union<A extends AST = AST> extends Base {
2642
2852
  this.encodingChecks = encodingChecks
2643
2853
  }
2644
2854
  /** @internal */
2645
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
2855
+ getParser(
2856
+ compile: SchemaParser.Compiler,
2857
+ compileConstructorDefault?: SchemaParser.Compiler
2858
+ ): SchemaParser.Parser {
2646
2859
  // oxlint-disable-next-line @typescript-eslint/no-this-alias
2647
2860
  const ast = this
2648
2861
 
2649
- return (oinput, options) => {
2650
- if (oinput._tag === "None") {
2651
- return Effect.succeed(oinput)
2862
+ return (input, options) => {
2863
+ if (input === InternalParser.missing) {
2864
+ return InternalParser.missingExit
2865
+ }
2866
+ const candidates = getCandidates(input, ast.types, compileConstructorDefault !== undefined)
2867
+
2868
+ if (candidates.length === 1) {
2869
+ const result = compile(candidates[0])(input, options)
2870
+ if ((result as Exit.Exit<unknown, SchemaIssue.Issue>)._tag === "Success") return result
2871
+ return effectIsExit(result)
2872
+ ? failSingleUnionCandidate(ast, (result as Exit.Failure<unknown, SchemaIssue.Issue>).cause, input, options)
2873
+ : Effect.catchCause(result, (cause) => failSingleUnionCandidate(ast, cause, input, options))
2652
2874
  }
2653
- const input = oinput.value
2654
- const candidates = getCandidates(input, ast.types)
2655
2875
 
2656
2876
  const state = {
2657
2877
  ast,
2658
- recur,
2659
- oinput,
2878
+ compile,
2660
2879
  input,
2661
2880
  out: undefined,
2662
- successes: [],
2881
+ successes: ast.mode === "oneOf" ? [] : undefined,
2663
2882
  issues: undefined as Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
2664
2883
  options
2665
2884
  }
2666
2885
  const concurrency = resolveConcurrency(options?.concurrency)
2667
2886
  const eff = parseUnion(state, candidates, concurrency ? { ...concurrency, orderedStep: true } : undefined)
2668
2887
  if (!eff) {
2669
- return state.out
2670
- ? Effect.succeed(state.out)
2671
- : Effect.fail(new SchemaIssue.AnyOf(ast, input, state.issues ?? []))
2888
+ if (state.out) return state.out
2889
+ return Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? [], input, options))
2672
2890
  }
2673
- return Effect.flatMap(eff, (_) => {
2674
- return state.out
2675
- ? Effect.succeed(state.out)
2676
- : Effect.fail(new SchemaIssue.AnyOf(ast, input, state.issues ?? []))
2891
+ return Effect.flatMapEager(eff, (_) => {
2892
+ if (state.out === InternalParser.sameExit) return Effect.succeed(input)
2893
+ if (state.out) return state.out
2894
+ return Effect.fail(new SchemaIssue.AnyOf(ast, state.issues ?? [], input, options))
2677
2895
  })
2678
2896
  }
2679
2897
  }
@@ -2738,19 +2956,29 @@ export class Union<A extends AST = AST> extends Base {
2738
2956
  }
2739
2957
  }
2740
2958
 
2959
+ function failSingleUnionCandidate(
2960
+ ast: Union,
2961
+ cause: Cause.Cause<SchemaIssue.Issue>,
2962
+ input: unknown,
2963
+ options: ParseOptions
2964
+ ) {
2965
+ const issue = InternalSchemaCause.getSchemaIssue(cause)
2966
+ if (!issue) return Exit.failCause(cause)
2967
+ return Exit.fail(new SchemaIssue.AnyOf(ast, [issue], input, options))
2968
+ }
2969
+
2741
2970
  const parseUnion = iterateEager<{
2742
- readonly recur: (ast: AST) => SchemaParser.Parser
2971
+ readonly compile: (ast: AST) => SchemaParser.Parser
2743
2972
  readonly ast: Union
2744
- readonly oinput: Option.Option<unknown>
2745
2973
  readonly input: unknown
2746
2974
  readonly options: ParseOptions
2747
- out: Option.Option<unknown> | undefined
2748
- successes: Array<AST>
2975
+ out: Exit.Success<unknown, SchemaIssue.Issue> | undefined
2976
+ readonly successes: Array<AST> | undefined
2749
2977
  issues: Array<SchemaIssue.Issue> | undefined
2750
2978
  }, AST>()({
2751
2979
  onItem(s, ast) {
2752
- const parser = s.recur(ast)
2753
- return parser(s.oinput, s.options)
2980
+ const parser = s.compile(ast)
2981
+ return parser(s.input, s.options)
2754
2982
  },
2755
2983
  step(s, candidate, exit) {
2756
2984
  if (exit._tag === "Failure") {
@@ -2761,13 +2989,14 @@ const parseUnion = iterateEager<{
2761
2989
  if (s.issues) s.issues.push(issue)
2762
2990
  else s.issues = [issue]
2763
2991
  } else {
2764
- if (s.out && s.ast.mode === "oneOf") {
2992
+ if (s.out && s.successes) {
2765
2993
  s.successes.push(candidate)
2766
- return Exit.fail(new SchemaIssue.OneOf(s.ast, s.input, s.successes))
2994
+ return Exit.fail(new SchemaIssue.OneOf(s.ast, s.successes, s.input, s.options))
2767
2995
  }
2768
- s.out = exit.value
2769
- s.successes.push(candidate)
2770
- if (s.ast.mode === "anyOf") {
2996
+ s.out = exit
2997
+ if (s.successes) {
2998
+ s.successes.push(candidate)
2999
+ } else {
2771
3000
  return Exit.void
2772
3001
  }
2773
3002
  }
@@ -2780,14 +3009,6 @@ const nonFiniteLiterals = new Union([
2780
3009
  new Literal("NaN")
2781
3010
  ], "anyOf")
2782
3011
 
2783
- const numberToJson = new Link(
2784
- new Union([number, nonFiniteLiterals], "anyOf"),
2785
- new SchemaTransformation.Transformation(
2786
- SchemaGetter.Number(),
2787
- SchemaGetter.transform((n) => globalThis.Number.isFinite(n) ? n : globalThis.String(n))
2788
- )
2789
- )
2790
-
2791
3012
  function formatIsMutable(isMutable: boolean | undefined): string {
2792
3013
  return isMutable ? "" : "readonly "
2793
3014
  }
@@ -2821,7 +3042,7 @@ export function memoizeThunk<A>(f: () => A): () => A {
2821
3042
  *
2822
3043
  * **Example** (Defining recursive schema ASTs)
2823
3044
  *
2824
- * ```ts
3045
+ * ```ts import.meta.vitest
2825
3046
  * import { Schema, SchemaAST } from "effect"
2826
3047
  *
2827
3048
  * interface Category {
@@ -2834,7 +3055,7 @@ export function memoizeThunk<A>(f: () => A): () => A {
2834
3055
  * children: Schema.Array(Schema.suspend((): Schema.Codec<Category> => Category))
2835
3056
  * })
2836
3057
  *
2837
- * // The recursive branch is a Suspend node
3058
+ * SchemaAST.isObjects(Category.ast) // => true
2838
3059
  * ```
2839
3060
  *
2840
3061
  * @see {@link isSuspend}
@@ -2852,15 +3073,16 @@ export class Suspend extends Base {
2852
3073
  encoding?: Encoding,
2853
3074
  context?: Context
2854
3075
  ) {
2855
- if (checks !== undefined) {
3076
+ if (checks) {
2856
3077
  throw new Error("Cannot add checks to Suspend")
2857
3078
  }
2858
3079
  super(annotations, undefined, encoding, context)
2859
3080
  this.thunk = memoizeThunk(thunk)
2860
3081
  }
2861
3082
  /** @internal */
2862
- getParser(recur: (ast: AST) => SchemaParser.Parser): SchemaParser.Parser {
2863
- return recur(this.thunk())
3083
+ getParser(compile: SchemaParser.Compiler): SchemaParser.Parser {
3084
+ let parser: SchemaParser.Parser
3085
+ return (input, options) => (parser ??= compile(this.thunk()))(input, options)
2864
3086
  }
2865
3087
  /** @internal */
2866
3088
  recur(recur: (ast: AST) => AST) {
@@ -2889,8 +3111,8 @@ export class Suspend extends Base {
2889
3111
  *
2890
3112
  * - `run` — the validation function. Returns `undefined` on success, or an
2891
3113
  * `Issue` on failure.
2892
- * - `annotations` — optional filter-level metadata (expected message, meta
2893
- * tags, arbitrary constraint hints).
3114
+ * - `annotations` — optional filter-level annotations (expected message,
3115
+ * representation, arbitrary constraint hints).
2894
3116
  * - `aborted` — when `true`, parsing stops immediately after this filter
2895
3117
  * fails (no further checks run).
2896
3118
  *
@@ -2995,7 +3217,7 @@ export function makeFilter<T>(
2995
3217
  aborted: boolean = false
2996
3218
  ): Filter<T> {
2997
3219
  return new Filter(
2998
- (input, ast, options) => SchemaIssue.make(input, ast, filter(input, ast, options)),
3220
+ (input, ast, options) => SchemaIssue.normalizeFilterOutput(ast, filter(input, ast, options), input, options),
2999
3221
  annotations,
3000
3222
  aborted
3001
3223
  )
@@ -3007,12 +3229,38 @@ export function makeFilterByGuard<T extends E, E>(
3007
3229
  annotations?: Schema.Annotations.Filter
3008
3230
  ): Filter<any> {
3009
3231
  return new Filter(
3010
- (input: E) => is(input) ? undefined : new SchemaIssue.InvalidValue(Option.some(input)),
3232
+ (input: E, _ast, options) => is(input) ? undefined : new SchemaIssue.InvalidValue(undefined, input, options),
3011
3233
  annotations,
3012
3234
  true // after a guard, we always want to abort
3013
3235
  )
3014
3236
  }
3015
3237
 
3238
+ /** @internal */
3239
+ export function isFinite(annotations?: Schema.Annotations.Filter) {
3240
+ return makeFilter(
3241
+ (n: number) => globalThis.Number.isFinite(n),
3242
+ {
3243
+ expected: "a finite number",
3244
+ representation: {
3245
+ id: "effect/schema/isFinite",
3246
+ payload: null
3247
+ },
3248
+ toJsonSchema: () => ({ type: "number" }),
3249
+ toCode: () => ({ runtime: "Schema.isFinite()" }),
3250
+ arbitrary: {
3251
+ constraint: {
3252
+ noInfinity: true,
3253
+ noNaN: true
3254
+ }
3255
+ },
3256
+ ...annotations
3257
+ }
3258
+ )
3259
+ }
3260
+
3261
+ /** @internal */
3262
+ export const finite = appendChecks(number, [isFinite()])
3263
+
3016
3264
  /**
3017
3265
  * Creates a {@link Filter} that validates strings by running `RegExp.test`.
3018
3266
  *
@@ -3024,21 +3272,25 @@ export function makeFilterByGuard<T extends E, E>(
3024
3272
  * **Details**
3025
3273
  *
3026
3274
  * The filter can be used with `Schema.filter` or attached directly to a
3027
- * `String` AST node through checks. The regular expression source is stored in
3028
- * annotations for serialization and arbitrary generation.
3275
+ * `String` AST node through checks. The regular expression is cloned and its
3276
+ * `lastIndex` is reset before each test, so global and sticky expressions are
3277
+ * deterministic and the provided regular expression is not mutated. The
3278
+ * regular expression source is stored in annotations for serialization and
3279
+ * arbitrary generation.
3029
3280
  *
3030
3281
  * **Gotchas**
3031
3282
  *
3032
- * Use a non-global, non-sticky regular expression, or reset `lastIndex`
3033
- * yourself, because `RegExp.test` is stateful for expressions with the `g` or
3034
- * `y` flag.
3283
+ * When deriving an arbitrary, only `regExp.source` is used. Regular expression
3284
+ * flags are ignored because fast-check does not support them.
3035
3285
  *
3036
3286
  * **Example** (Validating an email pattern)
3037
3287
  *
3038
- * ```ts
3288
+ * ```ts import.meta.vitest
3039
3289
  * import { SchemaAST } from "effect"
3040
3290
  *
3041
3291
  * const emailFilter = SchemaAST.isPattern(/^[^@]+@[^@]+$/)
3292
+ * emailFilter.run("alice@example.com", SchemaAST.string, {}) // => undefined
3293
+ * emailFilter.run("invalid", SchemaAST.string, {})?._tag // => "InvalidValue"
3042
3294
  * ```
3043
3295
  *
3044
3296
  * @see {@link Filter}
@@ -3047,14 +3299,19 @@ export function makeFilterByGuard<T extends E, E>(
3047
3299
  */
3048
3300
  export function isPattern(regExp: globalThis.RegExp, annotations?: Schema.Annotations.Filter) {
3049
3301
  const source = regExp.source
3302
+ const pattern = new globalThis.RegExp(source, regExp.flags)
3050
3303
  return makeFilter(
3051
- (s: string) => regExp.test(s),
3304
+ (s: string) => {
3305
+ pattern.lastIndex = 0
3306
+ return pattern.test(s)
3307
+ },
3052
3308
  {
3053
3309
  expected: `a string matching the RegExp ${source}`,
3054
- meta: {
3055
- _tag: "isPattern",
3056
- regExp
3310
+ representation: {
3311
+ id: "effect/schema/isPattern",
3312
+ payload: { source, flags: regExp.flags }
3057
3313
  },
3314
+ toJsonSchema: () => ({ pattern: source }),
3058
3315
  arbitrary: {
3059
3316
  constraint: {
3060
3317
  patterns: [regExp.source]
@@ -3076,6 +3333,13 @@ function modifyOwnPropertyDescriptors<A extends AST>(
3076
3333
  return Object.create(Object.getPrototypeOf(ast), d)
3077
3334
  }
3078
3335
 
3336
+ const contextOwners = new WeakMap<AST, AST>()
3337
+
3338
+ /** @internal */
3339
+ export function getContextOwner(ast: AST): AST {
3340
+ return contextOwners.get(ast) ?? ast
3341
+ }
3342
+
3079
3343
  /** @internal */
3080
3344
  export function replaceEncoding<A extends AST>(ast: A, encoding: Encoding | undefined): A {
3081
3345
  if (ast.encoding === encoding) {
@@ -3091,9 +3355,15 @@ export function replaceContext<A extends AST>(ast: A, context: Context | undefin
3091
3355
  if (ast.context === context) {
3092
3356
  return ast
3093
3357
  }
3094
- return modifyOwnPropertyDescriptors(ast, (d) => {
3358
+ const owner = getContextOwner(ast)
3359
+ if (owner.context === context) {
3360
+ return owner as A
3361
+ }
3362
+ const out = modifyOwnPropertyDescriptors(ast, (d) => {
3095
3363
  d.context.value = context
3096
3364
  })
3365
+ contextOwners.set(out, owner)
3366
+ return out
3097
3367
  }
3098
3368
 
3099
3369
  /** @internal */
@@ -3114,7 +3384,7 @@ export function annotate<A extends AST>(ast: A, annotations: Schema.Annotations.
3114
3384
 
3115
3385
  /** @internal */
3116
3386
  export function replaceChecks<A extends AST>(ast: A, checks: Checks | undefined): A {
3117
- if (ast._tag === "Suspend" && checks !== undefined) {
3387
+ if (ast._tag === "Suspend" && checks) {
3118
3388
  throw new Error("Cannot add checks to Suspend")
3119
3389
  }
3120
3390
  if (ast.checks === checks) {
@@ -3130,14 +3400,17 @@ export function appendChecks<A extends AST>(ast: A, checks: Checks | undefined):
3130
3400
  return replaceChecks(ast, combineChecks(ast.checks, checks))
3131
3401
  }
3132
3402
 
3403
+ /** @internal */
3404
+ export function mapLink(link: Link, f: (ast: AST) => AST): Link {
3405
+ const to = f(link.to)
3406
+ return to === link.to ? link : new Link(to, link.transformation)
3407
+ }
3408
+
3133
3409
  function updateLastLink(encoding: Encoding, f: (ast: AST) => AST): Encoding {
3134
3410
  const links = encoding
3135
3411
  const last = links[links.length - 1]
3136
- const to = f(last.to)
3137
- if (to !== last.to) {
3138
- return Arr.append(encoding.slice(0, encoding.length - 1), new Link(to, last.transformation))
3139
- }
3140
- return encoding
3412
+ const out = mapLink(last, f)
3413
+ return out === last ? encoding : Arr.append(encoding.slice(0, encoding.length - 1), out)
3141
3414
  }
3142
3415
 
3143
3416
  /** @internal */
@@ -3145,6 +3418,11 @@ export function applyToLastLink(f: (ast: AST) => AST) {
3145
3418
  return <A extends AST>(ast: A): A => ast.encoding ? replaceEncoding(ast, updateLastLink(ast.encoding, f)) : ast
3146
3419
  }
3147
3420
 
3421
+ /** @internal */
3422
+ export function replaceContextLastLink<A extends AST>(ast: A, context: Context): A {
3423
+ return applyToLastLink((ast) => replaceContext(ast, context))(ast)
3424
+ }
3425
+
3148
3426
  /** @internal */
3149
3427
  export function applyToSelfOrLastLinkEncoding(f: (ast: AST) => AST) {
3150
3428
  function out(ast: AST): AST {
@@ -3153,6 +3431,21 @@ export function applyToSelfOrLastLinkEncoding(f: (ast: AST) => AST) {
3153
3431
  return memoize(out)
3154
3432
  }
3155
3433
 
3434
+ /** @internal */
3435
+ export function applyToSelfOrLastLinkEncodingIdempotent(
3436
+ f: (ast: AST) => AST,
3437
+ options?: { readonly stopAt?: (link: Link) => boolean }
3438
+ ) {
3439
+ function out(ast: AST): AST {
3440
+ if (ast.encoding) {
3441
+ const last = ast.encoding[ast.encoding.length - 1]
3442
+ return options?.stopAt?.(last) ? ast : replaceEncoding(ast, updateLastLink(ast.encoding, out))
3443
+ }
3444
+ return f(ast)
3445
+ }
3446
+ return memoizeIdempotent(out)
3447
+ }
3448
+
3156
3449
  /** @internal */
3157
3450
  export function middlewareDecoding(
3158
3451
  ast: AST,
@@ -3213,7 +3506,7 @@ export function annotateKey<A extends AST>(ast: A, annotations: Schema.Annotatio
3213
3506
  new Context(
3214
3507
  ast.context.isOptional,
3215
3508
  ast.context.isMutable,
3216
- ast.context.defaultValue,
3509
+ ast.context.constructorDefault,
3217
3510
  { ...ast.context.annotations, ...annotations }
3218
3511
  ) :
3219
3512
  new Context(false, false, undefined, annotations)
@@ -3221,42 +3514,33 @@ export function annotateKey<A extends AST>(ast: A, annotations: Schema.Annotatio
3221
3514
  }
3222
3515
 
3223
3516
  /** @internal */
3224
- export const optionalKeyLastLink = applyToLastLink(optionalKey)
3225
-
3226
- /**
3227
- * Marks an AST node's property key as optional by setting
3228
- * {@link Context.isOptional} to `true`.
3229
- *
3230
- * **Details**
3231
- *
3232
- * Also propagates the optional flag through the last link of the encoding
3233
- * chain if present.
3234
- *
3235
- * @see {@link isOptional}
3236
- * @see {@link Context}
3237
- * @category transforming
3238
- * @since 4.0.0
3239
- */
3240
- export function optionalKey<A extends AST>(ast: A): A {
3517
+ export const optionalKey: <A extends AST>(ast: A) => A = memoizeIdempotent(<A extends AST>(ast: A): A => {
3241
3518
  const context = ast.context ?
3242
3519
  ast.context.isOptional === false ?
3243
- new Context(true, ast.context.isMutable, ast.context.defaultValue, ast.context.annotations) :
3520
+ new Context(true, ast.context.isMutable, ast.context.constructorDefault, ast.context.annotations) :
3244
3521
  ast.context :
3245
3522
  new Context(true, false)
3246
3523
  return optionalKeyLastLink(replaceContext(ast, context))
3247
- }
3524
+ })
3248
3525
 
3249
- const mutableKeyLastLink = applyToLastLink(mutableKey)
3526
+ const optionalKeyLastLink = applyToLastLink(optionalKey)
3527
+
3528
+ /** @internal */
3529
+ export const optional = memoize(<A extends AST>(ast: A): Union<A | Undefined> =>
3530
+ optionalKey(new Union([ast, undefined_], "anyOf"))
3531
+ )
3250
3532
 
3251
3533
  /** @internal */
3252
- export function mutableKey<A extends AST>(ast: A): A {
3534
+ export const mutableKey = memoizeIdempotent(<A extends AST>(ast: A): A => {
3253
3535
  const context = ast.context ?
3254
3536
  ast.context.isMutable === false ?
3255
- new Context(ast.context.isOptional, true, ast.context.defaultValue, ast.context.annotations) :
3537
+ new Context(ast.context.isOptional, true, ast.context.constructorDefault, ast.context.annotations) :
3256
3538
  ast.context :
3257
3539
  new Context(false, true)
3258
3540
  return mutableKeyLastLink(replaceContext(ast, context))
3259
- }
3541
+ })
3542
+
3543
+ const mutableKeyLastLink = applyToLastLink(mutableKey)
3260
3544
 
3261
3545
  /** @internal */
3262
3546
  export function withConstructorDefault<A extends AST>(
@@ -3267,10 +3551,10 @@ export function withConstructorDefault<A extends AST>(
3267
3551
  SchemaGetter.withDefault(defaultValue),
3268
3552
  SchemaGetter.passthrough()
3269
3553
  )
3270
- const encoding: Encoding = [new Link(unknown, transformation)]
3554
+ const constructorDefault = new Link(unknown, transformation)
3271
3555
  const context = ast.context ?
3272
- new Context(ast.context.isOptional, ast.context.isMutable, encoding, ast.context.annotations) :
3273
- new Context(false, false, encoding)
3556
+ new Context(ast.context.isOptional, ast.context.isMutable, constructorDefault, ast.context.annotations) :
3557
+ new Context(false, false, constructorDefault)
3274
3558
  return replaceContext(ast, context)
3275
3559
  }
3276
3560
 
@@ -3332,11 +3616,11 @@ function parseParameter(ast: AST): {
3332
3616
  }
3333
3617
 
3334
3618
  /** @internal */
3335
- export function record(key: AST, value: AST, keyValueCombiner: KeyValueCombiner | undefined): Objects {
3619
+ export function record(key: AST, value: AST): Objects {
3336
3620
  const { literals, parameters: indexSignatures } = parseParameter(key)
3337
3621
  return new Objects(
3338
3622
  literals.map((literal) => new PropertySignature(literal, value)),
3339
- indexSignatures.map((parameter) => new IndexSignature(parameter, value, keyValueCombiner))
3623
+ indexSignatures.map((parameter) => new IndexSignature(parameter, value))
3340
3624
  )
3341
3625
  }
3342
3626
 
@@ -3366,6 +3650,20 @@ export function isMutable(ast: AST): boolean {
3366
3650
  return ast.context?.isMutable ?? false
3367
3651
  }
3368
3652
 
3653
+ function isStructuralCheck(check: Check<any>): boolean {
3654
+ return check.annotations?.[InternalAnnotations.STRUCTURAL_ANNOTATION_KEY] === true ||
3655
+ check._tag === "FilterGroup" && check.checks.every(isStructuralCheck)
3656
+ }
3657
+
3658
+ function extractStructuralChecks(checks: Checks): Checks | undefined {
3659
+ function extract(check: Check<any>): Array<Check<any>> {
3660
+ if (isStructuralCheck(check)) return [check]
3661
+ return check._tag === "FilterGroup" ? check.checks.flatMap(extract) : []
3662
+ }
3663
+ const out = checks.flatMap(extract)
3664
+ return Arr.isArrayNonEmpty(out) ? out : undefined
3665
+ }
3666
+
3369
3667
  /**
3370
3668
  * Strips all encoding transformations from an AST, returning the decoded
3371
3669
  * (type-level) representation.
@@ -3378,12 +3676,12 @@ export function isMutable(ast: AST): boolean {
3378
3676
  *
3379
3677
  * **Example** (Getting the type AST)
3380
3678
  *
3381
- * ```ts
3679
+ * ```ts import.meta.vitest
3382
3680
  * import { Schema, SchemaAST } from "effect"
3383
3681
  *
3384
3682
  * const schema = Schema.NumberFromString
3385
3683
  * const typeAst = SchemaAST.toType(schema.ast)
3386
- * console.log(typeAst._tag) // "Number"
3684
+ * typeAst._tag // => "Number"
3387
3685
  * ```
3388
3686
  *
3389
3687
  * @see {@link toEncoded}
@@ -3391,19 +3689,22 @@ export function isMutable(ast: AST): boolean {
3391
3689
  * @category transforming
3392
3690
  * @since 4.0.0
3393
3691
  */
3394
- export const toType = memoize(<A extends AST>(ast: A): A => {
3692
+ export const toType = memoizeIdempotent(<A extends AST>(ast: A): A => {
3395
3693
  if (ast.encoding) {
3396
3694
  return toType(replaceEncoding(ast, undefined))
3397
3695
  }
3398
3696
  const out: any = ast
3399
3697
  const type = out.recur?.(toType) ?? out
3400
- const encodingChecks = type.encodingChecks
3698
+ const encodingChecks: Checks | undefined = type.encodingChecks
3401
3699
  if (encodingChecks) {
3700
+ const checks = type === ast
3701
+ ? encodingChecks
3702
+ : isArrays(type) || isObjects(type) || isDeclaration(type) && type.typeParameters.length > 0
3703
+ ? extractStructuralChecks(encodingChecks)
3704
+ : undefined
3402
3705
  return modifyOwnPropertyDescriptors(type, (d) => {
3403
3706
  d.encodingChecks.value = undefined
3404
- if (type === ast) {
3405
- d.checks.value = combineChecks(type.checks, encodingChecks)
3406
- }
3707
+ d.checks.value = combineChecks(type.checks, checks)
3407
3708
  })
3408
3709
  }
3409
3710
  return type
@@ -3422,12 +3723,12 @@ export const toType = memoize(<A extends AST>(ast: A): A => {
3422
3723
  *
3423
3724
  * **Example** (Getting the encoded AST)
3424
3725
  *
3425
- * ```ts
3726
+ * ```ts import.meta.vitest
3426
3727
  * import { Schema, SchemaAST } from "effect"
3427
3728
  *
3428
3729
  * const schema = Schema.NumberFromString
3429
3730
  * const encodedAst = SchemaAST.toEncoded(schema.ast)
3430
- * console.log(encodedAst._tag) // "String"
3731
+ * encodedAst._tag // => "String"
3431
3732
  * ```
3432
3733
  *
3433
3734
  * @see {@link toType}
@@ -3435,7 +3736,7 @@ export const toType = memoize(<A extends AST>(ast: A): A => {
3435
3736
  * @category transforming
3436
3737
  * @since 4.0.0
3437
3738
  */
3438
- export const toEncoded = memoize((ast: AST): AST => {
3739
+ export const toEncoded = memoizeIdempotent((ast: AST): AST => {
3439
3740
  return toType(flip(ast))
3440
3741
  })
3441
3742
 
@@ -3498,54 +3799,44 @@ function fromConst<const T>(
3498
3799
  ast: AST,
3499
3800
  value: T
3500
3801
  ): SchemaParser.Parser {
3501
- const succeed = Effect.succeedSome(value)
3502
- return (oinput) => {
3503
- if (oinput._tag === "None") {
3504
- return Effect.succeedNone
3505
- }
3506
- return oinput.value === value
3507
- ? succeed
3508
- : Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
3802
+ const succeed = InternalParser.succeed(value)
3803
+ return (input, options) => {
3804
+ if (input === InternalParser.missing) return InternalParser.missingExit
3805
+ if (input === value) return succeed
3806
+ return Effect.fail(new SchemaIssue.InvalidType(ast, input, options))
3509
3807
  }
3510
3808
  }
3511
3809
 
3512
- function fromAnyToConst<const T>(value: T): SchemaParser.Parser {
3513
- const succeed = Effect.succeedSome(value)
3514
- return (oinput) => oinput._tag === "None" ? Effect.succeedNone : succeed
3515
- }
3516
-
3517
3810
  function fromRefinement<T>(
3518
3811
  ast: AST,
3519
3812
  refinement: (input: unknown) => input is T
3520
3813
  ): SchemaParser.Parser {
3521
- return (oinput) => {
3522
- if (oinput._tag === "None") {
3523
- return Effect.succeedNone
3524
- }
3525
- return refinement(oinput.value)
3526
- ? Effect.succeed(oinput)
3527
- : Effect.fail(new SchemaIssue.InvalidType(ast, oinput))
3814
+ return (input, options) => {
3815
+ if (input === InternalParser.missing) return InternalParser.missingExit
3816
+ if (refinement(input)) return InternalParser.sameExit
3817
+ return Effect.fail(new SchemaIssue.InvalidType(ast, input, options))
3528
3818
  }
3529
3819
  }
3530
3820
 
3531
- function applyTemplateLiteralPartChecks<A>(ast: AST, value: A, options: ParseOptions): A | undefined {
3532
- if (options?.disableChecks || ast.checks === undefined) return value
3533
- const issues: Array<SchemaIssue.Issue> = []
3534
- collectIssues(ast.checks, value, issues, ast, options)
3535
- return issues.length === 0 ? value : undefined
3536
- }
3537
-
3538
3821
  function segmentTemplateLiteralParts(
3539
- parts: ReadonlyArray<TemplateLiteralPart>,
3822
+ ast: TemplateLiteral,
3540
3823
  input: string,
3541
3824
  options: ParseOptions
3542
3825
  ): Array<string> | undefined {
3826
+ const parts = ast.encodedParts
3827
+ const literals = ast.literals
3828
+ const inputLength = input.length
3829
+ for (let i = 0; i < literals.length; i++) {
3830
+ const literal = literals[i]
3831
+ if (literal && !input.includes(literal)) return undefined
3832
+ }
3833
+ if (ast.suffixLengths[0] > inputLength) return undefined
3834
+
3543
3835
  const out = new Array<string>(parts.length)
3544
- const failures = new Set<string>()
3836
+ let failures: Set<number> | undefined
3545
3837
  function go(i: number, pos: number): boolean {
3546
- if (i === parts.length) return pos === input.length
3547
- const key = `${i}/${pos}`
3548
- if (failures.has(key)) return false
3838
+ if (i === parts.length) return pos === inputLength
3839
+ if (failures?.has(i * (inputLength + 1) + pos)) return false
3549
3840
  const part = parts[i]
3550
3841
  if (i === parts.length - 1) {
3551
3842
  const s = input.slice(pos)
@@ -3554,21 +3845,28 @@ function segmentTemplateLiteralParts(
3554
3845
  return true
3555
3846
  }
3556
3847
  } else if (part._tag === "Literal") {
3557
- const s = globalThis.String(part.literal)
3848
+ const s = literals[i]!
3558
3849
  if (input.startsWith(s, pos) && go(i + 1, pos + s.length)) {
3559
3850
  out[i] = s
3560
3851
  return true
3561
3852
  }
3562
3853
  } else {
3563
- for (let end = input.length; end >= pos; end--) {
3854
+ const maximumEnd = inputLength - ast.suffixLengths[i + 1]
3855
+ // Splits preceding a literal only need to consider occurrences of that literal.
3856
+ const anchor = literals[i + 1]
3857
+ let end = anchor === undefined ? maximumEnd : input.lastIndexOf(anchor, maximumEnd)
3858
+ while (end >= pos) {
3564
3859
  const s = input.slice(pos, end)
3565
3860
  if (part.matchPart(s, options) !== undefined && go(i + 1, end)) {
3566
3861
  out[i] = s
3567
3862
  return true
3568
3863
  }
3864
+ if (end === 0) break
3865
+ end = anchor === undefined ? end - 1 : input.lastIndexOf(anchor, end - 1)
3569
3866
  }
3570
3867
  }
3571
- failures.add(key)
3868
+ failures ??= new Set()
3869
+ failures.add(i * (inputLength + 1) + pos)
3572
3870
  return false
3573
3871
  }
3574
3872
  return go(0, 0) ? out : undefined
@@ -3582,7 +3880,7 @@ export const enumsToLiterals = memoize((ast: Enum): Union<Literal> => {
3582
3880
  )
3583
3881
  })
3584
3882
 
3585
- const parameterFromPropertyKey = applyToSelfOrLastLinkEncoding((ast) => {
3883
+ const parameterFromPropertyKey = applyToSelfOrLastLinkEncodingIdempotent((ast) => {
3586
3884
  switch (ast._tag) {
3587
3885
  default:
3588
3886
  return ast
@@ -3594,7 +3892,7 @@ const parameterFromPropertyKey = applyToSelfOrLastLinkEncoding((ast) => {
3594
3892
  })
3595
3893
 
3596
3894
  /** @internal */
3597
- export const parameterFromString = applyToSelfOrLastLinkEncoding((ast) => {
3895
+ export const parameterFromString = applyToSelfOrLastLinkEncodingIdempotent((ast) => {
3598
3896
  switch (ast._tag) {
3599
3897
  default:
3600
3898
  return ast
@@ -3606,7 +3904,7 @@ export const parameterFromString = applyToSelfOrLastLinkEncoding((ast) => {
3606
3904
  }
3607
3905
  })
3608
3906
 
3609
- const partFromString = applyToSelfOrLastLinkEncoding((ast) => {
3907
+ const partFromString = applyToSelfOrLastLinkEncodingIdempotent((ast) => {
3610
3908
  switch (ast._tag) {
3611
3909
  default:
3612
3910
  return ast
@@ -3627,7 +3925,7 @@ export const STRING_PATTERN = "[\\s\\S]*?"
3627
3925
 
3628
3926
  const isStringFiniteRegExp = new globalThis.RegExp(`^${FINITE_PATTERN}$`)
3629
3927
 
3630
- const isStringNumberRegExp = new globalThis.RegExp(`(?:${FINITE_PATTERN}|Infinity|-Infinity|NaN)`)
3928
+ const isStringNumberRegExp = new globalThis.RegExp(`^(?:${FINITE_PATTERN}|Infinity|-Infinity|NaN)$`)
3631
3929
 
3632
3930
  /** @internal */
3633
3931
  export function isStringFinite(annotations?: Schema.Annotations.Filter) {
@@ -3635,10 +3933,11 @@ export function isStringFinite(annotations?: Schema.Annotations.Filter) {
3635
3933
  isStringFiniteRegExp,
3636
3934
  {
3637
3935
  expected: "a string representing a finite number",
3638
- meta: {
3639
- _tag: "isStringFinite",
3640
- regExp: isStringFiniteRegExp
3936
+ representation: {
3937
+ id: "effect/schema/isStringFinite",
3938
+ payload: null
3641
3939
  },
3940
+ toJsonSchema: () => ({ pattern: isStringFiniteRegExp.source }),
3642
3941
  ...annotations
3643
3942
  }
3644
3943
  )
@@ -3669,10 +3968,11 @@ export function isStringBigInt(annotations?: Schema.Annotations.Filter) {
3669
3968
  isStringBigIntRegExp,
3670
3969
  {
3671
3970
  expected: "a string representing a bigint",
3672
- meta: {
3673
- _tag: "isStringBigInt",
3674
- regExp: isStringBigIntRegExp
3971
+ representation: {
3972
+ id: "effect/schema/isStringBigInt",
3973
+ payload: null
3675
3974
  },
3975
+ toJsonSchema: () => ({ pattern: isStringBigIntRegExp.source }),
3676
3976
  ...annotations
3677
3977
  }
3678
3978
  )
@@ -3702,13 +4002,17 @@ const symbolToString = new Link(
3702
4002
  symbolString,
3703
4003
  new SchemaTransformation.Transformation(
3704
4004
  SchemaGetter.transform((description) => globalThis.Symbol.for(isStringSymbolRegExp.exec(description)![1])),
3705
- SchemaGetter.transformOrFail((sym: symbol) => {
4005
+ SchemaGetter.transformOrFail((sym: symbol, options) => {
3706
4006
  const key = globalThis.Symbol.keyFor(sym)
3707
4007
  if (key !== undefined) {
3708
4008
  return Effect.succeed(globalThis.String(sym))
3709
4009
  }
3710
4010
  return Effect.fail(
3711
- new SchemaIssue.Forbidden(Option.some(sym), { message: "cannot serialize to string, Symbol is not registered" })
4011
+ new SchemaIssue.Forbidden(
4012
+ { message: "cannot serialize to string, Symbol is not registered" },
4013
+ sym,
4014
+ options
4015
+ )
3712
4016
  )
3713
4017
  })
3714
4018
  )
@@ -3720,10 +4024,11 @@ export function isStringSymbol(annotations?: Schema.Annotations.Filter) {
3720
4024
  isStringSymbolRegExp,
3721
4025
  {
3722
4026
  expected: "a string representing a symbol",
3723
- meta: {
3724
- _tag: "isStringSymbol",
3725
- regExp: isStringSymbolRegExp
4027
+ representation: {
4028
+ id: "effect/schema/isStringSymbol",
4029
+ payload: null
3726
4030
  },
4031
+ toJsonSchema: () => ({ pattern: isStringSymbolRegExp.source }),
3727
4032
  ...annotations
3728
4033
  }
3729
4034
  )
@@ -3733,24 +4038,33 @@ export function isStringSymbol(annotations?: Schema.Annotations.Filter) {
3733
4038
  export function collectIssues<T>(
3734
4039
  checks: ReadonlyArray<Check<T>>,
3735
4040
  value: T,
3736
- issues: Array<SchemaIssue.Issue>,
4041
+ issues: Arr.NonEmptyArray<SchemaIssue.Issue> | undefined,
3737
4042
  ast: AST,
3738
4043
  options: ParseOptions
3739
- ) {
4044
+ ): Arr.NonEmptyArray<SchemaIssue.Issue> | undefined {
3740
4045
  for (let i = 0; i < checks.length; i++) {
3741
4046
  const check = checks[i]
3742
4047
  if (check._tag === "FilterGroup") {
3743
- collectIssues(check.checks, value, issues, ast, options)
4048
+ issues = collectIssues(check.checks, value, issues, ast, options)
4049
+ if (
4050
+ issues &&
4051
+ (options.errors !== "all" || (issues[issues.length - 1] as SchemaIssue.Filter).filter.aborted)
4052
+ ) {
4053
+ return issues
4054
+ }
3744
4055
  } else {
3745
4056
  const issue = check.run(value, ast, options)
3746
4057
  if (issue) {
3747
- issues.push(new SchemaIssue.Filter(value, check, issue))
3748
- if (check.aborted || options?.errors !== "all") {
3749
- return
4058
+ const filter = new SchemaIssue.Filter(check, issue, value, options)
4059
+ if (issues) issues.push(filter)
4060
+ else issues = [filter]
4061
+ if (options.errors !== "all" || check.aborted) {
4062
+ return issues
3750
4063
  }
3751
4064
  }
3752
4065
  }
3753
4066
  }
4067
+ return issues
3754
4068
  }
3755
4069
 
3756
4070
  /** @internal */
@@ -3758,20 +4072,26 @@ export function runChecks<T>(
3758
4072
  checks: readonly [Check<T>, ...Array<Check<T>>],
3759
4073
  s: T
3760
4074
  ): Result.Result<T, SchemaIssue.Issue> {
3761
- const issues: Array<SchemaIssue.Issue> = []
3762
- collectIssues(checks, s, issues, unknown, { errors: "all" })
3763
- if (Arr.isArrayNonEmpty(issues)) {
3764
- const issue = new SchemaIssue.Composite(unknown, Option.some(s), issues)
4075
+ const issues = collectIssues(checks, s, undefined, unknown, { errors: "all" })
4076
+ if (issues) {
4077
+ const issue = new SchemaIssue.Composite(unknown, issues)
3765
4078
  return Result.fail(issue)
3766
4079
  }
3767
4080
  return Result.succeed(s)
3768
4081
  }
3769
4082
 
3770
4083
  /** @internal */
3771
- export const ClassTypeId = "~effect/Schema/Class"
4084
+ export interface ConstructorDescriptor {
4085
+ readonly isConstructed: Predicate.Predicate<unknown>
4086
+ readonly link: Link
4087
+ }
3772
4088
 
3773
4089
  /** @internal */
3774
- export const STRUCTURAL_ANNOTATION_KEY = "~structural"
4090
+ export function getConstructorDescriptor(ast: AST): ConstructorDescriptor | undefined {
4091
+ if (!isDeclaration(ast)) return undefined
4092
+ const getDescriptor = ast.annotations?.[InternalAnnotations.CONSTRUCTOR_ANNOTATION_KEY]
4093
+ return Predicate.isFunction(getDescriptor) ? getDescriptor(ast.typeParameters) : undefined
4094
+ }
3775
4095
 
3776
4096
  /**
3777
4097
  * Returns all annotations from the AST node.
@@ -3784,12 +4104,12 @@ export const STRUCTURAL_ANNOTATION_KEY = "~structural"
3784
4104
  *
3785
4105
  * **Example** (Reading annotations)
3786
4106
  *
3787
- * ```ts
4107
+ * ```ts import.meta.vitest
3788
4108
  * import { Schema, SchemaAST } from "effect"
3789
4109
  *
3790
4110
  * const schema = Schema.String.annotate({ title: "Name" })
3791
4111
  * const annotations = SchemaAST.resolve(schema.ast)
3792
- * console.log(annotations?.title) // "Name"
4112
+ * annotations?.title // => "Name"
3793
4113
  * ```
3794
4114
  *
3795
4115
  * @see {@link resolveAt}
@@ -3854,6 +4174,82 @@ export const resolveTitle: (ast: AST) => string | undefined = InternalAnnotation
3854
4174
  */
3855
4175
  export const resolveDescription: (ast: AST) => string | undefined = InternalAnnotations.resolveDescription
3856
4176
 
4177
+ type TreeFrame = {
4178
+ readonly value: object
4179
+ // Object keys or an array length snapshot.
4180
+ readonly keys: ReadonlyArray<string> | number
4181
+ index: number
4182
+ }
4183
+
4184
+ function isJsonLeaf(u: unknown): boolean {
4185
+ return u === null || typeof u === "string" || typeof u === "boolean" ||
4186
+ typeof u === "number" && globalThis.Number.isFinite(u)
4187
+ }
4188
+
4189
+ function isStringTreeLeaf(u: unknown): boolean {
4190
+ return u === undefined || typeof u === "string"
4191
+ }
4192
+
4193
+ function isTree(u: unknown, isLeaf: (u: unknown) => boolean): boolean {
4194
+ const cache = new WeakMap<object, boolean>()
4195
+ const stack: Array<TreeFrame> = []
4196
+ outer: while (true) {
4197
+ if (typeof u !== "object" || u === null) {
4198
+ if (!isLeaf(u)) {
4199
+ return false
4200
+ }
4201
+ } else {
4202
+ const value = u
4203
+ const cached = cache.get(value)
4204
+ // `false` marks a node on the current path, while `true` marks a fully
4205
+ // validated node that can be safely reused by a DAG.
4206
+ if (cached === false) {
4207
+ return false
4208
+ }
4209
+ if (cached === undefined) {
4210
+ const isArray = Array.isArray(value)
4211
+ if (!isArray) {
4212
+ const prototype = Object.getPrototypeOf(value)
4213
+ // A plain object from another realm has a different Object.prototype,
4214
+ // but that prototype still has a null prototype.
4215
+ if (
4216
+ prototype !== null &&
4217
+ prototype !== Object.prototype &&
4218
+ Object.getPrototypeOf(prototype) !== null
4219
+ ) {
4220
+ return false
4221
+ }
4222
+ }
4223
+ cache.set(value, false)
4224
+ stack.push({
4225
+ value,
4226
+ keys: isArray ? value.length : Object.keys(value),
4227
+ index: 0
4228
+ })
4229
+ }
4230
+ }
4231
+
4232
+ while (stack.length > 0) {
4233
+ const frame = stack[stack.length - 1]
4234
+ const keys = frame.keys
4235
+ if (typeof keys === "number") {
4236
+ if (frame.index < keys) {
4237
+ // A sparse slot is read as `undefined`; the leaf predicate determines
4238
+ // whether that is valid for the current tree.
4239
+ u = (frame.value as ReadonlyArray<unknown>)[frame.index++]
4240
+ continue outer
4241
+ }
4242
+ } else if (frame.index < keys.length) {
4243
+ u = (frame.value as Record<string, unknown>)[keys[frame.index++]]
4244
+ continue outer
4245
+ }
4246
+ cache.set(frame.value, true)
4247
+ stack.pop()
4248
+ }
4249
+ return true
4250
+ }
4251
+ }
4252
+
3857
4253
  /**
3858
4254
  * Returns true if the value is a JSON value.
3859
4255
  *
@@ -3862,97 +4258,48 @@ export const resolveDescription: (ast: AST) => string | undefined = InternalAnno
3862
4258
  * @internal
3863
4259
  */
3864
4260
  export function isJson(u: unknown): u is Schema.Json {
3865
- // `onPath` is the current recursion stack: nodes between the root and the
3866
- // one being visited. A hit here means we looped back to an ancestor — a
3867
- // real cycle, not a DAG — so the value is not JSON.
3868
- const onPath = new Set<unknown>()
3869
- // `validated` memoizes subtrees we've already fully checked. Without it, a
3870
- // diamond-shaped DAG (same node reached through multiple parents) would be
3871
- // re-traversed once per parent, which is exponential in the nesting depth.
3872
- const validated = new Set<unknown>()
3873
- return recur(u)
3874
-
3875
- function recur(u: unknown): boolean {
3876
- if (u === null || typeof u === "string" || typeof u === "boolean") {
3877
- return true
3878
- }
3879
- if (typeof u === "number") {
3880
- return globalThis.Number.isFinite(u)
3881
- }
3882
- if (typeof u !== "object" || u === undefined) {
3883
- return false
3884
- }
3885
- if (onPath.has(u)) {
3886
- return false
3887
- }
3888
- if (validated.has(u)) {
3889
- return true
3890
- }
3891
- const isArray = Array.isArray(u)
3892
- if (!isArray) {
3893
- const prototype = Object.getPrototypeOf(u)
3894
- if (prototype !== null && Object.getPrototypeOf(prototype) !== null) {
3895
- return false
3896
- }
3897
- }
3898
- onPath.add(u)
3899
- const ok = isArray
3900
- ? u.every(recur)
3901
- : Object.keys(u).every((key) => recur((u as Record<string, unknown>)[key]))
3902
- // Pop on exit so siblings reaching the same node via a different path
3903
- // don't see it as an ancestor (that would reject valid DAGs).
3904
- onPath.delete(u)
3905
- if (ok) {
3906
- validated.add(u)
3907
- }
3908
- return ok
3909
- }
4261
+ return isTree(u, isJsonLeaf)
3910
4262
  }
3911
4263
 
3912
4264
  /** @internal */
3913
4265
  export const Json = new Declaration(
3914
4266
  [],
3915
- () => (input, ast) =>
4267
+ () => (input, ast, options) =>
3916
4268
  isJson(input) ?
3917
- Effect.succeed(input) :
3918
- Effect.fail(new SchemaIssue.InvalidType(ast, Option.some(input))),
4269
+ InternalParser.sameExit :
4270
+ Effect.fail(new SchemaIssue.InvalidType(ast, input, options)),
3919
4271
  {
3920
- typeConstructor: {
3921
- _tag: "effect/Json"
3922
- },
3923
- generation: {
3924
- runtime: `Schema.Json`,
3925
- Type: `Schema.Json`
4272
+ representation: {
4273
+ id: "effect/schema/Json",
4274
+ payload: null
3926
4275
  },
3927
4276
  expected: "JSON value",
3928
- toCodecJson: () => new Link(unknown, SchemaTransformation.passthrough()),
4277
+ toCodecJson: () => undefined,
4278
+ toCodecStringTree: () => unknownToStringTree,
3929
4279
  toArbitrary: () => (fc: typeof FastCheck) => fc.jsonValue()
3930
4280
  }
3931
4281
  )
3932
4282
 
3933
4283
  /** @internal */
3934
4284
  export const MutableJson = annotate(Json, {
3935
- typeConstructor: {
3936
- _tag: "effect/MutableJson"
3937
- },
3938
- generation: {
3939
- runtime: `Schema.MutableJson`,
3940
- Type: `Schema.MutableJson`
4285
+ representation: {
4286
+ id: "effect/schema/MutableJson",
4287
+ payload: null
3941
4288
  }
3942
4289
  })
3943
4290
 
3944
4291
  /** @internal */
3945
- export const unknownToNull = new Link(
3946
- null_,
3947
- new SchemaTransformation.Transformation(
3948
- SchemaGetter.passthrough(),
3949
- SchemaGetter.transform(() => null)
3950
- )
4292
+ export const unknownToJson = new Link(
4293
+ Json,
4294
+ SchemaTransformation.passthrough()
3951
4295
  )
3952
4296
 
3953
4297
  /** @internal */
3954
- export const unknownToJson = new Link(
3955
- Json,
4298
+ export const objectKeywordToJson = new Link(
4299
+ new Union([
4300
+ new Arrays(false, [], [Json]),
4301
+ new Objects([], [new IndexSignature(string, Json)])
4302
+ ], "anyOf"),
3956
4303
  SchemaTransformation.passthrough()
3957
4304
  )
3958
4305
 
@@ -3964,34 +4311,16 @@ export const unknownToJson = new Link(
3964
4311
  * @internal
3965
4312
  */
3966
4313
  export function isStringTree(u: unknown): u is Schema.StringTree {
3967
- const seen = new Set<unknown>()
3968
- return recur(u)
3969
-
3970
- function recur(u: unknown): boolean {
3971
- if (u === undefined || typeof u === "string") {
3972
- return true
3973
- }
3974
- if (typeof u !== "object" || u === null) {
3975
- return false
3976
- }
3977
- if (seen.has(u)) {
3978
- return false
3979
- }
3980
- seen.add(u)
3981
- if (Array.isArray(u)) {
3982
- return u.every(recur)
3983
- }
3984
- return Object.keys(u).every((key) => recur((u as Record<string, unknown>)[key]))
3985
- }
4314
+ return isTree(u, isStringTreeLeaf)
3986
4315
  }
3987
4316
 
3988
4317
  const StringTree = new Declaration(
3989
4318
  [],
3990
- () => (input, ast) =>
4319
+ () => (input, ast, options) =>
3991
4320
  isStringTree(input) ?
3992
- Effect.succeed(input) :
3993
- Effect.fail(new SchemaIssue.InvalidType(ast, Option.some(input))),
3994
- { expected: "StringTree" }
4321
+ InternalParser.sameExit :
4322
+ Effect.fail(new SchemaIssue.InvalidType(ast, input, options)),
4323
+ { expected: "StringTree", toCodecStringTree: () => undefined }
3995
4324
  )
3996
4325
 
3997
4326
  /** @internal */