@triproject/nestjs-core 1.0.25 → 1.0.28

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/config.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Dialect } from 'sequelize';
2
+ export declare const TZ: string;
2
3
  export declare const NODE_ENV: string;
3
4
  export declare const APP_NAME: string;
4
5
  export declare const APP_PORT: number;
@@ -32,7 +33,7 @@ export declare const REDIS_DB: number;
32
33
  export declare const REDIS_USER: string | undefined;
33
34
  export declare const REDIS_PASSWORD: string | undefined;
34
35
  export declare const REDIS_TLS: boolean;
35
- export declare const REDIS_READ_HOST: string;
36
+ export declare const REDIS_READ_HOST: string | undefined;
36
37
  export declare const REDIS_READ_PORT: number;
37
38
  export declare const REDIS_READ_DB: number;
38
39
  export declare const REDIS_READ_USER: string | undefined;
@@ -58,7 +59,7 @@ export declare const S3_BUCKET: string;
58
59
  export declare const S3_REGION: string;
59
60
  export declare const S3_ACCESS_KEY_ID: string;
60
61
  export declare const S3_SECRET_ACCESS_KEY: string;
61
- export declare const MINIO_HOST: string;
62
+ export declare const MINIO_HOST: string | undefined;
62
63
  export declare const MINIO_PORT: number;
63
64
  export declare const MINIO_USE_SSL: boolean;
64
65
  export declare const MINIO_ACCESS_KEY: string;
