express-zod-api 7.8.1 → 8.0.0-beta1
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/CHANGELOG.md +57 -0
- package/SECURITY.md +2 -1
- package/dist/client-helpers.js +1 -1
- package/dist/client-helpers.js.map +1 -1
- package/dist/depends-on-method.d.ts +2 -2
- package/dist/depends-on-method.js +2 -3
- package/dist/depends-on-method.js.map +1 -1
- package/dist/endpoint.d.ts +8 -4
- package/dist/endpoint.js +5 -1
- package/dist/endpoint.js.map +1 -1
- package/dist/endpoints-factory.d.ts +10 -9
- package/dist/endpoints-factory.js +2 -2
- package/dist/endpoints-factory.js.map +1 -1
- package/dist/logical-container.js +7 -6
- package/dist/logical-container.js.map +1 -1
- package/dist/middleware.d.ts +5 -5
- package/dist/middleware.js.map +1 -1
- package/dist/open-api-helpers.d.ts +6 -3
- package/dist/open-api-helpers.js +19 -12
- package/dist/open-api-helpers.js.map +1 -1
- package/dist/open-api.js +10 -9
- package/dist/open-api.js.map +1 -1
- package/dist/routing.js +1 -2
- package/dist/routing.js.map +1 -1
- package/dist/security.d.ts +39 -4
- package/dist/serve-static.d.ts +3 -2
- package/dist/serve-static.js +7 -0
- package/dist/serve-static.js.map +1 -1
- package/dist/startup-logo.js +1 -1
- package/dist-esm/client-helpers.js +1 -1
- package/dist-esm/client-helpers.js.map +1 -1
- package/dist-esm/depends-on-method.js +2 -3
- package/dist-esm/depends-on-method.js.map +1 -1
- package/dist-esm/endpoint.js +5 -1
- package/dist-esm/endpoint.js.map +1 -1
- package/dist-esm/endpoints-factory.js +2 -2
- package/dist-esm/endpoints-factory.js.map +1 -1
- package/dist-esm/logical-container.js +7 -6
- package/dist-esm/logical-container.js.map +1 -1
- package/dist-esm/middleware.js.map +1 -1
- package/dist-esm/open-api-helpers.js +17 -10
- package/dist-esm/open-api-helpers.js.map +1 -1
- package/dist-esm/open-api.js +11 -10
- package/dist-esm/open-api.js.map +1 -1
- package/dist-esm/package.json +1 -1
- package/dist-esm/routing.js +1 -2
- package/dist-esm/routing.js.map +1 -1
- package/dist-esm/serve-static.js +4 -0
- package/dist-esm/serve-static.js.map +1 -1
- package/dist-esm/startup-logo.js +1 -1
- package/package.json +14 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,64 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Version 8
|
|
4
|
+
|
|
5
|
+
### 8.0.0-beta1
|
|
6
|
+
|
|
7
|
+
- **Breaking**: Only the following Node versions are supported:
|
|
8
|
+
- 14.17.0 and higher,
|
|
9
|
+
- 16.10.0 and higher
|
|
10
|
+
- 18.0.0 and higher.
|
|
11
|
+
- `openapi3-ts` version is 3.0.2.
|
|
12
|
+
- Supporting `jest` (optional peer dependency) version 29.x.
|
|
13
|
+
|
|
3
14
|
## Version 7
|
|
4
15
|
|
|
16
|
+
### v7.9.1
|
|
17
|
+
|
|
18
|
+
- Minor refactoring in order to support the recently released Typescript 4.8.2.
|
|
19
|
+
|
|
20
|
+
### v7.9.0
|
|
21
|
+
|
|
22
|
+
- Feature #540, an addition to the [#523](#v770): OAuth2 authentication with scopes.
|
|
23
|
+
- Middlewares utilizing the OAuth2 authentication (via `security` property) can now specify the information on their
|
|
24
|
+
flows including scopes.
|
|
25
|
+
- Endpoints utilizing those middlewares can now specify their `scopes`.
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { createMiddleware, defaultEndpointsFactory, z } from "express-zod-api";
|
|
29
|
+
|
|
30
|
+
// example middleware
|
|
31
|
+
const myMiddleware = createMiddleware({
|
|
32
|
+
security: {
|
|
33
|
+
type: "oauth2",
|
|
34
|
+
flows: {
|
|
35
|
+
password: {
|
|
36
|
+
tokenUrl: "https://some.url",
|
|
37
|
+
scopes: {
|
|
38
|
+
read: "read something", // scope: description
|
|
39
|
+
write: "write something",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
input: z.object({}),
|
|
45
|
+
middleware: async () => ({
|
|
46
|
+
/* ... */
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// example endpoint
|
|
51
|
+
const myEndpoint = defaultEndpointsFactory.addMiddleware(myMiddleware).build({
|
|
52
|
+
scopes: ["write"], // <——
|
|
53
|
+
method: "post",
|
|
54
|
+
input: z.object({}),
|
|
55
|
+
output: z.object({}),
|
|
56
|
+
handler: async () => ({
|
|
57
|
+
/* ... */
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
5
62
|
### v7.8.1
|
|
6
63
|
|
|
7
64
|
- This version should fix the issue #551:
|
package/SECURITY.md
CHANGED
package/dist/client-helpers.js
CHANGED
|
@@ -56,7 +56,7 @@ const makeAnyPromise = () => exports.f.createTypeReferenceNode("Promise", [
|
|
|
56
56
|
exports.makeAnyPromise = makeAnyPromise;
|
|
57
57
|
const makePublicExtendedInterface = (name, extender, props) => exports.f.createInterfaceDeclaration(undefined, exports.exportModifier, name, undefined, extender, props);
|
|
58
58
|
exports.makePublicExtendedInterface = makePublicExtendedInterface;
|
|
59
|
-
const makeTypeParams = (params) => Object.keys(params).reduce((acc, name) => acc.concat(exports.f.createTypeParameterDeclaration(name, exports.f.createTypeReferenceNode(params[name]))), []);
|
|
59
|
+
const makeTypeParams = (params) => Object.keys(params).reduce((acc, name) => acc.concat(exports.f.createTypeParameterDeclaration([], name, exports.f.createTypeReferenceNode(params[name]))), []);
|
|
60
60
|
exports.makeTypeParams = makeTypeParams;
|
|
61
61
|
const makeImplementationCallFn = (params, args) => exports.f.createArrowFunction(undefined, undefined, params.map((key) => (0, exports.makeParam)(key)), undefined, undefined, exports.f.createCallExpression(exports.f.createPropertyAccessExpression(exports.f.createThis(), "implementation"), undefined, args));
|
|
62
62
|
exports.makeImplementationCallFn = makeImplementationCallFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-helpers.js","sourceRoot":"","sources":["../src/client-helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client-helpers.js","sourceRoot":"","sources":["../src/client-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import { Endpoint } from "./endpoint";
|
|
|
2
2
|
import { Method } from "./method";
|
|
3
3
|
export declare class DependsOnMethod {
|
|
4
4
|
readonly methods: {
|
|
5
|
-
[K in Method]?: Endpoint<any, any, any, K, any, any> | Endpoint<any, any, any, Method, any, any>;
|
|
5
|
+
[K in Method]?: Endpoint<any, any, any, K, any, any, any> | Endpoint<any, any, any, Method, any, any, any>;
|
|
6
6
|
};
|
|
7
7
|
constructor(methods: {
|
|
8
|
-
[K in Method]?: Endpoint<any, any, any, K, any, any> | Endpoint<any, any, any, Method, any, any>;
|
|
8
|
+
[K in Method]?: Endpoint<any, any, any, K, any, any, any> | Endpoint<any, any, any, Method, any, any, any>;
|
|
9
9
|
});
|
|
10
10
|
}
|
|
@@ -6,9 +6,8 @@ class DependsOnMethod {
|
|
|
6
6
|
constructor(methods) {
|
|
7
7
|
this.methods = methods;
|
|
8
8
|
Object.keys(methods).forEach((key) => {
|
|
9
|
-
var _a, _b;
|
|
10
9
|
if (key in methods) {
|
|
11
|
-
const endpointMethods =
|
|
10
|
+
const endpointMethods = methods[key]?.getMethods() || [];
|
|
12
11
|
if (!endpointMethods.includes(key)) {
|
|
13
12
|
throw new errors_1.DependsOnMethodError(`The endpoint assigned to the '${key}' parameter must have at least this method in its specification.\n` +
|
|
14
13
|
"This error should prevent mistakes during the development process.\n" +
|
|
@@ -16,7 +15,7 @@ class DependsOnMethod {
|
|
|
16
15
|
`new ${this.constructor.name}({\n` +
|
|
17
16
|
` ${key}: endpointsFactory.build({\n` +
|
|
18
17
|
` methods: ['${key}', ` +
|
|
19
|
-
((
|
|
18
|
+
((methods[key]?.getMethods() || [])
|
|
20
19
|
.map((m) => `'${m}'`)
|
|
21
20
|
.join(", ") || "...") +
|
|
22
21
|
"]\n" +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depends-on-method.js","sourceRoot":"","sources":["../src/depends-on-method.ts"],"names":[],"mappings":";;;AACA,qCAAgD;AAGhD,MAAa,eAAe;IAC1B,YACkB,OAIf;QAJe,YAAO,GAAP,OAAO,CAItB;QAEA,MAAM,CAAC,IAAI,CAAC,OAAO,CAA8B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"depends-on-method.js","sourceRoot":"","sources":["../src/depends-on-method.ts"],"names":[],"mappings":";;;AACA,qCAAgD;AAGhD,MAAa,eAAe;IAC1B,YACkB,OAIf;QAJe,YAAO,GAAP,OAAO,CAItB;QAEA,MAAM,CAAC,IAAI,CAAC,OAAO,CAA8B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjE,IAAI,GAAG,IAAI,OAAO,EAAE;gBAClB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAClC,MAAM,IAAI,6BAAoB,CAC5B,iCAAiC,GAAG,oEAAoE;wBACtG,sEAAsE;wBACtE,cAAc;wBACd,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM;wBAClC,KAAK,GAAG,8BAA8B;wBACtC,kBAAkB,GAAG,KAAK;wBAC1B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;6BAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;6BACpB,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;wBACvB,KAAK;wBACL,sBAAsB,GAAG,KAAK;wBAC9B,WAAW;wBACX,QAAQ;wBACR,OAAO,CACV,CAAC;iBACH;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhCD,0CAgCC"}
|
package/dist/endpoint.d.ts
CHANGED
|
@@ -31,8 +31,9 @@ export declare abstract class AbstractEndpoint {
|
|
|
31
31
|
abstract getPositiveMimeTypes(): string[];
|
|
32
32
|
abstract getNegativeMimeTypes(): string[];
|
|
33
33
|
abstract getSecurity(): LogicalContainer<Security>;
|
|
34
|
+
abstract getScopes(): string[];
|
|
34
35
|
}
|
|
35
|
-
declare type EndpointProps<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends ApiResponse, NEG extends ApiResponse> = {
|
|
36
|
+
declare type EndpointProps<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends ApiResponse, NEG extends ApiResponse, SCO extends string> = {
|
|
36
37
|
middlewares: AnyMiddlewareDef[];
|
|
37
38
|
inputSchema: IN;
|
|
38
39
|
mimeTypes: string[];
|
|
@@ -40,8 +41,9 @@ declare type EndpointProps<IN extends IOSchema, OUT extends IOSchema, OPT extend
|
|
|
40
41
|
handler: Handler<z.output<IN>, z.input<OUT>, OPT>;
|
|
41
42
|
resultHandler: ResultHandlerDefinition<POS, NEG>;
|
|
42
43
|
description?: string;
|
|
44
|
+
scopes?: SCO[];
|
|
43
45
|
} & MethodsDefinition<M>;
|
|
44
|
-
export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends ApiResponse, NEG extends ApiResponse> extends AbstractEndpoint {
|
|
46
|
+
export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends ApiResponse, NEG extends ApiResponse, SCO extends string> extends AbstractEndpoint {
|
|
45
47
|
#private;
|
|
46
48
|
protected readonly description?: string;
|
|
47
49
|
protected readonly methods: M[];
|
|
@@ -51,7 +53,8 @@ export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT ext
|
|
|
51
53
|
protected readonly outputSchema: OUT;
|
|
52
54
|
protected readonly handler: Handler<z.output<IN>, z.input<OUT>, OPT>;
|
|
53
55
|
protected readonly resultHandler: ResultHandlerDefinition<POS, NEG>;
|
|
54
|
-
|
|
56
|
+
protected readonly scopes?: SCO[];
|
|
57
|
+
constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, mimeTypes, scopes, ...rest }: EndpointProps<IN, OUT, OPT, M, POS, NEG, SCO>);
|
|
55
58
|
getDescription(): string | undefined;
|
|
56
59
|
getMethods(): M[];
|
|
57
60
|
getInputSchema(): IN;
|
|
@@ -61,7 +64,8 @@ export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT ext
|
|
|
61
64
|
getInputMimeTypes(): string[];
|
|
62
65
|
getPositiveMimeTypes(): string[];
|
|
63
66
|
getNegativeMimeTypes(): string[];
|
|
64
|
-
getSecurity(): LogicalContainer<Security
|
|
67
|
+
getSecurity(): LogicalContainer<Security<string, string>>;
|
|
68
|
+
getScopes(): SCO[];
|
|
65
69
|
execute({ request, response, logger, config, }: {
|
|
66
70
|
request: Request;
|
|
67
71
|
response: Response;
|
package/dist/endpoint.js
CHANGED
|
@@ -16,7 +16,7 @@ class AbstractEndpoint {
|
|
|
16
16
|
}
|
|
17
17
|
exports.AbstractEndpoint = AbstractEndpoint;
|
|
18
18
|
class Endpoint extends AbstractEndpoint {
|
|
19
|
-
constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, mimeTypes, ...rest }) {
|
|
19
|
+
constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, mimeTypes, scopes, ...rest }) {
|
|
20
20
|
super();
|
|
21
21
|
_Endpoint_instances.add(this);
|
|
22
22
|
this.methods = [];
|
|
@@ -28,6 +28,7 @@ class Endpoint extends AbstractEndpoint {
|
|
|
28
28
|
this.handler = handler;
|
|
29
29
|
this.resultHandler = resultHandler;
|
|
30
30
|
this.description = description;
|
|
31
|
+
this.scopes = scopes;
|
|
31
32
|
if ("methods" in rest) {
|
|
32
33
|
this.methods = rest.methods;
|
|
33
34
|
}
|
|
@@ -65,6 +66,9 @@ class Endpoint extends AbstractEndpoint {
|
|
|
65
66
|
getSecurity() {
|
|
66
67
|
return this.middlewares.reduce((acc, middleware) => middleware.security ? (0, logical_container_1.combineContainers)(acc, middleware.security) : acc, { and: [] });
|
|
67
68
|
}
|
|
69
|
+
getScopes() {
|
|
70
|
+
return this.scopes || [];
|
|
71
|
+
}
|
|
68
72
|
async execute({ request, response, logger, config, }) {
|
|
69
73
|
const method = (0, common_helpers_1.getActualMethod)(request);
|
|
70
74
|
let output;
|
package/dist/endpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":";;;;;;;;;AAEA,6BAAwB;AAGxB,qCAA8C;AAC9C,qDAK0B;AAC1B,2DAA0E;AAG1E,qDAA8E;AAS9E,MAAsB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,24 +7,25 @@ import { Endpoint, Handler } from "./endpoint";
|
|
|
7
7
|
import { Method, MethodsDefinition } from "./method";
|
|
8
8
|
import { AnyMiddlewareDef, ExpressMiddleware, ExpressMiddlewareFeatures, MiddlewareCreationProps, MiddlewareDefinition } from "./middleware";
|
|
9
9
|
import { ResultHandlerDefinition } from "./result-handler";
|
|
10
|
-
declare type BuildProps<IN extends IOSchema, OUT extends IOSchema, MIN extends IOSchema<"strip"> | null, OPT extends FlatObject, M extends Method> = {
|
|
10
|
+
declare type BuildProps<IN extends IOSchema, OUT extends IOSchema, MIN extends IOSchema<"strip"> | null, OPT extends FlatObject, M extends Method, SCO extends string> = {
|
|
11
11
|
input: IN;
|
|
12
12
|
output: OUT;
|
|
13
13
|
handler: Handler<z.output<ProbableIntersection<MIN, IN>>, z.input<OUT>, OPT>;
|
|
14
14
|
description?: string;
|
|
15
|
+
scopes?: SCO[];
|
|
15
16
|
} & MethodsDefinition<M>;
|
|
16
|
-
export declare class EndpointsFactory<POS extends ApiResponse, NEG extends ApiResponse, IN extends IOSchema<"strip"> | null = null, OUT extends FlatObject = {}> {
|
|
17
|
+
export declare class EndpointsFactory<POS extends ApiResponse, NEG extends ApiResponse, IN extends IOSchema<"strip"> | null = null, OUT extends FlatObject = {}, SCO extends string = string> {
|
|
17
18
|
#private;
|
|
18
19
|
protected resultHandler: ResultHandlerDefinition<POS, NEG>;
|
|
19
20
|
protected middlewares: AnyMiddlewareDef[];
|
|
20
21
|
constructor(resultHandler: ResultHandlerDefinition<POS, NEG>);
|
|
21
|
-
addMiddleware<AIN extends IOSchema<"strip">, AOUT extends FlatObject>(definition: MiddlewareDefinition<AIN, OUT, AOUT>): EndpointsFactory<POS, NEG, ProbableIntersection<IN, AIN>, OUT & AOUT>;
|
|
22
|
+
addMiddleware<AIN extends IOSchema<"strip">, AOUT extends FlatObject, ASCO extends string>(definition: MiddlewareDefinition<AIN, OUT, AOUT, ASCO>): EndpointsFactory<POS, NEG, ProbableIntersection<IN, AIN>, OUT & AOUT, SCO & ASCO>;
|
|
22
23
|
/** @deprecated please use createMiddleware() for the argument */
|
|
23
|
-
addMiddleware<AIN extends IOSchema<"strip">, AOUT extends FlatObject>(props: MiddlewareCreationProps<AIN, OUT, AOUT>): EndpointsFactory<POS, NEG, ProbableIntersection<IN, AIN>, OUT & AOUT>;
|
|
24
|
-
use: <R extends Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>, S extends Response<any, Record<string, any>>, AOUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, AOUT> | undefined) => EndpointsFactory<POS, NEG, IN, OUT & AOUT>;
|
|
25
|
-
addExpressMiddleware<R extends Request, S extends Response, AOUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, AOUT>): EndpointsFactory<POS, NEG, IN, OUT & AOUT>;
|
|
26
|
-
addOptions<AOUT extends FlatObject>(options: AOUT): EndpointsFactory<POS, NEG, IN, OUT & AOUT>;
|
|
27
|
-
build<BIN extends IOSchema, BOUT extends IOSchema, M extends Method>({ input, handler, description, output: outputSchema, ...rest }: BuildProps<BIN, BOUT, IN, OUT, M>): Endpoint<ProbableIntersection<IN, BIN>, BOUT, OUT, M, POS, NEG>;
|
|
24
|
+
addMiddleware<AIN extends IOSchema<"strip">, AOUT extends FlatObject, ASCO extends string>(props: MiddlewareCreationProps<AIN, OUT, AOUT, ASCO>): EndpointsFactory<POS, NEG, ProbableIntersection<IN, AIN>, OUT & AOUT, SCO & ASCO>;
|
|
25
|
+
use: <R extends Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>, S extends Response<any, Record<string, any>>, AOUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, AOUT> | undefined) => EndpointsFactory<POS, NEG, IN, OUT & AOUT, SCO>;
|
|
26
|
+
addExpressMiddleware<R extends Request, S extends Response, AOUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, AOUT>): EndpointsFactory<POS, NEG, IN, OUT & AOUT, SCO>;
|
|
27
|
+
addOptions<AOUT extends FlatObject>(options: AOUT): EndpointsFactory<POS, NEG, IN, OUT & AOUT, SCO>;
|
|
28
|
+
build<BIN extends IOSchema, BOUT extends IOSchema, M extends Method>({ input, handler, description, output: outputSchema, ...rest }: BuildProps<BIN, BOUT, IN, OUT, M, SCO>): Endpoint<ProbableIntersection<IN, BIN>, BOUT, OUT, M, POS, NEG, SCO>;
|
|
28
29
|
}
|
|
29
30
|
export declare const defaultEndpointsFactory: EndpointsFactory<ApiResponse<z.ZodObject<{
|
|
30
31
|
status: z.ZodLiteral<"success">;
|
|
@@ -144,5 +145,5 @@ export declare const defaultEndpointsFactory: EndpointsFactory<ApiResponse<z.Zod
|
|
|
144
145
|
}> & {
|
|
145
146
|
keyof: () => z.ZodEnum<never>;
|
|
146
147
|
} & any;
|
|
147
|
-
}>, null, {}>;
|
|
148
|
+
}>, null, {}, string>;
|
|
148
149
|
export {};
|
|
@@ -23,8 +23,8 @@ class EndpointsFactory {
|
|
|
23
23
|
return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat("type" in subject ? subject : (0, middleware_1.createMiddleware)(subject)), this.resultHandler);
|
|
24
24
|
}
|
|
25
25
|
addExpressMiddleware(middleware, features) {
|
|
26
|
-
const transformer =
|
|
27
|
-
const provider =
|
|
26
|
+
const transformer = features?.transformer || ((err) => err);
|
|
27
|
+
const provider = features?.provider || (() => ({}));
|
|
28
28
|
const definition = {
|
|
29
29
|
type: "express",
|
|
30
30
|
input: zod_1.z.object({}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":";;;;;;;;;AACA,6BAAwB;AAExB,qDAM0B;AAC1B,yCAA+C;AAE/C,6CAOsB;AACtB,iCAAiD;AACjD,qDAG0B;
|
|
1
|
+
{"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,24 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.combineContainers = exports.andToOr = exports.mapLogicalContainer = exports.flattenAnds = void 0;
|
|
4
4
|
const common_helpers_1 = require("./common-helpers");
|
|
5
|
+
const isObject = (subject) => typeof subject === "object" && subject !== null;
|
|
5
6
|
/** @desc combines several LogicalAnds into a one */
|
|
6
7
|
const flattenAnds = (subject) => ({
|
|
7
|
-
and: subject.reduce((agg, item) => agg.concat(
|
|
8
|
+
and: subject.reduce((agg, item) => agg.concat(isObject(item) && "and" in item ? item.and : item), []),
|
|
8
9
|
});
|
|
9
10
|
exports.flattenAnds = flattenAnds;
|
|
10
11
|
/** @desc creates a LogicalContainer out of another one */
|
|
11
12
|
const mapLogicalContainer = (container, fn) => {
|
|
12
|
-
if (
|
|
13
|
+
if (isObject(container)) {
|
|
13
14
|
if ("and" in container) {
|
|
14
15
|
return {
|
|
15
|
-
and: container.and.map((entry) =>
|
|
16
|
+
and: container.and.map((entry) => isObject(entry) && "or" in entry
|
|
16
17
|
? { or: entry.or.map(fn) }
|
|
17
18
|
: fn(entry)),
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
21
|
if ("or" in container) {
|
|
21
22
|
return {
|
|
22
|
-
or: container.or.map((entry) =>
|
|
23
|
+
or: container.or.map((entry) => isObject(entry) && "and" in entry
|
|
23
24
|
? { and: entry.and.map(fn) }
|
|
24
25
|
: fn(entry)),
|
|
25
26
|
};
|
|
@@ -31,7 +32,7 @@ exports.mapLogicalContainer = mapLogicalContainer;
|
|
|
31
32
|
/** @desc converts LogicalAnd into LogicalOr */
|
|
32
33
|
const andToOr = (subject) => {
|
|
33
34
|
return subject.and.reduce((acc, item) => {
|
|
34
|
-
const combs = (0, common_helpers_1.combinations)(acc.or,
|
|
35
|
+
const combs = (0, common_helpers_1.combinations)(acc.or, isObject(item) && "or" in item ? item.or : [item]);
|
|
35
36
|
if (combs.type === "single") {
|
|
36
37
|
acc.or.push(...combs.value);
|
|
37
38
|
}
|
|
@@ -46,7 +47,7 @@ const andToOr = (subject) => {
|
|
|
46
47
|
exports.andToOr = andToOr;
|
|
47
48
|
/** @desc reducer, combines two LogicalContainers */
|
|
48
49
|
const combineContainers = (a, b) => {
|
|
49
|
-
if (
|
|
50
|
+
if (isObject(a) && isObject(b)) {
|
|
50
51
|
if ("and" in a) {
|
|
51
52
|
if ("and" in b) {
|
|
52
53
|
return (0, exports.flattenAnds)([a, b]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logical-container.js","sourceRoot":"","sources":["../src/logical-container.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAUhD,oDAAoD;AAC7C,MAAM,WAAW,GAAG,CACzB,OAA8B,EACf,EAAE,CAAC,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACZ,GAAG,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"logical-container.js","sourceRoot":"","sources":["../src/logical-container.ts"],"names":[],"mappings":"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"}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -13,16 +13,16 @@ interface MiddlewareParams<IN, OPT> {
|
|
|
13
13
|
logger: Logger;
|
|
14
14
|
}
|
|
15
15
|
declare type Middleware<IN, OPT, OUT> = (params: MiddlewareParams<IN, OPT>) => Promise<OUT>;
|
|
16
|
-
export interface MiddlewareCreationProps<IN extends IOSchema<"strip">, OPT, OUT extends FlatObject> {
|
|
16
|
+
export interface MiddlewareCreationProps<IN extends IOSchema<"strip">, OPT, OUT extends FlatObject, SCO extends string> {
|
|
17
17
|
input: IN;
|
|
18
|
-
security?: LogicalContainer<Security<keyof z.input<IN> & string>>;
|
|
18
|
+
security?: LogicalContainer<Security<keyof z.input<IN> & string, SCO>>;
|
|
19
19
|
middleware: Middleware<z.output<IN>, OPT, OUT>;
|
|
20
20
|
}
|
|
21
|
-
export interface MiddlewareDefinition<IN extends IOSchema<"strip">, OPT, OUT extends FlatObject> extends MiddlewareCreationProps<IN, OPT, OUT> {
|
|
21
|
+
export interface MiddlewareDefinition<IN extends IOSchema<"strip">, OPT, OUT extends FlatObject, SCO extends string> extends MiddlewareCreationProps<IN, OPT, OUT, SCO> {
|
|
22
22
|
type: "proprietary" | "express";
|
|
23
23
|
}
|
|
24
|
-
export declare type AnyMiddlewareDef = MiddlewareDefinition<any, any, any>;
|
|
25
|
-
export declare const createMiddleware: <IN extends IOSchema<"strip">, OPT, OUT extends FlatObject>(props: MiddlewareCreationProps<IN, OPT, OUT>) => MiddlewareDefinition<IN, OPT, OUT>;
|
|
24
|
+
export declare type AnyMiddlewareDef = MiddlewareDefinition<any, any, any, any>;
|
|
25
|
+
export declare const createMiddleware: <IN extends IOSchema<"strip">, OPT, OUT extends FlatObject, SCO extends string>(props: MiddlewareCreationProps<IN, OPT, OUT, SCO>) => MiddlewareDefinition<IN, OPT, OUT, SCO>;
|
|
26
26
|
export declare type ExpressMiddleware<R extends Request, S extends Response> = (request: R, response: S, next: (error?: any) => void) => void | Promise<void>;
|
|
27
27
|
export interface ExpressMiddlewareFeatures<R extends Request, S extends Response, OUT extends FlatObject> {
|
|
28
28
|
provider?: (request: R, response: S) => OUT | Promise<OUT>;
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AA0CO,MAAM,gBAAgB,GAAG,CAM9B,KAAiD,EACR,EAAE,CAAC,CAAC;IAC7C,GAAG,KAAK;IACR,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AAVU,QAAA,gBAAgB,oBAU1B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { MediaTypeObject, ParameterObject, SchemaObject } from "openapi3-ts";
|
|
2
|
-
import { RequestBodyObject, ResponseObject, SecurityRequirementObject, SecuritySchemeObject } from "openapi3-ts/src/model/OpenApi";
|
|
1
|
+
import { MediaTypeObject, ParameterObject, SchemaObject, RequestBodyObject, ResponseObject, SecurityRequirementObject, SecuritySchemeObject } from "openapi3-ts";
|
|
3
2
|
import { z } from "zod";
|
|
4
3
|
import { IOSchema } from "./common-helpers";
|
|
5
4
|
import { InputSources } from "./config-type";
|
|
@@ -45,6 +44,7 @@ export declare const depictArray: DepictHelper<z.ZodArray<z.ZodTypeAny>>;
|
|
|
45
44
|
/** @todo improve it when OpenAPI 3.1.0 will be released */
|
|
46
45
|
export declare const depictTuple: DepictHelper<z.ZodTuple>;
|
|
47
46
|
export declare const depictString: DepictHelper<z.ZodString>;
|
|
47
|
+
/** @todo support exclusive min/max as numbers in case of OpenAPI v3.1.x */
|
|
48
48
|
export declare const depictNumber: DepictHelper<z.ZodNumber>;
|
|
49
49
|
export declare const depictObjectProperties: ({ schema: { shape }, isResponse, }: Parameters<DepictHelper<z.AnyZodObject>>[0]) => Record<string, SchemaObject>;
|
|
50
50
|
export declare const depictEffect: DepictHelper<z.ZodEffects<z.ZodTypeAny>>;
|
|
@@ -72,6 +72,9 @@ export declare const depictResponse: ({ method, path, description, endpoint, isP
|
|
|
72
72
|
isPositive: boolean;
|
|
73
73
|
}) => ResponseObject;
|
|
74
74
|
export declare const depictSecurity: (container: LogicalContainer<Security>) => LogicalContainer<SecuritySchemeObject>;
|
|
75
|
-
export declare const
|
|
75
|
+
export declare const depictSecurityRefs: (container: LogicalContainer<{
|
|
76
|
+
name: string;
|
|
77
|
+
scopes: string[];
|
|
78
|
+
}>) => SecurityRequirementObject[];
|
|
76
79
|
export declare const depictRequest: ({ method, path, endpoint, }: ReqResDepictHelperCommonProps) => RequestBodyObject;
|
|
77
80
|
export {};
|
package/dist/open-api-helpers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.depictRequest = exports.
|
|
3
|
+
exports.depictRequest = exports.depictSecurityRefs = exports.depictSecurity = exports.depictResponse = exports.excludeExampleFromDepiction = exports.excludeParamsFromDepiction = exports.depictSchema = exports.depictRequestParams = exports.extractObjectSchema = exports.depictIOParamExamples = exports.depictIOExamples = exports.depictZodBranded = exports.depictEffect = exports.depictObjectProperties = exports.depictNumber = exports.depictString = exports.depictTuple = exports.depictArray = exports.depictRecord = exports.depictBigInt = exports.depictBoolean = exports.depictDateOut = exports.depictDateIn = exports.depictNull = exports.depictObject = exports.depictLiteral = exports.depictEnum = exports.depictOptionalOrNullable = exports.depictIntersection = exports.depictDiscriminatedUnion = exports.depictUnion = exports.depictFile = exports.depictUpload = exports.depictAny = exports.depictDefault = exports.reformatParamsInPath = void 0;
|
|
4
4
|
const ramda_1 = require("ramda");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
const common_helpers_1 = require("./common-helpers");
|
|
@@ -246,6 +246,7 @@ const depictString = ({ schema: { _def: { checks }, }, initial, }) => {
|
|
|
246
246
|
};
|
|
247
247
|
};
|
|
248
248
|
exports.depictString = depictString;
|
|
249
|
+
/** @todo support exclusive min/max as numbers in case of OpenAPI v3.1.x */
|
|
249
250
|
const depictNumber = ({ schema, initial, }) => {
|
|
250
251
|
const minCheck = schema._def.checks.find(({ kind }) => kind === "min");
|
|
251
252
|
const isMinInclusive = minCheck ? minCheck.inclusive : true;
|
|
@@ -521,14 +522,20 @@ const depictCookieSecurity = ({ name }) => ({
|
|
|
521
522
|
in: "cookie",
|
|
522
523
|
name,
|
|
523
524
|
});
|
|
524
|
-
// @todo implement scopes
|
|
525
525
|
const depictOpenIdSecurity = ({ url: openIdConnectUrl, }) => ({
|
|
526
526
|
type: "openIdConnect",
|
|
527
527
|
openIdConnectUrl,
|
|
528
528
|
});
|
|
529
|
-
|
|
530
|
-
const depictOAuth2Security = ({}) => ({
|
|
529
|
+
const depictOAuth2Security = ({ flows = {} }) => ({
|
|
531
530
|
type: "oauth2",
|
|
531
|
+
flows: Object.keys(flows).reduce((acc, key) => {
|
|
532
|
+
const flow = flows[key];
|
|
533
|
+
if (!flow) {
|
|
534
|
+
return acc;
|
|
535
|
+
}
|
|
536
|
+
const { scopes = {}, ...rest } = flow;
|
|
537
|
+
return { ...acc, [key]: { ...rest, scopes } };
|
|
538
|
+
}, {}),
|
|
532
539
|
});
|
|
533
540
|
const depictSecurity = (container) => {
|
|
534
541
|
const methods = {
|
|
@@ -543,23 +550,23 @@ const depictSecurity = (container) => {
|
|
|
543
550
|
return (0, logical_container_1.mapLogicalContainer)(container, (security) => methods[security.type](security));
|
|
544
551
|
};
|
|
545
552
|
exports.depictSecurity = depictSecurity;
|
|
546
|
-
const
|
|
553
|
+
const depictSecurityRefs = (container) => {
|
|
547
554
|
if (typeof container === "object") {
|
|
548
555
|
if ("or" in container) {
|
|
549
|
-
return container.or.map((entry) => (
|
|
550
|
-
?
|
|
551
|
-
: entry
|
|
556
|
+
return container.or.map((entry) => ("and" in entry
|
|
557
|
+
? entry.and
|
|
558
|
+
: [entry]).reduce((agg, { name, scopes }) => ({
|
|
552
559
|
...agg,
|
|
553
|
-
[name]:
|
|
560
|
+
[name]: scopes,
|
|
554
561
|
}), {}));
|
|
555
562
|
}
|
|
556
563
|
if ("and" in container) {
|
|
557
|
-
return (0, exports.
|
|
564
|
+
return (0, exports.depictSecurityRefs)((0, logical_container_1.andToOr)(container));
|
|
558
565
|
}
|
|
559
566
|
}
|
|
560
|
-
return (0, exports.
|
|
567
|
+
return (0, exports.depictSecurityRefs)({ or: [container] });
|
|
561
568
|
};
|
|
562
|
-
exports.
|
|
569
|
+
exports.depictSecurityRefs = depictSecurityRefs;
|
|
563
570
|
const depictRequest = ({ method, path, endpoint, }) => {
|
|
564
571
|
const pathParams = (0, common_helpers_1.getRoutePathParams)(path);
|
|
565
572
|
const bodyDepiction = (0, exports.excludeExampleFromDepiction)((0, exports.excludeParamsFromDepiction)((0, exports.depictSchema)({
|