@lyxa.ai/core 1.0.100 → 1.0.102

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 (224) hide show
  1. package/dist/index.js.map +1 -1
  2. package/dist/libraries/auth/index.js.map +1 -1
  3. package/dist/libraries/auth/refreshtoken.js.map +1 -1
  4. package/dist/libraries/auth/repository.js.map +1 -1
  5. package/dist/libraries/cache/settings/index.js.map +1 -1
  6. package/dist/libraries/configuration/index.js.map +1 -1
  7. package/dist/libraries/configuration/types/EnvironmentConfigurationType.js.map +1 -1
  8. package/dist/libraries/dispatcher/index.js.map +1 -1
  9. package/dist/libraries/event/BaseEvent.js.map +1 -1
  10. package/dist/libraries/event/decorators/metadata.js.map +1 -1
  11. package/dist/libraries/event/decorators/subscribe.js.map +1 -1
  12. package/dist/libraries/event/index.js.map +1 -1
  13. package/dist/libraries/event/registry/SubscriptionRegistry.js.map +1 -1
  14. package/dist/libraries/event/test/OrderCreationEvent.js.map +1 -1
  15. package/dist/libraries/firebase/fcmService.js.map +1 -1
  16. package/dist/libraries/firebase/index.js.map +1 -1
  17. package/dist/libraries/index.js.map +1 -1
  18. package/dist/libraries/logger/index.js.map +1 -1
  19. package/dist/libraries/map/index.js.map +1 -1
  20. package/dist/libraries/map/interfaces/IMapService.js.map +1 -1
  21. package/dist/libraries/map/mapService.js.map +1 -1
  22. package/dist/libraries/map/providers/google-maps.js.map +1 -1
  23. package/dist/libraries/map/providers/index.js.map +1 -1
  24. package/dist/libraries/mongo/index.js.map +1 -1
  25. package/dist/libraries/mongo/models/activity-log.model.js.map +1 -1
  26. package/dist/libraries/mongo/models/admin-access-control.model.js.map +1 -1
  27. package/dist/libraries/mongo/models/admin.model.js.map +1 -1
  28. package/dist/libraries/mongo/models/agent-performance.model.d.ts +13 -0
  29. package/dist/libraries/mongo/models/agent-performance.model.js +68 -0
  30. package/dist/libraries/mongo/models/agent-performance.model.js.map +1 -0
  31. package/dist/libraries/mongo/models/app-screen-setting.model.js +2 -27
  32. package/dist/libraries/mongo/models/app-screen-setting.model.js.map +1 -1
  33. package/dist/libraries/mongo/models/attribute.model.js.map +1 -1
  34. package/dist/libraries/mongo/models/banner.model.js.map +1 -1
  35. package/dist/libraries/mongo/models/base/base-coupon.model.js.map +1 -1
  36. package/dist/libraries/mongo/models/base/base-review.model.js.map +1 -1
  37. package/dist/libraries/mongo/models/bob-finance.model.js.map +1 -1
  38. package/dist/libraries/mongo/models/brand.model.js.map +1 -1
  39. package/dist/libraries/mongo/models/cancellation-reason.model.js.map +1 -1
  40. package/dist/libraries/mongo/models/card.model.js.map +1 -1
  41. package/dist/libraries/mongo/models/cart-participant.model.js.map +1 -1
  42. package/dist/libraries/mongo/models/cart.model.js.map +1 -1
  43. package/dist/libraries/mongo/models/category.model.js.map +1 -1
  44. package/dist/libraries/mongo/models/core-auth-identity.model.js.map +1 -1
  45. package/dist/libraries/mongo/models/core-user.model.js.map +1 -1
  46. package/dist/libraries/mongo/models/counter.model.js.map +1 -1
  47. package/dist/libraries/mongo/models/coupon.model.js.map +1 -1
  48. package/dist/libraries/mongo/models/deal-setting.model.js.map +1 -1
  49. package/dist/libraries/mongo/models/default-chat.model.js.map +1 -1
  50. package/dist/libraries/mongo/models/dish.model.js.map +1 -1
  51. package/dist/libraries/mongo/models/embedded/attribute-item.model.js.map +1 -1
  52. package/dist/libraries/mongo/models/embedded/attribute-map.model.js.map +1 -1
  53. package/dist/libraries/mongo/models/embedded/business-development-setting.model.js.map +1 -1
  54. package/dist/libraries/mongo/models/embedded/cash-settlement.model.js.map +1 -1
  55. package/dist/libraries/mongo/models/embedded/charge-setting.model.d.ts +14 -0
  56. package/dist/libraries/mongo/models/embedded/charge-setting.model.js +60 -0
  57. package/dist/libraries/mongo/models/embedded/charge-setting.model.js.map +1 -0
  58. package/dist/libraries/mongo/models/embedded/charge-settings.model.js.map +1 -1
  59. package/dist/libraries/mongo/models/embedded/charge.model.js.map +1 -1
  60. package/dist/libraries/mongo/models/embedded/courier-order-finance.model.js.map +1 -1
  61. package/dist/libraries/mongo/models/embedded/courier-setting.model.js.map +1 -1
  62. package/dist/libraries/mongo/models/embedded/currency-setting.model.js.map +1 -1
  63. package/dist/libraries/mongo/models/embedded/currency.model.js.map +1 -1
  64. package/dist/libraries/mongo/models/embedded/customer-support-batches.model.js.map +1 -1
  65. package/dist/libraries/mongo/models/embedded/customer-support-numbers.model.js.map +1 -1
  66. package/dist/libraries/mongo/models/embedded/delivery-charge-setting.model.js.map +1 -1
  67. package/dist/libraries/mongo/models/embedded/delivery-info.model.js.map +1 -1
  68. package/dist/libraries/mongo/models/embedded/featured-item.mode.js.map +1 -1
  69. package/dist/libraries/mongo/models/embedded/line-item-attribute.model.js.map +1 -1
  70. package/dist/libraries/mongo/models/embedded/marketing-cut.model.js.map +1 -1
  71. package/dist/libraries/mongo/models/embedded/order-cancel.model.js.map +1 -1
  72. package/dist/libraries/mongo/models/embedded/order-finance.model.js.map +1 -1
  73. package/dist/libraries/mongo/models/embedded/order-pricing.model.js.map +1 -1
  74. package/dist/libraries/mongo/models/embedded/order-refund.model.js.map +1 -1
  75. package/dist/libraries/mongo/models/embedded/otp-fields.model.js.map +1 -1
  76. package/dist/libraries/mongo/models/embedded/package.model.js.map +1 -1
  77. package/dist/libraries/mongo/models/embedded/parent-document.model.js.map +1 -1
  78. package/dist/libraries/mongo/models/embedded/payment-attempt.model.js.map +1 -1
  79. package/dist/libraries/mongo/models/embedded/payment-infromation.model.js.map +1 -1
  80. package/dist/libraries/mongo/models/embedded/payout-setting.model.js.map +1 -1
  81. package/dist/libraries/mongo/models/embedded/plus-settings.model.js.map +1 -1
  82. package/dist/libraries/mongo/models/embedded/price-breakdown.model.js.map +1 -1
  83. package/dist/libraries/mongo/models/embedded/product-nutrition.model.js.map +1 -1
  84. package/dist/libraries/mongo/models/embedded/profit.model.js.map +1 -1
  85. package/dist/libraries/mongo/models/embedded/referral-discount-config.model.js.map +1 -1
  86. package/dist/libraries/mongo/models/embedded/regular-order-finance.model.js.map +1 -1
  87. package/dist/libraries/mongo/models/embedded/rider-assignment-model.js.map +1 -1
  88. package/dist/libraries/mongo/models/embedded/rider-batches.model.js.map +1 -1
  89. package/dist/libraries/mongo/models/embedded/rider-equipment.model.js.map +1 -1
  90. package/dist/libraries/mongo/models/embedded/rider-setting.model.js.map +1 -1
  91. package/dist/libraries/mongo/models/embedded/service-fee-setting.model.js.map +1 -1
  92. package/dist/libraries/mongo/models/embedded/shop-document.model.js.map +1 -1
  93. package/dist/libraries/mongo/models/embedded/status-timeline.model.js.map +1 -1
  94. package/dist/libraries/mongo/models/embedded/subscription-summary.model.js.map +1 -1
  95. package/dist/libraries/mongo/models/embedded/support-reason-info.model.js.map +1 -1
  96. package/dist/libraries/mongo/models/embedded/ticket-message.model.d.ts +11 -0
  97. package/dist/libraries/mongo/models/{providers/courier-order-finance.model.js → embedded/ticket-message.model.js} +23 -11
  98. package/dist/libraries/mongo/models/embedded/ticket-message.model.js.map +1 -0
  99. package/dist/libraries/mongo/models/embedded/trip-leg.mode.js.map +1 -1
  100. package/dist/libraries/mongo/models/embedded/vat.model.js.map +1 -1
  101. package/dist/libraries/mongo/models/embedded/zone-geometry.mode.js.map +1 -1
  102. package/dist/libraries/mongo/models/faq.model.js.map +1 -1
  103. package/dist/libraries/mongo/models/favourite.model.js.map +1 -1
  104. package/dist/libraries/mongo/models/featured-setting.model.js.map +1 -1
  105. package/dist/libraries/mongo/models/filter-container.model.js.map +1 -1
  106. package/dist/libraries/mongo/models/finance-settlement.model.js.map +1 -1
  107. package/dist/libraries/mongo/models/gallery.model.js.map +1 -1
  108. package/dist/libraries/mongo/models/index.d.ts +7 -0
  109. package/dist/libraries/mongo/models/index.js +8 -1
  110. package/dist/libraries/mongo/models/index.js.map +1 -1
  111. package/dist/libraries/mongo/models/line-item.model.js.map +1 -1
  112. package/dist/libraries/mongo/models/list-container.model.js.map +1 -1
  113. package/dist/libraries/mongo/models/loyalty-point-category.model.js.map +1 -1
  114. package/dist/libraries/mongo/models/loyalty-point-setting.model.js.map +1 -1
  115. package/dist/libraries/mongo/models/loyalty-point.model.js.map +1 -1
  116. package/dist/libraries/mongo/models/marketing.model.js.map +1 -1
  117. package/dist/libraries/mongo/models/meal-plan.model.js.map +1 -1
  118. package/dist/libraries/mongo/models/notification.model.js.map +1 -1
  119. package/dist/libraries/mongo/models/nutrition.model.js.map +1 -1
  120. package/dist/libraries/mongo/models/order-delivery.model.js.map +1 -1
  121. package/dist/libraries/mongo/models/order-payment.model.d.ts +4 -0
  122. package/dist/libraries/mongo/models/order-payment.model.js +15 -3
  123. package/dist/libraries/mongo/models/order-payment.model.js.map +1 -1
  124. package/dist/libraries/mongo/models/order.model.js.map +1 -1
  125. package/dist/libraries/mongo/models/parent.model.js.map +1 -1
  126. package/dist/libraries/mongo/models/payout.model.js.map +1 -1
  127. package/dist/libraries/mongo/models/product-marketing.model.js.map +1 -1
  128. package/dist/libraries/mongo/models/product.model.js.map +1 -1
  129. package/dist/libraries/mongo/models/providers/areeba-card.model.js.map +1 -1
  130. package/dist/libraries/mongo/models/providers/buy1-get1-marketing.model.js.map +1 -1
  131. package/dist/libraries/mongo/models/providers/core-apple-auth-identity.model.js.map +1 -1
  132. package/dist/libraries/mongo/models/providers/core-email-auth-identity.model.js.map +1 -1
  133. package/dist/libraries/mongo/models/providers/core-google-auth-identity.model.js.map +1 -1
  134. package/dist/libraries/mongo/models/providers/core-phone-auth-identity.model.js.map +1 -1
  135. package/dist/libraries/mongo/models/providers/courier-order.model.js.map +1 -1
  136. package/dist/libraries/mongo/models/providers/custom-coupon.model.js.map +1 -1
  137. package/dist/libraries/mongo/models/providers/discount-marketing.model.js.map +1 -1
  138. package/dist/libraries/mongo/models/providers/featured-marketing.model.js.map +1 -1
  139. package/dist/libraries/mongo/models/providers/free-delivery-marketing.model.js.map +1 -1
  140. package/dist/libraries/mongo/models/providers/global-coupon.model.js.map +1 -1
  141. package/dist/libraries/mongo/models/providers/individual-store-coupon.model.js.map +1 -1
  142. package/dist/libraries/mongo/models/providers/individual-user-coupon.model.js.map +1 -1
  143. package/dist/libraries/mongo/models/providers/loyalty-point-marketing.model.js.map +1 -1
  144. package/dist/libraries/mongo/models/providers/punch-marketing.model.js.map +1 -1
  145. package/dist/libraries/mongo/models/providers/referral-code-coupon.model.js.map +1 -1
  146. package/dist/libraries/mongo/models/providers/referral-reward-coupon.model.js.map +1 -1
  147. package/dist/libraries/mongo/models/providers/regular-order.model.js.map +1 -1
  148. package/dist/libraries/mongo/models/providers/rider-payout.model.js.map +1 -1
  149. package/dist/libraries/mongo/models/providers/shop-payout.model.js.map +1 -1
  150. package/dist/libraries/mongo/models/punch-marketing-history.model.js.map +1 -1
  151. package/dist/libraries/mongo/models/rating-setting.model.js.map +1 -1
  152. package/dist/libraries/mongo/models/referral-setting.model.js.map +1 -1
  153. package/dist/libraries/mongo/models/request-area.model.js.map +1 -1
  154. package/dist/libraries/mongo/models/reward.model.js.map +1 -1
  155. package/dist/libraries/mongo/models/rider-review.model.js.map +1 -1
  156. package/dist/libraries/mongo/models/rider-timeout.model.js.map +1 -1
  157. package/dist/libraries/mongo/models/rider-tracking.model.js.map +1 -1
  158. package/dist/libraries/mongo/models/rider.model.d.ts +1 -1
  159. package/dist/libraries/mongo/models/rider.model.js +2 -2
  160. package/dist/libraries/mongo/models/rider.model.js.map +1 -1
  161. package/dist/libraries/mongo/models/role.model.js.map +1 -1
  162. package/dist/libraries/mongo/models/setting.model.js.map +1 -1
  163. package/dist/libraries/mongo/models/shared/address.model.js.map +1 -1
  164. package/dist/libraries/mongo/models/shared/duration.model.js.map +1 -1
  165. package/dist/libraries/mongo/models/shared/geo-location.model.js.map +1 -1
  166. package/dist/libraries/mongo/models/shared/work-hour.model.js.map +1 -1
  167. package/dist/libraries/mongo/models/shop-access-control.model.js.map +1 -1
  168. package/dist/libraries/mongo/models/shop-category.model.js.map +1 -1
  169. package/dist/libraries/mongo/models/shop-meal-plan.model.js.map +1 -1
  170. package/dist/libraries/mongo/models/shop-review.model.js.map +1 -1
  171. package/dist/libraries/mongo/models/shop.model.js.map +1 -1
  172. package/dist/libraries/mongo/models/subscription-setting.model.js.map +1 -1
  173. package/dist/libraries/mongo/models/subscription.model.js.map +1 -1
  174. package/dist/libraries/mongo/models/support-reason.model.js.map +1 -1
  175. package/dist/libraries/mongo/models/tag.model.js.map +1 -1
  176. package/dist/libraries/mongo/models/terms-and-conditions.model.js.map +1 -1
  177. package/dist/libraries/mongo/models/ticket.model.d.ts +28 -0
  178. package/dist/libraries/mongo/models/ticket.model.js +175 -0
  179. package/dist/libraries/mongo/models/ticket.model.js.map +1 -0
  180. package/dist/libraries/mongo/models/transaction.model.js.map +1 -1
  181. package/dist/libraries/mongo/models/user-app-section-setting.model.js.map +1 -1
  182. package/dist/libraries/mongo/models/user.model.js.map +1 -1
  183. package/dist/libraries/mongo/models/zone.model.js.map +1 -1
  184. package/dist/libraries/mongo/plugins/soft-delete-plugin.js.map +1 -1
  185. package/dist/libraries/redis/index.js.map +1 -1
  186. package/dist/libraries/secrets/index.js.map +1 -1
  187. package/dist/libraries/trpc/context.js.map +1 -1
  188. package/dist/libraries/trpc/index.js.map +1 -1
  189. package/dist/libraries/trpc/middlewares/auth.d.ts +3 -3
  190. package/dist/libraries/trpc/middlewares/auth.js.map +1 -1
  191. package/dist/libraries/trpc/middlewares/cors.js.map +1 -1
  192. package/dist/libraries/trpc/middlewares/phone-verified.d.ts +3 -3
  193. package/dist/libraries/trpc/middlewares/phone-verified.js.map +1 -1
  194. package/dist/libraries/trpc/middlewares/publicUserDecoder.d.ts +3 -3
  195. package/dist/libraries/trpc/middlewares/publicUserDecoder.js.map +1 -1
  196. package/dist/libraries/twilio/index.js.map +1 -1
  197. package/dist/libraries/upload/index.js.map +1 -1
  198. package/dist/utilities/common/password.js.map +1 -1
  199. package/dist/utilities/common/week.js.map +1 -1
  200. package/dist/utilities/currency.js.map +1 -1
  201. package/dist/utilities/enum.d.ts +14 -0
  202. package/dist/utilities/enum.js +18 -1
  203. package/dist/utilities/enum.js.map +1 -1
  204. package/dist/utilities/error-handler.js.map +1 -1
  205. package/dist/utilities/error-middleware.js.map +1 -1
  206. package/dist/utilities/pagination.d.ts +5 -5
  207. package/dist/utilities/pagination.js.map +1 -1
  208. package/dist/utilities/response.js.map +1 -1
  209. package/dist/utilities/search.js.map +1 -1
  210. package/dist/utilities/sorting.js.map +1 -1
  211. package/dist/utilities/transformers.js.map +1 -1
  212. package/dist/utilities/validation/common-validation.d.ts +125 -125
  213. package/dist/utilities/validation/common-validation.js.map +1 -1
  214. package/dist/utilities/validation/global-validation.js.map +1 -1
  215. package/dist/utilities/validation/index.js.map +1 -1
  216. package/package.json +54 -54
  217. package/dist/libraries/mongo/models/order-finance.model.d.ts +0 -22
  218. package/dist/libraries/mongo/models/order-finance.model.js +0 -83
  219. package/dist/libraries/mongo/models/order-finance.model.js.map +0 -1
  220. package/dist/libraries/mongo/models/providers/courier-order-finance.model.d.ts +0 -7
  221. package/dist/libraries/mongo/models/providers/courier-order-finance.model.js.map +0 -1
  222. package/dist/libraries/mongo/models/providers/regular-order-finance.model.d.ts +0 -25
  223. package/dist/libraries/mongo/models/providers/regular-order-finance.model.js +0 -95
  224. package/dist/libraries/mongo/models/providers/regular-order-finance.model.js.map +0 -1
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":["import { LibraryManager } from './libraries';\nimport { Container } from 'typedi';\nimport mongoose from 'mongoose';\nimport { ConfigurationOptions, ConfigurationService } from './libraries/configuration';\nimport { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\nimport { LyxaLogger } from './libraries/logger';\nimport { RedisService } from './libraries/redis';\nimport { initGlobalConnection } 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 { MapService, GoogleMapsService } from './libraries/map';\nimport { CachedSettingsService } from './libraries/cache/settings';\nimport { FCMService } from './libraries/firebase/fcmService';\n\nexport { ConfigurationOptions } from './libraries/configuration';\nexport { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\nexport { initGlobalConnection, createGlobalModel, createGlobalDiscriminatorModel } 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\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.options.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\tconst mongoUrl = await getLibraries().getSecretsService().getKey('MONGO_URL');\n\n\tawait mongoose.connect(mongoUrl!, { dbName: `lyxa-${options!.environment}-${options!.tenet}` });\n\tmongoose.set(\n\t\t'debug',\n\t\tgetLibraries().getConfigurationService().options.environment == EnvironmentConfigurationType.DEV\n\t);\n\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(googleMapsKey as string);\n\tconst mapServiceInstance = new MapService(googleMapService);\n\tContainer.set(MapService, mapServiceInstance);\n\n\tconst settingsServiceInstance = new CachedSettingsService(redisInstance);\n\tContainer.set(CachedSettingsService, settingsServiceInstance);\n\n\t// Setup fcm service\n\tconst fcmServiceInstance = new FCMService();\n\tContainer.set(FCMService, fcmServiceInstance);\n\n\tconsole.log('Initialized everything');\n\n\tawait initEventBus('amqps://vgyuplrd:wto6vUYnb4zeBI5lntKT4gj7rT8n1vwg@dog.lmq.cloudamqp.com/vgyuplrd');\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":["import { LibraryManager } from './libraries';\r\nimport { Container } from 'typedi';\r\nimport mongoose from 'mongoose';\r\nimport { ConfigurationOptions, ConfigurationService } from './libraries/configuration';\r\nimport { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\r\nimport { LyxaLogger } from './libraries/logger';\r\nimport { RedisService } from './libraries/redis';\r\nimport { initGlobalConnection } from './libraries/mongo';\r\nimport { SecretManagerService } from './libraries/secrets';\r\nimport { MicroServiceDispatcher } from './libraries/dispatcher';\r\nimport { TwilioService } from './libraries/twilio';\r\nimport { FirebaseService } from './libraries/firebase';\r\nimport { initEventBus, subscribeToEvent } from './libraries/event';\r\nimport { SubscriptionRegistry } from './libraries/event/registry/SubscriptionRegistry';\r\nimport { MapService, GoogleMapsService } from './libraries/map';\r\nimport { CachedSettingsService } from './libraries/cache/settings';\r\nimport { FCMService } from './libraries/firebase/fcmService';\r\n\r\nexport { ConfigurationOptions } from './libraries/configuration';\r\nexport { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';\r\nexport { initGlobalConnection, createGlobalModel, createGlobalDiscriminatorModel } from './libraries/mongo';\r\n\r\nexport async function bootstrapCore(options?: ConfigurationOptions) {\r\n\ttry {\r\n\t\tawait registerLibraries(options);\r\n\r\n\t\tgetLibraries().getLogger().logger.info('Successfully bootstrapped lyxa-core.');\r\n\r\n\t\tconst gracefulShutdown = async () => {\r\n\t\t\tgetLibraries().getLogger().logger.info('Received shutdown signal, shutting down gracefully...');\r\n\t\t\tprocess.exit();\r\n\t\t};\r\n\r\n\t\tprocess.on('SIGTERM', gracefulShutdown);\r\n\t\tprocess.on('SIGINT', gracefulShutdown);\r\n\t\tprocess.on('uncaughtException', err => {\r\n\t\t\tgetLibraries().getLogger().logger.error('Uncaught exception, shutting down...', err);\r\n\t\t\tgracefulShutdown();\r\n\t\t});\r\n\t\tprocess.on('exit', code => {\r\n\t\t\tgetLibraries().getLogger().logger.info(`Exiting with code: ${code}`);\r\n\t\t});\r\n\r\n\t\tconsole.log('Created hooks.');\r\n\t} catch (e) {\r\n\t\tconsole.error(e);\r\n\t}\r\n}\r\n\r\nexport async function registerLibraries(options?: ConfigurationOptions) {\r\n\t// Setup configuration.\r\n\tconst configurationInstance = new ConfigurationService(options);\r\n\tContainer.set(ConfigurationService, configurationInstance);\r\n\r\n\t// Setup redis.\r\n\tconst redisInstance = new RedisService(configurationInstance.options.redisURL!);\r\n\tContainer.set(RedisService, redisInstance);\r\n\r\n\t// Setup secret\r\n\tconst secretInstance = new SecretManagerService(configurationInstance, redisInstance);\r\n\tContainer.set(SecretManagerService, secretInstance);\r\n\r\n\tconst mongoUrl = await getLibraries().getSecretsService().getKey('MONGO_URL');\r\n\r\n\tawait mongoose.connect(mongoUrl!, { dbName: `lyxa-${options!.environment}-${options!.tenet}` });\r\n\tmongoose.set(\r\n\t\t'debug',\r\n\t\tgetLibraries().getConfigurationService().options.environment == EnvironmentConfigurationType.DEV\r\n\t);\r\n\r\n\tawait initGlobalConnection(mongoUrl!, options!.environment);\r\n\r\n\t// Setup logger\r\n\tconst loggerInstance = new LyxaLogger(options!.instanceType!, mongoUrl!);\r\n\tContainer.set(LyxaLogger, loggerInstance);\r\n\r\n\t// Setup firebase\r\n\tconst firebaseInstance = new FirebaseService(configurationInstance!);\r\n\tContainer.set(FirebaseService, firebaseInstance);\r\n\r\n\t// Setup microservice dispatcher\r\n\tconst microserviceDispatcherInstance = new MicroServiceDispatcher(secretInstance);\r\n\tContainer.set(MicroServiceDispatcher, microserviceDispatcherInstance);\r\n\r\n\t// Setup twilio\r\n\tconst twilioServiceInstance = new TwilioService();\r\n\tContainer.set(TwilioService, twilioServiceInstance);\r\n\r\n\t// Setup map service\r\n\tconst googleMapsKey = await getLibraries().getSecretsService().getKey('GOOGLE_MAPS_API_KEY');\r\n\tconst googleMapService = new GoogleMapsService(googleMapsKey as string);\r\n\tconst mapServiceInstance = new MapService(googleMapService);\r\n\tContainer.set(MapService, mapServiceInstance);\r\n\r\n\tconst settingsServiceInstance = new CachedSettingsService(redisInstance);\r\n\tContainer.set(CachedSettingsService, settingsServiceInstance);\r\n\r\n\t// Setup fcm service\r\n\tconst fcmServiceInstance = new FCMService();\r\n\tContainer.set(FCMService, fcmServiceInstance);\r\n\r\n\tconsole.log('Initialized everything');\r\n\r\n\tawait initEventBus('amqps://vgyuplrd:wto6vUYnb4zeBI5lntKT4gj7rT8n1vwg@dog.lmq.cloudamqp.com/vgyuplrd');\r\n\tconst allSubscriptions = SubscriptionRegistry.getAllSubscriptions();\r\n\r\n\tconst instantiatedServices = new Map<Function, any>();\r\n\r\n\tfor (const { eventId, targetConstructor, methodName } of allSubscriptions) {\r\n\t\tlet instance = instantiatedServices.get(targetConstructor);\r\n\t\tif (!instance) {\r\n\t\t\tinstance = Container.get(targetConstructor as any);\r\n\t\t\tinstantiatedServices.set(targetConstructor, instance);\r\n\t\t}\r\n\r\n\t\tawait subscribeToEvent(eventId, async payload => {\r\n\t\t\treturn instance[methodName](payload);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport function getLibraries(): LibraryManager {\r\n\treturn Container.get(LibraryManager);\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/auth/index.ts"],"names":[],"mappings":"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","sourcesContent":["import jwt, { SignOptions, JwtPayload } from 'jsonwebtoken';\nimport { EntityContext } from '../trpc/context';\nimport { randomBytes } from 'crypto';\nimport { RefreshToken } from './refreshtoken';\nimport { getLibraries } from '../../index';\nimport { createGlobalModel } from '../mongo';\n\nexport enum AuthEntityType {\n\tUSER = 'USER',\n\tSELLER = 'SELLER',\n\tDELIVERY_BOY = 'DELIVERY_BOY',\n\tCRM = 'CRM',\n}\n\nexport enum TokenType {\n\tACCESS = 'ACCESS',\n\tREFRESH = 'REFRESH',\n}\n\nexport interface RefreshTokenRecord {\n\ttoken: string;\n\tentityId: string;\n\tentityType: AuthEntityType;\n\texpiresAt: Date;\n\tisRevoked: boolean;\n\tmetadata?: Record<string, unknown>;\n}\n\n/**\n * Sign a JWT access token for the given entity (id + type).\n * It will fetch the secret for that entity type and create a token.\n */\nexport async function signAccessToken(\n\tentity: { id: string; type: AuthEntityType; parameters: Record<string, unknown> },\n\toptions?: SignOptions\n): Promise<string> {\n\tif (!entity?.type) {\n\t\tthrow new Error('Entity type is required to sign token');\n\t}\n\n\tconst secret = await getLibraries().getSecretsService().getKey(`${entity.type.toUpperCase()}_JWT_TOKEN`);\n\n\tif (!secret) {\n\t\tthrow new Error(`No secret found for entity type ${entity.type}`);\n\t}\n\n\tconst payload = {\n\t\tid: entity.id,\n\t\ttype: entity.type,\n\t\tparameters: entity.parameters,\n\t\ttokenType: TokenType.ACCESS,\n\t};\n\n\tconst tokenOptions: SignOptions = {\n\t\t...options,\n\t\texpiresIn: options?.expiresIn || '1d',\n\t};\n\n\treturn jwt.sign(payload, secret, tokenOptions);\n}\n\n/**\n * Generate a refresh token for the given entity\n */\nexport async function generateRefreshToken(\n\tentity: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> },\n\toptions?: { expiresIn?: string | number }\n): Promise<string> {\n\tconst tokenValue = randomBytes(40).toString('hex');\n\n\tconst expiresIn = options?.expiresIn || '7d';\n\tconst expiresAt = new Date();\n\n\tif (typeof expiresIn === 'string') {\n\t\t// Parse duration strings like '7d', '30d', etc.\n\t\tconst match = expiresIn.match(/^(\\d+)([smhdwy])$/);\n\t\tif (match) {\n\t\t\tconst value = parseInt(match[1]);\n\t\t\tconst unit = match[2];\n\n\t\t\tswitch (unit) {\n\t\t\t\tcase 's':\n\t\t\t\t\texpiresAt.setSeconds(expiresAt.getSeconds() + value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'm':\n\t\t\t\t\texpiresAt.setMinutes(expiresAt.getMinutes() + value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'h':\n\t\t\t\t\texpiresAt.setHours(expiresAt.getHours() + value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'd':\n\t\t\t\t\texpiresAt.setDate(expiresAt.getDate() + value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'w':\n\t\t\t\t\texpiresAt.setDate(expiresAt.getDate() + value * 7);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'y':\n\t\t\t\t\texpiresAt.setFullYear(expiresAt.getFullYear() + value);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\t// Default to 7 days if format is invalid\n\t\t\texpiresAt.setDate(expiresAt.getDate() + 7);\n\t\t}\n\t} else if (typeof expiresIn === 'number') {\n\t\t// Interpret number as seconds\n\t\texpiresAt.setSeconds(expiresAt.getSeconds() + expiresIn);\n\t}\n\n\tawait storeRefreshToken({\n\t\ttoken: tokenValue,\n\t\tentityId: entity.id,\n\t\tentityType: entity.type,\n\t\texpiresAt,\n\t\tisRevoked: false,\n\t\tmetadata: entity.parameters,\n\t});\n\n\treturn tokenValue;\n}\n\n/**\n * Store a refresh token in the database\n */\nasync function storeRefreshToken(tokenRecord: RefreshTokenRecord): Promise<void> {\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\n\tawait tokenRepository.saveRefreshToken(tokenRecord);\n}\n\n/**\n * Verify an access token for the given entity types\n */\nexport async function verifyAccessToken(\n\tentityTypes: AuthEntityType[],\n\ttoken: string\n): Promise<EntityContext | undefined> {\n\tfor (const entityType of entityTypes) {\n\t\tconst secret = await getLibraries()\n\t\t\t.getSecretsService()\n\t\t\t.getKey(entityType.toUpperCase() + '_JWT_TOKEN');\n\n\t\ttry {\n\t\t\tconst decoded = jwt.verify(token, secret!) as EntityContext & { tokenType?: TokenType };\n\n\t\t\t// Verify this is an access token\n\t\t\tif (decoded.tokenType !== TokenType.ACCESS) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\treturn decoded;\n\t\t} catch (err) {\n\t\t\t// Continue to the next entity type\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Validate a refresh token and return the associated entity\n */\nexport async function validateRefreshToken(token: string): Promise<{\n\tvalid: boolean;\n\tentity?: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> };\n}> {\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\n\tconst storedToken = await tokenRepository.findRefreshToken(token);\n\n\tif (!storedToken) {\n\t\treturn { valid: false };\n\t}\n\n\tif (storedToken.expiresAt && new Date() > storedToken.expiresAt) {\n\t\treturn { valid: false };\n\t}\n\n\tif (storedToken.isRevoked) {\n\t\treturn { valid: false };\n\t}\n\n\treturn {\n\t\tvalid: true,\n\t\tentity: {\n\t\t\tid: storedToken.entityId,\n\t\t\ttype: storedToken.entityType,\n\t\t\tparameters: storedToken.metadata,\n\t\t},\n\t};\n}\n\n/**\n * Refresh authentication tokens\n * Returns new access and refresh tokens\n */\nexport async function refreshTokens(refreshToken: string): Promise<{\n\taccessToken: string;\n\trefreshToken: string;\n\tentity: { id: string; type: AuthEntityType };\n} | null> {\n\t// Validate the refresh token\n\tconst validation = await validateRefreshToken(refreshToken);\n\n\tif (!validation.valid || !validation.entity) {\n\t\treturn null;\n\t}\n\n\tawait revokeRefreshToken(refreshToken);\n\n\t// Create new tokens\n\tconst entity = validation.entity;\n\tconst newAccessToken = await signAccessToken({\n\t\tid: entity.id,\n\t\ttype: entity.type,\n\t\tparameters: entity.parameters || {},\n\t});\n\n\tconst newRefreshToken = await generateRefreshToken({\n\t\tid: entity.id,\n\t\ttype: entity.type,\n\t\tparameters: entity.parameters,\n\t});\n\n\treturn {\n\t\taccessToken: newAccessToken,\n\t\trefreshToken: newRefreshToken,\n\t\tentity: {\n\t\t\tid: entity.id,\n\t\t\ttype: entity.type,\n\t\t},\n\t};\n}\n\n/**\n * Revoke a refresh token\n */\nexport async function revokeRefreshToken(token: string): Promise<boolean> {\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\n\treturn tokenRepository.revokeRefreshToken(token);\n}\n\n/**\n * Revoke all refresh tokens for a specific entity\n */\nexport async function revokeAllRefreshTokens(entityId: string, entityType: AuthEntityType): Promise<boolean> {\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\n\treturn tokenRepository.revokeAllRefreshTokensForEntity(entityId, entityType);\n}\n\n/**\n * Sign both access and refresh tokens - utility for initial login/authentication\n */\nexport async function signTokenPair(\n\tentity: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> },\n\toptions?: { accessTokenOptions?: SignOptions; refreshTokenExpiresIn?: string | number }\n): Promise<{\n\taccessToken: string;\n\trefreshToken: string;\n}> {\n\tconst accessToken = await signAccessToken(\n\t\t{\n\t\t\tid: entity.id,\n\t\t\ttype: entity.type,\n\t\t\tparameters: entity.parameters || {},\n\t\t},\n\t\toptions?.accessTokenOptions\n\t);\n\n\tconst refreshToken = await generateRefreshToken(\n\t\t{\n\t\t\tid: entity.id,\n\t\t\ttype: entity.type,\n\t\t\tparameters: entity.parameters,\n\t\t},\n\t\t{ expiresIn: options?.refreshTokenExpiresIn }\n\t);\n\n\treturn {\n\t\taccessToken,\n\t\trefreshToken,\n\t};\n}\n\n/**\n * Handle the refresh token validation and renewal logic\n * @param refreshToken The refresh token to validate or renew\n * @returns Result object with token status and renewal information\n */\nexport async function handleTokenRenewal(refreshToken: string): Promise<{\n\tsuccess: boolean;\n\tentity?: {\n\t\tid: string;\n\t\ttype: AuthEntityType;\n\t\tparameters: Record<string, unknown>;\n\t};\n\ttokenStatus: 'valid' | 'expired' | 'revoked' | 'invalid';\n\tnewTokens?: {\n\t\taccessToken: string;\n\t\trefreshToken?: string | null;\n\t};\n}> {\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\n\n\tconst storedToken = await tokenRepository.findRefreshToken(refreshToken);\n\n\tif (!storedToken) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\ttokenStatus: 'invalid',\n\t\t};\n\t}\n\n\tconst isRevoked = storedToken.isRevoked;\n\tif (isRevoked) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\ttokenStatus: 'revoked',\n\t\t};\n\t}\n\n\tconst isExpired = storedToken.isExpired();\n\n\tconst entityData = {\n\t\tid: storedToken.entityId,\n\t\ttype: storedToken.entityType,\n\t\tparameters: storedToken.metadata || {},\n\t};\n\n\tif (isExpired) {\n\t\tconst newTokens = await signTokenPair({\n\t\t\tid: storedToken.entityId,\n\t\t\ttype: storedToken.entityType,\n\t\t\tparameters: storedToken.metadata || {},\n\t\t});\n\n\t\tawait tokenRepository.revokeRefreshToken(refreshToken);\n\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tentity: entityData,\n\t\t\ttokenStatus: 'expired',\n\t\t\tnewTokens: {\n\t\t\t\taccessToken: newTokens.accessToken,\n\t\t\t\trefreshToken: newTokens.refreshToken,\n\t\t\t},\n\t\t};\n\t}\n\n\tconst newAccessToken = await signAccessToken({\n\t\tid: storedToken.entityId,\n\t\ttype: storedToken.entityType,\n\t\tparameters: storedToken.metadata || {},\n\t});\n\n\treturn {\n\t\tsuccess: true,\n\t\tentity: entityData,\n\t\ttokenStatus: 'valid',\n\t\tnewTokens: {\n\t\t\taccessToken: newAccessToken,\n\t\t\trefreshToken: null,\n\t\t},\n\t};\n}\n\nexport const RefreshTokenModel = createGlobalModel(RefreshToken);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/auth/index.ts"],"names":[],"mappings":"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","sourcesContent":["import jwt, { SignOptions, JwtPayload } from 'jsonwebtoken';\r\nimport { EntityContext } from '../trpc/context';\r\nimport { randomBytes } from 'crypto';\r\nimport { RefreshToken } from './refreshtoken';\r\nimport { getLibraries } from '../../index';\r\nimport { createGlobalModel } from '../mongo';\r\n\r\nexport enum AuthEntityType {\r\n\tUSER = 'USER',\r\n\tSELLER = 'SELLER',\r\n\tDELIVERY_BOY = 'DELIVERY_BOY',\r\n\tCRM = 'CRM',\r\n}\r\n\r\nexport enum TokenType {\r\n\tACCESS = 'ACCESS',\r\n\tREFRESH = 'REFRESH',\r\n}\r\n\r\nexport interface RefreshTokenRecord {\r\n\ttoken: string;\r\n\tentityId: string;\r\n\tentityType: AuthEntityType;\r\n\texpiresAt: Date;\r\n\tisRevoked: boolean;\r\n\tmetadata?: Record<string, unknown>;\r\n}\r\n\r\n/**\r\n * Sign a JWT access token for the given entity (id + type).\r\n * It will fetch the secret for that entity type and create a token.\r\n */\r\nexport async function signAccessToken(\r\n\tentity: { id: string; type: AuthEntityType; parameters: Record<string, unknown> },\r\n\toptions?: SignOptions\r\n): Promise<string> {\r\n\tif (!entity?.type) {\r\n\t\tthrow new Error('Entity type is required to sign token');\r\n\t}\r\n\r\n\tconst secret = await getLibraries().getSecretsService().getKey(`${entity.type.toUpperCase()}_JWT_TOKEN`);\r\n\r\n\tif (!secret) {\r\n\t\tthrow new Error(`No secret found for entity type ${entity.type}`);\r\n\t}\r\n\r\n\tconst payload = {\r\n\t\tid: entity.id,\r\n\t\ttype: entity.type,\r\n\t\tparameters: entity.parameters,\r\n\t\ttokenType: TokenType.ACCESS,\r\n\t};\r\n\r\n\tconst tokenOptions: SignOptions = {\r\n\t\t...options,\r\n\t\texpiresIn: options?.expiresIn || '1d',\r\n\t};\r\n\r\n\treturn jwt.sign(payload, secret, tokenOptions);\r\n}\r\n\r\n/**\r\n * Generate a refresh token for the given entity\r\n */\r\nexport async function generateRefreshToken(\r\n\tentity: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> },\r\n\toptions?: { expiresIn?: string | number }\r\n): Promise<string> {\r\n\tconst tokenValue = randomBytes(40).toString('hex');\r\n\r\n\tconst expiresIn = options?.expiresIn || '7d';\r\n\tconst expiresAt = new Date();\r\n\r\n\tif (typeof expiresIn === 'string') {\r\n\t\t// Parse duration strings like '7d', '30d', etc.\r\n\t\tconst match = expiresIn.match(/^(\\d+)([smhdwy])$/);\r\n\t\tif (match) {\r\n\t\t\tconst value = parseInt(match[1]);\r\n\t\t\tconst unit = match[2];\r\n\r\n\t\t\tswitch (unit) {\r\n\t\t\t\tcase 's':\r\n\t\t\t\t\texpiresAt.setSeconds(expiresAt.getSeconds() + value);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'm':\r\n\t\t\t\t\texpiresAt.setMinutes(expiresAt.getMinutes() + value);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'h':\r\n\t\t\t\t\texpiresAt.setHours(expiresAt.getHours() + value);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'd':\r\n\t\t\t\t\texpiresAt.setDate(expiresAt.getDate() + value);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'w':\r\n\t\t\t\t\texpiresAt.setDate(expiresAt.getDate() + value * 7);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'y':\r\n\t\t\t\t\texpiresAt.setFullYear(expiresAt.getFullYear() + value);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Default to 7 days if format is invalid\r\n\t\t\texpiresAt.setDate(expiresAt.getDate() + 7);\r\n\t\t}\r\n\t} else if (typeof expiresIn === 'number') {\r\n\t\t// Interpret number as seconds\r\n\t\texpiresAt.setSeconds(expiresAt.getSeconds() + expiresIn);\r\n\t}\r\n\r\n\tawait storeRefreshToken({\r\n\t\ttoken: tokenValue,\r\n\t\tentityId: entity.id,\r\n\t\tentityType: entity.type,\r\n\t\texpiresAt,\r\n\t\tisRevoked: false,\r\n\t\tmetadata: entity.parameters,\r\n\t});\r\n\r\n\treturn tokenValue;\r\n}\r\n\r\n/**\r\n * Store a refresh token in the database\r\n */\r\nasync function storeRefreshToken(tokenRecord: RefreshTokenRecord): Promise<void> {\r\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\r\n\tawait tokenRepository.saveRefreshToken(tokenRecord);\r\n}\r\n\r\n/**\r\n * Verify an access token for the given entity types\r\n */\r\nexport async function verifyAccessToken(\r\n\tentityTypes: AuthEntityType[],\r\n\ttoken: string\r\n): Promise<EntityContext | undefined> {\r\n\tfor (const entityType of entityTypes) {\r\n\t\tconst secret = await getLibraries()\r\n\t\t\t.getSecretsService()\r\n\t\t\t.getKey(entityType.toUpperCase() + '_JWT_TOKEN');\r\n\r\n\t\ttry {\r\n\t\t\tconst decoded = jwt.verify(token, secret!) as EntityContext & { tokenType?: TokenType };\r\n\r\n\t\t\t// Verify this is an access token\r\n\t\t\tif (decoded.tokenType !== TokenType.ACCESS) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\treturn decoded;\r\n\t\t} catch (err) {\r\n\t\t\t// Continue to the next entity type\r\n\t\t}\r\n\t}\r\n\r\n\treturn undefined;\r\n}\r\n\r\n/**\r\n * Validate a refresh token and return the associated entity\r\n */\r\nexport async function validateRefreshToken(token: string): Promise<{\r\n\tvalid: boolean;\r\n\tentity?: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> };\r\n}> {\r\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\r\n\tconst storedToken = await tokenRepository.findRefreshToken(token);\r\n\r\n\tif (!storedToken) {\r\n\t\treturn { valid: false };\r\n\t}\r\n\r\n\tif (storedToken.expiresAt && new Date() > storedToken.expiresAt) {\r\n\t\treturn { valid: false };\r\n\t}\r\n\r\n\tif (storedToken.isRevoked) {\r\n\t\treturn { valid: false };\r\n\t}\r\n\r\n\treturn {\r\n\t\tvalid: true,\r\n\t\tentity: {\r\n\t\t\tid: storedToken.entityId,\r\n\t\t\ttype: storedToken.entityType,\r\n\t\t\tparameters: storedToken.metadata,\r\n\t\t},\r\n\t};\r\n}\r\n\r\n/**\r\n * Refresh authentication tokens\r\n * Returns new access and refresh tokens\r\n */\r\nexport async function refreshTokens(refreshToken: string): Promise<{\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n\tentity: { id: string; type: AuthEntityType };\r\n} | null> {\r\n\t// Validate the refresh token\r\n\tconst validation = await validateRefreshToken(refreshToken);\r\n\r\n\tif (!validation.valid || !validation.entity) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tawait revokeRefreshToken(refreshToken);\r\n\r\n\t// Create new tokens\r\n\tconst entity = validation.entity;\r\n\tconst newAccessToken = await signAccessToken({\r\n\t\tid: entity.id,\r\n\t\ttype: entity.type,\r\n\t\tparameters: entity.parameters || {},\r\n\t});\r\n\r\n\tconst newRefreshToken = await generateRefreshToken({\r\n\t\tid: entity.id,\r\n\t\ttype: entity.type,\r\n\t\tparameters: entity.parameters,\r\n\t});\r\n\r\n\treturn {\r\n\t\taccessToken: newAccessToken,\r\n\t\trefreshToken: newRefreshToken,\r\n\t\tentity: {\r\n\t\t\tid: entity.id,\r\n\t\t\ttype: entity.type,\r\n\t\t},\r\n\t};\r\n}\r\n\r\n/**\r\n * Revoke a refresh token\r\n */\r\nexport async function revokeRefreshToken(token: string): Promise<boolean> {\r\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\r\n\treturn tokenRepository.revokeRefreshToken(token);\r\n}\r\n\r\n/**\r\n * Revoke all refresh tokens for a specific entity\r\n */\r\nexport async function revokeAllRefreshTokens(entityId: string, entityType: AuthEntityType): Promise<boolean> {\r\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\r\n\treturn tokenRepository.revokeAllRefreshTokensForEntity(entityId, entityType);\r\n}\r\n\r\n/**\r\n * Sign both access and refresh tokens - utility for initial login/authentication\r\n */\r\nexport async function signTokenPair(\r\n\tentity: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> },\r\n\toptions?: { accessTokenOptions?: SignOptions; refreshTokenExpiresIn?: string | number }\r\n): Promise<{\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}> {\r\n\tconst accessToken = await signAccessToken(\r\n\t\t{\r\n\t\t\tid: entity.id,\r\n\t\t\ttype: entity.type,\r\n\t\t\tparameters: entity.parameters || {},\r\n\t\t},\r\n\t\toptions?.accessTokenOptions\r\n\t);\r\n\r\n\tconst refreshToken = await generateRefreshToken(\r\n\t\t{\r\n\t\t\tid: entity.id,\r\n\t\t\ttype: entity.type,\r\n\t\t\tparameters: entity.parameters,\r\n\t\t},\r\n\t\t{ expiresIn: options?.refreshTokenExpiresIn }\r\n\t);\r\n\r\n\treturn {\r\n\t\taccessToken,\r\n\t\trefreshToken,\r\n\t};\r\n}\r\n\r\n/**\r\n * Handle the refresh token validation and renewal logic\r\n * @param refreshToken The refresh token to validate or renew\r\n * @returns Result object with token status and renewal information\r\n */\r\nexport async function handleTokenRenewal(refreshToken: string): Promise<{\r\n\tsuccess: boolean;\r\n\tentity?: {\r\n\t\tid: string;\r\n\t\ttype: AuthEntityType;\r\n\t\tparameters: Record<string, unknown>;\r\n\t};\r\n\ttokenStatus: 'valid' | 'expired' | 'revoked' | 'invalid';\r\n\tnewTokens?: {\r\n\t\taccessToken: string;\r\n\t\trefreshToken?: string | null;\r\n\t};\r\n}> {\r\n\tconst tokenRepository = getLibraries().getAuthTokenRepository();\r\n\r\n\tconst storedToken = await tokenRepository.findRefreshToken(refreshToken);\r\n\r\n\tif (!storedToken) {\r\n\t\treturn {\r\n\t\t\tsuccess: false,\r\n\t\t\ttokenStatus: 'invalid',\r\n\t\t};\r\n\t}\r\n\r\n\tconst isRevoked = storedToken.isRevoked;\r\n\tif (isRevoked) {\r\n\t\treturn {\r\n\t\t\tsuccess: false,\r\n\t\t\ttokenStatus: 'revoked',\r\n\t\t};\r\n\t}\r\n\r\n\tconst isExpired = storedToken.isExpired();\r\n\r\n\tconst entityData = {\r\n\t\tid: storedToken.entityId,\r\n\t\ttype: storedToken.entityType,\r\n\t\tparameters: storedToken.metadata || {},\r\n\t};\r\n\r\n\tif (isExpired) {\r\n\t\tconst newTokens = await signTokenPair({\r\n\t\t\tid: storedToken.entityId,\r\n\t\t\ttype: storedToken.entityType,\r\n\t\t\tparameters: storedToken.metadata || {},\r\n\t\t});\r\n\r\n\t\tawait tokenRepository.revokeRefreshToken(refreshToken);\r\n\r\n\t\treturn {\r\n\t\t\tsuccess: true,\r\n\t\t\tentity: entityData,\r\n\t\t\ttokenStatus: 'expired',\r\n\t\t\tnewTokens: {\r\n\t\t\t\taccessToken: newTokens.accessToken,\r\n\t\t\t\trefreshToken: newTokens.refreshToken,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tconst newAccessToken = await signAccessToken({\r\n\t\tid: storedToken.entityId,\r\n\t\ttype: storedToken.entityType,\r\n\t\tparameters: storedToken.metadata || {},\r\n\t});\r\n\r\n\treturn {\r\n\t\tsuccess: true,\r\n\t\tentity: entityData,\r\n\t\ttokenStatus: 'valid',\r\n\t\tnewTokens: {\r\n\t\t\taccessToken: newAccessToken,\r\n\t\t\trefreshToken: null,\r\n\t\t},\r\n\t};\r\n}\r\n\r\nexport const RefreshTokenModel = createGlobalModel(RefreshToken);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"refreshtoken.js","sourceRoot":"/","sources":["libraries/auth/refreshtoken.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tprop,\n\tgetModelForClass,\n\tmodelOptions,\n\tindex,\n\tSeverity,\n\tDocumentType,\n\tReturnModelType,\n} from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { getLibraries } from '../../index';\nimport { AuthEntityType, RefreshTokenModel } from './index';\n\n@modelOptions({\n\tschemaOptions: {\n\t\tcollection: 'refresh_tokens',\n\t\tautoCreate: true,\n\t\ttoJSON: { virtuals: true },\n\t\ttoObject: { virtuals: true },\n\t},\n\toptions: {\n\t\tallowMixed: Severity.ALLOW, // Allow mixed types for metadata\n\t},\n})\n@index({ entityId: 1, entityType: 1 })\n@index({ isRevoked: 1 })\nexport class RefreshToken extends TimeStamps {\n\t@prop({ required: true, type: () => String, unique: true })\n\tpublic token!: string;\n\n\t@prop({ required: true, type: () => String })\n\tpublic entityId!: string;\n\n\t@prop({\n\t\trequired: true,\n\t\ttype: () => String,\n\t\tenum: AuthEntityType,\n\t})\n\tpublic entityType!: AuthEntityType;\n\n\t@prop({ required: false, type: () => Date })\n\tpublic expiresAt?: Date | null;\n\n\t@prop({ required: true, type: () => Boolean, default: false })\n\tpublic isRevoked!: boolean;\n\n\t@prop({ required: false, type: () => Object })\n\tpublic metadata?: Record<string, unknown>;\n\n\t/**\n\t * Static method to find a valid token\n\t */\n\tpublic static async findValidToken(\n\t\tthis: ReturnModelType<typeof RefreshToken>,\n\t\ttoken: string\n\t): Promise<DocumentType<RefreshToken> | null> {\n\t\tconst query: any = { token, isRevoked: false };\n\n\t\t// Only check expiration if token has an expiration date\n\t\tquery.$or = [{ expiresAt: { $exists: false } }, { expiresAt: null }, { expiresAt: { $gt: new Date() } }];\n\n\t\treturn this.findOne(query);\n\t}\n\n\t/**\n\t * Static method to revoke all tokens for an entity\n\t */\n\tpublic static async revokeAllForEntity(\n\t\tthis: ReturnModelType<typeof RefreshToken>,\n\t\tentityId: string,\n\t\tentityType: AuthEntityType\n\t): Promise<number> {\n\t\tconst result = await this.updateMany({ entityId, entityType, isRevoked: false }, { isRevoked: true });\n\n\t\treturn result.modifiedCount;\n\t}\n\n\t/**\n\t * Check if this token is expired\n\t */\n\tpublic isExpired(): boolean {\n\t\tif (!this.expiresAt) return false;\n\t\treturn new Date() > this.expiresAt;\n\t}\n\n\t/**\n\t * Static method to clean up old expired tokens\n\t * Call this periodically to keep your database clean\n\t */\n\tpublic static async cleanupExpiredTokens(\n\t\tthis: ReturnModelType<typeof RefreshToken>,\n\t\tolderThan?: Date\n\t): Promise<number> {\n\t\tconst cutoffDate = olderThan || new Date();\n\n\t\tconst result = await this.deleteMany({\n\t\t\texpiresAt: { $ne: null, $lt: cutoffDate },\n\t\t\tisRevoked: true, // Only delete tokens that are both expired and already revoked\n\t\t});\n\n\t\treturn result.deletedCount;\n\t}\n}\n"]}
1
+ {"version":3,"file":"refreshtoken.js","sourceRoot":"/","sources":["libraries/auth/refreshtoken.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n\tprop,\r\n\tgetModelForClass,\r\n\tmodelOptions,\r\n\tindex,\r\n\tSeverity,\r\n\tDocumentType,\r\n\tReturnModelType,\r\n} from '@typegoose/typegoose';\r\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\r\nimport { getLibraries } from '../../index';\r\nimport { AuthEntityType, RefreshTokenModel } from './index';\r\n\r\n@modelOptions({\r\n\tschemaOptions: {\r\n\t\tcollection: 'refresh_tokens',\r\n\t\tautoCreate: true,\r\n\t\ttoJSON: { virtuals: true },\r\n\t\ttoObject: { virtuals: true },\r\n\t},\r\n\toptions: {\r\n\t\tallowMixed: Severity.ALLOW, // Allow mixed types for metadata\r\n\t},\r\n})\r\n@index({ entityId: 1, entityType: 1 })\r\n@index({ isRevoked: 1 })\r\nexport class RefreshToken extends TimeStamps {\r\n\t@prop({ required: true, type: () => String, unique: true })\r\n\tpublic token!: string;\r\n\r\n\t@prop({ required: true, type: () => String })\r\n\tpublic entityId!: string;\r\n\r\n\t@prop({\r\n\t\trequired: true,\r\n\t\ttype: () => String,\r\n\t\tenum: AuthEntityType,\r\n\t})\r\n\tpublic entityType!: AuthEntityType;\r\n\r\n\t@prop({ required: false, type: () => Date })\r\n\tpublic expiresAt?: Date | null;\r\n\r\n\t@prop({ required: true, type: () => Boolean, default: false })\r\n\tpublic isRevoked!: boolean;\r\n\r\n\t@prop({ required: false, type: () => Object })\r\n\tpublic metadata?: Record<string, unknown>;\r\n\r\n\t/**\r\n\t * Static method to find a valid token\r\n\t */\r\n\tpublic static async findValidToken(\r\n\t\tthis: ReturnModelType<typeof RefreshToken>,\r\n\t\ttoken: string\r\n\t): Promise<DocumentType<RefreshToken> | null> {\r\n\t\tconst query: any = { token, isRevoked: false };\r\n\r\n\t\t// Only check expiration if token has an expiration date\r\n\t\tquery.$or = [{ expiresAt: { $exists: false } }, { expiresAt: null }, { expiresAt: { $gt: new Date() } }];\r\n\r\n\t\treturn this.findOne(query);\r\n\t}\r\n\r\n\t/**\r\n\t * Static method to revoke all tokens for an entity\r\n\t */\r\n\tpublic static async revokeAllForEntity(\r\n\t\tthis: ReturnModelType<typeof RefreshToken>,\r\n\t\tentityId: string,\r\n\t\tentityType: AuthEntityType\r\n\t): Promise<number> {\r\n\t\tconst result = await this.updateMany({ entityId, entityType, isRevoked: false }, { isRevoked: true });\r\n\r\n\t\treturn result.modifiedCount;\r\n\t}\r\n\r\n\t/**\r\n\t * Check if this token is expired\r\n\t */\r\n\tpublic isExpired(): boolean {\r\n\t\tif (!this.expiresAt) return false;\r\n\t\treturn new Date() > this.expiresAt;\r\n\t}\r\n\r\n\t/**\r\n\t * Static method to clean up old expired tokens\r\n\t * Call this periodically to keep your database clean\r\n\t */\r\n\tpublic static async cleanupExpiredTokens(\r\n\t\tthis: ReturnModelType<typeof RefreshToken>,\r\n\t\tolderThan?: Date\r\n\t): Promise<number> {\r\n\t\tconst cutoffDate = olderThan || new Date();\r\n\r\n\t\tconst result = await this.deleteMany({\r\n\t\t\texpiresAt: { $ne: null, $lt: cutoffDate },\r\n\t\t\tisRevoked: true, // Only delete tokens that are both expired and already revoked\r\n\t\t});\r\n\r\n\t\treturn result.deletedCount;\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"/","sources":["libraries/auth/repository.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAA4D;AAG5D,mCAAiC;AAG1B,IAAM,eAAe,GAArB,MAAM,eAAe;IAI3B,KAAK,CAAC,gBAAgB,CAAC,KAOtB;QACA,OAAO,yBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAKD,KAAK,CAAC,gBAAgB,CAAC,KAAa;QACnC,OAAO,yBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAKD,KAAK,CAAC,kBAAkB,CAAC,KAAa;QACrC,MAAM,MAAM,GAAG,MAAM,yBAAiB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjF,OAAO,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;IACjC,CAAC;IAKD,KAAK,CAAC,+BAA+B,CAAC,QAAgB,EAAE,UAA0B;QACjF,MAAM,KAAK,GAAG,MAAM,yBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,KAAK,GAAG,CAAC,CAAC;IAClB,CAAC;IAKD,KAAK,CAAC,wBAAwB,CAC7B,QAAgB,EAChB,UAA0B;QAE1B,OAAO,yBAAiB,CAAC,IAAI,CAAC;YAC7B,QAAQ;YACR,UAAU;YACV,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;SACjG,CAAC,CAAC;IACJ,CAAC;IAMD,KAAK,CAAC,oBAAoB,CAAC,SAAgB;QAC1C,OAAO,yBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACD,CAAA;AA7DY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,gBAAO,GAAE;GACG,eAAe,CA6D3B","sourcesContent":["import { AuthEntityType, RefreshTokenModel } from './index';\nimport { DocumentType } from '@typegoose/typegoose';\nimport { RefreshToken } from './refreshtoken';\nimport { Service } from 'typedi';\n\n@Service()\nexport class TokenRepository {\n\t/**\n\t * Save a refresh token\n\t */\n\tasync saveRefreshToken(token: {\n\t\ttoken: string;\n\t\tentityId: string;\n\t\tentityType: AuthEntityType;\n\t\texpiresAt?: Date | null;\n\t\tisRevoked?: boolean;\n\t\tmetadata?: Record<string, unknown>;\n\t}): Promise<DocumentType<RefreshToken>> {\n\t\treturn RefreshTokenModel.create(token);\n\t}\n\n\t/**\n\t * Find a refresh token by its value\n\t */\n\tasync findRefreshToken(token: string): Promise<DocumentType<RefreshToken> | null> {\n\t\treturn RefreshTokenModel.findValidToken(token);\n\t}\n\n\t/**\n\t * Revoke a specific refresh token\n\t */\n\tasync revokeRefreshToken(token: string): Promise<boolean> {\n\t\tconst result = await RefreshTokenModel.updateOne({ token }, { isRevoked: true });\n\n\t\treturn result.modifiedCount > 0;\n\t}\n\n\t/**\n\t * Revoke all refresh tokens for a specific entity\n\t */\n\tasync revokeAllRefreshTokensForEntity(entityId: string, entityType: AuthEntityType): Promise<boolean> {\n\t\tconst count = await RefreshTokenModel.revokeAllForEntity(entityId, entityType);\n\t\treturn count > 0;\n\t}\n\n\t/**\n\t * Get all active tokens for an entity\n\t */\n\tasync getActiveTokensForEntity(\n\t\tentityId: string,\n\t\tentityType: AuthEntityType\n\t): Promise<DocumentType<RefreshToken>[]> {\n\t\treturn RefreshTokenModel.find({\n\t\t\tentityId,\n\t\t\tentityType,\n\t\t\tisRevoked: false,\n\t\t\t$or: [{ expiresAt: { $exists: false } }, { expiresAt: null }, { expiresAt: { $gt: new Date() } }],\n\t\t});\n\t}\n\n\t/**\n\t * Clean up expired tokens (can be called periodically if needed)\n\t * Note: MongoDB TTL index will also handle this automatically for tokens with expiresAt\n\t */\n\tasync cleanupExpiredTokens(olderThan?: Date): Promise<number> {\n\t\treturn RefreshTokenModel.cleanupExpiredTokens(olderThan);\n\t}\n}\n"]}
1
+ {"version":3,"file":"repository.js","sourceRoot":"/","sources":["libraries/auth/repository.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAA4D;AAG5D,mCAAiC;AAG1B,IAAM,eAAe,GAArB,MAAM,eAAe;IAI3B,KAAK,CAAC,gBAAgB,CAAC,KAOtB;QACA,OAAO,yBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAKD,KAAK,CAAC,gBAAgB,CAAC,KAAa;QACnC,OAAO,yBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAKD,KAAK,CAAC,kBAAkB,CAAC,KAAa;QACrC,MAAM,MAAM,GAAG,MAAM,yBAAiB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjF,OAAO,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;IACjC,CAAC;IAKD,KAAK,CAAC,+BAA+B,CAAC,QAAgB,EAAE,UAA0B;QACjF,MAAM,KAAK,GAAG,MAAM,yBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,KAAK,GAAG,CAAC,CAAC;IAClB,CAAC;IAKD,KAAK,CAAC,wBAAwB,CAC7B,QAAgB,EAChB,UAA0B;QAE1B,OAAO,yBAAiB,CAAC,IAAI,CAAC;YAC7B,QAAQ;YACR,UAAU;YACV,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;SACjG,CAAC,CAAC;IACJ,CAAC;IAMD,KAAK,CAAC,oBAAoB,CAAC,SAAgB;QAC1C,OAAO,yBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACD,CAAA;AA7DY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,gBAAO,GAAE;GACG,eAAe,CA6D3B","sourcesContent":["import { AuthEntityType, RefreshTokenModel } from './index';\r\nimport { DocumentType } from '@typegoose/typegoose';\r\nimport { RefreshToken } from './refreshtoken';\r\nimport { Service } from 'typedi';\r\n\r\n@Service()\r\nexport class TokenRepository {\r\n\t/**\r\n\t * Save a refresh token\r\n\t */\r\n\tasync saveRefreshToken(token: {\r\n\t\ttoken: string;\r\n\t\tentityId: string;\r\n\t\tentityType: AuthEntityType;\r\n\t\texpiresAt?: Date | null;\r\n\t\tisRevoked?: boolean;\r\n\t\tmetadata?: Record<string, unknown>;\r\n\t}): Promise<DocumentType<RefreshToken>> {\r\n\t\treturn RefreshTokenModel.create(token);\r\n\t}\r\n\r\n\t/**\r\n\t * Find a refresh token by its value\r\n\t */\r\n\tasync findRefreshToken(token: string): Promise<DocumentType<RefreshToken> | null> {\r\n\t\treturn RefreshTokenModel.findValidToken(token);\r\n\t}\r\n\r\n\t/**\r\n\t * Revoke a specific refresh token\r\n\t */\r\n\tasync revokeRefreshToken(token: string): Promise<boolean> {\r\n\t\tconst result = await RefreshTokenModel.updateOne({ token }, { isRevoked: true });\r\n\r\n\t\treturn result.modifiedCount > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Revoke all refresh tokens for a specific entity\r\n\t */\r\n\tasync revokeAllRefreshTokensForEntity(entityId: string, entityType: AuthEntityType): Promise<boolean> {\r\n\t\tconst count = await RefreshTokenModel.revokeAllForEntity(entityId, entityType);\r\n\t\treturn count > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Get all active tokens for an entity\r\n\t */\r\n\tasync getActiveTokensForEntity(\r\n\t\tentityId: string,\r\n\t\tentityType: AuthEntityType\r\n\t): Promise<DocumentType<RefreshToken>[]> {\r\n\t\treturn RefreshTokenModel.find({\r\n\t\t\tentityId,\r\n\t\t\tentityType,\r\n\t\t\tisRevoked: false,\r\n\t\t\t$or: [{ expiresAt: { $exists: false } }, { expiresAt: null }, { expiresAt: { $gt: new Date() } }],\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Clean up expired tokens (can be called periodically if needed)\r\n\t * Note: MongoDB TTL index will also handle this automatically for tokens with expiresAt\r\n\t */\r\n\tasync cleanupExpiredTokens(olderThan?: Date): Promise<number> {\r\n\t\treturn RefreshTokenModel.cleanupExpiredTokens(olderThan);\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/cache/settings/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mCAAyC;AACzC,uCAA2C;AAC3C,+CAAkD;AAElD,MAAM,cAAc,GAAG,GAAW,EAAE;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC;IACrD,OAAO,YAAY,MAAM,IAAI,WAAW,EAAE,CAAC;AAC5C,CAAC,CAAC;AAGK,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACwB;IAAzD,YAAyD,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAEvF,KAAK,CAAC,WAAW;QAChB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAM,GAAG,CAAC,CAAC;QACjE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,qBAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO,qCAAqC,CAAC;IAC9C,CAAC;CACD,CAAA;AArBY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,gBAAO,GAAE;IAEI,WAAA,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,oBAAY,CAAC,CAAA;qCAAgC,oBAAY;GADvE,qBAAqB,CAqBjC","sourcesContent":["import { Service, Inject } from 'typedi';\nimport { RedisService } from '../../redis';\nimport { SettingModel } from '../../mongo/models';\n\nconst getSettingsKey = (): string => {\n\tconst tenant = process.env.tenant || 'lb';\n\tconst environment = process.env.environment || 'dev';\n\treturn `settings:${tenant}:${environment}`;\n};\n\n@Service()\nexport class CachedSettingsService {\n\tconstructor(@Inject(() => RedisService) private readonly redisService: RedisService) {}\n\n\tasync getSettings(): Promise<any> {\n\t\tconst key = getSettingsKey();\n\n\t\tconst cached = await this.redisService.getCachedObject<any>(key);\n\t\tif (cached) return cached;\n\n\t\tconst settings = await SettingModel.findOne({}).lean().exec();\n\t\tif (!settings) throw new Error('Settings not found');\n\n\t\tawait this.redisService.cacheObject(key, settings);\n\t\treturn settings;\n\t}\n\n\tasync updateSettings(): Promise<string> {\n\t\tconst key = getSettingsKey();\n\t\tawait this.redisService.deleteCachedObject(key);\n\t\treturn 'Settings cache cleared successfully';\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/cache/settings/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mCAAyC;AACzC,uCAA2C;AAC3C,+CAAkD;AAElD,MAAM,cAAc,GAAG,GAAW,EAAE;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC;IACrD,OAAO,YAAY,MAAM,IAAI,WAAW,EAAE,CAAC;AAC5C,CAAC,CAAC;AAGK,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACwB;IAAzD,YAAyD,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAEvF,KAAK,CAAC,WAAW;QAChB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAM,GAAG,CAAC,CAAC;QACjE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,qBAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO,qCAAqC,CAAC;IAC9C,CAAC;CACD,CAAA;AArBY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,gBAAO,GAAE;IAEI,WAAA,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,oBAAY,CAAC,CAAA;qCAAgC,oBAAY;GADvE,qBAAqB,CAqBjC","sourcesContent":["import { Service, Inject } from 'typedi';\r\nimport { RedisService } from '../../redis';\r\nimport { SettingModel } from '../../mongo/models';\r\n\r\nconst getSettingsKey = (): string => {\r\n\tconst tenant = process.env.tenant || 'lb';\r\n\tconst environment = process.env.environment || 'dev';\r\n\treturn `settings:${tenant}:${environment}`;\r\n};\r\n\r\n@Service()\r\nexport class CachedSettingsService {\r\n\tconstructor(@Inject(() => RedisService) private readonly redisService: RedisService) {}\r\n\r\n\tasync getSettings(): Promise<any> {\r\n\t\tconst key = getSettingsKey();\r\n\r\n\t\tconst cached = await this.redisService.getCachedObject<any>(key);\r\n\t\tif (cached) return cached;\r\n\r\n\t\tconst settings = await SettingModel.findOne({}).lean().exec();\r\n\t\tif (!settings) throw new Error('Settings not found');\r\n\r\n\t\tawait this.redisService.cacheObject(key, settings);\r\n\t\treturn settings;\r\n\t}\r\n\r\n\tasync updateSettings(): Promise<string> {\r\n\t\tconst key = getSettingsKey();\r\n\t\tawait this.redisService.deleteCachedObject(key);\r\n\t\treturn 'Settings cache cleared successfully';\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/configuration/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mCAAiC;AACjC,uFAAoF;AA4B7E,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACf,eAAe,GAAyB;QACxD,QAAQ,EACP,mHAAmH;QACpH,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE;YACd,KAAK,EAAE;gBACN,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,gBAAgB;oBAC3B,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,kDAAkD;iBAC/D;aACD;YACD,IAAI,EAAE;gBACL,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,gBAAgB;oBAC3B,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,gEAAgE;iBAC7E;gBACD,oBAAoB,EAAE,WAAW;aACjC;YACD,KAAK,EAAE;gBACN,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,kBAAkB;oBAC7B,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,kEAAkE;iBAC/E;gBACD,oBAAoB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE;gBACL,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,WAAW;oBACtB,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,2DAA2D;iBACxE;gBACD,oBAAoB,EAAE,WAAW;aACjC;SACD;QACD,WAAW,EAAE,2DAA4B,CAAC,GAAG;KAC7C,CAAC;IAEe,QAAQ,CAAuB;IAEhD,YAAY,OAA8B;QACzC,IAAI,CAAC,QAAQ,GAAG;YACf,GAAG,IAAI,CAAC,eAAe;YACvB,GAAG,OAAO;SACV,CAAC;IACH,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD,CAAA;AA1DY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,gBAAO,GAAE;;GACG,oBAAoB,CA0DhC","sourcesContent":["import { FirebaseOptions } from 'firebase/app';\nimport { ServiceAccount } from 'firebase-admin';\nimport { Service } from 'typedi';\nimport { EnvironmentConfigurationType } from './types/EnvironmentConfigurationType';\n\nexport interface ConfigurationOptions {\n\ttenet?: string;\n\tredisURL?: string;\n\tinstanceType?: string;\n\tfirebaseAdmin?: {\n\t\tsuper: {\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\n\t\t\tfirebaseAdminAppName?: string;\n\t\t};\n\t\tuser: {\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\n\t\t\tfirebaseAdminAppName?: string;\n\t\t};\n\t\tshop: {\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\n\t\t\tfirebaseAdminAppName?: string;\n\t\t};\n\t\trider: {\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\n\t\t\tfirebaseAdminAppName?: string;\n\t\t};\n\t};\n\tenvironment: EnvironmentConfigurationType;\n}\n\n@Service()\nexport class ConfigurationService {\n\tprivate readonly _defaultOptions: ConfigurationOptions = {\n\t\tredisURL:\n\t\t\t'redis://default:8RCVCiwXRMo6isHgJanL1pE86cRt29YP@redis-12296.fcrce173.eu-west-1-1.ec2.redns.redis-cloud.com:12296',\n\t\ttenet: 'default',\n\t\tinstanceType: 'unknown',\n\t\tfirebaseAdmin: {\n\t\t\tsuper: {\n\t\t\t\tfirebaseAdminServiceAccount: {\n\t\t\t\t\tprojectId: 'for-poc-325210',\n\t\t\t\t\tprivateKey:\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5aI2nsMHkJbZf\\nem9ycpd57RjRDsBt9Nb/uMjsFcBRuAKcKgh4lgNO6ZmcRwK10IRygCmbY5XxmtVA\\nq9CT5tYlVN4SDzN1y4lL8/CL5owW2RZOURKcM0lsNOB9uGwkv1t3bfbBNc2hh9JX\\n72t7URAtrtPAkUxtgEPm6WL03uNu8KCZ0G9uoA/oM7o8OIGkjC575D9V6QjYC9fn\\nPjBRQ3K42fUWFmf31jtUBSHB0xE5qJI+MOi+OcXAJLxKQBbW+vqr2KfMwVYpNclp\\nk0Ptfe8xZxVfKEJAAkacQ36Hp14wFK/q+2mmhOQlbruksOZCpaIkh5IdvGkkG8ZH\\n566FgFHDAgMBAAECggEAJkuuqprLSZTyiOEQoOqDWBc9X3z1CSEfwV0I/x51BUwF\\nGf1il4mgsE12wX03VZd2q/HF5kcZAvjQoFV8tPfidn6DieZi4itCthHyNutNNzDq\\ntw1u0x2SxktbrQwJJkPyIAZyB7FVwk38B9a3dBanyU/JhAZe62UpYUoGev6IqnKm\\nIiw7r4lc47XgJNrDjXhCtTwHBmXA6qt/HrBcu4fSZlnZMhvsgnO6iafXaBo15Rpy\\nyVBVCPCGJBqpbqI8w3lVTcUqvD2DS+wGJAZSNFagt5qg+vCN8xVUsyQKrM1qIXZm\\nxvPX5oE6CWaD5a7yzpwqKLghKIpsb+3gezyQiFw5rQKBgQDh9U+VdFipH2o8Rezd\\n2d9Kp+ya8+kAog4NMeMyD/xyvKbmv6hW2SZqLhc5MacO0GiCnFR+dMLJxRBGnn+e\\ngYP26OE2fG9Kn7JrSGafu7siKnonfaN/1IcHcZe/77P/s/o2lNxaVl9i1iPQlzr/\\nN8RRaYa+pvazR4VNMS+Z6keD5QKBgQDSDxfKGwOt/GlPKRDmw3bKD4tseK36JsJw\\n5u7im6CpiTEgSSbOCr1ggITv6VbHUK/Nv3mExJH6uuzd9szb94JUAxGbZ16Liwn4\\nse+K2XlnLEnqxzFSkprOJAJkfbffrH+IxW8gNrK/UbjKT/xgEVH1ZeKUMPLCQG+y\\nLAW6NY50hwKBgCYQTPfAQa87u4mrvdsheJv67cCslfOlWPigDsXAK6aoYPU+E/2N\\nVwtL+F2KH7o/IVvfOdyTjryula9Pw+/PoYtWb5neHGFVxZiM+byuwzdeMHW2lHRU\\nOOroF8gdeRT6HIxVR0lwg2EC8cWRtD6KBmgwfqJfPe+1fJ8kSgCDlsiBAoGBAI1D\\nOyNeYW4bBhMHMeeOYY9nPsL2sUE92Zslolbgg/4fVds5dpAvpsWECGJy0Dn/6Ap8\\njtMbgnRUSsDGnWP8IjgvTCLvNCSxn0YRG1+L+tnIbfkmdePq1ZJ1oupDpWkVTzsC\\nU0Ydor2IzrW3bqiIXU6jculntYmu3a67biqYo7F3AoGBALoinJdtNLLqOqf/MumD\\n+YmbzHqsuID2dGyct7GESIBx3a67hwyJQfCK8nyHNyWN7lFg+H1rZlu1Cjmo0hlu\\nOxzdbWON5Rg2n3TbGw3AM1M55khsedbmm8MOSRdhIkz5RuYESSNAvVC6CBcfg5gb\\nCPq8jrR+oljMjBwAaQmFlPF7\\n-----END PRIVATE KEY-----\\n',\n\t\t\t\t\tclientEmail: 'lyxa-core@for-poc-325210.iam.gserviceaccount.com',\n\t\t\t\t},\n\t\t\t},\n\t\t\tuser: {\n\t\t\t\tfirebaseAdminServiceAccount: {\n\t\t\t\t\tprojectId: 'for-poc-325210',\n\t\t\t\t\tprivateKey:\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9yUnAC2pQ+dhe\\ndJVMS7RQeQdQO7JhT0BXz0MbpCXlEdc3j/GQAY9UfKxQLg1VZh+4An8aUZevOy/v\\nUaHsvqSWcWg7UHTOjk861brpjdjhM4S4ahwU2NyVI/o0Bpc5ob4nhHebny9FGqEP\\nauwUXiVw7UjA/yGeTN6delZwCxejHxI6zDjFQveo8Ljkfu49CMyyf1XhN9q0So4Q\\n2pZ3Xmdz0fZGykSGT9TVBDnPE8Zc3VCQ1XQ7aEKr0e9L+YYidw+iurSNwQSo72uk\\nf/G2wCtlAaoDh0lKObEbi1b925BOthP2XpmQ7Kv+iWVFouCY54Md56FxtjKOyYll\\n0nS6MkAJAgMBAAECggEAEeee83UoPjQ6BVxAlxJ31BU8+0TshOlwB7C8MywC7rfm\\nit2Dw8sf4W/DJmvX0nAYazjiEqKyuaOO98gm64HHX5GarKjgIjoTD7kJAZ6CIOnm\\nOis5k75rXg8nPFgIVZW0rb/9tEL5984ltoGG/PtuUxdxwxJ20ptML8VySO8E93yt\\n203zMlm/QdlUBBO+XDlpsEoXvUjQ6MzmCSF2LCFD1uBVmj0sVFuPt5fyodhV8gQM\\nvDfG4duZ7AE6Nbc5ANgJw8fHMdx+AS+I0P50et936tuFOOeHUWGbg1RMOM1GrWLZ\\nH83zfHp33R3rlUgleZetKh/5vLaW29MdJmACk2Z14QKBgQDtrywbz60ULHiyNvDP\\nHFweJF/9EBq6MZeo/lYrBDZXuP3sBM7uUa+oYzYad3Lsxo1Vz/Zqb6atWX/BRbHT\\nfyy6yTGPRn6geaqYEFuFwfBau3qju6DRwoqplVVlLo8lgOQzIDgXkk0nt7C/bM87\\nmkxQI6Xi0TAjIpd3k6miw52laQKBgQDMaTnlL2OGlJlcycBZGxrKdsIwvK2jCLPi\\njPTKM163htuzaItEVpJaCPjWaU3k3E1UXjFp9oxxvtDZOZP+DcFwGKvBe2vntFYz\\nafCNlYK7wT/t7ChlCUSXuU/bSrXe4Wc4KGnJ6YzNmykMJku2b845layB1PxEhHHA\\nRl2NEx9RoQKBgHJvETx+m2UIGEAtZXlBvTQh7TkIxOV6NPt/IHtrdsJ7ZX15vytM\\nltbqlUTe160Z1zhGfOw3vzbczT5/UKN0KlPvw/WoShT3HuRBk97tRcxZUS19i2sS\\nT/Jf3JJvfSngSX439+mZXZ5OuUEgoRGgMzeuQhLXBmcUI3rF1DlyFvdpAoGAfmq5\\nbn8fSzUNn+/6MGFt8Tb/JAscS87vCTZpkb+xXUlfCJaoQqxTuLEBzAC2Nsr0XDAg\\n2UqsUxBSs3VDjIRPVJc9adx9wH+sLAHhzn5fquR6OBesZ8gSjs8BjzqmPeAi6P09\\nZ60z8lh6S1RH0N1WqhBh7q2dEnbirqoV41CnNuECgYEAr26tTBIvEeZY3gmAmOVl\\nCw6gkxaHdzZplFl8Qnv272VllQpwbR1zaF6RfWsTEsrhrT+VtrZO6DDh9O6iJkbB\\n7Re3BnMOhGfUS3HlPCFnkdodeaoeVpg4llYwuunmyj+SmNxnC56TiznML1owmUYd\\ndLFeY+JZ0GpSBO0qYlY5QGk=\\n-----END PRIVATE KEY-----\\n',\n\t\t\t\t\tclientEmail: 'firebase-adminsdk-onusy@for-poc-325210.iam.gserviceaccount.com',\n\t\t\t\t},\n\t\t\t\tfirebaseAdminAppName: 'lyxa-user',\n\t\t\t},\n\t\t\trider: {\n\t\t\t\tfirebaseAdminServiceAccount: {\n\t\t\t\t\tprojectId: 'lyxa-rider-88939',\n\t\t\t\t\tprivateKey:\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC08zRqUjHFO7Ir\\n4UNHIjxVp7oJkK3rrV1UGfHeHsijm6CSWjViVqsFKUZliYXTjg9S8rIMmC3OAMrh\\n5FTdNfDell8YHPbVRWZ0OFBNWglvKMgMKMoyQuBKtvEAdZwgVMreOf+51QlZnPxy\\nTBNh4Du2ahb8TtAjwxXt7CgMjNIfoMjQFJTrBTAmsxhtOEpYvPU2iX+OtAkHgrs1\\nNeWpBGpN4GSwOfA8MdgvorLYbeRDnkY4cH/ReNymTW9nbX1vgsx2AE1NR5PTNxv0\\nIuVZQWxMMGPnT5bjzAlCR4z/Nbe89V2zl5kFtBxDBCDqxp+qZxCinJj1QqwC5qzZ\\nYLbNVKVPAgMBAAECggEAEHEGwrW24v/NF9KZ3S/zASoX1oBTD+vf4+E69QlMBshV\\nxeaKHOYuF5khVd7cjj/wDC6ULLPJJFjga7e7rvaUl80G//cQcIl5STcdXiHqYzN2\\nldrroGHWOm5hUJQ0fEroEgV9bc0PJ+7X5f9xRWlCqQz+YKzn7vqYwVZovyyDzS6/\\nTus2SeWg0Qh1Uw4+FqveEqGBAMF9COTYJ/rZ5sDE34cYRJeZOgVDeSanF/CW6+VS\\nLT5+ysRS8xY/mUFIgs6zvJQr7whDj22OzvZr31LReNUl1IGI1V0wHxCJs3y934dq\\nuiAf4iX2w0uwiQs7+IQc6T6GhTEajWHSQqUtbDeecQKBgQDAW/mHk1PCCxZQtc6C\\nCkFYONeY0zz7JAk7AvcbeVB6icq9Zv/9botFOvJ/4dduN39+sO/SIvLV+zQzmUGA\\nygY58AQIqtYurIc8OjftQ5qZ6t9H1plmj/W+GVAYWadA68P95UBjwVcZySht47s/\\ngOje4TF9wXVn9oTuP8XmLpce/wKBgQDw0Onl7EVmkgnyHl1qomqHR+2+xNDZNYMv\\njdX0tq2KOXa6JpbO32Yf7LVKQo7bmSOy3M1kn2+lwCXsDufr/a+1GNRxuPucsYiM\\nlQeLEKRqfNUni1NnbIUOkZV0fO0Me76Ow5BKqEWrda0E5k9g46p8EgVO5zWUE00w\\nZZFTUn7JsQKBgDh9SiREYb6EXwNIwOJzfIkZ+EaLEkd2Z7eKwWKyF65EtOM2Ukrs\\nob2s9/YSLp/RcIGWGHePh9zLLqNQiGn36igtkiGxecCvLe/D8RSeW9KDpRqFrPrv\\nn+05pcng2js4gZAYOPaSmq+Z4WOUEzMs+jYpz8zseTwUqykEVWuplvulAoGAF8y9\\n4RBZx4pVW01u9BP7LUWJlJoE/gKQ5YlCBP5s5kVJm5omu2lOwYb2X9F2JvPamFnE\\nHta3BQ2ZcdwDRcp7rA05KcgbbeAJ28L6zN6nMTMHKfJWGtmZyNfQioOyNdKhAaEI\\nSKiawhhOMjbEz5GQjtSFG8gz/l9t+IOBOlfj2fECgYBC8gGC7YHm+PvV5F1CVRZD\\nUYVlAnqOMJ1VvfTemW/kPzuCMd/JEKSE+b21h3rObMvUZU5AnkM3VT1+hDv6tyEt\\nblgh89YsHUor7wXSrYnVmYsrm91JABTWsLhLy92iqylg0xBs3Q5RGCt/s9f3YFFw\\nKghNmTDraGggnf5U/Z4LJw==\\n-----END PRIVATE KEY-----\\n',\n\t\t\t\t\tclientEmail: 'firebase-adminsdk-qwhrd@lyxa-rider-88939.iam.gserviceaccount.com',\n\t\t\t\t},\n\t\t\t\tfirebaseAdminAppName: 'lyxa-rider',\n\t\t\t},\n\t\t\tshop: {\n\t\t\t\tfirebaseAdminServiceAccount: {\n\t\t\t\t\tprojectId: 'lyxa-shop',\n\t\t\t\t\tprivateKey:\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDTWaf/QGSjk7po\\nri+6Nzo/tep1UtgMSY4KscT3iCbepiAsw7C8NCQqz3wYEAFRwywbaCwUcUs5KUC7\\n/e9TvpSQQksu10P9uP+c7wnAy+l0ay/15vWUV0usmDhMMvfjtDwS2RYTMEAdNUiZ\\nOuMC3/DDCBHt0SC5WCNzz11jj/n5bdVOS02qHd8V/lbd46iVEYfFswkI5NBgV7CY\\nnR2CoVcakPIeu9kEKdjXsJvf8+zCYtXPaFvcubQcnybOcg6usU+AHD1iwCRd6BrK\\n2PpM3gy/eASLJtzg/JoU0CgqJICmfR8LvGk6iHTp7VMfPuCfggwYtO3W1kSHuW4I\\nswbXYOJbAgMBAAECggEAMHKZ5xIsv66KiZp8SFSGnrolv7U430AxNlRf0Vo9hsZQ\\nE9Lb/Zh6PfIIAUAR/VsfDj1H9XuvAbBqLW3dYbYLOjJoJ5mi9VNmDORiuPZFUrGL\\ncfP6kYGdUDgol5cLagAT0UJAJC/oUom3VaDBDxSkjSCZc4l/1dzVa6O6RatoYvuW\\nqtJa5WzPH6flqj9HuFZaaNSZKXSYLwMeQC7bzxjbX0lB6b1WM2EIxQopeewrSfKg\\nvaw7zYHnu9cO6oA6I4A3VXhySp3G2VIMOIezfI24mP2Bnzori6xCVXcM7R1B2Trr\\nlFUrdXb9Rp3ZR0Ul0jSqCmopmMPVgob8lyHhiqk5+QKBgQDd/PcIRP7OE0ZnfXtd\\nxWMz1ggp9ub6bN/mFxw/OoyEVSfmlshDCvEeqoo2DxWGC+/0uiGuPHnDKDX+R0Ho\\nqmlWcVPTSBmrQvi3+VBKfr6ZCwxoutCQo3SMlEMvqHDkjGhAsDg/yjkI8yS5jqZ5\\nXtG+dYQpd9qY3t46Uar1+7lpJwKBgQDzu3CzElfr3xHAEdE+1pkiPixPuW+fHw1v\\nwoc5e7hJA1Mtu0Gdj7g41mF37bUXYxIg3FgV5sS76XCxw1a3plj/y0n+qZXMq5xs\\nZwgqrh4APjVXVRp9SSOvEXT0NanhWKiHMNncvteqThSEal27MDghEzqDmebkuOII\\ng+KDmYp1rQKBgA0dhPrYGLXULbSvlTpVDydg3dqc28iv5gqSEvkpXGP1JAZbojlT\\nzCsjqEbJXVwuGF89IABLUmZVWdtMGnjEmLSivXEeMWYM7uTvte6wzlH8dR866leh\\nUKF9oPqP2RunsAEiaDBcokIFG4ZbBzrkfz/hcY2Bp0ig4kBP0un1lV7BAoGBAJ4L\\n4MOt1Gd2KetzYk0uGPS0fkVgSLpVB4B+EvO6f0CRMGHKOH00UdBBa8i50qEMtBes\\n6k2ha9cyQ8pxkYzbCIEuUJgbXbDvYyqEES6j435i2HH+FIRDZilC16T4G2Wt+PJZ\\nQhy7f9vGb9WBp7AXT35bGql1pdyQ6rl80+hkKv2tAoGAe4yFOvIdEEdgEokp5Dem\\nuPf1rikk5mYPMkXhrX0cH9Wd2rh9MiP2gJuL3PD3R9LLon+9EzdBs31MwpP9C06Y\\nZmnuEfgYIewBHZbpRO+nsGX+AK15gbJUNk1RbWmUU7AvkHyo4eE6NnNVbygxaFSk\\n0+8aYRpYzZRnyAn8Oo6o2No=\\n-----END PRIVATE KEY-----\\n',\n\t\t\t\t\tclientEmail: 'firebase-adminsdk-w4v98@lyxa-shop.iam.gserviceaccount.com',\n\t\t\t\t},\n\t\t\t\tfirebaseAdminAppName: 'lyxa-shop',\n\t\t\t},\n\t\t},\n\t\tenvironment: EnvironmentConfigurationType.DEV,\n\t};\n\n\tprivate readonly _options: ConfigurationOptions;\n\n\tconstructor(options?: ConfigurationOptions) {\n\t\tthis._options = {\n\t\t\t...this._defaultOptions,\n\t\t\t...options,\n\t\t};\n\t}\n\n\tget options(): ConfigurationOptions {\n\t\treturn this._options;\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/configuration/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mCAAiC;AACjC,uFAAoF;AA4B7E,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACf,eAAe,GAAyB;QACxD,QAAQ,EACP,mHAAmH;QACpH,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE;YACd,KAAK,EAAE;gBACN,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,gBAAgB;oBAC3B,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,kDAAkD;iBAC/D;aACD;YACD,IAAI,EAAE;gBACL,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,gBAAgB;oBAC3B,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,gEAAgE;iBAC7E;gBACD,oBAAoB,EAAE,WAAW;aACjC;YACD,KAAK,EAAE;gBACN,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,kBAAkB;oBAC7B,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,kEAAkE;iBAC/E;gBACD,oBAAoB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE;gBACL,2BAA2B,EAAE;oBAC5B,SAAS,EAAE,WAAW;oBACtB,UAAU,EACT,ssDAAssD;oBACvsD,WAAW,EAAE,2DAA2D;iBACxE;gBACD,oBAAoB,EAAE,WAAW;aACjC;SACD;QACD,WAAW,EAAE,2DAA4B,CAAC,GAAG;KAC7C,CAAC;IAEe,QAAQ,CAAuB;IAEhD,YAAY,OAA8B;QACzC,IAAI,CAAC,QAAQ,GAAG;YACf,GAAG,IAAI,CAAC,eAAe;YACvB,GAAG,OAAO;SACV,CAAC;IACH,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD,CAAA;AA1DY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,gBAAO,GAAE;;GACG,oBAAoB,CA0DhC","sourcesContent":["import { FirebaseOptions } from 'firebase/app';\r\nimport { ServiceAccount } from 'firebase-admin';\r\nimport { Service } from 'typedi';\r\nimport { EnvironmentConfigurationType } from './types/EnvironmentConfigurationType';\r\n\r\nexport interface ConfigurationOptions {\r\n\ttenet?: string;\r\n\tredisURL?: string;\r\n\tinstanceType?: string;\r\n\tfirebaseAdmin?: {\r\n\t\tsuper: {\r\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\r\n\t\t\tfirebaseAdminAppName?: string;\r\n\t\t};\r\n\t\tuser: {\r\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\r\n\t\t\tfirebaseAdminAppName?: string;\r\n\t\t};\r\n\t\tshop: {\r\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\r\n\t\t\tfirebaseAdminAppName?: string;\r\n\t\t};\r\n\t\trider: {\r\n\t\t\tfirebaseAdminServiceAccount: ServiceAccount;\r\n\t\t\tfirebaseAdminAppName?: string;\r\n\t\t};\r\n\t};\r\n\tenvironment: EnvironmentConfigurationType;\r\n}\r\n\r\n@Service()\r\nexport class ConfigurationService {\r\n\tprivate readonly _defaultOptions: ConfigurationOptions = {\r\n\t\tredisURL:\r\n\t\t\t'redis://default:8RCVCiwXRMo6isHgJanL1pE86cRt29YP@redis-12296.fcrce173.eu-west-1-1.ec2.redns.redis-cloud.com:12296',\r\n\t\ttenet: 'default',\r\n\t\tinstanceType: 'unknown',\r\n\t\tfirebaseAdmin: {\r\n\t\t\tsuper: {\r\n\t\t\t\tfirebaseAdminServiceAccount: {\r\n\t\t\t\t\tprojectId: 'for-poc-325210',\r\n\t\t\t\t\tprivateKey:\r\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5aI2nsMHkJbZf\\nem9ycpd57RjRDsBt9Nb/uMjsFcBRuAKcKgh4lgNO6ZmcRwK10IRygCmbY5XxmtVA\\nq9CT5tYlVN4SDzN1y4lL8/CL5owW2RZOURKcM0lsNOB9uGwkv1t3bfbBNc2hh9JX\\n72t7URAtrtPAkUxtgEPm6WL03uNu8KCZ0G9uoA/oM7o8OIGkjC575D9V6QjYC9fn\\nPjBRQ3K42fUWFmf31jtUBSHB0xE5qJI+MOi+OcXAJLxKQBbW+vqr2KfMwVYpNclp\\nk0Ptfe8xZxVfKEJAAkacQ36Hp14wFK/q+2mmhOQlbruksOZCpaIkh5IdvGkkG8ZH\\n566FgFHDAgMBAAECggEAJkuuqprLSZTyiOEQoOqDWBc9X3z1CSEfwV0I/x51BUwF\\nGf1il4mgsE12wX03VZd2q/HF5kcZAvjQoFV8tPfidn6DieZi4itCthHyNutNNzDq\\ntw1u0x2SxktbrQwJJkPyIAZyB7FVwk38B9a3dBanyU/JhAZe62UpYUoGev6IqnKm\\nIiw7r4lc47XgJNrDjXhCtTwHBmXA6qt/HrBcu4fSZlnZMhvsgnO6iafXaBo15Rpy\\nyVBVCPCGJBqpbqI8w3lVTcUqvD2DS+wGJAZSNFagt5qg+vCN8xVUsyQKrM1qIXZm\\nxvPX5oE6CWaD5a7yzpwqKLghKIpsb+3gezyQiFw5rQKBgQDh9U+VdFipH2o8Rezd\\n2d9Kp+ya8+kAog4NMeMyD/xyvKbmv6hW2SZqLhc5MacO0GiCnFR+dMLJxRBGnn+e\\ngYP26OE2fG9Kn7JrSGafu7siKnonfaN/1IcHcZe/77P/s/o2lNxaVl9i1iPQlzr/\\nN8RRaYa+pvazR4VNMS+Z6keD5QKBgQDSDxfKGwOt/GlPKRDmw3bKD4tseK36JsJw\\n5u7im6CpiTEgSSbOCr1ggITv6VbHUK/Nv3mExJH6uuzd9szb94JUAxGbZ16Liwn4\\nse+K2XlnLEnqxzFSkprOJAJkfbffrH+IxW8gNrK/UbjKT/xgEVH1ZeKUMPLCQG+y\\nLAW6NY50hwKBgCYQTPfAQa87u4mrvdsheJv67cCslfOlWPigDsXAK6aoYPU+E/2N\\nVwtL+F2KH7o/IVvfOdyTjryula9Pw+/PoYtWb5neHGFVxZiM+byuwzdeMHW2lHRU\\nOOroF8gdeRT6HIxVR0lwg2EC8cWRtD6KBmgwfqJfPe+1fJ8kSgCDlsiBAoGBAI1D\\nOyNeYW4bBhMHMeeOYY9nPsL2sUE92Zslolbgg/4fVds5dpAvpsWECGJy0Dn/6Ap8\\njtMbgnRUSsDGnWP8IjgvTCLvNCSxn0YRG1+L+tnIbfkmdePq1ZJ1oupDpWkVTzsC\\nU0Ydor2IzrW3bqiIXU6jculntYmu3a67biqYo7F3AoGBALoinJdtNLLqOqf/MumD\\n+YmbzHqsuID2dGyct7GESIBx3a67hwyJQfCK8nyHNyWN7lFg+H1rZlu1Cjmo0hlu\\nOxzdbWON5Rg2n3TbGw3AM1M55khsedbmm8MOSRdhIkz5RuYESSNAvVC6CBcfg5gb\\nCPq8jrR+oljMjBwAaQmFlPF7\\n-----END PRIVATE KEY-----\\n',\r\n\t\t\t\t\tclientEmail: 'lyxa-core@for-poc-325210.iam.gserviceaccount.com',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tuser: {\r\n\t\t\t\tfirebaseAdminServiceAccount: {\r\n\t\t\t\t\tprojectId: 'for-poc-325210',\r\n\t\t\t\t\tprivateKey:\r\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9yUnAC2pQ+dhe\\ndJVMS7RQeQdQO7JhT0BXz0MbpCXlEdc3j/GQAY9UfKxQLg1VZh+4An8aUZevOy/v\\nUaHsvqSWcWg7UHTOjk861brpjdjhM4S4ahwU2NyVI/o0Bpc5ob4nhHebny9FGqEP\\nauwUXiVw7UjA/yGeTN6delZwCxejHxI6zDjFQveo8Ljkfu49CMyyf1XhN9q0So4Q\\n2pZ3Xmdz0fZGykSGT9TVBDnPE8Zc3VCQ1XQ7aEKr0e9L+YYidw+iurSNwQSo72uk\\nf/G2wCtlAaoDh0lKObEbi1b925BOthP2XpmQ7Kv+iWVFouCY54Md56FxtjKOyYll\\n0nS6MkAJAgMBAAECggEAEeee83UoPjQ6BVxAlxJ31BU8+0TshOlwB7C8MywC7rfm\\nit2Dw8sf4W/DJmvX0nAYazjiEqKyuaOO98gm64HHX5GarKjgIjoTD7kJAZ6CIOnm\\nOis5k75rXg8nPFgIVZW0rb/9tEL5984ltoGG/PtuUxdxwxJ20ptML8VySO8E93yt\\n203zMlm/QdlUBBO+XDlpsEoXvUjQ6MzmCSF2LCFD1uBVmj0sVFuPt5fyodhV8gQM\\nvDfG4duZ7AE6Nbc5ANgJw8fHMdx+AS+I0P50et936tuFOOeHUWGbg1RMOM1GrWLZ\\nH83zfHp33R3rlUgleZetKh/5vLaW29MdJmACk2Z14QKBgQDtrywbz60ULHiyNvDP\\nHFweJF/9EBq6MZeo/lYrBDZXuP3sBM7uUa+oYzYad3Lsxo1Vz/Zqb6atWX/BRbHT\\nfyy6yTGPRn6geaqYEFuFwfBau3qju6DRwoqplVVlLo8lgOQzIDgXkk0nt7C/bM87\\nmkxQI6Xi0TAjIpd3k6miw52laQKBgQDMaTnlL2OGlJlcycBZGxrKdsIwvK2jCLPi\\njPTKM163htuzaItEVpJaCPjWaU3k3E1UXjFp9oxxvtDZOZP+DcFwGKvBe2vntFYz\\nafCNlYK7wT/t7ChlCUSXuU/bSrXe4Wc4KGnJ6YzNmykMJku2b845layB1PxEhHHA\\nRl2NEx9RoQKBgHJvETx+m2UIGEAtZXlBvTQh7TkIxOV6NPt/IHtrdsJ7ZX15vytM\\nltbqlUTe160Z1zhGfOw3vzbczT5/UKN0KlPvw/WoShT3HuRBk97tRcxZUS19i2sS\\nT/Jf3JJvfSngSX439+mZXZ5OuUEgoRGgMzeuQhLXBmcUI3rF1DlyFvdpAoGAfmq5\\nbn8fSzUNn+/6MGFt8Tb/JAscS87vCTZpkb+xXUlfCJaoQqxTuLEBzAC2Nsr0XDAg\\n2UqsUxBSs3VDjIRPVJc9adx9wH+sLAHhzn5fquR6OBesZ8gSjs8BjzqmPeAi6P09\\nZ60z8lh6S1RH0N1WqhBh7q2dEnbirqoV41CnNuECgYEAr26tTBIvEeZY3gmAmOVl\\nCw6gkxaHdzZplFl8Qnv272VllQpwbR1zaF6RfWsTEsrhrT+VtrZO6DDh9O6iJkbB\\n7Re3BnMOhGfUS3HlPCFnkdodeaoeVpg4llYwuunmyj+SmNxnC56TiznML1owmUYd\\ndLFeY+JZ0GpSBO0qYlY5QGk=\\n-----END PRIVATE KEY-----\\n',\r\n\t\t\t\t\tclientEmail: 'firebase-adminsdk-onusy@for-poc-325210.iam.gserviceaccount.com',\r\n\t\t\t\t},\r\n\t\t\t\tfirebaseAdminAppName: 'lyxa-user',\r\n\t\t\t},\r\n\t\t\trider: {\r\n\t\t\t\tfirebaseAdminServiceAccount: {\r\n\t\t\t\t\tprojectId: 'lyxa-rider-88939',\r\n\t\t\t\t\tprivateKey:\r\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC08zRqUjHFO7Ir\\n4UNHIjxVp7oJkK3rrV1UGfHeHsijm6CSWjViVqsFKUZliYXTjg9S8rIMmC3OAMrh\\n5FTdNfDell8YHPbVRWZ0OFBNWglvKMgMKMoyQuBKtvEAdZwgVMreOf+51QlZnPxy\\nTBNh4Du2ahb8TtAjwxXt7CgMjNIfoMjQFJTrBTAmsxhtOEpYvPU2iX+OtAkHgrs1\\nNeWpBGpN4GSwOfA8MdgvorLYbeRDnkY4cH/ReNymTW9nbX1vgsx2AE1NR5PTNxv0\\nIuVZQWxMMGPnT5bjzAlCR4z/Nbe89V2zl5kFtBxDBCDqxp+qZxCinJj1QqwC5qzZ\\nYLbNVKVPAgMBAAECggEAEHEGwrW24v/NF9KZ3S/zASoX1oBTD+vf4+E69QlMBshV\\nxeaKHOYuF5khVd7cjj/wDC6ULLPJJFjga7e7rvaUl80G//cQcIl5STcdXiHqYzN2\\nldrroGHWOm5hUJQ0fEroEgV9bc0PJ+7X5f9xRWlCqQz+YKzn7vqYwVZovyyDzS6/\\nTus2SeWg0Qh1Uw4+FqveEqGBAMF9COTYJ/rZ5sDE34cYRJeZOgVDeSanF/CW6+VS\\nLT5+ysRS8xY/mUFIgs6zvJQr7whDj22OzvZr31LReNUl1IGI1V0wHxCJs3y934dq\\nuiAf4iX2w0uwiQs7+IQc6T6GhTEajWHSQqUtbDeecQKBgQDAW/mHk1PCCxZQtc6C\\nCkFYONeY0zz7JAk7AvcbeVB6icq9Zv/9botFOvJ/4dduN39+sO/SIvLV+zQzmUGA\\nygY58AQIqtYurIc8OjftQ5qZ6t9H1plmj/W+GVAYWadA68P95UBjwVcZySht47s/\\ngOje4TF9wXVn9oTuP8XmLpce/wKBgQDw0Onl7EVmkgnyHl1qomqHR+2+xNDZNYMv\\njdX0tq2KOXa6JpbO32Yf7LVKQo7bmSOy3M1kn2+lwCXsDufr/a+1GNRxuPucsYiM\\nlQeLEKRqfNUni1NnbIUOkZV0fO0Me76Ow5BKqEWrda0E5k9g46p8EgVO5zWUE00w\\nZZFTUn7JsQKBgDh9SiREYb6EXwNIwOJzfIkZ+EaLEkd2Z7eKwWKyF65EtOM2Ukrs\\nob2s9/YSLp/RcIGWGHePh9zLLqNQiGn36igtkiGxecCvLe/D8RSeW9KDpRqFrPrv\\nn+05pcng2js4gZAYOPaSmq+Z4WOUEzMs+jYpz8zseTwUqykEVWuplvulAoGAF8y9\\n4RBZx4pVW01u9BP7LUWJlJoE/gKQ5YlCBP5s5kVJm5omu2lOwYb2X9F2JvPamFnE\\nHta3BQ2ZcdwDRcp7rA05KcgbbeAJ28L6zN6nMTMHKfJWGtmZyNfQioOyNdKhAaEI\\nSKiawhhOMjbEz5GQjtSFG8gz/l9t+IOBOlfj2fECgYBC8gGC7YHm+PvV5F1CVRZD\\nUYVlAnqOMJ1VvfTemW/kPzuCMd/JEKSE+b21h3rObMvUZU5AnkM3VT1+hDv6tyEt\\nblgh89YsHUor7wXSrYnVmYsrm91JABTWsLhLy92iqylg0xBs3Q5RGCt/s9f3YFFw\\nKghNmTDraGggnf5U/Z4LJw==\\n-----END PRIVATE KEY-----\\n',\r\n\t\t\t\t\tclientEmail: 'firebase-adminsdk-qwhrd@lyxa-rider-88939.iam.gserviceaccount.com',\r\n\t\t\t\t},\r\n\t\t\t\tfirebaseAdminAppName: 'lyxa-rider',\r\n\t\t\t},\r\n\t\t\tshop: {\r\n\t\t\t\tfirebaseAdminServiceAccount: {\r\n\t\t\t\t\tprojectId: 'lyxa-shop',\r\n\t\t\t\t\tprivateKey:\r\n\t\t\t\t\t\t'-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDTWaf/QGSjk7po\\nri+6Nzo/tep1UtgMSY4KscT3iCbepiAsw7C8NCQqz3wYEAFRwywbaCwUcUs5KUC7\\n/e9TvpSQQksu10P9uP+c7wnAy+l0ay/15vWUV0usmDhMMvfjtDwS2RYTMEAdNUiZ\\nOuMC3/DDCBHt0SC5WCNzz11jj/n5bdVOS02qHd8V/lbd46iVEYfFswkI5NBgV7CY\\nnR2CoVcakPIeu9kEKdjXsJvf8+zCYtXPaFvcubQcnybOcg6usU+AHD1iwCRd6BrK\\n2PpM3gy/eASLJtzg/JoU0CgqJICmfR8LvGk6iHTp7VMfPuCfggwYtO3W1kSHuW4I\\nswbXYOJbAgMBAAECggEAMHKZ5xIsv66KiZp8SFSGnrolv7U430AxNlRf0Vo9hsZQ\\nE9Lb/Zh6PfIIAUAR/VsfDj1H9XuvAbBqLW3dYbYLOjJoJ5mi9VNmDORiuPZFUrGL\\ncfP6kYGdUDgol5cLagAT0UJAJC/oUom3VaDBDxSkjSCZc4l/1dzVa6O6RatoYvuW\\nqtJa5WzPH6flqj9HuFZaaNSZKXSYLwMeQC7bzxjbX0lB6b1WM2EIxQopeewrSfKg\\nvaw7zYHnu9cO6oA6I4A3VXhySp3G2VIMOIezfI24mP2Bnzori6xCVXcM7R1B2Trr\\nlFUrdXb9Rp3ZR0Ul0jSqCmopmMPVgob8lyHhiqk5+QKBgQDd/PcIRP7OE0ZnfXtd\\nxWMz1ggp9ub6bN/mFxw/OoyEVSfmlshDCvEeqoo2DxWGC+/0uiGuPHnDKDX+R0Ho\\nqmlWcVPTSBmrQvi3+VBKfr6ZCwxoutCQo3SMlEMvqHDkjGhAsDg/yjkI8yS5jqZ5\\nXtG+dYQpd9qY3t46Uar1+7lpJwKBgQDzu3CzElfr3xHAEdE+1pkiPixPuW+fHw1v\\nwoc5e7hJA1Mtu0Gdj7g41mF37bUXYxIg3FgV5sS76XCxw1a3plj/y0n+qZXMq5xs\\nZwgqrh4APjVXVRp9SSOvEXT0NanhWKiHMNncvteqThSEal27MDghEzqDmebkuOII\\ng+KDmYp1rQKBgA0dhPrYGLXULbSvlTpVDydg3dqc28iv5gqSEvkpXGP1JAZbojlT\\nzCsjqEbJXVwuGF89IABLUmZVWdtMGnjEmLSivXEeMWYM7uTvte6wzlH8dR866leh\\nUKF9oPqP2RunsAEiaDBcokIFG4ZbBzrkfz/hcY2Bp0ig4kBP0un1lV7BAoGBAJ4L\\n4MOt1Gd2KetzYk0uGPS0fkVgSLpVB4B+EvO6f0CRMGHKOH00UdBBa8i50qEMtBes\\n6k2ha9cyQ8pxkYzbCIEuUJgbXbDvYyqEES6j435i2HH+FIRDZilC16T4G2Wt+PJZ\\nQhy7f9vGb9WBp7AXT35bGql1pdyQ6rl80+hkKv2tAoGAe4yFOvIdEEdgEokp5Dem\\nuPf1rikk5mYPMkXhrX0cH9Wd2rh9MiP2gJuL3PD3R9LLon+9EzdBs31MwpP9C06Y\\nZmnuEfgYIewBHZbpRO+nsGX+AK15gbJUNk1RbWmUU7AvkHyo4eE6NnNVbygxaFSk\\n0+8aYRpYzZRnyAn8Oo6o2No=\\n-----END PRIVATE KEY-----\\n',\r\n\t\t\t\t\tclientEmail: 'firebase-adminsdk-w4v98@lyxa-shop.iam.gserviceaccount.com',\r\n\t\t\t\t},\r\n\t\t\t\tfirebaseAdminAppName: 'lyxa-shop',\r\n\t\t\t},\r\n\t\t},\r\n\t\tenvironment: EnvironmentConfigurationType.DEV,\r\n\t};\r\n\r\n\tprivate readonly _options: ConfigurationOptions;\r\n\r\n\tconstructor(options?: ConfigurationOptions) {\r\n\t\tthis._options = {\r\n\t\t\t...this._defaultOptions,\r\n\t\t\t...options,\r\n\t\t};\r\n\t}\r\n\r\n\tget options(): ConfigurationOptions {\r\n\t\treturn this._options;\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentConfigurationType.js","sourceRoot":"/","sources":["libraries/configuration/types/EnvironmentConfigurationType.ts"],"names":[],"mappings":";;;AAAA,IAAY,4BAMX;AAND,WAAY,4BAA4B;IACvC,+CAAe,CAAA;IACf,6CAAa,CAAA;IACb,2CAAW,CAAA;IACX,mDAAmB,CAAA;IACnB,6CAAa,CAAA;AACd,CAAC,EANW,4BAA4B,4CAA5B,4BAA4B,QAMvC","sourcesContent":["export enum EnvironmentConfigurationType {\n\tLOCAL = 'LOCAL',\n\tMOCK = 'MOCK',\n\tDEV = 'DEV',\n\tPREPROD = 'PREPROD',\n\tPROD = 'PROD',\n}\n"]}
1
+ {"version":3,"file":"EnvironmentConfigurationType.js","sourceRoot":"/","sources":["libraries/configuration/types/EnvironmentConfigurationType.ts"],"names":[],"mappings":";;;AAAA,IAAY,4BAMX;AAND,WAAY,4BAA4B;IACvC,+CAAe,CAAA;IACf,6CAAa,CAAA;IACb,2CAAW,CAAA;IACX,mDAAmB,CAAA;IACnB,6CAAa,CAAA;AACd,CAAC,EANW,4BAA4B,4CAA5B,4BAA4B,QAMvC","sourcesContent":["export enum EnvironmentConfigurationType {\r\n\tLOCAL = 'LOCAL',\r\n\tMOCK = 'MOCK',\r\n\tDEV = 'DEV',\r\n\tPREPROD = 'PREPROD',\r\n\tPROD = 'PROD',\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/dispatcher/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAiC;AACjC,yCAAoE;AAEpE,wCAAkD;AAG3C,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAC1B,cAAc,CAAuB;IAE7C,YAAY,aAAmC;QAC9C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,SAAkB,EAClB,OAEC;QAED,MAAM,aAAa,GAClB,SAAS;YACT,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAChC,2BAA2B,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,WAAW,CACrE,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAE9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAChF,CAAC;QAGD,OAAO,IAAA,8BAAqB,EAAI;YAC/B,KAAK,EAAE;gBACN,IAAA,sBAAa,EAAC;oBACb,GAAG,EAAE,aAAa;oBAClB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;iBAC3C,CAAC;aACF;SACD,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AApCY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,gBAAO,GAAE;qCAIkB,8BAAoB;GAHnC,sBAAsB,CAoClC","sourcesContent":["import { Service } from 'typedi';\nimport { createTRPCProxyClient, httpBatchLink } from '@trpc/client';\nimport { AnyRouter } from '@trpc/server';\nimport { SecretManagerService } from '../secrets';\n\n@Service()\nexport class MicroServiceDispatcher {\n\tprivate _secretService: SecretManagerService;\n\n\tconstructor(secretService: SecretManagerService) {\n\t\tthis._secretService = secretService;\n\t}\n\n\tpublic async getMicroService<T extends AnyRouter>(\n\t\tserviceName: string,\n\t\tcustomURL?: string,\n\t\toptions?: {\n\t\t\theaders?: Record<string, string>;\n\t\t}\n\t) {\n\t\tconst deploymentURL =\n\t\t\tcustomURL ??\n\t\t\t(await this._secretService.getKey(\n\t\t\t\t'DEPLOYMENTS_MICROSERVICE_' + serviceName.toUpperCase() + '_ENDPOINT'\n\t\t\t));\n\n\t\tconsole.log(deploymentURL, 'deploymentURL--');\n\n\t\tif (!deploymentURL) {\n\t\t\tthrow new Error('The requested service does not have a configured secret URL');\n\t\t}\n\n\t\t// @ts-ignore\n\t\treturn createTRPCProxyClient<T>({\n\t\t\tlinks: [\n\t\t\t\thttpBatchLink({\n\t\t\t\t\turl: deploymentURL,\n\t\t\t\t\theaders: async () => options?.headers ?? {},\n\t\t\t\t}),\n\t\t\t],\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/dispatcher/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAiC;AACjC,yCAAoE;AAEpE,wCAAkD;AAG3C,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAC1B,cAAc,CAAuB;IAE7C,YAAY,aAAmC;QAC9C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,SAAkB,EAClB,OAEC;QAED,MAAM,aAAa,GAClB,SAAS;YACT,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAChC,2BAA2B,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,WAAW,CACrE,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAE9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAChF,CAAC;QAGD,OAAO,IAAA,8BAAqB,EAAI;YAC/B,KAAK,EAAE;gBACN,IAAA,sBAAa,EAAC;oBACb,GAAG,EAAE,aAAa;oBAClB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;iBAC3C,CAAC;aACF;SAED,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AArCY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,gBAAO,GAAE;qCAIkB,8BAAoB;GAHnC,sBAAsB,CAqClC","sourcesContent":["import { Service } from 'typedi';\r\nimport { createTRPCProxyClient, httpBatchLink } from '@trpc/client';\r\nimport { AnyRouter } from '@trpc/server';\r\nimport { SecretManagerService } from '../secrets';\r\n\r\n@Service()\r\nexport class MicroServiceDispatcher {\r\n\tprivate _secretService: SecretManagerService;\r\n\r\n\tconstructor(secretService: SecretManagerService) {\r\n\t\tthis._secretService = secretService;\r\n\t}\r\n\r\n\tpublic async getMicroService<T extends AnyRouter>(\r\n\t\tserviceName: string,\r\n\t\tcustomURL?: string,\r\n\t\toptions?: {\r\n\t\t\theaders?: Record<string, string>;\r\n\t\t}\r\n\t) {\r\n\t\tconst deploymentURL =\r\n\t\t\tcustomURL ??\r\n\t\t\t(await this._secretService.getKey(\r\n\t\t\t\t'DEPLOYMENTS_MICROSERVICE_' + serviceName.toUpperCase() + '_ENDPOINT'\r\n\t\t\t));\r\n\r\n\t\tconsole.log(deploymentURL, 'deploymentURL--');\r\n\r\n\t\tif (!deploymentURL) {\r\n\t\t\tthrow new Error('The requested service does not have a configured secret URL');\r\n\t\t}\r\n\r\n\t\t// @ts-ignore\r\n\t\treturn createTRPCProxyClient<T>({\r\n\t\t\tlinks: [\r\n\t\t\t\thttpBatchLink({\r\n\t\t\t\t\turl: deploymentURL,\r\n\t\t\t\t\theaders: async () => options?.headers ?? {},\r\n\t\t\t\t}),\r\n\t\t\t],\r\n\t\t\t//special http request header that has a token\r\n\t\t});\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEvent.js","sourceRoot":"/","sources":["libraries/event/BaseEvent.ts"],"names":[],"mappings":";;;AAAA,MAAsB,SAAS;IACb,QAAQ,CAAS;IACjB,QAAQ,CAAW;IAEpC,YAAsB,OAAe,EAAE,OAAiB;QACvD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD;AAhBD,8BAgBC","sourcesContent":["export abstract class BaseEvent<TPayload extends Record<string, unknown>> {\n\tprivate readonly _eventId: string;\n\tprivate readonly _payload: TPayload;\n\n\tprotected constructor(eventId: string, payload: TPayload) {\n\t\tthis._eventId = eventId;\n\t\tthis._payload = payload;\n\t}\n\n\tget eventId(): string {\n\t\treturn this._eventId;\n\t}\n\n\tget payload(): TPayload {\n\t\treturn this._payload;\n\t}\n}\n"]}
1
+ {"version":3,"file":"BaseEvent.js","sourceRoot":"/","sources":["libraries/event/BaseEvent.ts"],"names":[],"mappings":";;;AAAA,MAAsB,SAAS;IACb,QAAQ,CAAS;IACjB,QAAQ,CAAW;IAEpC,YAAsB,OAAe,EAAE,OAAiB;QACvD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD;AAhBD,8BAgBC","sourcesContent":["export abstract class BaseEvent<TPayload extends Record<string, unknown>> {\r\n\tprivate readonly _eventId: string;\r\n\tprivate readonly _payload: TPayload;\r\n\r\n\tprotected constructor(eventId: string, payload: TPayload) {\r\n\t\tthis._eventId = eventId;\r\n\t\tthis._payload = payload;\r\n\t}\r\n\r\n\tget eventId(): string {\r\n\t\treturn this._eventId;\r\n\t}\r\n\r\n\tget payload(): TPayload {\r\n\t\treturn this._payload;\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"/","sources":["libraries/event/decorators/metadata.ts"],"names":[],"mappings":";;;AA0BA,sCAIC;AAvBD,MAAa,aAAa;IAEjB,MAAM,CAAC,cAAc,GAAqC,EAAE,CAAC;IAE9D,MAAM,CAAC,gBAAgB,CAAC,OAAe,EAAE,QAA0B;QACzE,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,OAAe;QACxC,OAAO,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;;AAVF,sCAWC;AAQD,SAAgB,aAAa,CAAC,OAAe,EAAE,aAA+B,EAAE;IAC/E,OAAO,UAA8D,WAAc;QAClF,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC;AACH,CAAC","sourcesContent":["import { BaseEvent } from '../BaseEvent';\n\nexport interface EventParameter {\n\tname: string;\n\ttype: string;\n}\n\nexport class EventRegistry {\n\t// A static registry that maps an event ID to a list of parameters (metadata).\n\tprivate static eventsMetadata: Record<string, EventParameter[]> = {};\n\n\tpublic static registerMetadata(eventId: string, metadata: EventParameter[]): void {\n\t\tEventRegistry.eventsMetadata[eventId] = metadata;\n\t}\n\n\tpublic static getMetadata(eventId: string): EventParameter[] | undefined {\n\t\treturn EventRegistry.eventsMetadata[eventId];\n\t}\n}\n\n/**\n * Decorator to attach metadata to an event.\n * Example usage:\n * @EventMetadata(\"UserCreated\", [{name: \"userId\", type: \"string\"}])\n * export class UserCreatedEvent extends BaseEvent<{ userId: string }> {}\n */\nexport function EventMetadata(eventId: string, parameters: EventParameter[] = []) {\n\treturn function <T extends { new (...args: any[]): BaseEvent<any> }>(constructor: T) {\n\t\tEventRegistry.registerMetadata(eventId, parameters);\n\t};\n}\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"/","sources":["libraries/event/decorators/metadata.ts"],"names":[],"mappings":";;;AA0BA,sCAIC;AAvBD,MAAa,aAAa;IAEjB,MAAM,CAAC,cAAc,GAAqC,EAAE,CAAC;IAE9D,MAAM,CAAC,gBAAgB,CAAC,OAAe,EAAE,QAA0B;QACzE,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,OAAe;QACxC,OAAO,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;;AAVF,sCAWC;AAQD,SAAgB,aAAa,CAAC,OAAe,EAAE,aAA+B,EAAE;IAC/E,OAAO,UAA8D,WAAc;QAClF,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC;AACH,CAAC","sourcesContent":["import { BaseEvent } from '../BaseEvent';\r\n\r\nexport interface EventParameter {\r\n\tname: string;\r\n\ttype: string;\r\n}\r\n\r\nexport class EventRegistry {\r\n\t// A static registry that maps an event ID to a list of parameters (metadata).\r\n\tprivate static eventsMetadata: Record<string, EventParameter[]> = {};\r\n\r\n\tpublic static registerMetadata(eventId: string, metadata: EventParameter[]): void {\r\n\t\tEventRegistry.eventsMetadata[eventId] = metadata;\r\n\t}\r\n\r\n\tpublic static getMetadata(eventId: string): EventParameter[] | undefined {\r\n\t\treturn EventRegistry.eventsMetadata[eventId];\r\n\t}\r\n}\r\n\r\n/**\r\n * Decorator to attach metadata to an event.\r\n * Example usage:\r\n * @EventMetadata(\"UserCreated\", [{name: \"userId\", type: \"string\"}])\r\n * export class UserCreatedEvent extends BaseEvent<{ userId: string }> {}\r\n */\r\nexport function EventMetadata(eventId: string, parameters: EventParameter[] = []) {\r\n\treturn function <T extends { new (...args: any[]): BaseEvent<any> }>(constructor: T) {\r\n\t\tEventRegistry.registerMetadata(eventId, parameters);\r\n\t};\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"subscribe.js","sourceRoot":"/","sources":["libraries/event/decorators/subscribe.ts"],"names":[],"mappings":";;AAEA,8BAIC;AAND,2EAAwE;AAExE,SAAgB,SAAS,CAAC,OAAe;IACxC,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAChF,2CAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC,CAAC;AACH,CAAC","sourcesContent":["import { SubscriptionRegistry } from '../registry/SubscriptionRegistry';\n\nexport function Subscribe(eventId: string) {\n\treturn function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n\t\tSubscriptionRegistry.register(eventId, target.constructor, propertyKey);\n\t};\n}\n"]}
1
+ {"version":3,"file":"subscribe.js","sourceRoot":"/","sources":["libraries/event/decorators/subscribe.ts"],"names":[],"mappings":";;AAEA,8BAIC;AAND,2EAAwE;AAExE,SAAgB,SAAS,CAAC,OAAe;IACxC,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAChF,2CAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC,CAAC;AACH,CAAC","sourcesContent":["import { SubscriptionRegistry } from '../registry/SubscriptionRegistry';\r\n\r\nexport function Subscribe(eventId: string) {\r\n\treturn function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\r\n\t\tSubscriptionRegistry.register(eventId, target.constructor, propertyKey);\r\n\t};\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/index.ts"],"names":[],"mappings":";;;;;AAQA,oCAOC;AAED,oCAYC;AAED,4CAmCC;AAlED,sDAA2B;AAG3B,IAAI,UAA6B,CAAC;AAClC,IAAI,OAAqB,CAAC;AAE1B,MAAM,aAAa,GAAG,aAAa,CAAC;AAE7B,KAAK,UAAU,YAAY,CAAC,SAAiB;IACnD,UAAU,GAAG,MAAM,iBAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;IAE3C,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAExE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC3D,CAAC;AAEM,KAAK,UAAU,YAAY,CACjC,KAA0B;IAE1B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE;QAC5D,WAAW,EAAE,kBAAkB;KAC/B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,OAAO,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/E,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACrC,OAAe,EACf,SAA0C;IAE1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnF,MAAM,SAAS,GAAG,GAAG,OAAO,QAAQ,CAAC;IAErC,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE;QACpC,OAAO,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAE3D,MAAM,OAAO,CAAC,OAAO,CACpB,SAAS,EACT,KAAK,EAAC,GAAG,EAAC,EAAE;QACX,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACJ,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;gBAEzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;YAEzD,CAAC;QACF,CAAC;IACF,CAAC,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,eAAe,SAAS,GAAG,CAAC,CAAC;AACzE,CAAC","sourcesContent":["import amqp from 'amqplib';\nimport { BaseEvent } from './BaseEvent';\n\nlet connection: amqp.ChannelModel;\nlet channel: amqp.Channel;\n\nconst EXCHANGE_NAME = 'lyxa.events';\n\nexport async function initEventBus(rabbitUrl: string) {\n\tconnection = await amqp.connect(rabbitUrl);\n\tchannel = await connection.createChannel();\n\n\tawait channel.assertExchange(EXCHANGE_NAME, 'topic', { durable: true });\n\n\tconsole.log('EventBus initialized and exchange asserted');\n}\n\nexport async function publishEvent<TPayload extends Record<string, unknown>>(\n\tevent: BaseEvent<TPayload>\n): Promise<void> {\n\tif (!channel) throw new Error('Channel not initialized. Call initEventBus first.');\n\n\tconst messageBuffer = Buffer.from(JSON.stringify(event.payload));\n\n\tchannel.publish(EXCHANGE_NAME, event.eventId, messageBuffer, {\n\t\tcontentType: 'application/json',\n\t});\n\n\tconsole.log(`Published event [${event.eventId}] with payload`, event.payload);\n}\n\nexport async function subscribeToEvent(\n\teventId: string,\n\tonMessage: (payload: any) => Promise<void>\n): Promise<void> {\n\tif (!channel) throw new Error('Channel not initialized. Call initEventBus first.');\n\n\tconst queueName = `${eventId}-queue`;\n\n\tawait channel.assertQueue(queueName, {\n\t\tdurable: true,\n\t});\n\n\tawait channel.bindQueue(queueName, EXCHANGE_NAME, eventId);\n\n\tawait channel.consume(\n\t\tqueueName,\n\t\tasync msg => {\n\t\t\tif (msg !== null) {\n\t\t\t\tconst payloadString = msg.content.toString();\n\t\t\t\tconst payload = JSON.parse(payloadString);\n\n\t\t\t\ttry {\n\t\t\t\t\tawait onMessage(payload);\n\t\t\t\t\t// Acknowledge the message as processed\n\t\t\t\t\tchannel.ack(msg);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(`Error handling event [${eventId}]`, err);\n\t\t\t\t\t// Optional: channel.nack(msg) for requeue\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ noAck: false }\n\t);\n\n\tconsole.log(`Subscribed to event [${eventId}] on queue [${queueName}]`);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/index.ts"],"names":[],"mappings":";;;;;AAQA,oCAOC;AAED,oCAYC;AAED,4CAmCC;AAlED,sDAA2B;AAG3B,IAAI,UAA6B,CAAC;AAClC,IAAI,OAAqB,CAAC;AAE1B,MAAM,aAAa,GAAG,aAAa,CAAC;AAE7B,KAAK,UAAU,YAAY,CAAC,SAAiB;IACnD,UAAU,GAAG,MAAM,iBAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;IAE3C,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAExE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC3D,CAAC;AAEM,KAAK,UAAU,YAAY,CACjC,KAA0B;IAE1B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE;QAC5D,WAAW,EAAE,kBAAkB;KAC/B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,OAAO,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/E,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACrC,OAAe,EACf,SAA0C;IAE1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnF,MAAM,SAAS,GAAG,GAAG,OAAO,QAAQ,CAAC;IAErC,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE;QACpC,OAAO,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAE3D,MAAM,OAAO,CAAC,OAAO,CACpB,SAAS,EACT,KAAK,EAAC,GAAG,EAAC,EAAE;QACX,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACJ,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;gBAEzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;YAEzD,CAAC;QACF,CAAC;IACF,CAAC,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,eAAe,SAAS,GAAG,CAAC,CAAC;AACzE,CAAC","sourcesContent":["import amqp from 'amqplib';\r\nimport { BaseEvent } from './BaseEvent';\r\n\r\nlet connection: amqp.ChannelModel;\r\nlet channel: amqp.Channel;\r\n\r\nconst EXCHANGE_NAME = 'lyxa.events';\r\n\r\nexport async function initEventBus(rabbitUrl: string) {\r\n\tconnection = await amqp.connect(rabbitUrl);\r\n\tchannel = await connection.createChannel();\r\n\r\n\tawait channel.assertExchange(EXCHANGE_NAME, 'topic', { durable: true });\r\n\r\n\tconsole.log('EventBus initialized and exchange asserted');\r\n}\r\n\r\nexport async function publishEvent<TPayload extends Record<string, unknown>>(\r\n\tevent: BaseEvent<TPayload>\r\n): Promise<void> {\r\n\tif (!channel) throw new Error('Channel not initialized. Call initEventBus first.');\r\n\r\n\tconst messageBuffer = Buffer.from(JSON.stringify(event.payload));\r\n\r\n\tchannel.publish(EXCHANGE_NAME, event.eventId, messageBuffer, {\r\n\t\tcontentType: 'application/json',\r\n\t});\r\n\r\n\tconsole.log(`Published event [${event.eventId}] with payload`, event.payload);\r\n}\r\n\r\nexport async function subscribeToEvent(\r\n\teventId: string,\r\n\tonMessage: (payload: any) => Promise<void>\r\n): Promise<void> {\r\n\tif (!channel) throw new Error('Channel not initialized. Call initEventBus first.');\r\n\r\n\tconst queueName = `${eventId}-queue`;\r\n\r\n\tawait channel.assertQueue(queueName, {\r\n\t\tdurable: true,\r\n\t});\r\n\r\n\tawait channel.bindQueue(queueName, EXCHANGE_NAME, eventId);\r\n\r\n\tawait channel.consume(\r\n\t\tqueueName,\r\n\t\tasync msg => {\r\n\t\t\tif (msg !== null) {\r\n\t\t\t\tconst payloadString = msg.content.toString();\r\n\t\t\t\tconst payload = JSON.parse(payloadString);\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tawait onMessage(payload);\r\n\t\t\t\t\t// Acknowledge the message as processed\r\n\t\t\t\t\tchannel.ack(msg);\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(`Error handling event [${eventId}]`, err);\r\n\t\t\t\t\t// Optional: channel.nack(msg) for requeue\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t{ noAck: false }\r\n\t);\r\n\r\n\tconsole.log(`Subscribed to event [${eventId}] on queue [${queueName}]`);\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionRegistry.js","sourceRoot":"/","sources":["libraries/event/registry/SubscriptionRegistry.ts"],"names":[],"mappings":";;;AAMA,MAAa,oBAAoB;IACxB,MAAM,CAAC,aAAa,GAA2B,EAAE,CAAC;IAMnD,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,iBAA2B,EAAE,UAAkB;QACtF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACvB,OAAO;YACP,iBAAiB;YACjB,UAAU;SACV,CAAC,CAAC;IACJ,CAAC;IAMM,MAAM,CAAC,mBAAmB;QAChC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;;AArBF,oDAsBC","sourcesContent":["interface SubscriptionMetadata {\n\teventId: string;\n\ttargetConstructor: Function;\n\tmethodName: string;\n}\n\nexport class SubscriptionRegistry {\n\tprivate static subscriptions: SubscriptionMetadata[] = [];\n\n\t/**\n\t * Called by the decorator to record which class method\n\t * is subscribed to which eventId.\n\t */\n\tpublic static register(eventId: string, targetConstructor: Function, methodName: string) {\n\t\tthis.subscriptions.push({\n\t\t\teventId,\n\t\t\ttargetConstructor,\n\t\t\tmethodName,\n\t\t});\n\t}\n\n\t/**\n\t * Called at bootstrap to retrieve all known subscriptions\n\t * so we can actually wire them up.\n\t */\n\tpublic static getAllSubscriptions(): SubscriptionMetadata[] {\n\t\treturn [...this.subscriptions];\n\t}\n}\n"]}
1
+ {"version":3,"file":"SubscriptionRegistry.js","sourceRoot":"/","sources":["libraries/event/registry/SubscriptionRegistry.ts"],"names":[],"mappings":";;;AAMA,MAAa,oBAAoB;IACxB,MAAM,CAAC,aAAa,GAA2B,EAAE,CAAC;IAMnD,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,iBAA2B,EAAE,UAAkB;QACtF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACvB,OAAO;YACP,iBAAiB;YACjB,UAAU;SACV,CAAC,CAAC;IACJ,CAAC;IAMM,MAAM,CAAC,mBAAmB;QAChC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;;AArBF,oDAsBC","sourcesContent":["interface SubscriptionMetadata {\r\n\teventId: string;\r\n\ttargetConstructor: Function;\r\n\tmethodName: string;\r\n}\r\n\r\nexport class SubscriptionRegistry {\r\n\tprivate static subscriptions: SubscriptionMetadata[] = [];\r\n\r\n\t/**\r\n\t * Called by the decorator to record which class method\r\n\t * is subscribed to which eventId.\r\n\t */\r\n\tpublic static register(eventId: string, targetConstructor: Function, methodName: string) {\r\n\t\tthis.subscriptions.push({\r\n\t\t\teventId,\r\n\t\t\ttargetConstructor,\r\n\t\t\tmethodName,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Called at bootstrap to retrieve all known subscriptions\r\n\t * so we can actually wire them up.\r\n\t */\r\n\tpublic static getAllSubscriptions(): SubscriptionMetadata[] {\r\n\t\treturn [...this.subscriptions];\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCreationEvent.js","sourceRoot":"/","sources":["libraries/event/test/OrderCreationEvent.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyC;AACzC,qDAAuD;AACvD,oCAAwC;AACxC,uDAAoD;AAW7C,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,qBAAmC;IAC1E,YAAY,UAAoC;QAC/C,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;CACD,CAAA;AAJY,gDAAkB;6BAAlB,kBAAkB;IAJ9B,IAAA,wBAAa,EAAC,gBAAgB,EAAE;QAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChC,CAAC;;GACW,kBAAkB,CAI9B;AAED,IAAA,oBAAY,EACX,IAAI,kBAAkB,CAAC;IACtB,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;CACR,CAAC,CACF,CAAC;AAEF,MAAa,gBAAgB;IAErB,4BAA4B,CAAC,UAAmC;QACtE,UAAU,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;CACD;AALD,4CAKC;AAHO;IADN,IAAA,qBAAS,EAAC,gBAAgB,CAAC;;;;oEAG3B","sourcesContent":["import { BaseEvent } from '../BaseEvent';\nimport { EventMetadata } from '../decorators/metadata';\nimport { publishEvent } from '../index';\nimport { Subscribe } from '../decorators/subscribe';\n\nexport type OrderCreationEventParams = {\n\tuser: string;\n\tshop: string;\n};\n\n@EventMetadata('order.creation', [\n\t{ name: 'user', type: 'string' },\n\t{ name: 'shop', type: 'string' },\n])\nexport class OrderCreationEvent extends BaseEvent<OrderCreationEventParams> {\n\tconstructor(parameters: OrderCreationEventParams) {\n\t\tsuper('order.creation', parameters);\n\t}\n}\n\npublishEvent(\n\tnew OrderCreationEvent({\n\t\tuser: '',\n\t\tshop: '',\n\t})\n);\n\nexport class OrderListenEvent {\n\t@Subscribe('order.creation')\n\tpublic doSomethingWithOrderCreation(parameters: Record<string, unknown>) {\n\t\tparameters[''];\n\t}\n}\n"]}
1
+ {"version":3,"file":"OrderCreationEvent.js","sourceRoot":"/","sources":["libraries/event/test/OrderCreationEvent.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyC;AACzC,qDAAuD;AACvD,oCAAwC;AACxC,uDAAoD;AAY7C,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,qBAAmC;IAC1E,YAAY,UAAoC;QAC/C,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;CACD,CAAA;AAJY,gDAAkB;6BAAlB,kBAAkB;IAJ9B,IAAA,wBAAa,EAAC,gBAAgB,EAAE;QAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChC,CAAC;;GACW,kBAAkB,CAI9B;AAED,IAAA,oBAAY,EACX,IAAI,kBAAkB,CAAC;IACtB,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;CACR,CAAC,CACF,CAAC;AAGF,MAAa,gBAAgB;IAErB,4BAA4B,CAAC,UAAmC;QACtE,UAAU,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;CACD;AALD,4CAKC;AAHO;IADN,IAAA,qBAAS,EAAC,gBAAgB,CAAC;;;;oEAG3B","sourcesContent":["import { BaseEvent } from '../BaseEvent';\r\nimport { EventMetadata } from '../decorators/metadata';\r\nimport { publishEvent } from '../index';\r\nimport { Subscribe } from '../decorators/subscribe';\r\n\r\nexport type OrderCreationEventParams = {\r\n\tuser: string;\r\n\tshop: string;\r\n};\r\n\r\n// MIC-1\r\n@EventMetadata('order.creation', [\r\n\t{ name: 'user', type: 'string' },\r\n\t{ name: 'shop', type: 'string' },\r\n])\r\nexport class OrderCreationEvent extends BaseEvent<OrderCreationEventParams> {\r\n\tconstructor(parameters: OrderCreationEventParams) {\r\n\t\tsuper('order.creation', parameters);\r\n\t}\r\n}\r\n\r\npublishEvent(\r\n\tnew OrderCreationEvent({\r\n\t\tuser: '',\r\n\t\tshop: '',\r\n\t})\r\n);\r\n\r\n// MIC-2\r\nexport class OrderListenEvent {\r\n\t@Subscribe('order.creation')\r\n\tpublic doSomethingWithOrderCreation(parameters: Record<string, unknown>) {\r\n\t\tparameters[''];\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fcmService.js","sourceRoot":"/","sources":["libraries/firebase/fcmService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA2C;AAC3C,6BAAqC;AACrC,mCAAiC;AAU1B,IAAM,UAAU,GAAhB,MAAM,UAAU;IACd,SAAS,CAAuB;IAExC,YAAY,GAAS;QACpB,MAAM,WAAW,GAAG,GAAG,IAAI,IAAA,gBAAY,GAAE,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,IAAA,0BAAS,EAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAQD,KAAK,CAAC,gBAAgB,CACrB,OAA+B,EAC/B,MAAgB;QAEhB,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAEnE,MAAM,OAAO,GAAG;YACf,YAAY,EAAE;gBACb,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;aAClB;YACD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACxB,MAAM;SACN,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAEpE,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACxC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACP,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;oBACnC,IACC,SAAS,KAAK,4BAA4B;wBAC1C,SAAS,KAAK,6CAA6C,EAC1D,CAAC;wBACF,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChC,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC1E,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;CACD,CAAA;AAxDY,gCAAU;qBAAV,UAAU;IADtB,IAAA,gBAAO,GAAE;;GACG,UAAU,CAwDtB","sourcesContent":["import { messaging } from 'firebase-admin';\nimport { getLibraries } from '../..';\nimport { Service } from 'typedi';\nimport { App } from 'firebase-admin/app';\n\nexport interface FCMNotificationPayload {\n\ttitle: string;\n\tbody: string;\n\tdata?: Record<string, string>;\n}\n\n@Service()\nexport class FCMService {\n\tprivate messaging!: messaging.Messaging;\n\n\tconstructor(app?: App) {\n\t\tconst firebaseApp = app ?? getLibraries().getFirebaseService().superApp;\n\t\tthis.messaging = messaging(firebaseApp);\n\t}\n\n\t/**\n\t * Sends a push notification to multiple device tokens\n\t * @param payload - Notification title, body, and optional data\n\t * @param tokens - FCM device tokens\n\t * @returns Object containing success and invalid tokens\n\t */\n\tasync sendNotification(\n\t\tpayload: FCMNotificationPayload,\n\t\ttokens: string[]\n\t): Promise<{ successTokens: string[]; failedTokens: string[] }> {\n\t\tif (!tokens.length) return { successTokens: [], failedTokens: [] };\n\n\t\tconst message = {\n\t\t\tnotification: {\n\t\t\t\ttitle: payload.title,\n\t\t\t\tbody: payload.body,\n\t\t\t},\n\t\t\tdata: payload.data || {},\n\t\t\ttokens,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this.messaging.sendEachForMulticast(message);\n\n\t\t\tconst successTokens: string[] = [];\n\t\t\tconst failedTokens: string[] = [];\n\n\t\t\tresponse.responses.forEach((resp, idx) => {\n\t\t\t\tif (resp.success) {\n\t\t\t\t\tsuccessTokens.push(tokens[idx]);\n\t\t\t\t} else {\n\t\t\t\t\tconst errorCode = resp.error?.code;\n\t\t\t\t\tif (\n\t\t\t\t\t\terrorCode === 'messaging/invalid-argument' ||\n\t\t\t\t\t\terrorCode === 'messaging/registration-token-not-registered'\n\t\t\t\t\t) {\n\t\t\t\t\t\tfailedTokens.push(tokens[idx]);\n\t\t\t\t\t}\n\t\t\t\t\tconsole.warn(`FCM Error for token ${tokens[idx]}:`, resp.error?.message);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn { successTokens, failedTokens };\n\t\t} catch (err) {\n\t\t\tconsole.error('FCM sendNotification error:', err);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"fcmService.js","sourceRoot":"/","sources":["libraries/firebase/fcmService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA2C;AAC3C,6BAAqC;AACrC,mCAAiC;AAU1B,IAAM,UAAU,GAAhB,MAAM,UAAU;IACd,SAAS,CAAuB;IAExC,YAAY,GAAS;QACpB,MAAM,WAAW,GAAG,GAAG,IAAI,IAAA,gBAAY,GAAE,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,IAAA,0BAAS,EAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAQD,KAAK,CAAC,gBAAgB,CACrB,OAA+B,EAC/B,MAAgB;QAEhB,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAEnE,MAAM,OAAO,GAAG;YACf,YAAY,EAAE;gBACb,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;aAClB;YACD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACxB,MAAM;SACN,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAEpE,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACxC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACP,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;oBACnC,IACC,SAAS,KAAK,4BAA4B;wBAC1C,SAAS,KAAK,6CAA6C,EAC1D,CAAC;wBACF,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChC,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC1E,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;CACD,CAAA;AAxDY,gCAAU;qBAAV,UAAU;IADtB,IAAA,gBAAO,GAAE;;GACG,UAAU,CAwDtB","sourcesContent":["import { messaging } from 'firebase-admin';\r\nimport { getLibraries } from '../..';\r\nimport { Service } from 'typedi';\r\nimport { App } from 'firebase-admin/app';\r\n\r\nexport interface FCMNotificationPayload {\r\n\ttitle: string;\r\n\tbody: string;\r\n\tdata?: Record<string, string>;\r\n}\r\n\r\n@Service()\r\nexport class FCMService {\r\n\tprivate messaging!: messaging.Messaging;\r\n\r\n\tconstructor(app?: App) {\r\n\t\tconst firebaseApp = app ?? getLibraries().getFirebaseService().superApp;\r\n\t\tthis.messaging = messaging(firebaseApp);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends a push notification to multiple device tokens\r\n\t * @param payload - Notification title, body, and optional data\r\n\t * @param tokens - FCM device tokens\r\n\t * @returns Object containing success and invalid tokens\r\n\t */\r\n\tasync sendNotification(\r\n\t\tpayload: FCMNotificationPayload,\r\n\t\ttokens: string[]\r\n\t): Promise<{ successTokens: string[]; failedTokens: string[] }> {\r\n\t\tif (!tokens.length) return { successTokens: [], failedTokens: [] };\r\n\r\n\t\tconst message = {\r\n\t\t\tnotification: {\r\n\t\t\t\ttitle: payload.title,\r\n\t\t\t\tbody: payload.body,\r\n\t\t\t},\r\n\t\t\tdata: payload.data || {},\r\n\t\t\ttokens,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await this.messaging.sendEachForMulticast(message);\r\n\r\n\t\t\tconst successTokens: string[] = [];\r\n\t\t\tconst failedTokens: string[] = [];\r\n\r\n\t\t\tresponse.responses.forEach((resp, idx) => {\r\n\t\t\t\tif (resp.success) {\r\n\t\t\t\t\tsuccessTokens.push(tokens[idx]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst errorCode = resp.error?.code;\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\terrorCode === 'messaging/invalid-argument' ||\r\n\t\t\t\t\t\terrorCode === 'messaging/registration-token-not-registered'\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tfailedTokens.push(tokens[idx]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconsole.warn(`FCM Error for token ${tokens[idx]}:`, resp.error?.message);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn { successTokens, failedTokens };\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error('FCM sendNotification error:', err);\r\n\t\t\tthrow err;\r\n\t\t}\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/firebase/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AACxC,mCAAiC;AAEjC,oDAAwD;AACxD,uCAAiC;AAEjC,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,cAAc,CAAC;AAG9E,IAAM,eAAe,GAArB,MAAM,eAAe;IAMP;IALH,SAAS,CAAgB;IACzB,QAAQ,CAAgB;IACxB,QAAQ,CAAgB;IACxB,SAAS,CAAgB;IAE1C,YAAoB,aAAmC;QAAnC,kBAAa,GAAb,aAAa,CAAsB;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAE1C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,gBAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;QAEvE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CACnC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA6C,CAAC;YAC5F,aAAa,EAAE,sBAAsB;SACrC,EACD,WAAW,CAAC,oBAAoB,IAAI,WAAW,CAC/C,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAClC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA6C,CAAC;YACrF,aAAa,EAAE,sBAAsB;SACrC,EACD,IAAI,CAAC,oBAAoB,IAAI,UAAU,CACvC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAClC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA6C,CAAC;YACrF,aAAa,EAAE,sBAAsB;SACrC,EACD,IAAI,CAAC,oBAAoB,IAAI,UAAU,CACvC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CACnC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA6C,CAAC;YACtF,aAAa,EAAE,sBAAsB;SACrC,EACD,KAAK,CAAC,oBAAoB,IAAI,WAAW,CACzC,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACD,CAAA;AA/DY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,gBAAO,GAAE;qCAO0B,oCAAoB;GAN3C,eAAe,CA+D3B","sourcesContent":["import * as admin from 'firebase-admin';\nimport { Service } from 'typedi';\nimport { ServiceAccount } from 'firebase-admin';\nimport { ConfigurationService } from '../configuration';\nimport { Error } from 'mongoose';\n\nconst DEFAULT_STORAGE_BUCKET = process.env.FIREBASE_STORAGE_BUCKET || 'lyxa-default';\n\n@Service()\nexport class FirebaseService {\n\tprivate readonly _superApp: admin.app.App;\n\tprivate readonly _userApp: admin.app.App;\n\tprivate readonly _shopApp: admin.app.App;\n\tprivate readonly _riderApp: admin.app.App;\n\n\tconstructor(private configService: ConfigurationService) {\n\t\tconst config = this.configService.options;\n\n\t\tif (!config.firebaseAdmin) {\n\t\t\tthrow new Error('Firebase Admin configuration is missing.');\n\t\t}\n\n\t\tconst { super: superConfig, user, shop, rider } = config.firebaseAdmin;\n\n\t\tthis._superApp = admin.initializeApp(\n\t\t\t{\n\t\t\t\tcredential: admin.credential.cert(superConfig.firebaseAdminServiceAccount as ServiceAccount),\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\n\t\t\t},\n\t\t\tsuperConfig.firebaseAdminAppName || 'super-app'\n\t\t);\n\n\t\tthis._userApp = admin.initializeApp(\n\t\t\t{\n\t\t\t\tcredential: admin.credential.cert(user.firebaseAdminServiceAccount as ServiceAccount),\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\n\t\t\t},\n\t\t\tuser.firebaseAdminAppName || 'user-app'\n\t\t);\n\n\t\tthis._shopApp = admin.initializeApp(\n\t\t\t{\n\t\t\t\tcredential: admin.credential.cert(shop.firebaseAdminServiceAccount as ServiceAccount),\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\n\t\t\t},\n\t\t\tshop.firebaseAdminAppName || 'shop-app'\n\t\t);\n\n\t\tthis._riderApp = admin.initializeApp(\n\t\t\t{\n\t\t\t\tcredential: admin.credential.cert(rider.firebaseAdminServiceAccount as ServiceAccount),\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\n\t\t\t},\n\t\t\trider.firebaseAdminAppName || 'rider-app'\n\t\t);\n\t}\n\n\tget superApp(): admin.app.App {\n\t\treturn this._superApp;\n\t}\n\n\tget userApp(): admin.app.App {\n\t\treturn this._userApp;\n\t}\n\n\tget shopApp(): admin.app.App {\n\t\treturn this._shopApp;\n\t}\n\n\tget riderApp(): admin.app.App {\n\t\treturn this._riderApp;\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/firebase/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AACxC,mCAAiC;AAEjC,oDAAwD;AACxD,uCAAiC;AAEjC,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,cAAc,CAAC;AAG9E,IAAM,eAAe,GAArB,MAAM,eAAe;IAMP;IALH,SAAS,CAAgB;IACzB,QAAQ,CAAgB;IACxB,QAAQ,CAAgB;IACxB,SAAS,CAAgB;IAE1C,YAAoB,aAAmC;QAAnC,kBAAa,GAAb,aAAa,CAAsB;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAE1C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,gBAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;QAEvE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CACnC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA6C,CAAC;YAC5F,aAAa,EAAE,sBAAsB;SACrC,EACD,WAAW,CAAC,oBAAoB,IAAI,WAAW,CAC/C,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAClC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA6C,CAAC;YACrF,aAAa,EAAE,sBAAsB;SACrC,EACD,IAAI,CAAC,oBAAoB,IAAI,UAAU,CACvC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAClC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA6C,CAAC;YACrF,aAAa,EAAE,sBAAsB;SACrC,EACD,IAAI,CAAC,oBAAoB,IAAI,UAAU,CACvC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CACnC;YACC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA6C,CAAC;YACtF,aAAa,EAAE,sBAAsB;SACrC,EACD,KAAK,CAAC,oBAAoB,IAAI,WAAW,CACzC,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACD,CAAA;AA/DY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,gBAAO,GAAE;qCAO0B,oCAAoB;GAN3C,eAAe,CA+D3B","sourcesContent":["import * as admin from 'firebase-admin';\r\nimport { Service } from 'typedi';\r\nimport { ServiceAccount } from 'firebase-admin';\r\nimport { ConfigurationService } from '../configuration';\r\nimport { Error } from 'mongoose';\r\n\r\nconst DEFAULT_STORAGE_BUCKET = process.env.FIREBASE_STORAGE_BUCKET || 'lyxa-default';\r\n\r\n@Service()\r\nexport class FirebaseService {\r\n\tprivate readonly _superApp: admin.app.App;\r\n\tprivate readonly _userApp: admin.app.App;\r\n\tprivate readonly _shopApp: admin.app.App;\r\n\tprivate readonly _riderApp: admin.app.App;\r\n\r\n\tconstructor(private configService: ConfigurationService) {\r\n\t\tconst config = this.configService.options;\r\n\r\n\t\tif (!config.firebaseAdmin) {\r\n\t\t\tthrow new Error('Firebase Admin configuration is missing.');\r\n\t\t}\r\n\r\n\t\tconst { super: superConfig, user, shop, rider } = config.firebaseAdmin;\r\n\r\n\t\tthis._superApp = admin.initializeApp(\r\n\t\t\t{\r\n\t\t\t\tcredential: admin.credential.cert(superConfig.firebaseAdminServiceAccount as ServiceAccount),\r\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\r\n\t\t\t},\r\n\t\t\tsuperConfig.firebaseAdminAppName || 'super-app'\r\n\t\t);\r\n\r\n\t\tthis._userApp = admin.initializeApp(\r\n\t\t\t{\r\n\t\t\t\tcredential: admin.credential.cert(user.firebaseAdminServiceAccount as ServiceAccount),\r\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\r\n\t\t\t},\r\n\t\t\tuser.firebaseAdminAppName || 'user-app'\r\n\t\t);\r\n\r\n\t\tthis._shopApp = admin.initializeApp(\r\n\t\t\t{\r\n\t\t\t\tcredential: admin.credential.cert(shop.firebaseAdminServiceAccount as ServiceAccount),\r\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\r\n\t\t\t},\r\n\t\t\tshop.firebaseAdminAppName || 'shop-app'\r\n\t\t);\r\n\r\n\t\tthis._riderApp = admin.initializeApp(\r\n\t\t\t{\r\n\t\t\t\tcredential: admin.credential.cert(rider.firebaseAdminServiceAccount as ServiceAccount),\r\n\t\t\t\tstorageBucket: DEFAULT_STORAGE_BUCKET,\r\n\t\t\t},\r\n\t\t\trider.firebaseAdminAppName || 'rider-app'\r\n\t\t);\r\n\t}\r\n\r\n\tget superApp(): admin.app.App {\r\n\t\treturn this._superApp;\r\n\t}\r\n\r\n\tget userApp(): admin.app.App {\r\n\t\treturn this._userApp;\r\n\t}\r\n\r\n\tget shopApp(): admin.app.App {\r\n\t\treturn this._shopApp;\r\n\t}\r\n\r\n\tget riderApp(): admin.app.App {\r\n\t\treturn this._riderApp;\r\n\t}\r\n}\r\n"]}
@@ -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,sDAAmD;AAG5C,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;CACD,CAAA;AAxCY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,gBAAO,GAAE;GACG,cAAc,CAwC1B","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 } from './firebase/fcmService';\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}\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,sDAAmD;AAG5C,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;CACD,CAAA;AAxCY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,gBAAO,GAAE;GACG,cAAc,CAwC1B","sourcesContent":["import { Container, Service } from 'typedi';\r\nimport { TwilioService } from './twilio';\r\nimport { LyxaLogger } from './logger';\r\nimport { MicroServiceDispatcher } from './dispatcher';\r\nimport { SecretManagerService } from './secrets';\r\nimport { RedisService } from './redis';\r\nimport { ConfigurationService } from './configuration';\r\nimport { UploadService } from './upload';\r\nimport { FirebaseService } from './firebase';\r\nimport { TokenRepository } from './auth/repository';\r\nimport { MapService } from './map';\r\nimport { CachedSettingsService } from './cache/settings';\r\nimport { FCMService } from './firebase/fcmService';\r\n\r\n@Service()\r\nexport class LibraryManager {\r\n\tpublic getLogger(): LyxaLogger {\r\n\t\treturn Container.get(LyxaLogger);\r\n\t}\r\n\tpublic getMicroServiceDispatcher(): MicroServiceDispatcher {\r\n\t\treturn Container.get(MicroServiceDispatcher);\r\n\t}\r\n\tpublic getTwilioService(): TwilioService {\r\n\t\treturn Container.get(TwilioService);\r\n\t}\r\n\tpublic getSecretsService(): SecretManagerService {\r\n\t\treturn Container.get(SecretManagerService);\r\n\t}\r\n\tpublic getRedisService(): RedisService {\r\n\t\treturn Container.get(RedisService);\r\n\t}\r\n\tpublic getConfigurationService(): ConfigurationService {\r\n\t\treturn Container.get(ConfigurationService);\r\n\t}\r\n\tpublic getFirebaseService(): FirebaseService {\r\n\t\treturn Container.get(FirebaseService);\r\n\t}\r\n\tpublic getAuthTokenRepository(): TokenRepository {\r\n\t\treturn Container.get(TokenRepository);\r\n\t}\r\n\tpublic getGlobalUploadService(): UploadService {\r\n\t\treturn new UploadService();\r\n\t}\r\n\tpublic getTenetUploadService(): UploadService {\r\n\t\treturn new UploadService('lyxa-' + this.getConfigurationService().options.tenet);\r\n\t}\r\n\tpublic getMapService(): MapService {\r\n\t\treturn Container.get(MapService);\r\n\t}\r\n\tpublic getCachedSettingsService(): CachedSettingsService {\r\n\t\treturn Container.get(CachedSettingsService);\r\n\t}\r\n\tpublic getFCMService(): FCMService {\r\n\t\treturn Container.get(FCMService);\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/logger/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,+BAAoC;AACpC,mCAAiC;AAG1B,IAAM,UAAU,GAAhB,MAAM,UAAU;IACL,OAAO,CAAS;IAChB,YAAY,CAAS;IAEtC,YAAY,UAAkB,EAAE,QAAgB;QAC/C,IAAI,CAAC,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAG,WAAI,CAAC,SAAS,CAAC;YACjC,OAAO,EAAE;gBACR;oBACC,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE;wBACR,QAAQ,EAAE,IAAI;qBACd;oBACD,KAAK,EAAE,MAAM;iBACb;gBACD;oBACC,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE;wBACR,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;qBACtD;oBACD,KAAK,EAAE,OAAO;iBACd;gBACD;oBACC,MAAM,EAAE,cAAc;oBACtB,OAAO,EAAE;wBACR,GAAG,EAAE,QAAQ;wBACb,QAAQ,EAAE,WAAW;wBACrB,UAAU,EAAE,UAAU;qBACtB;oBACD,KAAK,EAAE,OAAO;iBACd;aACD;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAA,WAAI,EAClB;YACC,KAAK,EAAE,MAAM;SACb,EACD,UAAU,CACV,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC/B,IAAI,CAAC;YACJ,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;CACD,CAAA;AAxDY,gCAAU;qBAAV,UAAU;IADtB,IAAA,gBAAO,GAAE;;GACG,UAAU,CAwDtB","sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { pino, Logger } from 'pino';\nimport { Service } from 'typedi';\n\n@Service()\nexport class LyxaLogger {\n\tprivate readonly _logger: Logger;\n\tprivate readonly logDirectory: string;\n\n\tconstructor(identifier: string, mongoURI: string) {\n\t\tthis.logDirectory = path.join(process.cwd(), 'logs');\n\n\t\tthis.ensureLogDirectoryExists();\n\n\t\tconst transports = pino.transport({\n\t\t\ttargets: [\n\t\t\t\t{\n\t\t\t\t\ttarget: 'pino-pretty',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tcolorize: true,\n\t\t\t\t\t},\n\t\t\t\t\tlevel: 'info',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttarget: 'pino/file',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tdestination: path.join(this.logDirectory, 'error.log'),\n\t\t\t\t\t},\n\t\t\t\t\tlevel: 'error',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttarget: 'pino-mongodb',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\turi: mongoURI,\n\t\t\t\t\t\tdatabase: 'lyxa-logs',\n\t\t\t\t\t\tcollection: identifier,\n\t\t\t\t\t},\n\t\t\t\t\tlevel: 'error',\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tthis._logger = pino(\n\t\t\t{\n\t\t\t\tlevel: 'info',\n\t\t\t},\n\t\t\ttransports\n\t\t);\n\t}\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\tget logger(): Logger {\n\t\treturn this._logger;\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/logger/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,+BAAoC;AACpC,mCAAiC;AAG1B,IAAM,UAAU,GAAhB,MAAM,UAAU;IACL,OAAO,CAAS;IAChB,YAAY,CAAS;IAEtC,YAAY,UAAkB,EAAE,QAAgB;QAC/C,IAAI,CAAC,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAG,WAAI,CAAC,SAAS,CAAC;YACjC,OAAO,EAAE;gBACR;oBACC,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE;wBACR,QAAQ,EAAE,IAAI;qBACd;oBACD,KAAK,EAAE,MAAM;iBACb;gBACD;oBACC,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE;wBACR,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;qBACtD;oBACD,KAAK,EAAE,OAAO;iBACd;gBACD;oBACC,MAAM,EAAE,cAAc;oBACtB,OAAO,EAAE;wBACR,GAAG,EAAE,QAAQ;wBACb,QAAQ,EAAE,WAAW;wBACrB,UAAU,EAAE,UAAU;qBACtB;oBACD,KAAK,EAAE,OAAO;iBACd;aACD;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAA,WAAI,EAClB;YACC,KAAK,EAAE,MAAM;SACb,EACD,UAAU,CACV,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC/B,IAAI,CAAC;YACJ,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;CACD,CAAA;AAxDY,gCAAU;qBAAV,UAAU;IADtB,IAAA,gBAAO,GAAE;;GACG,UAAU,CAwDtB","sourcesContent":["import fs from 'fs';\r\nimport path from 'path';\r\nimport { pino, Logger } from 'pino';\r\nimport { Service } from 'typedi';\r\n\r\n@Service()\r\nexport class LyxaLogger {\r\n\tprivate readonly _logger: Logger;\r\n\tprivate readonly logDirectory: string;\r\n\r\n\tconstructor(identifier: string, mongoURI: string) {\r\n\t\tthis.logDirectory = path.join(process.cwd(), 'logs');\r\n\r\n\t\tthis.ensureLogDirectoryExists();\r\n\r\n\t\tconst transports = pino.transport({\r\n\t\t\ttargets: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttarget: 'pino-pretty',\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tcolorize: true,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlevel: 'info',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttarget: 'pino/file',\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tdestination: path.join(this.logDirectory, 'error.log'),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlevel: 'error',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttarget: 'pino-mongodb',\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\turi: mongoURI,\r\n\t\t\t\t\t\tdatabase: 'lyxa-logs',\r\n\t\t\t\t\t\tcollection: identifier,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlevel: 'error',\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\r\n\t\tthis._logger = pino(\r\n\t\t\t{\r\n\t\t\t\tlevel: 'info',\r\n\t\t\t},\r\n\t\t\ttransports\r\n\t\t);\r\n\t}\r\n\r\n\tprivate ensureLogDirectoryExists(): void {\r\n\t\ttry {\r\n\t\t\tfs.mkdirSync(this.logDirectory, { recursive: true });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Failed to create log directory:', error);\r\n\t\t}\r\n\t}\r\n\r\n\tget logger(): Logger {\r\n\t\treturn this._logger;\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/map/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,8CAA4B","sourcesContent":["export * from './mapService';\nexport * from './providers';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/map/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,8CAA4B","sourcesContent":["export * from './mapService';\r\nexport * from './providers';\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IMapService.js","sourceRoot":"/","sources":["libraries/map/interfaces/IMapService.ts"],"names":[],"mappings":"","sourcesContent":["export interface ICoordinate {\n\tlongitude: number;\n\tlatitude: number;\n}\n\nexport interface IDistance {\n\tvalue: number;\n\ttext: string;\n}\n\nexport interface IDuration {\n\tvalue: number;\n\ttext: string;\n}\n\nexport interface ILeg {\n\tdistance: IDistance;\n\tduration: IDuration;\n\toverviewPolyline: Array<[number, number]>;\n}\n\nexport interface IDistanceInfo {\n\tdistance: IDistance;\n\tduration: IDuration;\n}\n\nexport interface IWaypointDistanceInfo {\n\tdistance: IDistance;\n\tduration: IDuration;\n\tlegs: Array<ILeg>;\n\toverviewPolyline: Array<[number, number]>;\n}\n\nexport interface IMapService {\n\n\tgetDistanceInfo(origin: ICoordinate, destination: ICoordinate): Promise<IDistanceInfo>;\n\n\tgetWaypointsDistanceInfo(\n\t\torigin: ICoordinate,\n\t\tdestination: ICoordinate,\n\t\twaypoints: Array<ICoordinate>\n\t): Promise<IWaypointDistanceInfo>;\n}\n"]}
1
+ {"version":3,"file":"IMapService.js","sourceRoot":"/","sources":["libraries/map/interfaces/IMapService.ts"],"names":[],"mappings":"","sourcesContent":["export interface ICoordinate {\r\n\tlongitude: number;\r\n\tlatitude: number;\r\n}\r\n\r\nexport interface IDistance {\r\n\tvalue: number;\r\n\ttext: string;\r\n}\r\n\r\nexport interface IDuration {\r\n\tvalue: number;\r\n\ttext: string;\r\n}\r\n\r\nexport interface ILeg {\r\n\tdistance: IDistance;\r\n\tduration: IDuration;\r\n\toverviewPolyline: Array<[number, number]>;\r\n}\r\n\r\nexport interface IDistanceInfo {\r\n\tdistance: IDistance;\r\n\tduration: IDuration;\r\n}\r\n\r\nexport interface IWaypointDistanceInfo {\r\n\tdistance: IDistance;\r\n\tduration: IDuration;\r\n\tlegs: Array<ILeg>;\r\n\toverviewPolyline: Array<[number, number]>;\r\n}\r\n\r\nexport interface IMapService {\r\n\r\n\tgetDistanceInfo(origin: ICoordinate, destination: ICoordinate): Promise<IDistanceInfo>;\r\n\r\n\tgetWaypointsDistanceInfo(\r\n\t\torigin: ICoordinate,\r\n\t\tdestination: ICoordinate,\r\n\t\twaypoints: Array<ICoordinate>\r\n\t): Promise<IWaypointDistanceInfo>;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mapService.js","sourceRoot":"/","sources":["libraries/map/mapService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAiC;AAI1B,IAAM,UAAU,GAAhB,MAAM,UAAU;IACF;IAApB,YAAoB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAUrC,mCAAmC,CAAC,MAAwB,EAAE,MAAwB;QAC5F,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;QAG5B,MAAM,CAAC,GAAG,IAAI,CAAC;QAGf,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAE7C,MAAM,CAAC,GACN,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IASD,KAAK,CAAC,eAAe,CAAC,MAAmB,EAAE,WAAwB;QAClE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;IAUD,KAAK,CAAC,wBAAwB,CAC7B,MAAmB,EACnB,WAAwB,EACxB,SAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;CACD,CAAA;AA5DY,gCAAU;qBAAV,UAAU;IADtB,IAAA,gBAAO,GAAE;;GACG,UAAU,CA4DtB","sourcesContent":["import { Service } from 'typedi';\nimport { IMapService, ICoordinate, IDistanceInfo, IWaypointDistanceInfo } from './interfaces/IMapService';\n\n@Service()\nexport class MapService {\n\tconstructor(private service: IMapService) {}\n\n\t/**\n\t * Calculates the distance between two coordinates in kilometers\n\t * using the Haversine formula\n\t *\n\t * @param coord1 - First coordinate [latitude, longitude]\n\t * @param coord2 - Second coordinate [latitude, longitude]\n\t * @returns Distance in kilometers\n\t */\n\tpublic calculateDistanceBetweenCoordinates(coord1: [number, number], coord2: [number, number]): number {\n\t\tconst [lat1, lon1] = coord1;\n\t\tconst [lat2, lon2] = coord2;\n\n\t\t// Earth radius in kilometers\n\t\tconst R = 6371;\n\n\t\t// Convert degrees to radians\n\t\tconst dLat = ((lat2 - lat1) * Math.PI) / 180;\n\t\tconst dLon = ((lon2 - lon1) * Math.PI) / 180;\n\n\t\tconst a =\n\t\t\tMath.sin(dLat / 2) * Math.sin(dLat / 2) +\n\t\t\tMath.cos((lat1 * Math.PI) / 180) *\n\t\t\t\tMath.cos((lat2 * Math.PI) / 180) *\n\t\t\t\tMath.sin(dLon / 2) *\n\t\t\t\tMath.sin(dLon / 2);\n\n\t\tconst c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\n\t\treturn R * c;\n\t}\n\n\t/**\n\t * Get the distance and driving duration between two locations\n\t *\n\t * @param origin - Origin coordinate\n\t * @param destination - Destination coordinate\n\t * @returns Distance and duration\n\t */\n\tasync getDistanceInfo(origin: ICoordinate, destination: ICoordinate): Promise<IDistanceInfo> {\n\t\treturn await this.service.getDistanceInfo(origin, destination);\n\t}\n\n\t/**\n\t * Get the distance and driving duration between two locations\n\t *\n\t * @param origin - Origin coordinate\n\t * @param destination - Destination coordinate\n\t * @param waypoints - Coordinates of intermediary waypoints\n\t * @returns Distance, duration, and polyline of each leg and the whole journey\n\t */\n\tasync getWaypointsDistanceInfo(\n\t\torigin: ICoordinate,\n\t\tdestination: ICoordinate,\n\t\twaypoints: Array<ICoordinate>\n\t): Promise<IWaypointDistanceInfo> {\n\t\treturn await this.service.getWaypointsDistanceInfo(origin, destination, waypoints);\n\t}\n}\n"]}
1
+ {"version":3,"file":"mapService.js","sourceRoot":"/","sources":["libraries/map/mapService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAiC;AAI1B,IAAM,UAAU,GAAhB,MAAM,UAAU;IACF;IAApB,YAAoB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAUrC,mCAAmC,CAAC,MAAwB,EAAE,MAAwB;QAC5F,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;QAG5B,MAAM,CAAC,GAAG,IAAI,CAAC;QAGf,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAE7C,MAAM,CAAC,GACN,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAErB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IASD,KAAK,CAAC,eAAe,CAAC,MAAmB,EAAE,WAAwB;QAClE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;IAUD,KAAK,CAAC,wBAAwB,CAC7B,MAAmB,EACnB,WAAwB,EACxB,SAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;CACD,CAAA;AA5DY,gCAAU;qBAAV,UAAU;IADtB,IAAA,gBAAO,GAAE;;GACG,UAAU,CA4DtB","sourcesContent":["import { Service } from 'typedi';\r\nimport { IMapService, ICoordinate, IDistanceInfo, IWaypointDistanceInfo } from './interfaces/IMapService';\r\n\r\n@Service()\r\nexport class MapService {\r\n\tconstructor(private service: IMapService) {}\r\n\r\n\t/**\r\n\t * Calculates the distance between two coordinates in kilometers\r\n\t * using the Haversine formula\r\n\t *\r\n\t * @param coord1 - First coordinate [latitude, longitude]\r\n\t * @param coord2 - Second coordinate [latitude, longitude]\r\n\t * @returns Distance in kilometers\r\n\t */\r\n\tpublic calculateDistanceBetweenCoordinates(coord1: [number, number], coord2: [number, number]): number {\r\n\t\tconst [lat1, lon1] = coord1;\r\n\t\tconst [lat2, lon2] = coord2;\r\n\r\n\t\t// Earth radius in kilometers\r\n\t\tconst R = 6371;\r\n\r\n\t\t// Convert degrees to radians\r\n\t\tconst dLat = ((lat2 - lat1) * Math.PI) / 180;\r\n\t\tconst dLon = ((lon2 - lon1) * Math.PI) / 180;\r\n\r\n\t\tconst a =\r\n\t\t\tMath.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n\t\t\tMath.cos((lat1 * Math.PI) / 180) *\r\n\t\t\t\tMath.cos((lat2 * Math.PI) / 180) *\r\n\t\t\t\tMath.sin(dLon / 2) *\r\n\t\t\t\tMath.sin(dLon / 2);\r\n\r\n\t\tconst c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n\r\n\t\treturn R * c;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the distance and driving duration between two locations\r\n\t *\r\n\t * @param origin - Origin coordinate\r\n\t * @param destination - Destination coordinate\r\n\t * @returns Distance and duration\r\n\t */\r\n\tasync getDistanceInfo(origin: ICoordinate, destination: ICoordinate): Promise<IDistanceInfo> {\r\n\t\treturn await this.service.getDistanceInfo(origin, destination);\r\n\t}\r\n\r\n\t/**\r\n\t * Get the distance and driving duration between two locations\r\n\t *\r\n\t * @param origin - Origin coordinate\r\n\t * @param destination - Destination coordinate\r\n\t * @param waypoints - Coordinates of intermediary waypoints\r\n\t * @returns Distance, duration, and polyline of each leg and the whole journey\r\n\t */\r\n\tasync getWaypointsDistanceInfo(\r\n\t\torigin: ICoordinate,\r\n\t\tdestination: ICoordinate,\r\n\t\twaypoints: Array<ICoordinate>\r\n\t): Promise<IWaypointDistanceInfo> {\r\n\t\treturn await this.service.getWaypointsDistanceInfo(origin, destination, waypoints);\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"google-maps.js","sourceRoot":"/","sources":["libraries/map/providers/google-maps.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport {\n\tIMapService,\n\tICoordinate,\n\tIDistance,\n\tIDuration,\n\tILeg,\n\tIDistanceInfo,\n\tIWaypointDistanceInfo,\n} from '../interfaces/IMapService';\nimport * as polyline from '@mapbox/polyline';\n\nexport class GoogleMapsService implements IMapService {\n\tprivate _apiKey: string | undefined;\n\n\tconstructor(apiKey: string) {\n\t\tthis._apiKey = apiKey;\n\t}\n\n\tpublic async getDistanceInfo(origin: ICoordinate, destination: ICoordinate): Promise<IDistanceInfo> {\n\t\ttry {\n\t\t\tconst url = `https://maps.googleapis.com/maps/api/directions/json?origin=${origin.latitude}, ${origin.longitude}&destination=${destination.latitude}, ${destination.longitude}&key=${this._apiKey}&mode=DRIVING`;\n\n\t\t\tconst { data } = await axios.get(url);\n\n\t\t\tconst legs = data.routes[0].legs[0];\n\n\t\t\tconst distance = legs.distance;\n\t\t\tconst duration = legs.duration;\n\n\t\t\treturn { distance, duration };\n\t\t} catch (error) {\n\t\t\tconsole.error(`Error in getDistanceInfo: ${error}`);\n\t\t\treturn {\n\t\t\t\tdistance: {\n\t\t\t\t\ttext: '',\n\t\t\t\t\tvalue: 0,\n\t\t\t\t},\n\t\t\t\tduration: {\n\t\t\t\t\ttext: '',\n\t\t\t\t\tvalue: 0,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\tpublic async getWaypointsDistanceInfo(\n\t\torigin: ICoordinate,\n\t\tdestination: ICoordinate,\n\t\twaypoints: Array<ICoordinate>\n\t): Promise<IWaypointDistanceInfo> {\n\t\ttry {\n\t\t\tconst waypointsStr = waypoints.map(point => `${point.latitude},${point.longitude}`).join('|');\n\n\t\t\tconst url = `https://maps.googleapis.com/maps/api/directions/json?origin=${origin.latitude},${origin.longitude}&destination=${destination.latitude},${destination.longitude}&waypoints=${waypointsStr}&key=${this._apiKey}&mode=DRIVING`;\n\n\t\t\tconst { data } = await axios.get(url);\n\n\t\t\tconst routes = data.routes[0];\n\n\t\t\tconst overviewPolyline = polyline.decode(routes.overview_polyline.points);\n\n\t\t\tconst legs = routes.legs.map((leg: { steps: any[]; distance: any; duration: any }) => {\n\t\t\t\tconst overviewPolyline = leg?.steps?.flatMap(step => polyline.decode(step?.polyline?.points));\n\n\t\t\t\treturn {\n\t\t\t\t\tdistance: leg.distance,\n\t\t\t\t\tduration: leg.duration,\n\t\t\t\t\toverviewPolyline,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tconst totalDistance = legs.reduce(\n\t\t\t\t(acc: any, curr: { distance: { value: any } }) => acc + curr.distance.value,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst distance = {\n\t\t\t\ttext: `${(totalDistance / 1000).toFixed(2)} km`,\n\t\t\t\tvalue: totalDistance,\n\t\t\t};\n\n\t\t\tconst totalDuration = legs.reduce(\n\t\t\t\t(acc: any, curr: { duration: { value: any } }) => acc + curr.duration.value,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst duration = {\n\t\t\t\ttext: `${Math.round(totalDuration / 60)} mins`,\n\t\t\t\tvalue: totalDuration,\n\t\t\t};\n\n\t\t\treturn { distance, duration, legs, overviewPolyline };\n\t\t} catch (error) {\n\t\t\tconsole.error(`Error in getWaypointsDistanceInfo: ${error}`);\n\t\t\treturn {\n\t\t\t\tdistance: {\n\t\t\t\t\ttext: '',\n\t\t\t\t\tvalue: 0,\n\t\t\t\t},\n\t\t\t\tduration: {\n\t\t\t\t\ttext: '',\n\t\t\t\t\tvalue: 0,\n\t\t\t\t},\n\t\t\t\tlegs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdistance: {\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\tvalue: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tduration: {\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\tvalue: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\toverviewPolyline: [\n\t\t\t\t\t\t\t[0, 0],\n\t\t\t\t\t\t\t[1, 1],\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\toverviewPolyline: [\n\t\t\t\t\t[0, 0],\n\t\t\t\t\t[1, 1],\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"google-maps.js","sourceRoot":"/","sources":["libraries/map/providers/google-maps.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\r\nimport {\r\n\tIMapService,\r\n\tICoordinate,\r\n\tIDistance,\r\n\tIDuration,\r\n\tILeg,\r\n\tIDistanceInfo,\r\n\tIWaypointDistanceInfo,\r\n} from '../interfaces/IMapService';\r\nimport * as polyline from '@mapbox/polyline';\r\n\r\nexport class GoogleMapsService implements IMapService {\r\n\tprivate _apiKey: string | undefined;\r\n\r\n\tconstructor(apiKey: string) {\r\n\t\tthis._apiKey = apiKey;\r\n\t}\r\n\r\n\tpublic async getDistanceInfo(origin: ICoordinate, destination: ICoordinate): Promise<IDistanceInfo> {\r\n\t\ttry {\r\n\t\t\tconst url = `https://maps.googleapis.com/maps/api/directions/json?origin=${origin.latitude}, ${origin.longitude}&destination=${destination.latitude}, ${destination.longitude}&key=${this._apiKey}&mode=DRIVING`;\r\n\r\n\t\t\tconst { data } = await axios.get(url);\r\n\r\n\t\t\tconst legs = data.routes[0].legs[0];\r\n\r\n\t\t\tconst distance = legs.distance;\r\n\t\t\tconst duration = legs.duration;\r\n\r\n\t\t\treturn { distance, duration };\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(`Error in getDistanceInfo: ${error}`);\r\n\t\t\treturn {\r\n\t\t\t\tdistance: {\r\n\t\t\t\t\ttext: '',\r\n\t\t\t\t\tvalue: 0,\r\n\t\t\t\t},\r\n\t\t\t\tduration: {\r\n\t\t\t\t\ttext: '',\r\n\t\t\t\t\tvalue: 0,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async getWaypointsDistanceInfo(\r\n\t\torigin: ICoordinate,\r\n\t\tdestination: ICoordinate,\r\n\t\twaypoints: Array<ICoordinate>\r\n\t): Promise<IWaypointDistanceInfo> {\r\n\t\ttry {\r\n\t\t\tconst waypointsStr = waypoints.map(point => `${point.latitude},${point.longitude}`).join('|');\r\n\r\n\t\t\tconst url = `https://maps.googleapis.com/maps/api/directions/json?origin=${origin.latitude},${origin.longitude}&destination=${destination.latitude},${destination.longitude}&waypoints=${waypointsStr}&key=${this._apiKey}&mode=DRIVING`;\r\n\r\n\t\t\tconst { data } = await axios.get(url);\r\n\r\n\t\t\tconst routes = data.routes[0];\r\n\r\n\t\t\tconst overviewPolyline = polyline.decode(routes.overview_polyline.points);\r\n\r\n\t\t\tconst legs = routes.legs.map((leg: { steps: any[]; distance: any; duration: any }) => {\r\n\t\t\t\tconst overviewPolyline = leg?.steps?.flatMap(step => polyline.decode(step?.polyline?.points));\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdistance: leg.distance,\r\n\t\t\t\t\tduration: leg.duration,\r\n\t\t\t\t\toverviewPolyline,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tconst totalDistance = legs.reduce(\r\n\t\t\t\t(acc: any, curr: { distance: { value: any } }) => acc + curr.distance.value,\r\n\t\t\t\t0\r\n\t\t\t);\r\n\t\t\tconst distance = {\r\n\t\t\t\ttext: `${(totalDistance / 1000).toFixed(2)} km`,\r\n\t\t\t\tvalue: totalDistance,\r\n\t\t\t};\r\n\r\n\t\t\tconst totalDuration = legs.reduce(\r\n\t\t\t\t(acc: any, curr: { duration: { value: any } }) => acc + curr.duration.value,\r\n\t\t\t\t0\r\n\t\t\t);\r\n\t\t\tconst duration = {\r\n\t\t\t\ttext: `${Math.round(totalDuration / 60)} mins`,\r\n\t\t\t\tvalue: totalDuration,\r\n\t\t\t};\r\n\r\n\t\t\treturn { distance, duration, legs, overviewPolyline };\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(`Error in getWaypointsDistanceInfo: ${error}`);\r\n\t\t\treturn {\r\n\t\t\t\tdistance: {\r\n\t\t\t\t\ttext: '',\r\n\t\t\t\t\tvalue: 0,\r\n\t\t\t\t},\r\n\t\t\t\tduration: {\r\n\t\t\t\t\ttext: '',\r\n\t\t\t\t\tvalue: 0,\r\n\t\t\t\t},\r\n\t\t\t\tlegs: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdistance: {\r\n\t\t\t\t\t\t\ttext: '',\r\n\t\t\t\t\t\t\tvalue: 0,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tduration: {\r\n\t\t\t\t\t\t\ttext: '',\r\n\t\t\t\t\t\t\tvalue: 0,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\toverviewPolyline: [\r\n\t\t\t\t\t\t\t[0, 0],\r\n\t\t\t\t\t\t\t[1, 1],\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\toverviewPolyline: [\r\n\t\t\t\t\t[0, 0],\r\n\t\t\t\t\t[1, 1],\r\n\t\t\t\t],\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/map/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B","sourcesContent":["export * from './google-maps';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/map/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B","sourcesContent":["export * from './google-maps';\r\n"]}