express-endpoints-collection 1.0.13 → 1.0.15
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/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -10
- package/dist/index.js.map +1 -1
- package/dist/test.d.ts +2 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +63 -0
- package/dist/test.js.map +1 -0
- package/dist/types/CustomErrorHandler.d.ts +2 -0
- package/dist/types/CustomErrorHandler.d.ts.map +1 -0
- package/dist/types/CustomErrorHandler.js +3 -0
- package/dist/types/CustomErrorHandler.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -5,16 +5,19 @@ import { EndpointInfo } from "./types/EndpointInfo";
|
|
|
5
5
|
import { EndpointArgs } from "./types/EndpointArgs";
|
|
6
6
|
import { HttpMethod } from "./types/HttpMethod";
|
|
7
7
|
import { TypedRequestHandler } from "./types/TypedRequestHandler";
|
|
8
|
+
import { CustomErrorHandler } from "./types/CustomErrorHandler";
|
|
8
9
|
export declare class EndpointsCollection {
|
|
9
10
|
private endpoints;
|
|
10
11
|
private router;
|
|
11
|
-
private collectionPrefix
|
|
12
|
-
|
|
12
|
+
private readonly collectionPrefix?;
|
|
13
|
+
private readonly customErrorHandler?;
|
|
14
|
+
constructor({ collectionPrefix, customErrorHandler, }?: {
|
|
13
15
|
collectionPrefix?: string;
|
|
16
|
+
customErrorHandler?: CustomErrorHandler;
|
|
14
17
|
});
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
+
private validateInput;
|
|
19
|
+
private coerceAll;
|
|
20
|
+
private coerceOnly;
|
|
18
21
|
callOriginal(method: HttpMethod, path: string, { inputSchema, outputSchema, summary, beforeResponse, afterInputValidation, beforeInputValidation, }: EndpointArgs<EndpointInputSchema, EndpointOutputSchema>, handlers: RequestHandler | RequestHandler[] | TypedRequestHandler<any, any>): import("express-serve-static-core").Router;
|
|
19
22
|
get<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handlers: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
|
20
23
|
post<TInput extends EndpointInputSchema, TOutput extends EndpointOutputSchema>(path: string, args: EndpointArgs<TInput, TOutput>, handler: TypedRequestHandler<TInput, TOutput>): import("express-serve-static-core").Router;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,13 +4,13 @@ exports.EndpointsCollection = void 0;
|
|
|
4
4
|
const express_1 = require("express");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
class EndpointsCollection {
|
|
7
|
-
constructor({ collectionPrefix =
|
|
7
|
+
constructor({ collectionPrefix, customErrorHandler, } = {}) {
|
|
8
8
|
this.endpoints = [];
|
|
9
9
|
this.router = (0, express_1.Router)();
|
|
10
|
-
this.collectionPrefix = "";
|
|
11
10
|
this.collectionPrefix = collectionPrefix;
|
|
11
|
+
this.customErrorHandler = customErrorHandler;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
validateInput(schema) {
|
|
14
14
|
return (req, res, next) => {
|
|
15
15
|
try {
|
|
16
16
|
if (schema.query) {
|
|
@@ -33,6 +33,11 @@ class EndpointsCollection {
|
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
35
|
if (error instanceof zod_1.z.ZodError) {
|
|
36
|
+
if (this.customErrorHandler) {
|
|
37
|
+
return res
|
|
38
|
+
.status(400)
|
|
39
|
+
.json(this.customErrorHandler(error, error.errors));
|
|
40
|
+
}
|
|
36
41
|
return res.status(400).json({
|
|
37
42
|
error: error.errors,
|
|
38
43
|
});
|
|
@@ -41,16 +46,17 @@ class EndpointsCollection {
|
|
|
41
46
|
}
|
|
42
47
|
};
|
|
43
48
|
}
|
|
44
|
-
|
|
45
|
-
const deepClone =
|
|
49
|
+
coerceAll(schema, data) {
|
|
50
|
+
const deepClone = {};
|
|
46
51
|
for (const key in schema.shape) {
|
|
47
|
-
|
|
48
|
-
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
const coerced = this.coerceOnly(schema.shape[key], data[key]);
|
|
54
|
+
// @ts-ignore
|
|
49
55
|
deepClone[key] = coerced.success ? coerced.data : data[key];
|
|
50
56
|
}
|
|
51
57
|
return deepClone;
|
|
52
58
|
}
|
|
53
|
-
|
|
59
|
+
coerceOnly(schema, value) {
|
|
54
60
|
if (schema instanceof zod_1.z.ZodString) {
|
|
55
61
|
return zod_1.z.coerce.string().safeParse(value);
|
|
56
62
|
}
|
|
@@ -94,7 +100,9 @@ class EndpointsCollection {
|
|
|
94
100
|
}
|
|
95
101
|
}
|
|
96
102
|
callOriginal(method, path, { inputSchema, outputSchema, summary, beforeResponse = [], afterInputValidation = [], beforeInputValidation = [], }, handlers) {
|
|
97
|
-
const pathToUse = this.collectionPrefix
|
|
103
|
+
const pathToUse = this.collectionPrefix
|
|
104
|
+
? `${this.collectionPrefix}${path}`
|
|
105
|
+
: path;
|
|
98
106
|
this.endpoints.push({
|
|
99
107
|
path: pathToUse,
|
|
100
108
|
method: method,
|
|
@@ -107,7 +115,7 @@ class EndpointsCollection {
|
|
|
107
115
|
combinedHandlers.push(beforeInputValidation);
|
|
108
116
|
}
|
|
109
117
|
if (inputSchema) {
|
|
110
|
-
combinedHandlers.push(
|
|
118
|
+
combinedHandlers.push(this.validateInput(inputSchema));
|
|
111
119
|
}
|
|
112
120
|
if (afterInputValidation) {
|
|
113
121
|
combinedHandlers.push(afterInputValidation);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAMiB;AAMjB,6BAAsC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":""}
|
package/dist/test.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const zod_1 = require("zod");
|
|
4
|
+
function coerceOnly(schema, value) {
|
|
5
|
+
if (schema instanceof zod_1.z.ZodString) {
|
|
6
|
+
return zod_1.z.coerce.string().safeParse(value);
|
|
7
|
+
}
|
|
8
|
+
else if (schema instanceof zod_1.z.ZodNumber) {
|
|
9
|
+
return zod_1.z.coerce.number().safeParse(value);
|
|
10
|
+
}
|
|
11
|
+
else if (schema instanceof zod_1.z.ZodBoolean) {
|
|
12
|
+
return zod_1.z.coerce.boolean().safeParse(value);
|
|
13
|
+
}
|
|
14
|
+
else if (schema instanceof zod_1.z.ZodDate) {
|
|
15
|
+
return zod_1.z.coerce.date().safeParse(value);
|
|
16
|
+
}
|
|
17
|
+
else if (schema instanceof zod_1.z.ZodBigInt) {
|
|
18
|
+
return zod_1.z.coerce.bigint().safeParse(value);
|
|
19
|
+
}
|
|
20
|
+
else if (schema instanceof zod_1.z.ZodArray) {
|
|
21
|
+
if (Array.isArray(value)) {
|
|
22
|
+
const coercedArray = value.map((item) => coerceOnly(schema.element, item));
|
|
23
|
+
return zod_1.z
|
|
24
|
+
.array(zod_1.z.any())
|
|
25
|
+
.safeParse(coercedArray.map((result) => result.success ? result.data : result.error));
|
|
26
|
+
}
|
|
27
|
+
return zod_1.z.array(zod_1.z.any()).safeParse(value);
|
|
28
|
+
}
|
|
29
|
+
else if (schema instanceof zod_1.z.ZodObject) {
|
|
30
|
+
if (typeof value === "object" && value !== null) {
|
|
31
|
+
const coercedObject = {};
|
|
32
|
+
for (const [key, propertySchema] of Object.entries(schema.shape)) {
|
|
33
|
+
const propertyValue = value[key];
|
|
34
|
+
const coercedProperty = coerceOnly(propertySchema, propertyValue);
|
|
35
|
+
coercedObject[key] = coercedProperty.success
|
|
36
|
+
? coercedProperty.data
|
|
37
|
+
: propertyValue;
|
|
38
|
+
}
|
|
39
|
+
return zod_1.z.object(schema.shape).safeParse(coercedObject);
|
|
40
|
+
}
|
|
41
|
+
return zod_1.z.object(schema.shape).safeParse(value);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return schema.safeParse(value);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const input = {
|
|
48
|
+
a: "1",
|
|
49
|
+
b: 2,
|
|
50
|
+
};
|
|
51
|
+
const schema = zod_1.z.object({
|
|
52
|
+
a: zod_1.z.number(),
|
|
53
|
+
b: zod_1.z.number(),
|
|
54
|
+
});
|
|
55
|
+
const coercedInput = {};
|
|
56
|
+
for (const key in schema.shape) {
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
const coerced = coerceOnly(schema.shape[key], input[key]);
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
coercedInput[key] = coerced.success ? coerced.data : input[key];
|
|
61
|
+
}
|
|
62
|
+
console.log(coercedInput);
|
|
63
|
+
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomErrorHandler.d.ts","sourceRoot":"","sources":["../../src/types/CustomErrorHandler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,OAAO,KACvB,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomErrorHandler.js","sourceRoot":"","sources":["../../src/types/CustomErrorHandler.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.15",
|
|
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>",
|