package/dist/config.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get ALLOWED_ORIGINS(){return ALLOWED_ORIGINS},get APP_KEY(){return APP_KEY},get APP_LOGO_URL(){return APP_LOGO_URL},get APP_NAME(){return APP_NAME},get APP_PORT(){return APP_PORT},get AWS_SECRETS_MANAGER_ACCESS_KEY_ID(){return AWS_SECRETS_MANAGER_ACCESS_KEY_ID},get AWS_SECRETS_MANAGER_ENABLED(){return AWS_SECRETS_MANAGER_ENABLED},get AWS_SECRETS_MANAGER_REGION(){return AWS_SECRETS_MANAGER_REGION},get AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY(){return AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY},get AWS_SECRETS_MANAGER_SECRET_NAME(){return AWS_SECRETS_MANAGER_SECRET_NAME},get AWS_SECRETS_MANAGER_VERSION_STAGE(){return AWS_SECRETS_MANAGER_VERSION_STAGE},get CLOUDWATCH_ACCESS_KEY_ID(){return CLOUDWATCH_ACCESS_KEY_ID},get CLOUDWATCH_LOG_GROUP(){return CLOUDWATCH_LOG_GROUP},get CLOUDWATCH_LOG_STREAM(){return CLOUDWATCH_LOG_STREAM},get CLOUDWATCH_REGION(){return CLOUDWATCH_REGION},get CLOUDWATCH_SECRET_ACCESS_KEY(){return CLOUDWATCH_SECRET_ACCESS_KEY},get DB_DIALECT(){return DB_DIALECT},get DB_ENTITIES_PATH(){return DB_ENTITIES_PATH},get DB_HOST(){return DB_HOST},get DB_MAX_POOL_SIZE(){return DB_MAX_POOL_SIZE},get DB_NAME(){return DB_NAME},get DB_PASSWORD(){return DB_PASSWORD},get DB_POOL_ACQUIRE(){return DB_POOL_ACQUIRE},get DB_POOL_IDLE(){return DB_POOL_IDLE},get DB_POOL_MIN(){return DB_POOL_MIN},get DB_PORT(){return DB_PORT},get DB_REPLICA_HOST(){return DB_REPLICA_HOST},get DB_REPLICA_PORT(){return DB_REPLICA_PORT},get DB_SSL(){return DB_SSL},get DB_USER(){return DB_USER},get DEFAULT_THROTTLE_LIMIT(){return DEFAULT_THROTTLE_LIMIT},get DEFAULT_THROTTLE_TTL(){return DEFAULT_THROTTLE_TTL},get ENABLE_CLOUDWATCH_LOGS(){return ENABLE_CLOUDWATCH_LOGS},get ENCRYPTION_KEY(){return ENCRYPTION_KEY},get JWT_PRIVATE_KEY(){return JWT_PRIVATE_KEY},get JWT_PUBLIC_KEY(){return JWT_PUBLIC_KEY},get KAFKA_BROKERS(){return KAFKA_BROKERS},get KAFKA_CLIENT_ID(){return KAFKA_CLIENT_ID},get LANDING_PAGE_URL(){return LANDING_PAGE_URL},get MAIL_EMAIL_SUPPORT(){return MAIL_EMAIL_SUPPORT},get MAIL_ENCRYPTION(){return MAIL_ENCRYPTION},get MAIL_FROM_EMAIL(){return MAIL_FROM_EMAIL},get MAIL_FROM_NAME(){return MAIL_FROM_NAME},get MAIL_HOST(){return MAIL_HOST},get MAIL_MAILER(){return MAIL_MAILER},get MAIL_PASSWORD(){return MAIL_PASSWORD},get MAIL_PORT(){return MAIL_PORT},get MAIL_TO_CC(){return MAIL_TO_CC},get MAIL_USERNAME(){return MAIL_USERNAME},get MESSAGE_BROKER_DRIVER(){return MESSAGE_BROKER_DRIVER},get MINIO_ACCESS_KEY(){return MINIO_ACCESS_KEY},get MINIO_HOST(){return MINIO_HOST},get MINIO_PORT(){return MINIO_PORT},get MINIO_SECRET_KEY(){return MINIO_SECRET_KEY},get MINIO_USE_SSL(){return MINIO_USE_SSL},get NODE_ENV(){return NODE_ENV},get ONESIGNAL_APP_ID(){return ONESIGNAL_APP_ID},get ONESIGNAL_REST_API_KEY(){return ONESIGNAL_REST_API_KEY},get PASSWORD_HASH_SECRET(){return PASSWORD_HASH_SECRET},get RABBITMQ_HOST(){return RABBITMQ_HOST},get REDIS_DB(){return REDIS_DB},get REDIS_HOST(){return REDIS_HOST},get REDIS_PASSWORD(){return REDIS_PASSWORD},get REDIS_PORT(){return REDIS_PORT},get REDIS_READ_DB(){return REDIS_READ_DB},get REDIS_READ_HOST(){return REDIS_READ_HOST},get REDIS_READ_PASSWORD(){return REDIS_READ_PASSWORD},get REDIS_READ_PORT(){return REDIS_READ_PORT},get REDIS_READ_TLS(){return REDIS_READ_TLS},get REDIS_READ_USER(){return REDIS_READ_USER},get REDIS_TLS(){return REDIS_TLS},get REDIS_USER(){return REDIS_USER},get S3_ACCESS_KEY_ID(){return S3_ACCESS_KEY_ID},get S3_BUCKET(){return S3_BUCKET},get S3_REGION(){return S3_REGION},get S3_SECRET_ACCESS_KEY(){return S3_SECRET_ACCESS_KEY},get SESSION_EXPIRATION(){return SESSION_EXPIRATION},get SESSION_KEY(){return SESSION_KEY},get SLACK_ERROR_WEBHOOK_URL(){return SLACK_ERROR_WEBHOOK_URL},get STORAGE_DRIVER(){return STORAGE_DRIVER}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});(0,require("dotenv").config)({quiet:!0});let NODE_ENV=process.env.NODE_ENV??"development",APP_NAME=process.env.APP_NAME??"MyApp",APP_PORT=Number(process.env.APP_PORT)??3e3,APP_KEY=process.env.APP_KEY??"",SESSION_KEY=process.env.SESSION_KEY??"APP_SESSION",SESSION_EXPIRATION=Number(process.env.SESSION_EXPIRATION)??86400,ALLOWED_ORIGINS=(process.env.ALLOWED_ORIGINS??"http://localhost:3000").split(","),DEFAULT_THROTTLE_TTL=Number(process.env.DEFAULT_THROTTLE_TTL)??60,DEFAULT_THROTTLE_LIMIT=Number(process.env.DEFAULT_THROTTLE_LIMIT)??60,PASSWORD_HASH_SECRET=process.env.PASSWORD_HASH_SECRET??"default_secret",ENCRYPTION_KEY=process.env.ENCRYPTION_KEY,JWT_PUBLIC_KEY=process.env.JWT_PUBLIC_KEY??"",JWT_PRIVATE_KEY=process.env.JWT_PRIVATE_KEY??"",DB_DIALECT="postgres",DB_HOST=process.env.DB_HOST??"localhost",DB_PORT=Number(process.env.DB_PORT)??5432,DB_USER=process.env.DB_USER??"postgres",DB_PASSWORD=process.env.DB_PASSWORD??"password",DB_NAME=process.env.DB_NAME??"postgres",DB_REPLICA_HOST=process.env.DB_REPLICA_HOST??"localhost",DB_REPLICA_PORT=Number(process.env.DB_REPLICA_PORT)??5432,DB_SSL=(process.env.DB_SSL??"false")?.toLowerCase()==="true",DB_MAX_POOL_SIZE=Number(process.env.DB_MAX_POOL_SIZE??10),DB_POOL_MIN=Number(process.env.DB_POOL_MIN??0),DB_POOL_ACQUIRE=Number(process.env.DB_POOL_ACQUIRE??3e4),DB_POOL_IDLE=Number(process.env.DB_POOL_IDLE??1e4),DB_ENTITIES_PATH="./dist/**/**/*.entity.*",REDIS_HOST=process.env.REDIS_HOST??"localhost",REDIS_PORT=Number(process.env.REDIS_PORT)??6379,REDIS_DB=Number(process.env.REDIS_DB)??0,REDIS_USER=process.env.REDIS_USER,REDIS_PASSWORD=process.env.REDIS_PASSWORD,REDIS_TLS=(process.env.REDIS_TLS??"false")?.toLowerCase()==="true",REDIS_READ_HOST=process.env.REDIS_READ_HOST??"localhost",REDIS_READ_PORT=Number(process.env.REDIS_READ_PORT)??6379,REDIS_READ_DB=Number(process.env.REDIS_READ_DB)??0,REDIS_READ_USER=process.env.REDIS_READ_USER,REDIS_READ_PASSWORD=process.env.REDIS_READ_PASSWORD,REDIS_READ_TLS=(process.env.REDIS_READ_TLS??"false")?.toLowerCase()==="true",MAIL_MAILER=process.env.MAIL_MAILER??"smtp",MAIL_HOST=process.env.MAIL_HOST??"127.0.0.1",MAIL_PORT=+(process.env.MAIL_PORT??1025),MAIL_USERNAME=process.env.MAIL_USERNAME??"",MAIL_PASSWORD=process.env.MAIL_PASSWORD??"",MAIL_ENCRYPTION=process.env.MAIL_ENCRYPTION??"false",MAIL_FROM_NAME=process.env.MAIL_FROM_NAME??"Support Team",MAIL_FROM_EMAIL=process.env.MAIL_FROM_EMAIL??"no-reply@app.com",MAIL_TO_CC=process.env.MAIL_TO_CC??"",MAIL_EMAIL_SUPPORT=process.env.MAIL_EMAIL_SUPPORT??"support@app.com",SLACK_ERROR_WEBHOOK_URL=process.env.SLACK_ERROR_WEBHOOK_URL??"",LANDING_PAGE_URL=process.env.LANDING_PAGE_URL??"http://localhost:8000",APP_LOGO_URL=process.env.APP_LOGO_URL??"",ONESIGNAL_APP_ID=process.env.ONESIGNAL_APP_ID??"",ONESIGNAL_REST_API_KEY=process.env.ONESIGNAL_REST_API_KEY??"",STORAGE_DRIVER=process.env.STORAGE_DRIVER??"local",S3_BUCKET=process.env.S3_BUCKET??"",S3_REGION=process.env.S3_REGION??"us-east-1",S3_ACCESS_KEY_ID=process.env.S3_ACCESS_KEY_ID??"",S3_SECRET_ACCESS_KEY=process.env.S3_SECRET_ACCESS_KEY??"",MINIO_HOST=process.env.MINIO_HOST??"localhost",MINIO_PORT=Number(process.env.MINIO_PORT)??9e3,MINIO_USE_SSL=(process.env.MINIO_USE_SSL??"false")?.toLowerCase()==="true",MINIO_ACCESS_KEY=process.env.MINIO_ACCESS_KEY??"",MINIO_SECRET_KEY=process.env.MINIO_SECRET_KEY??"",MESSAGE_BROKER_DRIVER=process.env.MESSAGE_BROKER_DRIVER??"rabbitmq",RABBITMQ_HOST=process.env.RABBITMQ_HOST??"amqp://localhost",KAFKA_BROKERS=(process.env.KAFKA_BROKERS??"localhost:9092").split(","),KAFKA_CLIENT_ID=process.env.KAFKA_CLIENT_ID??"my-app",CLOUDWATCH_LOG_GROUP=process.env.CLOUDWATCH_LOG_GROUP,CLOUDWATCH_LOG_STREAM=process.env.CLOUDWATCH_LOG_STREAM,CLOUDWATCH_REGION=process.env.CLOUDWATCH_REGION,CLOUDWATCH_ACCESS_KEY_ID=process.env.CLOUDWATCH_ACCESS_KEY_ID,CLOUDWATCH_SECRET_ACCESS_KEY=process.env.CLOUDWATCH_SECRET_ACCESS_KEY,ENABLE_CLOUDWATCH_LOGS=CLOUDWATCH_LOG_GROUP&&CLOUDWATCH_LOG_STREAM&&CLOUDWATCH_REGION&&CLOUDWATCH_ACCESS_KEY_ID&&CLOUDWATCH_SECRET_ACCESS_KEY,AWS_SECRETS_MANAGER_ENABLED=(process.env.AWS_SECRETS_MANAGER_ENABLED??"false")?.toLowerCase()==="true",AWS_SECRETS_MANAGER_REGION=process.env.AWS_SECRETS_MANAGER_REGION??"us-east-1",AWS_SECRETS_MANAGER_ACCESS_KEY_ID=process.env.AWS_SECRETS_MANAGER_ACCESS_KEY_ID??"",AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY=process.env.AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY??"",AWS_SECRETS_MANAGER_SECRET_NAME=process.env.AWS_SECRETS_MANAGER_SECRET_NAME??"",AWS_SECRETS_MANAGER_VERSION_STAGE=process.env.AWS_SECRETS_MANAGER_VERSION_STAGE??"AWSCURRENT";
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get ALLOWED_ORIGINS(){return ALLOWED_ORIGINS},get APP_KEY(){return APP_KEY},get APP_LOGO_URL(){return APP_LOGO_URL},get APP_NAME(){return APP_NAME},get APP_PORT(){return APP_PORT},get AWS_SECRETS_MANAGER_ACCESS_KEY_ID(){return AWS_SECRETS_MANAGER_ACCESS_KEY_ID},get AWS_SECRETS_MANAGER_ENABLED(){return AWS_SECRETS_MANAGER_ENABLED},get AWS_SECRETS_MANAGER_REGION(){return AWS_SECRETS_MANAGER_REGION},get AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY(){return AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY},get AWS_SECRETS_MANAGER_SECRET_NAME(){return AWS_SECRETS_MANAGER_SECRET_NAME},get AWS_SECRETS_MANAGER_VERSION_STAGE(){return AWS_SECRETS_MANAGER_VERSION_STAGE},get CLOUDWATCH_ACCESS_KEY_ID(){return CLOUDWATCH_ACCESS_KEY_ID},get CLOUDWATCH_LOG_GROUP(){return CLOUDWATCH_LOG_GROUP},get CLOUDWATCH_LOG_STREAM(){return CLOUDWATCH_LOG_STREAM},get CLOUDWATCH_REGION(){return CLOUDWATCH_REGION},get CLOUDWATCH_SECRET_ACCESS_KEY(){return CLOUDWATCH_SECRET_ACCESS_KEY},get DB_DIALECT(){return DB_DIALECT},get DB_ENTITIES_PATH(){return DB_ENTITIES_PATH},get DB_HOST(){return DB_HOST},get DB_MAX_POOL_SIZE(){return DB_MAX_POOL_SIZE},get DB_NAME(){return DB_NAME},get DB_PASSWORD(){return DB_PASSWORD},get DB_POOL_ACQUIRE(){return DB_POOL_ACQUIRE},get DB_POOL_IDLE(){return DB_POOL_IDLE},get DB_POOL_MIN(){return DB_POOL_MIN},get DB_PORT(){return DB_PORT},get DB_REPLICA_HOST(){return DB_REPLICA_HOST},get DB_REPLICA_PORT(){return DB_REPLICA_PORT},get DB_SSL(){return DB_SSL},get DB_USER(){return DB_USER},get DEFAULT_THROTTLE_LIMIT(){return DEFAULT_THROTTLE_LIMIT},get DEFAULT_THROTTLE_TTL(){return DEFAULT_THROTTLE_TTL},get ENABLE_CLOUDWATCH_LOGS(){return ENABLE_CLOUDWATCH_LOGS},get ENCRYPTION_KEY(){return ENCRYPTION_KEY},get JWT_PRIVATE_KEY(){return JWT_PRIVATE_KEY},get JWT_PUBLIC_KEY(){return JWT_PUBLIC_KEY},get KAFKA_BROKERS(){return KAFKA_BROKERS},get KAFKA_CLIENT_ID(){return KAFKA_CLIENT_ID},get LANDING_PAGE_URL(){return LANDING_PAGE_URL},get MAIL_EMAIL_SUPPORT(){return MAIL_EMAIL_SUPPORT},get MAIL_ENCRYPTION(){return MAIL_ENCRYPTION},get MAIL_FROM_EMAIL(){return MAIL_FROM_EMAIL},get MAIL_FROM_NAME(){return MAIL_FROM_NAME},get MAIL_HOST(){return MAIL_HOST},get MAIL_MAILER(){return MAIL_MAILER},get MAIL_PASSWORD(){return MAIL_PASSWORD},get MAIL_PORT(){return MAIL_PORT},get MAIL_TO_CC(){return MAIL_TO_CC},get MAIL_USERNAME(){return MAIL_USERNAME},get MESSAGE_BROKER_DRIVER(){return MESSAGE_BROKER_DRIVER},get MINIO_ACCESS_KEY(){return MINIO_ACCESS_KEY},get MINIO_HOST(){return MINIO_HOST},get MINIO_PORT(){return MINIO_PORT},get MINIO_SECRET_KEY(){return MINIO_SECRET_KEY},get MINIO_USE_SSL(){return MINIO_USE_SSL},get NODE_ENV(){return NODE_ENV},get ONESIGNAL_APP_ID(){return ONESIGNAL_APP_ID},get ONESIGNAL_REST_API_KEY(){return ONESIGNAL_REST_API_KEY},get PASSWORD_HASH_SECRET(){return PASSWORD_HASH_SECRET},get RABBITMQ_HOST(){return RABBITMQ_HOST},get REDIS_DB(){return REDIS_DB},get REDIS_HOST(){return REDIS_HOST},get REDIS_PASSWORD(){return REDIS_PASSWORD},get REDIS_PORT(){return REDIS_PORT},get REDIS_READ_DB(){return REDIS_READ_DB},get REDIS_READ_HOST(){return REDIS_READ_HOST},get REDIS_READ_PASSWORD(){return REDIS_READ_PASSWORD},get REDIS_READ_PORT(){return REDIS_READ_PORT},get REDIS_READ_TLS(){return REDIS_READ_TLS},get REDIS_READ_USER(){return REDIS_READ_USER},get REDIS_TLS(){return REDIS_TLS},get REDIS_USER(){return REDIS_USER},get S3_ACCESS_KEY_ID(){return S3_ACCESS_KEY_ID},get S3_BUCKET(){return S3_BUCKET},get S3_REGION(){return S3_REGION},get S3_SECRET_ACCESS_KEY(){return S3_SECRET_ACCESS_KEY},get SESSION_EXPIRATION(){return SESSION_EXPIRATION},get SESSION_KEY(){return SESSION_KEY},get SLACK_ERROR_WEBHOOK_URL(){return SLACK_ERROR_WEBHOOK_URL},get STORAGE_DRIVER(){return STORAGE_DRIVER},get TZ(){return TZ}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});(0,require("dotenv").config)({quiet:!0});let TZ=process?.env?.TZ??"UTC",NODE_ENV=process.env.NODE_ENV??"development",APP_NAME=process.env.APP_NAME??"MyApp",APP_PORT=Number(process.env.APP_PORT??3e3),APP_KEY=process.env.APP_KEY??"",SESSION_KEY=process.env.SESSION_KEY??"APP_SESSION",SESSION_EXPIRATION=Number(process.env.SESSION_EXPIRATION??86400),ALLOWED_ORIGINS=(process.env.ALLOWED_ORIGINS??"http://localhost:3000").split(","),DEFAULT_THROTTLE_TTL=Number(process.env.DEFAULT_THROTTLE_TTL??60),DEFAULT_THROTTLE_LIMIT=Number(process.env.DEFAULT_THROTTLE_LIMIT??60),PASSWORD_HASH_SECRET=process.env.PASSWORD_HASH_SECRET??"default_secret",ENCRYPTION_KEY=process.env.ENCRYPTION_KEY,JWT_PUBLIC_KEY=process.env.JWT_PUBLIC_KEY??"",JWT_PRIVATE_KEY=process.env.JWT_PRIVATE_KEY??"",DB_DIALECT="postgres",DB_HOST=process.env.DB_HOST??"localhost",DB_PORT=Number(process.env.DB_PORT??5432),DB_USER=process.env.DB_USER??"postgres",DB_PASSWORD=process.env.DB_PASSWORD??"password",DB_NAME=process.env.DB_NAME??"postgres",DB_REPLICA_HOST=process.env.DB_REPLICA_HOST??"localhost",DB_REPLICA_PORT=Number(process.env.DB_REPLICA_PORT??5432),DB_SSL=(process.env.DB_SSL??"false")?.toLowerCase()==="true",DB_MAX_POOL_SIZE=Number(process.env.DB_MAX_POOL_SIZE??10),DB_POOL_MIN=Number(process.env.DB_POOL_MIN??0),DB_POOL_ACQUIRE=Number(process.env.DB_POOL_ACQUIRE??3e4),DB_POOL_IDLE=Number(process.env.DB_POOL_IDLE??1e4),DB_ENTITIES_PATH="./dist/**/**/*.entity.*",REDIS_HOST=process.env.REDIS_HOST??"localhost",REDIS_PORT=Number(process.env.REDIS_PORT??6379),REDIS_DB=Number(process.env.REDIS_DB??0),REDIS_USER=process.env.REDIS_USER,REDIS_PASSWORD=process.env.REDIS_PASSWORD,REDIS_TLS=(process.env.REDIS_TLS??"false")?.toLowerCase()==="true",REDIS_READ_HOST=process.env.REDIS_READ_HOST,REDIS_READ_PORT=Number(process.env.REDIS_READ_PORT??6379),REDIS_READ_DB=Number(process.env.REDIS_READ_DB??0),REDIS_READ_USER=process.env.REDIS_READ_USER,REDIS_READ_PASSWORD=process.env.REDIS_READ_PASSWORD,REDIS_READ_TLS=(process.env.REDIS_READ_TLS??"false")?.toLowerCase()==="true",MAIL_MAILER=process.env.MAIL_MAILER??"smtp",MAIL_HOST=process.env.MAIL_HOST??"127.0.0.1",MAIL_PORT=+(process.env.MAIL_PORT??1025),MAIL_USERNAME=process.env.MAIL_USERNAME??"",MAIL_PASSWORD=process.env.MAIL_PASSWORD??"",MAIL_ENCRYPTION=process.env.MAIL_ENCRYPTION??"false",MAIL_FROM_NAME=process.env.MAIL_FROM_NAME??"Support Team",MAIL_FROM_EMAIL=process.env.MAIL_FROM_EMAIL??"no-reply@app.com",MAIL_TO_CC=process.env.MAIL_TO_CC??"",MAIL_EMAIL_SUPPORT=process.env.MAIL_EMAIL_SUPPORT??"support@app.com",SLACK_ERROR_WEBHOOK_URL=process.env.SLACK_ERROR_WEBHOOK_URL??"",LANDING_PAGE_URL=process.env.LANDING_PAGE_URL??"http://localhost:8000",APP_LOGO_URL=process.env.APP_LOGO_URL??"",ONESIGNAL_APP_ID=process.env.ONESIGNAL_APP_ID??"",ONESIGNAL_REST_API_KEY=process.env.ONESIGNAL_REST_API_KEY??"",STORAGE_DRIVER=process.env.STORAGE_DRIVER??"local",S3_BUCKET=process.env.S3_BUCKET??"",S3_REGION=process.env.S3_REGION??"us-east-1",S3_ACCESS_KEY_ID=process.env.S3_ACCESS_KEY_ID??"",S3_SECRET_ACCESS_KEY=process.env.S3_SECRET_ACCESS_KEY??"",MINIO_HOST=process.env.MINIO_HOST,MINIO_PORT=Number(process.env.MINIO_PORT??9e3),MINIO_USE_SSL=(process.env.MINIO_USE_SSL??"false")?.toLowerCase()==="true",MINIO_ACCESS_KEY=process.env.MINIO_ACCESS_KEY??"",MINIO_SECRET_KEY=process.env.MINIO_SECRET_KEY??"",MESSAGE_BROKER_DRIVER=process.env.MESSAGE_BROKER_DRIVER??"rabbitmq",RABBITMQ_HOST=process.env.RABBITMQ_HOST??"amqp://localhost",KAFKA_BROKERS=(process.env.KAFKA_BROKERS??"localhost:9092").split(","),KAFKA_CLIENT_ID=process.env.KAFKA_CLIENT_ID??"my-app",CLOUDWATCH_LOG_GROUP=process.env.CLOUDWATCH_LOG_GROUP,CLOUDWATCH_LOG_STREAM=process.env.CLOUDWATCH_LOG_STREAM,CLOUDWATCH_REGION=process.env.CLOUDWATCH_REGION,CLOUDWATCH_ACCESS_KEY_ID=process.env.CLOUDWATCH_ACCESS_KEY_ID,CLOUDWATCH_SECRET_ACCESS_KEY=process.env.CLOUDWATCH_SECRET_ACCESS_KEY,ENABLE_CLOUDWATCH_LOGS=CLOUDWATCH_LOG_GROUP&&CLOUDWATCH_LOG_STREAM&&CLOUDWATCH_REGION&&CLOUDWATCH_ACCESS_KEY_ID&&CLOUDWATCH_SECRET_ACCESS_KEY,AWS_SECRETS_MANAGER_ENABLED=(process.env.AWS_SECRETS_MANAGER_ENABLED??"false")?.toLowerCase()==="true",AWS_SECRETS_MANAGER_REGION=process.env.AWS_SECRETS_MANAGER_REGION??"us-east-1",AWS_SECRETS_MANAGER_ACCESS_KEY_ID=process.env.AWS_SECRETS_MANAGER_ACCESS_KEY_ID??"",AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY=process.env.AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY??"",AWS_SECRETS_MANAGER_SECRET_NAME=process.env.AWS_SECRETS_MANAGER_SECRET_NAME??"",AWS_SECRETS_MANAGER_VERSION_STAGE=process.env.AWS_SECRETS_MANAGER_VERSION_STAGE??"AWSCURRENT";
@@ -3,6 +3,6 @@ export declare class AppController {
3
3
  private appCache;
4
4
  private _cacheKey;
5
5
  cache<T>(callback: () => Promise<T>, ttl?: number): Promise<T>;
6
- cacheWithTimestamp<T>(callback: () => Promise<T>, ttl?: number): Promise<import("../drivers/cache").CacheWithTimestamp<string | number | object>>;
6
+ cacheWithTimestamp<T>(callback: () => Promise<T>, ttl?: number): Promise<import("../drivers/cache").CacheWithTimestamp<() => Promise<T>>>;
7
7
  clearCache(): Promise<void>;
8
8
  }
