effect 4.0.0-beta.1 → 4.0.0-beta.11

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 (641) hide show
  1. package/dist/Cache.d.ts +2 -2
  2. package/dist/Cache.d.ts.map +1 -1
  3. package/dist/Cache.js +1 -1
  4. package/dist/Cache.js.map +1 -1
  5. package/dist/Cause.d.ts +1 -1
  6. package/dist/Cause.d.ts.map +1 -1
  7. package/dist/Channel.d.ts +7 -7
  8. package/dist/Channel.d.ts.map +1 -1
  9. package/dist/Channel.js +6 -4
  10. package/dist/Channel.js.map +1 -1
  11. package/dist/Combiner.d.ts +280 -13
  12. package/dist/Combiner.d.ts.map +1 -1
  13. package/dist/Combiner.js +198 -7
  14. package/dist/Combiner.js.map +1 -1
  15. package/dist/Config.d.ts +3 -3
  16. package/dist/Config.js +3 -3
  17. package/dist/Config.js.map +1 -1
  18. package/dist/ConfigProvider.d.ts +1 -1
  19. package/dist/Cron.d.ts +1 -1
  20. package/dist/Data.d.ts +534 -365
  21. package/dist/Data.d.ts.map +1 -1
  22. package/dist/Data.js +132 -79
  23. package/dist/Data.js.map +1 -1
  24. package/dist/DateTime.d.ts +23 -161
  25. package/dist/DateTime.d.ts.map +1 -1
  26. package/dist/DateTime.js +6 -51
  27. package/dist/DateTime.js.map +1 -1
  28. package/dist/Duration.d.ts +12 -12
  29. package/dist/Duration.d.ts.map +1 -1
  30. package/dist/Duration.js +12 -12
  31. package/dist/Duration.js.map +1 -1
  32. package/dist/Effect.d.ts +342 -248
  33. package/dist/Effect.d.ts.map +1 -1
  34. package/dist/Effect.js +119 -119
  35. package/dist/Effect.js.map +1 -1
  36. package/dist/Encoding.d.ts +194 -0
  37. package/dist/Encoding.d.ts.map +1 -0
  38. package/dist/Encoding.js +352 -0
  39. package/dist/Encoding.js.map +1 -0
  40. package/dist/Equal.d.ts +276 -109
  41. package/dist/Equal.d.ts.map +1 -1
  42. package/dist/Equal.js +124 -48
  43. package/dist/Equal.js.map +1 -1
  44. package/dist/ErrorReporter.d.ts +376 -0
  45. package/dist/ErrorReporter.d.ts.map +1 -0
  46. package/dist/ErrorReporter.js +246 -0
  47. package/dist/ErrorReporter.js.map +1 -0
  48. package/dist/FileSystem.d.ts +1 -1
  49. package/dist/FileSystem.d.ts.map +1 -1
  50. package/dist/FileSystem.js +5 -5
  51. package/dist/FileSystem.js.map +1 -1
  52. package/dist/Filter.d.ts +30 -1
  53. package/dist/Filter.d.ts.map +1 -1
  54. package/dist/Filter.js +15 -0
  55. package/dist/Filter.js.map +1 -1
  56. package/dist/Formatter.d.ts +131 -47
  57. package/dist/Formatter.d.ts.map +1 -1
  58. package/dist/Formatter.js +229 -51
  59. package/dist/Formatter.js.map +1 -1
  60. package/dist/Graph.d.ts +1 -1
  61. package/dist/Graph.d.ts.map +1 -1
  62. package/dist/Graph.js +2 -2
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/JsonSchema.d.ts +299 -10
  65. package/dist/JsonSchema.d.ts.map +1 -1
  66. package/dist/JsonSchema.js +323 -4
  67. package/dist/JsonSchema.js.map +1 -1
  68. package/dist/Latch.d.ts +109 -0
  69. package/dist/Latch.d.ts.map +1 -0
  70. package/dist/Latch.js +72 -0
  71. package/dist/Latch.js.map +1 -0
  72. package/dist/LayerMap.d.ts +4 -4
  73. package/dist/LayerMap.d.ts.map +1 -1
  74. package/dist/LogLevel.d.ts +32 -0
  75. package/dist/LogLevel.d.ts.map +1 -1
  76. package/dist/LogLevel.js +28 -100
  77. package/dist/LogLevel.js.map +1 -1
  78. package/dist/Logger.d.ts +29 -95
  79. package/dist/Logger.d.ts.map +1 -1
  80. package/dist/Logger.js +2 -3
  81. package/dist/Logger.js.map +1 -1
  82. package/dist/Metric.d.ts +2 -2
  83. package/dist/Metric.d.ts.map +1 -1
  84. package/dist/Metric.js +1 -1
  85. package/dist/Metric.js.map +1 -1
  86. package/dist/Optic.d.ts +947 -18
  87. package/dist/Optic.d.ts.map +1 -1
  88. package/dist/Optic.js +454 -5
  89. package/dist/Optic.js.map +1 -1
  90. package/dist/Pipeable.d.ts +17 -0
  91. package/dist/Pipeable.d.ts.map +1 -1
  92. package/dist/Pipeable.js +19 -1
  93. package/dist/Pipeable.js.map +1 -1
  94. package/dist/PlatformError.d.ts +10 -9
  95. package/dist/PlatformError.d.ts.map +1 -1
  96. package/dist/PlatformError.js +2 -2
  97. package/dist/PlatformError.js.map +1 -1
  98. package/dist/Pool.d.ts +6 -4
  99. package/dist/Pool.d.ts.map +1 -1
  100. package/dist/Pool.js +7 -5
  101. package/dist/Pool.js.map +1 -1
  102. package/dist/PubSub.d.ts +3 -2
  103. package/dist/PubSub.d.ts.map +1 -1
  104. package/dist/PubSub.js +3 -2
  105. package/dist/PubSub.js.map +1 -1
  106. package/dist/Queue.d.ts.map +1 -1
  107. package/dist/Queue.js +0 -1
  108. package/dist/Queue.js.map +1 -1
  109. package/dist/Random.d.ts +18 -1
  110. package/dist/Random.d.ts.map +1 -1
  111. package/dist/Random.js +29 -12
  112. package/dist/Random.js.map +1 -1
  113. package/dist/RcMap.d.ts +2 -2
  114. package/dist/RcMap.d.ts.map +1 -1
  115. package/dist/RcMap.js +1 -1
  116. package/dist/RcMap.js.map +1 -1
  117. package/dist/RcRef.d.ts +1 -1
  118. package/dist/RcRef.d.ts.map +1 -1
  119. package/dist/Reducer.d.ts +166 -7
  120. package/dist/Reducer.d.ts.map +1 -1
  121. package/dist/Reducer.js +135 -1
  122. package/dist/Reducer.js.map +1 -1
  123. package/dist/References.d.ts +3 -3
  124. package/dist/References.d.ts.map +1 -1
  125. package/dist/Request.d.ts +1 -1
  126. package/dist/Request.d.ts.map +1 -1
  127. package/dist/Request.js +2 -1
  128. package/dist/Request.js.map +1 -1
  129. package/dist/RequestResolver.d.ts +6 -26
  130. package/dist/RequestResolver.d.ts.map +1 -1
  131. package/dist/RequestResolver.js +0 -20
  132. package/dist/RequestResolver.js.map +1 -1
  133. package/dist/Result.d.ts +12 -0
  134. package/dist/Result.d.ts.map +1 -1
  135. package/dist/Result.js +12 -0
  136. package/dist/Result.js.map +1 -1
  137. package/dist/Schedule.d.ts +33 -14
  138. package/dist/Schedule.d.ts.map +1 -1
  139. package/dist/Schedule.js +65 -24
  140. package/dist/Schedule.js.map +1 -1
  141. package/dist/Schema.d.ts +199 -49
  142. package/dist/Schema.d.ts.map +1 -1
  143. package/dist/Schema.js +386 -72
  144. package/dist/Schema.js.map +1 -1
  145. package/dist/SchemaAST.d.ts.map +1 -1
  146. package/dist/SchemaAST.js +2 -1
  147. package/dist/SchemaAST.js.map +1 -1
  148. package/dist/SchemaGetter.d.ts +2 -2
  149. package/dist/SchemaGetter.d.ts.map +1 -1
  150. package/dist/SchemaGetter.js +12 -14
  151. package/dist/SchemaGetter.js.map +1 -1
  152. package/dist/SchemaRepresentation.d.ts +44 -43
  153. package/dist/SchemaRepresentation.d.ts.map +1 -1
  154. package/dist/SchemaRepresentation.js +43 -24
  155. package/dist/SchemaRepresentation.js.map +1 -1
  156. package/dist/SchemaTransformation.d.ts +37 -0
  157. package/dist/SchemaTransformation.d.ts.map +1 -1
  158. package/dist/SchemaTransformation.js +80 -0
  159. package/dist/SchemaTransformation.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +2 -2
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +1 -1
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/Semaphore.d.ts +211 -0
  165. package/dist/Semaphore.d.ts.map +1 -0
  166. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  167. package/dist/Semaphore.js.map +1 -0
  168. package/dist/Stream.d.ts +24 -24
  169. package/dist/Stream.d.ts.map +1 -1
  170. package/dist/Stream.js +12 -11
  171. package/dist/Stream.js.map +1 -1
  172. package/dist/Struct.d.ts +16 -0
  173. package/dist/Struct.d.ts.map +1 -1
  174. package/dist/Struct.js +22 -0
  175. package/dist/Struct.js.map +1 -1
  176. package/dist/SubscriptionRef.d.ts +2 -1
  177. package/dist/SubscriptionRef.d.ts.map +1 -1
  178. package/dist/SubscriptionRef.js +2 -1
  179. package/dist/SubscriptionRef.js.map +1 -1
  180. package/dist/SynchronizedRef.d.ts +2 -1
  181. package/dist/SynchronizedRef.d.ts.map +1 -1
  182. package/dist/SynchronizedRef.js +2 -1
  183. package/dist/SynchronizedRef.js.map +1 -1
  184. package/dist/Types.d.ts +14 -6
  185. package/dist/Types.d.ts.map +1 -1
  186. package/dist/index.d.ts +503 -19
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +503 -19
  189. package/dist/index.js.map +1 -1
  190. package/dist/internal/core.js +11 -3
  191. package/dist/internal/core.js.map +1 -1
  192. package/dist/internal/dateTime.js +3 -11
  193. package/dist/internal/dateTime.js.map +1 -1
  194. package/dist/internal/effect.js +85 -26
  195. package/dist/internal/effect.js.map +1 -1
  196. package/dist/internal/hashMap.js +2 -2
  197. package/dist/internal/hashMap.js.map +1 -1
  198. package/dist/internal/random.d.ts +2 -0
  199. package/dist/internal/random.d.ts.map +1 -0
  200. package/dist/internal/random.js +13 -0
  201. package/dist/internal/random.js.map +1 -0
  202. package/dist/internal/rcRef.js +3 -2
  203. package/dist/internal/rcRef.js.map +1 -1
  204. package/dist/testing/TestClock.d.ts +7 -6
  205. package/dist/testing/TestClock.d.ts.map +1 -1
  206. package/dist/testing/TestClock.js +6 -4
  207. package/dist/testing/TestClock.js.map +1 -1
  208. package/dist/testing/TestSchema.d.ts +6 -6
  209. package/dist/testing/TestSchema.d.ts.map +1 -1
  210. package/dist/unstable/ai/AiError.d.ts +48 -48
  211. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  212. package/dist/unstable/ai/Chat.d.ts +3 -3
  213. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  214. package/dist/unstable/ai/Chat.js +4 -3
  215. package/dist/unstable/ai/Chat.js.map +1 -1
  216. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  217. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  218. package/dist/unstable/ai/LanguageModel.js +41 -0
  219. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  220. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  221. package/dist/unstable/ai/McpServer.d.ts +1 -1
  222. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  223. package/dist/unstable/ai/McpServer.js.map +1 -1
  224. package/dist/unstable/ai/Prompt.d.ts +20 -20
  225. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  226. package/dist/unstable/ai/Response.d.ts +26 -26
  227. package/dist/unstable/ai/Response.d.ts.map +1 -1
  228. package/dist/unstable/ai/Response.js +1 -1
  229. package/dist/unstable/ai/Response.js.map +1 -1
  230. package/dist/unstable/cli/CliError.d.ts +5 -5
  231. package/dist/unstable/cli/CliOutput.js +37 -6
  232. package/dist/unstable/cli/CliOutput.js.map +1 -1
  233. package/dist/unstable/cli/Command.d.ts +199 -7
  234. package/dist/unstable/cli/Command.d.ts.map +1 -1
  235. package/dist/unstable/cli/Command.js +116 -6
  236. package/dist/unstable/cli/Command.js.map +1 -1
  237. package/dist/unstable/cli/HelpDoc.d.ts +60 -2
  238. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  239. package/dist/unstable/cli/internal/command.d.ts +11 -1
  240. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  241. package/dist/unstable/cli/internal/command.js +33 -8
  242. package/dist/unstable/cli/internal/command.js.map +1 -1
  243. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
  244. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  245. package/dist/unstable/cli/internal/parser.js +10 -2
  246. package/dist/unstable/cli/internal/parser.js.map +1 -1
  247. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  248. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  249. package/dist/unstable/cluster/ClusterCron.js +1 -1
  250. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  251. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  252. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  253. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  254. package/dist/unstable/cluster/Entity.d.ts +5 -4
  255. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  256. package/dist/unstable/cluster/Entity.js.map +1 -1
  257. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  258. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  259. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  260. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  261. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  262. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  263. package/dist/unstable/cluster/Message.d.ts +10 -10
  264. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  265. package/dist/unstable/cluster/MessageStorage.js +2 -1
  266. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  267. package/dist/unstable/cluster/Reply.d.ts +6 -6
  268. package/dist/unstable/cluster/Runner.d.ts +1 -1
  269. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  270. package/dist/unstable/cluster/Runners.js +4 -3
  271. package/dist/unstable/cluster/Runners.js.map +1 -1
  272. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  273. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  274. package/dist/unstable/cluster/Sharding.js +8 -6
  275. package/dist/unstable/cluster/Sharding.js.map +1 -1
  276. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  277. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  278. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  279. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  280. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  281. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  282. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  283. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  284. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  285. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  286. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  287. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  288. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  289. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  290. package/dist/unstable/encoding/Sse.d.ts +4 -4
  291. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  292. package/dist/unstable/encoding/Sse.js.map +1 -1
  293. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  294. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  295. package/dist/unstable/eventlog/EventLog.js +2 -1
  296. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  297. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  298. package/dist/unstable/http/Cookies.d.ts +3 -3
  299. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  300. package/dist/unstable/http/Cookies.js +2 -2
  301. package/dist/unstable/http/Cookies.js.map +1 -1
  302. package/dist/unstable/http/Headers.d.ts.map +1 -1
  303. package/dist/unstable/http/Headers.js +27 -10
  304. package/dist/unstable/http/Headers.js.map +1 -1
  305. package/dist/unstable/http/HttpBody.d.ts +17 -2
  306. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  307. package/dist/unstable/http/HttpBody.js +28 -1
  308. package/dist/unstable/http/HttpBody.js.map +1 -1
  309. package/dist/unstable/http/HttpClient.d.ts +11 -11
  310. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  311. package/dist/unstable/http/HttpClient.js +4 -4
  312. package/dist/unstable/http/HttpClient.js.map +1 -1
  313. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  314. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  315. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  316. package/dist/unstable/http/HttpClientRequest.js +15 -3
  317. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  318. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  319. package/dist/unstable/http/HttpEffect.js +30 -33
  320. package/dist/unstable/http/HttpEffect.js.map +1 -1
  321. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  322. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  323. package/dist/unstable/http/HttpMethod.js +3 -3
  324. package/dist/unstable/http/HttpMethod.js.map +1 -1
  325. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  326. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  327. package/dist/unstable/http/HttpMiddleware.js +4 -9
  328. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  329. package/dist/unstable/http/HttpServerError.d.ts +14 -32
  330. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  331. package/dist/unstable/http/HttpServerError.js +11 -27
  332. package/dist/unstable/http/HttpServerError.js.map +1 -1
  333. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  334. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  335. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  336. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  337. package/dist/unstable/http/HttpServerResponse.d.ts +2 -1
  338. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  339. package/dist/unstable/http/HttpServerResponse.js +3 -1
  340. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  341. package/dist/unstable/http/Multipart.d.ts +3 -3
  342. package/dist/unstable/http/UrlParams.d.ts +14 -6
  343. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  344. package/dist/unstable/http/UrlParams.js +1 -1
  345. package/dist/unstable/http/UrlParams.js.map +1 -1
  346. package/dist/unstable/httpapi/HttpApiBuilder.js +6 -6
  347. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  348. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  349. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  350. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  351. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  352. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  353. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  354. package/dist/unstable/httpapi/HttpApiError.d.ts +11 -0
  355. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  356. package/dist/unstable/httpapi/HttpApiError.js +29 -9
  357. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  358. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  359. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  360. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  361. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  362. package/dist/unstable/httpapi/OpenApi.js +18 -16
  363. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  364. package/dist/unstable/observability/Otlp.d.ts +12 -12
  365. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  366. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  367. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  368. package/dist/unstable/observability/OtlpExporter.js +1 -1
  369. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  370. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  371. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  372. package/dist/unstable/observability/OtlpLogger.js +7 -4
  373. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  374. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  375. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  376. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  377. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  378. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  379. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  380. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  381. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  382. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  383. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  384. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  385. package/dist/unstable/persistence/PersistedCache.js +2 -1
  386. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  387. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  388. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  389. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  390. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  391. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  392. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  393. package/dist/unstable/persistence/Persistence.js +2 -2
  394. package/dist/unstable/persistence/Persistence.js.map +1 -1
  395. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  396. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  397. package/dist/unstable/persistence/RateLimiter.js +1 -1
  398. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  399. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  400. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  401. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  402. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  403. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  404. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  405. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  406. package/dist/unstable/reactivity/Atom.js +15 -12
  407. package/dist/unstable/reactivity/Atom.js.map +1 -1
  408. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  409. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  410. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  411. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  412. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  413. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  414. package/dist/unstable/reactivity/AtomRegistry.js +22 -1
  415. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  416. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  417. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  418. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  419. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  420. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  421. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  422. package/dist/unstable/reactivity/Hydration.js +76 -0
  423. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  424. package/dist/unstable/reactivity/index.d.ts +4 -0
  425. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  426. package/dist/unstable/reactivity/index.js +4 -0
  427. package/dist/unstable/reactivity/index.js.map +1 -1
  428. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  429. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  430. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  431. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  432. package/dist/unstable/rpc/RpcClient.js +6 -13
  433. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  434. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  435. package/dist/unstable/rpc/RpcServer.js +9 -3
  436. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  437. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  438. package/dist/unstable/rpc/Utils.js +2 -1
  439. package/dist/unstable/rpc/Utils.js.map +1 -1
  440. package/dist/unstable/schema/Model.d.ts +4 -4
  441. package/dist/unstable/schema/Model.d.ts.map +1 -1
  442. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  443. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  444. package/dist/unstable/schema/VariantSchema.js +13 -2
  445. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  446. package/dist/unstable/socket/Socket.d.ts +4 -4
  447. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  448. package/dist/unstable/socket/Socket.js +3 -2
  449. package/dist/unstable/socket/Socket.js.map +1 -1
  450. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  451. package/dist/unstable/sql/Migrator.d.ts +1 -1
  452. package/dist/unstable/sql/SqlError.d.ts +2 -2
  453. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  454. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  455. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  456. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  457. package/dist/unstable/sql/SqlSchema.js +24 -3
  458. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  459. package/dist/unstable/sql/Statement.js +0 -1
  460. package/dist/unstable/sql/Statement.js.map +1 -1
  461. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  462. package/dist/unstable/workers/Worker.js +2 -1
  463. package/dist/unstable/workers/Worker.js.map +1 -1
  464. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  465. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  466. package/dist/unstable/workflow/DurableClock.js +3 -3
  467. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  468. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  469. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  470. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  471. package/dist/unstable/workflow/WorkflowEngine.d.ts +8 -1
  472. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  473. package/dist/unstable/workflow/WorkflowEngine.js +133 -1
  474. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  475. package/package.json +2 -2
  476. package/src/Cache.ts +3 -3
  477. package/src/Cause.ts +1 -1
  478. package/src/Channel.ts +15 -13
  479. package/src/Combiner.ts +280 -13
  480. package/src/Config.ts +3 -3
  481. package/src/Data.ts +538 -374
  482. package/src/DateTime.ts +24 -164
  483. package/src/Duration.ts +15 -15
  484. package/src/Effect.ts +378 -269
  485. package/src/Encoding.ts +879 -0
  486. package/src/Equal.ts +278 -111
  487. package/src/ErrorReporter.ts +459 -0
  488. package/src/FileSystem.ts +7 -8
  489. package/src/Filter.ts +48 -1
  490. package/src/Formatter.ts +253 -51
  491. package/src/Graph.ts +8 -5
  492. package/src/JsonSchema.ts +383 -10
  493. package/src/Latch.ts +112 -0
  494. package/src/LayerMap.ts +5 -5
  495. package/src/LogLevel.ts +37 -0
  496. package/src/Logger.ts +33 -100
  497. package/src/Metric.ts +4 -4
  498. package/src/Optic.ts +948 -19
  499. package/src/Pipeable.ts +32 -1
  500. package/src/PlatformError.ts +5 -5
  501. package/src/Pool.ts +13 -11
  502. package/src/PubSub.ts +10 -9
  503. package/src/Queue.ts +0 -1
  504. package/src/Random.ts +33 -14
  505. package/src/RcMap.ts +5 -5
  506. package/src/RcRef.ts +1 -1
  507. package/src/Reducer.ts +166 -7
  508. package/src/References.ts +4 -4
  509. package/src/Request.ts +3 -2
  510. package/src/RequestResolver.ts +9 -29
  511. package/src/Result.ts +13 -0
  512. package/src/Schedule.ts +279 -140
  513. package/src/Schema.ts +575 -113
  514. package/src/SchemaAST.ts +2 -1
  515. package/src/SchemaGetter.ts +12 -14
  516. package/src/SchemaRepresentation.ts +43 -24
  517. package/src/SchemaTransformation.ts +104 -0
  518. package/src/ScopedCache.ts +3 -3
  519. package/src/Semaphore.ts +356 -0
  520. package/src/Stream.ts +50 -49
  521. package/src/Struct.ts +26 -0
  522. package/src/SubscriptionRef.ts +3 -2
  523. package/src/SynchronizedRef.ts +3 -2
  524. package/src/Types.ts +12 -2
  525. package/src/index.ts +507 -20
  526. package/src/internal/core.ts +12 -5
  527. package/src/internal/dateTime.ts +9 -30
  528. package/src/internal/effect.ts +194 -51
  529. package/src/internal/hashMap.ts +2 -2
  530. package/src/internal/random.ts +20 -0
  531. package/src/internal/rcRef.ts +4 -3
  532. package/src/testing/TestClock.ts +13 -11
  533. package/src/testing/TestSchema.ts +8 -8
  534. package/src/unstable/ai/AiError.ts +2 -2
  535. package/src/unstable/ai/Chat.ts +12 -11
  536. package/src/unstable/ai/LanguageModel.ts +74 -3
  537. package/src/unstable/ai/McpServer.ts +2 -2
  538. package/src/unstable/ai/Prompt.ts +37 -37
  539. package/src/unstable/ai/Response.ts +25 -25
  540. package/src/unstable/cli/CliOutput.ts +45 -6
  541. package/src/unstable/cli/Command.ts +298 -11
  542. package/src/unstable/cli/HelpDoc.ts +68 -2
  543. package/src/unstable/cli/internal/command.ts +47 -11
  544. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
  545. package/src/unstable/cli/internal/parser.ts +11 -3
  546. package/src/unstable/cluster/ClusterCron.ts +2 -2
  547. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  548. package/src/unstable/cluster/Entity.ts +7 -6
  549. package/src/unstable/cluster/EntityResource.ts +4 -4
  550. package/src/unstable/cluster/Envelope.ts +1 -1
  551. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  552. package/src/unstable/cluster/MessageStorage.ts +3 -5
  553. package/src/unstable/cluster/Runners.ts +6 -5
  554. package/src/unstable/cluster/Sharding.ts +11 -9
  555. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  556. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  557. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  558. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  559. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  560. package/src/unstable/encoding/Sse.ts +2 -4
  561. package/src/unstable/eventlog/EventLog.ts +2 -1
  562. package/src/unstable/http/Cookies.ts +3 -3
  563. package/src/unstable/http/Headers.ts +28 -13
  564. package/src/unstable/http/HttpBody.ts +42 -1
  565. package/src/unstable/http/HttpClient.ts +19 -19
  566. package/src/unstable/http/HttpClientRequest.ts +38 -13
  567. package/src/unstable/http/HttpEffect.ts +27 -30
  568. package/src/unstable/http/HttpMethod.ts +16 -4
  569. package/src/unstable/http/HttpMiddleware.ts +5 -10
  570. package/src/unstable/http/HttpServerError.ts +13 -27
  571. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  572. package/src/unstable/http/HttpServerResponse.ts +4 -2
  573. package/src/unstable/http/Multipart.ts +2 -2
  574. package/src/unstable/http/UrlParams.ts +20 -5
  575. package/src/unstable/httpapi/HttpApiBuilder.ts +6 -5
  576. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  577. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  578. package/src/unstable/httpapi/HttpApiError.ts +30 -9
  579. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  580. package/src/unstable/httpapi/OpenApi.ts +18 -16
  581. package/src/unstable/observability/Otlp.ts +12 -12
  582. package/src/unstable/observability/OtlpExporter.ts +3 -3
  583. package/src/unstable/observability/OtlpLogger.ts +13 -9
  584. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  585. package/src/unstable/observability/OtlpTracer.ts +4 -4
  586. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  587. package/src/unstable/persistence/Persistable.ts +2 -2
  588. package/src/unstable/persistence/PersistedCache.ts +20 -9
  589. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  590. package/src/unstable/persistence/Persistence.ts +3 -3
  591. package/src/unstable/persistence/RateLimiter.ts +4 -4
  592. package/src/unstable/process/ChildProcess.ts +2 -2
  593. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  594. package/src/unstable/reactivity/Atom.ts +20 -18
  595. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  596. package/src/unstable/reactivity/AtomRegistry.ts +29 -1
  597. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  598. package/src/unstable/reactivity/Hydration.ts +112 -0
  599. package/src/unstable/reactivity/index.ts +5 -0
  600. package/src/unstable/rpc/Rpc.ts +3 -3
  601. package/src/unstable/rpc/RpcClient.ts +12 -54
  602. package/src/unstable/rpc/RpcServer.ts +10 -4
  603. package/src/unstable/rpc/Utils.ts +2 -1
  604. package/src/unstable/schema/VariantSchema.ts +36 -7
  605. package/src/unstable/socket/Socket.ts +7 -6
  606. package/src/unstable/sql/SqlModel.ts +2 -2
  607. package/src/unstable/sql/SqlSchema.ts +62 -13
  608. package/src/unstable/sql/Statement.ts +0 -1
  609. package/src/unstable/workers/Worker.ts +2 -1
  610. package/src/unstable/workflow/DurableClock.ts +8 -8
  611. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  612. package/src/unstable/workflow/WorkflowEngine.ts +181 -2
  613. package/dist/PartitionedSemaphore.d.ts +0 -52
  614. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  615. package/dist/PartitionedSemaphore.js.map +0 -1
  616. package/dist/encoding/Base64.d.ts +0 -67
  617. package/dist/encoding/Base64.d.ts.map +0 -1
  618. package/dist/encoding/Base64.js +0 -146
  619. package/dist/encoding/Base64.js.map +0 -1
  620. package/dist/encoding/Base64Url.d.ts +0 -60
  621. package/dist/encoding/Base64Url.d.ts.map +0 -1
  622. package/dist/encoding/Base64Url.js +0 -89
  623. package/dist/encoding/Base64Url.js.map +0 -1
  624. package/dist/encoding/EncodingError.d.ts +0 -31
  625. package/dist/encoding/EncodingError.d.ts.map +0 -1
  626. package/dist/encoding/EncodingError.js +0 -22
  627. package/dist/encoding/EncodingError.js.map +0 -1
  628. package/dist/encoding/Hex.d.ts +0 -61
  629. package/dist/encoding/Hex.d.ts.map +0 -1
  630. package/dist/encoding/Hex.js +0 -115
  631. package/dist/encoding/Hex.js.map +0 -1
  632. package/dist/encoding/index.d.ts +0 -26
  633. package/dist/encoding/index.d.ts.map +0 -1
  634. package/dist/encoding/index.js +0 -27
  635. package/dist/encoding/index.js.map +0 -1
  636. package/src/PartitionedSemaphore.ts +0 -182
  637. package/src/encoding/Base64.ts +0 -366
  638. package/src/encoding/Base64Url.ts +0 -104
  639. package/src/encoding/EncodingError.ts +0 -35
  640. package/src/encoding/Hex.ts +0 -390
  641. package/src/encoding/index.ts +0 -31
