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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Defines endpoint declarations used inside an HTTP API group.
3
3
  *
4
- * An endpoint records a stable name, HTTP method, router path, request schemas,
4
+ * An endpoint records a stable identifier, HTTP method, router path, request schemas,
5
5
  * response schemas, declared errors, middleware, and annotations. Endpoint
6
6
  * values are declarations, not handlers: builders use them to decode requests,
7
7
  * type handler input, encode responses, generate OpenAPI metadata, and derive
@@ -21,6 +21,7 @@ import * as Predicate from "../../Predicate.ts"
21
21
  import * as Schema from "../../Schema.ts"
22
22
  import * as AST from "../../SchemaAST.ts"
23
23
  import type * as Stream from "../../Stream.ts"
24
+ import type { Simplify } from "../../Struct.ts"
24
25
  import type * as Types from "../../Types.ts"
25
26
  import type { HttpMethod } from "../http/HttpMethod.ts"
26
27
  import * as HttpRouter from "../http/HttpRouter.ts"
@@ -30,6 +31,7 @@ import type * as Multipart from "../http/Multipart.ts"
30
31
  import type * as HttpApiGroup from "./HttpApiGroup.ts"
31
32
  import type * as HttpApiMiddleware from "./HttpApiMiddleware.ts"
32
33
  import * as HttpApiSchema from "./HttpApiSchema.ts"
34
+ import * as MediaType from "./internal/mediaType.ts"
33
35
 
34
36
  const TypeId = "~effect/httpapi/HttpApiEndpoint"
35
37
 
@@ -40,19 +42,7 @@ const TypeId = "~effect/httpapi/HttpApiEndpoint"
40
42
  * @category guards
41
43
  * @since 4.0.0
42
44
  */
43
- export const isHttpApiEndpoint = (u: unknown): u is HttpApiEndpoint<any, any, any> => Predicate.hasProperty(u, TypeId)
44
-
45
- /**
46
- * Maps content types to the payload encoding strategy and one or more schemas that
47
- * can decode or encode payloads for that content type.
48
- *
49
- * @category models
50
- * @since 4.0.0
51
- */
52
- export type PayloadMap = ReadonlyMap<string, {
53
- readonly encoding: HttpApiSchema.PayloadEncoding
54
- readonly schemas: [Schema.Top, ...Array<Schema.Top>]
55
- }>
45
+ export const isHttpApiEndpoint = (u: unknown): u is Top => Predicate.hasProperty(u, TypeId)
56
46
 
57
47
  type SuccessType<S> = S extends HttpApiSchema.StreamSse<
58
48
  infer _Events,
@@ -81,20 +71,64 @@ type SuccessDecodingServices<S> = S extends HttpApiSchema.StreamSse<
81
71
  : S extends Schema.Constraint ? S["DecodingServices"]
82
72
  : never
83
73
 
84
- type ExtractSuccessOrArray<S extends SuccessConstraint> = S extends ReadonlyArray<Schema.Constraint> ? S[number] : S
74
+ type UnwrapReadonlyArray<S> = S extends ReadonlyArray<infer A> ? A : S
85
75
 
86
76
  type ExtractBufferedSuccess<S extends SuccessConstraint> = Exclude<
87
- Extract<ExtractSuccessOrArray<S>, Schema.Top>,
77
+ Extract<UnwrapReadonlyArray<S>, Schema.Top>,
88
78
  HttpApiSchema.StreamSchema
89
79
  >
90
80
 
91
- type ExtractStreamSuccess<S extends SuccessConstraint> = ExtractSuccessOrArray<S> extends infer Success ?
81
+ type ExtractStreamSuccess<S extends SuccessConstraint> = UnwrapReadonlyArray<S> extends infer Success ?
92
82
  Success extends HttpApiSchema.StreamSchema ? Success : never
93
83
  : never
94
84
 
95
- type JsonSuccessOrArray<S extends SuccessConstraint> = [ExtractBufferedSuccess<S>] extends [never] ?
96
- ExtractStreamSuccess<S>
97
- : Json<ExtractBufferedSuccess<S>> | ExtractStreamSuccess<S>
85
+ type ToSuccessCodec<S extends SuccessConstraint> = [ExtractBufferedSuccess<S>] extends [never] ? ExtractStreamSuccess<S>
86
+ : Schema.toCodecJson<ExtractBufferedSuccess<S>> | ExtractStreamSuccess<S>
87
+
88
+ type ToJsonCodec<S> = [S] extends [never] ? never
89
+ : [S] extends [Schema.Constraint] ? Schema.toCodecJson<S>
90
+ : never
91
+
92
+ type ToStringTreeCodec<S> = [S] extends [never] ? never
93
+ : [S] extends [Schema.Struct.Fields] ? Schema.toCodecStringTree<Schema.Struct<S>>
94
+ : [S] extends [Schema.Constraint] ? Schema.toCodecStringTree<S>
95
+ : never
96
+
97
+ type RequestFromParts<Endpoint, ParamsType, QueryType, PayloadType, HeadersType> =
98
+ & ([ParamsType] extends [never] ? {} : { readonly params: Simplify<ParamsType> })
99
+ & ([QueryType] extends [never] ? {} : { readonly query: Simplify<QueryType> })
100
+ & ([PayloadType] extends [never] ? {}
101
+ : PayloadType extends Brand<HttpApiSchema.MultipartStreamTypeId> ?
102
+ { readonly payload: Stream.Stream<Multipart.Part, Multipart.MultipartError> }
103
+ : { readonly payload: Simplify<PayloadType> })
104
+ & ([HeadersType] extends [never] ? {} : { readonly headers: Simplify<HeadersType> })
105
+ & {
106
+ readonly request: HttpServerRequest
107
+ readonly endpoint: Endpoint
108
+ readonly group: HttpApiGroup.Top
109
+ }
110
+
111
+ type RequestRawFromParts<Endpoint, ParamsType, QueryType, HeadersType> =
112
+ & ([ParamsType] extends [never] ? {} : { readonly params: Simplify<ParamsType> })
113
+ & ([QueryType] extends [never] ? {} : { readonly query: Simplify<QueryType> })
114
+ & ([HeadersType] extends [never] ? {} : { readonly headers: Simplify<HeadersType> })
115
+ & {
116
+ readonly request: HttpServerRequest
117
+ readonly endpoint: Endpoint
118
+ readonly group: HttpApiGroup.Top
119
+ }
120
+
121
+ /**
122
+ * Maps normalized media types to a payload encoding strategy and one or more
123
+ * schemas. Each schema retains its declared content type in its encoding annotation.
124
+ *
125
+ * @category models
126
+ * @since 4.0.0
127
+ */
128
+ export type PayloadMap = ReadonlyMap<string, {
129
+ readonly encoding: HttpApiSchema.PayloadEncoding
130
+ readonly schemas: readonly [Schema.Top, ...Array<Schema.Top>]
131
+ }>
98
132
 
99
133
  /**
100
134
  * Represents an API endpoint. An API endpoint is mapped to a single route on
@@ -104,7 +138,7 @@ type JsonSuccessOrArray<S extends SuccessConstraint> = [ExtractBufferedSuccess<S
104
138
  * @since 4.0.0
105
139
  */
106
140
  export interface HttpApiEndpoint<
107
- out Name extends string,
141
+ out Identifier extends string,
108
142
  out Method extends HttpMethod,
