effect 4.0.6 → 4.1.0

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 (978) hide show
  1. package/README.md +1 -1
  2. package/dist/Arbitrary.d.ts +10 -2
  3. package/dist/Arbitrary.d.ts.map +1 -1
  4. package/dist/Arbitrary.js +2 -1
  5. package/dist/Arbitrary.js.map +1 -1
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +3 -0
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/Channel.d.ts +12 -6
  10. package/dist/Channel.d.ts.map +1 -1
  11. package/dist/Channel.js +30 -9
  12. package/dist/Channel.js.map +1 -1
  13. package/dist/Config.d.ts +7 -1
  14. package/dist/Config.d.ts.map +1 -1
  15. package/dist/Config.js.map +1 -1
  16. package/dist/Context.d.ts +18 -1
  17. package/dist/Context.d.ts.map +1 -1
  18. package/dist/Context.js +27 -8
  19. package/dist/Context.js.map +1 -1
  20. package/dist/Cron.d.ts +81 -11
  21. package/dist/Cron.d.ts.map +1 -1
  22. package/dist/Cron.js +101 -26
  23. package/dist/Cron.js.map +1 -1
  24. package/dist/Data.d.ts +54 -235
  25. package/dist/Data.d.ts.map +1 -1
  26. package/dist/Data.js.map +1 -1
  27. package/dist/Duration.d.ts +78 -0
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +123 -0
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +165 -8
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +12 -2
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Equal.d.ts.map +1 -1
  36. package/dist/Equal.js +8 -1
  37. package/dist/Equal.js.map +1 -1
  38. package/dist/Exit.d.ts +3 -3
  39. package/dist/Exit.d.ts.map +1 -1
  40. package/dist/Exit.js.map +1 -1
  41. package/dist/FileSystem.d.ts +59 -4
  42. package/dist/FileSystem.d.ts.map +1 -1
  43. package/dist/FileSystem.js +9 -2
  44. package/dist/FileSystem.js.map +1 -1
  45. package/dist/Formatter.d.ts.map +1 -1
  46. package/dist/Formatter.js +27 -13
  47. package/dist/Formatter.js.map +1 -1
  48. package/dist/Glob.d.ts +165 -0
  49. package/dist/Glob.d.ts.map +1 -0
  50. package/dist/Glob.js +127 -0
  51. package/dist/Glob.js.map +1 -0
  52. package/dist/Hash.d.ts.map +1 -1
  53. package/dist/Hash.js +4 -1
  54. package/dist/Hash.js.map +1 -1
  55. package/dist/JsonPatch.js +4 -0
  56. package/dist/JsonPatch.js.map +1 -1
  57. package/dist/JsonSchema.d.ts.map +1 -1
  58. package/dist/JsonSchema.js +13 -40
  59. package/dist/JsonSchema.js.map +1 -1
  60. package/dist/Match.d.ts +86 -0
  61. package/dist/Match.d.ts.map +1 -1
  62. package/dist/Match.js +72 -0
  63. package/dist/Match.js.map +1 -1
  64. package/dist/Metric.d.ts +3 -3
  65. package/dist/MutableList.d.ts +5 -2
  66. package/dist/MutableList.d.ts.map +1 -1
  67. package/dist/MutableList.js +7 -5
  68. package/dist/MutableList.js.map +1 -1
  69. package/dist/MutableRef.d.ts.map +1 -1
  70. package/dist/MutableRef.js +7 -0
  71. package/dist/MutableRef.js.map +1 -1
  72. package/dist/PartitionedSemaphore.d.ts +2 -1
  73. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  74. package/dist/PartitionedSemaphore.js +22 -12
  75. package/dist/PartitionedSemaphore.js.map +1 -1
  76. package/dist/Pool.d.ts +51 -0
  77. package/dist/Pool.d.ts.map +1 -1
  78. package/dist/Pool.js +136 -36
  79. package/dist/Pool.js.map +1 -1
  80. package/dist/PubSub.d.ts.map +1 -1
  81. package/dist/PubSub.js +5 -6
  82. package/dist/PubSub.js.map +1 -1
  83. package/dist/Random.d.ts.map +1 -1
  84. package/dist/Random.js +3 -3
  85. package/dist/Random.js.map +1 -1
  86. package/dist/RcMap.d.ts.map +1 -1
  87. package/dist/RcMap.js +8 -2
  88. package/dist/RcMap.js.map +1 -1
  89. package/dist/Ref.d.ts.map +1 -1
  90. package/dist/Ref.js +8 -0
  91. package/dist/Ref.js.map +1 -1
  92. package/dist/Schedule.d.ts +18 -1
  93. package/dist/Schedule.d.ts.map +1 -1
  94. package/dist/Schedule.js +8 -3
  95. package/dist/Schedule.js.map +1 -1
  96. package/dist/Schema.d.ts +690 -49
  97. package/dist/Schema.d.ts.map +1 -1
  98. package/dist/Schema.js +687 -28
  99. package/dist/Schema.js.map +1 -1
  100. package/dist/SchemaAST.d.ts +4 -2
  101. package/dist/SchemaAST.d.ts.map +1 -1
  102. package/dist/SchemaAST.js +14 -17
  103. package/dist/SchemaAST.js.map +1 -1
  104. package/dist/SchemaGetter.d.ts +6 -1
  105. package/dist/SchemaGetter.d.ts.map +1 -1
  106. package/dist/SchemaGetter.js +22 -11
  107. package/dist/SchemaGetter.js.map +1 -1
  108. package/dist/SchemaParser.d.ts.map +1 -1
  109. package/dist/SchemaParser.js +48 -22
  110. package/dist/SchemaParser.js.map +1 -1
  111. package/dist/SchemaRepresentation.d.ts +33 -10
  112. package/dist/SchemaRepresentation.d.ts.map +1 -1
  113. package/dist/SchemaRepresentation.js +39 -13
  114. package/dist/SchemaRepresentation.js.map +1 -1
  115. package/dist/SchemaTransformation.d.ts +12 -4
  116. package/dist/SchemaTransformation.d.ts.map +1 -1
  117. package/dist/SchemaTransformation.js +15 -5
  118. package/dist/SchemaTransformation.js.map +1 -1
  119. package/dist/ScopedCache.d.ts.map +1 -1
  120. package/dist/ScopedCache.js +5 -7
  121. package/dist/ScopedCache.js.map +1 -1
  122. package/dist/Semaphore.d.ts +130 -0
  123. package/dist/Semaphore.d.ts.map +1 -1
  124. package/dist/Semaphore.js +94 -35
  125. package/dist/Semaphore.js.map +1 -1
  126. package/dist/Sink.d.ts.map +1 -1
  127. package/dist/Sink.js +7 -2
  128. package/dist/Sink.js.map +1 -1
  129. package/dist/Stream.d.ts +13 -4
  130. package/dist/Stream.d.ts.map +1 -1
  131. package/dist/Stream.js +31 -10
  132. package/dist/Stream.js.map +1 -1
  133. package/dist/String.d.ts +3 -0
  134. package/dist/String.d.ts.map +1 -1
  135. package/dist/String.js +3 -0
  136. package/dist/String.js.map +1 -1
  137. package/dist/Terminal.d.ts +18 -1
  138. package/dist/Terminal.d.ts.map +1 -1
  139. package/dist/Terminal.js +1 -1
  140. package/dist/Terminal.js.map +1 -1
  141. package/dist/Tracer.d.ts +11 -1
  142. package/dist/Tracer.d.ts.map +1 -1
  143. package/dist/Tracer.js +6 -1
  144. package/dist/Tracer.js.map +1 -1
  145. package/dist/ai/AiError.d.ts +43 -116
  146. package/dist/ai/AiError.d.ts.map +1 -1
  147. package/dist/ai/AiError.js +53 -72
  148. package/dist/ai/AiError.js.map +1 -1
  149. package/dist/ai/Decision.d.ts +196 -15
  150. package/dist/ai/Decision.d.ts.map +1 -1
  151. package/dist/ai/Decision.js +130 -0
  152. package/dist/ai/Decision.js.map +1 -1
  153. package/dist/ai/DecisionModel.d.ts +54 -13
  154. package/dist/ai/DecisionModel.d.ts.map +1 -1
  155. package/dist/ai/DecisionModel.js +123 -12
  156. package/dist/ai/DecisionModel.js.map +1 -1
  157. package/dist/ai/LanguageModel.d.ts.map +1 -1
  158. package/dist/ai/LanguageModel.js +9 -0
  159. package/dist/ai/LanguageModel.js.map +1 -1
  160. package/dist/ai/McpSchema.d.ts +110 -110
  161. package/dist/ai/McpSchema.d.ts.map +1 -1
  162. package/dist/ai/McpServer.d.ts +630 -29
  163. package/dist/ai/McpServer.d.ts.map +1 -1
  164. package/dist/ai/McpServer.js +583 -131
  165. package/dist/ai/McpServer.js.map +1 -1
  166. package/dist/ai/McpTest.d.ts +130 -0
  167. package/dist/ai/McpTest.d.ts.map +1 -0
  168. package/dist/ai/McpTest.js +237 -0
  169. package/dist/ai/McpTest.js.map +1 -0
  170. package/dist/ai/Prompt.d.ts +52 -0
  171. package/dist/ai/Prompt.d.ts.map +1 -1
  172. package/dist/ai/Prompt.js +38 -0
  173. package/dist/ai/Prompt.js.map +1 -1
  174. package/dist/ai/Response.d.ts +17 -28
  175. package/dist/ai/Response.d.ts.map +1 -1
  176. package/dist/ai/Response.js +5 -10
  177. package/dist/ai/Response.js.map +1 -1
  178. package/dist/ai/Tool.d.ts +43 -1
  179. package/dist/ai/Tool.d.ts.map +1 -1
  180. package/dist/ai/Tool.js +5 -2
  181. package/dist/ai/Tool.js.map +1 -1
  182. package/dist/ai/Toolkit.d.ts.map +1 -1
  183. package/dist/ai/Toolkit.js +8 -1
  184. package/dist/ai/Toolkit.js.map +1 -1
  185. package/dist/ai/index.d.ts +5 -0
  186. package/dist/ai/index.d.ts.map +1 -1
  187. package/dist/ai/index.js +5 -0
  188. package/dist/ai/index.js.map +1 -1
  189. package/dist/ai/internal/mcpCore.js +17 -12
  190. package/dist/ai/internal/mcpCore.js.map +1 -1
  191. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
  192. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  193. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
  194. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  195. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
  196. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  197. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
  198. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  199. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
  200. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  201. package/dist/ai/internal/mcpProtocol.js +13 -0
  202. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  203. package/dist/ai/internal/mcpRuntime.js +5 -3
  204. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  205. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  206. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  207. package/dist/cli/Argument.d.ts +21 -0
  208. package/dist/cli/Argument.d.ts.map +1 -1
  209. package/dist/cli/Argument.js +7 -0
  210. package/dist/cli/Argument.js.map +1 -1
  211. package/dist/cli/CliError.d.ts +78 -0
  212. package/dist/cli/CliError.d.ts.map +1 -1
  213. package/dist/cli/CliError.js +65 -3
  214. package/dist/cli/CliError.js.map +1 -1
  215. package/dist/cli/CliOutput.d.ts +220 -7
  216. package/dist/cli/CliOutput.d.ts.map +1 -1
  217. package/dist/cli/CliOutput.js +156 -43
  218. package/dist/cli/CliOutput.js.map +1 -1
  219. package/dist/cli/Command.d.ts +47 -16
  220. package/dist/cli/Command.d.ts.map +1 -1
  221. package/dist/cli/Command.js +67 -29
  222. package/dist/cli/Command.js.map +1 -1
  223. package/dist/cli/Completions.d.ts +58 -0
  224. package/dist/cli/Completions.d.ts.map +1 -1
  225. package/dist/cli/Completions.js +49 -9
  226. package/dist/cli/Completions.js.map +1 -1
  227. package/dist/cli/Flag.d.ts +122 -0
  228. package/dist/cli/Flag.d.ts.map +1 -1
  229. package/dist/cli/Flag.js +42 -0
  230. package/dist/cli/Flag.js.map +1 -1
  231. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  232. package/dist/cli/GlobalFlag.js +15 -7
  233. package/dist/cli/GlobalFlag.js.map +1 -1
  234. package/dist/cli/HelpDoc.d.ts +15 -1
  235. package/dist/cli/HelpDoc.d.ts.map +1 -1
  236. package/dist/cli/Param.d.ts +15 -0
  237. package/dist/cli/Param.d.ts.map +1 -1
  238. package/dist/cli/Param.js +23 -2
  239. package/dist/cli/Param.js.map +1 -1
  240. package/dist/cli/Primitive.d.ts +14 -0
  241. package/dist/cli/Primitive.d.ts.map +1 -1
  242. package/dist/cli/Primitive.js +15 -1
  243. package/dist/cli/Primitive.js.map +1 -1
  244. package/dist/cli/Prompt.d.ts +1 -0
  245. package/dist/cli/Prompt.d.ts.map +1 -1
  246. package/dist/cli/Prompt.js +1 -0
  247. package/dist/cli/Prompt.js.map +1 -1
  248. package/dist/cli/TerminalCapabilities.d.ts +3 -2
  249. package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
  250. package/dist/cli/TerminalCapabilities.js +3 -1
  251. package/dist/cli/TerminalCapabilities.js.map +1 -1
  252. package/dist/cli/internal/completions/bash.js +73 -27
  253. package/dist/cli/internal/completions/bash.js.map +1 -1
  254. package/dist/cli/internal/help.d.ts.map +1 -1
  255. package/dist/cli/internal/help.js +17 -10
  256. package/dist/cli/internal/help.js.map +1 -1
  257. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  258. package/dist/cluster/ClusterWorkflowEngine.js +45 -10
  259. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  260. package/dist/cluster/MessageStorage.d.ts +23 -45
  261. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  262. package/dist/cluster/MessageStorage.js +6 -7
  263. package/dist/cluster/MessageStorage.js.map +1 -1
  264. package/dist/cluster/Sharding.d.ts.map +1 -1
  265. package/dist/cluster/Sharding.js +151 -49
  266. package/dist/cluster/Sharding.js.map +1 -1
  267. package/dist/cluster/ShardingConfig.d.ts +76 -0
  268. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  269. package/dist/cluster/ShardingConfig.js +4 -0
  270. package/dist/cluster/ShardingConfig.js.map +1 -1
  271. package/dist/cluster/SingleRunner.d.ts +3 -3
  272. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  273. package/dist/cluster/SingleRunner.js +1 -1
  274. package/dist/cluster/Snowflake.d.ts.map +1 -1
  275. package/dist/cluster/Snowflake.js +3 -7
  276. package/dist/cluster/Snowflake.js.map +1 -1
  277. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  278. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  279. package/dist/cluster/SqlMessageStorage.js +34 -7
  280. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  281. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  282. package/dist/cluster/SqlRunnerStorage.js +109 -46
  283. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  284. package/dist/cluster/internal/entityManager.js +54 -20
  285. package/dist/cluster/internal/entityManager.js.map +1 -1
  286. package/dist/crypto/Aead.d.ts +322 -0
  287. package/dist/crypto/Aead.d.ts.map +1 -0
  288. package/dist/crypto/Aead.js +331 -0
  289. package/dist/crypto/Aead.js.map +1 -0
  290. package/dist/crypto/Cipher.d.ts +235 -0
  291. package/dist/crypto/Cipher.d.ts.map +1 -0
  292. package/dist/crypto/Cipher.js +233 -0
  293. package/dist/crypto/Cipher.js.map +1 -0
  294. package/dist/crypto/CryptoError.d.ts +212 -0
  295. package/dist/crypto/CryptoError.d.ts.map +1 -0
  296. package/dist/crypto/CryptoError.js +202 -0
  297. package/dist/crypto/CryptoError.js.map +1 -0
  298. package/dist/crypto/Digest.d.ts +143 -0
  299. package/dist/crypto/Digest.d.ts.map +1 -0
  300. package/dist/crypto/Digest.js +146 -0
  301. package/dist/crypto/Digest.js.map +1 -0
  302. package/dist/crypto/Kdf.d.ts +220 -0
  303. package/dist/crypto/Kdf.d.ts.map +1 -0
  304. package/dist/crypto/Kdf.js +212 -0
  305. package/dist/crypto/Kdf.js.map +1 -0
  306. package/dist/crypto/KeyAgreement.d.ts +323 -0
  307. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  308. package/dist/crypto/KeyAgreement.js +303 -0
  309. package/dist/crypto/KeyAgreement.js.map +1 -0
  310. package/dist/crypto/KeyFormat.d.ts +309 -0
  311. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  312. package/dist/crypto/KeyFormat.js +556 -0
  313. package/dist/crypto/KeyFormat.js.map +1 -0
  314. package/dist/crypto/KeyWrap.d.ts +389 -0
  315. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  316. package/dist/crypto/KeyWrap.js +381 -0
  317. package/dist/crypto/KeyWrap.js.map +1 -0
  318. package/dist/crypto/Mac.d.ts +277 -0
  319. package/dist/crypto/Mac.d.ts.map +1 -0
  320. package/dist/crypto/Mac.js +288 -0
  321. package/dist/crypto/Mac.js.map +1 -0
  322. package/dist/crypto/SecureRandom.d.ts +340 -0
  323. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  324. package/dist/crypto/SecureRandom.js +257 -0
  325. package/dist/crypto/SecureRandom.js.map +1 -0
  326. package/dist/crypto/Signature.d.ts +448 -0
  327. package/dist/crypto/Signature.d.ts.map +1 -0
  328. package/dist/crypto/Signature.js +484 -0
  329. package/dist/crypto/Signature.js.map +1 -0
  330. package/dist/crypto/WebCrypto.d.ts +61 -0
  331. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  332. package/dist/crypto/WebCrypto.js +63 -0
  333. package/dist/crypto/WebCrypto.js.map +1 -0
  334. package/dist/crypto/index.d.ts +65 -0
  335. package/dist/crypto/index.d.ts.map +1 -0
  336. package/dist/crypto/index.js +66 -0
  337. package/dist/crypto/index.js.map +1 -0
  338. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  339. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  340. package/dist/crypto/internal/asymmetric.js +210 -0
  341. package/dist/crypto/internal/asymmetric.js.map +1 -0
  342. package/dist/crypto/internal/chacha.d.ts +46 -0
  343. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  344. package/dist/crypto/internal/chacha.js +885 -0
  345. package/dist/crypto/internal/chacha.js.map +1 -0
  346. package/dist/crypto/internal/der.d.ts +6 -0
  347. package/dist/crypto/internal/der.d.ts.map +1 -0
  348. package/dist/crypto/internal/der.js +86 -0
  349. package/dist/crypto/internal/der.js.map +1 -0
  350. package/dist/crypto/internal/digest.d.ts +2 -0
  351. package/dist/crypto/internal/digest.d.ts.map +1 -0
  352. package/dist/crypto/internal/digest.js +15 -0
  353. package/dist/crypto/internal/digest.js.map +1 -0
  354. package/dist/crypto/internal/key.d.ts +2 -0
  355. package/dist/crypto/internal/key.d.ts.map +1 -0
  356. package/dist/crypto/internal/key.js +170 -0
  357. package/dist/crypto/internal/key.js.map +1 -0
  358. package/dist/crypto/internal/md5.d.ts +39 -0
  359. package/dist/crypto/internal/md5.d.ts.map +1 -0
  360. package/dist/crypto/internal/md5.js +179 -0
  361. package/dist/crypto/internal/md5.js.map +1 -0
  362. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  363. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  364. package/dist/crypto/internal/webCrypto.js +111 -0
  365. package/dist/crypto/internal/webCrypto.js.map +1 -0
  366. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  367. package/dist/devtools/DevToolsClient.js +2 -0
  368. package/dist/devtools/DevToolsClient.js.map +1 -1
  369. package/dist/encoding/Base64.js +36 -0
  370. package/dist/encoding/Base64.js.map +1 -1
  371. package/dist/encoding/Base64Url.d.ts.map +1 -1
  372. package/dist/encoding/Base64Url.js +3 -2
  373. package/dist/encoding/Base64Url.js.map +1 -1
  374. package/dist/encoding/Csv.d.ts +608 -0
  375. package/dist/encoding/Csv.d.ts.map +1 -0
  376. package/dist/encoding/Csv.js +718 -0
  377. package/dist/encoding/Csv.js.map +1 -0
  378. package/dist/encoding/Hex.d.ts +3 -2
  379. package/dist/encoding/Hex.d.ts.map +1 -1
  380. package/dist/encoding/Hex.js +3 -2
  381. package/dist/encoding/Hex.js.map +1 -1
  382. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  383. package/dist/encoding/SchemaBinary.js +42 -4
  384. package/dist/encoding/SchemaBinary.js.map +1 -1
  385. package/dist/encoding/Sse.d.ts.map +1 -1
  386. package/dist/encoding/Sse.js +3 -3
  387. package/dist/encoding/Sse.js.map +1 -1
  388. package/dist/encoding/Toml.d.ts +17 -3
  389. package/dist/encoding/Toml.d.ts.map +1 -1
  390. package/dist/encoding/Toml.js +124 -31
  391. package/dist/encoding/Toml.js.map +1 -1
  392. package/dist/encoding/Yaml.d.ts +8 -1
  393. package/dist/encoding/Yaml.d.ts.map +1 -1
  394. package/dist/encoding/Yaml.js +54 -18
  395. package/dist/encoding/Yaml.js.map +1 -1
  396. package/dist/encoding/index.d.ts +5 -0
  397. package/dist/encoding/index.d.ts.map +1 -1
  398. package/dist/encoding/index.js +5 -0
  399. package/dist/encoding/index.js.map +1 -1
  400. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  401. package/dist/eventlog/EventJournal.js +6 -3
  402. package/dist/eventlog/EventJournal.js.map +1 -1
  403. package/dist/eventlog/EventLog.d.ts +119 -4
  404. package/dist/eventlog/EventLog.d.ts.map +1 -1
  405. package/dist/eventlog/EventLog.js +200 -12
  406. package/dist/eventlog/EventLog.js.map +1 -1
  407. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  408. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  409. package/dist/eventlog/EventLogEncryption.js +83 -64
  410. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  411. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  412. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  413. package/dist/eventlog/EventLogMessage.js +217 -1
  414. package/dist/eventlog/EventLogMessage.js.map +1 -1
  415. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  416. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  417. package/dist/eventlog/EventLogRemote.js +186 -16
  418. package/dist/eventlog/EventLogRemote.js.map +1 -1
  419. package/dist/eventlog/EventLogServer.d.ts +3 -0
  420. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  421. package/dist/eventlog/EventLogServer.js +18 -10
  422. package/dist/eventlog/EventLogServer.js.map +1 -1
  423. package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
  424. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  425. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  426. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  427. package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
  428. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  429. package/dist/eventlog/EventLogSessionAuth.js +41 -64
  430. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  431. package/dist/eventlog/EventRow.d.ts +4 -0
  432. package/dist/eventlog/EventRow.d.ts.map +1 -1
  433. package/dist/eventlog/EventRow.js +12 -2
  434. package/dist/eventlog/EventRow.js.map +1 -1
  435. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  436. package/dist/eventlog/SqlEventJournal.js +47 -27
  437. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  438. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  439. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  440. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  441. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  442. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  443. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  444. package/dist/eventlog/internal/batches.d.ts +12 -0
  445. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  446. package/dist/eventlog/internal/batches.js +26 -0
  447. package/dist/eventlog/internal/batches.js.map +1 -0
  448. package/dist/eventlog/internal/compaction.d.ts +38 -0
  449. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  450. package/dist/eventlog/internal/compaction.js +33 -0
  451. package/dist/eventlog/internal/compaction.js.map +1 -0
  452. package/dist/eventlog/internal/conflicts.d.ts +0 -1
  453. package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
  454. package/dist/eventlog/internal/conflicts.js +0 -3
  455. package/dist/eventlog/internal/conflicts.js.map +1 -1
  456. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  457. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  458. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  459. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  460. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  461. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  462. package/dist/http/Cookies.d.ts +172 -0
  463. package/dist/http/Cookies.d.ts.map +1 -1
  464. package/dist/http/Cookies.js +153 -10
  465. package/dist/http/Cookies.js.map +1 -1
  466. package/dist/http/FetchHttpClient.d.ts +26 -2
  467. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  468. package/dist/http/FetchHttpClient.js +78 -15
  469. package/dist/http/FetchHttpClient.js.map +1 -1
  470. package/dist/http/HttpClient.d.ts +502 -8
  471. package/dist/http/HttpClient.d.ts.map +1 -1
  472. package/dist/http/HttpClient.js +296 -12
  473. package/dist/http/HttpClient.js.map +1 -1
  474. package/dist/http/HttpClientError.d.ts +8 -1
  475. package/dist/http/HttpClientError.d.ts.map +1 -1
  476. package/dist/http/HttpClientError.js +37 -1
  477. package/dist/http/HttpClientError.js.map +1 -1
  478. package/dist/http/HttpClientRequest.d.ts +9 -5
  479. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  480. package/dist/http/HttpClientRequest.js +3 -4
  481. package/dist/http/HttpClientRequest.js.map +1 -1
  482. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  483. package/dist/http/HttpClientResponse.js +3 -2
  484. package/dist/http/HttpClientResponse.js.map +1 -1
  485. package/dist/http/HttpMethod.d.ts +7 -1
  486. package/dist/http/HttpMethod.d.ts.map +1 -1
  487. package/dist/http/HttpMethod.js +3 -8
  488. package/dist/http/HttpMethod.js.map +1 -1
  489. package/dist/http/HttpMiddleware.d.ts +1 -1
  490. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  491. package/dist/http/HttpMiddleware.js +14 -16
  492. package/dist/http/HttpMiddleware.js.map +1 -1
  493. package/dist/http/HttpRouter.d.ts.map +1 -1
  494. package/dist/http/HttpRouter.js +2 -1
  495. package/dist/http/HttpRouter.js.map +1 -1
  496. package/dist/http/HttpServerError.js +2 -2
  497. package/dist/http/HttpServerError.js.map +1 -1
  498. package/dist/http/HttpServerRequest.d.ts +11 -3
  499. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  500. package/dist/http/HttpServerRequest.js +77 -25
  501. package/dist/http/HttpServerRequest.js.map +1 -1
  502. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  503. package/dist/http/HttpServerResponse.js +3 -2
  504. package/dist/http/HttpServerResponse.js.map +1 -1
  505. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  506. package/dist/http/HttpStaticServer.js +48 -21
  507. package/dist/http/HttpStaticServer.js.map +1 -1
  508. package/dist/http/HttpTraceContext.d.ts +2 -1
  509. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  510. package/dist/http/HttpTraceContext.js +7 -5
  511. package/dist/http/HttpTraceContext.js.map +1 -1
  512. package/dist/http/MultipartParser/internal/contentType.js +3 -3
  513. package/dist/http/ProblemDetails.d.ts +96 -0
  514. package/dist/http/ProblemDetails.d.ts.map +1 -0
  515. package/dist/http/ProblemDetails.js +98 -0
  516. package/dist/http/ProblemDetails.js.map +1 -0
  517. package/dist/http/UrlParams.d.ts +3 -1
  518. package/dist/http/UrlParams.d.ts.map +1 -1
  519. package/dist/http/UrlParams.js +4 -2
  520. package/dist/http/UrlParams.js.map +1 -1
  521. package/dist/http/index.d.ts +5 -0
  522. package/dist/http/index.d.ts.map +1 -1
  523. package/dist/http/index.js +5 -0
  524. package/dist/http/index.js.map +1 -1
  525. package/dist/http/internal/compression.js +4 -5
  526. package/dist/http/internal/compression.js.map +1 -1
  527. package/dist/http/internal/decompression.js +6 -2
  528. package/dist/http/internal/decompression.js.map +1 -1
  529. package/dist/http/internal/httpBody.js +8 -1
  530. package/dist/http/internal/httpBody.js.map +1 -1
  531. package/dist/http/internal/urlParams.js +33 -0
  532. package/dist/http/internal/urlParams.js.map +1 -1
  533. package/dist/http-api/HttpApi.d.ts +3 -6
  534. package/dist/http-api/HttpApi.d.ts.map +1 -1
  535. package/dist/http-api/HttpApi.js +3 -6
  536. package/dist/http-api/HttpApi.js.map +1 -1
  537. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  538. package/dist/http-api/HttpApiBuilder.js +43 -13
  539. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  540. package/dist/http-api/HttpApiClient.d.ts +140 -7
  541. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  542. package/dist/http-api/HttpApiClient.js +193 -44
  543. package/dist/http-api/HttpApiClient.js.map +1 -1
  544. package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
  545. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  546. package/dist/http-api/HttpApiEndpoint.js +123 -32
  547. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  548. package/dist/http-api/HttpApiError.d.ts +185 -13
  549. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  550. package/dist/http-api/HttpApiError.js +128 -0
  551. package/dist/http-api/HttpApiError.js.map +1 -1
  552. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  553. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  554. package/dist/http-api/HttpApiMiddleware.js +85 -1
  555. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  556. package/dist/http-api/HttpApiSchema.d.ts +142 -33
  557. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  558. package/dist/http-api/HttpApiSchema.js +123 -59
  559. package/dist/http-api/HttpApiSchema.js.map +1 -1
  560. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  561. package/dist/http-api/HttpApiTest.js +3 -2
  562. package/dist/http-api/HttpApiTest.js.map +1 -1
  563. package/dist/http-api/OpenApi.d.ts.map +1 -1
  564. package/dist/http-api/OpenApi.js +25 -16
  565. package/dist/http-api/OpenApi.js.map +1 -1
  566. package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
  567. package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
  568. package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
  569. package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
  570. package/dist/index.d.ts +5 -5
  571. package/dist/index.d.ts.map +1 -1
  572. package/dist/index.js +5 -5
  573. package/dist/index.js.map +1 -1
  574. package/dist/internal/arbitrary/runner.d.ts.map +1 -1
  575. package/dist/internal/arbitrary/runner.js +120 -44
  576. package/dist/internal/arbitrary/runner.js.map +1 -1
  577. package/dist/internal/core.js +2 -0
  578. package/dist/internal/core.js.map +1 -1
  579. package/dist/internal/effect.js +46 -27
  580. package/dist/internal/effect.js.map +1 -1
  581. package/dist/internal/equal.js +14 -0
  582. package/dist/internal/equal.js.map +1 -1
  583. package/dist/internal/glob.d.ts +2 -0
  584. package/dist/internal/glob.d.ts.map +1 -0
  585. package/dist/internal/glob.js +630 -0
  586. package/dist/internal/glob.js.map +1 -0
  587. package/dist/internal/jsonSchema.d.ts +2 -0
  588. package/dist/internal/jsonSchema.d.ts.map +1 -0
  589. package/dist/internal/jsonSchema.js +28 -0
  590. package/dist/internal/jsonSchema.js.map +1 -0
  591. package/dist/internal/matcher.js +11 -1
  592. package/dist/internal/matcher.js.map +1 -1
  593. package/dist/internal/persistence.js +9 -0
  594. package/dist/internal/persistence.js.map +1 -1
  595. package/dist/internal/rcRef.js +4 -1
  596. package/dist/internal/rcRef.js.map +1 -1
  597. package/dist/internal/schema/compilerRegistry.js +4 -1
  598. package/dist/internal/schema/compilerRegistry.js.map +1 -1
  599. package/dist/internal/schema/content.d.ts +2 -0
  600. package/dist/internal/schema/content.d.ts.map +1 -0
  601. package/dist/internal/schema/content.js +13 -0
  602. package/dist/internal/schema/content.js.map +1 -0
  603. package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
  604. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  605. package/dist/internal/schema/fromRepresentation.js +2 -1
  606. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  607. package/dist/internal/schema/standardSchema.js +8 -2
  608. package/dist/internal/schema/standardSchema.js.map +1 -1
  609. package/dist/internal/schema/toCodeDocument.js +9 -6
  610. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  611. package/dist/internal/schema/toCodec.js +21 -24
  612. package/dist/internal/schema/toCodec.js.map +1 -1
  613. package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
  614. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  615. package/dist/internal/schema/toRepresentation.js +107 -129
  616. package/dist/internal/schema/toRepresentation.js.map +1 -1
  617. package/dist/internal/sql.d.ts +2 -0
  618. package/dist/internal/sql.d.ts.map +1 -0
  619. package/dist/internal/sql.js +13 -0
  620. package/dist/internal/sql.js.map +1 -0
  621. package/dist/internal/trie.js +42 -13
  622. package/dist/internal/trie.js.map +1 -1
  623. package/dist/internal/ulid.js +41 -0
  624. package/dist/internal/ulid.js.map +1 -1
  625. package/dist/internal/uuid.js +52 -8
  626. package/dist/internal/uuid.js.map +1 -1
  627. package/dist/internal/version.js +1 -1
  628. package/dist/observability/Otlp.d.ts +15 -4
  629. package/dist/observability/Otlp.d.ts.map +1 -1
  630. package/dist/observability/Otlp.js +10 -0
  631. package/dist/observability/Otlp.js.map +1 -1
  632. package/dist/observability/OtlpProxy.d.ts +154 -0
  633. package/dist/observability/OtlpProxy.d.ts.map +1 -0
  634. package/dist/observability/OtlpProxy.js +235 -0
  635. package/dist/observability/OtlpProxy.js.map +1 -0
  636. package/dist/observability/OtlpResource.d.ts +7 -0
  637. package/dist/observability/OtlpResource.d.ts.map +1 -1
  638. package/dist/observability/OtlpResource.js +11 -1
  639. package/dist/observability/OtlpResource.js.map +1 -1
  640. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  641. package/dist/observability/OtlpTracer.js +4 -0
  642. package/dist/observability/OtlpTracer.js.map +1 -1
  643. package/dist/observability/index.d.ts +5 -0
  644. package/dist/observability/index.d.ts.map +1 -1
  645. package/dist/observability/index.js +5 -0
  646. package/dist/observability/index.js.map +1 -1
  647. package/dist/persistence/CircuitBreaker.d.ts +897 -0
  648. package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
  649. package/dist/persistence/CircuitBreaker.js +1165 -0
  650. package/dist/persistence/CircuitBreaker.js.map +1 -0
  651. package/dist/persistence/KeyValueStore.d.ts +47 -2
  652. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  653. package/dist/persistence/KeyValueStore.js +129 -18
  654. package/dist/persistence/KeyValueStore.js.map +1 -1
  655. package/dist/persistence/PersistedQueue.d.ts +9 -0
  656. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  657. package/dist/persistence/PersistedQueue.js +94 -52
  658. package/dist/persistence/PersistedQueue.js.map +1 -1
  659. package/dist/persistence/Persistence.d.ts +10 -4
  660. package/dist/persistence/Persistence.d.ts.map +1 -1
  661. package/dist/persistence/Persistence.js +18 -11
  662. package/dist/persistence/Persistence.js.map +1 -1
  663. package/dist/persistence/Redis.d.ts +78 -2
  664. package/dist/persistence/Redis.d.ts.map +1 -1
  665. package/dist/persistence/Redis.js +62 -7
  666. package/dist/persistence/Redis.js.map +1 -1
  667. package/dist/persistence/index.d.ts +5 -0
  668. package/dist/persistence/index.d.ts.map +1 -1
  669. package/dist/persistence/index.js +5 -0
  670. package/dist/persistence/index.js.map +1 -1
  671. package/dist/process/ChildProcess.d.ts +237 -71
  672. package/dist/process/ChildProcess.d.ts.map +1 -1
  673. package/dist/process/ChildProcess.js +56 -158
  674. package/dist/process/ChildProcess.js.map +1 -1
  675. package/dist/process/ChildProcessSpawner.d.ts +35 -0
  676. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  677. package/dist/process/ChildProcessSpawner.js +5 -2
  678. package/dist/process/ChildProcessSpawner.js.map +1 -1
  679. package/dist/process/CommandLine.d.ts +294 -0
  680. package/dist/process/CommandLine.d.ts.map +1 -0
  681. package/dist/process/CommandLine.js +481 -0
  682. package/dist/process/CommandLine.js.map +1 -0
  683. package/dist/process/index.d.ts +5 -0
  684. package/dist/process/index.d.ts.map +1 -1
  685. package/dist/process/index.js +5 -0
  686. package/dist/process/index.js.map +1 -1
  687. package/dist/reactivity/AsyncResult.d.ts +1 -1
  688. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  689. package/dist/reactivity/Atom.d.ts +2 -1
  690. package/dist/reactivity/Atom.d.ts.map +1 -1
  691. package/dist/reactivity/Atom.js +3 -4
  692. package/dist/reactivity/Atom.js.map +1 -1
  693. package/dist/reactivity/AtomRegistry.js.map +1 -1
  694. package/dist/rpc/RpcClient.d.ts +16 -1
  695. package/dist/rpc/RpcClient.d.ts.map +1 -1
  696. package/dist/rpc/RpcClient.js +59 -24
  697. package/dist/rpc/RpcClient.js.map +1 -1
  698. package/dist/rpc/RpcMessage.d.ts +10 -1
  699. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  700. package/dist/rpc/RpcMessage.js +1 -0
  701. package/dist/rpc/RpcMessage.js.map +1 -1
  702. package/dist/rpc/RpcSerialization.d.ts +14 -0
  703. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  704. package/dist/rpc/RpcSerialization.js +26 -8
  705. package/dist/rpc/RpcSerialization.js.map +1 -1
  706. package/dist/rpc/RpcServer.d.ts +31 -0
  707. package/dist/rpc/RpcServer.d.ts.map +1 -1
  708. package/dist/rpc/RpcServer.js +139 -56
  709. package/dist/rpc/RpcServer.js.map +1 -1
  710. package/dist/rpc/RpcTest.d.ts +1 -0
  711. package/dist/rpc/RpcTest.d.ts.map +1 -1
  712. package/dist/rpc/RpcTest.js +1 -0
  713. package/dist/rpc/RpcTest.js.map +1 -1
  714. package/dist/schema/Model.d.ts +14 -0
  715. package/dist/schema/Model.d.ts.map +1 -1
  716. package/dist/schema/Model.js +18 -3
  717. package/dist/schema/Model.js.map +1 -1
  718. package/dist/sql/Migrator.d.ts +2 -20
  719. package/dist/sql/Migrator.d.ts.map +1 -1
  720. package/dist/sql/Migrator.js +13 -55
  721. package/dist/sql/Migrator.js.map +1 -1
  722. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  723. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  724. package/dist/sql/MigratorFileSystem.js +57 -0
  725. package/dist/sql/MigratorFileSystem.js.map +1 -0
  726. package/dist/sql/SqlClient.d.ts +9 -4
  727. package/dist/sql/SqlClient.d.ts.map +1 -1
  728. package/dist/sql/SqlClient.js +13 -10
  729. package/dist/sql/SqlClient.js.map +1 -1
  730. package/dist/sql/SqlResolver.d.ts +4 -0
  731. package/dist/sql/SqlResolver.d.ts.map +1 -1
  732. package/dist/sql/SqlResolver.js +18 -4
  733. package/dist/sql/SqlResolver.js.map +1 -1
  734. package/dist/sql/Statement.d.ts +27 -6
  735. package/dist/sql/Statement.d.ts.map +1 -1
  736. package/dist/sql/Statement.js +21 -15
  737. package/dist/sql/Statement.js.map +1 -1
  738. package/dist/sql/index.js +1 -1
  739. package/dist/testing/index.d.ts +0 -5
  740. package/dist/testing/index.d.ts.map +1 -1
  741. package/dist/testing/index.js +0 -5
  742. package/dist/testing/index.js.map +1 -1
  743. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  744. package/dist/workflow/DurableDeferred.js +21 -2
  745. package/dist/workflow/DurableDeferred.js.map +1 -1
  746. package/dist/workflow/internal/crypto.js +9 -8
  747. package/dist/workflow/internal/crypto.js.map +1 -1
  748. package/package.json +3 -1
  749. package/src/Arbitrary.ts +10 -2
  750. package/src/BigDecimal.ts +3 -0
  751. package/src/Channel.ts +64 -29
  752. package/src/Config.ts +7 -1
  753. package/src/Context.ts +34 -10
  754. package/src/Cron.ts +178 -29
  755. package/src/Data.ts +60 -265
  756. package/src/Duration.ts +140 -0
  757. package/src/Effect.ts +915 -86
  758. package/src/Equal.ts +8 -1
  759. package/src/Exit.ts +3 -3
  760. package/src/FileSystem.ts +65 -4
  761. package/src/Formatter.ts +28 -13
  762. package/src/Glob.ts +205 -0
  763. package/src/Hash.ts +4 -1
  764. package/src/JsonPatch.ts +4 -0
  765. package/src/JsonSchema.ts +12 -40
  766. package/src/Match.ts +127 -0
  767. package/src/Metric.ts +3 -3
  768. package/src/MutableList.ts +7 -5
  769. package/src/MutableRef.ts +8 -1
  770. package/src/PartitionedSemaphore.ts +24 -13
  771. package/src/Pool.ts +182 -52
  772. package/src/PubSub.ts +5 -6
  773. package/src/Random.ts +3 -3
  774. package/src/RcMap.ts +5 -1
  775. package/src/Ref.ts +8 -0
  776. package/src/Schedule.ts +27 -4
  777. package/src/Schema.ts +1237 -87
  778. package/src/SchemaAST.ts +20 -20
  779. package/src/SchemaGetter.ts +27 -11
  780. package/src/SchemaParser.ts +51 -18
  781. package/src/SchemaRepresentation.ts +50 -34
  782. package/src/SchemaTransformation.ts +17 -5
  783. package/src/ScopedCache.ts +5 -9
  784. package/src/Semaphore.ts +208 -40
  785. package/src/Sink.ts +15 -2
  786. package/src/Stream.ts +48 -22
  787. package/src/String.ts +3 -0
  788. package/src/Terminal.ts +19 -1
  789. package/src/Tracer.ts +15 -1
  790. package/src/ai/AiError.ts +56 -80
  791. package/src/ai/Decision.ts +257 -6
  792. package/src/ai/DecisionModel.ts +171 -28
  793. package/src/ai/LanguageModel.ts +9 -0
  794. package/src/ai/McpServer.ts +1283 -299
  795. package/src/ai/McpTest.ts +380 -0
  796. package/src/ai/Prompt.ts +65 -0
  797. package/src/ai/Response.ts +36 -31
  798. package/src/ai/Tool.ts +65 -10
  799. package/src/ai/Toolkit.ts +4 -1
  800. package/src/ai/index.ts +6 -0
  801. package/src/ai/internal/mcpCore.ts +78 -44
  802. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
  803. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
  804. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
  805. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
  806. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
  807. package/src/ai/internal/mcpProtocol.ts +29 -0
  808. package/src/ai/internal/mcpRuntime.ts +9 -5
  809. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  810. package/src/cli/Argument.ts +21 -0
  811. package/src/cli/CliError.ts +90 -3
  812. package/src/cli/CliOutput.ts +300 -55
  813. package/src/cli/Command.ts +76 -41
  814. package/src/cli/Completions.ts +51 -0
  815. package/src/cli/Flag.ts +122 -0
  816. package/src/cli/GlobalFlag.ts +6 -7
  817. package/src/cli/HelpDoc.ts +18 -1
  818. package/src/cli/Param.ts +35 -6
  819. package/src/cli/Primitive.ts +16 -1
  820. package/src/cli/Prompt.ts +1 -0
  821. package/src/cli/TerminalCapabilities.ts +6 -3
  822. package/src/cli/internal/completions/bash.ts +79 -29
  823. package/src/cli/internal/help.ts +21 -9
  824. package/src/cluster/ClusterWorkflowEngine.ts +46 -16
  825. package/src/cluster/MessageStorage.ts +19 -14
  826. package/src/cluster/Sharding.ts +176 -47
  827. package/src/cluster/ShardingConfig.ts +43 -0
  828. package/src/cluster/SingleRunner.ts +3 -3
  829. package/src/cluster/Snowflake.ts +3 -7
  830. package/src/cluster/SqlMessageStorage.ts +49 -17
  831. package/src/cluster/SqlRunnerStorage.ts +143 -70
  832. package/src/cluster/internal/entityManager.ts +75 -22
  833. package/src/crypto/Aead.ts +517 -0
  834. package/src/crypto/Cipher.ts +326 -0
  835. package/src/crypto/CryptoError.ts +242 -0
  836. package/src/crypto/Digest.ts +167 -0
  837. package/src/crypto/Kdf.ts +315 -0
  838. package/src/crypto/KeyAgreement.ts +489 -0
  839. package/src/crypto/KeyFormat.ts +712 -0
  840. package/src/crypto/KeyWrap.ts +639 -0
  841. package/src/crypto/Mac.ts +386 -0
  842. package/src/crypto/SecureRandom.ts +459 -0
  843. package/src/crypto/Signature.ts +673 -0
  844. package/src/crypto/WebCrypto.ts +64 -0
  845. package/src/crypto/index.ts +78 -0
  846. package/src/crypto/internal/asymmetric.ts +329 -0
  847. package/src/crypto/internal/chacha.ts +1088 -0
  848. package/src/crypto/internal/der.ts +110 -0
  849. package/src/crypto/internal/digest.ts +16 -0
  850. package/src/crypto/internal/key.ts +235 -0
  851. package/src/crypto/internal/md5.ts +170 -0
  852. package/src/crypto/internal/webCrypto.ts +150 -0
  853. package/src/devtools/DevToolsClient.ts +2 -0
  854. package/src/encoding/Base64.ts +38 -0
  855. package/src/encoding/Base64Url.ts +5 -2
  856. package/src/encoding/Csv.ts +1298 -0
  857. package/src/encoding/Hex.ts +3 -2
  858. package/src/encoding/SchemaBinary.ts +40 -4
  859. package/src/encoding/Sse.ts +4 -3
  860. package/src/encoding/Toml.ts +117 -35
  861. package/src/encoding/Yaml.ts +61 -18
  862. package/src/encoding/index.ts +6 -0
  863. package/src/eventlog/EventJournal.ts +4 -3
  864. package/src/eventlog/EventLog.ts +340 -15
  865. package/src/eventlog/EventLogEncryption.ts +118 -110
  866. package/src/eventlog/EventLogMessage.ts +273 -1
  867. package/src/eventlog/EventLogRemote.ts +367 -23
  868. package/src/eventlog/EventLogServer.ts +23 -8
  869. package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
  870. package/src/eventlog/EventLogSessionAuth.ts +56 -70
  871. package/src/eventlog/EventRow.ts +12 -3
  872. package/src/eventlog/SqlEventJournal.ts +68 -45
  873. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  874. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  875. package/src/eventlog/internal/batches.ts +30 -0
  876. package/src/eventlog/internal/compaction.ts +64 -0
  877. package/src/eventlog/internal/conflicts.ts +0 -4
  878. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  879. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  880. package/src/http/Cookies.ts +291 -12
  881. package/src/http/FetchHttpClient.ts +88 -16
  882. package/src/http/HttpClient.ts +636 -29
  883. package/src/http/HttpClientError.ts +35 -1
  884. package/src/http/HttpClientRequest.ts +21 -10
  885. package/src/http/HttpClientResponse.ts +3 -2
  886. package/src/http/HttpMethod.ts +10 -2
  887. package/src/http/HttpMiddleware.ts +15 -18
  888. package/src/http/HttpRouter.ts +2 -1
  889. package/src/http/HttpServerError.ts +2 -2
  890. package/src/http/HttpServerRequest.ts +101 -30
  891. package/src/http/HttpServerResponse.ts +3 -2
  892. package/src/http/HttpStaticServer.ts +51 -22
  893. package/src/http/HttpTraceContext.ts +7 -4
  894. package/src/http/MultipartParser/internal/contentType.ts +3 -3
  895. package/src/http/ProblemDetails.ts +149 -0
  896. package/src/http/UrlParams.ts +6 -1
  897. package/src/http/index.ts +6 -0
  898. package/src/http/internal/compression.ts +4 -5
  899. package/src/http/internal/decompression.ts +10 -4
  900. package/src/http/internal/httpBody.ts +10 -2
  901. package/src/http/internal/urlParams.ts +37 -0
  902. package/src/http-api/HttpApi.ts +3 -6
  903. package/src/http-api/HttpApiBuilder.ts +61 -19
  904. package/src/http-api/HttpApiClient.ts +284 -72
  905. package/src/http-api/HttpApiEndpoint.ts +135 -35
  906. package/src/http-api/HttpApiError.ts +250 -0
  907. package/src/http-api/HttpApiMiddleware.ts +95 -1
  908. package/src/http-api/HttpApiSchema.ts +236 -52
  909. package/src/http-api/HttpApiTest.ts +3 -2
  910. package/src/http-api/OpenApi.ts +20 -17
  911. package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
  912. package/src/index.ts +6 -6
  913. package/src/internal/arbitrary/runner.ts +133 -36
  914. package/src/internal/core.ts +2 -0
  915. package/src/internal/effect.ts +58 -34
  916. package/src/internal/equal.ts +17 -0
  917. package/src/internal/glob.ts +736 -0
  918. package/src/internal/jsonSchema.ts +27 -0
  919. package/src/internal/matcher.ts +18 -1
  920. package/src/internal/persistence.ts +11 -0
  921. package/src/internal/rcRef.ts +4 -1
  922. package/src/internal/schema/compilerRegistry.ts +6 -1
  923. package/src/internal/schema/content.ts +18 -0
  924. package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
  925. package/src/internal/schema/fromRepresentation.ts +2 -1
  926. package/src/internal/schema/standardSchema.ts +2 -2
  927. package/src/internal/schema/toCodeDocument.ts +11 -7
  928. package/src/internal/schema/toCodec.ts +26 -22
  929. package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
  930. package/src/internal/schema/toRepresentation.ts +122 -140
  931. package/src/internal/sql.ts +14 -0
  932. package/src/internal/trie.ts +43 -14
  933. package/src/internal/ulid.ts +44 -0
  934. package/src/internal/uuid.ts +57 -16
  935. package/src/internal/version.ts +1 -1
  936. package/src/observability/Otlp.ts +21 -4
  937. package/src/observability/OtlpProxy.ts +314 -0
  938. package/src/observability/OtlpResource.ts +9 -1
  939. package/src/observability/OtlpTracer.ts +4 -0
  940. package/src/observability/index.ts +6 -0
  941. package/src/persistence/CircuitBreaker.ts +1678 -0
  942. package/src/persistence/KeyValueStore.ts +219 -22
  943. package/src/persistence/PersistedQueue.ts +128 -59
  944. package/src/persistence/Persistence.ts +20 -13
  945. package/src/persistence/Redis.ts +129 -8
  946. package/src/persistence/index.ts +6 -0
  947. package/src/process/ChildProcess.ts +285 -264
  948. package/src/process/ChildProcessSpawner.ts +46 -2
  949. package/src/process/CommandLine.ts +630 -0
  950. package/src/process/index.ts +6 -0
  951. package/src/reactivity/AsyncResult.ts +1 -1
  952. package/src/reactivity/Atom.ts +5 -5
  953. package/src/reactivity/AtomRegistry.ts +1 -1
  954. package/src/rpc/RpcClient.ts +75 -36
  955. package/src/rpc/RpcMessage.ts +10 -1
  956. package/src/rpc/RpcSerialization.ts +35 -9
  957. package/src/rpc/RpcServer.ts +176 -63
  958. package/src/rpc/RpcTest.ts +3 -0
  959. package/src/schema/Model.ts +26 -3
  960. package/src/sql/Migrator.ts +15 -69
  961. package/src/sql/MigratorFileSystem.ts +71 -0
  962. package/src/sql/SqlClient.ts +13 -20
  963. package/src/sql/SqlResolver.ts +23 -9
  964. package/src/sql/Statement.ts +38 -9
  965. package/src/sql/index.ts +1 -1
  966. package/src/testing/index.ts +0 -6
  967. package/src/workflow/DurableDeferred.ts +23 -6
  968. package/src/workflow/internal/crypto.ts +15 -11
  969. package/dist/Crypto.d.ts +0 -244
  970. package/dist/Crypto.d.ts.map +0 -1
  971. package/dist/Crypto.js +0 -139
  972. package/dist/Crypto.js.map +0 -1
  973. package/dist/testing/TestCrypto.d.ts +0 -73
  974. package/dist/testing/TestCrypto.d.ts.map +0 -1
  975. package/dist/testing/TestCrypto.js +0 -87
  976. package/dist/testing/TestCrypto.js.map +0 -1
  977. package/src/Crypto.ts +0 -347
  978. package/src/testing/TestCrypto.ts +0 -94
