express-endpoints-collection 1.0.0 → 1.0.2
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/README.md +15 -19
- package/dist/generator.d.ts +7 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +53 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/types/EndpointArgs.d.ts +13 -0
- package/dist/types/EndpointArgs.d.ts.map +1 -0
- package/dist/types/EndpointArgs.js +3 -0
- package/dist/types/EndpointArgs.js.map +1 -0
- package/dist/types/EndpointInfo.d.ts +11 -0
- package/dist/types/EndpointInfo.d.ts.map +1 -0
- package/dist/types/EndpointInfo.js +3 -0
- package/dist/types/EndpointInfo.js.map +1 -0
- package/dist/types/EndpointInputSchema.d.ts +8 -0
- package/dist/types/EndpointInputSchema.d.ts.map +1 -0
- package/dist/types/EndpointInputSchema.js +3 -0
- package/dist/types/EndpointInputSchema.js.map +1 -0
- package/dist/types/EndpointOutputSchema.d.ts +7 -0
- package/dist/types/EndpointOutputSchema.d.ts.map +1 -0
- package/dist/types/EndpointOutputSchema.js +3 -0
- package/dist/types/EndpointOutputSchema.js.map +1 -0
- package/dist/types/HttpMethod.d.ts +2 -0
- package/dist/types/HttpMethod.d.ts.map +1 -0
- package/dist/types/HttpMethod.js +3 -0
- package/dist/types/HttpMethod.js.map +1 -0
- package/dist/types/TypedRequest.d.ts +9 -0
- package/dist/types/TypedRequest.d.ts.map +1 -0
- package/dist/types/TypedRequest.js +3 -0
- package/dist/types/TypedRequest.js.map +1 -0
- package/dist/types/TypedRequestHandler.d.ts +6 -0
- package/dist/types/TypedRequestHandler.d.ts.map +1 -0
- package/dist/types/TypedRequestHandler.js +3 -0
- package/dist/types/TypedRequestHandler.js.map +1 -0
- package/dist/types/TypedResponse.d.ts +11 -0
- package/dist/types/TypedResponse.d.ts.map +1 -0
- package/dist/types/TypedResponse.js +3 -0
- package/dist/types/TypedResponse.js.map +1 -0
- package/package.json +19 -1
package/README.md
CHANGED
|
@@ -12,16 +12,16 @@ You can configure exposed endpoints, request and response schemas, and validatio
|
|
|
12
12
|
|
|
13
13
|
## Features
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
- Fully typed endpoints (TypeScript hints and checks)
|
|
16
|
+
- Request body
|
|
17
|
+
- Response body
|
|
18
|
+
- Query parameters
|
|
19
|
+
- Path parameters
|
|
20
|
+
- Headers
|
|
21
|
+
- Automatic OpenAPI 3 schema generation
|
|
22
|
+
- Request and response validation using Zod
|
|
23
|
+
- Middleware support
|
|
24
|
+
- Minimal setup
|
|
25
25
|
|
|
26
26
|
## Installation
|
|
27
27
|
|
|
@@ -128,7 +128,7 @@ paths:
|
|
|
128
128
|
- a
|
|
129
129
|
- b
|
|
130
130
|
responses:
|
|
131
|
-
|
|
131
|
+
"200":
|
|
132
132
|
description: Response for status code 200
|
|
133
133
|
content:
|
|
134
134
|
application/json:
|
|
@@ -171,10 +171,7 @@ or as JSON
|
|
|
171
171
|
"type": "number"
|
|
172
172
|
}
|
|
173
173
|
},
|
|
174
|
-
"required": [
|
|
175
|
-
"a",
|
|
176
|
-
"b"
|
|
177
|
-
]
|
|
174
|
+
"required": ["a", "b"]
|
|
178
175
|
}
|
|
179
176
|
}
|
|
180
177
|
}
|
|
@@ -191,9 +188,7 @@ or as JSON
|
|
|
191
188
|
"type": "number"
|
|
192
189
|
}
|
|
193
190
|
},
|
|
194
|
-
"required": [
|
|
195
|
-
"result"
|
|
196
|
-
]
|
|
191
|
+
"required": ["result"]
|
|
197
192
|
}
|
|
198
193
|
}
|
|
199
194
|
}
|
|
@@ -216,4 +211,5 @@ Type inference and checks:
|
|
|
216
211
|

