@triproject/nestjs-core 1.0.24 → 1.0.25

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.
@@ -1 +1 @@
1
- "use strict";var obj;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Repository",{enumerable:!0,get:function(){return Repository}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_moment=(obj=require("moment"))&&obj.__esModule?obj:{default:obj},_sequelize=require("sequelize"),_sequelizetypescript=require("sequelize-typescript"),_logger=require("../logger");let Repository=class Repository{logger=new _logger.AppLogger(this.constructor.name);Model;db;excludeParamsFromFilter=["attributes","include","where","orWhere","andWhere","q","searchKey","page","perPage","orderBy","sort","groupBy","order"];get attributes(){return Object.keys(this.Model.getAttributes())}get attributesTypes(){let attributes=this.Model.getAttributes();return Object.keys(attributes).map(attr=>({name:attr,type:attributes[attr].type}))}getTrueKey(key){return key.replace("min_","").replace("max_","").replace("start_","").replace("end_","")}parsedBetweenData(where,key,value){let col=this.getTrueKey(key),operation=key.startsWith("start_")||key.startsWith("min_")?"gte":"lte";if(value=key.startsWith("_start")||key.startsWith("end_")?(0,_moment.default)(value).utc().format("YYYY-MM-DD HH:mm:ss"):value,void 0===where[col])return{[_sequelize.Op[operation]]:value};let beforeValue=where[col][_sequelize.Op["gte"==operation?"lte":"gte"]];return beforeValue=key.startsWith("_start")||key.startsWith("end_")?(0,_moment.default)(beforeValue).utc().format("YYYY-MM-DD HH:mm:ss"):beforeValue,{[_sequelize.Op.between]:"gte"===operation?[value,beforeValue]:[beforeValue,value]}}mapFilter(filter,cols){let where={};for(let key of Object.keys(filter)){let isSpecialKey=key.includes("$")||key.includes(".");if(!cols.includes(this.getTrueKey(key))&&!isSpecialKey)continue;let value=filter[key],col=this.getTrueKey(key);if(void 0!==value&&""!==value){if(key.startsWith("min_")||key.startsWith("start_")||key.startsWith("max_")||key.startsWith("end_")){where[col]=this.parsedBetweenData(where,key,value);continue}if("string"==typeof value&&value.includes(",")){where[col]=value.split(",");continue}if("object"==typeof value&&!Array.isArray(value)){where[col]={...value};continue}where[col]=value}}return where}_getOptions(params){let fields=this.attributes,where=this.mapFilter({...params.where,...(0,_helpers.omit)(params,this.excludeParamsFromFilter)},fields);if(params.q&&params.searchKey){let searchConditions=Array.isArray(params.searchKey)?params.searchKey.map(key=>({[key]:{[_sequelize.Op.like]:`%${params.q}%`}})):[{[params.searchKey]:{[_sequelize.Op.like]:`%${params.q}%`}}];where={...where,[_sequelize.Op.and]:[...params.andWhere||[],{[_sequelize.Op.or]:[...searchConditions,...params.orWhere||[]]}]}}(params.orWhere||params.andWhere)&&(where={...where,[_sequelize.Op.and]:[...params.andWhere||[],{[_sequelize.Op.or]:params.orWhere||[]}]});let order=[];params?.orderBy&&fields.includes(params?.orderBy)&&order.push([params?.orderBy,params?.sort??"DESC"]),params?.order&&order.push(...params.order,["id","ASC"]);let attributes=params.attributes?params.attributes.filter(d=>"string"!=typeof d||fields.includes(d)):void 0;return{where,order,group:params?.groupBy,...attributes&&{attributes},include:params.include}}async findForPublic(params,mapInto){let options=this._getOptions(params),limit=+(params?.perPage??20);return(await this.findAll({...options,limit})).map(d=>mapInto(d))}async paginate(params,mapInto){let options=this._getOptions(params),limit=+(params?.perPage??20),page=+(params?.page??1),data=await this.findAndCountAll({limit,offset:page>1?limit*(page-1):0,...options,distinct:!0});data.count=Array.isArray(data.count)?data.count.length:data.count;let totalPage=Math.ceil(data.count/limit);return{data:mapInto?data.rows.map(d=>mapInto(d)):data.rows,timestamp:(0,_moment.default)().utc().toISOString(!0),meta:{perPage:limit,page:page,totalPage:totalPage,total:data.count,prevPage:page>1?page-1:null,nextPage:page<totalPage?page+1:null}}}async export(params,mapInto){let options=this._getOptions(params),data=await this.findAll(options);return mapInto?data.map(d=>mapInto(d)):data}async updateOrCreate(values,whereOptions,options){let data=await this.findOne({where:whereOptions});return data?(await this.update(data,values,options),data):await this.create(values,options)}async findAll(options){return await this.Model.findAll(options)}async findAndCountAll(options){return await this.Model.findAndCountAll(options)}async findOne(options){return await this.Model.findOne(options)}async create(values,options){return await this.Model.create(values,options)}async update(entity,values,options){if("string"==typeof entity&&(entity=await this.findOne({where:{id:entity},attributes:["id"]})),!entity)throw new _common.NotFoundException;return await entity.update(values,{...options})}async upsert(values,options){return await this.Model.upsert(values,{...options})}async bulkUpdate(values,options){return await this.Model.update(values,{...options})}async bulkCreate(values,options){let idAttribute=this.attributesTypes.find(attr=>"id"===attr.name);return idAttribute&&"BIGINT"!==idAttribute.type&&(values=values.map(val=>(val.id||(val.id=generateId()),val))),await this.Model.bulkCreate(values,options)}async destroy(options){return await this.Model.destroy(options)}async sum(field,options){return await this.Model.sum(field,options)}async sumField(params,field){let options=this._getOptions(params);return await this.sum(field,options)}async sumCol(params,fieldToSum,expectedField){let options=this._getOptions(params);return options.attributes=[[(0,_sequelize.fn)("sum",(0,_sequelize.col)(fieldToSum)),expectedField]],(await this.Model.findAll(options)).reduce((total,row)=>total+parseFloat(String(row.get(expectedField))||"0"),0)}async count(options){return await this.Model.count(options)}async filteredFindAll(params){let options=this._getOptions(params);return await this.Model.findAll(options)}};!function(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);c>3&&r&&Object.defineProperty(target,key,r)}([(0,_common.Inject)(_sequelizetypescript.Sequelize),function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}("design:type",void 0===_sequelizetypescript.Sequelize?Object:_sequelizetypescript.Sequelize)],Repository.prototype,"db",void 0);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Repository",{enumerable:!0,get:function(){return Repository}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_sequelize=require("sequelize"),_sequelizetypescript=require("sequelize-typescript"),_logger=require("../logger");let Repository=class Repository{logger=new _logger.AppLogger(this.constructor.name);Model;db;excludeParamsFromFilter=["attributes","include","where","orWhere","andWhere","q","searchKey","page","perPage","orderBy","sort","groupBy","order"];get attributes(){return Object.keys(this.Model.getAttributes())}get attributesTypes(){let attributes=this.Model.getAttributes();return Object.keys(attributes).map(attr=>({name:attr,type:attributes[attr].type}))}getTrueKey(key){return key.replace("min_","").replace("max_","").replace("start_","").replace("end_","")}parsedBetweenData(where,key,value){let col=this.getTrueKey(key),operation=key.startsWith("start_")||key.startsWith("min_")?"gte":"lte";if(value=key.startsWith("_start")||key.startsWith("end_")?(0,_helpers.dateUtil)(value).utc().format("YYYY-MM-DD HH:mm:ss"):value,void 0===where[col])return{[_sequelize.Op[operation]]:value};let beforeValue=where[col][_sequelize.Op["gte"==operation?"lte":"gte"]];return beforeValue=key.startsWith("_start")||key.startsWith("end_")?(0,_helpers.dateUtil)(beforeValue).utc().format("YYYY-MM-DD HH:mm:ss"):beforeValue,{[_sequelize.Op.between]:"gte"===operation?[value,beforeValue]:[beforeValue,value]}}mapFilter(filter,cols){let where={};for(let key of Object.keys(filter)){let isSpecialKey=key.includes("$")||key.includes(".");if(!cols.includes(this.getTrueKey(key))&&!isSpecialKey)continue;let value=filter[key],col=this.getTrueKey(key);if(void 0!==value&&""!==value){if(key.startsWith("min_")||key.startsWith("start_")||key.startsWith("max_")||key.startsWith("end_")){where[col]=this.parsedBetweenData(where,key,value);continue}if("string"==typeof value&&value.includes(",")){where[col]=value.split(",");continue}if("object"==typeof value&&!Array.isArray(value)){where[col]={...value};continue}where[col]=value}}return where}_getOptions(params){let fields=this.attributes,where=this.mapFilter({...params.where,...(0,_helpers.omit)(params,this.excludeParamsFromFilter)},fields);if(params.q&&params.searchKey){let searchConditions=Array.isArray(params.searchKey)?params.searchKey.map(key=>({[key]:{[_sequelize.Op.like]:`%${params.q}%`}})):[{[params.searchKey]:{[_sequelize.Op.like]:`%${params.q}%`}}];where={...where,[_sequelize.Op.and]:[...params.andWhere||[],{[_sequelize.Op.or]:[...searchConditions,...params.orWhere||[]]}]}}(params.orWhere||params.andWhere)&&(where={...where,[_sequelize.Op.and]:[...params.andWhere||[],{[_sequelize.Op.or]:params.orWhere||[]}]});let order=[];params?.orderBy&&fields.includes(params?.orderBy)&&order.push([params?.orderBy,params?.sort??"DESC"]),params?.order&&order.push(...params.order,["id","ASC"]);let attributes=params.attributes?params.attributes.filter(d=>"string"!=typeof d||fields.includes(d)):void 0;return{where,order,group:params?.groupBy,...attributes&&{attributes},include:params.include}}async findForPublic(params,mapInto){let options=this._getOptions(params),limit=+(params?.perPage??20);return(await this.findAll({...options,limit})).map(d=>mapInto(d))}async paginate(params,mapInto){let options=this._getOptions(params),limit=+(params?.perPage??20),page=+(params?.page??1),data=await this.findAndCountAll({limit,offset:page>1?limit*(page-1):0,...options,distinct:!0});data.count=Array.isArray(data.count)?data.count.length:data.count;let totalPage=Math.ceil(data.count/limit);return{data:mapInto?data.rows.map(d=>mapInto(d)):data.rows,timestamp:(0,_helpers.dateUtil)().utc().toISOString(),meta:{perPage:limit,page:page,totalPage:totalPage,total:data.count,prevPage:page>1?page-1:null,nextPage:page<totalPage?page+1:null}}}async export(params,mapInto){let options=this._getOptions(params),data=await this.findAll(options);return mapInto?data.map(d=>mapInto(d)):data}async updateOrCreate(values,whereOptions,options){let data=await this.findOne({where:whereOptions});return data?(await this.update(data,values,options),data):await this.create(values,options)}async findAll(options){return await this.Model.findAll(options)}async findAndCountAll(options){return await this.Model.findAndCountAll(options)}async findOne(options){return await this.Model.findOne(options)}async create(values,options){return await this.Model.create(values,options)}async update(entity,values,options){if("string"==typeof entity&&(entity=await this.findOne({where:{id:entity},attributes:["id"]})),!entity)throw new _common.NotFoundException;return await entity.update(values,{...options})}async upsert(values,options){return await this.Model.upsert(values,{...options})}async bulkUpdate(values,options){return await this.Model.update(values,{...options})}async bulkCreate(values,options){let idAttribute=this.attributesTypes.find(attr=>"id"===attr.name);return idAttribute&&"BIGINT"!==idAttribute.type&&(values=values.map(val=>(val.id||(val.id=generateId()),val))),await this.Model.bulkCreate(values,options)}async destroy(options){return await this.Model.destroy(options)}async sum(field,options){return await this.Model.sum(field,options)}async sumField(params,field){let options=this._getOptions(params);return await this.sum(field,options)}async sumCol(params,fieldToSum,expectedField){let options=this._getOptions(params);return options.attributes=[[(0,_sequelize.fn)("sum",(0,_sequelize.col)(fieldToSum)),expectedField]],(await this.Model.findAll(options)).reduce((total,row)=>total+parseFloat(String(row.get(expectedField))||"0"),0)}async count(options){return await this.Model.count(options)}async filteredFindAll(params){let options=this._getOptions(params);return await this.Model.findAll(options)}};!function(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);c>3&&r&&Object.defineProperty(target,key,r)}([(0,_common.Inject)(_sequelizetypescript.Sequelize),function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}("design:type",void 0===_sequelizetypescript.Sequelize?Object:_sequelizetypescript.Sequelize)],Repository.prototype,"db",void 0);
@@ -1 +1 @@
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
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var 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"),_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,_helpers.dateUtil)(request?.requestStartAt).utc().toISOString():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));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@triproject/nestjs-core",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "author": "",
5
5
  "license": "ISC",
