@effect/platform 0.68.6 → 0.69.0

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 (229) hide show
  1. package/HttpApiMiddleware/package.json +6 -0
  2. package/README.md +306 -233
  3. package/dist/cjs/Headers.js +7 -2
  4. package/dist/cjs/Headers.js.map +1 -1
  5. package/dist/cjs/HttpApi.js +90 -78
  6. package/dist/cjs/HttpApi.js.map +1 -1
  7. package/dist/cjs/HttpApiBuilder.js +243 -255
  8. package/dist/cjs/HttpApiBuilder.js.map +1 -1
  9. package/dist/cjs/HttpApiClient.js +64 -59
  10. package/dist/cjs/HttpApiClient.js.map +1 -1
  11. package/dist/cjs/HttpApiEndpoint.js +74 -109
  12. package/dist/cjs/HttpApiEndpoint.js.map +1 -1
  13. package/dist/cjs/HttpApiError.js +3 -4
  14. package/dist/cjs/HttpApiError.js.map +1 -1
  15. package/dist/cjs/HttpApiGroup.js +103 -100
  16. package/dist/cjs/HttpApiGroup.js.map +1 -1
  17. package/dist/cjs/HttpApiMiddleware.js +67 -0
  18. package/dist/cjs/HttpApiMiddleware.js.map +1 -0
  19. package/dist/cjs/HttpApiSchema.js +33 -7
  20. package/dist/cjs/HttpApiSchema.js.map +1 -1
  21. package/dist/cjs/HttpApiSecurity.js +2 -2
  22. package/dist/cjs/HttpApiSecurity.js.map +1 -1
  23. package/dist/cjs/HttpApiSwagger.js +3 -1
  24. package/dist/cjs/HttpApiSwagger.js.map +1 -1
  25. package/dist/cjs/HttpBody.js.map +1 -1
  26. package/dist/cjs/HttpIncomingMessage.js +5 -1
  27. package/dist/cjs/HttpIncomingMessage.js.map +1 -1
  28. package/dist/cjs/HttpServer.js +12 -1
  29. package/dist/cjs/HttpServer.js.map +1 -1
  30. package/dist/cjs/HttpServerRespondable.js +1 -1
  31. package/dist/cjs/HttpServerRespondable.js.map +1 -1
  32. package/dist/cjs/OpenApi.js +102 -63
  33. package/dist/cjs/OpenApi.js.map +1 -1
  34. package/dist/cjs/OpenApiJsonSchema.js +58 -47
  35. package/dist/cjs/OpenApiJsonSchema.js.map +1 -1
  36. package/dist/cjs/Transferable.js +2 -2
  37. package/dist/cjs/Transferable.js.map +1 -1
  38. package/dist/cjs/UrlParams.js +5 -1
  39. package/dist/cjs/UrlParams.js.map +1 -1
  40. package/dist/cjs/Worker.js.map +1 -1
  41. package/dist/cjs/WorkerError.js +1 -5
  42. package/dist/cjs/WorkerError.js.map +1 -1
  43. package/dist/cjs/WorkerRunner.js.map +1 -1
  44. package/dist/cjs/index.js +3 -1
  45. package/dist/cjs/internal/httpBody.js +1 -1
  46. package/dist/cjs/internal/httpBody.js.map +1 -1
  47. package/dist/cjs/internal/httpClientRequest.js.map +1 -1
  48. package/dist/cjs/internal/httpClientResponse.js +1 -1
  49. package/dist/cjs/internal/httpClientResponse.js.map +1 -1
  50. package/dist/cjs/internal/httpRouter.js +1 -1
  51. package/dist/cjs/internal/httpRouter.js.map +1 -1
  52. package/dist/cjs/internal/httpServer.js +7 -1
  53. package/dist/cjs/internal/httpServer.js.map +1 -1
  54. package/dist/cjs/internal/httpServerRequest.js +1 -1
  55. package/dist/cjs/internal/httpServerRequest.js.map +1 -1
  56. package/dist/cjs/internal/httpServerResponse.js.map +1 -1
  57. package/dist/cjs/internal/keyValueStore.js +1 -1
  58. package/dist/cjs/internal/keyValueStore.js.map +1 -1
  59. package/dist/cjs/internal/multipart.js +1 -1
  60. package/dist/cjs/internal/multipart.js.map +1 -1
  61. package/dist/cjs/internal/worker.js +6 -7
  62. package/dist/cjs/internal/worker.js.map +1 -1
  63. package/dist/cjs/internal/workerRunner.js +3 -4
  64. package/dist/cjs/internal/workerRunner.js.map +1 -1
  65. package/dist/dts/Headers.d.ts +4 -6
  66. package/dist/dts/Headers.d.ts.map +1 -1
  67. package/dist/dts/HttpApi.d.ts +64 -140
  68. package/dist/dts/HttpApi.d.ts.map +1 -1
  69. package/dist/dts/HttpApiBuilder.d.ts +84 -167
  70. package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
  71. package/dist/dts/HttpApiClient.d.ts +34 -11
  72. package/dist/dts/HttpApiClient.d.ts.map +1 -1
  73. package/dist/dts/HttpApiEndpoint.d.ts +119 -273
  74. package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
  75. package/dist/dts/HttpApiError.d.ts +5 -2
  76. package/dist/dts/HttpApiError.d.ts.map +1 -1
  77. package/dist/dts/HttpApiGroup.d.ts +96 -194
  78. package/dist/dts/HttpApiGroup.d.ts.map +1 -1
  79. package/dist/dts/HttpApiMiddleware.d.ts +231 -0
  80. package/dist/dts/HttpApiMiddleware.d.ts.map +1 -0
  81. package/dist/dts/HttpApiSchema.d.ts +6 -2
  82. package/dist/dts/HttpApiSchema.d.ts.map +1 -1
  83. package/dist/dts/HttpApiSecurity.d.ts +1 -1
  84. package/dist/dts/HttpApiSecurity.d.ts.map +1 -1
  85. package/dist/dts/HttpApiSwagger.d.ts +2 -2
  86. package/dist/dts/HttpApiSwagger.d.ts.map +1 -1
  87. package/dist/dts/HttpBody.d.ts +2 -2
  88. package/dist/dts/HttpBody.d.ts.map +1 -1
  89. package/dist/dts/HttpClientRequest.d.ts +2 -2
  90. package/dist/dts/HttpClientRequest.d.ts.map +1 -1
  91. package/dist/dts/HttpClientResponse.d.ts +3 -3
  92. package/dist/dts/HttpClientResponse.d.ts.map +1 -1
  93. package/dist/dts/HttpIncomingMessage.d.ts +3 -3
  94. package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
  95. package/dist/dts/HttpRouter.d.ts +3 -3
  96. package/dist/dts/HttpRouter.d.ts.map +1 -1
  97. package/dist/dts/HttpServer.d.ts +15 -0
  98. package/dist/dts/HttpServer.d.ts.map +1 -1
  99. package/dist/dts/HttpServerRequest.d.ts +3 -3
  100. package/dist/dts/HttpServerRequest.d.ts.map +1 -1
  101. package/dist/dts/HttpServerRespondable.d.ts.map +1 -1
  102. package/dist/dts/HttpServerResponse.d.ts +2 -2
  103. package/dist/dts/HttpServerResponse.d.ts.map +1 -1
  104. package/dist/dts/KeyValueStore.d.ts +2 -2
  105. package/dist/dts/KeyValueStore.d.ts.map +1 -1
  106. package/dist/dts/Multipart.d.ts +3 -3
  107. package/dist/dts/Multipart.d.ts.map +1 -1
  108. package/dist/dts/OpenApi.d.ts +17 -39
  109. package/dist/dts/OpenApi.d.ts.map +1 -1
  110. package/dist/dts/OpenApiJsonSchema.d.ts +10 -5
  111. package/dist/dts/OpenApiJsonSchema.d.ts.map +1 -1
  112. package/dist/dts/Transferable.d.ts +4 -1
  113. package/dist/dts/Transferable.d.ts.map +1 -1
  114. package/dist/dts/UrlParams.d.ts +3 -6
  115. package/dist/dts/UrlParams.d.ts.map +1 -1
  116. package/dist/dts/Worker.d.ts +7 -8
  117. package/dist/dts/Worker.d.ts.map +1 -1
  118. package/dist/dts/WorkerError.d.ts +1 -1
  119. package/dist/dts/WorkerError.d.ts.map +1 -1
  120. package/dist/dts/WorkerRunner.d.ts +2 -3
  121. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  122. package/dist/dts/index.d.ts +4 -0
  123. package/dist/dts/index.d.ts.map +1 -1
  124. package/dist/dts/internal/httpRouter.d.ts.map +1 -1
  125. package/dist/esm/Headers.js +7 -2
  126. package/dist/esm/Headers.js.map +1 -1
  127. package/dist/esm/HttpApi.js +88 -77
  128. package/dist/esm/HttpApi.js.map +1 -1
  129. package/dist/esm/HttpApiBuilder.js +236 -244
  130. package/dist/esm/HttpApiBuilder.js.map +1 -1
  131. package/dist/esm/HttpApiClient.js +64 -59
  132. package/dist/esm/HttpApiClient.js.map +1 -1
  133. package/dist/esm/HttpApiEndpoint.js +73 -106
  134. package/dist/esm/HttpApiEndpoint.js.map +1 -1
  135. package/dist/esm/HttpApiError.js +3 -4
  136. package/dist/esm/HttpApiError.js.map +1 -1
  137. package/dist/esm/HttpApiGroup.js +102 -99
  138. package/dist/esm/HttpApiGroup.js.map +1 -1
  139. package/dist/esm/HttpApiMiddleware.js +56 -0
  140. package/dist/esm/HttpApiMiddleware.js.map +1 -0
  141. package/dist/esm/HttpApiSchema.js +31 -5
  142. package/dist/esm/HttpApiSchema.js.map +1 -1
  143. package/dist/esm/HttpApiSecurity.js +1 -1
  144. package/dist/esm/HttpApiSecurity.js.map +1 -1
  145. package/dist/esm/HttpApiSwagger.js +4 -2
  146. package/dist/esm/HttpApiSwagger.js.map +1 -1
  147. package/dist/esm/HttpBody.js.map +1 -1
  148. package/dist/esm/HttpIncomingMessage.js +4 -1
  149. package/dist/esm/HttpIncomingMessage.js.map +1 -1
  150. package/dist/esm/HttpServer.js +11 -0
  151. package/dist/esm/HttpServer.js.map +1 -1
  152. package/dist/esm/HttpServerRespondable.js +1 -1
  153. package/dist/esm/HttpServerRespondable.js.map +1 -1
  154. package/dist/esm/OpenApi.js +97 -59
  155. package/dist/esm/OpenApi.js.map +1 -1
  156. package/dist/esm/OpenApiJsonSchema.js +56 -46
  157. package/dist/esm/OpenApiJsonSchema.js.map +1 -1
  158. package/dist/esm/Transferable.js +2 -2
  159. package/dist/esm/Transferable.js.map +1 -1
  160. package/dist/esm/UrlParams.js +4 -1
  161. package/dist/esm/UrlParams.js.map +1 -1
  162. package/dist/esm/Worker.js.map +1 -1
  163. package/dist/esm/WorkerError.js +1 -4
  164. package/dist/esm/WorkerError.js.map +1 -1
  165. package/dist/esm/WorkerRunner.js.map +1 -1
  166. package/dist/esm/index.js +4 -0
  167. package/dist/esm/index.js.map +1 -1
  168. package/dist/esm/internal/httpBody.js +1 -1
  169. package/dist/esm/internal/httpBody.js.map +1 -1
  170. package/dist/esm/internal/httpClientRequest.js.map +1 -1
  171. package/dist/esm/internal/httpClientResponse.js +1 -1
  172. package/dist/esm/internal/httpClientResponse.js.map +1 -1
  173. package/dist/esm/internal/httpRouter.js +1 -1
  174. package/dist/esm/internal/httpRouter.js.map +1 -1
  175. package/dist/esm/internal/httpServer.js +6 -0
  176. package/dist/esm/internal/httpServer.js.map +1 -1
  177. package/dist/esm/internal/httpServerRequest.js +1 -1
  178. package/dist/esm/internal/httpServerRequest.js.map +1 -1
  179. package/dist/esm/internal/httpServerResponse.js.map +1 -1
  180. package/dist/esm/internal/keyValueStore.js +1 -1
  181. package/dist/esm/internal/keyValueStore.js.map +1 -1
  182. package/dist/esm/internal/multipart.js +1 -1
  183. package/dist/esm/internal/multipart.js.map +1 -1
  184. package/dist/esm/internal/worker.js +6 -7
  185. package/dist/esm/internal/worker.js.map +1 -1
  186. package/dist/esm/internal/workerRunner.js +3 -4
  187. package/dist/esm/internal/workerRunner.js.map +1 -1
  188. package/package.json +10 -3
  189. package/src/Headers.ts +12 -4
  190. package/src/HttpApi.ts +183 -258
  191. package/src/HttpApiBuilder.ts +532 -481
  192. package/src/HttpApiClient.ts +163 -112
  193. package/src/HttpApiEndpoint.ts +443 -564
  194. package/src/HttpApiError.ts +4 -6
  195. package/src/HttpApiGroup.ts +277 -325
  196. package/src/HttpApiMiddleware.ts +318 -0
  197. package/src/HttpApiSchema.ts +39 -2
  198. package/src/HttpApiSecurity.ts +1 -1
  199. package/src/HttpApiSwagger.ts +3 -3
  200. package/src/HttpBody.ts +2 -2
  201. package/src/HttpClientRequest.ts +2 -2
  202. package/src/HttpClientResponse.ts +3 -3
  203. package/src/HttpIncomingMessage.ts +3 -3
  204. package/src/HttpRouter.ts +3 -3
  205. package/src/HttpServer.ts +21 -0
  206. package/src/HttpServerRequest.ts +3 -3
  207. package/src/HttpServerRespondable.ts +1 -1
  208. package/src/HttpServerResponse.ts +2 -2
  209. package/src/KeyValueStore.ts +2 -2
  210. package/src/Multipart.ts +3 -3
  211. package/src/OpenApi.ts +113 -104
  212. package/src/OpenApiJsonSchema.ts +67 -53
  213. package/src/Transferable.ts +2 -2
  214. package/src/UrlParams.ts +3 -3
  215. package/src/Worker.ts +7 -8
  216. package/src/WorkerError.ts +1 -1
  217. package/src/WorkerRunner.ts +2 -3
  218. package/src/index.ts +5 -0
  219. package/src/internal/httpBody.ts +2 -2
  220. package/src/internal/httpClientRequest.ts +2 -2
  221. package/src/internal/httpClientResponse.ts +3 -3
  222. package/src/internal/httpRouter.ts +2 -2
  223. package/src/internal/httpServer.ts +13 -0
  224. package/src/internal/httpServerRequest.ts +3 -3
  225. package/src/internal/httpServerResponse.ts +2 -2
  226. package/src/internal/keyValueStore.ts +1 -1
  227. package/src/internal/multipart.ts +3 -3
  228. package/src/internal/worker.ts +6 -7
  229. package/src/internal/workerRunner.ts +3 -4
