@doffy-gittix/common 1.0.15 → 1.0.17

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 (69) hide show
  1. package/build/errors/bad-request-error.d.ts +9 -0
  2. package/build/errors/bad-request-error.d.ts.map +1 -0
  3. package/build/errors/bad-request-error.js +12 -0
  4. package/build/errors/bad-request-error.js.map +1 -0
  5. package/build/errors/base-error.d.ts +9 -0
  6. package/build/errors/base-error.d.ts.map +1 -0
  7. package/build/errors/base-error.js +7 -0
  8. package/build/errors/base-error.js.map +1 -0
  9. package/build/errors/database-connection-error.d.ts +9 -0
  10. package/build/errors/database-connection-error.d.ts.map +1 -0
  11. package/build/errors/database-connection-error.js +12 -0
  12. package/build/errors/database-connection-error.js.map +1 -0
  13. package/build/errors/index.d.ts +7 -0
  14. package/build/errors/index.d.ts.map +1 -0
  15. package/build/errors/index.js +7 -0
  16. package/build/errors/index.js.map +1 -0
  17. package/build/errors/notfound-error.d.ts +9 -0
  18. package/build/errors/notfound-error.d.ts.map +1 -0
  19. package/build/errors/notfound-error.js +12 -0
  20. package/build/errors/notfound-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/errors/unauthorized_error.d.ts +9 -0
  26. package/build/errors/unauthorized_error.d.ts.map +1 -0
  27. package/build/errors/unauthorized_error.js +12 -0
  28. package/build/errors/unauthorized_error.js.map +1 -0
  29. package/build/events/index.d.ts +4 -0
  30. package/build/events/index.d.ts.map +1 -0
  31. package/build/events/index.js +4 -0
  32. package/build/events/index.js.map +1 -0
  33. package/build/events/listener.d.ts +15 -0
  34. package/build/events/listener.d.ts.map +1 -0
  35. package/build/events/listener.js +31 -0
  36. package/build/events/listener.js.map +1 -0
  37. package/build/events/publisher.d.ts +10 -0
  38. package/build/events/publisher.d.ts.map +1 -0
  39. package/build/events/publisher.js +20 -0
  40. package/build/events/publisher.js.map +1 -0
  41. package/build/events/subject.d.ts +25 -0
  42. package/build/events/subject.d.ts.map +1 -0
  43. package/build/events/subject.js +7 -0
  44. package/build/events/subject.js.map +1 -0
  45. package/build/index.d.ts +4 -0
  46. package/build/index.d.ts.map +1 -0
  47. package/build/index.js +4 -0
  48. package/build/index.js.map +1 -0
  49. package/build/middleware/error-handler.d.ts +3 -0
  50. package/build/middleware/error-handler.d.ts.map +1 -0
  51. package/build/middleware/error-handler.js +8 -0
  52. package/build/middleware/error-handler.js.map +1 -0
  53. package/build/middleware/get-current-user-handler.d.ts +19 -0
  54. package/build/middleware/get-current-user-handler.d.ts.map +1 -0
  55. package/build/middleware/get-current-user-handler.js +27 -0
  56. package/build/middleware/get-current-user-handler.js.map +1 -0
  57. package/build/middleware/index.d.ts +5 -0
  58. package/build/middleware/index.d.ts.map +1 -0
  59. package/build/middleware/index.js +5 -0
  60. package/build/middleware/index.js.map +1 -0
  61. package/build/middleware/require-auth-handler.d.ts +3 -0
  62. package/build/middleware/require-auth-handler.d.ts.map +1 -0
  63. package/build/middleware/require-auth-handler.js +8 -0
  64. package/build/middleware/require-auth-handler.js.map +1 -0
  65. package/build/middleware/validation-handler.d.ts +3 -0
  66. package/build/middleware/validation-handler.d.ts.map +1 -0
  67. package/build/middleware/validation-handler.js +10 -0
  68. package/build/middleware/validation-handler.js.map +1 -0
  69. package/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ import { BaseError } from './base-error.js';
