effect 4.0.5 → 4.0.7

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 (1177) hide show
  1. package/ai-docs/package.json +1 -1
  2. package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
  3. package/ai-docs/tsconfig.json +3 -1
  4. package/dist/Arbitrary.d.ts +10 -2
  5. package/dist/Arbitrary.d.ts.map +1 -1
  6. package/dist/Arbitrary.js +2 -1
  7. package/dist/Arbitrary.js.map +1 -1
  8. package/dist/Array.d.ts +117 -52
  9. package/dist/Array.d.ts.map +1 -1
  10. package/dist/Array.js +41 -20
  11. package/dist/Array.js.map +1 -1
  12. package/dist/Bytes.d.ts +79 -0
  13. package/dist/Bytes.d.ts.map +1 -0
  14. package/dist/Bytes.js +109 -0
  15. package/dist/Bytes.js.map +1 -0
  16. package/dist/Channel.d.ts +181 -13
  17. package/dist/Channel.d.ts.map +1 -1
  18. package/dist/Channel.js +144 -34
  19. package/dist/Channel.js.map +1 -1
  20. package/dist/ChannelSchema.d.ts.map +1 -1
  21. package/dist/ChannelSchema.js.map +1 -1
  22. package/dist/Chunk.d.ts +39 -21
  23. package/dist/Chunk.d.ts.map +1 -1
  24. package/dist/Chunk.js +26 -17
  25. package/dist/Chunk.js.map +1 -1
  26. package/dist/Config.d.ts.map +1 -1
  27. package/dist/Config.js +8 -3
  28. package/dist/Config.js.map +1 -1
  29. package/dist/ConfigProvider.d.ts.map +1 -1
  30. package/dist/ConfigProvider.js +2 -1
  31. package/dist/ConfigProvider.js.map +1 -1
  32. package/dist/Cron.d.ts +2 -2
  33. package/dist/Cron.d.ts.map +1 -1
  34. package/dist/Cron.js +6 -3
  35. package/dist/Cron.js.map +1 -1
  36. package/dist/Data.d.ts +54 -235
  37. package/dist/Data.d.ts.map +1 -1
  38. package/dist/Data.js.map +1 -1
  39. package/dist/Duration.d.ts.map +1 -1
  40. package/dist/Duration.js +56 -16
  41. package/dist/Duration.js.map +1 -1
  42. package/dist/Effect.d.ts +488 -164
  43. package/dist/Effect.d.ts.map +1 -1
  44. package/dist/Effect.js +204 -38
  45. package/dist/Effect.js.map +1 -1
  46. package/dist/Equal.d.ts.map +1 -1
  47. package/dist/Equal.js +8 -1
  48. package/dist/Equal.js.map +1 -1
  49. package/dist/Equivalence.d.ts +2 -1
  50. package/dist/Equivalence.d.ts.map +1 -1
  51. package/dist/Equivalence.js +12 -8
  52. package/dist/Equivalence.js.map +1 -1
  53. package/dist/Exit.d.ts +27 -12
  54. package/dist/Exit.d.ts.map +1 -1
  55. package/dist/Exit.js +8 -3
  56. package/dist/Exit.js.map +1 -1
  57. package/dist/FiberHandle.d.ts +2 -0
  58. package/dist/FiberHandle.d.ts.map +1 -1
  59. package/dist/FiberHandle.js +9 -4
  60. package/dist/FiberHandle.js.map +1 -1
  61. package/dist/FiberMap.d.ts +2 -0
  62. package/dist/FiberMap.d.ts.map +1 -1
  63. package/dist/FiberMap.js +5 -2
  64. package/dist/FiberMap.js.map +1 -1
  65. package/dist/FileSystem.d.ts +5 -0
  66. package/dist/FileSystem.d.ts.map +1 -1
  67. package/dist/FileSystem.js +3 -0
  68. package/dist/FileSystem.js.map +1 -1
  69. package/dist/Formatter.d.ts.map +1 -1
  70. package/dist/Formatter.js +27 -13
  71. package/dist/Formatter.js.map +1 -1
  72. package/dist/Graph.d.ts.map +1 -1
  73. package/dist/Graph.js.map +1 -1
  74. package/dist/Hash.d.ts.map +1 -1
  75. package/dist/Hash.js +4 -1
  76. package/dist/Hash.js.map +1 -1
  77. package/dist/HashSet.d.ts.map +1 -1
  78. package/dist/HashSet.js.map +1 -1
  79. package/dist/Iterable.d.ts.map +1 -1
  80. package/dist/Iterable.js +18 -17
  81. package/dist/Iterable.js.map +1 -1
  82. package/dist/JsonPatch.js +4 -0
  83. package/dist/JsonPatch.js.map +1 -1
  84. package/dist/JsonSchema.d.ts +9 -3
  85. package/dist/JsonSchema.d.ts.map +1 -1
  86. package/dist/JsonSchema.js +32 -43
  87. package/dist/JsonSchema.js.map +1 -1
  88. package/dist/Layer.d.ts.map +1 -1
  89. package/dist/Layer.js +2 -2
  90. package/dist/Layer.js.map +1 -1
  91. package/dist/ManagedRuntime.d.ts +19 -1
  92. package/dist/ManagedRuntime.d.ts.map +1 -1
  93. package/dist/ManagedRuntime.js +62 -6
  94. package/dist/ManagedRuntime.js.map +1 -1
  95. package/dist/Metric.d.ts +135 -3
  96. package/dist/Metric.d.ts.map +1 -1
  97. package/dist/Metric.js +197 -25
  98. package/dist/Metric.js.map +1 -1
  99. package/dist/MutableHashMap.d.ts.map +1 -1
  100. package/dist/MutableHashMap.js.map +1 -1
  101. package/dist/MutableList.d.ts +5 -2
  102. package/dist/MutableList.d.ts.map +1 -1
  103. package/dist/MutableList.js +7 -5
  104. package/dist/MutableList.js.map +1 -1
  105. package/dist/MutableRef.d.ts.map +1 -1
  106. package/dist/MutableRef.js +7 -0
  107. package/dist/MutableRef.js.map +1 -1
  108. package/dist/Number.js +2 -2
  109. package/dist/Number.js.map +1 -1
  110. package/dist/Optic.d.ts.map +1 -1
  111. package/dist/Optic.js.map +1 -1
  112. package/dist/PartitionedSemaphore.d.ts +2 -1
  113. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  114. package/dist/PartitionedSemaphore.js +22 -12
  115. package/dist/PartitionedSemaphore.js.map +1 -1
  116. package/dist/Path.d.ts.map +1 -1
  117. package/dist/Path.js +8 -1
  118. package/dist/Path.js.map +1 -1
  119. package/dist/Pool.d.ts.map +1 -1
  120. package/dist/Pool.js +77 -27
  121. package/dist/Pool.js.map +1 -1
  122. package/dist/PubSub.d.ts.map +1 -1
  123. package/dist/PubSub.js +17 -13
  124. package/dist/PubSub.js.map +1 -1
  125. package/dist/Queue.d.ts +4 -1
  126. package/dist/Queue.d.ts.map +1 -1
  127. package/dist/Queue.js +4 -1
  128. package/dist/Queue.js.map +1 -1
  129. package/dist/Random.d.ts.map +1 -1
  130. package/dist/Random.js +1 -1
  131. package/dist/Random.js.map +1 -1
  132. package/dist/RcMap.d.ts +12 -7
  133. package/dist/RcMap.d.ts.map +1 -1
  134. package/dist/RcMap.js +9 -6
  135. package/dist/RcMap.js.map +1 -1
  136. package/dist/Record.d.ts +51 -0
  137. package/dist/Record.d.ts.map +1 -1
  138. package/dist/Record.js +17 -0
  139. package/dist/Record.js.map +1 -1
  140. package/dist/Ref.d.ts.map +1 -1
  141. package/dist/Ref.js +8 -0
  142. package/dist/Ref.js.map +1 -1
  143. package/dist/References.d.ts +5 -4
  144. package/dist/References.d.ts.map +1 -1
  145. package/dist/References.js +5 -4
  146. package/dist/References.js.map +1 -1
  147. package/dist/RequestResolver.d.ts +31 -1
  148. package/dist/RequestResolver.d.ts.map +1 -1
  149. package/dist/RequestResolver.js +39 -4
  150. package/dist/RequestResolver.js.map +1 -1
  151. package/dist/Resource.js +1 -1
  152. package/dist/Resource.js.map +1 -1
  153. package/dist/Runtime.d.ts +3 -3
  154. package/dist/Runtime.d.ts.map +1 -1
  155. package/dist/Runtime.js +18 -15
  156. package/dist/Runtime.js.map +1 -1
  157. package/dist/Schedule.d.ts.map +1 -1
  158. package/dist/Schedule.js +1 -1
  159. package/dist/Schedule.js.map +1 -1
  160. package/dist/Schema.d.ts +408 -340
  161. package/dist/Schema.d.ts.map +1 -1
  162. package/dist/Schema.js +370 -47
  163. package/dist/Schema.js.map +1 -1
  164. package/dist/SchemaAST.d.ts +9 -7
  165. package/dist/SchemaAST.d.ts.map +1 -1
  166. package/dist/SchemaAST.js +38 -25
  167. package/dist/SchemaAST.js.map +1 -1
  168. package/dist/SchemaGetter.d.ts +8 -3
  169. package/dist/SchemaGetter.d.ts.map +1 -1
  170. package/dist/SchemaGetter.js +15 -5
  171. package/dist/SchemaGetter.js.map +1 -1
  172. package/dist/SchemaIssue.d.ts +4 -4
  173. package/dist/SchemaIssue.d.ts.map +1 -1
  174. package/dist/SchemaIssue.js +29 -51
  175. package/dist/SchemaIssue.js.map +1 -1
  176. package/dist/SchemaParser.d.ts.map +1 -1
  177. package/dist/SchemaParser.js +48 -22
  178. package/dist/SchemaParser.js.map +1 -1
  179. package/dist/SchemaRepresentation.d.ts +75 -11
  180. package/dist/SchemaRepresentation.d.ts.map +1 -1
  181. package/dist/SchemaRepresentation.js +41 -13
  182. package/dist/SchemaRepresentation.js.map +1 -1
  183. package/dist/SchemaTransformation.d.ts +5 -2
  184. package/dist/SchemaTransformation.d.ts.map +1 -1
  185. package/dist/SchemaTransformation.js +10 -3
  186. package/dist/SchemaTransformation.js.map +1 -1
  187. package/dist/Scope.d.ts +12 -2
  188. package/dist/Scope.d.ts.map +1 -1
  189. package/dist/Scope.js +5 -0
  190. package/dist/Scope.js.map +1 -1
  191. package/dist/ScopedCache.d.ts +10 -7
  192. package/dist/ScopedCache.d.ts.map +1 -1
  193. package/dist/ScopedCache.js +9 -5
  194. package/dist/ScopedCache.js.map +1 -1
  195. package/dist/SemVer.d.ts +1196 -0
  196. package/dist/SemVer.d.ts.map +1 -0
  197. package/dist/SemVer.js +756 -0
  198. package/dist/SemVer.js.map +1 -0
  199. package/dist/SemVerRange.d.ts +559 -0
  200. package/dist/SemVerRange.d.ts.map +1 -0
  201. package/dist/SemVerRange.js +551 -0
  202. package/dist/SemVerRange.js.map +1 -0
  203. package/dist/Semaphore.d.ts.map +1 -1
  204. package/dist/Semaphore.js +54 -35
  205. package/dist/Semaphore.js.map +1 -1
  206. package/dist/Sink.d.ts.map +1 -1
  207. package/dist/Sink.js +13 -4
  208. package/dist/Sink.js.map +1 -1
  209. package/dist/Stream.d.ts +235 -8
  210. package/dist/Stream.d.ts.map +1 -1
  211. package/dist/Stream.js +167 -70
  212. package/dist/Stream.js.map +1 -1
  213. package/dist/String.d.ts +7 -2
  214. package/dist/String.d.ts.map +1 -1
  215. package/dist/String.js +11 -6
  216. package/dist/String.js.map +1 -1
  217. package/dist/TextDiff.d.ts +399 -0
  218. package/dist/TextDiff.d.ts.map +1 -0
  219. package/dist/TextDiff.js +634 -0
  220. package/dist/TextDiff.js.map +1 -0
  221. package/dist/Tracer.d.ts +11 -1
  222. package/dist/Tracer.d.ts.map +1 -1
  223. package/dist/Tracer.js +6 -1
  224. package/dist/Tracer.js.map +1 -1
  225. package/dist/TxHashMap.d.ts.map +1 -1
  226. package/dist/TxHashMap.js.map +1 -1
  227. package/dist/TxHashSet.d.ts.map +1 -1
  228. package/dist/TxHashSet.js.map +1 -1
  229. package/dist/ai/AiError.d.ts +68 -4
  230. package/dist/ai/AiError.d.ts.map +1 -1
  231. package/dist/ai/AiError.js +50 -2
  232. package/dist/ai/AiError.js.map +1 -1
  233. package/dist/ai/Chat.d.ts +1 -2
  234. package/dist/ai/Chat.d.ts.map +1 -1
  235. package/dist/ai/Chat.js +6 -3
  236. package/dist/ai/Chat.js.map +1 -1
  237. package/dist/ai/Decision.d.ts +46 -1
  238. package/dist/ai/Decision.d.ts.map +1 -1
  239. package/dist/ai/Decision.js.map +1 -1
  240. package/dist/ai/DecisionModel.d.ts +129 -11
  241. package/dist/ai/DecisionModel.d.ts.map +1 -1
  242. package/dist/ai/DecisionModel.js +182 -94
  243. package/dist/ai/DecisionModel.js.map +1 -1
  244. package/dist/ai/EmbeddingModel.d.ts +10 -0
  245. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  246. package/dist/ai/EmbeddingModel.js +21 -7
  247. package/dist/ai/EmbeddingModel.js.map +1 -1
  248. package/dist/ai/LanguageModel.d.ts.map +1 -1
  249. package/dist/ai/LanguageModel.js +9 -0
  250. package/dist/ai/LanguageModel.js.map +1 -1
  251. package/dist/ai/McpClient.d.ts +289 -0
  252. package/dist/ai/McpClient.d.ts.map +1 -0
  253. package/dist/ai/McpClient.js +819 -0
  254. package/dist/ai/McpClient.js.map +1 -0
  255. package/dist/ai/McpClientError.d.ts +254 -0
  256. package/dist/ai/McpClientError.d.ts.map +1 -0
  257. package/dist/ai/McpClientError.js +260 -0
  258. package/dist/ai/McpClientError.js.map +1 -0
  259. package/dist/ai/McpProtocol.d.ts +2 -2
  260. package/dist/ai/McpProtocol.d.ts.map +1 -1
  261. package/dist/ai/McpSchema.d.ts +258 -125
  262. package/dist/ai/McpSchema.d.ts.map +1 -1
  263. package/dist/ai/McpSchema.js +94 -24
  264. package/dist/ai/McpSchema.js.map +1 -1
  265. package/dist/ai/McpServer.d.ts.map +1 -1
  266. package/dist/ai/McpServer.js +46 -37
  267. package/dist/ai/McpServer.js.map +1 -1
  268. package/dist/ai/Prompt.d.ts +74 -20
  269. package/dist/ai/Prompt.d.ts.map +1 -1
  270. package/dist/ai/Prompt.js +61 -1
  271. package/dist/ai/Prompt.js.map +1 -1
  272. package/dist/ai/Response.d.ts +160 -3
  273. package/dist/ai/Response.d.ts.map +1 -1
  274. package/dist/ai/Response.js +39 -37
  275. package/dist/ai/Response.js.map +1 -1
  276. package/dist/ai/Tool.d.ts +36 -4
  277. package/dist/ai/Tool.d.ts.map +1 -1
  278. package/dist/ai/Tool.js +5 -2
  279. package/dist/ai/Tool.js.map +1 -1
  280. package/dist/ai/Toolkit.d.ts +48 -1
  281. package/dist/ai/Toolkit.d.ts.map +1 -1
  282. package/dist/ai/Toolkit.js +73 -13
  283. package/dist/ai/Toolkit.js.map +1 -1
  284. package/dist/ai/index.d.ts +10 -0
  285. package/dist/ai/index.d.ts.map +1 -1
  286. package/dist/ai/index.js +10 -0
  287. package/dist/ai/index.js.map +1 -1
  288. package/dist/ai/internal/mcpCore.js.map +1 -1
  289. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  290. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  291. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  292. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  293. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  294. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  295. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  296. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  297. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  298. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  299. package/dist/ai/internal/mcpProtocol.js +16 -2
  300. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  301. package/dist/ai/internal/mcpRuntime.js +3 -4
  302. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  303. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  304. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  305. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  306. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  307. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  308. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  309. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  310. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  311. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  312. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  313. package/dist/cli/Argument.d.ts +15 -0
  314. package/dist/cli/Argument.d.ts.map +1 -1
  315. package/dist/cli/Argument.js +5 -0
  316. package/dist/cli/Argument.js.map +1 -1
  317. package/dist/cli/CliError.d.ts +120 -2
  318. package/dist/cli/CliError.d.ts.map +1 -1
  319. package/dist/cli/CliError.js +106 -5
  320. package/dist/cli/CliError.js.map +1 -1
  321. package/dist/cli/CliOutput.d.ts +155 -6
  322. package/dist/cli/CliOutput.d.ts.map +1 -1
  323. package/dist/cli/CliOutput.js +62 -6
  324. package/dist/cli/CliOutput.js.map +1 -1
  325. package/dist/cli/Command.d.ts +310 -18
  326. package/dist/cli/Command.d.ts.map +1 -1
  327. package/dist/cli/Command.js +164 -33
  328. package/dist/cli/Command.js.map +1 -1
  329. package/dist/cli/Completions.d.ts +63 -0
  330. package/dist/cli/Completions.d.ts.map +1 -1
  331. package/dist/cli/Completions.js +49 -9
  332. package/dist/cli/Completions.js.map +1 -1
  333. package/dist/cli/Flag.d.ts +130 -0
  334. package/dist/cli/Flag.d.ts.map +1 -1
  335. package/dist/cli/Flag.js +61 -0
  336. package/dist/cli/Flag.js.map +1 -1
  337. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  338. package/dist/cli/GlobalFlag.js +14 -6
  339. package/dist/cli/GlobalFlag.js.map +1 -1
  340. package/dist/cli/Param.d.ts +116 -0
  341. package/dist/cli/Param.d.ts.map +1 -1
  342. package/dist/cli/Param.js +77 -2
  343. package/dist/cli/Param.js.map +1 -1
  344. package/dist/cli/TerminalCapabilities.d.ts +85 -0
  345. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  346. package/dist/cli/TerminalCapabilities.js +124 -0
  347. package/dist/cli/TerminalCapabilities.js.map +1 -0
  348. package/dist/cli/index.d.ts +5 -0
  349. package/dist/cli/index.d.ts.map +1 -1
  350. package/dist/cli/index.js +5 -0
  351. package/dist/cli/index.js.map +1 -1
  352. package/dist/cli/internal/command.d.ts +2 -1
  353. package/dist/cli/internal/command.d.ts.map +1 -1
  354. package/dist/cli/internal/command.js +5 -2
  355. package/dist/cli/internal/command.js.map +1 -1
  356. package/dist/cli/internal/completions/bash.js +77 -30
  357. package/dist/cli/internal/completions/bash.js.map +1 -1
  358. package/dist/cli/internal/completions/descriptor.js +9 -1
  359. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  360. package/dist/cli/internal/completions/fish.js +10 -8
  361. package/dist/cli/internal/completions/fish.js.map +1 -1
  362. package/dist/cli/internal/completions/powershell.js +18 -9
  363. package/dist/cli/internal/completions/powershell.js.map +1 -1
  364. package/dist/cli/internal/completions/zsh.js +8 -5
  365. package/dist/cli/internal/completions/zsh.js.map +1 -1
  366. package/dist/cli/internal/formatter.d.ts +2 -0
  367. package/dist/cli/internal/formatter.d.ts.map +1 -0
  368. package/dist/cli/internal/formatter.js +15 -0
  369. package/dist/cli/internal/formatter.js.map +1 -0
  370. package/dist/cli/internal/lexer.js +24 -10
  371. package/dist/cli/internal/lexer.js.map +1 -1
  372. package/dist/cli/internal/parser.js +24 -12
  373. package/dist/cli/internal/parser.js.map +1 -1
  374. package/dist/cluster/ClusterCron.d.ts +29 -1
  375. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  376. package/dist/cluster/ClusterCron.js +64 -32
  377. package/dist/cluster/ClusterCron.js.map +1 -1
  378. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  379. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  380. package/dist/cluster/ClusterMetrics.js +151 -7
  381. package/dist/cluster/ClusterMetrics.js.map +1 -1
  382. package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
  383. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  384. package/dist/cluster/ClusterWorkflowEngine.js +82 -21
  385. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  386. package/dist/cluster/Entity.d.ts +2 -0
  387. package/dist/cluster/Entity.d.ts.map +1 -1
  388. package/dist/cluster/Entity.js.map +1 -1
  389. package/dist/cluster/MessageStorage.d.ts +44 -45
  390. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  391. package/dist/cluster/MessageStorage.js +6 -7
  392. package/dist/cluster/MessageStorage.js.map +1 -1
  393. package/dist/cluster/Runners.d.ts.map +1 -1
  394. package/dist/cluster/Runners.js +54 -15
  395. package/dist/cluster/Runners.js.map +1 -1
  396. package/dist/cluster/Sharding.d.ts +1 -0
  397. package/dist/cluster/Sharding.d.ts.map +1 -1
  398. package/dist/cluster/Sharding.js +155 -52
  399. package/dist/cluster/Sharding.js.map +1 -1
  400. package/dist/cluster/ShardingConfig.d.ts +30 -0
  401. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  402. package/dist/cluster/ShardingConfig.js +4 -0
  403. package/dist/cluster/ShardingConfig.js.map +1 -1
  404. package/dist/cluster/Snowflake.d.ts.map +1 -1
  405. package/dist/cluster/Snowflake.js +3 -7
  406. package/dist/cluster/Snowflake.js.map +1 -1
  407. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  408. package/dist/cluster/SqlMessageStorage.js +40 -50
  409. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  410. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  411. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  412. package/dist/cluster/SqlRunnerStorage.js +97 -43
  413. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  414. package/dist/cluster/internal/entityManager.js +119 -28
  415. package/dist/cluster/internal/entityManager.js.map +1 -1
  416. package/dist/devtools/DevTools.d.ts +3 -2
  417. package/dist/devtools/DevTools.d.ts.map +1 -1
  418. package/dist/devtools/DevTools.js +3 -2
  419. package/dist/devtools/DevTools.js.map +1 -1
  420. package/dist/devtools/DevToolsClient.d.ts +11 -0
  421. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  422. package/dist/devtools/DevToolsClient.js +33 -4
  423. package/dist/devtools/DevToolsClient.js.map +1 -1
  424. package/dist/encoding/Base64.js +36 -0
  425. package/dist/encoding/Base64.js.map +1 -1
  426. package/dist/encoding/Base64Url.d.ts +29 -0
  427. package/dist/encoding/Base64Url.d.ts.map +1 -1
  428. package/dist/encoding/Base64Url.js +29 -0
  429. package/dist/encoding/Base64Url.js.map +1 -1
  430. package/dist/encoding/Ini.d.ts.map +1 -1
  431. package/dist/encoding/Ini.js +3 -0
  432. package/dist/encoding/Ini.js.map +1 -1
  433. package/dist/encoding/JsonArray.d.ts +270 -0
  434. package/dist/encoding/JsonArray.d.ts.map +1 -0
  435. package/dist/encoding/JsonArray.js +691 -0
  436. package/dist/encoding/JsonArray.js.map +1 -0
  437. package/dist/encoding/Ndjson.d.ts +43 -4
  438. package/dist/encoding/Ndjson.d.ts.map +1 -1
  439. package/dist/encoding/Ndjson.js +169 -18
  440. package/dist/encoding/Ndjson.js.map +1 -1
  441. package/dist/encoding/SchemaBinary.d.ts +9 -1
  442. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  443. package/dist/encoding/SchemaBinary.js +12 -19
  444. package/dist/encoding/SchemaBinary.js.map +1 -1
  445. package/dist/encoding/Sse.d.ts.map +1 -1
  446. package/dist/encoding/Sse.js +3 -3
  447. package/dist/encoding/Sse.js.map +1 -1
  448. package/dist/encoding/Tar.d.ts +309 -0
  449. package/dist/encoding/Tar.d.ts.map +1 -0
  450. package/dist/encoding/Tar.js +1182 -0
  451. package/dist/encoding/Tar.js.map +1 -0
  452. package/dist/encoding/Toml.d.ts.map +1 -1
  453. package/dist/encoding/Toml.js +24 -19
  454. package/dist/encoding/Toml.js.map +1 -1
  455. package/dist/encoding/Xml.d.ts +464 -0
  456. package/dist/encoding/Xml.d.ts.map +1 -0
  457. package/dist/encoding/Xml.js +1619 -0
  458. package/dist/encoding/Xml.js.map +1 -0
  459. package/dist/encoding/Yaml.d.ts +6 -2
  460. package/dist/encoding/Yaml.d.ts.map +1 -1
  461. package/dist/encoding/Yaml.js +97 -34
  462. package/dist/encoding/Yaml.js.map +1 -1
  463. package/dist/encoding/Zip.d.ts +413 -0
  464. package/dist/encoding/Zip.d.ts.map +1 -0
  465. package/dist/encoding/Zip.js +1255 -0
  466. package/dist/encoding/Zip.js.map +1 -0
  467. package/dist/encoding/index.d.ts +20 -0
  468. package/dist/encoding/index.d.ts.map +1 -1
  469. package/dist/encoding/index.js +20 -0
  470. package/dist/encoding/index.js.map +1 -1
  471. package/dist/eventlog/EventJournal.d.ts +90 -5
  472. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  473. package/dist/eventlog/EventJournal.js +488 -228
  474. package/dist/eventlog/EventJournal.js.map +1 -1
  475. package/dist/eventlog/EventLog.d.ts +180 -12
  476. package/dist/eventlog/EventLog.d.ts.map +1 -1
  477. package/dist/eventlog/EventLog.js +394 -146
  478. package/dist/eventlog/EventLog.js.map +1 -1
  479. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  480. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  481. package/dist/eventlog/EventLogEncryption.js +97 -38
  482. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  483. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  484. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  485. package/dist/eventlog/EventLogMessage.js +45 -11
  486. package/dist/eventlog/EventLogMessage.js.map +1 -1
  487. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  488. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  489. package/dist/eventlog/EventLogRemote.js +51 -14
  490. package/dist/eventlog/EventLogRemote.js.map +1 -1
  491. package/dist/eventlog/EventLogServer.d.ts +46 -3
  492. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  493. package/dist/eventlog/EventLogServer.js +119 -19
  494. package/dist/eventlog/EventLogServer.js.map +1 -1
  495. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  496. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  497. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  498. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  499. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  500. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  501. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  502. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  503. package/dist/eventlog/EventRow.d.ts +288 -0
  504. package/dist/eventlog/EventRow.d.ts.map +1 -0
  505. package/dist/eventlog/EventRow.js +435 -0
  506. package/dist/eventlog/EventRow.js.map +1 -0
  507. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  508. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  509. package/dist/eventlog/SqlEventJournal.js +417 -169
  510. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  511. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  512. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  513. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  514. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  515. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  516. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  517. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  518. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  519. package/dist/eventlog/index.d.ts +5 -0
  520. package/dist/eventlog/index.d.ts.map +1 -1
  521. package/dist/eventlog/index.js +5 -0
  522. package/dist/eventlog/index.js.map +1 -1
  523. package/dist/eventlog/internal/conflicts.d.ts +46 -0
  524. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  525. package/dist/eventlog/internal/conflicts.js +89 -0
  526. package/dist/eventlog/internal/conflicts.js.map +1 -0
  527. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  528. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  529. package/dist/graphql/GraphQLClientError.js +4 -18
  530. package/dist/graphql/GraphQLClientError.js.map +1 -1
  531. package/dist/graphql/GraphQLProtocol.d.ts +12 -9
  532. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  533. package/dist/graphql/GraphQLProtocol.js +4 -3
  534. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  535. package/dist/graphql/GraphQLResolver.d.ts +2 -0
  536. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  537. package/dist/graphql/GraphQLResolver.js +74 -32
  538. package/dist/graphql/GraphQLResolver.js.map +1 -1
  539. package/dist/http/Cookies.d.ts.map +1 -1
  540. package/dist/http/Cookies.js +10 -9
  541. package/dist/http/Cookies.js.map +1 -1
  542. package/dist/http/FetchHttpClient.d.ts +8 -1
  543. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  544. package/dist/http/FetchHttpClient.js +51 -4
  545. package/dist/http/FetchHttpClient.js.map +1 -1
  546. package/dist/http/FindMyWay/internal/router.js +10 -0
  547. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  548. package/dist/http/Headers.d.ts +227 -0
  549. package/dist/http/Headers.d.ts.map +1 -1
  550. package/dist/http/Headers.js +261 -0
  551. package/dist/http/Headers.js.map +1 -1
  552. package/dist/http/HttpClient.d.ts +516 -0
  553. package/dist/http/HttpClient.d.ts.map +1 -1
  554. package/dist/http/HttpClient.js +286 -23
  555. package/dist/http/HttpClient.js.map +1 -1
  556. package/dist/http/HttpClientError.d.ts +8 -1
  557. package/dist/http/HttpClientError.d.ts.map +1 -1
  558. package/dist/http/HttpClientError.js +37 -1
  559. package/dist/http/HttpClientError.js.map +1 -1
  560. package/dist/http/HttpClientRequest.d.ts +127 -3
  561. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  562. package/dist/http/HttpClientRequest.js +45 -3
  563. package/dist/http/HttpClientRequest.js.map +1 -1
  564. package/dist/http/HttpClientResponse.d.ts +53 -0
  565. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  566. package/dist/http/HttpClientResponse.js +47 -0
  567. package/dist/http/HttpClientResponse.js.map +1 -1
  568. package/dist/http/HttpEffect.d.ts +6 -2
  569. package/dist/http/HttpEffect.d.ts.map +1 -1
  570. package/dist/http/HttpEffect.js +21 -17
  571. package/dist/http/HttpEffect.js.map +1 -1
  572. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  573. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  574. package/dist/http/HttpIncomingMessage.js +3 -23
  575. package/dist/http/HttpIncomingMessage.js.map +1 -1
  576. package/dist/http/HttpMiddleware.d.ts +119 -2
  577. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  578. package/dist/http/HttpMiddleware.js +173 -29
  579. package/dist/http/HttpMiddleware.js.map +1 -1
  580. package/dist/http/HttpRouter.d.ts.map +1 -1
  581. package/dist/http/HttpRouter.js +9 -3
  582. package/dist/http/HttpRouter.js.map +1 -1
  583. package/dist/http/HttpServerError.d.ts +5 -2
  584. package/dist/http/HttpServerError.d.ts.map +1 -1
  585. package/dist/http/HttpServerError.js +7 -5
  586. package/dist/http/HttpServerError.js.map +1 -1
  587. package/dist/http/HttpServerRequest.d.ts +30 -5
  588. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  589. package/dist/http/HttpServerRequest.js +109 -20
  590. package/dist/http/HttpServerRequest.js.map +1 -1
  591. package/dist/http/HttpServerResponse.d.ts +17 -8
  592. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  593. package/dist/http/HttpServerResponse.js +37 -21
  594. package/dist/http/HttpServerResponse.js.map +1 -1
  595. package/dist/http/HttpStaticServer.d.ts +0 -12
  596. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  597. package/dist/http/HttpStaticServer.js +65 -24
  598. package/dist/http/HttpStaticServer.js.map +1 -1
  599. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  600. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  601. package/dist/http/MultipartParser/internal/contentType.js +89 -7
  602. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  603. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  604. package/dist/http/MultipartParser/internal/headers.js +4 -12
  605. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  606. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  607. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  608. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  609. package/dist/http/Url.d.ts.map +1 -1
  610. package/dist/http/Url.js +6 -1
  611. package/dist/http/Url.js.map +1 -1
  612. package/dist/http/UrlParams.d.ts +3 -1
  613. package/dist/http/UrlParams.d.ts.map +1 -1
  614. package/dist/http/UrlParams.js +4 -2
  615. package/dist/http/UrlParams.js.map +1 -1
  616. package/dist/http/internal/compression.js +4 -5
  617. package/dist/http/internal/compression.js.map +1 -1
  618. package/dist/http/internal/decompression.js +20 -11
  619. package/dist/http/internal/decompression.js.map +1 -1
  620. package/dist/http/internal/httpBody.js +8 -1
  621. package/dist/http/internal/httpBody.js.map +1 -1
  622. package/dist/http/internal/lazyStream.d.ts +2 -0
  623. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  624. package/dist/http/internal/lazyStream.js +18 -0
  625. package/dist/http/internal/lazyStream.js.map +1 -0
  626. package/dist/http/internal/requestState.d.ts +2 -0
  627. package/dist/http/internal/requestState.d.ts.map +1 -0
  628. package/dist/http/internal/requestState.js +28 -0
  629. package/dist/http/internal/requestState.js.map +1 -0
  630. package/dist/http/internal/urlParams.js +25 -0
  631. package/dist/http/internal/urlParams.js.map +1 -1
  632. package/dist/http/internal/webResponse.d.ts +2 -0
  633. package/dist/http/internal/webResponse.d.ts.map +1 -0
  634. package/dist/http/internal/webResponse.js +12 -0
  635. package/dist/http/internal/webResponse.js.map +1 -0
  636. package/dist/http-api/HttpApi.d.ts +3 -6
  637. package/dist/http-api/HttpApi.d.ts.map +1 -1
  638. package/dist/http-api/HttpApi.js +4 -7
  639. package/dist/http-api/HttpApi.js.map +1 -1
  640. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  641. package/dist/http-api/HttpApiBuilder.js +142 -23
  642. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  643. package/dist/http-api/HttpApiClient.d.ts +99 -4
  644. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  645. package/dist/http-api/HttpApiClient.js +218 -60
  646. package/dist/http-api/HttpApiClient.js.map +1 -1
  647. package/dist/http-api/HttpApiEndpoint.d.ts +72 -29
  648. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  649. package/dist/http-api/HttpApiEndpoint.js +140 -14
  650. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  651. package/dist/http-api/HttpApiError.d.ts +58 -0
  652. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  653. package/dist/http-api/HttpApiError.js +38 -12
  654. package/dist/http-api/HttpApiError.js.map +1 -1
  655. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  656. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  657. package/dist/http-api/HttpApiScalar.js +6 -3
  658. package/dist/http-api/HttpApiScalar.js.map +1 -1
  659. package/dist/http-api/HttpApiSchema.d.ts +242 -13
  660. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  661. package/dist/http-api/HttpApiSchema.js +149 -5
  662. package/dist/http-api/HttpApiSchema.js.map +1 -1
  663. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  664. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  665. package/dist/http-api/HttpApiSwagger.js +14 -4
  666. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  667. package/dist/http-api/HttpApiTest.d.ts +13 -2
  668. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  669. package/dist/http-api/HttpApiTest.js +33 -11
  670. package/dist/http-api/HttpApiTest.js.map +1 -1
  671. package/dist/http-api/OpenApi.d.ts +17 -3
  672. package/dist/http-api/OpenApi.d.ts.map +1 -1
  673. package/dist/http-api/OpenApi.js +81 -47
  674. package/dist/http-api/OpenApi.js.map +1 -1
  675. package/dist/http-api/internal/path.js +35 -10
  676. package/dist/http-api/internal/path.js.map +1 -1
  677. package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
  678. package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
  679. package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
  680. package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
  681. package/dist/index.d.ts +20 -0
  682. package/dist/index.d.ts.map +1 -1
  683. package/dist/index.js +20 -0
  684. package/dist/index.js.map +1 -1
  685. package/dist/internal/arbitrary/runner.d.ts.map +1 -1
  686. package/dist/internal/arbitrary/runner.js +120 -44
  687. package/dist/internal/arbitrary/runner.js.map +1 -1
  688. package/dist/internal/core.js +3 -1
  689. package/dist/internal/core.js.map +1 -1
  690. package/dist/internal/dateTime.js +19 -7
  691. package/dist/internal/dateTime.js.map +1 -1
  692. package/dist/internal/effect.js +106 -87
  693. package/dist/internal/effect.js.map +1 -1
  694. package/dist/internal/equal.js +14 -0
  695. package/dist/internal/equal.js.map +1 -1
  696. package/dist/internal/hashMap.js +2 -2
  697. package/dist/internal/hashMap.js.map +1 -1
  698. package/dist/internal/hydration.d.ts +2 -0
  699. package/dist/internal/hydration.d.ts.map +1 -0
  700. package/dist/internal/hydration.js +15 -0
  701. package/dist/internal/hydration.js.map +1 -0
  702. package/dist/internal/inflate.d.ts +2 -0
  703. package/dist/internal/inflate.d.ts.map +1 -0
  704. package/dist/internal/inflate.js +680 -0
  705. package/dist/internal/inflate.js.map +1 -0
  706. package/dist/internal/jsonSchema.d.ts +2 -0
  707. package/dist/internal/jsonSchema.d.ts.map +1 -0
  708. package/dist/internal/jsonSchema.js +28 -0
  709. package/dist/internal/jsonSchema.js.map +1 -0
  710. package/dist/internal/matcher.js +1 -1
  711. package/dist/internal/matcher.js.map +1 -1
  712. package/dist/internal/record.js +6 -0
  713. package/dist/internal/record.js.map +1 -1
  714. package/dist/internal/request.js +20 -7
  715. package/dist/internal/request.js.map +1 -1
  716. package/dist/internal/schedule.js +17 -22
  717. package/dist/internal/schedule.js.map +1 -1
  718. package/dist/internal/schema/compilerRegistry.js +4 -1
  719. package/dist/internal/schema/compilerRegistry.js.map +1 -1
  720. package/dist/internal/schema/content.d.ts +2 -0
  721. package/dist/internal/schema/content.d.ts.map +1 -0
  722. package/dist/internal/schema/content.js +13 -0
  723. package/dist/internal/schema/content.js.map +1 -0
  724. package/dist/internal/schema/fromJsonSchemaDocument.js +253 -255
  725. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  726. package/dist/internal/schema/fromRepresentation.js +2 -1
  727. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  728. package/dist/internal/schema/interpreter.js +51 -36
  729. package/dist/internal/schema/interpreter.js.map +1 -1
  730. package/dist/internal/schema/standardSchema.js +42 -35
  731. package/dist/internal/schema/standardSchema.js.map +1 -1
  732. package/dist/internal/schema/toCodeDocument.js +10 -5
  733. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  734. package/dist/internal/schema/toCodec.js +99 -17
  735. package/dist/internal/schema/toCodec.js.map +1 -1
  736. package/dist/internal/schema/toFormatter.js +5 -5
  737. package/dist/internal/schema/toFormatter.js.map +1 -1
  738. package/dist/internal/schema/toJsonSchemaDocument.js +257 -170
  739. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  740. package/dist/internal/schema/toRepresentation.js +107 -129
  741. package/dist/internal/schema/toRepresentation.js.map +1 -1
  742. package/dist/internal/sql.d.ts +2 -0
  743. package/dist/internal/sql.d.ts.map +1 -0
  744. package/dist/internal/sql.js +13 -0
  745. package/dist/internal/sql.js.map +1 -0
  746. package/dist/internal/trie.js +1 -3
  747. package/dist/internal/trie.js.map +1 -1
  748. package/dist/internal/uuid.js +7 -3
  749. package/dist/internal/uuid.js.map +1 -1
  750. package/dist/internal/version.js +1 -1
  751. package/dist/net/NetAddress.d.ts.map +1 -1
  752. package/dist/net/NetAddress.js +2 -8
  753. package/dist/net/NetAddress.js.map +1 -1
  754. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  755. package/dist/observability/OtlpExporter.js +5 -12
  756. package/dist/observability/OtlpExporter.js.map +1 -1
  757. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  758. package/dist/observability/OtlpMetrics.js +5 -3
  759. package/dist/observability/OtlpMetrics.js.map +1 -1
  760. package/dist/observability/OtlpProxy.d.ts +154 -0
  761. package/dist/observability/OtlpProxy.d.ts.map +1 -0
  762. package/dist/observability/OtlpProxy.js +235 -0
  763. package/dist/observability/OtlpProxy.js.map +1 -0
  764. package/dist/observability/OtlpResource.d.ts +3 -1
  765. package/dist/observability/OtlpResource.d.ts.map +1 -1
  766. package/dist/observability/OtlpResource.js +11 -4
  767. package/dist/observability/OtlpResource.js.map +1 -1
  768. package/dist/observability/OtlpSerialization.d.ts +5 -0
  769. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  770. package/dist/observability/OtlpSerialization.js +14 -3
  771. package/dist/observability/OtlpSerialization.js.map +1 -1
  772. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  773. package/dist/observability/OtlpTracer.js +4 -0
  774. package/dist/observability/OtlpTracer.js.map +1 -1
  775. package/dist/observability/index.d.ts +5 -0
  776. package/dist/observability/index.d.ts.map +1 -1
  777. package/dist/observability/index.js +5 -0
  778. package/dist/observability/index.js.map +1 -1
  779. package/dist/observability/internal/protobuf.d.ts +0 -9
  780. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  781. package/dist/observability/internal/protobuf.js +2 -10
  782. package/dist/observability/internal/protobuf.js.map +1 -1
  783. package/dist/persistence/CircuitBreaker.d.ts +897 -0
  784. package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
  785. package/dist/persistence/CircuitBreaker.js +1165 -0
  786. package/dist/persistence/CircuitBreaker.js.map +1 -0
  787. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  788. package/dist/persistence/PersistedCache.js +1 -1
  789. package/dist/persistence/PersistedCache.js.map +1 -1
  790. package/dist/persistence/PersistedQueue.d.ts +6 -2
  791. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  792. package/dist/persistence/PersistedQueue.js +162 -84
  793. package/dist/persistence/PersistedQueue.js.map +1 -1
  794. package/dist/persistence/Persistence.d.ts +28 -0
  795. package/dist/persistence/Persistence.d.ts.map +1 -1
  796. package/dist/persistence/Persistence.js +36 -8
  797. package/dist/persistence/Persistence.js.map +1 -1
  798. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  799. package/dist/persistence/RateLimiter.js +8 -12
  800. package/dist/persistence/RateLimiter.js.map +1 -1
  801. package/dist/persistence/Redis.d.ts +78 -2
  802. package/dist/persistence/Redis.d.ts.map +1 -1
  803. package/dist/persistence/Redis.js +62 -7
  804. package/dist/persistence/Redis.js.map +1 -1
  805. package/dist/persistence/UserDirectories.d.ts +129 -0
  806. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  807. package/dist/persistence/UserDirectories.js +178 -0
  808. package/dist/persistence/UserDirectories.js.map +1 -0
  809. package/dist/persistence/index.d.ts +10 -0
  810. package/dist/persistence/index.d.ts.map +1 -1
  811. package/dist/persistence/index.js +10 -0
  812. package/dist/persistence/index.js.map +1 -1
  813. package/dist/process/ChildProcess.d.ts +32 -5
  814. package/dist/process/ChildProcess.d.ts.map +1 -1
  815. package/dist/process/ChildProcess.js.map +1 -1
  816. package/dist/process/ChildProcessSpawner.d.ts +30 -0
  817. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  818. package/dist/process/ChildProcessSpawner.js +5 -2
  819. package/dist/process/ChildProcessSpawner.js.map +1 -1
  820. package/dist/reactivity/AsyncResult.d.ts +1 -1
  821. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  822. package/dist/reactivity/AsyncResult.js +1 -1
  823. package/dist/reactivity/AsyncResult.js.map +1 -1
  824. package/dist/reactivity/Atom.d.ts +69 -30
  825. package/dist/reactivity/Atom.d.ts.map +1 -1
  826. package/dist/reactivity/Atom.js +40 -15
  827. package/dist/reactivity/Atom.js.map +1 -1
  828. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  829. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  830. package/dist/reactivity/AtomHttpApi.js +1 -1
  831. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  832. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  833. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  834. package/dist/reactivity/AtomRegistry.js +44 -9
  835. package/dist/reactivity/AtomRegistry.js.map +1 -1
  836. package/dist/reactivity/AtomRpc.d.ts +3 -3
  837. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  838. package/dist/reactivity/AtomRpc.js +1 -1
  839. package/dist/reactivity/AtomRpc.js.map +1 -1
  840. package/dist/reactivity/Hydration.d.ts.map +1 -1
  841. package/dist/reactivity/Hydration.js +46 -12
  842. package/dist/reactivity/Hydration.js.map +1 -1
  843. package/dist/reactivity/Reactivity.d.ts +71 -7
  844. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  845. package/dist/reactivity/Reactivity.js +21 -12
  846. package/dist/reactivity/Reactivity.js.map +1 -1
  847. package/dist/rpc/Rpc.d.ts +18 -0
  848. package/dist/rpc/Rpc.d.ts.map +1 -1
  849. package/dist/rpc/Rpc.js +20 -0
  850. package/dist/rpc/Rpc.js.map +1 -1
  851. package/dist/rpc/RpcClient.d.ts +26 -2
  852. package/dist/rpc/RpcClient.d.ts.map +1 -1
  853. package/dist/rpc/RpcClient.js +198 -61
  854. package/dist/rpc/RpcClient.js.map +1 -1
  855. package/dist/rpc/RpcSerialization.d.ts +29 -0
  856. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  857. package/dist/rpc/RpcSerialization.js +41 -13
  858. package/dist/rpc/RpcSerialization.js.map +1 -1
  859. package/dist/rpc/RpcServer.d.ts.map +1 -1
  860. package/dist/rpc/RpcServer.js +20 -19
  861. package/dist/rpc/RpcServer.js.map +1 -1
  862. package/dist/rpc/RpcTest.d.ts +1 -0
  863. package/dist/rpc/RpcTest.d.ts.map +1 -1
  864. package/dist/rpc/RpcTest.js +1 -0
  865. package/dist/rpc/RpcTest.js.map +1 -1
  866. package/dist/schema/Model.d.ts +1 -1
  867. package/dist/schema/VariantSchema.d.ts +22 -3
  868. package/dist/schema/VariantSchema.d.ts.map +1 -1
  869. package/dist/schema/VariantSchema.js +32 -18
  870. package/dist/schema/VariantSchema.js.map +1 -1
  871. package/dist/socket/Socket.d.ts +23 -1
  872. package/dist/socket/Socket.d.ts.map +1 -1
  873. package/dist/socket/Socket.js +36 -3
  874. package/dist/socket/Socket.js.map +1 -1
  875. package/dist/sql/Migrator.d.ts +2 -1
  876. package/dist/sql/Migrator.d.ts.map +1 -1
  877. package/dist/sql/Migrator.js +21 -6
  878. package/dist/sql/Migrator.js.map +1 -1
  879. package/dist/sql/SqlClient.d.ts +148 -5
  880. package/dist/sql/SqlClient.d.ts.map +1 -1
  881. package/dist/sql/SqlClient.js +155 -27
  882. package/dist/sql/SqlClient.js.map +1 -1
  883. package/dist/sql/SqlResolver.d.ts +13 -0
  884. package/dist/sql/SqlResolver.d.ts.map +1 -1
  885. package/dist/sql/SqlResolver.js +27 -4
  886. package/dist/sql/SqlResolver.js.map +1 -1
  887. package/dist/sql/Statement.d.ts +10 -1
  888. package/dist/sql/Statement.d.ts.map +1 -1
  889. package/dist/sql/Statement.js +45 -7
  890. package/dist/sql/Statement.js.map +1 -1
  891. package/dist/testing/TestClock.d.ts.map +1 -1
  892. package/dist/testing/TestClock.js +4 -2
  893. package/dist/testing/TestClock.js.map +1 -1
  894. package/dist/testing/TestSchema.d.ts +7 -1
  895. package/dist/testing/TestSchema.d.ts.map +1 -1
  896. package/dist/testing/TestSchema.js +9 -3
  897. package/dist/testing/TestSchema.js.map +1 -1
  898. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  899. package/dist/workflow/DurableDeferred.js +21 -2
  900. package/dist/workflow/DurableDeferred.js.map +1 -1
  901. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  902. package/dist/workflow/WorkflowEngine.js +18 -4
  903. package/dist/workflow/WorkflowEngine.js.map +1 -1
  904. package/package.json +13 -3
  905. package/src/Arbitrary.ts +10 -2
  906. package/src/Array.ts +128 -55
  907. package/src/Bytes.ts +111 -0
  908. package/src/Channel.ts +308 -452
  909. package/src/ChannelSchema.ts +1 -49
  910. package/src/Chunk.ts +55 -61
  911. package/src/Config.ts +12 -86
  912. package/src/ConfigProvider.ts +2 -1
  913. package/src/Cron.ts +6 -3
  914. package/src/Data.ts +60 -265
  915. package/src/Duration.ts +66 -16
  916. package/src/Effect.ts +503 -168
  917. package/src/Equal.ts +8 -1
  918. package/src/Equivalence.ts +7 -4
  919. package/src/Exit.ts +27 -12
  920. package/src/FiberHandle.ts +10 -9
  921. package/src/FiberMap.ts +13 -66
  922. package/src/FileSystem.ts +10 -0
  923. package/src/Formatter.ts +28 -13
  924. package/src/Graph.ts +171 -1263
  925. package/src/Hash.ts +4 -1
  926. package/src/HashSet.ts +0 -60
  927. package/src/Iterable.ts +15 -14
  928. package/src/JsonPatch.ts +4 -0
  929. package/src/JsonSchema.ts +40 -43
  930. package/src/Layer.ts +2 -2
  931. package/src/ManagedRuntime.ts +72 -6
  932. package/src/Metric.ts +252 -510
  933. package/src/MutableHashMap.ts +4 -473
  934. package/src/MutableList.ts +7 -5
  935. package/src/MutableRef.ts +8 -1
  936. package/src/Number.ts +2 -2
  937. package/src/Optic.ts +17 -332
  938. package/src/PartitionedSemaphore.ts +24 -13
  939. package/src/Path.ts +9 -1
  940. package/src/Pool.ts +109 -37
  941. package/src/PubSub.ts +17 -13
  942. package/src/Queue.ts +5 -37
  943. package/src/Random.ts +1 -1
  944. package/src/RcMap.ts +14 -8
  945. package/src/Record.ts +51 -0
  946. package/src/Ref.ts +15 -104
  947. package/src/References.ts +5 -4
  948. package/src/RequestResolver.ts +46 -87
  949. package/src/Resource.ts +1 -1
  950. package/src/Runtime.ts +19 -18
  951. package/src/Schedule.ts +3 -95
  952. package/src/Schema.ts +639 -381
  953. package/src/SchemaAST.ts +40 -29
  954. package/src/SchemaGetter.ts +22 -5
  955. package/src/SchemaIssue.ts +44 -53
  956. package/src/SchemaParser.ts +51 -18
  957. package/src/SchemaRepresentation.ts +95 -35
  958. package/src/SchemaTransformation.ts +10 -3
  959. package/src/Scope.ts +12 -2
  960. package/src/ScopedCache.ts +17 -142
  961. package/src/SemVer.ts +1528 -0
  962. package/src/SemVerRange.ts +883 -0
  963. package/src/Semaphore.ts +67 -40
  964. package/src/Sink.ts +21 -4
  965. package/src/Stream.ts +367 -1027
  966. package/src/String.ts +11 -8
  967. package/src/TextDiff.ts +766 -0
  968. package/src/Tracer.ts +15 -1
  969. package/src/TxHashMap.ts +1 -103
  970. package/src/TxHashSet.ts +48 -753
  971. package/src/ai/AiError.ts +66 -4
  972. package/src/ai/Chat.ts +10 -5
  973. package/src/ai/Decision.ts +49 -1
  974. package/src/ai/DecisionModel.ts +264 -108
  975. package/src/ai/EmbeddingModel.ts +25 -13
  976. package/src/ai/LanguageModel.ts +9 -0
  977. package/src/ai/McpClient.ts +1211 -0
  978. package/src/ai/McpClientError.ts +329 -0
  979. package/src/ai/McpProtocol.ts +2 -2
  980. package/src/ai/McpSchema.ts +153 -35
  981. package/src/ai/McpServer.ts +231 -233
  982. package/src/ai/Prompt.ts +114 -35
  983. package/src/ai/Response.ts +220 -65
  984. package/src/ai/Tool.ts +50 -6
  985. package/src/ai/Toolkit.ts +82 -11
  986. package/src/ai/index.ts +12 -0
  987. package/src/ai/internal/mcpCore.ts +13 -14
  988. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  989. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  990. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  991. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  992. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  993. package/src/ai/internal/mcpProtocol.ts +22 -2
  994. package/src/ai/internal/mcpRuntime.ts +3 -4
  995. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  996. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  997. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  998. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  999. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  1000. package/src/cli/Argument.ts +15 -0
  1001. package/src/cli/CliError.ts +136 -4
  1002. package/src/cli/CliOutput.ts +183 -6
  1003. package/src/cli/Command.ts +367 -48
  1004. package/src/cli/Completions.ts +56 -0
  1005. package/src/cli/Flag.ts +132 -0
  1006. package/src/cli/GlobalFlag.ts +5 -6
  1007. package/src/cli/Param.ts +151 -6
  1008. package/src/cli/TerminalCapabilities.ts +159 -0
  1009. package/src/cli/index.ts +6 -0
  1010. package/src/cli/internal/command.ts +8 -3
  1011. package/src/cli/internal/completions/bash.ts +83 -32
  1012. package/src/cli/internal/completions/descriptor.ts +11 -1
  1013. package/src/cli/internal/completions/fish.ts +10 -8
  1014. package/src/cli/internal/completions/powershell.ts +23 -14
  1015. package/src/cli/internal/completions/zsh.ts +8 -5
  1016. package/src/cli/internal/formatter.ts +18 -0
  1017. package/src/cli/internal/lexer.ts +12 -5
  1018. package/src/cli/internal/parser.ts +31 -11
  1019. package/src/cluster/ClusterCron.ts +94 -35
  1020. package/src/cluster/ClusterMetrics.ts +149 -7
  1021. package/src/cluster/ClusterWorkflowEngine.ts +130 -57
  1022. package/src/cluster/Entity.ts +4 -0
  1023. package/src/cluster/MessageStorage.ts +26 -14
  1024. package/src/cluster/Runners.ts +76 -25
  1025. package/src/cluster/Sharding.ts +200 -58
  1026. package/src/cluster/ShardingConfig.ts +20 -0
  1027. package/src/cluster/Snowflake.ts +3 -7
  1028. package/src/cluster/SqlMessageStorage.ts +58 -55
  1029. package/src/cluster/SqlRunnerStorage.ts +120 -51
  1030. package/src/cluster/internal/entityManager.ts +155 -32
  1031. package/src/devtools/DevTools.ts +3 -2
  1032. package/src/devtools/DevToolsClient.ts +29 -10
  1033. package/src/encoding/Base64.ts +38 -0
  1034. package/src/encoding/Base64Url.ts +31 -0
  1035. package/src/encoding/Ini.ts +3 -0
  1036. package/src/encoding/JsonArray.ts +849 -0
  1037. package/src/encoding/Ndjson.ts +211 -20
  1038. package/src/encoding/SchemaBinary.ts +14 -48
  1039. package/src/encoding/Sse.ts +4 -3
  1040. package/src/encoding/Tar.ts +1417 -0
  1041. package/src/encoding/Toml.ts +36 -19
  1042. package/src/encoding/Xml.ts +2037 -0
  1043. package/src/encoding/Yaml.ts +108 -36
  1044. package/src/encoding/Zip.ts +1558 -0
  1045. package/src/encoding/index.ts +24 -0
  1046. package/src/eventlog/EventJournal.ts +611 -227
  1047. package/src/eventlog/EventLog.ts +496 -196
  1048. package/src/eventlog/EventLogEncryption.ts +128 -43
  1049. package/src/eventlog/EventLogMessage.ts +62 -11
  1050. package/src/eventlog/EventLogRemote.ts +77 -21
  1051. package/src/eventlog/EventLogServer.ts +162 -20
  1052. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  1053. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  1054. package/src/eventlog/EventRow.ts +706 -0
  1055. package/src/eventlog/SqlEventJournal.ts +496 -193
  1056. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  1057. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  1058. package/src/eventlog/index.ts +6 -0
  1059. package/src/eventlog/internal/conflicts.ts +119 -0
  1060. package/src/graphql/GraphQLClientError.ts +5 -12
  1061. package/src/graphql/GraphQLProtocol.ts +12 -9
  1062. package/src/graphql/GraphQLResolver.ts +90 -239
  1063. package/src/http/Cookies.ts +10 -11
  1064. package/src/http/FetchHttpClient.ts +56 -6
  1065. package/src/http/FindMyWay/internal/router.ts +11 -0
  1066. package/src/http/Headers.ts +337 -154
  1067. package/src/http/HttpClient.ts +673 -142
  1068. package/src/http/HttpClientError.ts +35 -1
  1069. package/src/http/HttpClientRequest.ts +151 -5
  1070. package/src/http/HttpClientResponse.ts +71 -0
  1071. package/src/http/HttpEffect.ts +25 -33
  1072. package/src/http/HttpIncomingMessage.ts +3 -23
  1073. package/src/http/HttpMiddleware.ts +194 -40
  1074. package/src/http/HttpRouter.ts +10 -3
  1075. package/src/http/HttpServerError.ts +8 -5
  1076. package/src/http/HttpServerRequest.ts +172 -27
  1077. package/src/http/HttpServerResponse.ts +49 -23
  1078. package/src/http/HttpStaticServer.ts +71 -26
  1079. package/src/http/MultipartParser/internal/contentType.ts +109 -8
  1080. package/src/http/MultipartParser/internal/headers.ts +4 -16
  1081. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  1082. package/src/http/Url.ts +6 -1
  1083. package/src/http/UrlParams.ts +6 -1
  1084. package/src/http/internal/compression.ts +4 -5
  1085. package/src/http/internal/decompression.ts +32 -17
  1086. package/src/http/internal/httpBody.ts +10 -2
  1087. package/src/http/internal/lazyStream.ts +25 -0
  1088. package/src/http/internal/requestState.ts +33 -0
  1089. package/src/http/internal/urlParams.ts +29 -0
  1090. package/src/http/internal/webResponse.ts +20 -0
  1091. package/src/http-api/HttpApi.ts +4 -7
  1092. package/src/http-api/HttpApiBuilder.ts +190 -32
  1093. package/src/http-api/HttpApiClient.ts +364 -90
  1094. package/src/http-api/HttpApiEndpoint.ts +248 -46
  1095. package/src/http-api/HttpApiError.ts +55 -0
  1096. package/src/http-api/HttpApiScalar.ts +4 -3
  1097. package/src/http-api/HttpApiSchema.ts +373 -18
  1098. package/src/http-api/HttpApiSwagger.ts +11 -4
  1099. package/src/http-api/HttpApiTest.ts +36 -11
  1100. package/src/http-api/OpenApi.ts +103 -58
  1101. package/src/http-api/internal/path.ts +40 -12
  1102. package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
  1103. package/src/index.ts +24 -0
  1104. package/src/internal/arbitrary/runner.ts +133 -36
  1105. package/src/internal/core.ts +3 -1
  1106. package/src/internal/dateTime.ts +20 -7
  1107. package/src/internal/effect.ts +144 -100
  1108. package/src/internal/equal.ts +17 -0
  1109. package/src/internal/hashMap.ts +2 -2
  1110. package/src/internal/hydration.ts +15 -0
  1111. package/src/internal/inflate.ts +710 -0
  1112. package/src/internal/jsonSchema.ts +27 -0
  1113. package/src/internal/matcher.ts +1 -1
  1114. package/src/internal/record.ts +6 -0
  1115. package/src/internal/request.ts +21 -6
  1116. package/src/internal/schedule.ts +20 -39
  1117. package/src/internal/schema/compilerRegistry.ts +6 -1
  1118. package/src/internal/schema/content.ts +18 -0
  1119. package/src/internal/schema/fromJsonSchemaDocument.ts +458 -351
  1120. package/src/internal/schema/fromRepresentation.ts +2 -1
  1121. package/src/internal/schema/interpreter.ts +58 -45
  1122. package/src/internal/schema/standardSchema.ts +34 -32
  1123. package/src/internal/schema/toCodeDocument.ts +12 -7
  1124. package/src/internal/schema/toCodec.ts +134 -15
  1125. package/src/internal/schema/toFormatter.ts +6 -6
  1126. package/src/internal/schema/toJsonSchemaDocument.ts +246 -194
  1127. package/src/internal/schema/toRepresentation.ts +122 -140
  1128. package/src/internal/sql.ts +14 -0
  1129. package/src/internal/trie.ts +1 -3
  1130. package/src/internal/uuid.ts +15 -10
  1131. package/src/internal/version.ts +1 -1
  1132. package/src/net/NetAddress.ts +2 -9
  1133. package/src/observability/OtlpExporter.ts +5 -12
  1134. package/src/observability/OtlpMetrics.ts +5 -3
  1135. package/src/observability/OtlpProxy.ts +314 -0
  1136. package/src/observability/OtlpResource.ts +16 -6
  1137. package/src/observability/OtlpSerialization.ts +17 -3
  1138. package/src/observability/OtlpTracer.ts +4 -0
  1139. package/src/observability/index.ts +6 -0
  1140. package/src/observability/internal/protobuf.ts +2 -10
  1141. package/src/persistence/CircuitBreaker.ts +1678 -0
  1142. package/src/persistence/PersistedCache.ts +3 -1
  1143. package/src/persistence/PersistedQueue.ts +223 -153
  1144. package/src/persistence/Persistence.ts +64 -30
  1145. package/src/persistence/RateLimiter.ts +18 -21
  1146. package/src/persistence/Redis.ts +129 -8
  1147. package/src/persistence/UserDirectories.ts +273 -0
  1148. package/src/persistence/index.ts +12 -0
  1149. package/src/process/ChildProcess.ts +32 -5
  1150. package/src/process/ChildProcessSpawner.ts +41 -2
  1151. package/src/reactivity/AsyncResult.ts +5 -39
  1152. package/src/reactivity/Atom.ts +134 -166
  1153. package/src/reactivity/AtomHttpApi.ts +10 -16
  1154. package/src/reactivity/AtomRegistry.ts +50 -29
  1155. package/src/reactivity/AtomRpc.ts +6 -22
  1156. package/src/reactivity/Hydration.ts +53 -12
  1157. package/src/reactivity/Reactivity.ts +97 -39
  1158. package/src/rpc/Rpc.ts +21 -0
  1159. package/src/rpc/RpcClient.ts +283 -104
  1160. package/src/rpc/RpcSerialization.ts +53 -14
  1161. package/src/rpc/RpcServer.ts +27 -21
  1162. package/src/rpc/RpcTest.ts +3 -0
  1163. package/src/schema/VariantSchema.ts +86 -22
  1164. package/src/socket/Socket.ts +45 -20
  1165. package/src/sql/Migrator.ts +26 -11
  1166. package/src/sql/SqlClient.ts +273 -29
  1167. package/src/sql/SqlResolver.ts +32 -9
  1168. package/src/sql/Statement.ts +65 -10
  1169. package/src/testing/TestClock.ts +4 -1
  1170. package/src/testing/TestSchema.ts +9 -3
  1171. package/src/workflow/DurableDeferred.ts +23 -6
  1172. package/src/workflow/WorkflowEngine.ts +34 -10
  1173. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  1174. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  1175. package/dist/http/internal/preResponseHandler.js +0 -14
  1176. package/dist/http/internal/preResponseHandler.js.map +0 -1
  1177. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -1,41 +1,107 @@
