@doffy-gittix/common 1.0.15 → 1.0.16
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/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/build/errors/index.js +7 -0
- 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/events/index.d.ts +4 -0
- package/build/events/index.d.ts.map +1 -0
- package/build/events/index.js +4 -0
- package/build/events/index.js.map +1 -0
- package/build/events/listener.d.ts +15 -0
- package/build/events/listener.d.ts.map +1 -0
- package/build/events/listener.js +31 -0
- package/build/events/listener.js.map +1 -0
- package/build/events/publisher.d.ts +10 -0
- package/build/events/publisher.d.ts.map +1 -0
- package/build/events/publisher.js +20 -0
- package/build/events/publisher.js.map +1 -0
- package/build/events/subject.d.ts +25 -0
- package/build/events/subject.d.ts.map +1 -0
- package/build/events/subject.js +7 -0
- package/build/events/subject.js.map +1 -0
- package/build/index.d.ts +4 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +4 -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 +19 -0
- package/build/middleware/get-current-user-handler.d.ts.map +1 -0
- package/build/middleware/get-current-user-handler.js +27 -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/build/middleware/index.js +5 -0
- 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 +1 -1
|
@@ -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"}
|
|
@@ -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 @@
|
|
|
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"}
|
|
@@ -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 @@
|
|
|
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
|
+
OrderUpdated = "order:updated"
|
|
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.OrderUpdated]: {
|
|
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 @@
|
|
|
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"}
|
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;AACtC,cAAc,mBAAmB,CAAC"}
|
package/build/index.js
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|