109
143
  out Path extends string,
110
144
  out Params extends Schema.Top = never,
@@ -114,19 +148,22 @@ export interface HttpApiEndpoint<
114
148
  out Success extends Schema.Top = typeof HttpApiSchema.NoContent,
115
149
  out Error extends Schema.Top = never,
116
150
  in out Middleware = never,
117
- out MiddlewareR = never
151
+ out MiddlewareServices = never
118
152
  > extends Pipeable {
119
- readonly [TypeId]: {
120
- readonly _MiddlewareR: Types.Covariant<MiddlewareR>
121
- }
153
+ new(_: never): {}
154
+ readonly [TypeId]: typeof TypeId
122
155
  readonly "~Params": Params
123
156
  readonly "~Query": Query
124
157
  readonly "~Headers": Headers
125
158
  readonly "~Payload": Payload
126
159
  readonly "~Success": Success
127
160
  readonly "~Error": Error
161
+ readonly "~Middleware": Middleware
162
+ readonly "~MiddlewareServices": MiddlewareServices
163
+ readonly "~Request": RequestFromParts<this, Params["Type"], Query["Type"], Payload["Type"], Headers["Type"]>
164
+ readonly "~RequestRaw": RequestRawFromParts<this, Params["Type"], Query["Type"], Headers["Type"]>
128
165
 
129
- readonly name: Name
166
+ readonly identifier: Identifier
130
167
  readonly path: Path
131
168
  readonly method: Method
132
169
  readonly params: Schema.Top | undefined
@@ -144,7 +181,7 @@ export interface HttpApiEndpoint<
144
181
  prefix<const Prefix extends HttpRouter.PathInput>(
145
182
  prefix: Prefix
146
183
  ): HttpApiEndpoint<
147
- Name,
184
+ Identifier,
148
185
  Method,
149
186
  `${Prefix}${Path}`,
150
187
  Params,
@@ -154,14 +191,14 @@ export interface HttpApiEndpoint<
154
191
  Success,
155
192
  Error,
156
193
  Middleware,
157
- MiddlewareR
194
+ MiddlewareServices
158
195
  >
159
196
 
160
197
  /**
161
198
  * Add an `HttpApiMiddleware` to the endpoint.
162
199
  */
163
200
  middleware<I extends HttpApiMiddleware.AnyId, S>(middleware: Context.Key<I, S>): HttpApiEndpoint<
164
- Name,
201
+ Identifier,
165
202
  Method,
166
203
  Path,
167
204
  Params,
@@ -171,7 +208,7 @@ export interface HttpApiEndpoint<
171
208
  Success,
172
209
  Error,
173
210
  Middleware | I,
174
- HttpApiMiddleware.ApplyServices<I, MiddlewareR>
211
+ HttpApiMiddleware.ApplyServices<I, MiddlewareServices>
175
212
  >
176
213
 
177
214
  /**
@@ -181,7 +218,7 @@ export interface HttpApiEndpoint<
181
218
  key: Context.Key<I, S>,
182
219
  value: Types.NoInfer<S>
183
220
  ): HttpApiEndpoint<
184
- Name,
221
+ Identifier,
185
222
  Method,
186
223
  Path,
187
224
  Params,
@@ -191,7 +228,7 @@ export interface HttpApiEndpoint<
191
228
  Success,
192
229
  Error,
193
230
  Middleware,
194
- MiddlewareR
231
+ MiddlewareServices
195
232
  >
196
233
 
197
234
  /**
@@ -200,7 +237,7 @@ export interface HttpApiEndpoint<
200
237
  annotateMerge<I>(
201
238
  annotations: Context.Context<I>
202
239
  ): HttpApiEndpoint<
203
- Name,
240
+ Identifier,
204
241
  Method,
205
242
  Path,
206
243
  Params,
@@ -210,12 +247,12 @@ export interface HttpApiEndpoint<
210
247
  Success,
211
248
  Error,
212
249
  Middleware,
213
- MiddlewareR
250
+ MiddlewareServices
214
251
  >
215
252
  }
216
253
 
217
254
  /** @internal */
218
- export function getPayloadSchemas(endpoint: AnyWithProps): Array<Schema.Top> {
255
+ export function getPayloadSchemas(endpoint: Top): Array<Schema.Top> {
219
256
  const result: Array<Schema.Top> = []
220
257
  for (const { schemas } of endpoint.payload.values()) {
221
258
  result.push(...schemas)
@@ -224,13 +261,13 @@ export function getPayloadSchemas(endpoint: AnyWithProps): Array<Schema.Top> {
224
261
  }
225
262
 
226
263
  /** @internal */
227
- export function getSuccessSchemas(endpoint: AnyWithProps): [Schema.Top, ...Array<Schema.Top>] {
264
+ export function getSuccessSchemas(endpoint: Top): [Schema.Top, ...Array<Schema.Top>] {
228
265
  const schemas = Array.from(endpoint.success)
229
266
  return Arr.isArrayNonEmpty(schemas) ? schemas : [HttpApiSchema.NoContent]
230
267
  }
231
268
 
232
269
  /** @internal */
233
- export function getErrorSchemas(endpoint: AnyWithProps): Array<Schema.Top> {
270
+ export function getErrorSchemas(endpoint: Top): Array<Schema.Top> {
234
271
  const schemas = new Set<Schema.Top>(endpoint.error)
235
272
  for (const middleware of endpoint.middlewares) {
236
273
  const key = middleware as any as HttpApiMiddleware.AnyService
@@ -248,11 +285,27 @@ export function getErrorSchemas(endpoint: AnyWithProps): Array<Schema.Top> {
248
285
  * @category models
249
286
  * @since 4.0.0
250
287
  */
251
- export interface Any extends Pipeable {
252
- readonly [TypeId]: any
253
- readonly name: string
254
- readonly ["~Success"]: Schema.Top
255
- readonly ["~Error"]: Schema.Top
288
+ export interface Constraint {
289
+ readonly [TypeId]: typeof TypeId
290
+ readonly identifier: string
291
+ readonly ["~Success"]: Schema.Constraint
292
+ readonly ["~Error"]: Schema.Constraint
293
+ readonly ["~Request"]: unknown
294
+ readonly ["~RequestRaw"]: unknown
295
+ }
296
+
297
+ /**
298
+ * A widened endpoint type that preserves request and middleware pipeline phantom fields.
299
+ *
300
+ * @category models
301
+ * @since 4.0.0
302
+ */
303
+ export interface ConstraintRequest extends Constraint {
304
+ readonly ["~Params"]: Schema.Constraint
305
+ readonly ["~Query"]: Schema.Constraint
306
+ readonly ["~Payload"]: Schema.Constraint
307
+ readonly ["~Headers"]: Schema.Constraint
308
+ readonly ["~Middleware"]: unknown
256
309
  }
257
310
 
258
311
  /**
@@ -262,7 +315,7 @@ export interface Any extends Pipeable {
262
315
  * @category models
263
316
  * @since 4.0.0
264
317
  */
265
- export interface AnyWithProps extends
318
+ export interface Top extends
266
319
  HttpApiEndpoint<
267
320
  string,
268
321
  HttpMethod,
@@ -271,31 +324,20 @@ export interface AnyWithProps extends
271
324
  Schema.Top,
272
325
  Schema.Top,
273
326
  Schema.Top,
327
+ Schema.Top,
328
+ Schema.Top,
274
329
  any,
275
- any
330
+ unknown
276
331
  >
277
332
  {}
278
333
 
279
334
  /**
280
- * Extracts the name literal from an `HttpApiEndpoint`.
335
+ * Extracts the endpoint identifier literal from an `HttpApiEndpoint`.
281
336
  *
282
337
  * @category models
283
338
  * @since 4.0.0
284
339
  */
285
- export type Name<Endpoint> = Endpoint extends HttpApiEndpoint<
286
- infer _Name,
287
- infer _Method,
288
- infer _Path,
289
- infer _Params,
290
- infer _Query,
291
- infer _Payload,
292
- infer _Headers,
293
- infer _Success,
294
- infer _Error,
295
- infer _M,
296
- infer _MR
297
- > ? _Name
298
- : never
340
+ export type Identifier<Endpoint> = Endpoint extends Constraint ? Endpoint["identifier"] : never
299
341
 
300
342
  /**
301
343
  * Extracts the success schema associated with an endpoint.
@@ -303,20 +345,7 @@ export type Name<Endpoint> = Endpoint extends HttpApiEndpoint<
303
345
  * @category models
304
346
  * @since 4.0.0
305
347
  */
306
- export type Success<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
307
- infer _Name,
308
- infer _Method,
309
- infer _Path,
310
- infer _Params,
311
- infer _Query,
312
- infer _Payload,
313
- infer _Headers,
314
- infer _Success,
315
- infer _Error,
316
- infer _M,
317
- infer _MR
318
- > ? _Success
319
- : never
348
+ export type Success<Endpoint> = Endpoint extends Constraint ? Endpoint["~Success"] : never
320
349
 
321
350
  /**
322
351
  * Extracts the error schema associated with an endpoint.
@@ -324,20 +353,7 @@ export type Success<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
324
353
  * @category models
325
354
  * @since 4.0.0
326
355
  */
327
- export type Error<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
328
- infer _Name,
329
- infer _Method,
330
- infer _Path,
331
- infer _Params,
332
- infer _Query,
333
- infer _Payload,
334
- infer _Headers,
335
- infer _Success,
336
- infer _Error,
337
- infer _M,
338
- infer _MR
339
- > ? _Error
340
- : never
356
+ export type Error<Endpoint> = Endpoint extends Constraint ? Endpoint["~Error"] : never
341
357
 
342
358
  /**
343
359
  * Extracts the schema used for an endpoint's path parameters.
@@ -345,19 +361,7 @@ export type Error<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
345
361
  * @category models
346
362
  * @since 4.0.0
347
363
  */
348
- export type Params<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
349
- infer _Name,
350
- infer _Method,
351
- infer _Path,
352
- infer _Params,
353
- infer _Query,
354
- infer _Payload,
355
- infer _Headers,
356
- infer _Success,
357
- infer _Error,
358
- infer _M,
359
- infer _MR
360
- > ? _Params
364
+ export type Params<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Params"]
361
365
  : never
362
366
 
363
367
  /**
@@ -366,19 +370,7 @@ export type Params<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
366
370
  * @category models
367
371
  * @since 4.0.0
368
372
  */
369
- export type Query<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
370
- infer _Name,
371
- infer _Method,
372
- infer _Path,
373
- infer _Params,
374
- infer _Query,
375
- infer _Payload,
376
- infer _Headers,
377
- infer _Success,
378
- infer _Error,
379
- infer _M,
380
- infer _MR
381
- > ? _Query
373
+ export type Query<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Query"]
382
374
  : never
383
375
 
384
376
  /**
@@ -387,19 +379,7 @@ export type Query<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
387
379
  * @category models
388
380
  * @since 4.0.0
389
381
  */
390
- export type Payload<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
391
- infer _Name,
392
- infer _Method,
393
- infer _Path,
394
- infer _Params,
395
- infer _Query,
396
- infer _Payload,
397
- infer _Headers,
398
- infer _Success,
399
- infer _Error,
400
- infer _M,
401
- infer _MR
402
- > ? _Payload
382
+ export type Payload<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Payload"]
403
383
  : never
404
384
 
405
385
  /**
@@ -408,19 +388,7 @@ export type Payload<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
408
388
  * @category models
409
389
  * @since 4.0.0
410
390
  */
411
- export type Headers<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
412
- infer _Name,
413
- infer _Method,
414
- infer _Path,
415
- infer _Params,
416
- infer _Query,
417
- infer _Payload,
418
- infer _Headers,
419
- infer _Success,
420
- infer _Error,
421
- infer _M,
422
- infer _MR
423
- > ? _Headers
391
+ export type Headers<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Headers"]
424
392
  : never
425
393
 
426
394
  /**
@@ -429,19 +397,7 @@ export type Headers<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
429
397
  * @category models
430
398
  * @since 4.0.0
431
399
  */
432
- export type Middleware<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
433
- infer _Name,
434
- infer _Method,
435
- infer _Path,
436
- infer _Params,
437
- infer _Query,
438
- infer _Payload,
439
- infer _Headers,
440
- infer _Success,
441
- infer _Error,
442
- infer _M,
443
- infer _MR
444
- > ? _M
400
+ export type Middleware<Endpoint> = Endpoint extends { readonly "~Middleware": infer M } ? M
445
401
  : never
446
402
 
447
403
  /**
@@ -450,7 +406,7 @@ export type Middleware<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
450
406
  * @category models
451
407
  * @since 4.0.0
452
408
  */
453
- export type MiddlewareProvides<Endpoint extends Any> = HttpApiMiddleware.Provides<Middleware<Endpoint>>
409
+ export type MiddlewareProvides<Endpoint> = HttpApiMiddleware.Provides<Middleware<Endpoint>>
454
410
 
455
411
  /**
456
412
  * Computes the client-side middleware services required by an endpoint.
@@ -458,7 +414,7 @@ export type MiddlewareProvides<Endpoint extends Any> = HttpApiMiddleware.Provide
458
414
  * @category models
459
415
  * @since 4.0.0
460
416
  */
461
- export type MiddlewareClient<Endpoint extends Any> = HttpApiMiddleware.MiddlewareClient<Middleware<Endpoint>>
417
+ export type MiddlewareClient<Endpoint> = HttpApiMiddleware.MiddlewareClient<Middleware<Endpoint>>
462
418
 
463
419
  /**
464
420
  * Computes the error types that can be produced by the middleware attached to an
@@ -467,7 +423,7 @@ export type MiddlewareClient<Endpoint extends Any> = HttpApiMiddleware.Middlewar
467
423
  * @category models
468
424
  * @since 4.0.0
469
425
  */
470
- export type MiddlewareError<Endpoint extends Any> = HttpApiMiddleware.Error<Middleware<Endpoint>>
426
+ export type MiddlewareError<Endpoint> = HttpApiMiddleware.Error<Middleware<Endpoint>>
471
427
 
472
428
  /**
473
429
  * Computes the full error value union for an endpoint, including the endpoint
@@ -476,19 +432,8 @@ export type MiddlewareError<Endpoint extends Any> = HttpApiMiddleware.Error<Midd
476
432
  * @category models
477
433
  * @since 4.0.0
478
434
  */
479
- export type Errors<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
480
- infer _Name,
481
- infer _Method,
482
- infer _Path,
483
- infer _Params,
484
- infer _Query,
485
- infer _Payload,
486
- infer _Headers,
487
- infer _Success,
488
- infer _Error,
489
- infer _M,
490
- infer _MR
491
- > ? _Error["Type"] | HttpApiMiddleware.Error<Middleware<Endpoint>>
435
+ export type Errors<Endpoint> = Endpoint extends ConstraintRequest ?
436
+ Endpoint["~Error"]["Type"] | HttpApiMiddleware.Error<Endpoint["~Middleware"]>
492
437
  : never
493
438
 
494
439
  /**
@@ -498,19 +443,9 @@ export type Errors<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
498
443
  * @category models
499
444
  * @since 4.0.0
500
445
  */
501
- export type ErrorServicesEncode<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
502
- infer _Name,
503
- infer _Method,
504
- infer _Path,
505
- infer _Params,
506
- infer _Query,
507
- infer _Payload,
508
- infer _Headers,
509
- infer _Success,
510
- infer _Error,
511
- infer _M,
512
- infer _MR
513
- > ? _Error["EncodingServices"] | HttpApiMiddleware.ErrorServicesEncode<Middleware<Endpoint>>
446
+ export type ErrorServicesEncode<Endpoint> = Endpoint extends ConstraintRequest ?
447
+ | Endpoint["~Error"]["EncodingServices"]
448
+ | HttpApiMiddleware.ErrorServicesEncode<Endpoint["~Middleware"]>
514
449
  : never
515
450
 
516
451
  /**
@@ -521,31 +456,7 @@ export type ErrorServicesEncode<Endpoint extends Any> = Endpoint extends HttpApi
521
456
  * @category models
522
457
  * @since 4.0.0
523
458
  */
524
- export type Request<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
525
- infer _Name,
526
- infer _Method,
527
- infer _Path,
528
- infer _Params,
529
- infer _Query,
530
- infer _Payload,
531
- infer _Headers,
532
- infer _Success,
533
- infer _Error,
534
- infer _M,
535
- infer _MR
536
- > ?
537
- & ([_Params["Type"]] extends [never] ? {} : { readonly params: _Params["Type"] })
538
- & ([_Query["Type"]] extends [never] ? {} : { readonly query: _Query["Type"] })
539
- & ([_Payload["Type"]] extends [never] ? {}
540
- : _Payload["Type"] extends Brand<HttpApiSchema.MultipartStreamTypeId> ?
541
- { readonly payload: Stream.Stream<Multipart.Part, Multipart.MultipartError> }
542
- : { readonly payload: _Payload["Type"] })
543
- & ([_Headers] extends [never] ? {} : { readonly headers: _Headers["Type"] })
544
- & {
545
- readonly request: HttpServerRequest
546
- readonly endpoint: Endpoint
547
- readonly group: HttpApiGroup.AnyWithProps
548
- }
459
+ export type Request<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Request"]
549
460
  : {}
550
461
 
551
462
  /**
@@ -556,27 +467,7 @@ export type Request<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
556
467
  * @category models
557
468
  * @since 4.0.0
558
469
  */
559
- export type RequestRaw<Endpoint extends Any> = Endpoint extends HttpApiEndpoint<
560
- infer _Name,
561
- infer _Method,
562
- infer _Path,
563
- infer _Params,
564
- infer _Query,
565
- infer _Payload,
566
- infer _Headers,
567
- infer _Success,
568
- infer _Error,
569
- infer _M,
570
- infer _MR
571
- > ?
572
- & ([_Params["Type"]] extends [never] ? {} : { readonly params: _Params["Type"] })
573
- & ([_Query["Type"]] extends [never] ? {} : { readonly query: _Query["Type"] })
574
- & ([_Headers["Type"]] extends [never] ? {} : { readonly headers: _Headers["Type"] })
575
- & {
576
- readonly request: HttpServerRequest
577
- readonly endpoint: Endpoint
578
- readonly group: HttpApiGroup.AnyWithProps
579
- }
470
+ export type RequestRaw<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~RequestRaw"]
580
471
  : {}
581
472
 
582
473
  /**
@@ -623,26 +514,14 @@ export type ClientResponseMode = "decoded-only" | "decoded-and-response" | "resp
623
514
  * @category models
624
515
  * @since 4.0.0
625
516
  */
626
- export type ServerServices<Endpoint> = Endpoint extends HttpApiEndpoint<
627
- infer _Name,
628
- infer _Method,
629
- infer _Path,
630
- infer _Params,
631
- infer _Query,
632
- infer _Payload,
633
- infer _Headers,
634
- infer _Success,
635
- infer _Error,
636
- infer _M,
637
- infer _MR
638
- > ?
639
- | _Params["DecodingServices"]
640
- | _Query["DecodingServices"]
641
- | _Payload["DecodingServices"]
642
- | _Headers["DecodingServices"]
643
- | SuccessEncodingServices<_Success>
644
- | _Error["EncodingServices"]
645
- | HttpApiMiddleware.ErrorServicesEncode<_M>
517
+ export type ServerServices<Endpoint> = Endpoint extends ConstraintRequest ?
518
+ | Endpoint["~Params"]["DecodingServices"]
519
+ | Endpoint["~Query"]["DecodingServices"]
520
+ | Endpoint["~Payload"]["DecodingServices"]
521
+ | Endpoint["~Headers"]["DecodingServices"]
522
+ | SuccessEncodingServices<Endpoint["~Success"]>
523
+ | Endpoint["~Error"]["EncodingServices"]
524
+ | HttpApiMiddleware.ErrorServicesEncode<Endpoint["~Middleware"]>
646
525
  : never
647
526
 
648
527
  /**
@@ -652,25 +531,13 @@ export type ServerServices<Endpoint> = Endpoint extends HttpApiEndpoint<
652
531
  * @category models
653
532
  * @since 4.0.0
654
533
  */
655
- export type ClientServices<Endpoint> = Endpoint extends HttpApiEndpoint<
656
- infer _Name,
657
- infer _Method,
658
- infer _Path,
659
- infer _Params,
660
- infer _Query,
661
- infer _Payload,
662
- infer _Headers,
663
- infer _Success,
664
- infer _Error,
665
- infer _M,
666
- infer _MR
667
- > ?
668
- | _Params["EncodingServices"]
669
- | _Query["EncodingServices"]
670
- | _Payload["EncodingServices"]
671
- | _Headers["EncodingServices"]
672
- | SuccessDecodingServices<_Success>
673
- | _Error["DecodingServices"]
534
+ export type ClientServices<Endpoint> = Endpoint extends ConstraintRequest ?
535
+ | Endpoint["~Params"]["EncodingServices"]
536
+ | Endpoint["~Query"]["EncodingServices"]
537
+ | Endpoint["~Payload"]["EncodingServices"]
538
+ | Endpoint["~Headers"]["EncodingServices"]
539
+ | SuccessDecodingServices<Endpoint["~Success"]>
540
+ | Endpoint["~Error"]["DecodingServices"]
674
541
  : never
675
542
 
676
543
  /**
@@ -679,19 +546,7 @@ export type ClientServices<Endpoint> = Endpoint extends HttpApiEndpoint<
679
546
  * @category models
680
547
  * @since 4.0.0
681
548
  */
682
- export type MiddlewareServices<Endpoint> = Endpoint extends HttpApiEndpoint<
683
- infer _Name,
684
- infer _Method,
685
- infer _Path,
686
- infer _Params,
687
- infer _Query,
688
- infer _Payload,
689
- infer _Headers,
690
- infer _Success,
691
- infer _Error,
692
- infer _M,
693
- infer _MR
694
- > ? _MR
549
+ export type MiddlewareServices<Endpoint> = Endpoint extends { readonly "~MiddlewareServices": infer R } ? R
695
550
  : never
696
551
 
697
552
  /**
@@ -701,19 +556,9 @@ export type MiddlewareServices<Endpoint> = Endpoint extends HttpApiEndpoint<
701
556
  * @category models
702
557
  * @since 4.0.0
703
558
  */
704
- export type ErrorServicesDecode<Endpoint> = Endpoint extends HttpApiEndpoint<
705
- infer _Name,
706
- infer _Method,
707
- infer _Path,
708
- infer _Params,
709
- infer _Query,
710
- infer _Payload,
711
- infer _Headers,
712
- infer _Success,
713
- infer _Error,
714
- infer _M,
715
- infer _MR
716
- > ? _Error["DecodingServices"] | HttpApiMiddleware.ErrorServicesDecode<Middleware<Endpoint>>
559
+ export type ErrorServicesDecode<Endpoint> = Endpoint extends ConstraintRequest ?
560
+ | Endpoint["~Error"]["DecodingServices"]
561
+ | HttpApiMiddleware.ErrorServicesDecode<Endpoint["~Middleware"]>
717
562
  : never
718
563
 
719
564
  /**
@@ -723,8 +568,8 @@ export type ErrorServicesDecode<Endpoint> = Endpoint extends HttpApiEndpoint<
723
568
  * @category models
724
569
  * @since 4.0.0
725
570
  */
726
- export type Handler<Endpoint extends Any, E, R> = (
727
- request: Types.Simplify<Request<Endpoint>>
571
+ export type Handler<Endpoint extends Constraint, E, R> = (
572
+ request: Simplify<Endpoint["~Request"]>
728
573
  ) => Effect<SuccessType<Endpoint["~Success"]> | HttpServerResponse, Endpoint["~Error"]["Type"] | E, R>
729
574
 
730
575
  /**
@@ -734,112 +579,121 @@ export type Handler<Endpoint extends Any, E, R> = (
734
579
  * @category models
735
580
  * @since 4.0.0
736
581
  */
737
- export type HandlerRaw<Endpoint extends Any, E, R> = (
738
- request: Types.Simplify<RequestRaw<Endpoint>>
582
+ export type HandlerRaw<Endpoint extends Constraint, E, R> = (
583
+ request: Simplify<Endpoint["~RequestRaw"]>
739
584
  ) => Effect<SuccessType<Endpoint["~Success"]> | HttpServerResponse, Endpoint["~Error"]["Type"] | E, R>
740
585
 
741
586
  /**
742
- * Selects the endpoint with the specified name from a union of endpoints.
587
+ * Selects the endpoint with the specified identifier from a union of endpoints.
743
588
  *
744
589
  * @category models
745
590
  * @since 4.0.0
746
591
  */
747
- export type WithName<Endpoints extends Any, Name extends string> = Extract<Endpoints, { readonly name: Name }>
592
+ export type WithIdentifier<Endpoints, Identifier extends string> = Extract<
593
+ Endpoints,
594
+ { readonly identifier: Identifier }
595
+ >
748
596
 
749
597
  /**
750
- * Removes endpoints with the specified name from a union of endpoints.
598
+ * Removes endpoints with the specified identifier from a union of endpoints.
751
599
  *
752
600
  * @category models
753
601
  * @since 4.0.0
754
602
  */
755
- export type ExcludeName<Endpoints extends Any, Name extends string> = Exclude<Endpoints, { readonly name: Name }>
603
+ export type ExcludeIdentifier<Endpoints, Identifier extends string> = Exclude<
604
+ Endpoints,
605
+ { readonly identifier: Identifier }
606
+ >
756
607
 
757
608
  /**
758
- * Derives the normal handler type for the endpoint with the specified name in an
759
- * endpoint union.
609
+ * Derives the normal handler type for the endpoint with the specified identifier
610
+ * in an endpoint union.
760
611
  *
761
612
  * @category models
762
613
  * @since 4.0.0
763
614
  */
764
- export type HandlerWithName<Endpoints extends Any, Name extends string, E, R> = Handler<
765
- WithName<Endpoints, Name>,
615
+ export type HandlerWithIdentifier<Endpoints extends Constraint, Identifier extends string, E, R> = Handler<
616
+ WithIdentifier<Endpoints, Identifier>,
766
617
  E,
767
618
  R
768
619
  >
769
620
 
770
621
  /**
771
- * Derives the raw handler type for the endpoint with the specified name in an
772
- * endpoint union.
622
+ * Derives the raw handler type for the endpoint with the specified identifier in
623
+ * an endpoint union.
773
624
  *
774
625
  * @category models
775
626
  * @since 4.0.0
776
627
  */
777
- export type HandlerRawWithName<Endpoints extends Any, Name extends string, E, R> = HandlerRaw<
778
- WithName<Endpoints, Name>,
628
+ export type HandlerRawWithIdentifier<Endpoints extends Constraint, Identifier extends string, E, R> = HandlerRaw<
629
+ WithIdentifier<Endpoints, Identifier>,
779
630
  E,
780
631
  R
781
632
  >
782
633
 
783
634
  /**
784
- * Extracts the decoded success value type for the endpoint with the specified name
785
- * in an endpoint union.
635
+ * Extracts the decoded success value type for the endpoint with the specified
636
+ * identifier in an endpoint union.
786
637
  *
787
638
  * @category models
788
639
  * @since 4.0.0
789
640
  */
790
- export type SuccessWithName<Endpoints extends Any, Name extends string> = Success<
791
- WithName<Endpoints, Name>
641
+ export type SuccessWithIdentifier<Endpoints extends Constraint, Identifier extends string> = Success<
642
+ WithIdentifier<Endpoints, Identifier>
792
643
  > extends infer S ? SuccessType<S> : never
793
644
 
794
645
  /**
795
- * Computes the full error value union for the endpoint with the specified name in
796
- * an endpoint union.
646
+ * Computes the full error value union for the endpoint with the specified
647
+ * identifier in an endpoint union.
797
648
  *
798
649
  * @category models
799
650
  * @since 4.0.0
800
651
  */
801
- export type ErrorsWithName<Endpoints extends Any, Name extends string> = Errors<WithName<Endpoints, Name>>
652
+ export type ErrorsWithIdentifier<Endpoints extends Constraint, Identifier extends string> = Errors<
653
+ WithIdentifier<Endpoints, Identifier>
654
+ >
802
655
 
803
656
  /**
804
657
  * Computes the server-side service requirements for the endpoint with the
805
- * specified name in an endpoint union.
658
+ * specified identifier in an endpoint union.
806
659
  *
807
660
  * @category models
808
661
  * @since 4.0.0
809
662
  */
810
- export type ServerServicesWithName<Endpoints extends Any, Name extends string> = ServerServices<
811
- WithName<Endpoints, Name>
663
+ export type ServerServicesWithIdentifier<Endpoints extends Constraint, Identifier extends string> = ServerServices<
664
+ WithIdentifier<Endpoints, Identifier>
812
665
  >
813
666
 
814
667
  /**
815
- * Extracts the middleware identifiers for the endpoint with the specified name in
816
- * an endpoint union.
668
+ * Extracts the middleware identifiers for the endpoint with the specified
669
+ * identifier in an endpoint union.
817
670
  *
818
671
  * @category models
819
672
  * @since 4.0.0
820
673
  */
821
- export type MiddlewareWithName<Endpoints extends Any, Name extends string> = Middleware<WithName<Endpoints, Name>>
674
+ export type MiddlewareWithIdentifier<Endpoints extends Constraint, Identifier extends string> = Middleware<
675
+ WithIdentifier<Endpoints, Identifier>
676
+ >
822
677
 
823
678
  /**
824
- * Extracts the middleware service requirements for the endpoint with the specified
825
- * name in an endpoint union.
679
+ * Extracts the middleware service requirements for the endpoint with the
680
+ * specified identifier in an endpoint union.
826
681
  *
827
682
  * @category models
828
683
  * @since 4.0.0
829
684
  */
830
- export type MiddlewareServicesWithName<Endpoints extends Any, Name extends string> = MiddlewareServices<
831
- WithName<Endpoints, Name>
832
- >
685
+ export type MiddlewareServicesWithIdentifier<Endpoints extends Constraint, Identifier extends string> =
686
+ MiddlewareServices<WithIdentifier<Endpoints, Identifier>>
833
687
 
834
688
  /**
835
- * Removes services provided by the HTTP router and the named endpoint's middleware
836
- * from a service requirement union.
689
+ * Removes services provided by the HTTP router and the selected endpoint's
690
+ * middleware from a service requirement union.
837
691
  *
838
692
  * @category models
839
693
  * @since 4.0.0
840
694
  */
841
- export type ExcludeProvidedWithName<Endpoints extends Any, Name extends string, R> = ExcludeProvided<
842
- WithName<Endpoints, Name>,
695
+ export type ExcludeProvidedWithIdentifier<Endpoints extends Constraint, Identifier extends string, R> = ExcludeProvided<
696
+ WithIdentifier<Endpoints, Identifier>,
843
697
  R
844
698
  >
845
699
 
@@ -850,7 +704,7 @@ export type ExcludeProvidedWithName<Endpoints extends Any, Name extends string,
850
704
  * @category models
851
705
  * @since 4.0.0
852
706
  */
853
- export type ExcludeProvided<Endpoint extends Any, R> = Exclude<
707
+ export type ExcludeProvided<Endpoint extends Constraint, R> = Exclude<
854
708
  R,
855
709
  | HttpRouter.Provided
856
710
  | HttpApiMiddleware.Provides<Middleware<Endpoint>>
@@ -863,8 +717,8 @@ export type ExcludeProvided<Endpoint extends Any, R> = Exclude<
863
717
  * @category models
864
718
  * @since 4.0.0
865
719
  */
866
- export type AddPrefix<Endpoint extends Any, Prefix extends HttpRouter.PathInput> = Endpoint extends HttpApiEndpoint<
867
- infer _Name,
720
+ export type AddPrefix<Endpoint, Prefix extends HttpRouter.PathInput> = Endpoint extends HttpApiEndpoint<
721
+ infer _Identifier,
868
722
  infer _Method,
869
723
  infer _Path,
870
724
  infer _Params,
@@ -876,7 +730,7 @@ export type AddPrefix<Endpoint extends Any, Prefix extends HttpRouter.PathInput>
876
730
  infer _M,
877
731
  infer _MR
878
732
  > ? HttpApiEndpoint<
879
- _Name,
733
+ _Identifier,
880
734
  _Method,
881
735
  `${Prefix}${_Path}`,
882
736
  _Params,
@@ -890,40 +744,6 @@ export type AddPrefix<Endpoint extends Any, Prefix extends HttpRouter.PathInput>
890
744
  > :
891
745
  never
892
746
 
893
- /**
894
- * Returns an endpoint type with an additional error schema added to the endpoint's
895
- * existing error schema union.
896
- *
897
- * @category models
898
- * @since 4.0.0
899
- */
900
- export type AddError<Endpoint extends Any, E extends Schema.Top> = Endpoint extends HttpApiEndpoint<
901
- infer _Name,
902
- infer _Method,
903
- infer _Path,
904
- infer _Params,
905
- infer _Query,
906
- infer _Payload,
907
- infer _Headers,
908
- infer _Success,
909
- infer _Error,
910
- infer _M,
911
- infer _MR
912
- > ? HttpApiEndpoint<
913
- _Name,
914
- _Method,
915
- _Path,
916
- _Params,
917
- _Query,
918
- _Payload,
919
- _Headers,
920
- _Success,
921
- _Error | E,
922
- _M,
923
- _MR
924
- > :
925
- never
926
-
927
747
  /**
928
748
  * Returns an endpoint type with additional middleware applied and the endpoint's
929
749
  * middleware service requirements updated accordingly.
@@ -931,8 +751,8 @@ export type AddError<Endpoint extends Any, E extends Schema.Top> = Endpoint exte
931
751
  * @category models
932
752
  * @since 4.0.0
933
753
  */
934
- export type AddMiddleware<Endpoint extends Any, M extends HttpApiMiddleware.AnyId> = Endpoint extends HttpApiEndpoint<
935
- infer _Name,
754
+ export type AddMiddleware<Endpoint, M extends HttpApiMiddleware.AnyId> = Endpoint extends HttpApiEndpoint<
755
+ infer _Identifier,
936
756
  infer _Method,
937
757
  infer _Path,
938
758
  infer _Params,
@@ -944,7 +764,7 @@ export type AddMiddleware<Endpoint extends Any, M extends HttpApiMiddleware.AnyI
944
764
  infer _M,
945
765
  infer _MR
946
766
  > ? HttpApiEndpoint<
947
- _Name,
767
+ _Identifier,
948
768
  _Method,
949
769
  _Path,
950
770
  _Params,
@@ -963,34 +783,48 @@ const Proto = {
963
783
  pipe() {
964
784
  return pipeArguments(this, arguments)
965
785
  },
966
- prefix(this: AnyWithProps, prefix: HttpRouter.PathInput) {
786
+ prefix(this: Top, prefix: HttpRouter.PathInput) {
967
787
  return makeProto({
968
- ...this,
788
+ ...optionsFromEndpoint(this),
969
789
  path: HttpRouter.prefixPath(this.path, prefix)
970
790
  })
971
791
  },
972
- middleware(this: AnyWithProps, middleware: HttpApiMiddleware.AnyService) {
792
+ middleware(this: Top, middleware: HttpApiMiddleware.AnyService) {
973
793
  return makeProto({
974
- ...this,
794
+ ...optionsFromEndpoint(this),
975
795
  middlewares: new Set([...this.middlewares, middleware as any])
976
796
  })
977
797
  },
978
- annotate(this: AnyWithProps, key: Context.Key<any, any>, value: any) {
798
+ annotate(this: Top, key: Context.Key<any, any>, value: any) {
979
799
  return makeProto({
980
- ...this,
800
+ ...optionsFromEndpoint(this),
981
801
  annotations: Context.add(this.annotations, key, value)
982
802
  })
983
803
  },
984
- annotateMerge(this: AnyWithProps, annotations: Context.Context<any>) {
804
+ annotateMerge(this: Top, annotations: Context.Context<any>) {
985
805
  return makeProto({
986
- ...this,
806
+ ...optionsFromEndpoint(this),
987
807
  annotations: Context.merge(this.annotations, annotations)
988
808
  })
989
809
  }
990
810
  }
991
811
 
812
+ const optionsFromEndpoint = (endpoint: Top) => ({
813
+ identifier: endpoint.identifier,
814
+ path: endpoint.path,
815
+ method: endpoint.method,
816
+ params: endpoint.params,
817
+ query: endpoint.query,
818
+ headers: endpoint.headers,
819
+ payload: endpoint.payload,
820
+ success: endpoint.success,
821
+ error: endpoint.error,
822
+ annotations: endpoint.annotations,
823
+ middlewares: endpoint.middlewares
824
+ })
825
+
992
826
  function makeProto<
993
- Name extends string,
827
+ Identifier extends string,
994
828
  Method extends HttpMethod,
995
829
  const Path extends string,
996
830
  Params extends Schema.Top,
@@ -1002,7 +836,7 @@ function makeProto<
1002
836
  Middleware,
1003
837
  MiddlewareR
1004
838
  >(options: {
1005
- readonly name: Name
839
+ readonly identifier: Identifier
1006
840
  readonly path: Path
1007
841
  readonly method: Method
1008
842
  readonly params: Schema.Top | undefined
@@ -1014,7 +848,7 @@ function makeProto<
1014
848
  readonly annotations: Context.Context<never>
1015
849
  readonly middlewares: ReadonlySet<Context.Key<Middleware, any>>
1016
850
  }): HttpApiEndpoint<
1017
- Name,
851
+ Identifier,
1018
852
  Method,
1019
853
  Path,
1020
854
  Params,
@@ -1026,7 +860,9 @@ function makeProto<
1026
860
  Middleware,
1027
861
  MiddlewareR
1028
862
  > {
1029
- return Object.assign(Object.create(Proto), options)
863
+ function HttpApiEndpoint() {}
864
+ Object.setPrototypeOf(HttpApiEndpoint, Proto)
865
+ return Object.assign(HttpApiEndpoint, options) as any
1030
866
  }
1031
867
 
1032
868
  /**
@@ -1118,7 +954,7 @@ type ErrorNoStream<S extends ErrorConstraint> = [
1118
954
 
1119
955
  /**
1120
956
  * Creates endpoint constructors for a specific HTTP method. The resulting
1121
- * constructor builds an `HttpApiEndpoint` from a name, path, and optional request
957
+ * constructor builds an `HttpApiEndpoint` from an identifier, path, and optional request
1122
958
  * and response schemas, applying automatic JSON or string-tree codecs unless
1123
959
  * `disableCodecs` is enabled.
1124
960
  *
@@ -1127,7 +963,7 @@ type ErrorNoStream<S extends ErrorConstraint> = [
1127
963
  */
1128
964
  export const make = <Method extends HttpMethod>(method: Method): {
1129
965
  <
1130
- const Name extends string,
966
+ const Identifier extends string,
1131
967
  const Path extends HttpRouter.PathInput,
1132
968
  Params extends Schema.Top | Schema.Struct.Fields = never,
1133
969
  Query extends Schema.Top | Schema.Struct.Fields = never,
@@ -1136,7 +972,7 @@ export const make = <Method extends HttpMethod>(method: Method): {
1136
972
  const Success extends SuccessConstraint = HttpApiSchema.NoContent,
1137
973
  const Error extends Schema.Top | ReadonlyArray<Schema.Top> = never
1138
974
  >(
1139
- name: Name,
975
+ identifier: Identifier,
1140
976
  path: Path,
1141
977
  options?: {
1142
978
  readonly disableCodecs?: false | undefined
@@ -1148,19 +984,19 @@ export const make = <Method extends HttpMethod>(method: Method): {
1148
984
  readonly error?: (Error & ErrorNoStream<Types.NoInfer<Error>>) | undefined
1149
985
  }
1150
986
  ): HttpApiEndpoint<
1151
- Name,
987
+ Identifier,
1152
988
  Method,
1153
989
  Path,
1154
- StringTree<Params extends Schema.Struct.Fields ? Schema.Struct<Params> : Params>,
1155
- StringTree<Query extends Schema.Struct.Fields ? Schema.Struct<Query> : Query>,
1156
- Method extends HttpMethod.WithBody ? Json<ExtractSchemaOrArray<Payload>>
1157
- : StringTree<ExtractSchemaOrArray<Payload>>,
1158
- StringTree<Headers extends Schema.Struct.Fields ? Schema.Struct<Headers> : Headers>,
1159
- JsonSuccessOrArray<Success>,
1160
- Json<Error extends ReadonlyArray<Schema.Constraint> ? Error[number] : Error>
990
+ ToStringTreeCodec<Params>,
991
+ ToStringTreeCodec<Query>,
992
+ Method extends HttpMethod.WithBody ? ToJsonCodec<ToSchema<Payload>>
993
+ : ToStringTreeCodec<ToSchema<Payload>>,
994
+ ToStringTreeCodec<Headers>,
995
+ ToSuccessCodec<Success>,
996
+ ToJsonCodec<Error extends ReadonlyArray<Schema.Constraint> ? Error[number] : Error>
1161
997
  >
1162
998
  <
1163
- const Name extends string,
999
+ const Identifier extends string,
1164
1000
  const Path extends HttpRouter.PathInput,
1165
1001
  Params extends ParamsConstraint = never,
1166
1002
  Query extends QueryConstraint = never,
@@ -1169,7 +1005,7 @@ export const make = <Method extends HttpMethod>(method: Method): {
1169
1005
  const Success extends SuccessConstraint = HttpApiSchema.NoContent,
1170
1006
  const Error extends ErrorConstraint = never
1171
1007
  >(
1172
- name: Name,
1008
+ identifier: Identifier,
1173
1009
  path: Path,
1174
1010
  options?: {
1175
1011
  readonly disableCodecs: true
@@ -1181,19 +1017,19 @@ export const make = <Method extends HttpMethod>(method: Method): {
1181
1017
  readonly error?: (Error & ErrorNoStream<Types.NoInfer<Error>>) | undefined
1182
1018
  }
1183
1019
  ): HttpApiEndpoint<
1184
- Name,
1020
+ Identifier,
1185
1021
  Method,
1186
1022
  Path,
1187
1023
  Params extends Schema.Struct.Fields ? Schema.Struct<Params> : Params,
1188
1024
  Query extends Schema.Struct.Fields ? Schema.Struct<Query> : Query,
1189
- ExtractSchemaOrArray<Payload>,
1190
- ExtractSchemaOrArray<Headers>,
1191
- ExtractSuccessOrArray<Success>,
1025
+ ToSchema<Payload>,
1026
+ ToSchema<Headers>,
1027
+ UnwrapReadonlyArray<Success>,
1192
1028
  Error extends ReadonlyArray<Schema.Constraint> ? Error[number] : Error
1193
1029
  >
1194
1030
  } =>
1195
1031
  <
1196
- const Name extends string,
1032
+ const Identifier extends string,
1197
1033
  const Path extends HttpRouter.PathInput,
1198
1034
  Params extends ParamsConstraint = never,
1199
1035
  Query extends QueryConstraint = never,
@@ -1202,7 +1038,7 @@ export const make = <Method extends HttpMethod>(method: Method): {
1202
1038
  const Success extends SuccessConstraint = HttpApiSchema.NoContent,
1203
1039
  const Error extends ErrorConstraint = never
1204
1040
  >(
1205
- name: Name,
1041
+ identifier: Identifier,
1206
1042
  path: Path,
1207
1043
  options?: {
1208
1044
  readonly disableCodecs?: boolean | undefined
@@ -1214,7 +1050,7 @@ export const make = <Method extends HttpMethod>(method: Method): {
1214
1050
  readonly error?: (Error & ErrorNoStream<Types.NoInfer<Error>>) | undefined
1215
1051
  }
1216
1052
  ): HttpApiEndpoint<
1217
- Name,
1053
+ Identifier,
1218
1054
  Method,
1219
1055
  Path,
1220
1056
  Params extends Schema.Struct.Fields ? Schema.Struct<Params> : Params,
@@ -1223,13 +1059,13 @@ export const make = <Method extends HttpMethod>(method: Method): {
1223
1059
  : Payload extends ReadonlyArray<Schema.Constraint> ? Payload[number]
1224
1060
  : Payload,
1225
1061
  Headers extends Schema.Struct.Fields ? Schema.Struct<Headers> : Headers,
1226
- ExtractSuccessOrArray<Success>,
1062
+ UnwrapReadonlyArray<Success>,
1227
1063
  Error extends ReadonlyArray<Schema.Constraint> ? Error[number] : Error
1228
1064
  > => {
1229
1065
  const disableCodecs = options?.disableCodecs ?? false
1230
1066
  const transformStringTree = disableCodecs ? identity : Schema.toCodecStringTree
1231
1067
  return makeProto({
1232
- name,
1068
+ identifier,
1233
1069
  path,
1234
1070
  method,
1235
1071
  params: ensureStruct(options?.params, transformStringTree),
@@ -1243,37 +1079,10 @@ export const make = <Method extends HttpMethod>(method: Method): {
1243
1079
  })
1244
1080
  }
1245
1081
 
1246
- type ExtractSchemaOrArray<S extends Schema.Struct.Fields | Schema.Constraint | ReadonlyArray<Schema.Constraint>> =
1247
- S extends Schema.Struct.Fields ? Schema.Struct<S>
1248
- : S extends ReadonlyArray<Schema.Constraint> ? S[number]
1249
- : S
1250
-
1251
- /**
1252
- * A schema codec that decodes and encodes the schema's value type through JSON
1253
- * transport values.
1254
- *
1255
- * @category Codecs
1256
- * @since 4.0.0
1257
- */
1258
- export interface Json<S extends Schema.Constraint>
1259
- extends Schema.Codec<S["Type"], Schema.Json, S["DecodingServices"], S["EncodingServices"]>
1260
- {}
1261
-
1262
- /**
1263
- * A schema codec that decodes and encodes the schema's value type through
1264
- * `Schema.StringTree` transport values.
1265
- *
1266
- * @category Codecs
1267
- * @since 4.0.0
1268
- */
1269
- export interface StringTree<S extends Schema.Constraint> extends
1270
- Schema.Codec<
1271
- S["Type"],
1272
- Schema.StringTree,
1273
- S["DecodingServices"],
1274
- S["EncodingServices"]
1275
- >
1276
- {}
1082
+ type ToSchema<S extends Schema.Struct.Fields | Schema.Constraint | ReadonlyArray<Schema.Constraint>> = S extends
1083
+ Schema.Struct.Fields ? Schema.Struct<S>
1084
+ : S extends ReadonlyArray<Schema.Constraint> ? S[number]
1085
+ : S
1277
1086
 
1278
1087
  function ensureStruct(
1279
1088
  params: Schema.Struct.Fields | Schema.Top | undefined,
@@ -1303,7 +1112,8 @@ function getPayload(
1303
1112
 
1304
1113
  for (const schema of schemas) {
1305
1114
  const encoding = HttpApiSchema.getPayloadEncoding(schema.ast, method)
1306
- const existing = result.get(encoding.contentType)
1115
+ const contentType = MediaType.normalize(encoding.contentType)
1116
+ const existing = result.get(contentType)
1307
1117
  if (existing) {
1308
1118
  if (existing.encoding._tag !== encoding._tag) {
1309
1119
  throw new Error(`Multiple payload encodings for content-type: ${encoding.contentType}`)
@@ -1313,7 +1123,7 @@ function getPayload(
1313
1123
  }
1314
1124
  existing.schemas.push(transform(schema, method))
1315
1125
  } else {
1316
- result.set(encoding.contentType, { encoding, schemas: [transform(schema, method)] })
1126
+ result.set(contentType, { encoding, schemas: [transform(schema, method)] })
1317
1127
  }
1318
1128
  }
1319
1129
  return result
@@ -1368,7 +1178,7 @@ function validateSuccessResponse(schemas: ReadonlyArray<Schema.Constraint>, meth
1368
1178
  if (entry.noContent) {
1369
1179
  throw new Error(`Cannot combine no-content and streaming success responses for status: ${status}`)
1370
1180
  }
1371
- if (entry.bufferedContentTypes.has(normalizeResponseContentType(schema.contentType))) {
1181
+ if (entry.bufferedContentTypes.has(MediaType.normalize(schema.contentType))) {
1372
1182
  throw new Error(
1373
1183
  `Cannot combine buffered and streaming success responses for status ${status} and content-type: ${schema.contentType}`
1374
1184
  )
@@ -1384,7 +1194,7 @@ function validateSuccessResponse(schemas: ReadonlyArray<Schema.Constraint>, meth
1384
1194
  }
1385
1195
  const encoding = HttpApiSchema.getResponseEncoding(schema.ast)
1386
1196
  if (
1387
- normalizeResponseContentType(encoding.contentType) === normalizeResponseContentType(entry.stream.contentType)
1197
+ MediaType.normalize(encoding.contentType) === MediaType.normalize(entry.stream.contentType)
1388
1198
  ) {
1389
1199
  throw new Error(
1390
1200
  `Cannot combine buffered and streaming success responses for status ${status} and content-type: ${encoding.contentType}`
@@ -1393,7 +1203,7 @@ function validateSuccessResponse(schemas: ReadonlyArray<Schema.Constraint>, meth
1393
1203
  }
1394
1204
  if (!noContent) {
1395
1205
  entry.bufferedContentTypes.add(
1396
- normalizeResponseContentType(HttpApiSchema.getResponseEncoding(schema.ast).contentType)
1206
+ MediaType.normalize(HttpApiSchema.getResponseEncoding(schema.ast).contentType)
1397
1207
  )
1398
1208
  }
1399
1209
  entry.noContent = entry.noContent || noContent
@@ -1401,12 +1211,6 @@ function validateSuccessResponse(schemas: ReadonlyArray<Schema.Constraint>, meth
1401
1211
  }
1402
1212
  }
1403
1213
 
1404
- function normalizeResponseContentType(contentType: string): string {
1405
- const normalized = contentType.toLowerCase().trim()
1406
- const index = normalized.indexOf(";")
1407
- return index === -1 ? normalized : normalized.slice(0, index).trim()
1408
- }
1409
-
1410
1214
  function getStatusEntry(
1411
1215
  statuses: Map<number, {
1412
1216
  readonly stream?: HttpApiSchema.StreamSchema | undefined