@ecom-micro/common 2.0.29 → 2.0.32
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/README.md +19 -19
- package/build/errors/badRequestError.d.ts +8 -8
- package/build/errors/badRequestError.js +15 -15
- package/build/errors/baseError.d.ts +8 -8
- package/build/errors/baseError.js +11 -11
- package/build/errors/notAuthorized.d.ts +8 -8
- package/build/errors/notAuthorized.js +15 -15
- package/build/errors/notFoundError.d.ts +9 -9
- package/build/errors/notFoundError.js +16 -16
- package/build/errors/requestValidationError.d.ts +11 -11
- package/build/errors/requestValidationError.js +18 -18
- package/build/events/baseListener.d.ts +18 -18
- package/build/events/baseListener.js +30 -30
- package/build/events/basePublisher.d.ts +13 -13
- package/build/events/basePublisher.js +20 -20
- package/build/events/productCreatedEvent.d.ts +11 -11
- package/build/events/productCreatedEvent.js +2 -2
- package/build/events/productDeletedEvent.d.ts +7 -7
- package/build/events/productDeletedEvent.js +2 -2
- package/build/events/productUpdatedEvent.d.ts +11 -11
- package/build/events/productUpdatedEvent.js +2 -2
- package/build/events/sellerCreatedEvent.d.ts +9 -9
- package/build/events/sellerCreatedEvent.js +2 -2
- package/build/events/sellerUpdatedEvent.d.ts +9 -9
- package/build/events/sellerUpdatedEvent.js +2 -2
- package/build/index.d.ts +14 -12
- package/build/index.js +34 -36
- package/build/logger/logger.d.ts +2 -0
- package/build/logger/logger.js +40 -0
- package/build/middleware/currentUser.d.ts +15 -15
- package/build/middleware/currentUser.js +20 -20
- package/build/middleware/errorHandler.d.ts +2 -2
- package/build/middleware/errorHandler.js +23 -23
- package/build/middleware/requestValidation.d.ts +2 -2
- package/build/middleware/requestValidation.js +22 -22
- package/build/middleware/requireAuth.d.ts +2 -2
- package/build/middleware/requireAuth.js +11 -11
- package/build/middleware/restrictTo.d.ts +2 -2
- package/build/middleware/restrictTo.js +13 -13
- package/build/queues/baseConsumer.d.ts +16 -0
- package/build/queues/baseConsumer.js +38 -0
- package/build/queues/baseListner.d.ts +15 -0
- package/build/queues/baseListner.js +32 -0
- package/build/queues/basePublisher.d.ts +14 -0
- package/build/queues/basePublisher.js +25 -0
- package/build/queues/connection.d.ts +9 -9
- package/build/queues/connection.js +51 -51
- package/build/queues/product/productCreatedEvent.d.ts +11 -0
- package/build/queues/product/productCreatedEvent.js +2 -0
- package/build/queues/product/productDeletedEvent.d.ts +7 -0
- package/build/queues/product/productDeletedEvent.js +2 -0
- package/build/queues/product/productUpdatedEvent.d.ts +11 -0
- package/build/queues/product/productUpdatedEvent.js +2 -0
- package/build/queues/seller/sellerCreatedEvent.d.ts +9 -0
- package/build/queues/seller/sellerCreatedEvent.js +2 -0
- package/build/queues/seller/sellerUpdatedEvent.d.ts +9 -0
- package/build/queues/seller/sellerUpdatedEvent.js +2 -0
- package/build/queues/types/Exchange.d.ts +12 -0
- package/build/queues/types/Exchange.js +16 -0
- package/build/types/index.d.ts +1 -0
- package/build/types/index.js +2 -0
- package/build/types/product.types.d.ts +27 -0
- package/build/types/product.types.js +2 -0
- package/build/types/subjects.d.ts +26 -12
- package/build/types/subjects.js +31 -16
- package/package.json +34 -32
package/build/index.js
CHANGED
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
__exportStar(require("./errors/
|
|
19
|
-
__exportStar(require("./errors/
|
|
20
|
-
__exportStar(require("./errors/
|
|
21
|
-
__exportStar(require("./errors/
|
|
22
|
-
__exportStar(require("./
|
|
23
|
-
|
|
24
|
-
__exportStar(require("./middleware/
|
|
25
|
-
__exportStar(require("./middleware/
|
|
26
|
-
__exportStar(require("./middleware/
|
|
27
|
-
__exportStar(require("./middleware/
|
|
28
|
-
__exportStar(require("./
|
|
29
|
-
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
// export * from './events/sellerUpdatedEvent';
|
|
36
|
-
// export * from './types/subjects';
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Error Handlers
|
|
18
|
+
__exportStar(require("./errors/badRequestError"), exports);
|
|
19
|
+
__exportStar(require("./errors/baseError"), exports);
|
|
20
|
+
__exportStar(require("./errors/notAuthorized"), exports);
|
|
21
|
+
__exportStar(require("./errors/notFoundError"), exports);
|
|
22
|
+
__exportStar(require("./errors/requestValidationError"), exports);
|
|
23
|
+
// Middlewares
|
|
24
|
+
__exportStar(require("./middleware/errorHandler"), exports);
|
|
25
|
+
__exportStar(require("./middleware/currentUser"), exports);
|
|
26
|
+
__exportStar(require("./middleware/restrictTo"), exports);
|
|
27
|
+
__exportStar(require("./middleware/requestValidation"), exports);
|
|
28
|
+
__exportStar(require("./middleware/requireAuth"), exports);
|
|
29
|
+
__exportStar(require("./middleware/currentUser"), exports);
|
|
30
|
+
// RabbitMQ Service
|
|
31
|
+
__exportStar(require("./queues/connection"), exports);
|
|
32
|
+
// Logger
|
|
33
|
+
__exportStar(require("./logger/logger"), exports);
|
|
34
|
+
__exportStar(require("./types/index"), exports);
|
|
@@ -0,0 +1,40 @@
|
|
|
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.winstonLogger = void 0;
|
|
7
|
+
const winston_1 = __importDefault(require("winston"));
|
|
8
|
+
const winston_elasticsearch_1 = require("winston-elasticsearch");
|
|
9
|
+
const eTransformer = (logData) => {
|
|
10
|
+
return (0, winston_elasticsearch_1.ElasticsearchTransformer)(logData);
|
|
11
|
+
};
|
|
12
|
+
const winstonLogger = (elasticSearchNode, name, level) => {
|
|
13
|
+
const options = {
|
|
14
|
+
console: {
|
|
15
|
+
level,
|
|
16
|
+
handleException: true,
|
|
17
|
+
json: false,
|
|
18
|
+
colorize: true,
|
|
19
|
+
},
|
|
20
|
+
elasticsearch: {
|
|
21
|
+
level,
|
|
22
|
+
transformer: eTransformer,
|
|
23
|
+
clientOpts: {
|
|
24
|
+
node: elasticSearchNode,
|
|
25
|
+
log: level,
|
|
26
|
+
maxRetries: 2,
|
|
27
|
+
requestTimeout: 1000,
|
|
28
|
+
sniffOnStart: false,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
const esTransport = new winston_elasticsearch_1.ElasticsearchTransport(options.elasticsearch);
|
|
33
|
+
const logger = winston_1.default.createLogger({
|
|
34
|
+
exitOnError: false,
|
|
35
|
+
defaultMeta: { service: name },
|
|
36
|
+
transports: [new winston_1.default.transports.Console(options.console), esTransport],
|
|
37
|
+
});
|
|
38
|
+
return logger;
|
|
39
|
+
};
|
|
40
|
+
exports.winstonLogger = winstonLogger;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
type UserPayload = {
|
|
3
|
-
id: string;
|
|
4
|
-
email: string;
|
|
5
|
-
role: string;
|
|
6
|
-
};
|
|
7
|
-
declare global {
|
|
8
|
-
namespace Express {
|
|
9
|
-
interface Request {
|
|
10
|
-
user: UserPayload;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export declare const currentUser: (req: Request, res: Response, next: NextFunction) => void;
|
|
15
|
-
export {};
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
type UserPayload = {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
role: string;
|
|
6
|
+
};
|
|
7
|
+
declare global {
|
|
8
|
+
namespace Express {
|
|
9
|
+
interface Request {
|
|
10
|
+
user: UserPayload;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export declare const currentUser: (req: Request, res: Response, next: NextFunction) => void;
|
|
15
|
+
export {};
|
|
@@ -1,20 +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.user = payload;
|
|
16
|
-
}
|
|
17
|
-
catch (err) { }
|
|
18
|
-
next();
|
|
19
|
-
};
|
|
20
|
-
exports.currentUser = currentUser;
|
|
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.user = payload;
|
|
16
|
+
}
|
|
17
|
+
catch (err) { }
|
|
18
|
+
next();
|
|
19
|
+
};
|
|
20
|
+
exports.currentUser = currentUser;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
export declare const errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>;
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
export declare const errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.errorHandler = void 0;
|
|
13
|
-
const baseError_1 = require("../errors/baseError");
|
|
14
|
-
const errorHandler = (err, req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
-
if (process.env.NODE_ENV !== 'test') {
|
|
16
|
-
console.log(err);
|
|
17
|
-
}
|
|
18
|
-
if (err instanceof baseError_1.BaseError) {
|
|
19
|
-
return res.status(err.statusCode).json({ errors: err.serializeErrors() });
|
|
20
|
-
}
|
|
21
|
-
res.status(500).json({ errors: [{ message: 'something went wrong' }] });
|
|
22
|
-
});
|
|
23
|
-
exports.errorHandler = errorHandler;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.errorHandler = void 0;
|
|
13
|
+
const baseError_1 = require("../errors/baseError");
|
|
14
|
+
const errorHandler = (err, req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
16
|
+
console.log(err);
|
|
17
|
+
}
|
|
18
|
+
if (err instanceof baseError_1.BaseError) {
|
|
19
|
+
return res.status(err.statusCode).json({ errors: err.serializeErrors() });
|
|
20
|
+
}
|
|
21
|
+
res.status(500).json({ errors: [{ message: 'something went wrong' }] });
|
|
22
|
+
});
|
|
23
|
+
exports.errorHandler = errorHandler;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
export declare const requestValidation: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
export declare const requestValidation: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.requestValidation = void 0;
|
|
13
|
-
const express_validator_1 = require("express-validator");
|
|
14
|
-
const requestValidationError_1 = require("../errors/requestValidationError");
|
|
15
|
-
const requestValidation = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
const errors = (0, express_validator_1.validationResult)(req);
|
|
17
|
-
if (!errors.isEmpty()) {
|
|
18
|
-
throw new requestValidationError_1.RequestValidationError(errors.array());
|
|
19
|
-
}
|
|
20
|
-
next();
|
|
21
|
-
});
|
|
22
|
-
exports.requestValidation = requestValidation;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.requestValidation = void 0;
|
|
13
|
+
const express_validator_1 = require("express-validator");
|
|
14
|
+
const requestValidationError_1 = require("../errors/requestValidationError");
|
|
15
|
+
const requestValidation = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
const errors = (0, express_validator_1.validationResult)(req);
|
|
17
|
+
if (!errors.isEmpty()) {
|
|
18
|
+
throw new requestValidationError_1.RequestValidationError(errors.array());
|
|
19
|
+
}
|
|
20
|
+
next();
|
|
21
|
+
});
|
|
22
|
+
exports.requestValidation = requestValidation;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Request, Response, NextFunction } from 'express';
|
|
2
|
-
export declare const requireAuth: (req: Request, res: Response, next: NextFunction) => void;
|
|
1
|
+
import { Request, Response, NextFunction } from 'express';
|
|
2
|
+
export declare const requireAuth: (req: Request, res: Response, next: NextFunction) => void;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requireAuth = void 0;
|
|
4
|
-
const notAuthorized_1 = require("../errors/notAuthorized");
|
|
5
|
-
const requireAuth = (req, res, next) => {
|
|
6
|
-
if (!req.user) {
|
|
7
|
-
throw new notAuthorized_1.NotAuthorizedError();
|
|
8
|
-
}
|
|
9
|
-
next();
|
|
10
|
-
};
|
|
11
|
-
exports.requireAuth = requireAuth;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.requireAuth = void 0;
|
|
4
|
+
const notAuthorized_1 = require("../errors/notAuthorized");
|
|
5
|
+
const requireAuth = (req, res, next) => {
|
|
6
|
+
if (!req.user) {
|
|
7
|
+
throw new notAuthorized_1.NotAuthorizedError();
|
|
8
|
+
}
|
|
9
|
+
next();
|
|
10
|
+
};
|
|
11
|
+
exports.requireAuth = requireAuth;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
export declare const restrictTo: (...roles: any) => (req: Request, res: Response, next: NextFunction) => void;
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
export declare const restrictTo: (...roles: any) => (req: Request, res: Response, next: NextFunction) => void;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.restrictTo = void 0;
|
|
4
|
-
const notAuthorized_1 = require("../errors/notAuthorized");
|
|
5
|
-
const restrictTo = (...roles) => {
|
|
6
|
-
return (req, res, next) => {
|
|
7
|
-
if (!roles.includes(req.user.role)) {
|
|
8
|
-
return next(new notAuthorized_1.NotAuthorizedError());
|
|
9
|
-
}
|
|
10
|
-
next();
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
exports.restrictTo = restrictTo;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.restrictTo = void 0;
|
|
4
|
+
const notAuthorized_1 = require("../errors/notAuthorized");
|
|
5
|
+
const restrictTo = (...roles) => {
|
|
6
|
+
return (req, res, next) => {
|
|
7
|
+
if (!roles.includes(req.user.role)) {
|
|
8
|
+
return next(new notAuthorized_1.NotAuthorizedError());
|
|
9
|
+
}
|
|
10
|
+
next();
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.restrictTo = restrictTo;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Channel, ConsumeMessage } from 'amqplib';
|
|
2
|
+
import { Exchange } from './types/Exchange';
|
|
3
|
+
interface Event {
|
|
4
|
+
exchangeName: Exchange;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class MQConsumer<T extends Event> {
|
|
8
|
+
abstract exchangeName: T['exchangeName'];
|
|
9
|
+
abstract routingKey: string;
|
|
10
|
+
abstract queueName: string;
|
|
11
|
+
protected channel: Channel;
|
|
12
|
+
abstract onMessage(data: T['data'], msg: ConsumeMessage): void;
|
|
13
|
+
constructor(channel: Channel);
|
|
14
|
+
consume(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MQConsumer = void 0;
|
|
13
|
+
class MQConsumer {
|
|
14
|
+
constructor(channel) {
|
|
15
|
+
this.channel = channel;
|
|
16
|
+
}
|
|
17
|
+
consume() {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
this.channel.assertExchange(this.exchangeName, 'direct');
|
|
20
|
+
// `assertQueue` will check if there is a queue exist or not to listen the messages
|
|
21
|
+
// if present then it will not create again
|
|
22
|
+
// if not then it will create a queue with provided name
|
|
23
|
+
const ecomQueue = yield this.channel.assertQueue(this.queueName, {
|
|
24
|
+
durable: true,
|
|
25
|
+
autoDelete: false,
|
|
26
|
+
});
|
|
27
|
+
yield this.channel.bindQueue(ecomQueue.queue, this.exchangeName, this.routingKey);
|
|
28
|
+
this.channel.consume(ecomQueue.queue, (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
console.log(`Message received: ${this.exchangeName} / ${this.queueName}`);
|
|
30
|
+
if (msg) {
|
|
31
|
+
const parsedData = JSON.parse(msg.content.toString());
|
|
32
|
+
this.onMessage(parsedData, msg);
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.MQConsumer = MQConsumer;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Channel, ConsumeMessage } from 'amqplib';
|
|
2
|
+
import { ExchangeTypes } from '../types/subjects';
|
|
3
|
+
interface Event {
|
|
4
|
+
exchange: ExchangeTypes;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class BaseListener<T extends Event> {
|
|
8
|
+
protected channel: Channel;
|
|
9
|
+
abstract exchangeName: T['exchange'];
|
|
10
|
+
abstract routingKey: string;
|
|
11
|
+
abstract onMessage(data: T['data'], msg: ConsumeMessage): void;
|
|
12
|
+
constructor(channel: Channel);
|
|
13
|
+
listen(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BaseListener = void 0;
|
|
13
|
+
class BaseListener {
|
|
14
|
+
constructor(channel) {
|
|
15
|
+
this.channel = channel;
|
|
16
|
+
}
|
|
17
|
+
listen() {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
yield this.channel.assertExchange(this.exchangeName, 'direct');
|
|
20
|
+
const consumeQueue = yield this.channel.assertQueue(this.routingKey);
|
|
21
|
+
yield this.channel.bindQueue(consumeQueue.queue, this.exchangeName, this.routingKey);
|
|
22
|
+
this.channel.consume(consumeQueue.queue, (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
console.log(`Message received: ${this.exchangeName} / ${this.routingKey}`);
|
|
24
|
+
if (msg) {
|
|
25
|
+
const parsedData = JSON.parse(msg.content.toString());
|
|
26
|
+
this.onMessage(parsedData, msg);
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.BaseListener = BaseListener;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Channel } from 'amqplib';
|
|
2
|
+
import { ExchangeTypes } from '../types/subjects';
|
|
3
|
+
interface Event {
|
|
4
|
+
exchange: ExchangeTypes;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class BasePublisher<T extends Event> {
|
|
8
|
+
protected channel: Channel;
|
|
9
|
+
abstract exchangeName: T['exchange'];
|
|
10
|
+
abstract routingKey: string;
|
|
11
|
+
constructor(channel: Channel);
|
|
12
|
+
publish(data: T['data']): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BasePublisher = void 0;
|
|
13
|
+
class BasePublisher {
|
|
14
|
+
constructor(channel) {
|
|
15
|
+
this.channel = channel;
|
|
16
|
+
}
|
|
17
|
+
publish(data) {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
yield this.channel.assertExchange(this.exchangeName, 'direct');
|
|
20
|
+
this.channel.publish(this.exchangeName, this.routingKey, Buffer.from(data));
|
|
21
|
+
console.log(`Message published Exchange:${this.exchangeName} / RoutingKey: ${this.routingKey}`);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.BasePublisher = BasePublisher;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Channel } from
|
|
2
|
-
export declare class QueueConnection {
|
|
3
|
-
private readonly endPoint;
|
|
4
|
-
private connection;
|
|
5
|
-
private channel;
|
|
6
|
-
constructor(endPoint: string);
|
|
7
|
-
createConnection(): Promise<Channel | undefined>;
|
|
8
|
-
private closeConnection;
|
|
9
|
-
}
|
|
1
|
+
import { Channel } from 'amqplib';
|
|
2
|
+
export declare class QueueConnection {
|
|
3
|
+
private readonly endPoint;
|
|
4
|
+
private connection;
|
|
5
|
+
private channel;
|
|
6
|
+
constructor(endPoint: string);
|
|
7
|
+
createConnection(): Promise<Channel | undefined>;
|
|
8
|
+
private closeConnection;
|
|
9
|
+
}
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.QueueConnection = void 0;
|
|
16
|
-
const amqplib_1 = __importDefault(require("amqplib"));
|
|
17
|
-
class QueueConnection {
|
|
18
|
-
constructor(endPoint) {
|
|
19
|
-
this.endPoint = endPoint;
|
|
20
|
-
this.connection = undefined;
|
|
21
|
-
this.channel = undefined;
|
|
22
|
-
}
|
|
23
|
-
createConnection() {
|
|
24
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
try {
|
|
26
|
-
this.connection = yield amqplib_1.default.connect(this.endPoint);
|
|
27
|
-
this.channel = yield this.connection.createChannel();
|
|
28
|
-
this.closeConnection();
|
|
29
|
-
console.log('RabbitMQ server connected to queue successfully...');
|
|
30
|
-
return this.channel;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
console.log('RabbitMQ server error createConnection() method:', error);
|
|
34
|
-
process.exit(1);
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
closeConnection() {
|
|
40
|
-
process.once('SIGINT', () => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
var _a, _b;
|
|
42
|
-
if (this.connection) {
|
|
43
|
-
yield ((_a = this.connection) === null || _a === void 0 ? void 0 : _a.close());
|
|
44
|
-
}
|
|
45
|
-
if (this.channel) {
|
|
46
|
-
yield ((_b = this.channel) === null || _b === void 0 ? void 0 : _b.close());
|
|
47
|
-
}
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.QueueConnection = QueueConnection;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.QueueConnection = void 0;
|
|
16
|
+
const amqplib_1 = __importDefault(require("amqplib"));
|
|
17
|
+
class QueueConnection {
|
|
18
|
+
constructor(endPoint) {
|
|
19
|
+
this.endPoint = endPoint;
|
|
20
|
+
this.connection = undefined;
|
|
21
|
+
this.channel = undefined;
|
|
22
|
+
}
|
|
23
|
+
createConnection() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
try {
|
|
26
|
+
this.connection = yield amqplib_1.default.connect(this.endPoint);
|
|
27
|
+
this.channel = yield this.connection.createChannel();
|
|
28
|
+
this.closeConnection();
|
|
29
|
+
console.log('RabbitMQ server connected to queue successfully...');
|
|
30
|
+
return this.channel;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.log('RabbitMQ server error createConnection() method:', error);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
closeConnection() {
|
|
40
|
+
process.once('SIGINT', () => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
if (this.connection) {
|
|
43
|
+
yield ((_a = this.connection) === null || _a === void 0 ? void 0 : _a.close());
|
|
44
|
+
}
|
|
45
|
+
if (this.channel) {
|
|
46
|
+
yield ((_b = this.channel) === null || _b === void 0 ? void 0 : _b.close());
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.QueueConnection = QueueConnection;
|