@effect/platform 0.68.6 → 0.69.1
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.
- package/HttpApiMiddleware/package.json +6 -0
- package/README.md +306 -233
- package/dist/cjs/Headers.js +7 -2
- package/dist/cjs/Headers.js.map +1 -1
- package/dist/cjs/HttpApi.js +90 -78
- package/dist/cjs/HttpApi.js.map +1 -1
- package/dist/cjs/HttpApiBuilder.js +245 -255
- package/dist/cjs/HttpApiBuilder.js.map +1 -1
- package/dist/cjs/HttpApiClient.js +64 -59
- package/dist/cjs/HttpApiClient.js.map +1 -1
- package/dist/cjs/HttpApiEndpoint.js +74 -109
- package/dist/cjs/HttpApiEndpoint.js.map +1 -1
- package/dist/cjs/HttpApiError.js +3 -4
- package/dist/cjs/HttpApiError.js.map +1 -1
- package/dist/cjs/HttpApiGroup.js +103 -100
- package/dist/cjs/HttpApiGroup.js.map +1 -1
- package/dist/cjs/HttpApiMiddleware.js +67 -0
- package/dist/cjs/HttpApiMiddleware.js.map +1 -0
- package/dist/cjs/HttpApiSchema.js +33 -7
- package/dist/cjs/HttpApiSchema.js.map +1 -1
- package/dist/cjs/HttpApiSecurity.js +2 -2
- package/dist/cjs/HttpApiSecurity.js.map +1 -1
- package/dist/cjs/HttpApiSwagger.js +3 -1
- package/dist/cjs/HttpApiSwagger.js.map +1 -1
- package/dist/cjs/HttpBody.js.map +1 -1
- package/dist/cjs/HttpIncomingMessage.js +5 -1
- package/dist/cjs/HttpIncomingMessage.js.map +1 -1
- package/dist/cjs/HttpServer.js +12 -1
- package/dist/cjs/HttpServer.js.map +1 -1
- package/dist/cjs/HttpServerRespondable.js +1 -1
- package/dist/cjs/HttpServerRespondable.js.map +1 -1
- package/dist/cjs/OpenApi.js +102 -63
- package/dist/cjs/OpenApi.js.map +1 -1
- package/dist/cjs/OpenApiJsonSchema.js +58 -47
- package/dist/cjs/OpenApiJsonSchema.js.map +1 -1
- package/dist/cjs/Transferable.js +2 -2
- package/dist/cjs/Transferable.js.map +1 -1
- package/dist/cjs/UrlParams.js +5 -1
- package/dist/cjs/UrlParams.js.map +1 -1
- package/dist/cjs/Worker.js.map +1 -1
- package/dist/cjs/WorkerError.js +1 -5
- package/dist/cjs/WorkerError.js.map +1 -1
- package/dist/cjs/WorkerRunner.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/httpBody.js +1 -1
- package/dist/cjs/internal/httpBody.js.map +1 -1
- package/dist/cjs/internal/httpClientRequest.js.map +1 -1
- package/dist/cjs/internal/httpClientResponse.js +1 -1
- package/dist/cjs/internal/httpClientResponse.js.map +1 -1
- package/dist/cjs/internal/httpRouter.js +1 -1
- package/dist/cjs/internal/httpRouter.js.map +1 -1
- package/dist/cjs/internal/httpServer.js +7 -1
- package/dist/cjs/internal/httpServer.js.map +1 -1
- package/dist/cjs/internal/httpServerRequest.js +1 -1
- package/dist/cjs/internal/httpServerRequest.js.map +1 -1
- package/dist/cjs/internal/httpServerResponse.js.map +1 -1
- package/dist/cjs/internal/keyValueStore.js +1 -1
- package/dist/cjs/internal/keyValueStore.js.map +1 -1
- package/dist/cjs/internal/multipart.js +1 -1
- package/dist/cjs/internal/multipart.js.map +1 -1
- package/dist/cjs/internal/worker.js +6 -7
- package/dist/cjs/internal/worker.js.map +1 -1
- package/dist/cjs/internal/workerRunner.js +3 -4
- package/dist/cjs/internal/workerRunner.js.map +1 -1
- package/dist/dts/Headers.d.ts +4 -6
- package/dist/dts/Headers.d.ts.map +1 -1
- package/dist/dts/HttpApi.d.ts +64 -140
- package/dist/dts/HttpApi.d.ts.map +1 -1
- package/dist/dts/HttpApiBuilder.d.ts +86 -167
- package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
- package/dist/dts/HttpApiClient.d.ts +34 -11
- package/dist/dts/HttpApiClient.d.ts.map +1 -1
- package/dist/dts/HttpApiEndpoint.d.ts +119 -273
- package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/dts/HttpApiError.d.ts +5 -2
- package/dist/dts/HttpApiError.d.ts.map +1 -1
- package/dist/dts/HttpApiGroup.d.ts +96 -194
- package/dist/dts/HttpApiGroup.d.ts.map +1 -1
- package/dist/dts/HttpApiMiddleware.d.ts +228 -0
- package/dist/dts/HttpApiMiddleware.d.ts.map +1 -0
- package/dist/dts/HttpApiSchema.d.ts +6 -2
- package/dist/dts/HttpApiSchema.d.ts.map +1 -1
- package/dist/dts/HttpApiSecurity.d.ts +1 -1
- package/dist/dts/HttpApiSecurity.d.ts.map +1 -1
- package/dist/dts/HttpApiSwagger.d.ts +2 -2
- package/dist/dts/HttpApiSwagger.d.ts.map +1 -1
- package/dist/dts/HttpBody.d.ts +2 -2
- package/dist/dts/HttpBody.d.ts.map +1 -1
- package/dist/dts/HttpClientRequest.d.ts +2 -2
- package/dist/dts/HttpClientRequest.d.ts.map +1 -1
- package/dist/dts/HttpClientResponse.d.ts +3 -3
- package/dist/dts/HttpClientResponse.d.ts.map +1 -1
- package/dist/dts/HttpIncomingMessage.d.ts +3 -3
- package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/dts/HttpRouter.d.ts +3 -3
- package/dist/dts/HttpRouter.d.ts.map +1 -1
- package/dist/dts/HttpServer.d.ts +15 -0
- package/dist/dts/HttpServer.d.ts.map +1 -1
- package/dist/dts/HttpServerRequest.d.ts +3 -3
- package/dist/dts/HttpServerRequest.d.ts.map +1 -1
- package/dist/dts/HttpServerRespondable.d.ts.map +1 -1
- package/dist/dts/HttpServerResponse.d.ts +2 -2
- package/dist/dts/HttpServerResponse.d.ts.map +1 -1
- package/dist/dts/KeyValueStore.d.ts +2 -2
- package/dist/dts/KeyValueStore.d.ts.map +1 -1
- package/dist/dts/Multipart.d.ts +3 -3
- package/dist/dts/Multipart.d.ts.map +1 -1
- package/dist/dts/OpenApi.d.ts +17 -39
- package/dist/dts/OpenApi.d.ts.map +1 -1
- package/dist/dts/OpenApiJsonSchema.d.ts +10 -5
- package/dist/dts/OpenApiJsonSchema.d.ts.map +1 -1
- package/dist/dts/Transferable.d.ts +4 -1
- package/dist/dts/Transferable.d.ts.map +1 -1
- package/dist/dts/UrlParams.d.ts +3 -6
- package/dist/dts/UrlParams.d.ts.map +1 -1
- package/dist/dts/Worker.d.ts +7 -8
- package/dist/dts/Worker.d.ts.map +1 -1
- package/dist/dts/WorkerError.d.ts +1 -1
- package/dist/dts/WorkerError.d.ts.map +1 -1
- package/dist/dts/WorkerRunner.d.ts +2 -3
- package/dist/dts/WorkerRunner.d.ts.map +1 -1
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/httpRouter.d.ts.map +1 -1
- package/dist/esm/Headers.js +7 -2
- package/dist/esm/Headers.js.map +1 -1
- package/dist/esm/HttpApi.js +88 -77
- package/dist/esm/HttpApi.js.map +1 -1
- package/dist/esm/HttpApiBuilder.js +238 -244
- package/dist/esm/HttpApiBuilder.js.map +1 -1
- package/dist/esm/HttpApiClient.js +64 -59
- package/dist/esm/HttpApiClient.js.map +1 -1
- package/dist/esm/HttpApiEndpoint.js +73 -106
- package/dist/esm/HttpApiEndpoint.js.map +1 -1
- package/dist/esm/HttpApiError.js +3 -4
- package/dist/esm/HttpApiError.js.map +1 -1
- package/dist/esm/HttpApiGroup.js +102 -99
- package/dist/esm/HttpApiGroup.js.map +1 -1
- package/dist/esm/HttpApiMiddleware.js +56 -0
- package/dist/esm/HttpApiMiddleware.js.map +1 -0
- package/dist/esm/HttpApiSchema.js +31 -5
- package/dist/esm/HttpApiSchema.js.map +1 -1
- package/dist/esm/HttpApiSecurity.js +1 -1
- package/dist/esm/HttpApiSecurity.js.map +1 -1
- package/dist/esm/HttpApiSwagger.js +4 -2
- package/dist/esm/HttpApiSwagger.js.map +1 -1
- package/dist/esm/HttpBody.js.map +1 -1
- package/dist/esm/HttpIncomingMessage.js +4 -1
- package/dist/esm/HttpIncomingMessage.js.map +1 -1
- package/dist/esm/HttpServer.js +11 -0
- package/dist/esm/HttpServer.js.map +1 -1
- package/dist/esm/HttpServerRespondable.js +1 -1
- package/dist/esm/HttpServerRespondable.js.map +1 -1
- package/dist/esm/OpenApi.js +97 -59
- package/dist/esm/OpenApi.js.map +1 -1
- package/dist/esm/OpenApiJsonSchema.js +56 -46
- package/dist/esm/OpenApiJsonSchema.js.map +1 -1
- package/dist/esm/Transferable.js +2 -2
- package/dist/esm/Transferable.js.map +1 -1
- package/dist/esm/UrlParams.js +4 -1
- package/dist/esm/UrlParams.js.map +1 -1
- package/dist/esm/Worker.js.map +1 -1
- package/dist/esm/WorkerError.js +1 -4
- package/dist/esm/WorkerError.js.map +1 -1
- package/dist/esm/WorkerRunner.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/httpBody.js +1 -1
- package/dist/esm/internal/httpBody.js.map +1 -1
- package/dist/esm/internal/httpClientRequest.js.map +1 -1
- package/dist/esm/internal/httpClientResponse.js +1 -1
- package/dist/esm/internal/httpClientResponse.js.map +1 -1
- package/dist/esm/internal/httpRouter.js +1 -1
- package/dist/esm/internal/httpRouter.js.map +1 -1
- package/dist/esm/internal/httpServer.js +6 -0
- package/dist/esm/internal/httpServer.js.map +1 -1
- package/dist/esm/internal/httpServerRequest.js +1 -1
- package/dist/esm/internal/httpServerRequest.js.map +1 -1
- package/dist/esm/internal/httpServerResponse.js.map +1 -1
- package/dist/esm/internal/keyValueStore.js +1 -1
- package/dist/esm/internal/keyValueStore.js.map +1 -1
- package/dist/esm/internal/multipart.js +1 -1
- package/dist/esm/internal/multipart.js.map +1 -1
- package/dist/esm/internal/worker.js +6 -7
- package/dist/esm/internal/worker.js.map +1 -1
- package/dist/esm/internal/workerRunner.js +3 -4
- package/dist/esm/internal/workerRunner.js.map +1 -1
- package/package.json +10 -3
- package/src/Headers.ts +12 -4
- package/src/HttpApi.ts +183 -258
- package/src/HttpApiBuilder.ts +534 -481
- package/src/HttpApiClient.ts +163 -112
- package/src/HttpApiEndpoint.ts +443 -564
- package/src/HttpApiError.ts +4 -6
- package/src/HttpApiGroup.ts +277 -325
- package/src/HttpApiMiddleware.ts +317 -0
- package/src/HttpApiSchema.ts +39 -2
- package/src/HttpApiSecurity.ts +1 -1
- package/src/HttpApiSwagger.ts +3 -3
- package/src/HttpBody.ts +2 -2
- package/src/HttpClientRequest.ts +2 -2
- package/src/HttpClientResponse.ts +3 -3
- package/src/HttpIncomingMessage.ts +3 -3
- package/src/HttpRouter.ts +3 -3
- package/src/HttpServer.ts +21 -0
- package/src/HttpServerRequest.ts +3 -3
- package/src/HttpServerRespondable.ts +1 -1
- package/src/HttpServerResponse.ts +2 -2
- package/src/KeyValueStore.ts +2 -2
- package/src/Multipart.ts +3 -3
- package/src/OpenApi.ts +113 -104
- package/src/OpenApiJsonSchema.ts +67 -53
- package/src/Transferable.ts +2 -2
- package/src/UrlParams.ts +3 -3
- package/src/Worker.ts +7 -8
- package/src/WorkerError.ts +1 -1
- package/src/WorkerRunner.ts +2 -3
- package/src/index.ts +5 -0
- package/src/internal/httpBody.ts +2 -2
- package/src/internal/httpClientRequest.ts +2 -2
- package/src/internal/httpClientResponse.ts +3 -3
- package/src/internal/httpRouter.ts +2 -2
- package/src/internal/httpServer.ts +13 -0
- package/src/internal/httpServerRequest.ts +3 -3
- package/src/internal/httpServerResponse.ts +2 -2
- package/src/internal/keyValueStore.ts +1 -1
- package/src/internal/multipart.ts +3 -3
- package/src/internal/worker.ts +6 -7
- package/src/internal/workerRunner.ts +3 -4
package/dist/esm/OpenApi.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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,
|
|
128
|
-
spec.
|
|
129
|
-
|
|
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
|
-
|
|
152
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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:
|
|
200
|
+
schema: makeJsonSchemaOrRef(schema)
|
|
185
201
|
}
|
|
186
202
|
},
|
|
187
203
|
required: true
|
|
188
204
|
};
|
|
189
205
|
}));
|
|
190
|
-
|
|
191
|
-
op.responses[
|
|
192
|
-
|
|
193
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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:
|
|
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
|
});
|
package/dist/esm/OpenApi.js.map
CHANGED
|
@@ -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 =
|
|
16
|
-
|
|
17
|
-
|
|
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.
|
|
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 (
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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:
|
|
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
|
|
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
|