@tickrorg/common 1.0.3 → 1.0.5

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.
Files changed (49) hide show
  1. package/dist/errors/bad-request-error.d.ts +9 -0
  2. package/dist/errors/bad-request-error.d.ts.map +1 -0
  3. package/dist/errors/bad-request-error.js +11 -0
  4. package/dist/errors/bad-request-error.js.map +1 -0
  5. package/dist/errors/custom-error.d.ts +8 -0
  6. package/dist/errors/custom-error.d.ts.map +1 -0
  7. package/dist/errors/custom-error.js +3 -0
  8. package/dist/errors/custom-error.js.map +1 -0
  9. package/dist/errors/database-connection-error.d.ts +10 -0
  10. package/dist/errors/database-connection-error.d.ts.map +1 -0
  11. package/dist/errors/database-connection-error.js +12 -0
  12. package/dist/errors/database-connection-error.js.map +1 -0
  13. package/dist/errors/not-authorized-error.d.ts +9 -0
  14. package/dist/errors/not-authorized-error.d.ts.map +1 -0
  15. package/dist/errors/not-authorized-error.js +11 -0
  16. package/dist/errors/not-authorized-error.js.map +1 -0
  17. package/dist/errors/not-found-error.d.ts +10 -0
  18. package/dist/errors/not-found-error.d.ts.map +1 -0
  19. package/dist/errors/not-found-error.js +12 -0
  20. package/dist/errors/not-found-error.js.map +1 -0
  21. package/dist/errors/request-validation-error.d.ts +15 -0
  22. package/dist/errors/request-validation-error.d.ts.map +1 -0
  23. package/dist/errors/request-validation-error.js +17 -0
  24. package/dist/errors/request-validation-error.js.map +1 -0
  25. package/dist/index.d.ts +11 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +11 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/middlewares/current-user.d.ts +3 -0
  30. package/dist/middlewares/current-user.d.ts.map +1 -0
  31. package/dist/middlewares/current-user.js +9 -0
  32. package/dist/middlewares/current-user.js.map +1 -0
  33. package/dist/middlewares/error-handler.d.ts +3 -0
  34. package/dist/middlewares/error-handler.d.ts.map +1 -0
  35. package/dist/middlewares/error-handler.js +10 -0
  36. package/dist/middlewares/error-handler.js.map +1 -0
  37. package/dist/middlewares/require-auth.d.ts +3 -0
  38. package/dist/middlewares/require-auth.d.ts.map +1 -0
  39. package/dist/middlewares/require-auth.js +11 -0
  40. package/dist/middlewares/require-auth.js.map +1 -0
  41. package/dist/middlewares/validate-request.d.ts +3 -0
  42. package/dist/middlewares/validate-request.d.ts.map +1 -0
  43. package/dist/middlewares/validate-request.js +10 -0
  44. package/dist/middlewares/validate-request.js.map +1 -0
  45. package/dist/services/token.d.ts +20 -0
  46. package/dist/services/token.d.ts.map +1 -0
  47. package/dist/services/token.js +74 -0
  48. package/dist/services/token.js.map +1 -0
  49. package/package.json +7 -5
