express-zod-api 8.3.4 → 8.4.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/CHANGELOG.md +40 -0
- package/dist/api-response.d.ts +1 -1
- package/dist/common-helpers.d.ts +4 -4
- package/dist/config-type.d.ts +7 -7
- package/dist/endpoint.d.ts +9 -2
- package/dist/endpoint.js +9 -0
- package/dist/endpoint.js.map +1 -1
- package/dist/endpoints-factory.d.ts +1 -1
- package/dist/io-schema.d.ts +4 -4
- package/dist/logical-container.d.ts +3 -3
- package/dist/metadata.d.ts +7 -7
- package/dist/method.d.ts +3 -3
- package/dist/middleware.d.ts +3 -3
- package/dist/mime.d.ts +1 -1
- package/dist/mock.d.ts +9 -1
- package/dist/mock.js +20 -13
- package/dist/mock.js.map +1 -1
- package/dist/open-api-helpers.d.ts +2 -2
- package/dist/open-api.js +11 -12
- package/dist/open-api.js.map +1 -1
- package/dist/result-handler.d.ts +1 -1
- package/dist/routing.js +3 -1
- package/dist/routing.js.map +1 -1
- package/dist/security.d.ts +5 -5
- package/dist/serve-static.d.ts +2 -2
- package/dist-esm/endpoint.js +9 -0
- package/dist-esm/endpoint.js.map +1 -1
- package/dist-esm/mock.js +17 -12
- package/dist-esm/mock.js.map +1 -1
- package/dist-esm/open-api.js +11 -12
- package/dist-esm/open-api.js.map +1 -1
- package/dist-esm/package.json +1 -1
- package/dist-esm/routing.js +3 -1
- package/dist-esm/routing.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
## Version 8
|
|
4
4
|
|
|
5
|
+
### v8.4.1
|
|
6
|
+
|
|
7
|
+
- `openapi3-ts` version is 3.1.2.
|
|
8
|
+
- Fixed a bug found and reported by [@leosuncin](https://github.com/leosuncin) in issue #705.
|
|
9
|
+
- CORS didn't work well in case of using `DependsOnMethod`.
|
|
10
|
+
- The list of the allowed methods in the response to `OPTIONS` request did only contain the first method declared
|
|
11
|
+
within `DependsOnMethod` instance.
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
// reproduction minimal setup
|
|
15
|
+
const routing: Routing = {
|
|
16
|
+
test: new DependsOnMethod({
|
|
17
|
+
get: getEndpoint,
|
|
18
|
+
post: postEndpoint,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
// when requesting OPTIONS for "/test", the response has the following header:
|
|
22
|
+
// Access-Control-Allow-Methods: GET, OPTIONS
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### v8.4.0
|
|
26
|
+
|
|
27
|
+
- Fixed the flaw found and reported by [@kirdk](https://github.com/kirdk) in issue #662.
|
|
28
|
+
- Now nested top level refinements are available:
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { z } from "express-zod-api";
|
|
32
|
+
|
|
33
|
+
const endpoint = endpointsFactory.build({
|
|
34
|
+
input: z
|
|
35
|
+
.object({
|
|
36
|
+
/* ... */
|
|
37
|
+
})
|
|
38
|
+
.refine(() => true)
|
|
39
|
+
.refine(() => true)
|
|
40
|
+
.refine(() => true),
|
|
41
|
+
// ...
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
5
45
|
### v8.3.4
|
|
6
46
|
|
|
7
47
|
- Adjustments to the feature #600: Top level refinements.
|
package/dist/api-response.d.ts
CHANGED
package/dist/common-helpers.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { z } from "zod";
|
|
|
3
3
|
import { CommonConfig, InputSources, LoggerConfig } from "./config-type";
|
|
4
4
|
import { IOSchema } from "./io-schema";
|
|
5
5
|
import { Method } from "./method";
|
|
6
|
-
export
|
|
7
|
-
export
|
|
6
|
+
export type FlatObject = Record<string, any>;
|
|
7
|
+
export type ArrayElement<T extends readonly unknown[]> = T extends readonly (infer K)[] ? K : never;
|
|
8
8
|
/** @see https://expressjs.com/en/guide/routing.html */
|
|
9
9
|
export declare const routePathParamsRegex: RegExp;
|
|
10
10
|
export declare const defaultInputSources: InputSources;
|
|
@@ -16,7 +16,7 @@ export declare function makeErrorFromAnything<T extends Error>(subject: T): T;
|
|
|
16
16
|
export declare function makeErrorFromAnything(subject: any): Error;
|
|
17
17
|
export declare function getMessageFromError(error: Error): string;
|
|
18
18
|
export declare function getStatusCodeFromError(error: Error): number;
|
|
19
|
-
|
|
19
|
+
type Examples<T extends z.ZodTypeAny> = Readonly<z.input<T>[] | z.output<T>[]>;
|
|
20
20
|
export declare const getExamples: <T extends z.ZodTypeAny>(schema: T, parseToOutput: boolean) => Examples<T>;
|
|
21
21
|
export declare const combinations: <T extends unknown>(a: T[], b: T[]) => {
|
|
22
22
|
type: "single";
|
|
@@ -28,7 +28,7 @@ export declare const combinations: <T extends unknown>(a: T[], b: T[]) => {
|
|
|
28
28
|
export declare function getRoutePathParams(path: string): string[];
|
|
29
29
|
export declare function hasTopLevelTransformingEffect(schema: IOSchema): boolean;
|
|
30
30
|
export declare function hasUpload(schema: z.ZodTypeAny): boolean;
|
|
31
|
-
export
|
|
31
|
+
export type ErrMessage = Exclude<Parameters<typeof z.ZodString.prototype.email>[0], undefined>;
|
|
32
32
|
export declare const errToObj: (message: ErrMessage | undefined) => {
|
|
33
33
|
message?: string | undefined;
|
|
34
34
|
};
|
package/dist/config-type.d.ts
CHANGED
|
@@ -17,8 +17,8 @@ export interface LoggerConfig {
|
|
|
17
17
|
level: keyof typeof loggerLevels;
|
|
18
18
|
color: boolean;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
type UploadOptions = Pick<fileUpload.Options, "createParentPath" | "uriDecodeFileNames" | "safeFileNames" | "preserveExtension" | "useTempFiles" | "tempFileDir" | "debug" | "uploadTimeout">;
|
|
21
|
+
type CompressionOptions = Pick<compression.CompressionOptions, "threshold" | "level" | "strategy" | "chunkSize" | "memLevel">;
|
|
22
22
|
export interface ServerConfig {
|
|
23
23
|
server: {
|
|
24
24
|
listen: number | string;
|
|
@@ -34,16 +34,16 @@ export interface ServerConfig {
|
|
|
34
34
|
export interface AppConfig {
|
|
35
35
|
app: Express;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
type InputSource = keyof Pick<Request, "query" | "body" | "files" | "params">;
|
|
38
|
+
export type InputSources = Record<Method, InputSource[]>;
|
|
39
|
+
type Headers = Record<string, string>;
|
|
40
|
+
type HeadersProvider = (params: {
|
|
41
41
|
defaultHeaders: Headers;
|
|
42
42
|
request: Request;
|
|
43
43
|
endpoint: AbstractEndpoint;
|
|
44
44
|
logger: Logger;
|
|
45
45
|
}) => Headers | Promise<Headers>;
|
|
46
|
-
export
|
|
46
|
+
export type TagsConfig<TAG extends string> = Record<TAG, string | {
|
|
47
47
|
description: string;
|
|
48
48
|
url?: string;
|
|
49
49
|
}>;
|
package/dist/endpoint.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { Method, MethodsDefinition } from "./method";
|
|
|
10
10
|
import { AnyMiddlewareDef } from "./middleware";
|
|
11
11
|
import { ResultHandlerDefinition } from "./result-handler";
|
|
12
12
|
import { Security } from "./security";
|
|
13
|
-
export
|
|
13
|
+
export type Handler<IN, OUT, OPT> = (params: {
|
|
14
14
|
input: IN;
|
|
15
15
|
options: OPT;
|
|
16
16
|
logger: Logger;
|
|
@@ -34,8 +34,9 @@ export declare abstract class AbstractEndpoint {
|
|
|
34
34
|
abstract getSecurity(): LogicalContainer<Security>;
|
|
35
35
|
abstract getScopes(): string[];
|
|
36
36
|
abstract getTags(): string[];
|
|
37
|
+
abstract _setSiblingMethods(methods: Method[]): void;
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
type EndpointProps<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends ApiResponse, NEG extends ApiResponse, SCO extends string, TAG extends string> = {
|
|
39
40
|
middlewares: AnyMiddlewareDef[];
|
|
40
41
|
inputSchema: IN;
|
|
41
42
|
mimeTypes: string[];
|
|
@@ -57,6 +58,7 @@ export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT ext
|
|
|
57
58
|
#private;
|
|
58
59
|
protected readonly descriptions: Record<"short" | "long", string | undefined>;
|
|
59
60
|
protected readonly methods: M[];
|
|
61
|
+
protected siblingMethods: Method[];
|
|
60
62
|
protected readonly middlewares: AnyMiddlewareDef[];
|
|
61
63
|
protected readonly inputSchema: IN;
|
|
62
64
|
protected readonly mimeTypes: string[];
|
|
@@ -66,6 +68,11 @@ export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT ext
|
|
|
66
68
|
protected readonly scopes: SCO[];
|
|
67
69
|
protected readonly tags: TAG[];
|
|
68
70
|
constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, shortDescription, mimeTypes, ...rest }: EndpointProps<IN, OUT, OPT, M, POS, NEG, SCO, TAG>);
|
|
71
|
+
/**
|
|
72
|
+
* @desc Sets the other methods supported by the same path. Used by Routing in DependsOnMethod case, for options.
|
|
73
|
+
* @deprecated This method is for internal needs of the library, please avoid using it.
|
|
74
|
+
* */
|
|
75
|
+
_setSiblingMethods(methods: Method[]): void;
|
|
69
76
|
getDescription(variant: "short" | "long"): string | undefined;
|
|
70
77
|
getMethods(): M[];
|
|
71
78
|
getInputSchema(): IN;
|
package/dist/endpoint.js
CHANGED
|
@@ -20,6 +20,7 @@ class Endpoint extends AbstractEndpoint {
|
|
|
20
20
|
super();
|
|
21
21
|
_Endpoint_instances.add(this);
|
|
22
22
|
this.methods = [];
|
|
23
|
+
this.siblingMethods = [];
|
|
23
24
|
this.middlewares = [];
|
|
24
25
|
[
|
|
25
26
|
{ name: "input schema", schema: inputSchema },
|
|
@@ -57,6 +58,13 @@ class Endpoint extends AbstractEndpoint {
|
|
|
57
58
|
this.methods = [rest.method];
|
|
58
59
|
}
|
|
59
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* @desc Sets the other methods supported by the same path. Used by Routing in DependsOnMethod case, for options.
|
|
63
|
+
* @deprecated This method is for internal needs of the library, please avoid using it.
|
|
64
|
+
* */
|
|
65
|
+
_setSiblingMethods(methods) {
|
|
66
|
+
this.siblingMethods = methods;
|
|
67
|
+
}
|
|
60
68
|
getDescription(variant) {
|
|
61
69
|
return this.descriptions[variant];
|
|
62
70
|
}
|
|
@@ -145,6 +153,7 @@ class Endpoint extends AbstractEndpoint {
|
|
|
145
153
|
exports.Endpoint = Endpoint;
|
|
146
154
|
_Endpoint_instances = new WeakSet(), _Endpoint_getDefaultCorsHeaders = function _Endpoint_getDefaultCorsHeaders() {
|
|
147
155
|
const accessMethods = this.methods
|
|
156
|
+
.concat(this.siblingMethods)
|
|
148
157
|
.concat("options")
|
|
149
158
|
.join(", ")
|
|
150
159
|
.toUpperCase();
|
package/dist/endpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":";;;;;;;;;AAEA,6BAAwB;AAGxB,qCAA6D;AAC7D,qDAM0B;AAE1B,2DAA0E;AAG1E,qDAA8E;AAS9E,MAAsB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { IOSchema, ProbableIntersection } from "./io-schema";
|
|
|
9
9
|
import { Method, MethodsDefinition } from "./method";
|
|
10
10
|
import { AnyMiddlewareDef, ExpressMiddleware, ExpressMiddlewareFeatures, MiddlewareDefinition } from "./middleware";
|
|
11
11
|
import { ResultHandlerDefinition } from "./result-handler";
|
|
12
|
-
|
|
12
|
+
type BuildProps<IN extends IOSchema, OUT extends IOSchema, MIN extends IOSchema<"strip"> | null, OPT extends FlatObject, M extends Method, SCO extends string, TAG extends string> = {
|
|
13
13
|
input: IN;
|
|
14
14
|
output: OUT;
|
|
15
15
|
handler: Handler<z.output<ProbableIntersection<MIN, IN>>, z.input<OUT>, OPT>;
|
package/dist/io-schema.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { AnyMiddlewareDef } from "./middleware";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
type UnknownKeysParam = "passthrough" | "strict" | "strip";
|
|
4
|
+
type Refined<T extends z.ZodType> = T extends z.ZodType<infer O> ? z.ZodEffects<T | Refined<T>, O, O> : never;
|
|
5
5
|
/**
|
|
6
6
|
* @desc The type allowed on the top level of Middlewares and Endpoints
|
|
7
7
|
* @param U — only "strip" is allowed for Middlewares due to intersection issue (Zod) #600
|
|
8
8
|
* */
|
|
9
|
-
export
|
|
10
|
-
export
|
|
9
|
+
export type IOSchema<U extends UnknownKeysParam = any> = z.ZodObject<any, U> | z.ZodUnion<[IOSchema<U>, ...IOSchema<U>[]]> | z.ZodIntersection<IOSchema<U>, IOSchema<U>> | z.ZodDiscriminatedUnion<string, z.Primitive, z.ZodObject<any, U>> | Refined<z.ZodObject<any, U>>;
|
|
10
|
+
export type ProbableIntersection<A extends IOSchema<"strip"> | null, B extends IOSchema> = A extends null ? B : A extends IOSchema<"strip"> ? z.ZodIntersection<A, B> : never;
|
|
11
11
|
/**
|
|
12
12
|
* @description intersects input schemas of middlewares and the endpoint
|
|
13
13
|
* @since 07.03.2022 former combineEndpointAndMiddlewareInputSchemas()
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
type LogicalOr<T> = {
|
|
2
2
|
or: T[];
|
|
3
3
|
};
|
|
4
|
-
|
|
4
|
+
type LogicalAnd<T> = {
|
|
5
5
|
and: T[];
|
|
6
6
|
};
|
|
7
|
-
export
|
|
7
|
+
export type LogicalContainer<T> = LogicalOr<T | LogicalAnd<T>> | LogicalAnd<T | LogicalOr<T>> | T;
|
|
8
8
|
/** @desc combines several LogicalAnds into a one */
|
|
9
9
|
export declare const flattenAnds: <T>(subject: (T | LogicalAnd<T>)[]) => LogicalAnd<T>;
|
|
10
10
|
/** @desc creates a LogicalContainer out of another one */
|
package/dist/metadata.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { z } from "./index";
|
|
2
2
|
export declare const metaProp = "expressZodApiMeta";
|
|
3
|
-
|
|
4
|
-
export
|
|
3
|
+
type MetaProp = typeof metaProp;
|
|
4
|
+
export type MetaDef<T extends z.ZodTypeAny> = {
|
|
5
5
|
[K in MetaProp]: {
|
|
6
6
|
examples: z.input<T>[];
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
type MetaKey = keyof MetaDef<any>[MetaProp];
|
|
10
|
+
type MetaValue<T extends z.ZodTypeAny, K extends MetaKey> = Readonly<MetaDef<T>[MetaProp][K]>;
|
|
11
|
+
type ExampleSetter<T extends z.ZodTypeAny> = (example: z.input<T>) => WithMeta<T>;
|
|
12
12
|
/**
|
|
13
13
|
* @desc fixes the incompatibility of the ZodObject.keyof() method introduced in v3.17.9
|
|
14
14
|
* @todo remove it if/when it will be compatible
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
type MetaFixForStrippedObject<T> = T extends z.ZodObject<any> ? T & {
|
|
17
17
|
keyof: z.ZodObject<any>["keyof"];
|
|
18
18
|
} : T;
|
|
19
|
-
|
|
19
|
+
type WithMeta<T extends z.ZodTypeAny> = MetaFixForStrippedObject<T> & {
|
|
20
20
|
_def: T["_def"] & MetaDef<T>;
|
|
21
21
|
example: ExampleSetter<T>;
|
|
22
22
|
};
|
package/dist/method.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type Method = "get" | "post" | "put" | "delete" | "patch";
|
|
2
2
|
export declare const methods: Method[];
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type AuxMethod = "options";
|
|
4
|
+
export type MethodsDefinition<M extends Method> = {
|
|
5
5
|
methods: M[];
|
|
6
6
|
} | {
|
|
7
7
|
method: M;
|
package/dist/middleware.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ interface MiddlewareParams<IN, OPT> {
|
|
|
13
13
|
response: Response;
|
|
14
14
|
logger: Logger;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
type Middleware<IN, OPT, OUT> = (params: MiddlewareParams<IN, OPT>) => Promise<OUT>;
|
|
17
17
|
interface MiddlewareCreationProps<IN extends IOSchema<"strip">, OPT, OUT extends FlatObject, SCO extends string> {
|
|
18
18
|
input: IN;
|
|
19
19
|
security?: LogicalContainer<Security<keyof z.input<IN> & string, SCO>>;
|
|
@@ -22,9 +22,9 @@ interface MiddlewareCreationProps<IN extends IOSchema<"strip">, OPT, OUT extends
|
|
|
22
22
|
export interface MiddlewareDefinition<IN extends IOSchema<"strip">, OPT, OUT extends FlatObject, SCO extends string> extends MiddlewareCreationProps<IN, OPT, OUT, SCO> {
|
|
23
23
|
type: "proprietary" | "express";
|
|
24
24
|
}
|
|
25
|
-
export
|
|
25
|
+
export type AnyMiddlewareDef = MiddlewareDefinition<any, any, any, any>;
|
|
26
26
|
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>;
|
|
27
|
-
export
|
|
27
|
+
export type ExpressMiddleware<R extends Request, S extends Response> = (request: R, response: S, next: (error?: any) => void) => void | Promise<void>;
|
|
28
28
|
export interface ExpressMiddlewareFeatures<R extends Request, S extends Response, OUT extends FlatObject> {
|
|
29
29
|
provider?: (request: R, response: S) => OUT | Promise<OUT>;
|
|
30
30
|
transformer?: (err: Error) => HttpError | Error;
|
package/dist/mime.d.ts
CHANGED
package/dist/mock.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/// <reference types="qs" />
|
|
2
1
|
/// <reference types="jest" />
|
|
2
|
+
/// <reference types="qs" />
|
|
3
3
|
import { Request, Response } from "express";
|
|
4
4
|
import { Logger } from "winston";
|
|
5
5
|
import { CommonConfig } from "./config-type";
|
|
@@ -13,6 +13,14 @@ interface TestEndpointProps<REQ, RES, LOG> {
|
|
|
13
13
|
/** @deprecated for testing purposes only */
|
|
14
14
|
__noJest?: boolean;
|
|
15
15
|
}
|
|
16
|
+
export declare const makeRequestMock: <REQ>(requestProps?: REQ | undefined) => {
|
|
17
|
+
method: string;
|
|
18
|
+
} & Record<"header", jest.Mock<any, any>> & (REQ extends undefined ? {} : REQ);
|
|
19
|
+
export declare const makeResponseMock: <RES>(responseProps?: RES | undefined) => {
|
|
20
|
+
writableEnded: boolean;
|
|
21
|
+
statusCode: number;
|
|
22
|
+
statusMessage: string;
|
|
23
|
+
} & Record<"json" | "status" | "set" | "end", jest.Mock<any, any>> & (RES extends undefined ? {} : RES);
|
|
16
24
|
/**
|
|
17
25
|
* @description You need to install Jest and probably @types/jest to use this method
|
|
18
26
|
*/
|
package/dist/mock.js
CHANGED
|
@@ -3,21 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.testEndpoint = void 0;
|
|
6
|
+
exports.testEndpoint = exports.makeResponseMock = exports.makeRequestMock = void 0;
|
|
7
7
|
const http_1 = __importDefault(require("http"));
|
|
8
8
|
const mime_1 = require("./mime");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const requestMock = {
|
|
17
|
-
method: "GET",
|
|
18
|
-
header: jest.fn(() => mime_1.mimeJson),
|
|
19
|
-
...requestProps,
|
|
20
|
-
};
|
|
9
|
+
const makeRequestMock = (requestProps) => ({
|
|
10
|
+
method: "GET",
|
|
11
|
+
header: jest.fn(() => mime_1.mimeJson),
|
|
12
|
+
...requestProps,
|
|
13
|
+
});
|
|
14
|
+
exports.makeRequestMock = makeRequestMock;
|
|
15
|
+
const makeResponseMock = (responseProps) => {
|
|
21
16
|
const responseMock = {
|
|
22
17
|
writableEnded: false,
|
|
23
18
|
statusCode: 200,
|
|
@@ -35,6 +30,18 @@ const testEndpoint = async ({ endpoint, requestProps, responseProps, configProps
|
|
|
35
30
|
}),
|
|
36
31
|
...responseProps,
|
|
37
32
|
};
|
|
33
|
+
return responseMock;
|
|
34
|
+
};
|
|
35
|
+
exports.makeResponseMock = makeResponseMock;
|
|
36
|
+
/**
|
|
37
|
+
* @description You need to install Jest and probably @types/jest to use this method
|
|
38
|
+
*/
|
|
39
|
+
const testEndpoint = async ({ endpoint, requestProps, responseProps, configProps, loggerProps, __noJest, }) => {
|
|
40
|
+
if (!jest || __noJest) {
|
|
41
|
+
throw new Error("You need to install Jest in order to use testEndpoint().");
|
|
42
|
+
}
|
|
43
|
+
const requestMock = (0, exports.makeRequestMock)(requestProps);
|
|
44
|
+
const responseMock = (0, exports.makeResponseMock)(responseProps);
|
|
38
45
|
const loggerMock = {
|
|
39
46
|
info: jest.fn(),
|
|
40
47
|
warn: jest.fn(),
|
package/dist/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AAIxB,iCAAkC;
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AAIxB,iCAAkC;AAY3B,MAAM,eAAe,GAAG,CAAM,YAAkB,EAAE,EAAE,CACzD,CAGC;IACC,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,eAAQ,CAAC;IAC/B,GAAG,YAAY;CAChB,CAAA,CAAC;AARS,QAAA,eAAe,mBAQxB;AAEG,MAAM,gBAAgB,GAAG,CAAM,aAAmB,EAAE,EAAE;IAC3D,MAAM,YAAY,GAOjB;QACC,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,cAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QACrC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE;YAC/B,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/B,YAAY,CAAC,aAAa,GAAG,cAAI,CAAC,YAAY,CAAC,IAAI,CAAE,CAAC;YACtD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QACF,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;QACjC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YAChB,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC;YAClC,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QACF,GAAG,aAAa;KACjB,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA1BW,QAAA,gBAAgB,oBA0B3B;AAEF;;GAEG;AACI,MAAM,YAAY,GAAG,KAAK,EAI/B,EACA,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,GACyB,EAAE,EAAE;IACrC,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;KAC7E;IACD,MAAM,WAAW,GAAG,IAAA,uBAAe,EAAC,YAAY,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,wBAAgB,EAAC,aAAa,CAAC,CAAC;IACrD,MAAM,UAAU,GAGf;QACC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,GAAG,WAAW;KACf,CAAC;IACF,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,UAAU;QAClB,GAAG,WAAW;KACf,CAAC;IACF,MAAM,QAAQ,CAAC,OAAO,CAAC;QACrB,OAAO,EAAE,WAAiC;QAC1C,QAAQ,EAAE,YAAmC;QAC7C,MAAM,EAAE,UAA0B;QAClC,MAAM,EAAE,UAA+B;KACxC,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC,CAAC;AAvCW,QAAA,YAAY,gBAuCvB"}
|
|
@@ -10,8 +10,8 @@ import { LogicalContainer } from "./logical-container";
|
|
|
10
10
|
import { Method } from "./method";
|
|
11
11
|
import { Security } from "./security";
|
|
12
12
|
import { ZodUpload } from "./upload-schema";
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
type MediaExamples = Pick<MediaTypeObject, "examples">;
|
|
14
|
+
type DepictHelper<T extends z.ZodType<any>> = (params: {
|
|
15
15
|
schema: T;
|
|
16
16
|
initial?: SchemaObject;
|
|
17
17
|
isResponse: boolean;
|
package/dist/open-api.js
CHANGED
|
@@ -7,6 +7,17 @@ const logical_container_1 = require("./logical-container");
|
|
|
7
7
|
const open_api_helpers_1 = require("./open-api-helpers");
|
|
8
8
|
const routing_1 = require("./routing");
|
|
9
9
|
class OpenAPI extends openapi3_ts_1.OpenApiBuilder {
|
|
10
|
+
ensureUniqSecuritySchemaName(subject) {
|
|
11
|
+
for (const name in this.rootDoc.components?.securitySchemes || {}) {
|
|
12
|
+
if (JSON.stringify(subject) ===
|
|
13
|
+
JSON.stringify(this.rootDoc.components?.securitySchemes?.[name])) {
|
|
14
|
+
return name;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
this.lastSecuritySchemaIds[subject.type] =
|
|
18
|
+
(this.lastSecuritySchemaIds?.[subject.type] || 0) + 1;
|
|
19
|
+
return `${subject.type.toUpperCase()}_${this.lastSecuritySchemaIds[subject.type]}`;
|
|
20
|
+
}
|
|
10
21
|
constructor({ routing, config, title, version, serverUrl, successfulResponseDescription = "Successful response", errorResponseDescription = "Error response", hasSummaryFromDescription = true, }) {
|
|
11
22
|
super();
|
|
12
23
|
this.lastSecuritySchemaIds = {};
|
|
@@ -65,24 +76,12 @@ class OpenAPI extends openapi3_ts_1.OpenApiBuilder {
|
|
|
65
76
|
}
|
|
66
77
|
const swaggerCompatiblePath = (0, open_api_helpers_1.reformatParamsInPath)(path);
|
|
67
78
|
this.addPath(swaggerCompatiblePath, {
|
|
68
|
-
...(this.rootDoc.paths?.[swaggerCompatiblePath] || {}),
|
|
69
79
|
[method]: operation,
|
|
70
80
|
});
|
|
71
81
|
};
|
|
72
82
|
(0, routing_1.routingCycle)({ routing, endpointCb });
|
|
73
83
|
this.rootDoc.tags = config.tags ? (0, open_api_helpers_1.depictTags)(config.tags) : [];
|
|
74
84
|
}
|
|
75
|
-
ensureUniqSecuritySchemaName(subject) {
|
|
76
|
-
for (const name in this.rootDoc.components?.securitySchemes || {}) {
|
|
77
|
-
if (JSON.stringify(subject) ===
|
|
78
|
-
JSON.stringify(this.rootDoc.components?.securitySchemes?.[name])) {
|
|
79
|
-
return name;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
this.lastSecuritySchemaIds[subject.type] =
|
|
83
|
-
(this.lastSecuritySchemaIds?.[subject.type] || 0) + 1;
|
|
84
|
-
return `${subject.type.toUpperCase()}_${this.lastSecuritySchemaIds[subject.type]}`;
|
|
85
|
-
}
|
|
86
85
|
}
|
|
87
86
|
exports.OpenAPI = OpenAPI;
|
|
88
87
|
//# sourceMappingURL=open-api.js.map
|
package/dist/open-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-api.js","sourceRoot":"","sources":["../src/open-api.ts"],"names":[],"mappings":";;;AAAA,6CAKqB;AACrB,qDAAuD;AAEvD,2DAA0D;AAE1D,yDAS4B;AAC5B,uCAAsE;AAgBtE,MAAa,OAAQ,SAAQ,4BAAc;
|
|
1
|
+
{"version":3,"file":"open-api.js","sourceRoot":"","sources":["../src/open-api.ts"],"names":[],"mappings":"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"}
|
package/dist/result-handler.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ interface ResultHandlerParams<RES> {
|
|
|
17
17
|
response: Response<RES>;
|
|
18
18
|
logger: Logger;
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
type ResultHandler<RES> = (params: ResultHandlerParams<RES>) => void | Promise<void>;
|
|
21
21
|
export interface ResultHandlerDefinition<POS extends ApiResponse, NEG extends ApiResponse> {
|
|
22
22
|
getPositiveResponse: (output: IOSchema) => POS;
|
|
23
23
|
getNegativeResponse: () => NEG;
|
package/dist/routing.js
CHANGED
|
@@ -35,7 +35,9 @@ const routingCycle = ({ routing, endpointCb, staticCb, parentPath, hasCors, }) =
|
|
|
35
35
|
endpointCb(endpoint, path, method);
|
|
36
36
|
});
|
|
37
37
|
if (hasCors && Object.keys(element.methods).length > 0) {
|
|
38
|
-
const
|
|
38
|
+
const [firstMethod, ...siblingMethods] = Object.keys(element.methods);
|
|
39
|
+
const firstEndpoint = element.methods[firstMethod];
|
|
40
|
+
firstEndpoint._setSiblingMethods(siblingMethods);
|
|
39
41
|
endpointCb(firstEndpoint, path, "options");
|
|
40
42
|
}
|
|
41
43
|
}
|
package/dist/routing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":";;;AAGA,2DAAsD;AACtD,yCAA8C;AAC9C,qCAAwC;AAExC,iDAA4D;AAC5D,iDAAgD;AAkBzC,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAO,GACY,EAAE,EAAE;IACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;QACrD,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,IAAI,qBAAY,CACpB,sDAAsD;gBACpD,uBACE,UAAU;oBACR,CAAC,CAAC,IAAI,UAAU,uBAAuB,OAAO,GAAG;oBACjD,CAAC,CAAC,IAAI,OAAO,GACjB,SAAS,CACZ,CAAC;SACH;QACD,MAAM,IAAI,GAAG,GAAG,UAAU,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClE,IAAI,OAAO,YAAY,2BAAgB,EAAE;YACvC,MAAM,OAAO,GAA2B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;YACrE,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzB;YACD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzB,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,YAAY,0BAAW,EAAE;YACzC,IAAI,QAAQ,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC/B;SACF;aAAM,IAAI,OAAO,YAAY,mCAAe,EAAE;YAC7C,MAAM,CAAC,OAAO,CAAmB,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CACvD,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACrB,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAgB,CAAC,CAAC;YAC/C,CAAC,CACF,CAAC;YACF,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtD,MAAM,
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
|
package/dist/security.d.ts
CHANGED
|
@@ -44,10 +44,10 @@ interface Scopes<K extends string> {
|
|
|
44
44
|
/** @desc The available scopes for the OAuth2 security and their short descriptions. Optional. */
|
|
45
45
|
scopes?: Record<K, string>;
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
type AuthCodeFlow<S extends string> = AuthUrl & TokenUrl & RefreshUrl & Scopes<S>;
|
|
48
|
+
type ImplicitFlow<S extends string> = AuthUrl & RefreshUrl & Scopes<S>;
|
|
49
|
+
type PasswordFlow<S extends string> = TokenUrl & RefreshUrl & Scopes<S>;
|
|
50
|
+
type ClientCredFlow<S extends string> = TokenUrl & RefreshUrl & Scopes<S>;
|
|
51
51
|
/**
|
|
52
52
|
* @see https://swagger.io/docs/specification/authentication/oauth2/
|
|
53
53
|
*/
|
|
@@ -68,5 +68,5 @@ interface OAuth2Security<S extends string> {
|
|
|
68
68
|
* @desc K is an optional input field used by InputSecurity
|
|
69
69
|
* @desc S is an optional union of scopes used by OAuth2Security
|
|
70
70
|
* */
|
|
71
|
-
export
|
|
71
|
+
export type Security<K extends string = string, S extends string = string> = BasicSecurity | BearerSecurity | InputSecurity<K> | CustomHeaderSecurity | CookieSecurity | OpenIdSecurity | OAuth2Security<S>;
|
|
72
72
|
export {};
|
package/dist/serve-static.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import express from "express";
|
|
2
|
-
|
|
3
|
-
export
|
|
2
|
+
type OriginalStatic = typeof express.static;
|
|
3
|
+
export type StaticHandler = ReturnType<OriginalStatic>;
|
|
4
4
|
export declare class ServeStatic {
|
|
5
5
|
params: Parameters<OriginalStatic>;
|
|
6
6
|
constructor(...params: Parameters<OriginalStatic>);
|
package/dist-esm/endpoint.js
CHANGED
|
@@ -16,6 +16,7 @@ export class Endpoint extends AbstractEndpoint {
|
|
|
16
16
|
super();
|
|
17
17
|
_Endpoint_instances.add(this);
|
|
18
18
|
this.methods = [];
|
|
19
|
+
this.siblingMethods = [];
|
|
19
20
|
this.middlewares = [];
|
|
20
21
|
[
|
|
21
22
|
{ name: "input schema", schema: inputSchema },
|
|
@@ -53,6 +54,13 @@ export class Endpoint extends AbstractEndpoint {
|
|
|
53
54
|
this.methods = [rest.method];
|
|
54
55
|
}
|
|
55
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* @desc Sets the other methods supported by the same path. Used by Routing in DependsOnMethod case, for options.
|
|
59
|
+
* @deprecated This method is for internal needs of the library, please avoid using it.
|
|
60
|
+
* */
|
|
61
|
+
_setSiblingMethods(methods) {
|
|
62
|
+
this.siblingMethods = methods;
|
|
63
|
+
}
|
|
56
64
|
getDescription(variant) {
|
|
57
65
|
return this.descriptions[variant];
|
|
58
66
|
}
|
|
@@ -140,6 +148,7 @@ export class Endpoint extends AbstractEndpoint {
|
|
|
140
148
|
}
|
|
141
149
|
_Endpoint_instances = new WeakSet(), _Endpoint_getDefaultCorsHeaders = function _Endpoint_getDefaultCorsHeaders() {
|
|
142
150
|
const accessMethods = this.methods
|
|
151
|
+
.concat(this.siblingMethods)
|
|
143
152
|
.concat("options")
|
|
144
153
|
.join(", ")
|
|
145
154
|
.toUpperCase();
|
package/dist-esm/endpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":";;;;;;AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAEL,eAAe,EACf,QAAQ,EACR,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAoB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAA2B,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAS9E,MAAM,OAAgB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":";;;;;;AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAEL,eAAe,EACf,QAAQ,EACR,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAoB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAA2B,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAS9E,MAAM,OAAgB,gBAAgB;CAoBrC;AAwBD,MAAM,OAAO,QASX,SAAQ,gBAAgB;IAaxB,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAO,EACP,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,GAAG,IAAI,EAC4C;QACnD,KAAK,EAAE,CAAC;;QAtBS,YAAO,GAAQ,EAAE,CAAC;QAC3B,mBAAc,GAAa,EAAE,CAAC;QACrB,gBAAW,GAAuB,EAAE,CAAC;QAqBtD;YACE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;YAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE;SAChD,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;YAC7B,IAAI,6BAA6B,CAAC,MAAM,CAAC,EAAE;gBACzC,MAAM,IAAI,aAAa,CACrB,sDAAsD,IAAI,kBAAkB,CAC7E,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC;QACD,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9B;QACD,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1B;QACD,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;IACH,CAAC;IAED;;;SAGK;IACW,kBAAkB,CAAC,OAAiB;QAClD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAEe,cAAc,CAAC,OAAyB;QACtD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEe,UAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEe,cAAc;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEe,eAAe;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEe,yBAAyB;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;IAC1E,CAAC;IAEe,yBAAyB;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC;IACzD,CAAC;IAEe,iBAAiB;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEe,oBAAoB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAEe,oBAAoB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC;IAC5D,CAAC;IAEe,WAAW;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAClB,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EACzE,EAAE,GAAG,EAAE,EAAE,EAAE,CACZ,CAAC;IACJ,CAAC;IAEe,SAAS;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEe,OAAO;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IA+He,KAAK,CAAC,OAAO,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,MAAM,GAMP;QACC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,MAAW,CAAC;QAChB,IAAI,KAAK,GAAiB,IAAI,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,IAAI,OAAO,GAAG,uBAAA,IAAI,4DAAuB,MAA3B,IAAI,CAAyB,CAAC;YAC5C,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;gBACrC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;oBAC1B,OAAO;oBACP,MAAM;oBACN,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE,OAAO;iBACxB,CAAC,CAAC;aACJ;YACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aACjC;SACF;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI;YACF,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,uBAAA,IAAI,qDAAgB,MAApB,IAAI,EAAiB;gBAC7D,MAAM;gBACN,KAAK;gBACL,OAAO;gBACP,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;YACH,IAAI,cAAc,EAAE;gBAClB,OAAO;aACR;YACD,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC3B,OAAO;aACR;YACD,MAAM,GAAG,MAAM,uBAAA,IAAI,kDAAa,MAAjB,IAAI,EACjB,MAAM,uBAAA,IAAI,yDAAoB,MAAxB,IAAI,EAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAC3D,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,KAAK,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,MAAM,uBAAA,IAAI,mDAAc,MAAlB,IAAI,EAAe;YACvB,KAAK;YACL,MAAM;YACN,OAAO;YACP,QAAQ;YACR,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF;;IAvLG,MAAM,aAAa,GAAI,IAAI,CAAC,OAAqC;SAC9D,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;SAC3B,MAAM,CAAC,SAAS,CAAC;SACjB,IAAI,CAAC,IAAI,CAAC;SACV,WAAW,EAAE,CAAC;IACjB,OAAO;QACL,6BAA6B,EAAE,GAAG;QAClC,8BAA8B,EAAE,aAAa;QAC7C,8BAA8B,EAAE,cAAc;KAC/C,CAAC;AACJ,CAAC,0BAED,KAAK,gCAAc,MAAW;IAC5B,IAAI;QACF,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACnD;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;YAC3B,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC;gBACnB;oBACE,OAAO,EAAE,gBAAgB;oBACzB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,CAAC;iBACjB;gBACD,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1B,GAAG,KAAK;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;iBACxD,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QACD,MAAM,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAChC;AACH,CAAC,6BAED,KAAK,mCAAiB,EACpB,MAAM,EACN,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,GAOP;IACC,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE;YACtD,SAAS;SACV;QACD,MAAM,CAAC,MAAM,CACX,OAAO,EACP,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,KAAK,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;YACxC,OAAO;YACP,OAAO;YACP,QAAQ;YACR,MAAM;SACP,CAAC,CACH,CAAC;QACF,cAAc,GAAG,eAAe,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC;QACvE,IAAI,cAAc,EAAE;YAClB,MAAM,CAAC,IAAI,CACT,kBAAkB,GAAG,CAAC,UAAU,CAAC,IAAI,8CAA8C,EACnF,OAAO,CACR,CAAC;YACF,MAAM;SACP;KACF;IACD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AACrC,CAAC,iCAED,KAAK,uCAAqB,EACxB,KAAK,EACL,OAAO,EACP,MAAM,GAKP;IACC,OAAO,IAAI,CAAC,OAAO,CAAC;QAClB,gDAAgD;QAChD,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAiB;QACjE,OAAO;QACP,MAAM;KACP,CAAC,CAAC;AACL,CAAC,2BAED,KAAK,iCAAe,EAClB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,GAQP;IACC,IAAI;QACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC/B,KAAK;YACL,MAAM;YACN,OAAO;YACP,QAAQ;YACR,MAAM;YACN,KAAK;SACN,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,iBAAiB,CAAC;YAChB,MAAM;YACN,QAAQ;YACR,KAAK,EAAE,IAAI,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;SACvE,CAAC,CAAC;KACJ;AACH,CAAC"}
|
package/dist-esm/mock.js
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
import http from "http";
|
|
2
2
|
import { mimeJson } from "./mime.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
const requestMock = {
|
|
11
|
-
method: "GET",
|
|
12
|
-
header: jest.fn(() => mimeJson),
|
|
13
|
-
...requestProps,
|
|
14
|
-
};
|
|
3
|
+
export const makeRequestMock = (requestProps) => ({
|
|
4
|
+
method: "GET",
|
|
5
|
+
header: jest.fn(() => mimeJson),
|
|
6
|
+
...requestProps,
|
|
7
|
+
});
|
|
8
|
+
export const makeResponseMock = (responseProps) => {
|
|
15
9
|
const responseMock = {
|
|
16
10
|
writableEnded: false,
|
|
17
11
|
statusCode: 200,
|
|
@@ -29,6 +23,17 @@ export const testEndpoint = async ({ endpoint, requestProps, responseProps, conf
|
|
|
29
23
|
}),
|
|
30
24
|
...responseProps,
|
|
31
25
|
};
|
|
26
|
+
return responseMock;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* @description You need to install Jest and probably @types/jest to use this method
|
|
30
|
+
*/
|
|
31
|
+
export const testEndpoint = async ({ endpoint, requestProps, responseProps, configProps, loggerProps, __noJest, }) => {
|
|
32
|
+
if (!jest || __noJest) {
|
|
33
|
+
throw new Error("You need to install Jest in order to use testEndpoint().");
|
|
34
|
+
}
|
|
35
|
+
const requestMock = makeRequestMock(requestProps);
|
|
36
|
+
const responseMock = makeResponseMock(responseProps);
|
|
32
37
|
const loggerMock = {
|
|
33
38
|
info: jest.fn(),
|
|
34
39
|
warn: jest.fn(),
|
package/dist-esm/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAYlC
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAYlC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAM,YAAkB,EAAE,EAAE,CACzD,CAGC;IACC,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;IAC/B,GAAG,YAAY;CAChB,CAAA,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAM,aAAmB,EAAE,EAAE;IAC3D,MAAM,YAAY,GAOjB;QACC,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QACrC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE;YAC/B,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/B,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,CAAC;YACtD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QACF,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;QACjC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YAChB,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC;YAClC,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QACF,GAAG,aAAa;KACjB,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAI/B,EACA,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,GACyB,EAAE,EAAE;IACrC,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;KAC7E;IACD,MAAM,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,UAAU,GAGf;QACC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,GAAG,WAAW;KACf,CAAC;IACF,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,UAAU;QAClB,GAAG,WAAW;KACf,CAAC;IACF,MAAM,QAAQ,CAAC,OAAO,CAAC;QACrB,OAAO,EAAE,WAAiC;QAC1C,QAAQ,EAAE,YAAmC;QAC7C,MAAM,EAAE,UAA0B;QAClC,MAAM,EAAE,UAA+B;KACxC,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC,CAAC"}
|
package/dist-esm/open-api.js
CHANGED
|
@@ -4,6 +4,17 @@ import { mapLogicalContainer } from "./logical-container.js";
|
|
|
4
4
|
import { depictRequest, depictRequestParams, depictResponse, depictSecurity, depictSecurityRefs, depictTags, ensureShortDescription, reformatParamsInPath, } from "./open-api-helpers.js";
|
|
5
5
|
import { routingCycle } from "./routing.js";
|
|
6
6
|
export class OpenAPI extends OpenApiBuilder {
|
|
7
|
+
ensureUniqSecuritySchemaName(subject) {
|
|
8
|
+
for (const name in this.rootDoc.components?.securitySchemes || {}) {
|
|
9
|
+
if (JSON.stringify(subject) ===
|
|
10
|
+
JSON.stringify(this.rootDoc.components?.securitySchemes?.[name])) {
|
|
11
|
+
return name;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
this.lastSecuritySchemaIds[subject.type] =
|
|
15
|
+
(this.lastSecuritySchemaIds?.[subject.type] || 0) + 1;
|
|
16
|
+
return `${subject.type.toUpperCase()}_${this.lastSecuritySchemaIds[subject.type]}`;
|
|
17
|
+
}
|
|
7
18
|
constructor({ routing, config, title, version, serverUrl, successfulResponseDescription = "Successful response", errorResponseDescription = "Error response", hasSummaryFromDescription = true, }) {
|
|
8
19
|
super();
|
|
9
20
|
this.lastSecuritySchemaIds = {};
|
|
@@ -62,23 +73,11 @@ export class OpenAPI extends OpenApiBuilder {
|
|
|
62
73
|
}
|
|
63
74
|
const swaggerCompatiblePath = reformatParamsInPath(path);
|
|
64
75
|
this.addPath(swaggerCompatiblePath, {
|
|
65
|
-
...(this.rootDoc.paths?.[swaggerCompatiblePath] || {}),
|
|
66
76
|
[method]: operation,
|
|
67
77
|
});
|
|
68
78
|
};
|
|
69
79
|
routingCycle({ routing, endpointCb });
|
|
70
80
|
this.rootDoc.tags = config.tags ? depictTags(config.tags) : [];
|
|
71
81
|
}
|
|
72
|
-
ensureUniqSecuritySchemaName(subject) {
|
|
73
|
-
for (const name in this.rootDoc.components?.securitySchemes || {}) {
|
|
74
|
-
if (JSON.stringify(subject) ===
|
|
75
|
-
JSON.stringify(this.rootDoc.components?.securitySchemes?.[name])) {
|
|
76
|
-
return name;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
this.lastSecuritySchemaIds[subject.type] =
|
|
80
|
-
(this.lastSecuritySchemaIds?.[subject.type] || 0) + 1;
|
|
81
|
-
return `${subject.type.toUpperCase()}_${this.lastSecuritySchemaIds[subject.type]}`;
|
|
82
|
-
}
|
|
83
82
|
}
|
|
84
83
|
//# sourceMappingURL=open-api.js.map
|
package/dist-esm/open-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-api.js","sourceRoot":"","sources":["../src/open-api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA+B,YAAY,EAAE,MAAM,WAAW,CAAC;AAgBtE,MAAM,OAAO,OAAQ,SAAQ,cAAc;
|
|
1
|
+
{"version":3,"file":"open-api.js","sourceRoot":"","sources":["../src/open-api.ts"],"names":[],"mappings":"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"}
|
package/dist-esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"module","version":"8.
|
|
1
|
+
{"type":"module","version":"8.4.1"}
|
package/dist-esm/routing.js
CHANGED
|
@@ -32,7 +32,9 @@ export const routingCycle = ({ routing, endpointCb, staticCb, parentPath, hasCor
|
|
|
32
32
|
endpointCb(endpoint, path, method);
|
|
33
33
|
});
|
|
34
34
|
if (hasCors && Object.keys(element.methods).length > 0) {
|
|
35
|
-
const
|
|
35
|
+
const [firstMethod, ...siblingMethods] = Object.keys(element.methods);
|
|
36
|
+
const firstEndpoint = element.methods[firstMethod];
|
|
37
|
+
firstEndpoint._setSiblingMethods(siblingMethods);
|
|
36
38
|
endpointCb(firstEndpoint, path, "options");
|
|
37
39
|
}
|
|
38
40
|
}
|
package/dist-esm/routing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAkBhD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAO,GACY,EAAE,EAAE;IACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;QACrD,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,IAAI,YAAY,CACpB,sDAAsD;gBACpD,uBACE,UAAU;oBACR,CAAC,CAAC,IAAI,UAAU,uBAAuB,OAAO,GAAG;oBACjD,CAAC,CAAC,IAAI,OAAO,GACjB,SAAS,CACZ,CAAC;SACH;QACD,MAAM,IAAI,GAAG,GAAG,UAAU,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClE,IAAI,OAAO,YAAY,gBAAgB,EAAE;YACvC,MAAM,OAAO,GAA2B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;YACrE,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzB;YACD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzB,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,YAAY,WAAW,EAAE;YACzC,IAAI,QAAQ,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC/B;SACF;aAAM,IAAI,OAAO,YAAY,eAAe,EAAE;YAC7C,MAAM,CAAC,OAAO,CAAmB,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CACvD,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACrB,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAgB,CAAC,CAAC;YAC/C,CAAC,CACF,CAAC;YACF,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtD,MAAM,
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "express-zod-api",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.4.1",
|
|
4
4
|
"description": "A Typescript library to help you get an API server up and running with I/O schema validation and custom middlewares in minutes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"scripts": {
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"express-fileupload": "1.4.0",
|
|
47
47
|
"http-errors": "2.0.0",
|
|
48
48
|
"mime": "3.0.0",
|
|
49
|
-
"openapi3-ts": "3.1.
|
|
49
|
+
"openapi3-ts": "3.1.2",
|
|
50
50
|
"ramda": "0.28.0",
|
|
51
51
|
"triple-beam": "1.3.0",
|
|
52
52
|
"winston": "3.8.2",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"make-coverage-badge": "^1.2.0",
|
|
96
96
|
"mockdate": "^3.0.5",
|
|
97
97
|
"node-fetch": "^2.6.7",
|
|
98
|
-
"prettier": "2.
|
|
98
|
+
"prettier": "2.8.0",
|
|
99
99
|
"strip-ansi": "^6.0.1",
|
|
100
100
|
"ts-jest": "^29.0.0",
|
|
101
101
|
"ts-node": "^10.9.1",
|