effect 4.0.0-beta.0 → 4.0.0-beta.10

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 (571) 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.map +1 -1
  8. package/dist/Channel.js +6 -4
  9. package/dist/Channel.js.map +1 -1
  10. package/dist/Combiner.d.ts +280 -13
  11. package/dist/Combiner.d.ts.map +1 -1
  12. package/dist/Combiner.js +198 -7
  13. package/dist/Combiner.js.map +1 -1
  14. package/dist/Config.d.ts +3 -3
  15. package/dist/Config.js +3 -3
  16. package/dist/Config.js.map +1 -1
  17. package/dist/ConfigProvider.d.ts +1 -1
  18. package/dist/Cron.d.ts +1 -1
  19. package/dist/Data.d.ts +534 -365
  20. package/dist/Data.d.ts.map +1 -1
  21. package/dist/Data.js +132 -79
  22. package/dist/Data.js.map +1 -1
  23. package/dist/DateTime.d.ts +23 -161
  24. package/dist/DateTime.d.ts.map +1 -1
  25. package/dist/DateTime.js +6 -51
  26. package/dist/DateTime.js.map +1 -1
  27. package/dist/Duration.d.ts +12 -12
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +12 -12
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +175 -240
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +73 -119
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Encoding.d.ts +194 -0
  36. package/dist/Encoding.d.ts.map +1 -0
  37. package/dist/Encoding.js +352 -0
  38. package/dist/Encoding.js.map +1 -0
  39. package/dist/Equal.d.ts +276 -109
  40. package/dist/Equal.d.ts.map +1 -1
  41. package/dist/Equal.js +124 -48
  42. package/dist/Equal.js.map +1 -1
  43. package/dist/FileSystem.d.ts +1 -1
  44. package/dist/FileSystem.d.ts.map +1 -1
  45. package/dist/FileSystem.js +5 -5
  46. package/dist/FileSystem.js.map +1 -1
  47. package/dist/Filter.d.ts +30 -1
  48. package/dist/Filter.d.ts.map +1 -1
  49. package/dist/Filter.js +15 -0
  50. package/dist/Filter.js.map +1 -1
  51. package/dist/Formatter.d.ts +131 -47
  52. package/dist/Formatter.d.ts.map +1 -1
  53. package/dist/Formatter.js +229 -51
  54. package/dist/Formatter.js.map +1 -1
  55. package/dist/Graph.d.ts +1 -1
  56. package/dist/Graph.d.ts.map +1 -1
  57. package/dist/Graph.js +2 -2
  58. package/dist/Graph.js.map +1 -1
  59. package/dist/JsonSchema.d.ts +299 -10
  60. package/dist/JsonSchema.d.ts.map +1 -1
  61. package/dist/JsonSchema.js +323 -4
  62. package/dist/JsonSchema.js.map +1 -1
  63. package/dist/Latch.d.ts +109 -0
  64. package/dist/Latch.d.ts.map +1 -0
  65. package/dist/Latch.js +72 -0
  66. package/dist/Latch.js.map +1 -0
  67. package/dist/LayerMap.d.ts +4 -4
  68. package/dist/LayerMap.d.ts.map +1 -1
  69. package/dist/LogLevel.d.ts +27 -0
  70. package/dist/LogLevel.d.ts.map +1 -1
  71. package/dist/LogLevel.js +28 -100
  72. package/dist/LogLevel.js.map +1 -1
  73. package/dist/Logger.d.ts +4 -4
  74. package/dist/Logger.d.ts.map +1 -1
  75. package/dist/Metric.d.ts +2 -2
  76. package/dist/Metric.d.ts.map +1 -1
  77. package/dist/Metric.js +1 -1
  78. package/dist/Metric.js.map +1 -1
  79. package/dist/Optic.d.ts +947 -18
  80. package/dist/Optic.d.ts.map +1 -1
  81. package/dist/Optic.js +454 -5
  82. package/dist/Optic.js.map +1 -1
  83. package/dist/Pipeable.d.ts +17 -0
  84. package/dist/Pipeable.d.ts.map +1 -1
  85. package/dist/Pipeable.js +19 -1
  86. package/dist/Pipeable.js.map +1 -1
  87. package/dist/PlatformError.d.ts +10 -9
  88. package/dist/PlatformError.d.ts.map +1 -1
  89. package/dist/PlatformError.js +2 -2
  90. package/dist/PlatformError.js.map +1 -1
  91. package/dist/Pool.d.ts +6 -4
  92. package/dist/Pool.d.ts.map +1 -1
  93. package/dist/Pool.js +7 -5
  94. package/dist/Pool.js.map +1 -1
  95. package/dist/PubSub.d.ts +3 -2
  96. package/dist/PubSub.d.ts.map +1 -1
  97. package/dist/PubSub.js +3 -2
  98. package/dist/PubSub.js.map +1 -1
  99. package/dist/Random.d.ts +18 -1
  100. package/dist/Random.d.ts.map +1 -1
  101. package/dist/Random.js +29 -12
  102. package/dist/Random.js.map +1 -1
  103. package/dist/RcMap.d.ts +2 -2
  104. package/dist/RcMap.d.ts.map +1 -1
  105. package/dist/RcMap.js +1 -1
  106. package/dist/RcMap.js.map +1 -1
  107. package/dist/RcRef.d.ts +1 -1
  108. package/dist/RcRef.d.ts.map +1 -1
  109. package/dist/Reducer.d.ts +166 -7
  110. package/dist/Reducer.d.ts.map +1 -1
  111. package/dist/Reducer.js +135 -1
  112. package/dist/Reducer.js.map +1 -1
  113. package/dist/Request.d.ts +1 -1
  114. package/dist/Request.d.ts.map +1 -1
  115. package/dist/Request.js +2 -1
  116. package/dist/Request.js.map +1 -1
  117. package/dist/RequestResolver.d.ts +6 -26
  118. package/dist/RequestResolver.d.ts.map +1 -1
  119. package/dist/RequestResolver.js +0 -20
  120. package/dist/RequestResolver.js.map +1 -1
  121. package/dist/Result.d.ts +12 -0
  122. package/dist/Result.d.ts.map +1 -1
  123. package/dist/Result.js +12 -0
  124. package/dist/Result.js.map +1 -1
  125. package/dist/Schedule.d.ts +33 -14
  126. package/dist/Schedule.d.ts.map +1 -1
  127. package/dist/Schedule.js +65 -24
  128. package/dist/Schedule.js.map +1 -1
  129. package/dist/Schema.d.ts +199 -49
  130. package/dist/Schema.d.ts.map +1 -1
  131. package/dist/Schema.js +386 -72
  132. package/dist/Schema.js.map +1 -1
  133. package/dist/SchemaGetter.d.ts +2 -2
  134. package/dist/SchemaGetter.d.ts.map +1 -1
  135. package/dist/SchemaGetter.js +12 -14
  136. package/dist/SchemaGetter.js.map +1 -1
  137. package/dist/SchemaRepresentation.d.ts +44 -43
  138. package/dist/SchemaRepresentation.d.ts.map +1 -1
  139. package/dist/SchemaRepresentation.js +43 -24
  140. package/dist/SchemaRepresentation.js.map +1 -1
  141. package/dist/SchemaTransformation.d.ts +37 -0
  142. package/dist/SchemaTransformation.d.ts.map +1 -1
  143. package/dist/SchemaTransformation.js +80 -0
  144. package/dist/SchemaTransformation.js.map +1 -1
  145. package/dist/ScopedCache.d.ts +2 -2
  146. package/dist/ScopedCache.d.ts.map +1 -1
  147. package/dist/ScopedCache.js +1 -1
  148. package/dist/ScopedCache.js.map +1 -1
  149. package/dist/Semaphore.d.ts +211 -0
  150. package/dist/Semaphore.d.ts.map +1 -0
  151. package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
  152. package/dist/Semaphore.js.map +1 -0
  153. package/dist/Stream.d.ts +19 -19
  154. package/dist/Stream.d.ts.map +1 -1
  155. package/dist/Stream.js +12 -11
  156. package/dist/Stream.js.map +1 -1
  157. package/dist/Struct.d.ts +16 -0
  158. package/dist/Struct.d.ts.map +1 -1
  159. package/dist/Struct.js +22 -0
  160. package/dist/Struct.js.map +1 -1
  161. package/dist/SubscriptionRef.d.ts +2 -1
  162. package/dist/SubscriptionRef.d.ts.map +1 -1
  163. package/dist/SubscriptionRef.js +2 -1
  164. package/dist/SubscriptionRef.js.map +1 -1
  165. package/dist/SynchronizedRef.d.ts +2 -1
  166. package/dist/SynchronizedRef.d.ts.map +1 -1
  167. package/dist/SynchronizedRef.js +2 -1
  168. package/dist/SynchronizedRef.js.map +1 -1
  169. package/dist/Types.d.ts +14 -6
  170. package/dist/Types.d.ts.map +1 -1
  171. package/dist/index.d.ts +499 -19
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +499 -19
  174. package/dist/index.js.map +1 -1
  175. package/dist/internal/core.js +11 -3
  176. package/dist/internal/core.js.map +1 -1
  177. package/dist/internal/dateTime.js +3 -11
  178. package/dist/internal/dateTime.js.map +1 -1
  179. package/dist/internal/effect.js +37 -22
  180. package/dist/internal/effect.js.map +1 -1
  181. package/dist/internal/random.d.ts +2 -0
  182. package/dist/internal/random.d.ts.map +1 -0
  183. package/dist/internal/random.js +13 -0
  184. package/dist/internal/random.js.map +1 -0
  185. package/dist/internal/rcRef.js +3 -2
  186. package/dist/internal/rcRef.js.map +1 -1
  187. package/dist/testing/TestClock.d.ts +7 -6
  188. package/dist/testing/TestClock.d.ts.map +1 -1
  189. package/dist/testing/TestClock.js +6 -4
  190. package/dist/testing/TestClock.js.map +1 -1
  191. package/dist/testing/TestSchema.d.ts +6 -6
  192. package/dist/testing/TestSchema.d.ts.map +1 -1
  193. package/dist/unstable/ai/AiError.d.ts +48 -48
  194. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  195. package/dist/unstable/ai/Chat.d.ts +3 -3
  196. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  197. package/dist/unstable/ai/Chat.js +4 -3
  198. package/dist/unstable/ai/Chat.js.map +1 -1
  199. package/dist/unstable/ai/LanguageModel.d.ts +2 -2
  200. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  201. package/dist/unstable/ai/McpSchema.d.ts +51 -51
  202. package/dist/unstable/ai/McpServer.d.ts +1 -1
  203. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  204. package/dist/unstable/ai/McpServer.js.map +1 -1
  205. package/dist/unstable/ai/Prompt.d.ts +20 -20
  206. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  207. package/dist/unstable/ai/Response.d.ts +26 -26
  208. package/dist/unstable/ai/Response.d.ts.map +1 -1
  209. package/dist/unstable/ai/Response.js +1 -1
  210. package/dist/unstable/ai/Response.js.map +1 -1
  211. package/dist/unstable/cli/CliError.d.ts +5 -5
  212. package/dist/unstable/cli/Prompt.js +2 -2
  213. package/dist/unstable/cli/Prompt.js.map +1 -1
  214. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  215. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  216. package/dist/unstable/cluster/ClusterCron.js +1 -1
  217. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  218. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  219. package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
  220. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  221. package/dist/unstable/cluster/Entity.d.ts +5 -4
  222. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  223. package/dist/unstable/cluster/Entity.js.map +1 -1
  224. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  225. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  226. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  227. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  228. package/dist/unstable/cluster/K8sHttpClient.js +1 -1
  229. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  230. package/dist/unstable/cluster/Message.d.ts +10 -10
  231. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  232. package/dist/unstable/cluster/MessageStorage.js +2 -1
  233. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  234. package/dist/unstable/cluster/Reply.d.ts +6 -6
  235. package/dist/unstable/cluster/Runner.d.ts +1 -1
  236. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  237. package/dist/unstable/cluster/Runners.js +4 -3
  238. package/dist/unstable/cluster/Runners.js.map +1 -1
  239. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  240. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  241. package/dist/unstable/cluster/Sharding.js +8 -6
  242. package/dist/unstable/cluster/Sharding.js.map +1 -1
  243. package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
  244. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  245. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  246. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  247. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  248. package/dist/unstable/cluster/internal/entityManager.js +5 -4
  249. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  250. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  251. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  252. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  253. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  254. package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
  255. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  256. package/dist/unstable/encoding/Ndjson.d.ts +1 -1
  257. package/dist/unstable/encoding/Sse.d.ts +4 -4
  258. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  259. package/dist/unstable/encoding/Sse.js.map +1 -1
  260. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  261. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  262. package/dist/unstable/eventlog/EventLog.js +2 -1
  263. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  264. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  265. package/dist/unstable/http/Cookies.d.ts +3 -3
  266. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  267. package/dist/unstable/http/Cookies.js +2 -2
  268. package/dist/unstable/http/Cookies.js.map +1 -1
  269. package/dist/unstable/http/HttpBody.d.ts +17 -2
  270. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  271. package/dist/unstable/http/HttpBody.js +28 -1
  272. package/dist/unstable/http/HttpBody.js.map +1 -1
  273. package/dist/unstable/http/HttpClient.d.ts +11 -11
  274. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  275. package/dist/unstable/http/HttpClient.js +4 -4
  276. package/dist/unstable/http/HttpClient.js.map +1 -1
  277. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  278. package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
  279. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  280. package/dist/unstable/http/HttpClientRequest.js +15 -3
  281. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  282. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  283. package/dist/unstable/http/HttpEffect.js +18 -26
  284. package/dist/unstable/http/HttpEffect.js.map +1 -1
  285. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  286. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  287. package/dist/unstable/http/HttpMethod.js +3 -3
  288. package/dist/unstable/http/HttpMethod.js.map +1 -1
  289. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  290. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  291. package/dist/unstable/http/HttpMiddleware.js +4 -9
  292. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  293. package/dist/unstable/http/HttpServerError.d.ts +6 -6
  294. package/dist/unstable/http/HttpServerResponse.js +1 -1
  295. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  296. package/dist/unstable/http/Multipart.d.ts +3 -3
  297. package/dist/unstable/http/UrlParams.d.ts +14 -6
  298. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  299. package/dist/unstable/http/UrlParams.js +1 -1
  300. package/dist/unstable/http/UrlParams.js.map +1 -1
  301. package/dist/unstable/httpapi/HttpApiBuilder.js +5 -5
  302. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  303. package/dist/unstable/httpapi/HttpApiClient.js +3 -3
  304. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  305. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
  306. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  307. package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
  308. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  309. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  310. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  311. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  312. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  313. package/dist/unstable/httpapi/OpenApi.js +18 -16
  314. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  315. package/dist/unstable/observability/Otlp.d.ts +12 -12
  316. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  317. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  318. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  319. package/dist/unstable/observability/OtlpExporter.js +1 -1
  320. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  321. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  322. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  323. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  324. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  325. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  326. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  327. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  328. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  329. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  330. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  331. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  332. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  333. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  334. package/dist/unstable/persistence/PersistedCache.js +2 -1
  335. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  336. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  337. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  338. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  339. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  340. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  341. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  342. package/dist/unstable/persistence/Persistence.js +2 -2
  343. package/dist/unstable/persistence/Persistence.js.map +1 -1
  344. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  345. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  346. package/dist/unstable/persistence/RateLimiter.js +1 -1
  347. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  348. package/dist/unstable/process/ChildProcess.d.ts +2 -2
  349. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  350. package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
  351. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  352. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  353. package/dist/unstable/reactivity/Atom.d.ts +6 -6
  354. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  355. package/dist/unstable/reactivity/Atom.js +15 -12
  356. package/dist/unstable/reactivity/Atom.js.map +1 -1
  357. package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
  358. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  359. package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
  360. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  361. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  362. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  363. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  364. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  365. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  366. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  367. package/dist/unstable/reactivity/Hydration.js +76 -0
  368. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  369. package/dist/unstable/reactivity/index.d.ts +4 -0
  370. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  371. package/dist/unstable/reactivity/index.js +4 -0
  372. package/dist/unstable/reactivity/index.js.map +1 -1
  373. package/dist/unstable/rpc/Rpc.d.ts +2 -2
  374. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  375. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  376. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  377. package/dist/unstable/rpc/RpcClient.js +6 -13
  378. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  379. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  380. package/dist/unstable/rpc/RpcServer.js +5 -3
  381. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  382. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  383. package/dist/unstable/rpc/Utils.js +2 -1
  384. package/dist/unstable/rpc/Utils.js.map +1 -1
  385. package/dist/unstable/schema/Model.d.ts +4 -4
  386. package/dist/unstable/schema/Model.d.ts.map +1 -1
  387. package/dist/unstable/schema/VariantSchema.d.ts +2 -2
  388. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  389. package/dist/unstable/schema/VariantSchema.js +13 -2
  390. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  391. package/dist/unstable/socket/Socket.d.ts +4 -4
  392. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  393. package/dist/unstable/socket/Socket.js +3 -2
  394. package/dist/unstable/socket/Socket.js.map +1 -1
  395. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  396. package/dist/unstable/sql/Migrator.d.ts +1 -1
  397. package/dist/unstable/sql/SqlError.d.ts +2 -2
  398. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  399. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  400. package/dist/unstable/sql/SqlSchema.d.ts +24 -1
  401. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  402. package/dist/unstable/sql/SqlSchema.js +24 -3
  403. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  404. package/dist/unstable/sql/Statement.js +0 -1
  405. package/dist/unstable/sql/Statement.js.map +1 -1
  406. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  407. package/dist/unstable/workers/Worker.js +2 -1
  408. package/dist/unstable/workers/Worker.js.map +1 -1
  409. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  410. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  411. package/dist/unstable/workflow/DurableClock.js +3 -3
  412. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  413. package/dist/unstable/workflow/DurableDeferred.js +2 -2
  414. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  415. package/dist/unstable/workflow/Workflow.d.ts +2 -2
  416. package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -1
  417. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  418. package/dist/unstable/workflow/WorkflowEngine.js +2 -1
  419. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  420. package/package.json +2 -2
  421. package/src/Cache.ts +3 -3
  422. package/src/Cause.ts +1 -1
  423. package/src/Channel.ts +6 -4
  424. package/src/Combiner.ts +280 -13
  425. package/src/Config.ts +3 -3
  426. package/src/Data.ts +538 -374
  427. package/src/DateTime.ts +24 -164
  428. package/src/Duration.ts +15 -15
  429. package/src/Effect.ts +202 -261
  430. package/src/Encoding.ts +879 -0
  431. package/src/Equal.ts +278 -111
  432. package/src/FileSystem.ts +7 -8
  433. package/src/Filter.ts +48 -1
  434. package/src/Formatter.ts +253 -51
  435. package/src/Graph.ts +8 -5
  436. package/src/JsonSchema.ts +383 -10
  437. package/src/Latch.ts +112 -0
  438. package/src/LayerMap.ts +5 -5
  439. package/src/LogLevel.ts +31 -0
  440. package/src/Logger.ts +5 -5
  441. package/src/Metric.ts +4 -4
  442. package/src/Optic.ts +948 -19
  443. package/src/Pipeable.ts +32 -1
  444. package/src/PlatformError.ts +5 -5
  445. package/src/Pool.ts +13 -11
  446. package/src/PubSub.ts +10 -9
  447. package/src/Random.ts +33 -14
  448. package/src/RcMap.ts +5 -5
  449. package/src/RcRef.ts +1 -1
  450. package/src/Reducer.ts +166 -7
  451. package/src/Request.ts +3 -2
  452. package/src/RequestResolver.ts +9 -29
  453. package/src/Result.ts +13 -0
  454. package/src/Schedule.ts +279 -140
  455. package/src/Schema.ts +575 -113
  456. package/src/SchemaGetter.ts +12 -14
  457. package/src/SchemaRepresentation.ts +43 -24
  458. package/src/SchemaTransformation.ts +104 -0
  459. package/src/ScopedCache.ts +3 -3
  460. package/src/Semaphore.ts +356 -0
  461. package/src/Stream.ts +43 -42
  462. package/src/Struct.ts +26 -0
  463. package/src/SubscriptionRef.ts +3 -2
  464. package/src/SynchronizedRef.ts +3 -2
  465. package/src/Types.ts +12 -2
  466. package/src/index.ts +502 -20
  467. package/src/internal/core.ts +12 -5
  468. package/src/internal/dateTime.ts +9 -30
  469. package/src/internal/effect.ts +70 -37
  470. package/src/internal/random.ts +20 -0
  471. package/src/internal/rcRef.ts +4 -3
  472. package/src/testing/TestClock.ts +13 -11
  473. package/src/testing/TestSchema.ts +8 -8
  474. package/src/unstable/ai/AiError.ts +2 -2
  475. package/src/unstable/ai/Chat.ts +12 -11
  476. package/src/unstable/ai/LanguageModel.ts +3 -3
  477. package/src/unstable/ai/McpServer.ts +2 -2
  478. package/src/unstable/ai/Prompt.ts +37 -37
  479. package/src/unstable/ai/Response.ts +25 -25
  480. package/src/unstable/cli/Prompt.ts +2 -2
  481. package/src/unstable/cluster/ClusterCron.ts +2 -2
  482. package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
  483. package/src/unstable/cluster/Entity.ts +7 -6
  484. package/src/unstable/cluster/EntityResource.ts +4 -4
  485. package/src/unstable/cluster/Envelope.ts +1 -1
  486. package/src/unstable/cluster/K8sHttpClient.ts +1 -1
  487. package/src/unstable/cluster/MessageStorage.ts +3 -5
  488. package/src/unstable/cluster/Runners.ts +6 -5
  489. package/src/unstable/cluster/Sharding.ts +11 -9
  490. package/src/unstable/cluster/ShardingConfig.ts +10 -11
  491. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  492. package/src/unstable/cluster/internal/entityManager.ts +9 -8
  493. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  494. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  495. package/src/unstable/encoding/Sse.ts +2 -4
  496. package/src/unstable/eventlog/EventLog.ts +2 -1
  497. package/src/unstable/http/Cookies.ts +3 -3
  498. package/src/unstable/http/HttpBody.ts +42 -1
  499. package/src/unstable/http/HttpClient.ts +19 -19
  500. package/src/unstable/http/HttpClientRequest.ts +38 -13
  501. package/src/unstable/http/HttpEffect.ts +17 -25
  502. package/src/unstable/http/HttpMethod.ts +16 -4
  503. package/src/unstable/http/HttpMiddleware.ts +5 -10
  504. package/src/unstable/http/HttpServerResponse.ts +1 -1
  505. package/src/unstable/http/Multipart.ts +2 -2
  506. package/src/unstable/http/UrlParams.ts +20 -5
  507. package/src/unstable/httpapi/HttpApiBuilder.ts +5 -5
  508. package/src/unstable/httpapi/HttpApiClient.ts +3 -3
  509. package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
  510. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  511. package/src/unstable/httpapi/OpenApi.ts +18 -16
  512. package/src/unstable/observability/Otlp.ts +12 -12
  513. package/src/unstable/observability/OtlpExporter.ts +3 -3
  514. package/src/unstable/observability/OtlpLogger.ts +4 -4
  515. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  516. package/src/unstable/observability/OtlpTracer.ts +4 -4
  517. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  518. package/src/unstable/persistence/Persistable.ts +2 -2
  519. package/src/unstable/persistence/PersistedCache.ts +20 -9
  520. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  521. package/src/unstable/persistence/Persistence.ts +3 -3
  522. package/src/unstable/persistence/RateLimiter.ts +4 -4
  523. package/src/unstable/process/ChildProcess.ts +2 -2
  524. package/src/unstable/process/ChildProcessSpawner.ts +6 -0
  525. package/src/unstable/reactivity/Atom.ts +20 -18
  526. package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
  527. package/src/unstable/reactivity/AtomRpc.ts +3 -3
  528. package/src/unstable/reactivity/Hydration.ts +112 -0
  529. package/src/unstable/reactivity/index.ts +5 -0
  530. package/src/unstable/rpc/Rpc.ts +3 -3
  531. package/src/unstable/rpc/RpcClient.ts +12 -54
  532. package/src/unstable/rpc/RpcServer.ts +6 -4
  533. package/src/unstable/rpc/Utils.ts +2 -1
  534. package/src/unstable/schema/VariantSchema.ts +36 -7
  535. package/src/unstable/socket/Socket.ts +7 -6
  536. package/src/unstable/sql/SqlModel.ts +2 -2
  537. package/src/unstable/sql/SqlSchema.ts +62 -13
  538. package/src/unstable/sql/Statement.ts +0 -1
  539. package/src/unstable/workers/Worker.ts +2 -1
  540. package/src/unstable/workflow/DurableClock.ts +8 -8
  541. package/src/unstable/workflow/DurableDeferred.ts +2 -2
  542. package/src/unstable/workflow/WorkflowEngine.ts +3 -2
  543. package/dist/PartitionedSemaphore.d.ts +0 -52
  544. package/dist/PartitionedSemaphore.d.ts.map +0 -1
  545. package/dist/PartitionedSemaphore.js.map +0 -1
  546. package/dist/encoding/Base64.d.ts +0 -67
  547. package/dist/encoding/Base64.d.ts.map +0 -1
  548. package/dist/encoding/Base64.js +0 -146
  549. package/dist/encoding/Base64.js.map +0 -1
  550. package/dist/encoding/Base64Url.d.ts +0 -60
  551. package/dist/encoding/Base64Url.d.ts.map +0 -1
  552. package/dist/encoding/Base64Url.js +0 -89
  553. package/dist/encoding/Base64Url.js.map +0 -1
  554. package/dist/encoding/EncodingError.d.ts +0 -31
  555. package/dist/encoding/EncodingError.d.ts.map +0 -1
  556. package/dist/encoding/EncodingError.js +0 -22
  557. package/dist/encoding/EncodingError.js.map +0 -1
  558. package/dist/encoding/Hex.d.ts +0 -61
  559. package/dist/encoding/Hex.d.ts.map +0 -1
  560. package/dist/encoding/Hex.js +0 -115
  561. package/dist/encoding/Hex.js.map +0 -1
  562. package/dist/encoding/index.d.ts +0 -26
  563. package/dist/encoding/index.d.ts.map +0 -1
  564. package/dist/encoding/index.js +0 -27
  565. package/dist/encoding/index.js.map +0 -1
  566. package/src/PartitionedSemaphore.ts +0 -182
  567. package/src/encoding/Base64.ts +0 -366
  568. package/src/encoding/Base64Url.ts +0 -104
  569. package/src/encoding/EncodingError.ts +0 -35
  570. package/src/encoding/Hex.ts +0 -390
  571. package/src/encoding/index.ts +0 -31
