response-standardizer 1.1.0 → 1.1.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/dist/index.js +20 -21
- package/dist/types.d.ts +5 -7
- package/package.json +1 -1
- package/src/index.ts +22 -25
- package/src/types.ts +5 -9
package/dist/index.js
CHANGED
|
@@ -51,24 +51,23 @@ const role = (req, res, next, allowedRoles) => {
|
|
|
51
51
|
}
|
|
52
52
|
next();
|
|
53
53
|
};
|
|
54
|
-
const success = (req, res, data
|
|
55
|
-
res.status(200).json(
|
|
54
|
+
const success = (req, res, data) => {
|
|
55
|
+
res.status(200).json(data);
|
|
56
56
|
};
|
|
57
|
-
const paginate = (req, res, data
|
|
58
|
-
res.status(200).json(
|
|
57
|
+
const paginate = (req, res, data) => {
|
|
58
|
+
res.status(200).json(data);
|
|
59
59
|
};
|
|
60
|
-
const created = (req, res, data
|
|
61
|
-
res.status(201).json(
|
|
60
|
+
const created = (req, res, data) => {
|
|
61
|
+
res.status(201).json(data);
|
|
62
62
|
};
|
|
63
63
|
const deleted = (req, res) => {
|
|
64
64
|
res.status(204).send();
|
|
65
65
|
};
|
|
66
66
|
const validationError = (req, res, errors, message = "Validation error") => {
|
|
67
|
-
res.status(400).json({ errors, message
|
|
67
|
+
res.status(400).json({ errors, message });
|
|
68
68
|
};
|
|
69
69
|
const exceptionError = (req, res, errors, message = "Internal server error") => {
|
|
70
70
|
res.status(500).json({
|
|
71
|
-
data: null,
|
|
72
71
|
message,
|
|
73
72
|
errors
|
|
74
73
|
});
|
|
@@ -93,19 +92,19 @@ const responseHandlerMiddleware = (req, res, next) => {
|
|
|
93
92
|
const oldJson = res.json.bind(res);
|
|
94
93
|
const oldSend = res.send.bind(res);
|
|
95
94
|
res.json = function (data) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
return oldJson(
|
|
95
|
+
if (res.statusCode > 204) {
|
|
96
|
+
const response = {
|
|
97
|
+
code: res.statusCode,
|
|
98
|
+
message: data?.message || res.locals.message || (res.statusCode < 300 ? "OK" : "Error"),
|
|
99
|
+
errors: data?.errors ?? null,
|
|
100
|
+
meta: {
|
|
101
|
+
requestId: res.locals.requestId || generateRequestId(),
|
|
102
|
+
timestamp: getTimestamp()
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
return oldJson(response);
|
|
106
|
+
}
|
|
107
|
+
return oldJson(data);
|
|
109
108
|
};
|
|
110
109
|
res.send = function (data) {
|
|
111
110
|
if (res.statusCode === 204) {
|
package/dist/types.d.ts
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from "express";
|
|
2
2
|
export interface StandardResponse<T = any> {
|
|
3
|
-
status: "success" | "error";
|
|
4
3
|
code: number;
|
|
5
4
|
message: string;
|
|
6
|
-
data: T | null;
|
|
7
5
|
errors: Record<string, string[]> | null;
|
|
8
6
|
meta: {
|
|
9
7
|
requestId: string;
|
|
10
8
|
timestamp: string;
|
|
11
|
-
pagination: PaginationMeta | null;
|
|
12
9
|
};
|
|
13
10
|
}
|
|
14
|
-
export interface
|
|
11
|
+
export interface Pagination<T> {
|
|
12
|
+
data: T[];
|
|
15
13
|
total: number;
|
|
16
14
|
page: number;
|
|
17
15
|
perPage: number;
|
|
@@ -23,9 +21,9 @@ export interface RestMiddlewareFunctions {
|
|
|
23
21
|
responseHandlerMiddleware: <T>(req: Request, res: Response, next: NextFunction) => void;
|
|
24
22
|
}
|
|
25
23
|
export interface RestResponseFunctions {
|
|
26
|
-
success: <T>(req: Request, res: Response, data: T
|
|
27
|
-
paginate: <T>(req: Request, res: Response, data: T
|
|
28
|
-
created: <T>(req: Request, res: Response, data: T
|
|
24
|
+
success: <T>(req: Request, res: Response, data: T) => void;
|
|
25
|
+
paginate: <T>(req: Request, res: Response, data: Pagination<T>) => void;
|
|
26
|
+
created: <T>(req: Request, res: Response, data: T) => void;
|
|
29
27
|
deleted: (req: Request, res: Response) => void;
|
|
30
28
|
validationError: (req: Request, res: Response, errors: ErrorFields, message?: string) => void;
|
|
31
29
|
exceptionError: (req: Request, res: Response, errors: any, message?: string) => void;
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from "express";
|
|
2
|
-
import { ErrorFields,
|
|
2
|
+
import { ErrorFields, StandardResponse, RestResponseFunctions, RestMiddlewareFunctions, AuthRequest, Pagination } from "./types.js";
|
|
3
3
|
import { generateRequestId, getTimestamp } from "./utils.js";
|
|
4
4
|
import axios from "axios";
|
|
5
5
|
import jwt, { TokenExpiredError } from "jsonwebtoken";
|
|
@@ -71,22 +71,20 @@ const role = (req: any, res: any, next: any, allowedRoles: string[]) => {
|
|
|
71
71
|
}
|
|
72
72
|
next()
|
|
73
73
|
}
|
|
74
|
-
const success = <T>(req: Request, res: Response, data: T
|
|
75
|
-
res.status(200).json(
|
|
74
|
+
const success = <T>(req: Request, res: Response, data: T) => {
|
|
75
|
+
res.status(200).json(data);
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
const paginate = <T>(
|
|
79
79
|
req: Request,
|
|
80
80
|
res: Response,
|
|
81
|
-
data: T
|
|
82
|
-
pagination: PaginationMeta,
|
|
83
|
-
message: string | null = null
|
|
81
|
+
data: Pagination<T>
|
|
84
82
|
) => {
|
|
85
|
-
res.status(200).json(
|
|
83
|
+
res.status(200).json(data);
|
|
86
84
|
};
|
|
87
85
|
|
|
88
|
-
const created = <T>(req: Request, res: Response, data: T
|
|
89
|
-
res.status(201).json(
|
|
86
|
+
const created = <T>(req: Request, res: Response, data: T) => {
|
|
87
|
+
res.status(201).json(data);
|
|
90
88
|
};
|
|
91
89
|
|
|
92
90
|
const deleted = (req: Request, res: Response) => {
|
|
@@ -99,7 +97,7 @@ const validationError = (
|
|
|
99
97
|
errors: ErrorFields,
|
|
100
98
|
message = "Validation error"
|
|
101
99
|
) => {
|
|
102
|
-
res.status(400).json({ errors, message
|
|
100
|
+
res.status(400).json({ errors, message });
|
|
103
101
|
};
|
|
104
102
|
|
|
105
103
|
const exceptionError = (
|
|
@@ -109,7 +107,6 @@ const exceptionError = (
|
|
|
109
107
|
message = "Internal server error"
|
|
110
108
|
) => {
|
|
111
109
|
res.status(500).json({
|
|
112
|
-
data: null,
|
|
113
110
|
message,
|
|
114
111
|
errors
|
|
115
112
|
});
|
|
@@ -145,20 +142,20 @@ const responseHandlerMiddleware = (
|
|
|
145
142
|
const oldSend = res.send.bind(res);
|
|
146
143
|
|
|
147
144
|
res.json = function (data: any) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
return oldJson(
|
|
145
|
+
if(res.statusCode > 204){
|
|
146
|
+
const response: StandardResponse = {
|
|
147
|
+
code: res.statusCode,
|
|
148
|
+
message: data?.message || res.locals.message || (res.statusCode < 300 ? "OK" : "Error"),
|
|
149
|
+
errors: data?.errors ?? null,
|
|
150
|
+
meta: {
|
|
151
|
+
requestId: res.locals.requestId || generateRequestId(),
|
|
152
|
+
timestamp: getTimestamp()
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
return oldJson(response);
|
|
157
|
+
}
|
|
158
|
+
return oldJson(data);
|
|
162
159
|
};
|
|
163
160
|
|
|
164
161
|
res.send = function (data: any) {
|
package/src/types.ts
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from "express";
|
|
2
2
|
|
|
3
3
|
export interface StandardResponse<T = any> {
|
|
4
|
-
status: "success" | "error";
|
|
5
4
|
code: number;
|
|
6
5
|
message: string;
|
|
7
|
-
data: T | null;
|
|
8
6
|
errors: Record<string, string[]> | null;
|
|
9
7
|
meta: {
|
|
10
8
|
requestId: string;
|
|
11
9
|
timestamp: string;
|
|
12
|
-
pagination: PaginationMeta | null;
|
|
13
10
|
};
|
|
14
11
|
}
|
|
15
12
|
|
|
16
|
-
export interface
|
|
13
|
+
export interface Pagination<T>{
|
|
14
|
+
data: T[];
|
|
17
15
|
total: number;
|
|
18
16
|
page: number;
|
|
19
17
|
perPage: number;
|
|
@@ -28,15 +26,13 @@ export interface RestMiddlewareFunctions {
|
|
|
28
26
|
responseHandlerMiddleware: <T>(req: Request, res: Response, next: NextFunction) => void
|
|
29
27
|
}
|
|
30
28
|
export interface RestResponseFunctions {
|
|
31
|
-
success: <T>(req: Request, res: Response, data: T
|
|
29
|
+
success: <T>(req: Request, res: Response, data: T) => void;
|
|
32
30
|
paginate: <T>(
|
|
33
31
|
req: Request,
|
|
34
32
|
res: Response,
|
|
35
|
-
data: T
|
|
36
|
-
pagination: PaginationMeta,
|
|
37
|
-
message?: string | null
|
|
33
|
+
data: Pagination<T>
|
|
38
34
|
) => void;
|
|
39
|
-
created: <T>(req: Request, res: Response, data: T
|
|
35
|
+
created: <T>(req: Request, res: Response, data: T) => void;
|
|
40
36
|
deleted: (req: Request, res: Response) => void;
|
|
41
37
|
validationError: (
|
|
42
38
|
req: Request,
|