@sendhome/common 1.0.1 → 1.0.2
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.js +16 -0
- package/build/errors/custom-error.d.ts +8 -0
- package/build/errors/custom-error.js +10 -0
- package/build/errors/database-connection-error.d.ts +9 -0
- package/build/errors/database-connection-error.js +16 -0
- package/build/errors/not-authorized-error.d.ts +8 -0
- package/build/errors/not-authorized-error.js +15 -0
- package/build/errors/not-found-error.d.ts +8 -0
- package/build/errors/not-found-error.js +15 -0
- package/build/errors/request-validation-error.d.ts +11 -0
- package/build/errors/request-validation-error.js +19 -0
- package/build/events/base-listener.d.ts +18 -0
- package/build/events/base-listener.js +32 -0
- package/build/events/base-publisher.d.ts +13 -0
- package/build/events/base-publisher.js +20 -0
- package/build/events/publishers/branch-created-event.d.ts +13 -0
- package/build/events/publishers/branch-created-event.js +2 -0
- package/build/events/publishers/branch-updated-event.d.ts +13 -0
- package/build/events/publishers/branch-updated-event.js +2 -0
- package/build/events/publishers/company-created-event.d.ts +18 -0
- package/build/events/publishers/company-created-event.js +2 -0
- package/build/events/publishers/company-updated-event.d.ts +18 -0
- package/build/events/publishers/company-updated-event.js +2 -0
- package/build/events/publishers/order-created-event.d.ts +19 -0
- package/build/events/publishers/order-created-event.js +2 -0
- package/build/events/publishers/order-updated-event.d.ts +19 -0
- package/build/events/publishers/order-updated-event.js +2 -0
- package/build/events/publishers/product-created-event.d.ts +21 -0
- package/build/events/publishers/product-created-event.js +2 -0
- package/build/events/publishers/product-updated-event.d.ts +21 -0
- package/build/events/publishers/product-updated-event.js +2 -0
- package/build/events/publishers/user-created-event.d.ts +22 -0
- package/build/events/publishers/user-created-event.js +2 -0
- package/build/events/publishers/user-updated-event.d.ts +22 -0
- package/build/events/publishers/user-updated-event.js +2 -0
- package/build/events/subjects/subjects.d.ts +13 -0
- package/build/events/subjects/subjects.js +22 -0
- package/build/events/types/branch-status.d.ts +4 -0
- package/build/events/types/branch-status.js +10 -0
- package/build/events/types/category-types.d.ts +5 -0
- package/build/events/types/category-types.js +9 -0
- package/build/events/types/company-status.d.ts +4 -0
- package/build/events/types/company-status.js +10 -0
- package/build/events/types/company-types.d.ts +4 -0
- package/build/events/types/company-types.js +8 -0
- package/build/events/types/order-status.d.ts +3 -0
- package/build/events/types/order-status.js +8 -0
- package/build/events/types/product-status.d.ts +4 -0
- package/build/events/types/product-status.js +10 -0
- package/build/events/types/user-roles.d.ts +4 -0
- package/build/events/types/user-roles.js +8 -0
- package/build/events/types/user-status.d.ts +4 -0
- package/build/events/types/user-status.js +10 -0
- package/build/index.d.ts +31 -0
- package/build/index.js +44 -0
- package/build/middlewares/current-user.d.ts +14 -0
- package/build/middlewares/current-user.js +20 -0
- package/build/middlewares/error-handler.d.ts +2 -0
- package/build/middlewares/error-handler.js +14 -0
- package/build/middlewares/require-auth.d.ts +14 -0
- package/build/middlewares/require-auth.js +30 -0
- package/build/middlewares/validate-request.d.ts +2 -0
- package/build/middlewares/validate-request.js +13 -0
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BadRequestError = void 0;
|
|
4
|
+
const custom_error_1 = require("./custom-error");
|
|
5
|
+
class BadRequestError extends custom_error_1.CustomError {
|
|
6
|
+
constructor(message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.message = message;
|
|
9
|
+
this.statusCode = 400;
|
|
10
|
+
Object.setPrototypeOf(this, BadRequestError.prototype);
|
|
11
|
+
}
|
|
12
|
+
serializeErrors() {
|
|
13
|
+
return [{ message: this.message }];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.BadRequestError = BadRequestError;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomError = void 0;
|
|
4
|
+
class CustomError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
Object.setPrototypeOf(this, CustomError.prototype);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.CustomError = CustomError;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatabaseConnectionError = void 0;
|
|
4
|
+
const custom_error_1 = require("./custom-error");
|
|
5
|
+
class DatabaseConnectionError extends custom_error_1.CustomError {
|
|
6
|
+
constructor() {
|
|
7
|
+
super('Error connecting to db');
|
|
8
|
+
this.statusCode = 500;
|
|
9
|
+
this.reason = 'Error connecting to database';
|
|
10
|
+
Object.setPrototypeOf(this, DatabaseConnectionError.prototype);
|
|
11
|
+
}
|
|
12
|
+
serializeErrors() {
|
|
13
|
+
return [{ message: this.reason }];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.DatabaseConnectionError = DatabaseConnectionError;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotAuthorizedError = void 0;
|
|
4
|
+
const custom_error_1 = require("./custom-error");
|
|
5
|
+
class NotAuthorizedError extends custom_error_1.CustomError {
|
|
6
|
+
constructor() {
|
|
7
|
+
super('Not Authorized');
|
|
8
|
+
this.statusCode = 401;
|
|
9
|
+
Object.setPrototypeOf(this, NotAuthorizedError.prototype);
|
|
10
|
+
}
|
|
11
|
+
serializeErrors() {
|
|
12
|
+
return [{ message: 'Not authorized' }];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.NotAuthorizedError = NotAuthorizedError;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotFoundError = void 0;
|
|
4
|
+
const custom_error_1 = require("./custom-error");
|
|
5
|
+
class NotFoundError extends custom_error_1.CustomError {
|
|
6
|
+
constructor() {
|
|
7
|
+
super('Route not found');
|
|
8
|
+
this.statusCode = 404;
|
|
9
|
+
Object.setPrototypeOf(this, NotFoundError.prototype);
|
|
10
|
+
}
|
|
11
|
+
serializeErrors() {
|
|
12
|
+
return [{ message: 'Not Found' }];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.NotFoundError = NotFoundError;
|
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestValidationError = void 0;
|
|
4
|
+
const custom_error_1 = require("./custom-error");
|
|
5
|
+
class RequestValidationError extends custom_error_1.CustomError {
|
|
6
|
+
constructor(errors) {
|
|
7
|
+
super('Invalid request parameters');
|
|
8
|
+
this.errors = errors;
|
|
9
|
+
this.statusCode = 400;
|
|
10
|
+
// Only because we are extending a built in class
|
|
11
|
+
Object.setPrototypeOf(this, RequestValidationError.prototype);
|
|
12
|
+
}
|
|
13
|
+
serializeErrors() {
|
|
14
|
+
return this.errors.map(err => {
|
|
15
|
+
return { message: err.msg, field: err.param };
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.RequestValidationError = RequestValidationError;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Message, Stan } from 'node-nats-streaming';
|
|
2
|
+
import { Subjects } from './subjects/subjects';
|
|
3
|
+
interface Event {
|
|
4
|
+
subject: Subjects;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class Listener<T extends Event> {
|
|
8
|
+
abstract subject: T['subject'];
|
|
9
|
+
abstract queueGroupName: string;
|
|
10
|
+
abstract onMessage(data: T['data'], msg: Message): void;
|
|
11
|
+
private client;
|
|
12
|
+
protected ackWait: number;
|
|
13
|
+
constructor(client: Stan);
|
|
14
|
+
subscriptionOptions(): import("node-nats-streaming").SubscriptionOptions;
|
|
15
|
+
listen(): void;
|
|
16
|
+
parseMessage(msg: Message): any;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Listener = void 0;
|
|
4
|
+
class Listener {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.ackWait = 5 * 1000;
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
subscriptionOptions() {
|
|
10
|
+
return this.client
|
|
11
|
+
.subscriptionOptions()
|
|
12
|
+
.setDeliverAllAvailable()
|
|
13
|
+
.setManualAckMode(true)
|
|
14
|
+
.setAckWait(this.ackWait)
|
|
15
|
+
.setDurableName(this.queueGroupName);
|
|
16
|
+
}
|
|
17
|
+
listen() {
|
|
18
|
+
const subscription = this.client.subscribe(this.subject, this.queueGroupName, this.subscriptionOptions());
|
|
19
|
+
subscription.on('message', (msg) => {
|
|
20
|
+
console.log(`Message received: ${this.subject} / ${this.queueGroupName}`);
|
|
21
|
+
const parsedData = this.parseMessage(msg);
|
|
22
|
+
this.onMessage(parsedData, msg);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
parseMessage(msg) {
|
|
26
|
+
const data = msg.getData();
|
|
27
|
+
return typeof data === 'string'
|
|
28
|
+
? JSON.parse(data)
|
|
29
|
+
: JSON.parse(data.toString('utf8'));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Listener = Listener;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Stan } from 'node-nats-streaming';
|
|
2
|
+
import { Subjects } from './subjects/subjects';
|
|
3
|
+
interface Event {
|
|
4
|
+
subject: Subjects;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class Publisher<T extends Event> {
|
|
8
|
+
abstract subject: T['subject'];
|
|
9
|
+
private client;
|
|
10
|
+
constructor(client: Stan);
|
|
11
|
+
publish(data: T['data']): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Publisher = void 0;
|
|
4
|
+
class Publisher {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
publish(data) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
this.client.publish(this.subject, JSON.stringify(data), (err) => {
|
|
11
|
+
if (err) {
|
|
12
|
+
return reject(err);
|
|
13
|
+
}
|
|
14
|
+
console.log('Event published to subject', this.subject);
|
|
15
|
+
resolve();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.Publisher = Publisher;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { BranchStatus } from "../types/branch-status";
|
|
3
|
+
export interface BranchCreatedEvent {
|
|
4
|
+
subject: Subjects.BranchCreated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
address: string;
|
|
9
|
+
status: BranchStatus;
|
|
10
|
+
company: string;
|
|
11
|
+
version: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { BranchStatus } from "../types/branch-status";
|
|
3
|
+
export interface BranchUpdatedEvent {
|
|
4
|
+
subject: Subjects.BranchUpdated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
address: string;
|
|
9
|
+
status: BranchStatus;
|
|
10
|
+
company: string;
|
|
11
|
+
version: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { CompanyStatus } from "../types/company-status";
|
|
3
|
+
export interface CompanyCreatedEvent {
|
|
4
|
+
subject: Subjects.CompanyCreated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
logo: {};
|
|
8
|
+
name: string;
|
|
9
|
+
tax_number: string;
|
|
10
|
+
phones: string[];
|
|
11
|
+
landlines: string[];
|
|
12
|
+
email: string;
|
|
13
|
+
address: string;
|
|
14
|
+
type: number;
|
|
15
|
+
status: CompanyStatus;
|
|
16
|
+
version: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { CompanyStatus } from "../types/company-status";
|
|
3
|
+
export interface CompanyUpdatedEvent {
|
|
4
|
+
subject: Subjects.CompanyUpdated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
logo: {};
|
|
8
|
+
name: string;
|
|
9
|
+
tax_number: string;
|
|
10
|
+
phones: string[];
|
|
11
|
+
landlines: string[];
|
|
12
|
+
email: string;
|
|
13
|
+
address: string;
|
|
14
|
+
type: number;
|
|
15
|
+
status: CompanyStatus;
|
|
16
|
+
version: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { OrderStatus } from "../types/order-status";
|
|
3
|
+
export interface OrderCreatedEvent {
|
|
4
|
+
subject: Subjects.OrderCreated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
order_number: string;
|
|
8
|
+
order_type: string;
|
|
9
|
+
entity_id: string;
|
|
10
|
+
amount: string;
|
|
11
|
+
sender: string;
|
|
12
|
+
receiver: string;
|
|
13
|
+
company: string;
|
|
14
|
+
status: OrderStatus;
|
|
15
|
+
created_at: Date;
|
|
16
|
+
updated_at: Date;
|
|
17
|
+
version: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { OrderStatus } from "../types/order-status";
|
|
3
|
+
export interface OrderUpdatedEvent {
|
|
4
|
+
subject: Subjects.OrderUpdated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
order_number: string;
|
|
8
|
+
order_type: string;
|
|
9
|
+
entity_id: string;
|
|
10
|
+
amount: string;
|
|
11
|
+
sender: string;
|
|
12
|
+
receiver: string;
|
|
13
|
+
company: string;
|
|
14
|
+
status: OrderStatus;
|
|
15
|
+
created_at: Date;
|
|
16
|
+
updated_at: Date;
|
|
17
|
+
version: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { ProductStatus } from "../types/product-status";
|
|
3
|
+
export interface ProductCreatedEvent {
|
|
4
|
+
subject: Subjects.ProductCreated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
images: {}[];
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
product_type: Number;
|
|
11
|
+
category: number;
|
|
12
|
+
price: number;
|
|
13
|
+
quantity: number;
|
|
14
|
+
status: ProductStatus;
|
|
15
|
+
company: string;
|
|
16
|
+
created_by: string;
|
|
17
|
+
created_at: Date;
|
|
18
|
+
updated_at: Date;
|
|
19
|
+
version: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { ProductStatus } from "../types/product-status";
|
|
3
|
+
export interface ProductUpdatedEvent {
|
|
4
|
+
subject: Subjects.ProductUpdated;
|
|
5
|
+
data: {
|
|
6
|
+
id: string;
|
|
7
|
+
images: {}[];
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
product_type: Number;
|
|
11
|
+
category: number;
|
|
12
|
+
price: number;
|
|
13
|
+
quantity: number;
|
|
14
|
+
status: ProductStatus;
|
|
15
|
+
company: string;
|
|
16
|
+
created_by: string;
|
|
17
|
+
created_at: Date;
|
|
18
|
+
updated_at: Date;
|
|
19
|
+
version: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { UserStatus } from "../types/user-status";
|
|
3
|
+
import { UserRoles } from "../types/user-roles";
|
|
4
|
+
export interface UserCreatedEvent {
|
|
5
|
+
subject: Subjects.UserCreated;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
surname: string;
|
|
10
|
+
gender: string;
|
|
11
|
+
phone: string;
|
|
12
|
+
email: string;
|
|
13
|
+
role: UserRoles;
|
|
14
|
+
permissions: number[];
|
|
15
|
+
password: string;
|
|
16
|
+
status: UserStatus;
|
|
17
|
+
courses: string[];
|
|
18
|
+
created_at: Date;
|
|
19
|
+
updated_at: Date;
|
|
20
|
+
version: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Subjects } from "../subjects/subjects";
|
|
2
|
+
import { UserStatus } from "../types/user-status";
|
|
3
|
+
import { UserRoles } from "../types/user-roles";
|
|
4
|
+
export interface UserUpdatedEvent {
|
|
5
|
+
subject: Subjects.UserUpdated;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
surname: string;
|
|
10
|
+
gender: string;
|
|
11
|
+
phone: string;
|
|
12
|
+
email: string;
|
|
13
|
+
role: UserRoles;
|
|
14
|
+
permissions: number[];
|
|
15
|
+
password: string;
|
|
16
|
+
status: UserStatus;
|
|
17
|
+
courses: string[];
|
|
18
|
+
created_at: Date;
|
|
19
|
+
updated_at: Date;
|
|
20
|
+
version: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum Subjects {
|
|
2
|
+
UserCreated = "user:created",
|
|
3
|
+
UserUpdated = "user:updated",
|
|
4
|
+
UserDeleted = "user:deleted",
|
|
5
|
+
CompanyCreated = "company:created",
|
|
6
|
+
CompanyUpdated = "company:updated",
|
|
7
|
+
BranchCreated = "branch:created",
|
|
8
|
+
BranchUpdated = "branch:updated",
|
|
9
|
+
ProductCreated = "product:created",
|
|
10
|
+
ProductUpdated = "product:updated",
|
|
11
|
+
OrderCreated = "order:created",
|
|
12
|
+
OrderUpdated = "order:updated"
|
|
13
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Subjects = void 0;
|
|
4
|
+
var Subjects;
|
|
5
|
+
(function (Subjects) {
|
|
6
|
+
// users
|
|
7
|
+
Subjects["UserCreated"] = "user:created";
|
|
8
|
+
Subjects["UserUpdated"] = "user:updated";
|
|
9
|
+
Subjects["UserDeleted"] = "user:deleted";
|
|
10
|
+
// company
|
|
11
|
+
Subjects["CompanyCreated"] = "company:created";
|
|
12
|
+
Subjects["CompanyUpdated"] = "company:updated";
|
|
13
|
+
// branches
|
|
14
|
+
Subjects["BranchCreated"] = "branch:created";
|
|
15
|
+
Subjects["BranchUpdated"] = "branch:updated";
|
|
16
|
+
// products
|
|
17
|
+
Subjects["ProductCreated"] = "product:created";
|
|
18
|
+
Subjects["ProductUpdated"] = "product:updated";
|
|
19
|
+
// Orders
|
|
20
|
+
Subjects["OrderCreated"] = "order:created";
|
|
21
|
+
Subjects["OrderUpdated"] = "order:updated";
|
|
22
|
+
})(Subjects = exports.Subjects || (exports.Subjects = {}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BranchStatus = void 0;
|
|
4
|
+
var BranchStatus;
|
|
5
|
+
(function (BranchStatus) {
|
|
6
|
+
// Branch created
|
|
7
|
+
BranchStatus["Created"] = "created";
|
|
8
|
+
// Branch deleted
|
|
9
|
+
BranchStatus["Published"] = "deleted";
|
|
10
|
+
})(BranchStatus = exports.BranchStatus || (exports.BranchStatus = {}));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CategoryTypes = void 0;
|
|
4
|
+
var CategoryTypes;
|
|
5
|
+
(function (CategoryTypes) {
|
|
6
|
+
CategoryTypes["Mathematics"] = "mathematics";
|
|
7
|
+
CategoryTypes["Science"] = "science";
|
|
8
|
+
CategoryTypes["Geography"] = "geography";
|
|
9
|
+
})(CategoryTypes = exports.CategoryTypes || (exports.CategoryTypes = {}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CompanyStatus = void 0;
|
|
4
|
+
var CompanyStatus;
|
|
5
|
+
(function (CompanyStatus) {
|
|
6
|
+
// Company created
|
|
7
|
+
CompanyStatus["Created"] = "created";
|
|
8
|
+
// Company deleted
|
|
9
|
+
CompanyStatus["Published"] = "deleted";
|
|
10
|
+
})(CompanyStatus = exports.CompanyStatus || (exports.CompanyStatus = {}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CompanyTypes = void 0;
|
|
4
|
+
var CompanyTypes;
|
|
5
|
+
(function (CompanyTypes) {
|
|
6
|
+
CompanyTypes["Supermarket"] = "supermarket";
|
|
7
|
+
CompanyTypes["Hardware"] = "hardware";
|
|
8
|
+
})(CompanyTypes = exports.CompanyTypes || (exports.CompanyTypes = {}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrderStatus = void 0;
|
|
4
|
+
var OrderStatus;
|
|
5
|
+
(function (OrderStatus) {
|
|
6
|
+
// order created
|
|
7
|
+
OrderStatus["Created"] = "created";
|
|
8
|
+
})(OrderStatus = exports.OrderStatus || (exports.OrderStatus = {}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProductStatus = void 0;
|
|
4
|
+
var ProductStatus;
|
|
5
|
+
(function (ProductStatus) {
|
|
6
|
+
// product created
|
|
7
|
+
ProductStatus["Created"] = "created";
|
|
8
|
+
// product deleted
|
|
9
|
+
ProductStatus["Published"] = "deleted";
|
|
10
|
+
})(ProductStatus = exports.ProductStatus || (exports.ProductStatus = {}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserRoles = void 0;
|
|
4
|
+
var UserRoles;
|
|
5
|
+
(function (UserRoles) {
|
|
6
|
+
UserRoles["Student"] = "student";
|
|
7
|
+
UserRoles["Admin"] = "admin";
|
|
8
|
+
})(UserRoles = exports.UserRoles || (exports.UserRoles = {}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserStatus = void 0;
|
|
4
|
+
var UserStatus;
|
|
5
|
+
(function (UserStatus) {
|
|
6
|
+
// user is active
|
|
7
|
+
UserStatus["Active"] = "active";
|
|
8
|
+
// user inactive
|
|
9
|
+
UserStatus["Inactive"] = "inactive";
|
|
10
|
+
})(UserStatus = exports.UserStatus || (exports.UserStatus = {}));
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
export * from './events/base-listener';
|
|
12
|
+
export * from './events/base-publisher';
|
|
13
|
+
export * from './events/subjects/subjects';
|
|
14
|
+
export * from './events/publishers/branch-created-event';
|
|
15
|
+
export * from './events/publishers/branch-updated-event';
|
|
16
|
+
export * from './events/publishers/company-created-event';
|
|
17
|
+
export * from './events/publishers/company-updated-event';
|
|
18
|
+
export * from './events/publishers/order-created-event';
|
|
19
|
+
export * from './events/publishers/order-updated-event';
|
|
20
|
+
export * from './events/publishers/product-created-event';
|
|
21
|
+
export * from './events/publishers/product-updated-event';
|
|
22
|
+
export * from './events/publishers/user-created-event';
|
|
23
|
+
export * from './events/publishers/user-updated-event';
|
|
24
|
+
export * from './events/types/branch-status';
|
|
25
|
+
export * from './events/types/category-types';
|
|
26
|
+
export * from './events/types/company-status';
|
|
27
|
+
export * from './events/types/company-types';
|
|
28
|
+
export * from './events/types/order-status';
|
|
29
|
+
export * from './events/types/product-status';
|
|
30
|
+
export * from './events/types/user-roles';
|
|
31
|
+
export * from './events/types/user-status';
|
package/build/index.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
// Re-export stuff from errors and middlewares
|
|
14
|
+
__exportStar(require("./errors/bad-request-error"), exports);
|
|
15
|
+
__exportStar(require("./errors/custom-error"), exports);
|
|
16
|
+
__exportStar(require("./errors/database-connection-error"), exports);
|
|
17
|
+
__exportStar(require("./errors/not-authorized-error"), exports);
|
|
18
|
+
__exportStar(require("./errors/not-found-error"), exports);
|
|
19
|
+
__exportStar(require("./errors/request-validation-error"), exports);
|
|
20
|
+
__exportStar(require("./middlewares/current-user"), exports);
|
|
21
|
+
__exportStar(require("./middlewares/error-handler"), exports);
|
|
22
|
+
__exportStar(require("./middlewares/require-auth"), exports);
|
|
23
|
+
__exportStar(require("./middlewares/validate-request"), exports);
|
|
24
|
+
__exportStar(require("./events/base-listener"), exports);
|
|
25
|
+
__exportStar(require("./events/base-publisher"), exports);
|
|
26
|
+
__exportStar(require("./events/subjects/subjects"), exports);
|
|
27
|
+
__exportStar(require("./events/publishers/branch-created-event"), exports);
|
|
28
|
+
__exportStar(require("./events/publishers/branch-updated-event"), exports);
|
|
29
|
+
__exportStar(require("./events/publishers/company-created-event"), exports);
|
|
30
|
+
__exportStar(require("./events/publishers/company-updated-event"), exports);
|
|
31
|
+
__exportStar(require("./events/publishers/order-created-event"), exports);
|
|
32
|
+
__exportStar(require("./events/publishers/order-updated-event"), exports);
|
|
33
|
+
__exportStar(require("./events/publishers/product-created-event"), exports);
|
|
34
|
+
__exportStar(require("./events/publishers/product-updated-event"), exports);
|
|
35
|
+
__exportStar(require("./events/publishers/user-created-event"), exports);
|
|
36
|
+
__exportStar(require("./events/publishers/user-updated-event"), exports);
|
|
37
|
+
__exportStar(require("./events/types/branch-status"), exports);
|
|
38
|
+
__exportStar(require("./events/types/category-types"), exports);
|
|
39
|
+
__exportStar(require("./events/types/company-status"), exports);
|
|
40
|
+
__exportStar(require("./events/types/company-types"), exports);
|
|
41
|
+
__exportStar(require("./events/types/order-status"), exports);
|
|
42
|
+
__exportStar(require("./events/types/product-status"), exports);
|
|
43
|
+
__exportStar(require("./events/types/user-roles"), exports);
|
|
44
|
+
__exportStar(require("./events/types/user-status"), exports);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Request, Response, 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 {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.currentUser = void 0;
|
|
7
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
8
|
+
const currentUser = (req, res, next) => {
|
|
9
|
+
var _a;
|
|
10
|
+
if (!((_a = req.session) === null || _a === void 0 ? void 0 : _a.jwt)) {
|
|
11
|
+
return next();
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
const payload = jsonwebtoken_1.default.verify(req.session.jwt, process.env.JWT_KEY);
|
|
15
|
+
req.currentUser = payload;
|
|
16
|
+
}
|
|
17
|
+
catch (err) { }
|
|
18
|
+
next();
|
|
19
|
+
};
|
|
20
|
+
exports.currentUser = currentUser;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.errorHandler = void 0;
|
|
4
|
+
const custom_error_1 = require("../errors/custom-error");
|
|
5
|
+
const errorHandler = (err, req, res, next) => {
|
|
6
|
+
if (err instanceof custom_error_1.CustomError) {
|
|
7
|
+
return res.status(err.statusCode).send({ errors: err.serializeErrors() });
|
|
8
|
+
}
|
|
9
|
+
console.error(err);
|
|
10
|
+
res.status(400).send({
|
|
11
|
+
errors: [{ message: 'Something went wrong' }],
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
exports.errorHandler = errorHandler;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Request, Response, 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 requireAuth: (req: Request, res: Response, next: NextFunction) => void;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.requireAuth = void 0;
|
|
7
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
8
|
+
const not_authorized_error_1 = require("../errors/not-authorized-error");
|
|
9
|
+
const requireAuth = (req, res, next) => {
|
|
10
|
+
let token;
|
|
11
|
+
if (req.headers.authorization &&
|
|
12
|
+
req.headers.authorization.startsWith("Bearer")) {
|
|
13
|
+
// Set token from Bearer token in header
|
|
14
|
+
token = req.headers.authorization.split(" ")[1];
|
|
15
|
+
}
|
|
16
|
+
// Make sure token exists
|
|
17
|
+
if (!token) {
|
|
18
|
+
throw new not_authorized_error_1.NotAuthorizedError();
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const payload = jsonwebtoken_1.default.verify(token, "EDWIN"
|
|
22
|
+
// process.env.JWT_KEY!
|
|
23
|
+
);
|
|
24
|
+
req.currentUser = payload;
|
|
25
|
+
console.log("req.currentUser", req.currentUser);
|
|
26
|
+
}
|
|
27
|
+
catch (err) { }
|
|
28
|
+
next();
|
|
29
|
+
};
|
|
30
|
+
exports.requireAuth = requireAuth;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateRequest = void 0;
|
|
4
|
+
const express_validator_1 = require("express-validator");
|
|
5
|
+
const request_validation_error_1 = require("../errors/request-validation-error");
|
|
6
|
+
const validateRequest = (req, res, next) => {
|
|
7
|
+
const errors = (0, express_validator_1.validationResult)(req);
|
|
8
|
+
if (!errors.isEmpty()) {
|
|
9
|
+
throw new request_validation_error_1.RequestValidationError(errors.array());
|
|
10
|
+
}
|
|
11
|
+
next();
|
|
12
|
+
};
|
|
13
|
+
exports.validateRequest = validateRequest;
|