@@ -1,17 +1,19 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as AST from "@effect/schema/AST";
5
- import type * as Schema from "@effect/schema/Schema";
6
- import * as Chunk from "effect/Chunk";
7
4
  import * as Context from "effect/Context";
5
+ import * as HashMap from "effect/HashMap";
6
+ import * as HashSet from "effect/HashSet";
8
7
  import * as Option from "effect/Option";
9
- import type { Pipeable } from "effect/Pipeable";
10
- import * as HttpApiEndpoint from "./HttpApiEndpoint.js";
11
- import * as HttpApiGroup from "./HttpApiGroup.js";
12
- import * as HttpApiSchema from "./HttpApiSchema.js";
8
+ import { type Pipeable } from "effect/Pipeable";
9
+ import type * as Schema from "effect/Schema";
10
+ import * as AST from "effect/SchemaAST";
11
+ import type * as HttpApiEndpoint from "./HttpApiEndpoint.js";
12
+ import { HttpApiDecodeError } from "./HttpApiError.js";
13
+ import type * as HttpApiGroup from "./HttpApiGroup.js";
14
+ import type * as HttpApiMiddleware from "./HttpApiMiddleware.js";
13
15
  import type { HttpMethod } from "./HttpMethod.js";
14
- import type * as HttpRouter from "./HttpRouter.js";
16
+ import type { PathInput } from "./HttpRouter.js";
15
17
  /**
16
18
  * @since 1.0.0
17
19
  * @category type ids
@@ -26,167 +28,89 @@ export type TypeId = typeof TypeId;
26
28
  * @since 1.0.0
27
29
  * @category guards
28
30
  */
