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

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 (1904) hide show
  1. package/AGENTS.md +395 -0
  2. package/CLAUDE.md +395 -0
  3. package/README.md +19 -23
  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/40_sql/10_basics.ts +175 -0
  52. package/ai-docs/src/40_sql/index.md +6 -0
  53. package/ai-docs/src/50_http-client/10_basics.ts +102 -0
  54. package/ai-docs/src/50_http-client/index.md +3 -0
  55. package/ai-docs/src/51_http-server/10_basics.ts +118 -0
  56. package/ai-docs/src/51_http-server/20_testing.ts +100 -0
  57. package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  58. package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  59. package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  60. package/ai-docs/src/51_http-server/fixtures/api/Users.ts +107 -0
  61. package/ai-docs/src/51_http-server/fixtures/domain/User.ts +21 -0
  62. package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  63. package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +37 -0
  64. package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +80 -0
  65. package/ai-docs/src/51_http-server/fixtures/server/Users.ts +183 -0
  66. package/ai-docs/src/51_http-server/index.md +3 -0
  67. package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  68. package/ai-docs/src/60_child-process/index.md +3 -0
  69. package/ai-docs/src/70_cli/10_basics.ts +160 -0
  70. package/ai-docs/src/70_cli/index.md +5 -0
  71. package/ai-docs/src/71_ai/10_language-model.ts +156 -0
  72. package/ai-docs/src/71_ai/20_tools.ts +226 -0
  73. package/ai-docs/src/71_ai/30_chat.ts +158 -0
  74. package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  75. package/ai-docs/src/71_ai/index.md +5 -0
  76. package/ai-docs/src/80_cluster/10_entities.ts +97 -0
  77. package/ai-docs/src/80_cluster/index.md +4 -0
  78. package/ai-docs/src/index.md +10 -0
  79. package/ai-docs/tsconfig.json +24 -0
  80. package/dist/Array.d.ts +971 -1037
  81. package/dist/Array.d.ts.map +1 -1
  82. package/dist/Array.js +462 -412
  83. package/dist/Array.js.map +1 -1
  84. package/dist/BigDecimal.d.ts +433 -756
  85. package/dist/BigDecimal.d.ts.map +1 -1
  86. package/dist/BigDecimal.js +200 -325
  87. package/dist/BigDecimal.js.map +1 -1
  88. package/dist/BigInt.d.ts +207 -267
  89. package/dist/BigInt.d.ts.map +1 -1
  90. package/dist/BigInt.js +107 -135
  91. package/dist/BigInt.js.map +1 -1
  92. package/dist/Boolean.d.ts +146 -188
  93. package/dist/Boolean.d.ts.map +1 -1
  94. package/dist/Boolean.js +64 -84
  95. package/dist/Boolean.js.map +1 -1
  96. package/dist/Brand.d.ts +3 -3
  97. package/dist/Brand.d.ts.map +1 -1
  98. package/dist/Brand.js +4 -3
  99. package/dist/Brand.js.map +1 -1
  100. package/dist/Cache.d.ts +409 -256
  101. package/dist/Cache.d.ts.map +1 -1
  102. package/dist/Cache.js +213 -134
  103. package/dist/Cache.js.map +1 -1
  104. package/dist/Cause.d.ts +167 -277
  105. package/dist/Cause.d.ts.map +1 -1
  106. package/dist/Cause.js +122 -176
  107. package/dist/Cause.js.map +1 -1
  108. package/dist/Channel.d.ts +756 -769
  109. package/dist/Channel.d.ts.map +1 -1
  110. package/dist/Channel.js +588 -449
  111. package/dist/Channel.js.map +1 -1
  112. package/dist/ChannelSchema.d.ts +1 -1
  113. package/dist/ChannelSchema.d.ts.map +1 -1
  114. package/dist/ChannelSchema.js.map +1 -1
  115. package/dist/Chunk.d.ts +834 -1173
  116. package/dist/Chunk.d.ts.map +1 -1
  117. package/dist/Chunk.js +326 -439
  118. package/dist/Chunk.js.map +1 -1
  119. package/dist/Clock.d.ts +180 -49
  120. package/dist/Clock.d.ts.map +1 -1
  121. package/dist/Clock.js +96 -31
  122. package/dist/Clock.js.map +1 -1
  123. package/dist/Combiner.d.ts +20 -33
  124. package/dist/Combiner.d.ts.map +1 -1
  125. package/dist/Combiner.js +18 -30
  126. package/dist/Combiner.js.map +1 -1
  127. package/dist/Config.d.ts +226 -174
  128. package/dist/Config.d.ts.map +1 -1
  129. package/dist/Config.js +361 -267
  130. package/dist/Config.js.map +1 -1
  131. package/dist/ConfigProvider.d.ts +229 -71
  132. package/dist/ConfigProvider.d.ts.map +1 -1
  133. package/dist/ConfigProvider.js +164 -95
  134. package/dist/ConfigProvider.js.map +1 -1
  135. package/dist/Console.d.ts +233 -33
  136. package/dist/Console.d.ts.map +1 -1
  137. package/dist/Console.js +232 -32
  138. package/dist/Console.js.map +1 -1
  139. package/dist/Context.d.ts +160 -277
  140. package/dist/Context.d.ts.map +1 -1
  141. package/dist/Context.js +179 -236
  142. package/dist/Context.js.map +1 -1
  143. package/dist/Cron.d.ts +144 -176
  144. package/dist/Cron.d.ts.map +1 -1
  145. package/dist/Cron.js +227 -162
  146. package/dist/Cron.js.map +1 -1
  147. package/dist/Crypto.d.ts +13 -15
  148. package/dist/Crypto.d.ts.map +1 -1
  149. package/dist/Crypto.js +24 -39
  150. package/dist/Crypto.js.map +1 -1
  151. package/dist/Data.d.ts +60 -80
  152. package/dist/Data.d.ts.map +1 -1
  153. package/dist/Data.js +18 -24
  154. package/dist/Data.js.map +1 -1
  155. package/dist/DateTime.d.ts +562 -660
  156. package/dist/DateTime.d.ts.map +1 -1
  157. package/dist/DateTime.js +307 -362
  158. package/dist/DateTime.js.map +1 -1
  159. package/dist/Deferred.d.ts +253 -256
  160. package/dist/Deferred.d.ts.map +1 -1
  161. package/dist/Deferred.js +110 -98
  162. package/dist/Deferred.js.map +1 -1
  163. package/dist/Duration.d.ts +216 -308
  164. package/dist/Duration.d.ts.map +1 -1
  165. package/dist/Duration.js +157 -188
  166. package/dist/Duration.js.map +1 -1
  167. package/dist/Effect.d.ts +3157 -3360
  168. package/dist/Effect.d.ts.map +1 -1
  169. package/dist/Effect.js +1457 -1574
  170. package/dist/Effect.js.map +1 -1
  171. package/dist/Effectable.js.map +1 -1
  172. package/dist/Encoding.d.ts +22 -40
  173. package/dist/Encoding.d.ts.map +1 -1
  174. package/dist/Encoding.js +22 -40
  175. package/dist/Encoding.js.map +1 -1
  176. package/dist/Equal.d.ts +33 -37
  177. package/dist/Equal.d.ts.map +1 -1
  178. package/dist/Equal.js +39 -23
  179. package/dist/Equal.js.map +1 -1
  180. package/dist/Equivalence.d.ts +103 -105
  181. package/dist/Equivalence.d.ts.map +1 -1
  182. package/dist/Equivalence.js +77 -79
  183. package/dist/Equivalence.js.map +1 -1
  184. package/dist/ErrorReporter.d.ts +52 -28
  185. package/dist/ErrorReporter.d.ts.map +1 -1
  186. package/dist/ErrorReporter.js +51 -27
  187. package/dist/ErrorReporter.js.map +1 -1
  188. package/dist/ExecutionPlan.d.ts +86 -55
  189. package/dist/ExecutionPlan.d.ts.map +1 -1
  190. package/dist/ExecutionPlan.js +8 -29
  191. package/dist/ExecutionPlan.js.map +1 -1
  192. package/dist/Exit.d.ts +116 -192
  193. package/dist/Exit.d.ts.map +1 -1
  194. package/dist/Exit.js +82 -130
  195. package/dist/Exit.js.map +1 -1
  196. package/dist/Fiber.d.ts +83 -147
  197. package/dist/Fiber.d.ts.map +1 -1
  198. package/dist/Fiber.js +48 -87
  199. package/dist/Fiber.js.map +1 -1
  200. package/dist/FiberHandle.d.ts +152 -105
  201. package/dist/FiberHandle.d.ts.map +1 -1
  202. package/dist/FiberHandle.js +109 -75
  203. package/dist/FiberHandle.js.map +1 -1
  204. package/dist/FiberMap.d.ts +213 -168
  205. package/dist/FiberMap.d.ts.map +1 -1
  206. package/dist/FiberMap.js +114 -89
  207. package/dist/FiberMap.js.map +1 -1
  208. package/dist/FiberSet.d.ts +123 -81
  209. package/dist/FiberSet.d.ts.map +1 -1
  210. package/dist/FiberSet.js +86 -60
  211. package/dist/FiberSet.js.map +1 -1
  212. package/dist/FileSystem.d.ts +154 -265
  213. package/dist/FileSystem.d.ts.map +1 -1
  214. package/dist/FileSystem.js +42 -147
  215. package/dist/FileSystem.js.map +1 -1
  216. package/dist/Filter.d.ts +61 -33
  217. package/dist/Filter.d.ts.map +1 -1
  218. package/dist/Filter.js +26 -15
  219. package/dist/Filter.js.map +1 -1
  220. package/dist/Formatter.d.ts +24 -32
  221. package/dist/Formatter.d.ts.map +1 -1
  222. package/dist/Formatter.js +55 -60
  223. package/dist/Formatter.js.map +1 -1
  224. package/dist/Function.d.ts +106 -148
  225. package/dist/Function.d.ts.map +1 -1
  226. package/dist/Function.js +81 -62
  227. package/dist/Function.js.map +1 -1
  228. package/dist/Graph.d.ts +360 -714
  229. package/dist/Graph.d.ts.map +1 -1
  230. package/dist/Graph.js +168 -297
  231. package/dist/Graph.js.map +1 -1
  232. package/dist/HKT.d.ts +12 -6
  233. package/dist/HKT.d.ts.map +1 -1
  234. package/dist/Hash.d.ts +47 -83
  235. package/dist/Hash.d.ts.map +1 -1
  236. package/dist/Hash.js +46 -68
  237. package/dist/Hash.js.map +1 -1
  238. package/dist/HashMap.d.ts +319 -411
  239. package/dist/HashMap.d.ts.map +1 -1
  240. package/dist/HashMap.js +122 -166
  241. package/dist/HashMap.js.map +1 -1
  242. package/dist/HashRing.d.ts.map +1 -1
  243. package/dist/HashRing.js +1 -0
  244. package/dist/HashRing.js.map +1 -1
  245. package/dist/HashSet.d.ts +177 -284
  246. package/dist/HashSet.d.ts.map +1 -1
  247. package/dist/HashSet.js +68 -109
  248. package/dist/HashSet.js.map +1 -1
  249. package/dist/Inspectable.d.ts +19 -18
  250. package/dist/Inspectable.d.ts.map +1 -1
  251. package/dist/Inspectable.js +20 -16
  252. package/dist/Inspectable.js.map +1 -1
  253. package/dist/Iterable.d.ts +620 -786
  254. package/dist/Iterable.d.ts.map +1 -1
  255. package/dist/Iterable.js +241 -317
  256. package/dist/Iterable.js.map +1 -1
  257. package/dist/JsonPatch.d.ts +11 -13
  258. package/dist/JsonPatch.d.ts.map +1 -1
  259. package/dist/JsonPatch.js +46 -103
  260. package/dist/JsonPatch.js.map +1 -1
  261. package/dist/JsonPointer.d.ts +8 -8
  262. package/dist/JsonPointer.js +8 -8
  263. package/dist/JsonPointer.js.map +1 -1
  264. package/dist/JsonSchema.d.ts +98 -44
  265. package/dist/JsonSchema.d.ts.map +1 -1
  266. package/dist/JsonSchema.js +319 -241
  267. package/dist/JsonSchema.js.map +1 -1
  268. package/dist/Latch.d.ts +23 -35
  269. package/dist/Latch.d.ts.map +1 -1
  270. package/dist/Latch.js +16 -28
  271. package/dist/Latch.js.map +1 -1
  272. package/dist/Layer.d.ts +362 -263
  273. package/dist/Layer.d.ts.map +1 -1
  274. package/dist/Layer.js +203 -181
  275. package/dist/Layer.js.map +1 -1
  276. package/dist/LayerMap.d.ts +42 -29
  277. package/dist/LayerMap.d.ts.map +1 -1
  278. package/dist/LayerMap.js +31 -21
  279. package/dist/LayerMap.js.map +1 -1
  280. package/dist/LayerRef.d.ts +6 -2
  281. package/dist/LayerRef.d.ts.map +1 -1
  282. package/dist/LayerRef.js +6 -2
  283. package/dist/LayerRef.js.map +1 -1
  284. package/dist/LogLevel.d.ts +114 -214
  285. package/dist/LogLevel.d.ts.map +1 -1
  286. package/dist/LogLevel.js +41 -76
  287. package/dist/LogLevel.js.map +1 -1
  288. package/dist/Logger.d.ts +219 -468
  289. package/dist/Logger.d.ts.map +1 -1
  290. package/dist/Logger.js +209 -454
  291. package/dist/Logger.js.map +1 -1
  292. package/dist/ManagedRuntime.d.ts +16 -5
  293. package/dist/ManagedRuntime.d.ts.map +1 -1
  294. package/dist/ManagedRuntime.js +10 -5
  295. package/dist/ManagedRuntime.js.map +1 -1
  296. package/dist/Match.d.ts +217 -252
  297. package/dist/Match.d.ts.map +1 -1
  298. package/dist/Match.js +150 -183
  299. package/dist/Match.js.map +1 -1
  300. package/dist/Metric.d.ts +442 -993
  301. package/dist/Metric.d.ts.map +1 -1
  302. package/dist/Metric.js +202 -645
  303. package/dist/Metric.js.map +1 -1
  304. package/dist/MutableHashMap.d.ts +144 -173
  305. package/dist/MutableHashMap.d.ts.map +1 -1
  306. package/dist/MutableHashMap.js +68 -79
  307. package/dist/MutableHashMap.js.map +1 -1
  308. package/dist/MutableHashSet.d.ts +84 -89
  309. package/dist/MutableHashSet.d.ts.map +1 -1
  310. package/dist/MutableHashSet.js +44 -47
  311. package/dist/MutableHashSet.js.map +1 -1
  312. package/dist/MutableList.d.ts +71 -370
  313. package/dist/MutableList.d.ts.map +1 -1
  314. package/dist/MutableList.js +63 -284
  315. package/dist/MutableList.js.map +1 -1
  316. package/dist/MutableRef.d.ts +420 -243
  317. package/dist/MutableRef.d.ts.map +1 -1
  318. package/dist/MutableRef.js +209 -120
  319. package/dist/MutableRef.js.map +1 -1
  320. package/dist/Newtype.d.ts +21 -14
  321. package/dist/Newtype.d.ts.map +1 -1
  322. package/dist/Newtype.js +15 -13
  323. package/dist/Newtype.js.map +1 -1
  324. package/dist/NonEmptyIterable.d.ts +7 -137
  325. package/dist/NonEmptyIterable.d.ts.map +1 -1
  326. package/dist/NonEmptyIterable.js +5 -93
  327. package/dist/NonEmptyIterable.js.map +1 -1
  328. package/dist/Number.d.ts +196 -233
  329. package/dist/Number.d.ts.map +1 -1
  330. package/dist/Number.js +90 -109
  331. package/dist/Number.js.map +1 -1
  332. package/dist/Optic.d.ts +132 -210
  333. package/dist/Optic.d.ts.map +1 -1
  334. package/dist/Optic.js +221 -324
  335. package/dist/Optic.js.map +1 -1
  336. package/dist/Option.d.ts +447 -812
  337. package/dist/Option.d.ts.map +1 -1
  338. package/dist/Option.js +213 -393
  339. package/dist/Option.js.map +1 -1
  340. package/dist/Order.d.ts +109 -109
  341. package/dist/Order.js +91 -91
  342. package/dist/Order.js.map +1 -1
  343. package/dist/Ordering.d.ts +20 -23
  344. package/dist/Ordering.d.ts.map +1 -1
  345. package/dist/Ordering.js +8 -9
  346. package/dist/Ordering.js.map +1 -1
  347. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  348. package/dist/PartitionedSemaphore.js +1 -4
  349. package/dist/PartitionedSemaphore.js.map +1 -1
  350. package/dist/Path.d.ts +38 -41
  351. package/dist/Path.d.ts.map +1 -1
  352. package/dist/Path.js +3 -4
  353. package/dist/Path.js.map +1 -1
  354. package/dist/Pipeable.d.ts +6 -5
  355. package/dist/Pipeable.d.ts.map +1 -1
  356. package/dist/Pipeable.js +2 -2
  357. package/dist/Pipeable.js.map +1 -1
  358. package/dist/PlatformError.d.ts +4 -4
  359. package/dist/PlatformError.js +3 -3
  360. package/dist/PlatformError.js.map +1 -1
  361. package/dist/Pool.d.ts +4 -2
  362. package/dist/Pool.d.ts.map +1 -1
  363. package/dist/Pool.js +4 -2
  364. package/dist/Pool.js.map +1 -1
  365. package/dist/Predicate.d.ts +200 -181
  366. package/dist/Predicate.d.ts.map +1 -1
  367. package/dist/Predicate.js +100 -108
  368. package/dist/Predicate.js.map +1 -1
  369. package/dist/PrimaryKey.d.ts +7 -7
  370. package/dist/PrimaryKey.js +5 -5
  371. package/dist/PrimaryKey.js.map +1 -1
  372. package/dist/PubSub.d.ts +425 -494
  373. package/dist/PubSub.d.ts.map +1 -1
  374. package/dist/PubSub.js +373 -362
  375. package/dist/PubSub.js.map +1 -1
  376. package/dist/Pull.d.ts +24 -18
  377. package/dist/Pull.d.ts.map +1 -1
  378. package/dist/Pull.js +11 -9
  379. package/dist/Pull.js.map +1 -1
  380. package/dist/Queue.d.ts +200 -159
  381. package/dist/Queue.d.ts.map +1 -1
  382. package/dist/Queue.js +166 -138
  383. package/dist/Queue.js.map +1 -1
  384. package/dist/Random.d.ts +49 -74
  385. package/dist/Random.d.ts.map +1 -1
  386. package/dist/Random.js +35 -54
  387. package/dist/Random.js.map +1 -1
  388. package/dist/RcMap.d.ts +121 -63
  389. package/dist/RcMap.d.ts.map +1 -1
  390. package/dist/RcMap.js +42 -21
  391. package/dist/RcMap.js.map +1 -1
  392. package/dist/RcRef.d.ts +24 -13
  393. package/dist/RcRef.d.ts.map +1 -1
  394. package/dist/RcRef.js +15 -9
  395. package/dist/RcRef.js.map +1 -1
  396. package/dist/Record.d.ts +361 -466
  397. package/dist/Record.d.ts.map +1 -1
  398. package/dist/Record.js +163 -216
  399. package/dist/Record.js.map +1 -1
  400. package/dist/Redactable.d.ts +6 -2
  401. package/dist/Redactable.d.ts.map +1 -1
  402. package/dist/Redactable.js +7 -2
  403. package/dist/Redactable.js.map +1 -1
  404. package/dist/Redacted.d.ts +25 -25
  405. package/dist/Redacted.d.ts.map +1 -1
  406. package/dist/Redacted.js +19 -20
  407. package/dist/Redacted.js.map +1 -1
  408. package/dist/Reducer.d.ts +8 -15
  409. package/dist/Reducer.d.ts.map +1 -1
  410. package/dist/Reducer.js +6 -12
  411. package/dist/Reducer.js.map +1 -1
  412. package/dist/Ref.d.ts +95 -165
  413. package/dist/Ref.d.ts.map +1 -1
  414. package/dist/Ref.js +75 -122
  415. package/dist/Ref.js.map +1 -1
  416. package/dist/References.d.ts +102 -213
  417. package/dist/References.d.ts.map +1 -1
  418. package/dist/References.js +102 -213
  419. package/dist/References.js.map +1 -1
  420. package/dist/RegExp.d.ts +10 -14
  421. package/dist/RegExp.d.ts.map +1 -1
  422. package/dist/RegExp.js +10 -14
  423. package/dist/RegExp.js.map +1 -1
  424. package/dist/Request.d.ts +31 -21
  425. package/dist/Request.d.ts.map +1 -1
  426. package/dist/Request.js +25 -19
  427. package/dist/Request.js.map +1 -1
  428. package/dist/RequestResolver.d.ts +201 -90
  429. package/dist/RequestResolver.d.ts.map +1 -1
  430. package/dist/RequestResolver.js +87 -41
  431. package/dist/RequestResolver.js.map +1 -1
  432. package/dist/Resource.js.map +1 -1
  433. package/dist/Result.d.ts +302 -470
  434. package/dist/Result.d.ts.map +1 -1
  435. package/dist/Result.js +135 -218
  436. package/dist/Result.js.map +1 -1
  437. package/dist/Runtime.d.ts +50 -75
  438. package/dist/Runtime.d.ts.map +1 -1
  439. package/dist/Runtime.js +39 -60
  440. package/dist/Runtime.js.map +1 -1
  441. package/dist/Schedule.d.ts +292 -1638
  442. package/dist/Schedule.d.ts.map +1 -1
  443. package/dist/Schedule.js +164 -805
  444. package/dist/Schedule.js.map +1 -1
  445. package/dist/Scheduler.d.ts +5 -5
  446. package/dist/Scheduler.d.ts.map +1 -1
  447. package/dist/Scheduler.js +18 -6
  448. package/dist/Scheduler.js.map +1 -1
  449. package/dist/Schema.d.ts +2056 -1269
  450. package/dist/Schema.d.ts.map +1 -1
  451. package/dist/Schema.js +2868 -1135
  452. package/dist/Schema.js.map +1 -1
  453. package/dist/SchemaAST.d.ts +64 -72
  454. package/dist/SchemaAST.d.ts.map +1 -1
  455. package/dist/SchemaAST.js +698 -468
  456. package/dist/SchemaAST.js.map +1 -1
  457. package/dist/SchemaGetter.d.ts +236 -188
  458. package/dist/SchemaGetter.d.ts.map +1 -1
  459. package/dist/SchemaGetter.js +281 -234
  460. package/dist/SchemaGetter.js.map +1 -1
  461. package/dist/SchemaIssue.d.ts +219 -190
  462. package/dist/SchemaIssue.d.ts.map +1 -1
  463. package/dist/SchemaIssue.js +303 -309
  464. package/dist/SchemaIssue.js.map +1 -1
  465. package/dist/SchemaParser.d.ts +32 -2
  466. package/dist/SchemaParser.d.ts.map +1 -1
  467. package/dist/SchemaParser.js +170 -118
  468. package/dist/SchemaParser.js.map +1 -1
  469. package/dist/SchemaRepresentation.d.ts +433 -1511
  470. package/dist/SchemaRepresentation.d.ts.map +1 -1
  471. package/dist/SchemaRepresentation.js +301 -2854
  472. package/dist/SchemaRepresentation.js.map +1 -1
  473. package/dist/SchemaTransformation.d.ts +117 -77
  474. package/dist/SchemaTransformation.d.ts.map +1 -1
  475. package/dist/SchemaTransformation.js +139 -104
  476. package/dist/SchemaTransformation.js.map +1 -1
  477. package/dist/Scope.d.ts +123 -151
  478. package/dist/Scope.d.ts.map +1 -1
  479. package/dist/Scope.js +72 -92
  480. package/dist/Scope.js.map +1 -1
  481. package/dist/ScopedCache.js +1 -1
  482. package/dist/ScopedCache.js.map +1 -1
  483. package/dist/ScopedRef.d.ts +3 -3
  484. package/dist/ScopedRef.d.ts.map +1 -1
  485. package/dist/ScopedRef.js +2 -2
  486. package/dist/ScopedRef.js.map +1 -1
  487. package/dist/Semaphore.d.ts +101 -13
  488. package/dist/Semaphore.d.ts.map +1 -1
  489. package/dist/Semaphore.js +78 -39
  490. package/dist/Semaphore.js.map +1 -1
  491. package/dist/Sink.d.ts +118 -108
  492. package/dist/Sink.d.ts.map +1 -1
  493. package/dist/Sink.js +107 -100
  494. package/dist/Sink.js.map +1 -1
  495. package/dist/Stdio.d.ts +18 -5
  496. package/dist/Stdio.d.ts.map +1 -1
  497. package/dist/Stdio.js +6 -3
  498. package/dist/Stdio.js.map +1 -1
  499. package/dist/Stream.d.ts +2467 -2962
  500. package/dist/Stream.d.ts.map +1 -1
  501. package/dist/Stream.js +1154 -1413
  502. package/dist/Stream.js.map +1 -1
  503. package/dist/String.d.ts +262 -308
  504. package/dist/String.d.ts.map +1 -1
  505. package/dist/String.js +184 -215
  506. package/dist/String.js.map +1 -1
  507. package/dist/Struct.d.ts +109 -114
  508. package/dist/Struct.d.ts.map +1 -1
  509. package/dist/Struct.js +46 -54
  510. package/dist/Struct.js.map +1 -1
  511. package/dist/SubscriptionRef.d.ts +282 -250
  512. package/dist/SubscriptionRef.d.ts.map +1 -1
  513. package/dist/SubscriptionRef.js +104 -92
  514. package/dist/SubscriptionRef.js.map +1 -1
  515. package/dist/Symbol.d.ts +3 -3
  516. package/dist/Symbol.js +3 -3
  517. package/dist/Symbol.js.map +1 -1
  518. package/dist/SynchronizedRef.js +1 -1
  519. package/dist/SynchronizedRef.js.map +1 -1
  520. package/dist/Take.js.map +1 -1
  521. package/dist/Terminal.d.ts +2 -2
  522. package/dist/Terminal.js +2 -2
  523. package/dist/Terminal.js.map +1 -1
  524. package/dist/Tracer.d.ts +100 -54
  525. package/dist/Tracer.d.ts.map +1 -1
  526. package/dist/Tracer.js +41 -24
  527. package/dist/Tracer.js.map +1 -1
  528. package/dist/Trie.d.ts +287 -679
  529. package/dist/Trie.d.ts.map +1 -1
  530. package/dist/Trie.js +109 -251
  531. package/dist/Trie.js.map +1 -1
  532. package/dist/Tuple.d.ts +98 -131
  533. package/dist/Tuple.d.ts.map +1 -1
  534. package/dist/Tuple.js +42 -57
  535. package/dist/Tuple.js.map +1 -1
  536. package/dist/TxChunk.d.ts +201 -121
  537. package/dist/TxChunk.d.ts.map +1 -1
  538. package/dist/TxChunk.js +85 -56
  539. package/dist/TxChunk.js.map +1 -1
  540. package/dist/TxDeferred.d.ts +62 -46
  541. package/dist/TxDeferred.d.ts.map +1 -1
  542. package/dist/TxDeferred.js +30 -22
  543. package/dist/TxDeferred.js.map +1 -1
  544. package/dist/TxHashMap.d.ts +631 -779
  545. package/dist/TxHashMap.d.ts.map +1 -1
  546. package/dist/TxHashMap.js +268 -330
  547. package/dist/TxHashMap.js.map +1 -1
  548. package/dist/TxHashSet.d.ts +297 -236
  549. package/dist/TxHashSet.d.ts.map +1 -1
  550. package/dist/TxHashSet.js +130 -100
  551. package/dist/TxHashSet.js.map +1 -1
  552. package/dist/TxPriorityQueue.d.ts +126 -95
  553. package/dist/TxPriorityQueue.d.ts.map +1 -1
  554. package/dist/TxPriorityQueue.js +74 -56
  555. package/dist/TxPriorityQueue.js.map +1 -1
  556. package/dist/TxPubSub.d.ts +101 -88
  557. package/dist/TxPubSub.d.ts.map +1 -1
  558. package/dist/TxPubSub.js +87 -66
  559. package/dist/TxPubSub.js.map +1 -1
  560. package/dist/TxQueue.d.ts +200 -180
  561. package/dist/TxQueue.d.ts.map +1 -1
  562. package/dist/TxQueue.js +161 -137
  563. package/dist/TxQueue.js.map +1 -1
  564. package/dist/TxReentrantLock.d.ts +89 -114
  565. package/dist/TxReentrantLock.d.ts.map +1 -1
  566. package/dist/TxReentrantLock.js +75 -53
  567. package/dist/TxReentrantLock.js.map +1 -1
  568. package/dist/TxRef.d.ts +51 -32
  569. package/dist/TxRef.d.ts.map +1 -1
  570. package/dist/TxRef.js +23 -15
  571. package/dist/TxRef.js.map +1 -1
  572. package/dist/TxSemaphore.d.ts +129 -95
  573. package/dist/TxSemaphore.d.ts.map +1 -1
  574. package/dist/TxSemaphore.js +85 -70
  575. package/dist/TxSemaphore.js.map +1 -1
  576. package/dist/TxSubscriptionRef.d.ts +97 -70
  577. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  578. package/dist/TxSubscriptionRef.js +44 -34
  579. package/dist/TxSubscriptionRef.js.map +1 -1
  580. package/dist/Types.d.ts +127 -70
  581. package/dist/Types.d.ts.map +1 -1
  582. package/dist/UndefinedOr.js.map +1 -1
  583. package/dist/Unify.d.ts +45 -65
  584. package/dist/Unify.d.ts.map +1 -1
  585. package/dist/Unify.js +6 -9
  586. package/dist/Unify.js.map +1 -1
  587. package/dist/Utils.d.ts +23 -16
  588. package/dist/Utils.d.ts.map +1 -1
  589. package/dist/Utils.js +3 -7
  590. package/dist/Utils.js.map +1 -1
  591. package/dist/index.d.ts +0 -8
  592. package/dist/index.d.ts.map +1 -1
  593. package/dist/index.js +0 -8
  594. package/dist/index.js.map +1 -1
  595. package/dist/internal/array.js.map +1 -1
  596. package/dist/internal/core.js +4 -3
  597. package/dist/internal/core.js.map +1 -1
  598. package/dist/internal/dateTime.js +5 -1
  599. package/dist/internal/dateTime.js.map +1 -1
  600. package/dist/internal/doNotation.js.map +1 -1
  601. package/dist/internal/effect.js +254 -114
  602. package/dist/internal/effect.js.map +1 -1
  603. package/dist/internal/equal.js.map +1 -1
  604. package/dist/internal/errors.js.map +1 -1
  605. package/dist/internal/executionPlan.js +52 -3
  606. package/dist/internal/executionPlan.js.map +1 -1
  607. package/dist/internal/hashMap.js +12 -8
  608. package/dist/internal/hashMap.js.map +1 -1
  609. package/dist/internal/hashSet.js.map +1 -1
  610. package/dist/internal/layer.js.map +1 -1
  611. package/dist/internal/matcher.js +2 -2
  612. package/dist/internal/matcher.js.map +1 -1
  613. package/dist/internal/metric.js.map +1 -1
  614. package/dist/internal/option.js.map +1 -1
  615. package/dist/internal/persistence.d.ts +2 -0
  616. package/dist/internal/persistence.d.ts.map +1 -0
  617. package/dist/internal/persistence.js +3 -0
  618. package/dist/internal/persistence.js.map +1 -0
  619. package/dist/internal/random.js.map +1 -1
  620. package/dist/internal/rcRef.js +18 -13
  621. package/dist/internal/rcRef.js.map +1 -1
  622. package/dist/internal/record.d.ts +0 -3
  623. package/dist/internal/record.d.ts.map +1 -1
  624. package/dist/internal/record.js +10 -5
  625. package/dist/internal/record.js.map +1 -1
  626. package/dist/internal/redacted.js.map +1 -1
  627. package/dist/internal/references.js +3 -4
  628. package/dist/internal/references.js.map +1 -1
  629. package/dist/internal/request.js.map +1 -1
  630. package/dist/internal/result.js.map +1 -1
  631. package/dist/internal/schedule.js.map +1 -1
  632. package/dist/internal/schema/annotations.js +15 -1
  633. package/dist/internal/schema/annotations.js.map +1 -1
  634. package/dist/internal/schema/cause.js.map +1 -1
  635. package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
  636. package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
  637. package/dist/internal/schema/fromJsonSchemaDocument.js +761 -0
  638. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
  639. package/dist/internal/schema/fromRepresentation.d.ts +2 -0
  640. package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
  641. package/dist/internal/schema/fromRepresentation.js +245 -0
  642. package/dist/internal/schema/fromRepresentation.js.map +1 -0
  643. package/dist/internal/schema/parser.d.ts +14 -0
  644. package/dist/internal/schema/parser.d.ts.map +1 -0
  645. package/dist/internal/schema/parser.js +13 -0
  646. package/dist/internal/schema/parser.js.map +1 -0
  647. package/dist/internal/schema/schema.js +29 -49
  648. package/dist/internal/schema/schema.js.map +1 -1
  649. package/dist/internal/schema/toArbitrary.d.ts +2 -0
  650. package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
  651. package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -83
  652. package/dist/internal/schema/toArbitrary.js.map +1 -0
  653. package/dist/internal/schema/toCodeDocument.d.ts +2 -0
  654. package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
  655. package/dist/internal/schema/toCodeDocument.js +438 -0
  656. package/dist/internal/schema/toCodeDocument.js.map +1 -0
  657. package/dist/internal/schema/toEquivalence.d.ts +2 -0
  658. package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
  659. package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
  660. package/dist/internal/schema/toEquivalence.js.map +1 -0
  661. package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
  662. package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
  663. package/dist/internal/schema/toJsonSchemaDocument.js +522 -0
  664. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
  665. package/dist/internal/schema/toRepresentation.d.ts +2 -0
  666. package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
  667. package/dist/internal/schema/toRepresentation.js +351 -0
  668. package/dist/internal/schema/toRepresentation.js.map +1 -0
  669. package/dist/internal/stackTraceLimit.js +3 -6
  670. package/dist/internal/stackTraceLimit.js.map +1 -1
  671. package/dist/internal/stream.js.map +1 -1
  672. package/dist/internal/tracer.js.map +1 -1
  673. package/dist/internal/trie.js +24 -10
  674. package/dist/internal/trie.js.map +1 -1
  675. package/dist/internal/uuid.d.ts +3 -0
  676. package/dist/internal/uuid.d.ts.map +1 -0
  677. package/dist/internal/uuid.js +30 -0
  678. package/dist/internal/uuid.js.map +1 -0
  679. package/dist/testing/FastCheck.d.ts +8 -7
  680. package/dist/testing/FastCheck.d.ts.map +1 -1
  681. package/dist/testing/FastCheck.js +8 -7
  682. package/dist/testing/FastCheck.js.map +1 -1
  683. package/dist/testing/TestClock.d.ts +58 -29
  684. package/dist/testing/TestClock.d.ts.map +1 -1
  685. package/dist/testing/TestClock.js +79 -24
  686. package/dist/testing/TestClock.js.map +1 -1
  687. package/dist/testing/TestConsole.d.ts +32 -31
  688. package/dist/testing/TestConsole.d.ts.map +1 -1
  689. package/dist/testing/TestConsole.js +24 -22
  690. package/dist/testing/TestConsole.js.map +1 -1
  691. package/dist/testing/TestSchema.d.ts +31 -31
  692. package/dist/testing/TestSchema.d.ts.map +1 -1
  693. package/dist/testing/TestSchema.js +35 -34
  694. package/dist/testing/TestSchema.js.map +1 -1
  695. package/dist/testing/index.js.map +1 -1
  696. package/dist/unstable/ai/AiError.d.ts +121 -144
  697. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  698. package/dist/unstable/ai/AiError.js +118 -140
  699. package/dist/unstable/ai/AiError.js.map +1 -1
  700. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +22 -7
  701. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  702. package/dist/unstable/ai/AnthropicStructuredOutput.js +87 -317
  703. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  704. package/dist/unstable/ai/Chat.d.ts +132 -97
  705. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  706. package/dist/unstable/ai/Chat.js +56 -52
  707. package/dist/unstable/ai/Chat.js.map +1 -1
  708. package/dist/unstable/ai/EmbeddingModel.d.ts +1 -1
  709. package/dist/unstable/ai/EmbeddingModel.js +1 -1
  710. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  711. package/dist/unstable/ai/IdGenerator.d.ts +32 -28
  712. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  713. package/dist/unstable/ai/IdGenerator.js +26 -21
  714. package/dist/unstable/ai/IdGenerator.js.map +1 -1
  715. package/dist/unstable/ai/LanguageModel.d.ts +111 -68
  716. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  717. package/dist/unstable/ai/LanguageModel.js +127 -83
  718. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  719. package/dist/unstable/ai/McpProtocol.d.ts +116 -0
  720. package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
  721. package/dist/unstable/ai/McpProtocol.js +32 -0
  722. package/dist/unstable/ai/McpProtocol.js.map +1 -0
  723. package/dist/unstable/ai/McpSchema.d.ts +378 -223
  724. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  725. package/dist/unstable/ai/McpSchema.js +135 -87
  726. package/dist/unstable/ai/McpSchema.js.map +1 -1
  727. package/dist/unstable/ai/McpServer.d.ts +89 -100
  728. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  729. package/dist/unstable/ai/McpServer.js +1037 -361
  730. package/dist/unstable/ai/McpServer.js.map +1 -1
  731. package/dist/unstable/ai/Model.d.ts +8 -19
  732. package/dist/unstable/ai/Model.d.ts.map +1 -1
  733. package/dist/unstable/ai/Model.js +9 -20
  734. package/dist/unstable/ai/Model.js.map +1 -1
  735. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +33 -11
  736. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  737. package/dist/unstable/ai/OpenAiStructuredOutput.js +194 -378
  738. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  739. package/dist/unstable/ai/Prompt.d.ts +131 -44
  740. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  741. package/dist/unstable/ai/Prompt.js +100 -36
  742. package/dist/unstable/ai/Prompt.js.map +1 -1
  743. package/dist/unstable/ai/Response.d.ts +47 -33
  744. package/dist/unstable/ai/Response.d.ts.map +1 -1
  745. package/dist/unstable/ai/Response.js +23 -18
  746. package/dist/unstable/ai/Response.js.map +1 -1
  747. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
  748. package/dist/unstable/ai/Telemetry.d.ts +46 -13
  749. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  750. package/dist/unstable/ai/Telemetry.js +18 -7
  751. package/dist/unstable/ai/Telemetry.js.map +1 -1
  752. package/dist/unstable/ai/Tokenizer.d.ts +14 -3
  753. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  754. package/dist/unstable/ai/Tokenizer.js +10 -2
  755. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  756. package/dist/unstable/ai/Tool.d.ts +63 -44
  757. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  758. package/dist/unstable/ai/Tool.js +59 -42
  759. package/dist/unstable/ai/Tool.js.map +1 -1
  760. package/dist/unstable/ai/Toolkit.d.ts +35 -9
  761. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  762. package/dist/unstable/ai/Toolkit.js +32 -14
  763. package/dist/unstable/ai/Toolkit.js.map +1 -1
  764. package/dist/unstable/ai/index.d.ts +4 -0
  765. package/dist/unstable/ai/index.d.ts.map +1 -1
  766. package/dist/unstable/ai/index.js +4 -0
  767. package/dist/unstable/ai/index.js.map +1 -1
  768. package/dist/unstable/ai/internal/codec-transformer.js +15 -12
  769. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  770. package/dist/unstable/ai/internal/mcpCore.d.ts +7 -0
  771. package/dist/unstable/ai/internal/mcpCore.d.ts.map +1 -0
  772. package/dist/unstable/ai/internal/mcpCore.js +152 -0
  773. package/dist/unstable/ai/internal/mcpCore.js.map +1 -0
  774. package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.d.ts +2 -0
  775. package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.d.ts.map +1 -0
  776. package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.js +259 -0
  777. package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -0
  778. package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.d.ts +2 -0
  779. package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.d.ts.map +1 -0
  780. package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.js +279 -0
  781. package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -0
  782. package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.d.ts +2 -0
  783. package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.d.ts.map +1 -0
  784. package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.js +281 -0
  785. package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -0
  786. package/dist/unstable/ai/internal/mcpProtocol.d.ts +2 -0
  787. package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
  788. package/dist/unstable/ai/internal/mcpProtocol.js +153 -0
  789. package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
  790. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
  791. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
  792. package/dist/unstable/ai/internal/mcpProtocolRegistry.js +47 -0
  793. package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
  794. package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.d.ts +1185 -0
  795. package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.d.ts.map +1 -0
  796. package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.js +404 -0
  797. package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.js.map +1 -0
  798. package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.d.ts +825 -0
  799. package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.d.ts.map +1 -0
  800. package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.js +138 -0
  801. package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.js.map +1 -0
  802. package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.d.ts +1462 -0
  803. package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.d.ts.map +1 -0
  804. package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.js +309 -0
  805. package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.js.map +1 -0
  806. package/dist/unstable/ai/internal/structured-output.d.ts +2 -0
  807. package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
  808. package/dist/unstable/ai/internal/structured-output.js +315 -0
  809. package/dist/unstable/ai/internal/structured-output.js.map +1 -0
  810. package/dist/unstable/cli/Argument.d.ts +279 -72
  811. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  812. package/dist/unstable/cli/Argument.js +113 -34
  813. package/dist/unstable/cli/Argument.js.map +1 -1
  814. package/dist/unstable/cli/CliConfig.js.map +1 -1
  815. package/dist/unstable/cli/CliError.d.ts +126 -76
  816. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  817. package/dist/unstable/cli/CliError.js +136 -76
  818. package/dist/unstable/cli/CliError.js.map +1 -1
  819. package/dist/unstable/cli/CliOutput.d.ts +35 -54
  820. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  821. package/dist/unstable/cli/CliOutput.js +26 -42
  822. package/dist/unstable/cli/CliOutput.js.map +1 -1
  823. package/dist/unstable/cli/Command.d.ts +736 -115
  824. package/dist/unstable/cli/Command.d.ts.map +1 -1
  825. package/dist/unstable/cli/Command.js +282 -56
  826. package/dist/unstable/cli/Command.js.map +1 -1
  827. package/dist/unstable/cli/Completions.js.map +1 -1
  828. package/dist/unstable/cli/Flag.d.ts +418 -138
  829. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  830. package/dist/unstable/cli/Flag.js +197 -71
  831. package/dist/unstable/cli/Flag.js.map +1 -1
  832. package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
  833. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  834. package/dist/unstable/cli/HelpDoc.d.ts +12 -4
  835. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  836. package/dist/unstable/cli/Param.d.ts +299 -83
  837. package/dist/unstable/cli/Param.d.ts.map +1 -1
  838. package/dist/unstable/cli/Param.js +146 -60
  839. package/dist/unstable/cli/Param.js.map +1 -1
  840. package/dist/unstable/cli/Primitive.d.ts +370 -149
  841. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  842. package/dist/unstable/cli/Primitive.js +377 -162
  843. package/dist/unstable/cli/Primitive.js.map +1 -1
  844. package/dist/unstable/cli/Prompt.d.ts +23 -14
  845. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  846. package/dist/unstable/cli/Prompt.js +54 -31
  847. package/dist/unstable/cli/Prompt.js.map +1 -1
  848. package/dist/unstable/cli/index.js.map +1 -1
  849. package/dist/unstable/cli/internal/ansi.js +2 -2
  850. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  851. package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
  852. package/dist/unstable/cli/internal/command.d.ts +5 -3
  853. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  854. package/dist/unstable/cli/internal/command.js +21 -13
  855. package/dist/unstable/cli/internal/command.js.map +1 -1
  856. package/dist/unstable/cli/internal/completions/bash.js +69 -9
  857. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  858. package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
  859. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  860. package/dist/unstable/cli/internal/completions/fish.js +5 -5
  861. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  862. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  863. package/dist/unstable/cli/internal/config.d.ts +0 -48
  864. package/dist/unstable/cli/internal/config.d.ts.map +1 -1
  865. package/dist/unstable/cli/internal/config.js +8 -10
  866. package/dist/unstable/cli/internal/config.js.map +1 -1
  867. package/dist/unstable/cli/internal/help.d.ts.map +1 -1
  868. package/dist/unstable/cli/internal/help.js +4 -2
  869. package/dist/unstable/cli/internal/help.js.map +1 -1
  870. package/dist/unstable/cli/internal/lexer.js +17 -7
  871. package/dist/unstable/cli/internal/lexer.js.map +1 -1
  872. package/dist/unstable/cli/internal/parser.js +5 -5
  873. package/dist/unstable/cli/internal/parser.js.map +1 -1
  874. package/dist/unstable/cli/internal/wizard.js +2 -2
  875. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  876. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  877. package/dist/unstable/cluster/ClusterError.d.ts +3 -1
  878. package/dist/unstable/cluster/ClusterError.d.ts.map +1 -1
  879. package/dist/unstable/cluster/ClusterError.js +10 -8
  880. package/dist/unstable/cluster/ClusterError.js.map +1 -1
  881. package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
  882. package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
  883. package/dist/unstable/cluster/ClusterSchema.js +8 -8
  884. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  885. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  886. package/dist/unstable/cluster/ClusterWorkflowEngine.js +43 -21
  887. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  888. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  889. package/dist/unstable/cluster/Entity.d.ts +12 -12
  890. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  891. package/dist/unstable/cluster/Entity.js +9 -9
  892. package/dist/unstable/cluster/Entity.js.map +1 -1
  893. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  894. package/dist/unstable/cluster/EntityId.js.map +1 -1
  895. package/dist/unstable/cluster/EntityProxy.d.ts +7 -5
  896. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  897. package/dist/unstable/cluster/EntityProxy.js +8 -5
  898. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  899. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  900. package/dist/unstable/cluster/EntityResource.d.ts +4 -4
  901. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  902. package/dist/unstable/cluster/EntityResource.js +14 -2
  903. package/dist/unstable/cluster/EntityResource.js.map +1 -1
  904. package/dist/unstable/cluster/EntityType.js.map +1 -1
  905. package/dist/unstable/cluster/Envelope.d.ts +3 -3
  906. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  907. package/dist/unstable/cluster/Envelope.js +5 -4
  908. package/dist/unstable/cluster/Envelope.js.map +1 -1
  909. package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
  910. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  911. package/dist/unstable/cluster/HttpRunner.js +6 -4
  912. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  913. package/dist/unstable/cluster/K8sHttpClient.d.ts +2 -2
  914. package/dist/unstable/cluster/K8sHttpClient.d.ts.map +1 -1
  915. package/dist/unstable/cluster/K8sHttpClient.js +8 -0
  916. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  917. package/dist/unstable/cluster/K8sTypes.d.ts +2327 -0
  918. package/dist/unstable/cluster/K8sTypes.d.ts.map +1 -0
  919. package/dist/unstable/cluster/K8sTypes.js +29 -0
  920. package/dist/unstable/cluster/K8sTypes.js.map +1 -0
  921. package/dist/unstable/cluster/MachineId.js.map +1 -1
  922. package/dist/unstable/cluster/Message.d.ts +9 -9
  923. package/dist/unstable/cluster/Message.js +6 -6
  924. package/dist/unstable/cluster/Message.js.map +1 -1
  925. package/dist/unstable/cluster/MessageStorage.d.ts +66 -22
  926. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  927. package/dist/unstable/cluster/MessageStorage.js +56 -13
  928. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  929. package/dist/unstable/cluster/Reply.d.ts +8 -0
  930. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  931. package/dist/unstable/cluster/Reply.js +17 -5
  932. package/dist/unstable/cluster/Reply.js.map +1 -1
  933. package/dist/unstable/cluster/Runner.d.ts +1 -1
  934. package/dist/unstable/cluster/Runner.js +1 -1
  935. package/dist/unstable/cluster/Runner.js.map +1 -1
  936. package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
  937. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  938. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  939. package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
  940. package/dist/unstable/cluster/RunnerHealth.js +1 -1
  941. package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
  942. package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
  943. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  944. package/dist/unstable/cluster/RunnerServer.js +29 -23
  945. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  946. package/dist/unstable/cluster/RunnerStorage.d.ts +3 -4
  947. package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
  948. package/dist/unstable/cluster/RunnerStorage.js +8 -7
  949. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  950. package/dist/unstable/cluster/Runners.d.ts +11 -15
  951. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  952. package/dist/unstable/cluster/Runners.js +32 -22
  953. package/dist/unstable/cluster/Runners.js.map +1 -1
  954. package/dist/unstable/cluster/ShardId.js +1 -1
  955. package/dist/unstable/cluster/ShardId.js.map +1 -1
  956. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  957. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  958. package/dist/unstable/cluster/Sharding.js +293 -46
  959. package/dist/unstable/cluster/Sharding.js.map +1 -1
  960. package/dist/unstable/cluster/ShardingConfig.d.ts +57 -5
  961. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  962. package/dist/unstable/cluster/ShardingConfig.js +11 -3
  963. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  964. package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
  965. package/dist/unstable/cluster/SingleRunner.d.ts +4 -2
  966. package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
  967. package/dist/unstable/cluster/SingleRunner.js +2 -1
  968. package/dist/unstable/cluster/SingleRunner.js.map +1 -1
  969. package/dist/unstable/cluster/Singleton.js.map +1 -1
  970. package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
  971. package/dist/unstable/cluster/SingletonAddress.js +1 -1
  972. package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
  973. package/dist/unstable/cluster/Snowflake.d.ts +8 -8
  974. package/dist/unstable/cluster/Snowflake.js +8 -8
  975. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  976. package/dist/unstable/cluster/SocketRunner.js.map +1 -1
  977. package/dist/unstable/cluster/SqlMessageStorage.d.ts +21 -9
  978. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  979. package/dist/unstable/cluster/SqlMessageStorage.js +130 -43
  980. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  981. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  982. package/dist/unstable/cluster/SqlRunnerStorage.js +141 -79
  983. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  984. package/dist/unstable/cluster/TestRunner.js.map +1 -1
  985. package/dist/unstable/cluster/index.d.ts +4 -0
  986. package/dist/unstable/cluster/index.d.ts.map +1 -1
  987. package/dist/unstable/cluster/index.js +4 -0
  988. package/dist/unstable/cluster/index.js.map +1 -1
  989. package/dist/unstable/cluster/internal/entityManager.js +33 -13
  990. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  991. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  992. package/dist/unstable/cluster/internal/hash.js.map +1 -1
  993. package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
  994. package/dist/unstable/cluster/internal/resourceMap.js +8 -2
  995. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  996. package/dist/unstable/cluster/internal/resourceRef.js +17 -0
  997. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  998. package/dist/unstable/cluster/internal/shardLock.d.ts +2 -0
  999. package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
  1000. package/dist/unstable/cluster/internal/shardLock.js +4 -0
  1001. package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
  1002. package/dist/unstable/devtools/DevTools.js.map +1 -1
  1003. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  1004. package/dist/unstable/devtools/DevToolsClient.js +7 -2
  1005. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  1006. package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
  1007. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  1008. package/dist/unstable/devtools/DevToolsSchema.js +8 -5
  1009. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  1010. package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
  1011. package/dist/unstable/devtools/index.js.map +1 -1
  1012. package/dist/unstable/encoding/Ini.d.ts +20 -0
  1013. package/dist/unstable/encoding/Ini.d.ts.map +1 -0
  1014. package/dist/unstable/encoding/Ini.js +153 -0
  1015. package/dist/unstable/encoding/Ini.js.map +1 -0
  1016. package/dist/unstable/encoding/Msgpack.d.ts +2 -1
  1017. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  1018. package/dist/unstable/encoding/Msgpack.js +31 -19
  1019. package/dist/unstable/encoding/Msgpack.js.map +1 -1
  1020. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  1021. package/dist/unstable/encoding/Ndjson.js +7 -1
  1022. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  1023. package/dist/unstable/encoding/Sse.d.ts +72 -8
  1024. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  1025. package/dist/unstable/encoding/Sse.js +72 -31
  1026. package/dist/unstable/encoding/Sse.js.map +1 -1
  1027. package/dist/unstable/encoding/Toml.d.ts +19 -0
  1028. package/dist/unstable/encoding/Toml.d.ts.map +1 -0
  1029. package/dist/unstable/encoding/Toml.js +434 -0
  1030. package/dist/unstable/encoding/Toml.js.map +1 -0
  1031. package/dist/unstable/encoding/Yaml.d.ts +19 -0
  1032. package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
  1033. package/dist/unstable/encoding/Yaml.js +461 -0
  1034. package/dist/unstable/encoding/Yaml.js.map +1 -0
  1035. package/dist/unstable/encoding/index.d.ts +12 -0
  1036. package/dist/unstable/encoding/index.d.ts.map +1 -1
  1037. package/dist/unstable/encoding/index.js +12 -0
  1038. package/dist/unstable/encoding/index.js.map +1 -1
  1039. package/dist/unstable/eventlog/Event.d.ts +20 -20
  1040. package/dist/unstable/eventlog/Event.js.map +1 -1
  1041. package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
  1042. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  1043. package/dist/unstable/eventlog/EventJournal.d.ts +30 -17
  1044. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  1045. package/dist/unstable/eventlog/EventJournal.js +30 -35
  1046. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  1047. package/dist/unstable/eventlog/EventLog.d.ts +3 -3
  1048. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  1049. package/dist/unstable/eventlog/EventLog.js +18 -14
  1050. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  1051. package/dist/unstable/eventlog/EventLogEncryption.d.ts +8 -7
  1052. package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
  1053. package/dist/unstable/eventlog/EventLogEncryption.js +16 -14
  1054. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  1055. package/dist/unstable/eventlog/EventLogMessage.d.ts +31 -31
  1056. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  1057. package/dist/unstable/eventlog/EventLogMessage.js +12 -8
  1058. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  1059. package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
  1060. package/dist/unstable/eventlog/EventLogRemote.js +5 -5
  1061. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  1062. package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
  1063. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  1064. package/dist/unstable/eventlog/EventLogServer.js +45 -21
  1065. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  1066. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
  1067. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  1068. package/dist/unstable/eventlog/EventLogServerEncrypted.js +17 -8
  1069. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
  1070. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
  1071. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  1072. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +15 -7
  1073. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  1074. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
  1075. package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
  1076. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
  1077. package/dist/unstable/eventlog/SqlEventJournal.d.ts +10 -0
  1078. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
  1079. package/dist/unstable/eventlog/SqlEventJournal.js +4 -7
  1080. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  1081. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
  1082. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  1083. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
  1084. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  1085. package/dist/unstable/eventlog/index.js.map +1 -1
  1086. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  1087. package/dist/unstable/http/Cookies.d.ts +2 -2
  1088. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  1089. package/dist/unstable/http/Cookies.js +54 -40
  1090. package/dist/unstable/http/Cookies.js.map +1 -1
  1091. package/dist/unstable/http/Etag.d.ts +1 -1
  1092. package/dist/unstable/http/Etag.js +1 -1
  1093. package/dist/unstable/http/Etag.js.map +1 -1
  1094. package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
  1095. package/dist/unstable/http/FetchHttpClient.js +1 -1
  1096. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  1097. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts +11 -0
  1098. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
  1099. package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
  1100. package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
  1101. package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
  1102. package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
  1103. package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
  1104. package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
  1105. package/dist/unstable/http/FindMyWay.d.ts +33 -8
  1106. package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
  1107. package/dist/unstable/http/FindMyWay.js +4 -7
  1108. package/dist/unstable/http/FindMyWay.js.map +1 -1
  1109. package/dist/unstable/http/Headers.d.ts +2 -2
  1110. package/dist/unstable/http/Headers.js +10 -10
  1111. package/dist/unstable/http/Headers.js.map +1 -1
  1112. package/dist/unstable/http/HttpBody.d.ts +5 -3
  1113. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  1114. package/dist/unstable/http/HttpBody.js +11 -5
  1115. package/dist/unstable/http/HttpBody.js.map +1 -1
  1116. package/dist/unstable/http/HttpClient.d.ts +110 -47
  1117. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  1118. package/dist/unstable/http/HttpClient.js +79 -36
  1119. package/dist/unstable/http/HttpClient.js.map +1 -1
  1120. package/dist/unstable/http/HttpClientError.js +1 -1
  1121. package/dist/unstable/http/HttpClientError.js.map +1 -1
  1122. package/dist/unstable/http/HttpClientRequest.d.ts +44 -0
  1123. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  1124. package/dist/unstable/http/HttpClientRequest.js +16 -12
  1125. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  1126. package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
  1127. package/dist/unstable/http/HttpClientResponse.js +3 -18
  1128. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  1129. package/dist/unstable/http/HttpEffect.d.ts +7 -9
  1130. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  1131. package/dist/unstable/http/HttpEffect.js +14 -15
  1132. package/dist/unstable/http/HttpEffect.js.map +1 -1
  1133. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  1134. package/dist/unstable/http/HttpMethod.d.ts +6 -9
  1135. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  1136. package/dist/unstable/http/HttpMethod.js +6 -9
  1137. package/dist/unstable/http/HttpMethod.js.map +1 -1
  1138. package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
  1139. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  1140. package/dist/unstable/http/HttpMiddleware.js +164 -39
  1141. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  1142. package/dist/unstable/http/HttpPlatform.d.ts +76 -0
  1143. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  1144. package/dist/unstable/http/HttpPlatform.js +53 -3
  1145. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  1146. package/dist/unstable/http/HttpRouter.d.ts +91 -92
  1147. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  1148. package/dist/unstable/http/HttpRouter.js +79 -80
  1149. package/dist/unstable/http/HttpRouter.js.map +1 -1
  1150. package/dist/unstable/http/HttpServer.d.ts +13 -13
  1151. package/dist/unstable/http/HttpServer.js +6 -6
  1152. package/dist/unstable/http/HttpServer.js.map +1 -1
  1153. package/dist/unstable/http/HttpServerError.d.ts +2 -2
  1154. package/dist/unstable/http/HttpServerError.js +2 -2
  1155. package/dist/unstable/http/HttpServerError.js.map +1 -1
  1156. package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
  1157. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  1158. package/dist/unstable/http/HttpServerRequest.js +23 -15
  1159. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  1160. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  1161. package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
  1162. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  1163. package/dist/unstable/http/HttpServerResponse.js +17 -5
  1164. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  1165. package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
  1166. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  1167. package/dist/unstable/http/HttpStaticServer.js +35 -7
  1168. package/dist/unstable/http/HttpStaticServer.js.map +1 -1
  1169. package/dist/unstable/http/HttpStatus.d.ts +99 -0
  1170. package/dist/unstable/http/HttpStatus.d.ts.map +1 -0
  1171. package/dist/unstable/http/HttpStatus.js +91 -0
  1172. package/dist/unstable/http/HttpStatus.js.map +1 -0
  1173. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  1174. package/dist/unstable/http/Multipart.d.ts +28 -9
  1175. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  1176. package/dist/unstable/http/Multipart.js +65 -35
  1177. package/dist/unstable/http/Multipart.js.map +1 -1
  1178. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
  1179. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
  1180. package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
  1181. package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
  1182. package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
  1183. package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
  1184. package/dist/unstable/http/MultipartParser/Search.js +14 -0
  1185. package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
  1186. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
  1187. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
  1188. package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
  1189. package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
  1190. package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
  1191. package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
  1192. package/dist/unstable/http/MultipartParser/internal/headers.js +208 -0
  1193. package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
  1194. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
  1195. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
  1196. package/dist/unstable/http/MultipartParser/internal/multipart.js +241 -0
  1197. package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
  1198. package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
  1199. package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
  1200. package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
  1201. package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
  1202. package/dist/unstable/http/MultipartParser.d.ts +98 -0
  1203. package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
  1204. package/dist/unstable/http/MultipartParser.js +23 -0
  1205. package/dist/unstable/http/MultipartParser.js.map +1 -0
  1206. package/dist/unstable/http/Template.d.ts.map +1 -1
  1207. package/dist/unstable/http/Template.js +3 -3
  1208. package/dist/unstable/http/Template.js.map +1 -1
  1209. package/dist/unstable/http/Url.d.ts +33 -63
  1210. package/dist/unstable/http/Url.d.ts.map +1 -1
  1211. package/dist/unstable/http/Url.js +14 -28
  1212. package/dist/unstable/http/Url.js.map +1 -1
  1213. package/dist/unstable/http/UrlParams.d.ts +10 -18
  1214. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  1215. package/dist/unstable/http/UrlParams.js +26 -31
  1216. package/dist/unstable/http/UrlParams.js.map +1 -1
  1217. package/dist/unstable/http/index.d.ts +5 -1
  1218. package/dist/unstable/http/index.d.ts.map +1 -1
  1219. package/dist/unstable/http/index.js +5 -1
  1220. package/dist/unstable/http/index.js.map +1 -1
  1221. package/dist/unstable/http/internal/compression.d.ts +2 -0
  1222. package/dist/unstable/http/internal/compression.d.ts.map +1 -0
  1223. package/dist/unstable/http/internal/compression.js +155 -0
  1224. package/dist/unstable/http/internal/compression.js.map +1 -0
  1225. package/dist/unstable/http/internal/httpBody.d.ts +2 -0
  1226. package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
  1227. package/dist/unstable/http/internal/httpBody.js +10 -0
  1228. package/dist/unstable/http/internal/httpBody.js.map +1 -0
  1229. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
  1230. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  1231. package/dist/unstable/httpapi/HttpApi.js +9 -9
  1232. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  1233. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
  1234. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  1235. package/dist/unstable/httpapi/HttpApiBuilder.js +82 -30
  1236. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  1237. package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
  1238. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  1239. package/dist/unstable/httpapi/HttpApiClient.js +89 -51
  1240. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  1241. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +48 -46
  1242. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  1243. package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
  1244. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  1245. package/dist/unstable/httpapi/HttpApiError.d.ts +18 -18
  1246. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  1247. package/dist/unstable/httpapi/HttpApiError.js +30 -30
  1248. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  1249. package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
  1250. package/dist/unstable/httpapi/HttpApiGroup.js +2 -2
  1251. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  1252. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
  1253. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  1254. package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
  1255. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  1256. package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
  1257. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  1258. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  1259. package/dist/unstable/httpapi/HttpApiSchema.d.ts +227 -71
  1260. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  1261. package/dist/unstable/httpapi/HttpApiSchema.js +176 -69
  1262. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  1263. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  1264. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  1265. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  1266. package/dist/unstable/httpapi/OpenApi.d.ts +21 -13
  1267. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  1268. package/dist/unstable/httpapi/OpenApi.js +110 -57
  1269. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  1270. package/dist/unstable/httpapi/index.js.map +1 -1
  1271. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  1272. package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
  1273. package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
  1274. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
  1275. package/dist/unstable/observability/Otlp.js.map +1 -1
  1276. package/dist/unstable/observability/OtlpExporter.d.ts +71 -2
  1277. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  1278. package/dist/unstable/observability/OtlpExporter.js +86 -7
  1279. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  1280. package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
  1281. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  1282. package/dist/unstable/observability/OtlpLogger.js +4 -4
  1283. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  1284. package/dist/unstable/observability/OtlpMetrics.d.ts +11 -4
  1285. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  1286. package/dist/unstable/observability/OtlpMetrics.js +31 -15
  1287. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  1288. package/dist/unstable/observability/OtlpResource.d.ts +16 -7
  1289. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  1290. package/dist/unstable/observability/OtlpResource.js +21 -12
  1291. package/dist/unstable/observability/OtlpResource.js.map +1 -1
  1292. package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
  1293. package/dist/unstable/observability/OtlpTracer.d.ts +4 -3
  1294. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  1295. package/dist/unstable/observability/OtlpTracer.js +3 -3
  1296. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  1297. package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
  1298. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  1299. package/dist/unstable/observability/PrometheusMetrics.js +10 -3
  1300. package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
  1301. package/dist/unstable/observability/index.js.map +1 -1
  1302. package/dist/unstable/observability/internal/otlpEnv.js +1 -1
  1303. package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
  1304. package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
  1305. package/dist/unstable/observability/internal/protobuf.js +3 -0
  1306. package/dist/unstable/observability/internal/protobuf.js.map +1 -1
  1307. package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
  1308. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  1309. package/dist/unstable/persistence/KeyValueStore.js +22 -13
  1310. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  1311. package/dist/unstable/persistence/Persistable.d.ts +8 -8
  1312. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  1313. package/dist/unstable/persistence/Persistable.js +2 -1
  1314. package/dist/unstable/persistence/Persistable.js.map +1 -1
  1315. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  1316. package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
  1317. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  1318. package/dist/unstable/persistence/PersistedQueue.js +97 -86
  1319. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  1320. package/dist/unstable/persistence/Persistence.d.ts +3 -3
  1321. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  1322. package/dist/unstable/persistence/Persistence.js +108 -22
  1323. package/dist/unstable/persistence/Persistence.js.map +1 -1
  1324. package/dist/unstable/persistence/RateLimiter.d.ts +47 -26
  1325. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  1326. package/dist/unstable/persistence/RateLimiter.js +31 -47
  1327. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  1328. package/dist/unstable/persistence/Redis.d.ts +2 -2
  1329. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  1330. package/dist/unstable/persistence/Redis.js +4 -4
  1331. package/dist/unstable/persistence/Redis.js.map +1 -1
  1332. package/dist/unstable/persistence/index.js.map +1 -1
  1333. package/dist/unstable/process/ChildProcess.d.ts +72 -21
  1334. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  1335. package/dist/unstable/process/ChildProcess.js +14 -5
  1336. package/dist/unstable/process/ChildProcess.js.map +1 -1
  1337. package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
  1338. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  1339. package/dist/unstable/process/ChildProcessSpawner.js +4 -2
  1340. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  1341. package/dist/unstable/process/index.js.map +1 -1
  1342. package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
  1343. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  1344. package/dist/unstable/reactivity/AsyncResult.js +14 -13
  1345. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  1346. package/dist/unstable/reactivity/Atom.d.ts +131 -30
  1347. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  1348. package/dist/unstable/reactivity/Atom.js +55 -43
  1349. package/dist/unstable/reactivity/Atom.js.map +1 -1
  1350. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  1351. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  1352. package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
  1353. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  1354. package/dist/unstable/reactivity/AtomRef.js.map +1 -1
  1355. package/dist/unstable/reactivity/AtomRegistry.js +25 -4
  1356. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  1357. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  1358. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  1359. package/dist/unstable/reactivity/AtomRpc.js +4 -1
  1360. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  1361. package/dist/unstable/reactivity/Hydration.d.ts +1 -1
  1362. package/dist/unstable/reactivity/Hydration.js +1 -1
  1363. package/dist/unstable/reactivity/Hydration.js.map +1 -1
  1364. package/dist/unstable/reactivity/Reactivity.js +1 -1
  1365. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  1366. package/dist/unstable/reactivity/index.js.map +1 -1
  1367. package/dist/unstable/rpc/Rpc.d.ts +35 -33
  1368. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  1369. package/dist/unstable/rpc/Rpc.js +4 -2
  1370. package/dist/unstable/rpc/Rpc.js.map +1 -1
  1371. package/dist/unstable/rpc/RpcClient.d.ts +26 -12
  1372. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  1373. package/dist/unstable/rpc/RpcClient.js +41 -23
  1374. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  1375. package/dist/unstable/rpc/RpcClientError.js +2 -2
  1376. package/dist/unstable/rpc/RpcClientError.js.map +1 -1
  1377. package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
  1378. package/dist/unstable/rpc/RpcGroup.js +2 -2
  1379. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  1380. package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
  1381. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  1382. package/dist/unstable/rpc/RpcMessage.js +6 -6
  1383. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  1384. package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
  1385. package/dist/unstable/rpc/RpcMiddleware.js +1 -1
  1386. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  1387. package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
  1388. package/dist/unstable/rpc/RpcSchema.js +3 -3
  1389. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  1390. package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
  1391. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  1392. package/dist/unstable/rpc/RpcSerialization.js +178 -97
  1393. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  1394. package/dist/unstable/rpc/RpcServer.d.ts +13 -13
  1395. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  1396. package/dist/unstable/rpc/RpcServer.js +23 -18
  1397. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  1398. package/dist/unstable/rpc/RpcTest.js.map +1 -1
  1399. package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
  1400. package/dist/unstable/rpc/RpcWorker.js +4 -4
  1401. package/dist/unstable/rpc/RpcWorker.js.map +1 -1
  1402. package/dist/unstable/rpc/Utils.js.map +1 -1
  1403. package/dist/unstable/rpc/index.js.map +1 -1
  1404. package/dist/unstable/schema/Model.d.ts +66 -51
  1405. package/dist/unstable/schema/Model.d.ts.map +1 -1
  1406. package/dist/unstable/schema/Model.js +39 -52
  1407. package/dist/unstable/schema/Model.js.map +1 -1
  1408. package/dist/unstable/schema/VariantSchema.d.ts +11 -12
  1409. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  1410. package/dist/unstable/schema/VariantSchema.js +28 -17
  1411. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  1412. package/dist/unstable/schema/index.js.map +1 -1
  1413. package/dist/unstable/socket/Socket.d.ts +12 -4
  1414. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  1415. package/dist/unstable/socket/Socket.js +38 -17
  1416. package/dist/unstable/socket/Socket.js.map +1 -1
  1417. package/dist/unstable/socket/SocketServer.js.map +1 -1
  1418. package/dist/unstable/socket/index.js.map +1 -1
  1419. package/dist/unstable/sql/Migrator.d.ts +9 -1
  1420. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  1421. package/dist/unstable/sql/Migrator.js +15 -2
  1422. package/dist/unstable/sql/Migrator.js.map +1 -1
  1423. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  1424. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  1425. package/dist/unstable/sql/SqlClient.js +11 -7
  1426. package/dist/unstable/sql/SqlClient.js.map +1 -1
  1427. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  1428. package/dist/unstable/sql/SqlError.d.ts +2 -2
  1429. package/dist/unstable/sql/SqlError.js +15 -15
  1430. package/dist/unstable/sql/SqlError.js.map +1 -1
  1431. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  1432. package/dist/unstable/sql/SqlModel.js +2 -2
  1433. package/dist/unstable/sql/SqlModel.js.map +1 -1
  1434. package/dist/unstable/sql/SqlResolver.d.ts +5 -5
  1435. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  1436. package/dist/unstable/sql/SqlResolver.js +33 -26
  1437. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  1438. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  1439. package/dist/unstable/sql/SqlStream.js.map +1 -1
  1440. package/dist/unstable/sql/Statement.d.ts +6 -6
  1441. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  1442. package/dist/unstable/sql/Statement.js +30 -27
  1443. package/dist/unstable/sql/Statement.js.map +1 -1
  1444. package/dist/unstable/sql/index.js.map +1 -1
  1445. package/dist/unstable/workers/Transferable.d.ts +1 -1
  1446. package/dist/unstable/workers/Transferable.js +1 -1
  1447. package/dist/unstable/workers/Transferable.js.map +1 -1
  1448. package/dist/unstable/workers/Worker.d.ts +2 -2
  1449. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  1450. package/dist/unstable/workers/Worker.js +13 -14
  1451. package/dist/unstable/workers/Worker.js.map +1 -1
  1452. package/dist/unstable/workers/WorkerError.d.ts +7 -7
  1453. package/dist/unstable/workers/WorkerError.js +11 -11
  1454. package/dist/unstable/workers/WorkerError.js.map +1 -1
  1455. package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
  1456. package/dist/unstable/workers/WorkerRunner.js +1 -1
  1457. package/dist/unstable/workers/WorkerRunner.js.map +1 -1
  1458. package/dist/unstable/workers/index.js.map +1 -1
  1459. package/dist/unstable/workflow/Activity.d.ts +2 -2
  1460. package/dist/unstable/workflow/Activity.js +2 -2
  1461. package/dist/unstable/workflow/Activity.js.map +1 -1
  1462. package/dist/unstable/workflow/DurableClock.d.ts +1 -1
  1463. package/dist/unstable/workflow/DurableClock.js +1 -1
  1464. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  1465. package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
  1466. package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
  1467. package/dist/unstable/workflow/DurableDeferred.js +13 -8
  1468. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  1469. package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
  1470. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  1471. package/dist/unstable/workflow/DurableQueue.js +22 -20
  1472. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  1473. package/dist/unstable/workflow/Workflow.d.ts +21 -21
  1474. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  1475. package/dist/unstable/workflow/Workflow.js +13 -14
  1476. package/dist/unstable/workflow/Workflow.js.map +1 -1
  1477. package/dist/unstable/workflow/WorkflowEngine.d.ts +26 -3
  1478. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  1479. package/dist/unstable/workflow/WorkflowEngine.js +72 -6
  1480. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  1481. package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
  1482. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  1483. package/dist/unstable/workflow/WorkflowProxy.js +4 -2
  1484. package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
  1485. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  1486. package/dist/unstable/workflow/index.js.map +1 -1
  1487. package/dist/unstable/workflow/internal/crypto.js.map +1 -1
  1488. package/package.json +10 -16
  1489. package/src/Array.ts +1068 -1070
  1490. package/src/BigDecimal.ts +433 -756
  1491. package/src/BigInt.ts +213 -269
  1492. package/src/Boolean.ts +146 -188
  1493. package/src/Brand.ts +4 -4
  1494. package/src/Cache.ts +469 -851
  1495. package/src/Cause.ts +167 -277
  1496. package/src/Channel.ts +982 -831
  1497. package/src/ChannelSchema.ts +1 -1
  1498. package/src/Chunk.ts +841 -1181
  1499. package/src/Clock.ts +181 -49
  1500. package/src/Combiner.ts +20 -33
  1501. package/src/Config.ts +642 -335
  1502. package/src/ConfigProvider.ts +267 -135
  1503. package/src/Console.ts +289 -39
  1504. package/src/Context.ts +336 -405
  1505. package/src/Cron.ts +271 -219
  1506. package/src/Crypto.ts +33 -63
  1507. package/src/Data.ts +63 -82
  1508. package/src/DateTime.ts +564 -660
  1509. package/src/Deferred.ts +259 -258
  1510. package/src/Duration.ts +244 -311
  1511. package/src/Effect.ts +3241 -3410
  1512. package/src/Encoding.ts +22 -40
  1513. package/src/Equal.ts +59 -41
  1514. package/src/Equivalence.ts +103 -105
  1515. package/src/ErrorReporter.ts +52 -28
  1516. package/src/ExecutionPlan.ts +91 -56
  1517. package/src/Exit.ts +116 -192
  1518. package/src/Fiber.ts +82 -149
  1519. package/src/FiberHandle.ts +155 -107
  1520. package/src/FiberMap.ts +225 -174
  1521. package/src/FiberSet.ts +125 -83
  1522. package/src/FileSystem.ts +156 -264
  1523. package/src/Filter.ts +61 -33
  1524. package/src/Formatter.ts +69 -76
  1525. package/src/Function.ts +119 -151
  1526. package/src/Graph.ts +416 -770
  1527. package/src/HKT.ts +12 -6
  1528. package/src/Hash.ts +52 -83
  1529. package/src/HashMap.ts +319 -411
  1530. package/src/HashRing.ts +1 -0
  1531. package/src/HashSet.ts +177 -284
  1532. package/src/Inspectable.ts +22 -20
  1533. package/src/Iterable.ts +633 -797
  1534. package/src/JsonPatch.ts +60 -113
  1535. package/src/JsonPointer.ts +8 -8
  1536. package/src/JsonSchema.ts +408 -251
  1537. package/src/Latch.ts +23 -35
  1538. package/src/Layer.ts +369 -268
  1539. package/src/LayerMap.ts +49 -29
  1540. package/src/LayerRef.ts +6 -2
  1541. package/src/LogLevel.ts +114 -214
  1542. package/src/Logger.ts +349 -701
  1543. package/src/ManagedRuntime.ts +20 -5
  1544. package/src/Match.ts +217 -252
  1545. package/src/Metric.ts +520 -1092
  1546. package/src/MutableHashMap.ts +218 -255
  1547. package/src/MutableHashSet.ts +84 -89
  1548. package/src/MutableList.ts +77 -370
  1549. package/src/MutableRef.ts +420 -243
  1550. package/src/Newtype.ts +21 -14
  1551. package/src/NonEmptyIterable.ts +7 -137
  1552. package/src/Number.ts +196 -233
  1553. package/src/Optic.ts +303 -441
  1554. package/src/Option.ts +449 -813
  1555. package/src/Order.ts +109 -109
  1556. package/src/Ordering.ts +20 -23
  1557. package/src/PartitionedSemaphore.ts +1 -4
  1558. package/src/Path.ts +38 -41
  1559. package/src/Pipeable.ts +6 -5
  1560. package/src/PlatformError.ts +4 -4
  1561. package/src/Pool.ts +4 -2
  1562. package/src/Predicate.ts +200 -181
  1563. package/src/PrimaryKey.ts +7 -7
  1564. package/src/PubSub.ts +526 -552
  1565. package/src/Pull.ts +24 -18
  1566. package/src/Queue.ts +204 -165
  1567. package/src/Random.ts +49 -74
  1568. package/src/RcMap.ts +121 -63
  1569. package/src/RcRef.ts +24 -13
  1570. package/src/Record.ts +387 -487
  1571. package/src/Redactable.ts +10 -3
  1572. package/src/Redacted.ts +25 -25
  1573. package/src/Reducer.ts +8 -15
  1574. package/src/Ref.ts +221 -361
  1575. package/src/References.ts +102 -214
  1576. package/src/RegExp.ts +10 -14
  1577. package/src/Request.ts +36 -28
  1578. package/src/RequestResolver.ts +202 -91
  1579. package/src/Result.ts +314 -485
  1580. package/src/Runtime.ts +50 -75
  1581. package/src/Schedule.ts +311 -1737
  1582. package/src/Scheduler.ts +20 -7
  1583. package/src/Schema.ts +3475 -1913
  1584. package/src/SchemaAST.ts +902 -573
  1585. package/src/SchemaGetter.ts +351 -233
  1586. package/src/SchemaIssue.ts +367 -334
  1587. package/src/SchemaParser.ts +254 -148
  1588. package/src/SchemaRepresentation.ts +732 -3414
  1589. package/src/SchemaTransformation.ts +186 -97
  1590. package/src/Scope.ts +123 -151
  1591. package/src/ScopedCache.ts +1 -1
  1592. package/src/ScopedRef.ts +6 -4
  1593. package/src/Semaphore.ts +157 -54
  1594. package/src/Sink.ts +129 -114
  1595. package/src/Stdio.ts +24 -5
  1596. package/src/Stream.ts +2745 -3173
  1597. package/src/String.ts +275 -312
  1598. package/src/Struct.ts +114 -118
  1599. package/src/SubscriptionRef.ts +284 -252
  1600. package/src/Symbol.ts +3 -3
  1601. package/src/SynchronizedRef.ts +1 -1
  1602. package/src/Terminal.ts +3 -3
  1603. package/src/Tracer.ts +102 -55
  1604. package/src/Trie.ts +287 -679
  1605. package/src/Tuple.ts +99 -131
  1606. package/src/TxChunk.ts +201 -121
  1607. package/src/TxDeferred.ts +62 -46
  1608. package/src/TxHashMap.ts +645 -799
  1609. package/src/TxHashSet.ts +443 -356
  1610. package/src/TxPriorityQueue.ts +130 -98
  1611. package/src/TxPubSub.ts +107 -80
  1612. package/src/TxQueue.ts +215 -184
  1613. package/src/TxReentrantLock.ts +136 -101
  1614. package/src/TxRef.ts +51 -32
  1615. package/src/TxSemaphore.ts +129 -95
  1616. package/src/TxSubscriptionRef.ts +97 -70
  1617. package/src/Types.ts +127 -70
  1618. package/src/Unify.ts +45 -65
  1619. package/src/Utils.ts +23 -16
  1620. package/src/index.ts +0 -10
  1621. package/src/internal/core.ts +6 -5
  1622. package/src/internal/dateTime.ts +7 -1
  1623. package/src/internal/effect.ts +319 -149
  1624. package/src/internal/executionPlan.ts +106 -10
  1625. package/src/internal/hashMap.ts +20 -14
  1626. package/src/internal/matcher.ts +3 -3
  1627. package/src/internal/persistence.ts +2 -0
  1628. package/src/internal/rcRef.ts +24 -16
  1629. package/src/internal/record.ts +11 -7
  1630. package/src/internal/references.ts +3 -7
  1631. package/src/internal/schedule.ts +4 -4
  1632. package/src/internal/schema/annotations.ts +48 -1
  1633. package/src/internal/schema/fromJsonSchemaDocument.ts +977 -0
  1634. package/src/internal/schema/fromRepresentation.ts +339 -0
  1635. package/src/internal/schema/parser.ts +22 -0
  1636. package/src/internal/schema/schema.ts +46 -63
  1637. package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +9 -81
  1638. package/src/internal/schema/toCodeDocument.ts +572 -0
  1639. package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
  1640. package/src/internal/schema/toJsonSchemaDocument.ts +549 -0
  1641. package/src/internal/schema/toRepresentation.ts +404 -0
  1642. package/src/internal/stackTraceLimit.ts +3 -7
  1643. package/src/internal/trie.ts +21 -12
  1644. package/src/internal/uuid.ts +51 -0
  1645. package/src/testing/FastCheck.ts +8 -7
  1646. package/src/testing/TestClock.ts +103 -36
  1647. package/src/testing/TestConsole.ts +32 -31
  1648. package/src/testing/TestSchema.ts +40 -40
  1649. package/src/unstable/ai/AiError.ts +119 -141
  1650. package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
  1651. package/src/unstable/ai/Chat.ts +133 -98
  1652. package/src/unstable/ai/EmbeddingModel.ts +1 -1
  1653. package/src/unstable/ai/IdGenerator.ts +32 -28
  1654. package/src/unstable/ai/LanguageModel.ts +141 -97
  1655. package/src/unstable/ai/McpProtocol.ts +137 -0
  1656. package/src/unstable/ai/McpSchema.ts +199 -100
  1657. package/src/unstable/ai/McpServer.ts +1360 -455
  1658. package/src/unstable/ai/Model.ts +9 -20
  1659. package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
  1660. package/src/unstable/ai/Prompt.ts +212 -63
  1661. package/src/unstable/ai/Response.ts +52 -38
  1662. package/src/unstable/ai/Telemetry.ts +46 -13
  1663. package/src/unstable/ai/Tokenizer.ts +14 -3
  1664. package/src/unstable/ai/Tool.ts +81 -48
  1665. package/src/unstable/ai/Toolkit.ts +45 -15
  1666. package/src/unstable/ai/index.ts +5 -0
  1667. package/src/unstable/ai/internal/codec-transformer.ts +13 -7
  1668. package/src/unstable/ai/internal/mcpCore.ts +457 -0
  1669. package/src/unstable/ai/internal/mcpProtocol/v2024_11_05.ts +321 -0
  1670. package/src/unstable/ai/internal/mcpProtocol/v2025_03_26.ts +347 -0
  1671. package/src/unstable/ai/internal/mcpProtocol/v2025_06_18.ts +361 -0
  1672. package/src/unstable/ai/internal/mcpProtocol.ts +336 -0
  1673. package/src/unstable/ai/internal/mcpProtocolRegistry.ts +102 -0
  1674. package/src/unstable/ai/internal/mcpSchema/v2024_11_05.ts +521 -0
  1675. package/src/unstable/ai/internal/mcpSchema/v2025_03_26.ts +204 -0
  1676. package/src/unstable/ai/internal/mcpSchema/v2025_06_18.ts +404 -0
  1677. package/src/unstable/ai/internal/structured-output.ts +453 -0
  1678. package/src/unstable/cli/Argument.ts +279 -72
  1679. package/src/unstable/cli/CliError.ts +159 -91
  1680. package/src/unstable/cli/CliOutput.ts +44 -58
  1681. package/src/unstable/cli/Command.ts +764 -124
  1682. package/src/unstable/cli/Flag.ts +418 -138
  1683. package/src/unstable/cli/GlobalFlag.ts +1 -1
  1684. package/src/unstable/cli/HelpDoc.ts +12 -4
  1685. package/src/unstable/cli/Param.ts +336 -100
  1686. package/src/unstable/cli/Primitive.ts +383 -156
  1687. package/src/unstable/cli/Prompt.ts +64 -34
  1688. package/src/unstable/cli/internal/ansi.ts +2 -2
  1689. package/src/unstable/cli/internal/command.ts +28 -15
  1690. package/src/unstable/cli/internal/completions/bash.ts +59 -9
  1691. package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
  1692. package/src/unstable/cli/internal/completions/fish.ts +5 -7
  1693. package/src/unstable/cli/internal/config.ts +8 -10
  1694. package/src/unstable/cli/internal/help.ts +4 -2
  1695. package/src/unstable/cli/internal/lexer.ts +8 -2
  1696. package/src/unstable/cli/internal/parser.ts +5 -5
  1697. package/src/unstable/cli/internal/wizard.ts +2 -2
  1698. package/src/unstable/cluster/ClusterError.ts +10 -8
  1699. package/src/unstable/cluster/ClusterSchema.ts +8 -8
  1700. package/src/unstable/cluster/ClusterWorkflowEngine.ts +65 -39
  1701. package/src/unstable/cluster/Entity.ts +23 -19
  1702. package/src/unstable/cluster/EntityProxy.ts +16 -7
  1703. package/src/unstable/cluster/EntityResource.ts +5 -5
  1704. package/src/unstable/cluster/Envelope.ts +5 -4
  1705. package/src/unstable/cluster/HttpRunner.ts +6 -4
  1706. package/src/unstable/cluster/K8sHttpClient.ts +2 -2
  1707. package/src/unstable/cluster/K8sTypes.ts +2467 -0
  1708. package/src/unstable/cluster/Message.ts +9 -9
  1709. package/src/unstable/cluster/MessageStorage.ts +106 -33
  1710. package/src/unstable/cluster/Reply.ts +26 -7
  1711. package/src/unstable/cluster/Runner.ts +1 -1
  1712. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  1713. package/src/unstable/cluster/RunnerHealth.ts +1 -1
  1714. package/src/unstable/cluster/RunnerServer.ts +45 -18
  1715. package/src/unstable/cluster/RunnerStorage.ts +11 -9
  1716. package/src/unstable/cluster/Runners.ts +48 -26
  1717. package/src/unstable/cluster/ShardId.ts +1 -1
  1718. package/src/unstable/cluster/Sharding.ts +360 -65
  1719. package/src/unstable/cluster/ShardingConfig.ts +46 -4
  1720. package/src/unstable/cluster/SingleRunner.ts +4 -2
  1721. package/src/unstable/cluster/SingletonAddress.ts +1 -1
  1722. package/src/unstable/cluster/Snowflake.ts +8 -8
  1723. package/src/unstable/cluster/SqlMessageStorage.ts +212 -60
  1724. package/src/unstable/cluster/SqlRunnerStorage.ts +223 -133
  1725. package/src/unstable/cluster/index.ts +5 -0
  1726. package/src/unstable/cluster/internal/entityManager.ts +72 -27
  1727. package/src/unstable/cluster/internal/entityReaper.ts +2 -3
  1728. package/src/unstable/cluster/internal/resourceMap.ts +13 -2
  1729. package/src/unstable/cluster/internal/resourceRef.ts +27 -5
  1730. package/src/unstable/cluster/internal/shardLock.ts +9 -0
  1731. package/src/unstable/devtools/DevToolsClient.ts +3 -2
  1732. package/src/unstable/devtools/DevToolsSchema.ts +10 -5
  1733. package/src/unstable/encoding/Ini.ts +174 -0
  1734. package/src/unstable/encoding/Msgpack.ts +61 -40
  1735. package/src/unstable/encoding/Ndjson.ts +9 -1
  1736. package/src/unstable/encoding/Sse.ts +109 -37
  1737. package/src/unstable/encoding/Toml.ts +504 -0
  1738. package/src/unstable/encoding/Yaml.ts +541 -0
  1739. package/src/unstable/encoding/index.ts +15 -0
  1740. package/src/unstable/eventlog/Event.ts +20 -20
  1741. package/src/unstable/eventlog/EventGroup.ts +4 -4
  1742. package/src/unstable/eventlog/EventJournal.ts +33 -25
  1743. package/src/unstable/eventlog/EventLog.ts +24 -14
  1744. package/src/unstable/eventlog/EventLogEncryption.ts +17 -18
  1745. package/src/unstable/eventlog/EventLogMessage.ts +15 -9
  1746. package/src/unstable/eventlog/EventLogRemote.ts +5 -5
  1747. package/src/unstable/eventlog/EventLogServer.ts +41 -7
  1748. package/src/unstable/eventlog/EventLogServerEncrypted.ts +16 -8
  1749. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +15 -7
  1750. package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
  1751. package/src/unstable/eventlog/SqlEventJournal.ts +9 -7
  1752. package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
  1753. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
  1754. package/src/unstable/http/Cookies.ts +64 -45
  1755. package/src/unstable/http/Etag.ts +1 -1
  1756. package/src/unstable/http/FetchHttpClient.ts +4 -2
  1757. package/src/unstable/http/FindMyWay/internal/queryString.ts +420 -0
  1758. package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
  1759. package/src/unstable/http/FindMyWay.ts +65 -6
  1760. package/src/unstable/http/Headers.ts +10 -10
  1761. package/src/unstable/http/HttpBody.ts +20 -5
  1762. package/src/unstable/http/HttpClient.ts +215 -78
  1763. package/src/unstable/http/HttpClientError.ts +1 -1
  1764. package/src/unstable/http/HttpClientRequest.ts +59 -12
  1765. package/src/unstable/http/HttpClientResponse.ts +5 -21
  1766. package/src/unstable/http/HttpEffect.ts +27 -26
  1767. package/src/unstable/http/HttpMethod.ts +6 -9
  1768. package/src/unstable/http/HttpMiddleware.ts +202 -39
  1769. package/src/unstable/http/HttpPlatform.ts +129 -6
  1770. package/src/unstable/http/HttpRouter.ts +110 -102
  1771. package/src/unstable/http/HttpServer.ts +13 -13
  1772. package/src/unstable/http/HttpServerError.ts +2 -2
  1773. package/src/unstable/http/HttpServerRequest.ts +31 -17
  1774. package/src/unstable/http/HttpServerResponse.ts +38 -6
  1775. package/src/unstable/http/HttpStaticServer.ts +35 -7
  1776. package/src/unstable/http/HttpStatus.ts +100 -0
  1777. package/src/unstable/http/Multipart.ts +67 -36
  1778. package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
  1779. package/src/unstable/http/MultipartParser/Search.ts +17 -0
  1780. package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
  1781. package/src/unstable/http/MultipartParser/internal/headers.ts +244 -0
  1782. package/src/unstable/http/MultipartParser/internal/multipart.ts +279 -0
  1783. package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
  1784. package/src/unstable/http/MultipartParser.ts +115 -0
  1785. package/src/unstable/http/Template.ts +7 -6
  1786. package/src/unstable/http/Url.ts +33 -63
  1787. package/src/unstable/http/UrlParams.ts +27 -32
  1788. package/src/unstable/http/index.ts +6 -1
  1789. package/src/unstable/http/internal/compression.ts +196 -0
  1790. package/src/unstable/http/internal/httpBody.ts +15 -0
  1791. package/src/unstable/httpapi/HttpApi.ts +10 -11
  1792. package/src/unstable/httpapi/HttpApiBuilder.ts +154 -33
  1793. package/src/unstable/httpapi/HttpApiClient.ts +142 -61
  1794. package/src/unstable/httpapi/HttpApiEndpoint.ts +159 -71
  1795. package/src/unstable/httpapi/HttpApiError.ts +46 -52
  1796. package/src/unstable/httpapi/HttpApiGroup.ts +17 -17
  1797. package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
  1798. package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
  1799. package/src/unstable/httpapi/HttpApiSchema.ts +362 -73
  1800. package/src/unstable/httpapi/OpenApi.ts +153 -62
  1801. package/src/unstable/observability/OtlpExporter.ts +130 -12
  1802. package/src/unstable/observability/OtlpLogger.ts +8 -6
  1803. package/src/unstable/observability/OtlpMetrics.ts +42 -21
  1804. package/src/unstable/observability/OtlpResource.ts +26 -17
  1805. package/src/unstable/observability/OtlpTracer.ts +9 -5
  1806. package/src/unstable/observability/PrometheusMetrics.ts +13 -4
  1807. package/src/unstable/observability/internal/otlpEnv.ts +1 -1
  1808. package/src/unstable/observability/internal/protobuf.ts +3 -0
  1809. package/src/unstable/persistence/KeyValueStore.ts +72 -49
  1810. package/src/unstable/persistence/Persistable.ts +11 -10
  1811. package/src/unstable/persistence/PersistedQueue.ts +129 -108
  1812. package/src/unstable/persistence/Persistence.ts +153 -26
  1813. package/src/unstable/persistence/RateLimiter.ts +79 -45
  1814. package/src/unstable/persistence/Redis.ts +5 -5
  1815. package/src/unstable/process/ChildProcess.ts +72 -21
  1816. package/src/unstable/process/ChildProcessSpawner.ts +22 -11
  1817. package/src/unstable/reactivity/AsyncResult.ts +23 -18
  1818. package/src/unstable/reactivity/Atom.ts +170 -56
  1819. package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
  1820. package/src/unstable/reactivity/AtomRegistry.ts +25 -4
  1821. package/src/unstable/reactivity/AtomRpc.ts +5 -4
  1822. package/src/unstable/reactivity/Hydration.ts +1 -1
  1823. package/src/unstable/reactivity/Reactivity.ts +1 -1
  1824. package/src/unstable/rpc/Rpc.ts +35 -33
  1825. package/src/unstable/rpc/RpcClient.ts +66 -30
  1826. package/src/unstable/rpc/RpcClientError.ts +2 -2
  1827. package/src/unstable/rpc/RpcGroup.ts +9 -9
  1828. package/src/unstable/rpc/RpcMessage.ts +31 -30
  1829. package/src/unstable/rpc/RpcMiddleware.ts +10 -10
  1830. package/src/unstable/rpc/RpcSchema.ts +4 -4
  1831. package/src/unstable/rpc/RpcSerialization.ts +168 -69
  1832. package/src/unstable/rpc/RpcServer.ts +28 -22
  1833. package/src/unstable/rpc/RpcWorker.ts +5 -5
  1834. package/src/unstable/schema/Model.ts +60 -58
  1835. package/src/unstable/schema/VariantSchema.ts +51 -43
  1836. package/src/unstable/socket/Socket.ts +42 -19
  1837. package/src/unstable/sql/Migrator.ts +22 -9
  1838. package/src/unstable/sql/SqlClient.ts +71 -60
  1839. package/src/unstable/sql/SqlError.ts +15 -15
  1840. package/src/unstable/sql/SqlModel.ts +2 -2
  1841. package/src/unstable/sql/SqlResolver.ts +44 -33
  1842. package/src/unstable/sql/Statement.ts +44 -37
  1843. package/src/unstable/workers/Transferable.ts +1 -1
  1844. package/src/unstable/workers/Worker.ts +15 -16
  1845. package/src/unstable/workers/WorkerError.ts +12 -12
  1846. package/src/unstable/workers/WorkerRunner.ts +1 -1
  1847. package/src/unstable/workflow/Activity.ts +2 -2
  1848. package/src/unstable/workflow/DurableClock.ts +1 -1
  1849. package/src/unstable/workflow/DurableDeferred.ts +18 -13
  1850. package/src/unstable/workflow/DurableQueue.ts +22 -20
  1851. package/src/unstable/workflow/Workflow.ts +23 -26
  1852. package/src/unstable/workflow/WorkflowEngine.ts +111 -8
  1853. package/src/unstable/workflow/WorkflowProxy.ts +4 -2
  1854. package/dist/SchemaError.d.ts +0 -53
  1855. package/dist/SchemaError.d.ts.map +0 -1
  1856. package/dist/SchemaError.js +0 -61
  1857. package/dist/SchemaError.js.map +0 -1
  1858. package/dist/SchemaUtils.d.ts +0 -28
  1859. package/dist/SchemaUtils.d.ts.map +0 -1
  1860. package/dist/SchemaUtils.js +0 -45
  1861. package/dist/SchemaUtils.js.map +0 -1
  1862. package/dist/internal/schema/arbitrary.d.ts +0 -5
  1863. package/dist/internal/schema/arbitrary.d.ts.map +0 -1
  1864. package/dist/internal/schema/arbitrary.js.map +0 -1
  1865. package/dist/internal/schema/equivalence.d.ts +0 -2
  1866. package/dist/internal/schema/equivalence.d.ts.map +0 -1
  1867. package/dist/internal/schema/equivalence.js.map +0 -1
  1868. package/dist/internal/schema/representation.d.ts +0 -2
  1869. package/dist/internal/schema/representation.d.ts.map +0 -1
  1870. package/dist/internal/schema/representation.js +0 -865
  1871. package/dist/internal/schema/representation.js.map +0 -1
  1872. package/dist/internal/version.d.ts +0 -3
  1873. package/dist/internal/version.d.ts.map +0 -1
  1874. package/dist/internal/version.js +0 -2
  1875. package/dist/internal/version.js.map +0 -1
  1876. package/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
  1877. package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
  1878. package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
  1879. package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
  1880. package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
  1881. package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
  1882. package/dist/unstable/http/Multipasta/Node.js +0 -14
  1883. package/dist/unstable/http/Multipasta/Node.js.map +0 -1
  1884. package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
  1885. package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
  1886. package/dist/unstable/http/Multipasta/Search.js +0 -14
  1887. package/dist/unstable/http/Multipasta/Search.js.map +0 -1
  1888. package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
  1889. package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
  1890. package/dist/unstable/http/Multipasta/Web.js +0 -14
  1891. package/dist/unstable/http/Multipasta/Web.js.map +0 -1
  1892. package/dist/unstable/http/Multipasta.d.ts +0 -15
  1893. package/dist/unstable/http/Multipasta.d.ts.map +0 -1
  1894. package/dist/unstable/http/Multipasta.js +0 -15
  1895. package/dist/unstable/http/Multipasta.js.map +0 -1
  1896. package/src/SchemaError.ts +0 -64
  1897. package/src/SchemaUtils.ts +0 -51
  1898. package/src/internal/schema/representation.ts +0 -795
  1899. package/src/internal/version.ts +0 -2
  1900. package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
  1901. package/src/unstable/http/Multipasta/Node.ts +0 -14
  1902. package/src/unstable/http/Multipasta/Search.ts +0 -14
  1903. package/src/unstable/http/Multipasta/Web.ts +0 -14
  1904. package/src/unstable/http/Multipasta.ts +0 -15
