@lyxa.ai/core 1.0.15 → 1.0.16

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 (288) hide show
  1. package/dist/index.d.ts +4 -4
  2. package/dist/index.js +6 -7
  3. package/dist/index.js.map +1 -1
  4. package/dist/libraries/auth/index.d.ts +3 -3
  5. package/dist/libraries/auth/index.js +26 -26
  6. package/dist/libraries/auth/index.js.map +1 -1
  7. package/dist/libraries/auth/refreshtoken.d.ts +1 -1
  8. package/dist/libraries/auth/refreshtoken.js +6 -10
  9. package/dist/libraries/auth/refreshtoken.js.map +1 -1
  10. package/dist/libraries/auth/repository.d.ts +3 -3
  11. package/dist/libraries/auth/repository.js +1 -5
  12. package/dist/libraries/auth/repository.js.map +1 -1
  13. package/dist/libraries/configuration/index.d.ts +2 -2
  14. package/dist/libraries/configuration/index.js +20 -20
  15. package/dist/libraries/configuration/index.js.map +1 -1
  16. package/dist/libraries/configuration/types/EnvironmentConfigurationType.js.map +1 -1
  17. package/dist/libraries/dispatcher/index.d.ts +2 -2
  18. package/dist/libraries/dispatcher/index.js +2 -2
  19. package/dist/libraries/dispatcher/index.js.map +1 -1
  20. package/dist/libraries/event/BaseEvent.js.map +1 -1
  21. package/dist/libraries/event/decorators/metadata.d.ts +1 -1
  22. package/dist/libraries/event/decorators/metadata.js.map +1 -1
  23. package/dist/libraries/event/decorators/subscribe.js.map +1 -1
  24. package/dist/libraries/event/index.d.ts +1 -1
  25. package/dist/libraries/event/index.js +6 -6
  26. package/dist/libraries/event/index.js.map +1 -1
  27. package/dist/libraries/event/registry/SubscriptionRegistry.js.map +1 -1
  28. package/dist/libraries/event/test/OrderCreationEvent.d.ts +1 -1
  29. package/dist/libraries/event/test/OrderCreationEvent.js +9 -6
  30. package/dist/libraries/event/test/OrderCreationEvent.js.map +1 -1
  31. package/dist/libraries/firebase/index.d.ts +1 -1
  32. package/dist/libraries/firebase/index.js.map +1 -1
  33. package/dist/libraries/index.d.ts +9 -9
  34. package/dist/libraries/index.js +1 -1
  35. package/dist/libraries/index.js.map +1 -1
  36. package/dist/libraries/logger/index.d.ts +1 -1
  37. package/dist/libraries/logger/index.js +9 -9
  38. package/dist/libraries/logger/index.js.map +1 -1
  39. package/dist/libraries/mongo/index.d.ts +1 -1
  40. package/dist/libraries/mongo/index.js +11 -11
  41. package/dist/libraries/mongo/index.js.map +1 -1
  42. package/dist/libraries/mongo/models/activity-log.model.d.ts +1 -2
  43. package/dist/libraries/mongo/models/activity-log.model.js +1 -2
  44. package/dist/libraries/mongo/models/activity-log.model.js.map +1 -1
  45. package/dist/libraries/mongo/models/admin-access-control.model.d.ts +1 -2
  46. package/dist/libraries/mongo/models/admin-access-control.model.js +1 -2
  47. package/dist/libraries/mongo/models/admin-access-control.model.js.map +1 -1
  48. package/dist/libraries/mongo/models/admin.model.d.ts +3 -2
  49. package/dist/libraries/mongo/models/admin.model.js +20 -3
  50. package/dist/libraries/mongo/models/admin.model.js.map +1 -1
  51. package/dist/libraries/mongo/models/app-screen-setting.model.d.ts +0 -2
  52. package/dist/libraries/mongo/models/app-screen-setting.model.js +1 -2
  53. package/dist/libraries/mongo/models/app-screen-setting.model.js.map +1 -1
  54. package/dist/libraries/mongo/models/attribute.model.d.ts +1 -2
  55. package/dist/libraries/mongo/models/attribute.model.js +1 -2
  56. package/dist/libraries/mongo/models/attribute.model.js.map +1 -1
  57. package/dist/libraries/mongo/models/banner.model.d.ts +1 -2
  58. package/dist/libraries/mongo/models/banner.model.js +1 -2
  59. package/dist/libraries/mongo/models/banner.model.js.map +1 -1
  60. package/dist/libraries/mongo/models/base/base-coupon.model.js.map +1 -1
  61. package/dist/libraries/mongo/models/base/base-review.model.js.map +1 -1
  62. package/dist/libraries/mongo/models/bob-finance.model.d.ts +2 -3
  63. package/dist/libraries/mongo/models/bob-finance.model.js +2 -3
  64. package/dist/libraries/mongo/models/bob-finance.model.js.map +1 -1
  65. package/dist/libraries/mongo/models/brand.model.d.ts +0 -2
  66. package/dist/libraries/mongo/models/brand.model.js +1 -2
  67. package/dist/libraries/mongo/models/brand.model.js.map +1 -1
  68. package/dist/libraries/mongo/models/category.model.d.ts +1 -2
  69. package/dist/libraries/mongo/models/category.model.js +1 -2
  70. package/dist/libraries/mongo/models/category.model.js.map +1 -1
  71. package/dist/libraries/mongo/models/core-auth-identity.model.js.map +1 -1
  72. package/dist/libraries/mongo/models/core-user.model.js.map +1 -1
  73. package/dist/libraries/mongo/models/counter.model.d.ts +0 -2
  74. package/dist/libraries/mongo/models/counter.model.js +1 -2
  75. package/dist/libraries/mongo/models/counter.model.js.map +1 -1
  76. package/dist/libraries/mongo/models/coupon.model.d.ts +0 -2
  77. package/dist/libraries/mongo/models/coupon.model.js +4 -3
  78. package/dist/libraries/mongo/models/coupon.model.js.map +1 -1
  79. package/dist/libraries/mongo/models/deal-setting.model.d.ts +0 -2
  80. package/dist/libraries/mongo/models/deal-setting.model.js +1 -2
  81. package/dist/libraries/mongo/models/deal-setting.model.js.map +1 -1
  82. package/dist/libraries/mongo/models/dish.model.d.ts +1 -2
  83. package/dist/libraries/mongo/models/dish.model.js +1 -2
  84. package/dist/libraries/mongo/models/dish.model.js.map +1 -1
  85. package/dist/libraries/mongo/models/embedded/attribute-item.model.js.map +1 -1
  86. package/dist/libraries/mongo/models/embedded/attribute-map.model.js.map +1 -1
  87. package/dist/libraries/mongo/models/embedded/business-development-setting.model.js.map +1 -1
  88. package/dist/libraries/mongo/models/embedded/charge-setting.model.js.map +1 -1
  89. package/dist/libraries/mongo/models/embedded/charge.model.js.map +1 -1
  90. package/dist/libraries/mongo/models/embedded/courier-setting.model.js.map +1 -1
  91. package/dist/libraries/mongo/models/embedded/currency-setting.model.js.map +1 -1
  92. package/dist/libraries/mongo/models/embedded/currency.model.js.map +1 -1
  93. package/dist/libraries/mongo/models/embedded/featured-item.mode.js.map +1 -1
  94. package/dist/libraries/mongo/models/embedded/otp-fields.model.js.map +1 -1
  95. package/dist/libraries/mongo/models/embedded/package.model.js.map +1 -1
  96. package/dist/libraries/mongo/models/embedded/parent-document.model.js.map +1 -1
  97. package/dist/libraries/mongo/models/embedded/payout-setting.model.js.map +1 -1
  98. package/dist/libraries/mongo/models/embedded/price.model.js.map +1 -1
  99. package/dist/libraries/mongo/models/embedded/product-nutrition.model.js.map +1 -1
  100. package/dist/libraries/mongo/models/embedded/referral-discount-config.model.js.map +1 -1
  101. package/dist/libraries/mongo/models/embedded/rider-setting.model.js.map +1 -1
  102. package/dist/libraries/mongo/models/embedded/service-fee-setting.model.js.map +1 -1
  103. package/dist/libraries/mongo/models/embedded/shop-document.model.js.map +1 -1
  104. package/dist/libraries/mongo/models/embedded/subscription-summary.model.js.map +1 -1
  105. package/dist/libraries/mongo/models/embedded/zone-geometry.mode.js.map +1 -1
  106. package/dist/libraries/mongo/models/faq.model.d.ts +0 -2
  107. package/dist/libraries/mongo/models/faq.model.js +1 -2
  108. package/dist/libraries/mongo/models/faq.model.js.map +1 -1
  109. package/dist/libraries/mongo/models/favourite.model.d.ts +3 -4
  110. package/dist/libraries/mongo/models/favourite.model.js +3 -4
  111. package/dist/libraries/mongo/models/favourite.model.js.map +1 -1
  112. package/dist/libraries/mongo/models/featured-setting.model.d.ts +0 -2
  113. package/dist/libraries/mongo/models/featured-setting.model.js +1 -2
  114. package/dist/libraries/mongo/models/featured-setting.model.js.map +1 -1
  115. package/dist/libraries/mongo/models/filter-container.model.d.ts +0 -1
  116. package/dist/libraries/mongo/models/filter-container.model.js +1 -2
  117. package/dist/libraries/mongo/models/filter-container.model.js.map +1 -1
  118. package/dist/libraries/mongo/models/index.d.ts +113 -7
  119. package/dist/libraries/mongo/models/index.js +117 -7
  120. package/dist/libraries/mongo/models/index.js.map +1 -1
  121. package/dist/libraries/mongo/models/list-container.model.d.ts +2 -3
  122. package/dist/libraries/mongo/models/list-container.model.js +2 -3
  123. package/dist/libraries/mongo/models/list-container.model.js.map +1 -1
  124. package/dist/libraries/mongo/models/loyalty-point-category.model.d.ts +0 -2
  125. package/dist/libraries/mongo/models/loyalty-point-category.model.js +1 -2
  126. package/dist/libraries/mongo/models/loyalty-point-category.model.js.map +1 -1
  127. package/dist/libraries/mongo/models/loyalty-point-setting.model.d.ts +0 -2
  128. package/dist/libraries/mongo/models/loyalty-point-setting.model.js +1 -2
  129. package/dist/libraries/mongo/models/loyalty-point-setting.model.js.map +1 -1
  130. package/dist/libraries/mongo/models/marketing.model.d.ts +2 -3
  131. package/dist/libraries/mongo/models/marketing.model.js +13 -5
  132. package/dist/libraries/mongo/models/marketing.model.js.map +1 -1
  133. package/dist/libraries/mongo/models/meal-plan.model.d.ts +0 -2
  134. package/dist/libraries/mongo/models/meal-plan.model.js +1 -2
  135. package/dist/libraries/mongo/models/meal-plan.model.js.map +1 -1
  136. package/dist/libraries/mongo/models/notification.model.d.ts +8 -9
  137. package/dist/libraries/mongo/models/notification.model.js +8 -9
  138. package/dist/libraries/mongo/models/notification.model.js.map +1 -1
  139. package/dist/libraries/mongo/models/nutrition.model.d.ts +0 -2
  140. package/dist/libraries/mongo/models/nutrition.model.js +1 -2
  141. package/dist/libraries/mongo/models/nutrition.model.js.map +1 -1
  142. package/dist/libraries/mongo/models/order.model.js.map +1 -1
  143. package/dist/libraries/mongo/models/parent.model.d.ts +3 -4
  144. package/dist/libraries/mongo/models/parent.model.js +8 -5
  145. package/dist/libraries/mongo/models/parent.model.js.map +1 -1
  146. package/dist/libraries/mongo/models/payout.model.js.map +1 -1
  147. package/dist/libraries/mongo/models/product-marketing.model.d.ts +3 -4
  148. package/dist/libraries/mongo/models/product-marketing.model.js +3 -4
  149. package/dist/libraries/mongo/models/product-marketing.model.js.map +1 -1
  150. package/dist/libraries/mongo/models/product.model.d.ts +1 -3
  151. package/dist/libraries/mongo/models/product.model.js +8 -4
  152. package/dist/libraries/mongo/models/product.model.js.map +1 -1
  153. package/dist/libraries/mongo/models/providers/buy1-get1-marketing.model.d.ts +1 -2
  154. package/dist/libraries/mongo/models/providers/buy1-get1-marketing.model.js +1 -2
  155. package/dist/libraries/mongo/models/providers/buy1-get1-marketing.model.js.map +1 -1
  156. package/dist/libraries/mongo/models/providers/core-apple-auth-identity.model.js.map +1 -1
  157. package/dist/libraries/mongo/models/providers/core-email-auth-identity.model.js.map +1 -1
  158. package/dist/libraries/mongo/models/providers/core-google-auth-identity.model.js.map +1 -1
  159. package/dist/libraries/mongo/models/providers/core-phone-auth-identity.model.js.map +1 -1
  160. package/dist/libraries/mongo/models/providers/custom-coupon.model.d.ts +1 -2
  161. package/dist/libraries/mongo/models/providers/custom-coupon.model.js +1 -3
  162. package/dist/libraries/mongo/models/providers/custom-coupon.model.js.map +1 -1
  163. package/dist/libraries/mongo/models/providers/discount-marketing.model.d.ts +1 -2
  164. package/dist/libraries/mongo/models/providers/discount-marketing.model.js +1 -2
  165. package/dist/libraries/mongo/models/providers/discount-marketing.model.js.map +1 -1
  166. package/dist/libraries/mongo/models/providers/featured-marketing.model.d.ts +0 -2
  167. package/dist/libraries/mongo/models/providers/featured-marketing.model.js +1 -2
  168. package/dist/libraries/mongo/models/providers/featured-marketing.model.js.map +1 -1
  169. package/dist/libraries/mongo/models/providers/free-delivery-marketing.model.d.ts +0 -2
  170. package/dist/libraries/mongo/models/providers/free-delivery-marketing.model.js +1 -2
  171. package/dist/libraries/mongo/models/providers/free-delivery-marketing.model.js.map +1 -1
  172. package/dist/libraries/mongo/models/providers/global-coupon.model.d.ts +0 -2
  173. package/dist/libraries/mongo/models/providers/global-coupon.model.js +1 -4
  174. package/dist/libraries/mongo/models/providers/global-coupon.model.js.map +1 -1
  175. package/dist/libraries/mongo/models/providers/individual-store-coupon.model.d.ts +1 -2
  176. package/dist/libraries/mongo/models/providers/individual-store-coupon.model.js +1 -3
  177. package/dist/libraries/mongo/models/providers/individual-store-coupon.model.js.map +1 -1
  178. package/dist/libraries/mongo/models/providers/individual-user-coupon.model.d.ts +1 -2
  179. package/dist/libraries/mongo/models/providers/individual-user-coupon.model.js +1 -3
  180. package/dist/libraries/mongo/models/providers/individual-user-coupon.model.js.map +1 -1
  181. package/dist/libraries/mongo/models/providers/loyalty-point-marketing.model.d.ts +1 -2
  182. package/dist/libraries/mongo/models/providers/loyalty-point-marketing.model.js +1 -2
  183. package/dist/libraries/mongo/models/providers/loyalty-point-marketing.model.js.map +1 -1
  184. package/dist/libraries/mongo/models/providers/punch-marketing.model.d.ts +0 -2
  185. package/dist/libraries/mongo/models/providers/punch-marketing.model.js +1 -2
  186. package/dist/libraries/mongo/models/providers/punch-marketing.model.js.map +1 -1
  187. package/dist/libraries/mongo/models/providers/referral-code-coupon.model.d.ts +1 -2
  188. package/dist/libraries/mongo/models/providers/referral-code-coupon.model.js +1 -2
  189. package/dist/libraries/mongo/models/providers/referral-code-coupon.model.js.map +1 -1
  190. package/dist/libraries/mongo/models/providers/referral-reward-coupon.model.d.ts +1 -2
  191. package/dist/libraries/mongo/models/providers/referral-reward-coupon.model.js +1 -3
  192. package/dist/libraries/mongo/models/providers/referral-reward-coupon.model.js.map +1 -1
  193. package/dist/libraries/mongo/models/punch-marketing-history.model.d.ts +1 -2
  194. package/dist/libraries/mongo/models/punch-marketing-history.model.js +1 -2
  195. package/dist/libraries/mongo/models/punch-marketing-history.model.js.map +1 -1
  196. package/dist/libraries/mongo/models/rating-setting.model.d.ts +0 -2
  197. package/dist/libraries/mongo/models/rating-setting.model.js +1 -2
  198. package/dist/libraries/mongo/models/rating-setting.model.js.map +1 -1
  199. package/dist/libraries/mongo/models/referral-setting.model.d.ts +0 -2
  200. package/dist/libraries/mongo/models/referral-setting.model.js +1 -2
  201. package/dist/libraries/mongo/models/referral-setting.model.js.map +1 -1
  202. package/dist/libraries/mongo/models/request-area.model.d.ts +1 -2
  203. package/dist/libraries/mongo/models/request-area.model.js +1 -2
  204. package/dist/libraries/mongo/models/request-area.model.js.map +1 -1
  205. package/dist/libraries/mongo/models/rider-review.model.d.ts +1 -2
  206. package/dist/libraries/mongo/models/rider-review.model.js +1 -2
  207. package/dist/libraries/mongo/models/rider-review.model.js.map +1 -1
  208. package/dist/libraries/mongo/models/rider.model.js.map +1 -1
  209. package/dist/libraries/mongo/models/role.model.d.ts +0 -2
  210. package/dist/libraries/mongo/models/role.model.js +1 -3
  211. package/dist/libraries/mongo/models/role.model.js.map +1 -1
  212. package/dist/libraries/mongo/models/setting.model.d.ts +6 -8
  213. package/dist/libraries/mongo/models/setting.model.js +7 -8
  214. package/dist/libraries/mongo/models/setting.model.js.map +1 -1
  215. package/dist/libraries/mongo/models/shared/address.model.d.ts +1 -1
  216. package/dist/libraries/mongo/models/shared/address.model.js.map +1 -1
  217. package/dist/libraries/mongo/models/shared/duration.model.js.map +1 -1
  218. package/dist/libraries/mongo/models/shared/work-hour.model.d.ts +1 -1
  219. package/dist/libraries/mongo/models/shared/work-hour.model.js +1 -1
  220. package/dist/libraries/mongo/models/shared/work-hour.model.js.map +1 -1
  221. package/dist/libraries/mongo/models/shop-access-control.model.d.ts +1 -2
  222. package/dist/libraries/mongo/models/shop-access-control.model.js +1 -2
  223. package/dist/libraries/mongo/models/shop-access-control.model.js.map +1 -1
  224. package/dist/libraries/mongo/models/shop-category.model.d.ts +2 -3
  225. package/dist/libraries/mongo/models/shop-category.model.js +2 -3
  226. package/dist/libraries/mongo/models/shop-category.model.js.map +1 -1
  227. package/dist/libraries/mongo/models/shop-meal-plan.model.d.ts +2 -3
  228. package/dist/libraries/mongo/models/shop-meal-plan.model.js +2 -3
  229. package/dist/libraries/mongo/models/shop-meal-plan.model.js.map +1 -1
  230. package/dist/libraries/mongo/models/shop-product.model.d.ts +4 -5
  231. package/dist/libraries/mongo/models/shop-product.model.js +4 -5
  232. package/dist/libraries/mongo/models/shop-product.model.js.map +1 -1
  233. package/dist/libraries/mongo/models/shop-review.model.d.ts +1 -2
  234. package/dist/libraries/mongo/models/shop-review.model.js +1 -2
  235. package/dist/libraries/mongo/models/shop-review.model.js.map +1 -1
  236. package/dist/libraries/mongo/models/shop.model.d.ts +3 -4
  237. package/dist/libraries/mongo/models/shop.model.js +12 -6
  238. package/dist/libraries/mongo/models/shop.model.js.map +1 -1
  239. package/dist/libraries/mongo/models/subscription-setting.model.d.ts +0 -2
  240. package/dist/libraries/mongo/models/subscription-setting.model.js +7 -3
  241. package/dist/libraries/mongo/models/subscription-setting.model.js.map +1 -1
  242. package/dist/libraries/mongo/models/subscription.model.d.ts +3 -4
  243. package/dist/libraries/mongo/models/subscription.model.js +13 -6
  244. package/dist/libraries/mongo/models/subscription.model.js.map +1 -1
  245. package/dist/libraries/mongo/models/tag.model.d.ts +0 -2
  246. package/dist/libraries/mongo/models/tag.model.js +1 -2
  247. package/dist/libraries/mongo/models/tag.model.js.map +1 -1
  248. package/dist/libraries/mongo/models/transaction.model.js.map +1 -1
  249. package/dist/libraries/mongo/models/zone.model.d.ts +0 -2
  250. package/dist/libraries/mongo/models/zone.model.js +1 -2
  251. package/dist/libraries/mongo/models/zone.model.js.map +1 -1
  252. package/dist/libraries/mongo/plugins/soft-delete-plugin.d.ts +8 -7
  253. package/dist/libraries/mongo/plugins/soft-delete-plugin.js +6 -6
  254. package/dist/libraries/mongo/plugins/soft-delete-plugin.js.map +1 -1
  255. package/dist/libraries/redis/index.d.ts +1 -1
  256. package/dist/libraries/redis/index.js +4 -1
  257. package/dist/libraries/redis/index.js.map +1 -1
  258. package/dist/libraries/secrets/index.d.ts +2 -2
  259. package/dist/libraries/secrets/index.js +13 -13
  260. package/dist/libraries/secrets/index.js.map +1 -1
  261. package/dist/libraries/trpc/context.d.ts +4 -4
  262. package/dist/libraries/trpc/context.js +1 -1
  263. package/dist/libraries/trpc/context.js.map +1 -1
  264. package/dist/libraries/trpc/index.js.map +1 -1
  265. package/dist/libraries/trpc/middlewares/auth.d.ts +1 -1
  266. package/dist/libraries/trpc/middlewares/auth.js +12 -13
  267. package/dist/libraries/trpc/middlewares/auth.js.map +1 -1
  268. package/dist/libraries/trpc/middlewares/cors.d.ts +12 -0
  269. package/dist/libraries/trpc/middlewares/cors.js +50 -0
  270. package/dist/libraries/trpc/middlewares/cors.js.map +1 -0
  271. package/dist/libraries/twilio/index.d.ts +1 -1
  272. package/dist/libraries/twilio/index.js +2 -3
  273. package/dist/libraries/twilio/index.js.map +1 -1
  274. package/dist/libraries/upload/index.js +3 -3
  275. package/dist/libraries/upload/index.js.map +1 -1
  276. package/dist/utilities/enum.js.map +1 -1
  277. package/dist/utilities/error-handler.js.map +1 -1
  278. package/dist/utilities/error-middleware.js.map +1 -1
  279. package/dist/utilities/pagination.d.ts +4 -4
  280. package/dist/utilities/pagination.js +3 -8
  281. package/dist/utilities/pagination.js.map +1 -1
  282. package/dist/utilities/transformers.d.ts +2 -2
  283. package/dist/utilities/transformers.js +6 -6
  284. package/dist/utilities/transformers.js.map +1 -1
  285. package/dist/utilities/validation/common-validation.js.map +1 -1
  286. package/dist/utilities/validation/global-validation.js.map +1 -1
  287. package/dist/utilities/validation/index.js.map +1 -1
  288. package/package.json +44 -41
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { LibraryManager } from "./libraries";
2
- import { ConfigurationOptions } from "./libraries/configuration";
3
- export { ConfigurationOptions } from "./libraries/configuration";
4
- export { EnvironmentConfigurationType } from "./libraries/configuration/types/EnvironmentConfigurationType";
1
+ import { LibraryManager } from './libraries';
2
+ import { ConfigurationOptions } from './libraries/configuration';
3
+ export { ConfigurationOptions } from './libraries/configuration';
4
+ export { EnvironmentConfigurationType } from './libraries/configuration/types/EnvironmentConfigurationType';
5
5
  export { initGlobalConnection, createGlobalModel, createGlobalDiscriminatorModel } from './libraries/mongo';