29
- export declare const isHttpApi: (u: unknown) => u is HttpApi<any, any>;
31
+ export declare const isHttpApi: (u: unknown) => u is HttpApi.Any;
30
32
  /**
31
- * An `HttpApi` represents a collection of `HttpApiGroup`s. You can use an `HttpApi` to
32
- * represent your entire domain.
33
+ * An `HttpApi` is a collection of `HttpApiEndpoint`s. You can use an `HttpApi` to
34
+ * represent a portion of your domain.
35
+ *
36
+ * The endpoints can be implemented later using the `HttpApiBuilder.make` api.
33
37
  *
34
38
  * @since 1.0.0
35
39
  * @category models
36
40
  */
37
- export interface HttpApi<out Groups extends HttpApiGroup.HttpApiGroup.Any = never, in out Error = never, out ErrorR = never> extends Pipeable {
41
+ export interface HttpApi<out Groups extends HttpApiGroup.HttpApiGroup.Any = never, in out E = never, out R = never> extends Pipeable {
38
42
  new (_: never): {};
39
43
  readonly [TypeId]: TypeId;
40
- readonly groups: Chunk.Chunk<Groups>;
41
- readonly errorSchema: Schema.Schema<Error, unknown, ErrorR>;
44
+ readonly groups: HashMap.HashMap<string, Groups>;
42
45
  readonly annotations: Context.Context<never>;
43
- }
44
- /**
45
- * @since 1.0.0
46
- * @category tags
47
- */
48
- export declare const HttpApi: Context.Tag<HttpApi.Service, HttpApi.Any>;
49
- /**
50
- * @since 1.0.0
51
- * @category models
52
- */
53
- export declare namespace HttpApi {
46
+ readonly errorSchema: Schema.Schema<E, unknown, R>;
47
+ readonly middlewares: HashSet.HashSet<HttpApiMiddleware.TagClassAny>;
54
48
  /**
55
- * @since 1.0.0
56
- * @category models
57
- */
58
- interface Service {
59
- readonly _: unique symbol;
60
- }
61
- /**
62
- * @since 1.0.0
63
- * @category models
49
+ * Add an endpoint to the `HttpApi`.
64
50
  */
65
- interface Any extends Pipeable {
66
- new (_: never): {};
67
- readonly [TypeId]: TypeId;
68
- readonly groups: Chunk.Chunk<HttpApiGroup.HttpApiGroup.Any>;
69
- readonly errorSchema: Schema.Schema.All;
70
- readonly annotations: Context.Context<never>;
71
- }
51
+ add<A extends HttpApiGroup.HttpApiGroup.Any>(group: A): HttpApi<Groups | A, E, R>;
72
52
  /**
73
- * @since 1.0.0
74
- * @category models
53
+ * Add an global error to the `HttpApi`.
75
54
  */
76
- type Context<A> = A extends HttpApi<infer _Groups, infer _ApiError, infer _ApiErrorR> ? _ApiErrorR | HttpApiGroup.HttpApiGroup.Context<_Groups> : never;
77
- }
78
- /**
79
- * An empty `HttpApi`. You can use this to start building your `HttpApi`.
80
- *
81
- * You can add groups to this `HttpApi` using the `addGroup` function.
82
- *
83
- * @since 1.0.0
84
- * @category constructors
85
- */
86
- export declare const empty: HttpApi;
87
- /**
88
- * Add a `HttpApiGroup` to an `HttpApi`.
89
- *
90
- * @since 1.0.0
91
- * @category constructors
92
- */
93
- export declare const addGroup: {
55
+ addError<A, I, RX>(schema: Schema.Schema<A, I, RX>, annotations?: {
56
+ readonly status?: number | undefined;
57
+ }): HttpApi<Groups, E | A, R | RX>;
94
58
  /**
95
- * Add a `HttpApiGroup` to an `HttpApi`.
96
- *
97
- * @since 1.0.0
98
- * @category constructors
59
+ * Prefix all endpoints in the `HttpApi`.
99
60
  */
100
- <Group extends HttpApiGroup.HttpApiGroup.Any>(group: Group): <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, ErrorR>(self: HttpApi<Groups, Error, ErrorR>) => HttpApi<Groups | Group, Error, ErrorR>;
61
+ prefix(prefix: PathInput): HttpApi<Groups, E, R>;
101
62
  /**
102
- * Add a `HttpApiGroup` to an `HttpApi`.
103
- *
104
- * @since 1.0.0
105
- * @category constructors
63
+ * Add a middleware to a `HttpApi`. It will be applied to all endpoints in the
64
+ * `HttpApi`.
106
65
  */
107
- <Group extends HttpApiGroup.HttpApiGroup.Any>(path: HttpRouter.PathInput, group: Group): <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, ErrorR>(self: HttpApi<Groups, Error, ErrorR>) => HttpApi<Groups | Group, Error, ErrorR>;
66
+ middleware<I extends HttpApiMiddleware.HttpApiMiddleware.AnyId, S>(middleware: Context.Tag<I, S>): HttpApi<Groups, E | HttpApiMiddleware.HttpApiMiddleware.Error<I>, R | I | HttpApiMiddleware.HttpApiMiddleware.ErrorContext<I>>;
108
67
  /**
109
- * Add a `HttpApiGroup` to an `HttpApi`.
110
- *
111
- * @since 1.0.0
112
- * @category constructors
68
+ * Annotate the `HttpApi`.
113
69
  */
114
- <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, ErrorR, Group extends HttpApiGroup.HttpApiGroup.Any>(self: HttpApi<Groups, Error, ErrorR>, group: Group): HttpApi<Groups | Group, Error, ErrorR>;
70
+ annotate<I, S>(tag: Context.Tag<I, S>, value: S): HttpApi<Groups, E, R>;
115
71
  /**
116
- * Add a `HttpApiGroup` to an `HttpApi`.
117
- *
118
- * @since 1.0.0
119
- * @category constructors
72
+ * Annotate the `HttpApi` with a Context.
120
73
  */
121
- <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, ErrorR, Group extends HttpApiGroup.HttpApiGroup.Any>(self: HttpApi<Groups, Error, ErrorR>, path: HttpRouter.PathInput, group: Group): HttpApi<Groups | Group, Error, ErrorR>;
122
- };
74
+ annotateContext<I>(context: Context.Context<I>): HttpApi<Groups, E, R>;
75
+ }
76
+ declare const Api_base: Context.TagClass<Api, "@effect/platform/HttpApi/Api", {
77
+ readonly api: HttpApi<HttpApiGroup.HttpApiGroup.AnyWithProps>;
78
+ readonly context: Context.Context<never>;
79
+ }>;
123
80
  /**
124
- * Add an error schema to an `HttpApi`, which is shared by all endpoints in the
125
- * `HttpApi`.
126
- *
127
- * Useful for adding error types from middleware or other shared error types.
128
- *
129
81
  * @since 1.0.0
130
- * @category errors
82
+ * @category tags
131
83
  */