1
- import * as Iterable from "../../Iterable.ts"
1
+ import { escapeToken, parseUriFragment } from "../../JsonPointer.ts"
2
2
  import * as JsonSchema from "../../JsonSchema.ts"
3
- import { remainder } from "../../Number.ts"
4
- import type * as Schema from "../../Schema.ts"
3
+ import * as Schema from "../../Schema.ts"
5
4
  import * as InternalAST from "../../SchemaAST.ts"
6
5
  import type * as SchemaRepresentation from "../../SchemaRepresentation.ts"
7
6
  import { errorWithPath } from "../errors.ts"
7
+ import * as InternalJsonSchema from "../jsonSchema.ts"
8
8
  import * as InternalRecord from "../record.ts"
9
- import { fromRepresentation, fromRepresentations } from "./fromRepresentation.ts"
9
+ import * as InternalAnnotations from "./annotations.ts"
10
+ import { ReferenceSlot } from "./fromRepresentation.ts"
10
11
 
11
12
  type Path = ReadonlyArray<string | number>
12
- type Representation = SchemaRepresentation.Representation
13
- type Check = SchemaRepresentation.Check
13
+ type Check = Filter | FilterGroup | PropertyNames
14
14
 
15
- interface Checked {
16
- readonly checks: ReadonlyArray<Check>
15
+ interface Filter {
16
+ readonly _tag: "Filter"
17
+ readonly filter: InternalAST.Filter<any>
18
+ readonly annotations?: Schema.Annotations.Filter | undefined
19
+ }
20
+
21
+ interface PropertyNames {
22
+ readonly _tag: "PropertyNames"
23
+ readonly type: ImportedJsonSchemaRepresentation
24
+ readonly annotations?: Schema.Annotations.Filter | undefined
25
+ }
26
+
27
+ interface FilterGroup {
28
+ readonly _tag: "FilterGroup"
29
+ readonly checks: readonly [Check, ...Array<Check>]
17
30
  readonly annotations?: Schema.Annotations.Annotations | undefined
18
31
  }
19
32
 
20
- type ImportedJsonSchemaRepresentation = Extract<Representation, {
21
- readonly _tag:
22
- | "Reference"
23
- | "Suspend"
24
- | "Never"
25
- | "Unknown"
26
- | "Null"
27
- | "String"
28
- | "Number"
29
- | "Boolean"
30
- | "Literal"
31
- | "Arrays"
32
- | "Objects"
33
- | "Union"
34
- }>
33
+ interface ImportedAnnotations {
34
+ // Standard annotations may describe a value or a group of checks. Custom
35
+ // annotations always describe the value, even when its checks simplify away.
36
+ readonly annotations?: Schema.Annotations.Annotations | undefined
37
+ readonly customAnnotations?: Schema.Annotations.Annotations | undefined
38
+ }
39
+
40
+ interface Checked extends ImportedAnnotations {
41
+ readonly checks: ReadonlyArray<Check>
42
+ }
43
+
44
+ interface ImportedKeyword<Tag extends string> extends Checked {
45
+ readonly _tag: Tag
46
+ }
47
+
48
+ interface ImportedLiteral extends ImportedKeyword<"Literal"> {
49
+ readonly literal: string | number | boolean
50
+ }
51
+
52
+ interface ImportedElement {
53
+ readonly type: ImportedJsonSchemaRepresentation
54
+ readonly isOptional: boolean
55
+ }
56
+
57
+ interface ImportedArrays extends ImportedKeyword<"Arrays"> {
58
+ readonly elements: ReadonlyArray<ImportedElement>
59
+ readonly rest: ReadonlyArray<ImportedJsonSchemaRepresentation>
60
+ }
61
+
62
+ interface ImportedProperty extends ImportedElement {
63
+ readonly name: string
64
+ }
65
+
66
+ interface ImportedIndexSignature {
67
+ readonly parameter: ImportedJsonSchemaRepresentation
68
+ readonly type: ImportedJsonSchemaRepresentation
69
+ }
70
+
71
+ interface ImportedReference extends SchemaRepresentation.Reference, ImportedAnnotations {
72
+ readonly path: Path
73
+ }
74
+
75
+ interface ImportedObjects extends ImportedKeyword<"Objects"> {
76
+ readonly propertySignatures: ReadonlyArray<ImportedProperty>
77
+ readonly indexSignatures: ReadonlyArray<ImportedIndexSignature>
78
+ readonly scopes: ReadonlyArray<ImportedObjectScope>
79
+ readonly path: Path
80
+ }
81
+
82
+ interface ImportedUnion extends ImportedKeyword<"Union"> {
83
+ readonly types: ReadonlyArray<ImportedJsonSchemaRepresentation>
84
+ readonly options?: SchemaRepresentation.Union["options"]
85
+ }
86
+
87
+ // Import nodes keep source metadata and scopes until normalization is complete.
88
+ // Only finalize constructs runtime schemas after normalization.
89
+ type ImportedJsonSchemaRepresentation =
90
+ | ImportedKeyword<"Never">
91
+ | ImportedKeyword<"Unknown">
92
+ | ImportedKeyword<"Null">
93
+ | ImportedKeyword<"String">
94
+ | ImportedKeyword<"Number">
95
+ | ImportedKeyword<"Boolean">
96
+ | ImportedLiteral
97
+ | ImportedArrays
98
+ | ImportedObjects
99
+ | ImportedUnion
100
+ | ImportedReference
35
101
 
36
102
  interface ImportedObjectPattern {
37
103
  readonly source: string
38
- readonly parameter: SchemaRepresentation.String
104
+ readonly parameter: ImportedKeyword<"String">
39
105
  readonly type: ImportedJsonSchemaRepresentation
40
106
  }
41
107
 
@@ -54,6 +120,13 @@ interface ImportedObjectScope {
54
120
  const never: ImportedJsonSchemaRepresentation = { _tag: "Never", checks: [] }
55
121
  const unknown: ImportedJsonSchemaRepresentation = { _tag: "Unknown", checks: [] }
56
122
  const string: ImportedJsonSchemaRepresentation = { _tag: "String", checks: [] }
123
+ const primitiveSchemas = {
124
+ Never: Schema.Never,
125
+ Null: Schema.Null,
126
+ String: Schema.String,
127
+ Number: Schema.Number,
128
+ Boolean: Schema.Boolean
129
+ }
57
130
  const unsupportedStructuredValue = "Only primitive values are supported in \"const\" and \"enum\"."
58
131
  const jsonSchemaPatternFlags = "u"
59
132
 
@@ -93,6 +166,47 @@ const jsonSchemaTypeSpecificKeys = [
93
166
  "maxItems",
94
167
  "uniqueItems"
95
168
  ]
169
+
170
+ const jsonSchemaAnnotationExcludedKeys = new Set([
171
+ ...jsonSchemaTypeSpecificKeys,
172
+ ...InternalAnnotations.jsonSchemaAnnotationKeys,
173
+ ...InternalAnnotations.annotationExcludedKeys,
174
+ "$schema",
175
+ "$id",
176
+ "$ref",
177
+ "$defs",
178
+ "$anchor",
179
+ "$dynamicRef",
180
+ "$dynamicAnchor",
181
+ "$vocabulary",
182
+ "$comment",
183
+ "type",
184
+ "const",
185
+ "enum",
186
+ "allOf",
187
+ "anyOf",
188
+ "oneOf",
189
+ "not",
190
+ "if",
191
+ "then",
192
+ "else",
193
+ "contains",
194
+ "minContains",
195
+ "maxContains",
196
+ "dependentRequired",
197
+ "dependentSchemas",
198
+ "unevaluatedItems",
199
+ "unevaluatedProperties",
200
+ "definitions",
201
+ "dependencies",
202
+ "additionalItems",
203
+ "identifier",
204
+ "expected",
205
+ "message",
206
+ "messageMissingKey",
207
+ "messageUnexpectedKey"
208
+ ])
209
+
96
210
  function isImportedJsonSchemaType(input: unknown): input is JsonSchema.Type {
97
211
  return input === "integer" || typeof input === "string" && jsonSchemaValueTypes.some((type) => type === input)
98
212
  }
@@ -101,36 +215,24 @@ function hasTypeSpecificKeywords(schema: JsonSchema.JsonSchema): boolean {
101
215
  return jsonSchemaTypeSpecificKeys.some((key) => schema[key] !== undefined)
102
216
  }
103
217
 
104
- function jsonSchemaFilter(
105
- id: string,
106
- payload: Schema.Json,
107
- schemas?: ReadonlyArray<Representation>
108
- ): Check {
109
- return {
110
- _tag: "Filter",
111
- aborted: false,
112
- representation: {
113
- id,
114
- payload,
115
- ...(schemas === undefined ? undefined : { schemas })
116
- }
117
- }
218
+ function makeFilter(filter: InternalAST.Filter<any>): Filter {
219
+ return { _tag: "Filter", filter }
118
220
  }
119
221
 
120
222
  function addNumberCheck(
121
223
  checks: Array<Check>,
122
224
  value: unknown,
123
- id: string,
124
- key: string
225
+ make: (value: number) => InternalAST.Filter<any>
125
226
  ): void {
126
227
  if (typeof value === "number") {
127
- checks.push(jsonSchemaFilter(id, { [key]: value }))
228
+ checks.push(makeFilter(make(value)))
128
229
  }
129
230
  }
130
231
 
131
232
  function jsonSchemaAnnotations(
132
- schema: JsonSchema.JsonSchema
133
- ): Schema.Annotations.Annotations | undefined {
233
+ schema: JsonSchema.JsonSchema,
234
+ options: SchemaRepresentation.FromJsonSchemaOptions | undefined
235
+ ): ImportedAnnotations {
134
236
  const annotations: Record<string, Schema.Json> = {}
135
237
  if (typeof schema.title === "string") annotations.title = schema.title
136
238
  if (typeof schema.description === "string") annotations.description = schema.description
@@ -142,122 +244,129 @@ function jsonSchemaAnnotations(
142
244
  if (typeof schema.contentEncoding === "string") annotations.contentEncoding = schema.contentEncoding
143
245
  if (typeof schema.contentMediaType === "string") annotations.contentMediaType = schema.contentMediaType
144
246
  if (InternalAST.isJson(schema.contentSchema)) annotations.contentSchema = schema.contentSchema
145
- return Object.keys(annotations).length === 0 ? undefined : annotations
146
- }
147
-
148
- function jsonDeclaration(
149
- annotations: Schema.Annotations.Annotations | undefined
150
- ): Representation {
151
- return {
152
- _tag: "Declaration",
153
- representation: {
154
- id: "effect/schema/Json",
155
- payload: null
156
- },
157
- annotations: {
158
- ...annotations,
159
- expected: "JSON value"
160
- },
161
- checks: [],
162
- typeParameters: []
247
+ let customAnnotations: Schema.Annotations.Annotations | undefined
248
+ if (options?.includeAnnotationKey !== undefined) {
249
+ for (const key of Object.keys(schema)) {
250
+ if (
251
+ key.startsWith("~") ||
252
+ jsonSchemaAnnotationExcludedKeys.has(key) ||
253
+ !options.includeAnnotationKey(key)
254
+ ) continue
255
+ const value = schema[key]
256
+ if (InternalAST.isJson(value)) InternalRecord.assignProperty(customAnnotations ??= {}, key, value)
257
+ }
163
258
  }
259
+ return { annotations: Object.keys(annotations).length === 0 ? undefined : annotations, customAnnotations }
164
260
  }
165
261
 
166
- function translateJsonSchemaMultiDocument(
262
+ /** @internal */
263
+ export function fromJsonSchemaMultiDocument(
167
264
  document: JsonSchema.MultiDocument<"draft-2020-12">,
168
265
  options?: SchemaRepresentation.FromJsonSchemaOptions,
169
266
  singleRoot = false
170
- ): SchemaRepresentation.MultiDocument {
267
+ ): readonly [Schema.Top, ...Array<Schema.Top>] {
171
268
  const definitionCache = new Map<string, ImportedJsonSchemaRepresentation | null>()
172
- const reachableDefinitions = new Map<string, Path>()
173
- const objectScopesByProperties = new WeakMap<
174
- SchemaRepresentation.Objects["propertySignatures"],
175
- readonly [ReadonlyArray<ImportedObjectScope>, Path]
176
- >()
177
- const annotatedReferences: Array<{
178
- readonly reference: SchemaRepresentation.Reference
179
- readonly path: Path
180
- }> = []
269
+ const validatedAliases = new Set<string>()
181
270
  const resolvingChoices = new Set<string>()
182
- const finalReferences = new Set<string>()
271
+ const references = new Map<string, ReferenceSlot>()
183
272
  let inNestedResource = false
184
273
 
185
- function finalize(representation: Representation): Representation {
186
- switch (representation._tag) {
274
+ function finalize(input: ImportedJsonSchemaRepresentation): Schema.Top {
275
+ const annotations = mergeAnnotations(input.annotations, input.customAnnotations)
276
+ if (input._tag === "Reference") {
277
+ if (annotations !== undefined) resolveReference(input, input.path)
278
+ let slot = references.get(input.$ref)
279
+ if (slot === undefined) {
280
+ slot = new ReferenceSlot(input.$ref)
281
+ references.set(input.$ref, slot)
282
+ slot.body = finalize(translateDefinition(input.$ref, input.path)).annotate({ identifier: input.$ref })
283
+ }
284
+ return annotations === undefined ? slot.body ?? slot.wrapper : slot.wrapper.annotate(annotations)
285
+ }
286
+
287
+ let schema: Schema.Top
288
+ switch (input._tag) {
187
289
  case "Unknown":
188
- return jsonDeclaration(representation.annotations)
189
- case "Reference":
190
- finalReferences.add(representation.$ref)
191
- return representation
192
- case "Suspend":
193
- return { ...representation, thunk: finalize(representation.thunk) }
194
- case "Arrays":
195
- return {
196
- ...representation,
197
- elements: representation.elements.map((element) => ({
198
- ...element,
199
- type: finalize(element.type)
200
- })),
201
- rest: representation.rest.map(finalize)
202
- }
203
- case "Objects":
204
- // Intersections may reduce open patterns to fixed properties, so reject only
205
- // if an open pattern remains in the final representation.
206
- const [scopes, path] = objectScopesByProperties.get(representation.propertySignatures)!
290
+ return Schema.Json.annotate({ ...annotations, expected: "JSON value" })
291
+ case "Never":
292
+ case "Null":
293
+ case "String":
294
+ case "Number":
295
+ case "Boolean":
296
+ schema = primitiveSchemas[input._tag]
297
+ break
298
+ case "Literal":
299
+ schema = Schema.Literal(input.literal)
300
+ break
301
+ case "Arrays": {
302
+ const elements = input.elements.map((element) => {
303
+ const type = finalize(element.type)
304
+ return element.isOptional ? Schema.optionalKey(type) : type
305
+ })
306
+ const rest = input.rest[0] === undefined ? undefined : finalize(input.rest[0])
307
+ schema = rest !== undefined
308
+ ? elements.length === 0
309
+ ? Schema.Array(rest)
310
+ : Schema.TupleWithRest(Schema.Tuple(elements), [rest])
311
+ : Schema.Tuple(elements)
312
+ break
313
+ }
314
+ case "Objects": {
315
+ // Intersections may remove open patterns, so check the normalized object.
207
316
  if (
208
- representation.indexSignatures[0]?.parameter === string &&
209
- scopes.some((scope) => scope.patterns.length > 0)
317
+ input.indexSignatures[0]?.parameter === string &&
318
+ input.scopes.some((scope) => scope.patterns.length > 0)
210
319
  ) {
211
320
  throw errorWithPath(
212
321
  "Cannot import open \"patternProperties\": unmatched keys cannot be typed correctly.",
213
- path
322
+ input.path
214
323
  )
215
324
  }
216
- return {
217
- ...representation,
218
- propertySignatures: representation.propertySignatures.map((property) => ({
219
- ...property,
220
- type: finalize(property.type)
221
- })),
222
- indexSignatures: representation.indexSignatures.map((indexSignature) => ({
223
- parameter: finalize(indexSignature.parameter),
224
- type: finalize(indexSignature.type)
225
- })),
226
- checks: representation.checks.map(finalizeCheck)
325
+ const fields: Record<string, Schema.Top> = {}
326
+ for (const property of input.propertySignatures) {
327
+ const type = finalize(property.type)
328
+ InternalRecord.assignProperty(fields, property.name, property.isOptional ? Schema.optionalKey(type) : type)
227
329
  }
330
+ const index = input.indexSignatures[0]
331
+ const record = index === undefined
332
+ ? undefined
333
+ : Schema.Record(finalize(index.parameter) as Schema.Record.Key, finalize(index.type))
334
+ schema = record !== undefined
335
+ ? input.propertySignatures.length === 0
336
+ ? record
337
+ : Schema.StructWithRest(Schema.Struct(fields), [record])
338
+ : Schema.Struct(fields)
339
+ break
340
+ }
228
341
  case "Union":
229
- return { ...representation, types: representation.types.map(finalize) }
230
- default:
231
- return representation
342
+ schema = Schema.Union(input.types.map(finalize), input.options)
343
+ break
232
344
  }
345
+ if (annotations !== undefined) schema = schema.annotate(annotations)
346
+ const checks = input.checks.map(finalizeCheck)
347
+ return checks.length > 0 ? schema.check(...checks as [InternalAST.Check<any>]) : schema
233
348
  }
234
349
 
235
- function finalizeCheck(check: Check): Check {
236
- const representation = check.representation
237
- const schemas = representation?.schemas
238
- if (representation === undefined || schemas === undefined) {
239
- return check
240
- }
241
- return {
242
- ...check,
243
- representation: {
244
- ...representation,
245
- schemas: schemas.map(finalize)
246
- }
350
+ function finalizeCheck(check: Check): InternalAST.Check<any> {
351
+ if (check._tag === "FilterGroup") {
352
+ return Schema.makeFilterGroup(
353
+ check.checks.map(finalizeCheck) as [InternalAST.Check<any>, ...Array<InternalAST.Check<any>>],
354
+ check.annotations
355
+ )
247
356
  }
357
+ const filter = check._tag === "PropertyNames" ? Schema.isPropertyNames(finalize(check.type)) : check.filter
358
+ return check.annotations === undefined ? filter : filter.annotate(check.annotations)
248
359
  }
249
360
 
250
361
  function annotate(
251
362
  representation: ImportedJsonSchemaRepresentation,
252
- annotations: Schema.Annotations.Annotations | undefined
363
+ source: ImportedAnnotations
253
364
  ): ImportedJsonSchemaRepresentation {
254
- if (annotations === undefined) return representation
255
- if (representation._tag === "Reference") {
256
- return { _tag: "Suspend", annotations, checks: [], thunk: representation }
257
- }
365
+ if (source.annotations === undefined && source.customAnnotations === undefined) return representation
258
366
  return {
259
367
  ...representation,
260
- annotations: { ...representation.annotations, ...annotations }
368
+ annotations: mergeAnnotations(representation.annotations, source.annotations),
369
+ customAnnotations: mergeAnnotations(representation.customAnnotations, source.customAnnotations)
261
370
  }
262
371
  }
263
372
 
@@ -278,13 +387,52 @@ function translateJsonSchemaMultiDocument(
278
387
  return cached
279
388
  }
280
389
  definitionCache.set(key, null)
281
- const representation = translateSchema(document.definitions[key], ["definitions", key])
390
+ const pointer = pointers.get(key)
391
+ const wasInNestedResource = inNestedResource
392
+ if (pointer !== undefined) inNestedResource = pointer.crossesResource
393
+ const representation = pointer === undefined
394
+ ? translateSchema(document.definitions[key], ["definitions", key])
395
+ : translateSchema(pointer.target, ["definitions", ...pointer.tokens])
396
+ inNestedResource = wasInNestedResource
282
397
  definitionCache.set(key, representation)
398
+ if (pointer !== undefined) {
399
+ validatePointerAliases(representation, path, recursiveReferenceError)
400
+ }
283
401
  return representation
284
402
  }
285
403
 
404
+ function validatePointerAliases(
405
+ representation: ImportedJsonSchemaRepresentation,
406
+ path: Path,
407
+ recursiveReferenceError?: string,
408
+ visiting: Set<string> = new Set()
409
+ ): void {
410
+ if (representation._tag === "Reference") {
411
+ const key = representation.$ref
412
+ if (validatedAliases.has(key)) return
413
+ if (visiting.has(key)) {
414
+ throw errorWithPath(`Definition ${JSON.stringify(key)} is a circular alias.`, [...path, "$ref"])
415
+ }
416
+ visiting.add(key)
417
+ validatePointerAliases(
418
+ translateDefinition(key, path, recursiveReferenceError),
419
+ path,
420
+ recursiveReferenceError,
421
+ visiting
422
+ )
423
+ visiting.delete(key)
424
+ validatedAliases.add(key)
425
+ } else if (representation._tag === "Union") {
426
+ // Alternatives share completed checks, but only ancestors belong to the active path.
427
+ for (const type of representation.types) {
428
+ validatePointerAliases(type, path, recursiveReferenceError, visiting)
429
+ }
430
+ }
431
+ // Recursion through object properties or array items consumes a child value.
432
+ }
433
+
286
434
  function resolveReference(
287
- reference: SchemaRepresentation.Reference,
435
+ reference: ImportedReference,
288
436
  path: Path,
289
437
  recursiveReferenceError?: string,
290
438
  seen: Set<string> = new Set()
@@ -298,17 +446,67 @@ function translateJsonSchemaMultiDocument(
298
446
  seen.add(reference.$ref)
299
447
  const representation = translateDefinition(reference.$ref, path, recursiveReferenceError)
300
448
  if (representation._tag === "Reference") {
301
- return resolveReference(representation, path, recursiveReferenceError, seen)
302
- }
303
- if (representation._tag === "Suspend" && representation.thunk._tag === "Reference") {
304
449
  return annotate(
305
- resolveReference(representation.thunk, path, recursiveReferenceError, seen),
306
- representation.annotations
450
+ resolveReference(representation, path, recursiveReferenceError, seen),
451
+ representation
307
452
  )
308
453
  }
309
454
  return representation
310
455
  }
311
456
 
457
+ // Pointers below a definition are registered as definitions keyed by their escaped tokens, e.g. "O/properties/v"
458
+ const pointers = new Map<
459
+ string,
460
+ { readonly target: unknown; readonly tokens: ReadonlyArray<string>; readonly crossesResource: boolean }
461
+ >()
462
+
463
+ function resolvePointer($ref: string, path: Path): string {
464
+ const pointer = $ref.startsWith("#") ? parseUriFragment($ref) : undefined
465
+ if (pointer === undefined || pointer.length < 3 || pointer[0] !== "$defs") {
466
+ throw errorWithPath(`Unsupported $ref ${JSON.stringify($ref)}. Use "#/$defs/Name".`, [...path, "$ref"])
467
+ }
468
+ const tokens = pointer.slice(1)
469
+ const key = tokens.map(escapeToken).join("/")
470
+ if (Object.hasOwn(document.definitions, key)) {
471
+ throw errorWithPath(
472
+ `Pointer $ref ${JSON.stringify($ref)} conflicts with definition ${JSON.stringify(key)}.`,
473
+ [...path, "$ref"]
474
+ )
475
+ }
476
+ if (pointers.has(key)) return key
477
+ // Walk through the onEnter result of each ancestor schema, as translateSchema would see it
478
+ let node: unknown = document.definitions
479
+ let position: "schema" | "container" | "value" = "container"
480
+ let crossesResource = false
481
+ for (const token of tokens) {
482
+ if (position === "container") {
483
+ position = "schema"
484
+ } else if (position === "schema" && isObject(node)) {
485
+ if (options?.onEnter !== undefined) node = options.onEnter(node as JsonSchema.JsonSchema)
486
+ crossesResource ||= isObject(node) && typeof node.$id === "string"
487
+ const kind = InternalJsonSchema.getSubschemaKind(token)
488
+ position = kind === "schema"
489
+ ? "schema"
490
+ : kind === undefined
491
+ ? "value"
492
+ : "container"
493
+ } else {
494
+ position = "value"
495
+ }
496
+ node = typeof node === "object" && node !== null && Object.hasOwn(node, token)
497
+ ? (node as Record<string, unknown>)[token]
498
+ : undefined
499
+ }
500
+ if (!isObject(node) && typeof node !== "boolean") {
501
+ throw errorWithPath(
502
+ `Unresolvable $ref ${JSON.stringify($ref)}. Nothing exists at that location.`,
503
+ [...path, "$ref"]
504
+ )
505
+ }
506
+ pointers.set(key, { target: node, tokens, crossesResource })
507
+ return key
508
+ }
509
+
312
510
  function mergeAnnotations(
313
511
  left: Schema.Annotations.Annotations | undefined,
314
512
  right: Schema.Annotations.Annotations | undefined
@@ -320,34 +518,27 @@ function translateJsonSchemaMultiDocument(
320
518
 
321
519
  function annotateIntersection(
322
520
  representation: ImportedJsonSchemaRepresentation,
323
- left: ImportedJsonSchemaRepresentation,
324
- right: ImportedJsonSchemaRepresentation
521
+ left: ImportedAnnotations,
522
+ right: ImportedAnnotations
325
523
  ): ImportedJsonSchemaRepresentation {
326
- return annotate(
327
- representation,
328
- mergeAnnotations(
329
- left._tag === "Reference" ? undefined : left.annotations,
330
- right._tag === "Reference" ? undefined : right.annotations
331
- )
332
- )
524
+ return annotate(annotate(representation, left), right)
333
525
  }
334
526
 
335
527
  function intersectChecks(
336
528
  left: Checked,
337
529
  right: Checked,
338
530
  deduplicate: ReadonlyArray<string> = []
339
- ): readonly [ReadonlyArray<Check>, Schema.Annotations.Annotations | undefined] {
531
+ ): Checked {
340
532
  let checks = right.checks
341
533
  for (const id of deduplicate) {
342
- if (left.checks.some((check) => check._tag === "Filter" && check.representation?.id === id)) {
343
- checks = checks.filter((check) => check._tag !== "Filter" || check.representation?.id !== id)
534
+ if (left.checks.some((check) => check._tag === "Filter" && check.filter.annotations?.representation?.id === id)) {
535
+ checks = checks.filter((check) =>
536
+ check._tag !== "Filter" || check.filter.annotations?.representation?.id !== id
537
+ )
344
538
  }
345
539
  }
346
- if (checks.length === 0) {
347
- const annotations = mergeAnnotations(left.annotations, right.annotations)
348
- return [left.checks, annotations]
349
- }
350
- if (right.annotations !== undefined) {
540
+ const annotations = checks.length === 0 ? mergeAnnotations(left.annotations, right.annotations) : left.annotations
541
+ if (checks.length > 0 && right.annotations !== undefined) {
351
542
  checks = checks.length === 1 && checks[0].annotations === undefined
352
543
  ? [{ ...checks[0], annotations: right.annotations }]
353
544
  : [{
@@ -356,46 +547,23 @@ function translateJsonSchemaMultiDocument(
356
547
  annotations: right.annotations
357
548
  }]
358
549
  }
359
- return [[...left.checks, ...checks], left.annotations]
550
+ return {
551
+ checks: [...left.checks, ...checks],
552
+ annotations,
553
+ customAnnotations: mergeAnnotations(left.customAnnotations, right.customAnnotations)
554
+ }
360
555
  }
361
556
 
362
- function satisfiesPrimitiveCheck(check: Check, value: string | number): boolean | undefined {
557
+ function satisfiesPrimitiveCheck(check: Check, value: string | number): boolean {
363
558
  if (check._tag === "FilterGroup") {
364
559
  return check.checks.every((check) => satisfiesPrimitiveCheck(check, value))
365
560
  }
366
- const representation = check.representation!
367
- const payload = representation.payload as Record<string, any>
368
- switch (representation.id) {
369
- case "effect/schema/isMinLength":
370
- return (value as string).length >= payload.minLength
371
- case "effect/schema/isMinCodePoints":
372
- return Iterable.size(value as string) >= payload.minCodePoints
373
- case "effect/schema/isMaxCodePoints":
374
- return Iterable.size(value as string) <= payload.maxCodePoints
375
- case "effect/schema/isPattern":
376
- return new RegExp(payload.source as string, payload.flags as string).test(value as string)
377
- case "effect/schema/isFinite":
378
- return globalThis.Number.isFinite(value as number)
379
- case "effect/schema/isInt":
380
- return globalThis.Number.isSafeInteger(value as number)
381
- case "effect/schema/isMultipleOf":
382
- return remainder(value as number, payload.divisor) === 0
383
- case "effect/schema/isGreaterThan":
384
- return (value as number) > payload.exclusiveMinimum
385
- case "effect/schema/isGreaterThanOrEqualTo":
386
- return (value as number) >= payload.minimum
387
- case "effect/schema/isLessThan":
388
- return (value as number) < payload.exclusiveMaximum
389
- case "effect/schema/isLessThanOrEqualTo":
390
- return (value as number) <= payload.maximum
391
- }
561
+ return check._tag === "Filter" && check.filter.run(value, Schema.Unknown.ast, {}) === undefined
392
562
  }
393
563
 
394
564
  function satisfiesLiteral(
395
- representation:
396
- | SchemaRepresentation.String
397
- | SchemaRepresentation.Number,
398
- literal: SchemaRepresentation.Literal
565
+ representation: ImportedKeyword<"String"> | ImportedKeyword<"Number">,
566
+ literal: ImportedLiteral
399
567
  ): boolean {
400
568
  const value = literal.literal
401
569
  if (representation._tag === "String" ? typeof value !== "string" : typeof value !== "number") {
@@ -405,11 +573,8 @@ function translateJsonSchemaMultiDocument(
405
573
  }
406
574
 
407
575
  function intersectPrimitiveWithLiteral(
408
- primitive:
409
- | SchemaRepresentation.String
410
- | SchemaRepresentation.Number
411
- | SchemaRepresentation.Boolean,
412
- literal: SchemaRepresentation.Literal
576
+ primitive: ImportedKeyword<"String"> | ImportedKeyword<"Number"> | ImportedKeyword<"Boolean">,
577
+ literal: ImportedLiteral
413
578
  ): ImportedJsonSchemaRepresentation {
414
579
  const satisfies = primitive._tag === "Boolean"
415
580
  ? typeof literal.literal === "boolean"
@@ -418,11 +583,11 @@ function translateJsonSchemaMultiDocument(
418
583
  }
419
584
 
420
585
  function intersectArrays(
421
- left: SchemaRepresentation.Arrays,
422
- right: SchemaRepresentation.Arrays,
586
+ left: ImportedArrays,
587
+ right: ImportedArrays,
423
588
  path: Path
424
- ): Pick<SchemaRepresentation.Arrays, "elements" | "rest"> | undefined {
425
- const elements: Array<SchemaRepresentation.Element> = []
589
+ ): Pick<ImportedArrays, "elements" | "rest"> | undefined {
590
+ const elements: Array<ImportedElement> = []
426
591
  const length = Math.max(left.elements.length, right.elements.length)
427
592
  for (let index = 0; index < length; index++) {
428
593
  const leftElement = left.elements[index]
@@ -434,8 +599,8 @@ function translateJsonSchemaMultiDocument(
434
599
  return isOptional ? { elements, rest: [] } : undefined
435
600
  }
436
601
  const type = intersect(
437
- leftType as ImportedJsonSchemaRepresentation,
438
- rightType as ImportedJsonSchemaRepresentation,
602
+ leftType,
603
+ rightType,
439
604
  [...path, "elements", index, "type"]
440
605
  )
441
606
  if (type._tag === "Never") {
@@ -453,8 +618,8 @@ function translateJsonSchemaMultiDocument(
453
618
  return { elements, rest: [] }
454
619
  }
455
620
  const rest = intersect(
456
- leftRest as ImportedJsonSchemaRepresentation,
457
- rightRest as ImportedJsonSchemaRepresentation,
621
+ leftRest,
622
+ rightRest,
458
623
  [...path, "rest", 0]
459
624
  )
460
625
  return { elements, rest: rest._tag === "Never" ? [] : [rest] }
@@ -473,8 +638,7 @@ function translateJsonSchemaMultiDocument(
473
638
 
474
639
  function lowerObject(
475
640
  scopes: ReadonlyArray<ImportedObjectScope>,
476
- checks: ReadonlyArray<Check>,
477
- annotations: Schema.Annotations.Annotations | undefined,
641
+ checked: Checked,
478
642
  path: Path
479
643
  ): ImportedJsonSchemaRepresentation {
480
644
  const names = new Set<string>()
@@ -499,7 +663,7 @@ function translateJsonSchemaMultiDocument(
499
663
  )
500
664
  }
501
665
 
502
- const properties: Array<SchemaRepresentation.PropertySignature> = []
666
+ const properties: Array<ImportedProperty> = []
503
667
  for (const name of names) {
504
668
  let isOptional = true
505
669
  const types: Array<ImportedJsonSchemaRepresentation> = []
@@ -520,10 +684,10 @@ function translateJsonSchemaMultiDocument(
520
684
  }
521
685
  const type = intersectAll(types, [...path, "properties", name])
522
686
  if (!isOptional && type._tag === "Never") return never
523
- properties.push({ name, type, isOptional, isMutable: false })
687
+ properties.push({ name, type, isOptional })
524
688
  }
525
689
 
526
- const indexSignatures: ReadonlyArray<SchemaRepresentation.IndexSignature> = closedPattern !== undefined
690
+ const indexSignatures: ReadonlyArray<ImportedIndexSignature> = closedPattern !== undefined
527
691
  ? [{ parameter: closedPattern.parameter, type: closedPattern.type }]
528
692
  : !hasFiniteKeyDomain
529
693
  ? [{
@@ -536,15 +700,14 @@ function translateJsonSchemaMultiDocument(
536
700
  : properties.length === 0
537
701
  ? [{ parameter: string, type: never }]
538
702
  : []
539
- const representation: SchemaRepresentation.Objects = {
703
+ return {
540
704
  _tag: "Objects",
541
705
  propertySignatures: properties,
542
706
  indexSignatures,
543
- checks,
544
- annotations
707
+ scopes,
708
+ path,
709
+ ...checked
545
710
  }
546
- objectScopesByProperties.set(properties, [scopes, path])
547
- return representation
548
711
  }
549
712
 
550
713
  const jsonRootTags = ["Null", "String", "Number", "Boolean", "Objects", "Arrays"] as const
@@ -568,12 +731,10 @@ function translateJsonSchemaMultiDocument(
568
731
  default:
569
732
  return 0
570
733
  }
571
- case "Suspend":
572
- return rootMask(representation.thunk as ImportedJsonSchemaRepresentation)
573
734
  case "Union": {
574
735
  let out = 0
575
736
  for (const type of representation.types) {
576
- out |= rootMask(type as ImportedJsonSchemaRepresentation)
737
+ out |= rootMask(type)
577
738
  }
578
739
  return out
579
740
  }
@@ -589,30 +750,23 @@ function translateJsonSchemaMultiDocument(
589
750
  const cached = definitionCache.get(key)
590
751
  if (cached === null || resolvingChoices.has(key)) return true
591
752
  resolvingChoices.add(key)
592
- const out = hasChoices(cached ?? translateDefinition(key, reachableDefinitions.get(key)!))
753
+ const out = hasChoices(cached ?? translateDefinition(key, representation.path))
593
754
  resolvingChoices.delete(key)
594
755
  return out
595
756
  }
596
- case "Suspend":
597
- return hasChoices(representation.thunk as ImportedJsonSchemaRepresentation)
598
757
  case "Union":
599
758
  return representation.types.length > 1 ||
600
- representation.types.some((type) => hasChoices(type as ImportedJsonSchemaRepresentation))
759
+ representation.types.some(hasChoices)
601
760
  case "Arrays":
602
- return representation.elements.some((element) =>
603
- hasChoices(element.type as ImportedJsonSchemaRepresentation)
604
- ) || representation.rest.some((type) => hasChoices(type as ImportedJsonSchemaRepresentation))
761
+ return representation.elements.some((element) => hasChoices(element.type)) ||
762
+ representation.rest.some(hasChoices)
605
763
  case "Objects":
606
- return representation.propertySignatures.some((property) =>
607
- hasChoices(property.type as ImportedJsonSchemaRepresentation)
608
- ) ||
764
+ return representation.propertySignatures.some((property) => hasChoices(property.type)) ||
609
765
  representation.indexSignatures.some((indexSignature) =>
610
- hasChoices(indexSignature.parameter as ImportedJsonSchemaRepresentation) ||
611
- hasChoices(indexSignature.type as ImportedJsonSchemaRepresentation)
612
- ) ||
613
- objectScopesByProperties.get(representation.propertySignatures)![0].some((scope) =>
614
- scope.patterns.some((pattern) => hasChoices(pattern.type))
766
+ hasChoices(indexSignature.parameter) ||
767
+ hasChoices(indexSignature.type)
615
768
  ) ||
769
+ representation.scopes.some((scope) => scope.patterns.some((pattern) => hasChoices(pattern.type))) ||
616
770
  representation.checks.some(checkHasChoices)
617
771
  default:
618
772
  return false
@@ -622,15 +776,15 @@ function translateJsonSchemaMultiDocument(
622
776
  function checkHasChoices(check: Check): boolean {
623
777
  return check._tag === "FilterGroup"
624
778
  ? check.checks.some(checkHasChoices)
625
- : check.representation?.schemas?.some((schema) => hasChoices(schema as ImportedJsonSchemaRepresentation)) === true
779
+ : check._tag === "PropertyNames" && hasChoices(check.type)
626
780
  }
627
781
 
628
782
  function makeUnion(
629
- source: SchemaRepresentation.Union,
783
+ source: ImportedUnion,
630
784
  types: ReadonlyArray<ImportedJsonSchemaRepresentation>
631
785
  ): ImportedJsonSchemaRepresentation {
632
786
  if (types.length === 0) return never
633
- if (types.length === 1 && source.checks.length === 0) return annotate(types[0], source.annotations)
787
+ if (types.length === 1 && source.checks.length === 0) return annotate(types[0], source)
634
788
  return { ...source, types }
635
789
  }
636
790
 
@@ -639,40 +793,39 @@ function translateJsonSchemaMultiDocument(
639
793
  ): string | number | boolean | null | undefined {
640
794
  if (representation._tag === "Null") return null
641
795
  if (representation._tag !== "Literal") return undefined
642
- const literal = representation.literal
643
- return typeof literal === "string" || typeof literal === "number" || typeof literal === "boolean"
644
- ? literal
645
- : undefined
796
+ return representation.literal
646
797
  }
647
798
 
648
799
  function intersectLiteralUnions(
649
- left: SchemaRepresentation.Union,
650
- right: SchemaRepresentation.Union,
800
+ left: ImportedUnion,
801
+ right: ImportedUnion,
651
802
  path: Path
652
803
  ): ImportedJsonSchemaRepresentation | undefined {
653
804
  if ((left.options?.mode ?? "anyOf") !== "anyOf" || (right.options?.mode ?? "anyOf") !== "anyOf") {
654
805
  return undefined
655
806
  }
656
807
  const rightByValue = new Map<string | number | boolean | null, ImportedJsonSchemaRepresentation>()
657
- for (const type of right.types) {
658
- const representation = type as ImportedJsonSchemaRepresentation
808
+ for (const representation of right.types) {
659
809
  const value = literalValue(representation)
660
810
  if (value === undefined) return undefined
661
- rightByValue.set(value, representation)
811
+ const previous = rightByValue.get(value)
812
+ rightByValue.set(value, {
813
+ ...representation,
814
+ customAnnotations: mergeAnnotations(previous?.customAnnotations, representation.customAnnotations)
815
+ })
662
816
  }
663
817
  const types: Array<ImportedJsonSchemaRepresentation> = []
664
- for (const type of left.types) {
665
- const representation = type as ImportedJsonSchemaRepresentation
818
+ for (const representation of left.types) {
666
819
  const value = literalValue(representation)
667
820
  if (value === undefined) return undefined
668
821
  const match = rightByValue.get(value)
669
- if (match !== undefined) types.push(intersect(representation, annotate(match, right.annotations), path))
822
+ if (match !== undefined) types.push(intersect(representation, annotate(match, right), path))
670
823
  }
671
824
  return makeUnion(left, types)
672
825
  }
673
826
 
674
827
  function intersectUnionWithType(
675
- union: SchemaRepresentation.Union,
828
+ union: ImportedUnion,
676
829
  type: ImportedJsonSchemaRepresentation,
677
830
  path: Path,
678
831
  unionOnLeft: boolean
@@ -681,14 +834,14 @@ function translateJsonSchemaMultiDocument(
681
834
  const members = union.types
682
835
  .map((member, index) => ({
683
836
  index,
684
- type: member as ImportedJsonSchemaRepresentation
837
+ type: member
685
838
  }))
686
839
  .filter((member) => (rootMask(member.type) & mask) !== 0)
687
840
  if (members.length > 1 && hasChoices(type)) {
688
841
  return unsupportedIntersection(path)
689
842
  }
690
843
  if (members.length === 1 && union.checks.length === 0) {
691
- const member = annotate(members[0].type, union.annotations)
844
+ const member = annotate(members[0].type, union)
692
845
  return unionOnLeft
693
846
  ? intersect(member, type, [...path, "types", members[0].index])
694
847
  : intersect(type, member, [...path, "types", members[0].index])
@@ -705,10 +858,10 @@ function translateJsonSchemaMultiDocument(
705
858
  )
706
859
  }
707
860
 
708
- function isTypePartition(union: SchemaRepresentation.Union): boolean {
861
+ function isTypePartition(union: ImportedUnion): boolean {
709
862
  let mask = 0
710
863
  for (const type of union.types) {
711
- const memberMask = rootMask(type as ImportedJsonSchemaRepresentation)
864
+ const memberMask = rootMask(type)
712
865
  if ((mask & memberMask) !== 0) return false
713
866
  mask |= memberMask
714
867
  }
@@ -723,13 +876,13 @@ function translateJsonSchemaMultiDocument(
723
876
  }
724
877
 
725
878
  function intersectPartition(
726
- partition: SchemaRepresentation.Union,
727
- other: SchemaRepresentation.Union,
879
+ partition: ImportedUnion,
880
+ other: ImportedUnion,
728
881
  path: Path,
729
882
  partitionOnLeft: boolean
730
883
  ): ImportedJsonSchemaRepresentation {
731
- const partitionTypes = partition.types as ReadonlyArray<ImportedJsonSchemaRepresentation>
732
- const otherTypes = other.types as ReadonlyArray<ImportedJsonSchemaRepresentation>
884
+ const partitionTypes = partition.types
885
+ const otherTypes = other.types
733
886
  for (const type of otherTypes) {
734
887
  const mask = rootMask(type)
735
888
  if (partitionTypes.filter((member) => (rootMask(member) & mask) !== 0).length > 1 && hasChoices(type)) {
@@ -746,8 +899,8 @@ function translateJsonSchemaMultiDocument(
746
899
  }
747
900
 
748
901
  function intersectUnions(
749
- left: SchemaRepresentation.Union,
750
- right: SchemaRepresentation.Union,
902
+ left: ImportedUnion,
903
+ right: ImportedUnion,
751
904
  path: Path
752
905
  ): ImportedJsonSchemaRepresentation {
753
906
  const literals = intersectLiteralUnions(left, right, path)
@@ -766,19 +919,19 @@ function translateJsonSchemaMultiDocument(
766
919
  if (right._tag === "Never") return right
767
920
  if (left._tag === "Unknown") return annotateIntersection(right, left, right)
768
921
  if (right._tag === "Unknown") return annotateIntersection(left, left, right)
769
- if (left._tag === "Reference") return intersect(resolveReference(left, path), right, path)
770
- if (right._tag === "Reference") return intersect(left, resolveReference(right, path), path)
771
- if (left._tag === "Suspend") {
772
- return annotate(
773
- intersect(left.thunk as ImportedJsonSchemaRepresentation, right, path),
774
- left.annotations
775
- )
922
+ if (left._tag === "Reference") {
923
+ // Resolve an unannotated reference first. An annotated empty definition
924
+ // could otherwise leave the other reference unresolved during union partitioning.
925
+ if (
926
+ (left.annotations !== undefined || left.customAnnotations !== undefined) &&
927
+ right._tag === "Reference" && right.annotations === undefined && right.customAnnotations === undefined
928
+ ) {
929
+ return intersect(left, resolveReference(right, path), path)
930
+ }
931
+ return annotate(intersect(resolveReference(left, path), right, path), left)
776
932
  }
777
- if (right._tag === "Suspend") {
778
- return annotate(
779
- intersect(left, right.thunk as ImportedJsonSchemaRepresentation, path),
780
- right.annotations
781
- )
933
+ if (right._tag === "Reference") {
934
+ return annotate(intersect(left, resolveReference(right, path), path), right)
782
935
  }
783
936
  if (left._tag === "Union" && right._tag === "Union") return intersectUnions(left, right, path)
784
937
  if (left._tag === "Union") return intersectUnionWithType(left, right, path, true)
@@ -794,18 +947,16 @@ function translateJsonSchemaMultiDocument(
794
947
  return intersectPrimitiveWithLiteral(left, right)
795
948
  }
796
949
  if (right._tag !== "String") return never
797
- const [stringChecks, stringAnnotations] = intersectChecks(left, right)
798
- return annotate({ _tag: "String", checks: stringChecks }, stringAnnotations)
950
+ return { _tag: "String", ...intersectChecks(left, right) }
799
951
  case "Number":
800
952
  if (right._tag === "Literal") {
801
953
  return intersectPrimitiveWithLiteral(left, right)
802
954
  }
803
955
  if (right._tag !== "Number") return never
804
- const [numberChecks, numberAnnotations] = intersectChecks(left, right, [
805
- "effect/schema/isFinite",
806
- "effect/schema/isInt"
807
- ])
808
- return annotate({ _tag: "Number", checks: numberChecks }, numberAnnotations)
956
+ return {
957
+ _tag: "Number",
958
+ ...intersectChecks(left, right, ["effect/schema/isFinite", "effect/schema/isInt"])
959
+ }
809
960
  case "Boolean":
810
961
  if (right._tag === "Literal") {
811
962
  return intersectPrimitiveWithLiteral(left, right)
@@ -844,22 +995,12 @@ function translateJsonSchemaMultiDocument(
844
995
  if (right._tag !== "Arrays") return never
845
996
  const arrays = intersectArrays(left, right, path)
846
997
  if (arrays === undefined) return never
847
- const [checks, annotations] = intersectChecks(left, right, ["effect/schema/isUnique"])
848
- return annotate({ _tag: "Arrays", ...arrays, checks }, annotations)
998
+ return { _tag: "Arrays", ...arrays, ...intersectChecks(left, right, ["effect/schema/isUnique"]) }
849
999
  }
850
1000
  case "Objects": {
851
1001
  if (right._tag !== "Objects") return never
852
- const [checks, annotations] = intersectChecks(left, right)
853
- const scopes = [
854
- ...objectScopesByProperties.get(left.propertySignatures)![0],
855
- ...objectScopesByProperties.get(right.propertySignatures)![0]
856
- ]
857
- return lowerObject(
858
- scopes,
859
- checks,
860
- annotations,
861
- path
862
- )
1002
+ const scopes = [...left.scopes, ...right.scopes]
1003
+ return lowerObject(scopes, intersectChecks(left, right), path)
863
1004
  }
864
1005
  }
865
1006
  }
@@ -882,7 +1023,7 @@ function translateJsonSchemaMultiDocument(
882
1023
  if (
883
1024
  isObject(schema.not) &&
884
1025
  Object.keys(schema.not).length === 0
885
- ) return annotate(never, jsonSchemaAnnotations(schema))
1026
+ ) return annotate(never, jsonSchemaAnnotations(schema, options))
886
1027
  const wasInNestedResource = inNestedResource
887
1028
  inNestedResource ||= !isRoot && typeof schema.$id === "string"
888
1029
  for (const keyword of Object.keys(schema)) {
@@ -926,21 +1067,15 @@ function translateJsonSchemaMultiDocument(
926
1067
  [...path, "$ref"]
927
1068
  )
928
1069
  }
929
- const $ref = JsonSchema.getReferenceKey(schema.$ref)
930
- if ($ref === undefined) {
1070
+ const key = JsonSchema.getReferenceKey(schema.$ref)
1071
+ if (key !== undefined && !Object.hasOwn(document.definitions, key)) {
931
1072
  throw errorWithPath(
932
- `Unsupported $ref ${JSON.stringify(schema.$ref)}. Use "#/$defs/Name".`,
1073
+ `Missing definition ${JSON.stringify(key)} for $ref ${JSON.stringify(schema.$ref)}.`,
933
1074
  [...path, "$ref"]
934
1075
  )
935
1076
  }
936
- if (!Object.hasOwn(document.definitions, $ref)) {
937
- throw errorWithPath(
938
- `Missing definition ${JSON.stringify($ref)} for $ref ${JSON.stringify(schema.$ref)}.`,
939
- [...path, "$ref"]
940
- )
941
- }
942
- if (!reachableDefinitions.has($ref)) reachableDefinitions.set($ref, path)
943
- const reference: SchemaRepresentation.Reference = { _tag: "Reference", $ref }
1077
+ const $ref = key ?? resolvePointer(schema.$ref, path)
1078
+ const reference: ImportedReference = { _tag: "Reference", $ref, path }
944
1079
  representation = representation._tag === "Unknown"
945
1080
  ? reference
946
1081
  : representation._tag === "Never"
@@ -955,11 +1090,7 @@ function translateJsonSchemaMultiDocument(
955
1090
  path
956
1091
  )
957
1092
  }
958
- const annotations = jsonSchemaAnnotations(schema)
959
- if (annotations !== undefined && representation._tag === "Reference") {
960
- annotatedReferences.push({ reference: representation, path })
961
- }
962
- representation = annotate(representation, annotations)
1093
+ representation = annotate(representation, jsonSchemaAnnotations(schema, options))
963
1094
 
964
1095
  if (Array.isArray(schema.allOf)) {
965
1096
  for (let index = 0; index < schema.allOf.length; index++) {
@@ -1018,7 +1149,7 @@ function translateJsonSchemaMultiDocument(
1018
1149
  return {
1019
1150
  _tag: "Number",
1020
1151
  checks: [
1021
- jsonSchemaFilter(type === "number" ? "effect/schema/isFinite" : "effect/schema/isInt", null),
1152
+ makeFilter(type === "number" ? Schema.isFinite() : Schema.isInt()),
1022
1153
  ...collectNumberChecks(schema)
1023
1154
  ]
1024
1155
  }
@@ -1051,7 +1182,7 @@ function translateJsonSchemaMultiDocument(
1051
1182
  }
1052
1183
  case "object": {
1053
1184
  const scope = collectObjectScope(schema, path)
1054
- return lowerObject([scope], collectObjectChecks(schema, path), undefined, path)
1185
+ return lowerObject([scope], { checks: collectObjectChecks(schema, path) }, path)
1055
1186
  }
1056
1187
  default:
1057
1188
  return unknown
@@ -1074,7 +1205,7 @@ function translateJsonSchemaMultiDocument(
1074
1205
  } catch {
1075
1206
  throw errorWithPath("Cannot import pattern using ECMAScript Unicode mode.", path)
1076
1207
  }
1077
- return jsonSchemaFilter("effect/schema/isPattern", { source: regex.source, flags: regex.flags })
1208
+ return makeFilter(Schema.isPattern(regex))
1078
1209
  }
1079
1210
  }
1080
1211
  }
@@ -1082,11 +1213,11 @@ function translateJsonSchemaMultiDocument(
1082
1213
  function collectStringChecks(schema: JsonSchema.JsonSchema, path: Path): Array<Check> {
1083
1214
  const checks: Array<Check> = []
1084
1215
  if (schema.minLength === 1) {
1085
- addNumberCheck(checks, schema.minLength, "effect/schema/isMinLength", "minLength")
1216
+ addNumberCheck(checks, schema.minLength, Schema.isMinLength)
1086
1217
  } else {
1087
- addNumberCheck(checks, schema.minLength, "effect/schema/isMinCodePoints", "minCodePoints")
1218
+ addNumberCheck(checks, schema.minLength, Schema.isMinCodePoints)
1088
1219
  }
1089
- addNumberCheck(checks, schema.maxLength, "effect/schema/isMaxCodePoints", "maxCodePoints")
1220
+ addNumberCheck(checks, schema.maxLength, Schema.isMaxCodePoints)
1090
1221
  if (typeof schema.pattern === "string") {
1091
1222
  const check = importPatternCheck(schema.pattern, [...path, "pattern"])
1092
1223
  if (check !== undefined) checks.push(check)
@@ -1096,11 +1227,11 @@ function translateJsonSchemaMultiDocument(
1096
1227
 
1097
1228
  function collectNumberChecks(schema: JsonSchema.JsonSchema): Array<Check> {
1098
1229
  const checks: Array<Check> = []
1099
- addNumberCheck(checks, schema.minimum, "effect/schema/isGreaterThanOrEqualTo", "minimum")
1100
- addNumberCheck(checks, schema.maximum, "effect/schema/isLessThanOrEqualTo", "maximum")
1101
- addNumberCheck(checks, schema.exclusiveMinimum, "effect/schema/isGreaterThan", "exclusiveMinimum")
1102
- addNumberCheck(checks, schema.exclusiveMaximum, "effect/schema/isLessThan", "exclusiveMaximum")
1103
- addNumberCheck(checks, schema.multipleOf, "effect/schema/isMultipleOf", "divisor")
1230
+ addNumberCheck(checks, schema.minimum, Schema.isGreaterThanOrEqualTo)
1231
+ addNumberCheck(checks, schema.maximum, Schema.isLessThanOrEqualTo)
1232
+ addNumberCheck(checks, schema.exclusiveMinimum, Schema.isGreaterThan)
1233
+ addNumberCheck(checks, schema.exclusiveMaximum, Schema.isLessThan)
1234
+ addNumberCheck(checks, schema.multipleOf, Schema.isMultipleOf)
1104
1235
  return checks
1105
1236
  }
1106
1237
 
@@ -1110,13 +1241,13 @@ function translateJsonSchemaMultiDocument(
1110
1241
  !Array.isArray(schema.prefixItems) ||
1111
1242
  typeof schema.minItems === "number" && schema.minItems > schema.prefixItems.length
1112
1243
  ) {
1113
- addNumberCheck(checks, schema.minItems, "effect/schema/isMinLength", "minLength")
1244
+ addNumberCheck(checks, schema.minItems, Schema.isMinLength)
1114
1245
  }
1115
1246
  if (!isMaxItemsRedundant) {
1116
- addNumberCheck(checks, schema.maxItems, "effect/schema/isMaxLength", "maxLength")
1247
+ addNumberCheck(checks, schema.maxItems, Schema.isMaxLength)
1117
1248
  }
1118
1249
  if (schema.uniqueItems === true) {
1119
- checks.push(jsonSchemaFilter("effect/schema/isUnique", null))
1250
+ checks.push(makeFilter(Schema.isUnique()))
1120
1251
  }
1121
1252
  return checks
1122
1253
  }
@@ -1170,44 +1301,33 @@ function translateJsonSchemaMultiDocument(
1170
1301
  path: Path
1171
1302
  ): Array<Check> {
1172
1303
  const checks: Array<Check> = []
1173
- addNumberCheck(checks, schema.minProperties, "effect/schema/isMinProperties", "minProperties")
1174
- addNumberCheck(checks, schema.maxProperties, "effect/schema/isMaxProperties", "maxProperties")
1304
+ addNumberCheck(checks, schema.minProperties, Schema.isMinProperties)
1305
+ addNumberCheck(checks, schema.maxProperties, Schema.isMaxProperties)
1175
1306
  if (schema.propertyNames !== undefined) {
1176
1307
  const propertyNamesPath = [...path, "propertyNames"]
1177
- checks.push(jsonSchemaFilter(
1178
- "effect/schema/isPropertyNames",
1179
- null,
1180
- [intersect(
1308
+ checks.push({
1309
+ _tag: "PropertyNames",
1310
+ type: intersect(
1181
1311
  string,
1182
1312
  translateSchema(schema.propertyNames, propertyNamesPath),
1183
1313
  propertyNamesPath
1184
- )]
1185
- ))
1314
+ )
1315
+ })
1186
1316
  }
1187
1317
  return checks
1188
1318
  }
1189
1319
 
1190
- const references: Record<string, Representation> = {}
1191
- const representations = document.schemas.map((schema, index) =>
1320
+ return document.schemas.map((schema, index) =>
1192
1321
  finalize(translateSchema(schema, singleRoot ? ["schema"] : ["schemas", index], true))
1193
- ) as [Representation, ...Array<Representation>]
1194
- // Definitions expanded away by intersections do not need a standalone output schema.
1195
- for (const key of finalReferences) {
1196
- InternalRecord.assignProperty(references, key, finalize(translateDefinition(key, reachableDefinitions.get(key)!)))
1197
- }
1198
- for (const { reference, path } of annotatedReferences) {
1199
- resolveReference(reference, path)
1200
- }
1201
- return { representations, references }
1322
+ ) as [Schema.Top, ...Array<Schema.Top>]
1202
1323
  }
1203
1324
 
1204
1325
  /** @internal */
1205
1326
  export function fromJsonSchemaDocument(
1206
1327
  document: JsonSchema.Document<"draft-2020-12">,
1207
- options: SchemaRepresentation.FromJsonSchemaOptions | undefined,
1208
- revivers: ReadonlyArray<SchemaRepresentation.AnyReviver>
1328
+ options: SchemaRepresentation.FromJsonSchemaOptions | undefined
1209
1329
  ): Schema.Top {
1210
- const translated = translateJsonSchemaMultiDocument(
1330
+ return fromJsonSchemaMultiDocument(
1211
1331
  {
1212
1332
  dialect: document.dialect,
1213
1333
  schemas: [document.schema],
@@ -1215,18 +1335,5 @@ export function fromJsonSchemaDocument(
1215
1335
  },
1216
1336
  options,
1217
1337
  true
1218
- )
1219
- return fromRepresentation({
1220
- representation: translated.representations[0],
1221
- references: translated.references
1222
- }, revivers)
1223
- }
1224
-
1225
- /** @internal */
1226
- export function fromJsonSchemaMultiDocument(
1227
- document: JsonSchema.MultiDocument<"draft-2020-12">,
1228
- options: SchemaRepresentation.FromJsonSchemaOptions | undefined,
1229
- revivers: ReadonlyArray<SchemaRepresentation.AnyReviver>
1230
- ): readonly [Schema.Top, ...Array<Schema.Top>] {
1231
- return fromRepresentations(translateJsonSchemaMultiDocument(document, options), revivers)
1338
+ )[0]
1232
1339
  }