@doffy-gittix/common 1.0.2 → 1.0.3
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/build/config.d.ts +4 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +4 -0
- package/build/config.js.map +1 -0
- package/build/errors/bad-request-error.d.ts +9 -0
- package/build/errors/bad-request-error.d.ts.map +1 -0
- package/build/errors/bad-request-error.js +12 -0
- package/build/errors/bad-request-error.js.map +1 -0
- package/build/errors/base-error.d.ts +9 -0
- package/build/errors/base-error.d.ts.map +1 -0
- package/build/errors/base-error.js +7 -0
- package/build/errors/base-error.js.map +1 -0
- package/build/errors/database-connection-error.d.ts +9 -0
- package/build/errors/database-connection-error.d.ts.map +1 -0
- package/build/errors/database-connection-error.js +12 -0
- package/build/errors/database-connection-error.js.map +1 -0
- package/build/errors/index.d.ts +7 -0
- package/build/errors/index.d.ts.map +1 -0
- package/{src/errors/index.ts → build/errors/index.js} +7 -6
- package/build/errors/index.js.map +1 -0
- package/build/errors/notfound-error.d.ts +9 -0
- package/build/errors/notfound-error.d.ts.map +1 -0
- package/build/errors/notfound-error.js +12 -0
- package/build/errors/notfound-error.js.map +1 -0
- package/build/errors/request-validation-error.d.ts +15 -0
- package/build/errors/request-validation-error.d.ts.map +1 -0
- package/build/errors/request-validation-error.js +21 -0
- package/build/errors/request-validation-error.js.map +1 -0
- package/build/errors/unauthorized_error.d.ts +9 -0
- package/build/errors/unauthorized_error.d.ts.map +1 -0
- package/build/errors/unauthorized_error.js +12 -0
- package/build/errors/unauthorized_error.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/{src/index.ts → build/index.js} +1 -0
- package/build/index.js.map +1 -0
- package/build/middleware/error-handler.d.ts +3 -0
- package/build/middleware/error-handler.d.ts.map +1 -0
- package/build/middleware/error-handler.js +8 -0
- package/build/middleware/error-handler.js.map +1 -0
- package/build/middleware/get-current-user-handler.d.ts +17 -0
- package/build/middleware/get-current-user-handler.d.ts.map +1 -0
- package/build/middleware/get-current-user-handler.js +18 -0
- package/build/middleware/get-current-user-handler.js.map +1 -0
- package/build/middleware/index.d.ts +5 -0
- package/build/middleware/index.d.ts.map +1 -0
- package/{src/middleware/index.ts → build/middleware/index.js} +5 -4
- package/build/middleware/index.js.map +1 -0
- package/build/middleware/require-auth-handler.d.ts +3 -0
- package/build/middleware/require-auth-handler.d.ts.map +1 -0
- package/build/middleware/require-auth-handler.js +8 -0
- package/build/middleware/require-auth-handler.js.map +1 -0
- package/build/middleware/validation-handler.d.ts +3 -0
- package/build/middleware/validation-handler.d.ts.map +1 -0
- package/build/middleware/validation-handler.js +10 -0
- package/build/middleware/validation-handler.js.map +1 -0
- package/package.json +5 -1
- package/src/config.ts +0 -3
- package/src/errors/bad-request-error.ts +0 -14
- package/src/errors/base-error.ts +0 -13
- package/src/errors/database-connection-error.ts +0 -14
- package/src/errors/notfound-error.ts +0 -14
- package/src/errors/request-validation-error.ts +0 -23
- package/src/errors/unauthorized_error.ts +0 -14
- package/src/middleware/error-handler.ts +0 -14
- package/src/middleware/get-current-user-handler.ts +0 -35
- package/src/middleware/require-auth-handler.ts +0 -13
- package/src/middleware/validation-handler.ts +0 -15
- package/tsconfig.json +0 -44
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAA6C,CAAC;AACtE,eAAO,MAAM,UAAU,oBAAyB,CAAC;AACjD,eAAO,MAAM,OAAO,oBAAsB,CAAC"}
|
package/build/config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,eAAe,CAAC;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACjD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bad-request-error.d.ts","sourceRoot":"","sources":["../../src/errors/bad-request-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,UAAU,SAAO;gBAEL,OAAO,EAAE,MAAM;IAK3B,SAAS;;;CAGV"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseError } from './base-error.js';
|
|
2
|
+
export class BadRequestError extends BaseError {
|
|
3
|
+
statusCode = 400;
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
Object.setPrototypeOf(this, BadRequestError.prototype);
|
|
7
|
+
}
|
|
8
|
+
serialize() {
|
|
9
|
+
return [{ message: this.message }];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=bad-request-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bad-request-error.js","sourceRoot":"","sources":["../../src/errors/bad-request-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,UAAU,GAAG,GAAG,CAAC;IAEjB,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-error.d.ts","sourceRoot":"","sources":["../../src/errors/base-error.ts"],"names":[],"mappings":"AAAA,8BAAsB,SAAU,SAAQ,KAAK;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM;IAK3B,QAAQ,CAAC,SAAS,IAAI;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAAE;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-error.js","sourceRoot":"","sources":["../../src/errors/base-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,SAAU,SAAQ,KAAK;IAG3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;CAMF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-connection-error.d.ts","sourceRoot":"","sources":["../../src/errors/database-connection-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,qBAAa,uBAAwB,SAAQ,SAAS;IACpD,UAAU,SAAO;;IAOjB,SAAS;;;CAGV"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseError } from './base-error.js';
|
|
2
|
+
export class DatabaseConnectionError extends BaseError {
|
|
3
|
+
statusCode = 500;
|
|
4
|
+
constructor() {
|
|
5
|
+
super('database connection error');
|
|
6
|
+
Object.setPrototypeOf(this, DatabaseConnectionError.prototype);
|
|
7
|
+
}
|
|
8
|
+
serialize() {
|
|
9
|
+
return [{ message: 'database connection error' }];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=database-connection-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-connection-error.js","sourceRoot":"","sources":["../../src/errors/database-connection-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACpD,UAAU,GAAG,GAAG,CAAC;IAEjB;QACE,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAA;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './base-error.js';
|
|
2
|
+
export * from './request-validation-error.js';
|
|
3
|
+
export * from './database-connection-error.js';
|
|
4
|
+
export * from './notfound-error.js';
|
|
5
|
+
export * from './bad-request-error.js';
|
|
6
|
+
export * from './unauthorized_error.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export * from './base-error.js';
|
|
2
|
-
export * from './request-validation-error.js';
|
|
3
|
-
export * from './database-connection-error.js';
|
|
4
|
-
export * from './notfound-error.js';
|
|
5
|
-
export * from './bad-request-error.js';
|
|
6
|
-
export * from './unauthorized_error.js';
|
|
1
|
+
export * from './base-error.js';
|
|
2
|
+
export * from './request-validation-error.js';
|
|
3
|
+
export * from './database-connection-error.js';
|
|
4
|
+
export * from './notfound-error.js';
|
|
5
|
+
export * from './bad-request-error.js';
|
|
6
|
+
export * from './unauthorized_error.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notfound-error.d.ts","sourceRoot":"","sources":["../../src/errors/notfound-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,qBAAa,aAAc,SAAQ,SAAS;IAC1C,UAAU,SAAO;;IAOjB,SAAS;;;CAGV"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseError } from './base-error.js';
|
|
2
|
+
export class NotFoundError extends BaseError {
|
|
3
|
+
statusCode = 404;
|
|
4
|
+
constructor() {
|
|
5
|
+
super('not found');
|
|
6
|
+
Object.setPrototypeOf(this, NotFoundError.prototype);
|
|
7
|
+
}
|
|
8
|
+
serialize() {
|
|
9
|
+
return [{ message: 'not found' }];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=notfound-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notfound-error.js","sourceRoot":"","sources":["../../src/errors/notfound-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,UAAU,GAAG,GAAG,CAAC;IAEjB;QACE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ValidationError } from 'express-validator';
|
|
2
|
+
import { BaseError } from './base-error.js';
|
|
3
|
+
export declare class RequestValidationError extends BaseError {
|
|
4
|
+
statusCode: number;
|
|
5
|
+
errors: ValidationError[];
|
|
6
|
+
constructor(errors: ValidationError[]);
|
|
7
|
+
serialize(): ({
|
|
8
|
+
message: string;
|
|
9
|
+
field: string;
|
|
10
|
+
} | {
|
|
11
|
+
message: string;
|
|
12
|
+
field?: never;
|
|
13
|
+
})[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=request-validation-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-validation-error.d.ts","sourceRoot":"","sources":["../../src/errors/request-validation-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,UAAU,SAAO;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;gBACd,MAAM,EAAE,eAAe,EAAE;IAMrC,SAAS;iBAIuB,MAAM;;;iBAGN,MAAM;;;CAGvC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseError } from './base-error.js';
|
|
2
|
+
export class RequestValidationError extends BaseError {
|
|
3
|
+
statusCode = 400;
|
|
4
|
+
errors;
|
|
5
|
+
constructor(errors) {
|
|
6
|
+
super('validation error');
|
|
7
|
+
this.errors = errors;
|
|
8
|
+
Object.setPrototypeOf(this, RequestValidationError.prototype);
|
|
9
|
+
}
|
|
10
|
+
serialize() {
|
|
11
|
+
return this.errors.map((error) => {
|
|
12
|
+
return error.type === 'field'
|
|
13
|
+
? {
|
|
14
|
+
message: error.msg,
|
|
15
|
+
field: error.path,
|
|
16
|
+
}
|
|
17
|
+
: { message: error.msg };
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=request-validation-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-validation-error.js","sourceRoot":"","sources":["../../src/errors/request-validation-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IACnD,UAAU,GAAG,GAAG,CAAC;IACjB,MAAM,CAAoB;IAC1B,YAAY,MAAyB;QACnC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO;gBAC3B,CAAC,CAAC;oBACE,OAAO,EAAE,KAAK,CAAC,GAAa;oBAC5B,KAAK,EAAE,KAAK,CAAC,IAAI;iBAClB;gBACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,GAAa,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unauthorized_error.d.ts","sourceRoot":"","sources":["../../src/errors/unauthorized_error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C,UAAU,SAAO;;IAOjB,SAAS;;;CAGV"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseError } from './base-error.js';
|
|
2
|
+
export class UnauthorizedError extends BaseError {
|
|
3
|
+
statusCode = 401;
|
|
4
|
+
constructor() {
|
|
5
|
+
super('Unauthorized');
|
|
6
|
+
Object.setPrototypeOf(this, UnauthorizedError.prototype);
|
|
7
|
+
}
|
|
8
|
+
serialize() {
|
|
9
|
+
return [{ message: 'Unauthorized' }];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=unauthorized_error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unauthorized_error.js","sourceRoot":"","sources":["../../src/errors/unauthorized_error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,UAAU,GAAG,GAAG,CAAC;IAEjB;QACE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IACvC,CAAC;CACF"}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/middleware/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG/D,eAAO,MAAM,YAAY,GACvB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,uCAMnB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseError } from '../errors/index.js';
|
|
2
|
+
export const errorHandler = (err, req, res, next) => {
|
|
3
|
+
if (err instanceof BaseError) {
|
|
4
|
+
return res.status(err.statusCode).send({ errors: err.serialize() });
|
|
5
|
+
}
|
|
6
|
+
return res.status(400).send({ errors: [{ message: err.message }] });
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/middleware/error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAU,EACV,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
+
interface CurrentUser {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
}
|
|
6
|
+
declare global {
|
|
7
|
+
namespace Express {
|
|
8
|
+
interface Request {
|
|
9
|
+
currentUser?: CurrentUser | null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare const getCurrentUserHandler: (req: Request & {
|
|
14
|
+
session?: Record<string, string>;
|
|
15
|
+
}, _res: Response, next: NextFunction) => void;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=get-current-user-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-current-user-handler.d.ts","sourceRoot":"","sources":["../../src/middleware/get-current-user-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI/D,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;SAClC;KACF;CACF;AAED,eAAO,MAAM,qBAAqB,GAChC,KAAK,OAAO,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EACnD,MAAM,QAAQ,EACd,MAAM,YAAY,SAcnB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import jwt from 'jsonwebtoken';
|
|
2
|
+
import { COOKIE_NAME, JWT_KEY } from '../config.js';
|
|
3
|
+
export const getCurrentUserHandler = (req, _res, next) => {
|
|
4
|
+
const token = req.session?.[COOKIE_NAME];
|
|
5
|
+
if (!token) {
|
|
6
|
+
req.currentUser = null;
|
|
7
|
+
return next();
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
const verifiedUser = jwt.verify(token, JWT_KEY);
|
|
11
|
+
req.currentUser = verifiedUser;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
req.currentUser = null;
|
|
15
|
+
}
|
|
16
|
+
next();
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=get-current-user-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-current-user-handler.js","sourceRoot":"","sources":["../../src/middleware/get-current-user-handler.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAepD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,GAAmD,EACnD,IAAc,EACd,IAAkB,EAClB,EAAE;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAQ,CAAgB,CAAC;QAChE,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from './error-handler.js';
|
|
2
|
-
export * from './get-current-user-handler.js';
|
|
3
|
-
export * from './require-auth-handler.js';
|
|
4
|
-
export * from './validation-handler.js';
|
|
1
|
+
export * from './error-handler.js';
|
|
2
|
+
export * from './get-current-user-handler.js';
|
|
3
|
+
export * from './require-auth-handler.js';
|
|
4
|
+
export * from './validation-handler.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-auth-handler.d.ts","sourceRoot":"","sources":["../../src/middleware/require-auth-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG/D,eAAO,MAAM,kBAAkB,GAC7B,KAAK,OAAO,EACZ,MAAM,QAAQ,EACd,MAAM,YAAY,SAMnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-auth-handler.js","sourceRoot":"","sources":["../../src/middleware/require-auth-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAY,EACZ,IAAc,EACd,IAAkB,EAClB,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-handler.d.ts","sourceRoot":"","sources":["../../src/middleware/validation-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI/D,eAAO,MAAM,iBAAiB,GAC5B,KAAK,OAAO,EACZ,MAAM,QAAQ,EACd,MAAM,YAAY,SAOnB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { validationResult } from 'express-validator';
|
|
2
|
+
import { RequestValidationError } from '../errors/index.js';
|
|
3
|
+
export const validationHandler = (req, _res, next) => {
|
|
4
|
+
const errors = validationResult(req);
|
|
5
|
+
if (!errors.isEmpty()) {
|
|
6
|
+
throw new RequestValidationError(errors.array());
|
|
7
|
+
}
|
|
8
|
+
next();
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=validation-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-handler.js","sourceRoot":"","sources":["../../src/middleware/validation-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAY,EACZ,IAAc,EACd,IAAkB,EAClB,EAAE;IACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doffy-gittix/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
|
+
"types": "./build/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"build/**/*"
|
|
9
|
+
],
|
|
6
10
|
"scripts": {
|
|
7
11
|
"build": "del-cli build && tsc",
|
|
8
12
|
"pub": "npm version patch && git add . && git commit -m \"[upd] common\" && git push && npm publish"
|
package/src/config.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { BaseError } from './base-error.js'
|
|
2
|
-
|
|
3
|
-
export class BadRequestError extends BaseError {
|
|
4
|
-
statusCode = 400;
|
|
5
|
-
|
|
6
|
-
constructor(message: string) {
|
|
7
|
-
super(message);
|
|
8
|
-
Object.setPrototypeOf(this, BadRequestError.prototype);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
serialize() {
|
|
12
|
-
return [{ message: this.message }]
|
|
13
|
-
}
|
|
14
|
-
}
|
package/src/errors/base-error.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export abstract class BaseError extends Error {
|
|
2
|
-
abstract statusCode: number;
|
|
3
|
-
|
|
4
|
-
constructor(message: string) {
|
|
5
|
-
super(message);
|
|
6
|
-
Object.setPrototypeOf(this, BaseError.prototype);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
abstract serialize(): {
|
|
10
|
-
message: string;
|
|
11
|
-
field?: string;
|
|
12
|
-
}[]
|
|
13
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { BaseError } from './base-error.js'
|
|
2
|
-
|
|
3
|
-
export class DatabaseConnectionError extends BaseError {
|
|
4
|
-
statusCode = 500;
|
|
5
|
-
|
|
6
|
-
constructor() {
|
|
7
|
-
super('database connection error');
|
|
8
|
-
Object.setPrototypeOf(this, DatabaseConnectionError.prototype);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
serialize() {
|
|
12
|
-
return [{ message: 'database connection error' }]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { BaseError } from './base-error.js'
|
|
2
|
-
|
|
3
|
-
export class NotFoundError extends BaseError {
|
|
4
|
-
statusCode = 404;
|
|
5
|
-
|
|
6
|
-
constructor() {
|
|
7
|
-
super('not found');
|
|
8
|
-
Object.setPrototypeOf(this, NotFoundError.prototype);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
serialize() {
|
|
12
|
-
return [{ message: 'not found' }]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { ValidationError } from 'express-validator';
|
|
2
|
-
import { BaseError } from './base-error.js'
|
|
3
|
-
|
|
4
|
-
export class RequestValidationError extends BaseError {
|
|
5
|
-
statusCode = 400;
|
|
6
|
-
errors: ValidationError[];
|
|
7
|
-
constructor(errors: ValidationError[]) {
|
|
8
|
-
super('validation error');
|
|
9
|
-
this.errors = errors;
|
|
10
|
-
Object.setPrototypeOf(this, RequestValidationError.prototype);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
serialize() {
|
|
14
|
-
return this.errors.map((error) => {
|
|
15
|
-
return error.type === 'field'
|
|
16
|
-
? {
|
|
17
|
-
message: error.msg as string,
|
|
18
|
-
field: error.path,
|
|
19
|
-
}
|
|
20
|
-
: { message: error.msg as string };
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { BaseError } from './base-error.js';
|
|
2
|
-
|
|
3
|
-
export class UnauthorizedError extends BaseError {
|
|
4
|
-
statusCode = 401;
|
|
5
|
-
|
|
6
|
-
constructor() {
|
|
7
|
-
super('Unauthorized');
|
|
8
|
-
Object.setPrototypeOf(this, UnauthorizedError.prototype);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
serialize() {
|
|
12
|
-
return [{ message: 'Unauthorized' }];
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
-
import { BaseError } from '../errors/index.js';
|
|
3
|
-
|
|
4
|
-
export const errorHandler = (
|
|
5
|
-
err: Error,
|
|
6
|
-
req: Request,
|
|
7
|
-
res: Response,
|
|
8
|
-
next: NextFunction,
|
|
9
|
-
) => {
|
|
10
|
-
if (err instanceof BaseError) {
|
|
11
|
-
return res.status(err.statusCode).send({ errors: err.serialize() });
|
|
12
|
-
}
|
|
13
|
-
return res.status(400).send({ errors: [{ message: err.message }] });
|
|
14
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
-
import jwt from 'jsonwebtoken';
|
|
3
|
-
import { COOKIE_NAME, JWT_KEY } from '../config.js';
|
|
4
|
-
|
|
5
|
-
interface CurrentUser {
|
|
6
|
-
id: string;
|
|
7
|
-
email: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
declare global {
|
|
11
|
-
namespace Express {
|
|
12
|
-
interface Request {
|
|
13
|
-
currentUser?: CurrentUser | null;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const getCurrentUserHandler = (
|
|
19
|
-
req: Request & { session?: Record<string, string> },
|
|
20
|
-
_res: Response,
|
|
21
|
-
next: NextFunction,
|
|
22
|
-
) => {
|
|
23
|
-
const token = req.session?.[COOKIE_NAME];
|
|
24
|
-
if (!token) {
|
|
25
|
-
req.currentUser = null;
|
|
26
|
-
return next();
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
29
|
-
const verifiedUser = jwt.verify(token, JWT_KEY!) as CurrentUser;
|
|
30
|
-
req.currentUser = verifiedUser;
|
|
31
|
-
} catch (error) {
|
|
32
|
-
req.currentUser = null;
|
|
33
|
-
}
|
|
34
|
-
next();
|
|
35
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
-
import { UnauthorizedError } from '../errors/index.js';
|
|
3
|
-
|
|
4
|
-
export const requireAuthHandler = (
|
|
5
|
-
req: Request,
|
|
6
|
-
_res: Response,
|
|
7
|
-
next: NextFunction,
|
|
8
|
-
) => {
|
|
9
|
-
if (!req.currentUser) {
|
|
10
|
-
throw new UnauthorizedError();
|
|
11
|
-
}
|
|
12
|
-
next();
|
|
13
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
-
import { validationResult } from 'express-validator';
|
|
3
|
-
import { RequestValidationError } from '../errors/index.js';
|
|
4
|
-
|
|
5
|
-
export const validationHandler = (
|
|
6
|
-
req: Request,
|
|
7
|
-
_res: Response,
|
|
8
|
-
next: NextFunction,
|
|
9
|
-
) => {
|
|
10
|
-
const errors = validationResult(req);
|
|
11
|
-
if (!errors.isEmpty()) {
|
|
12
|
-
throw new RequestValidationError(errors.array());
|
|
13
|
-
}
|
|
14
|
-
next();
|
|
15
|
-
};
|
package/tsconfig.json
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
// Visit https://aka.ms/tsconfig to read more about this file
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
// File Layout
|
|
5
|
-
"rootDir": "./src",
|
|
6
|
-
"outDir": "./build",
|
|
7
|
-
|
|
8
|
-
// Environment Settings
|
|
9
|
-
// See also https://aka.ms/tsconfig/module
|
|
10
|
-
"module": "nodenext",
|
|
11
|
-
"target": "esnext",
|
|
12
|
-
"types": [],
|
|
13
|
-
// For nodejs:
|
|
14
|
-
// "lib": ["esnext"],
|
|
15
|
-
// "types": ["node"],
|
|
16
|
-
// and npm install -D @types/node
|
|
17
|
-
|
|
18
|
-
// Other Outputs
|
|
19
|
-
"sourceMap": true,
|
|
20
|
-
"declaration": true,
|
|
21
|
-
"declarationMap": true,
|
|
22
|
-
|
|
23
|
-
// Stricter Typechecking Options
|
|
24
|
-
"noUncheckedIndexedAccess": true,
|
|
25
|
-
"exactOptionalPropertyTypes": true,
|
|
26
|
-
|
|
27
|
-
// Style Options
|
|
28
|
-
// "noImplicitReturns": true,
|
|
29
|
-
// "noImplicitOverride": true,
|
|
30
|
-
// "noUnusedLocals": true,
|
|
31
|
-
// "noUnusedParameters": true,
|
|
32
|
-
// "noFallthroughCasesInSwitch": true,
|
|
33
|
-
// "noPropertyAccessFromIndexSignature": true,
|
|
34
|
-
|
|
35
|
-
// Recommended Options
|
|
36
|
-
"strict": true,
|
|
37
|
-
"jsx": "react-jsx",
|
|
38
|
-
"verbatimModuleSyntax": true,
|
|
39
|
-
"isolatedModules": true,
|
|
40
|
-
"noUncheckedSideEffectImports": true,
|
|
41
|
-
"moduleDetection": "force",
|
|
42
|
-
"skipLibCheck": true,
|
|
43
|
-
}
|
|
44
|
-
}
|