132
- export declare const addError: {
133
- /**
134
- * Add an error schema to an `HttpApi`, which is shared by all endpoints in the
135
- * `HttpApi`.
136
- *
137
- * Useful for adding error types from middleware or other shared error types.
138
- *
139
- * @since 1.0.0
140
- * @category errors
141
- */
142
- <A, I, R>(schema: Schema.Schema<A, I, R>, annotations?: {
143
- readonly status?: number | undefined;
144
- }): <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, ErrorR>(self: HttpApi<Groups, Error, ErrorR>) => HttpApi<Groups, Error | A, ErrorR | R>;
145
- /**
146
- * Add an error schema to an `HttpApi`, which is shared by all endpoints in the
147
- * `HttpApi`.
148
- *
149
- * Useful for adding error types from middleware or other shared error types.
150
- *
151
- * @since 1.0.0
152
- * @category errors
153
- */
154
- <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, ErrorR, A, I, R>(self: HttpApi<Groups, Error, ErrorR>, schema: Schema.Schema<A, I, R>, annotations?: {
155
- readonly status?: number | undefined;
156
- }): HttpApi<Groups, Error | A, ErrorR | R>;
157
- };
84
+ export declare class Api extends Api_base {
85
+ }
158
86
  /**
159
87
  * @since 1.0.0
160
- * @category annotations
88
+ * @category models
161
89
  */