@@ -15,5 +15,6 @@ export declare class AppCache {
15
15
  del(key: CacheKey): Promise<void>;
16
16
  delAll(key: string): Promise<void>;
17
17
  cache<T>(key: CacheKey, fn: () => Promise<any>, ttl?: number): Promise<T>;
18
- cacheWithTimeStamp<T extends object | string | number>(key: CacheKey, value: () => Promise<T> | T, ttl?: number): Promise<CacheWithTimestamp<T>>;
18
+ cacheWithTimeStamp<T extends object | string | number>(key: CacheKey, value: T, ttl?: number): Promise<CacheWithTimestamp<T>>;
19
+ cacheWithTimeStamp<T extends object | string | number>(key: CacheKey, value: () => Promise<T>, ttl?: number): Promise<CacheWithTimestamp<T>>;
19
20
  }
@@ -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 data?await value():value,timestamp:(0,_helpers.dateUtil)().utc().toString()},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);
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().toString()},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);
@@ -12,10 +12,7 @@ export declare class Redis implements OnModuleInit {
12
12
  private logger;
13
13
  private connection;
14
14
  private readConnection;
15
- constructor(params?: {
16
- write?: RedisOptions;
17
- read?: RedisOptions;
18
- });
15
+ constructor();
19
16
  private _init;
20
17
  private _createConnection;
21
18
  connect(): Promise<void>;
@@ -1 +1 @@
1
- "use strict";var obj;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Redis",{enumerable:!0,get:function(){return Redis}});let _common=require("@nestjs/common"),_ioredis=(obj=require("ioredis"))&&obj.__esModule?obj:{default:obj},_applogger=require("../logger/app.logger"),_secretmanager=require("../secret-manager");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let Redis=class Redis{logger=new _applogger.AppLogger(Redis.name);connection;readConnection;constructor(params={}){this._init(params)}async _init(params={}){let env=await (0,_secretmanager.getSecret)();params.write?this.connection=this._createConnection({host:params.write.host,port:params.write.port,username:params.write.username,password:params.write.password,db:params.write.db,tls:params.write.tls}):this.connection=this._createConnection({host:env.REDIS_HOST,port:env.REDIS_PORT,username:env.REDIS_USER,password:env.REDIS_PASSWORD,db:env.REDIS_DB,tls:env.REDIS_TLS}),params.read&&params.read.host!==params.write?.host?this.readConnection=this._createConnection({host:params.read.host,port:params.read.port,username:params.read.username,password:params.read.password,db:params.read.db,tls:params.read.tls}):env.REDIS_READ_HOST!==env.REDIS_HOST&&(this.readConnection=this._createConnection({host:env.REDIS_READ_HOST,port:env.REDIS_READ_PORT,username:env.REDIS_READ_USER,password:env.REDIS_READ_PASSWORD,db:env.REDIS_READ_DB,tls:env.REDIS_READ_TLS}))}_createConnection(options){return new _ioredis.default({host:options.host,port:options.port,username:options.username,password:options.password,db:options.db,tls:options.tls?{rejectUnauthorized:!0}:void 0})}async connect(){this.connection.on("connect",()=>this.logger.log("Redis connected successfully")),this.connection.on("error",err=>this.logger.error("Redis connection error",err)),this.connection.on("reconnecting",()=>this.logger.log("Reconnecting to Redis")),this.readConnection&&(await this.readConnection.connect().then(()=>this.logger.log("Redis read connection connected successfully")).catch(err=>this.logger.error("Unable to connect to Redis read connection",err)),this.readConnection.on("connect",()=>this.logger.log("Redis read connection connected successfully")),this.readConnection.on("error",err=>this.logger.error("Redis read connection error",err)),this.readConnection.on("reconnecting",()=>this.logger.log("Reconnecting to Redis read connection")))}getConnection(){return this.connection}getReadConnection(){return this.readConnection??this.connection}async onModuleInit(){await this.connect()}};Redis=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",[Object])],Redis);
1
+ "use strict";var obj;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Redis",{enumerable:!0,get:function(){return Redis}});let _common=require("@nestjs/common"),_ioredis=(obj=require("ioredis"))&&obj.__esModule?obj:{default:obj},_applogger=require("../logger/app.logger"),_secretmanager=require("../secret-manager");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let Redis=class Redis{logger=new _applogger.AppLogger(Redis.name);connection;readConnection;constructor(){this._init()}async _init(){let env=await (0,_secretmanager.getSecret)();this.connection=this._createConnection({host:env.REDIS_HOST,port:env.REDIS_PORT,username:env.REDIS_USER,password:env.REDIS_PASSWORD,db:env.REDIS_DB,tls:env.REDIS_TLS}),env.REDIS_READ_HOST&&env.REDIS_READ_HOST+env.REDIS_READ_PORT!==env.REDIS_HOST+env.REDIS_PORT&&(this.readConnection=this._createConnection({host:env.REDIS_READ_HOST,port:env.REDIS_READ_PORT,username:env.REDIS_READ_USER,password:env.REDIS_READ_PASSWORD,db:env.REDIS_READ_DB,tls:env.REDIS_READ_TLS}))}_createConnection(options){return new _ioredis.default({host:options.host,port:options.port,username:options.username,password:options.password,db:options.db,tls:options.tls?{rejectUnauthorized:!0}:void 0})}async connect(){this.connection.on("connect",()=>this.logger.log("Redis connected successfully")),this.connection.on("error",err=>this.logger.error("Redis connection error",err)),this.connection.on("reconnecting",()=>this.logger.log("Reconnecting to Redis")),this.readConnection&&(this.readConnection.on("connect",()=>this.logger.log("Redis read connection connected successfully")),this.readConnection.on("error",err=>this.logger.error("Redis read connection error",err)),this.readConnection.on("reconnecting",()=>this.logger.log("Reconnecting to Redis read connection")))}getConnection(){return this.connection}getReadConnection(){return this.readConnection??this.connection}async onModuleInit(){await new Promise(resolve=>setTimeout(resolve,100)),await this.connect()}};Redis=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",[])],Redis);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Jwt",{enumerable:!0,get:function(){return Jwt}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_jsonwebtoken=require("jsonwebtoken"),_exceptionhelper=require("../../helpers/exception.helper"),_secretmanager=require("../secret-manager");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let Jwt=class Jwt{jwtAlgorithms=["RS512"];JWT_PRIVATE_KEY;JWT_PUBLIC_KEY;constructor(){(0,_secretmanager.getSecret)().then(secret=>{secret.JWT_PRIVATE_KEY&&(this.JWT_PRIVATE_KEY=(0,_helpers.parsedKeyPair)(secret.JWT_PRIVATE_KEY)),secret.JWT_PUBLIC_KEY&&(this.JWT_PUBLIC_KEY=(0,_helpers.parsedKeyPair)(secret.JWT_PUBLIC_KEY))})}verify(token){try{return(0,_jsonwebtoken.verify)(token,this.JWT_PUBLIC_KEY,{algorithms:this.jwtAlgorithms})}catch(error){throw new _exceptionhelper.AppUnprocessableEntityException("Invalid or expired JWT token.")}}sign(data,expiresIn=15e3){try{let key="string"==typeof this.JWT_PRIVATE_KEY&&this.JWT_PRIVATE_KEY?Buffer.from(this.JWT_PRIVATE_KEY):{key:this.JWT_PRIVATE_KEY,passphrase:""};return(0,_jsonwebtoken.sign)({...data},key,{algorithm:this.jwtAlgorithms[0],expiresIn,allowInsecureKeySizes:!1,encoding:"utf-8"})}catch(error){throw new _exceptionhelper.AppUnprocessableEntityException("Failed to sign JWT token.")}}};Jwt=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",[])],Jwt);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Jwt",{enumerable:!0,get:function(){return Jwt}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_jsonwebtoken=require("jsonwebtoken"),_exceptionhelper=require("../../helpers/exception.helper"),_secretmanager=require("../secret-manager");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let Jwt=class Jwt{jwtAlgorithms=["RS512"];JWT_PRIVATE_KEY;JWT_PUBLIC_KEY;constructor(){(0,_secretmanager.getSecret)().then(secret=>{secret.JWT_PRIVATE_KEY&&(this.JWT_PRIVATE_KEY=(0,_helpers.parsedKeyPair)(secret.JWT_PRIVATE_KEY)),secret.JWT_PUBLIC_KEY&&(this.JWT_PUBLIC_KEY=(0,_helpers.parsedKeyPair)(secret.JWT_PUBLIC_KEY))})}verify(token){try{return(0,_jsonwebtoken.verify)(token,this.JWT_PUBLIC_KEY,{algorithms:this.jwtAlgorithms})}catch(error){throw new _exceptionhelper.AppUnauthorizedException("Invalid or expired JWT token.")}}sign(data,expiresIn=15e3){try{let key="string"==typeof this.JWT_PRIVATE_KEY&&this.JWT_PRIVATE_KEY?Buffer.from(this.JWT_PRIVATE_KEY):{key:this.JWT_PRIVATE_KEY,passphrase:""};return(0,_jsonwebtoken.sign)({...data},key,{algorithm:this.jwtAlgorithms[0],expiresIn,allowInsecureKeySizes:!1,encoding:"utf-8"})}catch(error){throw new _exceptionhelper.AppInternalServerErrorException("Failed to sign JWT token.")}}};Jwt=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",[])],Jwt);
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppLogger",{enumerable:!0,get:function(){return AppLogger}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_util=require("util"),_config=require("../../config"),_loggercontract=require("./logger.contract"),_loggerdriver=require("./logger.driver");let AppLogger=class AppLogger extends _common.ConsoleLogger{context;LOG_STACKS=5;constructor(context=""){super(context),this.context=context}excludeContexts=["RoutesResolver","InstanceLoader","RouterExplorer","Nest Application","Module","NestApplication","NestFactory"];_excludeContext(context){return this.excludeContexts.includes(context)}_sanitizePolicyData(object){if(object)if(Array.isArray(object))return object.map(d=>"object"!=typeof d?d:this._sanitizePolicyData(d));else return Object.keys(object).reduce((acc,key)=>{let value=object[key];return _helpers.sanitizeRequests.includes(key)?value="***":"object"==typeof value&&(value=this._sanitizePolicyData(value)),{...acc,[key]:value}},{})}_formatBgLevel(level,...args){let msg=args.join(" ╱ ");switch(level){case"log":default:return(0,_loggercontract.logInfoBg)(msg);case"warn":return(0,_loggercontract.logWarnBg)(msg);case"error":case"fatal":return(0,_loggercontract.logErrorBg)(msg);case"debug":return(0,_loggercontract.logDebugBg)(msg)}}_formatException(error){let stacks=(error?.stack??"")?.split("\n").map(o=>o.trim().replace?.(error.name+": ","")).slice(0,"development"===_config.NODE_ENV?void 0:this.LOG_STACKS);return(error?.name??"UnknownErrorException")+" "+stacks.join(`
2
- `)}_parseMessage(arg){return arg instanceof Error?["error",this._formatException(arg)]:"object"==typeof arg?["object",JSON.stringify(this._sanitizePolicyData(arg),null,2)]:["string",arg?.toString()]}_mapLog(level,...args){if(this._excludeContext(this.context)||void 0!==args[1]&&this.excludeContexts.some(d=>args[1]===d))return;let message=[];for(let arg of args?.flat()?.flat())arg&&message.push(this._parseMessage(arg));return{level,env:_config.NODE_ENV.toUpperCase(),context:this.context??"App Logger",timestamp:(0,_helpers.dateUtil)().utc().format("YYYY-MM-DD HH:mm:ss.SSS"),host:_loggerdriver.loggerDriver.host?.substring(0,20),message}}_formatConsoleError(error){return error.split("\n").map(d=>d.endsWith("Exception")?d.replace(/(.*)Exception(.*)/,(0,_loggercontract.logErrorBg)("$1Exception")+(0,_loggercontract.logError)("$2")):(0,_loggercontract.logError)(d)).join("\n ")}_console(logMeta){return console.log(this._formatBgLevel(logMeta.level,logMeta.timestamp,logMeta.host?.substring(0,20),"LOG"===logMeta.level.toUpperCase()?"INFO":logMeta.level.toUpperCase(),logMeta?.context)+(0,_util.styleText)("reset","\n ")+logMeta.message.map(d=>"error"===d[0]?(0,_loggercontract.logError)(this._formatConsoleError(d[1])):"object"===d[0]?(0,_loggercontract.logWarn)((0,_loggercontract.logDebugBg)("Object")+" "+d[1].split("\n").join("\n ")):(0,_helpers.chunkArray)(d[1].split(" "),10).map(d=>d.join(" ")).join("\n ")).join("\n "))}log(...args){let logMeta=this._mapLog("log",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.log(logMeta))}error(...args){if("DEVELOPMENT"===_config.NODE_ENV.toUpperCase())return void console.error("\x1b[31m",...args);let logMeta=this._mapLog("error",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.error(logMeta))}fatal(...args){if("DEVELOPMENT"===_config.NODE_ENV.toUpperCase())return void console.error("\x1b[31m",...args);let logMeta=this._mapLog("fatal",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.fatal(logMeta))}warn(...args){let logMeta=this._mapLog("warn",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.warn(logMeta))}debug(...args){let logMeta=this._mapLog("debug",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.debug(logMeta))}info(...args){let logMeta=this._mapLog("log",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.log(logMeta))}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppLogger",{enumerable:!0,get:function(){return AppLogger}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_util=require("util"),_config=require("../../config"),_loggercontract=require("./logger.contract"),_loggerdriver=require("./logger.driver");let AppLogger=class AppLogger extends _common.ConsoleLogger{context;LOG_STACKS=5;constructor(context=""){super(context),this.context=context}excludeContexts=["RoutesResolver","InstanceLoader","RouterExplorer","Nest Application","Module","NestApplication","NestFactory"];_excludeContext(context){return this.excludeContexts.includes(context)}_sanitizePolicyData(object){if(object)if(Array.isArray(object))return object.map(d=>"object"!=typeof d?d:this._sanitizePolicyData(d));else return Object.keys(object).reduce((acc,key)=>{let value=object[key];return _helpers.sanitizeRequests.includes(key)?value="***":"object"==typeof value&&(value=this._sanitizePolicyData(value)),{...acc,[key]:value}},{})}_formatBgLevel(level,...args){let msg=args.join(" ╱ ");switch(level){case"log":default:return(0,_loggercontract.logInfoBg)(msg);case"warn":return(0,_loggercontract.logWarnBg)(msg);case"error":case"fatal":return(0,_loggercontract.logErrorBg)(msg);case"debug":return(0,_loggercontract.logDebugBg)(msg)}}_formatException(error){let stacks=(error?.stack??"")?.split("\n").map(o=>o.trim().replace?.(error.name+": ",""));return["development","local","staging"].includes(_config.NODE_ENV)||(stacks=stacks.slice(0,this.LOG_STACKS)),(error?.name??"UnknownErrorException")+" "+stacks.join(`
2
+ `)}_parseMessage(arg){return arg instanceof Error?["error",this._formatException(arg)]:"object"==typeof arg?["object",JSON.stringify(this._sanitizePolicyData(arg),null,2)]:["string",arg?.toString()]}_mapLog(level,...args){if(this._excludeContext(this.context)||void 0!==args[1]&&this.excludeContexts.some(d=>args[1]===d))return;let message=[];for(let arg of args?.flat()?.flat())arg&&message.push(this._parseMessage(arg));return{level,env:_config.NODE_ENV.toUpperCase(),context:this.context??"App Logger",timestamp:(0,_helpers.dateUtil)().utc().toISOString(),host:_loggerdriver.loggerDriver.host?.substring(0,20),message}}_formatConsoleError(error){return error.split("\n").map(d=>d.endsWith("Exception")?d.replace(/(.*)Exception(.*)/,(0,_loggercontract.logErrorBg)("$1Exception")+(0,_loggercontract.logError)("$2")):(0,_loggercontract.logError)(d)).join("\n")}_console(logMeta){return console.log("\n"+(this._formatBgLevel(logMeta.level,logMeta.timestamp,logMeta.host?.substring(0,20),"LOG"===logMeta.level.toUpperCase()?"INFO":logMeta.level.toUpperCase(),logMeta?.context)+(0,_util.styleText)("reset"," ")+logMeta.message.map(([type,value])=>{if("function"!=typeof value)return"error"===type?(0,_loggercontract.logError)(this._formatConsoleError(value)):"object"===type?(0,_loggercontract.logWarn)((0,_loggercontract.logWarnBg)("Object")+" "+value.split("\n").map(_loggercontract.logWarn).join("\n ")):value}).filter(d=>d).join("\n ")))}log(...args){let logMeta=this._mapLog("log",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.log(logMeta))}error(...args){if("DEVELOPMENT"===_config.NODE_ENV.toUpperCase())return void console.error("\x1b[31m",...args);let logMeta=this._mapLog("error",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.error(logMeta))}fatal(...args){if("DEVELOPMENT"===_config.NODE_ENV.toUpperCase())return void console.error("\x1b[31m",...args);let logMeta=this._mapLog("fatal",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.fatal(logMeta))}warn(...args){let logMeta=this._mapLog("warn",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.warn(logMeta))}debug(...args){let logMeta=this._mapLog("debug",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.debug(logMeta))}info(...args){let logMeta=this._mapLog("log",...args);logMeta&&(this._console(logMeta),_loggerdriver.loggerDriver.log(logMeta))}};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"MinioStorage",{enumerable:!0,get:function(){return MinioStorage}});let _helpers=require("@triproject/helpers"),_minio=require("minio"),_exceptionhelper=require("../../helpers/exception.helper"),_secretmanager=require("../secret-manager");let MinioStorage=class MinioStorage{expiresIn;client;BUCKET;constructor(){(0,_secretmanager.getSecret)().then(secret=>{this.BUCKET=this.BUCKET,this.client=new _minio.Client({endPoint:secret.MINIO_HOST,port:+secret.MINIO_PORT,useSSL:secret.MINIO_USE_SSL,accessKey:secret.S3_ACCESS_KEY_ID,secretKey:secret.S3_SECRET_ACCESS_KEY})})}async get(fileName,expiresIn=86400){if(!fileName)throw new _exceptionhelper.AppUnprocessableEntityException("File name is required to get URL.");let ext=(0,_helpers.getFileExtension)(fileName),isImage=["png","jpg","jpeg","gif","webp","svg","ico","jpeg","bmp"].includes(ext);return{url:await this.client.presignedUrl("GET",this.BUCKET,fileName,expiresIn,(0,_helpers.removeEmptyValues)({"Content-Type":isImage?"image":void 0,"Content-Disposition":isImage?`inline; filename="${fileName}"`:void 0,"response-content-type":isImage?"image/"+ext:void 0})).catch(()=>""),fileName:(0,_helpers.getFileName)(fileName)}}async upload(fileName,file,expiresIn){return await this.client.putObject(this.BUCKET,fileName,file),expiresIn&&await this.client.presignedPutObject(this.BUCKET,fileName,expiresIn),await this.get(fileName,expiresIn)}async delete(path){return await this.client.removeObject(this.BUCKET,path)}async isExists(fileName){return await this.client.getObject(this.BUCKET,fileName).then(()=>!0).catch(()=>!1)}async move(oldPath,newPath){let copyConditions=new _minio.CopyConditions;try{return await this.client.copyObject(this.BUCKET,newPath,`${this.BUCKET}/${oldPath}`,copyConditions),await this.client.removeObject(this.BUCKET,oldPath),!0}catch(error){return!1}}async getBase64(fileName){return this.stream(fileName,buffer=>`${buffer.toString("base64")}`)}async stream(fileName,processFn){try{let stream=await this.client.getObject(this.BUCKET,fileName),chunks=[],mimeType="application/octet-stream";return new Promise((resolve,reject)=>{stream.on("data",chunk=>chunks.push(chunk)),stream.on("end",()=>{let buffer=Buffer.concat(chunks);mimeType=stream.headers?.["content-type"]||mimeType,resolve(processFn(buffer,mimeType))}),stream.on("error",err=>reject(err))})}catch(error){throw Error(`Failed to process file ${fileName}: ${error.message}`)}}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"MinioStorage",{enumerable:!0,get:function(){return MinioStorage}});let _helpers=require("@triproject/helpers"),_minio=require("minio"),_exceptionhelper=require("../../helpers/exception.helper"),_secretmanager=require("../secret-manager");let MinioStorage=class MinioStorage{expiresIn;client;BUCKET;constructor(){(0,_secretmanager.getSecret)().then(secret=>{if(!secret.MINIO_HOST)throw new _exceptionhelper.AppUnprocessableEntityException("MINIO_HOST is not defined in secret manager.");this.BUCKET=this.BUCKET,this.client=new _minio.Client({endPoint:secret.MINIO_HOST,port:+secret.MINIO_PORT,useSSL:secret.MINIO_USE_SSL,accessKey:secret.S3_ACCESS_KEY_ID,secretKey:secret.S3_SECRET_ACCESS_KEY})})}async get(fileName,expiresIn=86400){if(!fileName)throw new _exceptionhelper.AppUnprocessableEntityException("File name is required to get URL.");let ext=(0,_helpers.getFileExtension)(fileName),isImage=["png","jpg","jpeg","gif","webp","svg","ico","jpeg","bmp"].includes(ext);return{url:await this.client.presignedUrl("GET",this.BUCKET,fileName,expiresIn,(0,_helpers.removeEmptyValues)({"Content-Type":isImage?"image":void 0,"Content-Disposition":isImage?`inline; filename="${fileName}"`:void 0,"response-content-type":isImage?"image/"+ext:void 0})).catch(()=>""),fileName:(0,_helpers.getFileName)(fileName)}}async upload(fileName,file,expiresIn){return await this.client.putObject(this.BUCKET,fileName,file),expiresIn&&await this.client.presignedPutObject(this.BUCKET,fileName,expiresIn),await this.get(fileName,expiresIn)}async delete(path){return await this.client.removeObject(this.BUCKET,path)}async isExists(fileName){return await this.client.getObject(this.BUCKET,fileName).then(()=>!0).catch(()=>!1)}async move(oldPath,newPath){let copyConditions=new _minio.CopyConditions;try{return await this.client.copyObject(this.BUCKET,newPath,`${this.BUCKET}/${oldPath}`,copyConditions),await this.client.removeObject(this.BUCKET,oldPath),!0}catch(error){return!1}}async getBase64(fileName){return this.stream(fileName,buffer=>`${buffer.toString("base64")}`)}async stream(fileName,processFn){try{let stream=await this.client.getObject(this.BUCKET,fileName),chunks=[],mimeType="application/octet-stream";return new Promise((resolve,reject)=>{stream.on("data",chunk=>chunks.push(chunk)),stream.on("end",()=>{let buffer=Buffer.concat(chunks);mimeType=stream.headers?.["content-type"]||mimeType,resolve(processFn(buffer,mimeType))}),stream.on("error",err=>reject(err))})}catch(error){throw Error(`Failed to process file ${fileName}: ${error.message}`)}}};
@@ -1 +1 @@
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));
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"),_uaparserjs=require("ua-parser-js"),_config=require("../config"),_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)}let errorLogger=new _applogger.AppLogger("CatchError Handler");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){let context=target.constructor.name+"."+key;if(error instanceof _exceptionhelper.AppBadRequestException||error instanceof _exceptionhelper.AppBadRequestException||error instanceof _exceptionhelper.AppUnprocessableEntityException||error instanceof _exceptionhelper.AppNotFoundException||error instanceof _exceptionhelper.AppForbiddenException||error instanceof _exceptionhelper.AppUnauthorizedException||error instanceof _exceptionhelper.AppConflictException||error instanceof _exceptionhelper.AppBadGatewayException||error instanceof _exceptionhelper.AppGatewayTimeoutException||error instanceof _common.GoneException||error instanceof _common.BadRequestException||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["development","local","staging"].includes(_config.NODE_ENV)&&errorLogger.debug(err+": "+context,args,error?.errors??error),error;throw errorLogger.error(err+": "+context,args,error),new _common.InternalServerErrorException(err)}}}}let RequestLog=class RequestLog{logger=new _applogger.AppLogger("Request Log");start(req){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(", ")}end(req,res){let duration=(0,_helpers.dateUtil)().diff("milliseconds",req.requestStartAt),reqData=(0,_helpers.removeEmptyValues)({body:Object.keys(req?.body).length?req?.body:void 0,query:Object.keys(req?.query).length?req?.query:void 0}),userData=req?.user,user=userData?(0,_helpers.removeEmptyValues)({id:userData?.id,name:userData?.name,sessionId:userData?.sessionId}):void 0,logs=[`Request ${req.requestId} completed in ${duration} ms`,(0,_helpers.removeEmptyValues)({requestId:req.requestId,durationInMs:duration,method:req.method,url:req.protocol+"://"+req.hostname+req.baseUrl+req.path,origin:req.get("origin"),ipAddress:req?.ip,userAgent:req?.userAgent,request:reqData&&Object.keys(reqData).length?reqData:void 0,response:{status:res.status,message:res.message},user})];req?.errorMessage&&logs.push(req.errorMessage),this.logger.log(...logs)}};let requestLog=new RequestLog;let HttpExceptionFilter=class HttpExceptionFilter{catch(exception,host){let ctx=host.switchToHttp(),response=ctx.getResponse(),request=ctx.getRequest(),status=exception.getStatus();requestLog.start(request),status.toString().startsWith("5")&&(request.errorMessage=exception),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})),requestLog.end(request,{status:response.statusCode,message:exception.message})}};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){let req=context.switchToHttp().getRequest();return requestLog.start(req),next.handle().pipe((0,_rxjs.map)(data=>handleDataValue(data)),(0,_rxjs.tap)(res=>{requestLog.end(req,{status:res.statusCode,message:res?.message})}))}};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/dist/index.d.ts CHANGED
@@ -3,6 +3,5 @@ export * from './helpers/exception.helper';
3
3
  export * from './helpers/http.helper';
4
4
  export * from './helpers/swagger.helper';
5
5
  export * from './controllers/controller';
6
- export * from './middlewares/log.middleware';
7
6
  export * from './bootstrap';
8
7
  export type WrapperType<T> = T;
package/dist/index.js CHANGED
@@ -1 +1 @@
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("./controllers/controller"),exports),_export_star(require("./middlewares/log.middleware"),exports),_export_star(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("./controllers/controller"),exports),_export_star(require("./bootstrap"),exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@triproject/nestjs-core",
3
- "version": "1.0.25",
3
+ "version": "1.0.28",
4
4
  "author": "",
5
5
  "license": "ISC",
6
6
  "description": "A collection of NestJS modules and utilities to speed up development.",
@@ -214,7 +214,7 @@
214
214
  "@nestjs/throttler": "^6.5.0",
215
215
  "@swc/cli": "^0.7.9",
216
216
  "@swc/core": "^1.15.7",
217
- "@triproject/helpers": "^1.1.19",
217
+ "@triproject/helpers": "^1.1.21",
218
218
  "@types/amqp-connection-manager": "^3.4.5",
219
219
  "@types/amqplib": "^0.10.8",
220
220
  "@types/cookie-parser": "^1.4.10",
@@ -1,9 +0,0 @@
1
- import { NestMiddleware } from '@nestjs/common';
2
- import { NextFunction, Request, Response } from 'express';
3
- export declare class LogMiddleware implements NestMiddleware {
4
- use(req: Request, res: Response, next: NextFunction): Promise<void>;
5
- }
6
- export declare class LogResponseMiddleware implements NestMiddleware {
7
- private log;
8
- use(req: Request, res: Response, next?: NextFunction): Promise<void>;
9
- }
@@ -1 +0,0 @@
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);