effect 4.0.4 → 4.0.6

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 (1079) 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/src/52_graphql/10_basics.ts +19 -13
  4. package/ai-docs/src/52_graphql/30_batching.ts +6 -4
  5. package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
  6. package/ai-docs/tsconfig.json +3 -1
  7. package/dist/Array.d.ts +207 -58
  8. package/dist/Array.d.ts.map +1 -1
  9. package/dist/Array.js +45 -22
  10. package/dist/Array.js.map +1 -1
  11. package/dist/Bytes.d.ts +79 -0
  12. package/dist/Bytes.d.ts.map +1 -0
  13. package/dist/Bytes.js +109 -0
  14. package/dist/Bytes.js.map +1 -0
  15. package/dist/Channel.d.ts +187 -14
  16. package/dist/Channel.d.ts.map +1 -1
  17. package/dist/Channel.js +142 -33
  18. package/dist/Channel.js.map +1 -1
  19. package/dist/ChannelSchema.d.ts.map +1 -1
  20. package/dist/ChannelSchema.js.map +1 -1
  21. package/dist/Chunk.d.ts +39 -21
  22. package/dist/Chunk.d.ts.map +1 -1
  23. package/dist/Chunk.js +26 -17
  24. package/dist/Chunk.js.map +1 -1
  25. package/dist/Config.d.ts.map +1 -1
  26. package/dist/Config.js +8 -3
  27. package/dist/Config.js.map +1 -1
  28. package/dist/ConfigProvider.d.ts.map +1 -1
  29. package/dist/ConfigProvider.js +34 -32
  30. package/dist/ConfigProvider.js.map +1 -1
  31. package/dist/Cron.d.ts +2 -2
  32. package/dist/Cron.d.ts.map +1 -1
  33. package/dist/Cron.js +6 -3
  34. package/dist/Cron.js.map +1 -1
  35. package/dist/Duration.d.ts.map +1 -1
  36. package/dist/Duration.js +58 -21
  37. package/dist/Duration.js.map +1 -1
  38. package/dist/Effect.d.ts +548 -182
  39. package/dist/Effect.d.ts.map +1 -1
  40. package/dist/Effect.js +261 -76
  41. package/dist/Effect.js.map +1 -1
  42. package/dist/Equivalence.d.ts +2 -1
  43. package/dist/Equivalence.d.ts.map +1 -1
  44. package/dist/Equivalence.js +12 -8
  45. package/dist/Equivalence.js.map +1 -1
  46. package/dist/Exit.d.ts +24 -9
  47. package/dist/Exit.d.ts.map +1 -1
  48. package/dist/Exit.js +8 -3
  49. package/dist/Exit.js.map +1 -1
  50. package/dist/FiberHandle.d.ts +2 -0
  51. package/dist/FiberHandle.d.ts.map +1 -1
  52. package/dist/FiberHandle.js +9 -4
  53. package/dist/FiberHandle.js.map +1 -1
  54. package/dist/FiberMap.d.ts +2 -0
  55. package/dist/FiberMap.d.ts.map +1 -1
  56. package/dist/FiberMap.js +5 -2
  57. package/dist/FiberMap.js.map +1 -1
  58. package/dist/FileSystem.d.ts +28 -9
  59. package/dist/FileSystem.d.ts.map +1 -1
  60. package/dist/FileSystem.js +3 -0
  61. package/dist/FileSystem.js.map +1 -1
  62. package/dist/Graph.d.ts.map +1 -1
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/HashSet.d.ts.map +1 -1
  65. package/dist/HashSet.js.map +1 -1
  66. package/dist/Iterable.d.ts.map +1 -1
  67. package/dist/Iterable.js +18 -17
  68. package/dist/Iterable.js.map +1 -1
  69. package/dist/JsonSchema.d.ts +9 -3
  70. package/dist/JsonSchema.d.ts.map +1 -1
  71. package/dist/JsonSchema.js +19 -3
  72. package/dist/JsonSchema.js.map +1 -1
  73. package/dist/Layer.d.ts.map +1 -1
  74. package/dist/Layer.js +2 -2
  75. package/dist/Layer.js.map +1 -1
  76. package/dist/ManagedRuntime.d.ts +19 -1
  77. package/dist/ManagedRuntime.d.ts.map +1 -1
  78. package/dist/ManagedRuntime.js +62 -6
  79. package/dist/ManagedRuntime.js.map +1 -1
  80. package/dist/Match.d.ts +20 -6
  81. package/dist/Match.d.ts.map +1 -1
  82. package/dist/Match.js +2 -2
  83. package/dist/Match.js.map +1 -1
  84. package/dist/Metric.d.ts +132 -0
  85. package/dist/Metric.d.ts.map +1 -1
  86. package/dist/Metric.js +197 -25
  87. package/dist/Metric.js.map +1 -1
  88. package/dist/MutableHashMap.d.ts.map +1 -1
  89. package/dist/MutableHashMap.js.map +1 -1
  90. package/dist/Number.js +2 -2
  91. package/dist/Number.js.map +1 -1
  92. package/dist/Optic.d.ts.map +1 -1
  93. package/dist/Optic.js.map +1 -1
  94. package/dist/Path.d.ts +37 -5
  95. package/dist/Path.d.ts.map +1 -1
  96. package/dist/Path.js +44 -6
  97. package/dist/Path.js.map +1 -1
  98. package/dist/PubSub.d.ts.map +1 -1
  99. package/dist/PubSub.js +12 -7
  100. package/dist/PubSub.js.map +1 -1
  101. package/dist/Queue.d.ts +4 -1
  102. package/dist/Queue.d.ts.map +1 -1
  103. package/dist/Queue.js +4 -1
  104. package/dist/Queue.js.map +1 -1
  105. package/dist/Random.d.ts.map +1 -1
  106. package/dist/Random.js +1 -1
  107. package/dist/Random.js.map +1 -1
  108. package/dist/RcMap.d.ts +12 -7
  109. package/dist/RcMap.d.ts.map +1 -1
  110. package/dist/RcMap.js +9 -6
  111. package/dist/RcMap.js.map +1 -1
  112. package/dist/Record.d.ts +51 -0
  113. package/dist/Record.d.ts.map +1 -1
  114. package/dist/Record.js +17 -0
  115. package/dist/Record.js.map +1 -1
  116. package/dist/Ref.d.ts.map +1 -1
  117. package/dist/Ref.js.map +1 -1
  118. package/dist/References.d.ts +5 -4
  119. package/dist/References.d.ts.map +1 -1
  120. package/dist/References.js +5 -4
  121. package/dist/References.js.map +1 -1
  122. package/dist/RequestResolver.d.ts +31 -1
  123. package/dist/RequestResolver.d.ts.map +1 -1
  124. package/dist/RequestResolver.js +39 -4
  125. package/dist/RequestResolver.js.map +1 -1
  126. package/dist/Resource.js +1 -1
  127. package/dist/Resource.js.map +1 -1
  128. package/dist/Runtime.d.ts +3 -3
  129. package/dist/Runtime.d.ts.map +1 -1
  130. package/dist/Runtime.js +18 -15
  131. package/dist/Runtime.js.map +1 -1
  132. package/dist/Schedule.d.ts.map +1 -1
  133. package/dist/Schedule.js.map +1 -1
  134. package/dist/Schema.d.ts +383 -326
  135. package/dist/Schema.d.ts.map +1 -1
  136. package/dist/Schema.js +338 -17
  137. package/dist/Schema.js.map +1 -1
  138. package/dist/SchemaAST.d.ts +5 -5
  139. package/dist/SchemaAST.d.ts.map +1 -1
  140. package/dist/SchemaAST.js +24 -8
  141. package/dist/SchemaAST.js.map +1 -1
  142. package/dist/SchemaGetter.d.ts +8 -3
  143. package/dist/SchemaGetter.d.ts.map +1 -1
  144. package/dist/SchemaGetter.js +15 -5
  145. package/dist/SchemaGetter.js.map +1 -1
  146. package/dist/SchemaIssue.d.ts +4 -4
  147. package/dist/SchemaIssue.d.ts.map +1 -1
  148. package/dist/SchemaIssue.js +29 -51
  149. package/dist/SchemaIssue.js.map +1 -1
  150. package/dist/SchemaRepresentation.d.ts +56 -1
  151. package/dist/SchemaRepresentation.d.ts.map +1 -1
  152. package/dist/SchemaRepresentation.js +18 -0
  153. package/dist/SchemaRepresentation.js.map +1 -1
  154. package/dist/SchemaTransformation.d.ts +1 -1
  155. package/dist/SchemaTransformation.js +1 -1
  156. package/dist/Scope.d.ts +12 -2
  157. package/dist/Scope.d.ts.map +1 -1
  158. package/dist/Scope.js +5 -0
  159. package/dist/Scope.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +10 -7
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +9 -5
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/SemVer.d.ts +1196 -0
  165. package/dist/SemVer.d.ts.map +1 -0
  166. package/dist/SemVer.js +756 -0
  167. package/dist/SemVer.js.map +1 -0
  168. package/dist/SemVerRange.d.ts +559 -0
  169. package/dist/SemVerRange.d.ts.map +1 -0
  170. package/dist/SemVerRange.js +551 -0
  171. package/dist/SemVerRange.js.map +1 -0
  172. package/dist/Sink.d.ts.map +1 -1
  173. package/dist/Sink.js +6 -2
  174. package/dist/Sink.js.map +1 -1
  175. package/dist/Stream.d.ts +235 -8
  176. package/dist/Stream.d.ts.map +1 -1
  177. package/dist/Stream.js +145 -60
  178. package/dist/Stream.js.map +1 -1
  179. package/dist/String.d.ts +16 -2
  180. package/dist/String.d.ts.map +1 -1
  181. package/dist/String.js +25 -10
  182. package/dist/String.js.map +1 -1
  183. package/dist/TextDiff.d.ts +399 -0
  184. package/dist/TextDiff.d.ts.map +1 -0
  185. package/dist/TextDiff.js +634 -0
  186. package/dist/TextDiff.js.map +1 -0
  187. package/dist/TxHashMap.d.ts.map +1 -1
  188. package/dist/TxHashMap.js.map +1 -1
  189. package/dist/TxHashSet.d.ts.map +1 -1
  190. package/dist/TxHashSet.js.map +1 -1
  191. package/dist/TxRef.d.ts.map +1 -1
  192. package/dist/TxRef.js +3 -2
  193. package/dist/TxRef.js.map +1 -1
  194. package/dist/ai/AiError.d.ts +78 -14
  195. package/dist/ai/AiError.d.ts.map +1 -1
  196. package/dist/ai/AiError.js +51 -3
  197. package/dist/ai/AiError.js.map +1 -1
  198. package/dist/ai/Chat.d.ts +1 -2
  199. package/dist/ai/Chat.d.ts.map +1 -1
  200. package/dist/ai/Chat.js +6 -3
  201. package/dist/ai/Chat.js.map +1 -1
  202. package/dist/ai/Decision.d.ts +116 -20
  203. package/dist/ai/Decision.d.ts.map +1 -1
  204. package/dist/ai/Decision.js +37 -3
  205. package/dist/ai/Decision.js.map +1 -1
  206. package/dist/ai/DecisionModel.d.ts +129 -11
  207. package/dist/ai/DecisionModel.d.ts.map +1 -1
  208. package/dist/ai/DecisionModel.js +183 -95
  209. package/dist/ai/DecisionModel.js.map +1 -1
  210. package/dist/ai/EmbeddingModel.d.ts +10 -0
  211. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  212. package/dist/ai/EmbeddingModel.js +21 -7
  213. package/dist/ai/EmbeddingModel.js.map +1 -1
  214. package/dist/ai/LanguageModel.d.ts.map +1 -1
  215. package/dist/ai/LanguageModel.js +47 -35
  216. package/dist/ai/LanguageModel.js.map +1 -1
  217. package/dist/ai/McpClient.d.ts +289 -0
  218. package/dist/ai/McpClient.d.ts.map +1 -0
  219. package/dist/ai/McpClient.js +819 -0
  220. package/dist/ai/McpClient.js.map +1 -0
  221. package/dist/ai/McpClientError.d.ts +254 -0
  222. package/dist/ai/McpClientError.d.ts.map +1 -0
  223. package/dist/ai/McpClientError.js +260 -0
  224. package/dist/ai/McpClientError.js.map +1 -0
  225. package/dist/ai/McpProtocol.d.ts +2 -2
  226. package/dist/ai/McpProtocol.d.ts.map +1 -1
  227. package/dist/ai/McpSchema.d.ts +368 -235
  228. package/dist/ai/McpSchema.d.ts.map +1 -1
  229. package/dist/ai/McpSchema.js +94 -24
  230. package/dist/ai/McpSchema.js.map +1 -1
  231. package/dist/ai/McpServer.d.ts +6 -52
  232. package/dist/ai/McpServer.d.ts.map +1 -1
  233. package/dist/ai/McpServer.js +27 -50
  234. package/dist/ai/McpServer.js.map +1 -1
  235. package/dist/ai/Prompt.d.ts +22 -20
  236. package/dist/ai/Prompt.d.ts.map +1 -1
  237. package/dist/ai/Prompt.js +23 -1
  238. package/dist/ai/Prompt.js.map +1 -1
  239. package/dist/ai/Response.d.ts +148 -4
  240. package/dist/ai/Response.d.ts.map +1 -1
  241. package/dist/ai/Response.js +35 -37
  242. package/dist/ai/Response.js.map +1 -1
  243. package/dist/ai/Tool.d.ts +12 -4
  244. package/dist/ai/Tool.d.ts.map +1 -1
  245. package/dist/ai/Tool.js.map +1 -1
  246. package/dist/ai/Toolkit.d.ts +48 -1
  247. package/dist/ai/Toolkit.d.ts.map +1 -1
  248. package/dist/ai/Toolkit.js +65 -12
  249. package/dist/ai/Toolkit.js.map +1 -1
  250. package/dist/ai/index.d.ts +10 -0
  251. package/dist/ai/index.d.ts.map +1 -1
  252. package/dist/ai/index.js +10 -0
  253. package/dist/ai/index.js.map +1 -1
  254. package/dist/ai/internal/mcpCore.js.map +1 -1
  255. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  256. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  257. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  258. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  259. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  260. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  261. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  262. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  263. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  264. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  265. package/dist/ai/internal/mcpProtocol.js +16 -2
  266. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  267. package/dist/ai/internal/mcpRuntime.js +3 -4
  268. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  269. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  270. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  271. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  272. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  273. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  274. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  275. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  276. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  277. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  278. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  279. package/dist/cli/CliError.d.ts +42 -2
  280. package/dist/cli/CliError.d.ts.map +1 -1
  281. package/dist/cli/CliError.js +44 -5
  282. package/dist/cli/CliError.js.map +1 -1
  283. package/dist/cli/Command.d.ts +286 -2
  284. package/dist/cli/Command.d.ts.map +1 -1
  285. package/dist/cli/Command.js +107 -6
  286. package/dist/cli/Command.js.map +1 -1
  287. package/dist/cli/Completions.d.ts +10 -0
  288. package/dist/cli/Completions.d.ts.map +1 -1
  289. package/dist/cli/Completions.js.map +1 -1
  290. package/dist/cli/Flag.d.ts +215 -0
  291. package/dist/cli/Flag.d.ts.map +1 -1
  292. package/dist/cli/Flag.js +89 -0
  293. package/dist/cli/Flag.js.map +1 -1
  294. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  295. package/dist/cli/GlobalFlag.js +3 -3
  296. package/dist/cli/GlobalFlag.js.map +1 -1
  297. package/dist/cli/Param.d.ts +194 -0
  298. package/dist/cli/Param.d.ts.map +1 -1
  299. package/dist/cli/Param.js +86 -0
  300. package/dist/cli/Param.js.map +1 -1
  301. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  302. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  303. package/dist/cli/TerminalCapabilities.js +122 -0
  304. package/dist/cli/TerminalCapabilities.js.map +1 -0
  305. package/dist/cli/index.d.ts +5 -0
  306. package/dist/cli/index.d.ts.map +1 -1
  307. package/dist/cli/index.js +5 -0
  308. package/dist/cli/index.js.map +1 -1
  309. package/dist/cli/internal/command.d.ts +2 -1
  310. package/dist/cli/internal/command.d.ts.map +1 -1
  311. package/dist/cli/internal/command.js +7 -3
  312. package/dist/cli/internal/command.js.map +1 -1
  313. package/dist/cli/internal/completions/bash.js +7 -5
  314. package/dist/cli/internal/completions/bash.js.map +1 -1
  315. package/dist/cli/internal/completions/descriptor.js +16 -1
  316. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  317. package/dist/cli/internal/completions/fish.js +12 -10
  318. package/dist/cli/internal/completions/fish.js.map +1 -1
  319. package/dist/cli/internal/completions/powershell.js +20 -10
  320. package/dist/cli/internal/completions/powershell.js.map +1 -1
  321. package/dist/cli/internal/completions/zsh.js +15 -8
  322. package/dist/cli/internal/completions/zsh.js.map +1 -1
  323. package/dist/cli/internal/formatter.d.ts +2 -0
  324. package/dist/cli/internal/formatter.d.ts.map +1 -0
  325. package/dist/cli/internal/formatter.js +15 -0
  326. package/dist/cli/internal/formatter.js.map +1 -0
  327. package/dist/cli/internal/lexer.js +24 -10
  328. package/dist/cli/internal/lexer.js.map +1 -1
  329. package/dist/cli/internal/parser.js +35 -15
  330. package/dist/cli/internal/parser.js.map +1 -1
  331. package/dist/cli/internal/wizard.d.ts.map +1 -1
  332. package/dist/cli/internal/wizard.js +2 -1
  333. package/dist/cli/internal/wizard.js.map +1 -1
  334. package/dist/cluster/ClusterCron.d.ts +29 -1
  335. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  336. package/dist/cluster/ClusterCron.js +64 -32
  337. package/dist/cluster/ClusterCron.js.map +1 -1
  338. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  339. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  340. package/dist/cluster/ClusterMetrics.js +151 -7
  341. package/dist/cluster/ClusterMetrics.js.map +1 -1
  342. package/dist/cluster/ClusterWorkflowEngine.d.ts +2 -1
  343. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  344. package/dist/cluster/ClusterWorkflowEngine.js +98 -18
  345. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  346. package/dist/cluster/Entity.d.ts +2 -0
  347. package/dist/cluster/Entity.d.ts.map +1 -1
  348. package/dist/cluster/Entity.js.map +1 -1
  349. package/dist/cluster/MessageStorage.d.ts +21 -0
  350. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  351. package/dist/cluster/MessageStorage.js +20 -12
  352. package/dist/cluster/MessageStorage.js.map +1 -1
  353. package/dist/cluster/Runners.d.ts.map +1 -1
  354. package/dist/cluster/Runners.js +96 -37
  355. package/dist/cluster/Runners.js.map +1 -1
  356. package/dist/cluster/Sharding.d.ts +1 -0
  357. package/dist/cluster/Sharding.d.ts.map +1 -1
  358. package/dist/cluster/Sharding.js +95 -32
  359. package/dist/cluster/Sharding.js.map +1 -1
  360. package/dist/cluster/ShardingConfig.d.ts +20 -0
  361. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  362. package/dist/cluster/ShardingConfig.js +4 -0
  363. package/dist/cluster/ShardingConfig.js.map +1 -1
  364. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  365. package/dist/cluster/SqlMessageStorage.js +40 -50
  366. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  367. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  368. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  369. package/dist/cluster/SqlRunnerStorage.js +10 -4
  370. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  371. package/dist/cluster/internal/entityManager.js +66 -9
  372. package/dist/cluster/internal/entityManager.js.map +1 -1
  373. package/dist/devtools/DevTools.d.ts +3 -2
  374. package/dist/devtools/DevTools.d.ts.map +1 -1
  375. package/dist/devtools/DevTools.js +3 -2
  376. package/dist/devtools/DevTools.js.map +1 -1
  377. package/dist/devtools/DevToolsClient.d.ts +11 -0
  378. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  379. package/dist/devtools/DevToolsClient.js +31 -4
  380. package/dist/devtools/DevToolsClient.js.map +1 -1
  381. package/dist/encoding/Base64Url.d.ts +29 -0
  382. package/dist/encoding/Base64Url.d.ts.map +1 -1
  383. package/dist/encoding/Base64Url.js +29 -0
  384. package/dist/encoding/Base64Url.js.map +1 -1
  385. package/dist/encoding/Ini.d.ts.map +1 -1
  386. package/dist/encoding/Ini.js +3 -0
  387. package/dist/encoding/Ini.js.map +1 -1
  388. package/dist/encoding/JsonArray.d.ts +270 -0
  389. package/dist/encoding/JsonArray.d.ts.map +1 -0
  390. package/dist/encoding/JsonArray.js +691 -0
  391. package/dist/encoding/JsonArray.js.map +1 -0
  392. package/dist/encoding/Ndjson.d.ts +43 -4
  393. package/dist/encoding/Ndjson.d.ts.map +1 -1
  394. package/dist/encoding/Ndjson.js +169 -18
  395. package/dist/encoding/Ndjson.js.map +1 -1
  396. package/dist/encoding/SchemaBinary.d.ts +9 -1
  397. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  398. package/dist/encoding/SchemaBinary.js +12 -19
  399. package/dist/encoding/SchemaBinary.js.map +1 -1
  400. package/dist/encoding/Sse.js +1 -1
  401. package/dist/encoding/Sse.js.map +1 -1
  402. package/dist/encoding/Tar.d.ts +309 -0
  403. package/dist/encoding/Tar.d.ts.map +1 -0
  404. package/dist/encoding/Tar.js +1182 -0
  405. package/dist/encoding/Tar.js.map +1 -0
  406. package/dist/encoding/Toml.js +3 -3
  407. package/dist/encoding/Toml.js.map +1 -1
  408. package/dist/encoding/Xml.d.ts +464 -0
  409. package/dist/encoding/Xml.d.ts.map +1 -0
  410. package/dist/encoding/Xml.js +1619 -0
  411. package/dist/encoding/Xml.js.map +1 -0
  412. package/dist/encoding/Yaml.d.ts +6 -2
  413. package/dist/encoding/Yaml.d.ts.map +1 -1
  414. package/dist/encoding/Yaml.js +97 -34
  415. package/dist/encoding/Yaml.js.map +1 -1
  416. package/dist/encoding/Zip.d.ts +413 -0
  417. package/dist/encoding/Zip.d.ts.map +1 -0
  418. package/dist/encoding/Zip.js +1255 -0
  419. package/dist/encoding/Zip.js.map +1 -0
  420. package/dist/encoding/index.d.ts +20 -0
  421. package/dist/encoding/index.d.ts.map +1 -1
  422. package/dist/encoding/index.js +20 -0
  423. package/dist/encoding/index.js.map +1 -1
  424. package/dist/eventlog/EventJournal.d.ts +90 -5
  425. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  426. package/dist/eventlog/EventJournal.js +488 -228
  427. package/dist/eventlog/EventJournal.js.map +1 -1
  428. package/dist/eventlog/EventLog.d.ts +180 -12
  429. package/dist/eventlog/EventLog.d.ts.map +1 -1
  430. package/dist/eventlog/EventLog.js +394 -146
  431. package/dist/eventlog/EventLog.js.map +1 -1
  432. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  433. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  434. package/dist/eventlog/EventLogEncryption.js +97 -38
  435. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  436. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  437. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  438. package/dist/eventlog/EventLogMessage.js +45 -11
  439. package/dist/eventlog/EventLogMessage.js.map +1 -1
  440. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  441. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  442. package/dist/eventlog/EventLogRemote.js +51 -14
  443. package/dist/eventlog/EventLogRemote.js.map +1 -1
  444. package/dist/eventlog/EventLogServer.d.ts +46 -3
  445. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  446. package/dist/eventlog/EventLogServer.js +119 -19
  447. package/dist/eventlog/EventLogServer.js.map +1 -1
  448. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  449. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  450. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  451. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  452. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  453. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  454. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  455. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  456. package/dist/eventlog/EventRow.d.ts +288 -0
  457. package/dist/eventlog/EventRow.d.ts.map +1 -0
  458. package/dist/eventlog/EventRow.js +435 -0
  459. package/dist/eventlog/EventRow.js.map +1 -0
  460. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  461. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  462. package/dist/eventlog/SqlEventJournal.js +387 -159
  463. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  464. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  465. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  466. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  467. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  468. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  469. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  470. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  471. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  472. package/dist/eventlog/index.d.ts +5 -0
  473. package/dist/eventlog/index.d.ts.map +1 -1
  474. package/dist/eventlog/index.js +5 -0
  475. package/dist/eventlog/index.js.map +1 -1
  476. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  477. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  478. package/dist/eventlog/internal/conflicts.js +92 -0
  479. package/dist/eventlog/internal/conflicts.js.map +1 -0
  480. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  481. package/dist/graphql/GraphQLClient.js +12 -5
  482. package/dist/graphql/GraphQLClient.js.map +1 -1
  483. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  484. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  485. package/dist/graphql/GraphQLClientError.js +4 -18
  486. package/dist/graphql/GraphQLClientError.js.map +1 -1
  487. package/dist/graphql/GraphQLProtocol.d.ts +252 -11
  488. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  489. package/dist/graphql/GraphQLProtocol.js +99 -8
  490. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  491. package/dist/graphql/GraphQLResolver.d.ts +3 -1
  492. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  493. package/dist/graphql/GraphQLResolver.js +91 -19
  494. package/dist/graphql/GraphQLResolver.js.map +1 -1
  495. package/dist/http/FetchHttpClient.d.ts +13 -3
  496. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  497. package/dist/http/FetchHttpClient.js +56 -6
  498. package/dist/http/FetchHttpClient.js.map +1 -1
  499. package/dist/http/FindMyWay/internal/router.js +12 -1
  500. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  501. package/dist/http/Headers.d.ts +230 -3
  502. package/dist/http/Headers.d.ts.map +1 -1
  503. package/dist/http/Headers.js +267 -5
  504. package/dist/http/Headers.js.map +1 -1
  505. package/dist/http/HttpClient.d.ts +105 -0
  506. package/dist/http/HttpClient.d.ts.map +1 -1
  507. package/dist/http/HttpClient.js +69 -17
  508. package/dist/http/HttpClient.js.map +1 -1
  509. package/dist/http/HttpClientError.d.ts.map +1 -1
  510. package/dist/http/HttpClientError.js +8 -6
  511. package/dist/http/HttpClientError.js.map +1 -1
  512. package/dist/http/HttpClientRequest.d.ts +274 -7
  513. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  514. package/dist/http/HttpClientRequest.js +91 -3
  515. package/dist/http/HttpClientRequest.js.map +1 -1
  516. package/dist/http/HttpClientResponse.d.ts +53 -0
  517. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  518. package/dist/http/HttpClientResponse.js +47 -0
  519. package/dist/http/HttpClientResponse.js.map +1 -1
  520. package/dist/http/HttpEffect.d.ts +6 -2
  521. package/dist/http/HttpEffect.d.ts.map +1 -1
  522. package/dist/http/HttpEffect.js +21 -17
  523. package/dist/http/HttpEffect.js.map +1 -1
  524. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  525. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  526. package/dist/http/HttpIncomingMessage.js +3 -23
  527. package/dist/http/HttpIncomingMessage.js.map +1 -1
  528. package/dist/http/HttpMiddleware.d.ts +179 -2
  529. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  530. package/dist/http/HttpMiddleware.js +226 -18
  531. package/dist/http/HttpMiddleware.js.map +1 -1
  532. package/dist/http/HttpRouter.d.ts.map +1 -1
  533. package/dist/http/HttpRouter.js +58 -14
  534. package/dist/http/HttpRouter.js.map +1 -1
  535. package/dist/http/HttpServerError.d.ts +5 -2
  536. package/dist/http/HttpServerError.d.ts.map +1 -1
  537. package/dist/http/HttpServerError.js +11 -7
  538. package/dist/http/HttpServerError.js.map +1 -1
  539. package/dist/http/HttpServerRequest.d.ts +25 -5
  540. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  541. package/dist/http/HttpServerRequest.js +38 -12
  542. package/dist/http/HttpServerRequest.js.map +1 -1
  543. package/dist/http/HttpServerResponse.d.ts +17 -8
  544. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  545. package/dist/http/HttpServerResponse.js +37 -21
  546. package/dist/http/HttpServerResponse.js.map +1 -1
  547. package/dist/http/HttpStaticServer.d.ts +0 -12
  548. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  549. package/dist/http/HttpStaticServer.js +25 -17
  550. package/dist/http/HttpStaticServer.js.map +1 -1
  551. package/dist/http/HttpTraceContext.js +1 -1
  552. package/dist/http/HttpTraceContext.js.map +1 -1
  553. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  554. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  555. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  556. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  557. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  558. package/dist/http/MultipartParser/internal/headers.js +4 -12
  559. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  560. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  561. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  562. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  563. package/dist/http/Url.d.ts.map +1 -1
  564. package/dist/http/Url.js +8 -2
  565. package/dist/http/Url.js.map +1 -1
  566. package/dist/http/UrlParams.d.ts +112 -8
  567. package/dist/http/UrlParams.d.ts.map +1 -1
  568. package/dist/http/UrlParams.js +141 -14
  569. package/dist/http/UrlParams.js.map +1 -1
  570. package/dist/http/internal/compression.d.ts +1 -1
  571. package/dist/http/internal/compression.d.ts.map +1 -1
  572. package/dist/http/internal/compression.js +2 -10
  573. package/dist/http/internal/compression.js.map +1 -1
  574. package/dist/http/internal/compressionBody.d.ts +2 -0
  575. package/dist/http/internal/compressionBody.d.ts.map +1 -0
  576. package/dist/http/internal/compressionBody.js +36 -0
  577. package/dist/http/internal/compressionBody.js.map +1 -0
  578. package/dist/http/internal/decompression.d.ts +2 -0
  579. package/dist/http/internal/decompression.d.ts.map +1 -0
  580. package/dist/http/internal/decompression.js +168 -0
  581. package/dist/http/internal/decompression.js.map +1 -0
  582. package/dist/http/internal/lazyStream.d.ts +2 -0
  583. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  584. package/dist/http/internal/lazyStream.js +18 -0
  585. package/dist/http/internal/lazyStream.js.map +1 -0
  586. package/dist/http/internal/requestState.d.ts +2 -0
  587. package/dist/http/internal/requestState.d.ts.map +1 -0
  588. package/dist/http/internal/requestState.js +28 -0
  589. package/dist/http/internal/requestState.js.map +1 -0
  590. package/dist/http/internal/tracing.js +14 -4
  591. package/dist/http/internal/tracing.js.map +1 -1
  592. package/dist/http/internal/urlParams.d.ts +2 -0
  593. package/dist/http/internal/urlParams.d.ts.map +1 -0
  594. package/dist/http/internal/urlParams.js +4 -0
  595. package/dist/http/internal/urlParams.js.map +1 -0
  596. package/dist/http/internal/webResponse.d.ts +2 -0
  597. package/dist/http/internal/webResponse.d.ts.map +1 -0
  598. package/dist/http/internal/webResponse.js +12 -0
  599. package/dist/http/internal/webResponse.js.map +1 -0
  600. package/dist/http-api/HttpApi.js +1 -1
  601. package/dist/http-api/HttpApi.js.map +1 -1
  602. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  603. package/dist/http-api/HttpApiBuilder.js +121 -18
  604. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  605. package/dist/http-api/HttpApiClient.d.ts +29 -4
  606. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  607. package/dist/http-api/HttpApiClient.js +85 -24
  608. package/dist/http-api/HttpApiClient.js.map +1 -1
  609. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  610. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  611. package/dist/http-api/HttpApiEndpoint.js +49 -5
  612. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  613. package/dist/http-api/HttpApiError.d.ts +58 -0
  614. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  615. package/dist/http-api/HttpApiError.js +38 -12
  616. package/dist/http-api/HttpApiError.js.map +1 -1
  617. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  618. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  619. package/dist/http-api/HttpApiScalar.js +6 -3
  620. package/dist/http-api/HttpApiScalar.js.map +1 -1
  621. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  622. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  623. package/dist/http-api/HttpApiSchema.js +137 -4
  624. package/dist/http-api/HttpApiSchema.js.map +1 -1
  625. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  626. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  627. package/dist/http-api/HttpApiSwagger.js +14 -4
  628. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  629. package/dist/http-api/HttpApiTest.d.ts +13 -2
  630. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  631. package/dist/http-api/HttpApiTest.js +30 -9
  632. package/dist/http-api/HttpApiTest.js.map +1 -1
  633. package/dist/http-api/OpenApi.d.ts +17 -3
  634. package/dist/http-api/OpenApi.d.ts.map +1 -1
  635. package/dist/http-api/OpenApi.js +57 -32
  636. package/dist/http-api/OpenApi.js.map +1 -1
  637. package/dist/http-api/internal/path.js +35 -10
  638. package/dist/http-api/internal/path.js.map +1 -1
  639. package/dist/index.d.ts +20 -0
  640. package/dist/index.d.ts.map +1 -1
  641. package/dist/index.js +20 -0
  642. package/dist/index.js.map +1 -1
  643. package/dist/internal/core.js +18 -2
  644. package/dist/internal/core.js.map +1 -1
  645. package/dist/internal/dateTime.js +19 -7
  646. package/dist/internal/dateTime.js.map +1 -1
  647. package/dist/internal/effect.js +89 -76
  648. package/dist/internal/effect.js.map +1 -1
  649. package/dist/internal/graphql.js +12 -2
  650. package/dist/internal/graphql.js.map +1 -1
  651. package/dist/internal/hashMap.js +2 -2
  652. package/dist/internal/hashMap.js.map +1 -1
  653. package/dist/internal/hydration.d.ts +2 -0
  654. package/dist/internal/hydration.d.ts.map +1 -0
  655. package/dist/internal/hydration.js +15 -0
  656. package/dist/internal/hydration.js.map +1 -0
  657. package/dist/internal/inflate.d.ts +2 -0
  658. package/dist/internal/inflate.d.ts.map +1 -0
  659. package/dist/internal/inflate.js +680 -0
  660. package/dist/internal/inflate.js.map +1 -0
  661. package/dist/internal/record.js +6 -0
  662. package/dist/internal/record.js.map +1 -1
  663. package/dist/internal/request.js +20 -7
  664. package/dist/internal/request.js.map +1 -1
  665. package/dist/internal/schedule.js +17 -22
  666. package/dist/internal/schedule.js.map +1 -1
  667. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  668. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  669. package/dist/internal/schema/interpreter.js +51 -36
  670. package/dist/internal/schema/interpreter.js.map +1 -1
  671. package/dist/internal/schema/standardSchema.js +34 -33
  672. package/dist/internal/schema/standardSchema.js.map +1 -1
  673. package/dist/internal/schema/toCodeDocument.js +7 -2
  674. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  675. package/dist/internal/schema/toCodec.js +86 -1
  676. package/dist/internal/schema/toCodec.js.map +1 -1
  677. package/dist/internal/schema/toFormatter.js +5 -5
  678. package/dist/internal/schema/toFormatter.js.map +1 -1
  679. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  680. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  681. package/dist/internal/trie.js +1 -3
  682. package/dist/internal/trie.js.map +1 -1
  683. package/dist/internal/uuid.js +7 -3
  684. package/dist/internal/uuid.js.map +1 -1
  685. package/dist/internal/version.js +1 -1
  686. package/dist/net/NetAddress.d.ts.map +1 -1
  687. package/dist/net/NetAddress.js +2 -8
  688. package/dist/net/NetAddress.js.map +1 -1
  689. package/dist/observability/Otlp.d.ts +15 -0
  690. package/dist/observability/Otlp.d.ts.map +1 -1
  691. package/dist/observability/Otlp.js +3 -0
  692. package/dist/observability/Otlp.js.map +1 -1
  693. package/dist/observability/OtlpExporter.d.ts +8 -0
  694. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  695. package/dist/observability/OtlpExporter.js +15 -13
  696. package/dist/observability/OtlpExporter.js.map +1 -1
  697. package/dist/observability/OtlpLogger.d.ts +17 -0
  698. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  699. package/dist/observability/OtlpLogger.js +14 -1
  700. package/dist/observability/OtlpLogger.js.map +1 -1
  701. package/dist/observability/OtlpMetrics.d.ts +17 -0
  702. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  703. package/dist/observability/OtlpMetrics.js +18 -3
  704. package/dist/observability/OtlpMetrics.js.map +1 -1
  705. package/dist/observability/OtlpResource.d.ts +3 -1
  706. package/dist/observability/OtlpResource.d.ts.map +1 -1
  707. package/dist/observability/OtlpResource.js +11 -4
  708. package/dist/observability/OtlpResource.js.map +1 -1
  709. package/dist/observability/OtlpSerialization.d.ts +5 -0
  710. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  711. package/dist/observability/OtlpSerialization.js +14 -3
  712. package/dist/observability/OtlpSerialization.js.map +1 -1
  713. package/dist/observability/OtlpTracer.d.ts +17 -0
  714. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  715. package/dist/observability/OtlpTracer.js +15 -2
  716. package/dist/observability/OtlpTracer.js.map +1 -1
  717. package/dist/observability/internal/protobuf.d.ts +0 -9
  718. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  719. package/dist/observability/internal/protobuf.js +2 -10
  720. package/dist/observability/internal/protobuf.js.map +1 -1
  721. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  722. package/dist/persistence/PersistedCache.js +1 -1
  723. package/dist/persistence/PersistedCache.js.map +1 -1
  724. package/dist/persistence/PersistedQueue.d.ts +6 -2
  725. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  726. package/dist/persistence/PersistedQueue.js +162 -84
  727. package/dist/persistence/PersistedQueue.js.map +1 -1
  728. package/dist/persistence/Persistence.d.ts +28 -0
  729. package/dist/persistence/Persistence.d.ts.map +1 -1
  730. package/dist/persistence/Persistence.js +36 -8
  731. package/dist/persistence/Persistence.js.map +1 -1
  732. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  733. package/dist/persistence/RateLimiter.js +8 -12
  734. package/dist/persistence/RateLimiter.js.map +1 -1
  735. package/dist/persistence/UserDirectories.d.ts +129 -0
  736. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  737. package/dist/persistence/UserDirectories.js +178 -0
  738. package/dist/persistence/UserDirectories.js.map +1 -0
  739. package/dist/persistence/index.d.ts +5 -0
  740. package/dist/persistence/index.d.ts.map +1 -1
  741. package/dist/persistence/index.js +5 -0
  742. package/dist/persistence/index.js.map +1 -1
  743. package/dist/process/ChildProcess.d.ts +2 -1
  744. package/dist/process/ChildProcess.d.ts.map +1 -1
  745. package/dist/process/ChildProcess.js.map +1 -1
  746. package/dist/reactivity/AsyncResult.d.ts +6 -0
  747. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  748. package/dist/reactivity/AsyncResult.js +28 -1
  749. package/dist/reactivity/AsyncResult.js.map +1 -1
  750. package/dist/reactivity/Atom.d.ts +69 -30
  751. package/dist/reactivity/Atom.d.ts.map +1 -1
  752. package/dist/reactivity/Atom.js +40 -15
  753. package/dist/reactivity/Atom.js.map +1 -1
  754. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  755. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  756. package/dist/reactivity/AtomHttpApi.js +1 -1
  757. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  758. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  759. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  760. package/dist/reactivity/AtomRegistry.js +47 -10
  761. package/dist/reactivity/AtomRegistry.js.map +1 -1
  762. package/dist/reactivity/AtomRpc.d.ts +3 -3
  763. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  764. package/dist/reactivity/AtomRpc.js +1 -1
  765. package/dist/reactivity/AtomRpc.js.map +1 -1
  766. package/dist/reactivity/Hydration.d.ts.map +1 -1
  767. package/dist/reactivity/Hydration.js +46 -12
  768. package/dist/reactivity/Hydration.js.map +1 -1
  769. package/dist/reactivity/Reactivity.d.ts +71 -7
  770. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  771. package/dist/reactivity/Reactivity.js +21 -12
  772. package/dist/reactivity/Reactivity.js.map +1 -1
  773. package/dist/rpc/Rpc.d.ts +18 -0
  774. package/dist/rpc/Rpc.d.ts.map +1 -1
  775. package/dist/rpc/Rpc.js +20 -0
  776. package/dist/rpc/Rpc.js.map +1 -1
  777. package/dist/rpc/RpcClient.d.ts +26 -2
  778. package/dist/rpc/RpcClient.d.ts.map +1 -1
  779. package/dist/rpc/RpcClient.js +202 -61
  780. package/dist/rpc/RpcClient.js.map +1 -1
  781. package/dist/rpc/RpcSerialization.d.ts +15 -0
  782. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  783. package/dist/rpc/RpcSerialization.js +21 -5
  784. package/dist/rpc/RpcSerialization.js.map +1 -1
  785. package/dist/rpc/RpcServer.d.ts.map +1 -1
  786. package/dist/rpc/RpcServer.js +9 -18
  787. package/dist/rpc/RpcServer.js.map +1 -1
  788. package/dist/schema/Model.d.ts +1 -1
  789. package/dist/schema/VariantSchema.d.ts +22 -3
  790. package/dist/schema/VariantSchema.d.ts.map +1 -1
  791. package/dist/schema/VariantSchema.js +32 -18
  792. package/dist/schema/VariantSchema.js.map +1 -1
  793. package/dist/socket/Socket.d.ts +23 -1
  794. package/dist/socket/Socket.d.ts.map +1 -1
  795. package/dist/socket/Socket.js +36 -3
  796. package/dist/socket/Socket.js.map +1 -1
  797. package/dist/sql/Migrator.d.ts.map +1 -1
  798. package/dist/sql/Migrator.js +15 -3
  799. package/dist/sql/Migrator.js.map +1 -1
  800. package/dist/sql/SqlClient.d.ts +151 -12
  801. package/dist/sql/SqlClient.d.ts.map +1 -1
  802. package/dist/sql/SqlClient.js +156 -34
  803. package/dist/sql/SqlClient.js.map +1 -1
  804. package/dist/sql/SqlResolver.d.ts +9 -0
  805. package/dist/sql/SqlResolver.d.ts.map +1 -1
  806. package/dist/sql/SqlResolver.js +9 -0
  807. package/dist/sql/SqlResolver.js.map +1 -1
  808. package/dist/sql/Statement.d.ts +3 -1
  809. package/dist/sql/Statement.d.ts.map +1 -1
  810. package/dist/sql/Statement.js +24 -5
  811. package/dist/sql/Statement.js.map +1 -1
  812. package/dist/testing/TestClock.d.ts +16 -3
  813. package/dist/testing/TestClock.d.ts.map +1 -1
  814. package/dist/testing/TestClock.js +115 -23
  815. package/dist/testing/TestClock.js.map +1 -1
  816. package/dist/testing/TestSchema.d.ts +7 -1
  817. package/dist/testing/TestSchema.d.ts.map +1 -1
  818. package/dist/testing/TestSchema.js +9 -3
  819. package/dist/testing/TestSchema.js.map +1 -1
  820. package/dist/workflow/Activity.js +1 -0
  821. package/dist/workflow/Activity.js.map +1 -1
  822. package/dist/workflow/Workflow.d.ts +22 -0
  823. package/dist/workflow/Workflow.d.ts.map +1 -1
  824. package/dist/workflow/Workflow.js +15 -3
  825. package/dist/workflow/Workflow.js.map +1 -1
  826. package/dist/workflow/WorkflowEngine.d.ts +20 -1
  827. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  828. package/dist/workflow/WorkflowEngine.js +52 -24
  829. package/dist/workflow/WorkflowEngine.js.map +1 -1
  830. package/package.json +13 -3
  831. package/src/Array.ts +223 -61
  832. package/src/Bytes.ts +111 -0
  833. package/src/Channel.ts +287 -439
  834. package/src/ChannelSchema.ts +1 -49
  835. package/src/Chunk.ts +55 -61
  836. package/src/Config.ts +12 -86
  837. package/src/ConfigProvider.ts +41 -44
  838. package/src/Cron.ts +6 -3
  839. package/src/Duration.ts +70 -21
  840. package/src/Effect.ts +642 -220
  841. package/src/Equivalence.ts +7 -4
  842. package/src/Exit.ts +24 -9
  843. package/src/FiberHandle.ts +10 -9
  844. package/src/FiberMap.ts +13 -66
  845. package/src/FileSystem.ts +33 -9
  846. package/src/Graph.ts +171 -1263
  847. package/src/HashSet.ts +0 -60
  848. package/src/Iterable.ts +15 -14
  849. package/src/JsonSchema.ts +28 -3
  850. package/src/Layer.ts +2 -2
  851. package/src/ManagedRuntime.ts +72 -6
  852. package/src/Match.ts +65 -12
  853. package/src/Metric.ts +249 -507
  854. package/src/MutableHashMap.ts +4 -473
  855. package/src/Number.ts +2 -2
  856. package/src/Optic.ts +17 -332
  857. package/src/Path.ts +61 -8
  858. package/src/PubSub.ts +12 -7
  859. package/src/Queue.ts +5 -37
  860. package/src/Random.ts +1 -1
  861. package/src/RcMap.ts +14 -8
  862. package/src/Record.ts +51 -0
  863. package/src/Ref.ts +7 -104
  864. package/src/References.ts +5 -4
  865. package/src/RequestResolver.ts +46 -87
  866. package/src/Resource.ts +1 -1
  867. package/src/Runtime.ts +19 -18
  868. package/src/Schedule.ts +2 -94
  869. package/src/Schema.ts +596 -348
  870. package/src/SchemaAST.ts +20 -9
  871. package/src/SchemaGetter.ts +22 -5
  872. package/src/SchemaIssue.ts +44 -53
  873. package/src/SchemaRepresentation.ts +64 -1
  874. package/src/SchemaTransformation.ts +1 -1
  875. package/src/Scope.ts +12 -2
  876. package/src/ScopedCache.ts +17 -142
  877. package/src/SemVer.ts +1528 -0
  878. package/src/SemVerRange.ts +883 -0
  879. package/src/Sink.ts +6 -2
  880. package/src/Stream.ts +334 -1011
  881. package/src/String.ts +25 -12
  882. package/src/TextDiff.ts +766 -0
  883. package/src/TxHashMap.ts +1 -103
  884. package/src/TxHashSet.ts +48 -753
  885. package/src/TxRef.ts +4 -2
  886. package/src/ai/AiError.ts +69 -5
  887. package/src/ai/Chat.ts +10 -5
  888. package/src/ai/Decision.ts +119 -22
  889. package/src/ai/DecisionModel.ts +265 -109
  890. package/src/ai/EmbeddingModel.ts +25 -13
  891. package/src/ai/LanguageModel.ts +57 -51
  892. package/src/ai/McpClient.ts +1211 -0
  893. package/src/ai/McpClientError.ts +329 -0
  894. package/src/ai/McpProtocol.ts +2 -2
  895. package/src/ai/McpSchema.ts +153 -35
  896. package/src/ai/McpServer.ts +232 -275
  897. package/src/ai/Prompt.ts +49 -35
  898. package/src/ai/Response.ts +195 -65
  899. package/src/ai/Tool.ts +12 -4
  900. package/src/ai/Toolkit.ts +78 -10
  901. package/src/ai/index.ts +12 -0
  902. package/src/ai/internal/mcpCore.ts +13 -14
  903. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  904. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  905. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  906. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  907. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  908. package/src/ai/internal/mcpProtocol.ts +22 -2
  909. package/src/ai/internal/mcpRuntime.ts +3 -4
  910. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  911. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  912. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  913. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  914. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  915. package/src/cli/CliError.ts +49 -4
  916. package/src/cli/Command.ts +316 -9
  917. package/src/cli/Completions.ts +10 -0
  918. package/src/cli/Flag.ts +218 -0
  919. package/src/cli/GlobalFlag.ts +3 -3
  920. package/src/cli/Param.ts +218 -0
  921. package/src/cli/TerminalCapabilities.ts +156 -0
  922. package/src/cli/index.ts +6 -0
  923. package/src/cli/internal/command.ts +10 -4
  924. package/src/cli/internal/completions/bash.ts +7 -5
  925. package/src/cli/internal/completions/descriptor.ts +20 -1
  926. package/src/cli/internal/completions/fish.ts +12 -10
  927. package/src/cli/internal/completions/powershell.ts +25 -13
  928. package/src/cli/internal/completions/zsh.ts +15 -8
  929. package/src/cli/internal/formatter.ts +18 -0
  930. package/src/cli/internal/lexer.ts +12 -5
  931. package/src/cli/internal/parser.ts +43 -14
  932. package/src/cli/internal/wizard.ts +2 -1
  933. package/src/cluster/ClusterCron.ts +94 -35
  934. package/src/cluster/ClusterMetrics.ts +149 -7
  935. package/src/cluster/ClusterWorkflowEngine.ts +164 -53
  936. package/src/cluster/Entity.ts +4 -0
  937. package/src/cluster/MessageStorage.ts +21 -3
  938. package/src/cluster/Runners.ts +145 -72
  939. package/src/cluster/Sharding.ts +118 -38
  940. package/src/cluster/ShardingConfig.ts +15 -0
  941. package/src/cluster/SqlMessageStorage.ts +58 -55
  942. package/src/cluster/SqlRunnerStorage.ts +10 -4
  943. package/src/cluster/internal/entityManager.ts +81 -11
  944. package/src/devtools/DevTools.ts +3 -2
  945. package/src/devtools/DevToolsClient.ts +27 -10
  946. package/src/encoding/Base64Url.ts +31 -0
  947. package/src/encoding/Ini.ts +3 -0
  948. package/src/encoding/JsonArray.ts +849 -0
  949. package/src/encoding/Ndjson.ts +211 -20
  950. package/src/encoding/SchemaBinary.ts +14 -48
  951. package/src/encoding/Sse.ts +1 -1
  952. package/src/encoding/Tar.ts +1417 -0
  953. package/src/encoding/Toml.ts +3 -3
  954. package/src/encoding/Xml.ts +2037 -0
  955. package/src/encoding/Yaml.ts +108 -36
  956. package/src/encoding/Zip.ts +1558 -0
  957. package/src/encoding/index.ts +24 -0
  958. package/src/eventlog/EventJournal.ts +611 -227
  959. package/src/eventlog/EventLog.ts +496 -196
  960. package/src/eventlog/EventLogEncryption.ts +128 -43
  961. package/src/eventlog/EventLogMessage.ts +62 -11
  962. package/src/eventlog/EventLogRemote.ts +77 -21
  963. package/src/eventlog/EventLogServer.ts +162 -20
  964. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  965. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  966. package/src/eventlog/EventRow.ts +706 -0
  967. package/src/eventlog/SqlEventJournal.ts +453 -173
  968. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  969. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  970. package/src/eventlog/index.ts +6 -0
  971. package/src/eventlog/internal/conflicts.ts +123 -0
  972. package/src/graphql/GraphQLClient.ts +17 -5
  973. package/src/graphql/GraphQLClientError.ts +5 -12
  974. package/src/graphql/GraphQLProtocol.ts +277 -20
  975. package/src/graphql/GraphQLResolver.ts +109 -230
  976. package/src/http/FetchHttpClient.ts +61 -8
  977. package/src/http/FindMyWay/internal/router.ts +13 -1
  978. package/src/http/Headers.ts +343 -163
  979. package/src/http/HttpClient.ts +144 -136
  980. package/src/http/HttpClientError.ts +10 -6
  981. package/src/http/HttpClientRequest.ts +315 -11
  982. package/src/http/HttpClientResponse.ts +71 -0
  983. package/src/http/HttpEffect.ts +25 -33
  984. package/src/http/HttpIncomingMessage.ts +3 -23
  985. package/src/http/HttpMiddleware.ts +265 -28
  986. package/src/http/HttpRouter.ts +67 -14
  987. package/src/http/HttpServerError.ts +14 -7
  988. package/src/http/HttpServerRequest.ts +73 -14
  989. package/src/http/HttpServerResponse.ts +49 -23
  990. package/src/http/HttpStaticServer.ts +29 -19
  991. package/src/http/HttpTraceContext.ts +1 -1
  992. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  993. package/src/http/MultipartParser/internal/headers.ts +4 -16
  994. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  995. package/src/http/Url.ts +8 -2
  996. package/src/http/UrlParams.ts +225 -26
  997. package/src/http/internal/compression.ts +3 -17
  998. package/src/http/internal/compressionBody.ts +56 -0
  999. package/src/http/internal/decompression.ts +235 -0
  1000. package/src/http/internal/lazyStream.ts +25 -0
  1001. package/src/http/internal/requestState.ts +33 -0
  1002. package/src/http/internal/tracing.ts +21 -4
  1003. package/src/http/internal/urlParams.ts +5 -0
  1004. package/src/http/internal/webResponse.ts +20 -0
  1005. package/src/http-api/HttpApi.ts +1 -1
  1006. package/src/http-api/HttpApiBuilder.ts +151 -23
  1007. package/src/http-api/HttpApiClient.ts +160 -31
  1008. package/src/http-api/HttpApiEndpoint.ts +144 -33
  1009. package/src/http-api/HttpApiError.ts +55 -0
  1010. package/src/http-api/HttpApiScalar.ts +4 -3
  1011. package/src/http-api/HttpApiSchema.ts +275 -13
  1012. package/src/http-api/HttpApiSwagger.ts +11 -4
  1013. package/src/http-api/HttpApiTest.ts +33 -9
  1014. package/src/http-api/OpenApi.ts +84 -42
  1015. package/src/http-api/internal/path.ts +40 -12
  1016. package/src/index.ts +24 -0
  1017. package/src/internal/core.ts +22 -2
  1018. package/src/internal/dateTime.ts +20 -7
  1019. package/src/internal/effect.ts +125 -88
  1020. package/src/internal/graphql.ts +30 -7
  1021. package/src/internal/hashMap.ts +2 -2
  1022. package/src/internal/hydration.ts +15 -0
  1023. package/src/internal/inflate.ts +710 -0
  1024. package/src/internal/record.ts +6 -0
  1025. package/src/internal/request.ts +21 -6
  1026. package/src/internal/schedule.ts +20 -39
  1027. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  1028. package/src/internal/schema/interpreter.ts +58 -45
  1029. package/src/internal/schema/standardSchema.ts +32 -30
  1030. package/src/internal/schema/toCodeDocument.ts +8 -3
  1031. package/src/internal/schema/toCodec.ts +116 -1
  1032. package/src/internal/schema/toFormatter.ts +6 -6
  1033. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  1034. package/src/internal/trie.ts +1 -3
  1035. package/src/internal/uuid.ts +15 -10
  1036. package/src/internal/version.ts +1 -1
  1037. package/src/net/NetAddress.ts +2 -9
  1038. package/src/observability/Otlp.ts +18 -0
  1039. package/src/observability/OtlpExporter.ts +19 -15
  1040. package/src/observability/OtlpLogger.ts +31 -2
  1041. package/src/observability/OtlpMetrics.ts +35 -4
  1042. package/src/observability/OtlpResource.ts +16 -6
  1043. package/src/observability/OtlpSerialization.ts +17 -3
  1044. package/src/observability/OtlpTracer.ts +32 -3
  1045. package/src/observability/internal/protobuf.ts +2 -10
  1046. package/src/persistence/PersistedCache.ts +3 -1
  1047. package/src/persistence/PersistedQueue.ts +223 -153
  1048. package/src/persistence/Persistence.ts +64 -30
  1049. package/src/persistence/RateLimiter.ts +18 -21
  1050. package/src/persistence/UserDirectories.ts +273 -0
  1051. package/src/persistence/index.ts +6 -0
  1052. package/src/process/ChildProcess.ts +2 -1
  1053. package/src/reactivity/AsyncResult.ts +35 -38
  1054. package/src/reactivity/Atom.ts +134 -166
  1055. package/src/reactivity/AtomHttpApi.ts +10 -16
  1056. package/src/reactivity/AtomRegistry.ts +53 -30
  1057. package/src/reactivity/AtomRpc.ts +6 -22
  1058. package/src/reactivity/Hydration.ts +53 -12
  1059. package/src/reactivity/Reactivity.ts +97 -39
  1060. package/src/rpc/Rpc.ts +21 -0
  1061. package/src/rpc/RpcClient.ts +285 -104
  1062. package/src/rpc/RpcSerialization.ts +21 -5
  1063. package/src/rpc/RpcServer.ts +11 -20
  1064. package/src/schema/VariantSchema.ts +86 -22
  1065. package/src/socket/Socket.ts +45 -20
  1066. package/src/sql/Migrator.ts +19 -9
  1067. package/src/sql/SqlClient.ts +275 -36
  1068. package/src/sql/SqlResolver.ts +9 -0
  1069. package/src/sql/Statement.ts +35 -8
  1070. package/src/testing/TestClock.ts +147 -29
  1071. package/src/testing/TestSchema.ts +9 -3
  1072. package/src/workflow/Activity.ts +1 -0
  1073. package/src/workflow/Workflow.ts +31 -5
  1074. package/src/workflow/WorkflowEngine.ts +93 -31
  1075. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  1076. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  1077. package/dist/http/internal/preResponseHandler.js +0 -14
  1078. package/dist/http/internal/preResponseHandler.js.map +0 -1
  1079. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -6,36 +6,96 @@ import * as InternalAST from "../../SchemaAST.ts"
