@triproject/nestjs-core 1.0.28 → 1.0.29
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/bootstrap.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"bootstrap",{enumerable:!0,get:function(){return bootstrap}});let _common=require("@nestjs/common"),_core=require("@nestjs/core"),_cookieparser=/*#__PURE__*/_interop_require_default(require("cookie-parser")),_helmet=/*#__PURE__*/_interop_require_default(require("helmet")),_config=require("./config"),_applogger=require("./drivers/logger/app.logger"),_httphelper=require("./helpers/http.helper");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}async function bootstrap(module,swaggerSetup){let logger=new _applogger.AppLogger("Bootstrap App"),app=await _core.NestFactory.create(module,{rawBody:!0,logger});app.use((0,_cookieparser.default)()),app.useGlobalPipes(new _common.ValidationPipe({skipMissingProperties:!0,whitelist:!0,transform:!0,transformOptions:{enableImplicitConversion:!0}})),app.use((0,_helmet.default)()),app.useGlobalFilters(new _httphelper.HttpExceptionFilter),app.useGlobalInterceptors(new _httphelper.TransformResponseInterceptor),app.enableCors({origin:_config.ALLOWED_ORIGINS,credentials:!0}),swaggerSetup&&swaggerSetup(app),await app.listen(_config.APP_PORT).then(()=>{logger.log(`Server started on port ${_config.APP_PORT}`),swaggerSetup&&logger.log(`Swagger docs available at http://localhost:${_config.APP_PORT}/docs`)}).catch(error=>logger.error("Failed to start server",error))}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"bootstrap",{enumerable:!0,get:function(){return bootstrap}});let _common=require("@nestjs/common"),_core=require("@nestjs/core"),_cookieparser=/*#__PURE__*/_interop_require_default(require("cookie-parser")),_helmet=/*#__PURE__*/_interop_require_default(require("helmet")),_config=require("./config"),_applogger=require("./drivers/logger/app.logger"),_httphelper=require("./helpers/http.helper");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}async function bootstrap(module,swaggerSetup){let logger=new _applogger.AppLogger("Bootstrap App"),app=await _core.NestFactory.create(module,{rawBody:!0,logger});app.use((0,_cookieparser.default)()),app.useBodyParser("urlencoded",{limit:"10mb",extended:!0}),app.useBodyParser("json",{limit:"10mb"}),app.useGlobalPipes(new _common.ValidationPipe({skipMissingProperties:!0,whitelist:!0,transform:!0,transformOptions:{enableImplicitConversion:!0}})),app.use((0,_helmet.default)()),app.useGlobalFilters(new _httphelper.HttpExceptionFilter),app.useGlobalInterceptors(new _httphelper.TransformResponseInterceptor),app.enableCors({origin:_config.ALLOWED_ORIGINS,credentials:!0}),swaggerSetup&&swaggerSetup(app),await app.listen(_config.APP_PORT).then(()=>{logger.log(`Server started on port ${_config.APP_PORT}`),swaggerSetup&&logger.log(`Swagger docs available at http://localhost:${_config.APP_PORT}/docs`)}).catch(error=>logger.error("Failed to start server",error))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppController",{enumerable:!0,get:function(){return AppController}});let _common=require("@nestjs/common"),_core=require("@nestjs/core"),_helpers=require("@triproject/helpers"),_cache=require("../drivers/cache"),_swaggerhelper=require("../helpers/swagger.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)}let AppController=class AppController{req;appCache;_cacheKey(){let keys=[this.constructor.name,this.req.path,this.req.method];return this.req.query&&Object.keys(this.req.query).length&&keys.push((0,_helpers.qs)(this.req.query)),this.req.body&&Object.keys(this.req.body).length&&keys.push((0,_helpers.qs)(this.req.body)),keys}async cache(callback,ttl=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppController",{enumerable:!0,get:function(){return AppController}});let _common=require("@nestjs/common"),_core=require("@nestjs/core"),_helpers=require("@triproject/helpers"),_cache=require("../drivers/cache"),_swaggerhelper=require("../helpers/swagger.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)}let AppController=class AppController{req;appCache;_cacheKey(){let keys=[this.constructor.name,this.req.path,this.req.method];return this.req.query&&Object.keys(this.req.query).length&&keys.push((0,_helpers.qs)(this.req.query)),this.req.body&&Object.keys(this.req.body).length&&keys.push((0,_helpers.qs)(this.req.body)),keys}async cache(callback,ttl=6e4){return await this.appCache.cache(this._cacheKey(),callback,ttl)}async cacheWithTimestamp(callback,ttl=6e4){return await this.appCache.cacheWithTimeStamp(this._cacheKey(),callback,ttl)}async clearCache(){await this.appCache.delAll(this.constructor.name)}};_ts_decorate([(0,_common.Inject)(_core.REQUEST),_ts_metadata("design:type","u"<typeof Request?Object:Request)],AppController.prototype,"req",void 0),_ts_decorate([(0,_common.Inject)(_cache.AppCache),_ts_metadata("design:type",void 0===_cache.AppCache?Object:_cache.AppCache)],AppController.prototype,"appCache",void 0),AppController=_ts_decorate([_swaggerhelper.SwaggerApiInternalServerErrorResponse,_swaggerhelper.SwaggerApiBadSwaGatewayResponse,_swaggerhelper.SwaggerApiConflictResponse,_swaggerhelper.SwaggerApiForbiddenResponse,_swaggerhelper.SwaggerApiUnauthorizedResponse],AppController);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppCache",{enumerable:!0,get:function(){return AppCache}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_config=require("../../config"),_redis=require("./redis");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let AppCache=class AppCache{connection;readConnection;PREFIX=_config.APP_KEY??"APP_CACHE";constructor(redis){this.connection=redis.getConnection(),this.readConnection=redis.getReadConnection()}_parseKey(key){if(!key)throw new _common.UnprocessableEntityException("Cache key cannot be null or undefined");let keys=[this.PREFIX];return Array.isArray(key)?keys.push(...key):keys.push(key?.toString()),keys.flat().flat().filter(d=>d).map(d=>d?.toString()?.toUpperCase()).join("::").replaceAll(/[^a-zA-Z0-9\-:]/g,"-")}async set(key,value,ttl=60){await this.connection.set(this._parseKey(key),JSON.stringify({data:value}),"EX",ttl)}async get(key){try{let data=await this.readConnection.get(this._parseKey(key));if(!data)return;let parsedData=JSON.parse(data?.toString());return parsedData?.data}catch(error){return}}async del(key){await this.connection.del(this._parseKey(key))}async delAll(key){for(let k of(await this.connection.keys(`${this._parseKey(key)}*`)))await this.connection.del(k)}async cache(key,fn,ttl=60){let data=await this.get(key);if(data)return data;let result=await fn();return await this.set(key,result,ttl),result}async cacheWithTimeStamp(key,value,ttl){try{let data=await this.get(key);if(data)return data;return data={data:"function"==typeof value?await value():value,timestamp:(0,_helpers.dateUtil)().utc().
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppCache",{enumerable:!0,get:function(){return AppCache}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_config=require("../../config"),_redis=require("./redis");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let AppCache=class AppCache{connection;readConnection;PREFIX=_config.APP_KEY??"APP_CACHE";constructor(redis){this.connection=redis.getConnection(),this.readConnection=redis.getReadConnection()}_parseKey(key){if(!key)throw new _common.UnprocessableEntityException("Cache key cannot be null or undefined");let keys=[this.PREFIX];return Array.isArray(key)?keys.push(...key):keys.push(key?.toString()),keys.flat().flat().filter(d=>d).map(d=>d?.toString()?.toUpperCase()).join("::").replaceAll(/[^a-zA-Z0-9\-:]/g,"-")}async set(key,value,ttl=60){await this.connection.set(this._parseKey(key),JSON.stringify({data:value}),"EX",ttl)}async get(key){try{let data=await this.readConnection.get(this._parseKey(key));if(!data)return;let parsedData=JSON.parse(data?.toString());return parsedData?.data}catch(error){return}}async del(key){await this.connection.del(this._parseKey(key))}async delAll(key){for(let k of(await this.connection.keys(`${this._parseKey(key)}*`)))await this.connection.del(k)}async cache(key,fn,ttl=60){let data=await this.get(key);if(data)return data;let result=await fn();return await this.set(key,result,ttl),result}async cacheWithTimeStamp(key,value,ttl){try{let data=await this.get(key);if(data)return data;return data={data:"function"==typeof value?await value():value,timestamp:(0,_helpers.dateUtil)().utc().toISOString()},this.set(key,data,ttl),data}catch(error){throw error}}};AppCache=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);return c>3&&r&&Object.defineProperty(target,key,r),r}([(0,_common.Injectable)(),_ts_metadata("design:type",Function),_ts_metadata("design:paramtypes",[void 0===_redis.Redis?Object:_redis.Redis])],AppCache);
|
|
@@ -44,7 +44,7 @@ export declare function NumberCol(precision?: number, scale?: number, options?:
|
|
|
44
44
|
export declare function BooleanCol(defaultValue?: boolean): Function;
|
|
45
45
|
export declare function NameCol(): Function;
|
|
46
46
|
export declare function EnumCol<T>(data: MapFromList<T>): Function;
|
|
47
|
-
export declare function SchedulerCol():
|
|
47
|
+
export declare function SchedulerCol(options?: Partial<ModelAttributeColumnOptions>): Function;
|
|
48
48
|
export declare class Entity<M extends {}> extends Model<M, Partial<M>> {
|
|
49
49
|
id: string;
|
|
50
50
|
createdAt: Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get BooleanCol(){return BooleanCol},get CreatedAtCol(){return CreatedAtCol},get Entity(){return Entity},get EnumCol(){return EnumCol},get ForeignUuidCol(){return ForeignUuidCol},get NameCol(){return NameCol},get NumberCol(){return NumberCol},get PaginateRequest(){return PaginateRequest},get PaginateResponse(){return PaginateResponse},get PrimaryCodeCol(){return PrimaryCodeCol},get PrimaryNumberCol(){return PrimaryNumberCol},get PrimaryUuidCol(){return PrimaryUuidCol},get RelationEntity(){return RelationEntity},get SchedulerCol(){return SchedulerCol},get UpdatedAtCol(){return UpdatedAtCol}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _swagger=require("@nestjs/swagger"),_helpers=require("@triproject/helpers"),_classvalidator=require("class-validator"),_sequelizetypescript=require("sequelize-typescript");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 PaginateResponse=class PaginateResponse{data;timestamp;meta};_ts_decorate([(0,_swagger.ApiProperty)({example:"2025-06-01T12:00:00Z",description:"Timestamp of the response"}),_ts_metadata("design:type",String)],PaginateResponse.prototype,"timestamp",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)],PaginateResponse.prototype,"meta",void 0);let PaginateRequest=class PaginateRequest{perPage;page;q;orderBy;sort;searchKey;order;include;where;orWhere;andWhere;attributes;groupBy};function PrimaryUuidCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:!1,primaryKey:!0,defaultValue:()=>(0,_helpers.generateId)()})}function PrimaryCodeCol(){return(0,_sequelizetypescript.Column)({allowNull:!1,primaryKey:!0,type:_sequelizetypescript.DataType.STRING(100),defaultValue:()=>(0,_helpers.generateCode)()})}function PrimaryNumberCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BIGINT,allowNull:!1,primaryKey:!0,autoIncrement:!0,get(){return+this.getDataValue("id")}})}function CreatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime()})}function UpdatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime(),onUpdate:"UPDATE CURRENT_TIMESTAMP"})}function ForeignUuidCol(params){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:params?.allowNull??!1})}function NumberCol(precision=5,scale=0,options={}){return options.type=_sequelizetypescript.DataType.INTEGER,precision<=5&&(options.type=_sequelizetypescript.DataType.MEDIUMINT),precision<=3&&(options.type=_sequelizetypescript.DataType.SMALLINT),precision<=2&&(options.type=_sequelizetypescript.DataType.TINYINT),precision>10&&(options.type=_sequelizetypescript.DataType.BIGINT),scale>0&&(options.type=_sequelizetypescript.DataType.DECIMAL(precision,scale),options.get=function(){let value=this.getDataValue(options.field??"");return null!=value?+value:value}),(0,_sequelizetypescript.Column)({...options,defaultValue:0})}function BooleanCol(defaultValue=!0){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BOOLEAN,defaultValue})}function NameCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.STRING(100),allowNull:!1})}function EnumCol(data){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.ENUM(...data.enum),allowNull:!1})}function SchedulerCol(){return(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get BooleanCol(){return BooleanCol},get CreatedAtCol(){return CreatedAtCol},get Entity(){return Entity},get EnumCol(){return EnumCol},get ForeignUuidCol(){return ForeignUuidCol},get NameCol(){return NameCol},get NumberCol(){return NumberCol},get PaginateRequest(){return PaginateRequest},get PaginateResponse(){return PaginateResponse},get PrimaryCodeCol(){return PrimaryCodeCol},get PrimaryNumberCol(){return PrimaryNumberCol},get PrimaryUuidCol(){return PrimaryUuidCol},get RelationEntity(){return RelationEntity},get SchedulerCol(){return SchedulerCol},get UpdatedAtCol(){return UpdatedAtCol}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _swagger=require("@nestjs/swagger"),_helpers=require("@triproject/helpers"),_classvalidator=require("class-validator"),_sequelizetypescript=require("sequelize-typescript");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 PaginateResponse=class PaginateResponse{data;timestamp;meta};_ts_decorate([(0,_swagger.ApiProperty)({example:"2025-06-01T12:00:00Z",description:"Timestamp of the response"}),_ts_metadata("design:type",String)],PaginateResponse.prototype,"timestamp",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)],PaginateResponse.prototype,"meta",void 0);let PaginateRequest=class PaginateRequest{perPage;page;q;orderBy;sort;searchKey;order;include;where;orWhere;andWhere;attributes;groupBy};function PrimaryUuidCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:!1,primaryKey:!0,defaultValue:()=>(0,_helpers.generateId)()})}function PrimaryCodeCol(){return(0,_sequelizetypescript.Column)({allowNull:!1,primaryKey:!0,type:_sequelizetypescript.DataType.STRING(100),defaultValue:()=>(0,_helpers.generateCode)()})}function PrimaryNumberCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BIGINT,allowNull:!1,primaryKey:!0,autoIncrement:!0,get(){return+this.getDataValue("id")}})}function CreatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime()})}function UpdatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime(),onUpdate:"UPDATE CURRENT_TIMESTAMP"})}function ForeignUuidCol(params){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:params?.allowNull??!1})}function NumberCol(precision=5,scale=0,options={}){return options.type=_sequelizetypescript.DataType.INTEGER,precision<=5&&(options.type=_sequelizetypescript.DataType.MEDIUMINT),precision<=3&&(options.type=_sequelizetypescript.DataType.SMALLINT),precision<=2&&(options.type=_sequelizetypescript.DataType.TINYINT),precision>10&&(options.type=_sequelizetypescript.DataType.BIGINT),scale>0&&(options.type=_sequelizetypescript.DataType.DECIMAL(precision,scale),options.get=function(){let value=this.getDataValue(options.field??"");return null!=value?+value:value}),(0,_sequelizetypescript.Column)({...options,defaultValue:0})}function BooleanCol(defaultValue=!0){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BOOLEAN,defaultValue})}function NameCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.STRING(100),allowNull:!1})}function EnumCol(data){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.ENUM(...data.enum),allowNull:!1})}function SchedulerCol(options){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.STRING(512),get(){if(!options?.field)return[];try{let rawValue=this.getDataValue(options.field)??"[]";return JSON.parse(rawValue).map(([start,end])=>({start:(0,_helpers.dateUtil)(start).toDate(),end:(0,_helpers.dateUtil)(end).toDate()}))}catch(error){return[]}},set(value){options?.field&&this.setDataValue(options.field,JSON.stringify(value.map(({start,end})=>[(0,_helpers.dateUtil)(start).toISOString(),(0,_helpers.dateUtil)(end).toISOString()])))}})}_ts_decorate([(0,_swagger.ApiProperty)({example:10,description:"Number of items per page"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsNumber)(),_ts_metadata("design:type",Number)],PaginateRequest.prototype,"perPage",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:1,description:"Current page number"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsNumber)(),_ts_metadata("design:type",Number)],PaginateRequest.prototype,"page",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"search query",description:"Search query"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsString)(),_ts_metadata("design:type",String)],PaginateRequest.prototype,"q",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"createdAt",description:"Order by field"}),(0,_classvalidator.IsString)(),(0,_classvalidator.IsOptional)(),_ts_metadata("design:type","u"<typeof KeyOfModel?Object:KeyOfModel)],PaginateRequest.prototype,"orderBy",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"ASC",enum:["ASC","DESC"],description:"Sort order"}),(0,_classvalidator.IsEnum)(["ASC","DESC"]),_ts_metadata("design:type","u"<typeof OrderDataType?Object:OrderDataType)],PaginateRequest.prototype,"sort",void 0);let Entity=class Entity extends _sequelizetypescript.Model{};_ts_decorate([PrimaryUuidCol(),_ts_metadata("design:type",String)],Entity.prototype,"id",void 0),_ts_decorate([CreatedAtCol(),_ts_metadata("design:type","u"<typeof Date?Object:Date)],Entity.prototype,"createdAt",void 0),_ts_decorate([UpdatedAtCol(),_ts_metadata("design:type","u"<typeof Date?Object:Date)],Entity.prototype,"updatedAt",void 0),Entity=_ts_decorate([(0,_sequelizetypescript.Table)({underscored:!1,timestamps:!0})],Entity);let RelationEntity=class RelationEntity extends _sequelizetypescript.Model{};_ts_decorate([PrimaryNumberCol(),_ts_metadata("design:type",Number)],RelationEntity.prototype,"id",void 0),RelationEntity=_ts_decorate([(0,_sequelizetypescript.Table)({underscored:!1,timestamps:!1})],RelationEntity);
|
|
@@ -1 +1 @@
|
|
|
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&¶ms.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
|
|
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"),_exceptionhelper=require("../../helpers/exception.helper"),_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&¶ms.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 _exceptionhelper.AppNotFoundException;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);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@triproject/nestjs-core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.29",
|
|
4
4
|
"author": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"description": "A collection of NestJS modules and utilities to speed up development.",
|
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
"test": "vitest run"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
|
+
"@nestjs/platform-express": "^11.1.11",
|
|
81
82
|
"@aws-sdk/client-cloudwatch-logs": "^3.0.0",
|
|
82
83
|
"@aws-sdk/client-s3": "^3.0.0",
|
|
83
84
|
"@aws-sdk/client-secrets-manager": "^3.0.0",
|
|
@@ -110,7 +111,7 @@
|
|
|
110
111
|
"qrcode": "^1.5.0",
|
|
111
112
|
"redis": "^4.0.0 || ^5.0.0",
|
|
112
113
|
"redlock": "^5.0.0",
|
|
113
|
-
"rxjs": "^7.
|
|
114
|
+
"rxjs": "^7.8.2",
|
|
114
115
|
"sequelize": "^6.0.0",
|
|
115
116
|
"sequelize-typescript": "^2.0.0",
|
|
116
117
|
"speakeasy": "^2.0.0",
|
|
@@ -200,20 +201,21 @@
|
|
|
200
201
|
}
|
|
201
202
|
},
|
|
202
203
|
"devDependencies": {
|
|
203
|
-
"@
|
|
204
|
-
"@aws-sdk/client-
|
|
205
|
-
"@aws-sdk/client-
|
|
206
|
-
"@aws-sdk/
|
|
204
|
+
"@nestjs/platform-express": "^11.1.11",
|
|
205
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.962.0",
|
|
206
|
+
"@aws-sdk/client-s3": "^3.962.0",
|
|
207
|
+
"@aws-sdk/client-secrets-manager": "^3.962.0",
|
|
208
|
+
"@aws-sdk/s3-request-presigner": "^3.962.0",
|
|
207
209
|
"@nest-lab/throttler-storage-redis": "^1.1.0",
|
|
208
210
|
"@nestjs/bull": "^11.0.4",
|
|
209
211
|
"@nestjs/bullmq": "^11.0.4",
|
|
210
|
-
"@nestjs/common": "^11.1.
|
|
211
|
-
"@nestjs/core": "^11.1.
|
|
212
|
+
"@nestjs/common": "^11.1.11",
|
|
213
|
+
"@nestjs/core": "^11.1.11",
|
|
212
214
|
"@nestjs/sequelize": "^11.0.1",
|
|
213
215
|
"@nestjs/swagger": "^11.2.3",
|
|
214
216
|
"@nestjs/throttler": "^6.5.0",
|
|
215
217
|
"@swc/cli": "^0.7.9",
|
|
216
|
-
"@swc/core": "^1.15.
|
|
218
|
+
"@swc/core": "^1.15.8",
|
|
217
219
|
"@triproject/helpers": "^1.1.21",
|
|
218
220
|
"@types/amqp-connection-manager": "^3.4.5",
|
|
219
221
|
"@types/amqplib": "^0.10.8",
|
|
@@ -230,14 +232,14 @@
|
|
|
230
232
|
"amqplib": "^0.10.9",
|
|
231
233
|
"axios": "^1.13.2",
|
|
232
234
|
"bull": "^4.16.5",
|
|
233
|
-
"bullmq": "^5.66.
|
|
235
|
+
"bullmq": "^5.66.4",
|
|
234
236
|
"class-validator": "^0.14.3",
|
|
235
237
|
"cookie-parser": "^1.4.7",
|
|
236
238
|
"dotenv": "^17.2.3",
|
|
237
239
|
"exceljs": "^4.4.0",
|
|
238
240
|
"express": "^5.2.1",
|
|
239
241
|
"helmet": "^8.1.0",
|
|
240
|
-
"ioredis": "^5.
|
|
242
|
+
"ioredis": "^5.9.0",
|
|
241
243
|
"jsonwebtoken": "^9.0.3",
|
|
242
244
|
"kafkajs": "^2.2.4",
|
|
243
245
|
"minio": "^8.0.6",
|