@alanszp/express-common-fn 10.0.3 → 12.0.0
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/commonErrorsHandler.js +29 -14
- package/dist/commonErrorsHandler.js.map +1 -1
- package/node_modules/@alanszp/audit/dist/errors/AuditError.d.ts +2 -2
- package/node_modules/@alanszp/audit/dist/errors/AuditError.js +1 -1
- package/node_modules/@alanszp/audit/dist/errors/AuditError.js.map +1 -1
- package/node_modules/@alanszp/audit/dist/errors/MissingAuditFieldsError.d.ts +3 -3
- package/node_modules/@alanszp/audit/dist/errors/MissingAuditFieldsError.js +2 -2
- package/node_modules/@alanszp/audit/dist/errors/MissingAuditFieldsError.js.map +1 -1
- package/node_modules/@alanszp/audit/package.json +5 -4
- package/node_modules/@alanszp/audit/src/errors/AuditError.ts +2 -2
- package/node_modules/@alanszp/audit/src/errors/MissingAuditFieldsError.ts +4 -7
- package/node_modules/@alanszp/errors/dist/BaseError.js.map +1 -0
- package/node_modules/@alanszp/errors/dist/HttpRenderableError.d.ts +4 -0
- package/node_modules/@alanszp/errors/dist/HttpRenderableError.js +8 -0
- package/node_modules/@alanszp/errors/dist/HttpRenderableError.js.map +1 -0
- package/node_modules/@alanszp/errors/dist/InternalServerError.d.ts +8 -0
- package/node_modules/@alanszp/errors/dist/InternalServerError.js +24 -0
- package/node_modules/@alanszp/errors/dist/InternalServerError.js.map +1 -0
- package/node_modules/@alanszp/errors/dist/RenderableError.d.ts +15 -0
- package/node_modules/@alanszp/errors/dist/RenderableError.js +27 -0
- package/node_modules/@alanszp/errors/dist/RenderableError.js.map +1 -0
- package/node_modules/@alanszp/errors/dist/index.d.ts +4 -3
- package/node_modules/@alanszp/errors/dist/index.js +4 -3
- package/node_modules/@alanszp/errors/dist/index.js.map +1 -1
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/.gitignore +3 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/.npmignore +3 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/LICENSE +21 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/app/appIdentifier.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/app/index.d.ts +1 -0
- package/node_modules/@alanszp/errors/{dist/errors/http → node_modules/@alanszp/core/dist/app}/index.js +6 -6
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/app/index.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/assignKey.d.ts +2 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/assignKey.js +20 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/assignKey.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/index.d.ts +2 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/index.js +19 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/index.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/keepOrUpdate.d.ts +3 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/keepOrUpdate.js +26 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/keepOrUpdate.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/types.d.ts +6 -0
- package/node_modules/@alanszp/errors/{dist/errors/RenderableError.js → node_modules/@alanszp/core/dist/editable/types.js} +1 -1
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/editable/types.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/index.d.ts +4 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/index.js +21 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/index.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/ListResult.d.ts +7 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/ListResult.js +8 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/ListResult.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/Orderable.d.ts +11 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/Orderable.js +13 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/Orderable.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/Paginable.d.ts +14 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/Paginable.js +22 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/Paginable.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/index.d.ts +3 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/index.js +20 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/dist/lists/index.js.map +1 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/package.json +25 -0
- package/node_modules/@alanszp/errors/node_modules/@alanszp/core/tsconfig.json +15 -0
- package/node_modules/@alanszp/errors/package.json +7 -2
- package/node_modules/@alanszp/errors/src/HttpRenderableError.ts +5 -0
- package/node_modules/@alanszp/errors/src/{errors/http/InternalServerError.ts → InternalServerError.ts} +8 -10
- package/node_modules/@alanszp/errors/src/RenderableError.ts +37 -0
- package/node_modules/@alanszp/errors/src/index.ts +4 -3
- package/node_modules/@alanszp/express/dist/helpers/renderErrorJson.d.ts +4 -0
- package/node_modules/@alanszp/express/dist/helpers/renderErrorJson.js +32 -0
- package/node_modules/@alanszp/express/dist/helpers/renderErrorJson.js.map +1 -0
- package/node_modules/@alanszp/express/dist/index.d.ts +0 -1
- package/node_modules/@alanszp/express/dist/index.js +0 -1
- package/node_modules/@alanszp/express/dist/index.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/authedForOrg.js +3 -4
- package/node_modules/@alanszp/express/dist/middlewares/authedForOrg.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/authenticateUser.js +8 -8
- package/node_modules/@alanszp/express/dist/middlewares/authenticateUser.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/createContext.js +2 -2
- package/node_modules/@alanszp/express/dist/middlewares/createContext.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/createContext.test.js +3 -3
- package/node_modules/@alanszp/express/dist/middlewares/createContext.test.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/hasRoles.js +3 -5
- package/node_modules/@alanszp/express/dist/middlewares/hasRoles.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/jsonBodyParser.js +3 -4
- package/node_modules/@alanszp/express/dist/middlewares/jsonBodyParser.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/returnInternalServerError.js +1 -2
- package/node_modules/@alanszp/express/dist/middlewares/returnInternalServerError.js.map +1 -1
- package/node_modules/@alanszp/express/dist/middlewares/returnNotFound.js +2 -3
- package/node_modules/@alanszp/express/dist/middlewares/returnNotFound.js.map +1 -1
- package/node_modules/@alanszp/express/dist/test/mocks/jwtUserMocks.js +7 -6
- package/node_modules/@alanszp/express/dist/test/mocks/jwtUserMocks.js.map +1 -1
- package/node_modules/@alanszp/express/package.json +7 -7
- package/node_modules/@alanszp/express/src/helpers/renderErrorJson.ts +29 -0
- package/node_modules/@alanszp/express/src/index.ts +0 -1
- package/node_modules/@alanszp/express/src/middlewares/authedForOrg.ts +3 -4
- package/node_modules/@alanszp/express/src/middlewares/authenticateUser.ts +18 -18
- package/node_modules/@alanszp/express/src/middlewares/createContext.test.ts +1 -1
- package/node_modules/@alanszp/express/src/middlewares/createContext.ts +1 -1
- package/node_modules/@alanszp/express/src/middlewares/hasRoles.ts +3 -5
- package/node_modules/@alanszp/express/src/middlewares/jsonBodyParser.ts +3 -4
- package/node_modules/@alanszp/express/src/middlewares/returnInternalServerError.ts +1 -2
- package/node_modules/@alanszp/express/src/middlewares/returnNotFound.ts +2 -3
- package/node_modules/@alanszp/express/src/test/mocks/jwtUserMocks.ts +6 -6
- package/node_modules/@alanszp/jwt/dist/JWTUser.d.ts +31 -0
- package/node_modules/@alanszp/jwt/dist/JWTUser.js +62 -0
- package/node_modules/@alanszp/jwt/dist/JWTUser.js.map +1 -0
- package/node_modules/@alanszp/jwt/dist/index.d.ts +1 -0
- package/node_modules/@alanszp/jwt/dist/index.js +1 -0
- package/node_modules/@alanszp/jwt/dist/index.js.map +1 -1
- package/node_modules/@alanszp/jwt/dist/jwt.d.ts +2 -3
- package/node_modules/@alanszp/jwt/dist/jwt.js +4 -26
- package/node_modules/@alanszp/jwt/dist/jwt.js.map +1 -1
- package/node_modules/@alanszp/jwt/dist/types.d.ts +3 -3
- package/node_modules/@alanszp/jwt/package.json +3 -2
- package/node_modules/@alanszp/jwt/src/JWTUser.ts +85 -0
- package/node_modules/@alanszp/jwt/src/index.ts +1 -0
- package/node_modules/@alanszp/jwt/src/jwt.ts +4 -29
- package/node_modules/@alanszp/jwt/src/types.ts +3 -3
- package/node_modules/@alanszp/logger/package.json +3 -2
- package/package.json +7 -6
- package/src/commonErrorsHandler.ts +35 -16
- package/node_modules/@alanszp/errors/dist/errors/BaseError.js.map +0 -1
- package/node_modules/@alanszp/errors/dist/errors/RenderableError.d.ts +0 -6
- package/node_modules/@alanszp/errors/dist/errors/RenderableError.js.map +0 -1
- package/node_modules/@alanszp/errors/dist/errors/http/BadRequestError.d.ts +0 -8
- package/node_modules/@alanszp/errors/dist/errors/http/BadRequestError.js +0 -20
- package/node_modules/@alanszp/errors/dist/errors/http/BadRequestError.js.map +0 -1
- package/node_modules/@alanszp/errors/dist/errors/http/HttpError.d.ts +0 -8
- package/node_modules/@alanszp/errors/dist/errors/http/HttpError.js +0 -18
- package/node_modules/@alanszp/errors/dist/errors/http/HttpError.js.map +0 -1
- package/node_modules/@alanszp/errors/dist/errors/http/InternalServerError.d.ts +0 -8
- package/node_modules/@alanszp/errors/dist/errors/http/InternalServerError.js +0 -32
- package/node_modules/@alanszp/errors/dist/errors/http/InternalServerError.js.map +0 -1
- package/node_modules/@alanszp/errors/dist/errors/http/NotFoundError.d.ts +0 -4
- package/node_modules/@alanszp/errors/dist/errors/http/NotFoundError.js +0 -11
- package/node_modules/@alanszp/errors/dist/errors/http/NotFoundError.js.map +0 -1
- package/node_modules/@alanszp/errors/dist/errors/http/UnauthorizedError.d.ts +0 -8
- package/node_modules/@alanszp/errors/dist/errors/http/UnauthorizedError.js +0 -20
- package/node_modules/@alanszp/errors/dist/errors/http/UnauthorizedError.js.map +0 -1
- package/node_modules/@alanszp/errors/dist/errors/http/index.d.ts +0 -5
- package/node_modules/@alanszp/errors/dist/errors/http/index.js.map +0 -1
- package/node_modules/@alanszp/errors/src/errors/RenderableError.ts +0 -7
- package/node_modules/@alanszp/errors/src/errors/http/BadRequestError.ts +0 -21
- package/node_modules/@alanszp/errors/src/errors/http/HttpError.ts +0 -19
- package/node_modules/@alanszp/errors/src/errors/http/NotFoundError.ts +0 -7
- package/node_modules/@alanszp/errors/src/errors/http/UnauthorizedError.ts +0 -21
- package/node_modules/@alanszp/errors/src/errors/http/index.ts +0 -5
- package/node_modules/@alanszp/express/dist/helpers/appIdentifier.js.map +0 -1
- package/node_modules/@alanszp/express/dist/views/errorView.d.ts +0 -2
- package/node_modules/@alanszp/express/dist/views/errorView.js +0 -14
- package/node_modules/@alanszp/express/dist/views/errorView.js.map +0 -1
- package/node_modules/@alanszp/express/src/helpers/appIdentifier.ts +0 -5
- package/node_modules/@alanszp/express/src/views/errorView.ts +0 -11
- /package/node_modules/@alanszp/errors/dist/{errors/BaseError.d.ts → BaseError.d.ts} +0 -0
- /package/node_modules/@alanszp/errors/dist/{errors/BaseError.js → BaseError.js} +0 -0
- /package/node_modules/@alanszp/{express/dist/helpers → errors/node_modules/@alanszp/core/dist/app}/appIdentifier.d.ts +0 -0
- /package/node_modules/@alanszp/{express/dist/helpers → errors/node_modules/@alanszp/core/dist/app}/appIdentifier.js +0 -0
- /package/node_modules/@alanszp/errors/src/{errors/BaseError.ts → BaseError.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createPublicKey, createPrivateKey, KeyObject } from "crypto";
|
|
2
2
|
import { SignJWT, jwtVerify } from "jose";
|
|
3
|
-
import type { JWTPayload,
|
|
3
|
+
import type { JWTPayload, SignOptions, VerifyOptions } from "./types";
|
|
4
|
+
import { JWTUser } from "./JWTUser";
|
|
4
5
|
|
|
5
6
|
export const JWT_ALGORITHM = "RS512";
|
|
6
7
|
|
|
@@ -49,7 +50,7 @@ export async function generateJWT(
|
|
|
49
50
|
|
|
50
51
|
const opts = withDefaultSignOptions(options);
|
|
51
52
|
|
|
52
|
-
return new SignJWT(
|
|
53
|
+
return new SignJWT(user.toTokenPayload())
|
|
53
54
|
.setProtectedHeader({ alg: JWT_ALGORITHM })
|
|
54
55
|
.setIssuedAt()
|
|
55
56
|
.setIssuer(opts.issuer)
|
|
@@ -58,17 +59,6 @@ export async function generateJWT(
|
|
|
58
59
|
.sign(key);
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
export function createTokenPayload(user: JWTUser): JWTPayload {
|
|
62
|
-
return {
|
|
63
|
-
sub: user.id,
|
|
64
|
-
ref: user.employeeReference,
|
|
65
|
-
org: user.organizationReference,
|
|
66
|
-
rls: user.roles,
|
|
67
|
-
prms: user.permissions,
|
|
68
|
-
seg: user.segmentReference,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
62
|
export async function verifyJWT(
|
|
73
63
|
publicKey: KeyObject | string,
|
|
74
64
|
token: string,
|
|
@@ -87,20 +77,5 @@ export async function verifyJWT(
|
|
|
87
77
|
|
|
88
78
|
const payload = verify.payload as JWTPayload;
|
|
89
79
|
|
|
90
|
-
return
|
|
91
|
-
id: payload.sub,
|
|
92
|
-
employeeReference: payload.ref,
|
|
93
|
-
organizationReference: payload.org,
|
|
94
|
-
roles: payload.rls,
|
|
95
|
-
permissions: payload.prms,
|
|
96
|
-
segmentReference: payload.seg || null,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export function jwtUserHasRoles(
|
|
101
|
-
jwtUser: JWTUser,
|
|
102
|
-
roles: string | string[]
|
|
103
|
-
): boolean {
|
|
104
|
-
const validateRoles = typeof roles === "string" ? [roles] : roles;
|
|
105
|
-
return validateRoles.some((role) => jwtUser.roles.includes(role));
|
|
80
|
+
return JWTUser.fromPayload(payload);
|
|
106
81
|
}
|
|
@@ -5,17 +5,17 @@ export interface JWTPayload extends LibPayload {
|
|
|
5
5
|
ref: string | null;
|
|
6
6
|
org: string;
|
|
7
7
|
rls: string[];
|
|
8
|
-
prms: string
|
|
8
|
+
prms: string;
|
|
9
9
|
// segmentReference
|
|
10
10
|
seg: string | null;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export interface
|
|
13
|
+
export interface IJWTUser {
|
|
14
14
|
id: string;
|
|
15
15
|
employeeReference: string | null;
|
|
16
16
|
organizationReference: string;
|
|
17
17
|
roles: string[];
|
|
18
|
-
permissions: string
|
|
18
|
+
permissions: string;
|
|
19
19
|
segmentReference: string | null;
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alanszp/logger",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
4
|
"description": "Alan's logger util.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -31,5 +31,6 @@
|
|
|
31
31
|
"ts-node": "^10.0.0",
|
|
32
32
|
"tslint": "^5.11.0",
|
|
33
33
|
"typescript": "^4.3.4"
|
|
34
|
-
}
|
|
34
|
+
},
|
|
35
|
+
"gitHead": "085a76a387bc0e272e09e9cb1b6f48f814512940"
|
|
35
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alanszp/express-common-fn",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
4
|
"description": "Alan's express function to handle common errors and format uniformly.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -19,10 +19,11 @@
|
|
|
19
19
|
"yalc-publish": "yarn run yalc publish"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@alanszp/
|
|
23
|
-
"@alanszp/
|
|
24
|
-
"@alanszp/
|
|
25
|
-
"@alanszp/
|
|
22
|
+
"@alanszp/core": "^12.0.0",
|
|
23
|
+
"@alanszp/errors": "^12.0.0",
|
|
24
|
+
"@alanszp/express": "^12.0.0",
|
|
25
|
+
"@alanszp/logger": "^12.0.0",
|
|
26
|
+
"@alanszp/validations": "^12.0.0"
|
|
26
27
|
},
|
|
27
28
|
"peerDependencies": {
|
|
28
29
|
"express": "^4.17.1",
|
|
@@ -34,5 +35,5 @@
|
|
|
34
35
|
"typeorm": "^0.2.34",
|
|
35
36
|
"typescript": "4.7.4"
|
|
36
37
|
},
|
|
37
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "085a76a387bc0e272e09e9cb1b6f48f814512940"
|
|
38
39
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { appIdentifier } from "@alanszp/core";
|
|
2
2
|
import {
|
|
3
|
-
BadRequestError,
|
|
4
3
|
InternalServerError,
|
|
5
|
-
|
|
4
|
+
RenderableError,
|
|
5
|
+
HttpRenderableError,
|
|
6
|
+
RenderableView,
|
|
6
7
|
} from "@alanszp/errors";
|
|
7
8
|
import { Context, ILogger } from "@alanszp/logger";
|
|
8
|
-
import { ModelValidationError } from "@alanszp/validations";
|
|
9
9
|
import { Response } from "express";
|
|
10
10
|
import { EntityNotFoundError, QueryFailedError } from "typeorm";
|
|
11
11
|
|
|
@@ -19,6 +19,24 @@ const defaultsOption: CommonErrorOptions = {
|
|
|
19
19
|
extraContext: {},
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
function render404Error(): RenderableView {
|
|
23
|
+
return {
|
|
24
|
+
code: "not_found",
|
|
25
|
+
message: "Not Found",
|
|
26
|
+
context: {},
|
|
27
|
+
origin: appIdentifier(),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function render400Error(message: string): RenderableView {
|
|
32
|
+
return {
|
|
33
|
+
code: "bad_request",
|
|
34
|
+
message,
|
|
35
|
+
context: {},
|
|
36
|
+
origin: appIdentifier(),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
22
40
|
export function commonErrorsHandler(loggerFn: () => ILogger) {
|
|
23
41
|
return function handleCommonErrors(
|
|
24
42
|
error: unknown,
|
|
@@ -34,9 +52,14 @@ export function commonErrorsHandler(loggerFn: () => ILogger) {
|
|
|
34
52
|
};
|
|
35
53
|
const instanceLogger = logger.child(opts.extraContext);
|
|
36
54
|
|
|
37
|
-
if (error instanceof
|
|
38
|
-
|
|
39
|
-
|
|
55
|
+
if (error instanceof RenderableError) {
|
|
56
|
+
const statusCode =
|
|
57
|
+
error instanceof HttpRenderableError ? error.httpCode() : 500;
|
|
58
|
+
instanceLogger.info(`${baseLog}.error.${error.code()}`, {
|
|
59
|
+
statusCode,
|
|
60
|
+
error,
|
|
61
|
+
});
|
|
62
|
+
res.status(statusCode).json(error.toView());
|
|
40
63
|
return;
|
|
41
64
|
}
|
|
42
65
|
|
|
@@ -45,11 +68,9 @@ export function commonErrorsHandler(loggerFn: () => ILogger) {
|
|
|
45
68
|
error,
|
|
46
69
|
});
|
|
47
70
|
if (opts.entityNotFound === 400) {
|
|
48
|
-
res
|
|
49
|
-
.status(400)
|
|
50
|
-
.json(errorView(new BadRequestError("Entity not present")));
|
|
71
|
+
res.status(400).json(render400Error("Entity not present"));
|
|
51
72
|
} else {
|
|
52
|
-
res.status(404).json(
|
|
73
|
+
res.status(404).json(render404Error());
|
|
53
74
|
}
|
|
54
75
|
return;
|
|
55
76
|
}
|
|
@@ -59,19 +80,17 @@ export function commonErrorsHandler(loggerFn: () => ILogger) {
|
|
|
59
80
|
instanceLogger.info(`${baseLog}.error.typeorm.query_error.duplicate`, {
|
|
60
81
|
error,
|
|
61
82
|
});
|
|
62
|
-
res
|
|
63
|
-
.status(400)
|
|
64
|
-
.json(errorView(new BadRequestError("Entity already exists")));
|
|
83
|
+
res.status(400).json(render400Error("Entity already exists"));
|
|
65
84
|
} else {
|
|
66
85
|
instanceLogger.error(`${baseLog}.error.typeorm.query_error.unknown`, {
|
|
67
86
|
error,
|
|
68
87
|
});
|
|
69
|
-
res.status(500).json(
|
|
88
|
+
res.status(500).json(new InternalServerError(error).toView());
|
|
70
89
|
}
|
|
71
90
|
return;
|
|
72
91
|
}
|
|
73
92
|
|
|
74
93
|
instanceLogger.error(`${baseLog}.error.unknown`, { error });
|
|
75
|
-
res.status(500).json(
|
|
94
|
+
res.status(500).json(new InternalServerError(error).toView());
|
|
76
95
|
};
|
|
77
96
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseError.js","sourceRoot":"","sources":["../../src/errors/BaseError.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE;YACjD,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SACjD;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;SAC5C;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACF;AAbD,8BAaC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RenderableError.js","sourceRoot":"","sources":["../../src/errors/RenderableError.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { RenderableContext } from "../RenderableError";
|
|
2
|
-
import { HttpError } from "./HttpError";
|
|
3
|
-
export declare class BadRequestError extends HttpError {
|
|
4
|
-
private errors;
|
|
5
|
-
constructor(errors: string[] | string);
|
|
6
|
-
renderMessage(): string;
|
|
7
|
-
context(): RenderableContext;
|
|
8
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BadRequestError = void 0;
|
|
4
|
-
const HttpError_1 = require("./HttpError");
|
|
5
|
-
class BadRequestError extends HttpError_1.HttpError {
|
|
6
|
-
constructor(errors) {
|
|
7
|
-
super();
|
|
8
|
-
this.errors = errors;
|
|
9
|
-
}
|
|
10
|
-
renderMessage() {
|
|
11
|
-
return "Bad Request";
|
|
12
|
-
}
|
|
13
|
-
context() {
|
|
14
|
-
return {
|
|
15
|
-
errors: this.errors,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.BadRequestError = BadRequestError;
|
|
20
|
-
//# sourceMappingURL=BadRequestError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BadRequestError.js","sourceRoot":"","sources":["../../../src/errors/http/BadRequestError.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAExC,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAmB,MAAyB;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,aAAa;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAEM,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;CACF;AAjBD,0CAiBC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { BaseError } from "../BaseError";
|
|
2
|
-
import { RenderableContext, RenderableError } from "../RenderableError";
|
|
3
|
-
export declare abstract class HttpError extends BaseError implements RenderableError {
|
|
4
|
-
constructor();
|
|
5
|
-
abstract renderMessage(): string;
|
|
6
|
-
code(): string;
|
|
7
|
-
context(): RenderableContext;
|
|
8
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpError = void 0;
|
|
4
|
-
const lodash_1 = require("lodash");
|
|
5
|
-
const BaseError_1 = require("../BaseError");
|
|
6
|
-
class HttpError extends BaseError_1.BaseError {
|
|
7
|
-
constructor() {
|
|
8
|
-
super("HttpError");
|
|
9
|
-
}
|
|
10
|
-
code() {
|
|
11
|
-
return (0, lodash_1.snakeCase)(this.renderMessage());
|
|
12
|
-
}
|
|
13
|
-
context() {
|
|
14
|
-
return {};
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.HttpError = HttpError;
|
|
18
|
-
//# sourceMappingURL=HttpError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HttpError.js","sourceRoot":"","sources":["../../../src/errors/http/HttpError.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,4CAAyC;AAGzC,MAAsB,SAAU,SAAQ,qBAAS;IAC/C;QACE,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;IAIM,IAAI;QACT,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAdD,8BAcC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { RenderableContext } from "../RenderableError";
|
|
2
|
-
import { HttpError } from "./HttpError";
|
|
3
|
-
export declare class InternalServerError extends HttpError {
|
|
4
|
-
error: any;
|
|
5
|
-
constructor(error?: unknown);
|
|
6
|
-
renderMessage(): string;
|
|
7
|
-
context(): RenderableContext;
|
|
8
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InternalServerError = void 0;
|
|
4
|
-
const HttpError_1 = require("./HttpError");
|
|
5
|
-
class InternalServerError extends HttpError_1.HttpError {
|
|
6
|
-
constructor(error) {
|
|
7
|
-
super();
|
|
8
|
-
this.error = error;
|
|
9
|
-
}
|
|
10
|
-
renderMessage() {
|
|
11
|
-
return "Internal Server Error";
|
|
12
|
-
}
|
|
13
|
-
context() {
|
|
14
|
-
if (process.env.NODE_ENV === "production") {
|
|
15
|
-
return {};
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
error: {
|
|
19
|
-
name: this.error.name,
|
|
20
|
-
message: this.error.message,
|
|
21
|
-
code: this.error.code,
|
|
22
|
-
context: this.error.context,
|
|
23
|
-
renderMessage: this.error.renderMessage,
|
|
24
|
-
stack: this.error.stack,
|
|
25
|
-
status: this.error.status,
|
|
26
|
-
signal: this.error.signal,
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.InternalServerError = InternalServerError;
|
|
32
|
-
//# sourceMappingURL=InternalServerError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InternalServerError.js","sourceRoot":"","sources":["../../../src/errors/http/InternalServerError.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAExC,MAAa,mBAAoB,SAAQ,qBAAS;IAGhD,YAAY,KAAe;QACzB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,aAAa;QAClB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEM,OAAO;QACZ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;YACzC,OAAO,EAAE,CAAC;SACX;QAED,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACvC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBACzB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aAC1B;SACF,CAAC;IACJ,CAAC;CACF;AA9BD,kDA8BC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NotFoundError = void 0;
|
|
4
|
-
const HttpError_1 = require("./HttpError");
|
|
5
|
-
class NotFoundError extends HttpError_1.HttpError {
|
|
6
|
-
renderMessage() {
|
|
7
|
-
return "Not Found";
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.NotFoundError = NotFoundError;
|
|
11
|
-
//# sourceMappingURL=NotFoundError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NotFoundError.js","sourceRoot":"","sources":["../../../src/errors/http/NotFoundError.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,MAAa,aAAc,SAAQ,qBAAS;IACnC,aAAa;QAClB,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAJD,sCAIC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { RenderableContext } from "../RenderableError";
|
|
2
|
-
import { HttpError } from "./HttpError";
|
|
3
|
-
export declare class UnauthorizedError extends HttpError {
|
|
4
|
-
requiredChecks: any;
|
|
5
|
-
constructor(requiredChecks: string[]);
|
|
6
|
-
renderMessage(): string;
|
|
7
|
-
context(): RenderableContext;
|
|
8
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnauthorizedError = void 0;
|
|
4
|
-
const HttpError_1 = require("./HttpError");
|
|
5
|
-
class UnauthorizedError extends HttpError_1.HttpError {
|
|
6
|
-
constructor(requiredChecks) {
|
|
7
|
-
super();
|
|
8
|
-
this.requiredChecks = requiredChecks;
|
|
9
|
-
}
|
|
10
|
-
renderMessage() {
|
|
11
|
-
return "Unauthorized Error";
|
|
12
|
-
}
|
|
13
|
-
context() {
|
|
14
|
-
return {
|
|
15
|
-
requiredChecks: this.requiredChecks,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.UnauthorizedError = UnauthorizedError;
|
|
20
|
-
//# sourceMappingURL=UnauthorizedError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UnauthorizedError.js","sourceRoot":"","sources":["../../../src/errors/http/UnauthorizedError.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAExC,MAAa,iBAAkB,SAAQ,qBAAS;IAG9C,YAAmB,cAAwB;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEM,aAAa;QAClB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAEM,OAAO;QACZ,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;CACF;AAjBD,8CAiBC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC;AAClC,sDAAoC;AACpC,wDAAsC;AACtC,kDAAgC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { RenderableContext } from "../RenderableError";
|
|
2
|
-
import { HttpError } from "./HttpError";
|
|
3
|
-
|
|
4
|
-
export class BadRequestError extends HttpError {
|
|
5
|
-
private errors;
|
|
6
|
-
|
|
7
|
-
public constructor(errors: string[] | string) {
|
|
8
|
-
super();
|
|
9
|
-
this.errors = errors;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
public renderMessage(): string {
|
|
13
|
-
return "Bad Request";
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public context(): RenderableContext {
|
|
17
|
-
return {
|
|
18
|
-
errors: this.errors,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { snakeCase } from "lodash";
|
|
2
|
-
import { BaseError } from "../BaseError";
|
|
3
|
-
import { RenderableContext, RenderableError } from "../RenderableError";
|
|
4
|
-
|
|
5
|
-
export abstract class HttpError extends BaseError implements RenderableError {
|
|
6
|
-
constructor() {
|
|
7
|
-
super("HttpError");
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
public abstract renderMessage(): string;
|
|
11
|
-
|
|
12
|
-
public code(): string {
|
|
13
|
-
return snakeCase(this.renderMessage());
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public context(): RenderableContext {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { RenderableContext } from "../RenderableError";
|
|
2
|
-
import { HttpError } from "./HttpError";
|
|
3
|
-
|
|
4
|
-
export class UnauthorizedError extends HttpError {
|
|
5
|
-
public requiredChecks;
|
|
6
|
-
|
|
7
|
-
public constructor(requiredChecks: string[]) {
|
|
8
|
-
super();
|
|
9
|
-
this.requiredChecks = requiredChecks;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
public renderMessage(): string {
|
|
13
|
-
return "Unauthorized Error";
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public context(): RenderableContext {
|
|
17
|
-
return {
|
|
18
|
-
requiredChecks: this.requiredChecks,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appIdentifier.js","sourceRoot":"","sources":["../../src/helpers/appIdentifier.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW,CAAC;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;IAClD,OAAO,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;AAC7B,CAAC;AAJD,sCAIC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.errorView = void 0;
|
|
4
|
-
const appIdentifier_1 = require("../helpers/appIdentifier");
|
|
5
|
-
function errorView(err) {
|
|
6
|
-
return {
|
|
7
|
-
code: err.code(),
|
|
8
|
-
message: err.renderMessage(),
|
|
9
|
-
context: err.context(),
|
|
10
|
-
origin: (0, appIdentifier_1.appIdentifier)(),
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
exports.errorView = errorView;
|
|
14
|
-
//# sourceMappingURL=errorView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errorView.js","sourceRoot":"","sources":["../../src/views/errorView.ts"],"names":[],"mappings":";;;AACA,4DAAyD;AAEzD,SAAgB,SAAS,CAAC,GAAoB;IAC5C,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;QAChB,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE;QAC5B,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;QACtB,MAAM,EAAE,IAAA,6BAAa,GAAE;KACxB,CAAC;AACJ,CAAC;AAPD,8BAOC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { RenderableError } from "@alanszp/errors";
|
|
2
|
-
import { appIdentifier } from "../helpers/appIdentifier";
|
|
3
|
-
|
|
4
|
-
export function errorView(err: RenderableError): unknown {
|
|
5
|
-
return {
|
|
6
|
-
code: err.code(),
|
|
7
|
-
message: err.renderMessage(),
|
|
8
|
-
context: err.context(),
|
|
9
|
-
origin: appIdentifier(),
|
|
10
|
-
};
|
|
11
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|