@effect/platform 0.68.5 → 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,12 +1,13 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as AST from "@effect/schema/AST";
5
- import * as Schema from "@effect/schema/Schema";
6
4
  import * as Context from "effect/Context";
7
- import { dual } from "effect/Function";
5
+ import * as HashSet from "effect/HashSet";
8
6
  import * as Option from "effect/Option";
7
+ import * as Schema from "effect/Schema";
8
+ import * as AST from "effect/SchemaAST";
9
9
  import * as HttpApi from "./HttpApi.js";
10
+ import * as HttpApiMiddleware from "./HttpApiMiddleware.js";
10
11
  import * as HttpApiSchema from "./HttpApiSchema.js";
11
12
  import * as HttpMethod from "./HttpMethod.js";
12
13
  import * as JsonSchema from "./OpenApiJsonSchema.js";
@@ -39,12 +40,17 @@ export class License extends /*#__PURE__*/Context.Tag("@effect/platform/OpenApi/
39
40
  * @since 1.0.0
40
41
  * @category annotations
41
42
  */
42
- export class Security extends /*#__PURE__*/Context.Tag("@effect/platform/OpenApi/Security")() {}
43
+ export class ExternalDocs extends /*#__PURE__*/Context.Tag("@effect/platform/OpenApi/ExternalDocs")() {}
43
44
  /**
44
45
  * @since 1.0.0
45
46
  * @category annotations
46
47
  */
47
- export class ExternalDocs extends /*#__PURE__*/Context.Tag("@effect/platform/OpenApi/ExternalDocs")() {}
48
+ export class Servers extends /*#__PURE__*/Context.Tag("@effect/platform/OpenApi/Servers")() {}
49
+ /**
50
+ * @since 1.0.0
51
+ * @category annotations
52
+ */
53
+ export class Override extends /*#__PURE__*/Context.Tag("@effect/platform/OpenApi/Override")() {}
48
54
  /**
49
55
  * @since 1.0.0
50
56
  * @category annotations
@@ -66,31 +72,24 @@ export const annotations = annotations => {
66
72
  if (annotations.license !== undefined) {
67
73
  context = Context.add(context, License, annotations.license);
68
74
  }
69
- if (annotations.security !== undefined) {
70
- context = Context.add(context, Security, annotations.security);
71
- }
72
75
  if (annotations.externalDocs !== undefined) {
73
76
  context = Context.add(context, ExternalDocs, annotations.externalDocs);
74
77
  }
78
+ if (annotations.servers !== undefined) {
79
+ context = Context.add(context, Servers, annotations.servers);
80
+ }
81
+ if (annotations.override !== undefined) {
82
+ context = Context.add(context, Override, annotations.override);
83
+ }
75
84
  return context;
76
85
  };
77
- /**
78
- * @since 1.0.0
79
- * @category annotations
80
- */
81
- export const annotate = /*#__PURE__*/dual(2, (self, annotations_) => {
82
- const base = typeof self === "function" ? function () {} : self;
83
- Object.setPrototypeOf(base, Object.getPrototypeOf(self));
84
- const context = Context.merge(self.annotations, annotations(annotations_));
85
- return Object.assign(base, self, {
86
- annotations: context
87
- });
88
- });
89
86
  /**
90
87
  * @category constructors
91
88
  * @since 1.0.0
92
89
  */
93
- export const fromApi = api => {
90
+ export const fromApi = self => {
91
+ const api = self;
92
+ const jsonSchemaDefs = {};
94
93
  const spec = {
95
94
  openapi: "3.0.3",
96
95
  info: {
@@ -100,22 +99,24 @@ export const fromApi = api => {
100
99
  paths: {},
101
100
  tags: [],
102
101
  components: {
103
- schemas: {},
102
+ schemas: jsonSchemaDefs,
104
103
  securitySchemes: {}
105
104
  },
106
105
  security: []
107
106
  };
108
- const securityMap = new Map();
109
- let securityCount = 0;
110
- function registerSecurity(security) {
111
- if (securityMap.has(security)) {
112
- return securityMap.get(security);
107
+ function makeJsonSchemaOrRef(schema) {
108
+ return JsonSchema.makeWithDefs(schema, {
109
+ defs: jsonSchemaDefs,
110
+ defsPath: "#/components/schemas/"
111
+ });
112
+ }
113
+ function registerSecurity(tag, name, security) {
114
+ const id = `${tag.key}/${name}`;
115
+ if (spec.components.securitySchemes[id]) {
116
+ return id;
113
117
  }
114
- const count = securityCount++;
115
- const id = `${security._tag}${count === 0 ? "" : count}`;
116
118
  const scheme = makeSecurityScheme(security);
117
119
  spec.components.securitySchemes[id] = scheme;
118
- securityMap.set(security, id);
119
120
  return id;
120
121
  }
121
122
  Option.map(Context.getOption(api.annotations, Description), description => {
@@ -124,10 +125,22 @@ export const fromApi = api => {
124
125
  Option.map(Context.getOption(api.annotations, License), license => {
125
126
  spec.info.license = license;
126
127
  });
127
- Option.map(Context.getOption(api.annotations, Security), apiSecurity => {
128
- spec.security.push({
129
- [registerSecurity(apiSecurity)]: []
130
- });
128
+ Option.map(Context.getOption(api.annotations, Servers), servers => {
129
+ spec.servers = servers;
130
+ });
131
+ Option.map(Context.getOption(api.annotations, Override), override => {
132
+ Object.assign(spec, override);
133
+ });
134
+ HashSet.forEach(api.middlewares, middleware => {
135
+ if (!HttpApiMiddleware.isSecurity(middleware)) {
136
+ return;
137
+ }
138
+ for (const [name, security] of Object.entries(middleware.security)) {
139
+ const id = registerSecurity(middleware, name, security);
140
+ spec.security.push({
141
+ [id]: []
142
+ });
143
+ }
131
144
  });
132
145
  HttpApi.reflect(api, {
133
146
  onGroup({
@@ -142,29 +155,26 @@ export const fromApi = api => {
142
155
  Option.map(Context.getOption(group.annotations, ExternalDocs), externalDocs => {
143
156
  tag.externalDocs = externalDocs;
144
157
  });
158
+ Option.map(Context.getOption(group.annotations, Override), override => {
159
+ Object.assign(tag, override);
160
+ });
145
161
  spec.tags.push(tag);
146
162
  },
147
163
  onEndpoint({
148
164
  endpoint,
149
165
  errors,
150
166
  group,
151
- mergedAnnotations,
152
- successAST,
153
- successEncoding,
154
- successStatus
167
+ middleware,
168
+ successes
155
169
  }) {
156
170
  const path = endpoint.path.replace(/:(\w+)[^/]*/g, "{$1}");
157
171
  const method = endpoint.method.toLowerCase();
158
172
  const op = {
159
173
  tags: [Context.getOrElse(group.annotations, Title, () => group.identifier)],
160
- operationId: Context.getOrElse(endpoint.annotations, Identifier, () => `${group.identifier}.${endpoint.name}`),
174
+ operationId: Context.getOrElse(endpoint.annotations, Identifier, () => group.topLevel ? endpoint.name : `${group.identifier}.${endpoint.name}`),
161
175
  parameters: [],
162
176
  security: [],
163
- responses: {
164
- [successStatus]: {
165
- description: Option.getOrElse(getDescriptionOrIdentifier(successAST), () => "Success")
166
- }
167
- }
177
+ responses: {}
168
178
  };
169
179
  Option.map(Context.getOption(endpoint.annotations, Description), description => {
170
180
  op.description = description;
@@ -172,30 +182,42 @@ export const fromApi = api => {
172
182
  Option.map(Context.getOption(endpoint.annotations, ExternalDocs), externalDocs => {
173
183
  op.externalDocs = externalDocs;
174
184
  });
175
- Option.map(Context.getOption(mergedAnnotations, Security), apiSecurity => {
176
- op.security.push({
177
- [registerSecurity(apiSecurity)]: []
178
- });
185
+ HashSet.forEach(middleware, middleware => {
186
+ if (!HttpApiMiddleware.isSecurity(middleware)) {
187
+ return;
188
+ }
189
+ for (const [name, security] of Object.entries(middleware.security)) {
190
+ const id = registerSecurity(middleware, name, security);
191
+ op.security.push({
192
+ [id]: []
193
+ });
194
+ }
179
195
  });
180
196
  endpoint.payloadSchema.pipe(Option.filter(() => HttpMethod.hasBody(endpoint.method)), Option.map(schema => {
181
197
  op.requestBody = {
182
198
  content: {
183
199
  [HttpApiSchema.getMultipart(schema.ast) ? "multipart/form-data" : "application/json"]: {
184
- schema: JsonSchema.make(schema)
200
+ schema: makeJsonSchemaOrRef(schema)
185
201
  }
186
202
  },
187
203
  required: true
188
204
  };
189
205
  }));
190
- successAST.pipe(Option.map(ast => {
191
- op.responses[successStatus].content = {
192
- [successEncoding.contentType]: {
193
- schema: JsonSchema.make(Schema.make(ast))
194
- }
206
+ for (const [status, ast] of successes) {
207
+ if (op.responses[status]) continue;
208
+ op.responses[status] = {
209
+ description: Option.getOrElse(getDescriptionOrIdentifier(ast), () => "Success")
195
210
  };
196
- }));
211
+ ast.pipe(Option.filter(ast => !HttpApiSchema.getEmptyDecodeable(ast)), Option.map(ast => {
212
+ op.responses[status].content = {
213
+ "application/json": {
214
+ schema: makeJsonSchemaOrRef(Schema.make(ast))
215
+ }
216
+ };
217
+ }));
218
+ }
197
219
  if (Option.isSome(endpoint.pathSchema)) {
198
- const schema = JsonSchema.make(endpoint.pathSchema.value);
220
+ const schema = makeJsonSchemaOrRef(endpoint.pathSchema.value);
199
221
  if ("properties" in schema) {
200
222
  Object.entries(schema.properties).forEach(([name, jsonSchema]) => {
201
223
  op.parameters.push({
@@ -208,7 +230,7 @@ export const fromApi = api => {
208
230
  }
209
231
  }
210
232
  if (!HttpMethod.hasBody(endpoint.method) && Option.isSome(endpoint.payloadSchema)) {
211
- const schema = JsonSchema.make(endpoint.payloadSchema.value);
233
+ const schema = makeJsonSchemaOrRef(endpoint.payloadSchema.value);
212
234
  if ("properties" in schema) {
213
235
  Object.entries(schema.properties).forEach(([name, jsonSchema]) => {
214
236
  op.parameters.push({
@@ -221,7 +243,7 @@ export const fromApi = api => {
221
243
  }
222
244
  }
223
245
  if (Option.isSome(endpoint.headersSchema)) {
224
- const schema = JsonSchema.make(endpoint.headersSchema.value);
246
+ const schema = makeJsonSchemaOrRef(endpoint.headersSchema.value);
225
247
  if ("properties" in schema) {
226
248
  Object.entries(schema.properties).forEach(([name, jsonSchema]) => {
227
249
  op.parameters.push({
@@ -233,6 +255,19 @@ export const fromApi = api => {
233
255
  });
234
256
  }
235
257
  }
258
+ if (Option.isSome(endpoint.urlParamsSchema)) {
259
+ const schema = makeJsonSchemaOrRef(endpoint.urlParamsSchema.value);
260
+ if ("properties" in schema) {
261
+ Object.entries(schema.properties).forEach(([name, jsonSchema]) => {
262
+ op.parameters.push({
263
+ name,
264
+ in: "query",
265
+ schema: jsonSchema,
266
+ required: schema.required.includes(name)
267
+ });
268
+ });
269
+ }
270
+ }
236
271
  for (const [status, ast] of errors) {
237
272
  if (op.responses[status]) continue;
238
273
  op.responses[status] = {
@@ -241,7 +276,7 @@ export const fromApi = api => {
241
276
  ast.pipe(Option.filter(ast => !HttpApiSchema.getEmptyDecodeable(ast)), Option.map(ast => {
242
277
  op.responses[status].content = {
243
278
  "application/json": {
244
- schema: JsonSchema.make(Schema.make(ast))
279
+ schema: makeJsonSchemaOrRef(Schema.make(ast))
245
280
  }
246
281
  };
247
282
  }));
@@ -249,6 +284,9 @@ export const fromApi = api => {
249
284
  if (!spec.paths[path]) {
250
285
  spec.paths[path] = {};
251
286
  }
287
+ Option.map(Context.getOption(endpoint.annotations, Override), override => {
288
+ Object.assign(op, override);
289
+ });
252
290
  spec.paths[path][method] = op;
253
291
  }
254
292
  });
@@ -1 +1 @@
1
- {"version":3,"file":"OpenApi.js","names":["AST","Schema","Context","dual","Option","HttpApi","HttpApiSchema","HttpMethod","JsonSchema","Identifier","Tag","Title","Version","Description","License","Security","ExternalDocs","annotations","context","empty","identifier","undefined","add","title","description","version","license","security","externalDocs","annotate","self","annotations_","base","Object","setPrototypeOf","getPrototypeOf","merge","assign","fromApi","api","spec","openapi","info","getOrElse","paths","tags","components","schemas","securitySchemes","securityMap","Map","securityCount","registerSecurity","has","get","count","id","_tag","scheme","makeSecurityScheme","set","map","getOption","apiSecurity","push","reflect","onGroup","group","tag","name","onEndpoint","endpoint","errors","mergedAnnotations","successAST","successEncoding","successStatus","path","replace","method","toLowerCase","op","operationId","parameters","responses","getDescriptionOrIdentifier","payloadSchema","pipe","filter","hasBody","schema","requestBody","content","getMultipart","ast","make","required","contentType","isSome","pathSchema","value","entries","properties","forEach","jsonSchema","in","includes","headersSchema","status","getEmptyDecodeable","meta","type","key","to","flatMapNullable","DescriptionAnnotationId","IdentifierAnnotationId"],"sources":["../../src/OpenApi.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpenApi.js","names":["Context","HashSet","Option","Schema","AST","HttpApi","HttpApiMiddleware","HttpApiSchema","HttpMethod","JsonSchema","Identifier","Tag","Title","Version","Description","License","ExternalDocs","Servers","Override","annotations","context","empty","identifier","undefined","add","title","description","version","license","externalDocs","servers","override","fromApi","self","api","jsonSchemaDefs","spec","openapi","info","getOrElse","paths","tags","components","schemas","securitySchemes","security","makeJsonSchemaOrRef","schema","makeWithDefs","defs","defsPath","registerSecurity","tag","name","id","key","scheme","makeSecurityScheme","map","getOption","Object","assign","forEach","middlewares","middleware","isSecurity","entries","push","reflect","onGroup","group","onEndpoint","endpoint","errors","successes","path","replace","method","toLowerCase","op","operationId","topLevel","parameters","responses","payloadSchema","pipe","filter","hasBody","requestBody","content","getMultipart","ast","required","status","getDescriptionOrIdentifier","getEmptyDecodeable","make","isSome","pathSchema","value","properties","jsonSchema","in","includes","headersSchema","urlParamsSchema","meta","_tag","type","to","flatMapNullable","DescriptionAnnotationId","IdentifierAnnotationId"],"sources":["../../src/OpenApi.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,29 +1,42 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as AST from "@effect/schema/AST";
5
4
  import * as Arr from "effect/Array";
6
5
  import * as Option from "effect/Option";
7
6
  import * as Predicate from "effect/Predicate";
8
7
  import * as Record from "effect/Record";
8
+ import * as AST from "effect/SchemaAST";
9
9
  /**
10
10
  * @category encoding
11
11
  * @since 1.0.0
12
12
  */
13
13
  export const make = schema => {
14
14
  const $defs = {};
15
- const out = go(schema.ast, $defs, true, []);
16
- // clean up self-referencing entries
17
- for (const id in $defs) {
18
- if ($defs[id]["$ref"] === get$ref(id)) {
19
- delete $defs[id];
20
- }
21
- }
15
+ const out = makeWithDefs(schema, {
16
+ defs: $defs
17
+ });
22
18
  if (!Record.isEmptyRecord($defs)) {
23
19
  out.$defs = $defs;
24
20
  }
25
21
  return out;
26
22
  };
23
+ /**
24
+ * @category encoding
25
+ * @since 1.0.0
26
+ */
27
+ export const makeWithDefs = (schema, options) => {
28
+ const defsPath = options.defsPath ?? "#/$defs/";
29
+ const getRef = id => `${defsPath}${id}`;
30
+ const out = go(schema.ast, options.defs, true, [], {
31
+ getRef
32
+ });
33
+ for (const id in options.defs) {
34
+ if (options.defs[id]["$ref"] === getRef(id)) {
35
+ delete options.defs[id];
36
+ }
37
+ }
38
+ return out;
39
+ };
27
40
  const constAny = {
28
41
  $id: "/schemas/any"
29
42
  };
@@ -86,8 +99,6 @@ const pruneUndefinedKeyword = ps => {
86
99
  }
87
100
  }
88
101
  };
89
- const DEFINITION_PREFIX = "#/$defs/";
90
- const get$ref = id => `${DEFINITION_PREFIX}${id}`;
91
102
  const getRefinementInnerTransformation = ast => {
92
103
  switch (ast.from._tag) {
93
104
  case "Transformation":
@@ -103,11 +114,11 @@ const getRefinementInnerTransformation = ast => {
103
114
  }
104
115
  }
105
116
  };
106
- const isParseJsonTransformation = ast => ast.annotations[AST.TypeAnnotationId] === ParseJsonTypeId;
117
+ const isParseJsonTransformation = ast => ast._tag === "Transformation" && ast.from.annotations[AST.SchemaIdAnnotationId] === AST.ParseJsonSchemaId;
107
118
  const isOverrideAnnotation = jsonSchema => {
108
119
  return "type" in jsonSchema || "oneOf" in jsonSchema || "anyOf" in jsonSchema || "const" in jsonSchema || "enum" in jsonSchema || "$ref" in jsonSchema;
109
120
  };
110
- const go = (ast, $defs, handleIdentifier, path) => {
121
+ const go = (ast, $defs, handleIdentifier, path, options) => {
111
122
  const hook = AST.getJSONSchemaAnnotation(ast);
112
123
  if (Option.isSome(hook)) {
113
124
  const handler = hook.value;
@@ -116,7 +127,7 @@ const go = (ast, $defs, handleIdentifier, path) => {
116
127
  if (t === undefined) {
117
128
  try {
118
129
  return {
119
- ...go(ast.from, $defs, true, path),
130
+ ...go(ast.from, $defs, true, path, options),
120
131
  ...getJsonSchemaAnnotations(ast),
121
132
  ...handler
122
133
  };
@@ -128,35 +139,40 @@ const go = (ast, $defs, handleIdentifier, path) => {
128
139
  }
129
140
  } else if (!isOverrideAnnotation(handler)) {
130
141
  return {
131
- ...go(t, $defs, true, path),
142
+ ...go(t, $defs, true, path, options),
132
143
  ...getJsonSchemaAnnotations(ast)
133
144
  };
134
145
  }
135
146
  }
136
147
  return handler;
137
148
  }
138
- const surrogate = getSurrogateAnnotation(ast);
139
- if (Option.isSome(surrogate)) {
140
- return {
141
- ...(ast._tag === "Transformation" ? getJsonSchemaAnnotations(ast.to) : {}),
142
- ...go(surrogate.value, $defs, handleIdentifier, path),
143
- ...getJsonSchemaAnnotations(ast)
144
- };
145
- }
146
- if (handleIdentifier && !AST.isTransformation(ast) && !AST.isRefinement(ast)) {
147
- const identifier = getJSONIdentifier(ast);
149
+ const surrogate = AST.getSurrogateAnnotation(ast);
150
+ if (handleIdentifier && !AST.isRefinement(ast)) {
151
+ const identifier = AST.getJSONIdentifier(Option.isSome(surrogate) ? {
152
+ annotations: {
153
+ ...(ast._tag === "Transformation" ? ast.to.annotations : {}),
154
+ ...ast.annotations
155
+ }
156
+ } : ast);
148
157
  if (Option.isSome(identifier)) {
149
158
  const id = identifier.value;
150
159
  const out = {
151
- $ref: get$ref(id)
160
+ $ref: options.getRef(id)
152
161
  };
153
162
  if (!Record.has($defs, id)) {
154
163
  $defs[id] = out;
155
- $defs[id] = go(ast, $defs, false, path);
164
+ $defs[id] = go(ast, $defs, false, path, options);
156
165
  }
157
166
  return out;
158
167
  }
159
168
  }
169
+ if (Option.isSome(surrogate)) {
170
+ return {
171
+ ...(ast._tag === "Transformation" ? getJsonSchemaAnnotations(ast.to) : {}),
172
+ ...go(surrogate.value, $defs, handleIdentifier, path, options),
173
+ ...getJsonSchemaAnnotations(ast)
174
+ };
175
+ }
160
176
  switch (ast._tag) {
161
177
  case "Declaration":
162
178
  throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
@@ -224,11 +240,11 @@ const go = (ast, $defs, handleIdentifier, path) => {
224
240
  case "TupleType":
225
241
  {
226
242
  const elements = ast.elements.map((e, i) => ({
227
- ...go(e.type, $defs, true, path.concat(i)),
243
+ ...go(e.type, $defs, true, path.concat(i), options),
228
244
  ...getJsonSchemaAnnotations(e)
229
245
  }));
230
246
  const rest = ast.rest.map(annotatedAST => ({
231
- ...go(annotatedAST.type, $defs, true, path),
247
+ ...go(annotatedAST.type, $defs, true, path, options),
232
248
  ...getJsonSchemaAnnotations(annotatedAST)
233
249
  }));
234
250
  const output = {
@@ -287,12 +303,12 @@ const go = (ast, $defs, handleIdentifier, path) => {
287
303
  switch (parameter._tag) {
288
304
  case "StringKeyword":
289
305
  {
290
- patternProperties = go(is.type, $defs, true, path);
306
+ patternProperties = go(is.type, $defs, true, path, options);
291
307
  break;
292
308
  }
293
309
  case "TemplateLiteral":
294
310
  {
295
- patternProperties = go(is.type, $defs, true, path);
311
+ patternProperties = go(is.type, $defs, true, path, options);
296
312
  propertyNames = {
297
313
  type: "string",
298
314
  pattern: AST.getTemplateLiteralRegExp(parameter).source
@@ -301,8 +317,8 @@ const go = (ast, $defs, handleIdentifier, path) => {
301
317
  }
302
318
  case "Refinement":
303
319
  {
304
- patternProperties = go(is.type, $defs, true, path);
305
- propertyNames = go(parameter, $defs, true, path);
320
+ patternProperties = go(is.type, $defs, true, path, options);
321
+ propertyNames = go(parameter, $defs, true, path, options);
306
322
  break;
307
323
  }
308
324
  case "SymbolKeyword":
@@ -324,7 +340,7 @@ const go = (ast, $defs, handleIdentifier, path) => {
324
340
  if (Predicate.isString(name)) {
325
341
  const pruned = pruneUndefinedKeyword(ps);
326
342
  output.properties[name] = {
327
- ...go(pruned ? pruned : ps.type, $defs, true, path.concat(ps.name)),
343
+ ...go(pruned ? pruned : ps.type, $defs, true, path.concat(ps.name), options),
328
344
  ...getJsonSchemaAnnotations(ps)
329
345
  };
330
346
  // ---------------------------------------------
@@ -359,7 +375,7 @@ const go = (ast, $defs, handleIdentifier, path) => {
359
375
  const enums = [];
360
376
  const anyOf = [];
361
377
  for (const type of ast.types) {
362
- const schema = go(type, $defs, true, path);
378
+ const schema = go(type, $defs, true, path, options);
363
379
  if ("enum" in schema) {
364
380
  if (Object.keys(schema).length > 1) {
365
381
  anyOf.push(schema);
@@ -405,7 +421,7 @@ const go = (ast, $defs, handleIdentifier, path) => {
405
421
  if (AST.encodedBoundAST(ast) === ast) {
406
422
  throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
407
423
  }
408
- return go(ast.from, $defs, true, path);
424
+ return go(ast.from, $defs, true, path, options);
409
425
  }
410
426
  case "TemplateLiteral":
411
427
  {
@@ -419,12 +435,12 @@ const go = (ast, $defs, handleIdentifier, path) => {
419
435
  }
420
436
  case "Suspend":
421
437
  {
422
- const identifier = Option.orElse(getJSONIdentifier(ast), () => getJSONIdentifier(ast.f()));
438
+ const identifier = Option.orElse(AST.getJSONIdentifier(ast), () => AST.getJSONIdentifier(ast.f()));
423
439
  if (Option.isNone(identifier)) {
424
440
  throw new Error(getJSONSchemaMissingIdentifierAnnotationErrorMessage(path, ast));
425
441
  }
426
442
  return {
427
- ...go(ast.f(), $defs, true, path),
443
+ ...go(ast.f(), $defs, true, path, options),
428
444
  ...getJsonSchemaAnnotations(ast)
429
445
  };
430
446
  }
@@ -434,17 +450,17 @@ const go = (ast, $defs, handleIdentifier, path) => {
434
450
  // the 'to' side of the AST. This approach prevents the generation of useless schemas
435
451
  // derived from the 'from' side (type: string), ensuring the output matches the intended
436
452
  // complex schema type.
437
- if (isParseJsonTransformation(ast.from)) {
453
+ if (isParseJsonTransformation(ast)) {
438
454
  return {
439
455
  type: "string",
440
456
  contentMediaType: "application/json",
441
- contentSchema: go(ast.to, $defs, true, path),
457
+ contentSchema: go(ast.to, $defs, true, path, options),
442
458
  ...getJsonSchemaAnnotations(ast)
443
459
  };
444
460
  }
445
461
  return {
446
462
  ...getASTJsonSchemaAnnotations(ast.to),
447
- ...go(ast.from, $defs, true, path),
463
+ ...go(ast.from, $defs, true, path, options),
448
464
  ...getJsonSchemaAnnotations(ast)
449
465
  };
450
466
  }
@@ -473,10 +489,4 @@ const formatPathKey = key => `[${formatPropertyKey(key)}]`;
473
489
  const formatPath = path => isNonEmpty(path) ? path.map(formatPathKey).join("") : formatPathKey(path);
474
490
  const isNonEmpty = x => Array.isArray(x);
475
491
  const formatPropertyKey = name => typeof name === "string" ? JSON.stringify(name) : String(name);
476
- const ParseJsonTypeId = /*#__PURE__*/Symbol.for("@effect/schema/TypeId/ParseJson");
477
- const SurrogateAnnotationId = /*#__PURE__*/Symbol.for("@effect/schema/annotation/Surrogate");
478
- const JSONIdentifierAnnotationId = /*#__PURE__*/Symbol.for("@effect/schema/annotation/JSONIdentifier");
479
- const getSurrogateAnnotation = /*#__PURE__*/AST.getAnnotation(SurrogateAnnotationId);
480
- const getJSONIdentifierAnnotation = /*#__PURE__*/AST.getAnnotation(JSONIdentifierAnnotationId);
481
- const getJSONIdentifier = annotated => Option.orElse(getJSONIdentifierAnnotation(annotated), () => AST.getIdentifierAnnotation(annotated));
482
492
  //# sourceMappingURL=OpenApiJsonSchema.js.map