6
6
  "description": "A collection of NestJS modules and utilities to speed up development.",
@@ -17,8 +17,8 @@
17
17
  "require": "./dist/bootstrap.js"
18
18
  },
19
19
  "./config": {
20
- "types": "./dist/drivers/config.d.ts",
21
- "require": "./dist/drivers/config.js"
20
+ "types": "./dist/config.d.ts",
21
+ "require": "./dist/config.js"
22
22
  },
23
23
  "./cache": {
24
24
  "types": "./dist/drivers/cache/index.d.ts",
@@ -63,6 +63,14 @@
63
63
  "./totp": {
64
64
  "types": "./dist/utils/totp.d.ts",
65
65
  "require": "./dist/utils/totp.js"
66
+ },
67
+ "./redlock": {
68
+ "types": "./dist/utils/redlock.d.ts",
69
+ "require": "./dist/utils/redlock.js"
70
+ },
71
+ "./secret-manager": {
72
+ "types": "./dist/drivers/secret-manager/index.d.ts",
73
+ "require": "./dist/drivers/secret-manager/index.js"
66
74
  }
67
75
  },
68
76
  "scripts": {
@@ -70,26 +78,30 @@
70
78
  "test": "vitest run"
71
79
  },
72
80
  "peerDependencies": {
81
+ "@aws-sdk/client-cloudwatch-logs": "^3.0.0",
82
+ "@aws-sdk/client-s3": "^3.0.0",
83
+ "@aws-sdk/client-secrets-manager": "^3.0.0",
84
+ "@aws-sdk/s3-request-presigner": "^3.0.0",
85
+ "@nest-lab/throttler-storage-redis": "^1.0.0",
86
+ "@nestjs/bull": "^11.0.0",
87
+ "@nestjs/bullmq": "^11.0.0",
73
88
  "@nestjs/common": "^11.0.0",
74
89
  "@nestjs/core": "^11.0.0",
90
+ "@nestjs/sequelize": "^11.0.0",
75
91
  "@nestjs/swagger": "^11.0.0",
92
+ "@nestjs/throttler": "^6.0.0",
76
93
  "@triproject/helpers": "^1.0.14",
94
+ "amqp-connection-manager": "^5.0.0",
95
+ "amqplib": "^0.10.0",
96
+ "axios": "^1.0.0",
97
+ "bull": "^4.0.0",
98
+ "bullmq": "^5.0.0",
77
99
  "class-validator": "^0.14.0",
78
100
  "cookie-parser": "^1.4.0",
79
101
  "dotenv": "^16.0.0 || ^17.0.0",
102
+ "exceljs": "^4.0.0",
80
103
  "express": "^4.0.0 || ^5.0.0",
81
104
  "helmet": "^7.0.0 || ^8.0.0",
82
- "sequelize-typescript": "^2.0.0",
83
- "ua-parser-js": "^2.0.7",
84
- "amqplib": "^0.10.0",
85
- "amqp-connection-manager": "^5.0.0",
86
- "axios": "^1.0.0",
87
- "@aws-sdk/client-cloudwatch-logs": "^3.0.0",
88
- "@nestjs/bull": "^11.0.0",
89
- "@nestjs/bullmq": "^11.0.0",
90
- "@nestjs/sequelize": "^11.0.0",
91
- "bull": "^4.0.0",
92
- "bullmq": "^5.0.0",
93
105
  "ioredis": "^5.0.0",
94
106
  "jsonwebtoken": "^9.0.0",
95
107
  "kafkajs": "^2.2.0",
@@ -97,10 +109,12 @@
97
109
  "nodemailer": "^6.0.0 || ^7.0.0",
98
110
  "qrcode": "^1.5.0",
99
111
  "redis": "^4.0.0 || ^5.0.0",
112
+ "redlock": "^5.0.0",
113
+ "rxjs": "^7.0.0",
100
114
  "sequelize": "^6.0.0",
115
+ "sequelize-typescript": "^2.0.0",
101
116
  "speakeasy": "^2.0.0",
102
- "@aws-sdk/s3-request-presigner": "^3.0.0",
103
- "@aws-sdk/client-s3": "^3.0.0"
117
+ "ua-parser-js": "^2.0.7"
104
118
  },
