effect 4.0.0-beta.94 → 4.0.0-beta.98

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 (532) hide show
  1. package/dist/Array.d.ts.map +1 -1
  2. package/dist/BigDecimal.d.ts.map +1 -1
  3. package/dist/BigDecimal.js.map +1 -1
  4. package/dist/BigInt.d.ts.map +1 -1
  5. package/dist/Boolean.d.ts.map +1 -1
  6. package/dist/Brand.d.ts.map +1 -1
  7. package/dist/Cache.d.ts.map +1 -1
  8. package/dist/Cause.d.ts.map +1 -1
  9. package/dist/Channel.d.ts.map +1 -1
  10. package/dist/ChannelSchema.d.ts.map +1 -1
  11. package/dist/Chunk.d.ts.map +1 -1
  12. package/dist/Combiner.d.ts.map +1 -1
  13. package/dist/Config.d.ts.map +1 -1
  14. package/dist/Config.js.map +1 -1
  15. package/dist/ConfigProvider.d.ts +44 -6
  16. package/dist/ConfigProvider.d.ts.map +1 -1
  17. package/dist/ConfigProvider.js +63 -24
  18. package/dist/ConfigProvider.js.map +1 -1
  19. package/dist/Console.d.ts.map +1 -1
  20. package/dist/Context.d.ts.map +1 -1
  21. package/dist/Cron.d.ts +4 -1
  22. package/dist/Cron.d.ts.map +1 -1
  23. package/dist/Cron.js +98 -53
  24. package/dist/Cron.js.map +1 -1
  25. package/dist/Crypto.d.ts.map +1 -1
  26. package/dist/Data.d.ts.map +1 -1
  27. package/dist/DateTime.d.ts +12 -12
  28. package/dist/DateTime.d.ts.map +1 -1
  29. package/dist/Deferred.d.ts.map +1 -1
  30. package/dist/Duration.d.ts.map +1 -1
  31. package/dist/Effect.d.ts.map +1 -1
  32. package/dist/Effectable.d.ts.map +1 -1
  33. package/dist/Encoding.d.ts.map +1 -1
  34. package/dist/Equal.d.ts.map +1 -1
  35. package/dist/Equivalence.d.ts.map +1 -1
  36. package/dist/ErrorReporter.d.ts.map +1 -1
  37. package/dist/ExecutionPlan.d.ts +2 -2
  38. package/dist/ExecutionPlan.d.ts.map +1 -1
  39. package/dist/Fiber.d.ts.map +1 -1
  40. package/dist/FiberHandle.d.ts +8 -8
  41. package/dist/FiberHandle.d.ts.map +1 -1
  42. package/dist/FiberMap.d.ts +8 -8
  43. package/dist/FiberMap.d.ts.map +1 -1
  44. package/dist/FiberSet.d.ts +4 -4
  45. package/dist/FiberSet.d.ts.map +1 -1
  46. package/dist/FileSystem.d.ts.map +1 -1
  47. package/dist/Filter.d.ts.map +1 -1
  48. package/dist/Function.d.ts.map +1 -1
  49. package/dist/Graph.d.ts.map +1 -1
  50. package/dist/Graph.js.map +1 -1
  51. package/dist/Hash.d.ts.map +1 -1
  52. package/dist/HashMap.d.ts.map +1 -1
  53. package/dist/HashRing.d.ts.map +1 -1
  54. package/dist/Inspectable.d.ts.map +1 -1
  55. package/dist/Inspectable.js.map +1 -1
  56. package/dist/Iterable.d.ts.map +1 -1
  57. package/dist/Latch.d.ts.map +1 -1
  58. package/dist/Layer.d.ts.map +1 -1
  59. package/dist/LayerMap.d.ts.map +1 -1
  60. package/dist/LayerRef.d.ts +5 -7
  61. package/dist/LayerRef.d.ts.map +1 -1
  62. package/dist/LayerRef.js +4 -6
  63. package/dist/LayerRef.js.map +1 -1
  64. package/dist/LogLevel.d.ts.map +1 -1
  65. package/dist/Logger.d.ts.map +1 -1
  66. package/dist/ManagedRuntime.d.ts.map +1 -1
  67. package/dist/Metric.d.ts.map +1 -1
  68. package/dist/MutableHashMap.d.ts.map +1 -1
  69. package/dist/MutableHashSet.d.ts.map +1 -1
  70. package/dist/MutableList.d.ts.map +1 -1
  71. package/dist/MutableRef.d.ts.map +1 -1
  72. package/dist/NonEmptyIterable.d.ts.map +1 -1
  73. package/dist/Number.d.ts.map +1 -1
  74. package/dist/Number.js +28 -10
  75. package/dist/Number.js.map +1 -1
  76. package/dist/Optic.d.ts.map +1 -1
  77. package/dist/Option.d.ts.map +1 -1
  78. package/dist/Order.d.ts.map +1 -1
  79. package/dist/Ordering.d.ts.map +1 -1
  80. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  81. package/dist/Pipeable.d.ts.map +1 -1
  82. package/dist/PlatformError.d.ts.map +1 -1
  83. package/dist/Pool.d.ts.map +1 -1
  84. package/dist/PrimaryKey.d.ts.map +1 -1
  85. package/dist/PubSub.d.ts.map +1 -1
  86. package/dist/Pull.d.ts.map +1 -1
  87. package/dist/Queue.d.ts.map +1 -1
  88. package/dist/Random.d.ts.map +1 -1
  89. package/dist/RcMap.d.ts.map +1 -1
  90. package/dist/Record.d.ts.map +1 -1
  91. package/dist/Redactable.d.ts.map +1 -1
  92. package/dist/Redacted.d.ts.map +1 -1
  93. package/dist/Ref.d.ts.map +1 -1
  94. package/dist/RegExp.d.ts.map +1 -1
  95. package/dist/Request.d.ts +1 -1
  96. package/dist/Request.d.ts.map +1 -1
  97. package/dist/RequestResolver.d.ts.map +1 -1
  98. package/dist/Resource.d.ts.map +1 -1
  99. package/dist/Result.d.ts.map +1 -1
  100. package/dist/Runtime.d.ts.map +1 -1
  101. package/dist/Schedule.d.ts +1206 -4013
  102. package/dist/Schedule.d.ts.map +1 -1
  103. package/dist/Schedule.js +244 -1348
  104. package/dist/Schedule.js.map +1 -1
  105. package/dist/Scheduler.d.ts.map +1 -1
  106. package/dist/Scheduler.js.map +1 -1
  107. package/dist/Schema.d.ts +71 -22
  108. package/dist/Schema.d.ts.map +1 -1
  109. package/dist/Schema.js +76 -33
  110. package/dist/Schema.js.map +1 -1
  111. package/dist/SchemaAST.d.ts.map +1 -1
  112. package/dist/SchemaAST.js +25 -10
  113. package/dist/SchemaAST.js.map +1 -1
  114. package/dist/SchemaError.d.ts +53 -0
  115. package/dist/SchemaError.d.ts.map +1 -0
  116. package/dist/SchemaError.js +61 -0
  117. package/dist/SchemaError.js.map +1 -0
  118. package/dist/SchemaGetter.d.ts.map +1 -1
  119. package/dist/SchemaGetter.js +17 -12
  120. package/dist/SchemaGetter.js.map +1 -1
  121. package/dist/SchemaIssue.d.ts.map +1 -1
  122. package/dist/SchemaIssue.js.map +1 -1
  123. package/dist/SchemaParser.d.ts.map +1 -1
  124. package/dist/SchemaRepresentation.d.ts +106 -106
  125. package/dist/SchemaRepresentation.d.ts.map +1 -1
  126. package/dist/SchemaRepresentation.js +186 -224
  127. package/dist/SchemaRepresentation.js.map +1 -1
  128. package/dist/SchemaTransformation.d.ts +38 -2
  129. package/dist/SchemaTransformation.d.ts.map +1 -1
  130. package/dist/SchemaTransformation.js +38 -2
  131. package/dist/SchemaTransformation.js.map +1 -1
  132. package/dist/ScopedCache.d.ts.map +1 -1
  133. package/dist/ScopedRef.d.ts.map +1 -1
  134. package/dist/Semaphore.d.ts.map +1 -1
  135. package/dist/Sink.d.ts.map +1 -1
  136. package/dist/Stdio.d.ts.map +1 -1
  137. package/dist/Stream.d.ts +2 -2
  138. package/dist/Stream.d.ts.map +1 -1
  139. package/dist/Stream.js +1 -1
  140. package/dist/String.d.ts.map +1 -1
  141. package/dist/String.js.map +1 -1
  142. package/dist/Struct.d.ts.map +1 -1
  143. package/dist/SubscriptionRef.d.ts.map +1 -1
  144. package/dist/SynchronizedRef.d.ts.map +1 -1
  145. package/dist/Take.d.ts.map +1 -1
  146. package/dist/Terminal.d.ts.map +1 -1
  147. package/dist/Tracer.d.ts.map +1 -1
  148. package/dist/Trie.d.ts.map +1 -1
  149. package/dist/Tuple.d.ts.map +1 -1
  150. package/dist/TxChunk.d.ts.map +1 -1
  151. package/dist/TxDeferred.d.ts.map +1 -1
  152. package/dist/TxHashMap.d.ts.map +1 -1
  153. package/dist/TxHashSet.d.ts.map +1 -1
  154. package/dist/TxPriorityQueue.d.ts.map +1 -1
  155. package/dist/TxPubSub.d.ts.map +1 -1
  156. package/dist/TxQueue.d.ts.map +1 -1
  157. package/dist/TxReentrantLock.d.ts.map +1 -1
  158. package/dist/TxRef.d.ts.map +1 -1
  159. package/dist/TxSemaphore.d.ts.map +1 -1
  160. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  161. package/dist/Types.d.ts +1 -1
  162. package/dist/Types.d.ts.map +1 -1
  163. package/dist/UndefinedOr.d.ts.map +1 -1
  164. package/dist/Utils.d.ts.map +1 -1
  165. package/dist/index.d.ts +8 -0
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +8 -0
  168. package/dist/index.js.map +1 -1
  169. package/dist/internal/effect.js +26 -8
  170. package/dist/internal/effect.js.map +1 -1
  171. package/dist/internal/schema/equivalence.js +1 -2
  172. package/dist/internal/schema/equivalence.js.map +1 -1
  173. package/dist/internal/schema/representation.js +1 -3
  174. package/dist/internal/schema/representation.js.map +1 -1
  175. package/dist/internal/schema/schema.d.ts +0 -13
  176. package/dist/internal/schema/schema.d.ts.map +1 -1
  177. package/dist/internal/schema/schema.js +4 -29
  178. package/dist/internal/schema/schema.js.map +1 -1
  179. package/dist/testing/TestClock.d.ts.map +1 -1
  180. package/dist/testing/TestConsole.d.ts.map +1 -1
  181. package/dist/testing/TestSchema.d.ts.map +1 -1
  182. package/dist/unstable/ai/AiError.d.ts +1 -1
  183. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  184. package/dist/unstable/ai/Chat.d.ts +1 -1
  185. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  186. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  187. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  188. package/dist/unstable/ai/McpSchema.d.ts +278 -278
  189. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  190. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  191. package/dist/unstable/ai/Model.d.ts.map +1 -1
  192. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  193. package/dist/unstable/ai/Response.d.ts.map +1 -1
  194. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  195. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  196. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  197. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  198. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  199. package/dist/unstable/cli/CliError.d.ts +8 -16
  200. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  201. package/dist/unstable/cli/CliError.js +8 -16
  202. package/dist/unstable/cli/CliError.js.map +1 -1
  203. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  204. package/dist/unstable/cli/Command.d.ts +4 -3
  205. package/dist/unstable/cli/Command.d.ts.map +1 -1
  206. package/dist/unstable/cli/Command.js +3 -3
  207. package/dist/unstable/cli/Command.js.map +1 -1
  208. package/dist/unstable/cli/Completions.d.ts.map +1 -1
  209. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  210. package/dist/unstable/cli/GlobalFlag.d.ts +6 -8
  211. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -1
  212. package/dist/unstable/cli/GlobalFlag.js +6 -6
  213. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  214. package/dist/unstable/cli/Param.d.ts.map +1 -1
  215. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  216. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  217. package/dist/unstable/cli/Prompt.js.map +1 -1
  218. package/dist/unstable/cli/internal/ansi.d.ts.map +1 -1
  219. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  220. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  221. package/dist/unstable/cli/internal/help.d.ts.map +1 -1
  222. package/dist/unstable/cli/internal/parser.js.map +1 -1
  223. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  224. package/dist/unstable/cluster/ClusterCron.js +1 -1
  225. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  226. package/dist/unstable/cluster/ClusterError.d.ts.map +1 -1
  227. package/dist/unstable/cluster/ClusterSchema.d.ts +1 -1
  228. package/dist/unstable/cluster/ClusterSchema.d.ts.map +1 -1
  229. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +1 -1
  230. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  231. package/dist/unstable/cluster/ClusterWorkflowEngine.js +1 -1
  232. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  233. package/dist/unstable/cluster/DeliverAt.d.ts.map +1 -1
  234. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  235. package/dist/unstable/cluster/EntityAddress.d.ts.map +1 -1
  236. package/dist/unstable/cluster/EntityId.d.ts.map +1 -1
  237. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  238. package/dist/unstable/cluster/EntityProxyServer.d.ts +1 -1
  239. package/dist/unstable/cluster/EntityProxyServer.d.ts.map +1 -1
  240. package/dist/unstable/cluster/EntityProxyServer.js +2 -4
  241. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  242. package/dist/unstable/cluster/EntityType.d.ts.map +1 -1
  243. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  244. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  245. package/dist/unstable/cluster/MachineId.d.ts.map +1 -1
  246. package/dist/unstable/cluster/Message.d.ts.map +1 -1
  247. package/dist/unstable/cluster/MessageStorage.d.ts +25 -29
  248. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  249. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  250. package/dist/unstable/cluster/Runner.d.ts.map +1 -1
  251. package/dist/unstable/cluster/RunnerAddress.d.ts.map +1 -1
  252. package/dist/unstable/cluster/RunnerHealth.d.ts.map +1 -1
  253. package/dist/unstable/cluster/RunnerServer.d.ts +1 -1
  254. package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
  255. package/dist/unstable/cluster/Runners.d.ts +8 -8
  256. package/dist/unstable/cluster/ShardId.d.ts.map +1 -1
  257. package/dist/unstable/cluster/Sharding.js +3 -4
  258. package/dist/unstable/cluster/Sharding.js.map +1 -1
  259. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  260. package/dist/unstable/cluster/ShardingRegistrationEvent.d.ts +6 -8
  261. package/dist/unstable/cluster/ShardingRegistrationEvent.d.ts.map +1 -1
  262. package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
  263. package/dist/unstable/cluster/Singleton.d.ts.map +1 -1
  264. package/dist/unstable/cluster/SingletonAddress.d.ts.map +1 -1
  265. package/dist/unstable/cluster/Snowflake.d.ts +1 -1
  266. package/dist/unstable/cluster/Snowflake.d.ts.map +1 -1
  267. package/dist/unstable/cluster/Snowflake.js +1 -1
  268. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  269. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  270. package/dist/unstable/cluster/SqlRunnerStorage.d.ts +1 -1
  271. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  272. package/dist/unstable/cluster/internal/entityManager.js +26 -24
  273. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  274. package/dist/unstable/devtools/DevTools.d.ts.map +1 -1
  275. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  276. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  277. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  278. package/dist/unstable/eventlog/Event.d.ts.map +1 -1
  279. package/dist/unstable/eventlog/EventGroup.d.ts.map +1 -1
  280. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  281. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  282. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  283. package/dist/unstable/eventlog/EventLog.js +2 -2
  284. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  285. package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
  286. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  287. package/dist/unstable/eventlog/EventLogRemote.d.ts +21 -21
  288. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  289. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +1 -1
  290. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +3 -4
  291. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  292. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  293. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
  294. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  295. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  296. package/dist/unstable/http/Cookies.d.ts +1 -1
  297. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  298. package/dist/unstable/http/Etag.d.ts.map +1 -1
  299. package/dist/unstable/http/Headers.d.ts.map +1 -1
  300. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  301. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  302. package/dist/unstable/http/HttpClientError.d.ts +1 -1
  303. package/dist/unstable/http/HttpClientError.d.ts.map +1 -1
  304. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  305. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  306. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  307. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  308. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  309. package/dist/unstable/http/HttpMiddleware.d.ts +1 -1
  310. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  311. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  312. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  313. package/dist/unstable/http/HttpServerError.d.ts +1 -1
  314. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  315. package/dist/unstable/http/HttpServerRequest.d.ts +2 -2
  316. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  317. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  318. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  319. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  320. package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
  321. package/dist/unstable/http/Multipart.d.ts +2 -1
  322. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  323. package/dist/unstable/http/Url.d.ts.map +1 -1
  324. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  325. package/dist/unstable/httpapi/HttpApi.d.ts +36 -15
  326. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  327. package/dist/unstable/httpapi/HttpApi.js +19 -20
  328. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  329. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +51 -62
  330. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  331. package/dist/unstable/httpapi/HttpApiBuilder.js +68 -58
  332. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  333. package/dist/unstable/httpapi/HttpApiClient.d.ts +53 -53
  334. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  335. package/dist/unstable/httpapi/HttpApiClient.js +40 -30
  336. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  337. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +171 -170
  338. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  339. package/dist/unstable/httpapi/HttpApiEndpoint.js +31 -19
  340. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  341. package/dist/unstable/httpapi/HttpApiError.d.ts +23 -1
  342. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  343. package/dist/unstable/httpapi/HttpApiError.js +31 -0
  344. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  345. package/dist/unstable/httpapi/HttpApiGroup.d.ts +55 -30
  346. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  347. package/dist/unstable/httpapi/HttpApiGroup.js +22 -29
  348. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  349. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +8 -8
  350. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  351. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  352. package/dist/unstable/httpapi/HttpApiScalar.d.ts +2 -2
  353. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  354. package/dist/unstable/httpapi/HttpApiScalar.js +4 -3
  355. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  356. package/dist/unstable/httpapi/HttpApiSchema.d.ts +8 -0
  357. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  358. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  359. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  360. package/dist/unstable/httpapi/HttpApiSwagger.d.ts +1 -1
  361. package/dist/unstable/httpapi/HttpApiSwagger.d.ts.map +1 -1
  362. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  363. package/dist/unstable/httpapi/HttpApiTest.d.ts +4 -4
  364. package/dist/unstable/httpapi/HttpApiTest.d.ts.map +1 -1
  365. package/dist/unstable/httpapi/HttpApiTest.js +9 -8
  366. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  367. package/dist/unstable/httpapi/OpenApi.d.ts +1 -1
  368. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  369. package/dist/unstable/httpapi/OpenApi.js +77 -37
  370. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  371. package/dist/unstable/httpapi/internal/html.js +6 -2
  372. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  373. package/dist/unstable/httpapi/internal/mediaType.d.ts +2 -0
  374. package/dist/unstable/httpapi/internal/mediaType.d.ts.map +1 -0
  375. package/dist/unstable/httpapi/internal/mediaType.js +7 -0
  376. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -0
  377. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  378. package/dist/unstable/observability/OtlpExporter.js +3 -1
  379. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  380. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  381. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  382. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  383. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  384. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  385. package/dist/unstable/observability/internal/otlpEnv.d.ts.map +1 -1
  386. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  387. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  388. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  389. package/dist/unstable/persistence/PersistedQueue.d.ts +1 -1
  390. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  391. package/dist/unstable/persistence/PersistedQueue.js +16 -12
  392. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  393. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  394. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  395. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  396. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  397. package/dist/unstable/process/ChildProcess.js.map +1 -1
  398. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  399. package/dist/unstable/reactivity/AsyncResult.d.ts +2 -2
  400. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  401. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  402. package/dist/unstable/reactivity/Atom.js +1 -1
  403. package/dist/unstable/reactivity/Atom.js.map +1 -1
  404. package/dist/unstable/reactivity/AtomHttpApi.d.ts +7 -7
  405. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  406. package/dist/unstable/reactivity/AtomHttpApi.js +3 -2
  407. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  408. package/dist/unstable/reactivity/AtomRef.d.ts.map +1 -1
  409. package/dist/unstable/reactivity/AtomRegistry.d.ts +2 -2
  410. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  411. package/dist/unstable/reactivity/AtomRegistry.js +28 -37
  412. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  413. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  414. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -1
  415. package/dist/unstable/reactivity/Reactivity.d.ts.map +1 -1
  416. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  417. package/dist/unstable/rpc/RpcClient.d.ts +2 -1
  418. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  419. package/dist/unstable/rpc/RpcClient.js +5 -5
  420. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  421. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  422. package/dist/unstable/rpc/RpcMessage.d.ts +7 -7
  423. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  424. package/dist/unstable/rpc/RpcMessage.js +2 -2
  425. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  426. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  427. package/dist/unstable/rpc/RpcSchema.d.ts +1 -1
  428. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  429. package/dist/unstable/rpc/RpcSerialization.js +8 -8
  430. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  431. package/dist/unstable/rpc/RpcServer.d.ts +5 -3
  432. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  433. package/dist/unstable/rpc/RpcServer.js +11 -8
  434. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  435. package/dist/unstable/rpc/RpcWorker.d.ts.map +1 -1
  436. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  437. package/dist/unstable/schema/Model.d.ts +24 -38
  438. package/dist/unstable/schema/Model.d.ts.map +1 -1
  439. package/dist/unstable/schema/VariantSchema.d.ts +1 -1
  440. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  441. package/dist/unstable/socket/Socket.d.ts +1 -1
  442. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  443. package/dist/unstable/socket/SocketServer.d.ts.map +1 -1
  444. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  445. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  446. package/dist/unstable/sql/SqlError.d.ts +2 -2
  447. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  448. package/dist/unstable/sql/SqlError.js.map +1 -1
  449. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  450. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  451. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  452. package/dist/unstable/sql/SqlStream.d.ts.map +1 -1
  453. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  454. package/dist/unstable/workers/Transferable.d.ts.map +1 -1
  455. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  456. package/dist/unstable/workers/WorkerError.d.ts.map +1 -1
  457. package/dist/unstable/workflow/Activity.d.ts +1 -1
  458. package/dist/unstable/workflow/Activity.d.ts.map +1 -1
  459. package/dist/unstable/workflow/Activity.js +1 -1
  460. package/dist/unstable/workflow/Activity.js.map +1 -1
  461. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  462. package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
  463. package/dist/unstable/workflow/DurableDeferred.js +1 -1
  464. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  465. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  466. package/dist/unstable/workflow/DurableQueue.js +1 -1
  467. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  468. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  469. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  470. package/dist/unstable/workflow/WorkflowEngine.js +1 -1
  471. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  472. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  473. package/dist/unstable/workflow/WorkflowProxyServer.d.ts +1 -1
  474. package/dist/unstable/workflow/WorkflowProxyServer.d.ts.map +1 -1
  475. package/dist/unstable/workflow/WorkflowProxyServer.js +1 -2
  476. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  477. package/package.json +11 -12
  478. package/src/ConfigProvider.ts +79 -27
  479. package/src/Cron.ts +109 -57
  480. package/src/LayerRef.ts +4 -6
  481. package/src/Number.ts +29 -10
  482. package/src/Schedule.ts +1437 -4445
  483. package/src/Schema.ts +95 -34
  484. package/src/SchemaAST.ts +25 -13
  485. package/src/SchemaError.ts +64 -0
  486. package/src/SchemaGetter.ts +22 -16
  487. package/src/SchemaRepresentation.ts +165 -202
  488. package/src/SchemaTransformation.ts +42 -2
  489. package/src/Stream.ts +1 -1
  490. package/src/index.ts +10 -0
  491. package/src/internal/effect.ts +39 -22
  492. package/src/internal/schema/equivalence.ts +1 -2
  493. package/src/internal/schema/representation.ts +4 -4
  494. package/src/internal/schema/schema.ts +4 -37
  495. package/src/unstable/cli/CliError.ts +24 -16
  496. package/src/unstable/cli/Command.ts +8 -8
  497. package/src/unstable/cli/GlobalFlag.ts +22 -33
  498. package/src/unstable/cluster/ClusterCron.ts +4 -3
  499. package/src/unstable/cluster/ClusterWorkflowEngine.ts +4 -3
  500. package/src/unstable/cluster/EntityProxyServer.ts +15 -17
  501. package/src/unstable/cluster/Sharding.ts +4 -4
  502. package/src/unstable/cluster/Snowflake.ts +2 -2
  503. package/src/unstable/cluster/internal/entityManager.ts +61 -47
  504. package/src/unstable/eventlog/EventLog.ts +4 -3
  505. package/src/unstable/httpapi/HttpApi.ts +72 -47
  506. package/src/unstable/httpapi/HttpApiBuilder.ts +320 -217
  507. package/src/unstable/httpapi/HttpApiClient.ts +196 -151
  508. package/src/unstable/httpapi/HttpApiEndpoint.ts +251 -447
  509. package/src/unstable/httpapi/HttpApiError.ts +33 -0
  510. package/src/unstable/httpapi/HttpApiGroup.ts +95 -74
  511. package/src/unstable/httpapi/HttpApiMiddleware.ts +10 -7
  512. package/src/unstable/httpapi/HttpApiScalar.ts +15 -12
  513. package/src/unstable/httpapi/HttpApiSchema.ts +8 -0
  514. package/src/unstable/httpapi/HttpApiSwagger.ts +2 -2
  515. package/src/unstable/httpapi/HttpApiTest.ts +15 -14
  516. package/src/unstable/httpapi/OpenApi.ts +74 -36
  517. package/src/unstable/httpapi/internal/html.ts +9 -2
  518. package/src/unstable/httpapi/internal/mediaType.ts +6 -0
  519. package/src/unstable/observability/OtlpExporter.ts +1 -1
  520. package/src/unstable/persistence/PersistedQueue.ts +16 -14
  521. package/src/unstable/reactivity/Atom.ts +1 -1
  522. package/src/unstable/reactivity/AtomHttpApi.ts +164 -162
  523. package/src/unstable/reactivity/AtomRegistry.ts +35 -44
  524. package/src/unstable/rpc/RpcClient.ts +10 -9
  525. package/src/unstable/rpc/RpcMessage.ts +8 -9
  526. package/src/unstable/rpc/RpcSerialization.ts +16 -16
  527. package/src/unstable/rpc/RpcServer.ts +15 -9
  528. package/src/unstable/workflow/Activity.ts +6 -5
  529. package/src/unstable/workflow/DurableDeferred.ts +1 -1
  530. package/src/unstable/workflow/DurableQueue.ts +4 -3
  531. package/src/unstable/workflow/WorkflowEngine.ts +4 -3
  532. package/src/unstable/workflow/WorkflowProxyServer.ts +11 -12
