@ajayjbtickets/common 1.0.10 → 1.0.12
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/dist/{index.mjs → index.cjs} +97 -32
- package/dist/index.js +31 -98
- package/package.json +21 -12
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- /package/dist/{index.d.mts → index.d.cts} +0 -0
|
@@ -1,3 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
AccessTokenError: () => AccessTokenError,
|
|
34
|
+
AccessTokenErrorResponse: () => AccessTokenErrorResponse,
|
|
35
|
+
ApiError: () => ApiError,
|
|
36
|
+
ApiResponse: () => ApiResponse,
|
|
37
|
+
AuthFailureError: () => AuthFailureError,
|
|
38
|
+
BadRequestError: () => BadRequestError,
|
|
39
|
+
BadRequestResponse: () => BadRequestResponse,
|
|
40
|
+
BadTokenError: () => BadTokenError,
|
|
41
|
+
BadTokenResponse: () => BadTokenResponse,
|
|
42
|
+
ENVIRONMENTS: () => ENVIRONMENTS,
|
|
43
|
+
ErrorType: () => ErrorType,
|
|
44
|
+
ForbiddenError: () => ForbiddenError,
|
|
45
|
+
ForbiddenResponse: () => ForbiddenResponse,
|
|
46
|
+
InternalError: () => InternalError,
|
|
47
|
+
InternalErrorResponse: () => InternalErrorResponse,
|
|
48
|
+
JwtService: () => JwtService,
|
|
49
|
+
NoDataError: () => NoDataError,
|
|
50
|
+
NoEntryError: () => NoEntryError,
|
|
51
|
+
NoFoundResponse: () => NoFoundResponse,
|
|
52
|
+
NotFoundError: () => NotFoundError,
|
|
53
|
+
Password: () => Password,
|
|
54
|
+
ResponseStatusCode: () => ResponseStatusCode,
|
|
55
|
+
StatusCode: () => StatusCode,
|
|
56
|
+
SuccessResponse: () => SuccessResponse,
|
|
57
|
+
TokenExpiredError: () => TokenExpiredError,
|
|
58
|
+
ValidationSource: () => ValidationSource,
|
|
59
|
+
asyncHandler: () => asyncHandler,
|
|
60
|
+
logger: () => logger,
|
|
61
|
+
schemaValidator: () => schemaValidator,
|
|
62
|
+
verifyToken: () => verifyToken
|
|
63
|
+
});
|
|
64
|
+
module.exports = __toCommonJS(index_exports);
|
|
65
|
+
|
|
1
66
|
// src/constants/environments.ts
|
|
2
67
|
var ENVIRONMENTS = {
|
|
3
68
|
production: "production",
|
|
@@ -139,7 +204,7 @@ var ForbiddenResponse = class extends ApiResponse {
|
|
|
139
204
|
};
|
|
140
205
|
|
|
141
206
|
// src/config/config.ts
|
|
142
|
-
|
|
207
|
+
var import_config = require("dotenv/config");
|
|
143
208
|
var getConfig = () => {
|
|
144
209
|
return {
|
|
145
210
|
ENVIRONMENT: process.env.ENVIRONMENT,
|
|
@@ -269,18 +334,18 @@ var ForbiddenError = class extends ApiError {
|
|
|
269
334
|
};
|
|
270
335
|
|
|
271
336
|
// src/core/Logger.ts
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
337
|
+
var import_winston = __toESM(require("winston"), 1);
|
|
338
|
+
var import_fs = __toESM(require("fs"), 1);
|
|
339
|
+
var import_path = __toESM(require("path"), 1);
|
|
340
|
+
var import_winston_daily_rotate_file = __toESM(require("winston-daily-rotate-file"), 1);
|
|
276
341
|
var dir = sanitizedConfig.LOG_DIR;
|
|
277
342
|
if (!dir) {
|
|
278
|
-
dir =
|
|
343
|
+
dir = import_path.default.resolve("logs");
|
|
279
344
|
}
|
|
280
|
-
if (!
|
|
281
|
-
|
|
345
|
+
if (!import_fs.default.existsSync(dir)) {
|
|
346
|
+
import_fs.default.mkdirSync(dir);
|
|
282
347
|
}
|
|
283
|
-
var logfileRotateTransport = new
|
|
348
|
+
var logfileRotateTransport = new import_winston_daily_rotate_file.default({
|
|
284
349
|
level: sanitizedConfig.LOG_LEVEL,
|
|
285
350
|
// @ts-ignore
|
|
286
351
|
filename: dir + "/%DATE%.log",
|
|
@@ -289,26 +354,26 @@ var logfileRotateTransport = new DailyRotateFile({
|
|
|
289
354
|
handleExceptions: true,
|
|
290
355
|
maxSize: "20m",
|
|
291
356
|
maxFiles: "14d",
|
|
292
|
-
format: format.combine(
|
|
293
|
-
format.errors({ stack: true }),
|
|
294
|
-
format.timestamp(),
|
|
295
|
-
format.json()
|
|
357
|
+
format: import_winston.format.combine(
|
|
358
|
+
import_winston.format.errors({ stack: true }),
|
|
359
|
+
import_winston.format.timestamp(),
|
|
360
|
+
import_winston.format.json()
|
|
296
361
|
)
|
|
297
362
|
});
|
|
298
|
-
var consoleTransport = new
|
|
363
|
+
var consoleTransport = new import_winston.default.transports.Console({
|
|
299
364
|
level: process.env.LOG_LEVEL,
|
|
300
|
-
format: format.combine(
|
|
301
|
-
format.colorize({ all: true }),
|
|
302
|
-
format.timestamp({
|
|
365
|
+
format: import_winston.format.combine(
|
|
366
|
+
import_winston.format.colorize({ all: true }),
|
|
367
|
+
import_winston.format.timestamp({
|
|
303
368
|
format: "YYYY-MM-DD hh:mm:ss.SSS A"
|
|
304
369
|
}),
|
|
305
|
-
format.align(),
|
|
306
|
-
format.printf(
|
|
370
|
+
import_winston.format.align(),
|
|
371
|
+
import_winston.format.printf(
|
|
307
372
|
(info) => `[${info.timestamp}] ${info.level}: ${info.message}`
|
|
308
373
|
)
|
|
309
374
|
)
|
|
310
375
|
});
|
|
311
|
-
var logger =
|
|
376
|
+
var logger = import_winston.default.createLogger({
|
|
312
377
|
transports: [consoleTransport, logfileRotateTransport],
|
|
313
378
|
exceptionHandlers: [logfileRotateTransport],
|
|
314
379
|
exitOnError: false
|
|
@@ -333,13 +398,13 @@ var schemaValidator = (type, schema) => {
|
|
|
333
398
|
};
|
|
334
399
|
|
|
335
400
|
// src/middlewares/verifyToken.ts
|
|
336
|
-
|
|
401
|
+
var import_jsonwebtoken2 = __toESM(require("jsonwebtoken"), 1);
|
|
337
402
|
|
|
338
403
|
// src/services/jwt.service.ts
|
|
339
|
-
|
|
404
|
+
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
|
|
340
405
|
var JwtService = class {
|
|
341
406
|
static sign(payload, signOptions = {}) {
|
|
342
|
-
const token =
|
|
407
|
+
const token = import_jsonwebtoken.default.sign(
|
|
343
408
|
payload,
|
|
344
409
|
sanitizedConfig.JWT_KEY,
|
|
345
410
|
signOptions
|
|
@@ -347,7 +412,7 @@ var JwtService = class {
|
|
|
347
412
|
return token;
|
|
348
413
|
}
|
|
349
414
|
static verify(token, verifyOptions) {
|
|
350
|
-
const decoded =
|
|
415
|
+
const decoded = import_jsonwebtoken.default.verify(
|
|
351
416
|
token,
|
|
352
417
|
sanitizedConfig.JWT_KEY,
|
|
353
418
|
verifyOptions
|
|
@@ -373,9 +438,9 @@ var verifyToken = async (req, res, next) => {
|
|
|
373
438
|
req.user = decoded;
|
|
374
439
|
next();
|
|
375
440
|
} catch (error) {
|
|
376
|
-
if (error instanceof
|
|
441
|
+
if (error instanceof import_jsonwebtoken2.default.TokenExpiredError) {
|
|
377
442
|
next(new TokenExpiredError());
|
|
378
|
-
} else if (error instanceof
|
|
443
|
+
} else if (error instanceof import_jsonwebtoken2.default.JsonWebTokenError) {
|
|
379
444
|
next(new BadTokenError());
|
|
380
445
|
} else {
|
|
381
446
|
next(new BadTokenError());
|
|
@@ -384,11 +449,11 @@ var verifyToken = async (req, res, next) => {
|
|
|
384
449
|
};
|
|
385
450
|
|
|
386
451
|
// src/services/password.service.ts
|
|
387
|
-
|
|
452
|
+
var import_bcrypt = __toESM(require("bcrypt"), 1);
|
|
388
453
|
var Password = class {
|
|
389
454
|
static hashPassword(password) {
|
|
390
455
|
return new Promise((resolve, reject) => {
|
|
391
|
-
|
|
456
|
+
import_bcrypt.default.hash(password, sanitizedConfig.SALT_ROUNDS, function(err, hash) {
|
|
392
457
|
if (err) {
|
|
393
458
|
reject(err.message);
|
|
394
459
|
}
|
|
@@ -398,7 +463,7 @@ var Password = class {
|
|
|
398
463
|
}
|
|
399
464
|
static comparePassword(password, hashedPassword) {
|
|
400
465
|
return new Promise((resolve, reject) => {
|
|
401
|
-
|
|
466
|
+
import_bcrypt.default.compare(password, hashedPassword, function(err, result) {
|
|
402
467
|
if (err) {
|
|
403
468
|
reject(err.message);
|
|
404
469
|
}
|
|
@@ -425,7 +490,8 @@ var asyncHandler = (execution) => async (req, res, next) => {
|
|
|
425
490
|
next(err);
|
|
426
491
|
}
|
|
427
492
|
};
|
|
428
|
-
export
|
|
493
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
494
|
+
0 && (module.exports = {
|
|
429
495
|
AccessTokenError,
|
|
430
496
|
AccessTokenErrorResponse,
|
|
431
497
|
ApiError,
|
|
@@ -456,5 +522,4 @@ export {
|
|
|
456
522
|
logger,
|
|
457
523
|
schemaValidator,
|
|
458
524
|
verifyToken
|
|
459
|
-
};
|
|
460
|
-
//# sourceMappingURL=index.mjs.map
|
|
525
|
+
});
|
package/dist/index.js
CHANGED
|
@@ -1,68 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/index.ts
|
|
31
|
-
var index_exports = {};
|
|
32
|
-
__export(index_exports, {
|
|
33
|
-
AccessTokenError: () => AccessTokenError,
|
|
34
|
-
AccessTokenErrorResponse: () => AccessTokenErrorResponse,
|
|
35
|
-
ApiError: () => ApiError,
|
|
36
|
-
ApiResponse: () => ApiResponse,
|
|
37
|
-
AuthFailureError: () => AuthFailureError,
|
|
38
|
-
BadRequestError: () => BadRequestError,
|
|
39
|
-
BadRequestResponse: () => BadRequestResponse,
|
|
40
|
-
BadTokenError: () => BadTokenError,
|
|
41
|
-
BadTokenResponse: () => BadTokenResponse,
|
|
42
|
-
ENVIRONMENTS: () => ENVIRONMENTS,
|
|
43
|
-
ErrorType: () => ErrorType,
|
|
44
|
-
ForbiddenError: () => ForbiddenError,
|
|
45
|
-
ForbiddenResponse: () => ForbiddenResponse,
|
|
46
|
-
InternalError: () => InternalError,
|
|
47
|
-
InternalErrorResponse: () => InternalErrorResponse,
|
|
48
|
-
JwtService: () => JwtService,
|
|
49
|
-
NoDataError: () => NoDataError,
|
|
50
|
-
NoEntryError: () => NoEntryError,
|
|
51
|
-
NoFoundResponse: () => NoFoundResponse,
|
|
52
|
-
NotFoundError: () => NotFoundError,
|
|
53
|
-
Password: () => Password,
|
|
54
|
-
ResponseStatusCode: () => ResponseStatusCode,
|
|
55
|
-
StatusCode: () => StatusCode,
|
|
56
|
-
SuccessResponse: () => SuccessResponse,
|
|
57
|
-
TokenExpiredError: () => TokenExpiredError,
|
|
58
|
-
ValidationSource: () => ValidationSource,
|
|
59
|
-
asyncHandler: () => asyncHandler,
|
|
60
|
-
logger: () => logger,
|
|
61
|
-
schemaValidator: () => schemaValidator,
|
|
62
|
-
verifyToken: () => verifyToken
|
|
63
|
-
});
|
|
64
|
-
module.exports = __toCommonJS(index_exports);
|
|
65
|
-
|
|
66
1
|
// src/constants/environments.ts
|
|
67
2
|
var ENVIRONMENTS = {
|
|
68
3
|
production: "production",
|
|
@@ -204,7 +139,7 @@ var ForbiddenResponse = class extends ApiResponse {
|
|
|
204
139
|
};
|
|
205
140
|
|
|
206
141
|
// src/config/config.ts
|
|
207
|
-
|
|
142
|
+
import "dotenv/config";
|
|
208
143
|
var getConfig = () => {
|
|
209
144
|
return {
|
|
210
145
|
ENVIRONMENT: process.env.ENVIRONMENT,
|
|
@@ -334,18 +269,18 @@ var ForbiddenError = class extends ApiError {
|
|
|
334
269
|
};
|
|
335
270
|
|
|
336
271
|
// src/core/Logger.ts
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
272
|
+
import winston, { format } from "winston";
|
|
273
|
+
import fs from "fs";
|
|
274
|
+
import path from "path";
|
|
275
|
+
import DailyRotateFile from "winston-daily-rotate-file";
|
|
341
276
|
var dir = sanitizedConfig.LOG_DIR;
|
|
342
277
|
if (!dir) {
|
|
343
|
-
dir =
|
|
278
|
+
dir = path.resolve("logs");
|
|
344
279
|
}
|
|
345
|
-
if (!
|
|
346
|
-
|
|
280
|
+
if (!fs.existsSync(dir)) {
|
|
281
|
+
fs.mkdirSync(dir);
|
|
347
282
|
}
|
|
348
|
-
var logfileRotateTransport = new
|
|
283
|
+
var logfileRotateTransport = new DailyRotateFile({
|
|
349
284
|
level: sanitizedConfig.LOG_LEVEL,
|
|
350
285
|
// @ts-ignore
|
|
351
286
|
filename: dir + "/%DATE%.log",
|
|
@@ -354,26 +289,26 @@ var logfileRotateTransport = new import_winston_daily_rotate_file.default({
|
|
|
354
289
|
handleExceptions: true,
|
|
355
290
|
maxSize: "20m",
|
|
356
291
|
maxFiles: "14d",
|
|
357
|
-
format:
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
292
|
+
format: format.combine(
|
|
293
|
+
format.errors({ stack: true }),
|
|
294
|
+
format.timestamp(),
|
|
295
|
+
format.json()
|
|
361
296
|
)
|
|
362
297
|
});
|
|
363
|
-
var consoleTransport = new
|
|
298
|
+
var consoleTransport = new winston.transports.Console({
|
|
364
299
|
level: process.env.LOG_LEVEL,
|
|
365
|
-
format:
|
|
366
|
-
|
|
367
|
-
|
|
300
|
+
format: format.combine(
|
|
301
|
+
format.colorize({ all: true }),
|
|
302
|
+
format.timestamp({
|
|
368
303
|
format: "YYYY-MM-DD hh:mm:ss.SSS A"
|
|
369
304
|
}),
|
|
370
|
-
|
|
371
|
-
|
|
305
|
+
format.align(),
|
|
306
|
+
format.printf(
|
|
372
307
|
(info) => `[${info.timestamp}] ${info.level}: ${info.message}`
|
|
373
308
|
)
|
|
374
309
|
)
|
|
375
310
|
});
|
|
376
|
-
var logger =
|
|
311
|
+
var logger = winston.createLogger({
|
|
377
312
|
transports: [consoleTransport, logfileRotateTransport],
|
|
378
313
|
exceptionHandlers: [logfileRotateTransport],
|
|
379
314
|
exitOnError: false
|
|
@@ -398,13 +333,13 @@ var schemaValidator = (type, schema) => {
|
|
|
398
333
|
};
|
|
399
334
|
|
|
400
335
|
// src/middlewares/verifyToken.ts
|
|
401
|
-
|
|
336
|
+
import jsonwebtoken2 from "jsonwebtoken";
|
|
402
337
|
|
|
403
338
|
// src/services/jwt.service.ts
|
|
404
|
-
|
|
339
|
+
import jsonwebtoken from "jsonwebtoken";
|
|
405
340
|
var JwtService = class {
|
|
406
341
|
static sign(payload, signOptions = {}) {
|
|
407
|
-
const token =
|
|
342
|
+
const token = jsonwebtoken.sign(
|
|
408
343
|
payload,
|
|
409
344
|
sanitizedConfig.JWT_KEY,
|
|
410
345
|
signOptions
|
|
@@ -412,7 +347,7 @@ var JwtService = class {
|
|
|
412
347
|
return token;
|
|
413
348
|
}
|
|
414
349
|
static verify(token, verifyOptions) {
|
|
415
|
-
const decoded =
|
|
350
|
+
const decoded = jsonwebtoken.verify(
|
|
416
351
|
token,
|
|
417
352
|
sanitizedConfig.JWT_KEY,
|
|
418
353
|
verifyOptions
|
|
@@ -438,9 +373,9 @@ var verifyToken = async (req, res, next) => {
|
|
|
438
373
|
req.user = decoded;
|
|
439
374
|
next();
|
|
440
375
|
} catch (error) {
|
|
441
|
-
if (error instanceof
|
|
376
|
+
if (error instanceof jsonwebtoken2.TokenExpiredError) {
|
|
442
377
|
next(new TokenExpiredError());
|
|
443
|
-
} else if (error instanceof
|
|
378
|
+
} else if (error instanceof jsonwebtoken2.JsonWebTokenError) {
|
|
444
379
|
next(new BadTokenError());
|
|
445
380
|
} else {
|
|
446
381
|
next(new BadTokenError());
|
|
@@ -449,11 +384,11 @@ var verifyToken = async (req, res, next) => {
|
|
|
449
384
|
};
|
|
450
385
|
|
|
451
386
|
// src/services/password.service.ts
|
|
452
|
-
|
|
387
|
+
import bcrypt from "bcrypt";
|
|
453
388
|
var Password = class {
|
|
454
389
|
static hashPassword(password) {
|
|
455
390
|
return new Promise((resolve, reject) => {
|
|
456
|
-
|
|
391
|
+
bcrypt.hash(password, sanitizedConfig.SALT_ROUNDS, function(err, hash) {
|
|
457
392
|
if (err) {
|
|
458
393
|
reject(err.message);
|
|
459
394
|
}
|
|
@@ -463,7 +398,7 @@ var Password = class {
|
|
|
463
398
|
}
|
|
464
399
|
static comparePassword(password, hashedPassword) {
|
|
465
400
|
return new Promise((resolve, reject) => {
|
|
466
|
-
|
|
401
|
+
bcrypt.compare(password, hashedPassword, function(err, result) {
|
|
467
402
|
if (err) {
|
|
468
403
|
reject(err.message);
|
|
469
404
|
}
|
|
@@ -490,8 +425,7 @@ var asyncHandler = (execution) => async (req, res, next) => {
|
|
|
490
425
|
next(err);
|
|
491
426
|
}
|
|
492
427
|
};
|
|
493
|
-
|
|
494
|
-
0 && (module.exports = {
|
|
428
|
+
export {
|
|
495
429
|
AccessTokenError,
|
|
496
430
|
AccessTokenErrorResponse,
|
|
497
431
|
ApiError,
|
|
@@ -522,5 +456,4 @@ var asyncHandler = (execution) => async (req, res, next) => {
|
|
|
522
456
|
logger,
|
|
523
457
|
schemaValidator,
|
|
524
458
|
verifyToken
|
|
525
|
-
}
|
|
526
|
-
//# sourceMappingURL=index.js.map
|
|
459
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ajayjbtickets/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"description": "",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "./dist/index.cjs",
|
|
6
7
|
"module": "./dist/index.js",
|
|
7
8
|
"types": "./dist/index.d.ts",
|
|
@@ -10,11 +11,18 @@
|
|
|
10
11
|
],
|
|
11
12
|
"exports": {
|
|
12
13
|
".": {
|
|
13
|
-
"import":
|
|
14
|
-
|
|
14
|
+
"import": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"require": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"default": "./dist/index.cjs"
|
|
21
|
+
}
|
|
15
22
|
}
|
|
16
23
|
},
|
|
17
24
|
"scripts": {
|
|
25
|
+
"dev": "tsx ./src/index.ts",
|
|
18
26
|
"clean": "del ./dist/*",
|
|
19
27
|
"build": "npm run clean && tsup",
|
|
20
28
|
"pub": "git add . && git commit -m \"updates\" && npm version patch && npm run build && npm publish"
|
|
@@ -22,15 +30,6 @@
|
|
|
22
30
|
"keywords": [],
|
|
23
31
|
"author": "",
|
|
24
32
|
"license": "ISC",
|
|
25
|
-
"devDependencies": {
|
|
26
|
-
"@types/bcrypt": "^5.0.2",
|
|
27
|
-
"@types/cookie-session": "^2.0.49",
|
|
28
|
-
"@types/express": "^5.0.1",
|
|
29
|
-
"@types/jsonwebtoken": "^9.0.9",
|
|
30
|
-
"del-cli": "^6.0.0",
|
|
31
|
-
"tsup": "^8.4.0",
|
|
32
|
-
"typescript": "^5.8.3"
|
|
33
|
-
},
|
|
34
33
|
"dependencies": {
|
|
35
34
|
"bcrypt": "^5.1.1",
|
|
36
35
|
"cookie-session": "^2.1.0",
|
|
@@ -40,5 +39,15 @@
|
|
|
40
39
|
"winston": "^3.17.0",
|
|
41
40
|
"winston-daily-rotate-file": "^5.0.0",
|
|
42
41
|
"zod": "^3.24.4"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/bcrypt": "^5.0.2",
|
|
45
|
+
"@types/cookie-session": "^2.0.49",
|
|
46
|
+
"@types/express": "^5.0.1",
|
|
47
|
+
"@types/jsonwebtoken": "^9.0.9",
|
|
48
|
+
"del-cli": "^6.0.0",
|
|
49
|
+
"tsup": "^8.4.0",
|
|
50
|
+
"tsx": "^4.19.4",
|
|
51
|
+
"typescript": "^5.8.3"
|
|
43
52
|
}
|
|
44
53
|
}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/constants/environments.ts","../src/core/ApiResponse.ts","../src/config/config.ts","../src/core/ApiError.ts","../src/core/Logger.ts","../src/middlewares/schemaValidator.ts","../src/middlewares/verifyToken.ts","../src/services/jwt.service.ts","../src/services/password.service.ts","../src/types/validation.ts","../src/utils/asyncHandler.ts"],"sourcesContent":["export * from \"./constants/environments\"\nexport * from \"./core/ApiError\"\nexport * from \"./core/ApiResponse\"\nexport * from \"./core/Logger\"\nexport * from \"./middlewares/schemaValidator\"\nexport * from \"./middlewares/verifyToken\"\nexport * from \"./services/jwt.service\"\nexport * from \"./services/password.service\"\nexport * from \"./types/validation\"\nexport * from \"./utils/asyncHandler\"\n","export const ENVIRONMENTS = {\n production: \"production\",\n development: \"development\",\n testing: \"testing\",\n};\n","import { Response } from \"express\";\nimport { ErrorDetailType } from \"@/core/ApiError\";\n\nexport enum StatusCode {\n SUCCESS = \"10000\",\n FAILURE = \"10001\",\n RETRY = \"10002\",\n IN_VALID_ACCESS_TOKEN = \"10003\",\n}\n\nexport enum ResponseStatusCode {\n SUCCESS = 200,\n CREATED = 201,\n ACCEPTED = 202,\n NO_CONTENT = 204,\n\n MOVED_PERMANENTLY = 301,\n FOUND = 302,\n NOT_MODIFIED = 304,\n TEMPORARY_REDIRECT = 307,\n PERMANENT_REDIRECT = 308,\n\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n PAYMENT_REQUIRED = 402,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n NOT_ACCEPTABLE = 406,\n CONFLICT = 409,\n GONE = 410,\n PAYLOAD_TOO_LARGE = 413,\n UNSUPPORTED_MEDIA_TYPE = 415,\n UNPROCESSABLE_ENTITY = 422,\n TOO_MANY_REQUESTS = 429,\n\n INTERNAL_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n}\n\nexport abstract class ApiResponse {\n public message: string;\n public statusCode: string | undefined;\n public status: number;\n\n constructor(status: number, message: string, statusCode?: string) {\n this.message = message;\n this.status = status;\n if (statusCode) {\n this.statusCode = statusCode;\n }\n }\n\n public prepare<T extends ApiResponse>(\n res: Response,\n response: T,\n headers: { [key: string]: string } = {}\n ) {\n for (const [key, value] of Object.entries(headers)) {\n res.append(key, value);\n }\n res.status(this.status).send(this.sanitize(response));\n }\n\n public send(res: Response, headers: { [key: string]: string } = {}) {\n this.prepare<ApiResponse>(res, this, headers);\n }\n\n private sanitize<T extends ApiResponse>(response: T) {\n const clone = {} as T;\n Object.assign(clone, response);\n\n delete clone[\"statusCode\"];\n\n for (const key in clone) {\n const typedKey = key as keyof T;\n if (clone[typedKey] === undefined) {\n delete clone[typedKey];\n }\n }\n return clone;\n }\n}\n\nexport class SuccessResponse<T> extends ApiResponse {\n constructor(\n responseStatusCode:\n | ResponseStatusCode.SUCCESS\n | ResponseStatusCode.CREATED\n | ResponseStatusCode.ACCEPTED\n | ResponseStatusCode.NO_CONTENT,\n message: string,\n public data: T\n ) {\n super(responseStatusCode, message, StatusCode.SUCCESS);\n this.data = data;\n }\n\n send(res: Response) {\n this.prepare<SuccessResponse<T>>(res, this, {});\n }\n}\n\nexport class AccessTokenErrorResponse extends ApiResponse {\n protected instruction: string = \"refresh_token\";\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(\n ResponseStatusCode.UNAUTHORIZED,\n message,\n StatusCode.IN_VALID_ACCESS_TOKEN\n );\n this.errors = errors || [];\n }\n\n send(res: Response, headers: { [key: string]: string } = {}) {\n headers.instruction = this.instruction;\n this.prepare<AccessTokenErrorResponse>(res, this, headers);\n }\n}\n\nexport class BadTokenResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.UNAUTHORIZED, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class BadRequestResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.BAD_REQUEST, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class InternalErrorResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.INTERNAL_ERROR, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class NoFoundResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.NOT_FOUND, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class ForbiddenResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.FORBIDDEN, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n","import \"dotenv/config\";\n\ninterface Env {\n ENVIRONMENT: string;\n LOG_DIR: string;\n LOG_LEVEL: string;\n SALT_ROUNDS: number;\n JWT_KEY: string;\n}\n\nconst getConfig = (): Env => {\n return {\n ENVIRONMENT: process.env.ENVIRONMENT,\n LOG_DIR: process.env.LOG_DIR,\n LOG_LEVEL: process.env.LOG_LEVEL,\n SALT_ROUNDS: parseInt(process.env.SALT_ROUNDS),\n JWT_KEY: process.env.JWT_KEY,\n };\n};\n\nconst getSanitizedConfig = (config: Env): Env => {\n for (const [key, value] of Object.entries(config)) {\n if (!value) {\n throw new Error(`Missing key ${key} in config.env`);\n }\n }\n\n return config;\n};\n\nconst config = getConfig();\nexport const sanitizedConfig = getSanitizedConfig(config);\n","import { Response } from \"express\";\n\nimport {\n AccessTokenErrorResponse,\n BadRequestResponse,\n BadTokenResponse,\n ForbiddenResponse,\n InternalErrorResponse,\n NoFoundResponse,\n} from \"@/core/ApiResponse\";\nimport { sanitizedConfig } from \"@/config/config\";\nimport { ENVIRONMENTS } from \"@/constants/environments\";\n\nexport enum ErrorType {\n BAD_TOKEN = \"BadTokenError\",\n TOKEN_EXPIRED = \"TokenExpiredError\",\n UNAUTHORIZED = \"AuthFailureError\",\n ACCESS_TOKEN = \"AccessTokenError\",\n INTERNAL = \"InternalError\",\n NOT_FOUND = \"NotFoundError\",\n NO_ENTRY = \"NoEntryError\",\n NO_DATA = \"NoDataError\",\n BAD_REQUEST = \"BadRequestError\",\n FORBIDDEN = \"ForbiddenError\",\n}\n\nexport type ErrorDetailType = {\n field: string | number;\n message?: (string | number)[];\n};\n\nexport abstract class ApiError extends Error {\n constructor(\n public type: ErrorType,\n public message: string = \"Error\",\n public errors: ErrorDetailType[]\n ) {\n super(type);\n this.type = type;\n this.message = message;\n this.errors = errors;\n }\n\n public static handle(err: ApiError, res: Response) {\n switch (err.type) {\n case ErrorType.BAD_TOKEN:\n case ErrorType.TOKEN_EXPIRED:\n case ErrorType.UNAUTHORIZED:\n new BadTokenResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.ACCESS_TOKEN:\n new AccessTokenErrorResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.INTERNAL:\n new InternalErrorResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.NOT_FOUND:\n case ErrorType.NO_ENTRY:\n case ErrorType.NO_DATA:\n new NoFoundResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.BAD_REQUEST:\n new BadRequestResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.FORBIDDEN:\n new ForbiddenResponse(err.message, err.errors).send(res);\n break;\n default:\n let messsage = err.message;\n messsage =\n sanitizedConfig.ENVIRONMENT !== ENVIRONMENTS.production\n ? messsage\n : \"Something went wrong!\";\n new InternalErrorResponse(messsage, err.errors).send(res);\n break;\n }\n }\n}\n\nexport class BadTokenError extends ApiError {\n constructor(\n message: string = \"Invalid token\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.BAD_TOKEN, message, errors);\n }\n}\n\nexport class TokenExpiredError extends ApiError {\n constructor(\n message: string = \"Token expired\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.TOKEN_EXPIRED, message, errors);\n }\n}\n\nexport class AuthFailureError extends ApiError {\n constructor(\n message: string = \"Invalid Credentials\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.UNAUTHORIZED, message, errors);\n }\n}\n\nexport class AccessTokenError extends ApiError {\n constructor(\n message: string = \"Invalid access token\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.ACCESS_TOKEN, message, errors);\n }\n}\nexport class InternalError extends ApiError {\n constructor(\n message: string = \"Internal error\",\n errors: ErrorDetailType[] = []\n ) {\n message =\n sanitizedConfig.ENVIRONMENT !== ENVIRONMENTS.production\n ? message\n : \"Something went wrong!\";\n super(ErrorType.INTERNAL, message, errors);\n }\n}\n\nexport class NotFoundError extends ApiError {\n constructor(message: string = \"Not found\", errors: ErrorDetailType[] = []) {\n super(ErrorType.NOT_FOUND, message, errors);\n }\n}\n\nexport class NoEntryError extends ApiError {\n constructor(\n message: string = \"Entry don't exists\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.NO_ENTRY, message, errors);\n }\n}\n\nexport class NoDataError extends ApiError {\n constructor(message: string = \"No data\", errors: ErrorDetailType[] = []) {\n super(ErrorType.NO_DATA, message, errors);\n }\n}\n\nexport class BadRequestError extends ApiError {\n constructor(message: string = \"Bad request\", errors: ErrorDetailType[] = []) {\n super(ErrorType.BAD_REQUEST, message, errors);\n }\n}\n\nexport class ForbiddenError extends ApiError {\n constructor(\n message: string = \"Permission denied\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.FORBIDDEN, message, errors);\n }\n}\n","import winston, { format } from \"winston\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport DailyRotateFile from \"winston-daily-rotate-file\";\nimport { sanitizedConfig } from \"@/config/config\";\n\nlet dir = sanitizedConfig.LOG_DIR;\nif (!dir) {\n dir = path.resolve(\"logs\");\n}\n\nif (!fs.existsSync(dir)) {\n fs.mkdirSync(dir);\n}\n\nconst logfileRotateTransport = new DailyRotateFile({\n level: sanitizedConfig.LOG_LEVEL,\n // @ts-ignore\n filename: dir + \"/%DATE%.log\",\n datePattern: \"YYYY-MM-DD\",\n zippedArchive: true,\n handleExceptions: true,\n maxSize: \"20m\",\n maxFiles: \"14d\",\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.json()\n ),\n});\n\nconst consoleTransport = new winston.transports.Console({\n level: process.env.LOG_LEVEL,\n format: format.combine(\n format.colorize({ all: true }),\n format.timestamp({\n format: \"YYYY-MM-DD hh:mm:ss.SSS A\",\n }),\n format.align(),\n format.printf(\n (info) => `[${info.timestamp}] ${info.level}: ${info.message}`\n )\n ),\n});\n\nexport const logger = winston.createLogger({\n transports: [consoleTransport, logfileRotateTransport],\n exceptionHandlers: [logfileRotateTransport],\n exitOnError: false,\n});\n","import { Request, Response, NextFunction } from \"express\";\nimport { ZodSchema } from \"zod\";\n\nimport { BadRequestError } from \"@/core/ApiError\";\nimport { ValidationSource } from \"@/types/validation\";\n\nexport const schemaValidator = (type: ValidationSource, schema: ZodSchema) => {\n return (req: Request, res: Response, next: NextFunction) => {\n const result = schema.safeParse(req[type]);\n\n if (!result.success) {\n const errors = Object.entries(result.error.flatten().fieldErrors).map(\n ([key, value]) => ({\n field: key,\n message: value,\n })\n );\n next(new BadRequestError(\"Bad request\", errors));\n } else {\n next();\n }\n };\n};\n\n","import jsonwebtoken from \"jsonwebtoken\";\nimport { Request, Response, NextFunction } from \"express\";\n\nimport { BadTokenError, TokenExpiredError } from \"@/core/ApiError\";\nimport { JwtPayload, JwtService } from \"@/services/jwt.service\";\n\nexport const verifyToken = async (\n req: Request,\n res: Response,\n next: NextFunction\n) => {\n try {\n const { token } = req?.session;\n if (!token) {\n next(new BadTokenError(\"Authentication token is missing\"));\n }\n\n const decoded = JwtService.verify(token) as JwtPayload;\n\n req.user = decoded;\n next();\n } catch (error) {\n if (error instanceof jsonwebtoken.TokenExpiredError) {\n next(new TokenExpiredError());\n } else if (error instanceof jsonwebtoken.JsonWebTokenError) {\n next(new BadTokenError());\n } else {\n next(new BadTokenError());\n }\n }\n};\n","import { sanitizedConfig } from \"@/config/config\";\nimport jsonwebtoken, { SignOptions, VerifyOptions } from \"jsonwebtoken\";\n\nexport interface JwtPayload {\n _id: string;\n email: string;\n}\n\nexport class JwtService {\n static sign(\n payload: string | Buffer | object,\n signOptions: SignOptions = {}\n ): string {\n const token = jsonwebtoken.sign(\n payload,\n sanitizedConfig.JWT_KEY,\n signOptions\n );\n return token;\n }\n\n static verify(token: string, verifyOptions?: VerifyOptions) {\n const decoded = jsonwebtoken.verify(\n token,\n sanitizedConfig.JWT_KEY,\n verifyOptions\n );\n return decoded;\n }\n\n static generatePayload<T extends JwtPayload>(user: T): T {\n return {\n _id: user._id.toString(),\n email: user.email,\n } as T;\n }\n}\n","import { sanitizedConfig } from \"@/config/config\";\nimport bcrypt from \"bcrypt\";\n\nexport class Password {\n static hashPassword(password: string): Promise<string> {\n return new Promise((resolve, reject) => {\n bcrypt.hash(password, sanitizedConfig.SALT_ROUNDS, function (err, hash) {\n if (err) {\n reject(err.message);\n }\n resolve(hash);\n });\n });\n }\n\n static comparePassword(\n password: string,\n hashedPassword: string\n ): Promise<string | boolean> {\n return new Promise((resolve, reject) => {\n bcrypt.compare(password, hashedPassword, function (err, result) {\n if (err) {\n reject(err.message);\n }\n resolve(result);\n });\n });\n }\n}\n\n","export enum ValidationSource {\n BODY = 'body',\n HEADER = 'headers',\n QUERY = 'query',\n PARAM = 'params',\n }","import { Request, Response, NextFunction } from \"express\";\n\ntype AsyncFunction = (\n req: Request,\n res: Response,\n next: NextFunction\n) => Promise<any>;\n\nexport const asyncHandler =\n (execution: AsyncFunction) =>\n async (req: Request, res: Response, next: NextFunction) => {\n try {\n await execution(req, res, next);\n } catch (err) {\n next(err);\n }\n };\n"],"mappings":"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","names":["StatusCode","ResponseStatusCode","config","ErrorType","path","fs","DailyRotateFile","winston","import_jsonwebtoken","jsonwebtoken","jsonwebtoken","bcrypt","ValidationSource"]}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants/environments.ts","../src/core/ApiResponse.ts","../src/config/config.ts","../src/core/ApiError.ts","../src/core/Logger.ts","../src/middlewares/schemaValidator.ts","../src/middlewares/verifyToken.ts","../src/services/jwt.service.ts","../src/services/password.service.ts","../src/types/validation.ts","../src/utils/asyncHandler.ts"],"sourcesContent":["export const ENVIRONMENTS = {\n production: \"production\",\n development: \"development\",\n testing: \"testing\",\n};\n","import { Response } from \"express\";\nimport { ErrorDetailType } from \"@/core/ApiError\";\n\nexport enum StatusCode {\n SUCCESS = \"10000\",\n FAILURE = \"10001\",\n RETRY = \"10002\",\n IN_VALID_ACCESS_TOKEN = \"10003\",\n}\n\nexport enum ResponseStatusCode {\n SUCCESS = 200,\n CREATED = 201,\n ACCEPTED = 202,\n NO_CONTENT = 204,\n\n MOVED_PERMANENTLY = 301,\n FOUND = 302,\n NOT_MODIFIED = 304,\n TEMPORARY_REDIRECT = 307,\n PERMANENT_REDIRECT = 308,\n\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n PAYMENT_REQUIRED = 402,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n NOT_ACCEPTABLE = 406,\n CONFLICT = 409,\n GONE = 410,\n PAYLOAD_TOO_LARGE = 413,\n UNSUPPORTED_MEDIA_TYPE = 415,\n UNPROCESSABLE_ENTITY = 422,\n TOO_MANY_REQUESTS = 429,\n\n INTERNAL_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n}\n\nexport abstract class ApiResponse {\n public message: string;\n public statusCode: string | undefined;\n public status: number;\n\n constructor(status: number, message: string, statusCode?: string) {\n this.message = message;\n this.status = status;\n if (statusCode) {\n this.statusCode = statusCode;\n }\n }\n\n public prepare<T extends ApiResponse>(\n res: Response,\n response: T,\n headers: { [key: string]: string } = {}\n ) {\n for (const [key, value] of Object.entries(headers)) {\n res.append(key, value);\n }\n res.status(this.status).send(this.sanitize(response));\n }\n\n public send(res: Response, headers: { [key: string]: string } = {}) {\n this.prepare<ApiResponse>(res, this, headers);\n }\n\n private sanitize<T extends ApiResponse>(response: T) {\n const clone = {} as T;\n Object.assign(clone, response);\n\n delete clone[\"statusCode\"];\n\n for (const key in clone) {\n const typedKey = key as keyof T;\n if (clone[typedKey] === undefined) {\n delete clone[typedKey];\n }\n }\n return clone;\n }\n}\n\nexport class SuccessResponse<T> extends ApiResponse {\n constructor(\n responseStatusCode:\n | ResponseStatusCode.SUCCESS\n | ResponseStatusCode.CREATED\n | ResponseStatusCode.ACCEPTED\n | ResponseStatusCode.NO_CONTENT,\n message: string,\n public data: T\n ) {\n super(responseStatusCode, message, StatusCode.SUCCESS);\n this.data = data;\n }\n\n send(res: Response) {\n this.prepare<SuccessResponse<T>>(res, this, {});\n }\n}\n\nexport class AccessTokenErrorResponse extends ApiResponse {\n protected instruction: string = \"refresh_token\";\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(\n ResponseStatusCode.UNAUTHORIZED,\n message,\n StatusCode.IN_VALID_ACCESS_TOKEN\n );\n this.errors = errors || [];\n }\n\n send(res: Response, headers: { [key: string]: string } = {}) {\n headers.instruction = this.instruction;\n this.prepare<AccessTokenErrorResponse>(res, this, headers);\n }\n}\n\nexport class BadTokenResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.UNAUTHORIZED, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class BadRequestResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.BAD_REQUEST, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class InternalErrorResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.INTERNAL_ERROR, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class NoFoundResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.NOT_FOUND, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n\nexport class ForbiddenResponse extends ApiResponse {\n public errors: ErrorDetailType[];\n\n constructor(message: string, errors: ErrorDetailType[]) {\n super(ResponseStatusCode.FORBIDDEN, message, StatusCode.FAILURE);\n this.errors = errors || [];\n }\n}\n","import \"dotenv/config\";\n\ninterface Env {\n ENVIRONMENT: string;\n LOG_DIR: string;\n LOG_LEVEL: string;\n SALT_ROUNDS: number;\n JWT_KEY: string;\n}\n\nconst getConfig = (): Env => {\n return {\n ENVIRONMENT: process.env.ENVIRONMENT,\n LOG_DIR: process.env.LOG_DIR,\n LOG_LEVEL: process.env.LOG_LEVEL,\n SALT_ROUNDS: parseInt(process.env.SALT_ROUNDS),\n JWT_KEY: process.env.JWT_KEY,\n };\n};\n\nconst getSanitizedConfig = (config: Env): Env => {\n for (const [key, value] of Object.entries(config)) {\n if (!value) {\n throw new Error(`Missing key ${key} in config.env`);\n }\n }\n\n return config;\n};\n\nconst config = getConfig();\nexport const sanitizedConfig = getSanitizedConfig(config);\n","import { Response } from \"express\";\n\nimport {\n AccessTokenErrorResponse,\n BadRequestResponse,\n BadTokenResponse,\n ForbiddenResponse,\n InternalErrorResponse,\n NoFoundResponse,\n} from \"@/core/ApiResponse\";\nimport { sanitizedConfig } from \"@/config/config\";\nimport { ENVIRONMENTS } from \"@/constants/environments\";\n\nexport enum ErrorType {\n BAD_TOKEN = \"BadTokenError\",\n TOKEN_EXPIRED = \"TokenExpiredError\",\n UNAUTHORIZED = \"AuthFailureError\",\n ACCESS_TOKEN = \"AccessTokenError\",\n INTERNAL = \"InternalError\",\n NOT_FOUND = \"NotFoundError\",\n NO_ENTRY = \"NoEntryError\",\n NO_DATA = \"NoDataError\",\n BAD_REQUEST = \"BadRequestError\",\n FORBIDDEN = \"ForbiddenError\",\n}\n\nexport type ErrorDetailType = {\n field: string | number;\n message?: (string | number)[];\n};\n\nexport abstract class ApiError extends Error {\n constructor(\n public type: ErrorType,\n public message: string = \"Error\",\n public errors: ErrorDetailType[]\n ) {\n super(type);\n this.type = type;\n this.message = message;\n this.errors = errors;\n }\n\n public static handle(err: ApiError, res: Response) {\n switch (err.type) {\n case ErrorType.BAD_TOKEN:\n case ErrorType.TOKEN_EXPIRED:\n case ErrorType.UNAUTHORIZED:\n new BadTokenResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.ACCESS_TOKEN:\n new AccessTokenErrorResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.INTERNAL:\n new InternalErrorResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.NOT_FOUND:\n case ErrorType.NO_ENTRY:\n case ErrorType.NO_DATA:\n new NoFoundResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.BAD_REQUEST:\n new BadRequestResponse(err.message, err.errors).send(res);\n break;\n case ErrorType.FORBIDDEN:\n new ForbiddenResponse(err.message, err.errors).send(res);\n break;\n default:\n let messsage = err.message;\n messsage =\n sanitizedConfig.ENVIRONMENT !== ENVIRONMENTS.production\n ? messsage\n : \"Something went wrong!\";\n new InternalErrorResponse(messsage, err.errors).send(res);\n break;\n }\n }\n}\n\nexport class BadTokenError extends ApiError {\n constructor(\n message: string = \"Invalid token\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.BAD_TOKEN, message, errors);\n }\n}\n\nexport class TokenExpiredError extends ApiError {\n constructor(\n message: string = \"Token expired\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.TOKEN_EXPIRED, message, errors);\n }\n}\n\nexport class AuthFailureError extends ApiError {\n constructor(\n message: string = \"Invalid Credentials\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.UNAUTHORIZED, message, errors);\n }\n}\n\nexport class AccessTokenError extends ApiError {\n constructor(\n message: string = \"Invalid access token\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.ACCESS_TOKEN, message, errors);\n }\n}\nexport class InternalError extends ApiError {\n constructor(\n message: string = \"Internal error\",\n errors: ErrorDetailType[] = []\n ) {\n message =\n sanitizedConfig.ENVIRONMENT !== ENVIRONMENTS.production\n ? message\n : \"Something went wrong!\";\n super(ErrorType.INTERNAL, message, errors);\n }\n}\n\nexport class NotFoundError extends ApiError {\n constructor(message: string = \"Not found\", errors: ErrorDetailType[] = []) {\n super(ErrorType.NOT_FOUND, message, errors);\n }\n}\n\nexport class NoEntryError extends ApiError {\n constructor(\n message: string = \"Entry don't exists\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.NO_ENTRY, message, errors);\n }\n}\n\nexport class NoDataError extends ApiError {\n constructor(message: string = \"No data\", errors: ErrorDetailType[] = []) {\n super(ErrorType.NO_DATA, message, errors);\n }\n}\n\nexport class BadRequestError extends ApiError {\n constructor(message: string = \"Bad request\", errors: ErrorDetailType[] = []) {\n super(ErrorType.BAD_REQUEST, message, errors);\n }\n}\n\nexport class ForbiddenError extends ApiError {\n constructor(\n message: string = \"Permission denied\",\n errors: ErrorDetailType[] = []\n ) {\n super(ErrorType.FORBIDDEN, message, errors);\n }\n}\n","import winston, { format } from \"winston\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport DailyRotateFile from \"winston-daily-rotate-file\";\nimport { sanitizedConfig } from \"@/config/config\";\n\nlet dir = sanitizedConfig.LOG_DIR;\nif (!dir) {\n dir = path.resolve(\"logs\");\n}\n\nif (!fs.existsSync(dir)) {\n fs.mkdirSync(dir);\n}\n\nconst logfileRotateTransport = new DailyRotateFile({\n level: sanitizedConfig.LOG_LEVEL,\n // @ts-ignore\n filename: dir + \"/%DATE%.log\",\n datePattern: \"YYYY-MM-DD\",\n zippedArchive: true,\n handleExceptions: true,\n maxSize: \"20m\",\n maxFiles: \"14d\",\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.json()\n ),\n});\n\nconst consoleTransport = new winston.transports.Console({\n level: process.env.LOG_LEVEL,\n format: format.combine(\n format.colorize({ all: true }),\n format.timestamp({\n format: \"YYYY-MM-DD hh:mm:ss.SSS A\",\n }),\n format.align(),\n format.printf(\n (info) => `[${info.timestamp}] ${info.level}: ${info.message}`\n )\n ),\n});\n\nexport const logger = winston.createLogger({\n transports: [consoleTransport, logfileRotateTransport],\n exceptionHandlers: [logfileRotateTransport],\n exitOnError: false,\n});\n","import { Request, Response, NextFunction } from \"express\";\nimport { ZodSchema } from \"zod\";\n\nimport { BadRequestError } from \"@/core/ApiError\";\nimport { ValidationSource } from \"@/types/validation\";\n\nexport const schemaValidator = (type: ValidationSource, schema: ZodSchema) => {\n return (req: Request, res: Response, next: NextFunction) => {\n const result = schema.safeParse(req[type]);\n\n if (!result.success) {\n const errors = Object.entries(result.error.flatten().fieldErrors).map(\n ([key, value]) => ({\n field: key,\n message: value,\n })\n );\n next(new BadRequestError(\"Bad request\", errors));\n } else {\n next();\n }\n };\n};\n\n","import jsonwebtoken from \"jsonwebtoken\";\nimport { Request, Response, NextFunction } from \"express\";\n\nimport { BadTokenError, TokenExpiredError } from \"@/core/ApiError\";\nimport { JwtPayload, JwtService } from \"@/services/jwt.service\";\n\nexport const verifyToken = async (\n req: Request,\n res: Response,\n next: NextFunction\n) => {\n try {\n const { token } = req?.session;\n if (!token) {\n next(new BadTokenError(\"Authentication token is missing\"));\n }\n\n const decoded = JwtService.verify(token) as JwtPayload;\n\n req.user = decoded;\n next();\n } catch (error) {\n if (error instanceof jsonwebtoken.TokenExpiredError) {\n next(new TokenExpiredError());\n } else if (error instanceof jsonwebtoken.JsonWebTokenError) {\n next(new BadTokenError());\n } else {\n next(new BadTokenError());\n }\n }\n};\n","import { sanitizedConfig } from \"@/config/config\";\nimport jsonwebtoken, { SignOptions, VerifyOptions } from \"jsonwebtoken\";\n\nexport interface JwtPayload {\n _id: string;\n email: string;\n}\n\nexport class JwtService {\n static sign(\n payload: string | Buffer | object,\n signOptions: SignOptions = {}\n ): string {\n const token = jsonwebtoken.sign(\n payload,\n sanitizedConfig.JWT_KEY,\n signOptions\n );\n return token;\n }\n\n static verify(token: string, verifyOptions?: VerifyOptions) {\n const decoded = jsonwebtoken.verify(\n token,\n sanitizedConfig.JWT_KEY,\n verifyOptions\n );\n return decoded;\n }\n\n static generatePayload<T extends JwtPayload>(user: T): T {\n return {\n _id: user._id.toString(),\n email: user.email,\n } as T;\n }\n}\n","import { sanitizedConfig } from \"@/config/config\";\nimport bcrypt from \"bcrypt\";\n\nexport class Password {\n static hashPassword(password: string): Promise<string> {\n return new Promise((resolve, reject) => {\n bcrypt.hash(password, sanitizedConfig.SALT_ROUNDS, function (err, hash) {\n if (err) {\n reject(err.message);\n }\n resolve(hash);\n });\n });\n }\n\n static comparePassword(\n password: string,\n hashedPassword: string\n ): Promise<string | boolean> {\n return new Promise((resolve, reject) => {\n bcrypt.compare(password, hashedPassword, function (err, result) {\n if (err) {\n reject(err.message);\n }\n resolve(result);\n });\n });\n }\n}\n\n","export enum ValidationSource {\n BODY = 'body',\n HEADER = 'headers',\n QUERY = 'query',\n PARAM = 'params',\n }","import { Request, Response, NextFunction } from \"express\";\n\ntype AsyncFunction = (\n req: Request,\n res: Response,\n next: NextFunction\n) => Promise<any>;\n\nexport const asyncHandler =\n (execution: AsyncFunction) =>\n async (req: Request, res: Response, next: NextFunction) => {\n try {\n await execution(req, res, next);\n } catch (err) {\n next(err);\n }\n };\n"],"mappings":"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","names":["StatusCode","ResponseStatusCode","config","ErrorType","jsonwebtoken","jsonwebtoken","ValidationSource"]}
|
|
File without changes
|