effect 4.0.0-beta.103 → 4.0.0-beta.105

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 (667) hide show
  1. package/AGENTS.md +381 -0
  2. package/CLAUDE.md +381 -0
  3. package/ai-docs/README.md +44 -0
  4. package/ai-docs/package.json +36 -0
  5. package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
  6. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
  7. package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
  8. package/ai-docs/src/01_effect/01_basics/index.md +5 -0
  9. package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
  10. package/ai-docs/src/01_effect/02_schema/index.md +7 -0
  11. package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
  12. package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
  13. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
  14. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
  15. package/ai-docs/src/01_effect/03_services/index.md +5 -0
  16. package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
  17. package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
  18. package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
  19. package/ai-docs/src/01_effect/04_errors/index.md +1 -0
  20. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
  21. package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
  22. package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
  23. package/ai-docs/src/01_effect/05_resources/index.md +3 -0
  24. package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
  25. package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
  26. package/ai-docs/src/01_effect/06_running/index.md +1 -0
  27. package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
  28. package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
  29. package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
  30. package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
  31. package/ai-docs/src/03_stream/30_encoding.ts +165 -0
  32. package/ai-docs/src/03_stream/index.md +4 -0
  33. package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
  34. package/ai-docs/src/04_integration/index.md +5 -0
  35. package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
  36. package/ai-docs/src/05_batching/index.md +3 -0
  37. package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
  38. package/ai-docs/src/06_schedule/index.md +3 -0
  39. package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
  40. package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
  41. package/ai-docs/src/07_datetime/index.md +5 -0
  42. package/ai-docs/src/08_observability/10_logging.ts +66 -0
  43. package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
  44. package/ai-docs/src/08_observability/index.md +7 -0
  45. package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
  46. package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
  47. package/ai-docs/src/09_testing/index.md +1 -0
  48. package/ai-docs/src/10_predicate/01_basics.ts +14 -0
  49. package/ai-docs/src/10_predicate/index.md +9 -0
  50. package/ai-docs/src/50_http-client/10_basics.ts +102 -0
  51. package/ai-docs/src/50_http-client/index.md +3 -0
  52. package/ai-docs/src/51_http-server/10_basics.ts +116 -0
  53. package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  54. package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  55. package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  56. package/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
  57. package/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
  58. package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  59. package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
  60. package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
  61. package/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
  62. package/ai-docs/src/51_http-server/index.md +3 -0
  63. package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  64. package/ai-docs/src/60_child-process/index.md +3 -0
  65. package/ai-docs/src/70_cli/10_basics.ts +136 -0
  66. package/ai-docs/src/70_cli/index.md +5 -0
  67. package/ai-docs/src/71_ai/10_language-model.ts +156 -0
  68. package/ai-docs/src/71_ai/20_tools.ts +226 -0
  69. package/ai-docs/src/71_ai/30_chat.ts +158 -0
  70. package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  71. package/ai-docs/src/71_ai/index.md +5 -0
  72. package/ai-docs/src/80_cluster/10_entities.ts +97 -0
  73. package/ai-docs/src/80_cluster/index.md +4 -0
  74. package/ai-docs/src/index.md +10 -0
  75. package/ai-docs/tsconfig.json +24 -0
  76. package/dist/Brand.d.ts +3 -3
  77. package/dist/Brand.d.ts.map +1 -1
  78. package/dist/Brand.js +4 -3
  79. package/dist/Brand.js.map +1 -1
  80. package/dist/Cache.js +1 -1
  81. package/dist/Cache.js.map +1 -1
  82. package/dist/Channel.d.ts +1 -1
  83. package/dist/Channel.d.ts.map +1 -1
  84. package/dist/Channel.js.map +1 -1
  85. package/dist/Config.d.ts.map +1 -1
  86. package/dist/Config.js +30 -8
  87. package/dist/Config.js.map +1 -1
  88. package/dist/ConfigProvider.d.ts.map +1 -1
  89. package/dist/ConfigProvider.js +2 -1
  90. package/dist/ConfigProvider.js.map +1 -1
  91. package/dist/Context.d.ts +2 -3
  92. package/dist/Context.d.ts.map +1 -1
  93. package/dist/Context.js +1 -22
  94. package/dist/Context.js.map +1 -1
  95. package/dist/Cron.d.ts +31 -0
  96. package/dist/Cron.d.ts.map +1 -1
  97. package/dist/Cron.js +58 -2
  98. package/dist/Cron.js.map +1 -1
  99. package/dist/Crypto.d.ts.map +1 -1
  100. package/dist/Crypto.js +13 -5
  101. package/dist/Crypto.js.map +1 -1
  102. package/dist/Duration.d.ts.map +1 -1
  103. package/dist/Duration.js +12 -1
  104. package/dist/Duration.js.map +1 -1
  105. package/dist/Effect.d.ts +132 -14
  106. package/dist/Effect.d.ts.map +1 -1
  107. package/dist/Effect.js +38 -0
  108. package/dist/Effect.js.map +1 -1
  109. package/dist/Equal.d.ts.map +1 -1
  110. package/dist/Equal.js +10 -2
  111. package/dist/Equal.js.map +1 -1
  112. package/dist/ExecutionPlan.d.ts +73 -0
  113. package/dist/ExecutionPlan.d.ts.map +1 -1
  114. package/dist/ExecutionPlan.js +1 -1
  115. package/dist/ExecutionPlan.js.map +1 -1
  116. package/dist/FiberSet.js +1 -1
  117. package/dist/FileSystem.d.ts +2 -2
  118. package/dist/Function.d.ts +4 -3
  119. package/dist/Function.d.ts.map +1 -1
  120. package/dist/Function.js +5 -5
  121. package/dist/Function.js.map +1 -1
  122. package/dist/Iterable.d.ts.map +1 -1
  123. package/dist/Iterable.js +11 -10
  124. package/dist/Iterable.js.map +1 -1
  125. package/dist/Layer.d.ts.map +1 -1
  126. package/dist/Layer.js +7 -5
  127. package/dist/Layer.js.map +1 -1
  128. package/dist/Optic.d.ts +35 -21
  129. package/dist/Optic.d.ts.map +1 -1
  130. package/dist/Optic.js +33 -34
  131. package/dist/Optic.js.map +1 -1
  132. package/dist/Schedule.d.ts +8 -8
  133. package/dist/Schedule.d.ts.map +1 -1
  134. package/dist/Schedule.js +4 -4
  135. package/dist/Schedule.js.map +1 -1
  136. package/dist/Schema.d.ts +105 -57
  137. package/dist/Schema.d.ts.map +1 -1
  138. package/dist/Schema.js +105 -67
  139. package/dist/Schema.js.map +1 -1
  140. package/dist/SchemaAST.d.ts +33 -3
  141. package/dist/SchemaAST.d.ts.map +1 -1
  142. package/dist/SchemaAST.js +87 -63
  143. package/dist/SchemaAST.js.map +1 -1
  144. package/dist/SchemaError.d.ts +8 -8
  145. package/dist/SchemaError.d.ts.map +1 -1
  146. package/dist/SchemaError.js +7 -6
  147. package/dist/SchemaError.js.map +1 -1
  148. package/dist/SchemaGetter.d.ts +8 -5
  149. package/dist/SchemaGetter.d.ts.map +1 -1
  150. package/dist/SchemaGetter.js +41 -37
  151. package/dist/SchemaGetter.js.map +1 -1
  152. package/dist/SchemaIssue.d.ts +195 -38
  153. package/dist/SchemaIssue.d.ts.map +1 -1
  154. package/dist/SchemaIssue.js +243 -68
  155. package/dist/SchemaIssue.js.map +1 -1
  156. package/dist/SchemaParser.d.ts +30 -0
  157. package/dist/SchemaParser.d.ts.map +1 -1
  158. package/dist/SchemaParser.js +74 -62
  159. package/dist/SchemaParser.js.map +1 -1
  160. package/dist/SchemaTransformation.d.ts +2 -2
  161. package/dist/SchemaTransformation.d.ts.map +1 -1
  162. package/dist/SchemaTransformation.js +26 -26
  163. package/dist/SchemaTransformation.js.map +1 -1
  164. package/dist/ScopedCache.js +1 -1
  165. package/dist/ScopedCache.js.map +1 -1
  166. package/dist/Sink.d.ts +1 -1
  167. package/dist/Sink.d.ts.map +1 -1
  168. package/dist/Stdio.d.ts +17 -4
  169. package/dist/Stdio.d.ts.map +1 -1
  170. package/dist/Stdio.js +6 -3
  171. package/dist/Stdio.js.map +1 -1
  172. package/dist/Stream.d.ts +27 -4
  173. package/dist/Stream.d.ts.map +1 -1
  174. package/dist/Stream.js +27 -2
  175. package/dist/Stream.js.map +1 -1
  176. package/dist/SynchronizedRef.js +1 -1
  177. package/dist/SynchronizedRef.js.map +1 -1
  178. package/dist/Terminal.js +1 -1
  179. package/dist/Terminal.js.map +1 -1
  180. package/dist/Tuple.d.ts +6 -4
  181. package/dist/Tuple.d.ts.map +1 -1
  182. package/dist/Tuple.js.map +1 -1
  183. package/dist/TxReentrantLock.d.ts +0 -56
  184. package/dist/TxReentrantLock.d.ts.map +1 -1
  185. package/dist/TxReentrantLock.js +8 -8
  186. package/dist/TxReentrantLock.js.map +1 -1
  187. package/dist/internal/dateTime.js +1 -1
  188. package/dist/internal/dateTime.js.map +1 -1
  189. package/dist/internal/executionPlan.js +51 -3
  190. package/dist/internal/executionPlan.js.map +1 -1
  191. package/dist/internal/hashMap.js +12 -8
  192. package/dist/internal/hashMap.js.map +1 -1
  193. package/dist/internal/matcher.js +1 -1
  194. package/dist/internal/matcher.js.map +1 -1
  195. package/dist/internal/schedule.js.map +1 -1
  196. package/dist/internal/schema/annotations.js +2 -0
  197. package/dist/internal/schema/annotations.js.map +1 -1
  198. package/dist/internal/schema/schema.js +1 -9
  199. package/dist/internal/schema/schema.js.map +1 -1
  200. package/dist/internal/schema/toArbitrary.js +1 -1
  201. package/dist/internal/schema/toArbitrary.js.map +1 -1
  202. package/dist/internal/trie.js +13 -3
  203. package/dist/internal/trie.js.map +1 -1
  204. package/dist/testing/TestClock.d.ts.map +1 -1
  205. package/dist/testing/TestClock.js +11 -1
  206. package/dist/testing/TestClock.js.map +1 -1
  207. package/dist/testing/TestSchema.d.ts +2 -2
  208. package/dist/testing/TestSchema.d.ts.map +1 -1
  209. package/dist/testing/TestSchema.js +8 -7
  210. package/dist/testing/TestSchema.js.map +1 -1
  211. package/dist/unstable/ai/AiError.js +19 -19
  212. package/dist/unstable/ai/AiError.js.map +1 -1
  213. package/dist/unstable/ai/Chat.js +1 -1
  214. package/dist/unstable/ai/Chat.js.map +1 -1
  215. package/dist/unstable/ai/LanguageModel.js +4 -2
  216. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  217. package/dist/unstable/ai/McpSchema.d.ts +132 -132
  218. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  219. package/dist/unstable/ai/McpSchema.js +8 -8
  220. package/dist/unstable/ai/McpSchema.js.map +1 -1
  221. package/dist/unstable/ai/McpServer.js +1 -1
  222. package/dist/unstable/ai/McpServer.js.map +1 -1
  223. package/dist/unstable/ai/Prompt.d.ts +15 -3
  224. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  225. package/dist/unstable/ai/Prompt.js +10 -7
  226. package/dist/unstable/ai/Prompt.js.map +1 -1
  227. package/dist/unstable/cli/CliError.d.ts +3 -3
  228. package/dist/unstable/cli/CliError.js +11 -11
  229. package/dist/unstable/cli/CliError.js.map +1 -1
  230. package/dist/unstable/cli/Command.d.ts +9 -9
  231. package/dist/unstable/cli/Command.d.ts.map +1 -1
  232. package/dist/unstable/cli/Command.js +8 -6
  233. package/dist/unstable/cli/Command.js.map +1 -1
  234. package/dist/unstable/cli/Param.d.ts +7 -5
  235. package/dist/unstable/cli/Param.d.ts.map +1 -1
  236. package/dist/unstable/cli/Param.js +15 -11
  237. package/dist/unstable/cli/Param.js.map +1 -1
  238. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  239. package/dist/unstable/cli/Primitive.js +31 -24
  240. package/dist/unstable/cli/Primitive.js.map +1 -1
  241. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  242. package/dist/unstable/cli/Prompt.js +31 -17
  243. package/dist/unstable/cli/Prompt.js.map +1 -1
  244. package/dist/unstable/cli/internal/ansi.js +2 -2
  245. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  246. package/dist/unstable/cli/internal/command.d.ts +2 -2
  247. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  248. package/dist/unstable/cli/internal/command.js +10 -9
  249. package/dist/unstable/cli/internal/command.js.map +1 -1
  250. package/dist/unstable/cli/internal/completions/bash.js +69 -9
  251. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  252. package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
  253. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  254. package/dist/unstable/cli/internal/completions/fish.js +5 -5
  255. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  256. package/dist/unstable/cli/internal/help.d.ts.map +1 -1
  257. package/dist/unstable/cli/internal/help.js +4 -2
  258. package/dist/unstable/cli/internal/help.js.map +1 -1
  259. package/dist/unstable/cli/internal/parser.js +3 -3
  260. package/dist/unstable/cli/internal/parser.js.map +1 -1
  261. package/dist/unstable/cli/internal/wizard.js +2 -2
  262. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  263. package/dist/unstable/cluster/ClusterError.js +7 -7
  264. package/dist/unstable/cluster/ClusterError.js.map +1 -1
  265. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  266. package/dist/unstable/cluster/ClusterWorkflowEngine.js +1 -1
  267. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  268. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  269. package/dist/unstable/cluster/MessageStorage.js +8 -1
  270. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  271. package/dist/unstable/cluster/Reply.d.ts +8 -0
  272. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  273. package/dist/unstable/cluster/Reply.js +16 -4
  274. package/dist/unstable/cluster/Reply.js.map +1 -1
  275. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  276. package/dist/unstable/cluster/RunnerServer.js +4 -2
  277. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  278. package/dist/unstable/cluster/RunnerStorage.d.ts +1 -2
  279. package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
  280. package/dist/unstable/cluster/RunnerStorage.js +7 -6
  281. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  282. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  283. package/dist/unstable/cluster/Sharding.js +22 -4
  284. package/dist/unstable/cluster/Sharding.js.map +1 -1
  285. package/dist/unstable/cluster/internal/entityManager.js +1 -1
  286. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  287. package/dist/unstable/cluster/internal/resourceMap.js +2 -2
  288. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  289. package/dist/unstable/cluster/internal/resourceRef.js +17 -0
  290. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  291. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  292. package/dist/unstable/devtools/DevToolsClient.js +7 -2
  293. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  294. package/dist/unstable/encoding/Ini.d.ts +20 -0
  295. package/dist/unstable/encoding/Ini.d.ts.map +1 -0
  296. package/dist/unstable/encoding/Ini.js +153 -0
  297. package/dist/unstable/encoding/Ini.js.map +1 -0
  298. package/dist/unstable/encoding/Msgpack.d.ts +2 -1
  299. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  300. package/dist/unstable/encoding/Msgpack.js +27 -13
  301. package/dist/unstable/encoding/Msgpack.js.map +1 -1
  302. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  303. package/dist/unstable/encoding/Ndjson.js +7 -1
  304. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  305. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  306. package/dist/unstable/encoding/Sse.js +14 -23
  307. package/dist/unstable/encoding/Sse.js.map +1 -1
  308. package/dist/unstable/encoding/Toml.d.ts +19 -0
  309. package/dist/unstable/encoding/Toml.d.ts.map +1 -0
  310. package/dist/unstable/encoding/Toml.js +434 -0
  311. package/dist/unstable/encoding/Toml.js.map +1 -0
  312. package/dist/unstable/encoding/Yaml.d.ts +19 -0
  313. package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
  314. package/dist/unstable/encoding/Yaml.js +461 -0
  315. package/dist/unstable/encoding/Yaml.js.map +1 -0
  316. package/dist/unstable/encoding/index.d.ts +12 -0
  317. package/dist/unstable/encoding/index.d.ts.map +1 -1
  318. package/dist/unstable/encoding/index.js +12 -0
  319. package/dist/unstable/encoding/index.js.map +1 -1
  320. package/dist/unstable/eventlog/EventJournal.d.ts +1 -1
  321. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  322. package/dist/unstable/eventlog/EventJournal.js +13 -5
  323. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  324. package/dist/unstable/eventlog/EventLogMessage.js +1 -1
  325. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  326. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +1 -1
  327. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  328. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
  329. package/dist/unstable/eventlog/SqlEventJournal.js +1 -4
  330. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  331. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts +11 -0
  332. package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
  333. package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
  334. package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
  335. package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
  336. package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
  337. package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
  338. package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
  339. package/dist/unstable/http/FindMyWay.d.ts +33 -8
  340. package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
  341. package/dist/unstable/http/FindMyWay.js +4 -7
  342. package/dist/unstable/http/FindMyWay.js.map +1 -1
  343. package/dist/unstable/http/HttpClient.d.ts +59 -3
  344. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  345. package/dist/unstable/http/HttpClient.js +33 -19
  346. package/dist/unstable/http/HttpClient.js.map +1 -1
  347. package/dist/unstable/http/HttpClientError.js +1 -1
  348. package/dist/unstable/http/HttpClientError.js.map +1 -1
  349. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  350. package/dist/unstable/http/HttpClientRequest.js +2 -14
  351. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  352. package/dist/unstable/http/HttpClientResponse.js +1 -16
  353. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  354. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  355. package/dist/unstable/http/HttpPlatform.js +21 -3
  356. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  357. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  358. package/dist/unstable/http/HttpServerRequest.js +7 -6
  359. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  360. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  361. package/dist/unstable/http/HttpServerResponse.js +8 -6
  362. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  363. package/dist/unstable/http/Multipart.d.ts +1 -1
  364. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  365. package/dist/unstable/http/Multipart.js +9 -2
  366. package/dist/unstable/http/Multipart.js.map +1 -1
  367. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
  368. package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
  369. package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
  370. package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
  371. package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
  372. package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
  373. package/dist/unstable/http/MultipartParser/Search.js +14 -0
  374. package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
  375. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
  376. package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
  377. package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
  378. package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
  379. package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
  380. package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
  381. package/dist/unstable/http/MultipartParser/internal/headers.js +194 -0
  382. package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
  383. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
  384. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
  385. package/dist/unstable/http/MultipartParser/internal/multipart.js +226 -0
  386. package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
  387. package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
  388. package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
  389. package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
  390. package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
  391. package/dist/unstable/http/MultipartParser.d.ts +98 -0
  392. package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
  393. package/dist/unstable/http/MultipartParser.js +23 -0
  394. package/dist/unstable/http/MultipartParser.js.map +1 -0
  395. package/dist/unstable/http/Template.d.ts.map +1 -1
  396. package/dist/unstable/http/Template.js +2 -2
  397. package/dist/unstable/http/Template.js.map +1 -1
  398. package/dist/unstable/http/index.d.ts +1 -1
  399. package/dist/unstable/http/index.d.ts.map +1 -1
  400. package/dist/unstable/http/index.js +1 -1
  401. package/dist/unstable/http/index.js.map +1 -1
  402. package/dist/unstable/http/internal/httpBody.d.ts +2 -0
  403. package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
  404. package/dist/unstable/http/internal/httpBody.js +10 -0
  405. package/dist/unstable/http/internal/httpBody.js.map +1 -0
  406. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  407. package/dist/unstable/httpapi/HttpApi.js +5 -5
  408. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  409. package/dist/unstable/httpapi/HttpApiBuilder.js +73 -20
  410. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  411. package/dist/unstable/httpapi/HttpApiClient.d.ts +1 -1
  412. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  413. package/dist/unstable/httpapi/HttpApiClient.js +74 -34
  414. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  415. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +6 -4
  416. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  417. package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
  418. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  419. package/dist/unstable/httpapi/HttpApiError.d.ts +5 -5
  420. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  421. package/dist/unstable/httpapi/HttpApiError.js +17 -17
  422. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  423. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +1 -1
  424. package/dist/unstable/httpapi/HttpApiMiddleware.js +1 -1
  425. package/dist/unstable/httpapi/HttpApiSchema.d.ts +219 -0
  426. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  427. package/dist/unstable/httpapi/HttpApiSchema.js +170 -0
  428. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  429. package/dist/unstable/httpapi/OpenApi.d.ts +8 -0
  430. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  431. package/dist/unstable/httpapi/OpenApi.js +45 -18
  432. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  433. package/dist/unstable/observability/OtlpExporter.d.ts +1 -1
  434. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  435. package/dist/unstable/observability/OtlpExporter.js +2 -1
  436. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  437. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  438. package/dist/unstable/observability/OtlpLogger.js +2 -2
  439. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  440. package/dist/unstable/observability/OtlpMetrics.d.ts +2 -2
  441. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  442. package/dist/unstable/observability/OtlpMetrics.js +28 -15
  443. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  444. package/dist/unstable/observability/OtlpTracer.js +1 -1
  445. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  446. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  447. package/dist/unstable/persistence/PersistedQueue.js +9 -9
  448. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  449. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  450. package/dist/unstable/persistence/Persistence.js +17 -7
  451. package/dist/unstable/persistence/Persistence.js.map +1 -1
  452. package/dist/unstable/persistence/RateLimiter.d.ts +22 -12
  453. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  454. package/dist/unstable/persistence/RateLimiter.js +15 -42
  455. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  456. package/dist/unstable/persistence/Redis.js +1 -1
  457. package/dist/unstable/persistence/Redis.js.map +1 -1
  458. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  459. package/dist/unstable/reactivity/AsyncResult.js +4 -4
  460. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  461. package/dist/unstable/reactivity/Atom.d.ts +26 -11
  462. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  463. package/dist/unstable/reactivity/Atom.js +9 -22
  464. package/dist/unstable/reactivity/Atom.js.map +1 -1
  465. package/dist/unstable/rpc/RpcClient.d.ts +14 -0
  466. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  467. package/dist/unstable/rpc/RpcClient.js +21 -10
  468. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  469. package/dist/unstable/rpc/RpcClientError.js +2 -2
  470. package/dist/unstable/rpc/RpcClientError.js.map +1 -1
  471. package/dist/unstable/rpc/RpcSerialization.js +3 -1
  472. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  473. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  474. package/dist/unstable/rpc/RpcServer.js +3 -2
  475. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  476. package/dist/unstable/schema/Model.d.ts +1 -1
  477. package/dist/unstable/schema/Model.d.ts.map +1 -1
  478. package/dist/unstable/schema/VariantSchema.d.ts +5 -5
  479. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  480. package/dist/unstable/schema/VariantSchema.js +17 -9
  481. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  482. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  483. package/dist/unstable/socket/Socket.js +28 -12
  484. package/dist/unstable/socket/Socket.js.map +1 -1
  485. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  486. package/dist/unstable/sql/SqlClient.js +7 -3
  487. package/dist/unstable/sql/SqlClient.js.map +1 -1
  488. package/dist/unstable/sql/SqlError.js +13 -13
  489. package/dist/unstable/sql/SqlError.js.map +1 -1
  490. package/dist/unstable/sql/SqlResolver.js +8 -6
  491. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  492. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  493. package/dist/unstable/sql/Statement.js +8 -6
  494. package/dist/unstable/sql/Statement.js.map +1 -1
  495. package/dist/unstable/workers/WorkerError.js +5 -5
  496. package/dist/unstable/workers/WorkerError.js.map +1 -1
  497. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  498. package/dist/unstable/workflow/Workflow.js +2 -2
  499. package/dist/unstable/workflow/Workflow.js.map +1 -1
  500. package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
  501. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  502. package/dist/unstable/workflow/WorkflowEngine.js +3 -3
  503. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  504. package/package.json +6 -9
  505. package/src/Brand.ts +4 -4
  506. package/src/Cache.ts +1 -1
  507. package/src/Channel.ts +1 -1
  508. package/src/Config.ts +31 -8
  509. package/src/ConfigProvider.ts +4 -1
  510. package/src/Context.ts +6 -28
  511. package/src/Cron.ts +65 -2
  512. package/src/Crypto.ts +17 -8
  513. package/src/Duration.ts +16 -2
  514. package/src/Effect.ts +141 -17
  515. package/src/Equal.ts +10 -2
  516. package/src/ExecutionPlan.ts +78 -1
  517. package/src/FiberSet.ts +1 -1
  518. package/src/FileSystem.ts +2 -2
  519. package/src/Function.ts +6 -6
  520. package/src/Iterable.ts +11 -10
  521. package/src/Layer.ts +7 -5
  522. package/src/Optic.ts +59 -58
  523. package/src/Schedule.ts +13 -13
  524. package/src/Schema.ts +195 -112
  525. package/src/SchemaAST.ts +154 -85
  526. package/src/SchemaError.ts +9 -9
  527. package/src/SchemaGetter.ts +89 -30
  528. package/src/SchemaIssue.ts +285 -80
  529. package/src/SchemaParser.ts +126 -86
  530. package/src/SchemaTransformation.ts +66 -18
  531. package/src/ScopedCache.ts +1 -1
  532. package/src/Sink.ts +1 -1
  533. package/src/Stdio.ts +23 -4
  534. package/src/Stream.ts +77 -10
  535. package/src/SynchronizedRef.ts +1 -1
  536. package/src/Terminal.ts +1 -1
  537. package/src/Tuple.ts +7 -4
  538. package/src/TxReentrantLock.ts +39 -35
  539. package/src/internal/dateTime.ts +1 -1
  540. package/src/internal/executionPlan.ts +105 -10
  541. package/src/internal/hashMap.ts +20 -14
  542. package/src/internal/matcher.ts +2 -2
  543. package/src/internal/schedule.ts +4 -4
  544. package/src/internal/schema/annotations.ts +3 -0
  545. package/src/internal/schema/schema.ts +1 -17
  546. package/src/internal/schema/toArbitrary.ts +3 -1
  547. package/src/internal/trie.ts +12 -2
  548. package/src/testing/TestClock.ts +13 -1
  549. package/src/testing/TestSchema.ts +9 -9
  550. package/src/unstable/ai/AiError.ts +19 -19
  551. package/src/unstable/ai/Chat.ts +1 -1
  552. package/src/unstable/ai/LanguageModel.ts +4 -2
  553. package/src/unstable/ai/McpSchema.ts +17 -16
  554. package/src/unstable/ai/McpServer.ts +1 -1
  555. package/src/unstable/ai/Prompt.ts +35 -10
  556. package/src/unstable/cli/CliError.ts +12 -12
  557. package/src/unstable/cli/Command.ts +12 -10
  558. package/src/unstable/cli/Param.ts +41 -19
  559. package/src/unstable/cli/Primitive.ts +11 -5
  560. package/src/unstable/cli/Prompt.ts +36 -20
  561. package/src/unstable/cli/internal/ansi.ts +2 -2
  562. package/src/unstable/cli/internal/command.ts +15 -10
  563. package/src/unstable/cli/internal/completions/bash.ts +59 -9
  564. package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
  565. package/src/unstable/cli/internal/completions/fish.ts +5 -7
  566. package/src/unstable/cli/internal/help.ts +4 -2
  567. package/src/unstable/cli/internal/parser.ts +3 -3
  568. package/src/unstable/cli/internal/wizard.ts +2 -2
  569. package/src/unstable/cluster/ClusterError.ts +7 -7
  570. package/src/unstable/cluster/ClusterWorkflowEngine.ts +4 -1
  571. package/src/unstable/cluster/MessageStorage.ts +9 -5
  572. package/src/unstable/cluster/Reply.ts +25 -4
  573. package/src/unstable/cluster/RunnerServer.ts +4 -10
  574. package/src/unstable/cluster/RunnerStorage.ts +9 -7
  575. package/src/unstable/cluster/Sharding.ts +35 -7
  576. package/src/unstable/cluster/internal/entityManager.ts +1 -1
  577. package/src/unstable/cluster/internal/resourceMap.ts +5 -2
  578. package/src/unstable/cluster/internal/resourceRef.ts +27 -5
  579. package/src/unstable/devtools/DevToolsClient.ts +3 -2
  580. package/src/unstable/encoding/Ini.ts +174 -0
  581. package/src/unstable/encoding/Msgpack.ts +59 -36
  582. package/src/unstable/encoding/Ndjson.ts +9 -1
  583. package/src/unstable/encoding/Sse.ts +11 -21
  584. package/src/unstable/encoding/Toml.ts +504 -0
  585. package/src/unstable/encoding/Yaml.ts +541 -0
  586. package/src/unstable/encoding/index.ts +15 -0
  587. package/src/unstable/eventlog/EventJournal.ts +14 -6
  588. package/src/unstable/eventlog/EventLogMessage.ts +1 -1
  589. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +1 -1
  590. package/src/unstable/eventlog/SqlEventJournal.ts +6 -4
  591. package/src/unstable/http/FindMyWay/internal/queryString.ts +420 -0
  592. package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
  593. package/src/unstable/http/FindMyWay.ts +65 -6
  594. package/src/unstable/http/HttpClient.ts +132 -23
  595. package/src/unstable/http/HttpClientError.ts +1 -1
  596. package/src/unstable/http/HttpClientRequest.ts +2 -14
  597. package/src/unstable/http/HttpClientResponse.ts +1 -17
  598. package/src/unstable/http/HttpPlatform.ts +34 -6
  599. package/src/unstable/http/HttpServerRequest.ts +14 -6
  600. package/src/unstable/http/HttpServerResponse.ts +9 -7
  601. package/src/unstable/http/Multipart.ts +9 -2
  602. package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
  603. package/src/unstable/http/MultipartParser/Search.ts +17 -0
  604. package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
  605. package/src/unstable/http/MultipartParser/internal/headers.ts +615 -0
  606. package/src/unstable/http/MultipartParser/internal/multipart.ts +262 -0
  607. package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
  608. package/src/unstable/http/MultipartParser.ts +115 -0
  609. package/src/unstable/http/Template.ts +6 -5
  610. package/src/unstable/http/index.ts +1 -1
  611. package/src/unstable/http/internal/httpBody.ts +15 -0
  612. package/src/unstable/httpapi/HttpApi.ts +6 -7
  613. package/src/unstable/httpapi/HttpApiBuilder.ts +142 -25
  614. package/src/unstable/httpapi/HttpApiClient.ts +130 -49
  615. package/src/unstable/httpapi/HttpApiEndpoint.ts +117 -29
  616. package/src/unstable/httpapi/HttpApiError.ts +33 -39
  617. package/src/unstable/httpapi/HttpApiMiddleware.ts +1 -1
  618. package/src/unstable/httpapi/HttpApiSchema.ts +353 -0
  619. package/src/unstable/httpapi/OpenApi.ts +70 -20
  620. package/src/unstable/observability/OtlpExporter.ts +4 -2
  621. package/src/unstable/observability/OtlpLogger.ts +3 -1
  622. package/src/unstable/observability/OtlpMetrics.ts +32 -18
  623. package/src/unstable/observability/OtlpTracer.ts +1 -1
  624. package/src/unstable/persistence/PersistedQueue.ts +12 -9
  625. package/src/unstable/persistence/Persistence.ts +27 -7
  626. package/src/unstable/persistence/RateLimiter.ts +54 -31
  627. package/src/unstable/persistence/Redis.ts +1 -1
  628. package/src/unstable/reactivity/AsyncResult.ts +11 -6
  629. package/src/unstable/reactivity/Atom.ts +44 -25
  630. package/src/unstable/rpc/RpcClient.ts +42 -13
  631. package/src/unstable/rpc/RpcClientError.ts +2 -2
  632. package/src/unstable/rpc/RpcSerialization.ts +1 -1
  633. package/src/unstable/rpc/RpcServer.ts +4 -2
  634. package/src/unstable/schema/VariantSchema.ts +36 -18
  635. package/src/unstable/socket/Socket.ts +24 -14
  636. package/src/unstable/sql/SqlClient.ts +65 -56
  637. package/src/unstable/sql/SqlError.ts +13 -13
  638. package/src/unstable/sql/SqlResolver.ts +8 -6
  639. package/src/unstable/sql/Statement.ts +13 -8
  640. package/src/unstable/workers/WorkerError.ts +5 -5
  641. package/src/unstable/workflow/Workflow.ts +2 -5
  642. package/src/unstable/workflow/WorkflowEngine.ts +8 -3
  643. package/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
  644. package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
  645. package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
  646. package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
  647. package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
  648. package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
  649. package/dist/unstable/http/Multipasta/Node.js +0 -14
  650. package/dist/unstable/http/Multipasta/Node.js.map +0 -1
  651. package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
  652. package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
  653. package/dist/unstable/http/Multipasta/Search.js +0 -14
  654. package/dist/unstable/http/Multipasta/Search.js.map +0 -1
  655. package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
  656. package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
  657. package/dist/unstable/http/Multipasta/Web.js +0 -14
  658. package/dist/unstable/http/Multipasta/Web.js.map +0 -1
  659. package/dist/unstable/http/Multipasta.d.ts +0 -15
  660. package/dist/unstable/http/Multipasta.d.ts.map +0 -1
  661. package/dist/unstable/http/Multipasta.js +0 -15
  662. package/dist/unstable/http/Multipasta.js.map +0 -1
  663. package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
  664. package/src/unstable/http/Multipasta/Node.ts +0 -14
  665. package/src/unstable/http/Multipasta/Search.ts +0 -14
  666. package/src/unstable/http/Multipasta/Web.ts +0 -14
  667. package/src/unstable/http/Multipasta.ts +0 -15