105
119
  "peerDependenciesMeta": {
106
120
  "amqplib": {
@@ -165,6 +179,24 @@
165
179
  },
166
180
  "@aws-sdk/client-s3": {
167
181
  "optional": true
182
+ },
183
+ "redlock": {
184
+ "optional": true
185
+ },
186
+ "@aws-sdk/client-secrets-manager": {
187
+ "optional": true
188
+ },
189
+ "exceljs": {
190
+ "optional": true
191
+ },
192
+ "rxjs": {
193
+ "optional": true
194
+ },
195
+ "@nest-lab/throttler-storage-redis": {
196
+ "optional": true
197
+ },
198
+ "@nestjs/throttler": {
199
+ "optional": true
168
200
  }
169
201
  },
170
202
  "devDependencies": {
@@ -182,7 +214,7 @@
182
214
  "@nestjs/throttler": "^6.5.0",
183
215
  "@swc/cli": "^0.7.9",
184
216
  "@swc/core": "^1.15.7",
185
- "@triproject/helpers": "^1.0.14",
217
+ "@triproject/helpers": "^1.1.19",
186
218
  "@types/amqp-connection-manager": "^3.4.5",
187
219
  "@types/amqplib": "^0.10.8",
188
220
  "@types/cookie-parser": "^1.4.10",