2
+ export declare class BadRequestError extends BaseError {
3
+ statusCode: number;
4
+ constructor(message: string);
5
+ serialize(): {
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,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,9 @@
1
+ export declare abstract class BaseError extends Error {
2
+ abstract statusCode: number;
3
+ constructor(message: string);
4
+ abstract serialize(): {
5
+ message: string;
6
+ field?: string;
7
+ }[];
8
+ }
9
+ //# sourceMappingURL=base-error.d.ts.map
@@ -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,7 @@
1
+ export class BaseError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ Object.setPrototypeOf(this, BaseError.prototype);
5
+ }
6
+ }
7
+ //# sourceMappingURL=base-error.js.map
@@ -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,9 @@
1
+ import { BaseError } from './base-error.js';
2
+ export declare class DatabaseConnectionError extends BaseError {
3
+ statusCode: number;
4
+ constructor();
5
+ serialize(): {
6
+ message: string;
7
+ }[];
8
+ }
9
+ //# 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,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"}
@@ -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.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,9 @@
1
+ import { BaseError } from './base-error.js';
2
+ export declare class NotFoundError extends BaseError {
3
+ statusCode: number;
4
+ constructor();
5
+ serialize(): {
6
+ message: string;
7
+ }[];
8
+ }
9
+ //# sourceMappingURL=notfound-error.d.ts.map
@@ -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,9 @@
1
+ import { BaseError } from './base-error.js';
2
+ export declare class UnauthorizedError extends BaseError {
3
+ statusCode: number;
4
+ constructor();
5
+ serialize(): {
6
+ message: string;
7
+ }[];
8
+ }
9
+ //# sourceMappingURL=unauthorized_error.d.ts.map
@@ -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"}
@@ -0,0 +1,4 @@
1
+ export * from './listener.ts';
2
+ export * from './publisher.ts';
3
+ export * from './subject.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./listener.js";
2
+ export * from "./publisher.js";
3
+ export * from "./subject.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Stan, Message } from 'node-nats-streaming';
2
+ import { Subject } from './subject.ts';
3
+ import type { Data } from './subject.ts';
4
+ export declare abstract class Listener<T extends Subject> {
5
+ private client;
6
+ abstract subject: T;
7
+ abstract queueGroupName: string;
8
+ abstract onMessage: (data: Data[T], msg: Message) => void;
9
+ protected ackWait: number;
10
+ constructor(client: Stan);
11
+ subscriptionOptions(): import("node-nats-streaming").SubscriptionOptions;
12
+ parseMessage(msg: Message): any;
13
+ listen(): Promise<unknown>;
14
+ }
15
+ //# sourceMappingURL=listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/events/listener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAG,MAAM,cAAc,CAAC;AAE1C,8BAAsB,QAAQ,CAAC,CAAC,SAAS,OAAO;IAC9C,OAAO,CAAC,MAAM,CAAO;IACrB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAY;gBAEzB,MAAM,EAAE,IAAI;IAIxB,mBAAmB;IASnB,YAAY,CAAC,GAAG,EAAE,OAAO;IAKzB,MAAM;CAgBP"}
@@ -0,0 +1,31 @@
1
+ import { Subject } from "./subject.js";
2
+ export class Listener {
3
+ client;
4
+ ackWait = 5 * 1000;
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ subscriptionOptions() {
9
+ return this.client
10
+ .subscriptionOptions()
11
+ .setManualAckMode(true)
12
+ .setDeliverAllAvailable()
13
+ .setAckWait(this.ackWait)
14
+ .setDurableName(this.queueGroupName);
15
+ }
16
+ parseMessage(msg) {
17
+ const data = msg.getData();
18
+ return JSON.parse(typeof data === 'string' ? data : data.toString('utf-8'));
19
+ }
20
+ listen() {
21
+ const subscription = this.client.subscribe(this.subject, this.queueGroupName, this.subscriptionOptions());
22
+ return new Promise(() => {
23
+ subscription.on('message', (msg) => {
24
+ console.log(`Message received from ${this.subject} / ${this.queueGroupName}`);
25
+ const parseData = this.parseMessage(msg);
26
+ this.onMessage(parseData, msg);
27
+ });
28
+ });
29
+ }
30
+ }
31
+ //# sourceMappingURL=listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/events/listener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,OAAgB,QAAQ;IACpB,MAAM,CAAO;IAIX,OAAO,GAAW,CAAC,GAAG,IAAI,CAAC;IAErC,YAAY,MAAY;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM;aACf,mBAAmB,EAAE;aACrB,gBAAgB,CAAC,IAAI,CAAC;aACtB,sBAAsB,EAAE;aACxB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;aACxB,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,GAAY;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACxC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC;QACF,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;YACtB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE;gBAC1C,OAAO,CAAC,GAAG,CACT,yBAAyB,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CACjE,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { Stan } from 'node-nats-streaming';
2
+ import { Subject } from './subject.ts';
3
+ import type { Data } from './subject.ts';
4
+ export declare abstract class Publisher<T extends Subject> {
5
+ private client;
6
+ abstract subject: T;
7
+ constructor(client: Stan);
8
+ publish(data: Data[T]): Promise<Data[T]>;
9
+ }
10
+ //# sourceMappingURL=publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/events/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,8BAAsB,SAAS,CAAC,CAAC,SAAS,OAAO;IAC/C,OAAO,CAAC,MAAM,CAAO;IACrB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBAER,MAAM,EAAE,IAAI;IAIxB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;CAWtB"}
@@ -0,0 +1,20 @@
1
+ import { Subject } from "./subject.js";
2
+ export class Publisher {
3
+ client;
4
+ constructor(client) {
5
+ this.client = client;
6
+ }
7
+ publish(data) {
8
+ return new Promise((resolve, reject) => {
9
+ this.client.publish(this.subject, JSON.stringify(data), (err) => {
10
+ if (err) {
11
+ reject(err);
12
+ }
13
+ else {
14
+ resolve(data);
15
+ }
16
+ });
17
+ });
18
+ }
19
+ }
20
+ //# sourceMappingURL=publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/events/publisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,OAAgB,SAAS;IACrB,MAAM,CAAO;IAGrB,YAAY,MAAY;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9D,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ export declare enum Subject {
2
+ TicketCreated = "ticket:created",
3
+ TicketUpdated = "ticket:updated",
4
+ OrderCreated = "order:created"
5
+ }
6
+ export type Data = {
7
+ [Subject.TicketCreated]: {
8
+ id: string;
9
+ title: string;
10
+ price: string;
11
+ userId: string;
12
+ };
13
+ [Subject.TicketUpdated]: {
14
+ id: string;
15
+ title: string;
16
+ price: string;
17
+ userId: string;
18
+ };
19
+ [Subject.OrderCreated]: {
20
+ id: string;
21
+ userId: string;
22
+ ticketId: string;
23
+ };
24
+ };
25
+ //# sourceMappingURL=subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/events/subject.ts"],"names":[],"mappings":"AAAA,oBAAY,OAAO;IACjB,aAAa,mBAAmB;IAChC,aAAa,mBAAmB;IAChC,YAAY,kBAAkB;CAC/B;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACtB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAA"}
@@ -0,0 +1,7 @@
1
+ export var Subject;
2
+ (function (Subject) {
3
+ Subject["TicketCreated"] = "ticket:created";
4
+ Subject["TicketUpdated"] = "ticket:updated";
5
+ Subject["OrderCreated"] = "order:created";
6
+ })(Subject || (Subject = {}));
7
+ //# sourceMappingURL=subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/events/subject.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,2CAAgC,CAAA;IAChC,2CAAgC,CAAA;IAChC,yCAA8B,CAAA;AAChC,CAAC,EAJW,OAAO,KAAP,OAAO,QAIlB"}
@@ -0,0 +1,4 @@
1
+ export * from './errors/index.js';
2
+ export * from './middleware/index.js';
3
+ export * from './events/index.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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;AACtC,cAAc,mBAAmB,CAAC"}
package/build/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './errors/index.js';
2
+ export * from './middleware/index.js';
3
+ export * from './events/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Request, Response, NextFunction } from 'express';
2
+ export declare const errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => Response<any, Record<string, any>>;
3
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -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,19 @@
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
+ session?: Record<string, string> | null;
11
+ }
12
+ }
13
+ }
14
+ export declare const useCurrentUserHandler: (config: {
15
+ cookieName: string;
16
+ jwtKey: string;
17
+ }) => (req: Request, _res: Response, next: NextFunction) => void;
18
+ export {};
19
+ //# 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;AAG/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;YACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;SACzC;KACF;CACF;AAwBD,eAAO,MAAM,qBAAqB,GAChC,QAAQ;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,WAtBI,OAAO,QACN,QAAQ,QACR,YAAY,SA4BnB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import jwt from 'jsonwebtoken';
2
+ let cookieName = '';
3
+ let jwtKey = '';
4
+ const getCurrentUserHandler = (req, _res, next) => {
5
+ const token = req.session?.[cookieName];
6
+ if (!token) {
7
+ req.currentUser = null;
8
+ return next();
9
+ }
10
+ try {
11
+ const verifiedUser = jwt.verify(token, jwtKey);
12
+ req.currentUser = verifiedUser;
13
+ }
14
+ catch (error) {
15
+ req.currentUser = null;
16
+ }
17
+ next();
18
+ };
19
+ export const useCurrentUserHandler = (config) => {
20
+ if (!config.cookieName || !config.jwtKey) {
21
+ throw new Error('config required');
22
+ }
23
+ cookieName = config.cookieName;
24
+ jwtKey = config.jwtKey;
25
+ return getCurrentUserHandler;
26
+ };
27
+ //# 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;AAgB/B,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,MAAM,qBAAqB,GAAG,CAC5B,GAAY,EACZ,IAAc,EACd,IAAkB,EAClB,EAAE;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;IACxC,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,MAAM,CAAgB,CAAC;QAC9D,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;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAGC,EACD,EAAE;IACF,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IACD,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACvB,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC"}
@@ -0,0 +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';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -0,0 +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';
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,3 @@
1
+ import type { Request, Response, NextFunction } from 'express';
2
+ export declare const requireAuthHandler: (req: Request, _res: Response, next: NextFunction) => void;
3
+ //# sourceMappingURL=require-auth-handler.d.ts.map
@@ -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,8 @@
1
+ import { UnauthorizedError } from '../errors/index.js';
2
+ export const requireAuthHandler = (req, _res, next) => {
3
+ if (!req.currentUser) {
4
+ throw new UnauthorizedError();
5
+ }
6
+ next();
7
+ };
8
+ //# sourceMappingURL=require-auth-handler.js.map
@@ -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,3 @@
1
+ import type { Request, Response, NextFunction } from 'express';
2
+ export declare const validationHandler: (req: Request, _res: Response, next: NextFunction) => void;
3
+ //# sourceMappingURL=validation-handler.d.ts.map
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "@doffy-gittix/common",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",