@@ -760,6 +760,7 @@ function handlerToHttpEffect(
760
760
  const decodeHeaders = UndefinedOr.map(endpoint.headers, Schema.decodeUnknownEffect)
761
761
  const decodeQuery = UndefinedOr.map(endpoint.query, Schema.decodeUnknownEffect)
762
762
  const encodeStream = makeStreamEncoder(endpoint)
763
+ const encodeWithHeaders = makeWithHeadersEncoder(endpoint)
763
764
 
764
765
  const shouldParsePayload = endpoint.payload.size > 0 && !isRaw
765
766
  const payloadBy = shouldParsePayload ? buildPayloadDecoders(endpoint.payload) : undefined
@@ -797,15 +798,26 @@ function handlerToHttpEffect(
797
798
  request.payload = yield* HttpApiSchemaError.wrap("Payload", result)
798
799
  }
799
800
  }
800
- const response = yield* handler(request)
801
+ let response = yield* handler(request)
801
802
  if (Response.isHttpServerResponse(response)) {
802
803
  return response
803
804
  }
804
- const streamResponse = encodeStream?.(response, context)
805
- if (streamResponse !== undefined) {
806
- return yield* HttpApiSchemaError.wrap("Body", streamResponse)
805
+ let responseHeaders: unknown | undefined
806
+ if (encodeWithHeaders !== undefined && HttpApiSchema.isWithHeadersValue(response)) {
807
+ responseHeaders = response.headers
808
+ response = response.body
807
809
  }
808
- return yield* HttpApiSchemaError.wrap("Body", encodeSuccess(response))
810
+ const encoded = yield* HttpApiSchemaError.wrap(
811
+ "Body",
812
+ encodeStream?.(response, context) ??
813
+ (responseHeaders !== undefined ? encodeWithHeaders!.encodeBody(response) : encodeSuccess(response))
814
+ )
815
+ if (encodeWithHeaders === undefined || responseHeaders === undefined) return encoded
816
+ const encodedHeaders = yield* HttpApiSchemaError.wrap(
817
+ "ResponseHeaders",
818
+ encodeWithHeaders.encodeHeaders.get(encoded.status)!(responseHeaders)
819
+ )
820
+ return Response.setHeaders(encoded, encodedHeaders as any)
809
821
  })