@@ -14,6 +14,7 @@ export type HttpMethod =
14
14
  | "PATCH"
15
15
  | "HEAD"
16
16
  | "OPTIONS"
17
+ | "TRACE"
17
18
 
18
19
  /**
19
20
  * @since 4.0.0
@@ -24,7 +25,7 @@ export declare namespace HttpMethod {
24
25
  * @since 4.0.0
25
26
  * @category models
26
27
  */
27
- export type NoBody = "GET" | "HEAD" | "OPTIONS"
28
+ export type NoBody = "GET" | "HEAD" | "OPTIONS" | "TRACE"
28
29
 
29
30
  /**
30
31
  * @since 4.0.0
@@ -36,12 +37,22 @@ export declare namespace HttpMethod {
36
37
  /**
37
38
  * @since 4.0.0
38
39
  */
39
- export const hasBody = (method: HttpMethod): boolean => method !== "GET" && method !== "HEAD" && method !== "OPTIONS"
40
+ export const hasBody = (method: HttpMethod): method is HttpMethod.WithBody =>
41
+ method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE"
40
42
 
41
43
  /**
42
44
  * @since 4.0.0
43
45
  */
44
- export const all: ReadonlySet<HttpMethod> = new Set(["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"])
46
+ export const all: ReadonlySet<HttpMethod> = new Set([
47
+ "GET",
48
+ "POST",
49
+ "PUT",
50
+ "DELETE",
51
+ "PATCH",
52
+ "HEAD",
53
+ "OPTIONS",
54
+ "TRACE"
55
+ ])
45
56
 