@@ -15,6 +15,7 @@ import * as Cause from "../../Cause.ts"
15
15
  import type * as Context from "../../Context.ts"
16
16
  import * as Effect from "../../Effect.ts"
17
17
  import { identity } from "../../Function.ts"
18
+ import * as internalRecord from "../../internal/record.ts"
18
19
  import * as Option from "../../Option.ts"
19
20
  import * as Predicate from "../../Predicate.ts"
20
21
  import * as Schema from "../../Schema.ts"
@@ -37,6 +38,7 @@ import * as HttpApiEndpoint from "./HttpApiEndpoint.ts"
37
38
  import type * as HttpApiGroup from "./HttpApiGroup.ts"
38
39
  import type * as HttpApiMiddleware from "./HttpApiMiddleware.ts"
39
40
  import * as HttpApiSchema from "./HttpApiSchema.ts"
41
+ import * as MediaType from "./internal/mediaType.ts"
40
42
 
41
43
  /**
42
44
  * The type-safe client shape generated from HTTP API groups, with non-top-level
@@ -45,18 +47,15 @@ import * as HttpApiSchema from "./HttpApiSchema.ts"
45
47
  * @category models
46
48
  * @since 4.0.0
47
49
  */
48
- export type Client<Groups extends HttpApiGroup.Any, E = never, R = never> = Simplify<
50
+ export type Client<Groups extends HttpApiGroup.Constraint, E = never, R = never> = Simplify<
49
51
  & {
50
- readonly [Group in Extract<Groups, { readonly topLevel: false }> as HttpApiGroup.Name<Group>]: Client.Group<
52
+ readonly [Group in Extract<Groups, { readonly topLevel: false }> as HttpApiGroup.Identifier<Group>]: Client.Group<
51
53
  Group,
52
- Group["identifier"],
53
54
  E,
54
55
  R
55
56
  >
56
57
  }