|
|
217
212
|
|
|
218
213
|
### License
|
|
219
|
-
|
|
214
|
+
|
|
215
|
+
MIT
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EndpointInfo } from "./types/EndpointInfo";
|
|
2
|
+
export declare function generateOpenAPI({ title, version, endpoints, }: {
|
|
3
|
+
title: string;
|
|
4
|
+
version: string;
|
|
5
|
+
endpoints: EndpointInfo[];
|
|
6
|
+
}): import("openapi3-ts/oas30").OpenAPIObject;
|
|
7
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAWpD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B,6CAmDA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateOpenAPI = generateOpenAPI;
|
|
4
|
+
const zod_to_openapi_1 = require("@asteasolutions/zod-to-openapi");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
(0, zod_to_openapi_1.extendZodWithOpenApi)(zod_1.z);
|
|
7
|
+
function generateOpenAPI({ title, version, endpoints, }) {
|
|
8
|
+
const registry = new zod_to_openapi_1.OpenAPIRegistry();
|
|
9
|
+
endpoints.forEach((endpoint) => {
|
|
10
|
+
const openapiPath = endpoint.path.replace(/:(\w+)/g, "{$1}");
|
|
11
|
+
const responses = {};
|
|
12
|
+
for (const outputSchema of endpoint.outputSchema) {
|
|
13
|
+
responses[outputSchema.status.toString()] = {
|
|
14
|
+
description: outputSchema.description ||
|
|
15
|
+
`Response for status code ${outputSchema.status}`,
|
|
16
|
+
content: outputSchema.body
|
|
17
|
+
? {
|
|
18
|
+
"application/json": {
|
|
19
|
+
schema: outputSchema.body,
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
: undefined,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
registry.registerPath({
|
|
26
|
+
method: endpoint.method,
|
|
27
|
+
path: openapiPath,
|
|
28
|
+
summary: endpoint.summary || "",
|
|
29
|
+
request: {
|
|
30
|
+
params: endpoint.inputSchema?.params,
|
|
31
|
+
query: endpoint.inputSchema?.query,
|
|
32
|
+
body: endpoint.inputSchema?.body
|
|
33
|
+
? {
|
|
34
|
+
content: {
|
|
35
|
+
"application/json": { schema: endpoint.inputSchema.body },
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
: undefined,
|
|
39
|
+
headers: endpoint.inputSchema?.headers,
|
|
40
|
+
},
|
|
41
|
+
responses,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
const generator = new zod_to_openapi_1.OpenApiGeneratorV3(registry.definitions);
|
|
45
|
+
return generator.generateDocument({
|
|
46
|
+
openapi: "3.0.0",
|
|
47
|
+
info: {
|
|
48
|
+
title,
|
|
49
|
+
version,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;AAWA,0CA2DC;AArED,mEAKwC;AACxC,6BAAwB;AAExB,IAAA,qCAAoB,EAAC,OAAC,CAAC,CAAC;AAExB,SAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,SAAS,GAKV;IACC,MAAM,QAAQ,GAAG,IAAI,gCAAe,EAAE,CAAC;IAEvC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAmC,EAAE,CAAC;QAErD,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YACjD,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG;gBAC1C,WAAW,EACT,YAAY,CAAC,WAAW;oBACxB,4BAA4B,YAAY,CAAC,MAAM,EAAE;gBACnD,OAAO,EAAE,YAAY,CAAC,IAAI;oBACxB,CAAC,CAAC;wBACE,kBAAkB,EAAE;4BAClB,MAAM,EAAE,YAAY,CAAC,IAAI;yBAC1B;qBACF;oBACH,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,YAAY,CAAC;YACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;YAC/B,OAAO,EAAE;gBACP,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM;gBACpC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK;gBAClC,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI;oBAC9B,CAAC,CAAC;wBACE,OAAO,EAAE;4BACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;yBAC1D;qBACF;oBACH,CAAC,CAAC,SAAS;gBACb,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO;aACvC;YACD,SAAS;SACV,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,mCAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE/D,OAAO,SAAS,CAAC,gBAAgB,CAAC;QAChC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ,KAAK;YACL,OAAO;SACR;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RequestHandler } from "express";
|
|
2
|
+
import { EndpointInputSchema } from "./types/EndpointInputSchema";
|
|
3
|
+
import { EndpointOutputSchema } from "./types/EndpointOutputSchema";
|
|
4
|
+
import { EndpointInfo } from "./types/EndpointInfo";
|
|
5
|
+
import { EndpointArgs } from "./types/EndpointArgs";
|
|
6
|
+
import { HttpMethod } from "./types/HttpMethod";
|
|
7
|
+
import { TypedRequestHandler } from "./types/TypedRequestHandler";
|
|
8
|
+
export declare class EndpointsCollection {
|
|
9
|
+
private endpoints;
|
|
10
|
+
private router;
|
|
11
|
+
constructor();
|
|
12
|
+
private static validateInput;
|
|
13
|
+
private static validateOutput;
|
|
14
|
+
callOriginal(method: HttpMethod, path: string, { inputSchema, outputSchema, summary, afterOutput, beforeOutput, afterInput, beforeInput, }: EndpointArgs<EndpointInputSchema, EndpointOutputSchema>, handlers: RequestHandler | RequestHandler[] | TypedRequestHandler<any, any>): import("express-serve-static-core").Router;
|
|
15
|
+
get<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
16
|
+
post<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handler: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
17
|
+
put<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
18
|
+
delete<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
19
|
+
patch<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
20
|
+
options<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
21
|
+
head<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
22
|
+
trace<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
23
|
+
getEndpoints(): EndpointInfo[];
|
|
24
|
+
getRouter(): import("express-serve-static-core").Router;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EndpointsCollection = void 0;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
class EndpointsCollection {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.endpoints = [];
|
|
9
|
+
this.router = (0, express_1.Router)();
|
|
10
|
+
}
|
|
11
|
+
static validateInput(schema) {
|
|
12
|
+
return (req, res, next) => {
|
|
13
|
+
try {
|
|
14
|
+
if (schema.query)
|
|
15
|
+
schema.query.parse(req.query);
|
|
16
|
+
if (schema.body)
|
|
17
|
+
schema.body.parse(req.body);
|
|
18
|
+
if (schema.params)
|
|
19
|
+
schema.params.parse(req.params);
|
|
20
|
+
if (schema.headers)
|
|
21
|
+
schema.headers.parse(req.headers);
|
|
22
|
+
next();
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
26
|
+
return res.status(400).json({
|
|
27
|
+
error: error.errors,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
next(error);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
static validateOutput(schema) {
|
|
35
|
+
return (req, res, next) => {
|
|
36
|
+
const originalJson = res.json;
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
res.json = (body) => {
|
|
39
|
+
const status = res.statusCode;
|
|
40
|
+
const schemaForStatus = schema.find((s) => s.status === status);
|
|
41
|
+
try {
|
|
42
|
+
if (schemaForStatus?.body) {
|
|
43
|
+
schemaForStatus.body.parse(body);
|
|
44
|
+
}
|
|
45
|
+
originalJson.call(res, body);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
49
|
+
console.error("Error in response validation", error.errors);
|
|
50
|
+
return res.status(500).json({
|
|
51
|
+
error: "Internal server error",
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
next(error);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
next();
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
callOriginal(method, path, { inputSchema, outputSchema, summary, afterOutput = [], beforeOutput = [], afterInput = [], beforeInput = [], }, handlers) {
|
|
61
|
+
this.endpoints.push({
|
|
62
|
+
path,
|
|
63
|
+
method: method,
|
|
64
|
+
inputSchema,
|
|
65
|
+
outputSchema,
|
|
66
|
+
summary,
|
|
67
|
+
});
|
|
68
|
+
const combinedHandlers = [];
|
|
69
|
+
if (beforeInput) {
|
|
70
|
+
combinedHandlers.push(beforeInput);
|
|
71
|
+
}
|
|
72
|
+
if (inputSchema) {
|
|
73
|
+
combinedHandlers.push(EndpointsCollection.validateInput(inputSchema));
|
|
74
|
+
}
|
|
75
|
+
if (afterInput) {
|
|
76
|
+
combinedHandlers.push(afterInput);
|
|
77
|
+
}
|
|
78
|
+
combinedHandlers.push(handlers);
|
|
79
|
+
if (beforeOutput) {
|
|
80
|
+
combinedHandlers.push(beforeOutput);
|
|
81
|
+
}
|
|
82
|
+
if (outputSchema) {
|
|
83
|
+
combinedHandlers.push(EndpointsCollection.validateOutput(outputSchema));
|
|
84
|
+
}
|
|
85
|
+
if (afterOutput) {
|
|
86
|
+
combinedHandlers.push(afterOutput);
|
|
87
|
+
}
|
|
88
|
+
return this.router[method](path, ...combinedHandlers);
|
|
89
|
+
}
|
|
90
|
+
get(path, args, handlers) {
|
|
91
|
+
return this.callOriginal("get", path, args, handlers);
|
|
92
|
+
}
|
|
93
|
+
post(path, args, handler) {
|
|
94
|
+
return this.callOriginal("post", path, args, handler);
|
|
95
|
+
}
|
|
96
|
+
put(path, args, handlers) {
|
|
97
|
+
return this.callOriginal("put", path, args, handlers);
|
|
98
|
+
}
|
|
99
|
+
delete(path, args, handlers) {
|
|
100
|
+
return this.callOriginal("delete", path, args, handlers);
|
|
101
|
+
}
|
|
102
|
+
patch(path, args, handlers) {
|
|
103
|
+
return this.callOriginal("patch", path, args, handlers);
|
|
104
|
+
}
|
|
105
|
+
options(path, args, handlers) {
|
|
106
|
+
return this.callOriginal("options", path, args, handlers);
|
|
107
|
+
}
|
|
108
|
+
head(path, args, handlers) {
|
|
109
|
+
return this.callOriginal("head", path, args, handlers);
|
|
110
|
+
}
|
|
111
|
+
trace(path, args, handlers) {
|
|
112
|
+
return this.callOriginal("trace", path, args, handlers);
|
|
113
|
+
}
|
|
114
|
+
getEndpoints() {
|
|
115
|
+
return this.endpoints;
|
|
116
|
+
}
|
|
117
|
+
getRouter() {
|
|
118
|
+
return this.router;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.EndpointsCollection = EndpointsCollection;
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAMiB;AAMjB,6BAAwB;AAGxB,MAAa,mBAAmB;IAI9B;QAHQ,cAAS,GAAmB,EAAE,CAAC;QAC/B,WAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IAEJ,CAAC;IAEf,MAAM,CAAC,aAAa,CAAC,MAA2B;QACtD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;YACzD,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,KAAK;oBAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,MAAM,CAAC,MAAM;oBAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,MAAM,CAAC,OAAO;oBAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtD,IAAI,EAAE,CAAC;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;oBAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,KAAK,EAAE,KAAK,CAAC,MAAM;qBACpB,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,MAA4B;QACxD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;YACzD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;YAE9B,aAAa;YACb,GAAG,CAAC,IAAI,GAAG,CAAC,IAAS,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;gBAC9B,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;gBAEhE,IAAI,CAAC;oBACH,IAAI,eAAe,EAAE,IAAI,EAAE,CAAC;wBAC1B,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACnC,CAAC;oBACD,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;wBAChC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC5D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BAC1B,KAAK,EAAE,uBAAuB;yBAC/B,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;IAEM,YAAY,CACjB,MAAkB,EAClB,IAAY,EACZ,EACE,WAAW,EACX,YAAY,EACZ,OAAO,EACP,WAAW,GAAG,EAAE,EAChB,YAAY,GAAG,EAAE,EACjB,UAAU,GAAG,EAAE,EACf,WAAW,GAAG,EAAE,GACwC,EAC1D,QAA2E;QAE3E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,WAAW;YACX,YAAY;YACZ,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAA0C,EAAE,CAAC;QAEnE,IAAI,WAAW,EAAE,CAAC;YAChB,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAEM,GAAG,CAIR,IAAY,EACZ,IAAmC,EACnC,QAA8C;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEM,IAAI,CAIT,IAAY,EACZ,IAAmC,EACnC,OAA6C;QAE7C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAEM,GAAG,CAIR,IAAY,EACZ,IAAmC,EACnC,QAA8C;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEM,MAAM,CAIX,IAAY,EACZ,IAAmC,EACnC,QAA8C;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAIV,IAAY,EACZ,IAAmC,EACnC,QAA8C;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEM,OAAO,CAIZ,IAAY,EACZ,IAAmC,EACnC,QAA8C;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAEM,IAAI,CAIT,IAAY,EACZ,IAAmC,EACnC,QAA8C;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAIV,IAAY,EACZ,IAAmC,EACnC,QAA8C;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AA1MD,kDA0MC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EndpointInputSchema } from "./EndpointInputSchema";
|
|
2
|
+
import { EndpointOutputSchema } from "./EndpointOutputSchema";
|
|
3
|
+
import { RequestHandler } from "express";
|
|
4
|
+
export type EndpointArgs<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema> = {
|
|
5
|
+
inputSchema?: TInput;
|
|
6
|
+
outputSchema: TOutput;
|
|
7
|
+
summary?: string;
|
|
8
|
+
beforeInput?: RequestHandler | RequestHandler[];
|
|
9
|
+
afterInput?: RequestHandler | RequestHandler[];
|
|
10
|
+
beforeOutput?: RequestHandler | RequestHandler[];
|
|
11
|
+
afterOutput?: RequestHandler | RequestHandler[];
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=EndpointArgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointArgs.d.ts","sourceRoot":"","sources":["../../src/types/EndpointArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,YAAY,CACtB,MAAM,SAAS,mBAAmB,EAClC,OAAO,SAAS,oBAAoB,IAClC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAC/C,YAAY,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IACjD,WAAW,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;CACjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointArgs.js","sourceRoot":"","sources":["../../src/types/EndpointArgs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EndpointInputSchema } from "./EndpointInputSchema";
|
|
2
|
+
import { EndpointOutputSchema } from "./EndpointOutputSchema";
|
|
3
|
+
import { HttpMethod } from "./HttpMethod";
|
|
4
|
+
export type EndpointInfo = {
|
|
5
|
+
path: string;
|
|
6
|
+
method: HttpMethod;
|
|
7
|
+
inputSchema?: EndpointInputSchema;
|
|
8
|
+
outputSchema: EndpointOutputSchema;
|
|
9
|
+
summary?: string;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=EndpointInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointInfo.d.ts","sourceRoot":"","sources":["../../src/types/EndpointInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,YAAY,EAAE,oBAAoB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointInfo.js","sourceRoot":"","sources":["../../src/types/EndpointInfo.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointInputSchema.d.ts","sourceRoot":"","sources":["../../src/types/EndpointInputSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointInputSchema.js","sourceRoot":"","sources":["../../src/types/EndpointInputSchema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointOutputSchema.d.ts","sourceRoot":"","sources":["../../src/types/EndpointOutputSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;CAClB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointOutputSchema.js","sourceRoot":"","sources":["../../src/types/EndpointOutputSchema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpMethod.d.ts","sourceRoot":"","sources":["../../src/types/HttpMethod.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,MAAM,GACN,KAAK,GACL,QAAQ,GACR,OAAO,GACP,SAAS,GACT,MAAM,GACN,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpMethod.js","sourceRoot":"","sources":["../../src/types/HttpMethod.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EndpointInputSchema } from "./EndpointInputSchema";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export type TypedRequest<T extends EndpointInputSchema> = {
|
|
4
|
+
body: z.infer<NonNullable<T["body"]>>;
|
|
5
|
+
query: z.infer<NonNullable<T["query"]>>;
|
|
6
|
+
params: z.infer<NonNullable<T["params"]>>;
|
|
7
|
+
headers: z.infer<NonNullable<T["headers"]>>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=TypedRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedRequest.d.ts","sourceRoot":"","sources":["../../src/types/TypedRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,mBAAmB,IAAI;IACxD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedRequest.js","sourceRoot":"","sources":["../../src/types/TypedRequest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { EndpointInputSchema } from "./EndpointInputSchema";
|
|
2
|
+
import { EndpointOutputSchema } from "./EndpointOutputSchema";
|
|
3
|
+
import { TypedRequest } from "./TypedRequest";
|
|
4
|
+
import { TypedResponse } from "./TypedResponse";
|
|
5
|
+
export type TypedRequestHandler<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema> = (req: TypedRequest<TInput>, res: TypedResponse<TOutput>) => void | Promise<void>;
|
|
6
|
+
//# sourceMappingURL=TypedRequestHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedRequestHandler.d.ts","sourceRoot":"","sources":["../../src/types/TypedRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,mBAAmB,EAClC,OAAO,SAAS,oBAAoB,IAClC,CACF,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,EACzB,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedRequestHandler.js","sourceRoot":"","sources":["../../src/types/TypedRequestHandler.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EndpointOutputSchema } from "./EndpointOutputSchema";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export type TypedResponse<T extends EndpointOutputSchema> = {
|
|
4
|
+
json: (data: z.infer<NonNullable<T[number]["body"]>>) => void;
|
|
5
|
+
status: <S extends T[number]["status"]>(code: S) => Omit<TypedResponse<T>, "status"> & {
|
|
6
|
+
json: (data: z.infer<NonNullable<Extract<T[number], {
|
|
7
|
+
status: S;
|
|
8
|
+
}>["body"]>>) => void;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=TypedResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedResponse.d.ts","sourceRoot":"","sources":["../../src/types/TypedResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,oBAAoB,IAAI;IAC1D,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EACpC,IAAI,EAAE,CAAC,KACJ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG;QACtC,IAAI,EAAE,CACJ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAClE,IAAI,CAAC;KACX,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedResponse.js","sourceRoot":"","sources":["../../src/types/TypedResponse.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "express-endpoints-collection",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"repository": "https://github.com/pilotpirxie/express-endpoints-collection.git",
|
|
6
6
|
"author": "pilotpirxie <10637666+pilotpirxie@users.noreply.github.com>",
|
|
@@ -30,5 +30,23 @@
|
|
|
30
30
|
},
|
|
31
31
|
"files": [
|
|
32
32
|
"dist"
|
|
33
|
+
],
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18.0.0"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"express",
|
|
39
|
+
"endpoints",
|
|
40
|
+
"collection",
|
|
41
|
+
"api",
|
|
42
|
+
"rest",
|
|
43
|
+
"restful",
|
|
44
|
+
"openapi",
|
|
45
|
+
"swagger",
|
|
46
|
+
"zod",
|
|
47
|
+
"typescript",
|
|
48
|
+
"ts",
|
|
49
|
+
"validation",
|
|
50
|
+
"inference"
|
|
33
51
|
]
|
|
34
52
|
}
|