46
57
  /**
47
58
  * @since 4.0.0
@@ -53,7 +64,8 @@ export const allShort = [
53
64
  ["DELETE", "del"],
54
65
  ["PATCH", "patch"],
55
66
  ["HEAD", "head"],
56
- ["OPTIONS", "options"]
67
+ ["OPTIONS", "options"],
68
+ ["TRACE", "trace"]
57
69
  ] as const
58
70
 
59
71
  /**
@@ -46,21 +46,16 @@ export declare namespace HttpMiddleware {
46
46
  */
47
47
  export const make = <M extends HttpMiddleware>(middleware: M): M => middleware
48
48
 
49
- /**
50
- * @since 4.0.0
51
- * @category Logger
52
- */
53
- export const LoggerDisabled = ServiceMap.Reference<boolean>("effect/http/HttpMiddleware/LoggerDisabled", {
54
- defaultValue: constFalse
55
- })
49
+ const loggerDisabledRequests = new WeakSet<HttpServerRequest>()
56
50
 
57
51
  /**
58
52
  * @since 4.0.0
59
53
  * @category Logger
60
54
  */
61
- export const withLoggerDisabled = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
55
+ export const withLoggerDisabled = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R | HttpServerRequest> =>
62
56
  Effect.withFiber((fiber) => {
63
- fiber.setServices(ServiceMap.add(fiber.services, LoggerDisabled, true))
57
+ const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
58
+ loggerDisabledRequests.add(request)
64
59
  return self
65
60
  })