@@ -1,3031 +1,478 @@
1
1
  /**
2
- * Plain data structures for describing schemas in a serializable form. A
3
- * `Representation` is not the original `Schema` object; it is a JSON-friendly
4
- * description of the schema's types, fields, unions, checks, annotations, and
5
- * references.
6
- *
7
- * This module defines the representation node types, document types, and
8
- * codecs used to validate those documents. It can build representation
9
- * documents from schema ASTs, turn representation documents back into schemas,
10
- * convert them to and from JSON Schema documents, and generate TypeScript code
11
- * artifacts for schema definitions.
2
+ * Open, compiler-extensible representation of Effect schemas.
12
3
  *
13
4
  * @since 4.0.0
14
5
  */
15
- import * as Arr from "./Array.js";
16
- import { format, formatPropertyKey } from "./Formatter.js";
17
- import { collectBrands } from "./internal/schema/annotations.js";
18
- import * as InternalRepresentation from "./internal/schema/representation.js";
19
- import { unescapeToken } from "./JsonPointer.js";
20
- import { remainder } from "./Number.js";
6
+ import * as InternalRecord from "./internal/record.js";
7
+ import * as InternalFromJsonSchemaDocument from "./internal/schema/fromJsonSchemaDocument.js";
8
+ import * as InternalFromRepresentation from "./internal/schema/fromRepresentation.js";
9
+ import * as InternalSchema from "./internal/schema/schema.js";
10
+ import * as InternalToCodeDocument from "./internal/schema/toCodeDocument.js";
11
+ import * as InternalToJsonSchemaDocument from "./internal/schema/toJsonSchemaDocument.js";
12
+ import * as InternalToRepresentation from "./internal/schema/toRepresentation.js";
21
13
  import * as Option from "./Option.js";