6
6
  export declare function bootstrapCore(options?: ConfigurationOptions): Promise<void>;
7
7
  export declare function registerLibraries(options?: ConfigurationOptions): Promise<void>;
package/dist/index.js CHANGED
@@ -30,17 +30,17 @@ Object.defineProperty(exports, "createGlobalDiscriminatorModel", { enumerable: t
30
30
  async function bootstrapCore(options) {
31
31
  try {
32
32
  await registerLibraries(options);
33
- getLibraries().getLogger().logger.info("Successfully bootstrapped lyxa-core.");
33
+ getLibraries().getLogger().logger.info('Successfully bootstrapped lyxa-core.');
34
34
  const gracefulShutdown = async () => {
35
35
  getLibraries().getLogger().logger.info('Received shutdown signal, shutting down gracefully...');
36
36
  };
37
37
  process.on('SIGTERM', gracefulShutdown);
38
38
  process.on('SIGINT', gracefulShutdown);
39
- process.on('uncaughtException', (err) => {
39
+ process.on('uncaughtException', err => {
40
40
  getLibraries().getLogger().logger.error('Uncaught exception, shutting down...', err);
41
41
  gracefulShutdown();
42
42
  });
43
- console.log("Created hooks.");
43
+ console.log('Created hooks.');
44
44
  }
45
45
  catch (e) {
46
46
  console.error(e);
@@ -53,8 +53,7 @@ async function registerLibraries(options) {
53
53
  typedi_1.Container.set(redis_1.RedisService, redisInstance);
54
54
  const secretInstance = new secrets_1.SecretManagerService(configurationInstance, redisInstance);
55
55
  typedi_1.Container.set(secrets_1.SecretManagerService, secretInstance);
56
- const mongoUrl = await getLibraries().getSecretsService()
57
- .getKey("MONGO_URL");
56
+ const mongoUrl = await getLibraries().getSecretsService().getKey('MONGO_URL');
58
57
  await mongoose_1.default.connect(mongoUrl, { dbName: `lyxa-${options.environment}-${options.tenet}` });
59
58
  mongoose_1.default.set('debug', getLibraries().getConfigurationService().options.environment == EnvironmentConfigurationType_1.EnvironmentConfigurationType.DEV);
60
59
  await (0, mongo_1.initGlobalConnection)(mongoUrl, options.environment);
@@ -66,8 +65,8 @@ async function registerLibraries(options) {
66
65
  typedi_1.Container.set(dispatcher_1.MicroServiceDispatcher, microserviceDispatcherInstance);
67
66
  const twilioServiceInstance = new twilio_1.TwilioService();
68
67
  typedi_1.Container.set(twilio_1.TwilioService, twilioServiceInstance);
69
- console.log("Initialized everything");
70
- await (0, event_1.initEventBus)("amqps://vgyuplrd:wto6vUYnb4zeBI5lntKT4gj7rT8n1vwg@dog.lmq.cloudamqp.com/vgyuplrd");
68
+ console.log('Initialized everything');
69
+ await (0, event_1.initEventBus)('amqps://vgyuplrd:wto6vUYnb4zeBI5lntKT4gj7rT8n1vwg@dog.lmq.cloudamqp.com/vgyuplrd');
71
70
  const allSubscriptions = SubscriptionRegistry_1.SubscriptionRegistry.getAllSubscriptions();
72
71
  const instantiatedServices = new Map();
73
72
  for (const { eventId, targetConstructor, methodName } of allSubscriptions) {
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\";\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 {AuthEntityType, signTokenPair} from \"./libraries/auth\";\r\n\r\nexport { ConfigurationOptions } from \"./libraries/configuration\";\r\nexport { EnvironmentConfigurationType } from \"./libraries/configuration/types/EnvironmentConfigurationType\";\r\nexport {\r\n initGlobalConnection,\r\n createGlobalModel,\r\n createGlobalDiscriminatorModel\r\n} from './libraries/mongo';\r\n\r\nexport async function bootstrapCore(options?: ConfigurationOptions) {\r\n try {\r\n await registerLibraries(options);\r\n\r\n getLibraries().getLogger().logger.info(\"Successfully bootstrapped lyxa-core.\");\r\n\r\n const gracefulShutdown = async () => {\r\n getLibraries().getLogger().logger.info('Received shutdown signal, shutting down gracefully...');\r\n };\r\n\r\n process.on('SIGTERM', gracefulShutdown);\r\n process.on('SIGINT', gracefulShutdown);\r\n process.on('uncaughtException', (err) => {\r\n getLibraries().getLogger().logger.error('Uncaught exception, shutting down...', err);\r\n gracefulShutdown();\r\n });\r\n\r\n console.log(\"Created hooks.\");\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}\r\n\r\nexport async function registerLibraries(options?: ConfigurationOptions) {\r\n // Setup configuration.\r\n const configurationInstance = new ConfigurationService(options);\r\n Container.set(ConfigurationService, configurationInstance);\r\n\r\n // Setup redis.\r\n const redisInstance = new RedisService(configurationInstance.options.redisURL!);\r\n Container.set(RedisService, redisInstance);\r\n\r\n // Setup secret\r\n const secretInstance = new SecretManagerService(configurationInstance, redisInstance);\r\n Container.set(SecretManagerService, secretInstance);\r\n\r\n const mongoUrl = await getLibraries().getSecretsService()\r\n .getKey(\"MONGO_URL\");\r\n\r\n await mongoose.connect(mongoUrl!, { dbName: `lyxa-${options!.environment}-${options!.tenet}` });\r\n mongoose.set('debug', getLibraries().getConfigurationService().options.environment == EnvironmentConfigurationType.DEV);\r\n\r\n await initGlobalConnection(mongoUrl!, options!.environment);\r\n\r\n // Setup logger\r\n const loggerInstance = new LyxaLogger(options!.instanceType!, mongoUrl!);\r\n Container.set(LyxaLogger, loggerInstance);\r\n\r\n // Setup firebase\r\n const firebaseInstance = new FirebaseService(configurationInstance!);\r\n Container.set(FirebaseService, firebaseInstance);\r\n\r\n // Setup microservice dispatcher\r\n const microserviceDispatcherInstance = new MicroServiceDispatcher(secretInstance);\r\n Container.set(MicroServiceDispatcher, microserviceDispatcherInstance);\r\n\r\n\r\n // Setup twilio\r\n const twilioServiceInstance = new TwilioService();\r\n Container.set(TwilioService, twilioServiceInstance);\r\n\r\n console.log(\"Initialized everything\");\r\n\r\n await initEventBus(\"amqps://vgyuplrd:wto6vUYnb4zeBI5lntKT4gj7rT8n1vwg@dog.lmq.cloudamqp.com/vgyuplrd\");\r\n const allSubscriptions = SubscriptionRegistry.getAllSubscriptions();\r\n\r\n const instantiatedServices = new Map<Function, any>();\r\n\r\n for (const { eventId, targetConstructor, methodName } of allSubscriptions) {\r\n let instance = instantiatedServices.get(targetConstructor);\r\n if (!instance) {\r\n instance = Container.get(targetConstructor as any);\r\n instantiatedServices.set(targetConstructor, instance);\r\n }\r\n\r\n await subscribeToEvent(eventId, async (payload) => {\r\n return instance[methodName](payload);\r\n });\r\n }\r\n}\r\n\r\nexport function getLibraries(): LibraryManager {\r\n return Container.get(LibraryManager)\r\n}\r\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 { AuthEntityType, signTokenPair } from './libraries/auth';\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};\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\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\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,6 +1,6 @@
1
- import { SignOptions } from "jsonwebtoken";
2
- import { EntityContext } from "../trpc/context";
3
- import { RefreshToken } from "./refreshtoken";
1
+ import { SignOptions } from 'jsonwebtoken';
2
+ import { EntityContext } from '../trpc/context';
3
+ import { RefreshToken } from './refreshtoken';
4
4
  export declare enum AuthEntityType {
5
5
  USER = "USER",
6
6
  SELLER = "SELLER",
@@ -34,9 +34,7 @@ async function signAccessToken(entity, options) {
34
34
  if (!entity?.type) {
35
35
  throw new Error('Entity type is required to sign token');
36
36
  }
37
- const secret = await (0, index_1.getLibraries)()
38
- .getSecretsService()
39
- .getKey(`${entity.type.toUpperCase()}_JWT_TOKEN`);
37
+ const secret = await (0, index_1.getLibraries)().getSecretsService().getKey(`${entity.type.toUpperCase()}_JWT_TOKEN`);
40
38
  if (!secret) {
41
39
  throw new Error(`No secret found for entity type ${entity.type}`);
42
40
  }
@@ -44,11 +42,11 @@ async function signAccessToken(entity, options) {
44
42
  id: entity.id,
45
43
  type: entity.type,
46
44
  parameters: entity.parameters,
47
- tokenType: TokenType.ACCESS
45
+ tokenType: TokenType.ACCESS,
48
46
  };
49
47
  const tokenOptions = {
50
48
  ...options,
51
- expiresIn: options?.expiresIn || '1d'
49
+ expiresIn: options?.expiresIn || '1d',
52
50
  };
53
51
  return jsonwebtoken_1.default.sign(payload, secret, tokenOptions);
54
52
  }
@@ -75,7 +73,7 @@ async function generateRefreshToken(entity, options) {
75
73
  expiresAt.setDate(expiresAt.getDate() + value);
76
74
  break;
77
75
  case 'w':
78
- expiresAt.setDate(expiresAt.getDate() + (value * 7));
76
+ expiresAt.setDate(expiresAt.getDate() + value * 7);
79
77
  break;
80
78
  case 'y':
81
79
  expiresAt.setFullYear(expiresAt.getFullYear() + value);
@@ -95,7 +93,7 @@ async function generateRefreshToken(entity, options) {
95
93
  entityType: entity.type,
96
94
  expiresAt,
97
95
  isRevoked: false,
98
- metadata: entity.parameters
96
+ metadata: entity.parameters,
99
97
  });
100
98
  return tokenValue;
101
99
  }
@@ -105,7 +103,9 @@ async function storeRefreshToken(tokenRecord) {
105
103
  }
106
104
  async function verifyAccessToken(entityTypes, token) {
107
105
  for (const entityType of entityTypes) {
108
- const secret = await (0, index_1.getLibraries)().getSecretsService().getKey(entityType.toUpperCase() + "_JWT_TOKEN");
106
+ const secret = await (0, index_1.getLibraries)()
107
+ .getSecretsService()
108
+ .getKey(entityType.toUpperCase() + '_JWT_TOKEN');
109
109
  try {
110
110
  const decoded = jsonwebtoken_1.default.verify(token, secret);
111
111
  if (decoded.tokenType !== TokenType.ACCESS) {
@@ -135,8 +135,8 @@ async function validateRefreshToken(token) {
135
135
  entity: {
136
136
  id: storedToken.entityId,
137
137
  type: storedToken.entityType,
138
- parameters: storedToken.metadata
139
- }
138
+ parameters: storedToken.metadata,
139
+ },
140
140
  };
141
141
  }
142
142
  async function refreshTokens(refreshToken) {
@@ -149,20 +149,20 @@ async function refreshTokens(refreshToken) {
149
149
  const newAccessToken = await signAccessToken({
150
150
  id: entity.id,
151
151
  type: entity.type,
152
- parameters: entity.parameters || {}
152
+ parameters: entity.parameters || {},
153
153
  });
154
154
  const newRefreshToken = await generateRefreshToken({
155
155
  id: entity.id,
156
156
  type: entity.type,
157
- parameters: entity.parameters
157
+ parameters: entity.parameters,
158
158
  });
159
159
  return {
160
160
  accessToken: newAccessToken,
161
161
  refreshToken: newRefreshToken,
162
162
  entity: {
163
163
  id: entity.id,
164
- type: entity.type
165
- }
164
+ type: entity.type,
165
+ },
166
166
  };
167
167
  }
168
168
  async function revokeRefreshToken(token) {
@@ -177,16 +177,16 @@ async function signTokenPair(entity, options) {
177
177
  const accessToken = await signAccessToken({
178
178
  id: entity.id,
179
179
  type: entity.type,
180
- parameters: entity.parameters || {}
180
+ parameters: entity.parameters || {},
181
181
  }, options?.accessTokenOptions);
182
182
  const refreshToken = await generateRefreshToken({
183
183
  id: entity.id,
184
184
  type: entity.type,
185
- parameters: entity.parameters
185
+ parameters: entity.parameters,
186
186
  }, { expiresIn: options?.refreshTokenExpiresIn });
187
187
  return {
188
188
  accessToken,
189
- refreshToken
189
+ refreshToken,
190
190
  };
191
191
  }
192
192
  async function handleTokenRenewal(refreshToken) {
@@ -195,27 +195,27 @@ async function handleTokenRenewal(refreshToken) {
195
195
  if (!storedToken) {
196
196
  return {
197
197
  success: false,
198
- tokenStatus: 'invalid'
198
+ tokenStatus: 'invalid',
199
199
  };
200
200
  }
201
201
  const isRevoked = storedToken.isRevoked;
202
202
  if (isRevoked) {
203
203
  return {
204
204
  success: false,
205
- tokenStatus: 'revoked'
205
+ tokenStatus: 'revoked',
206
206
  };
207
207
  }
208
208
  const isExpired = storedToken.isExpired();
209
209
  const entityData = {
210
210
  id: storedToken.entityId,
211
211
  type: storedToken.entityType,
212
- parameters: storedToken.metadata || {}
212
+ parameters: storedToken.metadata || {},
213
213
  };
214
214
  if (isExpired) {
215
215
  const newTokens = await signTokenPair({
216
216
  id: storedToken.entityId,
217
217
  type: storedToken.entityType,
218
- parameters: storedToken.metadata || {}
218
+ parameters: storedToken.metadata || {},
219
219
  });
220
220
  await tokenRepository.revokeRefreshToken(refreshToken);
221
221
  return {
@@ -224,14 +224,14 @@ async function handleTokenRenewal(refreshToken) {
224
224
  tokenStatus: 'expired',
225
225
  newTokens: {
226
226
  accessToken: newTokens.accessToken,
227
- refreshToken: newTokens.refreshToken
228
- }
227
+ refreshToken: newTokens.refreshToken,
228
+ },
229
229
  };
230
230
  }
231
231
  const newAccessToken = await signAccessToken({
232
232
  id: storedToken.entityId,
233
233
  type: storedToken.entityType,
234
- parameters: storedToken.metadata || {}
234
+ parameters: storedToken.metadata || {},
235
235
  });
236
236
  return {
237
237
  success: true,
@@ -239,8 +239,8 @@ async function handleTokenRenewal(refreshToken) {
239
239
  tokenStatus: 'valid',
240
240
  newTokens: {
241
241
  accessToken: newAccessToken,
242
- refreshToken: null
243
- }
242
+ refreshToken: null,
243
+ },
244
244
  };
245
245
  }
246
246
  exports.RefreshTokenModel = (0, mongo_1.createGlobalModel)(refreshtoken_1.RefreshToken);
@@ -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\";\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 USER = \"USER\",\r\n SELLER = \"SELLER\",\r\n DELIVERY_BOY = \"DELIVERY_BOY\",\r\n CRM = \"CRM\"\r\n}\r\n\r\nexport enum TokenType {\r\n ACCESS = \"ACCESS\",\r\n REFRESH = \"REFRESH\"\r\n}\r\n\r\nexport interface RefreshTokenRecord {\r\n token: string;\r\n entityId: string;\r\n entityType: AuthEntityType;\r\n expiresAt: Date;\r\n isRevoked: boolean;\r\n metadata?: 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 entity: { id: string; type: AuthEntityType, parameters: Record<string, unknown> },\r\n options?: SignOptions\r\n): Promise<string> {\r\n if (!entity?.type) {\r\n throw new Error('Entity type is required to sign token');\r\n }\r\n\r\n const secret = await getLibraries()\r\n .getSecretsService()\r\n .getKey(`${entity.type.toUpperCase()}_JWT_TOKEN`);\r\n\r\n if (!secret) {\r\n throw new Error(`No secret found for entity type ${entity.type}`);\r\n }\r\n\r\n const payload = {\r\n id: entity.id,\r\n type: entity.type,\r\n parameters: entity.parameters,\r\n tokenType: TokenType.ACCESS\r\n };\r\n\r\n const tokenOptions: SignOptions = {\r\n ...options,\r\n expiresIn: options?.expiresIn || '1d'\r\n };\r\n\r\n return 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 entity: { id: string; type: AuthEntityType, parameters?: Record<string, unknown> },\r\n options?: { expiresIn?: string | number }\r\n): Promise<string> {\r\n const tokenValue = randomBytes(40).toString('hex');\r\n\r\n const expiresIn = options?.expiresIn || '7d';\r\n const expiresAt = new Date();\r\n\r\n if (typeof expiresIn === 'string') {\r\n // Parse duration strings like '7d', '30d', etc.\r\n const match = expiresIn.match(/^(\\d+)([smhdwy])$/);\r\n if (match) {\r\n const value = parseInt(match[1]);\r\n const unit = match[2];\r\n\r\n switch (unit) {\r\n case 's': expiresAt.setSeconds(expiresAt.getSeconds() + value); break;\r\n case 'm': expiresAt.setMinutes(expiresAt.getMinutes() + value); break;\r\n case 'h': expiresAt.setHours(expiresAt.getHours() + value); break;\r\n case 'd': expiresAt.setDate(expiresAt.getDate() + value); break;\r\n case 'w': expiresAt.setDate(expiresAt.getDate() + (value * 7)); break;\r\n case 'y': expiresAt.setFullYear(expiresAt.getFullYear() + value); break;\r\n }\r\n } else {\r\n // Default to 7 days if format is invalid\r\n expiresAt.setDate(expiresAt.getDate() + 7);\r\n }\r\n } else if (typeof expiresIn === 'number') {\r\n // Interpret number as seconds\r\n expiresAt.setSeconds(expiresAt.getSeconds() + expiresIn);\r\n }\r\n\r\n await storeRefreshToken({\r\n token: tokenValue,\r\n entityId: entity.id,\r\n entityType: entity.type,\r\n expiresAt,\r\n isRevoked: false,\r\n metadata: entity.parameters\r\n });\r\n\r\n return 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 const tokenRepository = getLibraries().getAuthTokenRepository();\r\n await 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(entityTypes: AuthEntityType[], token: string): Promise<EntityContext | undefined> {\r\n for(const entityType of entityTypes) {\r\n const secret = await getLibraries().getSecretsService().getKey(entityType.toUpperCase() + \"_JWT_TOKEN\");\r\n\r\n try {\r\n const decoded = jwt.verify(token, secret!) as EntityContext & { tokenType?: TokenType };\r\n\r\n // Verify this is an access token\r\n if (decoded.tokenType !== TokenType.ACCESS) {\r\n continue;\r\n }\r\n\r\n return decoded;\r\n } catch(err) {\r\n // Continue to the next entity type\r\n }\r\n }\r\n\r\n return 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 valid: boolean;\r\n entity?: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> };\r\n}> {\r\n const tokenRepository = getLibraries().getAuthTokenRepository();\r\n const storedToken = await tokenRepository.findRefreshToken(token);\r\n\r\n if (!storedToken) {\r\n return { valid: false };\r\n }\r\n\r\n if (storedToken.expiresAt && new Date() > storedToken.expiresAt) {\r\n return { valid: false };\r\n }\r\n\r\n if (storedToken.isRevoked) {\r\n return { valid: false };\r\n }\r\n\r\n return {\r\n valid: true,\r\n entity: {\r\n id: storedToken.entityId,\r\n type: storedToken.entityType,\r\n parameters: storedToken.metadata\r\n }\r\n };\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 accessToken: string;\r\n refreshToken: string;\r\n entity: { id: string; type: AuthEntityType };\r\n} | null> {\r\n // Validate the refresh token\r\n const validation = await validateRefreshToken(refreshToken);\r\n\r\n if (!validation.valid || !validation.entity) {\r\n return null;\r\n }\r\n\r\n await revokeRefreshToken(refreshToken);\r\n\r\n // Create new tokens\r\n const entity = validation.entity;\r\n const newAccessToken = await signAccessToken({\r\n id: entity.id,\r\n type: entity.type,\r\n parameters: entity.parameters || {}\r\n });\r\n\r\n const newRefreshToken = await generateRefreshToken({\r\n id: entity.id,\r\n type: entity.type,\r\n parameters: entity.parameters\r\n });\r\n\r\n return {\r\n accessToken: newAccessToken,\r\n refreshToken: newRefreshToken,\r\n entity: {\r\n id: entity.id,\r\n type: entity.type\r\n }\r\n };\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 const tokenRepository = getLibraries().getAuthTokenRepository();\r\n return 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 const tokenRepository = getLibraries().getAuthTokenRepository();\r\n return 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 entity: { id: string; type: AuthEntityType; parameters?: Record<string, unknown> },\r\n options?: { accessTokenOptions?: SignOptions; refreshTokenExpiresIn?: string | number }\r\n): Promise<{\r\n accessToken: string;\r\n refreshToken: string;\r\n}> {\r\n const accessToken = await signAccessToken({\r\n id: entity.id,\r\n type: entity.type,\r\n parameters: entity.parameters || {}\r\n }, options?.accessTokenOptions);\r\n\r\n const refreshToken = await generateRefreshToken({\r\n id: entity.id,\r\n type: entity.type,\r\n parameters: entity.parameters\r\n }, { expiresIn: options?.refreshTokenExpiresIn });\r\n\r\n return {\r\n accessToken,\r\n refreshToken\r\n };\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(\r\n refreshToken: string,\r\n): Promise<{\r\n success: boolean;\r\n entity?: {\r\n id: string;\r\n type: AuthEntityType;\r\n parameters: Record<string, unknown>;\r\n };\r\n tokenStatus: 'valid' | 'expired' | 'revoked' | 'invalid';\r\n newTokens?: {\r\n accessToken: string;\r\n refreshToken?: string | null;\r\n };\r\n}> {\r\n const tokenRepository = getLibraries().getAuthTokenRepository();\r\n\r\n const storedToken = await tokenRepository.findRefreshToken(refreshToken);\r\n\r\n if (!storedToken) {\r\n return {\r\n success: false,\r\n tokenStatus: 'invalid'\r\n };\r\n }\r\n\r\n const isRevoked = storedToken.isRevoked;\r\n if (isRevoked) {\r\n return {\r\n success: false,\r\n tokenStatus: 'revoked'\r\n };\r\n }\r\n\r\n const isExpired = storedToken.isExpired();\r\n\r\n const entityData = {\r\n id: storedToken.entityId,\r\n type: storedToken.entityType,\r\n parameters: storedToken.metadata || {}\r\n };\r\n\r\n if (isExpired) {\r\n const newTokens = await signTokenPair({\r\n id: storedToken.entityId,\r\n type: storedToken.entityType,\r\n parameters: storedToken.metadata || {}\r\n });\r\n\r\n await tokenRepository.revokeRefreshToken(refreshToken);\r\n\r\n return {\r\n success: true,\r\n entity: entityData,\r\n tokenStatus: 'expired',\r\n newTokens: {\r\n accessToken: newTokens.accessToken,\r\n refreshToken: newTokens.refreshToken\r\n }\r\n };\r\n }\r\n\r\n const newAccessToken = await signAccessToken({\r\n id: storedToken.entityId,\r\n type: storedToken.entityType,\r\n parameters: storedToken.metadata || {}\r\n });\r\n\r\n return {\r\n success: true,\r\n entity: entityData,\r\n tokenStatus: 'valid',\r\n newTokens: {\r\n accessToken: newAccessToken,\r\n refreshToken: null\r\n }\r\n };\r\n}\r\n\r\nexport const RefreshTokenModel = createGlobalModel(RefreshToken);\r\n\r\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,6 +1,6 @@
1
1
  import { DocumentType, ReturnModelType } from '@typegoose/typegoose';
2
2
  import { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';
3
- import { AuthEntityType } from "./index";
3
+ import { AuthEntityType } from './index';
4
4
  export declare class RefreshToken extends TimeStamps {
5
5
  token: string;
6
6
  entityId: string;
@@ -23,11 +23,7 @@ let RefreshToken = RefreshToken_1 = class RefreshToken extends defaultClasses_1.
23
23
  metadata;
24
24
  static async findValidToken(token) {
25
25
  const query = { token, isRevoked: false };
26
- query.$or = [
27
- { expiresAt: { $exists: false } },
28
- { expiresAt: null },
29
- { expiresAt: { $gt: new Date() } }
30
- ];
26
+ query.$or = [{ expiresAt: { $exists: false } }, { expiresAt: null }, { expiresAt: { $gt: new Date() } }];
31
27
  return this.findOne(query);
32
28
  }
33
29
  static async revokeAllForEntity(entityId, entityType) {
@@ -43,7 +39,7 @@ let RefreshToken = RefreshToken_1 = class RefreshToken extends defaultClasses_1.
43
39
  const cutoffDate = olderThan || new Date();
44
40
  const result = await this.deleteMany({
45
41
  expiresAt: { $ne: null, $lt: cutoffDate },
46
- isRevoked: true
42
+ isRevoked: true,
47
43
  });
48
44
  return result.deletedCount;
49
45
  }
@@ -61,7 +57,7 @@ __decorate([
61
57
  (0, typegoose_1.prop)({
62
58
  required: true,
63
59
  type: () => String,
64
- enum: index_1.AuthEntityType
60
+ enum: index_1.AuthEntityType,
65
61
  }),
66
62
  __metadata("design:type", String)
67
63
  ], RefreshToken.prototype, "entityType", void 0);
@@ -83,11 +79,11 @@ exports.RefreshToken = RefreshToken = RefreshToken_1 = __decorate([
83
79
  collection: 'refresh_tokens',
84
80
  autoCreate: true,
85
81
  toJSON: { virtuals: true },
86
- toObject: { virtuals: true }
82
+ toObject: { virtuals: true },
87
83
  },
88
84
  options: {
89
- allowMixed: typegoose_1.Severity.ALLOW
90
- }
85
+ allowMixed: typegoose_1.Severity.ALLOW,
86
+ },
91
87
  }),
92
88
  (0, typegoose_1.index)({ entityId: 1, entityType: 1 }),
93
89
  (0, typegoose_1.index)({ isRevoked: 1 })
@@ -1 +1 @@
1
- {"version":3,"file":"refreshtoken.js","sourceRoot":"/","sources":["libraries/auth/refreshtoken.ts"],"names":[],"mappings":"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","sourcesContent":["import { prop, getModelForClass, modelOptions, index, Severity, DocumentType, ReturnModelType } 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 schemaOptions: {\r\n collection: 'refresh_tokens',\r\n autoCreate: true,\r\n toJSON: { virtuals: true },\r\n toObject: { virtuals: true }\r\n },\r\n options: {\r\n allowMixed: Severity.ALLOW // Allow mixed types for metadata\r\n }\r\n})\r\n@index({ entityId: 1, entityType: 1 })\r\n@index({ isRevoked: 1 })\r\nexport class RefreshToken extends TimeStamps {\r\n @prop({ required: true, type: () => String, unique: true })\r\n public token!: string;\r\n\r\n @prop({ required: true, type: () => String })\r\n public entityId!: string;\r\n\r\n @prop({\r\n required: true,\r\n type: () => String,\r\n enum: AuthEntityType\r\n })\r\n public entityType!: AuthEntityType;\r\n\r\n @prop({ required: false, type: () => Date })\r\n public expiresAt?: Date | null;\r\n\r\n @prop({ required: true, type: () => Boolean, default: false })\r\n public isRevoked!: boolean;\r\n\r\n @prop({ required: false, type: () => Object })\r\n public metadata?: Record<string, unknown>;\r\n\r\n /**\r\n * Static method to find a valid token\r\n */\r\n public static async findValidToken(\r\n this: ReturnModelType<typeof RefreshToken>,\r\n token: string\r\n ): Promise<DocumentType<RefreshToken> | null> {\r\n const query: any = { token, isRevoked: false };\r\n\r\n // Only check expiration if token has an expiration date\r\n query.$or = [\r\n { expiresAt: { $exists: false } },\r\n { expiresAt: null },\r\n { expiresAt: { $gt: new Date() } }\r\n ];\r\n\r\n return this.findOne(query);\r\n }\r\n\r\n /**\r\n * Static method to revoke all tokens for an entity\r\n */\r\n public static async revokeAllForEntity(\r\n this: ReturnModelType<typeof RefreshToken>,\r\n entityId: string,\r\n entityType: AuthEntityType\r\n ): Promise<number> {\r\n const result = await this.updateMany(\r\n { entityId, entityType, isRevoked: false },\r\n { isRevoked: true }\r\n );\r\n\r\n return result.modifiedCount;\r\n }\r\n\r\n /**\r\n * Check if this token is expired\r\n */\r\n public isExpired(): boolean {\r\n if (!this.expiresAt) return false;\r\n return new Date() > this.expiresAt;\r\n }\r\n\r\n /**\r\n * Static method to clean up old expired tokens\r\n * Call this periodically to keep your database clean\r\n */\r\n public static async cleanupExpiredTokens(\r\n this: ReturnModelType<typeof RefreshToken>,\r\n olderThan?: Date\r\n ): Promise<number> {\r\n const cutoffDate = olderThan || new Date();\r\n\r\n const result = await this.deleteMany({\r\n expiresAt: { $ne: null, $lt: cutoffDate },\r\n isRevoked: true // Only delete tokens that are both expired and already revoked\r\n });\r\n\r\n return result.deletedCount;\r\n }\r\n}\r\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,6 +1,6 @@
1
- import { AuthEntityType } from "./index";
2
- import { DocumentType } from "@typegoose/typegoose";
3
- import { RefreshToken } from "./refreshtoken";
1
+ import { AuthEntityType } from './index';
2
+ import { DocumentType } from '@typegoose/typegoose';
3
+ import { RefreshToken } from './refreshtoken';
4
4
  export declare class TokenRepository {
5
5
  saveRefreshToken(token: {
6
6
  token: string;
@@ -29,11 +29,7 @@ let TokenRepository = class TokenRepository {
29
29
  entityId,
30
30
  entityType,
31
31
  isRevoked: false,
32
- $or: [
33
- { expiresAt: { $exists: false } },
34
- { expiresAt: null },
35
- { expiresAt: { $gt: new Date() } }
36
- ]
32
+ $or: [{ expiresAt: { $exists: false } }, { expiresAt: null }, { expiresAt: { $gt: new Date() } }],
37
33
  });
38
34
  }
39
35
  async cleanupExpiredTokens(olderThan) {
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"/","sources":["libraries/auth/repository.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAA0D;AAG1D,mCAA+B;AAGxB,IAAM,eAAe,GAArB,MAAM,eAAe;IAIxB,KAAK,CAAC,gBAAgB,CAAC,KAOtB;QACG,OAAO,yBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAKD,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAChC,OAAO,yBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAKD,KAAK,CAAC,kBAAkB,CAAC,KAAa;QAClC,MAAM,MAAM,GAAG,MAAM,yBAAiB,CAAC,SAAS,CAC5C,EAAE,KAAK,EAAE,EACT,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;QAEF,OAAO,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;IACpC,CAAC;IAKD,KAAK,CAAC,+BAA+B,CACjC,QAAgB,EAChB,UAA0B;QAE1B,MAAM,KAAK,GAAG,MAAM,yBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,KAAK,GAAG,CAAC,CAAC;IACrB,CAAC;IAKD,KAAK,CAAC,wBAAwB,CAC1B,QAAgB,EAChB,UAA0B;QAE1B,OAAO,yBAAiB,CAAC,IAAI,CAAC;YAC1B,QAAQ;YACR,UAAU;YACV,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE;gBACD,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;gBACjC,EAAE,SAAS,EAAE,IAAI,EAAE;gBACnB,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE;aACrC;SACJ,CAAC,CAAC;IACP,CAAC;IAMD,KAAK,CAAC,oBAAoB,CAAC,SAAgB;QACvC,OAAO,yBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;CACJ,CAAA;AAvEY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,gBAAO,GAAE;GACG,eAAe,CAuE3B","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 /**\r\n * Save a refresh token\r\n */\r\n async saveRefreshToken(token: {\r\n token: string;\r\n entityId: string;\r\n entityType: AuthEntityType;\r\n expiresAt?: Date | null;\r\n isRevoked?: boolean;\r\n metadata?: Record<string, unknown>;\r\n }): Promise<DocumentType<RefreshToken>> {\r\n return RefreshTokenModel.create(token);\r\n }\r\n\r\n /**\r\n * Find a refresh token by its value\r\n */\r\n async findRefreshToken(token: string): Promise<DocumentType<RefreshToken> | null> {\r\n return RefreshTokenModel.findValidToken(token);\r\n }\r\n\r\n /**\r\n * Revoke a specific refresh token\r\n */\r\n async revokeRefreshToken(token: string): Promise<boolean> {\r\n const result = await RefreshTokenModel.updateOne(\r\n { token },\r\n { isRevoked: true }\r\n );\r\n\r\n return result.modifiedCount > 0;\r\n }\r\n\r\n /**\r\n * Revoke all refresh tokens for a specific entity\r\n */\r\n async revokeAllRefreshTokensForEntity(\r\n entityId: string,\r\n entityType: AuthEntityType\r\n ): Promise<boolean> {\r\n const count = await RefreshTokenModel.revokeAllForEntity(entityId, entityType);\r\n return count > 0;\r\n }\r\n\r\n /**\r\n * Get all active tokens for an entity\r\n */\r\n async getActiveTokensForEntity(\r\n entityId: string,\r\n entityType: AuthEntityType\r\n ): Promise<DocumentType<RefreshToken>[]> {\r\n return RefreshTokenModel.find({\r\n entityId,\r\n entityType,\r\n isRevoked: false,\r\n $or: [\r\n { expiresAt: { $exists: false } },\r\n { expiresAt: null },\r\n { expiresAt: { $gt: new Date() } }\r\n ]\r\n });\r\n }\r\n\r\n /**\r\n * Clean up expired tokens (can be called periodically if needed)\r\n * Note: MongoDB TTL index will also handle this automatically for tokens with expiresAt\r\n */\r\n async cleanupExpiredTokens(olderThan?: Date): Promise<number> {\r\n return RefreshTokenModel.cleanupExpiredTokens(olderThan);\r\n }\r\n}\r\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,5 +1,5 @@
1
- import { ServiceAccount } from "firebase-admin";
2
- import { EnvironmentConfigurationType } from "./types/EnvironmentConfigurationType";
1
+ import { ServiceAccount } from 'firebase-admin';
2
+ import { EnvironmentConfigurationType } from './types/EnvironmentConfigurationType';
3
3
  export interface ConfigurationOptions {
4
4
  tenet?: string;
5
5
  redisURL?: string;
@@ -14,43 +14,43 @@ const typedi_1 = require("typedi");
14
14
  const EnvironmentConfigurationType_1 = require("./types/EnvironmentConfigurationType");
15
15
  let ConfigurationService = class ConfigurationService {
16
16
  _defaultOptions = {
17
- redisURL: "redis://default:8RCVCiwXRMo6isHgJanL1pE86cRt29YP@redis-12296.fcrce173.eu-west-1-1.ec2.redns.redis-cloud.com:12296",
18
- tenet: "default",
19
- instanceType: "unknown",
17
+ redisURL: 'redis://default:8RCVCiwXRMo6isHgJanL1pE86cRt29YP@redis-12296.fcrce173.eu-west-1-1.ec2.redns.redis-cloud.com:12296',
18
+ tenet: 'default',
19
+ instanceType: 'unknown',
20
20
  firebaseAdmin: {
21
21
  super: {
22
22
  firebaseAdminServiceAccount: {
23
- projectId: "for-poc-325210",
24
- privateKey: "-----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",
25
- clientEmail: "lyxa-core@for-poc-325210.iam.gserviceaccount.com"
26
- }
23
+ projectId: 'for-poc-325210',
24
+ privateKey: '-----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',
25
+ clientEmail: 'lyxa-core@for-poc-325210.iam.gserviceaccount.com',
26
+ },
27
27
  },
28
28
  user: {
29
29
  firebaseAdminServiceAccount: {
30
- projectId: "for-poc-325210",
31
- privateKey: "-----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",
32
- clientEmail: "firebase-adminsdk-onusy@for-poc-325210.iam.gserviceaccount.com"
30
+ projectId: 'for-poc-325210',
31
+ privateKey: '-----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',
32
+ clientEmail: 'firebase-adminsdk-onusy@for-poc-325210.iam.gserviceaccount.com',
33
33
  },
34
- firebaseAdminAppName: "lyxa-user"
34
+ firebaseAdminAppName: 'lyxa-user',
35
35
  },
36
36
  rider: {
37
37
  firebaseAdminServiceAccount: {
38
- projectId: "lyxa-rider-88939",
39
- privateKey: "-----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",
40
- clientEmail: "firebase-adminsdk-qwhrd@lyxa-rider-88939.iam.gserviceaccount.com"
38
+ projectId: 'lyxa-rider-88939',
39
+ privateKey: '-----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',
40
+ clientEmail: 'firebase-adminsdk-qwhrd@lyxa-rider-88939.iam.gserviceaccount.com',
41
41
  },
42
- firebaseAdminAppName: "lyxa-rider"
42
+ firebaseAdminAppName: 'lyxa-rider',
43
43
  },
44
44
  shop: {
45
45
  firebaseAdminServiceAccount: {
46
- projectId: "lyxa-shop",
47
- privateKey: "-----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",
48
- clientEmail: "firebase-adminsdk-w4v98@lyxa-shop.iam.gserviceaccount.com"
46
+ projectId: 'lyxa-shop',
47
+ privateKey: '-----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',
48
+ clientEmail: 'firebase-adminsdk-w4v98@lyxa-shop.iam.gserviceaccount.com',
49
49
  },
50
- firebaseAdminAppName: "lyxa-shop"
50
+ firebaseAdminAppName: 'lyxa-shop',
51
51
  },
52
52
  },
53
- environment: EnvironmentConfigurationType_1.EnvironmentConfigurationType.DEV
53
+ environment: EnvironmentConfigurationType_1.EnvironmentConfigurationType.DEV,
54
54
  };
55
55
  _options;
56
56
  constructor(options) {