@@ -92,6 +92,15 @@ const formatMessage = (reason: string, description: string | undefined, info: st
92
92
  const formatMethodAndUrl = (request: HttpClientRequest.HttpClientRequest) =>
93
93
  `${request.method} ${UrlParams.redactUrl(request.url)}`
94
94
 
95
+ // Serialized reasons carry the same request and response information as the
96
+ // message, so headers, URL parameters and bodies stay out of logs. The full
97
+ // objects remain available through the `request` and `response` properties.
98
+ const reasonToJSON = (reason: HttpClientErrorReason, json: unknown) => ({
99
+ ...(json as object),
100
+ request: { _id: "HttpClientRequest", method: reason.request.method, url: UrlParams.redactUrl(reason.request.url) },
101
+ ...("response" in reason ? { response: { _id: "HttpClientResponse", status: reason.response.status } } : undefined)
102
+ })
103
+
95
104
  /**
96
105
  * Error describing transport-level failures that occur while sending an HTTP request.
97
106
  *
@@ -123,6 +132,10 @@ export class TransportError extends Data.TaggedError("TransportError")<{
123
132
  override get message() {
124
133
  return formatMessage(formatReason(this._tag), this.description, this.methodAndUrl)
125
134
  }
135
+
136
+ override toJSON(): unknown {
137
+ return reasonToJSON(this, super.toJSON())
138
+ }
126
139
  }
127
140
 
128
141
  /**
@@ -156,6 +169,10 @@ export class EncodeError extends Data.TaggedError("EncodeError")<{
156
169
  override get message() {
157
170
  return formatMessage(formatReason(this._tag), this.description, this.methodAndUrl)
158
171
  }
172
+
173
+ override toJSON(): unknown {
174
+ return reasonToJSON(this, super.toJSON())
175
+ }
159
176
  }
160
177
 
161
178
  /**
@@ -189,6 +206,10 @@ export class InvalidUrlError extends Data.TaggedError("InvalidUrlError")<{
189
206
  override get message() {
190
207
  return formatMessage(formatReason(this._tag), this.description, this.methodAndUrl)
191
208
  }
209
+
210
+ override toJSON(): unknown {
211
+ return reasonToJSON(this, super.toJSON())
212
+ }
192
213
  }
193
214
 
194
215
  /**
@@ -224,10 +245,15 @@ export class StatusCodeError extends Data.TaggedError("StatusCodeError")<{
224
245
  const info = `${this.response.status} ${this.methodAndUrl}`
225
246
  return formatMessage(formatReason(this._tag), this.description, info)
226
247
  }
248
+
249
+ override toJSON(): unknown {
250
+ return reasonToJSON(this, super.toJSON())
251
+ }
227
252
  }
228
253
 
229
254
  /**
230
- * Response error for failures while decoding an HTTP response body.
255
+ * Response error for failures while decoding an HTTP response, including a
256
+ * response with an undeclared status.
231
257
  *
232
258
  * @stability unstable
233
259
  * @category errors
@@ -259,6 +285,10 @@ export class DecodeError extends Data.TaggedError("DecodeError")<{
259
285
  const info = `${this.response.status} ${this.methodAndUrl}`
260
286
  return formatMessage(formatReason(this._tag), this.description, info)
261
287
  }
288
+
289
+ override toJSON(): unknown {
290
+ return reasonToJSON(this, super.toJSON())
291
+ }
262
292
  }
263
293
 
264
294
  /**
@@ -294,6 +324,10 @@ export class EmptyBodyError extends Data.TaggedError("EmptyBodyError")<{
294
324
  const info = `${this.response.status} ${this.methodAndUrl}`
295
325
  return formatMessage(formatReason(this._tag), this.description, info)
296
326
  }
327
+
328
+ override toJSON(): unknown {
329
+ return reasonToJSON(this, super.toJSON())
330
+ }
297
331
  }
298
332
 
299
333
  /**
@@ -56,7 +56,11 @@ export const isHttpClientRequest = (u: unknown): u is HttpClientRequest => hasPr
56
56
  */
57
57
  export interface HttpClientRequest extends Inspectable.Inspectable, Pipeable {
58
58
  readonly [TypeId]: typeof TypeId
59
- readonly method: HttpMethod
59
+ /**
60
+ * The request method, which may be a method outside the known `HttpMethod`
61
+ * literals when the request was converted from a Web or server request.
62
+ */
63
+ readonly method: string
60
64
  readonly url: string
61
65
  readonly urlParams: UrlParams.UrlParams
62
66
  readonly hash: Option.Option<string>
@@ -126,7 +130,7 @@ const Proto = {
126
130
  * @since 4.0.0
127
131
  */
128
132
  export function makeWith(
129
- method: HttpMethod,
133
+ method: string,
130
134
  url: string,
131
135
  urlParams: UrlParams.Input,
132
136
  hash: Option.Option<string>,
@@ -1171,7 +1175,7 @@ export interface CompressionOptions {
1171
1175
  * `Content-Length`. The compressed body does not retain the original lazy text.
1172
1176
  * Stream bodies are compressed lazily and have their content length removed.
1173
1177
  * They still require a client runtime that supports streaming request bodies
1174
- * (Fetch requires `duplex: "half"`, which Safari and Firefox do not support).
1178
+ * (stable Safari and Firefox do not; see `FetchHttpClient.StreamBodyFallback`).
1175
1179
  *
1176
1180
  * Returns the original request unchanged for empty, FormData, and raw bodies,
1177
1181
  * bodies with a known length below `options.minSize`, or requests with any
@@ -1203,7 +1207,7 @@ export const compressBody: {
1203
1207
  * `Content-Length`. The compressed body does not retain the original lazy text.
1204
1208
  * Stream bodies are compressed lazily and have their content length removed.
1205
1209
  * They still require a client runtime that supports streaming request bodies
1206
- * (Fetch requires `duplex: "half"`, which Safari and Firefox do not support).
1210
+ * (stable Safari and Firefox do not; see `FetchHttpClient.StreamBodyFallback`).
1207
1211
  *
1208
1212
  * Returns the original request unchanged for empty, FormData, and raw bodies,
1209
1213
  * bodies with a known length below `options.minSize`, or requests with any
@@ -1235,7 +1239,7 @@ export const compressBody: {
1235
1239
  * `Content-Length`. The compressed body does not retain the original lazy text.
1236
1240
  * Stream bodies are compressed lazily and have their content length removed.
1237
1241
  * They still require a client runtime that supports streaming request bodies
1238
- * (Fetch requires `duplex: "half"`, which Safari and Firefox do not support).
1242
+ * (stable Safari and Firefox do not; see `FetchHttpClient.StreamBodyFallback`).
1239
1243
  *
1240
1244
  * Returns the original request unchanged for empty, FormData, and raw bodies,
1241
1245
  * bodies with a known length below `options.minSize`, or requests with any
@@ -1273,7 +1277,15 @@ export const compressBody: {
1273
1277
  }
1274
1278
  return Effect.map(
1275
1279
  compression.compressBody(self.body, algorithm, options),
1276
- (body) => body === self.body ? self : setHeader(setBody(self, body), "content-encoding", algorithm)
1280
+ (body) =>
1281
+ body === self.body ? self : makeWith(
1282
+ self.method,
1283
+ self.url,
1284
+ self.urlParams,
1285
+ self.hash,
1286
+ Headers.set(bodyInternal.updateContentLength(self.headers, body), "content-encoding", algorithm),
1287
+ body
1288
+ )
1277
1289
  )
1278
1290
  }
1279
1291
  )
@@ -1686,16 +1698,15 @@ export function toUrl(self: HttpClientRequest): Option.Option<URL> {
1686
1698
  * @since 4.0.0
1687
1699
  */
1688
1700
  export const fromWeb = (request: globalThis.Request): HttpClientRequest => {
1689
- const method = request.method.toUpperCase() as HttpMethod
1690
- return modify(empty, {
1691
- method,
1701
+ const method = request.method.toUpperCase()
1702
+ return modify(makeWith(method, "", UrlParams.empty, Option.none(), Headers.empty, HttpBody.empty), {
1692
1703
  url: new URL(request.url),
1693
1704
  headers: request.headers,
1694
1705
  body: fromWebBody(request, method)
1695
1706
  })
1696
1707
  }
1697
1708
 
1698
- const fromWebBody = (request: globalThis.Request, method: HttpMethod): HttpBody.HttpBody => {
1709
+ const fromWebBody = (request: globalThis.Request, method: string): HttpBody.HttpBody => {
1699
1710
  if (!hasBody(method) || request.body === null) {
1700
1711
  return HttpBody.empty
1701
1712
  }
@@ -25,6 +25,7 @@ import * as Headers from "./Headers.ts"
25
25
  import * as Error from "./HttpClientError.ts"
26
26
  import * as HttpClientRequest from "./HttpClientRequest.ts"
27
27
  import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
28
+ import * as internalUrlParams from "./internal/urlParams.ts"
28
29
  import { getWebSource, WebSourceSymbol } from "./internal/webResponse.ts"
29
30
  import * as UrlParams from "./UrlParams.ts"
30
31
 
@@ -454,9 +455,9 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
454
455
  }
455
456
 
456
457
  get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, Error.HttpClientError> {
457
- return Effect.flatMap(this.text, (_) =>
458
+ return Effect.flatMap(this.arrayBuffer, (bytes) =>
458
459
  Effect.try({
459
- try: () => UrlParams.fromInput(new URLSearchParams(_)),
460
+ try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
460
461
  catch: (cause) =>
461
462
  new Error.HttpClientError({
462
463
  reason: new Error.DecodeError({
@@ -57,12 +57,20 @@ export declare namespace HttpMethod {
57
57
  /**
58
58
  * Returns `true` when a method can carry a request body and narrows it to `HttpMethod.WithBody`.
59
59
  *
60
+ * **Details**
61
+ *
62
+ * Methods outside the known `HttpMethod` literals, such as a received
63
+ * `"PROPFIND"`, are treated as capable of carrying a body but are not narrowed.
64
+ *
60
65
  * @stability unstable
61
66
  * @category guards
62
67
  * @since 4.0.0
63
68
  */
64
- export const hasBody = (method: HttpMethod): method is HttpMethod.WithBody =>
65
- method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE"
69
+ export function hasBody(method: HttpMethod): method is HttpMethod.WithBody
70
+ export function hasBody(method: string): boolean
71
+ export function hasBody(method: string): boolean {
72
+ return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE"
73
+ }
66
74
 
67
75
  /**
68
76
  * Provides a readonly set containing every supported `HttpMethod` literal.
@@ -44,6 +44,7 @@ import * as decompressionInternal from "./internal/decompression.ts"
44
44
  import * as bodyInternal from "./internal/httpBody.ts"
45
45
  import { appendPreResponseHandlerUnsafe, CurrentRequestState } from "./internal/requestState.ts"
46
46
  import * as tracing from "./internal/tracing.ts"
47
+ import * as internalUrlParams from "./internal/urlParams.ts"
47
48
  import * as UrlParams from "./UrlParams.ts"
48
49
 
49
50
  /**
@@ -135,19 +136,6 @@ export declare namespace HttpMiddleware {
135
136
  */
136
137
  export const make = <M extends HttpMiddleware>(middleware: M): M => middleware
137
138
 
138
- const stripSearchAndHash = (url: string): string => {
139
- const queryIndex = url.indexOf("?")
140
- const hashIndex = url.indexOf("#")
141
-
142
- if (queryIndex === -1) {
143
- return hashIndex === -1 ? url : url.slice(0, hashIndex)
144
- }
145
- if (hashIndex === -1) {
146
- return url.slice(0, queryIndex)
147
- }
148
- return url.slice(0, Math.min(queryIndex, hashIndex))
149
- }
150
-
151
139
  /**
152
140
  * Runs an effect with HTTP response logging disabled for the current server request.
153
141
  *
@@ -232,7 +220,7 @@ export const logger: <E, R>(
232
220
  Effect.withFiber((fiber) => {
233
221
  const request = Context.getUnsafe(fiber.context, HttpServerRequest)
234
222
  const state = Context.getOrUndefined(fiber.context, CurrentRequestState)
235
- const path = stripSearchAndHash(request.url)
223
+ const path = internalUrlParams.stripSearchAndHash(request.url)
236
224
  return Effect.withLogSpan(
237
225
  Effect.flatMap(Effect.exit(httpApp), (exit) => {
238
226
  if (state?.loggerDisabled) {
@@ -278,12 +266,19 @@ export const isTracerDisabledUnsafe = (
278
266
 
279
267
  // OpenTelemetry requires failed server spans for 5xx responses.
280
268
  const responseSpanExit = (
269
+ fiber: Fiber.Fiber<unknown, unknown>,
281
270
  request: HttpServerRequest,
282
271
  response: HttpServerResponse
283
272
  ): Exit.Exit<HttpServerResponse, HttpServerError> => {
284
273
  if (!(response.status >= 500 && response.status < 600)) {
285
274
  return Exit.succeed(response)
286
275
  }
276
+ // The message is path-only, but exporters can still read `error.request.url`
277
+ // after the request-scoped redacted names are gone.
278
+ const url = UrlParams.redactUrl(request.url, fiber.getRef(UrlParams.CurrentRedactedNames))
279
+ if (url !== request.url) {
280
+ request = request.modify({ url })
281
+ }
287
282
  const stackTraceLimit = getStackTraceLimit()
288
283
  setStackTraceLimit(0)
289
284
  try {
@@ -319,7 +314,7 @@ export const tracer: <E, R>(
319
314
  fiber.setContext(prevServices)
320
315
  const endTime = fiber.getRef(Clock).currentTimeNanosUnsafe()
321
316
  if (Exit.isSuccess(exit) && (!span.sampled || fiber.getRef(Tracer) === nativeTracer)) {
322
- span.end(endTime, responseSpanExit(request, exit.value))
317
+ span.end(endTime, responseSpanExit(fiber, request, exit.value))
323
318
  return undefined
324
319
  }
325
320
  const redactedHeaderNames = fiber.getRef(Headers.CurrentRedactedNames)
@@ -333,10 +328,10 @@ export const tracer: <E, R>(
333
328
  // OpenTelemetry only treats 5xx responses as server span errors; interrupts still fail the span.
334
329
  spanExit = Option.isSome(cause) && (response.status >= 500 || Cause.hasInterrupts(cause.value))
335
330
  ? Exit.failCause(cause.value)
336
- : responseSpanExit(request, response)
331
+ : responseSpanExit(fiber, request, response)
337
332
  } else {
338
333
  response = exit.value
339
- spanExit = responseSpanExit(request, response)
334
+ spanExit = responseSpanExit(fiber, request, response)
340
335
  }
341
336
  if (span.sampled) {
342
337
  span.attribute("http.request.method", request.method)
@@ -434,7 +429,9 @@ export interface TrustedProxyOptions {
434
429
  * @category proxying
435
430
  * @since 4.0.0
436
431
  */
437
- export const xForwardedHeaders = (options: TrustedProxyOptions): HttpMiddleware => {
432
+ export const xForwardedHeaders = (options: TrustedProxyOptions): <E, R>(
433
+ httpApp: Effect.Effect<HttpServerResponse, E, HttpServerRequest | R>
434
+ ) => Effect.Effect<HttpServerResponse, E, HttpServerRequest | R> => {
438
435
  const { trustedProxies } = options
439
436
  const isTrusted: Predicate<NetAddress.IpAddress> = typeof trustedProxies === "function"
440
437
  ? trustedProxies
@@ -284,7 +284,8 @@ function sliceRequestUrl(
284
284
  }
285
285
  while (index < url.length && !"/?;#".includes(url[index])) index++
286
286
  }
287
- return request.modify({ url: index < url.length ? url.slice(index) : "/" })
287
+ const rest = url.slice(index)
288
+ return request.modify({ url: rest.startsWith("/") ? rest : "/" + rest })
288
289
  }
289
290
 
290
291
  function countSegments(prefix: string, ignoreDuplicateSlashes: boolean) {
@@ -23,7 +23,7 @@ import { hasProperty } from "../Predicate.ts"
23
23
  import type * as Request from "./HttpServerRequest.ts"
24
24
  import * as Respondable from "./HttpServerRespondable.ts"
25
25
  import * as Response from "./HttpServerResponse.ts"
26
- import * as UrlParams from "./UrlParams.ts"
26
+ import * as internalUrlParams from "./internal/urlParams.ts"
27
27
 
28
28
  const TypeId = "~effect/http/HttpServerError"
29
29
 
@@ -280,7 +280,7 @@ export class ClientAbort extends Context.Service<ClientAbort, true>()("effect/ht
280
280
  }
281
281
 
282
282
  const formatMethodAndUrl = (request: Request.HttpServerRequest) =>
283
- `${request.method} ${UrlParams.redactUrl(request.url)}`
283
+ `${request.method} ${internalUrlParams.toPath(request.url)}`
284
284
 
285
285
  const formatRequestMessage = (reason: string, description: string | undefined, info: string) => {
286
286
  const prefix = `${reason} (${info})`
@@ -32,10 +32,11 @@ import * as Headers from "./Headers.ts"
32
32
  import * as HttpBody from "./HttpBody.ts"
33
33
  import * as HttpClientRequest from "./HttpClientRequest.ts"
34
34
  import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
35
- import { hasBody, type HttpMethod } from "./HttpMethod.ts"
35
+ import { hasBody } from "./HttpMethod.ts"
36
36
  import { HttpServerError, type RequestError, RequestParseError } from "./HttpServerError.ts"
37
37
  import * as bodyInternal from "./internal/httpBody.ts"
38
38
  import * as lazyStream from "./internal/lazyStream.ts"
39
+ import * as internalUrlParams from "./internal/urlParams.ts"
39
40
  import * as Multipart from "./Multipart.ts"
40
41
  import * as UrlParams from "./UrlParams.ts"
41
42
 
@@ -77,7 +78,9 @@ export const TypeId = "~effect/http/HttpServerRequest"
77
78
  * creating adjusted request views. `upgrade` completes a WebSocket handshake
78
79
  * for `Upgrade: websocket`. Platforms that can hand over the connection, such
79
80
  * as Node, answer other protocols with `101 Switching Protocols` and expose
80
- * the raw connection.
81
+ * the raw connection. `upgradeWith` does the same and adds custom headers to
82
+ * the `101` response; `upgrade` is `upgradeWith({})`. WebSocket upgrades fail
83
+ * when custom headers are given.
81
84
  *
82
85
  * @stability unstable
83
86
  * @category models
@@ -88,7 +91,11 @@ export interface HttpServerRequest extends HttpIncomingMessage.HttpIncomingMessa
88
91
  readonly source: object
89
92
  readonly url: string
90
93
  readonly originalUrl: string
91
- readonly method: HttpMethod
94
+ /**
95
+ * The uppercase request method as received, which may be a method outside
96
+ * the known `HttpMethod` literals (for example `"PROPFIND"`).
97
+ */
98
+ readonly method: string
92
99
  readonly cookies: ReadonlyRecord<string, string>
93
100
 
94
101
  readonly multipart: Effect.Effect<
@@ -99,6 +106,9 @@ export interface HttpServerRequest extends HttpIncomingMessage.HttpIncomingMessa
99
106
  readonly multipartStream: Stream.Stream<Multipart.Part, Multipart.MultipartError>
100
107
 
101
108
  readonly upgrade: Effect.Effect<Socket.Socket, HttpServerError>
109
+ readonly upgradeWith: (options: {
110
+ readonly headers?: Headers.Input | undefined
111
+ }) => Effect.Effect<Socket.Socket, HttpServerError>
102
112
 
103
113
  /**
104
114
  * Address of the directly connected peer. Trusted proxy middleware replaces
@@ -558,8 +568,8 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
558
568
  options.protocol ?? this.protocol
559
569
  )
560
570
  }
561
- get method(): HttpMethod {
562
- return this.source.method.toUpperCase() as HttpMethod
571
+ get method(): string {
572
+ return this.source.method.toUpperCase()
563
573
  }
564
574
  get originalUrl() {
565
575
  return this.source.url
@@ -607,22 +617,7 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
607
617
 
608
618
  private textEffect: Effect.Effect<string, HttpServerError> | undefined
609
619
  get text(): Effect.Effect<string, HttpServerError> {
610
- if (this.textEffect) {
611
- return this.textEffect
612
- }
613
- this.textEffect = Effect.runSync(Effect.cached(
614
- Effect.tryPromise({
615
- try: () => this.source.text(),
616
- catch: (cause) =>
617
- new HttpServerError({
618
- reason: new RequestParseError({
619
- request: this,
620
- cause
621
- })
622
- })
623
- })
624
- ))
625
- return this.textEffect
620
+ return this.textEffect ??= Effect.map(this.arrayBuffer, (buffer) => textDecoder.decode(buffer))
626
621
  }
627
622
 
628
623
  get json(): Effect.Effect<Schema.Json, HttpServerError> {
@@ -640,9 +635,9 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
640
635
  }
641
636
 
642
637
  get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpServerError> {
643
- return Effect.flatMap(this.text, (_) =>
638
+ return Effect.flatMap(this.arrayBuffer, (bytes) =>
644
639
  Effect.try({
645
- try: () => UrlParams.fromInput(new URLSearchParams(_)),
640
+ try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
646
641
  catch: (cause) =>
647
642
  new HttpServerError({
648
643
  reason: new RequestParseError({
@@ -686,22 +681,36 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
686
681
  if (this.arrayBufferEffect) {
687
682
  return this.arrayBufferEffect
688
683
  }
689
- this.arrayBufferEffect = Effect.runSync(Effect.cached(
690
- Effect.tryPromise({
691
- try: () => this.source.arrayBuffer(),
684
+ this.arrayBufferEffect = Effect.withFiber((fiber) => {
685
+ const maxBodySize = fiber.getRef(HttpIncomingMessage.MaxBodySize)
686
+ return Effect.tryPromise({
687
+ try: (signal) =>
688
+ maxBodySize === undefined
689
+ ? this.source.arrayBuffer()
690
+ : readArrayBufferLimited(this.source, Number(maxBodySize), signal),
692
691
  catch: (cause) =>
693
692
  new HttpServerError({
694
693
  reason: new RequestParseError({
695
694
  request: this,
695
+ reason: cause instanceof BodyTooLargeError ? "BodyTooLarge" : "Parse",
696
696
  cause
697
697
  })
698
698
  })
699
699
  })
700
- ))
700
+ }).pipe(
701
+ Effect.cached,
702
+ Effect.runSync
703
+ )
701
704
  return this.arrayBufferEffect
702
705
  }
703
706
 
704
707
  get upgrade(): Effect.Effect<Socket.Socket, HttpServerError> {
708
+ return this.upgradeWith({})
709
+ }
710
+
711
+ upgradeWith(
712
+ _options: { readonly headers?: Headers.Input | undefined }
713
+ ): Effect.Effect<Socket.Socket, HttpServerError> {
705
714
  return Effect.fail(
706
715
  new HttpServerError({
707
716
  reason: new RequestParseError({
@@ -773,7 +782,7 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
773
782
  )
774
783
  }
775
784
 
776
- get method(): HttpMethod {
785
+ get method(): string {
777
786
  return this.source.method
778
787
  }
779
788
 
@@ -868,9 +877,9 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
868
877
  }
869
878
 
870
879
  get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpServerError> {
871
- return Effect.flatMap(this.text, (_) =>
880
+ return Effect.flatMap(this.bytes, (bytes) =>
872
881
  Effect.try({
873
- try: () => UrlParams.fromInput(new URLSearchParams(_)),
882
+ try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
874
883
  catch: (cause) => requestParseError(this, undefined, cause)
875
884
  }))
876
885
  }
@@ -916,6 +925,12 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
916
925
  }
917
926
 
918
927
  get upgrade(): Effect.Effect<Socket.Socket, HttpServerError> {
928
+ return this.upgradeWith({})
929
+ }
930
+
931
+ upgradeWith(
932
+ _options: { readonly headers?: Headers.Input | undefined }
933
+ ): Effect.Effect<Socket.Socket, HttpServerError> {
919
934
  return Effect.fail(requestParseError(this, "Not an upgradeable ServerRequest"))
920
935
  }
921
936
  }
@@ -1080,6 +1095,62 @@ const isBodyInit = (u: unknown): u is BodyInit =>
1080
1095
 
1081
1096
  const textDecoder = new TextDecoder()
1082
1097
 
1098
+ class BodyTooLargeError extends Error {
1099
+ constructor(maxBytes: number) {
1100
+ super(`Request body exceeds ${maxBytes} bytes`)
1101
+ }
1102
+ }
1103
+
1104
+ const readArrayBufferLimited = async (
1105
+ source: Request,
1106
+ maxBytes: number,
1107
+ signal: AbortSignal
1108
+ ): Promise<ArrayBuffer> => {
1109
+ const header = source.headers.get("content-length")
1110
+ const contentLength = header !== null && /^\d+$/.test(header) ? Number(header) : undefined
1111
+ if (contentLength !== undefined && contentLength > maxBytes) {
1112
+ throw new BodyTooLargeError(maxBytes)
1113
+ }
1114
+ if (source.body === null) {
1115
+ return new ArrayBuffer(0)
1116
+ }
1117
+ // A constructed request can understate its content-length, so bytes are
1118
+ // counted on every runtime. Cancellation is not awaited, as the source's
1119
+ // cleanup may never settle.
1120
+ const limit = contentLength ?? maxBytes
1121
+ const reader = source.body.getReader()
1122
+ const cancel = () => {
1123
+ reader.cancel().catch(() => {})
1124
+ }
1125
+ signal.addEventListener("abort", cancel, { once: true })
1126
+ const chunks: Array<Uint8Array> = []
1127
+ let bytes = 0
1128
+ try {
1129
+ while (true) {
1130
+ const { done, value } = await reader.read()
1131
+ if (done) break
1132
+ bytes += value.byteLength
1133
+ if (bytes > limit) {
1134
+ cancel()
1135
+ throw bytes > maxBytes
1136
+ ? new BodyTooLargeError(maxBytes)
1137
+ : new Error(`Request body is longer than its content-length of ${contentLength}`)
1138
+ }
1139
+ chunks.push(value)
1140
+ }
1141
+ } finally {
1142
+ signal.removeEventListener("abort", cancel)
1143
+ reader.releaseLock()
1144
+ }
1145
+ const buffer = new Uint8Array(bytes)
1146
+ let offset = 0
1147
+ for (const chunk of chunks) {
1148
+ buffer.set(chunk, offset)
1149
+ offset += chunk.byteLength
1150
+ }
1151
+ return buffer.buffer
1152
+ }
1153
+
1083
1154
  /**
1084
1155
  * Attempts to construct an absolute `URL` for a server request safely.
1085
1156
  *
@@ -38,6 +38,7 @@ import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
38
38
  import type { HttpPlatform } from "./HttpPlatform.ts"
39
39
  import * as headersInternal from "./internal/headers.ts"
40
40
  import * as bodyInternal from "./internal/httpBody.ts"
41
+ import * as internalUrlParams from "./internal/urlParams.ts"
41
42
  import * as Template from "./Template.ts"
42
43
  import * as UrlParams from "./UrlParams.ts"
43
44
 
@@ -1653,9 +1654,9 @@ class ServerHttpClientResponse extends Inspectable.Class implements HttpClientRe
1653
1654
  }
1654
1655
 
1655
1656
  get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpClientError.HttpClientError> {
1656
- return Effect.flatMap(this.text, (_) =>
1657
+ return Effect.flatMap(this.bytes, (bytes) =>
1657
1658
  Effect.try({
1658
- try: () => UrlParams.fromInput(new URLSearchParams(_)),
1659
+ try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
1659
1660
  catch: (cause) =>
1660
1661
  new HttpClientError.HttpClientError({
1661
1662
  reason: new HttpClientError.DecodeError({