22
- import * as Predicate from "./Predicate.js";
23
- import * as Rec from "./Record.js";
24
14
  import * as Schema from "./Schema.js";
25
15
  import * as SchemaAST from "./SchemaAST.js";
26
16
  import * as SchemaGetter from "./SchemaGetter.js";
27
- // -----------------------------------------------------------------------------
28
- // schemas
29
- // -----------------------------------------------------------------------------
30
- const Representation$ref = /*#__PURE__*/Schema.suspend(() => $Representation);
31
- const toJsonAnnotationsBlacklist = /*#__PURE__*/new Set([...InternalRepresentation.fromASTBlacklist, "expected", "contentMediaType", "contentSchema"]);
32
- /**
33
- * Schema for {@link PrimitiveTree}.
34
- *
35
- * **When to use**
36
- *
37
- * Use to validate recursive annotation metadata trees whose leaves are `null`,
38
- * `number`, `boolean`, `bigint`, `symbol`, or `string`.
39
- *
40
- * @see {@link PrimitiveTree} for the recursive tree type accepted by this codec
41
- * @see {@link $Annotations} for the annotation codec that filters values through this codec
42
- *
43
- * @category schemas
44
- * @since 4.0.0
45
- */
46
- export const $PrimitiveTree = /*#__PURE__*/Schema.Tree(/*#__PURE__*/Schema.Union([Schema.Null, Schema.Number,
47
- // allows NaN, Infinity, -Infinity
48
- Schema.Boolean, Schema.BigInt, Schema.Symbol, Schema.String]));
49
- const isPrimitiveTree = /*#__PURE__*/Schema.is($PrimitiveTree);
50
- /**
51
- * Schema for serializing public `Schema.Annotations.Annotations` values. It
52
- * filters out internal annotation keys and non-primitive values during
53
- * encoding.
54
- *
55
- * **When to use**
56
- *
57
- * Use to serialize schema annotations in representation schemas while retaining
58
- * only primitive-tree metadata.
59
- *
60
- * **Details**
61
- *
62
- * Decoding is passthrough. Encoding removes internal annotation keys and values
63
- * that are not accepted by `$PrimitiveTree`.
64
- *
65
- * @see {@link $PrimitiveTree} for the codec used to filter annotation values
66
- *
67
- * @category schemas
68
- * @since 4.0.0
69
- */
70
- export const $Annotations = /*#__PURE__*/Schema.Record(Schema.String, Schema.Unknown).pipe(Schema.encodeTo(Schema.Record(Schema.String, $PrimitiveTree), {
71
- decode: SchemaGetter.passthrough(),
72
- encode: SchemaGetter.transformOptional(Option.flatMap(r => {
73
- const out = {};
74
- for (const [k, v] of Object.entries(r)) {
75
- if (!toJsonAnnotationsBlacklist.has(k) && isPrimitiveTree(v)) {
76
- out[k] = v;
77
- }
78
- }
79
- return Rec.isEmptyRecord(out) ? Option.none() : Option.some(out);
80
- }))
81
- })).annotate({
82
- identifier: "Annotations"
83
- });
84
17
  /**
85
- * Schema for the {@link Null} representation node.
18
+ * Creates a declaration reviver while inferring its payload type from `payloadSchema`.
86
19
  *
87
- * @category schemas
20
+ * @category constructors
88
21
  * @since 4.0.0
89
22
  */
