@lyxa.ai/core 1.3.130 → 1.3.131

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.
Files changed (36) hide show
  1. package/dist/index.js +4 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/libraries/index.d.ts +2 -0
  4. package/dist/libraries/index.js +4 -0
  5. package/dist/libraries/index.js.map +1 -1
  6. package/dist/libraries/logger-kit/index.d.ts +3 -0
  7. package/dist/libraries/logger-kit/index.js +22 -0
  8. package/dist/libraries/logger-kit/index.js.map +1 -0
  9. package/dist/libraries/logger-kit/logger.config.d.ts +17 -0
  10. package/dist/libraries/logger-kit/logger.config.js +30 -0
  11. package/dist/libraries/logger-kit/logger.config.js.map +1 -0
  12. package/dist/libraries/logger-kit/logger.service.d.ts +21 -0
  13. package/dist/libraries/logger-kit/logger.service.js +190 -0
  14. package/dist/libraries/logger-kit/logger.service.js.map +1 -0
  15. package/dist/libraries/logger-kit/types.d.ts +35 -0
  16. package/dist/libraries/logger-kit/types.js +3 -0
  17. package/dist/libraries/logger-kit/types.js.map +1 -0
  18. package/dist/libraries/mongo/models/index.d.ts +3 -0
  19. package/dist/libraries/mongo/models/index.js +4 -1
  20. package/dist/libraries/mongo/models/index.js.map +1 -1
  21. package/dist/libraries/mongo/models/log.model.d.ts +29 -0
  22. package/dist/libraries/mongo/models/log.model.js +153 -0
  23. package/dist/libraries/mongo/models/log.model.js.map +1 -0
  24. package/dist/types/README.md +1 -1
  25. package/dist/types/package.json +1 -1
  26. package/dist/types/utilities/enum.d.ts +7 -0
  27. package/dist/types/utilities/enum.js +9 -1
  28. package/dist/types/utilities/enum.js.map +1 -1
  29. package/dist/types/utilities/validation/common-validation.d.ts +12 -12
  30. package/dist/utilities/enum.d.ts +7 -0
  31. package/dist/utilities/enum.js +9 -1
  32. package/dist/utilities/enum.js.map +1 -1
  33. package/dist/utilities/service-name.util.d.ts +2 -0
  34. package/dist/utilities/service-name.util.js +12 -0
  35. package/dist/utilities/service-name.util.js.map +1 -0
  36. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -60,6 +60,7 @@ const EnvironmentConfigurationType_1 = require("./libraries/configuration/types/
60
60
  const osrm_1 = require("./libraries/map/providers/osrm");
61
61
  const rabbitmq_environments_1 = require("./utilities/environment/rabbitmq-environments");
62
62
  const instance_disconnect_1 = require("./libraries/socket/connections/instance-disconnect");
63
+ const logger_kit_1 = require("./libraries/logger-kit");
63
64
  var EnvironmentConfigurationType_2 = require("./libraries/configuration/types/EnvironmentConfigurationType");
64
65
  Object.defineProperty(exports, "EnvironmentConfigurationType", { enumerable: true, get: function () { return EnvironmentConfigurationType_2.EnvironmentConfigurationType; } });
65
66
  var mongo_2 = require("./libraries/mongo");
@@ -77,6 +78,7 @@ async function bootstrapCore(options) {
77
78
  process.on('SIGTERM', gracefulShutdown);
78
79
  process.on('SIGINT', gracefulShutdown);
79
80
  process.on('uncaughtException', err => {
81
+ console.log('err', err);
80
82
  getLibraries().getLogger().logger.error('Uncaught exception, shutting down...', err);
81
83
  gracefulShutdown();
82
84
  });
@@ -105,6 +107,8 @@ async function registerLibraries(options) {
105
107
  await (0, mongo_1.initGlobalConnection)(mongoUrl, options.environment);
106
108
  const loggerInstance = new logger_1.LyxaLogger(options.instanceType, mongoUrl);
107
109
  typedi_1.Container.set(logger_1.LyxaLogger, loggerInstance);
110
+ const loggerKit = new logger_kit_1.LyxaLoggerKit(options.instanceType);
111
+ typedi_1.Container.set(logger_kit_1.LyxaLoggerKit, loggerKit);
108
112
  const firebaseInstance = new firebase_1.FirebaseService(configurationInstance);
109
113
  typedi_1.Container.set(firebase_1.FirebaseService, firebaseInstance);
110
114
  const microserviceDispatcherInstance = new dispatcher_1.MicroServiceDispatcher(secretInstance);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["// Apply the soft delete plugin globally before any connections or models\nimport { applySoftDeletePlugin } from './libraries/mongo/plugins/soft-delete-plugin';\napplySoftDeletePlugin();\n\nimport { LibraryManager } from './libraries';\nimport { Container } from 'typedi';\nimport { ConfigurationOptions, ConfigurationService } from './libraries/configuration';\nimport { LyxaLogger } from './libraries/logger';\nimport { RedisService } from './libraries/redis';\nimport { initGlobalConnection, initLyxaMongoDbConnection } from './libraries/mongo';\nimport { SecretManagerService } from './libraries/secrets';\nimport { MicroServiceDispatcher } from './libraries/dispatcher';\nimport { TwilioService } from './libraries/twilio';\nimport { FirebaseService } from './libraries/firebase';\nimport { initEventBus, subscribeToEvent } from './libraries/event';\nimport { SubscriptionRegistry } from './libraries/event/registry/SubscriptionRegistry';\nimport { GoogleMapsService, MapService } from './libraries/map';\nimport { CachedSettingsService } from './libraries/cache/settings';\nimport { FCMService, FCMServiceForRider, FCMServiceForShop, FCMServiceForUser } from './libraries/firebase/fcmService';\nimport { BullMQService } from './libraries/bullmq/bull-mq-service';\nimport { BOBSecrets, BOBService, CashSettlementService } from './libraries/cash-settlement';\n import { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\nimport { OsrmMapService } from './libraries/map/providers/osrm';\nimport { RabbitMQUrlMap } from './utilities/environment/rabbitmq-environments';\nimport { disconnectAllEntitiesFromInstance } from './libraries/socket/connections/instance-disconnect';\n\nexport { ConfigurationOptions } from './libraries/configuration';\nexport { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\nexport { initGlobalConnection } from './libraries/mongo';\n\nexport async function bootstrapCore(options?: ConfigurationOptions) {\n\ttry {\n\t\tawait registerLibraries(options);\n\n\t\tgetLibraries().getLogger().logger.info('Successfully bootstrapped lyxa-core.');\n\n\t\tconst gracefulShutdown = async () => {\n\t\t\tgetLibraries().getLogger().logger.info('Received shutdown signal, shutting down gracefully...');\n\t\t\tif (options?.instanceType == 'socket') await disconnectAllEntitiesFromInstance();\n\t\t\tprocess.exit();\n\t\t};\n\n\t\tprocess.on('SIGTERM', gracefulShutdown);\n\t\tprocess.on('SIGINT', gracefulShutdown);\n\t\tprocess.on('uncaughtException', err => {\n\t\t\tgetLibraries().getLogger().logger.error('Uncaught exception, shutting down...', err);\n\t\t\tgracefulShutdown();\n\t\t});\n\t\tprocess.on('exit', code => {\n\t\t\tgetLibraries().getLogger().logger.info(`Exiting with code: ${code}`);\n\t\t});\n\n\t\tconsole.log('Created hooks.');\n\t} catch (e) {\n\t\tconsole.error(e);\n\t}\n}\n\nexport async function registerLibraries(options?: ConfigurationOptions) {\n\t// Setup configuration.\n\tconst configurationInstance = new ConfigurationService(options);\n\tContainer.set(ConfigurationService, configurationInstance);\n\n\t// Setup redis.\n\tconst redisInstance = new RedisService(configurationInstance.redisURL);\n\tContainer.set(RedisService, redisInstance);\n\n\t// Setup secret\n\tconst secretInstance = new SecretManagerService(configurationInstance, redisInstance);\n\tContainer.set(SecretManagerService, secretInstance);\n\n\t// Setup BullMQ\n\tconst bullMQInstance = new BullMQService(redisInstance);\n\tContainer.set(BullMQService, bullMQInstance);\n\n\tconst mongoUrl = options?.mongoDbUrl\n\t\t? options.mongoDbUrl\n\t\t: await getLibraries().getSecretsService().getKey('MONGO_URL');\n\n\tawait initLyxaMongoDbConnection(mongoUrl!, options);\n\tawait initGlobalConnection(mongoUrl!, options!.environment);\n\n\t// Setup logger\n\tconst loggerInstance = new LyxaLogger(options!.instanceType!, mongoUrl!);\n\tContainer.set(LyxaLogger, loggerInstance);\n\n\t// Setup firebase\n\tconst firebaseInstance = new FirebaseService(configurationInstance!);\n\tContainer.set(FirebaseService, firebaseInstance);\n\n\t// Setup microservice dispatcher\n\tconst microserviceDispatcherInstance = new MicroServiceDispatcher(secretInstance);\n\tContainer.set(MicroServiceDispatcher, microserviceDispatcherInstance);\n\n\t// Setup twilio\n\tconst twilioServiceInstance = new TwilioService();\n\tContainer.set(TwilioService, twilioServiceInstance);\n\n\t// Setup map service\n\tconst googleMapsKey = await getLibraries().getSecretsService().getKey('GOOGLE_MAPS_API_KEY');\n\tconst googleMapService = new GoogleMapsService(redisInstance, googleMapsKey as string);\n\tconst osrmMapService = new OsrmMapService();\n\tconst mapServiceInstance = new MapService(googleMapService, osrmMapService);\n\tContainer.set(MapService, mapServiceInstance);\n\n\t// Setup cash settlement service\n\tconst bobUsername = await getLibraries().getSecretsService().getKey('BOB_USER_NAME');\n\tconst bobPassword = await getLibraries().getSecretsService().getKey('BOB_PASSWORD');\n\tconst bobURL = await getLibraries().getSecretsService().getKey('BOB_URL');\n\n\tconst bobService = new BOBService({\n\t\tBOB_USER_NAME: bobUsername,\n\t\tBOB_PASSWORD: bobPassword,\n\t\tBOB_URL: bobURL,\n\t} as BOBSecrets);\n\tconst cashSettlementServiceInstance = new CashSettlementService(bobService);\n\tContainer.set(CashSettlementService, cashSettlementServiceInstance);\n\tContainer.set(BOBService, bobService);\n\n\tconst settingsServiceInstance = new CachedSettingsService(redisInstance);\n\tContainer.set(CachedSettingsService, settingsServiceInstance);\n\n\ttry {\n\t\tconst settings = await settingsServiceInstance.getSettings();\n\t\tconst { _setTimezone } = await import('./utilities/dayjs/dayjs');\n\t\t_setTimezone(settings?.timezone || 'Asia/Beirut');\n\t\tconsole.log('Timezone initialized:', settings?.timezone || 'Asia/Beirut');\n\t} catch (error) {\n\t\tconsole.error('Failed to initialize timezone:', error);\n\t}\n\n\t// Setup fcm service\n\tconst firebaseService = getLibraries().getFirebaseService();\n\tconst fcmServiceInstance = new FCMService(firebaseService.superApp);\n\tconst fcmServiceInstanceForUser = new FCMService(firebaseService.userApp);\n\tconst fcmServiceInstanceForRider = new FCMService(firebaseService.riderApp);\n\tconst fcmServiceInstanceForShop = new FCMService(firebaseService.shopApp);\n\tContainer.set(FCMService, fcmServiceInstance);\n\tContainer.set(FCMServiceForUser, fcmServiceInstanceForUser);\n\tContainer.set(FCMServiceForRider, fcmServiceInstanceForRider);\n\tContainer.set(FCMServiceForShop, fcmServiceInstanceForShop);\n\n\tconsole.log('Initialized everything');\n\n\tawait initEventBus(RabbitMQUrlMap[options?.environment ?? EnvironmentConfigurationType.DEV]);\n\n\tconst allSubscriptions = SubscriptionRegistry.getAllSubscriptions();\n\n\tconst instantiatedServices = new Map<Function, any>();\n\n\tfor (const { eventId, targetConstructor, methodName } of allSubscriptions) {\n\t\tlet instance = instantiatedServices.get(targetConstructor);\n\t\tif (!instance) {\n\t\t\tinstance = Container.get(targetConstructor as any);\n\t\t\tinstantiatedServices.set(targetConstructor, instance);\n\t\t}\n\n\t\tawait subscribeToEvent(eventId, async payload => {\n\t\t\treturn instance[methodName](payload);\n\t\t});\n\t}\n}\n\nexport function getLibraries(): LibraryManager {\n\treturn Container.get(LibraryManager);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["// Apply the soft delete plugin globally before any connections or models\nimport { applySoftDeletePlugin } from './libraries/mongo/plugins/soft-delete-plugin';\napplySoftDeletePlugin();\n\nimport { LibraryManager } from './libraries';\nimport { Container } from 'typedi';\nimport { ConfigurationOptions, ConfigurationService } from './libraries/configuration';\nimport { LyxaLogger } from './libraries/logger';\nimport { RedisService } from './libraries/redis';\nimport { initGlobalConnection, initLyxaMongoDbConnection } from './libraries/mongo';\nimport { SecretManagerService } from './libraries/secrets';\nimport { MicroServiceDispatcher } from './libraries/dispatcher';\nimport { TwilioService } from './libraries/twilio';\nimport { FirebaseService } from './libraries/firebase';\nimport { initEventBus, subscribeToEvent } from './libraries/event';\nimport { SubscriptionRegistry } from './libraries/event/registry/SubscriptionRegistry';\nimport { GoogleMapsService, MapService } from './libraries/map';\nimport { CachedSettingsService } from './libraries/cache/settings';\nimport {\n\tFCMService,\n\tFCMServiceForRider,\n\tFCMServiceForShop,\n\tFCMServiceForUser,\n} from './libraries/firebase/fcmService';\nimport { BullMQService } from './libraries/bullmq/bull-mq-service';\nimport { BOBSecrets, BOBService, CashSettlementService } from './libraries/cash-settlement';\nimport { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\nimport { OsrmMapService } from './libraries/map/providers/osrm';\nimport { RabbitMQUrlMap } from './utilities/environment/rabbitmq-environments';\nimport { disconnectAllEntitiesFromInstance } from './libraries/socket/connections/instance-disconnect';\nimport { LyxaLoggerKit } from './libraries/logger-kit';\n\n\n\nexport { ConfigurationOptions } from './libraries/configuration';\nexport { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\nexport { initGlobalConnection } from './libraries/mongo';\n\nexport async function bootstrapCore(options?: ConfigurationOptions) {\n\ttry {\n\t\tawait registerLibraries(options);\n\n\t\tgetLibraries().getLogger().logger.info('Successfully bootstrapped lyxa-core.');\n\n\t\tconst gracefulShutdown = async () => {\n\t\t\tgetLibraries().getLogger().logger.info('Received shutdown signal, shutting down gracefully...');\n\t\t\tif (options?.instanceType == 'socket') await disconnectAllEntitiesFromInstance();\n\t\t\tprocess.exit();\n\t\t};\n\n\t\tprocess.on('SIGTERM', gracefulShutdown);\n\t\tprocess.on('SIGINT', gracefulShutdown);\n\t\tprocess.on('uncaughtException', err => {\n\t\t\tconsole.log('err', err);\n\t\t\tgetLibraries().getLogger().logger.error('Uncaught exception, shutting down...', err);\n\t\t\tgracefulShutdown();\n\t\t});\n\t\tprocess.on('exit', code => {\n\t\t\tgetLibraries().getLogger().logger.info(`Exiting with code: ${code}`);\n\t\t});\n\n\t\tconsole.log('Created hooks.');\n\t} catch (e) {\n\t\tconsole.error(e);\n\t}\n}\n\nexport async function registerLibraries(options?: ConfigurationOptions) {\n\t// Setup configuration.\n\tconst configurationInstance = new ConfigurationService(options);\n\tContainer.set(ConfigurationService, configurationInstance);\n\n\t// Setup redis.\n\tconst redisInstance = new RedisService(configurationInstance.redisURL);\n\tContainer.set(RedisService, redisInstance);\n\n\t// Setup secret\n\tconst secretInstance = new SecretManagerService(configurationInstance, redisInstance);\n\tContainer.set(SecretManagerService, secretInstance);\n\n\t// Setup BullMQ\n\tconst bullMQInstance = new BullMQService(redisInstance);\n\tContainer.set(BullMQService, bullMQInstance);\n\n\tconst mongoUrl = options?.mongoDbUrl\n\t\t? options.mongoDbUrl\n\t\t: await getLibraries().getSecretsService().getKey('MONGO_URL');\n\n\tawait initLyxaMongoDbConnection(mongoUrl!, options);\n\tawait initGlobalConnection(mongoUrl!, options!.environment);\n\n\tconst loggerInstance = new LyxaLogger(options!.instanceType!, mongoUrl!);\n\tContainer.set(LyxaLogger, loggerInstance);\n\n\tconst loggerKit = new LyxaLoggerKit(options!.instanceType!);\n\tContainer.set(LyxaLoggerKit, loggerKit);\n\t\n\t// Setup firebase\n\tconst firebaseInstance = new FirebaseService(configurationInstance!);\n\tContainer.set(FirebaseService, firebaseInstance);\n\n\t// Setup microservice dispatcher\n\tconst microserviceDispatcherInstance = new MicroServiceDispatcher(secretInstance);\n\tContainer.set(MicroServiceDispatcher, microserviceDispatcherInstance);\n\n\t// Setup twilio\n\tconst twilioServiceInstance = new TwilioService();\n\tContainer.set(TwilioService, twilioServiceInstance);\n\n\t// Setup map service\n\tconst googleMapsKey = await getLibraries().getSecretsService().getKey('GOOGLE_MAPS_API_KEY');\n\tconst googleMapService = new GoogleMapsService(redisInstance, googleMapsKey as string);\n\tconst osrmMapService = new OsrmMapService();\n\tconst mapServiceInstance = new MapService(googleMapService, osrmMapService);\n\tContainer.set(MapService, mapServiceInstance);\n\n\t// Setup cash settlement service\n\tconst bobUsername = await getLibraries().getSecretsService().getKey('BOB_USER_NAME');\n\tconst bobPassword = await getLibraries().getSecretsService().getKey('BOB_PASSWORD');\n\tconst bobURL = await getLibraries().getSecretsService().getKey('BOB_URL');\n\n\tconst bobService = new BOBService({\n\t\tBOB_USER_NAME: bobUsername,\n\t\tBOB_PASSWORD: bobPassword,\n\t\tBOB_URL: bobURL,\n\t} as BOBSecrets);\n\tconst cashSettlementServiceInstance = new CashSettlementService(bobService);\n\tContainer.set(CashSettlementService, cashSettlementServiceInstance);\n\tContainer.set(BOBService, bobService);\n\n\tconst settingsServiceInstance = new CachedSettingsService(redisInstance);\n\tContainer.set(CachedSettingsService, settingsServiceInstance);\n\n\ttry {\n\t\tconst settings = await settingsServiceInstance.getSettings();\n\t\tconst { _setTimezone } = await import('./utilities/dayjs/dayjs');\n\t\t_setTimezone(settings?.timezone || 'Asia/Beirut');\n\t\tconsole.log('Timezone initialized:', settings?.timezone || 'Asia/Beirut');\n\t} catch (error) {\n\t\tconsole.error('Failed to initialize timezone:', error);\n\t}\n\n\t// Setup fcm service\n\tconst firebaseService = getLibraries().getFirebaseService();\n\tconst fcmServiceInstance = new FCMService(firebaseService.superApp);\n\tconst fcmServiceInstanceForUser = new FCMService(firebaseService.userApp);\n\tconst fcmServiceInstanceForRider = new FCMService(firebaseService.riderApp);\n\tconst fcmServiceInstanceForShop = new FCMService(firebaseService.shopApp);\n\tContainer.set(FCMService, fcmServiceInstance);\n\tContainer.set(FCMServiceForUser, fcmServiceInstanceForUser);\n\tContainer.set(FCMServiceForRider, fcmServiceInstanceForRider);\n\tContainer.set(FCMServiceForShop, fcmServiceInstanceForShop);\n\n\tconsole.log('Initialized everything');\n\n\tawait initEventBus(RabbitMQUrlMap[options?.environment ?? EnvironmentConfigurationType.DEV]);\n\n\tconst allSubscriptions = SubscriptionRegistry.getAllSubscriptions();\n\n\tconst instantiatedServices = new Map<Function, any>();\n\n\tfor (const { eventId, targetConstructor, methodName } of allSubscriptions) {\n\t\tlet instance = instantiatedServices.get(targetConstructor);\n\t\tif (!instance) {\n\t\t\tinstance = Container.get(targetConstructor as any);\n\t\t\tinstantiatedServices.set(targetConstructor, instance);\n\t\t}\n\n\t\tawait subscribeToEvent(eventId, async payload => {\n\t\t\treturn instance[methodName](payload);\n\t\t});\n\t}\n}\n\nexport function getLibraries(): LibraryManager {\n\treturn Container.get(LibraryManager);\n}\n"]}
@@ -12,8 +12,10 @@ import { CachedSettingsService } from './cache/settings';
12
12
  import { FCMService } from './firebase/fcmService';
13
13
  import { BullMQService } from './bullmq/bull-mq-service';
14
14
  import { BOBService, CashSettlementService } from './cash-settlement';
15
+ import { LyxaLoggerKit } from './logger-kit';
15
16
  export declare class LibraryManager {
16
17
  getLogger(): LyxaLogger;
18
+ getLoggerKit(): LyxaLoggerKit;
17
19
  getMicroServiceDispatcher(): MicroServiceDispatcher;
18
20
  getTwilioService(): TwilioService;
19
21
  getSecretsService(): SecretManagerService;
@@ -22,10 +22,14 @@ const settings_1 = require("./cache/settings");
22
22
  const fcmService_1 = require("./firebase/fcmService");
23
23
  const bull_mq_service_1 = require("./bullmq/bull-mq-service");
24
24
  const cash_settlement_1 = require("./cash-settlement");
25
+ const logger_kit_1 = require("./logger-kit");
25
26
  let LibraryManager = class LibraryManager {
26
27
  getLogger() {
27
28
  return typedi_1.Container.get(logger_1.LyxaLogger);
28
29
  }
30
+ getLoggerKit() {
31
+ return typedi_1.Container.get(logger_kit_1.LyxaLoggerKit);
32
+ }
29
33
  getMicroServiceDispatcher() {
30
34
  return typedi_1.Container.get(dispatcher_1.MicroServiceDispatcher);
31
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAA4C;AAC5C,qCAAyC;AACzC,qCAAsC;AACtC,6CAAsD;AACtD,uCAAiD;AACjD,mCAAuC;AACvC,mDAAuD;AACvD,qCAAyC;AACzC,yCAA6C;AAC7C,kDAAoD;AACpD,+BAAmC;AACnC,+CAAyD;AACzD,sDAA6G;AAC7G,8DAAyD;AACzD,uDAAsE;AAG/D,IAAM,cAAc,GAApB,MAAM,cAAc;IACnB,SAAS;QACf,OAAO,kBAAS,CAAC,GAAG,CAAC,mBAAU,CAAC,CAAC;IAClC,CAAC;IACM,yBAAyB;QAC/B,OAAO,kBAAS,CAAC,GAAG,CAAC,mCAAsB,CAAC,CAAC;IAC9C,CAAC;IACM,gBAAgB;QACtB,OAAO,kBAAS,CAAC,GAAG,CAAC,sBAAa,CAAC,CAAC;IACrC,CAAC;IACM,iBAAiB;QACvB,OAAO,kBAAS,CAAC,GAAG,CAAC,8BAAoB,CAAC,CAAC;IAC5C,CAAC;IACM,eAAe;QACrB,OAAO,kBAAS,CAAC,GAAG,CAAC,oBAAY,CAAC,CAAC;IACpC,CAAC;IACM,uBAAuB;QAC7B,OAAO,kBAAS,CAAC,GAAG,CAAC,oCAAoB,CAAC,CAAC;IAC5C,CAAC;IACM,kBAAkB;QACxB,OAAO,kBAAS,CAAC,GAAG,CAAC,0BAAe,CAAC,CAAC;IACvC,CAAC;IACM,sBAAsB;QAC5B,OAAO,kBAAS,CAAC,GAAG,CAAC,4BAAe,CAAC,CAAC;IACvC,CAAC;IACM,sBAAsB;QAC5B,OAAO,IAAI,sBAAa,EAAE,CAAC;IAC5B,CAAC;IACM,qBAAqB;QAC3B,OAAO,IAAI,sBAAa,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IACM,aAAa;QACnB,OAAO,kBAAS,CAAC,GAAG,CAAC,gBAAU,CAAC,CAAC;IAClC,CAAC;IACM,wBAAwB;QAC9B,OAAO,kBAAS,CAAC,GAAG,CAAC,gCAAqB,CAAC,CAAC;IAC7C,CAAC;IACM,aAAa;QACnB,OAAO,kBAAS,CAAC,GAAG,CAAC,uBAAU,CAAC,CAAC;IAClC,CAAC;IACM,oBAAoB;QAC1B,OAAO,kBAAS,CAAC,GAAG,CAAC,8BAAiB,CAAC,CAAC;IACzC,CAAC;IACM,qBAAqB;QAC3B,OAAO,kBAAS,CAAC,GAAG,CAAC,+BAAkB,CAAC,CAAC;IAC1C,CAAC;IACM,oBAAoB;QAC1B,OAAO,kBAAS,CAAC,GAAG,CAAC,8BAAiB,CAAC,CAAC;IACzC,CAAC;IACM,gBAAgB;QACtB,OAAO,kBAAS,CAAC,GAAG,CAAC,+BAAa,CAAC,CAAC;IACrC,CAAC;IACM,wBAAwB;QAC9B,OAAO,kBAAS,CAAC,GAAG,CAAC,uCAAqB,CAAC,CAAC;IAC7C,CAAC;IACM,aAAa;QACnB,OAAO,kBAAS,CAAC,GAAG,CAAC,4BAAU,CAAC,CAAC;IAClC,CAAC;CACD,CAAA;AA1DY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,gBAAO,GAAE;GACG,cAAc,CA0D1B","sourcesContent":["import { Container, Service } from 'typedi';\nimport { TwilioService } from './twilio';\nimport { LyxaLogger } from './logger';\nimport { MicroServiceDispatcher } from './dispatcher';\nimport { SecretManagerService } from './secrets';\nimport { RedisService } from './redis';\nimport { ConfigurationService } from './configuration';\nimport { UploadService } from './upload';\nimport { FirebaseService } from './firebase';\nimport { TokenRepository } from './auth/repository';\nimport { MapService } from './map';\nimport { CachedSettingsService } from './cache/settings';\nimport { FCMService, FCMServiceForRider, FCMServiceForShop, FCMServiceForUser } from './firebase/fcmService';\nimport { BullMQService } from './bullmq/bull-mq-service';\nimport { BOBService, CashSettlementService } from './cash-settlement';\n\n@Service()\nexport class LibraryManager {\n\tpublic getLogger(): LyxaLogger {\n\t\treturn Container.get(LyxaLogger);\n\t}\n\tpublic getMicroServiceDispatcher(): MicroServiceDispatcher {\n\t\treturn Container.get(MicroServiceDispatcher);\n\t}\n\tpublic getTwilioService(): TwilioService {\n\t\treturn Container.get(TwilioService);\n\t}\n\tpublic getSecretsService(): SecretManagerService {\n\t\treturn Container.get(SecretManagerService);\n\t}\n\tpublic getRedisService(): RedisService {\n\t\treturn Container.get(RedisService);\n\t}\n\tpublic getConfigurationService(): ConfigurationService {\n\t\treturn Container.get(ConfigurationService);\n\t}\n\tpublic getFirebaseService(): FirebaseService {\n\t\treturn Container.get(FirebaseService);\n\t}\n\tpublic getAuthTokenRepository(): TokenRepository {\n\t\treturn Container.get(TokenRepository);\n\t}\n\tpublic getGlobalUploadService(): UploadService {\n\t\treturn new UploadService();\n\t}\n\tpublic getTenetUploadService(): UploadService {\n\t\treturn new UploadService('lyxa-' + this.getConfigurationService().options.tenet);\n\t}\n\tpublic getMapService(): MapService {\n\t\treturn Container.get(MapService);\n\t}\n\tpublic getCachedSettingsService(): CachedSettingsService {\n\t\treturn Container.get(CachedSettingsService);\n\t}\n\tpublic getFCMService(): FCMService {\n\t\treturn Container.get(FCMService);\n\t}\n\tpublic getFCMServiceForUser(): FCMService {\n\t\treturn Container.get(FCMServiceForUser);\n\t}\n\tpublic getFCMServiceForRider(): FCMService {\n\t\treturn Container.get(FCMServiceForRider);\n\t}\n\tpublic getFCMServiceForShop(): FCMService {\n\t\treturn Container.get(FCMServiceForShop);\n\t}\n\tpublic getBullMQService(): BullMQService {\n\t\treturn Container.get(BullMQService);\n\t}\n\tpublic getCashSettlementService(): CashSettlementService {\n\t\treturn Container.get(CashSettlementService);\n\t}\n\tpublic getBOBService(): BOBService {\n\t\treturn Container.get(BOBService);\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAA4C;AAC5C,qCAAyC;AACzC,qCAAsC;AACtC,6CAAsD;AACtD,uCAAiD;AACjD,mCAAuC;AACvC,mDAAuD;AACvD,qCAAyC;AACzC,yCAA6C;AAC7C,kDAAoD;AACpD,+BAAmC;AACnC,+CAAyD;AACzD,sDAA6G;AAC7G,8DAAyD;AACzD,uDAAsE;AACtE,6CAA6C;AAGtC,IAAM,cAAc,GAApB,MAAM,cAAc;IACnB,SAAS;QACf,OAAO,kBAAS,CAAC,GAAG,CAAC,mBAAU,CAAC,CAAC;IAClC,CAAC;IACM,YAAY;QAClB,OAAO,kBAAS,CAAC,GAAG,CAAC,0BAAa,CAAC,CAAC;IACrC,CAAC;IACM,yBAAyB;QAC/B,OAAO,kBAAS,CAAC,GAAG,CAAC,mCAAsB,CAAC,CAAC;IAC9C,CAAC;IACM,gBAAgB;QACtB,OAAO,kBAAS,CAAC,GAAG,CAAC,sBAAa,CAAC,CAAC;IACrC,CAAC;IACM,iBAAiB;QACvB,OAAO,kBAAS,CAAC,GAAG,CAAC,8BAAoB,CAAC,CAAC;IAC5C,CAAC;IACM,eAAe;QACrB,OAAO,kBAAS,CAAC,GAAG,CAAC,oBAAY,CAAC,CAAC;IACpC,CAAC;IACM,uBAAuB;QAC7B,OAAO,kBAAS,CAAC,GAAG,CAAC,oCAAoB,CAAC,CAAC;IAC5C,CAAC;IACM,kBAAkB;QACxB,OAAO,kBAAS,CAAC,GAAG,CAAC,0BAAe,CAAC,CAAC;IACvC,CAAC;IACM,sBAAsB;QAC5B,OAAO,kBAAS,CAAC,GAAG,CAAC,4BAAe,CAAC,CAAC;IACvC,CAAC;IACM,sBAAsB;QAC5B,OAAO,IAAI,sBAAa,EAAE,CAAC;IAC5B,CAAC;IACM,qBAAqB;QAC3B,OAAO,IAAI,sBAAa,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IACM,aAAa;QACnB,OAAO,kBAAS,CAAC,GAAG,CAAC,gBAAU,CAAC,CAAC;IAClC,CAAC;IACM,wBAAwB;QAC9B,OAAO,kBAAS,CAAC,GAAG,CAAC,gCAAqB,CAAC,CAAC;IAC7C,CAAC;IACM,aAAa;QACnB,OAAO,kBAAS,CAAC,GAAG,CAAC,uBAAU,CAAC,CAAC;IAClC,CAAC;IACM,oBAAoB;QAC1B,OAAO,kBAAS,CAAC,GAAG,CAAC,8BAAiB,CAAC,CAAC;IACzC,CAAC;IACM,qBAAqB;QAC3B,OAAO,kBAAS,CAAC,GAAG,CAAC,+BAAkB,CAAC,CAAC;IAC1C,CAAC;IACM,oBAAoB;QAC1B,OAAO,kBAAS,CAAC,GAAG,CAAC,8BAAiB,CAAC,CAAC;IACzC,CAAC;IACM,gBAAgB;QACtB,OAAO,kBAAS,CAAC,GAAG,CAAC,+BAAa,CAAC,CAAC;IACrC,CAAC;IACM,wBAAwB;QAC9B,OAAO,kBAAS,CAAC,GAAG,CAAC,uCAAqB,CAAC,CAAC;IAC7C,CAAC;IACM,aAAa;QACnB,OAAO,kBAAS,CAAC,GAAG,CAAC,4BAAU,CAAC,CAAC;IAClC,CAAC;CACD,CAAA;AA7DY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,gBAAO,GAAE;GACG,cAAc,CA6D1B","sourcesContent":["import { Container, Service } from 'typedi';\nimport { TwilioService } from './twilio';\nimport { LyxaLogger } from './logger';\nimport { MicroServiceDispatcher } from './dispatcher';\nimport { SecretManagerService } from './secrets';\nimport { RedisService } from './redis';\nimport { ConfigurationService } from './configuration';\nimport { UploadService } from './upload';\nimport { FirebaseService } from './firebase';\nimport { TokenRepository } from './auth/repository';\nimport { MapService } from './map';\nimport { CachedSettingsService } from './cache/settings';\nimport { FCMService, FCMServiceForRider, FCMServiceForShop, FCMServiceForUser } from './firebase/fcmService';\nimport { BullMQService } from './bullmq/bull-mq-service';\nimport { BOBService, CashSettlementService } from './cash-settlement';\nimport { LyxaLoggerKit } from './logger-kit';\n\n@Service()\nexport class LibraryManager {\n\tpublic getLogger(): LyxaLogger {\n\t\treturn Container.get(LyxaLogger);\n\t}\n\tpublic getLoggerKit(): LyxaLoggerKit {\n\t\treturn Container.get(LyxaLoggerKit);\n\t}\n\tpublic getMicroServiceDispatcher(): MicroServiceDispatcher {\n\t\treturn Container.get(MicroServiceDispatcher);\n\t}\n\tpublic getTwilioService(): TwilioService {\n\t\treturn Container.get(TwilioService);\n\t}\n\tpublic getSecretsService(): SecretManagerService {\n\t\treturn Container.get(SecretManagerService);\n\t}\n\tpublic getRedisService(): RedisService {\n\t\treturn Container.get(RedisService);\n\t}\n\tpublic getConfigurationService(): ConfigurationService {\n\t\treturn Container.get(ConfigurationService);\n\t}\n\tpublic getFirebaseService(): FirebaseService {\n\t\treturn Container.get(FirebaseService);\n\t}\n\tpublic getAuthTokenRepository(): TokenRepository {\n\t\treturn Container.get(TokenRepository);\n\t}\n\tpublic getGlobalUploadService(): UploadService {\n\t\treturn new UploadService();\n\t}\n\tpublic getTenetUploadService(): UploadService {\n\t\treturn new UploadService('lyxa-' + this.getConfigurationService().options.tenet);\n\t}\n\tpublic getMapService(): MapService {\n\t\treturn Container.get(MapService);\n\t}\n\tpublic getCachedSettingsService(): CachedSettingsService {\n\t\treturn Container.get(CachedSettingsService);\n\t}\n\tpublic getFCMService(): FCMService {\n\t\treturn Container.get(FCMService);\n\t}\n\tpublic getFCMServiceForUser(): FCMService {\n\t\treturn Container.get(FCMServiceForUser);\n\t}\n\tpublic getFCMServiceForRider(): FCMService {\n\t\treturn Container.get(FCMServiceForRider);\n\t}\n\tpublic getFCMServiceForShop(): FCMService {\n\t\treturn Container.get(FCMServiceForShop);\n\t}\n\tpublic getBullMQService(): BullMQService {\n\t\treturn Container.get(BullMQService);\n\t}\n\tpublic getCashSettlementService(): CashSettlementService {\n\t\treturn Container.get(CashSettlementService);\n\t}\n\tpublic getBOBService(): BOBService {\n\t\treturn Container.get(BOBService);\n\t}\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { LyxaLoggerKit } from './logger.service';
2
+ export * from './types';
3
+ export * from '../mongo/models/log.model';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.LyxaLoggerKit = void 0;
18
+ var logger_service_1 = require("./logger.service");
19
+ Object.defineProperty(exports, "LyxaLoggerKit", { enumerable: true, get: function () { return logger_service_1.LyxaLoggerKit; } });
20
+ __exportStar(require("./types"), exports);
21
+ __exportStar(require("../mongo/models/log.model"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/logger-kit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,0CAAwB;AACxB,4DAA0C","sourcesContent":["export { LyxaLoggerKit } from './logger.service';\nexport * from './types';\nexport * from '../mongo/models/log.model';\n"]}
@@ -0,0 +1,17 @@
1
+ import { LogLevel } from '../../utilities/enum';
2
+ export interface LoggerConfig {
3
+ mongoURI: string;
4
+ microService: string;
5
+ ttlDays?: number;
6
+ enableConsole?: boolean;
7
+ enableFile?: boolean;
8
+ enableMongo?: boolean;
9
+ logDirectory?: string;
10
+ minLevel?: LogLevel;
11
+ }
12
+ export declare class LoggerConfigService {
13
+ private config?;
14
+ initialize(config: LoggerConfig): void;
15
+ getConfig(): LoggerConfig;
16
+ isInitialized(): boolean;
17
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LoggerConfigService = void 0;
10
+ const typedi_1 = require("typedi");
11
+ let LoggerConfigService = class LoggerConfigService {
12
+ config;
13
+ initialize(config) {
14
+ this.config = config;
15
+ }
16
+ getConfig() {
17
+ if (!this.config) {
18
+ throw new Error('LoggerConfigService not initialized. Call initialize() first.');
19
+ }
20
+ return this.config;
21
+ }
22
+ isInitialized() {
23
+ return !!this.config;
24
+ }
25
+ };
26
+ exports.LoggerConfigService = LoggerConfigService;
27
+ exports.LoggerConfigService = LoggerConfigService = __decorate([
28
+ (0, typedi_1.Service)()
29
+ ], LoggerConfigService);
30
+ //# sourceMappingURL=logger.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.config.js","sourceRoot":"/","sources":["libraries/logger-kit/logger.config.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAAiC;AAe1B,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACvB,MAAM,CAAgB;IAE9B,UAAU,CAAC,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,SAAS;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,aAAa;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACtB,CAAC;CACD,CAAA;AAjBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,gBAAO,GAAE;GACG,mBAAmB,CAiB/B","sourcesContent":["import { Service } from 'typedi';\nimport { LogLevel } from '../../utilities/enum';\n\nexport interface LoggerConfig {\n\tmongoURI: string;\n\tmicroService: string;\n\tttlDays?: number;\n\tenableConsole?: boolean;\n\tenableFile?: boolean;\n\tenableMongo?: boolean;\n\tlogDirectory?: string;\n\tminLevel?: LogLevel;\n}\n\n@Service()\nexport class LoggerConfigService {\n\tprivate config?: LoggerConfig;\n\n\tinitialize(config: LoggerConfig): void {\n\t\tthis.config = config;\n\t}\n\n\tgetConfig(): LoggerConfig {\n\t\tif (!this.config) {\n\t\t\tthrow new Error('LoggerConfigService not initialized. Call initialize() first.');\n\t\t}\n\t\treturn this.config;\n\t}\n\n\tisInitialized(): boolean {\n\t\treturn !!this.config;\n\t}\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import { Logger } from 'pino';
2
+ import { Log } from '../mongo/models';
3
+ import { ErrorInfo, LogMetadata, RequestContext } from './types';
4
+ export declare class LyxaLoggerKit {
5
+ private _logger;
6
+ private logDirectory;
7
+ private model;
8
+ private instanceType;
9
+ constructor(instanceType: string, ttlDays?: number);
10
+ private ensureLogDirectoryExists;
11
+ private initializePino;
12
+ private logToMongo;
13
+ info(tag: string, message: string, data?: Record<string, unknown>, metadata?: LogMetadata, requestId?: string): Promise<void>;
14
+ debug(tag: string, message: string, data?: Record<string, unknown>, metadata?: LogMetadata, requestId?: string): Promise<void>;
15
+ warn(tag: string, message: string, data?: Record<string, unknown>, metadata?: LogMetadata, requestId?: string): Promise<void>;
16
+ error(tag: string, error: Error | ErrorInfo | string, data?: Record<string, unknown>, metadata?: LogMetadata, requestId?: string, context?: RequestContext): Promise<void>;
17
+ fatal(tag: string, error: Error | ErrorInfo | string, data?: Record<string, unknown>, metadata?: LogMetadata, requestId?: string, context?: RequestContext): Promise<void>;
18
+ logRequest(method: string, url: string, statusCode: number, duration: number, requestId?: string, userId?: string, metadata?: LogMetadata): Promise<void>;
19
+ queryLogs(filter: Partial<Log>, limit?: number): Promise<Log[]>;
20
+ get logger(): Logger;
21
+ }
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.LyxaLoggerKit = void 0;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const pino_1 = require("pino");
19
+ const typedi_1 = require("typedi");
20
+ const models_1 = require("../mongo/models");
21
+ const enum_1 = require("../../utilities/enum");
22
+ let LyxaLoggerKit = class LyxaLoggerKit {
23
+ _logger;
24
+ logDirectory;
25
+ model;
26
+ instanceType;
27
+ constructor(instanceType, ttlDays = 7) {
28
+ this.instanceType = instanceType;
29
+ this.logDirectory = path_1.default.join(process.cwd(), 'logs');
30
+ this.model = (0, models_1.createLogModel)({ ttlDays });
31
+ this.ensureLogDirectoryExists();
32
+ this.initializePino();
33
+ }
34
+ ensureLogDirectoryExists() {
35
+ try {
36
+ fs_1.default.mkdirSync(this.logDirectory, { recursive: true });
37
+ }
38
+ catch (error) {
39
+ console.error('Failed to create log directory:', error);
40
+ }
41
+ }
42
+ initializePino() {
43
+ const baseLevel = process.env.NODE_ENV === 'production' ? 'info' : 'debug';
44
+ const targets = [
45
+ {
46
+ target: 'pino-pretty',
47
+ options: { colorize: true },
48
+ level: baseLevel,
49
+ },
50
+ ];
51
+ const transports = pino_1.pino.transport({ targets });
52
+ this._logger = (0, pino_1.pino)({
53
+ level: baseLevel,
54
+ base: {
55
+ instanceType: this.instanceType,
56
+ pid: process.pid,
57
+ hostname: process.env.HOSTNAME || 'unknown',
58
+ },
59
+ }, transports);
60
+ }
61
+ async logToMongo(logData) {
62
+ try {
63
+ this.model.create({
64
+ ...logData,
65
+ microService: this.instanceType,
66
+ });
67
+ }
68
+ catch (error) {
69
+ console.error('Failed to log to MongoDB:', error);
70
+ }
71
+ }
72
+ async info(tag, message, data, metadata, requestId) {
73
+ try {
74
+ this._logger.info({ data, metadata, requestId }, `[${tag}] ${message}`);
75
+ await this.logToMongo({
76
+ level: enum_1.LogLevel.INFO,
77
+ tag,
78
+ message,
79
+ data,
80
+ metadata: metadata || {},
81
+ requestId,
82
+ });
83
+ }
84
+ catch (error) {
85
+ console.error('Failed to log to MongoDB:', error);
86
+ }
87
+ }
88
+ async debug(tag, message, data, metadata, requestId) {
89
+ this._logger.debug({ tag, data, metadata, requestId }, message);
90
+ await this.logToMongo({
91
+ level: enum_1.LogLevel.DEBUG,
92
+ tag,
93
+ message,
94
+ data,
95
+ metadata: metadata || {},
96
+ requestId,
97
+ });
98
+ }
99
+ async warn(tag, message, data, metadata, requestId) {
100
+ this._logger.warn({ tag, data, metadata, requestId }, message);
101
+ await this.logToMongo({
102
+ level: enum_1.LogLevel.WARN,
103
+ tag,
104
+ message,
105
+ data,
106
+ metadata: metadata || {},
107
+ requestId,
108
+ });
109
+ }
110
+ async error(tag, error, data, metadata, requestId, context) {
111
+ const errorInfo = typeof error === 'string'
112
+ ? { name: 'Error', message: error }
113
+ : error instanceof Error
114
+ ? {
115
+ name: error.name,
116
+ message: error.message,
117
+ stack: error.stack,
118
+ }
119
+ : error;
120
+ this._logger.error({ tag, error: errorInfo, data, metadata, requestId, context }, errorInfo.message);
121
+ await this.logToMongo({
122
+ level: enum_1.LogLevel.ERROR,
123
+ tag,
124
+ message: errorInfo.message,
125
+ error: errorInfo,
126
+ stackTrace: errorInfo.stack?.split('\n'),
127
+ data,
128
+ metadata: metadata || {},
129
+ requestId,
130
+ context,
131
+ });
132
+ }
133
+ async fatal(tag, error, data, metadata, requestId, context) {
134
+ const errorInfo = typeof error === 'string'
135
+ ? { name: 'FatalError', message: error }
136
+ : error instanceof Error
137
+ ? {
138
+ name: error.name,
139
+ message: error.message,
140
+ stack: error.stack,
141
+ }
142
+ : error;
143
+ this._logger.fatal({ tag, error: errorInfo, data, metadata, requestId, context }, errorInfo.message);
144
+ await this.logToMongo({
145
+ level: enum_1.LogLevel.FATAL,
146
+ tag,
147
+ message: errorInfo.message,
148
+ error: errorInfo,
149
+ stackTrace: errorInfo.stack?.split('\n'),
150
+ data,
151
+ metadata: metadata || {},
152
+ requestId,
153
+ context,
154
+ });
155
+ }
156
+ async logRequest(method, url, statusCode, duration, requestId, userId, metadata) {
157
+ const level = statusCode >= 500 ? enum_1.LogLevel.ERROR : statusCode >= 400 ? enum_1.LogLevel.WARN : enum_1.LogLevel.INFO;
158
+ const message = `${method} ${url} ${statusCode} - ${duration}ms`;
159
+ await this.logToMongo({
160
+ level,
161
+ tag: 'HTTP_REQUEST',
162
+ message,
163
+ duration,
164
+ requestId,
165
+ context: { method, url },
166
+ metadata: { ...metadata, userId, statusCode },
167
+ });
168
+ if (level === enum_1.LogLevel.ERROR) {
169
+ this._logger.error({ method, url, statusCode, duration, requestId }, message);
170
+ }
171
+ else if (level === enum_1.LogLevel.WARN) {
172
+ this._logger.warn({ method, url, statusCode, duration, requestId }, message);
173
+ }
174
+ else {
175
+ this._logger.info({ method, url, statusCode, duration, requestId }, message);
176
+ }
177
+ }
178
+ async queryLogs(filter, limit = 100) {
179
+ return this.model.find(filter).limit(limit).sort({ createdAt: -1 }).exec();
180
+ }
181
+ get logger() {
182
+ return this._logger;
183
+ }
184
+ };
185
+ exports.LyxaLoggerKit = LyxaLoggerKit;
186
+ exports.LyxaLoggerKit = LyxaLoggerKit = __decorate([
187
+ (0, typedi_1.Service)(),
188
+ __metadata("design:paramtypes", [String, Number])
189
+ ], LyxaLoggerKit);
190
+ //# sourceMappingURL=logger.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.service.js","sourceRoot":"/","sources":["libraries/logger-kit/logger.service.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { Logger, pino } from 'pino';\nimport { Service } from 'typedi';\nimport { createLogModel, Log } from '../mongo/models';\nimport { LogLevel } from '../../utilities/enum';\nimport { ErrorInfo, LogMetadata, RequestContext } from './types';\n\n@Service()\nexport class LyxaLoggerKit {\n\tprivate _logger: Logger;\n\tprivate logDirectory: string;\n\tprivate model: ReturnType<typeof createLogModel>;\n\tprivate instanceType: string;\n\n\tconstructor(instanceType: string, ttlDays: number = 7) {\n\t\tthis.instanceType = instanceType;\n\t\tthis.logDirectory = path.join(process.cwd(), 'logs');\n\n\t\tthis.model = createLogModel({ ttlDays });\n\n\t\tthis.ensureLogDirectoryExists();\n\t\tthis.initializePino();\n\t}\n\n\t// Removed connectToMongo; rely on shared mongoose connection\n\n\tprivate ensureLogDirectoryExists(): void {\n\t\ttry {\n\t\t\tfs.mkdirSync(this.logDirectory, { recursive: true });\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to create log directory:', error);\n\t\t}\n\t}\n\n\tprivate initializePino(): void {\n\t\tconst baseLevel = process.env.NODE_ENV === 'production' ? 'info' : 'debug';\n\n\t\tconst targets: Array<any> = [\n\t\t\t{\n\t\t\t\ttarget: 'pino-pretty',\n\t\t\t\toptions: { colorize: true },\n\t\t\t\tlevel: baseLevel,\n\t\t\t},\n\t\t];\n\n\t\tconst transports = pino.transport({ targets });\n\t\tthis._logger = pino(\n\t\t\t{\n\t\t\t\tlevel: baseLevel,\n\t\t\t\tbase: {\n\t\t\t\t\tinstanceType: this.instanceType,\n\t\t\t\t\tpid: process.pid,\n\t\t\t\t\thostname: process.env.HOSTNAME || 'unknown',\n\t\t\t\t},\n\t\t\t},\n\t\t\ttransports\n\t\t);\n\t}\n\n\t// Direct MongoDB logging methods\n\tprivate async logToMongo(logData: Partial<Log>): Promise<void> {\n\t\ttry {\n\t\t\tthis.model.create({\n\t\t\t\t...logData,\n\t\t\t\tmicroService: this.instanceType,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to log to MongoDB:', error);\n\t\t}\n\t}\n\n\t// Structured logging methods\n\tasync info(\n\t\ttag: string,\n\t\tmessage: string,\n\t\tdata?: Record<string, unknown>,\n\t\tmetadata?: LogMetadata,\n\t\trequestId?: string\n\t): Promise<void> {\n\t\ttry {\n\t\t\tthis._logger.info({ data, metadata, requestId }, `[${tag}] ${message}`);\n\n\t\t\tawait this.logToMongo({\n\t\t\t\tlevel: LogLevel.INFO,\n\t\t\t\ttag,\n\t\t\t\tmessage,\n\t\t\t\tdata,\n\t\t\t\tmetadata: metadata || {},\n\t\t\t\trequestId,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to log to MongoDB:', error);\n\t\t}\n\t}\n\n\tasync debug(\n\t\ttag: string,\n\t\tmessage: string,\n\t\tdata?: Record<string, unknown>,\n\t\tmetadata?: LogMetadata,\n\t\trequestId?: string\n\t): Promise<void> {\n\t\tthis._logger.debug({ tag, data, metadata, requestId }, message);\n\n\t\tawait this.logToMongo({\n\t\t\tlevel: LogLevel.DEBUG,\n\t\t\ttag,\n\t\t\tmessage,\n\t\t\tdata,\n\t\t\tmetadata: metadata || {},\n\t\t\trequestId,\n\t\t});\n\t}\n\n\tasync warn(\n\t\ttag: string,\n\t\tmessage: string,\n\t\tdata?: Record<string, unknown>,\n\t\tmetadata?: LogMetadata,\n\t\trequestId?: string\n\t): Promise<void> {\n\t\tthis._logger.warn({ tag, data, metadata, requestId }, message);\n\n\t\tawait this.logToMongo({\n\t\t\tlevel: LogLevel.WARN,\n\t\t\ttag,\n\t\t\tmessage,\n\t\t\tdata,\n\t\t\tmetadata: metadata || {},\n\t\t\trequestId,\n\t\t});\n\t}\n\n\tasync error(\n\t\ttag: string,\n\t\terror: Error | ErrorInfo | string,\n\t\tdata?: Record<string, unknown>,\n\t\tmetadata?: LogMetadata,\n\t\trequestId?: string,\n\t\tcontext?: RequestContext\n\t): Promise<void> {\n\t\tconst errorInfo: ErrorInfo =\n\t\t\ttypeof error === 'string'\n\t\t\t\t? { name: 'Error', message: error }\n\t\t\t\t: error instanceof Error\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tname: error.name,\n\t\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\t\tstack: error.stack,\n\t\t\t\t\t\t}\n\t\t\t\t\t: error;\n\n\t\tthis._logger.error({ tag, error: errorInfo, data, metadata, requestId, context }, errorInfo.message);\n\n\t\tawait this.logToMongo({\n\t\t\tlevel: LogLevel.ERROR,\n\t\t\ttag,\n\t\t\tmessage: errorInfo.message,\n\t\t\terror: errorInfo,\n\t\t\tstackTrace: errorInfo.stack?.split('\\n'),\n\t\t\tdata,\n\t\t\tmetadata: metadata || {},\n\t\t\trequestId,\n\t\t\tcontext,\n\t\t});\n\t}\n\n\tasync fatal(\n\t\ttag: string,\n\t\terror: Error | ErrorInfo | string,\n\t\tdata?: Record<string, unknown>,\n\t\tmetadata?: LogMetadata,\n\t\trequestId?: string,\n\t\tcontext?: RequestContext\n\t): Promise<void> {\n\t\tconst errorInfo: ErrorInfo =\n\t\t\ttypeof error === 'string'\n\t\t\t\t? { name: 'FatalError', message: error }\n\t\t\t\t: error instanceof Error\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tname: error.name,\n\t\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\t\tstack: error.stack,\n\t\t\t\t\t\t}\n\t\t\t\t\t: error;\n\n\t\tthis._logger.fatal({ tag, error: errorInfo, data, metadata, requestId, context }, errorInfo.message);\n\n\t\tawait this.logToMongo({\n\t\t\tlevel: LogLevel.FATAL,\n\t\t\ttag,\n\t\t\tmessage: errorInfo.message,\n\t\t\terror: errorInfo,\n\t\t\tstackTrace: errorInfo.stack?.split('\\n'),\n\t\t\tdata,\n\t\t\tmetadata: metadata || {},\n\t\t\trequestId,\n\t\t\tcontext,\n\t\t});\n\t}\n\n\t// Convenience method for HTTP request logging\n\tasync logRequest(\n\t\tmethod: string,\n\t\turl: string,\n\t\tstatusCode: number,\n\t\tduration: number,\n\t\trequestId?: string,\n\t\tuserId?: string,\n\t\tmetadata?: LogMetadata\n\t): Promise<void> {\n\t\tconst level = statusCode >= 500 ? LogLevel.ERROR : statusCode >= 400 ? LogLevel.WARN : LogLevel.INFO;\n\t\tconst message = `${method} ${url} ${statusCode} - ${duration}ms`;\n\n\t\tawait this.logToMongo({\n\t\t\tlevel,\n\t\t\ttag: 'HTTP_REQUEST',\n\t\t\tmessage,\n\t\t\tduration,\n\t\t\trequestId,\n\t\t\tcontext: { method, url },\n\t\t\tmetadata: { ...metadata, userId, statusCode },\n\t\t});\n\n\t\tif (level === LogLevel.ERROR) {\n\t\t\tthis._logger.error({ method, url, statusCode, duration, requestId }, message);\n\t\t} else if (level === LogLevel.WARN) {\n\t\t\tthis._logger.warn({ method, url, statusCode, duration, requestId }, message);\n\t\t} else {\n\t\t\tthis._logger.info({ method, url, statusCode, duration, requestId }, message);\n\t\t}\n\t}\n\n\t// Query logs from MongoDB\n\tasync queryLogs(filter: Partial<Log>, limit = 100): Promise<Log[]> {\n\t\treturn this.model.find(filter).limit(limit).sort({ createdAt: -1 }).exec();\n\t}\n\n\t// Backwards compatibility with existing code\n\tget logger(): Logger {\n\t\treturn this._logger;\n\t}\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import { LogLevel } from '../../utilities/enum';
2
+ export interface LoggerConfig {
3
+ instanceType: string;
4
+ mongoURI: string;
5
+ ttlDays?: number;
6
+ enableConsole?: boolean;
7
+ enableFile?: boolean;
8
+ enableMongo?: boolean;
9
+ logDirectory?: string;
10
+ minLevel?: LogLevel;
11
+ }
12
+ export interface LogMetadata {
13
+ userId?: string;
14
+ sessionId?: string;
15
+ ipAddress?: string;
16
+ userAgent?: string;
17
+ [key: string]: unknown;
18
+ }
19
+ export interface ErrorInfo {
20
+ name: string;
21
+ message: string;
22
+ code?: string | number;
23
+ statusCode?: number;
24
+ stack?: string;
25
+ [key: string]: unknown;
26
+ }
27
+ export interface RequestContext {
28
+ requestId?: string;
29
+ method?: string;
30
+ url?: string;
31
+ headers?: Record<string, string>;
32
+ body?: unknown;
33
+ query?: Record<string, unknown>;
34
+ params?: Record<string, unknown>;
35
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["libraries/logger-kit/types.ts"],"names":[],"mappings":"","sourcesContent":["import { LogLevel } from '../../utilities/enum';\n\nexport interface LoggerConfig {\n\tinstanceType: string;\n\tmongoURI: string;\n\tttlDays?: number;\n\tenableConsole?: boolean;\n\tenableFile?: boolean;\n\tenableMongo?: boolean;\n\tlogDirectory?: string;\n\tminLevel?: LogLevel;\n}\n\nexport interface LogMetadata {\n\tuserId?: string;\n\tsessionId?: string;\n\tipAddress?: string;\n\tuserAgent?: string;\n\n\t[key: string]: unknown;\n}\n\nexport interface ErrorInfo {\n\tname: string;\n\tmessage: string;\n\tcode?: string | number;\n\tstatusCode?: number;\n\tstack?: string;\n\n\t[key: string]: unknown;\n}\n\nexport interface RequestContext {\n\trequestId?: string;\n\tmethod?: string;\n\turl?: string;\n\theaders?: Record<string, string>;\n\tbody?: unknown;\n\tquery?: Record<string, unknown>;\n\tparams?: Record<string, unknown>;\n}\n"]}
@@ -104,6 +104,7 @@ import { BlockedTime } from './blocked-time.model';
104
104
  import { ZoneExtraTime } from './zone-extra-time';
105
105
  import { AppAppearance } from './app-appearance.model';
106
106
  import { ServiceControl } from './service-control.model';
107
+ import { Log } from './log.model';
107
108
  export declare const ActivityLogModel: ReturnModelType<typeof ActivityLog>;
108
109
  export * from './activity-log.model';
109
110
  export declare const AdminAccessControlModel: ReturnModelType<typeof AdminAccessControl>;
@@ -316,6 +317,8 @@ export declare const TicketActionModel: ReturnModelType<typeof TicketAction>;
316
317
  export * from './ticket-action.model';
317
318
  export declare const ServicePromotionModel: ReturnModelType<typeof ServicePromotion>;
318
319
  export * from './service-promotion.model';
320
+ export declare const LoggerModel: ReturnModelType<typeof Log>;
321
+ export * from './log.model';
319
322
  export declare const ZoneExtraTimeModel: ReturnModelType<typeof ZoneExtraTime>;
320
323
  export * from './zone-extra-time';
321
324
  export * from './google-maps-usage.model';
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.ShopPayoutModel = exports.PayoutModel = exports.ParentModel = exports.ShopCourierOrderModel = exports.CourierOrderModel = exports.RegularOrderModel = exports.OrderModel = exports.NutritionModel = exports.NotificationModel = exports.MealPlanModel = exports.PunchMarketingModel = exports.FreeDeliveryMarketingModel = exports.FeaturedMarketingModel = exports.DiscountMarketingModel = exports.Buy1Get1MarketingModel = exports.MarketingModel = exports.ListContainerModel = exports.LineItemModel = exports.GalleryUploadModel = exports.GalleryModel = exports.FlagModel = exports.FinanceSettlementModel = exports.FilterContainerModel = exports.FeaturedSettingModel = exports.FavouriteModel = exports.DishModel = exports.DealSettingModel = exports.ReferralRewardCouponModel = exports.ReferralCodeCouponModel = exports.IndividualUserCouponModel = exports.IndividualStoreCouponModel = exports.ShopsCategoriesCouponModel = exports.GlobalCouponModel = exports.CustomCouponModel = exports.BaseCouponModel = exports.CouponModel = exports.CounterModel = exports.CategoryModel = exports.CartParticipantModel = exports.CartModel = exports.ServiceControlModel = exports.AppAppearanceModel = exports.BrandModel = exports.BOBFinanceModel = exports.BannerModel = exports.AttributeModel = exports.UserAppSectionSettingModel = exports.AdminModel = exports.AdminAccessControlModel = exports.ActivityLogModel = void 0;
18
- exports.ZoneExtraTimeModel = exports.ServicePromotionModel = exports.TicketActionModel = exports.BlockedTimeModel = exports.ProfessionalScheduleModel = exports.ServiceOrderModel = exports.ServiceLineItemModel = exports.ServiceCartModel = exports.ProfessionalModel = exports.ServicePackageModel = exports.AddOnModel = exports.ServiceCategoryModel = exports.VendorAccessControlModel = exports.VendorModel = exports.VendorParentModel = exports.ServiceModel = exports.ChatroomModel = exports.AgentPerformanceModel = exports.MessageModel = exports.TicketModel = exports.RewardModel = exports.CancellationReasonModel = exports.SupportReasonModel = exports.TermsAndConditionsModel = exports.DefaultChatModel = exports.ZoneModel = exports.UserModel = exports.TagModel = exports.SubscriptionModel = exports.ShopModel = exports.ShopMealPlanModel = exports.ShopCategoryModel = exports.ShopAccessControlModel = exports.SettingModel = exports.RiderModel = exports.RiderTrackingModel = exports.RiderTimeoutModel = exports.ServiceOrderReviewModel = exports.RiderReviewModel = exports.ShopReviewModel = exports.ReviewModel = exports.RequestAreaModel = exports.ReferralSettingModel = exports.RatingSettingModel = exports.PunchMarketingHistoryModel = exports.ProductUploadModel = exports.ProductModel = exports.ProductMarketingModel = exports.RiderPayoutModel = void 0;
18
+ exports.ZoneExtraTimeModel = exports.LoggerModel = exports.ServicePromotionModel = exports.TicketActionModel = exports.BlockedTimeModel = exports.ProfessionalScheduleModel = exports.ServiceOrderModel = exports.ServiceLineItemModel = exports.ServiceCartModel = exports.ProfessionalModel = exports.ServicePackageModel = exports.AddOnModel = exports.ServiceCategoryModel = exports.VendorAccessControlModel = exports.VendorModel = exports.VendorParentModel = exports.ServiceModel = exports.ChatroomModel = exports.AgentPerformanceModel = exports.MessageModel = exports.TicketModel = exports.RewardModel = exports.CancellationReasonModel = exports.SupportReasonModel = exports.TermsAndConditionsModel = exports.DefaultChatModel = exports.ZoneModel = exports.UserModel = exports.TagModel = exports.SubscriptionModel = exports.ShopModel = exports.ShopMealPlanModel = exports.ShopCategoryModel = exports.ShopAccessControlModel = exports.SettingModel = exports.RiderModel = exports.RiderTrackingModel = exports.RiderTimeoutModel = exports.ServiceOrderReviewModel = exports.RiderReviewModel = exports.ShopReviewModel = exports.ReviewModel = exports.RequestAreaModel = exports.ReferralSettingModel = exports.RatingSettingModel = exports.PunchMarketingHistoryModel = exports.ProductUploadModel = exports.ProductModel = exports.ProductMarketingModel = exports.RiderPayoutModel = void 0;
19
19
  exports.getCoreAuthIdentityModel = getCoreAuthIdentityModel;
20
20
  exports.getCoreEmailAuthIdentityModel = getCoreEmailAuthIdentityModel;
21
21
  exports.getCorePhoneAuthIdentityModel = getCorePhoneAuthIdentityModel;
@@ -132,6 +132,7 @@ const blocked_time_model_1 = require("./blocked-time.model");
132
132
  const zone_extra_time_1 = require("./zone-extra-time");
133
133
  const app_appearance_model_1 = require("./app-appearance.model");
134
134
  const service_control_model_1 = require("./service-control.model");
135
+ const log_model_1 = require("./log.model");
135
136
  exports.ActivityLogModel = (0, typegoose_1.getModelForClass)(activity_log_model_1.ActivityLog);
136
137
  __exportStar(require("./activity-log.model"), exports);
137
138
  exports.AdminAccessControlModel = (0, typegoose_1.getModelForClass)(admin_access_control_model_1.AdminAccessControl);
@@ -387,6 +388,8 @@ exports.TicketActionModel = (0, typegoose_1.getModelForClass)(ticket_action_mode
387
388
  __exportStar(require("./ticket-action.model"), exports);
388
389
  exports.ServicePromotionModel = (0, typegoose_1.getModelForClass)(service_promotion_model_1.ServicePromotion);
389
390
  __exportStar(require("./service-promotion.model"), exports);
391
+ exports.LoggerModel = (0, typegoose_1.getModelForClass)(log_model_1.Log);
392
+ __exportStar(require("./log.model"), exports);
390
393
  exports.ZoneExtraTimeModel = (0, typegoose_1.getModelForClass)(zone_extra_time_1.ZoneExtraTime);
391
394
  __exportStar(require("./zone-extra-time"), exports);
392
395
  __exportStar(require("./google-maps-usage.model"), exports);