57
- & {
58
- readonly [Method in Client.TopLevelMethods<Groups, E, R> as Method[0]]: Method[1]
59
- }
58
+ & Client.TopLevelMethods<Groups, E, R>
60
59
  >
61
60
 
62
61
  /**
@@ -66,7 +65,7 @@ export type Client<Groups extends HttpApiGroup.Any, E = never, R = never> = Simp
66
65
  * @category models
67
66
  * @since 4.0.0
68
67
  */
69
- export type ForApi<Api extends HttpApi.Any, E = never, R = never> = Api extends
68
+ export type ForApi<Api extends HttpApi.Constraint, E = never, R = never> = Api extends
70
69
  HttpApi.HttpApi<infer _Id, infer Groups> ? Client<Groups, E, R> :
71
70
  never
72
71
 
@@ -122,19 +121,43 @@ export declare namespace Client {
122
121
  : [Mode] extends ["response-only"] ? HttpClientResponse.HttpClientResponse
123
122
  : Success
124
123
 
124
+ type GroupByEndpoint<Group extends HttpApiGroup.Constraint, E, R> = Group["endpoints"] extends
125
+ infer Endpoints extends Readonly<Record<string, HttpApiEndpoint.ConstraintRequest>> ? {
126
+ readonly [Identifier in keyof Endpoints]: Method<Endpoints[Identifier], E, R>
127
+ }
128
+ : {}
129
+
125
130
  /**
126
- * The client object for one API group, mapping each endpoint name in that group to
127
- * its typed client method.
131
+ * The client object for one API group, mapping each endpoint identifier in that
132
+ * group to its typed client method.
128
133
  *
129
134
  * @category models
130
135
  * @since 4.0.0
131
136
  */
132
- export type Group<Groups extends HttpApiGroup.Any, GroupName extends Groups["identifier"], E, R> =
133
- [HttpApiGroup.WithName<Groups, GroupName>] extends [HttpApiGroup.HttpApiGroup<infer _GroupName, infer _Endpoints>] ?
134
- {
135
- readonly [Endpoint in _Endpoints as HttpApiEndpoint.Name<Endpoint>]: Method<Endpoint, E, R>
136
- } :
137
- never
137
+ export type Group<Group extends HttpApiGroup.Constraint, E, R> = GroupByEndpoint<Group, E, R>
138
+
139
+ type MethodReturn<
140
+ Endpoint extends HttpApiEndpoint.ConstraintRequest,
141
+ E,
142
+ R,
143
+ Mode extends ResponseMode
144
+ > = Effect.Effect<
145
+ Response<SuccessType<Endpoint["~Success"]>, Mode>,
146
+ | HttpApiMiddleware.Error<Endpoint["~Middleware"]>
147
+ | HttpApiMiddleware.ClientError<Endpoint["~Middleware"]>
148
+ | E
149
+ | HttpClientError.HttpClientError
150
+ | ([Mode] extends ["response-only"] ? never : Endpoint["~Error"]["Type"] | Schema.SchemaError),
151
+ | R
152
+ | Endpoint["~Params"]["EncodingServices"]
153
+ | Endpoint["~Query"]["EncodingServices"]
154
+ | Endpoint["~Payload"]["EncodingServices"]
155
+ | Endpoint["~Headers"]["EncodingServices"]
156
+ | ([Mode] extends ["response-only"] ? never
157
+ :
158
+ | SuccessDecodingServices<Endpoint["~Success"]>
159
+ | Endpoint["~Error"]["DecodingServices"])
160
+ >
138
161
 
139
162
  /**
140
163
  * The typed function generated for an endpoint, accepting the endpoint request
@@ -144,40 +167,21 @@ export declare namespace Client {
144
167
  * @category models
145
168
  * @since 4.0.0
146
169
  */
147
- export type Method<Endpoint, E, R> = [Endpoint] extends [
148
- HttpApiEndpoint.HttpApiEndpoint<
149
- infer _Name,
150
- infer _Method,
151
- infer _Path,
152
- infer _Params,
153
- infer _Query,
154
- infer _Payload,
155
- infer _Headers,
156
- infer _Success,
157
- infer _Error,
158
- infer _Middleware,
159
- infer _MR
170
+ export type Method<
171
+ Endpoint extends HttpApiEndpoint.ConstraintRequest,
172
+ E,
173
+ R
174
+ > = <Mode extends ResponseMode = ResponseMode>(
175
+ request: Simplify<
176
+ HttpApiEndpoint.ClientRequest<
177
+ Endpoint["~Params"],
178
+ Endpoint["~Query"],
179
+ Endpoint["~Payload"],
180
+ Endpoint["~Headers"],
181
+ Mode
182
+ >
160
183
  >
161
- ] ? <Mode extends ResponseMode = ResponseMode>(
162
- request: Simplify<HttpApiEndpoint.ClientRequest<_Params, _Query, _Payload, _Headers, Mode>>
163
- ) => Effect.Effect<
164
- Response<SuccessType<_Success>, Mode>,
165
- | HttpApiMiddleware.Error<_Middleware>
166
- | HttpApiMiddleware.ClientError<_Middleware>
167
- | E
168
- | HttpClientError.HttpClientError
169
- | ([Mode] extends ["response-only"] ? never : _Error["Type"] | Schema.SchemaError),
170
- | R
171
- | _Params["EncodingServices"]
172
- | _Query["EncodingServices"]
173
- | _Payload["EncodingServices"]
174
- | _Headers["EncodingServices"]
175
- | ([Mode] extends ["response-only"] ? never
176
- :
177
- | SuccessDecodingServices<_Success>
178
- | _Error["DecodingServices"])
179
- > :
180
- never
184
+ ) => MethodReturn<Endpoint, E, R, Mode>
181
185
 
182
186
  /**
183
187
  * Extracts client methods for endpoints in top-level groups so they can be exposed
@@ -186,25 +190,31 @@ export declare namespace Client {
186
190
  * @category models
187
191
  * @since 4.0.0
188
192
  */
189
- export type TopLevelMethods<Groups extends HttpApiGroup.Any, E, R> =
190
- Extract<Groups, { readonly topLevel: true }> extends
191
- HttpApiGroup.HttpApiGroup<infer _Id, infer _Endpoints, infer _TopLevel> ?
192
- _Endpoints extends infer Endpoint ? [HttpApiEndpoint.Name<Endpoint>, Method<Endpoint, E, R>]
193
- : never :
194
- never
193
+ export type TopLevelMethods<Groups extends HttpApiGroup.Constraint, E, R> = {
194
+ readonly [
195
+ Endpoint in Extract<
196
+ HttpApiGroup.Endpoints<Extract<Groups, { readonly topLevel: true }>>,
197
+ HttpApiEndpoint.ConstraintRequest
198
+ > as Endpoint["identifier"]
199
+ ]: Method<Endpoint, E, R>
200
+ }
195
201
  }