90
- export const $Null = /*#__PURE__*/Schema.Struct({
91
- _tag: Schema.tag("Null"),
92
- annotations: Schema.optional($Annotations)
93
- }).annotate({
94
- identifier: "Null"
95
- });
23
+ export const makeDeclarationReviver = InternalSchema.makeDeclarationReviver;
96
24
  /**
97
- * Schema for the {@link Undefined} representation node.
25
+ * Creates a filter reviver while inferring its payload type from `payloadSchema`.
98
26
  *
99
- * @category schemas
27
+ * @category constructors
100
28
  * @since 4.0.0
101
29
  */
102
- export const $Undefined = /*#__PURE__*/Schema.Struct({
103
- _tag: Schema.tag("Undefined"),
104
- annotations: Schema.optional($Annotations)
105
- }).annotate({
106
- identifier: "Undefined"
107
- });
30
+ export const makeFilterReviver = InternalSchema.makeFilterReviver;
108
31
  /**
109
- * Schema for the {@link Void} representation node.
32
+ * Creates a filter group reviver while inferring its payload type from `payloadSchema`.
110
33
  *
111
- * @category schemas
34
+ * @category constructors
112
35
  * @since 4.0.0
113
36
  */
114
- export const $Void = /*#__PURE__*/Schema.Struct({
115
- _tag: Schema.tag("Void"),
116
- annotations: Schema.optional($Annotations)
117
- }).annotate({
118
- identifier: "Void"
119
- });
37
+ export const makeFilterGroupReviver = InternalSchema.makeFilterGroupReviver;
120
38
  /**
121
- * Schema for the {@link Never} representation node.
39
+ * Creates generated runtime and TypeScript source strings for a schema.
122
40
  *
123
- * @category schemas
41
+ * @category constructors
124
42
  * @since 4.0.0
125
43
  */
126
- export const $Never = /*#__PURE__*/Schema.Struct({
127
- _tag: Schema.tag("Never"),
128
- annotations: Schema.optional($Annotations)
129
- }).annotate({
130
- identifier: "Never"
131
- });
44
+ export const makeCode = InternalToCodeDocument.makeCode;
132
45
  /**
133
- * Schema for the {@link Unknown} representation node.
46
+ * Lowers the encoded side of an AST to a live representation document.
134
47
  *
135
- * @category schemas
136
- * @since 4.0.0
137
- */
138
- export const $Unknown = /*#__PURE__*/Schema.Struct({
139
- _tag: Schema.tag("Unknown"),
140
- annotations: Schema.optional($Annotations)
141
- }).annotate({
142
- identifier: "Unknown"
143
- });
144
- /**
145
- * Schema for the {@link Any} representation node.
48
+ * **Details**
146
49
  *
147
- * @category schemas
148
- * @since 4.0.0
149
- */
150
- export const $Any = /*#__PURE__*/Schema.Struct({
151
- _tag: Schema.tag("Any"),
152
- annotations: Schema.optional($Annotations)
153
- }).annotate({
154
- identifier: "Any"
155
- });
156
- const $IsStringFinite = /*#__PURE__*/Schema.Struct({
157
- _tag: Schema.tag("isStringFinite"),
158
- regExp: Schema.RegExp
159
- }).annotate({
160
- identifier: "IsStringFinite"
161
- });
162
- const $IsStringBigInt = /*#__PURE__*/Schema.Struct({
163
- _tag: Schema.tag("isStringBigInt"),
164
- regExp: Schema.RegExp
165
- }).annotate({
166
- identifier: "IsStringBigInt"
167
- });
168
- const $IsStringSymbol = /*#__PURE__*/Schema.Struct({
169
- _tag: Schema.tag("isStringSymbol"),
170
- regExp: Schema.RegExp
171
- }).annotate({
172
- identifier: "IsStringSymbol"
173
- });
174
- const $IsTrimmed = /*#__PURE__*/Schema.Struct({
175
- _tag: Schema.tag("isTrimmed"),
176
- regExp: Schema.RegExp
177
- }).annotate({
178
- identifier: "IsTrimmed"
179
- });
180
- const $IsUUID = /*#__PURE__*/Schema.Struct({
181
- _tag: Schema.tag("isUUID"),
182
- regExp: Schema.RegExp,
183
- version: Schema.UndefinedOr(Schema.Literals([1, 2, 3, 4, 5, 6, 7, 8]))
184
- }).annotate({
185
- identifier: "IsUUID"
186
- });
187
- const $IsGUID = /*#__PURE__*/Schema.Struct({
188
- _tag: Schema.tag("isGUID"),
189
- regExp: Schema.RegExp
190
- }).annotate({
191
- identifier: "IsGUID"
192
- });
193
- const $IsULID = /*#__PURE__*/Schema.Struct({
194
- _tag: Schema.tag("isULID"),
195
- regExp: Schema.RegExp
196
- }).annotate({
197
- identifier: "IsULID"
198
- });
199
- const $IsBase64 = /*#__PURE__*/Schema.Struct({
200
- _tag: Schema.tag("isBase64"),
201
- regExp: Schema.RegExp
202
- }).annotate({
203
- identifier: "IsBase64"
204
- });
205
- const $IsBase64Url = /*#__PURE__*/Schema.Struct({
206
- _tag: Schema.tag("isBase64Url"),
207
- regExp: Schema.RegExp
208
- }).annotate({
209
- identifier: "IsBase64Url"
210
- });
211
- const $IsStartsWith = /*#__PURE__*/Schema.Struct({
212
- _tag: Schema.tag("isStartsWith"),
213
- startsWith: Schema.String,
214
- regExp: Schema.RegExp
215
- }).annotate({
216
- identifier: "IsStartsWith"
217
- });
218
- const $IsEndsWith = /*#__PURE__*/Schema.Struct({
219
- _tag: Schema.tag("isEndsWith"),
220
- endsWith: Schema.String,
221
- regExp: Schema.RegExp
222
- }).annotate({
223
- identifier: "IsEndsWith"
224
- });
225
- const $IsIncludes = /*#__PURE__*/Schema.Struct({
226
- _tag: Schema.tag("isIncludes"),
227
- includes: Schema.String,
228
- regExp: Schema.RegExp
229
- }).annotate({
230
- identifier: "IsIncludes"
231
- });
232
- const $IsUppercased = /*#__PURE__*/Schema.Struct({
233
- _tag: Schema.tag("isUppercased"),
234
- regExp: Schema.RegExp
235
- }).annotate({
236
- identifier: "IsUppercased"
237
- });
238
- const $IsLowercased = /*#__PURE__*/Schema.Struct({
239
- _tag: Schema.tag("isLowercased"),
240
- regExp: Schema.RegExp
241
- }).annotate({
242
- identifier: "IsLowercased"
243
- });
244
- const $IsCapitalized = /*#__PURE__*/Schema.Struct({
245
- _tag: Schema.tag("isCapitalized"),
246
- regExp: Schema.RegExp
247
- }).annotate({
248
- identifier: "IsCapitalized"
249
- });
250
- const $IsUncapitalized = /*#__PURE__*/Schema.Struct({
251
- _tag: Schema.tag("isUncapitalized"),
252
- regExp: Schema.RegExp
253
- }).annotate({
254
- identifier: "IsUncapitalized"
255
- });
256
- const NonNegativeInt = /*#__PURE__*/Schema.Int.check(/*#__PURE__*/Schema.isGreaterThanOrEqualTo(0));
257
- const $IsMinLength = /*#__PURE__*/Schema.Struct({
258
- _tag: Schema.tag("isMinLength"),
259
- minLength: NonNegativeInt
260
- }).annotate({
261
- identifier: "IsMinLength"
262
- });
263
- const $IsMaxLength = /*#__PURE__*/Schema.Struct({
264
- _tag: Schema.tag("isMaxLength"),
265
- maxLength: NonNegativeInt
266
- }).annotate({
267
- identifier: "IsMaxLength"
268
- });
269
- const $IsLengthBetween = /*#__PURE__*/Schema.Struct({
270
- _tag: Schema.tag("isLengthBetween"),
271
- minimum: NonNegativeInt,
272
- maximum: NonNegativeInt
273
- }).annotate({
274
- identifier: "IsLengthBetween"
275
- });
276
- const $IsPattern = /*#__PURE__*/Schema.Struct({
277
- _tag: Schema.tag("isPattern"),
278
- regExp: Schema.RegExp
279
- }).annotate({
280
- identifier: "IsPattern"
281
- });
282
- /**
283
- * Schema for {@link StringMeta}.
50
+ * Apply `SchemaAST.toType` to the AST first to lower its type side instead.
284
51
  *
285
- * @category schemas
52
+ * @category constructors
286
53
  * @since 4.0.0
287
54
  */
