@willhousecreative/common 1.0.0 → 1.0.8

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 (45) hide show
  1. package/build/errors/bad-request-error.d.ts +10 -0
  2. package/build/errors/bad-request-error.d.ts.map +1 -0
  3. package/build/errors/bad-request-error.js +14 -0
  4. package/build/errors/bad-request-error.js.map +1 -0
  5. package/build/errors/custom-error.d.ts +9 -0
  6. package/build/errors/custom-error.d.ts.map +1 -0
  7. package/build/errors/custom-error.js +8 -0
  8. package/build/errors/custom-error.js.map +1 -0
  9. package/build/errors/database-connection-error.d.ts +10 -0
  10. package/build/errors/database-connection-error.d.ts.map +1 -0
  11. package/build/errors/database-connection-error.js +17 -0
  12. package/build/errors/database-connection-error.js.map +1 -0
  13. package/build/errors/not-authorized-error.d.ts +9 -0
  14. package/build/errors/not-authorized-error.d.ts.map +1 -0
  15. package/build/errors/not-authorized-error.js +12 -0
  16. package/build/errors/not-authorized-error.js.map +1 -0
  17. package/build/errors/not-found-error.d.ts +9 -0
  18. package/build/errors/not-found-error.d.ts.map +1 -0
  19. package/build/errors/not-found-error.js +12 -0
  20. package/build/errors/not-found-error.js.map +1 -0
  21. package/build/errors/request-validation-error.d.ts +15 -0
  22. package/build/errors/request-validation-error.d.ts.map +1 -0
  23. package/build/errors/request-validation-error.js +21 -0
  24. package/build/errors/request-validation-error.js.map +1 -0
  25. package/build/index.d.ts +11 -0
  26. package/build/index.d.ts.map +1 -0
  27. package/build/index.js +90 -0
  28. package/build/index.js.map +1 -0
  29. package/build/middlewares/current-user.d.ts +15 -0
  30. package/build/middlewares/current-user.d.ts.map +1 -0
  31. package/build/middlewares/current-user.js +16 -0
  32. package/build/middlewares/current-user.js.map +1 -0
  33. package/build/middlewares/error-handler.d.ts +3 -0
  34. package/build/middlewares/error-handler.d.ts.map +1 -0
  35. package/build/middlewares/error-handler.js +12 -0
  36. package/build/middlewares/error-handler.js.map +1 -0
  37. package/build/middlewares/require-auth.d.ts +3 -0
  38. package/build/middlewares/require-auth.d.ts.map +1 -0
  39. package/build/middlewares/require-auth.js +9 -0
  40. package/build/middlewares/require-auth.js.map +1 -0
  41. package/build/middlewares/validate-request.d.ts +3 -0
  42. package/build/middlewares/validate-request.d.ts.map +1 -0
  43. package/build/middlewares/validate-request.js +11 -0
  44. package/build/middlewares/validate-request.js.map +1 -0
  45. package/package.json +24 -4
