effect 4.0.4 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1079) hide show
  1. package/ai-docs/package.json +1 -1
  2. package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
  3. package/ai-docs/src/52_graphql/10_basics.ts +19 -13
  4. package/ai-docs/src/52_graphql/30_batching.ts +6 -4
  5. package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
  6. package/ai-docs/tsconfig.json +3 -1
  7. package/dist/Array.d.ts +207 -58
  8. package/dist/Array.d.ts.map +1 -1
  9. package/dist/Array.js +45 -22
  10. package/dist/Array.js.map +1 -1
  11. package/dist/Bytes.d.ts +79 -0
  12. package/dist/Bytes.d.ts.map +1 -0
  13. package/dist/Bytes.js +109 -0
  14. package/dist/Bytes.js.map +1 -0
  15. package/dist/Channel.d.ts +187 -14
  16. package/dist/Channel.d.ts.map +1 -1
  17. package/dist/Channel.js +142 -33
  18. package/dist/Channel.js.map +1 -1
  19. package/dist/ChannelSchema.d.ts.map +1 -1
  20. package/dist/ChannelSchema.js.map +1 -1
  21. package/dist/Chunk.d.ts +39 -21
  22. package/dist/Chunk.d.ts.map +1 -1
  23. package/dist/Chunk.js +26 -17
  24. package/dist/Chunk.js.map +1 -1
  25. package/dist/Config.d.ts.map +1 -1
  26. package/dist/Config.js +8 -3
  27. package/dist/Config.js.map +1 -1
  28. package/dist/ConfigProvider.d.ts.map +1 -1
  29. package/dist/ConfigProvider.js +34 -32
  30. package/dist/ConfigProvider.js.map +1 -1
  31. package/dist/Cron.d.ts +2 -2
  32. package/dist/Cron.d.ts.map +1 -1
  33. package/dist/Cron.js +6 -3
  34. package/dist/Cron.js.map +1 -1
  35. package/dist/Duration.d.ts.map +1 -1
  36. package/dist/Duration.js +58 -21
  37. package/dist/Duration.js.map +1 -1
  38. package/dist/Effect.d.ts +548 -182
  39. package/dist/Effect.d.ts.map +1 -1
  40. package/dist/Effect.js +261 -76
  41. package/dist/Effect.js.map +1 -1
  42. package/dist/Equivalence.d.ts +2 -1
  43. package/dist/Equivalence.d.ts.map +1 -1
  44. package/dist/Equivalence.js +12 -8
  45. package/dist/Equivalence.js.map +1 -1
  46. package/dist/Exit.d.ts +24 -9
  47. package/dist/Exit.d.ts.map +1 -1
  48. package/dist/Exit.js +8 -3
  49. package/dist/Exit.js.map +1 -1
  50. package/dist/FiberHandle.d.ts +2 -0
  51. package/dist/FiberHandle.d.ts.map +1 -1
  52. package/dist/FiberHandle.js +9 -4
  53. package/dist/FiberHandle.js.map +1 -1
  54. package/dist/FiberMap.d.ts +2 -0
  55. package/dist/FiberMap.d.ts.map +1 -1
  56. package/dist/FiberMap.js +5 -2
  57. package/dist/FiberMap.js.map +1 -1
  58. package/dist/FileSystem.d.ts +28 -9
  59. package/dist/FileSystem.d.ts.map +1 -1
  60. package/dist/FileSystem.js +3 -0
  61. package/dist/FileSystem.js.map +1 -1
  62. package/dist/Graph.d.ts.map +1 -1
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/HashSet.d.ts.map +1 -1
  65. package/dist/HashSet.js.map +1 -1
  66. package/dist/Iterable.d.ts.map +1 -1
  67. package/dist/Iterable.js +18 -17
  68. package/dist/Iterable.js.map +1 -1
  69. package/dist/JsonSchema.d.ts +9 -3
  70. package/dist/JsonSchema.d.ts.map +1 -1
  71. package/dist/JsonSchema.js +19 -3
  72. package/dist/JsonSchema.js.map +1 -1
  73. package/dist/Layer.d.ts.map +1 -1
  74. package/dist/Layer.js +2 -2
  75. package/dist/Layer.js.map +1 -1
  76. package/dist/ManagedRuntime.d.ts +19 -1
  77. package/dist/ManagedRuntime.d.ts.map +1 -1
  78. package/dist/ManagedRuntime.js +62 -6
  79. package/dist/ManagedRuntime.js.map +1 -1
  80. package/dist/Match.d.ts +20 -6
  81. package/dist/Match.d.ts.map +1 -1
  82. package/dist/Match.js +2 -2
  83. package/dist/Match.js.map +1 -1
  84. package/dist/Metric.d.ts +132 -0
  85. package/dist/Metric.d.ts.map +1 -1
  86. package/dist/Metric.js +197 -25
  87. package/dist/Metric.js.map +1 -1
  88. package/dist/MutableHashMap.d.ts.map +1 -1
  89. package/dist/MutableHashMap.js.map +1 -1
  90. package/dist/Number.js +2 -2
  91. package/dist/Number.js.map +1 -1
  92. package/dist/Optic.d.ts.map +1 -1
  93. package/dist/Optic.js.map +1 -1
  94. package/dist/Path.d.ts +37 -5
  95. package/dist/Path.d.ts.map +1 -1
  96. package/dist/Path.js +44 -6
  97. package/dist/Path.js.map +1 -1
  98. package/dist/PubSub.d.ts.map +1 -1
  99. package/dist/PubSub.js +12 -7
  100. package/dist/PubSub.js.map +1 -1
  101. package/dist/Queue.d.ts +4 -1
  102. package/dist/Queue.d.ts.map +1 -1
  103. package/dist/Queue.js +4 -1
  104. package/dist/Queue.js.map +1 -1
  105. package/dist/Random.d.ts.map +1 -1
  106. package/dist/Random.js +1 -1
  107. package/dist/Random.js.map +1 -1
  108. package/dist/RcMap.d.ts +12 -7
  109. package/dist/RcMap.d.ts.map +1 -1
  110. package/dist/RcMap.js +9 -6
  111. package/dist/RcMap.js.map +1 -1
  112. package/dist/Record.d.ts +51 -0
  113. package/dist/Record.d.ts.map +1 -1
  114. package/dist/Record.js +17 -0
  115. package/dist/Record.js.map +1 -1
  116. package/dist/Ref.d.ts.map +1 -1
  117. package/dist/Ref.js.map +1 -1
  118. package/dist/References.d.ts +5 -4
  119. package/dist/References.d.ts.map +1 -1
  120. package/dist/References.js +5 -4
  121. package/dist/References.js.map +1 -1
  122. package/dist/RequestResolver.d.ts +31 -1
  123. package/dist/RequestResolver.d.ts.map +1 -1
  124. package/dist/RequestResolver.js +39 -4
  125. package/dist/RequestResolver.js.map +1 -1
  126. package/dist/Resource.js +1 -1
  127. package/dist/Resource.js.map +1 -1
  128. package/dist/Runtime.d.ts +3 -3
  129. package/dist/Runtime.d.ts.map +1 -1
  130. package/dist/Runtime.js +18 -15
  131. package/dist/Runtime.js.map +1 -1
  132. package/dist/Schedule.d.ts.map +1 -1
  133. package/dist/Schedule.js.map +1 -1
  134. package/dist/Schema.d.ts +383 -326
  135. package/dist/Schema.d.ts.map +1 -1
  136. package/dist/Schema.js +338 -17
  137. package/dist/Schema.js.map +1 -1
  138. package/dist/SchemaAST.d.ts +5 -5
  139. package/dist/SchemaAST.d.ts.map +1 -1
  140. package/dist/SchemaAST.js +24 -8
  141. package/dist/SchemaAST.js.map +1 -1
  142. package/dist/SchemaGetter.d.ts +8 -3
  143. package/dist/SchemaGetter.d.ts.map +1 -1
  144. package/dist/SchemaGetter.js +15 -5
  145. package/dist/SchemaGetter.js.map +1 -1
  146. package/dist/SchemaIssue.d.ts +4 -4
  147. package/dist/SchemaIssue.d.ts.map +1 -1
  148. package/dist/SchemaIssue.js +29 -51
  149. package/dist/SchemaIssue.js.map +1 -1
  150. package/dist/SchemaRepresentation.d.ts +56 -1
  151. package/dist/SchemaRepresentation.d.ts.map +1 -1
  152. package/dist/SchemaRepresentation.js +18 -0
  153. package/dist/SchemaRepresentation.js.map +1 -1
  154. package/dist/SchemaTransformation.d.ts +1 -1
  155. package/dist/SchemaTransformation.js +1 -1
  156. package/dist/Scope.d.ts +12 -2
  157. package/dist/Scope.d.ts.map +1 -1
  158. package/dist/Scope.js +5 -0
  159. package/dist/Scope.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +10 -7
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +9 -5
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/SemVer.d.ts +1196 -0
  165. package/dist/SemVer.d.ts.map +1 -0
  166. package/dist/SemVer.js +756 -0
  167. package/dist/SemVer.js.map +1 -0
  168. package/dist/SemVerRange.d.ts +559 -0
  169. package/dist/SemVerRange.d.ts.map +1 -0
  170. package/dist/SemVerRange.js +551 -0
  171. package/dist/SemVerRange.js.map +1 -0
  172. package/dist/Sink.d.ts.map +1 -1
  173. package/dist/Sink.js +6 -2
  174. package/dist/Sink.js.map +1 -1
  175. package/dist/Stream.d.ts +235 -8
  176. package/dist/Stream.d.ts.map +1 -1
  177. package/dist/Stream.js +145 -60
  178. package/dist/Stream.js.map +1 -1
  179. package/dist/String.d.ts +16 -2
  180. package/dist/String.d.ts.map +1 -1
  181. package/dist/String.js +25 -10
  182. package/dist/String.js.map +1 -1
  183. package/dist/TextDiff.d.ts +399 -0
  184. package/dist/TextDiff.d.ts.map +1 -0
  185. package/dist/TextDiff.js +634 -0
  186. package/dist/TextDiff.js.map +1 -0
  187. package/dist/TxHashMap.d.ts.map +1 -1
  188. package/dist/TxHashMap.js.map +1 -1
  189. package/dist/TxHashSet.d.ts.map +1 -1
  190. package/dist/TxHashSet.js.map +1 -1
  191. package/dist/TxRef.d.ts.map +1 -1
  192. package/dist/TxRef.js +3 -2
  193. package/dist/TxRef.js.map +1 -1
  194. package/dist/ai/AiError.d.ts +78 -14
  195. package/dist/ai/AiError.d.ts.map +1 -1
  196. package/dist/ai/AiError.js +51 -3
  197. package/dist/ai/AiError.js.map +1 -1
  198. package/dist/ai/Chat.d.ts +1 -2
  199. package/dist/ai/Chat.d.ts.map +1 -1
  200. package/dist/ai/Chat.js +6 -3
  201. package/dist/ai/Chat.js.map +1 -1
  202. package/dist/ai/Decision.d.ts +116 -20
  203. package/dist/ai/Decision.d.ts.map +1 -1
  204. package/dist/ai/Decision.js +37 -3
  205. package/dist/ai/Decision.js.map +1 -1
  206. package/dist/ai/DecisionModel.d.ts +129 -11
  207. package/dist/ai/DecisionModel.d.ts.map +1 -1
  208. package/dist/ai/DecisionModel.js +183 -95
  209. package/dist/ai/DecisionModel.js.map +1 -1
  210. package/dist/ai/EmbeddingModel.d.ts +10 -0
  211. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  212. package/dist/ai/EmbeddingModel.js +21 -7
  213. package/dist/ai/EmbeddingModel.js.map +1 -1
  214. package/dist/ai/LanguageModel.d.ts.map +1 -1
  215. package/dist/ai/LanguageModel.js +47 -35
  216. package/dist/ai/LanguageModel.js.map +1 -1
  217. package/dist/ai/McpClient.d.ts +289 -0
  218. package/dist/ai/McpClient.d.ts.map +1 -0
  219. package/dist/ai/McpClient.js +819 -0
  220. package/dist/ai/McpClient.js.map +1 -0
  221. package/dist/ai/McpClientError.d.ts +254 -0
  222. package/dist/ai/McpClientError.d.ts.map +1 -0
  223. package/dist/ai/McpClientError.js +260 -0
  224. package/dist/ai/McpClientError.js.map +1 -0
  225. package/dist/ai/McpProtocol.d.ts +2 -2
  226. package/dist/ai/McpProtocol.d.ts.map +1 -1
  227. package/dist/ai/McpSchema.d.ts +368 -235
  228. package/dist/ai/McpSchema.d.ts.map +1 -1
  229. package/dist/ai/McpSchema.js +94 -24
  230. package/dist/ai/McpSchema.js.map +1 -1
  231. package/dist/ai/McpServer.d.ts +6 -52
  232. package/dist/ai/McpServer.d.ts.map +1 -1
  233. package/dist/ai/McpServer.js +27 -50
  234. package/dist/ai/McpServer.js.map +1 -1
  235. package/dist/ai/Prompt.d.ts +22 -20
  236. package/dist/ai/Prompt.d.ts.map +1 -1
  237. package/dist/ai/Prompt.js +23 -1
  238. package/dist/ai/Prompt.js.map +1 -1
  239. package/dist/ai/Response.d.ts +148 -4
  240. package/dist/ai/Response.d.ts.map +1 -1
  241. package/dist/ai/Response.js +35 -37
  242. package/dist/ai/Response.js.map +1 -1
  243. package/dist/ai/Tool.d.ts +12 -4
  244. package/dist/ai/Tool.d.ts.map +1 -1
  245. package/dist/ai/Tool.js.map +1 -1
  246. package/dist/ai/Toolkit.d.ts +48 -1
  247. package/dist/ai/Toolkit.d.ts.map +1 -1
  248. package/dist/ai/Toolkit.js +65 -12
  249. package/dist/ai/Toolkit.js.map +1 -1
  250. package/dist/ai/index.d.ts +10 -0
  251. package/dist/ai/index.d.ts.map +1 -1
  252. package/dist/ai/index.js +10 -0
  253. package/dist/ai/index.js.map +1 -1
  254. package/dist/ai/internal/mcpCore.js.map +1 -1
  255. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  256. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  257. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  258. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  259. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  260. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  261. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  262. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  263. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  264. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  265. package/dist/ai/internal/mcpProtocol.js +16 -2
  266. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  267. package/dist/ai/internal/mcpRuntime.js +3 -4
  268. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  269. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  270. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  271. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  272. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  273. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  274. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  275. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  276. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  277. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  278. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  279. package/dist/cli/CliError.d.ts +42 -2
  280. package/dist/cli/CliError.d.ts.map +1 -1
  281. package/dist/cli/CliError.js +44 -5
  282. package/dist/cli/CliError.js.map +1 -1
  283. package/dist/cli/Command.d.ts +286 -2
  284. package/dist/cli/Command.d.ts.map +1 -1
  285. package/dist/cli/Command.js +107 -6
  286. package/dist/cli/Command.js.map +1 -1
  287. package/dist/cli/Completions.d.ts +10 -0
  288. package/dist/cli/Completions.d.ts.map +1 -1
  289. package/dist/cli/Completions.js.map +1 -1
  290. package/dist/cli/Flag.d.ts +215 -0
  291. package/dist/cli/Flag.d.ts.map +1 -1
  292. package/dist/cli/Flag.js +89 -0
  293. package/dist/cli/Flag.js.map +1 -1
  294. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  295. package/dist/cli/GlobalFlag.js +3 -3
  296. package/dist/cli/GlobalFlag.js.map +1 -1
  297. package/dist/cli/Param.d.ts +194 -0
  298. package/dist/cli/Param.d.ts.map +1 -1
  299. package/dist/cli/Param.js +86 -0
  300. package/dist/cli/Param.js.map +1 -1
  301. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  302. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  303. package/dist/cli/TerminalCapabilities.js +122 -0
  304. package/dist/cli/TerminalCapabilities.js.map +1 -0
  305. package/dist/cli/index.d.ts +5 -0
  306. package/dist/cli/index.d.ts.map +1 -1
  307. package/dist/cli/index.js +5 -0
  308. package/dist/cli/index.js.map +1 -1
  309. package/dist/cli/internal/command.d.ts +2 -1
  310. package/dist/cli/internal/command.d.ts.map +1 -1
  311. package/dist/cli/internal/command.js +7 -3
  312. package/dist/cli/internal/command.js.map +1 -1
  313. package/dist/cli/internal/completions/bash.js +7 -5
  314. package/dist/cli/internal/completions/bash.js.map +1 -1
  315. package/dist/cli/internal/completions/descriptor.js +16 -1
  316. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  317. package/dist/cli/internal/completions/fish.js +12 -10
  318. package/dist/cli/internal/completions/fish.js.map +1 -1
  319. package/dist/cli/internal/completions/powershell.js +20 -10
  320. package/dist/cli/internal/completions/powershell.js.map +1 -1
  321. package/dist/cli/internal/completions/zsh.js +15 -8
  322. package/dist/cli/internal/completions/zsh.js.map +1 -1
  323. package/dist/cli/internal/formatter.d.ts +2 -0
  324. package/dist/cli/internal/formatter.d.ts.map +1 -0
  325. package/dist/cli/internal/formatter.js +15 -0
  326. package/dist/cli/internal/formatter.js.map +1 -0
  327. package/dist/cli/internal/lexer.js +24 -10
  328. package/dist/cli/internal/lexer.js.map +1 -1
  329. package/dist/cli/internal/parser.js +35 -15
  330. package/dist/cli/internal/parser.js.map +1 -1
  331. package/dist/cli/internal/wizard.d.ts.map +1 -1
  332. package/dist/cli/internal/wizard.js +2 -1
  333. package/dist/cli/internal/wizard.js.map +1 -1
  334. package/dist/cluster/ClusterCron.d.ts +29 -1
  335. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  336. package/dist/cluster/ClusterCron.js +64 -32
  337. package/dist/cluster/ClusterCron.js.map +1 -1
  338. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  339. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  340. package/dist/cluster/ClusterMetrics.js +151 -7
  341. package/dist/cluster/ClusterMetrics.js.map +1 -1
  342. package/dist/cluster/ClusterWorkflowEngine.d.ts +2 -1
  343. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  344. package/dist/cluster/ClusterWorkflowEngine.js +98 -18
  345. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  346. package/dist/cluster/Entity.d.ts +2 -0
  347. package/dist/cluster/Entity.d.ts.map +1 -1
  348. package/dist/cluster/Entity.js.map +1 -1
  349. package/dist/cluster/MessageStorage.d.ts +21 -0
  350. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  351. package/dist/cluster/MessageStorage.js +20 -12
  352. package/dist/cluster/MessageStorage.js.map +1 -1
  353. package/dist/cluster/Runners.d.ts.map +1 -1
  354. package/dist/cluster/Runners.js +96 -37
  355. package/dist/cluster/Runners.js.map +1 -1
  356. package/dist/cluster/Sharding.d.ts +1 -0
  357. package/dist/cluster/Sharding.d.ts.map +1 -1
  358. package/dist/cluster/Sharding.js +95 -32
  359. package/dist/cluster/Sharding.js.map +1 -1
  360. package/dist/cluster/ShardingConfig.d.ts +20 -0
  361. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  362. package/dist/cluster/ShardingConfig.js +4 -0
  363. package/dist/cluster/ShardingConfig.js.map +1 -1
  364. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  365. package/dist/cluster/SqlMessageStorage.js +40 -50
  366. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  367. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  368. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  369. package/dist/cluster/SqlRunnerStorage.js +10 -4
  370. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  371. package/dist/cluster/internal/entityManager.js +66 -9
  372. package/dist/cluster/internal/entityManager.js.map +1 -1
  373. package/dist/devtools/DevTools.d.ts +3 -2
  374. package/dist/devtools/DevTools.d.ts.map +1 -1
  375. package/dist/devtools/DevTools.js +3 -2
  376. package/dist/devtools/DevTools.js.map +1 -1
  377. package/dist/devtools/DevToolsClient.d.ts +11 -0
  378. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  379. package/dist/devtools/DevToolsClient.js +31 -4
  380. package/dist/devtools/DevToolsClient.js.map +1 -1
  381. package/dist/encoding/Base64Url.d.ts +29 -0
  382. package/dist/encoding/Base64Url.d.ts.map +1 -1
  383. package/dist/encoding/Base64Url.js +29 -0
  384. package/dist/encoding/Base64Url.js.map +1 -1
  385. package/dist/encoding/Ini.d.ts.map +1 -1
  386. package/dist/encoding/Ini.js +3 -0
  387. package/dist/encoding/Ini.js.map +1 -1
  388. package/dist/encoding/JsonArray.d.ts +270 -0
  389. package/dist/encoding/JsonArray.d.ts.map +1 -0
  390. package/dist/encoding/JsonArray.js +691 -0
  391. package/dist/encoding/JsonArray.js.map +1 -0
  392. package/dist/encoding/Ndjson.d.ts +43 -4
  393. package/dist/encoding/Ndjson.d.ts.map +1 -1
  394. package/dist/encoding/Ndjson.js +169 -18
  395. package/dist/encoding/Ndjson.js.map +1 -1
  396. package/dist/encoding/SchemaBinary.d.ts +9 -1
  397. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  398. package/dist/encoding/SchemaBinary.js +12 -19
  399. package/dist/encoding/SchemaBinary.js.map +1 -1
  400. package/dist/encoding/Sse.js +1 -1
  401. package/dist/encoding/Sse.js.map +1 -1
  402. package/dist/encoding/Tar.d.ts +309 -0
  403. package/dist/encoding/Tar.d.ts.map +1 -0
  404. package/dist/encoding/Tar.js +1182 -0
  405. package/dist/encoding/Tar.js.map +1 -0
  406. package/dist/encoding/Toml.js +3 -3
  407. package/dist/encoding/Toml.js.map +1 -1
  408. package/dist/encoding/Xml.d.ts +464 -0
  409. package/dist/encoding/Xml.d.ts.map +1 -0
  410. package/dist/encoding/Xml.js +1619 -0
  411. package/dist/encoding/Xml.js.map +1 -0
  412. package/dist/encoding/Yaml.d.ts +6 -2
  413. package/dist/encoding/Yaml.d.ts.map +1 -1
  414. package/dist/encoding/Yaml.js +97 -34
  415. package/dist/encoding/Yaml.js.map +1 -1
  416. package/dist/encoding/Zip.d.ts +413 -0
  417. package/dist/encoding/Zip.d.ts.map +1 -0
  418. package/dist/encoding/Zip.js +1255 -0
  419. package/dist/encoding/Zip.js.map +1 -0
  420. package/dist/encoding/index.d.ts +20 -0
  421. package/dist/encoding/index.d.ts.map +1 -1
  422. package/dist/encoding/index.js +20 -0
  423. package/dist/encoding/index.js.map +1 -1
  424. package/dist/eventlog/EventJournal.d.ts +90 -5
  425. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  426. package/dist/eventlog/EventJournal.js +488 -228
  427. package/dist/eventlog/EventJournal.js.map +1 -1
  428. package/dist/eventlog/EventLog.d.ts +180 -12
  429. package/dist/eventlog/EventLog.d.ts.map +1 -1
  430. package/dist/eventlog/EventLog.js +394 -146
  431. package/dist/eventlog/EventLog.js.map +1 -1
  432. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  433. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  434. package/dist/eventlog/EventLogEncryption.js +97 -38
  435. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  436. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  437. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  438. package/dist/eventlog/EventLogMessage.js +45 -11
  439. package/dist/eventlog/EventLogMessage.js.map +1 -1
  440. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  441. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  442. package/dist/eventlog/EventLogRemote.js +51 -14
  443. package/dist/eventlog/EventLogRemote.js.map +1 -1
  444. package/dist/eventlog/EventLogServer.d.ts +46 -3
  445. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  446. package/dist/eventlog/EventLogServer.js +119 -19
  447. package/dist/eventlog/EventLogServer.js.map +1 -1
  448. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  449. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  450. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  451. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  452. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  453. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  454. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  455. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  456. package/dist/eventlog/EventRow.d.ts +288 -0
  457. package/dist/eventlog/EventRow.d.ts.map +1 -0
  458. package/dist/eventlog/EventRow.js +435 -0
  459. package/dist/eventlog/EventRow.js.map +1 -0
  460. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  461. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  462. package/dist/eventlog/SqlEventJournal.js +387 -159
  463. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  464. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  465. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  466. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  467. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  468. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  469. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  470. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  471. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  472. package/dist/eventlog/index.d.ts +5 -0
  473. package/dist/eventlog/index.d.ts.map +1 -1
  474. package/dist/eventlog/index.js +5 -0
  475. package/dist/eventlog/index.js.map +1 -1
  476. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  477. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  478. package/dist/eventlog/internal/conflicts.js +92 -0
  479. package/dist/eventlog/internal/conflicts.js.map +1 -0
  480. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  481. package/dist/graphql/GraphQLClient.js +12 -5
  482. package/dist/graphql/GraphQLClient.js.map +1 -1
  483. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  484. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  485. package/dist/graphql/GraphQLClientError.js +4 -18
  486. package/dist/graphql/GraphQLClientError.js.map +1 -1
  487. package/dist/graphql/GraphQLProtocol.d.ts +252 -11
  488. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  489. package/dist/graphql/GraphQLProtocol.js +99 -8
  490. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  491. package/dist/graphql/GraphQLResolver.d.ts +3 -1
  492. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  493. package/dist/graphql/GraphQLResolver.js +91 -19
  494. package/dist/graphql/GraphQLResolver.js.map +1 -1
  495. package/dist/http/FetchHttpClient.d.ts +13 -3
  496. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  497. package/dist/http/FetchHttpClient.js +56 -6
  498. package/dist/http/FetchHttpClient.js.map +1 -1
  499. package/dist/http/FindMyWay/internal/router.js +12 -1
  500. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  501. package/dist/http/Headers.d.ts +230 -3
  502. package/dist/http/Headers.d.ts.map +1 -1
  503. package/dist/http/Headers.js +267 -5
  504. package/dist/http/Headers.js.map +1 -1
  505. package/dist/http/HttpClient.d.ts +105 -0
  506. package/dist/http/HttpClient.d.ts.map +1 -1
  507. package/dist/http/HttpClient.js +69 -17
  508. package/dist/http/HttpClient.js.map +1 -1
  509. package/dist/http/HttpClientError.d.ts.map +1 -1
  510. package/dist/http/HttpClientError.js +8 -6
  511. package/dist/http/HttpClientError.js.map +1 -1
  512. package/dist/http/HttpClientRequest.d.ts +274 -7
  513. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  514. package/dist/http/HttpClientRequest.js +91 -3
  515. package/dist/http/HttpClientRequest.js.map +1 -1
  516. package/dist/http/HttpClientResponse.d.ts +53 -0
  517. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  518. package/dist/http/HttpClientResponse.js +47 -0
  519. package/dist/http/HttpClientResponse.js.map +1 -1
  520. package/dist/http/HttpEffect.d.ts +6 -2
  521. package/dist/http/HttpEffect.d.ts.map +1 -1
  522. package/dist/http/HttpEffect.js +21 -17
  523. package/dist/http/HttpEffect.js.map +1 -1
  524. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  525. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  526. package/dist/http/HttpIncomingMessage.js +3 -23
  527. package/dist/http/HttpIncomingMessage.js.map +1 -1
  528. package/dist/http/HttpMiddleware.d.ts +179 -2
  529. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  530. package/dist/http/HttpMiddleware.js +226 -18
  531. package/dist/http/HttpMiddleware.js.map +1 -1
  532. package/dist/http/HttpRouter.d.ts.map +1 -1
  533. package/dist/http/HttpRouter.js +58 -14
  534. package/dist/http/HttpRouter.js.map +1 -1
  535. package/dist/http/HttpServerError.d.ts +5 -2
  536. package/dist/http/HttpServerError.d.ts.map +1 -1
  537. package/dist/http/HttpServerError.js +11 -7
  538. package/dist/http/HttpServerError.js.map +1 -1
  539. package/dist/http/HttpServerRequest.d.ts +25 -5
  540. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  541. package/dist/http/HttpServerRequest.js +38 -12
  542. package/dist/http/HttpServerRequest.js.map +1 -1
  543. package/dist/http/HttpServerResponse.d.ts +17 -8
  544. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  545. package/dist/http/HttpServerResponse.js +37 -21
  546. package/dist/http/HttpServerResponse.js.map +1 -1
  547. package/dist/http/HttpStaticServer.d.ts +0 -12
  548. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  549. package/dist/http/HttpStaticServer.js +25 -17
  550. package/dist/http/HttpStaticServer.js.map +1 -1
  551. package/dist/http/HttpTraceContext.js +1 -1
  552. package/dist/http/HttpTraceContext.js.map +1 -1
  553. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  554. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  555. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  556. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  557. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  558. package/dist/http/MultipartParser/internal/headers.js +4 -12
  559. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  560. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  561. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  562. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  563. package/dist/http/Url.d.ts.map +1 -1
  564. package/dist/http/Url.js +8 -2
  565. package/dist/http/Url.js.map +1 -1
  566. package/dist/http/UrlParams.d.ts +112 -8
  567. package/dist/http/UrlParams.d.ts.map +1 -1
  568. package/dist/http/UrlParams.js +141 -14
  569. package/dist/http/UrlParams.js.map +1 -1
  570. package/dist/http/internal/compression.d.ts +1 -1
  571. package/dist/http/internal/compression.d.ts.map +1 -1
  572. package/dist/http/internal/compression.js +2 -10
  573. package/dist/http/internal/compression.js.map +1 -1
  574. package/dist/http/internal/compressionBody.d.ts +2 -0
  575. package/dist/http/internal/compressionBody.d.ts.map +1 -0
  576. package/dist/http/internal/compressionBody.js +36 -0
  577. package/dist/http/internal/compressionBody.js.map +1 -0
  578. package/dist/http/internal/decompression.d.ts +2 -0
  579. package/dist/http/internal/decompression.d.ts.map +1 -0
  580. package/dist/http/internal/decompression.js +168 -0
  581. package/dist/http/internal/decompression.js.map +1 -0
  582. package/dist/http/internal/lazyStream.d.ts +2 -0
  583. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  584. package/dist/http/internal/lazyStream.js +18 -0
  585. package/dist/http/internal/lazyStream.js.map +1 -0
  586. package/dist/http/internal/requestState.d.ts +2 -0
  587. package/dist/http/internal/requestState.d.ts.map +1 -0
  588. package/dist/http/internal/requestState.js +28 -0
  589. package/dist/http/internal/requestState.js.map +1 -0
  590. package/dist/http/internal/tracing.js +14 -4
  591. package/dist/http/internal/tracing.js.map +1 -1
  592. package/dist/http/internal/urlParams.d.ts +2 -0
  593. package/dist/http/internal/urlParams.d.ts.map +1 -0
  594. package/dist/http/internal/urlParams.js +4 -0
  595. package/dist/http/internal/urlParams.js.map +1 -0
  596. package/dist/http/internal/webResponse.d.ts +2 -0
  597. package/dist/http/internal/webResponse.d.ts.map +1 -0
  598. package/dist/http/internal/webResponse.js +12 -0
  599. package/dist/http/internal/webResponse.js.map +1 -0
  600. package/dist/http-api/HttpApi.js +1 -1
  601. package/dist/http-api/HttpApi.js.map +1 -1
  602. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  603. package/dist/http-api/HttpApiBuilder.js +121 -18
  604. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  605. package/dist/http-api/HttpApiClient.d.ts +29 -4
  606. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  607. package/dist/http-api/HttpApiClient.js +85 -24
  608. package/dist/http-api/HttpApiClient.js.map +1 -1
  609. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  610. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  611. package/dist/http-api/HttpApiEndpoint.js +49 -5
  612. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  613. package/dist/http-api/HttpApiError.d.ts +58 -0
  614. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  615. package/dist/http-api/HttpApiError.js +38 -12
  616. package/dist/http-api/HttpApiError.js.map +1 -1
  617. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  618. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  619. package/dist/http-api/HttpApiScalar.js +6 -3
  620. package/dist/http-api/HttpApiScalar.js.map +1 -1
  621. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  622. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  623. package/dist/http-api/HttpApiSchema.js +137 -4
  624. package/dist/http-api/HttpApiSchema.js.map +1 -1
  625. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  626. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  627. package/dist/http-api/HttpApiSwagger.js +14 -4
  628. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  629. package/dist/http-api/HttpApiTest.d.ts +13 -2
  630. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  631. package/dist/http-api/HttpApiTest.js +30 -9
  632. package/dist/http-api/HttpApiTest.js.map +1 -1
  633. package/dist/http-api/OpenApi.d.ts +17 -3
  634. package/dist/http-api/OpenApi.d.ts.map +1 -1
  635. package/dist/http-api/OpenApi.js +57 -32
  636. package/dist/http-api/OpenApi.js.map +1 -1
  637. package/dist/http-api/internal/path.js +35 -10
  638. package/dist/http-api/internal/path.js.map +1 -1
  639. package/dist/index.d.ts +20 -0
  640. package/dist/index.d.ts.map +1 -1
  641. package/dist/index.js +20 -0
  642. package/dist/index.js.map +1 -1
  643. package/dist/internal/core.js +18 -2
  644. package/dist/internal/core.js.map +1 -1
  645. package/dist/internal/dateTime.js +19 -7
  646. package/dist/internal/dateTime.js.map +1 -1
  647. package/dist/internal/effect.js +89 -76
  648. package/dist/internal/effect.js.map +1 -1
  649. package/dist/internal/graphql.js +12 -2
  650. package/dist/internal/graphql.js.map +1 -1
  651. package/dist/internal/hashMap.js +2 -2
  652. package/dist/internal/hashMap.js.map +1 -1
  653. package/dist/internal/hydration.d.ts +2 -0
  654. package/dist/internal/hydration.d.ts.map +1 -0
  655. package/dist/internal/hydration.js +15 -0
  656. package/dist/internal/hydration.js.map +1 -0
  657. package/dist/internal/inflate.d.ts +2 -0
  658. package/dist/internal/inflate.d.ts.map +1 -0
  659. package/dist/internal/inflate.js +680 -0
  660. package/dist/internal/inflate.js.map +1 -0
  661. package/dist/internal/record.js +6 -0
  662. package/dist/internal/record.js.map +1 -1
  663. package/dist/internal/request.js +20 -7
  664. package/dist/internal/request.js.map +1 -1
  665. package/dist/internal/schedule.js +17 -22
  666. package/dist/internal/schedule.js.map +1 -1
  667. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  668. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  669. package/dist/internal/schema/interpreter.js +51 -36
  670. package/dist/internal/schema/interpreter.js.map +1 -1
  671. package/dist/internal/schema/standardSchema.js +34 -33
  672. package/dist/internal/schema/standardSchema.js.map +1 -1
  673. package/dist/internal/schema/toCodeDocument.js +7 -2
  674. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  675. package/dist/internal/schema/toCodec.js +86 -1
  676. package/dist/internal/schema/toCodec.js.map +1 -1
  677. package/dist/internal/schema/toFormatter.js +5 -5
  678. package/dist/internal/schema/toFormatter.js.map +1 -1
  679. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  680. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  681. package/dist/internal/trie.js +1 -3
  682. package/dist/internal/trie.js.map +1 -1
  683. package/dist/internal/uuid.js +7 -3
  684. package/dist/internal/uuid.js.map +1 -1
  685. package/dist/internal/version.js +1 -1
  686. package/dist/net/NetAddress.d.ts.map +1 -1
  687. package/dist/net/NetAddress.js +2 -8
  688. package/dist/net/NetAddress.js.map +1 -1
  689. package/dist/observability/Otlp.d.ts +15 -0
  690. package/dist/observability/Otlp.d.ts.map +1 -1
  691. package/dist/observability/Otlp.js +3 -0
  692. package/dist/observability/Otlp.js.map +1 -1
  693. package/dist/observability/OtlpExporter.d.ts +8 -0
  694. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  695. package/dist/observability/OtlpExporter.js +15 -13
  696. package/dist/observability/OtlpExporter.js.map +1 -1
  697. package/dist/observability/OtlpLogger.d.ts +17 -0
  698. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  699. package/dist/observability/OtlpLogger.js +14 -1
  700. package/dist/observability/OtlpLogger.js.map +1 -1
  701. package/dist/observability/OtlpMetrics.d.ts +17 -0
  702. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  703. package/dist/observability/OtlpMetrics.js +18 -3
  704. package/dist/observability/OtlpMetrics.js.map +1 -1
  705. package/dist/observability/OtlpResource.d.ts +3 -1
  706. package/dist/observability/OtlpResource.d.ts.map +1 -1
  707. package/dist/observability/OtlpResource.js +11 -4
  708. package/dist/observability/OtlpResource.js.map +1 -1
  709. package/dist/observability/OtlpSerialization.d.ts +5 -0
  710. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  711. package/dist/observability/OtlpSerialization.js +14 -3
  712. package/dist/observability/OtlpSerialization.js.map +1 -1
  713. package/dist/observability/OtlpTracer.d.ts +17 -0
  714. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  715. package/dist/observability/OtlpTracer.js +15 -2
  716. package/dist/observability/OtlpTracer.js.map +1 -1
  717. package/dist/observability/internal/protobuf.d.ts +0 -9
  718. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  719. package/dist/observability/internal/protobuf.js +2 -10
  720. package/dist/observability/internal/protobuf.js.map +1 -1
  721. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  722. package/dist/persistence/PersistedCache.js +1 -1
  723. package/dist/persistence/PersistedCache.js.map +1 -1
  724. package/dist/persistence/PersistedQueue.d.ts +6 -2
  725. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  726. package/dist/persistence/PersistedQueue.js +162 -84
  727. package/dist/persistence/PersistedQueue.js.map +1 -1
  728. package/dist/persistence/Persistence.d.ts +28 -0
  729. package/dist/persistence/Persistence.d.ts.map +1 -1
  730. package/dist/persistence/Persistence.js +36 -8
  731. package/dist/persistence/Persistence.js.map +1 -1
  732. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  733. package/dist/persistence/RateLimiter.js +8 -12
  734. package/dist/persistence/RateLimiter.js.map +1 -1
  735. package/dist/persistence/UserDirectories.d.ts +129 -0
  736. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  737. package/dist/persistence/UserDirectories.js +178 -0
  738. package/dist/persistence/UserDirectories.js.map +1 -0
  739. package/dist/persistence/index.d.ts +5 -0
  740. package/dist/persistence/index.d.ts.map +1 -1
  741. package/dist/persistence/index.js +5 -0
  742. package/dist/persistence/index.js.map +1 -1
  743. package/dist/process/ChildProcess.d.ts +2 -1
  744. package/dist/process/ChildProcess.d.ts.map +1 -1
  745. package/dist/process/ChildProcess.js.map +1 -1
  746. package/dist/reactivity/AsyncResult.d.ts +6 -0
  747. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  748. package/dist/reactivity/AsyncResult.js +28 -1
  749. package/dist/reactivity/AsyncResult.js.map +1 -1
  750. package/dist/reactivity/Atom.d.ts +69 -30
  751. package/dist/reactivity/Atom.d.ts.map +1 -1
  752. package/dist/reactivity/Atom.js +40 -15
  753. package/dist/reactivity/Atom.js.map +1 -1
  754. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  755. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  756. package/dist/reactivity/AtomHttpApi.js +1 -1
  757. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  758. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  759. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  760. package/dist/reactivity/AtomRegistry.js +47 -10
  761. package/dist/reactivity/AtomRegistry.js.map +1 -1
  762. package/dist/reactivity/AtomRpc.d.ts +3 -3
  763. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  764. package/dist/reactivity/AtomRpc.js +1 -1
  765. package/dist/reactivity/AtomRpc.js.map +1 -1
  766. package/dist/reactivity/Hydration.d.ts.map +1 -1
  767. package/dist/reactivity/Hydration.js +46 -12
  768. package/dist/reactivity/Hydration.js.map +1 -1
  769. package/dist/reactivity/Reactivity.d.ts +71 -7
  770. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  771. package/dist/reactivity/Reactivity.js +21 -12
  772. package/dist/reactivity/Reactivity.js.map +1 -1
  773. package/dist/rpc/Rpc.d.ts +18 -0
  774. package/dist/rpc/Rpc.d.ts.map +1 -1
  775. package/dist/rpc/Rpc.js +20 -0
  776. package/dist/rpc/Rpc.js.map +1 -1
  777. package/dist/rpc/RpcClient.d.ts +26 -2
  778. package/dist/rpc/RpcClient.d.ts.map +1 -1
  779. package/dist/rpc/RpcClient.js +202 -61
  780. package/dist/rpc/RpcClient.js.map +1 -1
  781. package/dist/rpc/RpcSerialization.d.ts +15 -0
  782. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  783. package/dist/rpc/RpcSerialization.js +21 -5
  784. package/dist/rpc/RpcSerialization.js.map +1 -1
  785. package/dist/rpc/RpcServer.d.ts.map +1 -1
  786. package/dist/rpc/RpcServer.js +9 -18
  787. package/dist/rpc/RpcServer.js.map +1 -1
  788. package/dist/schema/Model.d.ts +1 -1
  789. package/dist/schema/VariantSchema.d.ts +22 -3
  790. package/dist/schema/VariantSchema.d.ts.map +1 -1
  791. package/dist/schema/VariantSchema.js +32 -18
  792. package/dist/schema/VariantSchema.js.map +1 -1
  793. package/dist/socket/Socket.d.ts +23 -1
  794. package/dist/socket/Socket.d.ts.map +1 -1
  795. package/dist/socket/Socket.js +36 -3
  796. package/dist/socket/Socket.js.map +1 -1
  797. package/dist/sql/Migrator.d.ts.map +1 -1
  798. package/dist/sql/Migrator.js +15 -3
  799. package/dist/sql/Migrator.js.map +1 -1
  800. package/dist/sql/SqlClient.d.ts +151 -12
  801. package/dist/sql/SqlClient.d.ts.map +1 -1
  802. package/dist/sql/SqlClient.js +156 -34
  803. package/dist/sql/SqlClient.js.map +1 -1
  804. package/dist/sql/SqlResolver.d.ts +9 -0
  805. package/dist/sql/SqlResolver.d.ts.map +1 -1
  806. package/dist/sql/SqlResolver.js +9 -0
  807. package/dist/sql/SqlResolver.js.map +1 -1
  808. package/dist/sql/Statement.d.ts +3 -1
  809. package/dist/sql/Statement.d.ts.map +1 -1
  810. package/dist/sql/Statement.js +24 -5
  811. package/dist/sql/Statement.js.map +1 -1
  812. package/dist/testing/TestClock.d.ts +16 -3
  813. package/dist/testing/TestClock.d.ts.map +1 -1
  814. package/dist/testing/TestClock.js +115 -23
  815. package/dist/testing/TestClock.js.map +1 -1
  816. package/dist/testing/TestSchema.d.ts +7 -1
  817. package/dist/testing/TestSchema.d.ts.map +1 -1
  818. package/dist/testing/TestSchema.js +9 -3
  819. package/dist/testing/TestSchema.js.map +1 -1
  820. package/dist/workflow/Activity.js +1 -0
  821. package/dist/workflow/Activity.js.map +1 -1
  822. package/dist/workflow/Workflow.d.ts +22 -0
  823. package/dist/workflow/Workflow.d.ts.map +1 -1
  824. package/dist/workflow/Workflow.js +15 -3
  825. package/dist/workflow/Workflow.js.map +1 -1
  826. package/dist/workflow/WorkflowEngine.d.ts +20 -1
  827. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  828. package/dist/workflow/WorkflowEngine.js +52 -24
  829. package/dist/workflow/WorkflowEngine.js.map +1 -1
  830. package/package.json +13 -3
  831. package/src/Array.ts +223 -61
  832. package/src/Bytes.ts +111 -0
  833. package/src/Channel.ts +287 -439
  834. package/src/ChannelSchema.ts +1 -49
  835. package/src/Chunk.ts +55 -61
  836. package/src/Config.ts +12 -86
  837. package/src/ConfigProvider.ts +41 -44
  838. package/src/Cron.ts +6 -3
  839. package/src/Duration.ts +70 -21
  840. package/src/Effect.ts +642 -220
  841. package/src/Equivalence.ts +7 -4
  842. package/src/Exit.ts +24 -9
  843. package/src/FiberHandle.ts +10 -9
  844. package/src/FiberMap.ts +13 -66
  845. package/src/FileSystem.ts +33 -9
  846. package/src/Graph.ts +171 -1263
  847. package/src/HashSet.ts +0 -60
  848. package/src/Iterable.ts +15 -14
  849. package/src/JsonSchema.ts +28 -3
  850. package/src/Layer.ts +2 -2
  851. package/src/ManagedRuntime.ts +72 -6
  852. package/src/Match.ts +65 -12
  853. package/src/Metric.ts +249 -507
  854. package/src/MutableHashMap.ts +4 -473
  855. package/src/Number.ts +2 -2
  856. package/src/Optic.ts +17 -332
  857. package/src/Path.ts +61 -8
  858. package/src/PubSub.ts +12 -7
  859. package/src/Queue.ts +5 -37
  860. package/src/Random.ts +1 -1
  861. package/src/RcMap.ts +14 -8
  862. package/src/Record.ts +51 -0
  863. package/src/Ref.ts +7 -104
  864. package/src/References.ts +5 -4
  865. package/src/RequestResolver.ts +46 -87
  866. package/src/Resource.ts +1 -1
  867. package/src/Runtime.ts +19 -18
  868. package/src/Schedule.ts +2 -94
  869. package/src/Schema.ts +596 -348
  870. package/src/SchemaAST.ts +20 -9
  871. package/src/SchemaGetter.ts +22 -5
  872. package/src/SchemaIssue.ts +44 -53
  873. package/src/SchemaRepresentation.ts +64 -1
  874. package/src/SchemaTransformation.ts +1 -1
  875. package/src/Scope.ts +12 -2
  876. package/src/ScopedCache.ts +17 -142
  877. package/src/SemVer.ts +1528 -0
  878. package/src/SemVerRange.ts +883 -0
  879. package/src/Sink.ts +6 -2
  880. package/src/Stream.ts +334 -1011
  881. package/src/String.ts +25 -12
  882. package/src/TextDiff.ts +766 -0
  883. package/src/TxHashMap.ts +1 -103
  884. package/src/TxHashSet.ts +48 -753
  885. package/src/TxRef.ts +4 -2
  886. package/src/ai/AiError.ts +69 -5
  887. package/src/ai/Chat.ts +10 -5
  888. package/src/ai/Decision.ts +119 -22
  889. package/src/ai/DecisionModel.ts +265 -109
  890. package/src/ai/EmbeddingModel.ts +25 -13
  891. package/src/ai/LanguageModel.ts +57 -51
  892. package/src/ai/McpClient.ts +1211 -0
  893. package/src/ai/McpClientError.ts +329 -0
  894. package/src/ai/McpProtocol.ts +2 -2
  895. package/src/ai/McpSchema.ts +153 -35
  896. package/src/ai/McpServer.ts +232 -275
  897. package/src/ai/Prompt.ts +49 -35
  898. package/src/ai/Response.ts +195 -65
  899. package/src/ai/Tool.ts +12 -4
  900. package/src/ai/Toolkit.ts +78 -10
  901. package/src/ai/index.ts +12 -0
  902. package/src/ai/internal/mcpCore.ts +13 -14
  903. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  904. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  905. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  906. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  907. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  908. package/src/ai/internal/mcpProtocol.ts +22 -2
  909. package/src/ai/internal/mcpRuntime.ts +3 -4
  910. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  911. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  912. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  913. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  914. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  915. package/src/cli/CliError.ts +49 -4
  916. package/src/cli/Command.ts +316 -9
  917. package/src/cli/Completions.ts +10 -0
  918. package/src/cli/Flag.ts +218 -0
  919. package/src/cli/GlobalFlag.ts +3 -3
  920. package/src/cli/Param.ts +218 -0
  921. package/src/cli/TerminalCapabilities.ts +156 -0
  922. package/src/cli/index.ts +6 -0
  923. package/src/cli/internal/command.ts +10 -4
  924. package/src/cli/internal/completions/bash.ts +7 -5
  925. package/src/cli/internal/completions/descriptor.ts +20 -1
  926. package/src/cli/internal/completions/fish.ts +12 -10
  927. package/src/cli/internal/completions/powershell.ts +25 -13
  928. package/src/cli/internal/completions/zsh.ts +15 -8
  929. package/src/cli/internal/formatter.ts +18 -0
  930. package/src/cli/internal/lexer.ts +12 -5
  931. package/src/cli/internal/parser.ts +43 -14
  932. package/src/cli/internal/wizard.ts +2 -1
  933. package/src/cluster/ClusterCron.ts +94 -35
  934. package/src/cluster/ClusterMetrics.ts +149 -7
  935. package/src/cluster/ClusterWorkflowEngine.ts +164 -53
  936. package/src/cluster/Entity.ts +4 -0
  937. package/src/cluster/MessageStorage.ts +21 -3
  938. package/src/cluster/Runners.ts +145 -72
  939. package/src/cluster/Sharding.ts +118 -38
  940. package/src/cluster/ShardingConfig.ts +15 -0
  941. package/src/cluster/SqlMessageStorage.ts +58 -55
  942. package/src/cluster/SqlRunnerStorage.ts +10 -4
  943. package/src/cluster/internal/entityManager.ts +81 -11
  944. package/src/devtools/DevTools.ts +3 -2
  945. package/src/devtools/DevToolsClient.ts +27 -10
  946. package/src/encoding/Base64Url.ts +31 -0
  947. package/src/encoding/Ini.ts +3 -0
  948. package/src/encoding/JsonArray.ts +849 -0
  949. package/src/encoding/Ndjson.ts +211 -20
  950. package/src/encoding/SchemaBinary.ts +14 -48
  951. package/src/encoding/Sse.ts +1 -1
  952. package/src/encoding/Tar.ts +1417 -0
  953. package/src/encoding/Toml.ts +3 -3
  954. package/src/encoding/Xml.ts +2037 -0
  955. package/src/encoding/Yaml.ts +108 -36
  956. package/src/encoding/Zip.ts +1558 -0
  957. package/src/encoding/index.ts +24 -0
  958. package/src/eventlog/EventJournal.ts +611 -227
  959. package/src/eventlog/EventLog.ts +496 -196
  960. package/src/eventlog/EventLogEncryption.ts +128 -43
  961. package/src/eventlog/EventLogMessage.ts +62 -11
  962. package/src/eventlog/EventLogRemote.ts +77 -21
  963. package/src/eventlog/EventLogServer.ts +162 -20
  964. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  965. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  966. package/src/eventlog/EventRow.ts +706 -0
  967. package/src/eventlog/SqlEventJournal.ts +453 -173
  968. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  969. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  970. package/src/eventlog/index.ts +6 -0
  971. package/src/eventlog/internal/conflicts.ts +123 -0
  972. package/src/graphql/GraphQLClient.ts +17 -5
  973. package/src/graphql/GraphQLClientError.ts +5 -12
  974. package/src/graphql/GraphQLProtocol.ts +277 -20
  975. package/src/graphql/GraphQLResolver.ts +109 -230
  976. package/src/http/FetchHttpClient.ts +61 -8
  977. package/src/http/FindMyWay/internal/router.ts +13 -1
  978. package/src/http/Headers.ts +343 -163
  979. package/src/http/HttpClient.ts +144 -136
  980. package/src/http/HttpClientError.ts +10 -6
  981. package/src/http/HttpClientRequest.ts +315 -11
  982. package/src/http/HttpClientResponse.ts +71 -0
  983. package/src/http/HttpEffect.ts +25 -33
  984. package/src/http/HttpIncomingMessage.ts +3 -23
  985. package/src/http/HttpMiddleware.ts +265 -28
  986. package/src/http/HttpRouter.ts +67 -14
  987. package/src/http/HttpServerError.ts +14 -7
  988. package/src/http/HttpServerRequest.ts +73 -14
  989. package/src/http/HttpServerResponse.ts +49 -23
  990. package/src/http/HttpStaticServer.ts +29 -19
  991. package/src/http/HttpTraceContext.ts +1 -1
  992. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  993. package/src/http/MultipartParser/internal/headers.ts +4 -16
  994. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  995. package/src/http/Url.ts +8 -2
  996. package/src/http/UrlParams.ts +225 -26
  997. package/src/http/internal/compression.ts +3 -17
  998. package/src/http/internal/compressionBody.ts +56 -0
  999. package/src/http/internal/decompression.ts +235 -0
  1000. package/src/http/internal/lazyStream.ts +25 -0
  1001. package/src/http/internal/requestState.ts +33 -0
  1002. package/src/http/internal/tracing.ts +21 -4
  1003. package/src/http/internal/urlParams.ts +5 -0
  1004. package/src/http/internal/webResponse.ts +20 -0
  1005. package/src/http-api/HttpApi.ts +1 -1
  1006. package/src/http-api/HttpApiBuilder.ts +151 -23
  1007. package/src/http-api/HttpApiClient.ts +160 -31
  1008. package/src/http-api/HttpApiEndpoint.ts +144 -33
  1009. package/src/http-api/HttpApiError.ts +55 -0
  1010. package/src/http-api/HttpApiScalar.ts +4 -3
  1011. package/src/http-api/HttpApiSchema.ts +275 -13
  1012. package/src/http-api/HttpApiSwagger.ts +11 -4
  1013. package/src/http-api/HttpApiTest.ts +33 -9
  1014. package/src/http-api/OpenApi.ts +84 -42
  1015. package/src/http-api/internal/path.ts +40 -12
  1016. package/src/index.ts +24 -0
  1017. package/src/internal/core.ts +22 -2
  1018. package/src/internal/dateTime.ts +20 -7
  1019. package/src/internal/effect.ts +125 -88
  1020. package/src/internal/graphql.ts +30 -7
  1021. package/src/internal/hashMap.ts +2 -2
  1022. package/src/internal/hydration.ts +15 -0
  1023. package/src/internal/inflate.ts +710 -0
  1024. package/src/internal/record.ts +6 -0
  1025. package/src/internal/request.ts +21 -6
  1026. package/src/internal/schedule.ts +20 -39
  1027. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  1028. package/src/internal/schema/interpreter.ts +58 -45
  1029. package/src/internal/schema/standardSchema.ts +32 -30
  1030. package/src/internal/schema/toCodeDocument.ts +8 -3
  1031. package/src/internal/schema/toCodec.ts +116 -1
  1032. package/src/internal/schema/toFormatter.ts +6 -6
  1033. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  1034. package/src/internal/trie.ts +1 -3
  1035. package/src/internal/uuid.ts +15 -10
  1036. package/src/internal/version.ts +1 -1
  1037. package/src/net/NetAddress.ts +2 -9
  1038. package/src/observability/Otlp.ts +18 -0
  1039. package/src/observability/OtlpExporter.ts +19 -15
  1040. package/src/observability/OtlpLogger.ts +31 -2
  1041. package/src/observability/OtlpMetrics.ts +35 -4
  1042. package/src/observability/OtlpResource.ts +16 -6
  1043. package/src/observability/OtlpSerialization.ts +17 -3
  1044. package/src/observability/OtlpTracer.ts +32 -3
  1045. package/src/observability/internal/protobuf.ts +2 -10
  1046. package/src/persistence/PersistedCache.ts +3 -1
  1047. package/src/persistence/PersistedQueue.ts +223 -153
  1048. package/src/persistence/Persistence.ts +64 -30
  1049. package/src/persistence/RateLimiter.ts +18 -21
  1050. package/src/persistence/UserDirectories.ts +273 -0
  1051. package/src/persistence/index.ts +6 -0
  1052. package/src/process/ChildProcess.ts +2 -1
  1053. package/src/reactivity/AsyncResult.ts +35 -38
  1054. package/src/reactivity/Atom.ts +134 -166
  1055. package/src/reactivity/AtomHttpApi.ts +10 -16
  1056. package/src/reactivity/AtomRegistry.ts +53 -30
  1057. package/src/reactivity/AtomRpc.ts +6 -22
  1058. package/src/reactivity/Hydration.ts +53 -12
  1059. package/src/reactivity/Reactivity.ts +97 -39
  1060. package/src/rpc/Rpc.ts +21 -0
  1061. package/src/rpc/RpcClient.ts +285 -104
  1062. package/src/rpc/RpcSerialization.ts +21 -5
  1063. package/src/rpc/RpcServer.ts +11 -20
  1064. package/src/schema/VariantSchema.ts +86 -22
  1065. package/src/socket/Socket.ts +45 -20
  1066. package/src/sql/Migrator.ts +19 -9
  1067. package/src/sql/SqlClient.ts +275 -36
  1068. package/src/sql/SqlResolver.ts +9 -0
  1069. package/src/sql/Statement.ts +35 -8
  1070. package/src/testing/TestClock.ts +147 -29
  1071. package/src/testing/TestSchema.ts +9 -3
  1072. package/src/workflow/Activity.ts +1 -0
  1073. package/src/workflow/Workflow.ts +31 -5
  1074. package/src/workflow/WorkflowEngine.ts +93 -31
  1075. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  1076. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  1077. package/dist/http/internal/preResponseHandler.js +0 -14
  1078. package/dist/http/internal/preResponseHandler.js.map +0 -1
  1079. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -13,6 +13,7 @@