288
- export const $StringMeta = /*#__PURE__*/Schema.Union([$IsStringFinite, $IsStringBigInt, $IsStringSymbol, $IsTrimmed, $IsUUID, $IsGUID, $IsULID, $IsBase64, $IsBase64Url, $IsStartsWith, $IsEndsWith, $IsIncludes, $IsUppercased, $IsLowercased, $IsCapitalized, $IsUncapitalized, $IsMinLength, $IsMaxLength, $IsPattern, $IsLengthBetween]).annotate({
289
- identifier: "StringMeta"
290
- });
291
- function makeCheck(meta, identifier) {
292
- const Check$ref = Schema.suspend(() => Check);
293
- const Check = Schema.Union([Schema.Struct({
294
- _tag: Schema.tag("Filter"),
295
- annotations: Schema.optional($Annotations),
296
- meta
297
- }).annotate({
298
- identifier: `${identifier}Filter`
299
- }), Schema.Struct({
300
- _tag: Schema.tag("FilterGroup"),
301
- annotations: Schema.optional($Annotations),
302
- checks: Schema.NonEmptyArray(Check$ref)
303
- }).annotate({
304
- identifier: `${identifier}FilterGroup`
305
- })]).annotate({
306
- identifier: `${identifier}Check`
307
- });
308
- return Check;
55
+ export function toRepresentation(ast) {
56
+ return InternalToRepresentation.toRepresentation(ast);
309
57
  }
310
58
  /**
311
- * Schema for the {@link String} representation node.
59
+ * Lowers one or more AST encoded sides in a shared reference environment.
312
60
  *
313
- * @category schemas
314
- * @since 4.0.0
315
- */
316
- export const $String = /*#__PURE__*/Schema.Struct({
317
- _tag: Schema.tag("String"),
318
- annotations: Schema.optional($Annotations),
319
- checks: Schema.Array(makeCheck($StringMeta, "String")),
320
- contentMediaType: Schema.optional(Schema.String),
321
- contentSchema: Schema.optional(Representation$ref)
322
- }).annotate({
323
- identifier: "String"
324
- });
325
- const $IsInt = /*#__PURE__*/Schema.Struct({
326
- _tag: Schema.tag("isInt")
327
- }).annotate({
328
- identifier: "IsInt"
329
- });
330
- const $IsMultipleOf = /*#__PURE__*/Schema.Struct({
331
- _tag: Schema.tag("isMultipleOf"),
332
- divisor: Schema.Finite
333
- }).annotate({
334
- identifier: "IsMultipleOf"
335
- });
336
- const $IsFinite = /*#__PURE__*/Schema.Struct({
337
- _tag: Schema.tag("isFinite")
338
- }).annotate({
339
- identifier: "IsFinite"
340
- });
341
- const $IsGreaterThan = /*#__PURE__*/Schema.Struct({
342
- _tag: Schema.tag("isGreaterThan"),
343
- exclusiveMinimum: Schema.Finite
344
- }).annotate({
345
- identifier: "IsGreaterThan"
346
- });
347
- const $IsGreaterThanOrEqualTo = /*#__PURE__*/Schema.Struct({
348
- _tag: Schema.tag("isGreaterThanOrEqualTo"),
349
- minimum: Schema.Finite
350
- }).annotate({
351
- identifier: "IsGreaterThanOrEqualTo"
352
- });
353
- const $IsLessThan = /*#__PURE__*/Schema.Struct({
354
- _tag: Schema.tag("isLessThan"),
355
- exclusiveMaximum: Schema.Finite
356
- }).annotate({
357
- identifier: "IsLessThan"
358
- });
359
- const $IsLessThanOrEqualTo = /*#__PURE__*/Schema.Struct({
360
- _tag: Schema.tag("isLessThanOrEqualTo"),
361
- maximum: Schema.Finite
362
- }).annotate({
363
- identifier: "IsLessThanOrEqualTo"
364
- });
365
- const $IsBetween = /*#__PURE__*/Schema.Struct({
366
- _tag: Schema.tag("isBetween"),
367
- minimum: Schema.Finite,
368
- maximum: Schema.Finite,
369
- exclusiveMinimum: Schema.optional(Schema.Boolean),
370
- exclusiveMaximum: Schema.optional(Schema.Boolean)
371
- }).annotate({
372
- identifier: "IsBetween"
373
- });
374
- /**
375
- * Schema for {@link NumberMeta}.
376
- *
377
- * @category schemas
378
- * @since 4.0.0
379
- */
380
- export const $NumberMeta = /*#__PURE__*/Schema.Union([$IsInt, $IsMultipleOf, $IsFinite, $IsGreaterThan, $IsGreaterThanOrEqualTo, $IsLessThan, $IsLessThanOrEqualTo, $IsBetween]).annotate({
381
- identifier: "NumberMeta"
382
- });
383
- /**
384
- * Schema for the {@link Number} representation node.
61
+ * **Details**
385
62
  *
386
- * @category schemas
387
- * @since 4.0.0
388
- */
389
- export const $Number = /*#__PURE__*/Schema.Struct({
390
- _tag: Schema.tag("Number"),
391
- annotations: Schema.optional($Annotations),
392
- checks: Schema.Array(makeCheck($NumberMeta, "Number"))
393
- }).annotate({
394
- identifier: "Number"
395
- });
396
- /**
397
- * Schema for the {@link Boolean} representation node.
63
+ * Apply `SchemaAST.toType` to an AST first to lower its type side instead.
398
64
  *
399
- * @category schemas
65
+ * @category constructors
400
66
  * @since 4.0.0
401
67
  */
402
- export const $Boolean = /*#__PURE__*/Schema.Struct({
403
- _tag: Schema.tag("Boolean"),
404
- annotations: Schema.optional($Annotations)
405
- }).annotate({
406
- identifier: "Boolean"
407
- });
408
- const $IsGreaterThanBigInt = /*#__PURE__*/Schema.Struct({
409
- _tag: Schema.tag("isGreaterThanBigInt"),
410
- exclusiveMinimum: Schema.BigInt
411
- }).annotate({
412
- identifier: "IsGreaterThanBigInt"
413
- });
414
- const $IsGreaterThanOrEqualToBigInt = /*#__PURE__*/Schema.Struct({
415
- _tag: Schema.tag("isGreaterThanOrEqualToBigInt"),
416
- minimum: Schema.BigInt
417
- }).annotate({
418
- identifier: "IsGreaterThanOrEqualToBigInt"
419
- });
420
- const $IsLessThanBigInt = /*#__PURE__*/Schema.Struct({
421
- _tag: Schema.tag("isLessThanBigInt"),
422
- exclusiveMaximum: Schema.BigInt
423
- }).annotate({
424
- identifier: "IsLessThanBigInt"
425
- });
426
- const $IsLessThanOrEqualToBigInt = /*#__PURE__*/Schema.Struct({
427
- _tag: Schema.tag("isLessThanOrEqualToBigInt"),
428
- maximum: Schema.BigInt
429
- }).annotate({
430
- identifier: "IsLessThanOrEqualToBigInt"
431
- });
432
- const $IsBetweenBigInt = /*#__PURE__*/Schema.Struct({
433
- _tag: Schema.tag("isBetweenBigInt"),
434
- minimum: Schema.BigInt,
435
- maximum: Schema.BigInt,
436
- exclusiveMinimum: Schema.optional(Schema.Boolean),
437
- exclusiveMaximum: Schema.optional(Schema.Boolean)
438
- }).annotate({
439
- identifier: "IsBetweenBigInt"
440
- });
441
- const $BigIntMeta = /*#__PURE__*/Schema.Union([$IsGreaterThanBigInt, $IsGreaterThanOrEqualToBigInt, $IsLessThanBigInt, $IsLessThanOrEqualToBigInt, $IsBetweenBigInt]).annotate({
442
- identifier: "BigIntMeta"
443
- });
68
+ export function toRepresentations(asts) {
69
+ return InternalToRepresentation.toRepresentations(asts);
70
+ }
444
71
  /**
445
- * Schema for the {@link BigInt} representation node.
72
+ * Wraps a single representation document as a multi-document with one root.
446
73
  *
447
74
  * **When to use**
448
75
  *
449
- * Use to encode, decode, or validate serialized `BigInt` representation nodes,
450
- * not application `bigint` values.
451
- *
452
- * **Details**
453
- *
454
- * Accepts representation nodes with `_tag: "BigInt"`, optional annotations,
455
- * and bigint-specific validation metadata in `checks`.
76
+ * Use when an API such as `toCodeDocument` requires a `MultiDocument`.
456
77
  *
457
- * @see {@link BigIntMeta} for the metadata accepted by the `checks` array
458
- *
459
- * @category schemas
460
- * @since 4.0.0
461
- */
462
- export const $BigInt = /*#__PURE__*/Schema.Struct({
463
- _tag: Schema.tag("BigInt"),
464
- annotations: Schema.optional($Annotations),
465
- checks: Schema.Array(makeCheck($BigIntMeta, "BigInt"))
466
- }).annotate({
467
- identifier: "BigInt"
468
- });
469
- /**
470
- * Schema for the {@link Symbol} representation node.
471
- *
472
- * @category schemas
78
+ * @category transforming
473
79
  * @since 4.0.0
474
80
  */
475
- export const $Symbol = /*#__PURE__*/Schema.Struct({
476
- _tag: Schema.tag("Symbol"),
477
- annotations: Schema.optional($Annotations)
478
- }).annotate({
479
- identifier: "Symbol"
480
- });
81
+ export function toMultiDocument(document) {
82
+ return {
83
+ representations: [document.representation],
84
+ references: document.references
85
+ };
86
+ }
481
87
  /**
482
- * Schema for the literal value types allowed in a {@link Literal} node
483
- * (string, finite number, boolean, or bigint).
88
+ * Compiles a live representation document to JSON Schema Draft 2020-12.
484
89
  *
485
- * @category schemas
486
- * @since 4.0.0
487
- */
488
- export const $LiteralValue = /*#__PURE__*/Schema.Union([Schema.String, Schema.Finite, Schema.Boolean, Schema.BigInt]).annotate({
489
- identifier: "LiteralValue"
490
- });
491
- /**
492
- * Schema for the {@link Literal} representation node.
90
+ * **When to use**
493
91
  *
494
- * @category schemas
495
- * @since 4.0.0
496
- */
497
- export const $Literal = /*#__PURE__*/Schema.Struct({
498
- _tag: Schema.tag("Literal"),
499
- annotations: Schema.optional($Annotations),
500
- literal: $LiteralValue
501
- }).annotate({
502
- identifier: "Literal"
503
- });
504
- /**
505
- * Schema for the {@link UniqueSymbol} representation node.
92
+ * Use when you need JSON Schema output from a representation whose checks carry compiler annotations.
506
93
  *
507
- * @category schemas
508
- * @since 4.0.0
509
- */
510
- export const $UniqueSymbol = /*#__PURE__*/Schema.Struct({
511
- _tag: Schema.tag("UniqueSymbol"),
512
- annotations: Schema.optional($Annotations),
513
- symbol: Schema.Symbol
514
- }).annotate({
515
- identifier: "UniqueSymbol"
516
- });
517
- /**
518
- * Schema for the {@link ObjectKeyword} representation node.
94
+ * **Gotchas**
519
95
  *
520
- * @category schemas
521
- * @since 4.0.0
522
- */
523
- export const $ObjectKeyword = /*#__PURE__*/Schema.Struct({
524
- _tag: Schema.tag("ObjectKeyword"),
525
- annotations: Schema.optional($Annotations)
526
- }).annotate({
527
- identifier: "ObjectKeyword"
528
- });
529
- /**
530
- * Schema for the {@link Enum} representation node.
96
+ * Opaque declarations are represented by an unconstrained JSON Schema. Check callback results are used directly, and
97
+ * exceptions raised by a callback pass through unchanged. Callbacks must treat their input schemas as immutable. Each
98
+ * returned value must be a valid JSON Schema object graph and must not be mutated after the callback returns. Local
99
+ * definition references returned by callbacks are resolved together with compiler-generated references.
531
100
  *
532
- * @category schemas
533
- * @since 4.0.0
534
- */
535
- export const $Enum = /*#__PURE__*/Schema.Struct({
536
- _tag: Schema.tag("Enum"),
537
- annotations: Schema.optional($Annotations),
538
- enums: Schema.Array(Schema.Tuple([Schema.String, Schema.Union([Schema.String, Schema.Number // NaN, Infinity, -Infinity are allowed enum values
539
- ])]))
540
- }).annotate({
541
- identifier: "Enum"
542
- });
543
- /**
544
- * Schema for the {@link TemplateLiteral} representation node.
101
+ * @see {@link toJsonSchemaMultiDocument} for multiple roots sharing definitions
545
102
  *
546
- * @category schemas
103
+ * @category transforming
547
104
  * @since 4.0.0
548
105
  */
549
- export const $TemplateLiteral = /*#__PURE__*/Schema.Struct({
550
- _tag: Schema.tag("TemplateLiteral"),
551
- annotations: Schema.optional($Annotations),
552
- parts: Schema.Array(Representation$ref)
553
- }).annotate({
554
- identifier: "TemplateLiteral"
555
- });
106
+ export function toJsonSchemaDocument(document, options) {
107
+ return InternalToJsonSchemaDocument.toJsonSchemaDocument(document, options);
108
+ }
556
109
  /**
557
- * Schema for the {@link Element} type (positional tuple element).
110
+ * Compiles multiple live representations to a shared JSON Schema Draft 2020-12 document.
558
111
  *
559
- * @category schemas
560
- * @since 4.0.0
561
- */
562
- export const $Element = /*#__PURE__*/Schema.Struct({
563
- isOptional: Schema.Boolean,
564
- type: Representation$ref,
565
- annotations: Schema.optional($Annotations)
566
- }).annotate({
567
- identifier: "Element"
568
- });
569
- const $IsUnique = /*#__PURE__*/Schema.Struct({
570
- _tag: Schema.tag("isUnique")
571
- }).annotate({
572
- identifier: "IsUnique"
573
- });
574
- const $ArraysMeta = /*#__PURE__*/Schema.Union([$IsMinLength, $IsMaxLength, $IsLengthBetween, $IsUnique]).annotate({
575
- identifier: "ArraysMeta"
576
- });
577
- /**
578
- * Schema for the {@link Arrays} representation node.
112
+ * **When to use**
579
113
  *
580
- * @category schemas
581
- * @since 4.0.0
582
- */
583
- export const $Arrays = /*#__PURE__*/Schema.Struct({
584
- _tag: Schema.tag("Arrays"),
585
- annotations: Schema.optional($Annotations),
586
- elements: Schema.Array($Element),
587
- rest: Schema.Array(Representation$ref),
588
- checks: Schema.Array(makeCheck($ArraysMeta, "Arrays"))
589
- }).annotate({
590
- identifier: "Arrays"
591
- });
592
- /**
593
- * Schema for the {@link PropertySignature} type.
114
+ * Use when several representation roots must share the same JSON Schema definitions.
594
115
  *
595
- * @category schemas
596
- * @since 4.0.0
597
- */
598
- export const $PropertySignature = /*#__PURE__*/Schema.Struct({
599
- annotations: Schema.optional($Annotations),
600
- name: Schema.PropertyKey,
601
- type: Representation$ref,
602
- isOptional: Schema.Boolean,
603
- isMutable: Schema.Boolean
604
- }).annotate({
605
- identifier: "PropertySignature"
606
- });
607
- /**
608
- * Schema for the {@link IndexSignature} type.
116
+ * **Gotchas**
609
117
  *
610
- * @category schemas
611
- * @since 4.0.0
612
- */
613
- export const $IndexSignature = /*#__PURE__*/Schema.Struct({
614
- parameter: Representation$ref,
615
- type: Representation$ref
616
- }).annotate({
617
- identifier: "IndexSignature"
618
- });
619
- const $IsMinProperties = /*#__PURE__*/Schema.Struct({
620
- _tag: Schema.tag("isMinProperties"),
621
- minProperties: NonNegativeInt
622
- }).annotate({
623
- identifier: "IsMinProperties"
624
- });
625
- const $IsMaxProperties = /*#__PURE__*/Schema.Struct({
626
- _tag: Schema.tag("isMaxProperties"),
627
- maxProperties: NonNegativeInt
628
- }).annotate({
629
- identifier: "IsMaxProperties"
630
- });
631
- const $IsPropertiesLengthBetween = /*#__PURE__*/Schema.Struct({
632
- _tag: Schema.tag("isPropertiesLengthBetween"),
633
- minimum: NonNegativeInt,
634
- maximum: NonNegativeInt
635
- }).annotate({
636
- identifier: "IsPropertiesLengthBetween"
637
- });
638
- const $IsPropertyNames = /*#__PURE__*/Schema.Struct({
639
- _tag: Schema.tag("isPropertyNames"),
640
- propertyNames: Representation$ref
641
- }).annotate({
642
- identifier: "IsPropertyNames"
643
- });
644
- /**
645
- * Schema for {@link ObjectsMeta}.
118
+ * Every definition is compiled, including definitions that are not reachable from a root. Check callbacks must treat
119
+ * their input schemas as immutable. Each returned value must be a valid JSON Schema object graph and must not be
120
+ * mutated after the callback returns. Local definition references returned by callbacks are resolved together with
121
+ * compiler-generated references.
646
122
  *
647
- * @category schemas
648
- * @since 4.0.0
649
- */
650
- export const $ObjectsMeta = /*#__PURE__*/Schema.Union([$IsMinProperties, $IsMaxProperties, $IsPropertiesLengthBetween, $IsPropertyNames]).annotate({
651
- identifier: "ObjectsMeta"
652
- });
653
- /**
654
- * Schema for the {@link Objects} representation node.
123
+ * @see {@link toJsonSchemaDocument} for a single root
655
124
  *
656
- * @category schemas
125
+ * @category transforming
657
126
  * @since 4.0.0
658
127
  */
659
- export const $Objects = /*#__PURE__*/Schema.Struct({
660
- _tag: Schema.tag("Objects"),
661
- annotations: Schema.optional($Annotations),
662
- propertySignatures: Schema.Array($PropertySignature),
663
- indexSignatures: Schema.Array($IndexSignature),
664
- checks: Schema.Array(makeCheck($ObjectsMeta, "Objects"))
665
- }).annotate({
666
- identifier: "Objects"
667
- });
128
+ export function toJsonSchemaMultiDocument(document, options) {
129
+ return InternalToJsonSchemaDocument.toJsonSchemaMultiDocument(document, options);
130
+ }
668
131
  /**
669
- * Schema for the {@link Union} representation node.
132
+ * Generates TypeScript source for live schema representations and their definitions.
670
133
  *
671
- * @category schemas
672
- * @since 4.0.0
673
- */
674
- export const $Union = /*#__PURE__*/Schema.Struct({
675
- _tag: Schema.tag("Union"),
676
- annotations: Schema.optional($Annotations),
677
- types: Schema.Array(Representation$ref),
678
- mode: Schema.Literals(["anyOf", "oneOf"])
679
- }).annotate({
680
- identifier: "Union"
681
- });
682
- /**
683
- * Schema for the {@link Reference} representation node.
134
+ * **When to use**
684
135
  *
685
- * @category schemas
686
- * @since 4.0.0
687
- */
688
- export const $Reference = /*#__PURE__*/Schema.Struct({
689
- _tag: Schema.tag("Reference"),
690
- $ref: Schema.String
691
- }).annotate({
692
- identifier: "Reference"
693
- });
694
- const $IsDateValid = /*#__PURE__*/Schema.Struct({
695
- _tag: Schema.tag("isDateValid")
696
- }).annotate({
697
- identifier: "IsDateValid"
698
- });
699
- const $IsGreaterThanDate = /*#__PURE__*/Schema.Struct({
700
- _tag: Schema.tag("isGreaterThanDate"),
701
- exclusiveMinimum: Schema.Date
702
- }).annotate({
703
- identifier: "IsGreaterThanDate"
704
- });
705
- const $IsGreaterThanOrEqualToDate = /*#__PURE__*/Schema.Struct({
706
- _tag: Schema.tag("isGreaterThanOrEqualToDate"),
707
- minimum: Schema.Date
708
- }).annotate({
709
- identifier: "IsGreaterThanOrEqualToDate"
710
- });
711
- const $IsLessThanDate = /*#__PURE__*/Schema.Struct({
712
- _tag: Schema.tag("isLessThanDate"),
713
- exclusiveMaximum: Schema.Date
714
- }).annotate({
715
- identifier: "IsLessThanDate"
716
- });
717
- const $IsLessThanOrEqualToDate = /*#__PURE__*/Schema.Struct({
718
- _tag: Schema.tag("isLessThanOrEqualToDate"),
719
- maximum: Schema.Date
720
- }).annotate({
721
- identifier: "IsLessThanOrEqualToDate"
722
- });
723
- const $IsBetweenDate = /*#__PURE__*/Schema.Struct({
724
- _tag: Schema.tag("isBetweenDate"),
725
- minimum: Schema.Date,
726
- maximum: Schema.Date,
727
- exclusiveMinimum: Schema.optional(Schema.Boolean),
728
- exclusiveMaximum: Schema.optional(Schema.Boolean)
729
- }).annotate({
730
- identifier: "IsBetweenDate"
731
- });
732
- /**
733
- * Schema for {@link DateMeta}.
136
+ * Use when custom declarations and checks provide `toCode` callbacks and must be emitted without a central handler registry.
734
137
  *
735
- * @category schemas
736
- * @since 4.0.0
737
- */
738
- export const $DateMeta = /*#__PURE__*/Schema.Union([$IsDateValid, $IsGreaterThanDate, $IsGreaterThanOrEqualToDate, $IsLessThanDate, $IsLessThanOrEqualToDate, $IsBetweenDate]).annotate({
739
- identifier: "DateMeta"
740
- });
741
- const $IsMinSize = /*#__PURE__*/Schema.Struct({
742
- _tag: Schema.tag("isMinSize"),
743
- minSize: NonNegativeInt
744
- }).annotate({
745
- identifier: "IsMinSize"
746
- });
747
- const $IsMaxSize = /*#__PURE__*/Schema.Struct({
748
- _tag: Schema.tag("isMaxSize"),
749
- maxSize: NonNegativeInt
750
- }).annotate({
751
- identifier: "IsMaxSize"
752
- });
753
- const $IsSizeBetween = /*#__PURE__*/Schema.Struct({
754
- _tag: Schema.tag("isSizeBetween"),
755
- minimum: NonNegativeInt,
756
- maximum: NonNegativeInt
757
- }).annotate({
758
- identifier: "IsSizeBetween"
759
- });
760
- /**
761
- * Schema for {@link SizeMeta}.
138
+ * **Gotchas**
762
139
  *
763
- * @category schemas
764
- * @since 4.0.0
765
- */
766
- export const $SizeMeta = /*#__PURE__*/Schema.Union([$IsMinSize, $IsMaxSize, $IsSizeBetween]).annotate({
767
- identifier: "SizeMeta"
768
- });
769
- /**
770
- * Schema for {@link DeclarationMeta}.
140
+ * Opaque declarations and leaf checks require `toCode` callbacks. Callback results are used directly, and exceptions raised by a callback pass through unchanged.
771
141
  *
772
- * @category schemas
142
+ * @category transforming
773
143
  * @since 4.0.0
774
144
  */
775
- export const $DeclarationMeta = /*#__PURE__*/Schema.Union([$DateMeta, $SizeMeta]).annotate({
776
- identifier: "DeclarationMeta"
145
+ export function toCodeDocument(document) {
146
+ return InternalToCodeDocument.toCodeDocument(document);
147
+ }
148
+ const RepresentationSchema = /*#__PURE__*/Schema.suspend(() => RepresentationUnion);
149
+ const RepresentationsSchema = /*#__PURE__*/Schema.Array(RepresentationSchema);
150
+ const RepresentationAnnotationSchema = /*#__PURE__*/Schema.Struct({
151
+ id: Schema.NonEmptyString,
152
+ payload: Schema.Json
777
153
  });
778
- /**
779
- * Schema for the {@link Declaration} representation node.
780
- *
781
- * @category schemas
782
- * @since 4.0.0
783
- */
784
- export const $Declaration = /*#__PURE__*/Schema.Struct({
785
- _tag: Schema.tag("Declaration"),
786
- annotations: Schema.optional($Annotations),
787
- typeParameters: Schema.Array(Representation$ref),
788
- checks: Schema.Array(makeCheck($DeclarationMeta, "Declaration")),
789
- encodedSchema: Representation$ref
790
- }).annotate({
791
- identifier: "Declaration"
154
+ const CheckRepresentationAnnotationSchema = /*#__PURE__*/Schema.Struct({
155
+ ...RepresentationAnnotationSchema.fields,
156
+ schemas: /*#__PURE__*/Schema.optional(RepresentationsSchema)
792
157
  });
793
- /**
794
- * Schema for the {@link Suspend} representation node.
795
- *
796
- * @category schemas
797
- * @since 4.0.0
798
- */
799
- export const $Suspend = /*#__PURE__*/Schema.Struct({
800
- _tag: Schema.tag("Suspend"),
801
- annotations: Schema.optional($Annotations),
802
- checks: Schema.Tuple([]),
803
- thunk: Representation$ref
804
- }).annotate({
805
- identifier: "Suspend"
158
+ const LiveAnnotationsSchema = /*#__PURE__*/Schema.Record(Schema.String, Schema.Unknown);
159
+ const JsonAnnotationsSchema = /*#__PURE__*/Schema.Record(Schema.String, Schema.Json);
160
+ function pruneAnnotations(annotations) {
161
+ const out = {};
162
+ for (const [key, value] of Object.entries(annotations)) {
163
+ if (SchemaAST.isJson(value)) {
164
+ InternalRecord.assignProperty(out, key, value);
165
+ }
166
+ }
167
+ return Object.keys(out).length === 0 ? Option.none() : Option.some(out);
168
+ }
169
+ const AnnotationsSchema = /*#__PURE__*/Schema.optional(LiveAnnotationsSchema).pipe(/*#__PURE__*/Schema.encodeTo(/*#__PURE__*/Schema.optionalKey(JsonAnnotationsSchema), {
170
+ decode: /*#__PURE__*/SchemaGetter.passthroughSubtype(),
171
+ encode: /*#__PURE__*/SchemaGetter.transformOptional(annotations => Option.isNone(annotations) || annotations.value === undefined ? Option.none() : pruneAnnotations(annotations.value))
172
+ }));
173
+ const CheckSchema = /*#__PURE__*/Schema.suspend(() => CheckUnion);
174
+ const ChecksSchema = /*#__PURE__*/Schema.Array(CheckSchema);
175
+ const KeywordFields = {
176
+ annotations: AnnotationsSchema,
177
+ checks: ChecksSchema
178
+ };
179
+ const FilterSchema = /*#__PURE__*/Schema.Struct({
180
+ _tag: /*#__PURE__*/Schema.tag("Filter"),
181
+ representation: CheckRepresentationAnnotationSchema,
182
+ annotations: AnnotationsSchema,
183
+ aborted: Schema.Boolean
184
+ });
185
+ const FilterGroupSchema = /*#__PURE__*/Schema.Struct({
186
+ _tag: /*#__PURE__*/Schema.tag("FilterGroup"),
187
+ representation: /*#__PURE__*/Schema.optional(CheckRepresentationAnnotationSchema),
188
+ annotations: AnnotationsSchema,
189
+ checks: /*#__PURE__*/Schema.NonEmptyArray(CheckSchema)
190
+ });
191
+ const CheckUnion = /*#__PURE__*/Schema.Union([FilterSchema, FilterGroupSchema]);
192
+ function makeKeywordSchema(tag) {
193
+ return Schema.Struct({
194
+ _tag: Schema.tag(tag),
195
+ ...KeywordFields
196
+ });
197
+ }
198
+ const DeclarationSchema = /*#__PURE__*/Schema.Struct({
199
+ _tag: /*#__PURE__*/Schema.tag("Declaration"),
200
+ representation: RepresentationAnnotationSchema,
201
+ annotations: AnnotationsSchema,
202
+ typeParameters: RepresentationsSchema,
203
+ checks: ChecksSchema
204
+ });
205
+ const SuspendSchema = /*#__PURE__*/Schema.Struct({
206
+ _tag: /*#__PURE__*/Schema.tag("Suspend"),
207
+ annotations: AnnotationsSchema,
208
+ checks: /*#__PURE__*/Schema.Tuple([]),
209
+ thunk: RepresentationSchema
210
+ });
211
+ function makeValueSchema(type, value) {
212
+ return value.pipe(Schema.encodeTo(Schema.Struct({
213
+ type: Schema.tag(type),
214
+ value
215
+ }), {
216
+ decode: SchemaGetter.transform(encoded => encoded.value),
217
+ encode: SchemaGetter.transform(value => ({
218
+ type,
219
+ value
220
+ }))
221
+ }));
222
+ }
223
+ const StringValueCodec = /*#__PURE__*/makeValueSchema("string", Schema.String);
224
+ const NumberValueCodec = /*#__PURE__*/makeValueSchema("number", Schema.Number);
225
+ const LiteralSchema = /*#__PURE__*/Schema.Struct({
226
+ _tag: /*#__PURE__*/Schema.tag("Literal"),
227
+ ...KeywordFields,
228
+ literal: /*#__PURE__*/Schema.Union([StringValueCodec, /*#__PURE__*/makeValueSchema("number", Schema.Finite), /*#__PURE__*/makeValueSchema("bigint", Schema.BigInt), /*#__PURE__*/makeValueSchema("boolean", Schema.Boolean)])
806
229
  });
807
- /**
808
- * Schema for the full {@link Representation} union. It recursively validates
809
- * and encodes any representation node.
810
- *
811
- * @category schemas
812
- * @since 4.0.0
813
- */
814
- export const $Representation = /*#__PURE__*/Schema.Union([$Null, $Undefined, $Void, $Never, $Unknown, $Any, $String, $Number, $Boolean, $BigInt, $Symbol, $Literal, $UniqueSymbol, $ObjectKeyword, $Enum, $TemplateLiteral, $Arrays, $Objects, $Union, $Reference, $Declaration, $Suspend]).annotate({
815
- identifier: "Schema"
230
+ const UniqueSymbolSchema = /*#__PURE__*/Schema.Struct({
231
+ _tag: /*#__PURE__*/Schema.tag("UniqueSymbol"),
232
+ ...KeywordFields,
233
+ symbol: Schema.Symbol
816
234
  });
817
- /**
818
- * Schema for {@link Document}.
819
- *
820
- * **When to use**
821
- *
822
- * Use to validate or serialize a single schema representation document with
823
- * `Schema.decodeUnknownSync` or `Schema.encodeSync`.
824
- *
825
- * **Gotchas**
826
- *
827
- * This codec validates document structure but does not resolve `$ref` keys
828
- * against `references`.
829
- *
830
- * @see {@link DocumentFromJson} for the JSON-string codec wrapper
831
- * @see {@link $MultiDocument} for validating documents with multiple root representations
832
- *
833
- * @category schemas
834
- * @since 4.0.0
835
- */
836
- export const $Document = /*#__PURE__*/Schema.Struct({
837
- representation: $Representation,
838
- references: Schema.Record(Schema.String, $Representation)
839
- }).annotate({
840
- identifier: "Document"
235
+ const EnumSchema = /*#__PURE__*/Schema.Struct({
236
+ _tag: /*#__PURE__*/Schema.tag("Enum"),
237
+ ...KeywordFields,
238
+ enums: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Tuple([Schema.String, /*#__PURE__*/Schema.Union([StringValueCodec, NumberValueCodec])]))
841
239
  });
842
- /**
843
- * Schema for {@link MultiDocument}.
844
- *
845
- * @category schemas
846
- * @since 4.0.0
847
- */
848
- export const $MultiDocument = /*#__PURE__*/Schema.Struct({
849
- representations: Schema.NonEmptyArray($Representation),
850
- references: Schema.Record(Schema.String, $Representation)
851
- }).annotate({
852
- identifier: "MultiDocument"
240
+ const TemplateLiteralSchema = /*#__PURE__*/Schema.Struct({
241
+ _tag: /*#__PURE__*/Schema.tag("TemplateLiteral"),
242
+ ...KeywordFields,
243
+ parts: RepresentationsSchema
853
244
  });
854
- // -----------------------------------------------------------------------------
855
- // APIs
856
- // -----------------------------------------------------------------------------
857
- /**
858
- * Converts a Schema AST into a {@link Document}.
859
- *
860
- * **When to use**
861
- *
862
- * Use when you have a single Schema AST and need a schema representation
863
- * document.
864
- *
865
- * **Details**
866
- *
867
- * Shared/recursive sub-schemas are extracted into the `references` map.
868
- *
869
- * **Example** (Converting a Schema to a Document)
870
- *
871
- * ```ts
872
- * import { Schema, SchemaRepresentation } from "effect"
873
- *
874
- * const Person = Schema.Struct({
875
- * name: Schema.String,
876
- * age: Schema.Number
877
- * })
878
- *
879
- * const doc = SchemaRepresentation.fromAST(Person.ast)
880
- * console.log(doc.representation._tag)
881
- * // "Objects"
882
- * ```
883
- *
884
- * @see {@link Document}
885
- * @see {@link fromASTs}
886
- *
887
- * @category constructors
888
- * @since 4.0.0
889
- */
890
- export const fromAST = InternalRepresentation.fromAST;
891
- /**
892
- * Converts one or more Schema ASTs into a {@link MultiDocument}.
245
+ const ElementSchema = /*#__PURE__*/Schema.Struct({
246
+ isOptional: Schema.Boolean,
247
+ type: RepresentationSchema,
248
+ annotations: AnnotationsSchema
249
+ });
250
+ const ArraysSchema = /*#__PURE__*/Schema.Struct({
251
+ _tag: /*#__PURE__*/Schema.tag("Arrays"),
252
+ ...KeywordFields,
253
+ elements: /*#__PURE__*/Schema.Array(ElementSchema),
254
+ rest: RepresentationsSchema
255
+ });
256
+ const PropertySignatureSchema = /*#__PURE__*/Schema.Struct({
257
+ name: /*#__PURE__*/Schema.Union([StringValueCodec, NumberValueCodec, /*#__PURE__*/makeValueSchema("symbol", Schema.Symbol)]),
258
+ type: RepresentationSchema,
259
+ isOptional: Schema.Boolean,
260
+ isMutable: Schema.Boolean,
261
+ annotations: AnnotationsSchema
262
+ });
263
+ const IndexSignatureSchema = /*#__PURE__*/Schema.Struct({
264
+ parameter: RepresentationSchema,
265
+ type: RepresentationSchema
266
+ });
267
+ const ObjectsSchema = /*#__PURE__*/Schema.Struct({
268
+ _tag: /*#__PURE__*/Schema.tag("Objects"),
269
+ ...KeywordFields,
270
+ propertySignatures: /*#__PURE__*/Schema.Array(PropertySignatureSchema),
271
+ indexSignatures: /*#__PURE__*/Schema.Array(IndexSignatureSchema)
272
+ });
273
+ const UnionSchema = /*#__PURE__*/Schema.Struct({
274
+ _tag: /*#__PURE__*/Schema.tag("Union"),
275
+ ...KeywordFields,
276
+ types: RepresentationsSchema,
277
+ mode: /*#__PURE__*/Schema.Literals(["anyOf", "oneOf"])
278
+ });
279
+ const ReferenceSchema = /*#__PURE__*/Schema.Struct({
280
+ _tag: /*#__PURE__*/Schema.tag("Reference"),
281
+ $ref: Schema.NonEmptyString
282
+ });
283
+ const RepresentationUnion = /*#__PURE__*/Schema.Union([DeclarationSchema, ReferenceSchema, SuspendSchema, /*#__PURE__*/makeKeywordSchema("Null"), /*#__PURE__*/makeKeywordSchema("Undefined"), /*#__PURE__*/makeKeywordSchema("Void"), /*#__PURE__*/makeKeywordSchema("Never"), /*#__PURE__*/makeKeywordSchema("Unknown"), /*#__PURE__*/makeKeywordSchema("Any"), /*#__PURE__*/makeKeywordSchema("String"), /*#__PURE__*/makeKeywordSchema("Number"), /*#__PURE__*/makeKeywordSchema("Boolean"), /*#__PURE__*/makeKeywordSchema("BigInt"), /*#__PURE__*/makeKeywordSchema("Symbol"), /*#__PURE__*/makeKeywordSchema("ObjectKeyword"), LiteralSchema, UniqueSymbolSchema, EnumSchema, TemplateLiteralSchema, ArraysSchema, ObjectsSchema, UnionSchema]);
284
+ const ReferencesSchema = /*#__PURE__*/Schema.Record(Schema.String, RepresentationSchema);
285
+ const DocumentFromJson = /*#__PURE__*/Schema.toCodecJson(/*#__PURE__*/Schema.Struct({
286
+ representation: RepresentationSchema,
287
+ references: ReferencesSchema
288
+ }));
289
+ const MultiDocumentFromJson = /*#__PURE__*/Schema.toCodecJson(/*#__PURE__*/Schema.Struct({
290
+ representations: /*#__PURE__*/Schema.NonEmptyArray(RepresentationSchema),
291
+ references: ReferencesSchema
292
+ }));
293
+ const encodeDocument = /*#__PURE__*/Schema.encodeSync(DocumentFromJson);
294
+ const encodeMultiDocument = /*#__PURE__*/Schema.encodeSync(MultiDocumentFromJson);
295
+ const decodeDocument = /*#__PURE__*/Schema.decodeSync(DocumentFromJson);
296
+ const decodeMultiDocument = /*#__PURE__*/Schema.decodeSync(MultiDocumentFromJson);
297
+ /**
298
+ * Projects a live single-root representation document and encodes it as JSON.
893
299
  *
894
300
  * **When to use**
895
301
  *
896
- * Use when you have multiple Schema ASTs and need one schema representation
897
- * `MultiDocument` with shared references.
302
+ * Use when you need a stable JSON value for storage or transport after calling `toRepresentation`.
898
303
  *
899
- * **Details**
304
+ * **Gotchas**
900
305
  *
901
- * All schemas share a single `references` map.
306
+ * Generic annotations that are not JSON are omitted. Invalid persistence identities and unsupported structural values throw an `Error` containing their representation path.
902
307
  *
903
- * @see {@link MultiDocument}
904
- * @see {@link fromAST}
308
+ * @see {@link toRepresentation} for constructing the live document
309
+ * @see {@link toJsonMultiDocument} for documents with multiple roots
905
310
  *
906
- * @category constructors
311
+ * @category encoding
907
312
  * @since 4.0.0
908
313
  */
909
- export const fromASTs = InternalRepresentation.fromASTs;
314
+ export function toJson(document) {
315
+ return encodeDocument(document);
316
+ }
910
317
  /**
911
- * Schema that decodes a {@link Document} from JSON and encodes it back.
318
+ * Projects a live multi-root representation document and encodes it as JSON.
912
319
  *
913
320
  * **When to use**
914
321
  *
915
- * Use when you need a JSON codec for schema representation documents with
916
- * `Schema.decodeUnknownSync` or `Schema.encodeSync`.
917
- *
918
- * **Example** (Round-tripping a Document through JSON)
919
- *
920
- * ```ts
921
- * import { Schema, SchemaRepresentation } from "effect"
922
- *
923
- * const doc = SchemaRepresentation.fromAST(Schema.String.ast)
924
- * const json = Schema.encodeSync(SchemaRepresentation.DocumentFromJson)(doc)
925
- * const back = Schema.decodeUnknownSync(SchemaRepresentation.DocumentFromJson)(json)
926
- * ```
927
- *
928
- * @see {@link $Document}
929
- * @see {@link MultiDocumentFromJson}
930
- *
931
- * @category schemas
932
- * @since 4.0.0
933
- */
934
- export const DocumentFromJson = /*#__PURE__*/Schema.toCodecJson($Document);
935
- /**
936
- * Schema for `MultiDocument` values encoded as JSON.
937
- *
938
- * @see {@link $MultiDocument}
939
- * @see {@link DocumentFromJson}
940
- *
941
- * @category schemas
942
- * @since 4.0.0
943
- */
944
- export const MultiDocumentFromJson = /*#__PURE__*/Schema.toCodecJson($MultiDocument);
945
- /**
946
- * Wraps a single {@link Document} as a {@link MultiDocument} with one
947
- * representation.
322
+ * Use when you need one JSON value for multiple live roots that share a reference environment.
948
323
  *
949
- * **When to use**
324
+ * **Gotchas**
950
325
  *
951
- * Use when you need to pass a single schema representation `Document` where an
952
- * API expects a `MultiDocument`.
326
+ * The root order and shared reference keys are preserved, while non-JSON generic annotations are omitted.
953
327
  *
954
- * @see {@link Document}
955
- * @see {@link MultiDocument}
328
+ * @see {@link toRepresentations} for constructing the live multi-document
329
+ * @see {@link toJson} for a single-root document
956
330
  *
957
- * @category transforming
331
+ * @category encoding
958
332
  * @since 4.0.0
959
333
  */
960
- export function toMultiDocument(document) {
961
- return {
962
- representations: [document.representation],
963
- references: document.references
964
- };
334
+ export function toJsonMultiDocument(document) {
335
+ return encodeMultiDocument(document);
965
336
  }
966
337
  /**
967
- * Default {@link Reviver} for {@link toSchema} that handles built-in Effect
968
- * types, including Option, Result, Redacted, Cause, Exit, ReadonlyMap, HashMap,
969
- * ReadonlySet, Date, Duration, URL, and RegExp.
338
+ * Decodes a persisted single-root representation document from JSON.
970
339
  *
971
340
  * **When to use**
972
341
  *
973
- * Use when you need the default `options.reviver` for {@link toSchema} to
974
- * reconstruct runtime schemas for built-in Effect declarations.
342
+ * Use when reading a representation document from storage or transport before inspecting it or passing it to `fromRepresentation`.
975
343
  *
976
- * **Details**
344
+ * **Gotchas**
977
345
  *
978
- * The reviver returns `undefined` for unrecognized declarations, causing
979
- * fallback to `encodedSchema`.
346
+ * Invalid documents throw a schema decoding error. Decoding does not reconstruct runtime callbacks.
980
347
  *
981
- * @see {@link toSchema}
982
- * @see {@link Reviver}
348
+ * @see {@link toJson} for encoding a document
349
+ * @see {@link fromRepresentation} for reconstructing a runtime schema
350
+ * @see {@link fromJsonMultiDocument} for multiple roots sharing references
983
351
  *
984
- * @category transforming
352
+ * @category decoding
985
353
  * @since 4.0.0
986
354
  */
987
- export const toSchemaDefaultReviver = (s, recur) => {
988
- const typeConstructor = s.annotations?.typeConstructor;
989
- if (Predicate.isObject(typeConstructor) && typeof typeConstructor._tag === "string") {
990
- const typeParameters = s.typeParameters.map(recur);
991
- switch (typeConstructor._tag) {
992
- // built-in types
993
- case "Date":
994
- return Schema.Date;
995
- case "Error":
996
- return Schema.Error(typeConstructor.options);
997
- case "File":
998
- return Schema.File;
999
- case "FormData":
1000
- return Schema.FormData;
1001
- case "ReadonlyMap":
1002
- return Schema.ReadonlyMap(typeParameters[0], typeParameters[1]);
1003
- case "ReadonlySet":
1004
- return Schema.ReadonlySet(typeParameters[0]);
1005
- case "RegExp":
1006
- return Schema.RegExp;
1007
- case "Uint8Array":
1008
- return Schema.Uint8Array;
1009
- case "URL":
1010
- return Schema.URL;
1011
- case "URLSearchParams":
1012
- return Schema.URLSearchParams;
1013
- // effect types
1014
- case "effect/Option":
1015
- return Schema.Option(typeParameters[0]);
1016
- case "effect/Result":
1017
- return Schema.Result(typeParameters[0], typeParameters[1]);
1018
- case "effect/Redacted":
1019
- return Schema.Redacted(typeParameters[0], typeConstructor.options);
1020
- case "effect/DateTime.TimeZone":
1021
- return Schema.TimeZone;
1022
- case "effect/DateTime.TimeZone.Named":
1023
- return Schema.TimeZoneNamed;
1024
- case "effect/DateTime.TimeZone.Offset":
1025
- return Schema.TimeZoneOffset;
1026
- case "effect/DateTime.Utc":
1027
- return Schema.DateTimeUtc;
1028
- case "effect/DateTime.Zoned":
1029
- return Schema.DateTimeZoned;
1030
- case "effect/BigDecimal":
1031
- return Schema.BigDecimal;
1032
- case "effect/Chunk":
1033
- return Schema.Chunk(typeParameters[0]);
1034
- case "effect/Cause":
1035
- return Schema.Cause(typeParameters[0], typeParameters[1]);
1036
- case "effect/Cause/Failure":
1037
- return Schema.CauseReason(typeParameters[0], typeParameters[1]);
1038
- case "effect/Duration":
1039
- return Schema.Duration;
1040
- case "effect/Exit":
1041
- return Schema.Exit(typeParameters[0], typeParameters[1], typeParameters[2]);
1042
- case "effect/Json":
1043
- return Schema.Json;
1044
- case "effect/MutableJson":
1045
- return Schema.MutableJson;
1046
- case "effect/HashMap":
1047
- return Schema.HashMap(typeParameters[0], typeParameters[1]);
1048
- case "effect/HashSet":
1049
- return Schema.HashSet(typeParameters[0]);
1050
- }
1051
- }
1052
- };
355
+ export function fromJson(input) {
356
+ return decodeDocument(input);
357
+ }
1053
358
  /**
1054
- * Creates a runtime Schema from a {@link Document}.
359
+ * Decodes a persisted multi-root representation document from JSON.
1055
360
  *
1056
361
  * **When to use**
1057
362
  *
1058
- * Use when you have a serialized or computed schema representation document and
1059
- * need a runtime Schema for decoding/encoding.
1060
- *
1061
- * **Details**
1062
- *
1063
- * Pass `options.reviver`, such as {@link toSchemaDefaultReviver}, to handle
1064
- * {@link Declaration} nodes for types like `Date` and `Option`. Without a
1065
- * reviver, declarations fall back to their `encodedSchema`. Circular references
1066
- * are handled via lazy `Schema.suspend`.
363
+ * Use when reading multiple representation roots that share references before inspecting them or passing them to `fromRepresentations`.
1067
364
  *
1068
365
  * **Gotchas**
1069
366
  *
1070
- * This throws if a `$ref` is not found in `document.references`.
1071
- *
1072
- * **Example** (Reconstructing a Schema)
367
+ * Invalid documents throw a schema decoding error. Decoding does not reconstruct runtime callbacks.
1073
368
  *
1074
- * ```ts
1075
- * import { Schema, SchemaRepresentation } from "effect"
1076
- *
1077
- * const doc = SchemaRepresentation.fromAST(
1078
- * Schema.Struct({ name: Schema.String }).ast
1079
- * )
1080
- *
1081
- * const schema = SchemaRepresentation.toSchema(doc)
1082
- * console.log(JSON.stringify(Schema.toJsonSchemaDocument(schema), null, 2))
1083
- * ```
369
+ * @see {@link toJsonMultiDocument} for encoding a multi-document
370
+ * @see {@link fromRepresentations} for reconstructing runtime schemas
371
+ * @see {@link fromJson} for a single root
1084
372
  *
1085
- * @see {@link Document}
1086
- * @see {@link Reviver}
1087
- * @see {@link toSchemaDefaultReviver}
1088
- *
1089
- * @category Runtime Generation
373
+ * @category decoding
1090
374
  * @since 4.0.0
1091
375
  */
1092
- export function toSchema(document, options) {
1093
- const slots = new Map();
1094
- return recur(document.representation);
1095
- function recur(r) {
1096
- let out = on(r);
1097
- if ("annotations" in r && r.annotations) out = out.annotate(r.annotations);
1098
- out = toSchemaChecks(out, r);
1099
- return out;
1100
- }
1101
- function getSlot(identifier) {
1102
- const existing = slots.get(identifier);
1103
- if (existing) return existing;
1104
- // Create the slot *before* resolving, so self-references can see it.
1105
- const slot = {
1106
- state: 0,
1107
- value: undefined,
1108
- ref: Schema.suspend(() => {
1109
- if (slot.value === undefined) {
1110
- return Schema.Unknown;
1111
- }
1112
- return slot.value;
1113
- })
1114
- };
1115
- slots.set(identifier, slot);
1116
- return slot;
1117
- }
1118
- function resolveReference($ref) {
1119
- const definition = document.references[$ref];
1120
- if (definition === undefined) {
1121
- throw new Error(`Reference ${$ref} not found`);
1122
- }
1123
- const slot = getSlot($ref);
1124
- if (slot.state === 2) {
1125
- // Already built: return the built schema directly
1126
- return slot.value;
1127
- }
1128
- if (slot.state === 1) {
1129
- // Circular: we're currently building this identifier.
1130
- return slot.ref;
1131
- }
1132
- // First time: build it.
1133
- slot.state = 1;
1134
- try {
1135
- slot.value = recur(definition);
1136
- slot.state = 2;
1137
- return slot.value;
1138
- } catch (e) {
1139
- // Leave the slot in a safe state so future thunks don't silently succeed.
1140
- slot.state = 0;
1141
- slot.value = undefined;
1142
- throw e;
1143
- }
1144
- }
1145
- function on(r) {
1146
- switch (r._tag) {
1147
- case "Declaration":
1148
- return options?.reviver?.(r, recur) ?? recur(r.encodedSchema);
1149
- case "Reference":
1150
- return resolveReference(r.$ref);
1151
- case "Suspend":
1152
- return recur(r.thunk);
1153
- case "Null":
1154
- return Schema.Null;
1155
- case "Undefined":
1156
- return Schema.Undefined;
1157
- case "Void":
1158
- return Schema.Void;
1159
- case "Never":
1160
- return Schema.Never;
1161
- case "Unknown":
1162
- return Schema.Unknown;
1163
- case "Any":
1164
- return Schema.Any;
1165
- case "String":
1166
- {
1167
- const contentMediaType = r.contentMediaType;
1168
- const contentSchema = r.contentSchema;
1169
- if (contentMediaType === "application/json" && contentSchema !== undefined) {
1170
- return Schema.fromJsonString(recur(contentSchema));
1171
- }
1172
- return Schema.String;
1173
- }
1174
- case "Number":
1175
- return Schema.Number;
1176
- case "Boolean":
1177
- return Schema.Boolean;
1178
- case "BigInt":
1179
- return Schema.BigInt;
1180
- case "Symbol":
1181
- return Schema.Symbol;
1182
- case "Literal":
1183
- return Schema.Literal(r.literal);
1184
- case "UniqueSymbol":
1185
- return Schema.UniqueSymbol(r.symbol);
1186
- case "ObjectKeyword":
1187
- return Schema.ObjectKeyword;
1188
- case "Enum":
1189
- return Schema.Enum(Object.fromEntries(r.enums));
1190
- case "TemplateLiteral":
1191
- {
1192
- const parts = r.parts.map(recur);
1193
- return Schema.TemplateLiteral(parts);
1194
- }
1195
- case "Arrays":
1196
- {
1197
- const elements = r.elements.map(e => {
1198
- const s = recur(e.type);
1199
- return e.isOptional ? Schema.optionalKey(s) : s;
1200
- });
1201
- const rest = r.rest.map(recur);
1202
- if (Arr.isArrayNonEmpty(rest)) {
1203
- if (r.elements.length === 0 && r.rest.length === 1) {
1204
- return Schema.Array(rest[0]);
1205
- }
1206
- return Schema.TupleWithRest(Schema.Tuple(elements), rest);
1207
- }
1208
- return Schema.Tuple(elements);
1209
- }
1210
- case "Objects":
1211
- {
1212
- const fields = {};
1213
- for (const ps of r.propertySignatures) {
1214
- const s = recur(ps.type);
1215
- const withOptional = ps.isOptional ? Schema.optionalKey(s) : s;
1216
- fields[ps.name] = ps.isMutable ? Schema.mutableKey(withOptional) : withOptional;
1217
- }
1218
- const indexSignatures = r.indexSignatures.map(is => Schema.Record(recur(is.parameter), recur(is.type)));
1219
- if (Arr.isArrayNonEmpty(indexSignatures)) {
1220
- if (r.propertySignatures.length === 0 && indexSignatures.length === 1) {
1221
- return indexSignatures[0];
1222
- }
1223
- return Schema.StructWithRest(Schema.Struct(fields), indexSignatures);
1224
- }
1225
- return Schema.Struct(fields);
1226
- }
1227
- case "Union":
1228
- {
1229
- if (r.types.length === 0) return Schema.Never;
1230
- if (r.types.every(t => t._tag === "Literal")) {
1231
- if (r.types.length === 1) {
1232
- return Schema.Literal(r.types[0].literal);
1233
- }
1234
- return Schema.Literals(r.types.map(t => t.literal));
1235
- }
1236
- return Schema.Union(r.types.map(recur), {
1237
- mode: r.mode
1238
- });
1239
- }
1240
- }
1241
- }
1242
- function toSchemaChecks(top, schema) {
1243
- switch (schema._tag) {
1244
- default:
1245
- return top;
1246
- case "String":
1247
- case "Number":
1248
- case "BigInt":
1249
- case "Arrays":
1250
- case "Objects":
1251
- case "Declaration":
1252
- {
1253
- const checks = schema.checks.map(toSchemaCheck);
1254
- return Arr.isArrayNonEmpty(checks) ? top.check(...checks) : top;
1255
- }
1256
- }
1257
- }
1258
- function toSchemaCheck(check) {
1259
- switch (check._tag) {
1260
- case "Filter":
1261
- return toSchemaFilter(check);
1262
- case "FilterGroup":
1263
- {
1264
- return Schema.makeFilterGroup(Arr.map(check.checks, toSchemaCheck), check.annotations);
1265
- }
1266
- }
1267
- }
1268
- function toSchemaFilter(filter) {
1269
- const a = filter.annotations;
1270
- switch (filter.meta._tag) {
1271
- // String Meta
1272
- case "isStringFinite":
1273
- return Schema.isStringFinite(a);
1274
- case "isStringBigInt":
1275
- return Schema.isStringBigInt(a);
1276
- case "isStringSymbol":
1277
- return Schema.isStringSymbol(a);
1278
- case "isMinLength":
1279
- return Schema.isMinLength(filter.meta.minLength, a);
1280
- case "isMaxLength":
1281
- return Schema.isMaxLength(filter.meta.maxLength, a);
1282
- case "isLengthBetween":
1283
- return Schema.isLengthBetween(filter.meta.minimum, filter.meta.maximum, a);
1284
- case "isPattern":
1285
- return Schema.isPattern(filter.meta.regExp, a);
1286
- case "isTrimmed":
1287
- return Schema.isTrimmed(a);
1288
- case "isUUID":
1289
- return Schema.isUUID(filter.meta.version, a);
1290
- case "isGUID":
1291
- return Schema.isGUID(a);
1292
- case "isULID":
1293
- return Schema.isULID(a);
1294
- case "isBase64":
1295
- return Schema.isBase64(a);
1296
- case "isBase64Url":
1297
- return Schema.isBase64Url(a);
1298
- case "isStartsWith":
1299
- return Schema.isStartsWith(filter.meta.startsWith, a);
1300
- case "isEndsWith":
1301
- return Schema.isEndsWith(filter.meta.endsWith, a);
1302
- case "isIncludes":
1303
- return Schema.isIncludes(filter.meta.includes, a);
1304
- case "isUppercased":
1305
- return Schema.isUppercased(a);
1306
- case "isLowercased":
1307
- return Schema.isLowercased(a);
1308
- case "isCapitalized":
1309
- return Schema.isCapitalized(a);
1310
- case "isUncapitalized":
1311
- return Schema.isUncapitalized(a);
1312
- // Number Meta
1313
- case "isFinite":
1314
- return Schema.isFinite(a);
1315
- case "isInt":
1316
- return Schema.isInt(a);
1317
- case "isMultipleOf":
1318
- return Schema.isMultipleOf(filter.meta.divisor, a);
1319
- case "isGreaterThan":
1320
- return Schema.isGreaterThan(filter.meta.exclusiveMinimum, a);
1321
- case "isGreaterThanOrEqualTo":
1322
- return Schema.isGreaterThanOrEqualTo(filter.meta.minimum, a);
1323
- case "isLessThan":
1324
- return Schema.isLessThan(filter.meta.exclusiveMaximum, a);
1325
- case "isLessThanOrEqualTo":
1326
- return Schema.isLessThanOrEqualTo(filter.meta.maximum, a);
1327
- case "isBetween":
1328
- return Schema.isBetween(filter.meta, a);
1329
- // BigInt Meta
1330
- case "isGreaterThanBigInt":
1331
- return Schema.isGreaterThanBigInt(filter.meta.exclusiveMinimum, a);
1332
- case "isGreaterThanOrEqualToBigInt":
1333
- return Schema.isGreaterThanOrEqualToBigInt(filter.meta.minimum, a);
1334
- case "isLessThanBigInt":
1335
- return Schema.isLessThanBigInt(filter.meta.exclusiveMaximum, a);
1336
- case "isLessThanOrEqualToBigInt":
1337
- return Schema.isLessThanOrEqualToBigInt(filter.meta.maximum, a);
1338
- case "isBetweenBigInt":
1339
- return Schema.isBetweenBigInt(filter.meta, a);
1340
- // Object Meta
1341
- case "isMinProperties":
1342
- return Schema.isMinProperties(filter.meta.minProperties, a);
1343
- case "isMaxProperties":
1344
- return Schema.isMaxProperties(filter.meta.maxProperties, a);
1345
- case "isPropertiesLengthBetween":
1346
- return Schema.isPropertiesLengthBetween(filter.meta.minimum, filter.meta.maximum, a);
1347
- case "isPropertyNames":
1348
- return Schema.isPropertyNames(recur(filter.meta.propertyNames), a);
1349
- // Arrays Meta
1350
- case "isUnique":
1351
- return Schema.isUnique(a);
1352
- // Date Meta
1353
- case "isDateValid":
1354
- return Schema.isDateValid(a);
1355
- case "isGreaterThanDate":
1356
- return Schema.isGreaterThanDate(filter.meta.exclusiveMinimum, a);
1357
- case "isGreaterThanOrEqualToDate":
1358
- return Schema.isGreaterThanOrEqualToDate(filter.meta.minimum, a);
1359
- case "isLessThanDate":
1360
- return Schema.isLessThanDate(filter.meta.exclusiveMaximum, a);
1361
- case "isLessThanOrEqualToDate":
1362
- return Schema.isLessThanOrEqualToDate(filter.meta.maximum, a);
1363
- case "isBetweenDate":
1364
- return Schema.isBetweenDate(filter.meta, a);
1365
- // Size Meta
1366
- case "isMinSize":
1367
- return Schema.isMinSize(filter.meta.minSize, a);
1368
- case "isMaxSize":
1369
- return Schema.isMaxSize(filter.meta.maxSize, a);
1370
- case "isSizeBetween":
1371
- return Schema.isSizeBetween(filter.meta.minimum, filter.meta.maximum, a);
1372
- }
1373
- }
376
+ export function fromJsonMultiDocument(input) {
377
+ return decodeMultiDocument(input);
1374
378
  }
1375
379
  /**
1376
- * Converts a {@link Document} to a Draft 2020-12 JSON Schema document.
380
+ * Reconstructs a runtime schema from a representation document.
1377
381
  *
1378
382
  * **When to use**
1379
383
  *
1380
- * Use when you need to produce a standard JSON Schema document from a schema
1381
- * representation `Document`.
384
+ * Use when you have decoded or constructed a document whose declaration and check annotations may require revivers.
1382
385
  *
1383
386
  * **Gotchas**
1384
387
  *
1385
- * JSON Schema generation is best-effort. Some Effect schema representation
1386
- * semantics cannot be represented exactly in JSON Schema, and importing an
1387
- * emitted JSON Schema may produce an equivalent approximation rather than the
1388
- * original representation shape.
388
+ * Revivers are resolved locally by `id`; none are installed implicitly. Reviver results are used directly, and exceptions raised by a reviver pass through unchanged.
1389
389
  *
1390
- * **Example** (Generating JSON Schema)
390
+ * **Example** (Restoring a persisted schema)
1391
391
  *
1392
- * ```ts
392
+ * ```ts import.meta.vitest
1393
393
  * import { Schema, SchemaRepresentation } from "effect"
1394
394
  *
1395
- * const doc = SchemaRepresentation.fromAST(Schema.String.ast)
1396
- * const jsonSchema = SchemaRepresentation.toJsonSchemaDocument(doc)
1397
- * console.log(jsonSchema.schema.type)
1398
- * // "string"
395
+ * const document = SchemaRepresentation.toRepresentation(Schema.Struct({ name: Schema.String }).ast)
396
+ * const persisted = SchemaRepresentation.toJson(document)
397
+ * const restored = SchemaRepresentation.fromJson(persisted)
398
+ * const schema = SchemaRepresentation.fromRepresentation(restored, { revivers: [] })
399
+ * const Person = Schema.make<Schema.Codec<{ readonly name: string }>>(schema.ast)
400
+ *
401
+ * Schema.decodeUnknownSync(Person)({ name: "Ada" }) // => { name: "Ada" }
1399
402
  * ```
1400
403
  *
1401
- * @see {@link Document}
1402
- * @see {@link toJsonSchemaMultiDocument}
1403
- * @see {@link fromJsonSchemaDocument}
404
+ * @see {@link fromJson} for decoding a persisted document
405
+ * @see {@link fromRepresentations} for multiple roots sharing references
1404
406
  *
1405
407
  * @category transforming
1406
408
  * @since 4.0.0
1407
409
  */
1408
- export const toJsonSchemaDocument = InternalRepresentation.toJsonSchemaDocument;
410
+ export function fromRepresentation(document, options) {
411
+ return InternalFromRepresentation.fromRepresentation(document, options.revivers);
412
+ }
1409
413
  /**
1410
- * Converts a {@link MultiDocument} to a Draft 2020-12 JSON Schema
1411
- * multi-document.
414
+ * Reconstructs multiple runtime schemas from a representation multi-document.
1412
415
  *
1413
416
  * **When to use**
1414
417
  *
1415
- * Use when you need to export related schema representation documents together
1416
- * so shared definitions stay in multi-document JSON Schema form.
418
+ * Use when multiple roots must be rebuilt in one shared reference environment.
1417
419
  *
1418
420
  * **Gotchas**
1419
421
  *
1420
- * JSON Schema generation is best-effort. Some Effect schema representation
1421
- * semantics cannot be represented exactly in JSON Schema, and importing an
1422
- * emitted JSON Schema may produce equivalent approximations rather than the
1423
- * original representation shapes.
422
+ * Only references reachable from a root are revived. Revivers are resolved locally by `id`; none are installed implicitly.
1424
423
  *
1425
- * @see {@link MultiDocument}
1426
- * @see {@link toJsonSchemaDocument}
1427
- * @see {@link fromJsonSchemaMultiDocument}
424
+ * @see {@link fromJsonMultiDocument} for decoding a persisted multi-document
425
+ * @see {@link fromRepresentation} for a single root
1428
426
  *
1429
427
  * @category transforming
1430
428
  * @since 4.0.0
1431
429
  */
1432
- export const toJsonSchemaMultiDocument = InternalRepresentation.toJsonSchemaMultiDocument;
1433
- /**
1434
- * Constructs a {@link Code} value from a runtime expression string and a
1435
- * TypeScript type string.
1436
- *
1437
- * @see {@link Code}
1438
- *
1439
- * @category Code Generation
1440
- * @since 4.0.0
1441
- */
1442
- export function makeCode(runtime, Type) {
1443
- return {
1444
- runtime,
1445
- Type
1446
- };
1447
- }
1448
- /**
1449
- * Generates TypeScript code strings from a {@link MultiDocument}.
1450
- *
1451
- * **When to use**
1452
- *
1453
- * Use when you need to produce source code for Effect Schema definitions from a
1454
- * schema representation `MultiDocument`.
1455
- *
1456
- * **Details**
1457
- *
1458
- * `options.reviver` can customize code generation for {@link Declaration}
1459
- * nodes. Return `undefined` to fall back to the default logic, which uses
1460
- * `generation` annotations or the encoded schema. References are
1461
- * topologically sorted so non-recursive definitions are emitted before their
1462
- * dependents. `$ref` keys are converted to sanitized JavaScript identifiers.
1463
- *
1464
- * **Example** (Generating TypeScript code)
1465
- *
1466
- * ```ts
1467
- * import { Schema, SchemaRepresentation } from "effect"
1468
- *
1469
- * const Person = Schema.Struct({
1470
- * name: Schema.String,
1471
- * age: Schema.Int
1472
- * })
1473
- *
1474
- * const multi = SchemaRepresentation.toMultiDocument(
1475
- * SchemaRepresentation.fromAST(Person.ast)
1476
- * )
1477
- * const codeDoc = SchemaRepresentation.toCodeDocument(multi)
1478
- * console.log(codeDoc.codes[0].runtime)
1479
- * // Schema.Struct({ ... })
1480
- * ```
1481
- *
1482
- * @see {@link CodeDocument}
1483
- * @see {@link MultiDocument}
1484
- * @see {@link Reviver}
1485
- *
1486
- * @category Code Generation
1487
- * @since 4.0.0
1488
- */
1489
- export function toCodeDocument(multiDocument, options) {
1490
- const artifacts = [];
1491
- const ts = topologicalSort(multiDocument.references);
1492
- // Phase 1: Build sanitization map with collision handling
1493
- const sanitizedReferenceMap = new Map();
1494
- const uniqueSanitizedReferences = new Set();
1495
- const referenceCount = new Map();
1496
- // Process all references first to build the map
1497
- const allRefs = [...ts.nonRecursives.map(({
1498
- $ref
1499
- }) => $ref), ...Object.keys(ts.recursives)];
1500
- for (const ref of allRefs) {
1501
- ensureUniqueSanitized(ref);
1502
- }
1503
- // Phase 2: Use the map when processing references
1504
- const nonRecursives = ts.nonRecursives.map(({
1505
- $ref,
1506
- representation
1507
- }) => ({
1508
- $ref: sanitizedReferenceMap.get($ref),
1509
- code: recur(representation)
1510
- }));
1511
- const recursives = Rec.mapEntries(ts.recursives, (representation, $ref) => [sanitizedReferenceMap.get($ref), recur(representation)]);
1512
- const codes = multiDocument.representations.map(recur);
1513
- return {
1514
- codes,
1515
- references: {
1516
- nonRecursives: nonRecursives.filter(({
1517
- $ref
1518
- }) => (referenceCount.get($ref) ?? 0) > 0),
1519
- recursives: Rec.filter(recursives, (_, $ref) => (referenceCount.get($ref) ?? 0) > 0)
1520
- },
1521
- artifacts
1522
- };
1523
- function ensureUniqueSanitized(originalRef) {
1524
- // Check if already mapped (consistency)
1525
- const sanitized = sanitizedReferenceMap.get(originalRef);
1526
- if (sanitized !== undefined) {
1527
- return sanitized;
1528
- }
1529
- // Find unique sanitized name
1530
- const seed = sanitizeJavaScriptIdentifier(originalRef);
1531
- let candidate = seed;
1532
- let suffix = 0;
1533
- while (uniqueSanitizedReferences.has(candidate)) {
1534
- candidate = `${seed}${++suffix}`;
1535
- }
1536
- uniqueSanitizedReferences.add(candidate);
1537
- sanitizedReferenceMap.set(originalRef, candidate);
1538
- return candidate;
1539
- }
1540
- function addSymbol(s) {
1541
- const identifier = ensureUniqueSanitized("_symbol");
1542
- const key = globalThis.Symbol.keyFor(s);
1543
- const description = s.description;
1544
- const generation = key === undefined ? makeCode(`Symbol(${description === undefined ? "" : format(description)})`, `typeof ${identifier}`) : makeCode(`Symbol.for(${format(key)})`, `typeof ${identifier}`);
1545
- artifacts.push({
1546
- _tag: "Symbol",
1547
- identifier,
1548
- generation
1549
- });
1550
- return identifier;
1551
- }
1552
- function addEnum(s) {
1553
- const identifier = ensureUniqueSanitized("_Enum");
1554
- artifacts.push({
1555
- _tag: "Enum",
1556
- identifier,
1557
- generation: makeCode(`enum ${identifier} { ${s.enums.map(([name, value]) => `${format(name)}: ${format(value)}`).join(", ")} }`, `typeof ${identifier}`)
1558
- });
1559
- return identifier;
1560
- }
1561
- function addImport(importDeclaration) {
1562
- if (!artifacts.some(a => a._tag === "Import" && a.importDeclaration === importDeclaration)) {
1563
- artifacts.push({
1564
- _tag: "Import",
1565
- importDeclaration
1566
- });
1567
- }
1568
- }
1569
- function recur(s) {
1570
- const g = on(s);
1571
- switch (s._tag) {
1572
- default:
1573
- return makeCode(g.runtime + toRuntimeAnnotate(s.annotations) + toRuntimeBrand(s.annotations), g.Type + toTypeBrand(s.annotations));
1574
- case "Reference":
1575
- return g;
1576
- case "Declaration":
1577
- case "String":
1578
- case "Number":
1579
- case "BigInt":
1580
- case "Arrays":
1581
- case "Objects":
1582
- case "Suspend":
1583
- return makeCode(g.runtime + toRuntimeAnnotate(s.annotations) + toRuntimeBrand(s.annotations) + toRuntimeChecks(s.checks), g.Type + toTypeBrand(s.annotations) + toTypeChecks(s.checks));
1584
- }
1585
- }
1586
- function on(s) {
1587
- switch (s._tag) {
1588
- case "Declaration":
1589
- {
1590
- // if there is a reviver, use it to generate the generation
1591
- if (options?.reviver !== undefined) {
1592
- // the reviver can return `undefined` to indicate that the generation should be generated by the default logic
1593
- const out = options.reviver(s, recur);
1594
- if (out !== undefined) {
1595
- return out;
1596
- }
1597
- }
1598
- // otherwise, use the generation from the annotations
1599
- const generation = s.annotations?.generation;
1600
- if (Predicate.isObject(generation) && typeof generation.runtime === "string" && typeof generation.Type === "string") {
1601
- const typeParameters = s.typeParameters.map(recur);
1602
- if (typeof generation.importDeclaration === "string") {
1603
- addImport(generation.importDeclaration);
1604
- }
1605
- return makeCode(replacePlaceholders(generation.runtime, typeParameters.map(p => p.runtime)), replacePlaceholders(generation.Type, typeParameters.map(p => p.Type)));
1606
- }
1607
- // otherwise, use the generation from the encoded schema
1608
- return recur(s.encodedSchema);
1609
- }
1610
- case "Reference":
1611
- {
1612
- const sanitized = ensureUniqueSanitized(s.$ref);
1613
- referenceCount.set(sanitized, (referenceCount.get(sanitized) ?? 0) + 1);
1614
- return makeCode(sanitized, sanitized);
1615
- }
1616
- case "Suspend":
1617
- {
1618
- const thunk = recur(s.thunk);
1619
- return makeCode(`Schema.suspend((): Schema.Codec<${thunk.Type}> => ${thunk.runtime})`, thunk.Type);
1620
- }
1621
- case "Null":
1622
- return makeCode(`Schema.Null`, "null");
1623
- case "Undefined":
1624
- return makeCode(`Schema.Undefined`, "undefined");
1625
- case "Void":
1626
- return makeCode(`Schema.Void`, "void");
1627
- case "Never":
1628
- return makeCode(`Schema.Never`, "never");
1629
- case "Unknown":
1630
- return makeCode(`Schema.Unknown`, "unknown");
1631
- case "Any":
1632
- return makeCode(`Schema.Any`, "any");
1633
- case "Number":
1634
- return makeCode(`Schema.Number`, "number");
1635
- case "Boolean":
1636
- return makeCode(`Schema.Boolean`, "boolean");
1637
- case "BigInt":
1638
- return makeCode(`Schema.BigInt`, "bigint");
1639
- case "Symbol":
1640
- return makeCode(`Schema.Symbol`, "symbol");
1641
- case "String":
1642
- {
1643
- const contentMediaType = s.contentMediaType;
1644
- const contentSchema = s.contentSchema;
1645
- if (contentMediaType === "application/json" && contentSchema !== undefined) {
1646
- return makeCode(`Schema.fromJsonString(${recur(contentSchema)})`, "string");
1647
- } else {
1648
- return makeCode(`Schema.String`, "string");
1649
- }
1650
- }
1651
- case "Literal":
1652
- {
1653
- const literal = format(s.literal);
1654
- return makeCode(`Schema.Literal(${literal})`, literal);
1655
- }
1656
- case "UniqueSymbol":
1657
- {
1658
- const identifier = addSymbol(s.symbol);
1659
- return makeCode(`Schema.UniqueSymbol(${identifier})`, `typeof ${identifier}`);
1660
- }
1661
- case "ObjectKeyword":
1662
- return makeCode(`Schema.ObjectKeyword`, "object");
1663
- case "Enum":
1664
- {
1665
- const identifier = addEnum(s);
1666
- return makeCode(`Schema.Enum(${identifier})`, `typeof ${identifier}`);
1667
- }
1668
- case "TemplateLiteral":
1669
- {
1670
- const parts = s.parts.map(recur);
1671
- const type = toTypeParts(s.parts).map(p => "`" + p + "`").join(" | ");
1672
- return makeCode(`Schema.TemplateLiteral([${parts.map(p => p.runtime).join(", ")}])`, type);
1673
- }
1674
- case "Arrays":
1675
- {
1676
- const elements = s.elements.map(e => {
1677
- return {
1678
- isOptional: e.isOptional,
1679
- type: recur(e.type),
1680
- annotations: e.annotations
1681
- };
1682
- });
1683
- const rest = s.rest.map(recur);
1684
- if (Arr.isArrayNonEmpty(rest)) {
1685
- const item = rest[0];
1686
- if (elements.length === 0 && rest.length === 1) {
1687
- return makeCode(`Schema.Array(${item.runtime})`, `ReadonlyArray<${item.Type}>`);
1688
- }
1689
- const post = rest.slice(1);
1690
- return makeCode(`Schema.TupleWithRest(Schema.Tuple([${elements.map(e => toRuntimeIsOptional(e.isOptional, e.type.runtime) + toRuntimeAnnotateKey(e.annotations)).join(", ")}]), [${rest.map(r => r.runtime).join(", ")}])`, `readonly [${elements.map(e => toTypeIsOptional(e.isOptional, e.type.Type)).join(", ")}, ...Array<${item.Type}>${post.length > 0 ? `, ${post.map(p => p.Type).join(", ")}` : ""}]`);
1691
- }
1692
- return makeCode(`Schema.Tuple([${elements.map(e => toRuntimeIsOptional(e.isOptional, e.type.runtime) + toRuntimeAnnotateKey(e.annotations)).join(", ")}])`, `readonly [${elements.map(e => toTypeIsOptional(e.isOptional, e.type.Type)).join(", ")}]`);
1693
- }
1694
- case "Objects":
1695
- {
1696
- const pss = s.propertySignatures.map(p => {
1697
- const isSymbol = typeof p.name === "symbol";
1698
- const name = isSymbol ? addSymbol(p.name) : formatPropertyKey(p.name);
1699
- const nameType = toTypeIsOptional(p.isOptional, toTypeIsMutable(p.isMutable, isSymbol ? `[typeof ${name}]` : name));
1700
- const type = recur(p.type);
1701
- return makeCode(`${isSymbol ? `[${name}]` : name}: ${toRuntimeIsOptional(p.isOptional, toRuntimeIsMutable(p.isMutable, type.runtime))}` + toRuntimeAnnotateKey(p.annotations), `${nameType}: ${type.Type}`);
1702
- });
1703
- const iss = s.indexSignatures.map(is => {
1704
- return {
1705
- parameter: recur(is.parameter),
1706
- type: recur(is.type)
1707
- };
1708
- });
1709
- if (iss.length === 0) {
1710
- // 1) Only properties -> Struct
1711
- return makeCode(`Schema.Struct({ ${pss.map(p => p.runtime).join(", ")} })`, `{ ${pss.map(p => p.Type).join(", ")} }`);
1712
- } else if (pss.length === 0 && iss.length === 1) {
1713
- // 2) Only one index signature and no properties -> Record
1714
- return makeCode(`Schema.Record(${iss[0].parameter.runtime}, ${iss[0].type.runtime})`, `{ readonly [x: ${iss[0].parameter.Type}]: ${iss[0].type.Type} }`);
1715
- } else {
1716
- // 3) Properties + index signatures -> StructWithRest
1717
- return makeCode(`Schema.StructWithRest(Schema.Struct({ ${pss.map(p => p.runtime).join(", ")} }), [${iss.map(is => `Schema.Record(${is.parameter.runtime}, ${is.type.runtime})`).join(", ")}])`, `{ ${pss.map(p => p.Type).join(", ")}, ${iss.map(is => `readonly [x: ${is.parameter.Type}]: ${is.type.Type}`).join(", ")} }`);
1718
- }
1719
- }
1720
- case "Union":
1721
- {
1722
- if (s.types.length === 0) {
1723
- return makeCode("Schema.Never", "never");
1724
- }
1725
- if (s.types.every(t => t._tag === "Literal")) {
1726
- const literals = s.types.map(l => format(l.literal));
1727
- if (literals.length === 1) {
1728
- return makeCode(`Schema.Literal(${literals[0]})`, literals[0]);
1729
- }
1730
- return makeCode(`Schema.Literals([${literals.join(", ")}])`, literals.join(" | "));
1731
- }
1732
- const mode = s.mode === "anyOf" ? "" : `, { mode: "oneOf" }`;
1733
- const types = s.types.map(t => recur(t));
1734
- return makeCode(`Schema.Union([${types.map(t => t.runtime).join(", ")}]${mode})`, types.map(t => t.Type).join(" | "));
1735
- }
1736
- }
1737
- }
1738
- function toTypeBrand(annotations) {
1739
- const brands = collectBrands(annotations);
1740
- if (brands.length === 0) return "";
1741
- addImport(`import type * as Brand from "effect/Brand"`);
1742
- return brands.map(b => ` & Brand.Brand<${format(b)}>`).join("");
1743
- }
1744
- function toTypeChecks(checks) {
1745
- return checks.map(c => toTypeCheck(c)).join("");
1746
- }
1747
- function toTypeCheck(check) {
1748
- switch (check._tag) {
1749
- case "Filter":
1750
- return toTypeBrand(check.annotations);
1751
- case "FilterGroup":
1752
- {
1753
- return toTypeChecks(check.checks);
1754
- }
1755
- }
1756
- }
1757
- function toRuntimeChecks(checks) {
1758
- return checks.map(c => `.check(${toRuntimeCheck(c)})` + toRuntimeBrand(c.annotations)).join("");
1759
- }
1760
- function toRuntimeCheck(check) {
1761
- switch (check._tag) {
1762
- case "Filter":
1763
- return toRuntimeFilter(check);
1764
- case "FilterGroup":
1765
- {
1766
- const a = toRuntimeAnnotations(check.annotations);
1767
- const ca = a === "" ? "" : `, ${a}`;
1768
- return `Schema.makeFilterGroup([${check.checks.map(c => toRuntimeCheck(c)).join(", ")}]${ca})`;
1769
- }
1770
- }
1771
- }
1772
- function toRuntimeFilter(filter) {
1773
- const a = toRuntimeAnnotations(filter.annotations);
1774
- const ca = a === "" ? "" : `, ${a}`;
1775
- switch (filter.meta._tag) {
1776
- case "isTrimmed":
1777
- case "isGUID":
1778
- case "isULID":
1779
- case "isBase64":
1780
- case "isBase64Url":
1781
- case "isUppercased":
1782
- case "isLowercased":
1783
- case "isCapitalized":
1784
- case "isUncapitalized":
1785
- case "isFinite":
1786
- case "isInt":
1787
- case "isUnique":
1788
- case "isDateValid":
1789
- return `Schema.${filter.meta._tag}(${a})`;
1790
- case "isStringFinite":
1791
- case "isStringBigInt":
1792
- case "isStringSymbol":
1793
- case "isPattern":
1794
- return `Schema.${filter.meta._tag}(${toRuntimeRegExp(filter.meta.regExp)}${ca})`;
1795
- case "isMinLength":
1796
- return `Schema.isMinLength(${filter.meta.minLength}${ca})`;
1797
- case "isMaxLength":
1798
- return `Schema.isMaxLength(${filter.meta.maxLength}${ca})`;
1799
- case "isLengthBetween":
1800
- return `Schema.isLengthBetween(${filter.meta.minimum}, ${filter.meta.maximum}${ca})`;
1801
- case "isUUID":
1802
- return `Schema.isUUID(${filter.meta.version}${ca})`;
1803
- case "isStartsWith":
1804
- return `Schema.isStartsWith(${format(filter.meta.startsWith)}${ca})`;
1805
- case "isEndsWith":
1806
- return `Schema.isEndsWith(${format(filter.meta.endsWith)}${ca})`;
1807
- case "isIncludes":
1808
- return `Schema.isIncludes(${format(filter.meta.includes)}${ca})`;
1809
- case "isGreaterThan":
1810
- case "isGreaterThanBigInt":
1811
- case "isGreaterThanDate":
1812
- return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.exclusiveMinimum)}${ca})`;
1813
- case "isGreaterThanOrEqualTo":
1814
- case "isGreaterThanOrEqualToBigInt":
1815
- case "isGreaterThanOrEqualToDate":
1816
- return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.minimum)}${ca})`;
1817
- case "isLessThan":
1818
- case "isLessThanBigInt":
1819
- case "isLessThanDate":
1820
- return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.exclusiveMaximum)}${ca})`;
1821
- case "isLessThanOrEqualTo":
1822
- case "isLessThanOrEqualToBigInt":
1823
- case "isLessThanOrEqualToDate":
1824
- return `Schema.${filter.meta._tag}(${toRuntimeValue(filter.meta.maximum)}${ca})`;
1825
- case "isBetween":
1826
- case "isBetweenBigInt":
1827
- case "isBetweenDate":
1828
- return `Schema.${filter.meta._tag}({ minimum: ${toRuntimeValue(filter.meta.minimum)}, maximum: ${toRuntimeValue(filter.meta.maximum)}, exclusiveMinimum: ${toRuntimeValue(filter.meta.exclusiveMinimum)}, exclusiveMaximum: ${toRuntimeValue(filter.meta.exclusiveMaximum)}${ca})`;
1829
- case "isMultipleOf":
1830
- return `Schema.isMultipleOf(${filter.meta.divisor}${ca})`;
1831
- case "isMinProperties":
1832
- return `Schema.isMinProperties(${filter.meta.minProperties}${ca})`;
1833
- case "isMaxProperties":
1834
- return `Schema.isMaxProperties(${filter.meta.maxProperties}${ca})`;
1835
- case "isPropertiesLengthBetween":
1836
- return `Schema.isPropertiesLengthBetween(${filter.meta.minimum}, ${filter.meta.maximum}${ca})`;
1837
- case "isPropertyNames":
1838
- return `Schema.isPropertyNames(${recur(filter.meta.propertyNames).runtime}${ca})`;
1839
- case "isMinSize":
1840
- return `Schema.isMinSize(${filter.meta.minSize}${ca})`;
1841
- case "isMaxSize":
1842
- return `Schema.isMaxSize(${filter.meta.maxSize}${ca})`;
1843
- case "isSizeBetween":
1844
- return `Schema.isSizeBetween(${filter.meta.minimum}, ${filter.meta.maximum}${ca})`;
1845
- }
1846
- }
1847
- }
1848
- const VALID_ASCII_UPPER_JAVASCRIPT_IDENTIFIER_REGEXP = /^[A-Z_$][A-Za-z0-9_$]*$/;
1849
- /**
1850
- * Converts an arbitrary string into a valid (ASCII) JavaScript identifier
1851
- * starting with an uppercase letter, `$`, or `_`.
1852
- *
1853
- * - Replaces invalid identifier characters with `_`
1854
- * - Uppercases a leading ASCII letter
1855
- * - If the first character is a digit, prefixes `_`
1856
- * - Empty input becomes `_`
1857
- *
1858
- * @internal
1859
- */
1860
- export function sanitizeJavaScriptIdentifier(s) {
1861
- if (s.length === 0) return "_";
1862
- if (VALID_ASCII_UPPER_JAVASCRIPT_IDENTIFIER_REGEXP.test(s)) return s;
1863
- const out = [];
1864
- let needsPrefix = false;
1865
- let i = 0;
1866
- for (const ch of s) {
1867
- if (i === 0) {
1868
- if (ch === "_" || ch === "$" || ch >= "A" && ch <= "Z") {
1869
- out.push(ch);
1870
- } else if (ch >= "a" && ch <= "z") {
1871
- out.push(ch.toUpperCase());
1872
- } else if (ch >= "0" && ch <= "9") {
1873
- out.push(ch);
1874
- needsPrefix = true;
1875
- } else {
1876
- out.push("_");
1877
- }
1878
- } else {
1879
- out.push(isAsciiIdPart(ch) ? ch : "_");
1880
- }
1881
- i++;
1882
- }
1883
- return needsPrefix ? "_" + out.join("") : out.join("");
1884
- }
1885
- function isAsciiIdStart(ch) {
1886
- return ch === "_" || ch === "$" || ch >= "A" && ch <= "Z" || ch >= "a" && ch <= "z";
1887
- }
1888
- function isAsciiIdPart(ch) {
1889
- return isAsciiIdStart(ch) || ch >= "0" && ch <= "9";
1890
- }
1891
- function replacePlaceholders(template, items) {
1892
- let i = 0;
1893
- return template.replace(/\?/g, () => items[i++]);
1894
- }
1895
- function toTypeParts(parts) {
1896
- if (parts.length === 0) {
1897
- return [""];
1898
- }
1899
- const [first, ...rest] = parts;
1900
- const restPatterns = toTypeParts(rest);
1901
- return toTypePart(first).flatMap(f => restPatterns.map(r => f + r));
1902
- }
1903
- function toTypePart(r) {
1904
- switch (r._tag) {
1905
- case "Literal":
1906
- return [globalThis.String(r.literal)];
1907
- case "String":
1908
- return ["${string}"];
1909
- case "Number":
1910
- return ["${number}"];
1911
- case "BigInt":
1912
- return ["${bigint}"];
1913
- case "TemplateLiteral":
1914
- return toTypeParts(r.parts);
1915
- case "Union":
1916
- return r.types.flatMap(toTypePart);
1917
- default:
1918
- return [];
1919
- }
1920
- }
1921
- const toCodeAnnotationsBlacklist = /*#__PURE__*/new Set([...toJsonAnnotationsBlacklist, "typeConstructor", "generation", "brands"]);
1922
- function toRuntimeAnnotations(annotations) {
1923
- if (!annotations) return "";
1924
- const entries = [];
1925
- for (const [key, value] of Object.entries(annotations)) {
1926
- if (toCodeAnnotationsBlacklist.has(key)) continue;
1927
- entries.push(`${formatPropertyKey(key)}: ${format(value)}`);
1928
- }
1929
- if (entries.length === 0) return "";
1930
- return `{ ${entries.join(", ")} }`;
1931
- }
1932
- function toRuntimeBrand(annotations) {
1933
- const brands = collectBrands(annotations);
1934
- return brands.length > 0 ? `.pipe(${brands.map(b => `Schema.brand(${format(b)})`).join(", ")})` : "";
1935
- }
1936
- function toRuntimeAnnotate(annotations) {
1937
- const s = toRuntimeAnnotations(annotations);
1938
- return s === "" ? "" : `.annotate(${s})`;
1939
- }
1940
- function toRuntimeAnnotateKey(annotations) {
1941
- const s = toRuntimeAnnotations(annotations);
1942
- return s === "" ? "" : `.annotateKey(${s})`;
1943
- }
1944
- function toRuntimeIsOptional(isOptional, runtime) {
1945
- return isOptional ? `Schema.optionalKey(${runtime})` : runtime;
1946
- }
1947
- function toTypeIsOptional(isOptional, type) {
1948
- return isOptional ? `${type}?` : type;
1949
- }
1950
- function toRuntimeIsMutable(isMutable, runtime) {
1951
- return isMutable ? `Schema.mutableKey(${runtime})` : runtime;
1952
- }
1953
- function toTypeIsMutable(isMutable, type) {
1954
- return isMutable ? type : `readonly ${type}`;
1955
- }
1956
- function toRuntimeValue(value) {
1957
- if (value instanceof Date) {
1958
- return `new Date(${value.getTime()})`;
1959
- }
1960
- return format(value);
1961
- }
1962
- function toRuntimeRegExp(regExp) {
1963
- const args = [format(regExp.source)];
1964
- const flags = regExp.flags.trim();
1965
- if (flags !== "") {
1966
- args.push(format(flags));
1967
- }
1968
- return `new RegExp(${args.join(", ")})`;
430
+ export function fromRepresentations(document, options) {
431
+ return InternalFromRepresentation.fromRepresentations(document, options.revivers);
1969
432
  }
1970
433
  /**
1971
- * Parses a Draft 2020-12 JSON Schema document into a {@link Document}.
434
+ * Imports a JSON Schema Draft 2020-12 document as a runtime schema.
1972
435
  *
1973
436
  * **When to use**
1974
437
  *
1975
- * Use when you need to import a Draft 2020-12 JSON Schema document into the
1976
- * Effect schema representation system.
1977
- *
1978
- * **Details**
1979
- *
1980
- * `options.onEnter` is an optional hook called on each JSON Schema node before
1981
- * processing, allowing pre-transformation.
438
+ * Use when you need to validate or transform values described by an external JSON Schema document.
1982
439
  *
1983
440
  * **Gotchas**
1984
441
  *
1985
- * JSON Schema import is best-effort. Some JSON Schema constructs do not map
1986
- * exactly to Effect schema representations, and importing a schema previously
1987
- * emitted by `toJsonSchemaDocument` may produce an equivalent approximation
1988
- * rather than the original representation shape.
442
+ * Import is best-effort. Built-in declarations and checks are reconstructed with importer-owned revivers. Pattern
443
+ * constraints reached during translation cause an error by default. Use `patterns: "apply"` only for trusted documents,
444
+ * or `patterns: "ignore"` to weaken validation explicitly. Callback results are used directly, and exceptions raised by a
445
+ * callback pass through unchanged.
1989
446
  *
1990
- * This throws if a `$ref` cannot be resolved within the document's definitions.
1991
- * Circular `$ref`s are detected and cause an error.
1992
- *
1993
- * @see {@link Document}
1994
- * @see {@link toJsonSchemaDocument}
1995
- * @see {@link fromJsonSchemaMultiDocument}
447
+ * @see {@link fromJsonSchemaMultiDocument} for multiple roots sharing definitions
448
+ * @see {@link toRepresentation} for converting the result to a representation document
1996
449
  *
1997
450
  * @category constructors
1998
451
  * @since 4.0.0
1999
452
  */
2000
453
  export function fromJsonSchemaDocument(document, options) {
2001
- const {
2002
- references,
2003
- representations: schemas
2004
- } = fromJsonSchemaMultiDocument({
2005
- dialect: document.dialect,
2006
- schemas: [document.schema],
2007
- definitions: document.definitions
2008
- }, options);
2009
- return {
2010
- representation: schemas[0],
2011
- references
2012
- };
454
+ return InternalFromJsonSchemaDocument.fromJsonSchemaDocument(document, options);
2013
455
  }
2014
456
  /**
2015
- * Parses a Draft 2020-12 JSON Schema multi-document into a
2016
- * {@link MultiDocument}.
457
+ * Imports multiple JSON Schema Draft 2020-12 roots as runtime schemas with shared definitions.
2017
458
  *
2018
459
  * **When to use**
2019
460
  *
2020
- * Use when you need to import a Draft 2020-12 JSON Schema multi-document whose
2021
- * schemas share definitions.
2022
- *
2023
- * **Details**
2024
- *
2025
- * `options.onEnter` is an optional hook called on each JSON Schema node before
2026
- * processing.
461
+ * Use when multiple imported roots share reachable definitions, aliases, or recursion.
2027
462
  *
2028
463
  * **Gotchas**
2029
464
  *
2030
- * JSON Schema import is best-effort. Some JSON Schema constructs do not map
2031
- * exactly to Effect schema representations, and importing schemas previously
2032
- * emitted by `toJsonSchemaMultiDocument` may produce equivalent approximations
2033
- * rather than the original representation shapes.
465
+ * Only definitions reachable from a root are translated. Pattern constraints reached during translation cause an error
466
+ * by default. Use `patterns: "apply"` only for trusted documents, or `patterns: "ignore"` to weaken validation explicitly.
467
+ * Callback results are used directly, and exceptions raised by a callback pass through unchanged.
2034
468
  *
2035
- * This throws if a `$ref` cannot be resolved.
2036
- *
2037
- * @see {@link MultiDocument}
2038
- * @see {@link toJsonSchemaMultiDocument}
2039
- * @see {@link fromJsonSchemaDocument}
469
+ * @see {@link fromJsonSchemaDocument} for a single root
470
+ * @see {@link toRepresentations} for converting the returned schema ASTs to a representation document
2040
471
  *
2041
472
  * @category constructors
2042
473
  * @since 4.0.0
2043
474
  */
2044
475
  export function fromJsonSchemaMultiDocument(document, options) {
2045
- let definitionIdentifier;
2046
- const references = {};
2047
- const resolvedReferences = new Map();
2048
- function resolveReference($ref) {
2049
- const definition = document.definitions[$ref];
2050
- if (definition === undefined) {
2051
- throw new Error(`Reference ${$ref} not found`);
2052
- }
2053
- const resolved = resolvedReferences.get($ref);
2054
- if (resolved === null) {
2055
- throw new Error(`Circular reference detected: ${$ref}`);
2056
- }
2057
- if (resolved !== undefined) return resolved;
2058
- resolvedReferences.set($ref, null);
2059
- const value = recur(definition);
2060
- const out = value._tag === "Reference" ? resolveReference(value.$ref) : value;
2061
- resolvedReferences.set($ref, out);
2062
- return out;
2063
- }
2064
- for (const [identifier, definition] of Object.entries(document.definitions)) {
2065
- definitionIdentifier = identifier;
2066
- references[identifier] = unknownToJson(recur(definition));
2067
- }
2068
- definitionIdentifier = undefined;
2069
- const representations = Arr.map(document.schemas, schema => unknownToJson(recur(schema)));
2070
- return {
2071
- representations,
2072
- references
2073
- };
2074
- function recur(u) {
2075
- if (u === false) return never;
2076
- if (!Predicate.isObject(u)) return unknown;
2077
- let js = options?.onEnter?.(u) ?? u;
2078
- if (Array.isArray(js.type)) {
2079
- if (js.type.every(isType)) {
2080
- const {
2081
- type,
2082
- ...rest
2083
- } = js;
2084
- js = {
2085
- anyOf: type.map(type => ({
2086
- type
2087
- })),
2088
- ...rest
2089
- };
2090
- } else {
2091
- js = {};
2092
- }
2093
- }
2094
- let out = on(js);
2095
- const annotations = collectAnnotations(js);
2096
- if (annotations !== undefined) {
2097
- out = combine(out, {
2098
- _tag: "Unknown",
2099
- annotations
2100
- });
2101
- }
2102
- if (Array.isArray(js.allOf)) {
2103
- out = js.allOf.reduce((acc, curr) => combine(acc, recur(curr)), out);
2104
- }
2105
- if (Array.isArray(js.anyOf)) {
2106
- out = combine({
2107
- _tag: "Union",
2108
- types: js.anyOf.map(type => recur(type)),
2109
- mode: "anyOf"
2110
- }, out);
2111
- }
2112
- if (Array.isArray(js.oneOf)) {
2113
- out = combine({
2114
- _tag: "Union",
2115
- types: js.oneOf.map(type => recur(type)),
2116
- mode: "oneOf"
2117
- }, out);
2118
- }
2119
- return out;
2120
- }
2121
- function on(js) {
2122
- if (typeof js.$ref === "string") {
2123
- const $ref = js.$ref.slice(2).split("/").at(-1);
2124
- if ($ref !== undefined) {
2125
- const reference = {
2126
- _tag: "Reference",
2127
- $ref: unescapeToken($ref)
2128
- };
2129
- if (definitionIdentifier === $ref) {
2130
- return {
2131
- _tag: "Suspend",
2132
- thunk: reference,
2133
- checks: []
2134
- };
2135
- } else {
2136
- return reference;
2137
- }
2138
- }
2139
- } else if ("const" in js) {
2140
- if (isLiteralValue(js.const)) {
2141
- return {
2142
- _tag: "Literal",
2143
- literal: js.const
2144
- };
2145
- } else if (js.const === null) {
2146
- return null_;
2147
- }
2148
- } else if (Array.isArray(js.enum)) {
2149
- const types = [];
2150
- for (const e of js.enum) {
2151
- if (isLiteralValue(e)) {
2152
- types.push({
2153
- _tag: "Literal",
2154
- literal: e
2155
- });
2156
- } else if (e === null) {
2157
- types.push(null_);
2158
- } else {
2159
- types.push(recur(e));
2160
- }
2161
- }
2162
- if (types.length === 1) {
2163
- return types[0];
2164
- } else {
2165
- return {
2166
- _tag: "Union",
2167
- types,
2168
- mode: "anyOf"
2169
- };
2170
- }
2171
- }
2172
- const type = isType(js.type) ? js.type : getType(js);
2173
- if (type !== undefined) {
2174
- switch (type) {
2175
- case "null":
2176
- return null_;
2177
- case "string":
2178
- {
2179
- const checks = collectStringChecks(js);
2180
- if (checks.length > 0) {
2181
- return {
2182
- ...string,
2183
- checks
2184
- };
2185
- }
2186
- return string;
2187
- }
2188
- case "number":
2189
- return {
2190
- _tag: "Number",
2191
- checks: [{
2192
- _tag: "Filter",
2193
- meta: {
2194
- _tag: "isFinite"
2195
- }
2196
- }, ...collectNumberChecks(js)]
2197
- };
2198
- case "integer":
2199
- return {
2200
- _tag: "Number",
2201
- checks: [{
2202
- _tag: "Filter",
2203
- meta: {
2204
- _tag: "isInt"
2205
- }
2206
- }, ...collectNumberChecks(js)]
2207
- };
2208
- case "boolean":
2209
- return boolean;
2210
- case "array":
2211
- {
2212
- const minItems = typeof js.minItems === "number" ? js.minItems : 0;
2213
- const elements = (Array.isArray(js.prefixItems) ? js.prefixItems : []).map((e, i) => ({
2214
- isOptional: i + 1 > minItems,
2215
- type: recur(e)
2216
- }));
2217
- const rest = js.items !== undefined ? [recur(js.items)] : js.prefixItems !== undefined && typeof js.maxItems === "number" ? [] : [unknown];
2218
- return {
2219
- _tag: "Arrays",
2220
- elements,
2221
- rest,
2222
- checks: collectArraysChecks(js)
2223
- };
2224
- }
2225
- case "object":
2226
- {
2227
- return {
2228
- _tag: "Objects",
2229
- propertySignatures: collectProperties(js),
2230
- indexSignatures: collectIndexSignatures(js),
2231
- checks: collectObjectsChecks(js)
2232
- };
2233
- }
2234
- }
2235
- }
2236
- return {
2237
- _tag: "Unknown"
2238
- };
2239
- }
2240
- function collectObjectsChecks(js) {
2241
- const checks = [];
2242
- if (typeof js.minProperties === "number") {
2243
- checks.push({
2244
- _tag: "Filter",
2245
- meta: {
2246
- _tag: "isMinProperties",
2247
- minProperties: js.minProperties
2248
- }
2249
- });
2250
- }
2251
- if (typeof js.maxProperties === "number") {
2252
- checks.push({
2253
- _tag: "Filter",
2254
- meta: {
2255
- _tag: "isMaxProperties",
2256
- maxProperties: js.maxProperties
2257
- }
2258
- });
2259
- }
2260
- if (js.propertyNames !== undefined) {
2261
- const propertyNames = recur(js.propertyNames);
2262
- checks.push({
2263
- _tag: "Filter",
2264
- meta: {
2265
- _tag: "isPropertyNames",
2266
- propertyNames
2267
- }
2268
- });
2269
- }
2270
- return checks;
2271
- }
2272
- function combine(a, b) {
2273
- switch (a._tag) {
2274
- default:
2275
- return never;
2276
- case "Reference":
2277
- return combine(resolveReference(a.$ref), b);
2278
- case "Never":
2279
- return a;
2280
- case "Unknown":
2281
- {
2282
- const resolved = b._tag === "Reference" ? resolveReference(b.$ref) : b;
2283
- return {
2284
- ...resolved,
2285
- ...combineAnnotations(a.annotations, resolved.annotations)
2286
- };
2287
- }
2288
- case "Null":
2289
- case "String":
2290
- case "Number":
2291
- case "Boolean":
2292
- case "Literal":
2293
- case "Arrays":
2294
- case "Objects":
2295
- case "Union":
2296
- break;
2297
- }
2298
- if (b._tag === "Reference") {
2299
- return combine(a, resolveReference(b.$ref));
2300
- }
2301
- if (b._tag === "Unknown") {
2302
- return {
2303
- ...a,
2304
- ...combineAnnotations(a.annotations, b.annotations)
2305
- };
2306
- }
2307
- if (a._tag === "Union") {
2308
- const types = a.types.map(s => combine(s, b)).filter(s => s !== never);
2309
- if (types.length === 0) return never;
2310
- return {
2311
- _tag: "Union",
2312
- types,
2313
- mode: a.mode,
2314
- ...makeAnnotations(a.annotations)
2315
- };
2316
- }
2317
- if (b._tag === "Union") {
2318
- return combine(b, a);
2319
- }
2320
- switch (a._tag) {
2321
- case "Null":
2322
- return b._tag === "Null" ? {
2323
- ...a,
2324
- ...combineAnnotations(a.annotations, b.annotations)
2325
- } : never;
2326
- case "String":
2327
- {
2328
- if (b._tag === "Literal") {
2329
- return satisfiesLiteral(a, b) ? {
2330
- ...b,
2331
- ...combineAnnotations(a.annotations, b.annotations)
2332
- } : never;
2333
- }
2334
- if (b._tag !== "String") return never;
2335
- const checks = combineChecks(a.checks, b.checks, b.annotations);
2336
- return {
2337
- _tag: "String",
2338
- checks: checks ?? a.checks,
2339
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
2340
- };
2341
- }
2342
- case "Number":
2343
- {
2344
- if (b._tag === "Literal") {
2345
- return satisfiesLiteral(a, b) ? {
2346
- ...b,
2347
- ...combineAnnotations(a.annotations, b.annotations)
2348
- } : never;
2349
- }
2350
- if (b._tag !== "Number") return never;
2351
- const checks = combineNumberChecks(a.checks, b.checks, b.annotations);
2352
- return {
2353
- _tag: "Number",
2354
- checks: checks ?? a.checks,
2355
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
2356
- };
2357
- }
2358
- case "Boolean":
2359
- if (b._tag === "Boolean") {
2360
- return {
2361
- _tag: "Boolean",
2362
- ...combineAnnotations(a.annotations, b.annotations)
2363
- };
2364
- }
2365
- return b._tag === "Literal" && typeof b.literal === "boolean" ? {
2366
- ...b,
2367
- ...combineAnnotations(a.annotations, b.annotations)
2368
- } : never;
2369
- case "Literal":
2370
- switch (b._tag) {
2371
- case "Literal":
2372
- return a.literal === b.literal ? {
2373
- ...a,
2374
- ...combineAnnotations(a.annotations, b.annotations)
2375
- } : never;
2376
- case "String":
2377
- case "Number":
2378
- return satisfiesLiteral(b, a) ? {
2379
- ...a,
2380
- ...combineAnnotations(a.annotations, b.annotations)
2381
- } : never;
2382
- case "Boolean":
2383
- return typeof a.literal === "boolean" ? {
2384
- ...a,
2385
- ...combineAnnotations(a.annotations, b.annotations)
2386
- } : never;
2387
- default:
2388
- return never;
2389
- }
2390
- case "Arrays":
2391
- {
2392
- if (b._tag !== "Arrays") return never;
2393
- const arrays = combineArrays(a, b);
2394
- if (arrays === undefined) return never;
2395
- const checks = combineArraysChecks(a.checks, b.checks, b.annotations);
2396
- return {
2397
- _tag: "Arrays",
2398
- elements: arrays.elements,
2399
- rest: arrays.rest,
2400
- checks: checks ?? a.checks,
2401
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
2402
- };
2403
- }
2404
- case "Objects":
2405
- {
2406
- if (b._tag !== "Objects") return never;
2407
- const checks = combineChecks(a.checks, b.checks, b.annotations);
2408
- return {
2409
- _tag: "Objects",
2410
- propertySignatures: combinePropertySignatures(a.propertySignatures, b.propertySignatures),
2411
- indexSignatures: combineIndexSignatures(a.indexSignatures, b.indexSignatures),
2412
- checks: checks ?? a.checks,
2413
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
2414
- };
2415
- }
2416
- default:
2417
- return never;
2418
- }
2419
- }
2420
- function satisfiesPrimitiveCheck(check, value) {
2421
- if (check._tag === "FilterGroup") {
2422
- return check.checks.every(check => satisfiesPrimitiveCheck(check, value));
2423
- }
2424
- const meta = check.meta;
2425
- switch (meta._tag) {
2426
- case "isMinLength":
2427
- return typeof value === "string" && value.length >= meta.minLength;
2428
- case "isMaxLength":
2429
- return typeof value === "string" && value.length <= meta.maxLength;
2430
- case "isPattern":
2431
- return typeof value === "string" && meta.regExp.test(value);
2432
- case "isFinite":
2433
- return typeof value === "number" && globalThis.Number.isFinite(value);
2434
- case "isInt":
2435
- return typeof value === "number" && globalThis.Number.isSafeInteger(value);
2436
- case "isMultipleOf":
2437
- return typeof value === "number" && remainder(value, meta.divisor) === 0;
2438
- case "isGreaterThan":
2439
- return typeof value === "number" && value > meta.exclusiveMinimum;
2440
- case "isGreaterThanOrEqualTo":
2441
- return typeof value === "number" && value >= meta.minimum;
2442
- case "isLessThan":
2443
- return typeof value === "number" && value < meta.exclusiveMaximum;
2444
- case "isLessThanOrEqualTo":
2445
- return typeof value === "number" && value <= meta.maximum;
2446
- default:
2447
- return false;
2448
- }
2449
- }
2450
- function satisfiesLiteral(type, literal) {
2451
- const value = literal.literal;
2452
- if (type._tag === "String" ? typeof value !== "string" : typeof value !== "number") {
2453
- return false;
2454
- }
2455
- return type.checks.every(check => satisfiesPrimitiveCheck(check, value));
2456
- }
2457
- function collectProperties(js) {
2458
- const properties = Predicate.isObject(js.properties) ? js.properties : {};
2459
- const required = Array.isArray(js.required) ? js.required : [];
2460
- required.forEach(key => {
2461
- if (!Object.hasOwn(properties, key)) {
2462
- properties[key] = {};
2463
- }
2464
- });
2465
- return Object.entries(properties).map(([key, v]) => ({
2466
- name: key,
2467
- type: recur(v),
2468
- isOptional: !required.includes(key),
2469
- isMutable: false
2470
- }));
2471
- }
2472
- function collectIndexSignatures(js) {
2473
- const out = [];
2474
- if (Predicate.isObject(js.patternProperties)) {
2475
- for (const [pattern, value] of Object.entries(js.patternProperties)) {
2476
- out.push({
2477
- parameter: recur({
2478
- pattern
2479
- }),
2480
- type: recur(value)
2481
- });
2482
- }
2483
- }
2484
- if (js.additionalProperties === undefined || js.additionalProperties === true) {
2485
- out.push({
2486
- parameter: string,
2487
- type: unknown
2488
- });
2489
- } else if (Predicate.isObject(js.additionalProperties)) {
2490
- out.push({
2491
- parameter: string,
2492
- type: recur(js.additionalProperties)
2493
- });
2494
- }
2495
- return out;
2496
- }
2497
- function combineArrays(a, b) {
2498
- const elements = [];
2499
- const len = Math.max(a.elements.length, b.elements.length);
2500
- for (let i = 0; i < len; i++) {
2501
- const ae = a.elements[i];
2502
- const be = b.elements[i];
2503
- const isOptional = ae?.isOptional !== false && be?.isOptional !== false;
2504
- const at = ae?.type ?? a.rest[0];
2505
- const bt = be?.type ?? b.rest[0];
2506
- if (at === undefined || bt === undefined) {
2507
- return isOptional ? {
2508
- elements,
2509
- rest: []
2510
- } : undefined;
2511
- }
2512
- const type = combine(at, bt);
2513
- if (type === never) {
2514
- return isOptional ? {
2515
- elements,
2516
- rest: []
2517
- } : undefined;
2518
- }
2519
- elements.push({
2520
- isOptional,
2521
- type
2522
- });
2523
- }
2524
- const ar = a.rest[0];
2525
- const br = b.rest[0];
2526
- if (ar === undefined || br === undefined) {
2527
- return {
2528
- elements,
2529
- rest: []
2530
- };
2531
- }
2532
- const rest = combine(ar, br);
2533
- return {
2534
- elements,
2535
- rest: rest === never ? [] : [rest]
2536
- };
2537
- }
2538
- function combinePropertySignatures(a, b) {
2539
- const propertySignatures = [];
2540
- const thatPropertiesMap = {};
2541
- for (const p of b) {
2542
- thatPropertiesMap[p.name] = p;
2543
- }
2544
- const keys = new Set();
2545
- for (const p of a) {
2546
- keys.add(p.name);
2547
- const thatp = thatPropertiesMap[p.name];
2548
- if (thatp) {
2549
- propertySignatures.push({
2550
- name: p.name,
2551
- type: combine(p.type, thatp.type),
2552
- isOptional: p.isOptional && thatp.isOptional,
2553
- isMutable: p.isMutable
2554
- });
2555
- } else {
2556
- propertySignatures.push(p);
2557
- }
2558
- }
2559
- for (const p of b) {
2560
- if (!keys.has(p.name)) propertySignatures.push(p);
2561
- }
2562
- return propertySignatures;
2563
- }
2564
- function combineIndexSignatures(a, b) {
2565
- if (a.length === 0 || b.length === 0) return [];
2566
- const out = [...a];
2567
- for (const is of b) {
2568
- if (is.parameter === string) {
2569
- const i = a.findIndex(is => is.parameter === string);
2570
- if (i !== -1) {
2571
- out[i] = {
2572
- parameter: string,
2573
- type: combine(a[i].type, is.type)
2574
- };
2575
- } else {
2576
- out.push(is);
2577
- }
2578
- } else {
2579
- out.push(is);
2580
- }
2581
- }
2582
- return out;
2583
- }
2584
- function unknownToJson(representation) {
2585
- switch (representation._tag) {
2586
- case "Unknown":
2587
- return representation.annotations === undefined ? json : {
2588
- ...json,
2589
- annotations: {
2590
- ...json.annotations,
2591
- ...representation.annotations
2592
- }
2593
- };
2594
- case "Suspend":
2595
- {
2596
- const thunk = unknownToJson(representation.thunk);
2597
- return thunk === representation.thunk ? representation : {
2598
- ...representation,
2599
- thunk
2600
- };
2601
- }
2602
- case "String":
2603
- {
2604
- if (representation.contentSchema === undefined) return representation;
2605
- const contentSchema = unknownToJson(representation.contentSchema);
2606
- return contentSchema === representation.contentSchema ? representation : {
2607
- ...representation,
2608
- contentSchema
2609
- };
2610
- }
2611
- case "Arrays":
2612
- {
2613
- const elements = SchemaAST.mapOrSame(representation.elements, element => {
2614
- const type = unknownToJson(element.type);
2615
- return type === element.type ? element : {
2616
- ...element,
2617
- type
2618
- };
2619
- });
2620
- const rest = SchemaAST.mapOrSame(representation.rest, unknownToJson);
2621
- return elements === representation.elements && rest === representation.rest ? representation : {
2622
- ...representation,
2623
- elements,
2624
- rest
2625
- };
2626
- }
2627
- case "Objects":
2628
- {
2629
- const propertySignatures = SchemaAST.mapOrSame(representation.propertySignatures, propertySignature => {
2630
- const type = unknownToJson(propertySignature.type);
2631
- return type === propertySignature.type ? propertySignature : {
2632
- ...propertySignature,
2633
- type
2634
- };
2635
- });
2636
- const indexSignatures = SchemaAST.mapOrSame(representation.indexSignatures, indexSignature => {
2637
- const type = unknownToJson(indexSignature.type);
2638
- return type === indexSignature.type ? indexSignature : {
2639
- ...indexSignature,
2640
- type
2641
- };
2642
- });
2643
- return propertySignatures === representation.propertySignatures && indexSignatures === representation.indexSignatures ? representation : {
2644
- ...representation,
2645
- propertySignatures,
2646
- indexSignatures
2647
- };
2648
- }
2649
- case "Union":
2650
- {
2651
- const types = SchemaAST.mapOrSame(representation.types, unknownToJson);
2652
- return types === representation.types ? representation : {
2653
- ...representation,
2654
- types
2655
- };
2656
- }
2657
- default:
2658
- return representation;
2659
- }
2660
- }
2661
- }
2662
- function asChecks(checks, annotations) {
2663
- if (Arr.isReadonlyArrayNonEmpty(checks)) {
2664
- if (annotations !== undefined) {
2665
- if (checks.length === 1) {
2666
- const check = checks[0];
2667
- if (check.annotations === undefined) {
2668
- return [{
2669
- ...check,
2670
- annotations
2671
- }];
2672
- } else {
2673
- return [{
2674
- _tag: "FilterGroup",
2675
- checks,
2676
- annotations
2677
- }];
2678
- }
2679
- } else {
2680
- return [{
2681
- _tag: "FilterGroup",
2682
- checks,
2683
- annotations
2684
- }];
2685
- }
2686
- }
2687
- return checks;
2688
- }
2689
- }
2690
- function combineChecks(a, b, annotations) {
2691
- const checks = asChecks(b, annotations);
2692
- if (checks) {
2693
- return [...a, ...checks];
2694
- }
2695
- }
2696
- function combineNumberChecks(a, b, annotations) {
2697
- if (a.some(c => c._tag === "Filter" && c.meta._tag === "isFinite")) {
2698
- b = b.filter(c => c._tag !== "Filter" || c.meta._tag !== "isFinite");
2699
- }
2700
- if (a.some(c => c._tag === "Filter" && c.meta._tag === "isInt")) {
2701
- b = b.filter(c => c._tag !== "Filter" || c.meta._tag !== "isInt");
2702
- }
2703
- return combineChecks(a, b, annotations);
2704
- }
2705
- function combineArraysChecks(a, b, annotations) {
2706
- if (a.some(c => c._tag === "Filter" && c.meta._tag === "isUnique")) {
2707
- b = b.filter(c => c._tag !== "Filter" || c.meta._tag !== "isUnique");
2708
- }
2709
- return combineChecks(a, b, annotations);
2710
- }
2711
- function makeAnnotations(annotations) {
2712
- return annotations ? {
2713
- annotations
2714
- } : undefined;
2715
- }
2716
- function combineAnnotations(a, b) {
2717
- if (a === undefined) return makeAnnotations(b);
2718
- if (b === undefined) return makeAnnotations(a);
2719
- return {
2720
- annotations: {
2721
- ...a,
2722
- ...b
2723
- }
2724
- }; // TODO: better merge
2725
- }
2726
- function collectStringChecks(js) {
2727
- const checks = [];
2728
- if (typeof js.minLength === "number") {
2729
- checks.push({
2730
- _tag: "Filter",
2731
- meta: {
2732
- _tag: "isMinLength",
2733
- minLength: js.minLength
2734
- }
2735
- });
2736
- }
2737
- if (typeof js.maxLength === "number") {
2738
- checks.push({
2739
- _tag: "Filter",
2740
- meta: {
2741
- _tag: "isMaxLength",
2742
- maxLength: js.maxLength
2743
- }
2744
- });
2745
- }
2746
- if (typeof js.pattern === "string") {
2747
- checks.push({
2748
- _tag: "Filter",
2749
- meta: {
2750
- _tag: "isPattern",
2751
- regExp: new RegExp(js.pattern)
2752
- }
2753
- });
2754
- }
2755
- return checks;
2756
- }
2757
- function collectNumberChecks(js) {
2758
- const checks = [];
2759
- if (typeof js.minimum === "number") {
2760
- checks.push({
2761
- _tag: "Filter",
2762
- meta: {
2763
- _tag: "isGreaterThanOrEqualTo",
2764
- minimum: js.minimum
2765
- }
2766
- });
2767
- }
2768
- if (typeof js.maximum === "number") {
2769
- checks.push({
2770
- _tag: "Filter",
2771
- meta: {
2772
- _tag: "isLessThanOrEqualTo",
2773
- maximum: js.maximum
2774
- }
2775
- });
2776
- }
2777
- if (typeof js.exclusiveMinimum === "number") {
2778
- checks.push({
2779
- _tag: "Filter",
2780
- meta: {
2781
- _tag: "isGreaterThan",
2782
- exclusiveMinimum: js.exclusiveMinimum
2783
- }
2784
- });
2785
- }
2786
- if (typeof js.exclusiveMaximum === "number") {
2787
- checks.push({
2788
- _tag: "Filter",
2789
- meta: {
2790
- _tag: "isLessThan",
2791
- exclusiveMaximum: js.exclusiveMaximum
2792
- }
2793
- });
2794
- }
2795
- if (typeof js.multipleOf === "number") {
2796
- checks.push({
2797
- _tag: "Filter",
2798
- meta: {
2799
- _tag: "isMultipleOf",
2800
- divisor: js.multipleOf
2801
- }
2802
- });
2803
- }
2804
- return checks;
2805
- }
2806
- function collectArraysChecks(js) {
2807
- const checks = [];
2808
- if (js.prefixItems === undefined) {
2809
- if (typeof js.minItems === "number") {
2810
- checks.push({
2811
- _tag: "Filter",
2812
- meta: {
2813
- _tag: "isMinLength",
2814
- minLength: js.minItems
2815
- }
2816
- });
2817
- }
2818
- if (typeof js.maxItems === "number") {
2819
- checks.push({
2820
- _tag: "Filter",
2821
- meta: {
2822
- _tag: "isMaxLength",
2823
- maxLength: js.maxItems
2824
- }
2825
- });
2826
- }
2827
- }
2828
- if (typeof js.uniqueItems === "boolean") {
2829
- checks.push({
2830
- _tag: "Filter",
2831
- meta: {
2832
- _tag: "isUnique"
2833
- }
2834
- });
2835
- }
2836
- return checks;
2837
- }
2838
- const unknown = {
2839
- _tag: "Unknown"
2840
- };
2841
- const json = {
2842
- _tag: "Declaration",
2843
- annotations: {
2844
- expected: "JSON value",
2845
- generation: {
2846
- Type: "Schema.Json",
2847
- runtime: "Schema.Json"
2848
- },
2849
- typeConstructor: {
2850
- _tag: "effect/Json"
2851
- }
2852
- },
2853
- checks: [],
2854
- encodedSchema: unknown,
2855
- typeParameters: []
2856
- };
2857
- const never = {
2858
- _tag: "Never"
2859
- };
2860
- const null_ = {
2861
- _tag: "Null"
2862
- };
2863
- const string = {
2864
- _tag: "String",
2865
- checks: []
2866
- };
2867
- const boolean = {
2868
- _tag: "Boolean"
2869
- };
2870
- function collectAnnotations(schema) {
2871
- const as = {};
2872
- if (typeof schema.title === "string") as.title = schema.title;
2873
- if (typeof schema.description === "string") as.description = schema.description;
2874
- if (schema.default !== undefined) as.default = schema.default;
2875
- if (Array.isArray(schema.examples)) as.examples = schema.examples;
2876
- if (typeof schema.readOnly === "boolean") as.readOnly = schema.readOnly;
2877
- if (typeof schema.writeOnly === "boolean") as.writeOnly = schema.writeOnly;
2878
- if (typeof schema.format === "string") as.format = schema.format;
2879
- if (typeof schema.contentEncoding === "string") as.contentEncoding = schema.contentEncoding;
2880
- if (typeof schema.contentMediaType === "string") as.contentMediaType = schema.contentMediaType;
2881
- return Rec.isEmptyRecord(as) ? undefined : as;
2882
- }
2883
- function isLiteralValue(value) {
2884
- return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
2885
- }
2886
- const stringKeys = ["minLength", "maxLength", "pattern", "format", "contentMediaType", "contentSchema"];
2887
- const numberKeys = ["minimum", "maximum", "exclusiveMinimum", "exclusiveMaximum", "multipleOf"];
2888
- const objectKeys = ["properties", "required", "additionalProperties", "patternProperties", "propertyNames", "minProperties", "maxProperties"];
2889
- const arrayKeys = ["items", "prefixItems", "additionalItems", "minItems", "maxItems", "uniqueItems"];
2890
- function getType(js) {
2891
- if (stringKeys.some(key => js[key] !== undefined)) {
2892
- return "string";
2893
- }
2894
- if (numberKeys.some(key => js[key] !== undefined)) {
2895
- return "number";
2896
- }
2897
- if (objectKeys.some(key => js[key] !== undefined)) {
2898
- return "object";
2899
- }
2900
- if (arrayKeys.some(key => js[key] !== undefined)) {
2901
- return "array";
2902
- }
2903
- }
2904
- const types = ["null", "string", "number", "integer", "boolean", "object", "array"];
2905
- function isType(type) {
2906
- return typeof type === "string" && types.includes(type);
2907
- }
2908
- /** @internal */
2909
- export function topologicalSort(references) {
2910
- const identifiers = Object.keys(references);
2911
- const identifierSet = new Set(identifiers);
2912
- const collectRefs = root => {
2913
- const refs = new Set();
2914
- const visited = new WeakSet();
2915
- const stack = [root];
2916
- while (stack.length > 0) {
2917
- const r = stack.pop();
2918
- if (visited.has(r)) continue;
2919
- visited.add(r);
2920
- if (r._tag === "Reference") {
2921
- if (identifierSet.has(r.$ref)) {
2922
- refs.add(r.$ref);
2923
- }
2924
- }
2925
- // Push nested Representation schemas onto the stack
2926
- switch (r._tag) {
2927
- case "Declaration":
2928
- for (const typeParam of r.typeParameters) stack.push(typeParam);
2929
- stack.push(r.encodedSchema);
2930
- break;
2931
- case "Suspend":
2932
- stack.push(r.thunk);
2933
- break;
2934
- case "String":
2935
- if (r.contentSchema !== undefined) stack.push(r.contentSchema);
2936
- break;
2937
- case "TemplateLiteral":
2938
- for (const part of r.parts) stack.push(part);
2939
- break;
2940
- case "Arrays":
2941
- for (const element of r.elements) stack.push(element.type);
2942
- for (const rest of r.rest) stack.push(rest);
2943
- break;
2944
- case "Objects":
2945
- for (const propertySignature of r.propertySignatures) stack.push(propertySignature.type);
2946
- for (const indexSignature of r.indexSignatures) {
2947
- stack.push(indexSignature.parameter);
2948
- stack.push(indexSignature.type);
2949
- }
2950
- break;
2951
- case "Union":
2952
- for (const type of r.types) stack.push(type);
2953
- break;
2954
- }
2955
- }
2956
- return refs;
2957
- };
2958
- // identifier -> internal identifiers it depends on
2959
- const dependencies = new Map(identifiers.map(id => [id, collectRefs(references[id])]));
2960
- // Mark only nodes that are part of cycles
2961
- const recursive = new Set();
2962
- const state = new Map(); // 0 = new, 1 = visiting, 2 = done
2963
- const stack = [];
2964
- const indexInStack = new Map();
2965
- const dfs = id => {
2966
- const s = state.get(id) ?? 0;
2967
- if (s === 1) {
2968
- const start = indexInStack.get(id);
2969
- if (start !== undefined) {
2970
- for (let i = start; i < stack.length; i++) {
2971
- recursive.add(stack[i]);
2972
- }
2973
- }
2974
- return;
2975
- }
2976
- if (s === 2) return;
2977
- state.set(id, 1);
2978
- indexInStack.set(id, stack.length);
2979
- stack.push(id);
2980
- for (const dep of dependencies.get(id) ?? []) {
2981
- dfs(dep);
2982
- }
2983
- stack.pop();
2984
- indexInStack.delete(id);
2985
- state.set(id, 2);
2986
- };
2987
- for (const id of identifiers) dfs(id);
2988
- // Topologically sort the non-recursive nodes (ignoring edges to recursive nodes)
2989
- const inDegree = new Map();
2990
- const dependents = new Map(); // dep -> nodes that depend on it
2991
- for (const id of identifiers) {
2992
- if (!recursive.has(id)) {
2993
- inDegree.set(id, 0);
2994
- dependents.set(id, new Set());
2995
- }
2996
- }
2997
- for (const [id, deps] of dependencies) {
2998
- if (recursive.has(id)) continue;
2999
- for (const dep of deps) {
3000
- if (recursive.has(dep)) continue;
3001
- inDegree.set(id, (inDegree.get(id) ?? 0) + 1);
3002
- dependents.get(dep)?.add(id);
3003
- }
3004
- }
3005
- const queue = [];
3006
- for (const [id, deg] of inDegree) {
3007
- if (deg === 0) queue.push(id);
3008
- }
3009
- const nonRecursives = [];
3010
- for (let i = 0; i < queue.length; i++) {
3011
- const $ref = queue[i];
3012
- nonRecursives.push({
3013
- $ref,
3014
- representation: references[$ref]
3015
- });
3016
- for (const next of dependents.get($ref) ?? []) {
3017
- const deg = (inDegree.get(next) ?? 0) - 1;
3018
- inDegree.set(next, deg);
3019
- if (deg === 0) queue.push(next);
3020
- }
3021
- }
3022
- const recursives = {};
3023
- for (const $ref of recursive) {
3024
- recursives[$ref] = references[$ref];
3025
- }
3026
- return {
3027
- nonRecursives,
3028
- recursives
3029
- };
476
+ return InternalFromJsonSchemaDocument.fromJsonSchemaMultiDocument(document, options);
3030
477
  }
3031
478
  //# sourceMappingURL=SchemaRepresentation.js.map