162
- export declare const annotateMerge: {
90
+ export declare namespace HttpApi {
163
91
  /**
164
92
  * @since 1.0.0
165
- * @category annotations
93
+ * @category models
166
94
  */
167
- <I>(context: Context.Context<I>): <A extends HttpApi.Any>(self: A) => A;
95
+ interface Any {
96
+ readonly [TypeId]: TypeId;
97
+ }
168
98
  /**
169
99
  * @since 1.0.0
170
- * @category annotations
100
+ * @category models
171
101
  */
172
- <A extends HttpApi.Any, I>(self: A, context: Context.Context<I>): A;
173
- };
102
+ type AnyWithProps = HttpApi<HttpApiGroup.HttpApiGroup.AnyWithProps, any, any>;
103
+ }
174
104
  /**
105
+ * An `HttpApi` is a collection of `HttpApiEndpoint`s. You can use an `HttpApi` to
106
+ * represent a portion of your domain.
107
+ *
108
+ * The endpoints can be implemented later using the `HttpApiBuilder.make` api.
109
+ *
175
110
  * @since 1.0.0
176
- * @category annotations
111
+ * @category constructors
177
112
  */
178
- export declare const annotate: {
179
- /**
180
- * @since 1.0.0
181
- * @category annotations
182
- */
183
- <I, S>(tag: Context.Tag<I, S>, value: S): <A extends HttpApi.Any>(self: A) => A;
184
- /**
185
- * @since 1.0.0
186
- * @category annotations
187
- */
188
- <A extends HttpApi.Any, I, S>(self: A, tag: Context.Tag<I, S>, value: S): A;
189
- };
113
+ export declare const empty: HttpApi<never, HttpApiDecodeError>;
190
114
  /**
191
115
  * Extract metadata from an `HttpApi`, which can be used to generate documentation
192
116
  * or other tooling.
@@ -196,19 +120,19 @@ export declare const annotate: {
196
120
  * @since 1.0.0
197
121
  * @category reflection
198
122
  */