@@ -0,0 +1,10 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export declare class BadRequestError extends CustomError {
3
+ message: string;
4
+ statusCode: number;
5
+ constructor(message: string);
6
+ serializeError(): {
7
+ message: string;
8
+ }[];
9
+ }
10
+ //# 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,mBAAmB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,WAAW;IAE3B,OAAO,EAAE,MAAM;IADlC,UAAU,SAAO;gBACE,OAAO,EAAE,MAAM;IAKlC,cAAc;;;CAGf"}
@@ -0,0 +1,14 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export class BadRequestError extends CustomError {
3
+ message;
4
+ statusCode = 400;
5
+ constructor(message) {
6
+ super(message);
7
+ this.message = message;
8
+ Object.setPrototypeOf(this, BadRequestError.prototype);
9
+ }
10
+ serializeError() {
11
+ return [{ message: this.message }];
12
+ }
13
+ }
14
+ //# 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,mBAAmB,CAAC;AAEhD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAE3B;IADnB,UAAU,GAAG,GAAG,CAAC;IACjB,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,YAAO,GAAP,OAAO,CAAQ;QAEhC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ export declare abstract class CustomError extends Error {
2
+ abstract statusCode: number;
3
+ constructor(message: string);
4
+ abstract serializeError(): {
5
+ message: string;
6
+ field?: string;
7
+ }[];
8
+ }
9
+ //# 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;gBAEhB,OAAO,EAAE,MAAM;IAO3B,QAAQ,CAAC,cAAc,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE;CACjE"}
@@ -0,0 +1,8 @@
1
+ export class CustomError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ // Only because we are extending a built-in class
5
+ Object.setPrototypeOf(this, CustomError.prototype);
6
+ }
7
+ }
8
+ //# 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;IAG7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,iDAAiD;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CAGF"}
@@ -0,0 +1,10 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export declare class DatabaseConnectionError extends CustomError {
3
+ statusCode: number;
4
+ reason: string;
5
+ constructor();
6
+ serializeError(): {
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,mBAAmB,CAAC;AAChD,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,UAAU,SAAO;IACjB,MAAM,SAAkC;;IAMxC,cAAc;;;CAOf"}
@@ -0,0 +1,17 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export class DatabaseConnectionError extends CustomError {
3
+ statusCode = 500;
4
+ reason = 'Error connecting to database';
5
+ constructor() {
6
+ super('There is a database connection error');
7
+ Object.setPrototypeOf(this, DatabaseConnectionError.prototype);
8
+ }
9
+ serializeError() {
10
+ return [
11
+ {
12
+ message: this.reason,
13
+ },
14
+ ];
15
+ }
16
+ }
17
+ //# 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,mBAAmB,CAAC;AAChD,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,UAAU,GAAG,GAAG,CAAC;IACjB,MAAM,GAAG,8BAA8B,CAAC;IACxC;QACE,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAE9C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IACD,cAAc;QACZ,OAAO;YACL;gBACE,OAAO,EAAE,IAAI,CAAC,MAAM;aACrB;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export declare class NotAuthorizedError extends CustomError {
3
+ statusCode: number;
4
+ constructor();
5
+ serializeError(): {
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,mBAAmB,CAAC;AAEhD,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,UAAU,SAAO;;IAMjB,cAAc;;;CAGf"}
@@ -0,0 +1,12 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export class NotAuthorizedError extends CustomError {
3
+ statusCode = 401;
4
+ constructor() {
5
+ super('Not authorized');
6
+ Object.setPrototypeOf(this, NotAuthorizedError.prototype);
7
+ }
8
+ serializeError() {
9
+ return [{ message: 'Not authorized' }];
10
+ }
11
+ }
12
+ //# 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,mBAAmB,CAAC;AAEhD,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,UAAU,GAAG,GAAG,CAAC;IACjB;QACE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export declare class NotFoundError extends CustomError {
3
+ statusCode: number;
4
+ constructor();
5
+ serializeError(): {
6
+ message: string;
7
+ }[];
8
+ }
9
+ //# 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,mBAAmB,CAAC;AAEhD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,UAAU,SAAO;;IAQjB,cAAc;;;CAGf"}
@@ -0,0 +1,12 @@
1
+ import { CustomError } from './custom-error.js';
2
+ export class NotFoundError extends CustomError {
3
+ statusCode = 404;
4
+ constructor() {
5
+ super('Resource not found');
6
+ Object.setPrototypeOf(this, NotFoundError.prototype);
7
+ }
8
+ serializeError() {
9
+ return [{ message: 'Resource not found' }];
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,mBAAmB,CAAC;AAEhD,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,UAAU,GAAG,GAAG,CAAC;IAEjB;QACE,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { type ValidationError } from 'express-validator';
2
+ import { CustomError } from './custom-error.js';
3
+ export declare class RequestValidationError extends CustomError {
4
+ errors: ValidationError[];
5
+ statusCode: number;
6
+ constructor(errors: ValidationError[]);
7
+ serializeError(): ({
8
+ message: any;
9
+ field: string;
10
+ } | {
11
+ message: any;
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,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,qBAAa,sBAAuB,SAAQ,WAAW;IAElC,MAAM,EAAE,eAAe,EAAE;IAD5C,UAAU,SAAO;gBACE,MAAM,EAAE,eAAe,EAAE;IAM5C,cAAc;;;;;;;CAQf"}
@@ -0,0 +1,21 @@
1
+ import {} from 'express-validator';
2
+ import { CustomError } from './custom-error.js';
3
+ export class RequestValidationError extends CustomError {
4
+ errors;
5
+ statusCode = 400;
6
+ constructor(errors) {
7
+ super('Invalid request parameters');
8
+ this.errors = errors;
9
+ // Only because we are extending a built-in class
10
+ Object.setPrototypeOf(this, RequestValidationError.prototype);
11
+ }
12
+ serializeError() {
13
+ return this.errors.map((err) => {
14
+ if (err.type === 'field') {
15
+ return { message: err.msg, field: err.path };
16
+ }
17
+ return { message: err.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":"AAAA,OAAO,EAAwB,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IAElC;IADnB,UAAU,GAAG,GAAG,CAAC;IACjB,YAAmB,MAAyB;QAC1C,KAAK,CAAC,4BAA4B,CAAC,CAAC;QADnB,WAAM,GAAN,MAAM,CAAmB;QAG1C,iDAAiD;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IACD,cAAc;QACZ,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.js';
2
+ export * from './errors/custom-error.js';
3
+ export * from './errors/database-connection-error.js';
4
+ export * from './errors/not-authorized-error.js';
5
+ export * from './errors/not-found-error.js';
6
+ export * from './errors/request-validation-error.js';
7
+ export * from './middlewares/current-user.js';
8
+ export * from './middlewares/error-handler.js';
9
+ export * from './middlewares/require-auth.js';
10
+ export * from './middlewares/validate-request.js';
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,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
package/build/index.js ADDED
@@ -0,0 +1,90 @@
1
+ export * from './errors/bad-request-error.js';
2
+ export * from './errors/custom-error.js';
3
+ export * from './errors/database-connection-error.js';
4
+ export * from './errors/not-authorized-error.js';
5
+ export * from './errors/not-found-error.js';
6
+ export * from './errors/request-validation-error.js';
7
+ export * from './middlewares/current-user.js';
8
+ export * from './middlewares/error-handler.js';
9
+ export * from './middlewares/require-auth.js';
10
+ export * from './middlewares/validate-request.js';
11
+ // export * from './events/base-listener.js';
12
+ // export * from './events/base-publisher.js';
13
+ // export * from './events/subjects.js';
14
+ // export * from './events/user-created-event.js';
15
+ // export * from './events/user-updated-event.js';
16
+ // export * from './events/types/user-role.js';
17
+ // export * from './utils/password.js';
18
+ // export * from './utils/jwt.js';
19
+ // export * from './types/user.js';
20
+ // export * from './types/express-custom.js';
21
+ // export * from './types/error-format.js';
22
+ // export * from './types/mongo-id.js';
23
+ // export * from './types/jwt-payload.js';
24
+ // export * from './types/request-with-user.js';
25
+ // export * from './types/user-role.js';
26
+ // export * from './types/environment.js';
27
+ // export * from './types/pagination-result.js';
28
+ // export * from './types/sort-order.js';
29
+ // export * from './types/pagination-params.js';
30
+ // export * from './types/date-range.js';
31
+ // export * from './types/file-metadata.js';
32
+ // export * from './utils/pagination.js';
33
+ // export * from './utils/file-upload.js';
34
+ // export * from './utils/date-range.js';
35
+ // export * from './utils/environment.js';
36
+ // export * from './utils/sort-order.js';
37
+ // export * from './utils/mongo-id.js';
38
+ // export * from './utils/logger.js';
39
+ // export * from './utils/email.js';
40
+ // export * from './utils/data-sanitization.js';
41
+ // export * from './utils/api-response.js';
42
+ // export * from './utils/error-formatter.js';
43
+ // export * from './utils/object-filter.js';
44
+ // export * from './utils/array-chunk.js';
45
+ // export * from './utils/string-utils.js';
46
+ // export * from './utils/rate-limiter.js';
47
+ // export * from './utils/cache.js';
48
+ // export * from './utils/geo-utils.js';
49
+ // export * from './utils/external-api-client.js';
50
+ // export * from './utils/scheduler.js';
51
+ // export * from './utils/feature-flags.js';
52
+ // export * from './config/index.js';
53
+ // export * from './services/index.js';
54
+ // export * from './services/cache-service.js';
55
+ // export * from './services/email-service.js';
56
+ // export * from './services/logger-service.js';
57
+ // export * from './services/rate-limiter-service.js';
58
+ // export * from './services/scheduler-service.js';
59
+ // export * from './services/feature-flags-service.js';
60
+ // export * from './services/external-api-client-service.js';
61
+ // export * from './services/file-storage-service.js';
62
+ // export * from './services/jwt-service.js';
63
+ // export * from './services/password-service.js';
64
+ // export * from './services/database-service.js';
65
+ // export * from './middlewares/rate-limiter.js';
66
+ // export * from './middlewares/request-logger.js';
67
+ // export * from './middlewares/cache-middleware.js';
68
+ // export * from './middlewares/feature-flags-middleware.js';
69
+ // export * from './errors/conflict-error.js';
70
+ // export * from './errors/unprocessable-entity-error.js';
71
+ // export * from './errors/forbidden-error.js';
72
+ // export * from './errors/internal-server-error.js';
73
+ // export * from './errors/service-unavailable-error.js';
74
+ // export * from './errors/gateway-timeout-error.js';
75
+ // export * from './utils/api-client.js';
76
+ // export * from './utils/response-time.js';
77
+ // export * from './utils/geo-distance.js';
78
+ // export * from './types/api-client-config.js';
79
+ // export * from './types/geo-coordinate.js';
80
+ // export * from './middlewares/response-time.js';
81
+ // export * from './services/api-client-service.js';
82
+ // export * from './services/geo-service.js';
83
+ // export * from './utils/geo-distance-matrix.js';
84
+ // export * from './types/geo-distance-matrix-result.js';
85
+ // export * from './types/geo-distance-matrix-params.js';
86
+ // export * from './errors/external-api-error.js';
87
+ // export * from './services/external-api-error-service.js';
88
+ // export * from './middlewares/geo-rate-limiter.js';
89
+ // export * from './services/geo-distance-matrix-service.js';
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAElD,6CAA6C;AAC7C,8CAA8C;AAC9C,wCAAwC;AAExC,kDAAkD;AAClD,kDAAkD;AAElD,+CAA+C;AAE/C,uCAAuC;AACvC,kCAAkC;AAElC,mCAAmC;AACnC,6CAA6C;AAC7C,2CAA2C;AAC3C,uCAAuC;AACvC,0CAA0C;AAC1C,gDAAgD;AAChD,wCAAwC;AACxC,0CAA0C;AAC1C,gDAAgD;AAChD,yCAAyC;AACzC,gDAAgD;AAChD,yCAAyC;AACzC,4CAA4C;AAE5C,yCAAyC;AACzC,0CAA0C;AAC1C,yCAAyC;AACzC,0CAA0C;AAC1C,yCAAyC;AACzC,uCAAuC;AACvC,qCAAqC;AACrC,oCAAoC;AACpC,gDAAgD;AAChD,2CAA2C;AAC3C,8CAA8C;AAC9C,4CAA4C;AAC5C,0CAA0C;AAC1C,2CAA2C;AAC3C,2CAA2C;AAC3C,oCAAoC;AACpC,wCAAwC;AACxC,kDAAkD;AAClD,wCAAwC;AACxC,4CAA4C;AAE5C,qCAAqC;AAErC,uCAAuC;AACvC,+CAA+C;AAC/C,+CAA+C;AAC/C,gDAAgD;AAChD,sDAAsD;AACtD,mDAAmD;AACnD,uDAAuD;AACvD,6DAA6D;AAC7D,sDAAsD;AACtD,6CAA6C;AAC7C,kDAAkD;AAClD,kDAAkD;AAElD,iDAAiD;AACjD,mDAAmD;AACnD,qDAAqD;AACrD,6DAA6D;AAE7D,8CAA8C;AAC9C,0DAA0D;AAC1D,+CAA+C;AAC/C,qDAAqD;AACrD,yDAAyD;AACzD,qDAAqD;AAErD,yCAAyC;AACzC,4CAA4C;AAC5C,2CAA2C;AAE3C,gDAAgD;AAChD,6CAA6C;AAE7C,kDAAkD;AAElD,oDAAoD;AAEpD,6CAA6C;AAC7C,kDAAkD;AAClD,yDAAyD;AACzD,yDAAyD;AACzD,kDAAkD;AAClD,4DAA4D;AAC5D,qDAAqD;AACrD,6DAA6D"}
@@ -0,0 +1,15 @@
1
+ import { type Request, type Response, type NextFunction } from 'express';
2
+ interface UserPayload {
3
+ id: string;
4
+ email: string;
5
+ }
6
+ declare global {
7
+ namespace Express {
8
+ interface Request {
9
+ currentUser?: UserPayload;
10
+ }
11
+ }
12
+ }
13
+ export declare const currentUser: (req: Request, res: Response, next: NextFunction) => void;
14
+ export {};
15
+ //# 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,OAAgB,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAEjB,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,CAAC;SAC3B;KACF;CACF;AAED,eAAO,MAAM,WAAW,GACtB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SAkBnB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import express, {} from 'express';
2
+ import jwt from 'jsonwebtoken';
3
+ export const currentUser = (req, res, next) => {
4
+ if (!req.session?.jwt) {
5
+ return next();
6
+ }
7
+ try {
8
+ const payload = jwt.verify(req.session.jwt, process.env.JWT_KEY);
9
+ req.currentUser = payload;
10
+ }
11
+ catch (err) {
12
+ // If JWT verification fails, we simply don't set currentUser
13
+ }
14
+ next();
15
+ };
16
+ //# sourceMappingURL=current-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"current-user.js","sourceRoot":"","sources":["../../src/middlewares/current-user.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAIf,MAAM,SAAS,CAAC;AACjB,OAAO,GAAG,MAAM,cAAc,CAAC;AAc/B,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;QACtB,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CACxB,GAAG,CAAC,OAAO,CAAC,GAAG,EACf,OAAO,CAAC,GAAG,CAAC,OAAQ,CACN,CAAC;QAEjB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6DAA6D;IAC/D,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Request, type Response, type 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,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAGzE,eAAO,MAAM,YAAY,GACvB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,mDAUnB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import {} from 'express';
2
+ import { CustomError } from '../errors/custom-error.js';
3
+ export const errorHandler = (err, req, res, next) => {
4
+ if (err instanceof CustomError) {
5
+ return res.status(err.statusCode).send({ errors: err.serializeError() });
6
+ }
7
+ // console.error('Something went wrong', err);
8
+ res.status(400).send({
9
+ error: err.message || 'Something went wrong',
10
+ });
11
+ };
12
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/middlewares/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,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,cAAc,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,8CAA8C;IAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,sBAAsB;KAC7C,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Request, type Response, type 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,OAAgB,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,WAAW,GACtB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SAOnB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import express, {} from 'express';
2
+ import { NotAuthorizedError } from '../errors/not-authorized-error.js';
3
+ export const requireAuth = (req, res, next) => {
4
+ if (!req.currentUser) {
5
+ throw new NotAuthorizedError();
6
+ }
7
+ next();
8
+ };
9
+ //# sourceMappingURL=require-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-auth.js","sourceRoot":"","sources":["../../src/middlewares/require-auth.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAIf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,IAAI,kBAAkB,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Request, type Response, 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,OAAgB,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,eAAe,GAC1B,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SASnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import express, {} from 'express';
2
+ import { validationResult } from 'express-validator';
3
+ import { RequestValidationError } from '../errors/request-validation-error.js';
4
+ export const validateRequest = (req, res, next) => {
5
+ const errors = validationResult(req);
6
+ if (!errors.isEmpty()) {
7
+ throw new RequestValidationError(errors.array());
8
+ }
9
+ next();
10
+ };
11
+ //# sourceMappingURL=validate-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-request.js","sourceRoot":"","sources":["../../src/middlewares/validate-request.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAIf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,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"}
package/package.json CHANGED
@@ -1,12 +1,32 @@
1
1
  {
2
2
  "name": "@willhousecreative/common",
3
- "version": "1.0.0",
3
+ "version": "1.0.8",
4
4
  "description": "",
5
- "main": "index.js",
5
+ "main": "./build/index.js",
6
+ "types": "./build/index.d.ts",
7
+ "files": [
8
+ "build/**/*"
9
+ ],
10
+ "type": "module",
6
11
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
12
+ "clean": "del-cli ./build/*",
13
+ "build": "npm run clean && tsc",
14
+ "pub": "git add . && git commit -m \"Updates\" && npm version patch && npm run build && npm login && npm publish"
8
15
  },
9
16
  "keywords": [],
10
17
  "author": "",
11
- "license": "ISC"
18
+ "license": "ISC",
19
+ "devDependencies": {
20
+ "del-cli": "^7.0.0",
21
+ "typescript": "^5.9.3"
22
+ },
23
+ "dependencies": {
24
+ "@types/cookie-session": "^2.0.49",
25
+ "@types/express": "^5.0.6",
26
+ "@types/jsonwebtoken": "^9.0.10",
27
+ "cookie-session": "^2.1.1",
28
+ "express": "^4.22.1",
29
+ "express-validator": "^7.3.1",
30
+ "jsonwebtoken": "^9.0.3"
31
+ }
12
32
  }