196
202
 
197
- type UrlBuilderRequest<Endpoint extends HttpApiEndpoint.Any> = (
198
- & ([HttpApiEndpoint.Params<Endpoint>["Type"]] extends [never] ? {}
199
- : { readonly params: HttpApiEndpoint.Params<Endpoint>["Type"] })
200
- & ([HttpApiEndpoint.Query<Endpoint>["Type"]] extends [never] ? {}
201
- : { readonly query: HttpApiEndpoint.Query<Endpoint>["Type"] })
203
+ type UrlBuilderRequestPart<Key extends string, Value> = [Value] extends [never] ? {}
204
+ : { readonly [K in Key]: Value }
205
+
206
+ type UrlBuilderRequest<
207
+ Endpoint extends HttpApiEndpoint.Constraint,
208
+ Params = HttpApiEndpoint.Params<Endpoint>["Type"],
209
+ Query = HttpApiEndpoint.Query<Endpoint>["Type"]
210
+ > = (
211
+ & UrlBuilderRequestPart<"params", Params>
212
+ & UrlBuilderRequestPart<"query", Query>
202
213
  ) extends infer Request ? keyof Request extends never ? void | undefined : Request
203
214
  : never
204
215
 
205
- type UrlBuilderArgs<Endpoint extends HttpApiEndpoint.Any> = [UrlBuilderRequest<Endpoint>] extends [void | undefined] ?
206
- [request?: UrlBuilderRequest<Endpoint>]
207
- : [request: UrlBuilderRequest<Endpoint>]
216
+ type UrlBuilderArgs<Request> = [Request] extends [void | undefined] ? [request?: Request]
217
+ : [request: Request]
208
218
 
209
219
  /**
210
220
  * The type-safe URL builder shape for an HTTP API, mirroring the generated client
@@ -213,49 +223,50 @@ type UrlBuilderArgs<Endpoint extends HttpApiEndpoint.Any> = [UrlBuilderRequest<E
213
223
  * @category models
214
224
  * @since 4.0.0
215
225
  */
216
- export type UrlBuilder<Api extends HttpApi.Any> = Api extends HttpApi.HttpApi<infer _ApiId, infer Groups> ? Simplify<
217
- & {
218
- readonly [Group in Extract<Groups, { readonly topLevel: false }> as HttpApiGroup.Name<Group>]: UrlBuilderGroup<
219
- HttpApiGroup.Endpoints<Group>
220
- >
221
- }
222
- & {
223
- readonly [Method in UrlBuilderTopLevelMethods<Groups> as Method[0]]: Method[1]
224
- }
225
- >
226
+ export type UrlBuilder<Api extends HttpApi.Constraint> = Api extends HttpApi.HttpApi<infer _ApiId, infer Groups> ?
227
+ [Extract<Groups, { readonly topLevel: true }>] extends [never] ? UrlBuilderGroups<Groups>
228
+ : [Extract<Groups, { readonly topLevel: false }>] extends [never] ? UrlBuilderTopLevelMethods<Groups>
229
+ : Simplify<UrlBuilderGroups<Groups> & UrlBuilderTopLevelMethods<Groups>>
226
230
  : never
227
231
 
228
- type UrlBuilderGroup<Endpoints extends HttpApiEndpoint.Any> = {
229
- readonly [Endpoint in Endpoints as HttpApiEndpoint.Name<Endpoint>]: UrlBuilderMethod<Endpoint>
232
+ type UrlBuilderGroups<Groups extends HttpApiGroup.Constraint> = {
233
+ readonly [Group in Extract<Groups, { readonly topLevel: false }> as HttpApiGroup.Identifier<Group>]: UrlBuilderGroup<
234
+ HttpApiGroup.Endpoints<Group>
235
+ >
230
236
  }
231
237
 
232
- type UrlBuilderMethod<Endpoint extends HttpApiEndpoint.Any> = (
233
- ...args: UrlBuilderArgs<Endpoint>
238
+ type UrlBuilderGroup<Endpoints extends HttpApiEndpoint.Constraint> = {
239
+ readonly [Endpoint in Endpoints as HttpApiEndpoint.Identifier<Endpoint>]: UrlBuilderMethod<Endpoint>
240
+ }
241
+
242
+ type UrlBuilderMethod<Endpoint extends HttpApiEndpoint.Constraint> = (
243
+ ...args: UrlBuilderArgs<UrlBuilderRequest<Endpoint>>
234
244
  ) => string
235
245
 
236
- type UrlBuilderTopLevelMethods<Groups extends HttpApiGroup.Any> = Extract<Groups, { readonly topLevel: true }> extends
237
- HttpApiGroup.HttpApiGroup<infer _Id, infer _Endpoints, infer _TopLevel> ?
238
- _Endpoints extends infer Endpoint extends HttpApiEndpoint.Any ?
239
- [HttpApiEndpoint.Name<Endpoint>, UrlBuilderMethod<Endpoint>]
240
- : never :
241
- never
246
+ type UrlBuilderTopLevelMethods<Groups extends HttpApiGroup.Constraint> = {
247
+ readonly [
248
+ Endpoint in HttpApiGroup.Endpoints<Extract<Groups, { readonly topLevel: true }>> as HttpApiEndpoint.Identifier<
249
+ Endpoint
250
+ >
251
+ ]: UrlBuilderMethod<Endpoint>
252
+ }
242
253
 
243
254
  /** @internal */
244
- export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any, E, R>(
255
+ export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Constraint, E, R>(
245
256
  api: HttpApi.HttpApi<ApiId, Groups>,
246
257
  options: {
247
258
  readonly httpClient: HttpClient.HttpClient.With<E, R>
248
259
  readonly predicate?: Predicate.Predicate<{
249
- readonly endpoint: HttpApiEndpoint.AnyWithProps
250
- readonly group: HttpApiGroup.AnyWithProps
260
+ readonly endpoint: HttpApiEndpoint.Top
261
+ readonly group: HttpApiGroup.Top
251
262
  }>
252
263
  readonly onGroup?: (options: {
253
- readonly group: HttpApiGroup.AnyWithProps
264
+ readonly group: HttpApiGroup.Top
254
265
  readonly mergedAnnotations: Context.Context<never>
255
266
  }) => void
256
267
  readonly onEndpoint: (options: {
257
- readonly group: HttpApiGroup.AnyWithProps
258
- readonly endpoint: HttpApiEndpoint.AnyWithProps
268
+ readonly group: HttpApiGroup.Top
269
+ readonly endpoint: HttpApiEndpoint.Top
259
270
  readonly mergedAnnotations: Context.Context<never>
260
271
  readonly middleware: ReadonlySet<HttpApiMiddleware.AnyService>
261
272
  readonly successes: ReadonlyMap<number, readonly [Schema.Top, ...Array<Schema.Top>]>
@@ -280,8 +291,8 @@ export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any
280
291
  )
281
292
 
282
293
  function executeMiddleware(
283
- group: HttpApiGroup.AnyWithProps,
284
- endpoint: HttpApiEndpoint.AnyWithProps,
294
+ group: HttpApiGroup.Top,
295
+ endpoint: HttpApiEndpoint.Top,
285
296
  request: HttpClientRequest.HttpClientRequest,
286
297
  middlewareKeys: ReadonlyArray<string>,
287
298
  index: number
@@ -321,9 +332,15 @@ export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any
321
332
  (response: HttpClientResponse.HttpClientResponse) => Effect.Effect<unknown, unknown, unknown>
322
333
  > = { orElse: statusOrElse }
323
334
  const decodeResponse = HttpClientResponse.matchStatus(decodeMap)
324
- errors.forEach((schemas, status) => {
325
- // decoders
326
- const decode = schemasToResponse(schemas)
335
+ const errorAlternatives = new Map<number, Array<ResponseAlternative>>()
336
+ for (const [status, schemas] of errors.entries()) {
337
+ const grouped = groupSchemasByContentType(schemas)
338
+ for (const [contentType, schemas] of grouped.entries()) {
339
+ addResponseAlternative(errorAlternatives, status, contentType, schemasToResponse(schemas))
340
+ }
341
+ }
342
+ for (const [status, alternatives] of errorAlternatives.entries()) {
343
+ const decode = makeResponseDecoder(alternatives)
327
344
  decodeMap[status] = (response) =>
328
345
  Effect.flatMap(
329
346
  Effect.catchCause(decode(response), (cause) =>
@@ -340,7 +357,7 @@ export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any
340
357
  ))),
341
358
  Effect.fail
342
359
  )
343
- })
360
+ }
344
361
 
345
362
  const successAlternatives = new Map<number, Array<ResponseAlternative>>()
346
363
  for (const [status, schemas] of successes.entries()) {
@@ -456,7 +473,7 @@ export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any
456
473
  * @category constructors
457
474
  * @since 4.0.0
458
475
  */
459
- export const make = <ApiId extends string, Groups extends HttpApiGroup.Any>(
476
+ export const make = <ApiId extends string, Groups extends HttpApiGroup.Constraint>(
460
477
  api: HttpApi.HttpApi<ApiId, Groups>,
461
478
  options?: {
462
479
  readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined
@@ -484,7 +501,7 @@ export const make = <ApiId extends string, Groups extends HttpApiGroup.Any>(
484
501
  * @category constructors
485
502
  * @since 4.0.0
486
503
  */
487
- export const makeWith = <ApiId extends string, Groups extends HttpApiGroup.Any, E, R>(
504
+ export const makeWith = <ApiId extends string, Groups extends HttpApiGroup.Constraint, E, R>(
488
505
  api: HttpApi.HttpApi<ApiId, Groups>,
489
506
  options: {
490
507
  readonly httpClient: HttpClient.HttpClient.With<E, R>
@@ -493,16 +510,24 @@ export const makeWith = <ApiId extends string, Groups extends HttpApiGroup.Any,
493
510
  | undefined
494
511
  readonly baseUrl?: URL | string | undefined
495
512
  }
496
- ): Effect.Effect<Client<Groups, E, R>, never, HttpApiGroup.MiddlewareClient<Groups>> => {
513
+ ): Effect.Effect<
514
+ Client<Groups, Exclude<E, HttpClientError.HttpClientError>, R>,
515
+ never,
516
+ HttpApiGroup.MiddlewareClient<Groups>
517
+ > => {
497
518
  const client: Record<string, Record<string, any>> = {}
498
519
  return makeClient(api, {
499
520
  ...options,
500
521
  onGroup({ group }) {
501
522
  if (group.topLevel) return
502
- client[group.identifier] = {}
523
+ internalRecord.set(client, group.identifier, {})
503
524
  },
504
525
  onEndpoint({ endpoint, endpointFn, group }) {
505
- ;(group.topLevel ? client : client[group.identifier])[endpoint.name] = endpointFn
526
+ internalRecord.set(
527
+ group.topLevel ? client : client[group.identifier],
528
+ endpoint.identifier,
529
+ endpointFn
530
+ )
506
531
  }
507
532
  }).pipe(Effect.as(client)) as any
508
533
  }
@@ -516,14 +541,14 @@ export const makeWith = <ApiId extends string, Groups extends HttpApiGroup.Any,
516
541
  */
517
542
  export const group = <
518
543
  ApiId extends string,
519
- Groups extends HttpApiGroup.Any,
520
- const GroupName extends HttpApiGroup.Name<Groups>,
544
+ Groups extends HttpApiGroup.Constraint,
545
+ const GroupIdentifier extends HttpApiGroup.Identifier<Groups>,
521
546
  E,
522
547
  R
523
548
  >(
524
549
  api: HttpApi.HttpApi<ApiId, Groups>,
525
550
  options: {
526
- readonly group: GroupName
551
+ readonly group: GroupIdentifier
527
552
  readonly httpClient: HttpClient.HttpClient.With<E, R>
528
553
  readonly transformResponse?:
529
554
  | ((effect: Effect.Effect<unknown, unknown, unknown>) => Effect.Effect<unknown, unknown, unknown>)
@@ -531,20 +556,32 @@ export const group = <
531
556
  readonly baseUrl?: URL | string | undefined
532
557
  }
533
558
  ): Effect.Effect<
534
- Client.Group<Groups, GroupName, E, R>,
559
+ Client.Group<HttpApiGroup.WithIdentifier<Groups, GroupIdentifier>, E, R>,
535
560
  never,
536
- HttpApiGroup.MiddlewareClient<HttpApiGroup.WithName<Groups, GroupName>>
561
+ HttpApiGroup.MiddlewareClient<HttpApiGroup.WithIdentifier<Groups, GroupIdentifier>>
537
562
  > => {
538
563
  const client: Record<string, any> = {}
539
564
  return makeClient(api, {
540
565
  ...options,
541
566
  predicate: ({ group }) => group.identifier === options.group,
542
567
  onEndpoint({ endpoint, endpointFn }) {
543
- client[endpoint.name] = endpointFn
568
+ internalRecord.set(client, endpoint.identifier, endpointFn)
544
569
  }
545
570
  }).pipe(Effect.map(() => client)) as any
546
571
  }
547
572
 
573
+ type EndpointReturn<
574
+ Groups extends HttpApiGroup.Constraint,
575
+ GroupIdentifier extends HttpApiGroup.Identifier<Groups>,
576
+ EndpointIdentifier extends HttpApiGroup.EndpointsWithIdentifier<Groups, GroupIdentifier>["identifier"],
577
+ E,
578
+ R,
579
+ Endpoint extends HttpApiEndpoint.ConstraintRequest = Extract<
580
+ HttpApiEndpoint.WithIdentifier<HttpApiGroup.EndpointsWithIdentifier<Groups, GroupIdentifier>, EndpointIdentifier>,
581
+ HttpApiEndpoint.ConstraintRequest
582
+ >
583
+ > = Effect.Effect<Client.Method<Endpoint, E, R>, never, HttpApiEndpoint.MiddlewareClient<Endpoint>>
584
+
548
585
  /**
549
586
  * Builds the typed client method for one endpoint in one API group, using the
550
587
  * supplied `HttpClient` and endpoint metadata.
@@ -554,38 +591,33 @@ export const group = <
554
591
  */
555
592
  export const endpoint = <
556
593
  ApiId extends string,
557
- Groups extends HttpApiGroup.Any,
558
- const GroupName extends HttpApiGroup.Name<Groups>,
559
- const EndpointName extends HttpApiEndpoint.Name<HttpApiGroup.EndpointsWithName<Groups, GroupName>>,
594
+ Groups extends HttpApiGroup.Constraint,
595
+ const GroupIdentifier extends HttpApiGroup.Identifier<Groups>,
596
+ const EndpointIdentifier extends HttpApiGroup.EndpointsWithIdentifier<Groups, GroupIdentifier>["identifier"],
560
597
  E,
561
598
  R
562
599
  >(
563
600
  api: HttpApi.HttpApi<ApiId, Groups>,
564
601
  options: {
565
- readonly group: GroupName
566
- readonly endpoint: EndpointName
602
+ readonly group: GroupIdentifier
603
+ readonly endpoint: EndpointIdentifier
567
604
  readonly httpClient: HttpClient.HttpClient.With<E, R>
568
- readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined
605
+ readonly transformClient?:
606
+ | ((client: HttpClient.HttpClient.With<E, R>) => HttpClient.HttpClient.With<E, R>)
607
+ | undefined
569
608
  readonly transformResponse?:
570
609
  | ((effect: Effect.Effect<unknown, unknown, unknown>) => Effect.Effect<unknown, unknown, unknown>)
571
610
  | undefined
572
611
  readonly baseUrl?: URL | string | undefined
573
612
  }
574
- ): Effect.Effect<
575
- Client.Method<
576
- HttpApiEndpoint.WithName<HttpApiGroup.Endpoints<HttpApiGroup.WithName<Groups, GroupName>>, EndpointName>,
577
- E,
578
- R
579
- >,
580
- never,
581
- HttpApiEndpoint.MiddlewareClient<
582
- HttpApiEndpoint.WithName<HttpApiGroup.Endpoints<HttpApiGroup.WithName<Groups, GroupName>>, EndpointName>
583
- >
584
- > => {
613
+ ): EndpointReturn<Groups, GroupIdentifier, EndpointIdentifier, E, R> => {
585
614
  let client: any = undefined
586
615
  return makeClient(api, {
587
616
  ...options,
588
- predicate: ({ endpoint, group }) => group.identifier === options.group && endpoint.name === options.endpoint,
617
+ httpClient: options.transformClient
618
+ ? options.transformClient(options.httpClient)
619
+ : options.httpClient,
620
+ predicate: ({ endpoint, group }) => group.identifier === options.group && endpoint.identifier === options.endpoint,
589
621
  onEndpoint({ endpointFn }) {
590
622
  client = endpointFn
591
623
  }
@@ -622,15 +654,15 @@ export const endpoint = <
622
654
  * @category constructors
623
655
  * @since 4.0.0
624
656
  */
625
- export const urlBuilder = <Api extends HttpApi.Any>(api: Api, options?: {
657
+ export const urlBuilder = <Api extends HttpApi.Constraint>(api: Api, options?: {
626
658
  readonly baseUrl?: URL | string | undefined
627
659
  }): UrlBuilder<Api> => {
628
660
  const builder: Record<string, any> = {}
629
661
 
630
- HttpApi.reflect(api as unknown as HttpApi.AnyWithProps, {
662
+ HttpApi.reflect(api as unknown as HttpApi.Top, {
631
663
  onGroup({ group }) {
632
664
  if (group.topLevel) return
633
- builder[group.identifier] = {}
665
+ internalRecord.set(builder, group.identifier, {})
634
666
  },
635
667
  onEndpoint({ group, endpoint }) {
636
668
  const makeUrl = compilePath(endpoint.path)
@@ -656,7 +688,11 @@ export const urlBuilder = <Api extends HttpApi.Any>(api: Api, options?: {
656
688
  const url = query === "" ? path : `${path}?${query}`
657
689
  return options?.baseUrl === undefined ? url : new URL(url, options.baseUrl.toString()).toString()
658
690
  }
659
- ;(group.topLevel ? builder : builder[group.identifier])[endpoint.name] = endpointBuilder
691
+ internalRecord.set(
692
+ group.topLevel ? builder : builder[group.identifier],
693
+ endpoint.identifier,
694
+ endpointBuilder
695
+ )
660
696
  }
661
697
  })
662
698
 
@@ -706,7 +742,7 @@ function addResponseAlternative(
706
742
  contentType: string,
707
743
  decode: ResponseDecoder
708
744
  ) {
709
- const normalizedContentType = normalizeContentType(contentType)
745
+ const normalizedContentType = MediaType.normalize(contentType)
710
746
  const alternatives = map.get(status)
711
747
  if (alternatives === undefined) {
712
748
  map.set(status, [{ contentType: normalizedContentType, decode }])
@@ -721,7 +757,7 @@ function makeResponseDecoder(alternatives: ReadonlyArray<ResponseAlternative>):
721
757
  return first.decode
722
758
  }
723
759
  return (response) => {
724
- const contentType = normalizeContentType(response.headers["content-type"] ?? "")
760
+ const contentType = MediaType.normalize(response.headers["content-type"] ?? "")
725
761
  const alternative = alternatives.find((alternative) => alternative.contentType === contentType)
726
762
  return alternative === undefined
727
763
  ? failUnsupportedContentType(response, contentType, alternatives)
@@ -734,7 +770,9 @@ function groupSchemasByContentType(
734
770
  ): Map<string, Arr.NonEmptyReadonlyArray<Schema.Top>> {
735
771
  const grouped = new Map<string, [Schema.Top, ...Array<Schema.Top>]>()
736
772
  for (const schema of schemas) {
737
- const contentType = HttpApiSchema.getResponseEncoding(schema.ast).contentType
773
+ const contentType = HttpApiSchema.isNoContent(schema.ast)
774
+ ? ""
775
+ : MediaType.normalize(HttpApiSchema.getResponseEncoding(schema.ast).contentType)
738
776
  const existing = grouped.get(contentType)
739
777
  if (existing === undefined) {
740
778
  grouped.set(contentType, [schema])
@@ -745,12 +783,6 @@ function groupSchemasByContentType(
745
783
  return grouped
746
784
  }
747
785
 
748
- function normalizeContentType(contentType: string): string {
749
- const normalized = contentType.toLowerCase().trim()
750
- const index = normalized.indexOf(";")
751
- return index === -1 ? normalized : normalized.slice(0, index).trim()
752
- }
753
-
754
786
  function failUnsupportedContentType(
755
787
  response: HttpClientResponse.HttpClientResponse,
756
788
  contentType: string,
@@ -772,7 +804,7 @@ function failUnsupportedContentType(
772
804
 
773
805
  const reservedStreamFailureEvent = "effect/httpapi/stream/failure"
774
806
 
775
- function getStreamSuccessSchemas(endpoint: HttpApiEndpoint.AnyWithProps): Array<HttpApiSchema.StreamSchema> {
807
+ function getStreamSuccessSchemas(endpoint: HttpApiEndpoint.Top): Array<HttpApiSchema.StreamSchema> {
776
808
  const schemas: Array<HttpApiSchema.StreamSchema> = []
777
809
  for (const schema of endpoint.success) {
778
810
  if (HttpApiSchema.isStreamSchema(schema)) {
@@ -783,47 +815,60 @@ function getStreamSuccessSchemas(endpoint: HttpApiEndpoint.AnyWithProps): Array<
783
815
  }
784
816
 
785
817
  function streamToResponse(streamSchema: HttpApiSchema.StreamSchema) {
818
+ const sse = HttpApiSchema.isStreamUint8Array(streamSchema)
819
+ ? undefined
820
+ : {
821
+ declaration: streamSchema,
822
+ decoder: makeSseDecoder(streamSchema)
823
+ }
786
824
  return (response: HttpClientResponse.HttpClientResponse) =>
787
825
  Effect.map(Effect.context<never>(), (context) =>
788
826
  Stream.provideContext(
789
- HttpApiSchema.isStreamUint8Array(streamSchema) ?
827
+ sse === undefined ?
790
828
  response.stream :
791
- decodeSseStream(response.stream, streamSchema),
829
+ decodeSseStream(response.stream, sse.declaration, sse.decoder),
792
830
  context as Context.Context<unknown>
793
831
  ))
794
832
  }
795
833
 
796
- function decodeSseStream(
797
- stream: Stream.Stream<Uint8Array, HttpClientError.HttpClientError>,
834
+ function makeSseDecoder(
798
835
  declaration: HttpApiSchema.StreamSse<Sse.EventCodec, Schema.Constraint, unknown>
799
- ): Stream.Stream<unknown, unknown, unknown> {
836
+ ) {
800
837
  const Event = Schema.Union([
801
- declaration.events,
802
838
  Schema.Struct({
803
839
  event: Schema.Literal(reservedStreamFailureEvent),
804
840
  data: Schema.fromJsonString(Schema.toCodecJson(Schema.Cause(declaration.error, Schema.Defect())))
805
- })
841
+ }),
842
+ declaration.events
806
843
  ])
844
+ return Sse.decodeSchema(Event)
845
+ }
846
+
847
+ function decodeSseStream(
848
+ stream: Stream.Stream<Uint8Array, HttpClientError.HttpClientError>,
849
+ declaration: HttpApiSchema.StreamSse<Sse.EventCodec, Schema.Constraint, unknown>,
850
+ decoder: ReturnType<typeof makeSseDecoder>
851
+ ): Stream.Stream<unknown, unknown, unknown> {
807
852
  const events = Stream.transformPull(
808
853
  stream.pipe(
809
854
  Stream.decodeText,
810
- Stream.pipeThroughChannel(Sse.decodeSchema(Event))
855
+ Stream.pipeThroughChannel(decoder)
811
856
  ),
812
857
  (pull) =>
813
858
  Effect.sync(() => {
814
- let failureCause: Cause.Cause<unknown> | undefined = undefined
859
+ let pendingFailureCause: Cause.Cause<unknown> | undefined = undefined
815
860
  return Effect.suspend(() => {
816
- if (failureCause) {
817
- return Effect.failCause(failureCause)
861
+ if (pendingFailureCause !== undefined) {
862
+ return Effect.failCause(pendingFailureCause)
818
863
  }
819
864
  return Effect.flatMap(pull, (events) => {
820
865
  for (let i = 0; i < events.length; i++) {
821
866
  const event = events[i]
822
- if (event.event === reservedStreamFailureEvent) {
867
+ if (event.event === reservedStreamFailureEvent && Cause.isCause(event.data)) {
823
868
  if (i === 0) {
824
869
  return Effect.failCause(event.data)
825
870
  }
826
- failureCause = event.data
871
+ pendingFailureCause = event.data
827
872
  events = events.slice(0, i) as any
828
873
  break
829
874
  }
@@ -986,7 +1031,7 @@ function getEncodePayloadSchemaFromBody(
986
1031
  if (!Predicate.isObject(t)) {
987
1032
  return Effect.fail(new SchemaIssue.InvalidValue(Option.some(t), { message: "Expected a record" }))
988
1033
  }
989
- return Effect.succeed(HttpBody.urlParams(UrlParams.fromInput(t as any)))
1034
+ return Effect.succeed(HttpBody.urlParams(UrlParams.fromInput(t as any), encoding.contentType))
990
1035
  }
991
1036
  case "Uint8Array": {
992
1037
  if (!(t instanceof Uint8Array)) {