13
13
  import type * as ByteSize from "../ByteSize.ts"
14
14
  import * as Context from "../Context.ts"
15
15
  import * as Effect from "../Effect.ts"
16
+ import * as Base64 from "../encoding/Base64.ts"
16
17
  import type * as FileSystem from "../FileSystem.ts"
17
18
  import { dual } from "../Function.ts"
18
19
  import * as Inspectable from "../Inspectable.ts"
@@ -30,6 +31,7 @@ import * as Stream from "../Stream.ts"
30
31
  import * as Headers from "./Headers.ts"
31
32
  import * as HttpBody from "./HttpBody.ts"
32
33
  import { hasBody, type HttpMethod } from "./HttpMethod.ts"
34
+ import * as compression from "./internal/compressionBody.ts"
33
35
  import * as bodyInternal from "./internal/httpBody.ts"
34
36
  import * as Url from "./Url.ts"
35
37
  import * as UrlParams from "./UrlParams.ts"
@@ -104,7 +106,7 @@ const Proto = {
104
106
  return {
105
107
  _id: "HttpClientRequest",
106
108
  method: this.method,
107
- url: this.url,
109
+ url: UrlParams.redactUrl(this.url),
108
110
  urlParams: this.urlParams,
109
111
  hash: this.hash,
110
112
  headers: redact(this.headers),
@@ -482,7 +484,8 @@ export const removeHeader: {
482
484
  )
483
485
 
484
486
  /**
485
- * Sets the `Authorization` header using HTTP Basic authentication credentials.
487
+ * Sets the `Authorization` header using HTTP Basic authentication credentials,
488
+ * encoded as UTF-8 before base64 encoding.
486
489
  *
487
490
  * @stability unstable
488
491
  * @category combinators
@@ -490,7 +493,8 @@ export const removeHeader: {
490
493
  */
491
494
  export const basicAuth: {
492
495
  /**
493
- * Sets the `Authorization` header using HTTP Basic authentication credentials.
496
+ * Sets the `Authorization` header using HTTP Basic authentication credentials,
497
+ * encoded as UTF-8 before base64 encoding.
494
498
  *
495
499
  * @stability unstable
496
500
  * @category combinators
@@ -498,7 +502,8 @@ export const basicAuth: {
498
502
  */
499
503
  (username: string | Redacted.Redacted, password: string | Redacted.Redacted): (self: HttpClientRequest) => HttpClientRequest
500
504
  /**
501
- * Sets the `Authorization` header using HTTP Basic authentication credentials.
505
+ * Sets the `Authorization` header using HTTP Basic authentication credentials,
506
+ * encoded as UTF-8 before base64 encoding.
502
507
  *
503
508
  * @stability unstable
504
509
  * @category combinators
@@ -516,7 +521,11 @@ export const basicAuth: {
516
521
  username: string | Redacted.Redacted,
517
522
  password: string | Redacted.Redacted
518
523
  ): HttpClientRequest =>
519
- setHeader(self, "Authorization", `Basic ${btoa(`${stringOrRedacted(username)}:${stringOrRedacted(password)}`)}`)
524
+ setHeader(
525
+ self,
526
+ "Authorization",
527
+ `Basic ${Base64.encode(`${stringOrRedacted(username)}:${stringOrRedacted(password)}`)}`
528
+ )
520
529
  )
521
530
 
522
531
  /**
@@ -584,6 +593,136 @@ export const accept: {
584
593
  */
585
594
  export const acceptJson: (self: HttpClientRequest) => HttpClientRequest = accept("application/json")
586
595
 
596
+ /**
597
+ * Asks the server to switch the connection to another protocol by setting the
598
+ * `Connection: Upgrade` and `Upgrade` headers.
599
+ *
600
+ * **When to use**
601
+ *
602
+ * Use to switch an HTTP/1.1 connection to a raw byte stream, such as Docker's
603
+ * `Upgrade: tcp` for container attach. For WebSocket, use `Socket.makeWebSocket`.
604
+ *
605
+ * **Details**
606
+ *
607
+ * The request is otherwise ordinary, so client transforms such as base URLs,
608
+ * authentication, and tracing apply to it. When the server answers `101
609
+ * Switching Protocols`, `HttpClientResponse.upgrade` hands over the
610
+ * connection as a `Socket`. Any other response is read as usual.
611
+ *
612
+ * **Example** (Attaching to a Docker container)
613
+ *
614
+ * ```ts
615
+ * import { Effect } from "effect"
616
+ * import { HttpClient, HttpClientRequest } from "effect/http"
617
+ *
618
+ * const program = Effect.gen(function*() {
619
+ * const client = yield* HttpClient.HttpClient
620
+ * const response = yield* client.execute(
621
+ * HttpClientRequest.post("/containers/abc/attach?stream=1&stdout=1").pipe(
622
+ * HttpClientRequest.upgrade("tcp")
623
+ * )
624
+ * )
625
+ * const socket = yield* response.upgrade
626
+ * const reader = yield* socket.reader
627
+ * return yield* reader.pull
628
+ * })
629
+ * ```
630
+ *
631
+ * @stability unstable
632
+ * @category combinators
633
+ * @since 4.0.6
634
+ */
635
+ export const upgrade: {
636
+ /**
637
+ * Asks the server to switch the connection to another protocol by setting the
638
+ * `Connection: Upgrade` and `Upgrade` headers.
639
+ *
640
+ * **When to use**
641
+ *
642
+ * Use to switch an HTTP/1.1 connection to a raw byte stream, such as Docker's
643
+ * `Upgrade: tcp` for container attach. For WebSocket, use `Socket.makeWebSocket`.
644
+ *
645
+ * **Details**
646
+ *
647
+ * The request is otherwise ordinary, so client transforms such as base URLs,
648
+ * authentication, and tracing apply to it. When the server answers `101
649
+ * Switching Protocols`, `HttpClientResponse.upgrade` hands over the
650
+ * connection as a `Socket`. Any other response is read as usual.
651
+ *
652
+ * **Example** (Attaching to a Docker container)
653
+ *
654
+ * ```ts
655
+ * import { Effect } from "effect"
656
+ * import { HttpClient, HttpClientRequest } from "effect/http"
657
+ *
658
+ * const program = Effect.gen(function*() {
659
+ * const client = yield* HttpClient.HttpClient
660
+ * const response = yield* client.execute(
661
+ * HttpClientRequest.post("/containers/abc/attach?stream=1&stdout=1").pipe(
662
+ * HttpClientRequest.upgrade("tcp")
663
+ * )
664
+ * )
665
+ * const socket = yield* response.upgrade
666
+ * const reader = yield* socket.reader
667
+ * return yield* reader.pull
668
+ * })
669
+ * ```
670
+ *
671
+ * @stability unstable
672
+ * @category combinators
673
+ * @since 4.0.6
674
+ */
675
+ (protocol: string): (self: HttpClientRequest) => HttpClientRequest
676
+ /**
677
+ * Asks the server to switch the connection to another protocol by setting the
678
+ * `Connection: Upgrade` and `Upgrade` headers.
679
+ *
680
+ * **When to use**
681
+ *
682
+ * Use to switch an HTTP/1.1 connection to a raw byte stream, such as Docker's
683
+ * `Upgrade: tcp` for container attach. For WebSocket, use `Socket.makeWebSocket`.
684
+ *
685
+ * **Details**
686
+ *
687
+ * The request is otherwise ordinary, so client transforms such as base URLs,
688
+ * authentication, and tracing apply to it. When the server answers `101
689
+ * Switching Protocols`, `HttpClientResponse.upgrade` hands over the
690
+ * connection as a `Socket`. Any other response is read as usual.
691
+ *
692
+ * **Example** (Attaching to a Docker container)
693
+ *
694
+ * ```ts
695
+ * import { Effect } from "effect"
696
+ * import { HttpClient, HttpClientRequest } from "effect/http"
697
+ *
698
+ * const program = Effect.gen(function*() {
699
+ * const client = yield* HttpClient.HttpClient
700
+ * const response = yield* client.execute(
701
+ * HttpClientRequest.post("/containers/abc/attach?stream=1&stdout=1").pipe(
702
+ * HttpClientRequest.upgrade("tcp")
703
+ * )
704
+ * )
705
+ * const socket = yield* response.upgrade
706
+ * const reader = yield* socket.reader
707
+ * return yield* reader.pull
708
+ * })
709
+ * ```
710
+ *
711
+ * @stability unstable
712
+ * @category combinators
713
+ * @since 4.0.6
714
+ */
715
+ (self: HttpClientRequest, protocol: string): HttpClientRequest
716
+ } = dual(2, (self: HttpClientRequest, protocol: string): HttpClientRequest =>
717
+ makeWith(
718
+ self.method,
719
+ self.url,
720
+ self.urlParams,
721
+ self.hash,
722
+ Headers.set(Headers.set(self.headers, "connection", "Upgrade"), "upgrade", protocol),
723
+ self.body
724
+ ))
725
+
587
726
  /**
588
727
  * Sets the request URL. When given a `URL`, its search parameters and hash are extracted into the request's structured fields.
589
728
  *
@@ -755,6 +894,10 @@ export const updateUrl: {
755
894
  /**
756
895
  * Sets one query parameter, replacing existing values for that parameter name.
757
896
  *
897
+ * **Details**
898
+ *
899
+ * A `Redacted` value is sent unwrapped and stays redacted in inspection, errors and spans.
900
+ *
758
901
  * @stability unstable
759
902
  * @category combinators
760
903
  * @since 4.0.0
@@ -763,20 +906,28 @@ export const setUrlParam: {
763
906
  /**
764
907
  * Sets one query parameter, replacing existing values for that parameter name.
765
908
  *
909
+ * **Details**
910
+ *
911
+ * A `Redacted` value is sent unwrapped and stays redacted in inspection, errors and spans.
912
+ *
766
913
  * @stability unstable
767
914
  * @category combinators
768
915
  * @since 4.0.0
769
916
  */
770
- (key: string, value: string): (self: HttpClientRequest) => HttpClientRequest
917
+ (key: string, value: string | Redacted.Redacted): (self: HttpClientRequest) => HttpClientRequest
771
918
  /**
772
919
  * Sets one query parameter, replacing existing values for that parameter name.
773
920
  *
921
+ * **Details**
922
+ *
923
+ * A `Redacted` value is sent unwrapped and stays redacted in inspection, errors and spans.
924
+ *
774
925
  * @stability unstable
775
926
  * @category combinators
776
927
  * @since 4.0.0
777
928
  */
778
- (self: HttpClientRequest, key: string, value: string): HttpClientRequest
779
- } = dual(3, (self: HttpClientRequest, key: string, value: string): HttpClientRequest =>
929
+ (self: HttpClientRequest, key: string, value: string | Redacted.Redacted): HttpClientRequest
930
+ } = dual(3, (self: HttpClientRequest, key: string, value: string | Redacted.Redacted): HttpClientRequest =>
780
931
  makeWith(
781
932
  self.method,
782
933
  self.url,
@@ -823,6 +974,10 @@ export const setUrlParams: {
823
974
  /**
824
975
  * Appends one query parameter value without removing existing values for the same name.
825
976
  *
977
+ * **Details**
978
+ *
979
+ * A `Redacted` value is sent unwrapped and stays redacted in inspection, errors and spans.
980
+ *
826
981
  * @stability unstable
827
982
  * @category combinators
828
983
  * @since 4.0.0
@@ -831,20 +986,28 @@ export const appendUrlParam: {
831
986
  /**
832
987
  * Appends one query parameter value without removing existing values for the same name.
833
988
  *
989
+ * **Details**
990
+ *
991
+ * A `Redacted` value is sent unwrapped and stays redacted in inspection, errors and spans.
992
+ *
834
993
  * @stability unstable
835
994
  * @category combinators
836
995
  * @since 4.0.0
837
996
  */
838
- (key: string, value: string): (self: HttpClientRequest) => HttpClientRequest
997
+ (key: string, value: string | Redacted.Redacted): (self: HttpClientRequest) => HttpClientRequest
839
998
  /**
840
999
  * Appends one query parameter value without removing existing values for the same name.
841
1000
  *
1001
+ * **Details**
1002
+ *
1003
+ * A `Redacted` value is sent unwrapped and stays redacted in inspection, errors and spans.
1004
+ *
842
1005
  * @stability unstable
843
1006
  * @category combinators
844
1007
  * @since 4.0.0
845
1008
  */
846
- (self: HttpClientRequest, key: string, value: string): HttpClientRequest
847
- } = dual(3, (self: HttpClientRequest, key: string, value: string): HttpClientRequest =>
1009
+ (self: HttpClientRequest, key: string, value: string | Redacted.Redacted): HttpClientRequest
1010
+ } = dual(3, (self: HttpClientRequest, key: string, value: string | Redacted.Redacted): HttpClientRequest =>
848
1011
  makeWith(
849
1012
  self.method,
850
1013
  self.url,
@@ -974,6 +1137,147 @@ export const setBody: {
974
1137
  )
975
1138
  })
976
1139
 
1140
+ /**
1141
+ * Algorithms supported by Web `CompressionStream` for request body compression.
1142
+ *
1143
+ * @stability unstable
1144
+ * @category models
1145
+ * @since 4.0.0
1146
+ */
1147
+ export type CompressionAlgorithm = "gzip" | "deflate"
1148
+
1149
+ /**
1150
+ * Options for request body compression.
1151
+ *
1152
+ * @stability unstable
1153
+ * @category options
1154
+ * @since 4.0.0
1155
+ */
1156
+ export interface CompressionOptions {
1157
+ /**
1158
+ * Minimum known body length in bytes to compress. Defaults to `1024`.
1159
+ * Bodies with unknown length are always compressed.
1160
+ */
1161
+ readonly minSize?: number | undefined
1162
+ }
1163
+
1164
+ /**
1165
+ * Compresses a request body using Web `CompressionStream` and sets `Content-Encoding`.
1166
+ *
1167
+ * **Details**
1168
+ *
1169
+ * Byte-array bodies (including text, JSON, and URL-encoded bodies) are compressed
1170
+ * into a new `Uint8Array` body, preserving the content type and updating
1171
+ * `Content-Length`. The compressed body does not retain the original lazy text.
1172
+ * Stream bodies are compressed lazily and have their content length removed.
1173
+ * They still require a client runtime that supports streaming request bodies
1174
+ * (Fetch requires `duplex: "half"`, which Safari and Firefox do not support).
1175
+ *
1176
+ * Returns the original request unchanged for empty, FormData, and raw bodies,
1177
+ * bodies with a known length below `options.minSize`, or requests with any
1178
+ * existing `Content-Encoding` header, including `identity`. Unknown-length
1179
+ * streams are always compressed. The default minimum is 1024 bytes because
1180
+ * gzip can make very small bodies larger.
1181
+ *
1182
+ * Requires `CompressionStream` (available in browsers, Node 18+, Bun, and Deno).
1183
+ * There is no typed error channel: byte compression failures are defects;
1184
+ * stream failures surface when the body is sent.
1185
+ *
1186
+ * To compress every request, use
1187
+ * `HttpClient.mapRequestEffect(HttpClientRequest.compressBody("gzip"))`.
1188
+ * `HttpClient.retryTransient` re-runs preprocessing, so this recompresses on
1189
+ * every retry. For large bodies, compress once before calling `client.execute`.
1190
+ *
1191
+ * @stability unstable
1192
+ * @category combinators
1193
+ * @since 4.0.0
1194
+ */
1195
+ export const compressBody: {
1196
+ /**
1197
+ * Compresses a request body using Web `CompressionStream` and sets `Content-Encoding`.
1198
+ *
1199
+ * **Details**
1200
+ *
1201
+ * Byte-array bodies (including text, JSON, and URL-encoded bodies) are compressed
1202
+ * into a new `Uint8Array` body, preserving the content type and updating
1203
+ * `Content-Length`. The compressed body does not retain the original lazy text.
1204
+ * Stream bodies are compressed lazily and have their content length removed.
1205
+ * They still require a client runtime that supports streaming request bodies
1206
+ * (Fetch requires `duplex: "half"`, which Safari and Firefox do not support).
1207
+ *
1208
+ * Returns the original request unchanged for empty, FormData, and raw bodies,
1209
+ * bodies with a known length below `options.minSize`, or requests with any
1210
+ * existing `Content-Encoding` header, including `identity`. Unknown-length
1211
+ * streams are always compressed. The default minimum is 1024 bytes because
1212
+ * gzip can make very small bodies larger.
1213
+ *
1214
+ * Requires `CompressionStream` (available in browsers, Node 18+, Bun, and Deno).
1215
+ * There is no typed error channel: byte compression failures are defects;
1216
+ * stream failures surface when the body is sent.
1217
+ *
1218
+ * To compress every request, use
1219
+ * `HttpClient.mapRequestEffect(HttpClientRequest.compressBody("gzip"))`.
1220
+ * `HttpClient.retryTransient` re-runs preprocessing, so this recompresses on
1221
+ * every retry. For large bodies, compress once before calling `client.execute`.
1222
+ *
1223
+ * @stability unstable
1224
+ * @category combinators
1225
+ * @since 4.0.0
1226
+ */
1227
+ (algorithm: CompressionAlgorithm, options?: CompressionOptions | undefined): (self: HttpClientRequest) => Effect.Effect<HttpClientRequest>
1228
+ /**
1229
+ * Compresses a request body using Web `CompressionStream` and sets `Content-Encoding`.
1230
+ *
1231
+ * **Details**
1232
+ *
1233
+ * Byte-array bodies (including text, JSON, and URL-encoded bodies) are compressed
1234
+ * into a new `Uint8Array` body, preserving the content type and updating
1235
+ * `Content-Length`. The compressed body does not retain the original lazy text.
1236
+ * Stream bodies are compressed lazily and have their content length removed.
1237
+ * They still require a client runtime that supports streaming request bodies
1238
+ * (Fetch requires `duplex: "half"`, which Safari and Firefox do not support).
1239
+ *
1240
+ * Returns the original request unchanged for empty, FormData, and raw bodies,
1241
+ * bodies with a known length below `options.minSize`, or requests with any
1242
+ * existing `Content-Encoding` header, including `identity`. Unknown-length
1243
+ * streams are always compressed. The default minimum is 1024 bytes because
1244
+ * gzip can make very small bodies larger.
1245
+ *
1246
+ * Requires `CompressionStream` (available in browsers, Node 18+, Bun, and Deno).
1247
+ * There is no typed error channel: byte compression failures are defects;
1248
+ * stream failures surface when the body is sent.
1249
+ *
1250
+ * To compress every request, use
1251
+ * `HttpClient.mapRequestEffect(HttpClientRequest.compressBody("gzip"))`.
1252
+ * `HttpClient.retryTransient` re-runs preprocessing, so this recompresses on
1253
+ * every retry. For large bodies, compress once before calling `client.execute`.
1254
+ *
1255
+ * @stability unstable
1256
+ * @category combinators
1257
+ * @since 4.0.0
1258
+ */
1259
+ (
1260
+ self: HttpClientRequest,
1261
+ algorithm: CompressionAlgorithm,
1262
+ options?: CompressionOptions | undefined
1263
+ ): Effect.Effect<HttpClientRequest>
1264
+ } = dual(
1265
+ (args) => isHttpClientRequest(args[0]),
1266
+ (
1267
+ self: HttpClientRequest,
1268
+ algorithm: CompressionAlgorithm,
1269
+ options?: CompressionOptions | undefined
1270
+ ): Effect.Effect<HttpClientRequest> => {
1271
+ if (self.headers["content-encoding"] !== undefined) {
1272
+ return Effect.succeed(self)
1273
+ }
1274
+ return Effect.map(
1275
+ compression.compressBody(self.body, algorithm, options),
1276
+ (body) => body === self.body ? self : setHeader(setBody(self, body), "content-encoding", algorithm)
1277
+ )
1278
+ }
1279
+ )
1280
+
977
1281
  /**
978
1282
  * Sets a `Uint8Array` request body with an optional content type.
979
1283
  *
@@ -17,6 +17,7 @@ import * as Option from "../Option.ts"
17
17
  import { type Pipeable, pipeArguments } from "../Pipeable.ts"
18
18
  import * as Schema from "../Schema.ts"
19
19
  import type { ParseOptions } from "../SchemaAST.ts"
20
+ import type * as Socket from "../socket/Socket.ts"
20
21
  import * as Stream from "../Stream.ts"
21
22
  import type { Unify } from "../Unify.ts"
22
23
  import * as Cookies from "./Cookies.ts"
@@ -24,6 +25,7 @@ import * as Headers from "./Headers.ts"
24
25
  import * as Error from "./HttpClientError.ts"
25
26
  import * as HttpClientRequest from "./HttpClientRequest.ts"
26
27
  import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
28
+ import { getWebSource, WebSourceSymbol } from "./internal/webResponse.ts"
27
29
  import * as UrlParams from "./UrlParams.ts"
28
30
 
29
31
  /**
@@ -83,6 +85,23 @@ export interface HttpClientResponse extends HttpIncomingMessage.HttpIncomingMess
83
85
  readonly status: number
84
86
  readonly cookies: Cookies.Cookies
85
87
  readonly formData: Effect.Effect<FormData, Error.HttpClientError>
88
+ /**
89
+ * Hands over the connection of a `101 Switching Protocols` response as a
90
+ * `Socket`.
91
+ *
92
+ * **Details**
93
+ *
94
+ * Ask for an upgrade with `HttpClientRequest.upgrade`. Bytes the server
95
+ * sent after the response head come first on the reader. Releasing the
96
+ * writer's scope half-closes the connection, and releasing the reader's
97
+ * scope closes it. Closing the request's scope (see `HttpClient.withScope`)
98
+ * also closes it.
99
+ *
100
+ * Fails with a `StatusCodeError` for any other status, so a refusal can be
101
+ * read from the response body as usual. Backends that cannot hand over a
102
+ * connection, such as fetch, never produce a `101` and fail the same way.
103
+ */
104
+ readonly upgrade: Effect.Effect<Socket.Socket, Error.HttpClientError>
86
105
  }
87
106
 
88
107
  /**
@@ -95,6 +114,42 @@ export interface HttpClientResponse extends HttpIncomingMessage.HttpIncomingMess
95
114
  export const fromWeb = (request: HttpClientRequest.HttpClientRequest, source: Response): HttpClientResponse =>
96
115
  new WebHttpClientResponse(request, source)
97
116
 
117
+ /**
118
+ * Returns the original Web `Response` of a fetch-backed `HttpClientResponse`.
119
+ *
120
+ * **When to use**
121
+ *
122
+ * Use to hand a response body to a Web API without copying it, such as
123
+ * writing a fetched file to Cloudflare R2. The original body keeps runtime
124
+ * capabilities, such as workerd's known length, that a stream converted from
125
+ * `stream` does not.
126
+ *
127
+ * **Details**
128
+ *
129
+ * Returns `Some` for responses created with `fromWeb`, which includes every
130
+ * response from `FetchHttpClient`, and `None` for other backends.
131
+ *
132
+ * Calling `toWeb` hands the body over: the response is no longer aborted when
133
+ * the `HttpClientResponse` is garbage collected, so read or cancel the body
134
+ * through the returned `Response`.
135
+ *
136
+ * **Gotchas**
137
+ *
138
+ * The body can be read once. After converting, read it from the returned
139
+ * `Response`, not from the `HttpClientResponse`.
140
+ *
141
+ * After the hand-off, Effect aborts the request only when the scope of
142
+ * `HttpClient.withScope` closes. When the request streams its body, finishing
143
+ * or cancelling the returned body does not stop the upload; execute the
144
+ * request with `HttpClient.withScope` and close the scope to stop it.
145
+ *
146
+ * @stability unstable
147
+ * @category converting
148
+ * @since 4.0.0
149
+ */
150
+ export const toWeb = (self: HttpClientResponse): Option.Option<globalThis.Response> =>
151
+ Option.fromUndefinedOr(getWebSource(self))
152
+
98
153
  /**
99
154
  * Creates a decoder for a response's status, headers, and JSON body using the supplied schema.
100
155
  *
@@ -350,6 +405,10 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
350
405
  return Option.none()
351
406
  }
352
407
 
408
+ [WebSourceSymbol](): globalThis.Response {
409
+ return this.source
410
+ }
411
+
353
412
  get stream(): Stream.Stream<Uint8Array, Error.HttpClientError> {
354
413
  return this.source.body
355
414
  ? Stream.fromReadableStream({
@@ -443,6 +502,18 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
443
502
  return this.arrayBufferBody
444
503
  }
445
504
 
505
+ get upgrade(): Effect.Effect<Socket.Socket, Error.HttpClientError> {
506
+ return Effect.fail(
507
+ new Error.HttpClientError({
508
+ reason: new Error.StatusCodeError({
509
+ request: this.request,
510
+ response: this,
511
+ description: "fetch cannot hand over the connection of an HTTP upgrade"
512
+ })
513
+ })
514
+ )
515
+ }
516
+
446
517
  pipe() {
447
518
  return pipeArguments(this, arguments)
448
519
  }
@@ -28,7 +28,7 @@ import { HttpServerRequest } from "./HttpServerRequest.ts"
28
28
  import * as Request from "./HttpServerRequest.ts"
29
29
  import type { HttpServerResponse } from "./HttpServerResponse.ts"
30
30
  import * as Response from "./HttpServerResponse.ts"
31
- import * as preResponseHandler from "./internal/preResponseHandler.ts"
31
+ import * as requestState from "./internal/requestState.ts"
32
32
 
33
33
  /**
34
34
  * Runs an HTTP server effect, sends the produced response with the supplied handler, and converts failures into HTTP responses.
@@ -55,7 +55,7 @@ export const toHandled = <E, R, EH, RH>(
55
55
  return Effect.flatMapEager(causeResponse(cause), ([response, cause]) => {
56
56
  const fiber = Fiber.getCurrent()!
57
57
  reportCauseUnsafe(fiber, cause)
58
- const handler = preResponseHandler.requestPreResponseHandlers.get(request.source)
58
+ const handler = frame.preResponseHandler
59
59
  const cont = cause.reasons.length === 0 ? Effect.succeed(response) : Effect.failCause(cause)
60
60
  if (handler === undefined) {
61
61
  ;(request as any)[handledSymbol] = true
@@ -78,10 +78,11 @@ export const toHandled = <E, R, EH, RH>(
78
78
  // Writes the response, applying any registered pre-response handler first.
79
79
  // Returns an `Exit` when the write completes synchronously.
80
80
  const sendResponse = (
81
- request: HttpServerRequest,
81
+ frame: RequestFrame,
82
82
  response: HttpServerResponse
83
83
  ): Effect.Effect<HttpServerResponse, EH | HttpServerError, RH> => {
84
- const handler = preResponseHandler.requestPreResponseHandlers.get(request.source)
84
+ const request = frame.request
85
+ const handler = frame.preResponseHandler
85
86
  if (handler === undefined) {
86
87
  ;(request as any)[handledSymbol] = true
87
88
  return Effect.mapEager(
@@ -105,7 +106,7 @@ export const toHandled = <E, R, EH, RH>(
105
106
  > => {
106
107
  const request = frame.request
107
108
  const responded = Effect.matchCauseEffect(self, {
108
- onSuccess: (response) => sendResponse(request, response),
109
+ onSuccess: (response) => sendResponse(frame, response),
109
110
  onFailure: (cause) => handleCause(frame, cause)
110
111
  })
111
112
  return middleware === undefined ?
@@ -152,18 +153,19 @@ export const toHandled = <E, R, EH, RH>(
152
153
  return Scope.closeUnsafe(frame.scope, frame.cause === undefined ? exit : Exit.failCause(frame.cause))
153
154
  }, true)
154
155
 
155
- class RequestFrame {
156
+ class RequestFrame extends requestState.RequestState {
156
157
  readonly scope: Scope.Closeable
157
158
  readonly prev: Context.Context<never>
158
159
  readonly request: HttpServerRequest
159
160
  cause: Cause.Cause<E | EH | HttpServerError> | undefined
160
161
  constructor(scope: Scope.Closeable, prev: Context.Context<never>, request: HttpServerRequest) {
162
+ super()
161
163
  this.scope = scope
162
164
  this.prev = prev
163
165
  this.request = request
164
166
  }
165
167
  [contA](response: HttpServerResponse, fiber: Fiber.Fiber<unknown, unknown>) {
166
- const sent = sendResponse(this.request, response)
168
+ const sent = sendResponse(this, response)
167
169
  // Most response writes complete synchronously.
168
170
  if (effectIsExit(sent) && sent._tag === "Success") {
169
171
  fiber.setContext(this.prev)
@@ -182,7 +184,7 @@ export const toHandled = <E, R, EH, RH>(
182
184
  fiberEnterUninterruptibleUnsafe(fiber)
183
185
  const scope = Scope.makeUnsafe()
184
186
  const frame = new RequestFrame(scope, fiber.context, Context.getUnsafe(fiber.context, HttpServerRequest))
185
- fiber.setContext(Context.add(frame.prev, Scope.Scope, scope))
187
+ fiber.setContext(Context.add(Context.add(frame.prev, Scope.Scope, scope), requestState.CurrentRequestState, frame))
186
188
  // The native tracer has no backend, so its spans are unobservable.
187
189
  const currentTracer = fiber.cache.tracer
188
190
  if (
@@ -262,22 +264,20 @@ export type PreResponseHandler = (
262
264
  * @since 4.0.0
263
265
  */
264
266
  export const appendPreResponseHandler = (handler: PreResponseHandler): Effect.Effect<void, never, HttpServerRequest> =>
265
- HttpServerRequest.use((request) => {
266
- appendPreResponseHandlerUnsafe(request, handler)
267
- return Effect.void
268
- })
267
+ withPreResponseHandler(Effect.void, handler)
269
268
 
270
269
  /**
271
- * Registers a pre-response handler for the supplied HTTP server request.
270
+ * Registers a pre-response handler for the HTTP server request that owns the
271
+ * supplied fiber context. Does nothing outside a server request.
272
272
  *
273
273
  * @stability unstable
274
274
  * @category unsafe
275
275
  * @since 4.0.0
276
276
  */
277
277
  export const appendPreResponseHandlerUnsafe: (
278
- request: HttpServerRequest,
278
+ context: Context.Context<never>,
279
279
  handler: PreResponseHandler
280
- ) => void = preResponseHandler.appendPreResponseHandlerUnsafe
280
+ ) => void = requestState.appendPreResponseHandlerUnsafe
281
281
 
282
282
  /**
283
283
  * Runs an effect after registering a pre-response handler for the current HTTP server request.
@@ -304,25 +304,13 @@ export const withPreResponseHandler: {
304
304
  */
305
305
  <A, E, R>(self: Effect.Effect<A, E, R>, handler: PreResponseHandler): Effect.Effect<A, E, R | HttpServerRequest>
306
306
  } = dual<
307
- /**
308
- * Runs an effect after registering a pre-response handler for the current HTTP server request.
309
- *
310
- * @stability unstable
311
- * @category handlers
312
- * @since 4.0.0
313
- */
314
- (handler: PreResponseHandler) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | HttpServerRequest>,
315
- /**
316
- * Runs an effect after registering a pre-response handler for the current HTTP server request.
317
- *
318
- * @stability unstable
319
- * @category handlers
320
- * @since 4.0.0
321
- */
307
+ (
308
+ handler: PreResponseHandler
309
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | HttpServerRequest>,
322
310
  <A, E, R>(self: Effect.Effect<A, E, R>, handler: PreResponseHandler) => Effect.Effect<A, E, R | HttpServerRequest>
323
311
  >(2, (self, handler) =>
324
- HttpServerRequest.use((request) => {
325
- appendPreResponseHandlerUnsafe(request, handler)
312
+ Effect.withFiber((fiber) => {
313
+ appendPreResponseHandlerUnsafe(fiber.context, handler)
326
314
  return self
327
315
  }))
328
316
 
@@ -398,6 +386,9 @@ export const toWebHandler: <E>(
398
386
  *
399
387
  * **Details**
400
388
  *
389
+ * Every call to `dispose` returns the same promise, which resolves once the
390
+ * layer resources have been released.
391
+ *
401
392
  * The layer is built immediately, so the cost is paid when the handler is
402
393
  * created rather than on the first request. A layer that performs asynchronous
403
394
  * work while building may still be in progress when the first request arrives,
@@ -435,7 +426,8 @@ export const toWebHandlerLayerWith = <
435
426
  ) => Promise<globalThis.Response>
436
427
  } => {
437
428
  const scope = Scope.makeUnsafe()
438
- const dispose = () => Effect.runPromise(Scope.close(scope, Exit.void))
429
+ let disposing: Promise<void> | undefined
430
+ const dispose = () => disposing ??= Effect.runPromise(Scope.close(scope, Exit.void))
439
431
 
440
432
  let handlerCache:
441
433
  | ((request: Request, context?: Context.Context<ReqR> | undefined) => Promise<globalThis.Response>)