199
- export declare const reflect: <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, ErrorR>(self: HttpApi<Groups, Error, ErrorR>, options: {
123
+ export declare const reflect: <Groups extends HttpApiGroup.HttpApiGroup.Any, Error, R>(self: HttpApi<Groups, Error, R>, options: {
200
124
  readonly onGroup: (options: {
201
- readonly group: HttpApiGroup.HttpApiGroup<string, any>;
125
+ readonly group: HttpApiGroup.HttpApiGroup.AnyWithProps;
202
126
  readonly mergedAnnotations: Context.Context<never>;
203
127
  }) => void;
204
128
  readonly onEndpoint: (options: {
205
- readonly group: HttpApiGroup.HttpApiGroup<string, any>;
129
+ readonly group: HttpApiGroup.HttpApiGroup.AnyWithProps;
206
130
  readonly endpoint: HttpApiEndpoint.HttpApiEndpoint<string, HttpMethod>;
207
131
  readonly mergedAnnotations: Context.Context<never>;
208
- readonly successAST: Option.Option<AST.AST>;
209
- readonly successStatus: number;
210
- readonly successEncoding: HttpApiSchema.Encoding;
132
+ readonly middleware: HashSet.HashSet<HttpApiMiddleware.TagClassAny>;
133
+ readonly successes: ReadonlyMap<number, Option.Option<AST.AST>>;
211
134
  readonly errors: ReadonlyMap<number, Option.Option<AST.AST>>;
212
135
  }) => void;
213
136
  }) => void;
137
+ export {};
214
138
  //# sourceMappingURL=HttpApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpApi.d.ts","sourceRoot":"","sources":["../../src/HttpApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpApi.d.ts","sourceRoot":"","sources":["../../src/HttpApi.ts"],"names":[],"mappings":"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"}