@@ -61,11 +61,11 @@ export declare namespace HttpClient {
61
61
 
62
62
  readonly get: (
63
63
  url: string | URL,
64
- options?: HttpClientRequest.Options.NoBody
64
+ options?: HttpClientRequest.Options.NoUrl
65
65
  ) => Effect.Effect<HttpClientResponse.HttpClientResponse, E, R>
66
66
  readonly head: (
67
67
  url: string | URL,
68
- options?: HttpClientRequest.Options.NoBody
68
+ options?: HttpClientRequest.Options.NoUrl
69
69
  ) => Effect.Effect<HttpClientResponse.HttpClientResponse, E, R>
70
70
  readonly post: (
71
71
  url: string | URL,
@@ -132,7 +132,7 @@ export const execute: (
132
132
  * @since 4.0.0
133
133
  * @category accessors
134
134
  */
135
- export const get: (url: string | URL, options?: HttpClientRequest.Options.NoBody | undefined) => Effect.Effect<
135
+ export const get: (url: string | URL, options?: HttpClientRequest.Options.NoUrl | undefined) => Effect.Effect<
136
136
  HttpClientResponse.HttpClientResponse,
137
137
  Error.HttpClientError,
138
138
  HttpClient
@@ -142,7 +142,7 @@ export const get: (url: string | URL, options?: HttpClientRequest.Options.NoBody
142
142
  * @since 4.0.0
143
143
  * @category accessors
144
144
  */
145
- export const head: (url: string | URL, options?: HttpClientRequest.Options.NoBody | undefined) => Effect.Effect<
145
+ export const head: (url: string | URL, options?: HttpClientRequest.Options.NoUrl | undefined) => Effect.Effect<
146
146
  HttpClientResponse.HttpClientResponse,
147
147
  Error.HttpClientError,
148
148
  HttpClient
@@ -928,7 +928,7 @@ export const retry: {
928
928
  /**
929
929
  * Retries common transient errors, such as rate limiting, timeouts or network issues.
930
930
  *
931
- * Use `mode` to focus on retrying errors, transient responses, or both.
931
+ * Use `retryOn` to focus on retrying errors, transient responses, or both.
932
932
  *
933
933
  * Specifying a `while` predicate allows you to consider other errors as
934
934
  * transient, and is ignored in "response-only" mode.
@@ -940,7 +940,7 @@ export const retryTransient: {
940
940
  /**
941
941
  * Retries common transient errors, such as rate limiting, timeouts or network issues.
942
942
  *
943
- * Use `mode` to focus on retrying errors, transient responses, or both.
943
+ * Use `retryOn` to focus on retrying errors, transient responses, or both.
944
944
  *
945
945
  * Specifying a `while` predicate allows you to consider other errors as
946
946
  * transient, and is ignored in "response-only" mode.
@@ -953,13 +953,13 @@ export const retryTransient: {
953
953
  E,
954
954
  ES = never,
955
955
  R1 = never,
956
- const Mode extends "errors-only" | "response-only" | "both" = never,
957
- Input = "errors-only" extends Mode ? E
958
- : "response-only" extends Mode ? HttpClientResponse.HttpClientResponse
956
+ const RetryOn extends "errors-only" | "response-only" | "errors-and-responses" = never,
957
+ Input = "errors-only" extends RetryOn ? E
958
+ : "response-only" extends RetryOn ? HttpClientResponse.HttpClientResponse
959
959
  : HttpClientResponse.HttpClientResponse | E
960
960
  >(
961
961
  options: {
962
- readonly mode?: Mode | undefined
962
+ readonly retryOn?: RetryOn | undefined
963
963
  readonly while?: Predicate.Predicate<NoInfer<E | ES>>
964
964
  readonly schedule?: Schedule.Schedule<B, NoInfer<Input>, ES, R1>
965
965
  readonly times?: number
@@ -968,7 +968,7 @@ export const retryTransient: {
968
968
  /**
969
969
  * Retries common transient errors, such as rate limiting, timeouts or network issues.
970
970
  *
971
- * Use `mode` to focus on retrying errors, transient responses, or both.
971
+ * Use `retryOn` to focus on retrying errors, transient responses, or both.
972
972
  *
973
973
  * Specifying a `while` predicate allows you to consider other errors as
974
974
  * transient, and is ignored in "response-only" mode.
@@ -982,14 +982,14 @@ export const retryTransient: {
982
982
  B,
983
983
  ES = never,
984
984
  R1 = never,
985
- const Mode extends "errors-only" | "response-only" | "both" = never,
986
- Input = "errors-only" extends Mode ? E
987
- : "response-only" extends Mode ? HttpClientResponse.HttpClientResponse
985
+ const RetryOn extends "errors-only" | "response-only" | "errors-and-responses" = never,
986
+ Input = "errors-only" extends RetryOn ? E
987
+ : "response-only" extends RetryOn ? HttpClientResponse.HttpClientResponse
988
988
  : HttpClientResponse.HttpClientResponse | E
989
989
  >(
990
990
  self: HttpClient.With<E, R>,
991
991
  options: {
992
- readonly mode?: Mode | undefined
992
+ readonly retryOn?: RetryOn | undefined
993
993
  readonly while?: Predicate.Predicate<NoInfer<E | ES>>
994
994
  readonly schedule?: Schedule.Schedule<B, NoInfer<Input>, ES, R1>
995
995
  readonly times?: number
@@ -1006,26 +1006,26 @@ export const retryTransient: {
1006
1006
  >(
1007
1007
  self: HttpClient.With<E, R>,
1008
1008
  options: {
1009
- readonly mode?: "errors-only" | "response-only" | "both" | undefined
1009
+ readonly retryOn?: "errors-only" | "response-only" | "errors-and-responses" | undefined
1010
1010
  readonly while?: Predicate.Predicate<E | ES>
1011
1011
  readonly schedule?: Schedule.Schedule<B, any, ES, R1>
1012
1012
  readonly times?: number
1013
1013
  } | Schedule.Schedule<B, any, ES, R1>
1014
1014
  ): HttpClient.With<E | ES, R1 | R> => {
1015
1015
  const isOnlySchedule = Schedule.isSchedule(options)
1016
- const mode = isOnlySchedule ? "both" : options.mode ?? "both"
1016
+ const retryOn = isOnlySchedule ? "errors-and-responses" : options.retryOn ?? "errors-and-responses"
1017
1017
  const schedule = isOnlySchedule ? options : options.schedule
1018
1018
  const passthroughSchedule = schedule && Schedule.passthrough(schedule)
1019
1019
  const times = isOnlySchedule ? undefined : options.times
1020
1020
  return transformResponse(
1021
1021
  self,
1022
1022
  flow(
1023
- mode === "errors-only" ? identity : Effect.repeat({
1023
+ retryOn === "errors-only" ? identity : Effect.repeat({
1024
1024
  schedule: passthroughSchedule!,
1025
1025
  times,
1026
1026
  while: isTransientResponse
1027
1027
  }),
1028
- mode === "response-only" ? identity : Effect.retry({
1028
+ retryOn === "response-only" ? identity : Effect.retry({
1029
1029
  while: isOnlySchedule || options.while === undefined
1030
1030
  ? isTransientError
1031
1031
  : Predicate.or(isTransientError, options.while),
@@ -61,12 +61,6 @@ export interface Options {
61
61
  * @since 4.0.0
62
62
  */
63
63
  export declare namespace Options {
64
- /**
65
- * @since 4.0.0
66
- * @category models
67
- */
68
- export interface NoBody extends Omit<Options, "method" | "url" | "body"> {}
69
-
70
64
  /**
71
65
  * @since 4.0.0
72
66
  * @category models
@@ -133,7 +127,7 @@ export const make = <M extends HttpMethod>(
133
127
  ) =>
134
128
  (
135
129
  url: string | URL,
136
- options?: (M extends "GET" | "HEAD" ? Options.NoBody : Options.NoUrl) | undefined
130
+ options?: Options.NoUrl | undefined
137
131
  ): HttpClientRequest =>
138
132
  modify(empty, {
139
133
  method,
@@ -145,7 +139,7 @@ export const make = <M extends HttpMethod>(
145
139
  * @since 4.0.0
146
140
  * @category constructors
147
141
  */
148
- export const get: (url: string | URL, options?: Options.NoBody) => HttpClientRequest = make("GET")
142
+ export const get: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("GET")
149
143
 
150
144
  /**
151
145
  * @since 4.0.0
@@ -165,23 +159,33 @@ export const patch: (url: string | URL, options?: Options.NoUrl) => HttpClientRe
165
159
  */
166
160
  export const put: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("PUT")
167
161
 
162
+ const del: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("DELETE")
163
+
164
+ export {
165
+ /**
166
+ * @since 4.0.0
167
+ * @category constructors
168
+ */
169
+ del as delete
170
+ }
171
+
168
172
  /**
169
173
  * @since 4.0.0
170
174
  * @category constructors
171
175
  */
172
- export const del: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("DELETE")
176
+ export const head: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("HEAD")
173
177
 
174
178
  /**
175
179
  * @since 4.0.0
176
180
  * @category constructors
177
181
  */
178
- export const head: (url: string | URL, options?: Options.NoBody) => HttpClientRequest = make("HEAD")
182
+ export const options: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("OPTIONS")
179
183
 
180
184
  /**
181
185
  * @since 4.0.0
182
186
  * @category constructors
183
187
  */
184
- export const options: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("OPTIONS")
188
+ export const trace: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("TRACE")
185
189
 
186
190
  /**
187
191
  * @since 4.0.0
@@ -661,7 +665,7 @@ export const setBody: {
661
665
  (self: HttpClientRequest, body: HttpBody.HttpBody): HttpClientRequest
662
666
  } = dual(2, (self: HttpClientRequest, body: HttpBody.HttpBody): HttpClientRequest => {
663
667
  let headers = self.headers
664
- if (body._tag === "Empty") {
668
+ if (body._tag === "Empty" || body._tag === "FormData") {
665
669
  headers = Headers.remove(Headers.remove(headers, "Content-Type"), "Content-length")
666
670
  } else {
667
671
  if (body.contentType) {
@@ -826,7 +830,28 @@ export const bodyFormData: {
826
830
  * @category combinators
827
831
  */
828
832
  (self: HttpClientRequest, body: FormData): HttpClientRequest
829
- } = dual(2, (self: HttpClientRequest, body: FormData): HttpClientRequest => setBody(self, HttpBody.makeFormData(body)))
833
+ } = dual(2, (self: HttpClientRequest, body: FormData): HttpClientRequest => setBody(self, HttpBody.formData(body)))
834
+
835
+ /**
836
+ * @since 4.0.0
837
+ * @category combinators
838
+ */
839
+ export const bodyFormDataRecord: {
840
+ /**
841
+ * @since 4.0.0
842
+ * @category combinators
843
+ */
844
+ (entries: HttpBody.FormDataInput): (self: HttpClientRequest) => HttpClientRequest
845
+ /**
846
+ * @since 4.0.0
847
+ * @category combinators
848
+ */
849
+ (self: HttpClientRequest, entries: HttpBody.FormDataInput): HttpClientRequest
850
+ } = dual(
851
+ 2,
852
+ (self: HttpClientRequest, entries: HttpBody.FormDataInput): HttpClientRequest =>
853
+ setBody(self, HttpBody.formDataRecord(entries))
854
+ )
830
855
 
831
856
  /**
832
857
  * @since 4.0.0
@@ -6,7 +6,6 @@ import * as Effect from "../../Effect.ts"
6
6
  import * as Exit from "../../Exit.ts"
7
7
  import * as Fiber from "../../Fiber.ts"
8
8
  import { dual } from "../../Function.ts"
9
- import { effectIsExit } from "../../internal/effect.ts"
10
9
  import * as Layer from "../../Layer.ts"
11
10
  import * as Scope from "../../Scope.ts"
12
11
  import * as ServiceMap from "../../ServiceMap.ts"
@@ -32,30 +31,6 @@ export const toHandled = <E, R, EH, RH>(
32
31
  ) => Effect.Effect<unknown, EH, RH>,
33
32
  middleware?: HttpMiddleware | undefined
34
33
  ): Effect.Effect<void, never, Exclude<R | RH | HttpServerRequest, Scope.Scope>> => {
35
- const responded = Effect.flatMap(self, (response) => {
36
- const fiber = Fiber.getCurrent()!
37
- const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
38
- const handler = fiber.getRef(PreResponseHandlers)
39
- if (handler === undefined) {
40
- ;(request as any)[handledSymbol] = true
41
- const eff = handleResponse(request, response)
42
- if (effectIsExit(eff)) {
43
- return eff._tag === "Success" ? Effect.succeed(response) : handleCause(eff.cause)
44
- }
45
- return Effect.matchCauseEffect(eff, {
46
- onFailure: handleCause,
47
- onSuccess: () => Effect.succeed(response)
48
- })
49
- }
50
- return Effect.flatMapEager(handler(request, response), (sentResponse) => {
51
- ;(request as any)[handledSymbol] = true
52
- return Effect.matchCauseEffectEager(handleResponse(request, sentResponse), {
53
- onSuccess: () => Effect.succeed(response),
54
- onFailure: handleCause
55
- })
56
- })
57
- })
58
-
59
34
  const handleCause = (cause: Cause<E | EH | HttpServerError>) =>
60
35
  Effect.flatMapEager(causeResponse(cause), ([response, cause]) => {
61
36
  const fiber = Fiber.getCurrent()!
@@ -79,6 +54,23 @@ export const toHandled = <E, R, EH, RH>(
79
54
  )
80
55
  })
81
56
 
57
+ const responded = Effect.matchCauseEffect(self, {
58
+ onSuccess: (response) => {
59
+ const fiber = Fiber.getCurrent()!
60
+ const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
61
+ const handler = fiber.getRef(PreResponseHandlers)
62
+ if (handler === undefined) {
63
+ ;(request as any)[handledSymbol] = true
64
+ return Effect.mapEager(handleResponse(request, response), () => response)
65
+ }
66
+ return Effect.flatMapEager(handler(request, response), (sentResponse) => {
67
+ ;(request as any)[handledSymbol] = true
68
+ return Effect.mapEager(handleResponse(request, sentResponse), () => response)
69
+ })
70
+ },
71
+ onFailure: handleCause
72
+ })
73
+
82
74
  const withMiddleware: Effect.Effect<
83
75
  unknown,
84
76
  E | EH | HttpServerError,
@@ -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)
@@ -327,7 +327,7 @@ export const formData = (
327
327
  statusText: options?.statusText,
328
328
  headers: options?.headers && Headers.fromInput(options.headers),
329
329
  cookies: options?.cookies,
330
- body: Body.makeFormData(body)
330
+ body: Body.formData(body)
331
331
  })
332
332
 
333
333
  /**
@@ -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
@@ -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