@triproject/nestjs-core 1.0.5 → 1.0.13
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/.swcrc +24 -0
- package/README.md +297 -38
- package/dist/bootstrap.js +1 -43
- package/dist/config.js +1 -50
- package/dist/controllers/controller.js +1 -56
- package/dist/drivers/cache/cache.d.ts +1 -1
- package/dist/drivers/cache/cache.driver.js +1 -22
- package/dist/drivers/cache/cache.js +1 -92
- package/dist/drivers/cache/index.js +1 -19
- package/dist/drivers/cache/redis.js +1 -52
- package/dist/drivers/db/db.helper.js +1 -217
- package/dist/drivers/db/db.module.js +1 -44
- package/dist/drivers/db/db.service.js +1 -49
- package/dist/drivers/db/index.js +1 -21
- package/dist/drivers/db/migration.d.ts +133 -5
- package/dist/drivers/db/migration.js +1 -81
- package/dist/drivers/db/repository.js +1 -255
- package/dist/drivers/encryptions/encryption.js +1 -50
- package/dist/drivers/encryptions/encryption.module.js +1 -24
- package/dist/drivers/encryptions/index.js +1 -19
- package/dist/drivers/encryptions/jwt.js +1 -46
- package/dist/drivers/encryptions/password-hash.js +1 -38
- package/dist/drivers/encryptions/snap.signature.js +1 -110
- package/dist/drivers/logger/app.logger.js +2 -183
- package/dist/drivers/logger/cloudwatch.d.ts +18 -0
- package/dist/drivers/logger/cloudwatch.js +1 -0
- package/dist/drivers/logger/cloudwatch.logger.d.ts +1 -0
- package/dist/drivers/logger/cloudwatch.logger.js +1 -0
- package/dist/drivers/logger/index.js +1 -18
- package/dist/drivers/logger/slack.logger.js +1 -24
- package/dist/drivers/mail/index.js +1 -22
- package/dist/drivers/mail/mail-template.js +8 -41
- package/dist/drivers/mail/mail.config.js +1 -4
- package/dist/drivers/mail/mail.js +13 -73
- package/dist/drivers/mail/mail.module.js +1 -26
- package/dist/drivers/mail/mail.queue.js +1 -37
- package/dist/drivers/mail/mailer.js +1 -62
- package/dist/drivers/notifications/index.js +1 -21
- package/dist/drivers/notifications/notification.config.js +1 -4
- package/dist/drivers/notifications/notification.module.js +1 -25
- package/dist/drivers/notifications/notification.queue.js +1 -37
- package/dist/drivers/notifications/push-notification.js +1 -75
- package/dist/drivers/notifications/slack.js +1 -95
- package/dist/drivers/queues/app.queue.js +1 -66
- package/dist/drivers/queues/index.js +1 -18
- package/dist/drivers/queues/queue.module.js +1 -41
- package/dist/helpers/exception.helper.js +1 -71
- package/dist/helpers/http.helper.js +1 -134
- package/dist/helpers/swagger.helper.js +1 -287
- package/dist/helpers/totp.helper.js +1 -30
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -24
- package/dist/middlewares/log.middleware.js +1 -59
- package/dist/types.d.js +1 -0
- package/package.json +27 -14
|
@@ -1,134 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
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.HandleResponse = exports.ResponseInterceptor = exports.TransformResponseInterceptor = exports.HttpExceptionFilter = void 0;
|
|
16
|
-
exports.CatchError = CatchError;
|
|
17
|
-
const common_1 = require("@nestjs/common");
|
|
18
|
-
const helpers_1 = require("@triproject/helpers");
|
|
19
|
-
const moment_1 = __importDefault(require("moment"));
|
|
20
|
-
const rxjs_1 = require("rxjs");
|
|
21
|
-
const app_logger_1 = require("../drivers/logger/app.logger");
|
|
22
|
-
const exception_helper_1 = require("./exception.helper");
|
|
23
|
-
function CatchError(err) {
|
|
24
|
-
return (target, key, descriptor) => {
|
|
25
|
-
const originalMethod = descriptor.value;
|
|
26
|
-
descriptor.value = async function (...args) {
|
|
27
|
-
try {
|
|
28
|
-
return await originalMethod.apply(this, args);
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
if (error instanceof exception_helper_1.AppBadRequestException ||
|
|
32
|
-
error instanceof common_1.BadRequestException ||
|
|
33
|
-
error instanceof common_1.UnprocessableEntityException ||
|
|
34
|
-
error instanceof common_1.NotFoundException ||
|
|
35
|
-
error instanceof common_1.ForbiddenException ||
|
|
36
|
-
error instanceof common_1.UnauthorizedException ||
|
|
37
|
-
error instanceof common_1.ConflictException ||
|
|
38
|
-
error instanceof common_1.BadGatewayException ||
|
|
39
|
-
error instanceof common_1.GatewayTimeoutException) {
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
const errorLogger = new app_logger_1.AppLogger(target.constructor.name + '.' + key);
|
|
43
|
-
errorLogger.error(err, ...args, error);
|
|
44
|
-
throw new common_1.InternalServerErrorException(err);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
let HttpExceptionFilter = class HttpExceptionFilter {
|
|
50
|
-
catch(exception, host) {
|
|
51
|
-
const ctx = host.switchToHttp();
|
|
52
|
-
const response = ctx.getResponse();
|
|
53
|
-
const request = ctx.getRequest();
|
|
54
|
-
const status = exception.getStatus();
|
|
55
|
-
if (status === 400) {
|
|
56
|
-
response.status(status).json(exception.getResponse());
|
|
57
|
-
}
|
|
58
|
-
else if (status === 404) {
|
|
59
|
-
response.status(status).json({
|
|
60
|
-
statusCode: status,
|
|
61
|
-
message: 'Not found',
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
response.status(status).json((0, helpers_1.removeEmptyValues)({
|
|
66
|
-
statusCode: status,
|
|
67
|
-
message: exception.message,
|
|
68
|
-
meta: [500, 502, 504].includes(status)
|
|
69
|
-
? {
|
|
70
|
-
// @ts-ignore
|
|
71
|
-
timestamp: request?.requestStartAt
|
|
72
|
-
? (0, moment_1.default)(request?.requestStartAt).utc().toISOString(true)
|
|
73
|
-
: undefined,
|
|
74
|
-
path: request.url,
|
|
75
|
-
//@ts-ignore
|
|
76
|
-
reqId: request?.requestId,
|
|
77
|
-
}
|
|
78
|
-
: undefined,
|
|
79
|
-
}));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
exports.HttpExceptionFilter = HttpExceptionFilter;
|
|
84
|
-
exports.HttpExceptionFilter = HttpExceptionFilter = __decorate([
|
|
85
|
-
(0, common_1.Catch)(common_1.HttpException)
|
|
86
|
-
], HttpExceptionFilter);
|
|
87
|
-
const handleDataValue = (data) => {
|
|
88
|
-
return data?.statusCode && data?.message
|
|
89
|
-
? data
|
|
90
|
-
: data?.data && typeof data?.data === 'object'
|
|
91
|
-
? {
|
|
92
|
-
statusCode: 200,
|
|
93
|
-
message: 'Success',
|
|
94
|
-
...data?.data,
|
|
95
|
-
}
|
|
96
|
-
: {
|
|
97
|
-
statusCode: 200,
|
|
98
|
-
message: 'Success',
|
|
99
|
-
data,
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
let TransformResponseInterceptor = class TransformResponseInterceptor {
|
|
103
|
-
//@ts-ignore
|
|
104
|
-
intercept(context, next) {
|
|
105
|
-
//@ts-ignore
|
|
106
|
-
return next.handle().pipe((0, rxjs_1.map)((data) => handleDataValue(data)));
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
exports.TransformResponseInterceptor = TransformResponseInterceptor;
|
|
110
|
-
exports.TransformResponseInterceptor = TransformResponseInterceptor = __decorate([
|
|
111
|
-
(0, common_1.Injectable)()
|
|
112
|
-
], TransformResponseInterceptor);
|
|
113
|
-
let ResponseInterceptor = class ResponseInterceptor {
|
|
114
|
-
message;
|
|
115
|
-
status;
|
|
116
|
-
constructor(message = 'Success', status = common_1.HttpStatus.OK) {
|
|
117
|
-
this.message = message;
|
|
118
|
-
this.status = status;
|
|
119
|
-
}
|
|
120
|
-
//@ts-ignore
|
|
121
|
-
intercept(context, next) {
|
|
122
|
-
//@ts-ignore
|
|
123
|
-
return next.handle().pipe((0, rxjs_1.map)((data) => handleDataValue(data)));
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
exports.ResponseInterceptor = ResponseInterceptor;
|
|
127
|
-
exports.ResponseInterceptor = ResponseInterceptor = __decorate([
|
|
128
|
-
(0, common_1.Injectable)(),
|
|
129
|
-
__metadata("design:paramtypes", [String, Number])
|
|
130
|
-
], ResponseInterceptor);
|
|
131
|
-
const HandleResponse = (message, status = common_1.HttpStatus.OK) => {
|
|
132
|
-
return (0, common_1.UseInterceptors)(new ResponseInterceptor(message, status));
|
|
133
|
-
};
|
|
134
|
-
exports.HandleResponse = HandleResponse;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var obj,target=exports,all={get CatchError(){return CatchError},get HandleResponse(){return HandleResponse},get HttpExceptionFilter(){return HttpExceptionFilter},get ResponseInterceptor(){return ResponseInterceptor},get TransformResponseInterceptor(){return TransformResponseInterceptor}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_moment=(obj=require("moment"))&&obj.__esModule?obj:{default:obj},_rxjs=require("rxjs"),_applogger=require("../drivers/logger/app.logger"),_exceptionhelper=require("./exception.helper");function _ts_decorate(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}function CatchError(err){return(target,key,descriptor)=>{let originalMethod=descriptor.value;descriptor.value=async function(...args){try{return await originalMethod.apply(this,args)}catch(error){if(error instanceof _exceptionhelper.AppBadRequestException||error instanceof _common.BadRequestException||error instanceof _common.UnprocessableEntityException||error instanceof _common.NotFoundException||error instanceof _common.ForbiddenException||error instanceof _common.UnauthorizedException||error instanceof _common.ConflictException||error instanceof _common.BadGatewayException||error instanceof _common.GatewayTimeoutException)throw error;throw new _applogger.AppLogger(target.constructor.name+"."+key).error(err,...args,error),new _common.InternalServerErrorException(err)}}}}let HttpExceptionFilter=class HttpExceptionFilter{catch(exception,host){let ctx=host.switchToHttp(),response=ctx.getResponse(),request=ctx.getRequest(),status=exception.getStatus();400===status?response.status(status).json(exception.getResponse()):404===status?response.status(status).json({statusCode:status,message:"Not found"}):response.status(status).json((0,_helpers.removeEmptyValues)({statusCode:status,message:exception.message,meta:[500,502,504].includes(status)?{timestamp:request?.requestStartAt?(0,_moment.default)(request?.requestStartAt).utc().toISOString(!0):void 0,path:request.url,reqId:request?.requestId}:void 0}))}};HttpExceptionFilter=_ts_decorate([(0,_common.Catch)(_common.HttpException)],HttpExceptionFilter);let handleDataValue=data=>data?.statusCode&&data?.message?data:!Array.isArray(data)&&data?.data&&"object"==typeof data?.data?{statusCode:200,message:"Success",...data}:{statusCode:200,message:"Success",data};let TransformResponseInterceptor=class TransformResponseInterceptor{intercept(context,next){return next.handle().pipe((0,_rxjs.map)(data=>handleDataValue(data)))}};TransformResponseInterceptor=_ts_decorate([(0,_common.Injectable)()],TransformResponseInterceptor);let ResponseInterceptor=class ResponseInterceptor{message;status;constructor(message="Success",status=_common.HttpStatus.OK){this.message=message,this.status=status}intercept(context,next){return next.handle().pipe((0,_rxjs.map)(data=>handleDataValue(data)))}};ResponseInterceptor=_ts_decorate([(0,_common.Injectable)(),_ts_metadata("design:type",Function),_ts_metadata("design:paramtypes",[String,void 0===_common.HttpStatus?Object:_common.HttpStatus])],ResponseInterceptor);let HandleResponse=(message,status=_common.HttpStatus.OK)=>(0,_common.UseInterceptors)(new ResponseInterceptor(message,status));
|
|
@@ -1,287 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ApiEnumProperty = exports.ApiStringProperty = exports.ApiNumberProperty = exports.ApiBooleanProperty = exports.ApiUuidProperty = exports.ApiTokenProperty = exports.ApiPasswordProperty = exports.ApiEmailProperty = exports.ApiNameProperty = exports.SwaggerApiCreatedResponse = exports.SwaggerApiSuccessResponse = exports.SwaggerApiNoContentResponse = exports.SwaggerApiConflictResponse = exports.SwaggerApiInternalServerErrorResponse = exports.SwaggerApiBadSwaGatewayResponse = exports.SwaggerApiNotFoundResponse = exports.SwaggerApiForbiddenResponse = exports.SwaggerApiUnauthorizedResponse = exports.SwaggerApiBadRequestResponse = void 0;
|
|
13
|
-
exports.SwaggerApiPaginateResponse = SwaggerApiPaginateResponse;
|
|
14
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
-
const paginateResponseCache = new Map();
|
|
16
|
-
class BadRequestExample {
|
|
17
|
-
statusCode;
|
|
18
|
-
message;
|
|
19
|
-
errors;
|
|
20
|
-
}
|
|
21
|
-
__decorate([
|
|
22
|
-
(0, swagger_1.ApiProperty)({ example: 400 }),
|
|
23
|
-
__metadata("design:type", Number)
|
|
24
|
-
], BadRequestExample.prototype, "statusCode", void 0);
|
|
25
|
-
__decorate([
|
|
26
|
-
(0, swagger_1.ApiProperty)({ example: 'Error Message 1, Error Message 2' }),
|
|
27
|
-
__metadata("design:type", String)
|
|
28
|
-
], BadRequestExample.prototype, "message", void 0);
|
|
29
|
-
__decorate([
|
|
30
|
-
(0, swagger_1.ApiProperty)({
|
|
31
|
-
example: { field1: ['Error message 1', 'Error message 2'], field2: ['Error message 3'] },
|
|
32
|
-
description: 'Validation errors',
|
|
33
|
-
}),
|
|
34
|
-
__metadata("design:type", Object)
|
|
35
|
-
], BadRequestExample.prototype, "errors", void 0);
|
|
36
|
-
exports.SwaggerApiBadRequestResponse = (0, swagger_1.ApiResponse)({
|
|
37
|
-
status: 400,
|
|
38
|
-
description: 'Bad Request',
|
|
39
|
-
type: BadRequestExample,
|
|
40
|
-
});
|
|
41
|
-
class UnauthorizedExample {
|
|
42
|
-
statusCode;
|
|
43
|
-
message;
|
|
44
|
-
}
|
|
45
|
-
__decorate([
|
|
46
|
-
(0, swagger_1.ApiProperty)({ example: 401 }),
|
|
47
|
-
__metadata("design:type", Number)
|
|
48
|
-
], UnauthorizedExample.prototype, "statusCode", void 0);
|
|
49
|
-
__decorate([
|
|
50
|
-
(0, swagger_1.ApiProperty)({ example: 'Unauthorized' }),
|
|
51
|
-
__metadata("design:type", String)
|
|
52
|
-
], UnauthorizedExample.prototype, "message", void 0);
|
|
53
|
-
exports.SwaggerApiUnauthorizedResponse = (0, swagger_1.ApiResponse)({
|
|
54
|
-
status: 401,
|
|
55
|
-
description: 'Unauthorized',
|
|
56
|
-
type: UnauthorizedExample,
|
|
57
|
-
});
|
|
58
|
-
class ForbiddenExample {
|
|
59
|
-
statusCode;
|
|
60
|
-
message;
|
|
61
|
-
}
|
|
62
|
-
__decorate([
|
|
63
|
-
(0, swagger_1.ApiProperty)({ example: 403 }),
|
|
64
|
-
__metadata("design:type", Number)
|
|
65
|
-
], ForbiddenExample.prototype, "statusCode", void 0);
|
|
66
|
-
__decorate([
|
|
67
|
-
(0, swagger_1.ApiProperty)({ example: 'Forbidden' }),
|
|
68
|
-
__metadata("design:type", String)
|
|
69
|
-
], ForbiddenExample.prototype, "message", void 0);
|
|
70
|
-
exports.SwaggerApiForbiddenResponse = (0, swagger_1.ApiResponse)({
|
|
71
|
-
status: 403,
|
|
72
|
-
description: 'Forbidden',
|
|
73
|
-
type: ForbiddenExample,
|
|
74
|
-
});
|
|
75
|
-
class NotFoundExample {
|
|
76
|
-
statusCode;
|
|
77
|
-
message;
|
|
78
|
-
}
|
|
79
|
-
__decorate([
|
|
80
|
-
(0, swagger_1.ApiProperty)({ example: 404 }),
|
|
81
|
-
__metadata("design:type", Number)
|
|
82
|
-
], NotFoundExample.prototype, "statusCode", void 0);
|
|
83
|
-
__decorate([
|
|
84
|
-
(0, swagger_1.ApiProperty)({ example: 'Resource not found' }),
|
|
85
|
-
__metadata("design:type", String)
|
|
86
|
-
], NotFoundExample.prototype, "message", void 0);
|
|
87
|
-
exports.SwaggerApiNotFoundResponse = (0, swagger_1.ApiResponse)({
|
|
88
|
-
status: 404,
|
|
89
|
-
description: 'Not Found',
|
|
90
|
-
type: NotFoundExample,
|
|
91
|
-
});
|
|
92
|
-
class BadSwaGatewayExample {
|
|
93
|
-
statusCode;
|
|
94
|
-
message;
|
|
95
|
-
}
|
|
96
|
-
__decorate([
|
|
97
|
-
(0, swagger_1.ApiProperty)({ example: 502 }),
|
|
98
|
-
__metadata("design:type", Number)
|
|
99
|
-
], BadSwaGatewayExample.prototype, "statusCode", void 0);
|
|
100
|
-
__decorate([
|
|
101
|
-
(0, swagger_1.ApiProperty)({ example: 'Bad Gateway' }),
|
|
102
|
-
__metadata("design:type", String)
|
|
103
|
-
], BadSwaGatewayExample.prototype, "message", void 0);
|
|
104
|
-
exports.SwaggerApiBadSwaGatewayResponse = (0, swagger_1.ApiResponse)({
|
|
105
|
-
status: 502,
|
|
106
|
-
description: 'Bad Gateway',
|
|
107
|
-
type: BadSwaGatewayExample,
|
|
108
|
-
});
|
|
109
|
-
class InternalServerErrorExample {
|
|
110
|
-
statusCode;
|
|
111
|
-
message;
|
|
112
|
-
}
|
|
113
|
-
__decorate([
|
|
114
|
-
(0, swagger_1.ApiProperty)({ example: 500 }),
|
|
115
|
-
__metadata("design:type", Number)
|
|
116
|
-
], InternalServerErrorExample.prototype, "statusCode", void 0);
|
|
117
|
-
__decorate([
|
|
118
|
-
(0, swagger_1.ApiProperty)({ example: 'Internal server error' }),
|
|
119
|
-
__metadata("design:type", String)
|
|
120
|
-
], InternalServerErrorExample.prototype, "message", void 0);
|
|
121
|
-
exports.SwaggerApiInternalServerErrorResponse = (0, swagger_1.ApiResponse)({
|
|
122
|
-
status: 500,
|
|
123
|
-
description: 'Internal Server Error',
|
|
124
|
-
type: InternalServerErrorExample,
|
|
125
|
-
});
|
|
126
|
-
class ConflictExample {
|
|
127
|
-
statusCode;
|
|
128
|
-
message;
|
|
129
|
-
}
|
|
130
|
-
__decorate([
|
|
131
|
-
(0, swagger_1.ApiProperty)({ example: 409 }),
|
|
132
|
-
__metadata("design:type", Number)
|
|
133
|
-
], ConflictExample.prototype, "statusCode", void 0);
|
|
134
|
-
__decorate([
|
|
135
|
-
(0, swagger_1.ApiProperty)({ example: 'Conflict error' }),
|
|
136
|
-
__metadata("design:type", String)
|
|
137
|
-
], ConflictExample.prototype, "message", void 0);
|
|
138
|
-
exports.SwaggerApiConflictResponse = (0, swagger_1.ApiResponse)({
|
|
139
|
-
status: 409,
|
|
140
|
-
description: 'Conflict',
|
|
141
|
-
type: ConflictExample,
|
|
142
|
-
});
|
|
143
|
-
class NoContentExample {
|
|
144
|
-
statusCode;
|
|
145
|
-
message;
|
|
146
|
-
}
|
|
147
|
-
__decorate([
|
|
148
|
-
(0, swagger_1.ApiProperty)({ example: 204 }),
|
|
149
|
-
__metadata("design:type", Number)
|
|
150
|
-
], NoContentExample.prototype, "statusCode", void 0);
|
|
151
|
-
__decorate([
|
|
152
|
-
(0, swagger_1.ApiProperty)({ example: 'No content' }),
|
|
153
|
-
__metadata("design:type", String)
|
|
154
|
-
], NoContentExample.prototype, "message", void 0);
|
|
155
|
-
exports.SwaggerApiNoContentResponse = (0, swagger_1.ApiResponse)({
|
|
156
|
-
status: 204,
|
|
157
|
-
description: 'No Content',
|
|
158
|
-
type: NoContentExample,
|
|
159
|
-
});
|
|
160
|
-
const MergeSwaggerSuccessExample = (classType) => {
|
|
161
|
-
const className = classType.name;
|
|
162
|
-
const cacheKey = `Success${className}Response`;
|
|
163
|
-
if (paginateResponseCache.has(cacheKey)) {
|
|
164
|
-
return paginateResponseCache.get(cacheKey);
|
|
165
|
-
}
|
|
166
|
-
class SuccessResponse {
|
|
167
|
-
statusCode;
|
|
168
|
-
message;
|
|
169
|
-
data;
|
|
170
|
-
}
|
|
171
|
-
__decorate([
|
|
172
|
-
(0, swagger_1.ApiProperty)({ example: 200 }),
|
|
173
|
-
__metadata("design:type", Number)
|
|
174
|
-
], SuccessResponse.prototype, "statusCode", void 0);
|
|
175
|
-
__decorate([
|
|
176
|
-
(0, swagger_1.ApiProperty)({ example: 'Success' }),
|
|
177
|
-
__metadata("design:type", String)
|
|
178
|
-
], SuccessResponse.prototype, "message", void 0);
|
|
179
|
-
__decorate([
|
|
180
|
-
(0, swagger_1.ApiProperty)({ description: 'Response data', type: classType }),
|
|
181
|
-
__metadata("design:type", Object)
|
|
182
|
-
], SuccessResponse.prototype, "data", void 0);
|
|
183
|
-
Object.defineProperty(SuccessResponse, 'name', { value: cacheKey });
|
|
184
|
-
paginateResponseCache.set(cacheKey, SuccessResponse);
|
|
185
|
-
return SuccessResponse;
|
|
186
|
-
};
|
|
187
|
-
const SwaggerApiSuccessResponse = (classType) => (0, swagger_1.ApiResponse)({
|
|
188
|
-
status: 200,
|
|
189
|
-
description: 'Success',
|
|
190
|
-
type: MergeSwaggerSuccessExample(classType),
|
|
191
|
-
});
|
|
192
|
-
exports.SwaggerApiSuccessResponse = SwaggerApiSuccessResponse;
|
|
193
|
-
const MergeSwaggerCreatedExample = (classType) => {
|
|
194
|
-
const className = classType.name;
|
|
195
|
-
const cacheKey = `Created${className}Response`;
|
|
196
|
-
if (paginateResponseCache.has(cacheKey)) {
|
|
197
|
-
return paginateResponseCache.get(cacheKey);
|
|
198
|
-
}
|
|
199
|
-
class CreatedResponse {
|
|
200
|
-
statusCode;
|
|
201
|
-
message;
|
|
202
|
-
data;
|
|
203
|
-
}
|
|
204
|
-
__decorate([
|
|
205
|
-
(0, swagger_1.ApiProperty)({ example: 201 }),
|
|
206
|
-
__metadata("design:type", Number)
|
|
207
|
-
], CreatedResponse.prototype, "statusCode", void 0);
|
|
208
|
-
__decorate([
|
|
209
|
-
(0, swagger_1.ApiProperty)({ example: 'Resource created successfully' }),
|
|
210
|
-
__metadata("design:type", String)
|
|
211
|
-
], CreatedResponse.prototype, "message", void 0);
|
|
212
|
-
__decorate([
|
|
213
|
-
(0, swagger_1.ApiProperty)({ description: 'Response data', type: classType }),
|
|
214
|
-
__metadata("design:type", Object)
|
|
215
|
-
], CreatedResponse.prototype, "data", void 0);
|
|
216
|
-
Object.defineProperty(CreatedResponse, 'name', { value: cacheKey });
|
|
217
|
-
paginateResponseCache.set(cacheKey, CreatedResponse);
|
|
218
|
-
return CreatedResponse;
|
|
219
|
-
};
|
|
220
|
-
const SwaggerApiCreatedResponse = (classType) => (0, swagger_1.ApiResponse)({
|
|
221
|
-
status: 201,
|
|
222
|
-
description: 'Created',
|
|
223
|
-
type: MergeSwaggerCreatedExample(classType),
|
|
224
|
-
});
|
|
225
|
-
exports.SwaggerApiCreatedResponse = SwaggerApiCreatedResponse;
|
|
226
|
-
const MergeSwaggerPaginateExample = (classType) => {
|
|
227
|
-
const className = classType.name;
|
|
228
|
-
const cacheKey = `Paginate${className}Response`;
|
|
229
|
-
if (paginateResponseCache.has(cacheKey)) {
|
|
230
|
-
return paginateResponseCache.get(cacheKey);
|
|
231
|
-
}
|
|
232
|
-
class ApiPaginateResponse {
|
|
233
|
-
statusCode;
|
|
234
|
-
message;
|
|
235
|
-
meta;
|
|
236
|
-
timestamp;
|
|
237
|
-
}
|
|
238
|
-
__decorate([
|
|
239
|
-
(0, swagger_1.ApiProperty)({ example: 200 }),
|
|
240
|
-
__metadata("design:type", Number)
|
|
241
|
-
], ApiPaginateResponse.prototype, "statusCode", void 0);
|
|
242
|
-
__decorate([
|
|
243
|
-
(0, swagger_1.ApiProperty)({ example: 'Success' }),
|
|
244
|
-
__metadata("design:type", String)
|
|
245
|
-
], ApiPaginateResponse.prototype, "message", void 0);
|
|
246
|
-
__decorate([
|
|
247
|
-
(0, swagger_1.ApiProperty)({ isArray: true, type: classType }),
|
|
248
|
-
__metadata("design:type", Array)
|
|
249
|
-
], ApiPaginateResponse.prototype, "data", void 0);
|
|
250
|
-
__decorate([
|
|
251
|
-
(0, swagger_1.ApiProperty)({
|
|
252
|
-
example: {
|
|
253
|
-
total: 100,
|
|
254
|
-
totalPage: 10,
|
|
255
|
-
perPage: 10,
|
|
256
|
-
prevPage: null,
|
|
257
|
-
page: 1,
|
|
258
|
-
nextPage: 2,
|
|
259
|
-
},
|
|
260
|
-
}),
|
|
261
|
-
__metadata("design:type", Object)
|
|
262
|
-
], ApiPaginateResponse.prototype, "meta", void 0);
|
|
263
|
-
__decorate([
|
|
264
|
-
(0, swagger_1.ApiProperty)({ example: '2024-01-01T00:00:00.000Z' }),
|
|
265
|
-
__metadata("design:type", String)
|
|
266
|
-
], ApiPaginateResponse.prototype, "timestamp", void 0);
|
|
267
|
-
Object.defineProperty(ApiPaginateResponse, 'name', { value: cacheKey });
|
|
268
|
-
paginateResponseCache.set(cacheKey, ApiPaginateResponse);
|
|
269
|
-
return ApiPaginateResponse;
|
|
270
|
-
};
|
|
271
|
-
function SwaggerApiPaginateResponse(classType) {
|
|
272
|
-
return (0, swagger_1.ApiResponse)({
|
|
273
|
-
status: 200,
|
|
274
|
-
description: 'Success',
|
|
275
|
-
type: MergeSwaggerPaginateExample(classType),
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
exports.ApiNameProperty = (0, swagger_1.ApiProperty)({ example: 'John Doe' });
|
|
279
|
-
exports.ApiEmailProperty = (0, swagger_1.ApiProperty)({ example: 'john@gmail.com' });
|
|
280
|
-
exports.ApiPasswordProperty = (0, swagger_1.ApiProperty)({ example: 'Password@#123' });
|
|
281
|
-
exports.ApiTokenProperty = (0, swagger_1.ApiProperty)({ example: 'abcdef1234567890' });
|
|
282
|
-
exports.ApiUuidProperty = (0, swagger_1.ApiProperty)({ example: '123e4567-e89b-12d3-a456-426614174000' });
|
|
283
|
-
exports.ApiBooleanProperty = (0, swagger_1.ApiProperty)({ example: true });
|
|
284
|
-
exports.ApiNumberProperty = (0, swagger_1.ApiProperty)({ example: 42000 });
|
|
285
|
-
exports.ApiStringProperty = (0, swagger_1.ApiProperty)({ example: 'Some string value' });
|
|
286
|
-
const ApiEnumProperty = (enums) => (0, swagger_1.ApiProperty)({ example: enums[0], enum: enums });
|
|
287
|
-
exports.ApiEnumProperty = ApiEnumProperty;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get ApiBooleanProperty(){return ApiBooleanProperty},get ApiEmailProperty(){return ApiEmailProperty},get ApiEnumProperty(){return ApiEnumProperty},get ApiNameProperty(){return ApiNameProperty},get ApiNumberProperty(){return ApiNumberProperty},get ApiPasswordProperty(){return ApiPasswordProperty},get ApiStringProperty(){return ApiStringProperty},get ApiTokenProperty(){return ApiTokenProperty},get ApiUuidProperty(){return ApiUuidProperty},get SwaggerApiBadRequestResponse(){return SwaggerApiBadRequestResponse},get SwaggerApiBadSwaGatewayResponse(){return SwaggerApiBadSwaGatewayResponse},get SwaggerApiConflictResponse(){return SwaggerApiConflictResponse},get SwaggerApiCreatedResponse(){return SwaggerApiCreatedResponse},get SwaggerApiForbiddenResponse(){return SwaggerApiForbiddenResponse},get SwaggerApiInternalServerErrorResponse(){return SwaggerApiInternalServerErrorResponse},get SwaggerApiNoContentResponse(){return SwaggerApiNoContentResponse},get SwaggerApiNotFoundResponse(){return SwaggerApiNotFoundResponse},get SwaggerApiPaginateResponse(){return SwaggerApiPaginateResponse},get SwaggerApiSuccessResponse(){return SwaggerApiSuccessResponse},get SwaggerApiUnauthorizedResponse(){return SwaggerApiUnauthorizedResponse}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _swagger=require("@nestjs/swagger");function _ts_decorate(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let paginateResponseCache=new Map;let BadRequestExample=class BadRequestExample{statusCode;message;errors};_ts_decorate([(0,_swagger.ApiProperty)({example:400}),_ts_metadata("design:type",Number)],BadRequestExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Error Message 1, Error Message 2"}),_ts_metadata("design:type",String)],BadRequestExample.prototype,"message",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:{field1:["Error message 1","Error message 2"],field2:["Error message 3"]},description:"Validation errors"}),_ts_metadata("design:type","u"<typeof Record?Object:Record)],BadRequestExample.prototype,"errors",void 0);let SwaggerApiBadRequestResponse=(0,_swagger.ApiResponse)({status:400,description:"Bad Request",type:BadRequestExample});let UnauthorizedExample=class UnauthorizedExample{statusCode;message};_ts_decorate([(0,_swagger.ApiProperty)({example:401}),_ts_metadata("design:type",Number)],UnauthorizedExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Unauthorized"}),_ts_metadata("design:type",String)],UnauthorizedExample.prototype,"message",void 0);let SwaggerApiUnauthorizedResponse=(0,_swagger.ApiResponse)({status:401,description:"Unauthorized",type:UnauthorizedExample});let ForbiddenExample=class ForbiddenExample{statusCode;message};_ts_decorate([(0,_swagger.ApiProperty)({example:403}),_ts_metadata("design:type",Number)],ForbiddenExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Forbidden"}),_ts_metadata("design:type",String)],ForbiddenExample.prototype,"message",void 0);let SwaggerApiForbiddenResponse=(0,_swagger.ApiResponse)({status:403,description:"Forbidden",type:ForbiddenExample});let NotFoundExample=class NotFoundExample{statusCode;message};_ts_decorate([(0,_swagger.ApiProperty)({example:404}),_ts_metadata("design:type",Number)],NotFoundExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Resource not found"}),_ts_metadata("design:type",String)],NotFoundExample.prototype,"message",void 0);let SwaggerApiNotFoundResponse=(0,_swagger.ApiResponse)({status:404,description:"Not Found",type:NotFoundExample});let BadSwaGatewayExample=class BadSwaGatewayExample{statusCode;message};_ts_decorate([(0,_swagger.ApiProperty)({example:502}),_ts_metadata("design:type",Number)],BadSwaGatewayExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Bad Gateway"}),_ts_metadata("design:type",String)],BadSwaGatewayExample.prototype,"message",void 0);let SwaggerApiBadSwaGatewayResponse=(0,_swagger.ApiResponse)({status:502,description:"Bad Gateway",type:BadSwaGatewayExample});let InternalServerErrorExample=class InternalServerErrorExample{statusCode;message};_ts_decorate([(0,_swagger.ApiProperty)({example:500}),_ts_metadata("design:type",Number)],InternalServerErrorExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Internal server error"}),_ts_metadata("design:type",String)],InternalServerErrorExample.prototype,"message",void 0);let SwaggerApiInternalServerErrorResponse=(0,_swagger.ApiResponse)({status:500,description:"Internal Server Error",type:InternalServerErrorExample});let ConflictExample=class ConflictExample{statusCode;message};_ts_decorate([(0,_swagger.ApiProperty)({example:409}),_ts_metadata("design:type",Number)],ConflictExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Conflict error"}),_ts_metadata("design:type",String)],ConflictExample.prototype,"message",void 0);let SwaggerApiConflictResponse=(0,_swagger.ApiResponse)({status:409,description:"Conflict",type:ConflictExample});let NoContentExample=class NoContentExample{statusCode;message};_ts_decorate([(0,_swagger.ApiProperty)({example:204}),_ts_metadata("design:type",Number)],NoContentExample.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"No content"}),_ts_metadata("design:type",String)],NoContentExample.prototype,"message",void 0);let SwaggerApiNoContentResponse=(0,_swagger.ApiResponse)({status:204,description:"No Content",type:NoContentExample}),SwaggerApiSuccessResponse=classType=>(0,_swagger.ApiResponse)({status:200,description:"Success",type:(classType=>{let className=classType.name,cacheKey=`Success${className}Response`;if(paginateResponseCache.has(cacheKey))return paginateResponseCache.get(cacheKey);let SuccessResponse=class SuccessResponse{statusCode;message;data};return _ts_decorate([(0,_swagger.ApiProperty)({example:200}),_ts_metadata("design:type",Number)],SuccessResponse.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Success"}),_ts_metadata("design:type",String)],SuccessResponse.prototype,"message",void 0),_ts_decorate([(0,_swagger.ApiProperty)({description:"Response data",type:classType}),_ts_metadata("design:type",Object)],SuccessResponse.prototype,"data",void 0),Object.defineProperty(SuccessResponse,"name",{value:cacheKey}),paginateResponseCache.set(cacheKey,SuccessResponse),SuccessResponse})(classType)}),SwaggerApiCreatedResponse=classType=>(0,_swagger.ApiResponse)({status:201,description:"Created",type:(classType=>{let className=classType.name,cacheKey=`Created${className}Response`;if(paginateResponseCache.has(cacheKey))return paginateResponseCache.get(cacheKey);let CreatedResponse=class CreatedResponse{statusCode;message;data};return _ts_decorate([(0,_swagger.ApiProperty)({example:201}),_ts_metadata("design:type",Number)],CreatedResponse.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Resource created successfully"}),_ts_metadata("design:type",String)],CreatedResponse.prototype,"message",void 0),_ts_decorate([(0,_swagger.ApiProperty)({description:"Response data",type:classType}),_ts_metadata("design:type",Object)],CreatedResponse.prototype,"data",void 0),Object.defineProperty(CreatedResponse,"name",{value:cacheKey}),paginateResponseCache.set(cacheKey,CreatedResponse),CreatedResponse})(classType)});function SwaggerApiPaginateResponse(classType){return(0,_swagger.ApiResponse)({status:200,description:"Success",type:(classType=>{let className=classType.name,cacheKey=`Paginate${className}Response`;if(paginateResponseCache.has(cacheKey))return paginateResponseCache.get(cacheKey);let ApiPaginateResponse=class ApiPaginateResponse{statusCode;message;meta;timestamp};return _ts_decorate([(0,_swagger.ApiProperty)({example:200}),_ts_metadata("design:type",Number)],ApiPaginateResponse.prototype,"statusCode",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"Success"}),_ts_metadata("design:type",String)],ApiPaginateResponse.prototype,"message",void 0),_ts_decorate([(0,_swagger.ApiProperty)({isArray:!0,type:classType}),_ts_metadata("design:type",Array)],ApiPaginateResponse.prototype,"data",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:{total:100,totalPage:10,perPage:10,prevPage:null,page:1,nextPage:2}}),_ts_metadata("design:type",Object)],ApiPaginateResponse.prototype,"meta",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"2024-01-01T00:00:00.000Z"}),_ts_metadata("design:type",String)],ApiPaginateResponse.prototype,"timestamp",void 0),Object.defineProperty(ApiPaginateResponse,"name",{value:cacheKey}),paginateResponseCache.set(cacheKey,ApiPaginateResponse),ApiPaginateResponse})(classType)})}let ApiNameProperty=(0,_swagger.ApiProperty)({example:"John Doe"}),ApiEmailProperty=(0,_swagger.ApiProperty)({example:"john@gmail.com"}),ApiPasswordProperty=(0,_swagger.ApiProperty)({example:"Password@#123"}),ApiTokenProperty=(0,_swagger.ApiProperty)({example:"abcdef1234567890"}),ApiUuidProperty=(0,_swagger.ApiProperty)({example:"123e4567-e89b-12d3-a456-426614174000"}),ApiBooleanProperty=(0,_swagger.ApiProperty)({example:!0}),ApiNumberProperty=(0,_swagger.ApiProperty)({example:42e3}),ApiStringProperty=(0,_swagger.ApiProperty)({example:"Some string value"}),ApiEnumProperty=enums=>(0,_swagger.ApiProperty)({example:enums[0],enum:enums});
|
|
@@ -1,30 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.totp = void 0;
|
|
4
|
-
const common_1 = require("@nestjs/common");
|
|
5
|
-
const qrcode_1 = require("qrcode");
|
|
6
|
-
const speakeasy_1 = require("speakeasy");
|
|
7
|
-
class Totp {
|
|
8
|
-
encoding = 'base32';
|
|
9
|
-
async generateSecret(params) {
|
|
10
|
-
const issuer = params?.issuer;
|
|
11
|
-
const secret = (0, speakeasy_1.generateSecret)({ name: `${issuer}:${params?.email}`, issuer });
|
|
12
|
-
if (!secret?.otpauth_url)
|
|
13
|
-
throw new common_1.UnprocessableEntityException('Failed to generate secret');
|
|
14
|
-
const qrCodeBase64 = await (0, qrcode_1.toDataURL)(secret.otpauth_url, {
|
|
15
|
-
type: 'image/png',
|
|
16
|
-
width: 256,
|
|
17
|
-
margin: 2,
|
|
18
|
-
color: { dark: '#000000', light: '#FFFFFF' },
|
|
19
|
-
});
|
|
20
|
-
return {
|
|
21
|
-
secret: secret.base32,
|
|
22
|
-
url: secret.otpauth_url,
|
|
23
|
-
qrCodeBase64,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
verify(secret, otp) {
|
|
27
|
-
return speakeasy_1.totp.verify({ secret: secret, encoding: this.encoding, token: otp, window: 1 });
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.totp = new Totp();
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"totp",{enumerable:!0,get:function(){return totp}});let _common=require("@nestjs/common"),_qrcode=require("qrcode"),_speakeasy=require("speakeasy"),totp=new class{encoding="base32";async generateSecret(params){let issuer=params?.issuer,secret=(0,_speakeasy.generateSecret)({name:`${issuer}:${params?.email}`,issuer});if(!secret?.otpauth_url)throw new _common.UnprocessableEntityException("Failed to generate secret");let qrCodeBase64=await (0,_qrcode.toDataURL)(secret.otpauth_url,{type:"image/png",width:256,margin:2,color:{dark:"#000000",light:"#FFFFFF"}});return{secret:secret.base32,url:secret.otpauth_url,qrCodeBase64}}verify(secret,otp){return _speakeasy.totp.verify({secret:secret,encoding:this.encoding,token:otp,window:1})}};
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,24 +1 @@
|
|
|
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
|
-
__exportStar(require("./config"), exports);
|
|
18
|
-
__exportStar(require("./helpers/exception.helper"), exports);
|
|
19
|
-
__exportStar(require("./helpers/http.helper"), exports);
|
|
20
|
-
__exportStar(require("./helpers/swagger.helper"), exports);
|
|
21
|
-
__exportStar(require("./helpers/totp.helper"), exports);
|
|
22
|
-
__exportStar(require("./controllers/controller"), exports);
|
|
23
|
-
__exportStar(require("./middlewares/log.middleware"), exports);
|
|
24
|
-
__exportStar(require("./bootstrap"), exports);
|
|
1
|
+
"use strict";function _export_star(from,to){return Object.keys(from).forEach(function(k){"default"===k||Object.prototype.hasOwnProperty.call(to,k)||Object.defineProperty(to,k,{enumerable:!0,get:function(){return from[k]}})}),from}Object.defineProperty(exports,"__esModule",{value:!0}),_export_star(require("./config"),exports),_export_star(require("./helpers/exception.helper"),exports),_export_star(require("./helpers/http.helper"),exports),_export_star(require("./helpers/swagger.helper"),exports),_export_star(require("./helpers/totp.helper"),exports),_export_star(require("./controllers/controller"),exports),_export_star(require("./middlewares/log.middleware"),exports),_export_star(require("./bootstrap"),exports);
|
|
@@ -1,59 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.LogResponseMiddleware = exports.LogMiddleware = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const helpers_1 = require("@triproject/helpers");
|
|
12
|
-
const app_logger_1 = require("../drivers/logger/app.logger");
|
|
13
|
-
let LogMiddleware = class LogMiddleware {
|
|
14
|
-
async use(req, res, next) {
|
|
15
|
-
req.requestId = (0, helpers_1.generateId)();
|
|
16
|
-
req.requestStartAt = new Date().getTime();
|
|
17
|
-
next();
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
exports.LogMiddleware = LogMiddleware;
|
|
21
|
-
exports.LogMiddleware = LogMiddleware = __decorate([
|
|
22
|
-
(0, common_1.Injectable)()
|
|
23
|
-
], LogMiddleware);
|
|
24
|
-
let LogResponseMiddleware = class LogResponseMiddleware {
|
|
25
|
-
log = new app_logger_1.AppLogger('Log Request');
|
|
26
|
-
async use(req, res, next) {
|
|
27
|
-
try {
|
|
28
|
-
const time = Date.now() - req.requestStartAt;
|
|
29
|
-
const timeString = time < 1000 ? `${time}ms` : `${(time / 1000).toFixed(2)}s`;
|
|
30
|
-
const logs = [
|
|
31
|
-
'Request' + ` ${req.requestId} completed in ${timeString}`,
|
|
32
|
-
(0, helpers_1.removeEmptyValues)({
|
|
33
|
-
method: req.method,
|
|
34
|
-
url: req.protocol + '://' + req.hostname + req.originalUrl,
|
|
35
|
-
origin: req.get('origin'),
|
|
36
|
-
ipAddress: req.ip,
|
|
37
|
-
body: Object.keys(req?.body).length ? req?.body : undefined,
|
|
38
|
-
}),
|
|
39
|
-
];
|
|
40
|
-
// @ts-ignore
|
|
41
|
-
if (req?.user)
|
|
42
|
-
logs.push(req.user);
|
|
43
|
-
if (req?.errorMessage)
|
|
44
|
-
logs.push(req.errorMessage);
|
|
45
|
-
this.log.log(...logs);
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
this.log.error('Error logging response', error);
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
if (next)
|
|
52
|
-
next();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
exports.LogResponseMiddleware = LogResponseMiddleware;
|
|
57
|
-
exports.LogResponseMiddleware = LogResponseMiddleware = __decorate([
|
|
58
|
-
(0, common_1.Injectable)()
|
|
59
|
-
], LogResponseMiddleware);
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get LogMiddleware(){return LogMiddleware},get LogResponseMiddleware(){return LogResponseMiddleware}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_uaparserjs=require("ua-parser-js"),_applogger=require("../drivers/logger/app.logger");function _ts_decorate(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}let LogMiddleware=class LogMiddleware{async use(req,res,next){req.requestId=(0,_helpers.generateId)(),req.requestStartAt=new Date().getTime();let userAgentString=req.get("user-agent")??"",ua=new _uaparserjs.UAParser(userAgentString).getResult();req.userAgent=[ua.browser.name+" "+ua.browser.version,ua.os.name+" "+ua.os.version].join(", "),next()}};LogMiddleware=_ts_decorate([(0,_common.Injectable)()],LogMiddleware);let LogResponseMiddleware=class LogResponseMiddleware{log=new _applogger.AppLogger("Log Request");async use(req,res,next){try{let time=Date.now()-req.requestStartAt,timeString=time<1e3?`${time}ms`:`${(time/1e3).toFixed(2)}s`,logs=[`Request ${req.requestId} completed in ${timeString}`,(0,_helpers.removeEmptyValues)({method:req.method,url:req.protocol+"://"+req.hostname+req.baseUrl+req.path,request:(0,_helpers.removeEmptyValues)({body:Object.keys(req?.body).length?req?.body:void 0,query:Object.keys(req?.query).length?req?.query:void 0}),origin:req.get("origin"),ipAddress:req?.ip,userAgent:req?.userAgent,user:req?.user})];req?.errorMessage&&logs.push(req.errorMessage),this.log.log(...logs)}catch(error){this.log.error("Error logging response",error)}finally{next&&next()}}};LogResponseMiddleware=_ts_decorate([(0,_common.Injectable)()],LogResponseMiddleware);
|
package/dist/types.d.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("express");
|