66
61
 
@@ -102,7 +97,7 @@ export const logger: <E, R>(
102
97
  const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
103
98
  return Effect.withLogSpan(
104
99
  Effect.flatMap(Effect.exit(httpApp), (exit) => {
105
- if (fiber.getRef(LoggerDisabled)) {
100
+ if (loggerDisabledRequests.has(request)) {
106
101
  return exit
107
102
  } else if (exit._tag === "Failure") {
108
103
  const [response, cause] = causeResponseStripped(exit.cause)
@@ -4,6 +4,7 @@
4
4
  import * as Cause from "../../Cause.ts"
5
5
  import * as Data from "../../Data.ts"
6
6
  import * as Effect from "../../Effect.ts"
7
+ import * as ErrorReporter from "../../ErrorReporter.ts"
7
8
  import type * as Exit from "../../Exit.ts"
8
9
  import { hasProperty } from "../../Predicate.ts"
9
10
  import type * as Request from "./HttpServerRequest.ts"
@@ -32,35 +33,24 @@ export class HttpServerError extends Data.TaggedError("HttpServerError")<{
32
33
  }
33
34
  }
34
35
 
35
- /**
36
- * @since 4.0.0
37
- */
38
36
  readonly [TypeId] = TypeId
39
37
 
40
- /**
41
- * @since 4.0.0
42
- */
43
38
  override stack = `${this.name}: ${this.message}`
44
39
 
45
- /**
46
- * @since 4.0.0
47
- */
48
40
  get request(): Request.HttpServerRequest {
49
41
  return this.reason.request
50
42
  }
51
43
 
52
- /**
53
- * @since 4.0.0
54
- */
55
44
  get response(): Response.HttpServerResponse | undefined {
56
45
  return "response" in this.reason ? this.reason.response : undefined
57
46
  }
58
47
 
59
- /**
60
- * @since 4.0.0
61
- */
62
- [Respondable.TypeId]() {
63
- return this.reason[Respondable.TypeId]()
48
+ [Respondable.symbol]() {
49
+ return this.reason[Respondable.symbol]()
50
+ }
51
+
52
+ override get [ErrorReporter.ignore](): boolean {
53
+ return this.reason[ErrorReporter.ignore] ?? false
64
54
  }
65
55
 
66
56
  override get message(): string {
@@ -80,7 +70,7 @@ export class RequestParseError extends Data.TaggedError("RequestParseError")<{
80
70
  /**
81
71
  * @since 4.0.0
82
72
  */
83
- [Respondable.TypeId]() {
73
+ [Respondable.symbol]() {
84
74
  return Effect.succeed(Response.empty({ status: 400 }))
85
75
  }
86
76
 
@@ -102,13 +92,12 @@ export class RouteNotFound extends Data.TaggedError("RouteNotFound")<{
102
92
  readonly description?: string
103
93
  readonly cause?: unknown
104
94
  }> implements Respondable.Respondable {
105
- /**
106
- * @since 4.0.0
107
- */
108
- [Respondable.TypeId]() {
95
+ [Respondable.symbol]() {
109
96
  return Effect.succeed(Response.empty({ status: 404 }))
110
97
  }
111
98
 
99
+ override readonly [ErrorReporter.ignore] = true
100
+
112
101
  get methodAndUrl() {
113
102
  return `${this.request.method} ${this.request.url}`
114
103
  }
@@ -130,7 +119,7 @@ export class InternalError extends Data.TaggedError("InternalError")<{
130
119
  /**
131
120
  * @since 4.0.0
132
121
  */
133
- [Respondable.TypeId]() {
122
+ [Respondable.symbol]() {
134
123
  return Effect.succeed(Response.empty({ status: 500 }))
135
124
  }
136
125
 
@@ -159,10 +148,7 @@ export class ResponseError extends Data.TaggedError("ResponseError")<{
159
148
  readonly description?: string
160
149
  readonly cause?: unknown
161
150
  }> implements Respondable.Respondable {
162
- /**
163
- * @since 4.0.0
164
- */
165
- [Respondable.TypeId]() {
151
+ [Respondable.symbol]() {
166
152
  return Effect.succeed(Response.empty({ status: 500 }))
167
153
  }
168
154
 
@@ -12,21 +12,21 @@ import * as Response from "./HttpServerResponse.ts"
12
12
  * @since 4.0.0
13
13
  * @category Type IDs
14
14
  */
15
- export const TypeId = "~effect/http/HttpServerRespondable"
15
+ export const symbol = "~effect/http/HttpServerRespondable"
16
16
 
17
17
  /**
18
18
  * @since 4.0.0
19
19
  * @category models
20
20
  */
21
21
  export interface Respondable {
22
- readonly [TypeId]: () => Effect.Effect<HttpServerResponse, unknown>
22
+ [symbol](): Effect.Effect<HttpServerResponse, unknown>
23
23
  }
24
24
 
25
25
  /**
26
26
  * @since 4.0.0
27
27
  * @category guards
28
28
  */
29
- export const isRespondable = (u: unknown): u is Respondable => hasProperty(u, TypeId)
29
+ export const isRespondable = (u: unknown): u is Respondable => hasProperty(u, symbol)
30
30
 
31
31
  const badRequest = Response.empty({ status: 400 })
32
32
  const notFound = Response.empty({ status: 404 })
@@ -39,7 +39,7 @@ export const toResponse = (self: Respondable): Effect.Effect<HttpServerResponse>
39
39
  if (Response.isHttpServerResponse(self)) {
40
40
  return Effect.succeed(self)
41
41
  }
42
- return Effect.orDie(self[TypeId]())
42
+ return Effect.orDie(self[symbol]())
43
43
  }
44
44
 
45
45
  /**
@@ -50,7 +50,7 @@ export const toResponseOrElse = (u: unknown, orElse: HttpServerResponse): Effect
50
50
  if (Response.isHttpServerResponse(u)) {
51
51
  return Effect.succeed(u)
52
52
  } else if (isRespondable(u)) {
53
- return Effect.catchCause(u[TypeId](), () => Effect.succeed(orElse))
53
+ return Effect.catchCause(u[symbol](), () => Effect.succeed(orElse))
54
54
  // add support for some commmon types
55
55
  } else if (Schema.isSchemaError(u)) {
56
56
  return Effect.succeed(badRequest)
@@ -68,7 +68,7 @@ export const toResponseOrElseDefect = (u: unknown, orElse: HttpServerResponse):
68
68
  if (Response.isHttpServerResponse(u)) {
69
69
  return Effect.succeed(u)
70
70
  } else if (isRespondable(u)) {
71
- return Effect.catchCause(u[TypeId](), () => Effect.succeed(orElse))
71
+ return Effect.catchCause(u[symbol](), () => Effect.succeed(orElse))
72
72
  }
73
73
  return Effect.succeed(orElse)
74
74
  }
@@ -2,6 +2,7 @@
2
2
  * @since 4.0.0
3
3
  */
4
4
  import * as Effect from "../../Effect.ts"
5
+ import * as ErrorReporter from "../../ErrorReporter.ts"
5
6
  import type * as FileSystem from "../../FileSystem.ts"
6
7
  import { dual } from "../../Function.ts"
7
8
  import type * as Inspectable from "../../Inspectable.ts"
@@ -28,7 +29,7 @@ const TypeId = "~effect/http/HttpServerResponse"
28
29
  * @since 4.0.0
29
30
  * @category models
30
31
  */
31
- export interface HttpServerResponse extends Inspectable.Inspectable, Pipeable {
32
+ export interface HttpServerResponse extends Inspectable.Inspectable, Pipeable, ErrorReporter.Reportable {
32
33
  readonly [TypeId]: typeof TypeId
33
34
  readonly status: number
34
35
  readonly statusText?: string | undefined
@@ -327,7 +328,7 @@ export const formData = (
327
328
  statusText: options?.statusText,
328
329
  headers: options?.headers && Headers.fromInput(options.headers),
329
330
  cookies: options?.cookies,
330
- body: Body.makeFormData(body)
331
+ body: Body.formData(body)
331
332
  })
332
333
 
333
334
  /**
@@ -834,6 +835,7 @@ const Proto: Omit<
834
835
  > = {
835
836
  ...PipeInspectableProto,
836
837
  [TypeId]: TypeId,
838
+ [ErrorReporter.ignore]: true,
837
839
  toJSON(this: HttpServerResponse) {
838
840
  return {
839
841
  _id: "HttpServerResponse",
@@ -203,13 +203,13 @@ export const PersistedFileSchema: PersistedFileSchema = Schema.declare(
203
203
  * @since 4.0.0
204
204
  * @category Schemas
205
205
  */
206
- export const FilesSchema: Schema.Array$<PersistedFileSchema> = Schema.Array(PersistedFileSchema)
206
+ export const FilesSchema: Schema.$Array<PersistedFileSchema> = Schema.Array(PersistedFileSchema)
207
207
 
208
208
  /**
209
209
  * @since 4.0.0
210
210
  * @category Schemas
211
211
  */
212
- export const SingleFileSchema: Schema.decodeTo<PersistedFileSchema, Schema.Array$<PersistedFileSchema>> = FilesSchema
212
+ export const SingleFileSchema: Schema.decodeTo<PersistedFileSchema, Schema.$Array<PersistedFileSchema>> = FilesSchema
213
213
  .check(
214
214
  Schema.isLengthBetween(1, 1)
215
215
  ).pipe(
@@ -43,10 +43,14 @@ export const isUrlParams = (u: unknown): u is UrlParams => hasProperty(u, TypeId
43
43
  * @category models
44
44
  */
45
45
  export type Input =
46
- | CoercibleRecord
46
+ | CoercibleRecordInput
47
47
  | Iterable<readonly [string, Coercible]>
48
48
  | URLSearchParams
49
49
 
50
+ type CoercibleRecordInput = CoercibleRecord & {
51
+ readonly [Symbol.iterator]?: never
52
+ }
53
+
50
54
  /**
51
55
  * @since 4.0.0
52
56
  * @category models
@@ -57,8 +61,17 @@ export type Coercible = string | number | bigint | boolean | null | undefined
57
61
  * @since 4.0.0
58
62
  * @category models
59
63
  */
60
- export interface CoercibleRecord {
61
- readonly [key: string]: Coercible | ReadonlyArray<Coercible> | CoercibleRecord
64
+ type CoercibleRecordField<A> = A extends Coercible ? A
65
+ : A extends ReadonlyArray<infer Item> ? ReadonlyArray<Item extends Coercible ? Item : never>
66
+ : A extends object ? CoercibleRecord<A>
67
+ : never
68
+
69
+ /**
70
+ * @since 4.0.0
71
+ * @category models
72
+ */
73
+ export type CoercibleRecord<A extends object = any> = {
74
+ readonly [K in keyof A]: CoercibleRecordField<A[K]>
62
75
  }
63
76
 
64
77
  const Proto = {
@@ -110,7 +123,9 @@ export const fromInput = (input: Input): UrlParams => {
110
123
  }
111
124
 
112
125
  const fromInputNested = (input: Input): Array<[string | Array<string>, any]> => {
113
- const entries = Symbol.iterator in input ? Arr.fromIterable(input) : Object.entries(input)
126
+ const entries = typeof (input as any)[Symbol.iterator] === "function"
127
+ ? Arr.fromIterable(input as Iterable<readonly [string, Coercible]>)
128
+ : Object.entries(input)
114
129
  const out: Array<[string | Array<string>, string]> = []
115
130
  for (const [key, value] of entries) {
116
131
  if (Array.isArray(value)) {
@@ -539,7 +554,7 @@ export const schemaJsonField = (field: string): schemaJsonField =>
539
554
  */
540
555
  export interface schemaRecord extends
541
556
  Schema.decodeTo<
542
- Schema.Record$<Schema.String, Schema.Union<readonly [Schema.String, Schema.NonEmptyArray<Schema.String>]>>,
557
+ Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.NonEmptyArray<Schema.String>]>>,
543
558
  UrlParamsSchema,
544
559
  never,
545
560
  never
@@ -2,7 +2,7 @@
2
2
  * @since 4.0.0
3
3
  */
4
4
  import * as Effect from "../../Effect.ts"
5
- import * as Base64 from "../../encoding/Base64.ts"
5
+ import * as Encoding from "../../Encoding.ts"
6
6
  import * as Fiber from "../../Fiber.ts"
7
7
  import type { FileSystem } from "../../FileSystem.ts"
8
8
  import { identity } from "../../Function.ts"
@@ -328,7 +328,7 @@ export const securityDecode = <Security extends HttpApiSecurity.HttpApiSecurity>
328
328
  } as any
329
329
  return HttpServerRequest.asEffect().pipe(
330
330
  Effect.flatMap((request) =>
331
- Base64.decodeString((request.headers.authorization ?? "").slice(basicLen)).asEffect()
331
+ Encoding.decodeBase64String((request.headers.authorization ?? "").slice(basicLen)).asEffect()
332
332
  ),
333
333
  Effect.match({
334
334
  onFailure: () => empty,
@@ -505,9 +505,9 @@ function handlerToRoute(
505
505
  const endpoint = handler.endpoint
506
506
  const encodeSuccess = Schema.encodeUnknownEffect(makeSuccessSchema(endpoint))
507
507
  const encodeError = Schema.encodeUnknownEffect(makeErrorSchema(endpoint))
508
- const decodeParams = UndefinedOr.map(HttpApiEndpoint.getParamsSchema(endpoint), Schema.decodeUnknownEffect)
509
- const decodeHeaders = UndefinedOr.map(HttpApiEndpoint.getHeadersSchema(endpoint), Schema.decodeUnknownEffect)
510
- const decodeQuery = UndefinedOr.map(HttpApiEndpoint.getQuerySchema(endpoint), Schema.decodeUnknownEffect)
508
+ const decodeParams = UndefinedOr.map(endpoint.params, Schema.decodeUnknownEffect)
509
+ const decodeHeaders = UndefinedOr.map(endpoint.headers, Schema.decodeUnknownEffect)
510
+ const decodeQuery = UndefinedOr.map(endpoint.query, Schema.decodeUnknownEffect)
511
511
 
512
512
  const shouldParsePayload = endpoint.payload.size > 0 && !handler.isRaw
513
513
  const payloadBy = shouldParsePayload ? buildPayloadDecoders(endpoint.payload) : undefined
@@ -549,6 +549,7 @@ function handlerToRoute(
549
549
  return Response.isHttpServerResponse(response) ? response : yield* encodeSuccess(response)
550
550
  })
551
551
  ).pipe(
552
+ Effect.withErrorReporting,
552
553
  Effect.catch((error) => {
553
554
  if (Schema.isSchemaError(error)) {
554
555
  error = HttpApiSchemaError.fromSchemaError(error)
@@ -217,7 +217,7 @@ const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any, E, R>
217
217
  })
218
218
 
219
219
  // encoders
220
- const encodeParams = UndefinedOr.map(HttpApiEndpoint.getParamsSchema(endpoint), Schema.encodeUnknownEffect)
220
+ const encodeParams = UndefinedOr.map(endpoint.params, Schema.encodeUnknownEffect)
221
221
 
222
222
  const payloadSchemas = HttpApiEndpoint.getPayloadSchemas(endpoint)
223
223
  const encodePayload = Arr.isArrayNonEmpty(payloadSchemas) ?
@@ -226,8 +226,8 @@ const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any, E, R>
226
226
  : Schema.encodeUnknownEffect(Schema.Union(payloadSchemas)) :
227
227
  undefined
228
228
 
229
- const encodeHeaders = UndefinedOr.map(HttpApiEndpoint.getHeadersSchema(endpoint), Schema.encodeUnknownEffect)
230
- const encodeQuery = UndefinedOr.map(HttpApiEndpoint.getQuerySchema(endpoint), Schema.encodeUnknownEffect)
229
+ const encodeHeaders = UndefinedOr.map(endpoint.headers, Schema.encodeUnknownEffect)
230
+ const encodeQuery = UndefinedOr.map(endpoint.query, Schema.encodeUnknownEffect)
231
231
 
232
232
  const middlewareKeys = Array.from(onEndpointOptions.middleware, (tag) => `${tag.key}/Client`)
233
233
 
@@ -4,7 +4,6 @@
4
4
  import * as Arr from "../../Array.ts"
5
5
  import type { Brand } from "../../Brand.ts"
6
6
  import type { Effect } from "../../Effect.ts"
7
- import { format } from "../../Formatter.ts"
8
7
  import { type Pipeable, pipeArguments } from "../../Pipeable.ts"
9
8
  import * as Predicate from "../../Predicate.ts"
10
9
  import * as Schema from "../../Schema.ts"
@@ -71,9 +70,9 @@ export interface HttpApiEndpoint<
71
70
  readonly name: Name
72
71
  readonly path: Path
73
72
  readonly method: Method
74
- readonly params: Schema.Struct.Fields | undefined
75
- readonly query: Schema.Struct.Fields | undefined
76
- readonly headers: Schema.Struct.Fields | undefined
73
+ readonly params: Schema.Top | undefined
74
+ readonly query: Schema.Top | undefined
75
+ readonly headers: Schema.Top | undefined
77
76
  readonly payload: PayloadMap
78
77
  readonly success: ReadonlySet<Schema.Top>
79
78
  readonly error: ReadonlySet<Schema.Top>
@@ -156,21 +155,6 @@ export interface HttpApiEndpoint<
156
155
  >
157
156
  }
158
157
 
159
- /** @internal */
160
- export function getParamsSchema(endpoint: AnyWithProps): Schema.Top | undefined {
161
- return endpoint.params ? Schema.Struct(endpoint.params) : undefined
162
- }
163
-
164
- /** @internal */
165
- export function getQuerySchema(endpoint: AnyWithProps): Schema.Top | undefined {
166
- return endpoint.query ? Schema.Struct(endpoint.query) : undefined
167
- }
168
-
169
- /** @internal */
170
- export function getHeadersSchema(endpoint: AnyWithProps): Schema.Top | undefined {
171
- return endpoint.headers ? Schema.Struct(endpoint.headers) : undefined
172
- }
173
-
174
158
  /** @internal */
175
159
  export function getPayloadSchemas(endpoint: AnyWithProps): Array<Schema.Top> {
176
160
  const result: Array<Schema.Top> = []
@@ -830,9 +814,9 @@ function makeProto<
830
814
  readonly name: Name
831
815
  readonly path: Path
832
816
  readonly method: Method
833
- readonly params: Schema.Struct.Fields | undefined
834
- readonly query: Schema.Struct.Fields | undefined
835
- readonly headers: Schema.Struct.Fields | undefined
817
+ readonly params: Schema.Top | undefined
818
+ readonly query: Schema.Top | undefined
819
+ readonly headers: Schema.Top | undefined
836
820
  readonly payload: PayloadMap
837
821
  readonly success: ReadonlySet<Schema.Top>
838
822
  readonly error: ReadonlySet<Schema.Top>
@@ -855,32 +839,28 @@ function makeProto<
855
839
  }
856
840
 
857
841
  /**
858
- * Params come from the router as `string` (optional params as `undefined`) and
859
- * must be encodable back into the URL path.
860
- *
861
- * We accept "struct fields" (`Record<string, Codec<...>>`) so we can both enforce
862
- * `Encoded` = `string | undefined` per field and reliably generate OpenAPI
863
- * `in: path` parameters by iterating object properties.
864
- *
865
842
  * @since 4.0.0
866
843
  * @category constraints
867
844
  */
868
- export type ParamsConstraint = Record<string, Schema.Encoder<string | undefined, unknown>>
845
+ export type ParamsConstraint =
846
+ | Record<string, Schema.Encoder<string | undefined, unknown>>
847
+ | Schema.Encoder<Record<string, string | undefined>, unknown>
869
848
 
870
849
  /**
871
- * URL search params can be repeated, so fields may encode to `string` or
872
- * `ReadonlyArray<string>` (or be missing).
873
- *
874
- * Kept as "struct fields" so OpenAPI can safely expand properties into
875
- * `in: query` parameters.
876
- *
877
850
  * @since 4.0.0
878
851
  * @category constraints
879
852
  */
880
- export type QuerySchemaConstraint = Record<
881
- string,
882
- Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>
883
- >
853
+ export type HeadersConstraint =
854
+ | Record<string, Schema.Encoder<string | undefined, unknown>>
855
+ | Schema.Encoder<Record<string, string | undefined>, unknown>
856
+
857
+ /**
858
+ * @since 4.0.0
859
+ * @category constraints
860
+ */
861
+ export type QueryConstraint =
862
+ | Record<string, Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>>
863
+ | Schema.Encoder<Record<string, string | ReadonlyArray<string> | undefined>, unknown>
884
864
 
885
865
  /**
886
866
  * Payload schema depends on the HTTP method:
@@ -893,34 +873,23 @@ export type QuerySchemaConstraint = Record<
893
873
  * @since 4.0.0
894
874
  * @category constraints
895
875
  */
896
- export type PayloadSchemaConstraint<Method extends HttpMethod> = Method extends HttpMethod.NoBody ? Record<
876
+ export type PayloadConstraint<Method extends HttpMethod> = Method extends HttpMethod.NoBody ? Record<
897
877
  string,
898
878
  Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>
899
879
  > :
900
- SuccessSchemaConstraint
901
-
902
- /**
903
- * HTTP headers are string-valued (or missing).
904
- *
905
- * Kept as "struct fields" so OpenAPI can safely expand properties into
906
- * `in: header` parameters.
907
- *
908
- * @since 4.0.0
909
- * @category constraints
910
- */
911
- export type HeadersSchemaConstraint = Record<string, Schema.Encoder<string | undefined, unknown>>
880
+ SuccessConstraint
912
881
 
913
882
  /**
914
883
  * @since 4.0.0
915
884
  * @category constraints
916
885
  */
917
- export type SuccessSchemaConstraint = Schema.Top | ReadonlyArray<Schema.Top>
886
+ export type SuccessConstraint = Schema.Top | ReadonlyArray<Schema.Top>
918
887
 
919
888
  /**
920
889
  * @since 4.0.0
921
890
  * @category constraints
922
891
  */
923
- export type ErrorSchemaConstraint = Schema.Top | ReadonlyArray<Schema.Top>
892
+ export type ErrorConstraint = Schema.Top | ReadonlyArray<Schema.Top>
924
893
 
925
894
  /**
926
895
  * @since 4.0.0
@@ -931,11 +900,11 @@ export const make = <Method extends HttpMethod>(method: Method) =>
931
900
  const Name extends string,
932
901
  const Path extends HttpRouter.PathInput,
933
902
  Params extends ParamsConstraint = never,
934
- Query extends QuerySchemaConstraint = never,
935
- Payload extends PayloadSchemaConstraint<Method> = never,
936
- Headers extends HeadersSchemaConstraint = never,
937
- const Success extends SuccessSchemaConstraint = HttpApiSchema.NoContent,
938
- const Error extends ErrorSchemaConstraint = never
903
+ Query extends QueryConstraint = never,
904
+ Payload extends PayloadConstraint<Method> = never,
905
+ Headers extends HeadersConstraint = never,
906
+ const Success extends SuccessConstraint = HttpApiSchema.NoContent,
907
+ const Error extends ErrorConstraint = never
939
908
  >(
940
909
  name: Name,
941
910
  path: Path,
@@ -964,8 +933,8 @@ export const make = <Method extends HttpMethod>(method: Method) =>
964
933
  name,
965
934
  path,
966
935
  method,
967
- params: options?.params,
968
- query: options?.query,
936
+ params: getParams(options?.params),
937
+ query: getQuery(options?.query),
969
938
  headers: getHeaders(options?.headers),
970
939
  payload: getPayload(options?.payload),
971
940
  success: getSuccess(options?.success),
@@ -975,17 +944,23 @@ export const make = <Method extends HttpMethod>(method: Method) =>
975
944
  })
976
945
  }
977
946
 
947
+ function getParams(params: ParamsConstraint | undefined): Schema.Top | undefined {
948
+ if (params === undefined) return undefined
949
+ if (Schema.isSchema(params)) return params
950
+ return Schema.Struct(params)
951
+ }
952
+
953
+ function getQuery(query: QueryConstraint | undefined): Schema.Top | undefined {
954
+ if (query === undefined) return undefined
955
+ if (Schema.isSchema(query)) return query
956
+ return Schema.Struct(query)
957
+ }
958
+
978
959
  // all keys should be lowercase
979
- function getHeaders(headers: Schema.Struct.Fields | undefined): Schema.Struct.Fields | undefined {
980
- if (headers !== undefined) {
981
- for (const key of Object.keys(headers)) {
982
- const lowerKey = key.toLowerCase()
983
- if (key !== lowerKey) {
984
- throw new Error(`Header keys must be lowercase, got ${format(key)} (use ${format(lowerKey)})`)
985
- }
986
- }
987
- return headers
988
- }
960
+ function getHeaders(headers: HeadersConstraint | undefined): Schema.Top | undefined {
961
+ if (headers === undefined) return undefined
962
+ if (Schema.isSchema(headers)) return headers
963
+ return Schema.Struct(headers)
989
964
  }
990
965
 
991
966
  function getPayload(