@@ -0,0 +1,9 @@
1
+ import { CustomError } from "./custom-error";
2
+ export declare class BadRequestError extends CustomError {
3
+ statusCode: number;
4
+ constructor(message: string);
5
+ serializeErrors(): {
6
+ message: string;
7
+ }[];
8
+ }
9
+ //# sourceMappingURL=bad-request-error.d.ts.map
@@ -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,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,UAAU,SAAO;gBACL,OAAO,EAAE,MAAM;IAG3B,eAAe;;;CAGhB"}
@@ -0,0 +1,11 @@
1
+ import { CustomError } from "./custom-error";
2
+ export class BadRequestError extends CustomError {
3
+ constructor(message) {
4
+ super(message);
5
+ this.statusCode = 400;
6
+ }
7
+ serializeErrors() {
8
+ return [{ message: this.message }];
9
+ }
10
+ }
11
+ //# 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,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAE9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB,eAAU,GAAG,GAAG,CAAC;IAGjB,CAAC;IACD,eAAe;QACb,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export declare abstract class CustomError extends Error {
2
+ abstract statusCode: number;
3
+ abstract serializeErrors(): {
4
+ message: string;
5
+ field?: string;
6
+ }[];
7
+ }
8
+ //# sourceMappingURL=custom-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-error.d.ts","sourceRoot":"","sources":["../../src/errors/custom-error.ts"],"names":[],"mappings":"AAAA,8BAAsB,WAAY,SAAQ,KAAK;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,eAAe,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE;CAClE"}
@@ -0,0 +1,3 @@
1
+ export class CustomError extends Error {
2
+ }
3
+ //# sourceMappingURL=custom-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-error.js","sourceRoot":"","sources":["../../src/errors/custom-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,WAAY,SAAQ,KAAK;CAI9C"}
@@ -0,0 +1,10 @@
1
+ import { CustomError } from "./custom-error";
2
+ export declare class DatabaseConnectionError extends CustomError {
3
+ statusCode: number;
4
+ reason: string;
5
+ constructor();
6
+ serializeErrors(): {
7
+ message: string;
8
+ }[];
9
+ }
10
+ //# sourceMappingURL=database-connection-error.d.ts.map
@@ -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,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,UAAU,SAAO;IACjB,MAAM,SAAkC;;IAMxC,eAAe;;;CAGhB"}
@@ -0,0 +1,12 @@
1
+ import { CustomError } from "./custom-error";
2
+ export class DatabaseConnectionError extends CustomError {
3
+ constructor() {
4
+ super("Error connecting to db");
5
+ this.statusCode = 500;
6
+ this.reason = "Error connecting to database";
7
+ }
8
+ serializeErrors() {
9
+ return [{ message: this.reason }];
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,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IAItD;QACE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAJlC,eAAU,GAAG,GAAG,CAAC;QACjB,WAAM,GAAG,8BAA8B,CAAC;IAIxC,CAAC;IAED,eAAe;QACb,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { CustomError } from "./custom-error";
2
+ export declare class NotAuthorizedError extends CustomError {
3
+ statusCode: number;
4
+ constructor();
5
+ serializeErrors(): {
6
+ message: string;
7
+ }[];
8
+ }
9
+ //# sourceMappingURL=not-authorized-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-authorized-error.d.ts","sourceRoot":"","sources":["../../src/errors/not-authorized-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,UAAU,SAAO;;IAMjB,eAAe;;;CAGhB"}
@@ -0,0 +1,11 @@
1
+ import { CustomError } from "./custom-error";
2
+ export class NotAuthorizedError extends CustomError {
3
+ constructor() {
4
+ super("Not authorized");
5
+ this.statusCode = 401;
6
+ }
7
+ serializeErrors() {
8
+ return [{ message: "Not authorized" }];
9
+ }
10
+ }
11
+ //# sourceMappingURL=not-authorized-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-authorized-error.js","sourceRoot":"","sources":["../../src/errors/not-authorized-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAGjD;QACE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAH1B,eAAU,GAAG,GAAG,CAAC;IAIjB,CAAC;IAED,eAAe;QACb,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { CustomError } from "./custom-error";
2
+ export declare class NotFoundError extends CustomError {
3
+ readonly message: string;
4
+ statusCode: number;
5
+ constructor(message?: string);
6
+ serializeErrors(): {
7
+ message: string;
8
+ }[];
9
+ }
10
+ //# sourceMappingURL=not-found-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-found-error.d.ts","sourceRoot":"","sources":["../../src/errors/not-found-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,aAAc,SAAQ,WAAW;aAGhB,OAAO,EAAE,MAAM;IAF3C,UAAU,SAAO;gBAEW,OAAO,GAAE,MAAoB;IAIzD,eAAe;;;CAGhB"}
@@ -0,0 +1,12 @@
1
+ import { CustomError } from "./custom-error";
2
+ export class NotFoundError extends CustomError {
3
+ constructor(message = "Not Found") {
4
+ super("Route not found");
5
+ this.message = message;
6
+ this.statusCode = 404;
7
+ }
8
+ serializeErrors() {
9
+ return [{ message: this.message }];
10
+ }
11
+ }
12
+ //# sourceMappingURL=not-found-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-found-error.js","sourceRoot":"","sources":["../../src/errors/not-found-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,aAAc,SAAQ,WAAW;IAG5C,YAA4B,UAAkB,WAAW;QACvD,KAAK,CAAC,iBAAiB,CAAC,CAAC;QADC,YAAO,GAAP,OAAO,CAAsB;QAFzD,eAAU,GAAG,GAAG,CAAC;IAIjB,CAAC;IAED,eAAe;QACb,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { ValidationError } from "express-validator";
2
+ import { CustomError } from "./custom-error";
3
+ export declare class RequestValidationError extends CustomError {
4
+ errors: ValidationError[];
5
+ statusCode: number;
6
+ constructor(errors: ValidationError[]);
7
+ serializeErrors(): ({
8
+ message: any;
9
+ field: string;
10
+ } | {
11
+ message: any;
12
+ field?: undefined;
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,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,sBAAuB,SAAQ,WAAW;IAGlC,MAAM,EAAE,eAAe,EAAE;IAF5C,UAAU,SAAO;gBAEE,MAAM,EAAE,eAAe,EAAE;IAI5C,eAAe;;;;;;;CAQhB"}
@@ -0,0 +1,17 @@
1
+ import { CustomError } from "./custom-error";
2
+ export class RequestValidationError extends CustomError {
3
+ constructor(errors) {
4
+ super("Invalid request parameters");
5
+ this.errors = errors;
6
+ this.statusCode = 400;
7
+ }
8
+ serializeErrors() {
9
+ return this.errors.map((err) => {
10
+ if (err.type === "field") {
11
+ return { message: err.msg, field: err.path };
12
+ }
13
+ return { message: err.msg };
14
+ });
15
+ }
16
+ }
17
+ //# 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,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IAGrD,YAAmB,MAAyB;QAC1C,KAAK,CAAC,4BAA4B,CAAC,CAAC;QADnB,WAAM,GAAN,MAAM,CAAmB;QAF5C,eAAU,GAAG,GAAG,CAAC;IAIjB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export * from "./errors/bad-request-error";
2
+ export * from "./errors/custom-error";
3
+ export * from "./errors/database-connection-error";
4
+ export * from "./errors/not-authorized-error";
5
+ export * from "./errors/not-found-error";
6
+ export * from "./errors/request-validation-error";
7
+ export * from "./middlewares/current-user";
8
+ export * from "./middlewares/error-handler";
9
+ export * from "./middlewares/require-auth";
10
+ export * from "./middlewares/validate-request";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAElD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export * from "./errors/bad-request-error";
2
+ export * from "./errors/custom-error";
3
+ export * from "./errors/database-connection-error";
4
+ export * from "./errors/not-authorized-error";
5
+ export * from "./errors/not-found-error";
6
+ export * from "./errors/request-validation-error";
7
+ export * from "./middlewares/current-user";
8
+ export * from "./middlewares/error-handler";
9
+ export * from "./middlewares/require-auth";
10
+ export * from "./middlewares/validate-request";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAElD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Request, Response, NextFunction } from "express";
2
+ export declare const currentUser: (req: Request, res: Response, next: NextFunction) => void;
3
+ //# sourceMappingURL=current-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"current-user.d.ts","sourceRoot":"","sources":["../../src/middlewares/current-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D,eAAO,MAAM,WAAW,GACtB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SASnB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Token } from "../services/token";
2
+ export const currentUser = (req, res, next) => {
3
+ const payload = Token.fromRequest(req);
4
+ if (payload) {
5
+ req.currentUser = payload;
6
+ }
7
+ next();
8
+ };
9
+ //# sourceMappingURL=current-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"current-user.js","sourceRoot":"","sources":["../../src/middlewares/current-user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAI,CAC1B,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Request, Response, NextFunction } from "express";
2
+ export declare const errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => Response<any, Record<string, any>> | undefined;
3
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/middlewares/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D,eAAO,MAAM,YAAY,GACvB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,mDASnB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { CustomError } from "../errors/custom-error";
2
+ export const errorHandler = (err, req, res, next) => {
3
+ if (err instanceof CustomError) {
4
+ return res.status(err.statusCode).send({ errors: err.serializeErrors() });
5
+ }
6
+ res.status(400).send({
7
+ errors: [{ message: "Something went wrong" }],
8
+ });
9
+ };
10
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/middlewares/error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAU,EACV,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Request, Response, NextFunction } from "express";
2
+ export declare const requireAuth: (req: Request, res: Response, next: NextFunction) => void;
3
+ //# sourceMappingURL=require-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-auth.d.ts","sourceRoot":"","sources":["../../src/middlewares/require-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI1D,eAAO,MAAM,WAAW,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,SAS1E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Token } from "../services/token";
2
+ import { NotAuthorizedError } from "../errors/not-authorized-error";
3
+ export const requireAuth = (req, res, next) => {
4
+ const payload = Token.fromRequest(req);
5
+ if (!payload) {
6
+ throw new NotAuthorizedError();
7
+ }
8
+ req.currentUser = payload;
9
+ next();
10
+ };
11
+ //# sourceMappingURL=require-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-auth.js","sourceRoot":"","sources":["../../src/middlewares/require-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,kBAAkB,EAAE,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NextFunction } from "express";
2
+ export declare const validateRequest: (req: Request, res: Response, next: NextFunction) => void;
3
+ //# sourceMappingURL=validate-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-request.d.ts","sourceRoot":"","sources":["../../src/middlewares/validate-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,eAAO,MAAM,eAAe,GAC1B,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SASnB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { validationResult } from "express-validator";
2
+ import { RequestValidationError } from "../errors/request-validation-error";
3
+ export const validateRequest = (req, res, next) => {
4
+ const errors = validationResult(req);
5
+ if (!errors.isEmpty()) {
6
+ throw new RequestValidationError(errors.array());
7
+ }
8
+ next();
9
+ };
10
+ //# sourceMappingURL=validate-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-request.js","sourceRoot":"","sources":["../../src/middlewares/validate-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Response, Request } from "express";
2
+ export interface TokenPayload {
3
+ id: string;
4
+ email: string;
5
+ }
6
+ export declare class Token {
7
+ static generateAccess(payload: TokenPayload): string;
8
+ static generateRefresh(payload: TokenPayload): string;
9
+ static generatePair(payload: TokenPayload): {
10
+ accessToken: string;
11
+ refreshToken: string;
12
+ };
13
+ static verifyAccess(token: string): TokenPayload | null;
14
+ static verifyRefresh(token: string): TokenPayload | null;
15
+ static refresh(req: Request, res: Response): TokenPayload | null;
16
+ static fromRequest(req: Request): TokenPayload | null;
17
+ static setCookies(res: Response, accessToken: string, refreshToken: string): void;
18
+ static clearCookies(res: Response): void;
19
+ }
20
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/services/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,KAAK;IAChB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAKpD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAIrD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY;;;;IAOzC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAQvD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAQxD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;IAkBhE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;IAMrD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAkB1E,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ;CAIlC"}
@@ -0,0 +1,74 @@
1
+ import jwt from "jsonwebtoken";
2
+ export class Token {
3
+ static generateAccess(payload) {
4
+ console.log("Generating access token with payload :", payload);
5
+ return jwt.sign(payload, process.env.JWT_ACCESS_KEY, { expiresIn: "15m" });
6
+ }
7
+ static generateRefresh(payload) {
8
+ return jwt.sign(payload, process.env.JWT_REFRESH_KEY, { expiresIn: "7d" });
9
+ }
10
+ static generatePair(payload) {
11
+ return {
12
+ accessToken: Token.generateAccess(payload),
13
+ refreshToken: Token.generateRefresh(payload),
14
+ };
15
+ }
16
+ static verifyAccess(token) {
17
+ try {
18
+ return jwt.verify(token, process.env.JWT_ACCESS_KEY);
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ static verifyRefresh(token) {
25
+ try {
26
+ return jwt.verify(token, process.env.JWT_REFRESH_KEY);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ static refresh(req, res) {
33
+ const refreshToken = req.cookies.refresh_token;
34
+ if (!refreshToken)
35
+ return null;
36
+ const payload = Token.verifyRefresh(refreshToken);
37
+ if (!payload)
38
+ return null;
39
+ const { id, email } = payload;
40
+ const { accessToken, refreshToken: newRefreshToken } = Token.generatePair({
41
+ id,
42
+ email,
43
+ });
44
+ Token.setCookies(res, accessToken, newRefreshToken);
45
+ return { id, email };
46
+ }
47
+ static fromRequest(req) {
48
+ const token = req.cookies.access_token;
49
+ if (!token)
50
+ return null;
51
+ return Token.verifyAccess(token);
52
+ }
53
+ static setCookies(res, accessToken, refreshToken) {
54
+ res.cookie("access_token", accessToken, {
55
+ httpOnly: true,
56
+ secure: process.env.NODE_ENV === "production",
57
+ sameSite: "lax",
58
+ maxAge: 15 * 60 * 1000,
59
+ path: "/",
60
+ });
61
+ res.cookie("refresh_token", refreshToken, {
62
+ httpOnly: true,
63
+ secure: process.env.NODE_ENV === "production",
64
+ sameSite: "lax",
65
+ maxAge: 7 * 24 * 60 * 60 * 1000,
66
+ path: "/",
67
+ });
68
+ }
69
+ static clearCookies(res) {
70
+ res.clearCookie("access_token");
71
+ res.clearCookie("refresh_token", { path: "/api/auth/refresh" });
72
+ }
73
+ }
74
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/services/token.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,19 +1,21 @@
1
1
  {
2
2
  "name": "@tickrorg/common",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "author": "",
7
7
  "type": "module",
8
- "main": "./build/index.js",
9
- "types": "./build/index.d.ts",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
10
  "files": [
11
- "./build/**/*"
11
+ "dist/**/*",
12
+ "README.md",
13
+ "package.json"
12
14
  ],
13
15
  "scripts": {
14
16
  "build": "npm run clean && tsc",
15
17
  "clean": "del-cli dist",
16
- "pub": "git add . && git commit -m 'update' && npm version patch && npm run build &&npm publish"
18
+ "pub": "git add . && git commit -m 'update' && npm version patch && npm run build && npm publish"
17
19
  },
18
20
  "dependencies": {
19
21
  "@types/cookie-parser": "^1.4.10",