express-zod-api 5.1.0 → 5.3.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 +34 -0
- package/LICENSE +1 -1
- package/README.md +27 -6
- package/dist/depends-on-method.d.ts +10 -0
- package/dist/depends-on-method.js +33 -0
- package/dist/depends-on-method.js.map +1 -0
- package/dist/endpoint.js +7 -6
- package/dist/endpoint.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/open-api.js +2 -2
- package/dist/open-api.js.map +1 -1
- package/dist/routing.d.ts +7 -12
- package/dist/routing.js +20 -36
- package/dist/routing.js.map +1 -1
- package/dist/serve-static.d.ts +8 -0
- package/dist/serve-static.js +10 -0
- package/dist/serve-static.js.map +1 -0
- package/dist-esm/depends-on-method.js +29 -0
- package/dist-esm/depends-on-method.js.map +1 -0
- package/dist-esm/endpoint.js +7 -6
- package/dist-esm/endpoint.js.map +1 -1
- package/dist-esm/index.js +2 -1
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/open-api.js +2 -2
- package/dist-esm/open-api.js.map +1 -1
- package/dist-esm/package.json +1 -1
- package/dist-esm/routing.js +19 -34
- package/dist-esm/routing.js.map +1 -1
- package/dist-esm/serve-static.js +6 -0
- package/dist-esm/serve-static.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
## Version 5
|
|
4
4
|
|
|
5
|
+
### v5.3.1
|
|
6
|
+
|
|
7
|
+
- Fixed issue #269: async refinements in I/O schemas of endpoints and middlewares.
|
|
8
|
+
- There was an error `Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`
|
|
9
|
+
|
|
10
|
+
### v5.3.0
|
|
11
|
+
|
|
12
|
+
- Supporting Node 17.
|
|
13
|
+
|
|
14
|
+
### v5.2.1
|
|
15
|
+
|
|
16
|
+
- Fixing the compatibility with `@types/node@17.0.7`.
|
|
17
|
+
- Fixing the return type of `Endpoint::execute()` in case of `OPTIONS` method (it should be `void`).
|
|
18
|
+
|
|
19
|
+
### v5.2.0
|
|
20
|
+
|
|
21
|
+
- Feature #254: the ability to configure routes for serving static files.
|
|
22
|
+
- Use `new ServeStatic()` with the same arguments as `express.static()`.
|
|
23
|
+
- You can find the documentation on these arguments here: http://expressjs.com/en/4x/api.html#express.static
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { Routing, ServeStatic } from "express-zod-api";
|
|
27
|
+
import path from "path";
|
|
28
|
+
|
|
29
|
+
const routing: Routing = {
|
|
30
|
+
// path /public serves static files from ./assets
|
|
31
|
+
public: new ServeStatic(path.join(__dirname, "assets"), {
|
|
32
|
+
dotfiles: "deny",
|
|
33
|
+
index: false,
|
|
34
|
+
redirect: false,
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
```
|
|
38
|
+
|
|
5
39
|
### v5.1.0
|
|
6
40
|
|
|
7
41
|
- No changes.
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -35,12 +35,13 @@ Start your API server with I/O schema validation and custom middlewares in minut
|
|
|
35
35
|
7. [Non-object response](#non-object-response) including file downloads
|
|
36
36
|
8. [File uploads](#file-uploads)
|
|
37
37
|
9. [Customizing logger](#customizing-logger)
|
|
38
|
-
10. [
|
|
38
|
+
10. [Connect to your own express app](#connect-to-your-own-express-app)
|
|
39
39
|
11. [Multiple schemas for one route](#multiple-schemas-for-one-route)
|
|
40
|
-
12. [
|
|
41
|
-
13. [
|
|
42
|
-
14. [
|
|
43
|
-
15. [
|
|
40
|
+
12. [Serving static files](#serving-static-files)
|
|
41
|
+
13. [Customizing input sources](#customizing-input-sources)
|
|
42
|
+
14. [Enabling HTTPS](#enabling-https)
|
|
43
|
+
15. [Informing the frontend about the API](#informing-the-frontend-about-the-api)
|
|
44
|
+
16. [Creating a documentation](#creating-a-documentation)
|
|
44
45
|
5. [Additional hints](#additional-hints)
|
|
45
46
|
1. [How to test endpoints](#how-to-test-endpoints)
|
|
46
47
|
2. [Excessive properties in endpoint output](#excessive-properties-in-endpoint-output)
|
|
@@ -505,7 +506,7 @@ const logger = winston.createLogger({
|
|
|
505
506
|
const config = createConfig({ logger /* ..., */ });
|
|
506
507
|
```
|
|
507
508
|
|
|
508
|
-
##
|
|
509
|
+
## Connect to your own express app
|
|
509
510
|
|
|
510
511
|
If you already have your own configured express application, or you find the library settings not enough,
|
|
511
512
|
you can connect your routing to the app instead of using `createServer()`.
|
|
@@ -554,6 +555,26 @@ const routing: Routing = {
|
|
|
554
555
|
};
|
|
555
556
|
```
|
|
556
557
|
|
|
558
|
+
## Serving static files
|
|
559
|
+
|
|
560
|
+
In case you want your server to serve static files, you can use `new ServeStatic()` in `Routing` using the arguments
|
|
561
|
+
similar to `express.static()`.
|
|
562
|
+
The documentation on these arguments you may find [here](http://expressjs.com/en/4x/api.html#express.static).
|
|
563
|
+
|
|
564
|
+
```typescript
|
|
565
|
+
import { Routing, ServeStatic } from "express-zod-api";
|
|
566
|
+
import path from "path";
|
|
567
|
+
|
|
568
|
+
const routing: Routing = {
|
|
569
|
+
// path /public serves static files from ./assets
|
|
570
|
+
public: new ServeStatic(path.join(__dirname, "assets"), {
|
|
571
|
+
dotfiles: "deny",
|
|
572
|
+
index: false,
|
|
573
|
+
redirect: false,
|
|
574
|
+
}),
|
|
575
|
+
};
|
|
576
|
+
```
|
|
577
|
+
|
|
557
578
|
## Customizing input sources
|
|
558
579
|
|
|
559
580
|
You can customize the list of `request` properties that are combined into `input` that is being validated and available
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Endpoint } from "./endpoint";
|
|
2
|
+
import { Method } from "./method";
|
|
3
|
+
export declare class DependsOnMethod {
|
|
4
|
+
readonly methods: {
|
|
5
|
+
[K in Method]?: Endpoint<any, any, any, any, K, any, any> | Endpoint<any, any, any, any, Method, any, any>;
|
|
6
|
+
};
|
|
7
|
+
constructor(methods: {
|
|
8
|
+
[K in Method]?: Endpoint<any, any, any, any, K, any, any> | Endpoint<any, any, any, any, Method, any, any>;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DependsOnMethod = void 0;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
class DependsOnMethod {
|
|
6
|
+
constructor(methods) {
|
|
7
|
+
this.methods = methods;
|
|
8
|
+
Object.keys(methods).forEach((key) => {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
if (key in methods) {
|
|
11
|
+
const endpointMethods = ((_a = methods[key]) === null || _a === void 0 ? void 0 : _a.getMethods()) || [];
|
|
12
|
+
if (!endpointMethods.includes(key)) {
|
|
13
|
+
throw new errors_1.DependsOnMethodError(`The endpoint assigned to the '${key}' parameter must have at least this method in its specification.\n` +
|
|
14
|
+
"This error should prevent mistakes during the development process.\n" +
|
|
15
|
+
"Example:\n\n" +
|
|
16
|
+
`new ${this.constructor.name}({\n` +
|
|
17
|
+
` ${key}: endpointsFactory.build({\n` +
|
|
18
|
+
` methods: ['${key}', ` +
|
|
19
|
+
((((_b = methods[key]) === null || _b === void 0 ? void 0 : _b.getMethods()) || [])
|
|
20
|
+
.map((m) => `'${m}'`)
|
|
21
|
+
.join(", ") || "...") +
|
|
22
|
+
"]\n" +
|
|
23
|
+
` // or method: '${key}'\n` +
|
|
24
|
+
" ...\n" +
|
|
25
|
+
" })\n" +
|
|
26
|
+
"});\n");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.DependsOnMethod = DependsOnMethod;
|
|
33
|
+
//# sourceMappingURL=depends-on-method.js.map
|
|
@@ -0,0 +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;;YACjE,IAAI,GAAG,IAAI,OAAO,EAAE;gBAClB,MAAM,eAAe,GAAG,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,UAAU,EAAE,KAAI,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,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,UAAU,EAAE,KAAI,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.js
CHANGED
|
@@ -69,7 +69,8 @@ class Endpoint extends AbstractEndpoint {
|
|
|
69
69
|
__classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_setupCorsHeaders).call(this, response);
|
|
70
70
|
}
|
|
71
71
|
if (request.method === "OPTIONS") {
|
|
72
|
-
|
|
72
|
+
response.end();
|
|
73
|
+
return;
|
|
73
74
|
}
|
|
74
75
|
const initialInput = (0, common_helpers_1.getInitialInput)(request, config.inputSources);
|
|
75
76
|
try {
|
|
@@ -82,7 +83,7 @@ class Endpoint extends AbstractEndpoint {
|
|
|
82
83
|
if (isStreamClosed) {
|
|
83
84
|
return;
|
|
84
85
|
}
|
|
85
|
-
output = __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseOutput).call(this, await __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseAndRunHandler).call(this, { input, options, logger }));
|
|
86
|
+
output = await __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseOutput).call(this, await __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseAndRunHandler).call(this, { input, options, logger }));
|
|
86
87
|
}
|
|
87
88
|
catch (e) {
|
|
88
89
|
if (e instanceof Error) {
|
|
@@ -108,9 +109,9 @@ _Endpoint_instances = new WeakSet(), _Endpoint_setupCorsHeaders = function _Endp
|
|
|
108
109
|
response.set("Access-Control-Allow-Origin", "*");
|
|
109
110
|
response.set("Access-Control-Allow-Methods", accessMethods);
|
|
110
111
|
response.set("Access-Control-Allow-Headers", "content-type");
|
|
111
|
-
}, _Endpoint_parseOutput = function _Endpoint_parseOutput(output) {
|
|
112
|
+
}, _Endpoint_parseOutput = async function _Endpoint_parseOutput(output) {
|
|
112
113
|
try {
|
|
113
|
-
return this.outputSchema.
|
|
114
|
+
return await this.outputSchema.parseAsync(output);
|
|
114
115
|
}
|
|
115
116
|
catch (e) {
|
|
116
117
|
if (e instanceof zod_1.z.ZodError) {
|
|
@@ -132,7 +133,7 @@ _Endpoint_instances = new WeakSet(), _Endpoint_setupCorsHeaders = function _Endp
|
|
|
132
133
|
const options = {};
|
|
133
134
|
let isStreamClosed = false;
|
|
134
135
|
for (const def of this.middlewares) {
|
|
135
|
-
input
|
|
136
|
+
Object.assign(input, await def.input.parseAsync(input)); // middleware can transform the input types
|
|
136
137
|
Object.assign(options, await def.middleware({
|
|
137
138
|
input,
|
|
138
139
|
options,
|
|
@@ -149,7 +150,7 @@ _Endpoint_instances = new WeakSet(), _Endpoint_setupCorsHeaders = function _Endp
|
|
|
149
150
|
return { input, options, isStreamClosed };
|
|
150
151
|
}, _Endpoint_parseAndRunHandler = async function _Endpoint_parseAndRunHandler({ input, options, logger, }) {
|
|
151
152
|
return this.handler({
|
|
152
|
-
input: this.inputSchema.
|
|
153
|
+
input: await this.inputSchema.parseAsync(input),
|
|
153
154
|
options,
|
|
154
155
|
logger,
|
|
155
156
|
});
|
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,qDAO0B;AAG1B,qDAA8E;AAQ9E,MAAsB,gBAAgB;CAgBrC;AAhBD,4CAgBC;AA6DD,kCAAkC;AAClC,MAAa,QAQX,SAAQ,gBAAgB;IAcxB,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAO,EACP,aAAa,EACb,WAAW,EACX,SAAS,EACT,GAAG,IAAI,EACwC;QAC/C,KAAK,EAAE,CAAC;;QAtBS,YAAO,GAAQ,EAAE,CAAC;QAClB,gBAAW,GAA0C,EAAE,CAAC;QAsBzE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAA,yDAAwC,EACzD,WAAW,EACX,WAAW,CACZ,CAAC;QACF,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,WAAW,GAAG,WAAW,CAAC;QAC/B,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;IAEe,cAAc;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,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;IAyHe,KAAK,CAAC,OAAO,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,MAAM,GAMP;QACC,IAAI,MAAW,CAAC;QAChB,IAAI,KAAK,GAAiB,IAAI,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,uBAAA,IAAI,uDAAkB,MAAtB,IAAI,EAAmB,QAAQ,CAAC,CAAC;SAClC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;YAChC,
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,9 @@ export { createApiResponse } from "./api-response";
|
|
|
7
7
|
export { createLogger } from "./logger";
|
|
8
8
|
export { createMiddleware } from "./middleware";
|
|
9
9
|
export { createResultHandler, defaultResultHandler } from "./result-handler";
|
|
10
|
-
export {
|
|
10
|
+
export { DependsOnMethod } from "./depends-on-method";
|
|
11
|
+
export { ServeStatic } from "./serve-static";
|
|
12
|
+
export { Routing } from "./routing";
|
|
11
13
|
export { createServer, attachRouting } from "./server";
|
|
12
14
|
export { OpenAPI } from "./open-api";
|
|
13
15
|
export { OpenAPIError, DependsOnMethodError, RoutingError } from "./errors";
|
package/dist/index.js
CHANGED
|
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.z = exports.createHttpError = exports.testEndpoint = exports.withMeta = exports.RoutingError = exports.DependsOnMethodError = exports.OpenAPIError = exports.OpenAPI = exports.attachRouting = exports.createServer = exports.DependsOnMethod = exports.defaultResultHandler = exports.createResultHandler = exports.createMiddleware = exports.createLogger = exports.createApiResponse = exports.markOutput = exports.defaultEndpointsFactory = exports.EndpointsFactory = exports.AbstractEndpoint = exports.createConfig = void 0;
|
|
25
|
+
exports.z = exports.createHttpError = exports.testEndpoint = exports.withMeta = exports.RoutingError = exports.DependsOnMethodError = exports.OpenAPIError = exports.OpenAPI = exports.attachRouting = exports.createServer = exports.ServeStatic = exports.DependsOnMethod = exports.defaultResultHandler = exports.createResultHandler = exports.createMiddleware = exports.createLogger = exports.createApiResponse = exports.markOutput = exports.defaultEndpointsFactory = exports.EndpointsFactory = exports.AbstractEndpoint = exports.createConfig = void 0;
|
|
26
26
|
var config_type_1 = require("./config-type");
|
|
27
27
|
Object.defineProperty(exports, "createConfig", { enumerable: true, get: function () { return config_type_1.createConfig; } });
|
|
28
28
|
var endpoint_1 = require("./endpoint");
|
|
@@ -41,8 +41,10 @@ Object.defineProperty(exports, "createMiddleware", { enumerable: true, get: func
|
|
|
41
41
|
var result_handler_1 = require("./result-handler");
|
|
42
42
|
Object.defineProperty(exports, "createResultHandler", { enumerable: true, get: function () { return result_handler_1.createResultHandler; } });
|
|
43
43
|
Object.defineProperty(exports, "defaultResultHandler", { enumerable: true, get: function () { return result_handler_1.defaultResultHandler; } });
|
|
44
|
-
var
|
|
45
|
-
Object.defineProperty(exports, "DependsOnMethod", { enumerable: true, get: function () { return
|
|
44
|
+
var depends_on_method_1 = require("./depends-on-method");
|
|
45
|
+
Object.defineProperty(exports, "DependsOnMethod", { enumerable: true, get: function () { return depends_on_method_1.DependsOnMethod; } });
|
|
46
|
+
var serve_static_1 = require("./serve-static");
|
|
47
|
+
Object.defineProperty(exports, "ServeStatic", { enumerable: true, get: function () { return serve_static_1.ServeStatic; } });
|
|
46
48
|
var server_1 = require("./server");
|
|
47
49
|
Object.defineProperty(exports, "createServer", { enumerable: true, get: function () { return server_1.createServer; } });
|
|
48
50
|
Object.defineProperty(exports, "attachRouting", { enumerable: true, get: function () { return server_1.attachRouting; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2D;AAAlD,2GAAA,YAAY,OAAA;AACrB,uCAKoB;AAJlB,4GAAA,gBAAgB,OAAA;AAMlB,yDAAgF;AAAvE,qHAAA,gBAAgB,OAAA;AAAE,4HAAA,uBAAuB,OAAA;AAClD,mDAAoE;AAArC,4GAAA,UAAU,OAAA;AACzC,+CAAmD;AAA1C,iHAAA,iBAAiB,OAAA;AAC1B,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,mDAA6E;AAApE,qHAAA,mBAAmB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAClD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2D;AAAlD,2GAAA,YAAY,OAAA;AACrB,uCAKoB;AAJlB,4GAAA,gBAAgB,OAAA;AAMlB,yDAAgF;AAAvE,qHAAA,gBAAgB,OAAA;AAAE,4HAAA,uBAAuB,OAAA;AAClD,mDAAoE;AAArC,4GAAA,UAAU,OAAA;AACzC,+CAAmD;AAA1C,iHAAA,iBAAiB,OAAA;AAC1B,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,mDAA6E;AAApE,qHAAA,mBAAmB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAClD,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AACxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,mCAAuD;AAA9C,sGAAA,YAAY,OAAA;AAAE,uGAAA,aAAa,OAAA;AACpC,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAChB,mCAA4E;AAAnE,sGAAA,YAAY,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAAE,sGAAA,YAAY,OAAA;AACzD,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AAErB,gDAAkC;AAGR,cAAC;AAF3B,8DAA0C;AAEjC,0BAFF,qBAAe,CAEE"}
|
package/dist/open-api.js
CHANGED
|
@@ -9,7 +9,7 @@ class OpenAPI extends openapi3_ts_1.OpenApiBuilder {
|
|
|
9
9
|
constructor({ routing, config, title, version, serverUrl, successfulResponseDescription = "Successful response", errorResponseDescription = "Error response", }) {
|
|
10
10
|
super();
|
|
11
11
|
this.addInfo({ title, version }).addServer({ url: serverUrl });
|
|
12
|
-
const
|
|
12
|
+
const endpointCb = (endpoint, path, _method) => {
|
|
13
13
|
var _a, _b;
|
|
14
14
|
const method = _method;
|
|
15
15
|
const commonParams = { path, method, endpoint };
|
|
@@ -47,7 +47,7 @@ class OpenAPI extends openapi3_ts_1.OpenApiBuilder {
|
|
|
47
47
|
[method]: operation,
|
|
48
48
|
});
|
|
49
49
|
};
|
|
50
|
-
(0, routing_1.routingCycle)({ routing,
|
|
50
|
+
(0, routing_1.routingCycle)({ routing, endpointCb });
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
exports.OpenAPI = OpenAPI;
|
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,6CAA8D;AAC9D,qDAAuD;AAGvD,yDAK4B;AAC5B,uCAAsE;AAYtE,MAAa,OAAQ,SAAQ,4BAAc;IACzC,YAAmB,EACjB,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,6BAA6B,GAAG,qBAAqB,EACrD,wBAAwB,GAAG,gBAAgB,GAC3B;QAChB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,MAAM,
|
|
1
|
+
{"version":3,"file":"open-api.js","sourceRoot":"","sources":["../src/open-api.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAC9D,qDAAuD;AAGvD,yDAK4B;AAC5B,uCAAsE;AAYtE,MAAa,OAAQ,SAAQ,4BAAc;IACzC,YAAmB,EACjB,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,6BAA6B,GAAG,qBAAqB,EACrD,wBAAwB,GAAG,gBAAgB,GAC3B;QAChB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAqC,CACnD,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,EAAE;;YACF,MAAM,MAAM,GAAG,OAAiB,CAAC;YACjC,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAChD,MAAM,YAAY,GAChB,CAAA,MAAA,MAAM,CAAC,YAAY,0CAAG,MAAM,CAAC,KAAI,oCAAmB,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,IAAA,sCAAmB,EAAC;gBACzC,GAAG,YAAY;gBACf,YAAY;aACb,CAAC,CAAC;YACH,MAAM,SAAS,GAAoB;gBACjC,SAAS,EAAE;oBACT,KAAK,EAAE,IAAA,iCAAc,EAAC;wBACpB,GAAG,YAAY;wBACf,WAAW,EAAE,6BAA6B;wBAC1C,UAAU,EAAE,IAAI;qBACjB,CAAC;oBACF,KAAK,EAAE,IAAA,iCAAc,EAAC;wBACpB,GAAG,YAAY;wBACf,WAAW,EAAE,wBAAwB;wBACrC,UAAU,EAAE,KAAK;qBAClB,CAAC;iBACH;aACF,CAAC;YACF,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE;gBAC7B,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;aACnD;YACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,SAAS,CAAC,UAAU,GAAG,cAAc,CAAC;aACvC;YACD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjC,SAAS,CAAC,WAAW,GAAG,IAAA,gCAAa,EAAC,YAAY,CAAC,CAAC;aACrD;YACD,MAAM,qBAAqB,GAAG,IAAA,uCAAoB,EAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;gBAClC,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,0CAAG,qBAAqB,CAAC,KAAI,EAAE,CAAC;gBACtD,CAAC,MAAM,CAAC,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACxC,CAAC;CACF;AAxDD,0BAwDC"}
|
package/dist/routing.d.ts
CHANGED
|
@@ -1,26 +1,21 @@
|
|
|
1
1
|
import { Express } from "express";
|
|
2
2
|
import { Logger } from "winston";
|
|
3
3
|
import { CommonConfig } from "./config-type";
|
|
4
|
-
import {
|
|
4
|
+
import { DependsOnMethod } from "./depends-on-method";
|
|
5
|
+
import { AbstractEndpoint } from "./endpoint";
|
|
5
6
|
import { AuxMethod, Method } from "./method";
|
|
6
|
-
|
|
7
|
-
readonly methods: {
|
|
8
|
-
[K in Method]?: Endpoint<any, any, any, any, K, any, any> | Endpoint<any, any, any, any, Method, any, any>;
|
|
9
|
-
};
|
|
10
|
-
constructor(methods: {
|
|
11
|
-
[K in Method]?: Endpoint<any, any, any, any, K, any, any> | Endpoint<any, any, any, any, Method, any, any>;
|
|
12
|
-
});
|
|
13
|
-
}
|
|
7
|
+
import { ServeStatic, StaticHandler } from "./serve-static";
|
|
14
8
|
export interface Routing {
|
|
15
|
-
[SEGMENT: string]: Routing | DependsOnMethod | AbstractEndpoint;
|
|
9
|
+
[SEGMENT: string]: Routing | DependsOnMethod | AbstractEndpoint | ServeStatic;
|
|
16
10
|
}
|
|
17
11
|
export interface RoutingCycleParams {
|
|
18
12
|
routing: Routing;
|
|
19
|
-
|
|
13
|
+
endpointCb: (endpoint: AbstractEndpoint, path: string, method: Method | AuxMethod) => void;
|
|
14
|
+
staticCb?: (path: string, handler: StaticHandler) => void;
|
|
20
15
|
parentPath?: string;
|
|
21
16
|
cors?: boolean;
|
|
22
17
|
}
|
|
23
|
-
export declare const routingCycle: ({ routing,
|
|
18
|
+
export declare const routingCycle: ({ routing, endpointCb, staticCb, parentPath, cors, }: RoutingCycleParams) => void;
|
|
24
19
|
export declare const initRouting: ({ app, logger, config, routing, }: {
|
|
25
20
|
app: Express;
|
|
26
21
|
logger: Logger;
|
package/dist/routing.js
CHANGED
|
@@ -1,38 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.initRouting = exports.routingCycle =
|
|
3
|
+
exports.initRouting = exports.routingCycle = void 0;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const depends_on_method_1 = require("./depends-on-method");
|
|
4
6
|
const endpoint_1 = require("./endpoint");
|
|
5
7
|
const errors_1 = require("./errors");
|
|
8
|
+
const serve_static_1 = require("./serve-static");
|
|
6
9
|
const startup_logo_1 = require("./startup-logo");
|
|
7
|
-
|
|
8
|
-
constructor(methods) {
|
|
9
|
-
this.methods = methods;
|
|
10
|
-
Object.keys(methods).forEach((key) => {
|
|
11
|
-
var _a, _b;
|
|
12
|
-
if (key in methods) {
|
|
13
|
-
const endpointMethods = ((_a = methods[key]) === null || _a === void 0 ? void 0 : _a.getMethods()) || [];
|
|
14
|
-
if (!endpointMethods.includes(key)) {
|
|
15
|
-
throw new errors_1.DependsOnMethodError(`The endpoint assigned to the '${key}' parameter must have at least this method in its specification.\n` +
|
|
16
|
-
"This error should prevent mistakes during the development process.\n" +
|
|
17
|
-
"Example:\n\n" +
|
|
18
|
-
`new ${this.constructor.name}({\n` +
|
|
19
|
-
` ${key}: endpointsFactory.build({\n` +
|
|
20
|
-
` methods: ['${key}', ` +
|
|
21
|
-
((((_b = methods[key]) === null || _b === void 0 ? void 0 : _b.getMethods()) || [])
|
|
22
|
-
.map((m) => `'${m}'`)
|
|
23
|
-
.join(", ") || "...") +
|
|
24
|
-
"]\n" +
|
|
25
|
-
` // or method: '${key}'\n` +
|
|
26
|
-
" ...\n" +
|
|
27
|
-
" })\n" +
|
|
28
|
-
"});\n");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.DependsOnMethod = DependsOnMethod;
|
|
35
|
-
const routingCycle = ({ routing, cb, parentPath, cors, }) => {
|
|
10
|
+
const routingCycle = ({ routing, endpointCb, staticCb, parentPath, cors, }) => {
|
|
36
11
|
Object.entries(routing).forEach(([segment, element]) => {
|
|
37
12
|
segment = segment.trim();
|
|
38
13
|
if (segment.match(/\//)) {
|
|
@@ -48,22 +23,28 @@ const routingCycle = ({ routing, cb, parentPath, cors, }) => {
|
|
|
48
23
|
methods.push("options");
|
|
49
24
|
}
|
|
50
25
|
methods.forEach((method) => {
|
|
51
|
-
|
|
26
|
+
endpointCb(element, path, method);
|
|
52
27
|
});
|
|
53
28
|
}
|
|
54
|
-
else if (element instanceof
|
|
29
|
+
else if (element instanceof serve_static_1.ServeStatic) {
|
|
30
|
+
if (staticCb) {
|
|
31
|
+
staticCb(path, (0, express_1.static)(...element.params));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else if (element instanceof depends_on_method_1.DependsOnMethod) {
|
|
55
35
|
Object.entries(element.methods).forEach(([method, endpoint]) => {
|
|
56
|
-
|
|
36
|
+
endpointCb(endpoint, path, method);
|
|
57
37
|
});
|
|
58
38
|
if (cors && Object.keys(element.methods).length > 0) {
|
|
59
39
|
const firstEndpoint = Object.values(element.methods)[0];
|
|
60
|
-
|
|
40
|
+
endpointCb(firstEndpoint, path, "options");
|
|
61
41
|
}
|
|
62
42
|
}
|
|
63
43
|
else {
|
|
64
44
|
(0, exports.routingCycle)({
|
|
65
45
|
routing: element,
|
|
66
|
-
|
|
46
|
+
endpointCb,
|
|
47
|
+
staticCb,
|
|
67
48
|
cors,
|
|
68
49
|
parentPath: path,
|
|
69
50
|
});
|
|
@@ -78,12 +59,15 @@ const initRouting = ({ app, logger, config, routing, }) => {
|
|
|
78
59
|
(0, exports.routingCycle)({
|
|
79
60
|
routing,
|
|
80
61
|
cors: config.cors,
|
|
81
|
-
|
|
62
|
+
endpointCb: (endpoint, path, method) => {
|
|
82
63
|
app[method](path, async (request, response) => {
|
|
83
64
|
logger.info(`${request.method}: ${path}`);
|
|
84
65
|
await endpoint.execute({ request, response, logger, config });
|
|
85
66
|
});
|
|
86
67
|
},
|
|
68
|
+
staticCb: (path, handler) => {
|
|
69
|
+
app.use(path, handler);
|
|
70
|
+
},
|
|
87
71
|
});
|
|
88
72
|
};
|
|
89
73
|
exports.initRouting = initRouting;
|
package/dist/routing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { static as _serveStatic } from "express";
|
|
2
|
+
declare type OriginalStatic = typeof _serveStatic;
|
|
3
|
+
export declare type StaticHandler = ReturnType<OriginalStatic>;
|
|
4
|
+
export declare class ServeStatic {
|
|
5
|
+
params: Parameters<OriginalStatic>;
|
|
6
|
+
constructor(...params: Parameters<OriginalStatic>);
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServeStatic = void 0;
|
|
4
|
+
class ServeStatic {
|
|
5
|
+
constructor(...params) {
|
|
6
|
+
this.params = params;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.ServeStatic = ServeStatic;
|
|
10
|
+
//# sourceMappingURL=serve-static.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-static.js","sourceRoot":"","sources":["../src/serve-static.ts"],"names":[],"mappings":";;;AAKA,MAAa,WAAW;IAGtB,YAAY,GAAG,MAAkC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAND,kCAMC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DependsOnMethodError } from "./errors.js";
|
|
2
|
+
export class DependsOnMethod {
|
|
3
|
+
constructor(methods) {
|
|
4
|
+
this.methods = methods;
|
|
5
|
+
Object.keys(methods).forEach((key) => {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
if (key in methods) {
|
|
8
|
+
const endpointMethods = ((_a = methods[key]) === null || _a === void 0 ? void 0 : _a.getMethods()) || [];
|
|
9
|
+
if (!endpointMethods.includes(key)) {
|
|
10
|
+
throw new DependsOnMethodError(`The endpoint assigned to the '${key}' parameter must have at least this method in its specification.\n` +
|
|
11
|
+
"This error should prevent mistakes during the development process.\n" +
|
|
12
|
+
"Example:\n\n" +
|
|
13
|
+
`new ${this.constructor.name}({\n` +
|
|
14
|
+
` ${key}: endpointsFactory.build({\n` +
|
|
15
|
+
` methods: ['${key}', ` +
|
|
16
|
+
((((_b = methods[key]) === null || _b === void 0 ? void 0 : _b.getMethods()) || [])
|
|
17
|
+
.map((m) => `'${m}'`)
|
|
18
|
+
.join(", ") || "...") +
|
|
19
|
+
"]\n" +
|
|
20
|
+
` // or method: '${key}'\n` +
|
|
21
|
+
" ...\n" +
|
|
22
|
+
" })\n" +
|
|
23
|
+
"});\n");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=depends-on-method.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depends-on-method.js","sourceRoot":"","sources":["../src/depends-on-method.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGhD,MAAM,OAAO,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,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,UAAU,EAAE,KAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAClC,MAAM,IAAI,oBAAoB,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,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,UAAU,EAAE,KAAI,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"}
|
package/dist-esm/endpoint.js
CHANGED
|
@@ -65,7 +65,8 @@ export class Endpoint extends AbstractEndpoint {
|
|
|
65
65
|
__classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_setupCorsHeaders).call(this, response);
|
|
66
66
|
}
|
|
67
67
|
if (request.method === "OPTIONS") {
|
|
68
|
-
|
|
68
|
+
response.end();
|
|
69
|
+
return;
|
|
69
70
|
}
|
|
70
71
|
const initialInput = getInitialInput(request, config.inputSources);
|
|
71
72
|
try {
|
|
@@ -78,7 +79,7 @@ export class Endpoint extends AbstractEndpoint {
|
|
|
78
79
|
if (isStreamClosed) {
|
|
79
80
|
return;
|
|
80
81
|
}
|
|
81
|
-
output = __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseOutput).call(this, await __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseAndRunHandler).call(this, { input, options, logger }));
|
|
82
|
+
output = await __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseOutput).call(this, await __classPrivateFieldGet(this, _Endpoint_instances, "m", _Endpoint_parseAndRunHandler).call(this, { input, options, logger }));
|
|
82
83
|
}
|
|
83
84
|
catch (e) {
|
|
84
85
|
if (e instanceof Error) {
|
|
@@ -103,9 +104,9 @@ _Endpoint_instances = new WeakSet(), _Endpoint_setupCorsHeaders = function _Endp
|
|
|
103
104
|
response.set("Access-Control-Allow-Origin", "*");
|
|
104
105
|
response.set("Access-Control-Allow-Methods", accessMethods);
|
|
105
106
|
response.set("Access-Control-Allow-Headers", "content-type");
|
|
106
|
-
}, _Endpoint_parseOutput = function _Endpoint_parseOutput(output) {
|
|
107
|
+
}, _Endpoint_parseOutput = async function _Endpoint_parseOutput(output) {
|
|
107
108
|
try {
|
|
108
|
-
return this.outputSchema.
|
|
109
|
+
return await this.outputSchema.parseAsync(output);
|
|
109
110
|
}
|
|
110
111
|
catch (e) {
|
|
111
112
|
if (e instanceof z.ZodError) {
|
|
@@ -127,7 +128,7 @@ _Endpoint_instances = new WeakSet(), _Endpoint_setupCorsHeaders = function _Endp
|
|
|
127
128
|
const options = {};
|
|
128
129
|
let isStreamClosed = false;
|
|
129
130
|
for (const def of this.middlewares) {
|
|
130
|
-
input
|
|
131
|
+
Object.assign(input, await def.input.parseAsync(input)); // middleware can transform the input types
|
|
131
132
|
Object.assign(options, await def.middleware({
|
|
132
133
|
input,
|
|
133
134
|
options,
|
|
@@ -144,7 +145,7 @@ _Endpoint_instances = new WeakSet(), _Endpoint_setupCorsHeaders = function _Endp
|
|
|
144
145
|
return { input, options, isStreamClosed };
|
|
145
146
|
}, _Endpoint_parseAndRunHandler = async function _Endpoint_parseAndRunHandler({ input, options, logger, }) {
|
|
146
147
|
return this.handler({
|
|
147
|
-
input: this.inputSchema.
|
|
148
|
+
input: await this.inputSchema.parseAsync(input),
|
|
148
149
|
options,
|
|
149
150
|
logger,
|
|
150
151
|
});
|
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,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,wCAAwC,EACxC,eAAe,GAKhB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAA2B,MAAM,kBAAkB,CAAC;AAQ9E,MAAM,OAAgB,gBAAgB;CAgBrC;AA6DD,kCAAkC;AAClC,MAAM,OAAO,QAQX,SAAQ,gBAAgB;IAcxB,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAO,EACP,aAAa,EACb,WAAW,EACX,SAAS,EACT,GAAG,IAAI,EACwC;QAC/C,KAAK,EAAE,CAAC;;QAtBS,YAAO,GAAQ,EAAE,CAAC;QAClB,gBAAW,GAA0C,EAAE,CAAC;QAsBzE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,wCAAwC,CACzD,WAAW,EACX,WAAW,CACZ,CAAC;QACF,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,WAAW,GAAG,WAAW,CAAC;QAC/B,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;IAEe,cAAc;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,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;IAyHe,KAAK,CAAC,OAAO,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,MAAM,GAMP;QACC,IAAI,MAAW,CAAC;QAChB,IAAI,KAAK,GAAiB,IAAI,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,uBAAA,IAAI,uDAAkB,MAAtB,IAAI,EAAmB,QAAQ,CAAC,CAAC;SAClC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;YAChC,
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
|
package/dist-esm/index.js
CHANGED
|
@@ -6,7 +6,8 @@ export { createApiResponse } from "./api-response.js";
|
|
|
6
6
|
export { createLogger } from "./logger.js";
|
|
7
7
|
export { createMiddleware } from "./middleware.js";
|
|
8
8
|
export { createResultHandler, defaultResultHandler } from "./result-handler.js";
|
|
9
|
-
export { DependsOnMethod } from "./
|
|
9
|
+
export { DependsOnMethod } from "./depends-on-method.js";
|
|
10
|
+
export { ServeStatic } from "./serve-static.js";
|
|
10
11
|
export { createServer, attachRouting } from "./server.js";
|
|
11
12
|
export { OpenAPI } from "./open-api.js";
|
|
12
13
|
export { OpenAPIError, DependsOnMethodError, RoutingError } from "./errors.js";
|
package/dist-esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,gBAAgB,GAIjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAwB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,gBAAgB,GAIjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAwB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,eAAe,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC"}
|
package/dist-esm/open-api.js
CHANGED
|
@@ -6,7 +6,7 @@ export class OpenAPI extends OpenApiBuilder {
|
|
|
6
6
|
constructor({ routing, config, title, version, serverUrl, successfulResponseDescription = "Successful response", errorResponseDescription = "Error response", }) {
|
|
7
7
|
super();
|
|
8
8
|
this.addInfo({ title, version }).addServer({ url: serverUrl });
|
|
9
|
-
const
|
|
9
|
+
const endpointCb = (endpoint, path, _method) => {
|
|
10
10
|
var _a, _b;
|
|
11
11
|
const method = _method;
|
|
12
12
|
const commonParams = { path, method, endpoint };
|
|
@@ -44,7 +44,7 @@ export class OpenAPI extends OpenApiBuilder {
|
|
|
44
44
|
[method]: operation,
|
|
45
45
|
});
|
|
46
46
|
};
|
|
47
|
-
routingCycle({ routing,
|
|
47
|
+
routingCycle({ routing, endpointCb });
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
//# 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,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,YAAY,EAAsB,MAAM,WAAW,CAAC;AAYtE,MAAM,OAAO,OAAQ,SAAQ,cAAc;IACzC,YAAmB,EACjB,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,6BAA6B,GAAG,qBAAqB,EACrD,wBAAwB,GAAG,gBAAgB,GAC3B;QAChB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,MAAM,
|
|
1
|
+
{"version":3,"file":"open-api.js","sourceRoot":"","sources":["../src/open-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,YAAY,EAAsB,MAAM,WAAW,CAAC;AAYtE,MAAM,OAAO,OAAQ,SAAQ,cAAc;IACzC,YAAmB,EACjB,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,6BAA6B,GAAG,qBAAqB,EACrD,wBAAwB,GAAG,gBAAgB,GAC3B;QAChB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAqC,CACnD,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,EAAE;;YACF,MAAM,MAAM,GAAG,OAAiB,CAAC;YACjC,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAChD,MAAM,YAAY,GAChB,CAAA,MAAA,MAAM,CAAC,YAAY,0CAAG,MAAM,CAAC,KAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,mBAAmB,CAAC;gBACzC,GAAG,YAAY;gBACf,YAAY;aACb,CAAC,CAAC;YACH,MAAM,SAAS,GAAoB;gBACjC,SAAS,EAAE;oBACT,KAAK,EAAE,cAAc,CAAC;wBACpB,GAAG,YAAY;wBACf,WAAW,EAAE,6BAA6B;wBAC1C,UAAU,EAAE,IAAI;qBACjB,CAAC;oBACF,KAAK,EAAE,cAAc,CAAC;wBACpB,GAAG,YAAY;wBACf,WAAW,EAAE,wBAAwB;wBACrC,UAAU,EAAE,KAAK;qBAClB,CAAC;iBACH;aACF,CAAC;YACF,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE;gBAC7B,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;aACnD;YACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,SAAS,CAAC,UAAU,GAAG,cAAc,CAAC;aACvC;YACD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjC,SAAS,CAAC,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;aACrD;YACD,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;gBAClC,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,0CAAG,qBAAqB,CAAC,KAAI,EAAE,CAAC;gBACtD,CAAC,MAAM,CAAC,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;QACF,YAAY,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACxC,CAAC;CACF"}
|
package/dist-esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"module","version":"5.1
|
|
1
|
+
{"type":"module","version":"5.3.1"}
|
package/dist-esm/routing.js
CHANGED
|
@@ -1,34 +1,10 @@
|
|
|
1
|
+
import { static as _serveStatic } from "express";
|
|
2
|
+
import { DependsOnMethod } from "./depends-on-method.js";
|
|
1
3
|
import { AbstractEndpoint } from "./endpoint.js";
|
|
2
|
-
import {
|
|
4
|
+
import { RoutingError } from "./errors.js";
|
|
5
|
+
import { ServeStatic } from "./serve-static.js";
|
|
3
6
|
import { getStartupLogo } from "./startup-logo.js";
|
|
4
|
-
export
|
|
5
|
-
constructor(methods) {
|
|
6
|
-
this.methods = methods;
|
|
7
|
-
Object.keys(methods).forEach((key) => {
|
|
8
|
-
var _a, _b;
|
|
9
|
-
if (key in methods) {
|
|
10
|
-
const endpointMethods = ((_a = methods[key]) === null || _a === void 0 ? void 0 : _a.getMethods()) || [];
|
|
11
|
-
if (!endpointMethods.includes(key)) {
|
|
12
|
-
throw new DependsOnMethodError(`The endpoint assigned to the '${key}' parameter must have at least this method in its specification.\n` +
|
|
13
|
-
"This error should prevent mistakes during the development process.\n" +
|
|
14
|
-
"Example:\n\n" +
|
|
15
|
-
`new ${this.constructor.name}({\n` +
|
|
16
|
-
` ${key}: endpointsFactory.build({\n` +
|
|
17
|
-
` methods: ['${key}', ` +
|
|
18
|
-
((((_b = methods[key]) === null || _b === void 0 ? void 0 : _b.getMethods()) || [])
|
|
19
|
-
.map((m) => `'${m}'`)
|
|
20
|
-
.join(", ") || "...") +
|
|
21
|
-
"]\n" +
|
|
22
|
-
` // or method: '${key}'\n` +
|
|
23
|
-
" ...\n" +
|
|
24
|
-
" })\n" +
|
|
25
|
-
"});\n");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export const routingCycle = ({ routing, cb, parentPath, cors, }) => {
|
|
7
|
+
export const routingCycle = ({ routing, endpointCb, staticCb, parentPath, cors, }) => {
|
|
32
8
|
Object.entries(routing).forEach(([segment, element]) => {
|
|
33
9
|
segment = segment.trim();
|
|
34
10
|
if (segment.match(/\//)) {
|
|
@@ -44,22 +20,28 @@ export const routingCycle = ({ routing, cb, parentPath, cors, }) => {
|
|
|
44
20
|
methods.push("options");
|
|
45
21
|
}
|
|
46
22
|
methods.forEach((method) => {
|
|
47
|
-
|
|
23
|
+
endpointCb(element, path, method);
|
|
48
24
|
});
|
|
49
25
|
}
|
|
26
|
+
else if (element instanceof ServeStatic) {
|
|
27
|
+
if (staticCb) {
|
|
28
|
+
staticCb(path, _serveStatic(...element.params));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
50
31
|
else if (element instanceof DependsOnMethod) {
|
|
51
32
|
Object.entries(element.methods).forEach(([method, endpoint]) => {
|
|
52
|
-
|
|
33
|
+
endpointCb(endpoint, path, method);
|
|
53
34
|
});
|
|
54
35
|
if (cors && Object.keys(element.methods).length > 0) {
|
|
55
36
|
const firstEndpoint = Object.values(element.methods)[0];
|
|
56
|
-
|
|
37
|
+
endpointCb(firstEndpoint, path, "options");
|
|
57
38
|
}
|
|
58
39
|
}
|
|
59
40
|
else {
|
|
60
41
|
routingCycle({
|
|
61
42
|
routing: element,
|
|
62
|
-
|
|
43
|
+
endpointCb,
|
|
44
|
+
staticCb,
|
|
63
45
|
cors,
|
|
64
46
|
parentPath: path,
|
|
65
47
|
});
|
|
@@ -73,12 +55,15 @@ export const initRouting = ({ app, logger, config, routing, }) => {
|
|
|
73
55
|
routingCycle({
|
|
74
56
|
routing,
|
|
75
57
|
cors: config.cors,
|
|
76
|
-
|
|
58
|
+
endpointCb: (endpoint, path, method) => {
|
|
77
59
|
app[method](path, async (request, response) => {
|
|
78
60
|
logger.info(`${request.method}: ${path}`);
|
|
79
61
|
await endpoint.execute({ request, response, logger, config });
|
|
80
62
|
});
|
|
81
63
|
},
|
|
64
|
+
staticCb: (path, handler) => {
|
|
65
|
+
app.use(path, handler);
|
|
66
|
+
},
|
|
82
67
|
});
|
|
83
68
|
};
|
|
84
69
|
//# sourceMappingURL=routing.js.map
|
package/dist-esm/routing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-static.js","sourceRoot":"","sources":["../src/serve-static.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IAGtB,YAAY,GAAG,MAAkC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "express-zod-api",
|
|
3
|
-
"version": "5.1
|
|
3
|
+
"version": "5.3.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": {
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"winston-transport": "^4.4.0"
|
|
89
89
|
},
|
|
90
90
|
"engines": {
|
|
91
|
-
"node": ">=12.0.0 <
|
|
91
|
+
"node": ">=12.0.0 <18.0.0"
|
|
92
92
|
},
|
|
93
93
|
"repository": {
|
|
94
94
|
"type": "git",
|