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
@@ -25,6 +25,7 @@ import * as Inspectable from "../Inspectable.ts"
25
25
  import { getStackTraceLimit, setStackTraceLimit } from "../internal/stackTraceLimit.ts"
26
26
  import * as Layer from "../Layer.ts"
27
27
  import * as Option from "../Option.ts"
28
+ import type * as CircuitBreaker from "../persistence/CircuitBreaker.ts"
28
29
  import type * as RateLimiter from "../persistence/RateLimiter.ts"
29
30
  import { type Pipeable, pipeArguments } from "../Pipeable.ts"
30
31
  import * as Predicate from "../Predicate.ts"
@@ -46,6 +47,7 @@ import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
46
47
  import * as HttpMethod from "./HttpMethod.ts"
47
48
  import * as TraceContext from "./HttpTraceContext.ts"
48
49
  import * as tracing from "./internal/tracing.ts"
50
+ import { getWebSource, WebSourceSymbol } from "./internal/webResponse.ts"
49
51
  import * as Url from "./Url.ts"
50
52
  import * as UrlParams from "./UrlParams.ts"
51
53
 
@@ -467,56 +469,7 @@ export const catchTag: {
467
469
  transformResponse(
468
470
  self,
469
471
  (effect) =>
470
- Effect.catchTag</**
471
- * Handles client failures with one or more matching `_tag` values and returns a transformed client.
472
- *
473
- * @stability unstable
474
- * @category error handling
475
- * @since 4.0.0
476
- */
477
- HttpClientResponse.HttpClientResponse, /**
478
- * Handles client failures with one or more matching `_tag` values and returns a transformed client.
479
- *
480
- * @stability unstable
481
- * @category error handling
482
- * @since 4.0.0
483
- */
484
- E, /**
485
- * Handles client failures with one or more matching `_tag` values and returns a transformed client.
486
- *
487
- * @stability unstable
488
- * @category error handling
489
- * @since 4.0.0
490
- */
491
- R, /**
492
- * Handles client failures with one or more matching `_tag` values and returns a transformed client.
493
- *
494
- * @stability unstable
495
- * @category error handling
496
- * @since 4.0.0
497
- */
498
- K, /**
499
- * Handles client failures with one or more matching `_tag` values and returns a transformed client.
500
- *
501
- * @stability unstable
502
- * @category error handling
503
- * @since 4.0.0
504
- */
505
- R1, /**
506
- * Handles client failures with one or more matching `_tag` values and returns a transformed client.
507
- *
508
- * @stability unstable
509
- * @category error handling
510
- * @since 4.0.0
511
- */
512
- E1, /**
513
- * Handles client failures with one or more matching `_tag` values and returns a transformed client.
514
- *
515
- * @stability unstable
516
- * @category error handling
517
- * @since 4.0.0
518
- */
519
- HttpClientResponse.HttpClientResponse>(
472
+ Effect.catchTag<HttpClientResponse.HttpClientResponse, E, R, K, R1, E1, HttpClientResponse.HttpClientResponse>(
520
473
  effect,
521
474
  tag,
522
475
  f
@@ -884,12 +837,11 @@ export const make = (
884
837
  fiber.getRef(TracerDisabledWhen)(request)
885
838
  if (tracerDisabled) {
886
839
  const effect = f(request, url, controller.signal, fiber as any)
887
- if (scopedController) return effect
840
+ if (scopedController) return Effect.map(effect, (response) => trackResponse(response, controller, true))
888
841
  return Effect.uninterruptibleMask((restore) =>
889
842
  Effect.matchCauseEffect(restore(effect), {
890
843
  onSuccess(response) {
891
- responseRegistry.register(response, controller)
892
- return Effect.succeed(new InterruptibleResponse(response, controller))
844
+ return Effect.succeed(trackResponse(response, controller, false))
893
845
  },
894
846
  onFailure(cause) {
895
847
  if (Cause.hasInterrupts(cause)) {
@@ -930,9 +882,7 @@ export const make = (
930
882
  endSpanWithStatusError(fiber, span, request, response)
931
883
  }
932
884
 
933
- if (scopedController) return Effect.succeed(response)
934
- responseRegistry.register(response, controller)
935
- return Effect.succeed(new InterruptibleResponse(response, controller))
885
+ return Effect.succeed(trackResponse(response, controller, scopedController !== undefined))
936
886
  },
937
887
  onFailure(cause) {
938
888
  if (!scopedController && Cause.hasInterrupts(cause)) {
@@ -1641,81 +1591,18 @@ export const withRateLimiter: {
1641
1591
  ) => {
1642
1592
  onResponse?.(clock, key, response.headers, tokens, sent)
1643
1593
  if (options.disableResponseInspection || response.status !== 429) {
1644
- return Effect.succeed</**
1645
- * Applies request rate limiting using the `RateLimiter` service.
1646
- *
1647
- * **Details**
1648
- *
1649
- * It can update limits by inspecting common rate limit response headers and
1650
- * automatically retries HTTP `429` responses (or `HttpClientError` values
1651
- * wrapping a `429` response) by forcing the retry back through the limiter.
1652
- * When a response reports the remaining budget, requests wait for the
1653
- * reported reset once that budget is exhausted.
1654
- *
1655
- * **Gotchas**
1656
- *
1657
- * Automatic HTTP `429` retries are unlimited unless `times` is specified.
1658
- * Disabling response inspection does not disable retries; set `times` to `0`
1659
- * to return or fail with the first `429`.
1660
- *
1661
- * @stability unstable
1662
- * @category rate limiting
1663
- * @since 4.0.0
1664
- */
1665
- Duration.Duration | undefined>(undefined);
1594
+ return Effect.succeed<Duration.Duration | undefined>(undefined)
1666
1595
  }
1667
1596
  const retryAfter = parseRetryAfter(
1668
1597
  clock.currentTimeMillisUnsafe(),
1669
1598
  getHeader(response.headers, ...headerNames.retryAfter)
1670
1599
  )
1671
1600
  if (retryAfter === undefined) {
1672
- return Effect.succeed</**
1673
- * Applies request rate limiting using the `RateLimiter` service.
1674
- *
1675
- * **Details**
1676
- *
1677
- * It can update limits by inspecting common rate limit response headers and
1678
- * automatically retries HTTP `429` responses (or `HttpClientError` values
1679
- * wrapping a `429` response) by forcing the retry back through the limiter.
1680
- * When a response reports the remaining budget, requests wait for the
1681
- * reported reset once that budget is exhausted.
1682
- *
1683
- * **Gotchas**
1684
- *
1685
- * Automatic HTTP `429` retries are unlimited unless `times` is specified.
1686
- * Disabling response inspection does not disable retries; set `times` to `0`
1687
- * to return or fail with the first `429`.
1688
- *
1689
- * @stability unstable
1690
- * @category rate limiting
1691
- * @since 4.0.0
1692
- */
1693
- Duration.Duration | undefined>(undefined);
1601
+ return Effect.succeed<Duration.Duration | undefined>(undefined)
1694
1602
  }
1695
1603
  const delay = parseRateLimitWindow(clock, response.headers, headerNames) ?? retryAfter
1696
1604
  if (adaptive === undefined) {
1697
- return Effect.succeed</**
1698
- * Applies request rate limiting using the `RateLimiter` service.
1699
- *
1700
- * **Details**
1701
- *
1702
- * It can update limits by inspecting common rate limit response headers and
1703
- * automatically retries HTTP `429` responses (or `HttpClientError` values
1704
- * wrapping a `429` response) by forcing the retry back through the limiter.
1705
- * When a response reports the remaining budget, requests wait for the
1706
- * reported reset once that budget is exhausted.
1707
- *
1708
- * **Gotchas**
1709
- *
1710
- * Automatic HTTP `429` retries are unlimited unless `times` is specified.
1711
- * Disabling response inspection does not disable retries; set `times` to `0`
1712
- * to return or fail with the first `429`.
1713
- *
1714
- * @stability unstable
1715
- * @category rate limiting
1716
- * @since 4.0.0
1717
- */
1718
- Duration.Duration | undefined>(delay);
1605
+ return Effect.succeed<Duration.Duration | undefined>(delay)
1719
1606
  }
1720
1607
  return Effect.as(
1721
1608
  options.limiter.adaptiveFeedback({
@@ -1786,9 +1673,518 @@ export const withRateLimiter: {
1786
1673
  return Duration.isZero(delay) ? runAdaptive() : Effect.flatMap(Effect.sleep(delay), runAdaptive)
1787
1674
  }
1788
1675
  )
1789
- });
1676
+ })
1790
1677
  })
1791
1678
 
1679
+ /**
1680
+ * Namespace containing configuration types for `withCircuitBreaker`.
1681
+ *
1682
+ * @stability experimental
1683
+ * @since 4.0.6
1684
+ */
1685
+ export declare namespace WithCircuitBreaker {
1686
+ /**
1687
+ * Options used to configure `withCircuitBreaker`.
1688
+ *
1689
+ * @stability experimental
1690
+ * @category circuit breaking
1691
+ * @since 4.0.6
1692
+ */
1693
+ export interface Options<E, R2 = never> {
1694
+ /**
1695
+ * The `CircuitBreaker` service that guards each request.
1696
+ */
1697
+ readonly breaker: CircuitBreaker.CircuitBreaker
1698
+ /**
1699
+ * The circuit key for a request. Requests with the same key share one
1700
+ * circuit. Defaults to the request origin, falling back to the raw request
1701
+ * URL when it cannot be parsed.
1702
+ */
1703
+ readonly key?: string | ((request: HttpClientRequest.HttpClientRequest) => string) | undefined
1704
+ /**
1705
+ * Classifies the `Exit` of each request that the breaker admitted.
1706
+ * Defaults to `circuitBreakerClassifier`.
1707
+ */
1708
+ readonly classify?:
1709
+ | ((
1710
+ exit: Exit.Exit<HttpClientResponse.HttpClientResponse, E>
1711
+ ) => CircuitBreaker.Outcome | Effect.Effect<CircuitBreaker.Outcome, never, R2>)
1712
+ | undefined
1713
+ }
1714
+ }
1715
+
1716
+ /**
1717
+ * Guards requests with a `CircuitBreaker`.
1718
+ *
1719
+ * **Details**
1720
+ *
1721
+ * Requests are keyed by origin unless `key` is set, and classified with
1722
+ * `circuitBreakerClassifier` unless `classify` is set. A rejected request
1723
+ * fails with `CircuitBreakerError` without reaching the wrapped client.
1724
+ *
1725
+ * Apply it after `withRateLimiter` and `retryTransient`, so the breaker sees
1726
+ * one outcome per call and an open circuit skips the retry loop.
1727
+ * `retryTransient` never retries a `CircuitBreakerError`. A custom `classify`
1728
+ * can delegate the cases it doesn't handle to `circuitBreakerClassifier`.
1729
+ *
1730
+ * **Gotchas**
1731
+ *
1732
+ * - The breaker only sees the response headers. To count an error in the
1733
+ * body, lift it into the error channel below the breaker with
1734
+ * `transformResponse` and count it in `classify`.
1735
+ * - `withRateLimiter` retries `429` without limit by default, which can hold
1736
+ * the probe slot for minutes. Set its `times`.
1737
+ * - A rejected request has no client span. The rejection fails the caller's
1738
+ * span instead.
1739
+ *
1740
+ * **Example** (Guarding an API in the recommended order)
1741
+ *
1742
+ * ```ts import.meta.vitest
1743
+ * import { Effect, Layer, Ref, Schedule } from "effect"
1744
+ * import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
1745
+ * import { CircuitBreaker, RateLimiter } from "effect/persistence"
1746
+ *
1747
+ * const program = Effect.gen(function*() {
1748
+ * const requests = yield* Ref.make(0)
1749
+ * // A dependency that always answers 503.
1750
+ * const unavailable = HttpClient.make((request) =>
1751
+ * Effect.as(Ref.update(requests, (n) => n + 1), HttpClientResponse.fromWeb(request, new Response(null, { status: 503 })))
1752
+ * )
1753
+ *
1754
+ * const breaker = yield* CircuitBreaker.make({
1755
+ * tripPolicy: CircuitBreaker.consecutive(1),
1756
+ * openDuration: "30 seconds"
1757
+ * })
1758
+ * const client = unavailable.pipe(
1759
+ * HttpClient.withRateLimiter({
1760
+ * limiter: yield* RateLimiter.RateLimiter,
1761
+ * key: "inventory",
1762
+ * limit: 100,
1763
+ * window: "1 second",
1764
+ * times: 3
1765
+ * }),
1766
+ * HttpClient.retryTransient({ times: 2, schedule: Schedule.exponential("1 millis") }),
1767
+ * HttpClient.withCircuitBreaker({ breaker })
1768
+ * )
1769
+ *
1770
+ * // Three attempts, then the breaker records one failure and opens.
1771
+ * yield* client.execute(HttpClientRequest.get("http://inventory.test/items"))
1772
+ * // Rejected before the retry loop starts, so no further request is sent.
1773
+ * const rejected = yield* Effect.flip(client.execute(HttpClientRequest.get("http://inventory.test/items")))
1774
+ *
1775
+ * return [yield* Ref.get(requests), rejected._tag]
1776
+ * }).pipe(
1777
+ * Effect.scoped,
1778
+ * Effect.provide(Layer.merge(
1779
+ * CircuitBreaker.layerStoreMemory(),
1780
+ * RateLimiter.layer.pipe(Layer.provide(RateLimiter.layerStoreMemory))
1781
+ * ))
1782
+ * )
1783
+ *
1784
+ * await Effect.runPromise(program) // => [3, "CircuitBreakerError"]
1785
+ * ```
1786
+ *
1787
+ * **Example** (Counting an error in the body as a failure)
1788
+ *
1789
+ * This API answers `200` with `{ "status": "degraded" }` when it is failing.
1790
+ *
1791
+ * ```ts import.meta.vitest
1792
+ * import { Data, Effect, Exit, Option } from "effect"
1793
+ * import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
1794
+ * import { CircuitBreaker } from "effect/persistence"
1795
+ *
1796
+ * class Degraded extends Data.TaggedError("Degraded") {}
1797
+ *
1798
+ * const degraded = HttpClient.make((request) =>
1799
+ * Effect.succeed(HttpClientResponse.fromWeb(request, Response.json({ status: "degraded" })))
1800
+ * )
1801
+ *
1802
+ * const program = Effect.gen(function*() {
1803
+ * const breaker = yield* CircuitBreaker.make({
1804
+ * tripPolicy: CircuitBreaker.consecutive(1),
1805
+ * openDuration: "30 seconds"
1806
+ * })
1807
+ * const client = degraded.pipe(
1808
+ * HttpClient.transformResponse(Effect.flatMap((response) =>
1809
+ * Effect.flatMap(response.json, (body) =>
1810
+ * typeof body === "object" && body !== null && "status" in body && body.status === "degraded"
1811
+ * ? Effect.fail(new Degraded())
1812
+ * : Effect.succeed(response))
1813
+ * )),
1814
+ * HttpClient.withCircuitBreaker({
1815
+ * breaker,
1816
+ * classify: (exit) =>
1817
+ * Option.exists(Exit.findErrorOption(exit), (error) => error._tag === "Degraded")
1818
+ * ? CircuitBreaker.failure()
1819
+ * : HttpClient.circuitBreakerClassifier(exit)
1820
+ * })
1821
+ * )
1822
+ *
1823
+ * yield* Effect.flip(client.get("http://status.test/"))
1824
+ * const state = yield* breaker.state("http://status.test")
1825
+ * return state._tag
1826
+ * }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
1827
+ *
1828
+ * await Effect.runPromise(program) // => "Open"
1829
+ * ```
1830
+ *
1831
+ * @stability experimental
1832
+ * @category circuit breaking
1833
+ * @since 4.0.6
1834
+ */
1835
+ export const withCircuitBreaker: {
1836
+ /**
1837
+ * Guards requests with a `CircuitBreaker`.
1838
+ *
1839
+ * **Details**
1840
+ *
1841
+ * Requests are keyed by origin unless `key` is set, and classified with
1842
+ * `circuitBreakerClassifier` unless `classify` is set. A rejected request
1843
+ * fails with `CircuitBreakerError` without reaching the wrapped client.
1844
+ *
1845
+ * Apply it after `withRateLimiter` and `retryTransient`, so the breaker sees
1846
+ * one outcome per call and an open circuit skips the retry loop.
1847
+ * `retryTransient` never retries a `CircuitBreakerError`. A custom `classify`
1848
+ * can delegate the cases it doesn't handle to `circuitBreakerClassifier`.
1849
+ *
1850
+ * **Gotchas**
1851
+ *
1852
+ * - The breaker only sees the response headers. To count an error in the
1853
+ * body, lift it into the error channel below the breaker with
1854
+ * `transformResponse` and count it in `classify`.
1855
+ * - `withRateLimiter` retries `429` without limit by default, which can hold
1856
+ * the probe slot for minutes. Set its `times`.
1857
+ * - A rejected request has no client span. The rejection fails the caller's
1858
+ * span instead.
1859
+ *
1860
+ * **Example** (Guarding an API in the recommended order)
1861
+ *
1862
+ * ```ts import.meta.vitest
1863
+ * import { Effect, Layer, Ref, Schedule } from "effect"
1864
+ * import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
1865
+ * import { CircuitBreaker, RateLimiter } from "effect/persistence"
1866
+ *
1867
+ * const program = Effect.gen(function*() {
1868
+ * const requests = yield* Ref.make(0)
1869
+ * // A dependency that always answers 503.
1870
+ * const unavailable = HttpClient.make((request) =>
1871
+ * Effect.as(Ref.update(requests, (n) => n + 1), HttpClientResponse.fromWeb(request, new Response(null, { status: 503 })))
1872
+ * )
1873
+ *
1874
+ * const breaker = yield* CircuitBreaker.make({
1875
+ * tripPolicy: CircuitBreaker.consecutive(1),
1876
+ * openDuration: "30 seconds"
1877
+ * })
1878
+ * const client = unavailable.pipe(
1879
+ * HttpClient.withRateLimiter({
1880
+ * limiter: yield* RateLimiter.RateLimiter,
1881
+ * key: "inventory",
1882
+ * limit: 100,
1883
+ * window: "1 second",
1884
+ * times: 3
1885
+ * }),
1886
+ * HttpClient.retryTransient({ times: 2, schedule: Schedule.exponential("1 millis") }),
1887
+ * HttpClient.withCircuitBreaker({ breaker })
1888
+ * )
1889
+ *
1890
+ * // Three attempts, then the breaker records one failure and opens.
1891
+ * yield* client.execute(HttpClientRequest.get("http://inventory.test/items"))
1892
+ * // Rejected before the retry loop starts, so no further request is sent.
1893
+ * const rejected = yield* Effect.flip(client.execute(HttpClientRequest.get("http://inventory.test/items")))
1894
+ *
1895
+ * return [yield* Ref.get(requests), rejected._tag]
1896
+ * }).pipe(
1897
+ * Effect.scoped,
1898
+ * Effect.provide(Layer.merge(
1899
+ * CircuitBreaker.layerStoreMemory(),
1900
+ * RateLimiter.layer.pipe(Layer.provide(RateLimiter.layerStoreMemory))
1901
+ * ))
1902
+ * )
1903
+ *
1904
+ * await Effect.runPromise(program) // => [3, "CircuitBreakerError"]
1905
+ * ```
1906
+ *
1907
+ * **Example** (Counting an error in the body as a failure)
1908
+ *
1909
+ * This API answers `200` with `{ "status": "degraded" }` when it is failing.
1910
+ *
1911
+ * ```ts import.meta.vitest
1912
+ * import { Data, Effect, Exit, Option } from "effect"
1913
+ * import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
1914
+ * import { CircuitBreaker } from "effect/persistence"
1915
+ *
1916
+ * class Degraded extends Data.TaggedError("Degraded") {}
1917
+ *
1918
+ * const degraded = HttpClient.make((request) =>
1919
+ * Effect.succeed(HttpClientResponse.fromWeb(request, Response.json({ status: "degraded" })))
1920
+ * )
1921
+ *
1922
+ * const program = Effect.gen(function*() {
1923
+ * const breaker = yield* CircuitBreaker.make({
1924
+ * tripPolicy: CircuitBreaker.consecutive(1),
1925
+ * openDuration: "30 seconds"
1926
+ * })
1927
+ * const client = degraded.pipe(
1928
+ * HttpClient.transformResponse(Effect.flatMap((response) =>
1929
+ * Effect.flatMap(response.json, (body) =>
1930
+ * typeof body === "object" && body !== null && "status" in body && body.status === "degraded"
1931
+ * ? Effect.fail(new Degraded())
1932
+ * : Effect.succeed(response))
1933
+ * )),
1934
+ * HttpClient.withCircuitBreaker({
1935
+ * breaker,
1936
+ * classify: (exit) =>
1937
+ * Option.exists(Exit.findErrorOption(exit), (error) => error._tag === "Degraded")
1938
+ * ? CircuitBreaker.failure()
1939
+ * : HttpClient.circuitBreakerClassifier(exit)
1940
+ * })
1941
+ * )
1942
+ *
1943
+ * yield* Effect.flip(client.get("http://status.test/"))
1944
+ * const state = yield* breaker.state("http://status.test")
1945
+ * return state._tag
1946
+ * }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
1947
+ *
1948
+ * await Effect.runPromise(program) // => "Open"
1949
+ * ```
1950
+ *
1951
+ * @stability experimental
1952
+ * @category circuit breaking
1953
+ * @since 4.0.6
1954
+ */
1955
+ <E, R2 = never>(options: WithCircuitBreaker.Options<E, R2>): <R>(
1956
+ self: HttpClient.With<E, R>
1957
+ ) => HttpClient.With<E | CircuitBreaker.CircuitBreakerError, R | R2>
1958
+ /**
1959
+ * Guards requests with a `CircuitBreaker`.
1960
+ *
1961
+ * **Details**
1962
+ *
1963
+ * Requests are keyed by origin unless `key` is set, and classified with
1964
+ * `circuitBreakerClassifier` unless `classify` is set. A rejected request
1965
+ * fails with `CircuitBreakerError` without reaching the wrapped client.
1966
+ *
1967
+ * Apply it after `withRateLimiter` and `retryTransient`, so the breaker sees
1968
+ * one outcome per call and an open circuit skips the retry loop.
1969
+ * `retryTransient` never retries a `CircuitBreakerError`. A custom `classify`
1970
+ * can delegate the cases it doesn't handle to `circuitBreakerClassifier`.
1971
+ *
1972
+ * **Gotchas**
1973
+ *
1974
+ * - The breaker only sees the response headers. To count an error in the
1975
+ * body, lift it into the error channel below the breaker with
1976
+ * `transformResponse` and count it in `classify`.
1977
+ * - `withRateLimiter` retries `429` without limit by default, which can hold
1978
+ * the probe slot for minutes. Set its `times`.
1979
+ * - A rejected request has no client span. The rejection fails the caller's
1980
+ * span instead.
1981
+ *
1982
+ * **Example** (Guarding an API in the recommended order)
1983
+ *
1984
+ * ```ts import.meta.vitest
1985
+ * import { Effect, Layer, Ref, Schedule } from "effect"
1986
+ * import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
1987
+ * import { CircuitBreaker, RateLimiter } from "effect/persistence"
1988
+ *
1989
+ * const program = Effect.gen(function*() {
1990
+ * const requests = yield* Ref.make(0)
1991
+ * // A dependency that always answers 503.
1992
+ * const unavailable = HttpClient.make((request) =>
1993
+ * Effect.as(Ref.update(requests, (n) => n + 1), HttpClientResponse.fromWeb(request, new Response(null, { status: 503 })))
1994
+ * )
1995
+ *
1996
+ * const breaker = yield* CircuitBreaker.make({
1997
+ * tripPolicy: CircuitBreaker.consecutive(1),
1998
+ * openDuration: "30 seconds"
1999
+ * })
2000
+ * const client = unavailable.pipe(
2001
+ * HttpClient.withRateLimiter({
2002
+ * limiter: yield* RateLimiter.RateLimiter,
2003
+ * key: "inventory",
2004
+ * limit: 100,
2005
+ * window: "1 second",
2006
+ * times: 3
2007
+ * }),
2008
+ * HttpClient.retryTransient({ times: 2, schedule: Schedule.exponential("1 millis") }),
2009
+ * HttpClient.withCircuitBreaker({ breaker })
2010
+ * )
2011
+ *
2012
+ * // Three attempts, then the breaker records one failure and opens.
2013
+ * yield* client.execute(HttpClientRequest.get("http://inventory.test/items"))
2014
+ * // Rejected before the retry loop starts, so no further request is sent.
2015
+ * const rejected = yield* Effect.flip(client.execute(HttpClientRequest.get("http://inventory.test/items")))
2016
+ *
2017
+ * return [yield* Ref.get(requests), rejected._tag]
2018
+ * }).pipe(
2019
+ * Effect.scoped,
2020
+ * Effect.provide(Layer.merge(
2021
+ * CircuitBreaker.layerStoreMemory(),
2022
+ * RateLimiter.layer.pipe(Layer.provide(RateLimiter.layerStoreMemory))
2023
+ * ))
2024
+ * )
2025
+ *
2026
+ * await Effect.runPromise(program) // => [3, "CircuitBreakerError"]
2027
+ * ```
2028
+ *
2029
+ * **Example** (Counting an error in the body as a failure)
2030
+ *
2031
+ * This API answers `200` with `{ "status": "degraded" }` when it is failing.
2032
+ *
2033
+ * ```ts import.meta.vitest
2034
+ * import { Data, Effect, Exit, Option } from "effect"
2035
+ * import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
2036
+ * import { CircuitBreaker } from "effect/persistence"
2037
+ *
2038
+ * class Degraded extends Data.TaggedError("Degraded") {}
2039
+ *
2040
+ * const degraded = HttpClient.make((request) =>
2041
+ * Effect.succeed(HttpClientResponse.fromWeb(request, Response.json({ status: "degraded" })))
2042
+ * )
2043
+ *
2044
+ * const program = Effect.gen(function*() {
2045
+ * const breaker = yield* CircuitBreaker.make({
2046
+ * tripPolicy: CircuitBreaker.consecutive(1),
2047
+ * openDuration: "30 seconds"
2048
+ * })
2049
+ * const client = degraded.pipe(
2050
+ * HttpClient.transformResponse(Effect.flatMap((response) =>
2051
+ * Effect.flatMap(response.json, (body) =>
2052
+ * typeof body === "object" && body !== null && "status" in body && body.status === "degraded"
2053
+ * ? Effect.fail(new Degraded())
2054
+ * : Effect.succeed(response))
2055
+ * )),
2056
+ * HttpClient.withCircuitBreaker({
2057
+ * breaker,
2058
+ * classify: (exit) =>
2059
+ * Option.exists(Exit.findErrorOption(exit), (error) => error._tag === "Degraded")
2060
+ * ? CircuitBreaker.failure()
2061
+ * : HttpClient.circuitBreakerClassifier(exit)
2062
+ * })
2063
+ * )
2064
+ *
2065
+ * yield* Effect.flip(client.get("http://status.test/"))
2066
+ * const state = yield* breaker.state("http://status.test")
2067
+ * return state._tag
2068
+ * }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
2069
+ *
2070
+ * await Effect.runPromise(program) // => "Open"
2071
+ * ```
2072
+ *
2073
+ * @stability experimental
2074
+ * @category circuit breaking
2075
+ * @since 4.0.6
2076
+ */
2077
+ <E, R, R2 = never>(self: HttpClient.With<E, R>, options: WithCircuitBreaker.Options<E, R2>): HttpClient.With<E | CircuitBreaker.CircuitBreakerError, R | R2>
2078
+ } = dual(2, <E, R, R2>(
2079
+ self: HttpClient.With<E, R>,
2080
+ options: WithCircuitBreaker.Options<E, R2>
2081
+ ): HttpClient.With<E | CircuitBreaker.CircuitBreakerError, R | R2> => {
2082
+ const keyOption = options.key
2083
+ const resolveKey: (request: HttpClientRequest.HttpClientRequest) => string = typeof keyOption === "function"
2084
+ ? keyOption
2085
+ : keyOption === undefined
2086
+ ? requestOrigin
2087
+ : constant(keyOption)
2088
+ const classify = options.classify ?? circuitBreakerClassifier
2089
+ return transform(self, (effect, request) => options.breaker.execute(effect, { key: resolveKey(request), classify }))
2090
+ })
2091
+
2092
+ const requestOrigin = (request: HttpClientRequest.HttpClientRequest): string =>
2093
+ Option.match(HttpClientRequest.toUrl(request), {
2094
+ onNone: () => request.url,
2095
+ onSome: (url) => url.origin
2096
+ })
2097
+
2098
+ /**
2099
+ * The default `withCircuitBreaker` classifier.
2100
+ *
2101
+ * **Details**
2102
+ *
2103
+ * - Failure: status 408, 500, 502, 503 or 504, returned or wrapped in a
2104
+ * `StatusCodeError`, and any `TransportError` or `Cause.TimeoutError`.
2105
+ * - Success: any other response, including other 4xx, since the dependency
2106
+ * answered.
2107
+ * - Ignored: status 429 (left to `withRateLimiter`), `EncodeError`,
2108
+ * `InvalidUrlError`, `DecodeError`, `EmptyBodyError`, unknown typed errors
2109
+ * and defects. HttpClient errors are typed, so a defect here is a bug in
2110
+ * the caller.
2111
+ *
2112
+ * When a cause holds several errors, a failure beats a success and a success
2113
+ * beats an ignored outcome. A failure carries the longest `Retry-After` it
2114
+ * saw. The result is an `Effect` only because parsing an HTTP-date
2115
+ * `Retry-After` reads `Clock`.
2116
+ *
2117
+ * **Gotchas**
2118
+ *
2119
+ * `TransportError` also covers client-side refusals, which count as failures.
2120
+ *
2121
+ * @stability experimental
2122
+ * @category circuit breaking
2123
+ * @since 4.0.6
2124
+ */
2125
+ export const circuitBreakerClassifier = <E>(
2126
+ exit: Exit.Exit<HttpClientResponse.HttpClientResponse, E>
2127
+ ): Effect.Effect<CircuitBreaker.Outcome> =>
2128
+ Effect.clockWith((clock) => Effect.succeed(classifyCircuitBreakerExit(exit, clock.currentTimeMillisUnsafe())))
2129
+
2130
+ const classifyCircuitBreakerExit = <E>(
2131
+ exit: Exit.Exit<HttpClientResponse.HttpClientResponse, E>,
2132
+ nowMillis: number
2133
+ ): CircuitBreaker.Outcome => {
2134
+ if (Exit.isSuccess(exit)) {
2135
+ const outcome = circuitBreakerStatusOutcome(exit.value.status)
2136
+ return outcome === "Failure" ? circuitBreakerFailure(retryAfterOf(exit.value, nowMillis)) : { _tag: outcome }
2137
+ }
2138
+ let failed = false
2139
+ let succeeded = false
2140
+ let retryAfter: Duration.Duration | undefined
2141
+ for (const reason of exit.cause.reasons) {
2142
+ if (!Cause.isFailReason(reason)) {
2143
+ continue
2144
+ }
2145
+ const outcome = circuitBreakerErrorOutcome(reason.error)
2146
+ if (outcome === "Failure") {
2147
+ failed = true
2148
+ const hint = retryAfterOf(reason.error, nowMillis)
2149
+ if (hint !== undefined) {
2150
+ retryAfter = retryAfter === undefined ? hint : Duration.max(retryAfter, hint)
2151
+ }
2152
+ } else if (outcome === "Success") {
2153
+ succeeded = true
2154
+ }
2155
+ }
2156
+ return failed ? circuitBreakerFailure(retryAfter) : { _tag: succeeded ? "Success" : "Ignored" }
2157
+ }
2158
+
2159
+ const circuitBreakerFailure = (retryAfter: Duration.Duration | undefined): CircuitBreaker.Outcome => ({
2160
+ _tag: "Failure",
2161
+ retryAfter
2162
+ })
2163
+
2164
+ const circuitBreakerErrorOutcome = (error: unknown): CircuitBreaker.Outcome["_tag"] => {
2165
+ if (Cause.isTimeoutError(error)) {
2166
+ return "Failure"
2167
+ }
2168
+ if (!Error.isHttpClientError(error)) {
2169
+ return "Ignored"
2170
+ }
2171
+ switch (error.reason._tag) {
2172
+ case "TransportError":
2173
+ return "Failure"
2174
+ case "StatusCodeError":
2175
+ return circuitBreakerStatusOutcome(error.reason.response.status)
2176
+ default:
2177
+ return "Ignored"
2178
+ }
2179
+ }
2180
+
2181
+ const circuitBreakerStatusOutcome = (status: number): CircuitBreaker.Outcome["_tag"] =>
2182
+ status === 429
2183
+ ? "Ignored"
2184
+ : status === 408 || status === 500 || status === 502 || status === 503 || status === 504
2185
+ ? "Failure"
2186
+ : "Success"
2187
+
1792
2188
  interface RateLimiterHeaderNames {
1793
2189
  readonly limit: ReadonlyArray<string>
1794
2190
  readonly remaining: ReadonlyArray<string>
@@ -1888,6 +2284,8 @@ const parseRateLimitWindow = (
1888
2284
  return parseResetHeader(clock, getHeader(headers, ...headerNames.reset))
1889
2285
  }
1890
2286
 
2287
+ // An invalid Retry-After is treated as absent (RFC 9110 §10.2.3); the
2288
+ // one millisecond floor keeps a past date or `0` from retrying immediately.
1891
2289
  const parseRetryAfter = (
1892
2290
  nowMillis: number,
1893
2291
  value: string | undefined
@@ -1895,22 +2293,10 @@ const parseRetryAfter = (
1895
2293
  if (value === undefined) {
1896
2294
  return undefined
1897
2295
  }
1898
- const trimmed = value.trim()
1899
- if (/^\d+(?:\.\d+)?$/.test(trimmed)) {
1900
- const numeric = Number(trimmed)
1901
- return Number.isFinite(numeric)
1902
- ? Duration.max(Duration.seconds(numeric), Duration.millis(1))
1903
- : undefined
1904
- }
1905
- const parsedDate = Date.parse(trimmed)
1906
- if (Number.isNaN(parsedDate)) {
1907
- return undefined
1908
- }
1909
- const millis = parsedDate - nowMillis
1910
- if (millis <= 0) {
1911
- return Duration.millis(1)
1912
- }
1913
- return Duration.millis(millis)
2296
+ const retryAfter = Headers.parseRetryAfter(value)
2297
+ return Result.isSuccess(retryAfter)
2298
+ ? Duration.max(Headers.retryAfterDelay(retryAfter.success, nowMillis), Duration.millis(1))
2299
+ : undefined
1914
2300
  }
1915
2301
 
1916
2302
  const parseResetAfter = (value: string | undefined): Duration.Duration | undefined => {
@@ -2157,6 +2543,37 @@ export const withScope = <E, R>(
2157
2543
  /**
2158
2544
  * Enables following HTTP redirects up to a specified number of times.
2159
2545
  *
2546
+ * **Details**
2547
+ *
2548
+ * Follows `3xx` responses that include a `Location` header, up to
2549
+ * `maxRedirects` (default `10`) times. When the limit is reached or the
2550
+ * `Location` header is not a valid URL, the last redirect response is returned.
2551
+ *
2552
+ * **Gotchas**
2553
+ *
2554
+ * This only sees redirects that the underlying client returns. `fetch`
2555
+ * follows redirects itself by default, so with `FetchHttpClient` provide
2556
+ * `FetchHttpClient.RequestInit` with `{ redirect: "manual" }`. Browsers return
2557
+ * an opaque response without a `Location` header for manual redirects, so
2558
+ * this cannot follow them there.
2559
+ *
2560
+ * **Example** (Following redirects with FetchHttpClient)
2561
+ *
2562
+ * ```ts
2563
+ * import { Effect } from "effect"
2564
+ * import { FetchHttpClient, HttpClient } from "effect/http"
2565
+ *
2566
+ * const program = Effect.gen(function*() {
2567
+ * const client = (yield* HttpClient.HttpClient).pipe(
2568
+ * HttpClient.followRedirects(5)
2569
+ * )
2570
+ * return yield* client.get("https://example.com/redirect")
2571
+ * }).pipe(
2572
+ * Effect.provide(FetchHttpClient.layer),
2573
+ * Effect.provideService(FetchHttpClient.RequestInit, { redirect: "manual" })
2574
+ * )
2575
+ * ```
2576
+ *
2160
2577
  * @stability unstable
2161
2578
  * @category redirects
2162
2579
  * @since 4.0.0
@@ -2165,6 +2582,37 @@ export const followRedirects: {
2165
2582
  /**
2166
2583
  * Enables following HTTP redirects up to a specified number of times.
2167
2584
  *
2585
+ * **Details**
2586
+ *
2587
+ * Follows `3xx` responses that include a `Location` header, up to
2588
+ * `maxRedirects` (default `10`) times. When the limit is reached or the
2589
+ * `Location` header is not a valid URL, the last redirect response is returned.
2590
+ *
2591
+ * **Gotchas**
2592
+ *
2593
+ * This only sees redirects that the underlying client returns. `fetch`
2594
+ * follows redirects itself by default, so with `FetchHttpClient` provide
2595
+ * `FetchHttpClient.RequestInit` with `{ redirect: "manual" }`. Browsers return
2596
+ * an opaque response without a `Location` header for manual redirects, so
2597
+ * this cannot follow them there.
2598
+ *
2599
+ * **Example** (Following redirects with FetchHttpClient)
2600
+ *
2601
+ * ```ts
2602
+ * import { Effect } from "effect"
2603
+ * import { FetchHttpClient, HttpClient } from "effect/http"
2604
+ *
2605
+ * const program = Effect.gen(function*() {
2606
+ * const client = (yield* HttpClient.HttpClient).pipe(
2607
+ * HttpClient.followRedirects(5)
2608
+ * )
2609
+ * return yield* client.get("https://example.com/redirect")
2610
+ * }).pipe(
2611
+ * Effect.provide(FetchHttpClient.layer),
2612
+ * Effect.provideService(FetchHttpClient.RequestInit, { redirect: "manual" })
2613
+ * )
2614
+ * ```
2615
+ *
2168
2616
  * @stability unstable
2169
2617
  * @category redirects
2170
2618
  * @since 4.0.0
@@ -2173,6 +2621,37 @@ export const followRedirects: {
2173
2621
  /**
2174
2622
  * Enables following HTTP redirects up to a specified number of times.
2175
2623
  *
2624
+ * **Details**
2625
+ *
2626
+ * Follows `3xx` responses that include a `Location` header, up to
2627
+ * `maxRedirects` (default `10`) times. When the limit is reached or the
2628
+ * `Location` header is not a valid URL, the last redirect response is returned.
2629
+ *
2630
+ * **Gotchas**
2631
+ *
2632
+ * This only sees redirects that the underlying client returns. `fetch`
2633
+ * follows redirects itself by default, so with `FetchHttpClient` provide
2634
+ * `FetchHttpClient.RequestInit` with `{ redirect: "manual" }`. Browsers return
2635
+ * an opaque response without a `Location` header for manual redirects, so
2636
+ * this cannot follow them there.
2637
+ *
2638
+ * **Example** (Following redirects with FetchHttpClient)
2639
+ *
2640
+ * ```ts
2641
+ * import { Effect } from "effect"
2642
+ * import { FetchHttpClient, HttpClient } from "effect/http"
2643
+ *
2644
+ * const program = Effect.gen(function*() {
2645
+ * const client = (yield* HttpClient.HttpClient).pipe(
2646
+ * HttpClient.followRedirects(5)
2647
+ * )
2648
+ * return yield* client.get("https://example.com/redirect")
2649
+ * }).pipe(
2650
+ * Effect.provide(FetchHttpClient.layer),
2651
+ * Effect.provideService(FetchHttpClient.RequestInit, { redirect: "manual" })
2652
+ * )
2653
+ * ```
2654
+ *
2176
2655
  * @stability unstable
2177
2656
  * @category redirects
2178
2657
  * @since 4.0.0
@@ -2202,7 +2681,11 @@ export const followRedirects: {
2202
2681
  ) {
2203
2682
  return Effect.succeed(response)
2204
2683
  }
2205
- const url = new URL(response.headers.location, response.request.url)
2684
+ const urlResult = Url.fromString(response.headers.location, response.request.url)
2685
+ if (Result.isFailure(urlResult)) {
2686
+ return Effect.succeed(response)
2687
+ }
2688
+ const url = urlResult.success
2206
2689
  const request = currentRequest ?? response.request
2207
2690
  let nextRequest = request
2208
2691
  if (
@@ -2211,13 +2694,31 @@ export const followRedirects: {
2211
2694
  ) {
2212
2695
  nextRequest = HttpClientRequest.setMethod(nextRequest, "GET")
2213
2696
  nextRequest = HttpClientRequest.setBody(nextRequest, HttpBody.empty)
2697
+ nextRequest = HttpClientRequest.removeHeader(nextRequest, "content-encoding")
2698
+ nextRequest = HttpClientRequest.removeHeader(nextRequest, "content-language")
2699
+ nextRequest = HttpClientRequest.removeHeader(nextRequest, "content-location")
2214
2700
  }
2215
2701
  if (url.origin !== new URL(response.request.url).origin) {
2216
2702
  nextRequest = HttpClientRequest.removeHeader(nextRequest, "authorization")
2217
2703
  nextRequest = HttpClientRequest.removeHeader(nextRequest, "proxy-authorization")
2218
2704
  nextRequest = HttpClientRequest.removeHeader(nextRequest, "cookie")
2219
2705
  }
2220
- return loop(Effect.succeed(HttpClientRequest.setUrl(nextRequest, url)), redirects + 1)
2706
+ // Request the Location as sent: setUrl with a URL object would re-encode its query
2707
+ const hash = url.hash === "" ? Option.none() : Option.some(url.hash.slice(1))
2708
+ url.hash = ""
2709
+ nextRequest = HttpClientRequest.makeWith(
2710
+ nextRequest.method,
2711
+ url.href,
2712
+ UrlParams.empty,
2713
+ hash,
2714
+ nextRequest.headers,
2715
+ nextRequest.body
2716
+ )
2717
+ // Abort the discarded response to release its connection without reading the body
2718
+ return Effect.andThen(
2719
+ Effect.sync(() => responseControllers.get(response)?.abort()),
2720
+ loop(Effect.succeed(nextRequest), redirects + 1)
2721
+ )
2221
2722
  }
2222
2723
  )
2223
2724
  })
@@ -2324,7 +2825,11 @@ export const layerMergedContext = <E, R>(
2324
2825
  const responseRegistry = (() => {
2325
2826
  if ("FinalizationRegistry" in globalThis && globalThis.FinalizationRegistry) {
2326
2827
  const registry = new FinalizationRegistry((controller: AbortController) => {
2327
- controller.abort()
2828
+ try {
2829
+ controller.abort()
2830
+ } catch {
2831
+ // Runtimes such as workerd disallow aborting I/O outside its request context.
2832
+ }
2328
2833
  })
2329
2834
  return {
2330
2835
  register(response: HttpClientResponse.HttpClientResponse, controller: AbortController) {
@@ -2352,6 +2857,21 @@ const responseRegistry = (() => {
2352
2857
 
2353
2858
  const scopedRequests = new WeakMap<HttpClientRequest.HttpClientRequest, AbortController>()
2354
2859
 
2860
+ const responseControllers = new WeakMap<HttpClientResponse.HttpClientResponse, AbortController>()
2861
+
2862
+ const trackResponse = (
2863
+ response: HttpClientResponse.HttpClientResponse,
2864
+ controller: AbortController,
2865
+ scoped: boolean
2866
+ ): HttpClientResponse.HttpClientResponse => {
2867
+ if (!scoped) {
2868
+ responseRegistry.register(response, controller)
2869
+ response = new InterruptibleResponse(response, controller)
2870
+ }
2871
+ responseControllers.set(response, controller)
2872
+ return response
2873
+ }
2874
+
2355
2875
  class InterruptibleResponse implements HttpClientResponse.HttpClientResponse, Pipeable {
2356
2876
  readonly original: HttpClientResponse.HttpClientResponse
2357
2877
  readonly controller: AbortController
@@ -2424,6 +2944,17 @@ class InterruptibleResponse implements HttpClientResponse.HttpClientResponse, Pi
2424
2944
  return this.applyInterrupt(this.original.arrayBuffer)
2425
2945
  }
2426
2946
 
2947
+ get upgrade() {
2948
+ return this.applyInterrupt(this.original.upgrade)
2949
+ }
2950
+
2951
+ [WebSourceSymbol]() {
2952
+ const source = getWebSource(this.original)
2953
+ // A handed-over Web body outlives this wrapper, so collecting it must not abort the request.
2954
+ if (source !== undefined) responseRegistry.unregister(this.original)
2955
+ return source
2956
+ }
2957
+
2427
2958
  get stream() {
2428
2959
  return Stream.suspend(() => {
2429
2960
  responseRegistry.unregister(this.original)