810
822
  ).pipe(
811
823
  Effect.withErrorReporting,
@@ -918,6 +930,37 @@ type StreamEncoder = (response: unknown, context: Context.Context<never>) =>
918
930
  | Effect.Effect<HttpServerResponse, Schema.SchemaError, unknown>
919
931
  | undefined
920
932
 
933
+ type WithHeadersEncoder = (headers: unknown) => Effect.Effect<unknown, Schema.SchemaError, unknown>
934
+
935
+ interface WithHeadersEncoders {
936
+ readonly encodeBody: (body: unknown) => Effect.Effect<HttpServerResponse, Schema.SchemaError, unknown>
937
+ readonly encodeHeaders: ReadonlyMap<number, WithHeadersEncoder>
938
+ }
939
+
940
+ function makeWithHeadersEncoder(endpoint: HttpApiEndpoint.Top): WithHeadersEncoders | undefined {
941
+ const encodeHeaders = new Map<number, WithHeadersEncoder>()
942
+ const bodySchemas: Array<Schema.ConstraintEncoder<HttpServerResponse, unknown>> = []
943
+ for (const schema of endpoint.success) {
944
+ if (!HttpApiSchema.isWithHeaders(schema)) continue
945
+ encodeHeaders.set(HttpApiSchema.getStatusSuccessSchema(schema), Schema.encodeUnknownEffect(schema.headers))
946
+ if (!HttpApiSchema.isStreamSchema(schema.schema)) {
947
+ bodySchemas.push(toResponseSuccessSchema(schema))
948
+ }
949
+ }
950
+ if (encodeHeaders.size === 0) return undefined
951
+ // Branded response bodies encode against the header-carrying members only, so
952
+ // the encoded status always has a matching header schema.
953
+ const bodySchema: Schema.ConstraintEncoder<HttpServerResponse, unknown> = bodySchemas.length === 0
954
+ ? Schema.Never
955
+ : bodySchemas.length === 1
956
+ ? bodySchemas[0]
957
+ : Schema.Union(bodySchemas)
958
+ return {
959
+ encodeBody: Schema.encodeUnknownEffect(bodySchema),
960
+ encodeHeaders
961
+ }
962
+ }
963
+
921
964
  function makeStreamEncoder(endpoint: HttpApiEndpoint.Top): StreamEncoder | undefined {
922
965
  const streamSchema = getStreamSuccessSchema(endpoint)
923
966
  if (streamSchema === undefined) {
@@ -967,15 +1010,17 @@ function makeStreamEncoder(endpoint: HttpApiEndpoint.Top): StreamEncoder | undef
967
1010
 
968
1011
  function getStreamSuccessSchema(endpoint: HttpApiEndpoint.Top) {
969
1012
  for (const schema of endpoint.success) {
970
- if (HttpApiSchema.isStreamSchema(schema)) {
971
- return schema
1013
+ const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
1014
+ if (HttpApiSchema.isStreamSchema(body)) {
1015
+ return body
972
1016
  }
973
1017
  }
974
1018
  }
975
1019
 
976
1020
  function hasBufferedSuccess(endpoint: HttpApiEndpoint.Top): boolean {
977
1021
  for (const schema of endpoint.success) {
978
- if (Schema.isSchema(schema) && !HttpApiSchema.isStreamSchema(schema)) return true
1022
+ const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
1023
+ if (Schema.isSchema(body) && !HttpApiSchema.isStreamSchema(body)) return true
979
1024
  }
980
1025
  return endpoint.success.size === 0
981
1026
  }
@@ -1040,8 +1085,31 @@ function renderSseEvent(event: Sse.EventEncoded) {
1040
1085
  })
1041
1086
  }
1042
1087
 
1043
- const toResponseSuccessSchema = toResponseSchema(HttpApiSchema.getStatusSuccess)
1044
- const toResponseErrorSchema = toResponseSchema(HttpApiSchema.getStatusError)
1088
+ const toResponseSuccessSchema = toResponseSchema(HttpApiSchema.getStatusSuccessSchema)
1089
+ const toResponseErrorSchemaPlain = toResponseSchema(HttpApiSchema.getStatusErrorSchema)
1090
+
1091
+ function toResponseErrorSchema(
1092
+ schema: Schema.Constraint
1093
+ ): Schema.ConstraintEncoder<HttpServerResponse, unknown> {
1094
+ if (!HttpApiSchema.isWithHeaders(schema)) return toResponseErrorSchemaPlain(schema)
1095
+
1096
+ const encodeBody = Schema.encodeUnknownEffect(schema.schema)
1097
+ const encodeHeaders = Schema.encodeUnknownEffect(schema.headers)
1098
+ const encodeResponse = getResponseEncode(
1099
+ HttpApiSchema.getStatusErrorSchema(schema),
1100
+ HttpApiSchema.getResponseEncodingSchema(schema),
1101
+ HttpApiSchema.isNoContent(schema.schema.ast)
1102
+ )
1103
+ const transformation = withHeadersTransformation<HttpApiSchema.withHeaders<unknown, Schema.StringTree>>(
1104
+ (body, options) =>
1105
+ encodeBody(body, options).pipe(
1106
+ Effect.mapError((error) => error.issue),
1107
+ Effect.flatMap((body) => encodeResponse(body, options))
1108
+ ),
1109
+ encodeHeaders
1110
+ )
1111
+ return $HttpServerResponse.pipe(Schema.decodeTo(schema, transformation))
1112
+ }
1045
1113
 
1046
1114
  function makeSuccessSchema(
1047
1115
  endpoint: HttpApiEndpoint.Top
@@ -1058,47 +1126,92 @@ function makeErrorSchema(
1058
1126
  return schemas.length === 1 ? schemas[0] : Schema.Union(schemas)
1059
1127
  }
1060
1128
 
1061
- function toResponseSchema(getStatus: (ast: SchemaAST.AST) => number) {
1062
- const cache = new WeakMap<SchemaAST.AST, Schema.Top>()
1129
+ function toResponseSchema(getStatus: (schema: Schema.Constraint) => number) {
1130
+ // WithHeaders wrappers share a single declaration AST, so they are cached by instance
1131
+ const cache = new WeakMap<object, Schema.Top>()
1063
1132
 
1064
1133
  return (schema: Schema.Constraint): Schema.ConstraintEncoder<HttpServerResponse, unknown> => {
1065
- const cached = cache.get(schema.ast)
1134
+ const key = HttpApiSchema.isWithHeaders(schema) ? schema : schema.ast
1135
+ const cached = cache.get(key)
1066
1136
  if (cached !== undefined) {
1067
1137
  return cached as any
1068
1138
  }
1139
+ const bodySchema = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
1069
1140
  const responseSchema = $HttpServerResponse.pipe(
1070
- Schema.decodeTo(schema, getResponseTransformation(getStatus, schema))
1141
+ Schema.decodeTo(bodySchema, getResponseTransformation(getStatus, schema))
1071
1142
  )
1072
- cache.set(schema.ast, responseSchema)
1143
+ cache.set(key, responseSchema)
1073
1144
  return responseSchema
1074
1145
  }
1075
1146
  }
1076
1147
 
1077
1148
  function getResponseTransformation(
1078
- getStatus: (ast: SchemaAST.AST) => number,
1149
+ getStatus: (schema: Schema.Constraint) => number,
1079
1150
  schema: Schema.Constraint
1080
- ): SchemaTransformation.Transformation<unknown, Response.HttpServerResponse> {
1081
- const ast = schema.ast
1151
+ ): SchemaTransformation.Transformation<unknown, Response.HttpServerResponse, never, unknown> {
1152
+ const withHeaders = HttpApiSchema.getWithHeadersAnnotation(schema.ast)
1153
+ if (withHeaders !== undefined) {
1154
+ const encodeBody = getResponseEncode(
1155
+ getStatus(withHeaders.body),
1156
+ HttpApiSchema.getResponseEncoding(withHeaders.body.ast),
1157
+ HttpApiSchema.isNoContent(withHeaders.body.ast)
1158
+ )
1159
+ return withHeadersTransformation(encodeBody, Schema.encodeUnknownEffect(withHeaders.headersCodec))
1160
+ }
1161
+
1162
+ const bodySchema = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
1082
1163
  const encode = getResponseEncode(
1083
- getStatus(ast),
1084
- HttpApiSchema.getResponseEncoding(ast),
1085
- HttpApiSchema.isNoContent(ast)
1164
+ getStatus(schema),
1165
+ HttpApiSchema.getResponseEncodingSchema(schema),
1166
+ HttpApiSchema.isNoContent(bodySchema.ast)
1086
1167
  )
1087
1168
 
1088
1169
  return SchemaTransformation.transformOrFail({
1089
- decode: () => Effect.fail(new SchemaIssue.Forbidden({ message: "Encode only schema" })),
1170
+ decode: (input, options) =>
1171
+ Effect.fail(
1172
+ new SchemaIssue.Forbidden({ message: "Encode only schema" }, input, options)
1173
+ ),
1090
1174
  encode
1091
1175
  })
1092
1176
  }
1093
1177
 
1178
+ function withHeadersTransformation<T = unknown>(
1179
+ encodeBody: (
1180
+ body: unknown,
1181
+ options?: SchemaAST.ParseOptions
1182
+ ) => Effect.Effect<Response.HttpServerResponse, SchemaIssue.Issue, unknown>,
1183
+ encodeHeaders: (
1184
+ headers: unknown,
1185
+ options?: SchemaAST.ParseOptions
1186
+ ) => Effect.Effect<unknown, Schema.SchemaError, unknown>
1187
+ ): SchemaTransformation.Transformation<T, Response.HttpServerResponse, never, unknown> {
1188
+ return SchemaTransformation.transformOrFail<T, Response.HttpServerResponse, never, unknown>({
1189
+ decode: (input, options) =>
1190
+ Effect.fail(
1191
+ new SchemaIssue.Forbidden({ message: "Encode only schema" }, input, options)
1192
+ ),
1193
+ encode: (value, options) => {
1194
+ const pair = value as { readonly body: unknown; readonly headers: unknown }
1195
+ return Effect.flatMap(encodeBody(pair.body, options), (response) =>
1196
+ Effect.map(
1197
+ encodeHeaders(pair.headers, options).pipe(Effect.mapError((error) => error.issue)),
1198
+ (headers) => Response.setHeaders(response, headers as any)
1199
+ ))
1200
+ }
1201
+ })
1202
+ }
1203
+
1094
1204
  function getResponseEncode<E>(
1095
1205
  status: number,
1096
1206
  encoding: HttpApiSchema.ResponseEncoding,
1097
1207
  isNoContent: boolean
1098
- ): (e: E) => Effect.Effect<Response.HttpServerResponse, SchemaIssue.InvalidValue, never> {
1208
+ ): (
1209
+ e: E,
1210
+ options?: SchemaAST.ParseOptions
1211
+ ) => Effect.Effect<Response.HttpServerResponse, SchemaIssue.InvalidValue, never> {
1099
1212
  switch (encoding._tag) {
1100
1213
  case "Json": {
1101
- return ((e) => {
1214
+ return ((e, options) => {
1102
1215
  if (e === undefined || isNoContent) {
1103
1216
  return Effect.succeed(Response.empty({ status }))
1104
1217
  }
@@ -1107,7 +1220,11 @@ function getResponseEncode<E>(
1107
1220
  return Effect.succeed(Response.text(s, { status, contentType: encoding.contentType }))
1108
1221
  } catch {
1109
1222
  return Effect.fail(
1110
- new SchemaIssue.InvalidValue({ message: "Expected a JSON-serializable response body" })
1223
+ new SchemaIssue.InvalidValue(
1224
+ { expected: "a JSON-serializable response body" },
1225
+ e,
1226
+ options
1227
+ )
1111
1228
  )
1112
1229
  }
1113
1230
  })
@@ -68,15 +68,19 @@ export type ForApi<Api extends HttpApi.Constraint, E = never, R = never> = Api e
68
68
  HttpApi.HttpApi<infer _Id, infer Groups> ? Client<Groups, E, R> :
69
69
  never
70
70
 
71
- type SuccessType<S> = S extends HttpApiSchema.StreamSse<
72
- infer _Events,
73
- infer _Error,
74
- infer _Value
75
- > ? Stream.Stream<
76
- _Value,
77
- _Error["Type"] | HttpClientError.HttpClientError | Schema.SchemaError | Sse.Retry | Sse.SseError,
78
- never
79
- >
71
+ type SuccessType<S> = S extends HttpApiSchema.WithHeaders<
72
+ infer _Inner,
73
+ infer _Headers
74
+ > ? HttpApiSchema.withHeaders<SuccessType<_Inner>, _Headers["Type"]>
75
+ : S extends HttpApiSchema.StreamSse<
76
+ infer _Events,
77
+ infer _Error,
78
+ infer _Value
79
+ > ? Stream.Stream<
80
+ _Value,
81
+ _Error["Type"] | HttpClientError.HttpClientError | Schema.SchemaError | Sse.Retry | Sse.SseError,
82
+ never
83
+ >
80
84
  : S extends HttpApiSchema.StreamUint8Array ? Stream.Stream<Uint8Array, HttpClientError.HttpClientError, never>
81
85
  : S extends Schema.Constraint ? S["Type"]
82
86
  : never
@@ -366,10 +370,11 @@ export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Con
366
370
  }
367
371
  }
368
372
  for (const streamSuccess of getStreamSuccessSchemas(endpoint)) {
373
+ const streamSchema = isWithHeadersStreamSuccess(streamSuccess) ? streamSuccess.schema : streamSuccess
369
374
  addResponseAlternative(
370
375
  successAlternatives,
371
- HttpApiSchema.getStatusStream(streamSuccess),
372
- streamSuccess.contentType,
376
+ HttpApiSchema.getStatusSuccessSchema(streamSuccess),
377
+ streamSchema.contentType,
373
378
  streamToResponse(streamSuccess)
374
379
  )
375
380
  }
@@ -722,9 +727,44 @@ const compilePath = (path: string) => {
722
727
  }
723
728
 
724
729
  function schemasToResponse(schemas: readonly [Schema.Constraint, ...Array<Schema.Constraint>]) {
725
- const codec = toCodecArrayBuffer(schemas)
730
+ const hasWithHeaders = schemas.some((schema) =>
731
+ HttpApiSchema.isWithHeaders(schema) || HttpApiSchema.getWithHeadersAnnotation(schema.ast) !== undefined
732
+ )
733
+ const codec = hasWithHeaders
734
+ ? Schema.Union(schemas.map(toCodecArrayBufferWithHeaders))
735
+ : toCodecArrayBuffer(schemas)
726
736
  const decode = Schema.decodeEffect(codec)
727
- return (response: HttpClientResponse.HttpClientResponse) => Effect.flatMap(response.arrayBuffer, decode)
737
+ return (response: HttpClientResponse.HttpClientResponse) =>
738
+ Effect.flatMap(
739
+ response.arrayBuffer,
740
+ hasWithHeaders
741
+ ? (body) => decode({ body, headers: response.headers })
742
+ : decode
743
+ )
744
+ }
745
+
746
+ function toCodecArrayBufferWithHeaders(schema: Schema.Constraint): Schema.Top {
747
+ const isWithHeaders = HttpApiSchema.isWithHeaders(schema)
748
+ const annotation = HttpApiSchema.getWithHeadersAnnotation(schema.ast)
749
+ if (annotation !== undefined) {
750
+ return Schema.Struct({
751
+ body: fromArrayBuffer(annotation.body),
752
+ headers: annotation.headersCodec
753
+ }).pipe(Schema.decodeTo(schema))
754
+ }
755
+ const body = isWithHeaders ? schema.schema : schema
756
+ return Schema.Struct({
757
+ body: fromArrayBuffer(body).pipe(Schema.decodeTo(body)),
758
+ headers: isWithHeaders ? schema.headers : Schema.Unknown
759
+ }).pipe(
760
+ Schema.decodeTo(
761
+ isWithHeaders ? schema : Schema.toType(schema),
762
+ SchemaTransformation.transform({
763
+ decode: (value) => isWithHeaders ? HttpApiSchema.withHeaders(value) : value.body,
764
+ encode: (value: any) => isWithHeaders ? value : { body: value, headers: undefined }
765
+ }) as any
766
+ )
767
+ )
728
768
  }
729
769
 
730
770
  type ResponseDecoder = (response: HttpClientResponse.HttpClientResponse) => Effect.Effect<unknown, unknown, unknown>
@@ -768,9 +808,10 @@ function groupSchemasByContentType(
768
808
  ): Map<string, Arr.NonEmptyReadonlyArray<Schema.Top>> {
769
809
  const grouped = new Map<string, [Schema.Top, ...Array<Schema.Top>]>()
770
810
  for (const schema of schemas) {
771
- const contentType = HttpApiSchema.isNoContent(schema.ast)
811
+ const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
812
+ const contentType = HttpApiSchema.isNoContent(body.ast)
772
813
  ? ""
773
- : MediaType.normalize(HttpApiSchema.getResponseEncoding(schema.ast).contentType)
814
+ : MediaType.normalize(HttpApiSchema.getResponseEncodingSchema(schema).contentType)
774
815
  const existing = grouped.get(contentType)
775
816
  if (existing === undefined) {
776
817
  grouped.set(contentType, [schema])
@@ -802,24 +843,35 @@ function failUnsupportedContentType(
802
843
 
803
844
  const reservedStreamFailureEvent = "effect/httpapi/stream/failure"
804
845
 
805
- function getStreamSuccessSchemas(endpoint: HttpApiEndpoint.Top): Array<HttpApiSchema.StreamSchema> {
806
- const schemas: Array<HttpApiSchema.StreamSchema> = []
846
+ type StreamSuccessSchema =
847
+ | HttpApiSchema.StreamSchema
848
+ | HttpApiSchema.WithHeaders<HttpApiSchema.StreamSchema, Schema.Top>
849
+
850
+ const isWithHeadersStreamSuccess = (
851
+ schema: StreamSuccessSchema
852
+ ): schema is HttpApiSchema.WithHeaders<HttpApiSchema.StreamSchema, Schema.Top> => HttpApiSchema.isWithHeaders(schema)
853
+
854
+ function getStreamSuccessSchemas(endpoint: HttpApiEndpoint.Top): Array<StreamSuccessSchema> {
855
+ const schemas: Array<StreamSuccessSchema> = []
807
856
  for (const schema of endpoint.success) {
808
- if (HttpApiSchema.isStreamSchema(schema)) {
809
- schemas.push(schema)
857
+ const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
858
+ if (HttpApiSchema.isStreamSchema(body)) {
859
+ schemas.push(schema as StreamSuccessSchema)
810
860
  }
811
861
  }
812
862
  return schemas
813
863
  }
814
864
 
815
- function streamToResponse(streamSchema: HttpApiSchema.StreamSchema) {
865
+ function streamToResponse(successSchema: StreamSuccessSchema) {
866
+ const isWithHeaders = isWithHeadersStreamSuccess(successSchema)
867
+ const streamSchema = isWithHeaders ? successSchema.schema : successSchema
816
868
  const sse = HttpApiSchema.isStreamUint8Array(streamSchema)
817
869
  ? undefined
818
870
  : {
819
871
  declaration: streamSchema,
820
872
  decoder: makeSseDecoder(streamSchema)
821
873
  }
822
- return (response: HttpClientResponse.HttpClientResponse) =>
874
+ const toStream = (response: HttpClientResponse.HttpClientResponse) =>
823
875
  Effect.map(Effect.context<never>(), (context) =>
824
876
  Stream.provideContext(
825
877
  sse === undefined ?
@@ -827,6 +879,14 @@ function streamToResponse(streamSchema: HttpApiSchema.StreamSchema) {
827
879
  decodeSseStream(response.stream, sse.declaration, sse.decoder),
828
880
  context as Context.Context<unknown>
829
881
  ))
882
+ if (!isWithHeaders) return toStream
883
+
884
+ const decodeHeaders = Schema.decodeUnknownEffect(successSchema.headers)
885
+ return (response: HttpClientResponse.HttpClientResponse) =>
886
+ Effect.flatMap(
887
+ decodeHeaders(response.headers),
888
+ (headers) => Effect.map(toStream(response), (body) => HttpApiSchema.withHeaders({ body, headers }))
889
+ )
830
890
  }
831
891
 
832
892
  function makeSseDecoder(
@@ -940,31 +1000,34 @@ function toCodecArrayBuffer(schemas: readonly [Schema.Constraint, ...Array<Schem
940
1000
  return Schema.Union(schemas.map(onSchema))
941
1001
 
942
1002
  function onSchema(schema: Schema.Constraint) {
943
- const encoding = HttpApiSchema.getResponseEncoding(schema.ast)
944
- switch (encoding._tag) {
945
- case "Json": {
946
- // handle json codecs that transform void schemas to null
947
- const encodedIsNull = SchemaAST.isNull(SchemaAST.toEncoded(schema.ast))
948
- return UnknownFromArrayBuffer.pipe(Schema.decodeTo(
949
- schema,
950
- encodedIsNull ?
1003
+ return fromArrayBuffer(schema).pipe(Schema.decodeTo(schema))
1004
+ }
1005
+ }
1006
+
1007
+ function fromArrayBuffer(schema: Schema.Constraint): Schema.Top {
1008
+ const encoding = HttpApiSchema.getResponseEncoding(schema.ast)
1009
+ switch (encoding._tag) {
1010
+ case "Json": {
1011
+ // handle json codecs that transform void schemas to null
1012
+ const encodedIsNull = SchemaAST.isNull(SchemaAST.toEncoded(schema.ast))
1013
+ return encodedIsNull
1014
+ ? UnknownFromArrayBuffer.pipe(
1015
+ Schema.decodeTo(
1016
+ Schema.Unknown,
951
1017
  SchemaTransformation.transform({
952
1018
  decode: (a) => a === undefined ? null : a,
953
1019
  encode: (a) => a === null ? undefined : a
954
- }) as any :
955
- undefined
956
- ))
957
- }
958
- case "FormUrlEncoded":
959
- return StringFromArrayBuffer.pipe(
960
- Schema.decodeTo(UrlParams.schemaRecord),
961
- Schema.decodeTo(schema)
1020
+ }) as any
1021
+ )
962
1022
  )
963
- case "Uint8Array":
964
- return Uint8ArrayFromArrayBuffer.pipe(Schema.decodeTo(schema))
965
- case "Text":
966
- return StringFromArrayBuffer.pipe(Schema.decodeTo(schema))
1023
+ : UnknownFromArrayBuffer
967
1024
  }
1025
+ case "FormUrlEncoded":
1026
+ return StringFromArrayBuffer.pipe(Schema.decodeTo(UrlParams.schemaRecord))
1027
+ case "Uint8Array":
1028
+ return Uint8ArrayFromArrayBuffer
1029
+ case "Text":
1030
+ return StringFromArrayBuffer
968
1031
  }
969
1032
  }
970
1033
 
@@ -1002,41 +1065,59 @@ function getEncodePayloadSchemaFromBody(
1002
1065
  const out = $HttpBody.pipe(Schema.decodeTo(
1003
1066
  schema,
1004
1067
  SchemaTransformation.transformOrFail<unknown, HttpBody.HttpBody>({
1005
- decode() {
1006
- return Effect.fail(new SchemaIssue.Forbidden({ message: "Encode only schema" }))
1068
+ decode(input, options) {
1069
+ return Effect.fail(
1070
+ new SchemaIssue.Forbidden({ message: "Encode only schema" }, input, options)
1071
+ )
1007
1072
  },
1008
- encode(t) {
1073
+ encode(t, options) {
1009
1074
  switch (encoding._tag) {
1010
1075
  case "Multipart":
1011
- return Effect.fail(new SchemaIssue.Forbidden({ message: "Payload must be a FormData" }))
1076
+ return Effect.fail(
1077
+ new SchemaIssue.Forbidden(
1078
+ { message: "Payload must be a FormData" },
1079
+ t,
1080
+ options
1081
+ )
1082
+ )
1012
1083
  case "Json": {
1013
1084
  try {
1014
1085
  const body = JSON.stringify(t)
1015
1086
  return Effect.succeed(HttpBody.text(body, encoding.contentType))
1016
1087
  } catch {
1017
1088
  return Effect.fail(
1018
- new SchemaIssue.InvalidValue({ message: "Expected a JSON-serializable request body" })
1089
+ new SchemaIssue.InvalidValue(
1090
+ { expected: "a JSON-serializable request body" },
1091
+ t,
1092
+ options
1093
+ )
1019
1094
  )
1020
1095
  }
1021
1096
  }
1022
1097
  case "Text": {
1023
1098
  if (typeof t !== "string") {
1024
1099
  return Effect.fail(
1025
- new SchemaIssue.InvalidValue({ message: "Expected a string" })
1100
+ new SchemaIssue.InvalidValue({ message: "Expected a string" }, t, options)
1026
1101
  )
1027
1102
  }
1028
1103
  return Effect.succeed(HttpBody.text(t, encoding.contentType))
1029
1104
  }
1030
1105
  case "FormUrlEncoded": {
1031
1106
  if (!Predicate.isObject(t)) {
1032
- return Effect.fail(new SchemaIssue.InvalidValue({ message: "Expected a record" }))
1107
+ return Effect.fail(
1108
+ new SchemaIssue.InvalidValue({ message: "Expected a record" }, t, options)
1109
+ )
1033
1110
  }
1034
1111
  return Effect.succeed(HttpBody.urlParams(UrlParams.fromInput(t as any), encoding.contentType))
1035
1112
  }
1036
1113
  case "Uint8Array": {
1037
1114
  if (!(t instanceof Uint8Array)) {
1038
1115
  return Effect.fail(
1039
- new SchemaIssue.InvalidValue({ message: "Expected a Uint8Array" })
1116
+ new SchemaIssue.InvalidValue(
1117
+ { message: "Expected a Uint8Array" },
1118
+ t,
1119
+ options
1120
+ )
1040
1121
  )
1041
1122
  }
1042
1123
  return Effect.succeed(HttpBody.uint8Array(t, encoding.contentType))