6
6
  import type * as SchemaRepresentation from "../../SchemaRepresentation.ts"
7
7
  import { errorWithPath } from "../errors.ts"
8
8
  import * as InternalRecord from "../record.ts"
9
+ import * as InternalAnnotations from "./annotations.ts"
9
10
  import { fromRepresentation, fromRepresentations } from "./fromRepresentation.ts"
10
11
 
11
12
  type Path = ReadonlyArray<string | number>
12
13
  type Representation = SchemaRepresentation.Representation
13
- type Check = SchemaRepresentation.Check
14
+ type Check = Filter | FilterGroup
14
15
 
15
- interface Checked {
16
- readonly checks: ReadonlyArray<Check>
16
+ interface Filter extends SchemaRepresentation.Filter {
17
+ readonly representation: SchemaRepresentation.CheckRepresentationAnnotation<ImportedJsonSchemaRepresentation>
18
+ }
19
+
20
+ interface FilterGroup {
21
+ readonly _tag: "FilterGroup"
22
+ readonly checks: readonly [Check, ...Array<Check>]
23
+ readonly annotations?: Schema.Annotations.Annotations | undefined
24
+ }
25
+
26
+ interface ImportedAnnotations {
27
+ // Standard annotations may describe a value or a group of checks. Custom
28
+ // annotations always describe the value, even when its checks simplify away.
17
29
  readonly annotations?: Schema.Annotations.Annotations | undefined
30
+ readonly customAnnotations?: 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 Checked extends ImportedAnnotations {
34
+ readonly checks: ReadonlyArray<Check>
35
+ }
36
+
37
+ interface ImportedKeyword<Tag extends string> extends Checked {
38
+ readonly _tag: Tag
39
+ }
40
+
41
+ interface ImportedLiteral extends ImportedKeyword<"Literal"> {
42
+ readonly literal: string | number | boolean
43
+ }
44
+
45
+ interface ImportedElement {
46
+ readonly type: ImportedJsonSchemaRepresentation
47
+ readonly isOptional: boolean
48
+ }
49
+
50
+ interface ImportedArrays extends ImportedKeyword<"Arrays"> {
51
+ readonly elements: ReadonlyArray<ImportedElement>
52
+ readonly rest: ReadonlyArray<ImportedJsonSchemaRepresentation>
53
+ }
54
+
55
+ interface ImportedProperty extends ImportedElement {
56
+ readonly name: string
57
+ readonly isMutable: false
58
+ }
59
+
60
+ interface ImportedIndexSignature {
61
+ readonly parameter: ImportedJsonSchemaRepresentation
62
+ readonly type: ImportedJsonSchemaRepresentation
63
+ }
64
+
65
+ interface ImportedReference extends SchemaRepresentation.Reference, ImportedAnnotations {
66
+ readonly path: Path
67
+ }
68
+
69
+ interface ImportedObjects extends ImportedKeyword<"Objects"> {
70
+ readonly propertySignatures: ReadonlyArray<ImportedProperty>
71
+ readonly indexSignatures: ReadonlyArray<ImportedIndexSignature>
72
+ readonly scopes: ReadonlyArray<ImportedObjectScope>
73
+ readonly path: Path
74
+ }
75
+
76
+ interface ImportedUnion extends ImportedKeyword<"Union"> {
77
+ readonly types: ReadonlyArray<ImportedJsonSchemaRepresentation>
78
+ readonly options?: SchemaRepresentation.Union["options"]
79
+ }
80
+
81
+ // Import nodes keep source metadata and scopes until normalization is complete.
82
+ // Only finalize produces the public Effect representation.
83
+ type ImportedJsonSchemaRepresentation =
84
+ | ImportedKeyword<"Never">
85
+ | ImportedKeyword<"Unknown">
86
+ | ImportedKeyword<"Null">
87
+ | ImportedKeyword<"String">
88
+ | ImportedKeyword<"Number">
89
+ | ImportedKeyword<"Boolean">
90
+ | ImportedLiteral
91
+ | ImportedArrays
92
+ | ImportedObjects
93
+ | ImportedUnion
94
+ | ImportedReference
35
95
 
36
96
  interface ImportedObjectPattern {
37
97
  readonly source: string
38
- readonly parameter: SchemaRepresentation.String
98
+ readonly parameter: ImportedKeyword<"String">
39
99
  readonly type: ImportedJsonSchemaRepresentation
40
100
  }
41
101
 
@@ -93,6 +153,47 @@ const jsonSchemaTypeSpecificKeys = [
93
153
  "maxItems",
94
154
  "uniqueItems"
95
155
  ]
156
+
157
+ const jsonSchemaAnnotationExcludedKeys = new Set([
158
+ ...jsonSchemaTypeSpecificKeys,
159
+ ...InternalAnnotations.jsonSchemaAnnotationKeys,
160
+ ...InternalAnnotations.annotationExcludedKeys,
161
+ "$schema",
162
+ "$id",
163
+ "$ref",
164
+ "$defs",
165
+ "$anchor",
166
+ "$dynamicRef",
167
+ "$dynamicAnchor",
168
+ "$vocabulary",
169
+ "$comment",
170
+ "type",
171
+ "const",
172
+ "enum",
173
+ "allOf",
174
+ "anyOf",
175
+ "oneOf",
176
+ "not",
177
+ "if",
178
+ "then",
179
+ "else",
180
+ "contains",
181
+ "minContains",
182
+ "maxContains",
183
+ "dependentRequired",
184
+ "dependentSchemas",
185
+ "unevaluatedItems",
186
+ "unevaluatedProperties",
187
+ "definitions",
188
+ "dependencies",
189
+ "additionalItems",
190
+ "identifier",
191
+ "expected",
192
+ "message",
193
+ "messageMissingKey",
194
+ "messageUnexpectedKey"
195
+ ])
196
+
96
197
  function isImportedJsonSchemaType(input: unknown): input is JsonSchema.Type {
97
198
  return input === "integer" || typeof input === "string" && jsonSchemaValueTypes.some((type) => type === input)
98
199
  }
@@ -104,7 +205,7 @@ function hasTypeSpecificKeywords(schema: JsonSchema.JsonSchema): boolean {
104
205
  function jsonSchemaFilter(
105
206
  id: string,
106
207
  payload: Schema.Json,
107
- schemas?: ReadonlyArray<Representation>
208
+ schemas?: ReadonlyArray<ImportedJsonSchemaRepresentation>
108
209
  ): Check {
109
210
  return {
110
211
  _tag: "Filter",
@@ -129,8 +230,9 @@ function addNumberCheck(
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,7 +244,19 @@ 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
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
+ }
258
+ }
259
+ return { annotations: Object.keys(annotations).length === 0 ? undefined : annotations, customAnnotations }
146
260
  }
147
261
 
148
262
  function jsonDeclaration(
@@ -169,28 +283,24 @@ function translateJsonSchemaMultiDocument(
169
283
  singleRoot = false
170
284
  ): SchemaRepresentation.MultiDocument {
171
285
  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
- }> = []
181
286
  const resolvingChoices = new Set<string>()
182
- const finalReferences = new Set<string>()
287
+ const finalReferences = new Map<string, ImportedReference>()
183
288
  let inNestedResource = false
184
289
 
185
- function finalize(representation: Representation): Representation {
290
+ function finalize(input: ImportedJsonSchemaRepresentation): Representation {
291
+ const annotations = mergeAnnotations(input.annotations, input.customAnnotations)
292
+ if (input._tag === "Reference") {
293
+ if (!finalReferences.has(input.$ref)) finalReferences.set(input.$ref, input)
294
+ const reference: SchemaRepresentation.Reference = { _tag: "Reference", $ref: input.$ref }
295
+ if (annotations === undefined) return reference
296
+ resolveReference(input, input.path)
297
+ return { _tag: "Suspend", thunk: reference, checks: [], annotations }
298
+ }
299
+ const { customAnnotations, ...node } = input
300
+ const representation = { ...node, annotations, checks: node.checks.map(finalizeCheck) }
186
301
  switch (representation._tag) {
187
302
  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) }
303
+ return jsonDeclaration(annotations)
194
304
  case "Arrays":
195
305
  return {
196
306
  ...representation,
@@ -200,10 +310,10 @@ function translateJsonSchemaMultiDocument(
200
310
  })),
201
311
  rest: representation.rest.map(finalize)
202
312
  }
203
- case "Objects":
313
+ case "Objects": {
204
314
  // Intersections may reduce open patterns to fixed properties, so reject only
205
315
  // if an open pattern remains in the final representation.
206
- const [scopes, path] = objectScopesByProperties.get(representation.propertySignatures)!
316
+ const { scopes, path, ...object } = representation
207
317
  if (
208
318
  representation.indexSignatures[0]?.parameter === string &&
209
319
  scopes.some((scope) => scope.patterns.length > 0)
@@ -214,7 +324,7 @@ function translateJsonSchemaMultiDocument(
214
324
  )
215
325
  }
216
326
  return {
217
- ...representation,
327
+ ...object,
218
328
  propertySignatures: representation.propertySignatures.map((property) => ({
219
329
  ...property,
220
330
  type: finalize(property.type)
@@ -222,9 +332,9 @@ function translateJsonSchemaMultiDocument(
222
332
  indexSignatures: representation.indexSignatures.map((indexSignature) => ({
223
333
  parameter: finalize(indexSignature.parameter),
224
334
  type: finalize(indexSignature.type)
225
- })),
226
- checks: representation.checks.map(finalizeCheck)
335
+ }))
227
336
  }
337
+ }
228
338
  case "Union":
229
339
  return { ...representation, types: representation.types.map(finalize) }
230
340
  default:
@@ -232,10 +342,16 @@ function translateJsonSchemaMultiDocument(
232
342
  }
233
343
  }
234
344
 
235
- function finalizeCheck(check: Check): Check {
345
+ function finalizeCheck(check: Check): SchemaRepresentation.Check {
346
+ if (check._tag === "FilterGroup") {
347
+ return {
348
+ ...check,
349
+ checks: check.checks.map(finalizeCheck) as [SchemaRepresentation.Check, ...Array<SchemaRepresentation.Check>]
350
+ }
351
+ }
236
352
  const representation = check.representation
237
- const schemas = representation?.schemas
238
- if (representation === undefined || schemas === undefined) {
353
+ const schemas = representation.schemas
354
+ if (schemas === undefined) {
239
355
  return check
240
356
  }
241
357
  return {
@@ -249,15 +365,13 @@ function translateJsonSchemaMultiDocument(
249
365
 
250
366
  function annotate(
251
367
  representation: ImportedJsonSchemaRepresentation,
252
- annotations: Schema.Annotations.Annotations | undefined
368
+ source: ImportedAnnotations
253
369
  ): ImportedJsonSchemaRepresentation {
254
- if (annotations === undefined) return representation
255
- if (representation._tag === "Reference") {
256
- return { _tag: "Suspend", annotations, checks: [], thunk: representation }
257
- }
370
+ if (source.annotations === undefined && source.customAnnotations === undefined) return representation
258
371
  return {
259
372
  ...representation,
260
- annotations: { ...representation.annotations, ...annotations }
373
+ annotations: mergeAnnotations(representation.annotations, source.annotations),
374
+ customAnnotations: mergeAnnotations(representation.customAnnotations, source.customAnnotations)
261
375
  }
262
376
  }
263
377
 
@@ -284,7 +398,7 @@ function translateJsonSchemaMultiDocument(
284
398
  }
285
399
 
286
400
  function resolveReference(
287
- reference: SchemaRepresentation.Reference,
401
+ reference: ImportedReference,
288
402
  path: Path,
289
403
  recursiveReferenceError?: string,
290
404
  seen: Set<string> = new Set()
@@ -298,12 +412,9 @@ function translateJsonSchemaMultiDocument(
298
412
  seen.add(reference.$ref)
299
413
  const representation = translateDefinition(reference.$ref, path, recursiveReferenceError)
300
414
  if (representation._tag === "Reference") {
301
- return resolveReference(representation, path, recursiveReferenceError, seen)
302
- }
303
- if (representation._tag === "Suspend" && representation.thunk._tag === "Reference") {
304
415
  return annotate(
305
- resolveReference(representation.thunk, path, recursiveReferenceError, seen),
306
- representation.annotations
416
+ resolveReference(representation, path, recursiveReferenceError, seen),
417
+ representation
307
418
  )
308
419
  }
309
420
  return representation
@@ -320,34 +431,25 @@ function translateJsonSchemaMultiDocument(
320
431
 
321
432
  function annotateIntersection(
322
433
  representation: ImportedJsonSchemaRepresentation,
323
- left: ImportedJsonSchemaRepresentation,
324
- right: ImportedJsonSchemaRepresentation
434
+ left: ImportedAnnotations,
435
+ right: ImportedAnnotations
325
436
  ): ImportedJsonSchemaRepresentation {
326
- return annotate(
327
- representation,
328
- mergeAnnotations(
329
- left._tag === "Reference" ? undefined : left.annotations,
330
- right._tag === "Reference" ? undefined : right.annotations
331
- )
332
- )
437
+ return annotate(annotate(representation, left), right)
333
438
  }
334
439
 
335
440
  function intersectChecks(
336
441
  left: Checked,
337
442
  right: Checked,
338
443
  deduplicate: ReadonlyArray<string> = []
339
- ): readonly [ReadonlyArray<Check>, Schema.Annotations.Annotations | undefined] {
444
+ ): Checked {
340
445
  let checks = right.checks
341
446
  for (const id of deduplicate) {
342
447
  if (left.checks.some((check) => check._tag === "Filter" && check.representation?.id === id)) {
343
448
  checks = checks.filter((check) => check._tag !== "Filter" || check.representation?.id !== id)
344
449
  }
345
450
  }
346
- if (checks.length === 0) {
347
- const annotations = mergeAnnotations(left.annotations, right.annotations)
348
- return [left.checks, annotations]
349
- }
350
- if (right.annotations !== undefined) {
451
+ const annotations = checks.length === 0 ? mergeAnnotations(left.annotations, right.annotations) : left.annotations
452
+ if (checks.length > 0 && right.annotations !== undefined) {
351
453
  checks = checks.length === 1 && checks[0].annotations === undefined
352
454
  ? [{ ...checks[0], annotations: right.annotations }]
353
455
  : [{
@@ -356,14 +458,18 @@ function translateJsonSchemaMultiDocument(
356
458
  annotations: right.annotations
357
459
  }]
358
460
  }
359
- return [[...left.checks, ...checks], left.annotations]
461
+ return {
462
+ checks: [...left.checks, ...checks],
463
+ annotations,
464
+ customAnnotations: mergeAnnotations(left.customAnnotations, right.customAnnotations)
465
+ }
360
466
  }
361
467
 
362
468
  function satisfiesPrimitiveCheck(check: Check, value: string | number): boolean | undefined {
363
469
  if (check._tag === "FilterGroup") {
364
470
  return check.checks.every((check) => satisfiesPrimitiveCheck(check, value))
365
471
  }
366
- const representation = check.representation!
472
+ const representation = check.representation
367
473
  const payload = representation.payload as Record<string, any>
368
474
  switch (representation.id) {
369
475
  case "effect/schema/isMinLength":
@@ -392,10 +498,8 @@ function translateJsonSchemaMultiDocument(
392
498
  }
393
499
 
394
500
  function satisfiesLiteral(
395
- representation:
396
- | SchemaRepresentation.String
397
- | SchemaRepresentation.Number,
398
- literal: SchemaRepresentation.Literal
501
+ representation: ImportedKeyword<"String"> | ImportedKeyword<"Number">,
502
+ literal: ImportedLiteral
399
503
  ): boolean {
400
504
  const value = literal.literal
401
505
  if (representation._tag === "String" ? typeof value !== "string" : typeof value !== "number") {
@@ -405,11 +509,8 @@ function translateJsonSchemaMultiDocument(
405
509
  }
406
510
 
407
511
  function intersectPrimitiveWithLiteral(
408
- primitive:
409
- | SchemaRepresentation.String
410
- | SchemaRepresentation.Number
411
- | SchemaRepresentation.Boolean,
412
- literal: SchemaRepresentation.Literal
512
+ primitive: ImportedKeyword<"String"> | ImportedKeyword<"Number"> | ImportedKeyword<"Boolean">,
513
+ literal: ImportedLiteral
413
514
  ): ImportedJsonSchemaRepresentation {
414
515
  const satisfies = primitive._tag === "Boolean"
415
516
  ? typeof literal.literal === "boolean"
@@ -418,11 +519,11 @@ function translateJsonSchemaMultiDocument(
418
519
  }
419
520
 
420
521
  function intersectArrays(
421
- left: SchemaRepresentation.Arrays,
422
- right: SchemaRepresentation.Arrays,
522
+ left: ImportedArrays,
523
+ right: ImportedArrays,
423
524
  path: Path
424
- ): Pick<SchemaRepresentation.Arrays, "elements" | "rest"> | undefined {
425
- const elements: Array<SchemaRepresentation.Element> = []
525
+ ): Pick<ImportedArrays, "elements" | "rest"> | undefined {
526
+ const elements: Array<ImportedElement> = []
426
527
  const length = Math.max(left.elements.length, right.elements.length)
427
528
  for (let index = 0; index < length; index++) {
428
529
  const leftElement = left.elements[index]
@@ -434,8 +535,8 @@ function translateJsonSchemaMultiDocument(
434
535
  return isOptional ? { elements, rest: [] } : undefined
435
536
  }
436
537
  const type = intersect(
437
- leftType as ImportedJsonSchemaRepresentation,
438
- rightType as ImportedJsonSchemaRepresentation,
538
+ leftType,
539
+ rightType,
439
540
  [...path, "elements", index, "type"]
440
541
  )
441
542
  if (type._tag === "Never") {
@@ -453,8 +554,8 @@ function translateJsonSchemaMultiDocument(
453
554
  return { elements, rest: [] }
454
555
  }
455
556
  const rest = intersect(
456
- leftRest as ImportedJsonSchemaRepresentation,
457
- rightRest as ImportedJsonSchemaRepresentation,
557
+ leftRest,
558
+ rightRest,
458
559
  [...path, "rest", 0]
459
560
  )
460
561
  return { elements, rest: rest._tag === "Never" ? [] : [rest] }
@@ -473,8 +574,7 @@ function translateJsonSchemaMultiDocument(
473
574
 
474
575
  function lowerObject(
475
576
  scopes: ReadonlyArray<ImportedObjectScope>,
476
- checks: ReadonlyArray<Check>,
477
- annotations: Schema.Annotations.Annotations | undefined,
577
+ checked: Checked,
478
578
  path: Path
479
579
  ): ImportedJsonSchemaRepresentation {
480
580
  const names = new Set<string>()
@@ -499,7 +599,7 @@ function translateJsonSchemaMultiDocument(
499
599
  )
500
600
  }
501
601
 
502
- const properties: Array<SchemaRepresentation.PropertySignature> = []
602
+ const properties: Array<ImportedProperty> = []
503
603
  for (const name of names) {
504
604
  let isOptional = true
505
605
  const types: Array<ImportedJsonSchemaRepresentation> = []
@@ -523,7 +623,7 @@ function translateJsonSchemaMultiDocument(
523
623
  properties.push({ name, type, isOptional, isMutable: false })
524
624
  }
525
625
 
526
- const indexSignatures: ReadonlyArray<SchemaRepresentation.IndexSignature> = closedPattern !== undefined
626
+ const indexSignatures: ReadonlyArray<ImportedIndexSignature> = closedPattern !== undefined
527
627
  ? [{ parameter: closedPattern.parameter, type: closedPattern.type }]
528
628
  : !hasFiniteKeyDomain
529
629
  ? [{
@@ -536,15 +636,14 @@ function translateJsonSchemaMultiDocument(
536
636
  : properties.length === 0
537
637
  ? [{ parameter: string, type: never }]
538
638
  : []
539
- const representation: SchemaRepresentation.Objects = {
639
+ return {
540
640
  _tag: "Objects",
541
641
  propertySignatures: properties,
542
642
  indexSignatures,
543
- checks,
544
- annotations
643
+ scopes,
644
+ path,
645
+ ...checked
545
646
  }
546
- objectScopesByProperties.set(properties, [scopes, path])
547
- return representation
548
647
  }
549
648
 
550
649
  const jsonRootTags = ["Null", "String", "Number", "Boolean", "Objects", "Arrays"] as const
@@ -568,12 +667,10 @@ function translateJsonSchemaMultiDocument(
568
667
  default:
569
668
  return 0
570
669
  }
571
- case "Suspend":
572
- return rootMask(representation.thunk as ImportedJsonSchemaRepresentation)
573
670
  case "Union": {
574
671
  let out = 0
575
672
  for (const type of representation.types) {
576
- out |= rootMask(type as ImportedJsonSchemaRepresentation)
673
+ out |= rootMask(type)
577
674
  }
578
675
  return out
579
676
  }
@@ -589,30 +686,23 @@ function translateJsonSchemaMultiDocument(
589
686
  const cached = definitionCache.get(key)
590
687
  if (cached === null || resolvingChoices.has(key)) return true
591
688
  resolvingChoices.add(key)
592
- const out = hasChoices(cached ?? translateDefinition(key, reachableDefinitions.get(key)!))
689
+ const out = hasChoices(cached ?? translateDefinition(key, representation.path))
593
690
  resolvingChoices.delete(key)
594
691
  return out
595
692
  }
596
- case "Suspend":
597
- return hasChoices(representation.thunk as ImportedJsonSchemaRepresentation)
598
693
  case "Union":
599
694
  return representation.types.length > 1 ||
600
- representation.types.some((type) => hasChoices(type as ImportedJsonSchemaRepresentation))
695
+ representation.types.some(hasChoices)
601
696
  case "Arrays":
602
- return representation.elements.some((element) =>
603
- hasChoices(element.type as ImportedJsonSchemaRepresentation)
604
- ) || representation.rest.some((type) => hasChoices(type as ImportedJsonSchemaRepresentation))
697
+ return representation.elements.some((element) => hasChoices(element.type)) ||
698
+ representation.rest.some(hasChoices)
605
699
  case "Objects":
606
- return representation.propertySignatures.some((property) =>
607
- hasChoices(property.type as ImportedJsonSchemaRepresentation)
608
- ) ||
700
+ return representation.propertySignatures.some((property) => hasChoices(property.type)) ||
609
701
  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))
702
+ hasChoices(indexSignature.parameter) ||
703
+ hasChoices(indexSignature.type)
615
704
  ) ||
705
+ representation.scopes.some((scope) => scope.patterns.some((pattern) => hasChoices(pattern.type))) ||
616
706
  representation.checks.some(checkHasChoices)
617
707
  default:
618
708
  return false
@@ -622,15 +712,15 @@ function translateJsonSchemaMultiDocument(
622
712
  function checkHasChoices(check: Check): boolean {
623
713
  return check._tag === "FilterGroup"
624
714
  ? check.checks.some(checkHasChoices)
625
- : check.representation?.schemas?.some((schema) => hasChoices(schema as ImportedJsonSchemaRepresentation)) === true
715
+ : check.representation.schemas?.some(hasChoices) === true
626
716
  }
627
717
 
628
718
  function makeUnion(
629
- source: SchemaRepresentation.Union,
719
+ source: ImportedUnion,
630
720
  types: ReadonlyArray<ImportedJsonSchemaRepresentation>
631
721
  ): ImportedJsonSchemaRepresentation {
632
722
  if (types.length === 0) return never
633
- if (types.length === 1 && source.checks.length === 0) return annotate(types[0], source.annotations)
723
+ if (types.length === 1 && source.checks.length === 0) return annotate(types[0], source)
634
724
  return { ...source, types }
635
725
  }
636
726
 
@@ -639,40 +729,39 @@ function translateJsonSchemaMultiDocument(
639
729
  ): string | number | boolean | null | undefined {
640
730
  if (representation._tag === "Null") return null
641
731
  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
732
+ return representation.literal
646
733
  }
647
734
 
648
735
  function intersectLiteralUnions(
649
- left: SchemaRepresentation.Union,
650
- right: SchemaRepresentation.Union,
736
+ left: ImportedUnion,
737
+ right: ImportedUnion,
651
738
  path: Path
652
739
  ): ImportedJsonSchemaRepresentation | undefined {
653
740
  if ((left.options?.mode ?? "anyOf") !== "anyOf" || (right.options?.mode ?? "anyOf") !== "anyOf") {
654
741
  return undefined
655
742
  }
656
743
  const rightByValue = new Map<string | number | boolean | null, ImportedJsonSchemaRepresentation>()
657
- for (const type of right.types) {
658
- const representation = type as ImportedJsonSchemaRepresentation
744
+ for (const representation of right.types) {
659
745
  const value = literalValue(representation)
660
746
  if (value === undefined) return undefined
661
- rightByValue.set(value, representation)
747
+ const previous = rightByValue.get(value)
748
+ rightByValue.set(value, {
749
+ ...representation,
750
+ customAnnotations: mergeAnnotations(previous?.customAnnotations, representation.customAnnotations)
751
+ })
662
752
  }
663
753
  const types: Array<ImportedJsonSchemaRepresentation> = []
664
- for (const type of left.types) {
665
- const representation = type as ImportedJsonSchemaRepresentation
754
+ for (const representation of left.types) {
666
755
  const value = literalValue(representation)
667
756
  if (value === undefined) return undefined
668
757
  const match = rightByValue.get(value)
669
- if (match !== undefined) types.push(intersect(representation, annotate(match, right.annotations), path))
758
+ if (match !== undefined) types.push(intersect(representation, annotate(match, right), path))
670
759
  }
671
760
  return makeUnion(left, types)
672
761
  }
673
762
 
674
763
  function intersectUnionWithType(
675
- union: SchemaRepresentation.Union,
764
+ union: ImportedUnion,
676
765
  type: ImportedJsonSchemaRepresentation,
677
766
  path: Path,
678
767
  unionOnLeft: boolean
@@ -681,14 +770,14 @@ function translateJsonSchemaMultiDocument(
681
770
  const members = union.types
682
771
  .map((member, index) => ({
683
772
  index,
684
- type: member as ImportedJsonSchemaRepresentation
773
+ type: member
685
774
  }))
686
775
  .filter((member) => (rootMask(member.type) & mask) !== 0)
687
776
  if (members.length > 1 && hasChoices(type)) {
688
777
  return unsupportedIntersection(path)
689
778
  }
690
779
  if (members.length === 1 && union.checks.length === 0) {
691
- const member = annotate(members[0].type, union.annotations)
780
+ const member = annotate(members[0].type, union)
692
781
  return unionOnLeft
693
782
  ? intersect(member, type, [...path, "types", members[0].index])
694
783
  : intersect(type, member, [...path, "types", members[0].index])
@@ -705,10 +794,10 @@ function translateJsonSchemaMultiDocument(
705
794
  )
706
795
  }
707
796
 
708
- function isTypePartition(union: SchemaRepresentation.Union): boolean {
797
+ function isTypePartition(union: ImportedUnion): boolean {
709
798
  let mask = 0
710
799
  for (const type of union.types) {
711
- const memberMask = rootMask(type as ImportedJsonSchemaRepresentation)
800
+ const memberMask = rootMask(type)
712
801
  if ((mask & memberMask) !== 0) return false
713
802
  mask |= memberMask
714
803
  }
@@ -723,13 +812,13 @@ function translateJsonSchemaMultiDocument(
723
812
  }
724
813
 
725
814
  function intersectPartition(
726
- partition: SchemaRepresentation.Union,
727
- other: SchemaRepresentation.Union,
815
+ partition: ImportedUnion,
816
+ other: ImportedUnion,
728
817
  path: Path,
729
818
  partitionOnLeft: boolean
730
819
  ): ImportedJsonSchemaRepresentation {
731
- const partitionTypes = partition.types as ReadonlyArray<ImportedJsonSchemaRepresentation>
732
- const otherTypes = other.types as ReadonlyArray<ImportedJsonSchemaRepresentation>
820
+ const partitionTypes = partition.types
821
+ const otherTypes = other.types
733
822
  for (const type of otherTypes) {
734
823
  const mask = rootMask(type)
735
824
  if (partitionTypes.filter((member) => (rootMask(member) & mask) !== 0).length > 1 && hasChoices(type)) {
@@ -746,8 +835,8 @@ function translateJsonSchemaMultiDocument(
746
835
  }
747
836
 
748
837
  function intersectUnions(
749
- left: SchemaRepresentation.Union,
750
- right: SchemaRepresentation.Union,
838
+ left: ImportedUnion,
839
+ right: ImportedUnion,
751
840
  path: Path
752
841
  ): ImportedJsonSchemaRepresentation {
753
842
  const literals = intersectLiteralUnions(left, right, path)
@@ -766,19 +855,19 @@ function translateJsonSchemaMultiDocument(
766
855
  if (right._tag === "Never") return right
767
856
  if (left._tag === "Unknown") return annotateIntersection(right, left, right)
768
857
  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
- )
858
+ if (left._tag === "Reference") {
859
+ // Resolve an unannotated reference first. An annotated empty definition
860
+ // could otherwise leave the other reference unresolved during union partitioning.
861
+ if (
862
+ (left.annotations !== undefined || left.customAnnotations !== undefined) &&
863
+ right._tag === "Reference" && right.annotations === undefined && right.customAnnotations === undefined
864
+ ) {
865
+ return intersect(left, resolveReference(right, path), path)
866
+ }
867
+ return annotate(intersect(resolveReference(left, path), right, path), left)
776
868
  }
777
- if (right._tag === "Suspend") {
778
- return annotate(
779
- intersect(left, right.thunk as ImportedJsonSchemaRepresentation, path),
780
- right.annotations
781
- )
869
+ if (right._tag === "Reference") {
870
+ return annotate(intersect(left, resolveReference(right, path), path), right)
782
871
  }
783
872
  if (left._tag === "Union" && right._tag === "Union") return intersectUnions(left, right, path)
784
873
  if (left._tag === "Union") return intersectUnionWithType(left, right, path, true)
@@ -794,18 +883,16 @@ function translateJsonSchemaMultiDocument(
794
883
  return intersectPrimitiveWithLiteral(left, right)
795
884
  }
796
885
  if (right._tag !== "String") return never
797
- const [stringChecks, stringAnnotations] = intersectChecks(left, right)
798
- return annotate({ _tag: "String", checks: stringChecks }, stringAnnotations)
886
+ return { _tag: "String", ...intersectChecks(left, right) }
799
887
  case "Number":
800
888
  if (right._tag === "Literal") {
801
889
  return intersectPrimitiveWithLiteral(left, right)
802
890
  }
803
891
  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)
892
+ return {
893
+ _tag: "Number",
894
+ ...intersectChecks(left, right, ["effect/schema/isFinite", "effect/schema/isInt"])
895
+ }
809
896
  case "Boolean":
810
897
  if (right._tag === "Literal") {
811
898
  return intersectPrimitiveWithLiteral(left, right)
@@ -844,22 +931,12 @@ function translateJsonSchemaMultiDocument(
844
931
  if (right._tag !== "Arrays") return never
845
932
  const arrays = intersectArrays(left, right, path)
846
933
  if (arrays === undefined) return never
847
- const [checks, annotations] = intersectChecks(left, right, ["effect/schema/isUnique"])
848
- return annotate({ _tag: "Arrays", ...arrays, checks }, annotations)
934
+ return { _tag: "Arrays", ...arrays, ...intersectChecks(left, right, ["effect/schema/isUnique"]) }
849
935
  }
850
936
  case "Objects": {
851
937
  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
- )
938
+ const scopes = [...left.scopes, ...right.scopes]
939
+ return lowerObject(scopes, intersectChecks(left, right), path)
863
940
  }
864
941
  }
865
942
  }
@@ -882,7 +959,7 @@ function translateJsonSchemaMultiDocument(
882
959
  if (
883
960
  isObject(schema.not) &&
884
961
  Object.keys(schema.not).length === 0
885
- ) return annotate(never, jsonSchemaAnnotations(schema))
962
+ ) return annotate(never, jsonSchemaAnnotations(schema, options))
886
963
  const wasInNestedResource = inNestedResource
887
964
  inNestedResource ||= !isRoot && typeof schema.$id === "string"
888
965
  for (const keyword of Object.keys(schema)) {
@@ -939,8 +1016,7 @@ function translateJsonSchemaMultiDocument(
939
1016
  [...path, "$ref"]
940
1017
  )
941
1018
  }
942
- if (!reachableDefinitions.has($ref)) reachableDefinitions.set($ref, path)
943
- const reference: SchemaRepresentation.Reference = { _tag: "Reference", $ref }
1019
+ const reference: ImportedReference = { _tag: "Reference", $ref, path }
944
1020
  representation = representation._tag === "Unknown"
945
1021
  ? reference
946
1022
  : representation._tag === "Never"
@@ -955,11 +1031,7 @@ function translateJsonSchemaMultiDocument(
955
1031
  path
956
1032
  )
957
1033
  }
958
- const annotations = jsonSchemaAnnotations(schema)
959
- if (annotations !== undefined && representation._tag === "Reference") {
960
- annotatedReferences.push({ reference: representation, path })
961
- }
962
- representation = annotate(representation, annotations)
1034
+ representation = annotate(representation, jsonSchemaAnnotations(schema, options))
963
1035
 
964
1036
  if (Array.isArray(schema.allOf)) {
965
1037
  for (let index = 0; index < schema.allOf.length; index++) {
@@ -1051,7 +1123,7 @@ function translateJsonSchemaMultiDocument(
1051
1123
  }
1052
1124
  case "object": {
1053
1125
  const scope = collectObjectScope(schema, path)
1054
- return lowerObject([scope], collectObjectChecks(schema, path), undefined, path)
1126
+ return lowerObject([scope], { checks: collectObjectChecks(schema, path) }, path)
1055
1127
  }
1056
1128
  default:
1057
1129
  return unknown
@@ -1192,11 +1264,8 @@ function translateJsonSchemaMultiDocument(
1192
1264
  finalize(translateSchema(schema, singleRoot ? ["schema"] : ["schemas", index], true))
1193
1265
  ) as [Representation, ...Array<Representation>]
1194
1266
  // 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)
1267
+ for (const [key, reference] of finalReferences) {
1268
+ InternalRecord.assignProperty(references, key, finalize(translateDefinition(key, reference.path)))
1200
1269
  }
1201
1270
  return { representations, references }
1202
1271
  }