@infrab4a/connect 0.0.1

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 (182) hide show
  1. package/README.md +24 -0
  2. package/bundles/infrab4a-connect.umd.js +1074 -0
  3. package/bundles/infrab4a-connect.umd.js.map +1 -0
  4. package/esm2015/infrab4a-connect.js +5 -0
  5. package/esm2015/lib/domain/general/index.js +3 -0
  6. package/esm2015/lib/domain/general/model/base-model-with-identifier-fields.js +2 -0
  7. package/esm2015/lib/domain/general/model/base.model.js +13 -0
  8. package/esm2015/lib/domain/general/model/identifier-fields.js +2 -0
  9. package/esm2015/lib/domain/general/model/index.js +5 -0
  10. package/esm2015/lib/domain/general/model/types/base-model-builder.type.js +2 -0
  11. package/esm2015/lib/domain/general/model/types/index.js +4 -0
  12. package/esm2015/lib/domain/general/model/types/non-function-properties.type.js +2 -0
  13. package/esm2015/lib/domain/general/model/types/non-function-property-name.type.js +2 -0
  14. package/esm2015/lib/domain/general/repository/create.repository.js +2 -0
  15. package/esm2015/lib/domain/general/repository/crud.repository.js +2 -0
  16. package/esm2015/lib/domain/general/repository/delete.repository.js +2 -0
  17. package/esm2015/lib/domain/general/repository/enums/index.js +2 -0
  18. package/esm2015/lib/domain/general/repository/enums/where.enum.js +11 -0
  19. package/esm2015/lib/domain/general/repository/find.repository.js +2 -0
  20. package/esm2015/lib/domain/general/repository/get.repository.js +2 -0
  21. package/esm2015/lib/domain/general/repository/index.js +10 -0
  22. package/esm2015/lib/domain/general/repository/read.repository.js +2 -0
  23. package/esm2015/lib/domain/general/repository/types/index.js +5 -0
  24. package/esm2015/lib/domain/general/repository/types/repository-find-filters.type.js +2 -0
  25. package/esm2015/lib/domain/general/repository/types/repository-find-result.type.js +2 -0
  26. package/esm2015/lib/domain/general/repository/types/repository-limit-options.type.js +2 -0
  27. package/esm2015/lib/domain/general/repository/types/repository-order-by-list.type.js +2 -0
  28. package/esm2015/lib/domain/general/repository/update.repository.js +2 -0
  29. package/esm2015/lib/domain/index.js +3 -0
  30. package/esm2015/lib/domain/users/errors/index.js +2 -0
  31. package/esm2015/lib/domain/users/errors/unauthorized.error.js +7 -0
  32. package/esm2015/lib/domain/users/index.js +6 -0
  33. package/esm2015/lib/domain/users/models/beauty-profile.js +12 -0
  34. package/esm2015/lib/domain/users/models/edition.js +7 -0
  35. package/esm2015/lib/domain/users/models/enums/area.enum.js +13 -0
  36. package/esm2015/lib/domain/users/models/enums/beard-sizes.enum.js +9 -0
  37. package/esm2015/lib/domain/users/models/enums/billing-status.enum.js +5 -0
  38. package/esm2015/lib/domain/users/models/enums/edition-status.enum.js +5 -0
  39. package/esm2015/lib/domain/users/models/enums/hair-types.enum.js +9 -0
  40. package/esm2015/lib/domain/users/models/enums/index.js +10 -0
  41. package/esm2015/lib/domain/users/models/enums/office-position.enum.js +8 -0
  42. package/esm2015/lib/domain/users/models/enums/status.enum.js +5 -0
  43. package/esm2015/lib/domain/users/models/enums/user-type.enum.js +10 -0
  44. package/esm2015/lib/domain/users/models/index.js +6 -0
  45. package/esm2015/lib/domain/users/models/subscription.js +7 -0
  46. package/esm2015/lib/domain/users/models/user.js +17 -0
  47. package/esm2015/lib/domain/users/repositories/beauty-profile.repository.js +2 -0
  48. package/esm2015/lib/domain/users/repositories/edition.repository.js +2 -0
  49. package/esm2015/lib/domain/users/repositories/index.js +5 -0
  50. package/esm2015/lib/domain/users/repositories/subscription.repository.js +2 -0
  51. package/esm2015/lib/domain/users/repositories/user.repository.js +2 -0
  52. package/esm2015/lib/domain/users/services/authentication.service.js +2 -0
  53. package/esm2015/lib/domain/users/services/index.js +2 -0
  54. package/esm2015/lib/domain/users/use-cases/authentication.js +40 -0
  55. package/esm2015/lib/domain/users/use-cases/index.js +3 -0
  56. package/esm2015/lib/domain/users/use-cases/signout.js +12 -0
  57. package/esm2015/lib/errors/index.js +4 -0
  58. package/esm2015/lib/errors/invalid-argument.error.js +7 -0
  59. package/esm2015/lib/errors/not-found.error.js +7 -0
  60. package/esm2015/lib/errors/required-argument.error.js +8 -0
  61. package/esm2015/lib/index.js +5 -0
  62. package/esm2015/lib/infra/firebase/auth/authentication-firebase-auth.service.js +27 -0
  63. package/esm2015/lib/infra/firebase/auth/index.js +2 -0
  64. package/esm2015/lib/infra/firebase/firestore/index.js +4 -0
  65. package/esm2015/lib/infra/firebase/firestore/mixins/index.js +10 -0
  66. package/esm2015/lib/infra/firebase/firestore/mixins/with-create-firestore.mixin.js +30 -0
  67. package/esm2015/lib/infra/firebase/firestore/mixins/with-crud-firestore.mixin.js +10 -0
  68. package/esm2015/lib/infra/firebase/firestore/mixins/with-delete-firestore.mixin.js +18 -0
  69. package/esm2015/lib/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +59 -0
  70. package/esm2015/lib/infra/firebase/firestore/mixins/with-firestore.mixin.js +17 -0
  71. package/esm2015/lib/infra/firebase/firestore/mixins/with-get-firestore.mixin.js +24 -0
  72. package/esm2015/lib/infra/firebase/firestore/mixins/with-helpers.mixin.js +17 -0
  73. package/esm2015/lib/infra/firebase/firestore/mixins/with-sub-collection.mixin.js +11 -0
  74. package/esm2015/lib/infra/firebase/firestore/mixins/with-update-firestore.mixin.js +19 -0
  75. package/esm2015/lib/infra/firebase/firestore/repositories/index.js +2 -0
  76. package/esm2015/lib/infra/firebase/firestore/repositories/users/index.js +5 -0
  77. package/esm2015/lib/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.js +14 -0
  78. package/esm2015/lib/infra/firebase/firestore/repositories/users/subscription-firestore.repository.js +12 -0
  79. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.js +14 -0
  80. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-firestore.repository.js +40 -0
  81. package/esm2015/lib/infra/firebase/firestore/types/firestore-sub.repository.type.js +2 -0
  82. package/esm2015/lib/infra/firebase/firestore/types/firestore.helpers.type.js +2 -0
  83. package/esm2015/lib/infra/firebase/firestore/types/firestore.repository.type.js +2 -0
  84. package/esm2015/lib/infra/firebase/firestore/types/index.js +4 -0
  85. package/esm2015/lib/infra/firebase/index.js +3 -0
  86. package/esm2015/lib/infra/index.js +2 -0
  87. package/esm2015/lib/utils/index.js +4 -0
  88. package/esm2015/lib/utils/mixins/base.mixin.js +6 -0
  89. package/esm2015/lib/utils/mixins/index.js +3 -0
  90. package/esm2015/lib/utils/mixins/mixin-ctor.type.js +2 -0
  91. package/esm2015/public-api.js +2 -0
  92. package/fesm2015/infrab4a-connect.js +501 -0
  93. package/fesm2015/infrab4a-connect.js.map +1 -0
  94. package/infrab4a-connect.d.ts +5 -0
  95. package/lib/domain/general/index.d.ts +2 -0
  96. package/lib/domain/general/model/base-model-with-identifier-fields.d.ts +3 -0
  97. package/lib/domain/general/model/base.model.d.ts +6 -0
  98. package/lib/domain/general/model/identifier-fields.d.ts +4 -0
  99. package/lib/domain/general/model/index.d.ts +4 -0
  100. package/lib/domain/general/model/types/base-model-builder.type.d.ts +5 -0
  101. package/lib/domain/general/model/types/index.d.ts +3 -0
  102. package/lib/domain/general/model/types/non-function-properties.type.d.ts +2 -0
  103. package/lib/domain/general/model/types/non-function-property-name.type.d.ts +3 -0
  104. package/lib/domain/general/repository/create.repository.d.ts +5 -0
  105. package/lib/domain/general/repository/crud.repository.d.ts +7 -0
  106. package/lib/domain/general/repository/delete.repository.d.ts +5 -0
  107. package/lib/domain/general/repository/enums/index.d.ts +1 -0
  108. package/lib/domain/general/repository/enums/where.enum.d.ts +9 -0
  109. package/lib/domain/general/repository/find.repository.d.ts +5 -0
  110. package/lib/domain/general/repository/get.repository.d.ts +5 -0
  111. package/lib/domain/general/repository/index.d.ts +9 -0
  112. package/lib/domain/general/repository/read.repository.d.ts +5 -0
  113. package/lib/domain/general/repository/types/index.d.ts +4 -0
  114. package/lib/domain/general/repository/types/repository-find-filters.type.d.ts +11 -0
  115. package/lib/domain/general/repository/types/repository-find-result.type.d.ts +4 -0
  116. package/lib/domain/general/repository/types/repository-limit-options.type.d.ts +4 -0
  117. package/lib/domain/general/repository/types/repository-order-by-list.type.d.ts +5 -0
  118. package/lib/domain/general/repository/update.repository.d.ts +4 -0
  119. package/lib/domain/index.d.ts +2 -0
  120. package/lib/domain/users/errors/index.d.ts +1 -0
  121. package/lib/domain/users/errors/unauthorized.error.d.ts +4 -0
  122. package/lib/domain/users/index.d.ts +5 -0
  123. package/lib/domain/users/models/beauty-profile.d.ts +12 -0
  124. package/lib/domain/users/models/edition.d.ts +15 -0
  125. package/lib/domain/users/models/enums/area.enum.d.ts +11 -0
  126. package/lib/domain/users/models/enums/beard-sizes.enum.d.ts +7 -0
  127. package/lib/domain/users/models/enums/billing-status.enum.d.ts +3 -0
  128. package/lib/domain/users/models/enums/edition-status.enum.d.ts +3 -0
  129. package/lib/domain/users/models/enums/hair-types.enum.d.ts +7 -0
  130. package/lib/domain/users/models/enums/index.d.ts +9 -0
  131. package/lib/domain/users/models/enums/office-position.enum.d.ts +6 -0
  132. package/lib/domain/users/models/enums/status.enum.d.ts +3 -0
  133. package/lib/domain/users/models/enums/user-type.enum.d.ts +8 -0
  134. package/lib/domain/users/models/index.d.ts +5 -0
  135. package/lib/domain/users/models/subscription.d.ts +15 -0
  136. package/lib/domain/users/models/user.d.ts +23 -0
  137. package/lib/domain/users/repositories/beauty-profile.repository.d.ts +4 -0
  138. package/lib/domain/users/repositories/edition.repository.d.ts +4 -0
  139. package/lib/domain/users/repositories/index.d.ts +4 -0
  140. package/lib/domain/users/repositories/subscription.repository.d.ts +4 -0
  141. package/lib/domain/users/repositories/user.repository.d.ts +4 -0
  142. package/lib/domain/users/services/authentication.service.d.ts +10 -0
  143. package/lib/domain/users/services/index.d.ts +1 -0
  144. package/lib/domain/users/use-cases/authentication.d.ts +21 -0
  145. package/lib/domain/users/use-cases/index.d.ts +2 -0
  146. package/lib/domain/users/use-cases/signout.d.ts +6 -0
  147. package/lib/errors/index.d.ts +3 -0
  148. package/lib/errors/invalid-argument.error.d.ts +4 -0
  149. package/lib/errors/not-found.error.d.ts +4 -0
  150. package/lib/errors/required-argument.error.d.ts +5 -0
  151. package/lib/index.d.ts +4 -0
  152. package/lib/infra/firebase/auth/authentication-firebase-auth.service.d.ts +9 -0
  153. package/lib/infra/firebase/auth/index.d.ts +1 -0
  154. package/lib/infra/firebase/firestore/index.d.ts +3 -0
  155. package/lib/infra/firebase/firestore/mixins/index.d.ts +9 -0
  156. package/lib/infra/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +17 -0
  157. package/lib/infra/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +28 -0
  158. package/lib/infra/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +15 -0
  159. package/lib/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +20 -0
  160. package/lib/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +15 -0
  161. package/lib/infra/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +15 -0
  162. package/lib/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +10 -0
  163. package/lib/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +14 -0
  164. package/lib/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +15 -0
  165. package/lib/infra/firebase/firestore/repositories/index.d.ts +1 -0
  166. package/lib/infra/firebase/firestore/repositories/users/index.d.ts +4 -0
  167. package/lib/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +59 -0
  168. package/lib/infra/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +48 -0
  169. package/lib/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +59 -0
  170. package/lib/infra/firebase/firestore/repositories/users/user-firestore.repository.d.ts +51 -0
  171. package/lib/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +6 -0
  172. package/lib/infra/firebase/firestore/types/firestore.helpers.type.d.ts +8 -0
  173. package/lib/infra/firebase/firestore/types/firestore.repository.type.d.ts +8 -0
  174. package/lib/infra/firebase/firestore/types/index.d.ts +3 -0
  175. package/lib/infra/firebase/index.d.ts +2 -0
  176. package/lib/infra/index.d.ts +1 -0
  177. package/lib/utils/index.d.ts +3 -0
  178. package/lib/utils/mixins/base.mixin.d.ts +3 -0
  179. package/lib/utils/mixins/index.d.ts +2 -0
  180. package/lib/utils/mixins/mixin-ctor.type.d.ts +1 -0
  181. package/package.json +25 -0
  182. package/public-api.d.ts +1 -0
@@ -0,0 +1,3 @@
1
+ export * from './firestore';
2
+ export * from './auth';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9saWIvaW5mcmEvZmlyZWJhc2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxRQUFRLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpcmVzdG9yZSdcbmV4cG9ydCAqIGZyb20gJy4vYXV0aCdcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './firebase';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9saWIvaW5mcmEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpcmViYXNlJ1xuIl19
@@ -0,0 +1,4 @@
1
+ import { chunk, isEmpty, isNil, isNumber, isString } from 'lodash';
2
+ export { chunk, isEmpty, isNil, isNumber, isString };
3
+ export * from './mixins';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQTtBQUNwRCxjQUFjLFVBQVUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNodW5rLCBpc0VtcHR5LCBpc05pbCwgaXNOdW1iZXIsIGlzU3RyaW5nIH0gZnJvbSAnbG9kYXNoJ1xuXG5leHBvcnQgeyBjaHVuaywgaXNFbXB0eSwgaXNOaWwsIGlzTnVtYmVyLCBpc1N0cmluZyB9XG5leHBvcnQgKiBmcm9tICcuL21peGlucydcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export class Base {
2
+ constructor(...args) {
3
+ Object.assign(this, ...args);
4
+ }
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2xpYi91dGlscy9taXhpbnMvYmFzZS5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sSUFBSTtJQUNmLFlBQVksR0FBRyxJQUFnQjtRQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBCYXNlIHtcbiAgY29uc3RydWN0b3IoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgLi4uYXJncylcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './mixin-ctor.type';
2
+ export * from './base.mixin';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9saWIvdXRpbHMvbWl4aW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21peGluLWN0b3IudHlwZSdcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS5taXhpbidcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4tY3Rvci50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvbGliL3V0aWxzL21peGlucy9taXhpbi1jdG9yLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1peGluQ3RvcjxUID0ge30+ID0gbmV3ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBUXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYidcbiJdfQ==
@@ -0,0 +1,501 @@
1
+ import { plainToClass, classToPlain } from 'class-transformer';
2
+ import { __awaiter } from 'tslib';
3
+ import { isNil, isNumber, isString, isEmpty } from 'lodash';
4
+ export { chunk, isEmpty, isNil, isNumber, isString } from 'lodash';
5
+ import firebase from 'firebase/app';
6
+
7
+ class BaseModel {
8
+ constructor(args) {
9
+ Object.assign(this, args);
10
+ }
11
+ static toInstance(data) {
12
+ return plainToClass(this, data);
13
+ }
14
+ toPlain() {
15
+ return classToPlain(this, { exposeUnsetFields: false });
16
+ }
17
+ }
18
+
19
+ var Where;
20
+ (function (Where) {
21
+ Where["EQUALS"] = "==";
22
+ Where["GT"] = ">";
23
+ Where["GTE"] = ">=";
24
+ Where["IN"] = "in";
25
+ Where["LT"] = "<";
26
+ Where["LTE"] = "<=";
27
+ Where["LIKE"] = "like";
28
+ })(Where || (Where = {}));
29
+
30
+ var Status;
31
+ (function (Status) {
32
+ Status["ACTIVE"] = "active";
33
+ })(Status || (Status = {}));
34
+
35
+ var UserType;
36
+ (function (UserType) {
37
+ UserType["B2C"] = "Cliente Transacional";
38
+ UserType["GlamGirl"] = "Glamgirl";
39
+ UserType["MensBoy"] = "Mensboy";
40
+ UserType["B2B"] = "Company";
41
+ UserType["Collaborator"] = "Funcion\u00E1rio";
42
+ UserType["Influencer"] = "Influencer";
43
+ })(UserType || (UserType = {}));
44
+
45
+ var BillingStatus;
46
+ (function (BillingStatus) {
47
+ BillingStatus["PAYED"] = "PAGO";
48
+ })(BillingStatus || (BillingStatus = {}));
49
+
50
+ var EditionStatus;
51
+ (function (EditionStatus) {
52
+ EditionStatus["ALLOCATION_WAITING"] = "Aguardando aloca\u00E7\u00E3o";
53
+ })(EditionStatus || (EditionStatus = {}));
54
+
55
+ var BeardSizes;
56
+ (function (BeardSizes) {
57
+ BeardSizes["BIG"] = "Grande";
58
+ BeardSizes["MEDIUM"] = "M\u00E9dia";
59
+ BeardSizes["SHORT"] = "Curta";
60
+ BeardSizes["MUSTACHE"] = "Bigode";
61
+ BeardSizes["NOTHING"] = "Sem Barba";
62
+ })(BeardSizes || (BeardSizes = {}));
63
+
64
+ var HairTypes;
65
+ (function (HairTypes) {
66
+ HairTypes["Smooth"] = "Liso";
67
+ HairTypes["WAVY"] = "Ondulado";
68
+ HairTypes["CURLY"] = "Cacheado";
69
+ HairTypes["FRIZZY"] = "Crespo";
70
+ HairTypes["BALD"] = "Sou careca";
71
+ })(HairTypes || (HairTypes = {}));
72
+
73
+ var Area;
74
+ (function (Area) {
75
+ Area["GP"] = "Geral";
76
+ Area["CRM"] = "CRM";
77
+ Area["MediaProd"] = "Media Production";
78
+ Area["Tech"] = "Tecnologia";
79
+ Area["Transactional"] = "Transacional";
80
+ Area["Operations"] = "Opera\u00E7\u00F5es";
81
+ Area["Sales"] = "Comercial";
82
+ Area["Finantial"] = "Financeiro";
83
+ Area["HR"] = "RH";
84
+ })(Area || (Area = {}));
85
+
86
+ var OfficePosition;
87
+ (function (OfficePosition) {
88
+ OfficePosition["Intern"] = "Estagi\u00E1rio";
89
+ OfficePosition["Analyst"] = "Analista";
90
+ OfficePosition["Manager"] = "Gerente";
91
+ OfficePosition["Director"] = "Diretor";
92
+ })(OfficePosition || (OfficePosition = {}));
93
+
94
+ class User extends BaseModel {
95
+ static toInstance(data) {
96
+ const instance = super.toInstance(data);
97
+ instance.displayName = `${data.firstName} ${data.lastName}`;
98
+ return instance;
99
+ }
100
+ identifierFields() {
101
+ return ['id'];
102
+ }
103
+ toPlain() {
104
+ const plain = super.toPlain();
105
+ delete plain.beautyProfile;
106
+ return plain;
107
+ }
108
+ }
109
+
110
+ class Subscription extends BaseModel {
111
+ identifierFields() {
112
+ return ['id'];
113
+ }
114
+ }
115
+
116
+ class Edition extends BaseModel {
117
+ identifierFields() {
118
+ return ['id'];
119
+ }
120
+ }
121
+
122
+ class BeautyProfile extends BaseModel {
123
+ toPlain() {
124
+ const plain = super.toPlain();
125
+ delete plain.id;
126
+ return plain;
127
+ }
128
+ identifierFields() {
129
+ return ['id'];
130
+ }
131
+ }
132
+
133
+ class Base {
134
+ constructor(...args) {
135
+ Object.assign(this, ...args);
136
+ }
137
+ }
138
+
139
+ class UnauthorizedError extends Error {
140
+ constructor(message) {
141
+ super(message);
142
+ this.message = message;
143
+ }
144
+ }
145
+
146
+ var SignInMethods;
147
+ (function (SignInMethods) {
148
+ SignInMethods["EMAIL_PASSWORD"] = "email_password";
149
+ SignInMethods["GOOGLE"] = "google";
150
+ })(SignInMethods || (SignInMethods = {}));
151
+ class Authentication {
152
+ constructor(authService, userRepository) {
153
+ this.authService = authService;
154
+ this.userRepository = userRepository;
155
+ }
156
+ signIn({ email, password }, signInMethod) {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ const method = this.getServiceByMethod(signInMethod);
159
+ const userAuth = yield this.authService[method]({ email, password });
160
+ const user = this.userRepository.get(userAuth);
161
+ if (!isNil(user))
162
+ return user;
163
+ if (/^.+@b4a.com.br$/.test(userAuth.email))
164
+ return this.createsUserByCredential(userAuth);
165
+ throw new UnauthorizedError('Invalid credentials');
166
+ });
167
+ }
168
+ getServiceByMethod(signInMethod) {
169
+ return signInMethod === SignInMethods.EMAIL_PASSWORD ? 'signInWithEmailAndPassword' : 'signInWithGoogle';
170
+ }
171
+ createsUserByCredential(user) {
172
+ var _a;
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ const [firstName, lastName] = (_a = user.displayName) === null || _a === void 0 ? void 0 : _a.split(/\s/);
175
+ const person = User.toInstance(Object.assign(Object.assign({}, user), { cpf: '', birthday: new Date(), firstName,
176
+ lastName, acceptsNewsletter: false, area: Area.Transactional, officePosition: OfficePosition.Intern, type: UserType.Collaborator }));
177
+ return this.userRepository.create(person);
178
+ });
179
+ }
180
+ }
181
+
182
+ class SignOut {
183
+ constructor(authService) {
184
+ this.authService = authService;
185
+ }
186
+ signOut() {
187
+ return __awaiter(this, void 0, void 0, function* () {
188
+ yield this.authService.signOut();
189
+ });
190
+ }
191
+ }
192
+
193
+ class InvalidArgumentError extends Error {
194
+ constructor(message) {
195
+ super(message);
196
+ this.message = message;
197
+ }
198
+ }
199
+
200
+ class RequiredArgumentError extends Error {
201
+ constructor(args) {
202
+ super(`Required arguments: ${args.join(', ')}`);
203
+ this.args = args;
204
+ this.arguments = args;
205
+ }
206
+ }
207
+
208
+ class NotFoundError extends Error {
209
+ constructor(message) {
210
+ super(message);
211
+ this.message = message;
212
+ }
213
+ }
214
+
215
+ const withFirestore = (MixinBase) => {
216
+ return class extends MixinBase {
217
+ constructor(...args) {
218
+ super(args);
219
+ }
220
+ collection(path) {
221
+ return this.firestore.collection(path || this.collectionName).withConverter(this.buildModelInstance());
222
+ }
223
+ buildModelInstance() {
224
+ return {
225
+ toFirestore: (data) => data.toPlain(),
226
+ fromFirestore: (snap) => this.model.toInstance(Object.assign({ id: snap.id }, snap.data())),
227
+ };
228
+ }
229
+ };
230
+ };
231
+
232
+ const withHelpers = (MixinBase) => {
233
+ return class extends MixinBase {
234
+ toArray(snapShot) {
235
+ if (Array.isArray(snapShot)) {
236
+ return snapShot.map((doc) => doc.data());
237
+ }
238
+ else {
239
+ return snapShot.docs.map((doc) => doc.data());
240
+ }
241
+ }
242
+ isSubCollection(repository) {
243
+ return !isNil(Object.keys(this).find((key) => key === 'parentRepository'));
244
+ }
245
+ };
246
+ };
247
+
248
+ const withGetFirestore = (MixinBase) => {
249
+ return class GetFirestore extends MixinBase {
250
+ get(identifiers) {
251
+ return __awaiter(this, void 0, void 0, function* () {
252
+ const doc = yield this.collection(this.buildCollectionPathForGet(identifiers))
253
+ .doc(Object.values(identifiers).shift().toString())
254
+ .get();
255
+ const data = doc.data();
256
+ if (isNil(data))
257
+ throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`);
258
+ return data;
259
+ });
260
+ }
261
+ buildCollectionPathForGet(identifiers) {
262
+ return this.isSubCollection(this)
263
+ ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
264
+ : this.collectionName;
265
+ }
266
+ };
267
+ };
268
+
269
+ const withFindFirestore = (MixinBase) => {
270
+ return class FindFirestore extends MixinBase {
271
+ constructor() {
272
+ super(...arguments);
273
+ this.makeFirestoreWhere = (queryReference, filter) => Object.keys(filter).reduce((query, fieldName) => this.buildWhereSentence(query, fieldName, filter[fieldName]), queryReference);
274
+ this.buildWhereSentence = (queryReference, fieldName, options) => {
275
+ if (options.operator === Where.LIKE) {
276
+ queryReference = queryReference.where(fieldName.toString(), '>=', options.value);
277
+ queryReference = queryReference.where(fieldName.toString(), '<=', `${options.value}~`);
278
+ }
279
+ return queryReference.where(fieldName.toString(), options.operator, options.value);
280
+ };
281
+ }
282
+ find(filters, limits, orderBy) {
283
+ return __awaiter(this, void 0, void 0, function* () {
284
+ let query = this.collection(this.buildCollectionPathForFind(filters));
285
+ filters === null || filters === void 0 ? void 0 : filters.forEach((filterer) => (query = this.makeFirestoreWhere(query, filterer)));
286
+ orderBy === null || orderBy === void 0 ? void 0 : orderBy.forEach((orderer) => Object.keys(orderer).forEach((fieldName) => (query = query.orderBy(fieldName, orderer[fieldName]))));
287
+ query = this.defineLimits(query, filters, limits);
288
+ const docs = yield query.get();
289
+ const data = docs.docs.map((doc) => doc.data());
290
+ return {
291
+ data,
292
+ count: this.calculateCount(data, limits),
293
+ };
294
+ });
295
+ }
296
+ buildCollectionPathForFind(filters) {
297
+ var _a;
298
+ if (!this.isSubCollection(this))
299
+ return this.collectionName;
300
+ const parentIdField = this.parentIdField;
301
+ const parentId = (_a = filters.find((groupFilter) => { var _a; return Boolean((_a = groupFilter[parentIdField]) === null || _a === void 0 ? void 0 : _a.value); })) === null || _a === void 0 ? void 0 : _a[parentIdField].value;
302
+ return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`;
303
+ }
304
+ defineLimits(query, filters, limits) {
305
+ if (limits === null || limits === void 0 ? void 0 : limits.offset) {
306
+ if (limits.offset instanceof this.model)
307
+ query.startAfter(this.collection(this.buildCollectionPathForFind(filters)).doc(limits.offset[limits.offset.identifierFields().shift()]));
308
+ if (isNumber(limits.offset) || isString(limits.offset))
309
+ query.startAt(limits.offset);
310
+ }
311
+ if (limits === null || limits === void 0 ? void 0 : limits.limit)
312
+ query.limit(limits.limit);
313
+ return query;
314
+ }
315
+ calculateCount(data, limits) {
316
+ if (data.length <= 0)
317
+ return 0;
318
+ if (data.length < (limits === null || limits === void 0 ? void 0 : limits.limit))
319
+ return data.length;
320
+ return Infinity;
321
+ }
322
+ };
323
+ };
324
+
325
+ const withCreateFirestore = (MixinBase) => {
326
+ return class CreateFirestore extends MixinBase {
327
+ create(data) {
328
+ return __awaiter(this, void 0, void 0, function* () {
329
+ const docRef = yield this.save(this.model.toInstance(data));
330
+ const doc = yield docRef.get();
331
+ return doc.data();
332
+ });
333
+ }
334
+ save(data) {
335
+ var _a;
336
+ return __awaiter(this, void 0, void 0, function* () {
337
+ const id = (_a = data[data.identifierFields().shift()]) === null || _a === void 0 ? void 0 : _a.toString();
338
+ if (isEmpty(id))
339
+ return this.collection(this.buildCollectionPathForAdd(data)).add(data);
340
+ const docRef = this.collection().doc(id);
341
+ yield docRef.set(data);
342
+ return docRef;
343
+ });
344
+ }
345
+ buildCollectionPathForAdd(identifiers) {
346
+ return this.isSubCollection(this)
347
+ ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
348
+ : this.collectionName;
349
+ }
350
+ };
351
+ };
352
+
353
+ const withUpdateFirestore = (MixinBase) => {
354
+ return class UpdateFirestore extends MixinBase {
355
+ update(data) {
356
+ return __awaiter(this, void 0, void 0, function* () {
357
+ const docRef = this.collection(this.buildCollectionPathForUpdate(data)).doc(data[data.identifierFields().shift().toString()]);
358
+ yield docRef.update(data.toPlain());
359
+ const doc = yield docRef.get();
360
+ return doc.data();
361
+ });
362
+ }
363
+ buildCollectionPathForUpdate(identifiers) {
364
+ return this.isSubCollection(this)
365
+ ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
366
+ : this.collectionName;
367
+ }
368
+ };
369
+ };
370
+
371
+ const withDeleteFirestore = (MixinBase) => {
372
+ return class DeleteFirestore extends MixinBase {
373
+ delete(identifiers) {
374
+ return __awaiter(this, void 0, void 0, function* () {
375
+ yield this.collection(this.buildCollectionPathForRemove(identifiers))
376
+ .doc(Object.values(identifiers).shift().toString())
377
+ .delete();
378
+ });
379
+ }
380
+ buildCollectionPathForRemove(identifiers) {
381
+ return this.isSubCollection(this)
382
+ ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
383
+ : this.collectionName;
384
+ }
385
+ };
386
+ };
387
+
388
+ const withSubCollection = (MixinBase, ParentModel) => {
389
+ return class SubCollectionMix extends MixinBase {
390
+ constructor(...args) {
391
+ super(args);
392
+ }
393
+ collection(path) {
394
+ return super.collection(path);
395
+ }
396
+ };
397
+ };
398
+
399
+ const withCrudFirestore = (MixinBase) => {
400
+ return class CrudFirestore extends withUpdateFirestore(withGetFirestore(withFindFirestore(withDeleteFirestore(withCreateFirestore(MixinBase))))) {
401
+ };
402
+ };
403
+
404
+ class SubscriptionFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
405
+ constructor(firestore) {
406
+ super();
407
+ this.firestore = firestore;
408
+ this.collectionName = 'subscription';
409
+ this.model = Subscription;
410
+ }
411
+ }
412
+
413
+ class UserFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
414
+ constructor(firestore) {
415
+ super();
416
+ this.firestore = firestore;
417
+ this.collectionName = 'users';
418
+ this.model = User;
419
+ }
420
+ get(identifiers) {
421
+ const _super = Object.create(null, {
422
+ get: { get: () => super.get }
423
+ });
424
+ return __awaiter(this, void 0, void 0, function* () {
425
+ const user = yield _super.get.call(this, { id: identifiers.id });
426
+ user.beautyProfile = yield this.getBeautyProfile(user.id);
427
+ return user;
428
+ });
429
+ }
430
+ getBeautyProfile(userId) {
431
+ return __awaiter(this, void 0, void 0, function* () {
432
+ const beautyProfile = yield this.collection()
433
+ .doc(userId)
434
+ .collection('CX')
435
+ .withConverter(this.buildBeautyProfileModelInstance())
436
+ .doc('beautyProfile')
437
+ .get();
438
+ return beautyProfile.data();
439
+ });
440
+ }
441
+ buildBeautyProfileModelInstance() {
442
+ return {
443
+ toFirestore: (data) => data.toPlain(),
444
+ fromFirestore: (snap) => BeautyProfile.toInstance(snap.data()),
445
+ };
446
+ }
447
+ }
448
+
449
+ class SubscriptionEditionFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base))), Subscription) {
450
+ constructor(firestore, parentRepository) {
451
+ super();
452
+ this.firestore = firestore;
453
+ this.parentRepository = parentRepository;
454
+ this.collectionName = 'editions';
455
+ this.parentIdField = 'subscriptionId';
456
+ this.model = Edition;
457
+ }
458
+ }
459
+
460
+ class UserBeautyProfileFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base))), User) {
461
+ constructor(firestore, parentRepository) {
462
+ super();
463
+ this.firestore = firestore;
464
+ this.parentRepository = parentRepository;
465
+ this.collectionName = 'CX';
466
+ this.parentIdField = 'userId';
467
+ this.model = BeautyProfile;
468
+ }
469
+ }
470
+
471
+ class AuthenticationFirebaseAuthService {
472
+ constructor(firebaseAuth) {
473
+ this.firebaseAuth = firebaseAuth;
474
+ }
475
+ signInWithEmailAndPassword(data) {
476
+ return __awaiter(this, void 0, void 0, function* () {
477
+ const credentials = yield this.firebaseAuth.signInWithEmailAndPassword(data.email, data.password);
478
+ const user = credentials.user;
479
+ return { id: user.uid, displayName: user.displayName, email: user.email, phone: user.phoneNumber };
480
+ });
481
+ }
482
+ signInWithGoogle() {
483
+ return __awaiter(this, void 0, void 0, function* () {
484
+ const credentials = yield this.firebaseAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
485
+ const user = credentials.user;
486
+ return { id: user.uid, displayName: user.displayName, email: user.email, phone: user.phoneNumber };
487
+ });
488
+ }
489
+ signOut() {
490
+ return __awaiter(this, void 0, void 0, function* () {
491
+ this.firebaseAuth.signOut();
492
+ });
493
+ }
494
+ }
495
+
496
+ /**
497
+ * Generated bundle index. Do not edit.
498
+ */
499
+
500
+ export { Area, Authentication, AuthenticationFirebaseAuthService, Base, BaseModel, BeardSizes, BeautyProfile, BillingStatus, Edition, EditionStatus, HairTypes, InvalidArgumentError, NotFoundError, OfficePosition, RequiredArgumentError, SignInMethods, SignOut, Status, Subscription, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, UnauthorizedError, User, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserType, Where, withCreateFirestore, withCrudFirestore, withDeleteFirestore, withFindFirestore, withFirestore, withGetFirestore, withHelpers, withSubCollection, withUpdateFirestore };
501
+ //# sourceMappingURL=infrab4a-connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infrab4a-connect.js","sources":["../../../projects/connect/src/lib/domain/general/model/base.model.ts","../../../projects/connect/src/lib/domain/general/repository/enums/where.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/status.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/user-type.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/billing-status.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/edition-status.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/beard-sizes.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/hair-types.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/area.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/office-position.enum.ts","../../../projects/connect/src/lib/domain/users/models/user.ts","../../../projects/connect/src/lib/domain/users/models/subscription.ts","../../../projects/connect/src/lib/domain/users/models/edition.ts","../../../projects/connect/src/lib/domain/users/models/beauty-profile.ts","../../../projects/connect/src/lib/utils/mixins/base.mixin.ts","../../../projects/connect/src/lib/domain/users/errors/unauthorized.error.ts","../../../projects/connect/src/lib/domain/users/use-cases/authentication.ts","../../../projects/connect/src/lib/domain/users/use-cases/signout.ts","../../../projects/connect/src/lib/errors/invalid-argument.error.ts","../../../projects/connect/src/lib/errors/required-argument.error.ts","../../../projects/connect/src/lib/errors/not-found.error.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-helpers.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-get-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-find-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-create-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-update-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-delete-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-sub-collection.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-crud-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/subscription-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/user-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/auth/authentication-firebase-auth.service.ts","../../../projects/connect/src/infrab4a-connect.ts"],"sourcesContent":["import { plainToClass, classToPlain } from 'class-transformer'\n\nimport { NonFunctionProperties } from './types/non-function-properties.type'\n\nexport class BaseModel<Model> {\n constructor(args?: Partial<Model>) {\n Object.assign(this, args)\n }\n\n static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T>): T {\n return plainToClass(this, data) as any\n }\n\n toPlain(): any {\n return classToPlain(this, { exposeUnsetFields: false })\n }\n}\n","export enum Where {\n EQUALS = '==',\n GT = '>',\n GTE = '>=',\n IN = 'in',\n LT = '<',\n LTE = '<=',\n LIKE = 'like',\n}\n","export enum Status {\n ACTIVE = 'active',\n}\n","export enum UserType {\n B2C = 'Cliente Transacional',\n GlamGirl = 'Glamgirl',\n MensBoy = 'Mensboy',\n B2B = 'Company',\n Collaborator = 'Funcionário',\n Influencer = 'Influencer',\n}\n","export enum BillingStatus {\n PAYED = 'PAGO',\n}\n","export enum EditionStatus {\n ALLOCATION_WAITING = 'Aguardando alocação',\n}\n","export enum BeardSizes {\n BIG = 'Grande',\n MEDIUM = 'Média',\n SHORT = 'Curta',\n MUSTACHE = 'Bigode',\n NOTHING = 'Sem Barba',\n}\n","export enum HairTypes {\n Smooth = 'Liso',\n WAVY = 'Ondulado',\n CURLY = 'Cacheado',\n FRIZZY = 'Crespo',\n BALD = 'Sou careca',\n}\n","export enum Area {\n GP = 'Geral',\n CRM = 'CRM',\n MediaProd = 'Media Production',\n Tech = 'Tecnologia',\n Transactional = 'Transacional',\n Operations = 'Opera\\u00E7\\u00F5es',\n Sales = 'Comercial',\n Finantial = 'Financeiro',\n HR = 'RH',\n}\n","export enum OfficePosition {\n Intern = 'Estagi\\u00E1rio',\n Analyst = 'Analista',\n Manager = 'Gerente',\n Director = 'Diretor',\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionProperties, NonFunctionPropertyNames } from '../../general/model/types'\n\nimport { Area, OfficePosition, UserType } from './enums'\nimport { BeautyProfile } from './beauty-profile'\n\nexport class User extends BaseModel<User> implements IdentifierFields<User> {\n id: string\n cpf?: string\n email: string\n firstName: string\n lastName: string\n displayName?: string\n phone: string\n birthday?: Date\n acceptsNewsletter: boolean\n type?: UserType\n beautyProfile?: BeautyProfile\n area?: Area\n officePosition?: OfficePosition\n\n static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T> & NonFunctionProperties<User>): T {\n const instance = super.toInstance<User>(data)\n\n instance.displayName = `${data.firstName} ${data.lastName}`\n\n return instance as any\n }\n\n identifierFields(): NonFunctionPropertyNames<User>[] {\n return ['id']\n }\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.beautyProfile\n\n return plain\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nimport { Edition } from './edition'\nimport { Status } from './enums/status.enum'\nimport { User } from './user'\n\nexport class Subscription extends BaseModel<Subscription> implements IdentifierFields<Subscription> {\n id: string\n nextPayment: Date\n recurrence: boolean\n status: Status\n editions: Edition[]\n user: User\n\n identifierFields(): NonFunctionPropertyNames<Subscription>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nimport { EditionStatus, BillingStatus } from './enums'\n\nexport class Edition extends BaseModel<Edition> implements IdentifierFields<Edition> {\n id: string\n subscriptionId: string\n billingStatus: BillingStatus\n editionId: number\n editionStatus: EditionStatus\n installment: number\n paymentId: string\n draftId?: string\n\n identifierFields(): NonFunctionPropertyNames<Edition>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nimport { BeardSizes, HairTypes } from './enums'\n\nexport class BeautyProfile extends BaseModel<BeautyProfile> implements IdentifierFields<BeautyProfile> {\n id: string\n userId: string\n beardSize?: BeardSizes\n hairType?: HairTypes\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.id\n\n return plain\n }\n\n identifierFields(): NonFunctionPropertyNames<BeautyProfile>[] {\n return ['id']\n }\n}\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\n }\n}\n","export class UnauthorizedError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { Area, OfficePosition, User, UserType } from '../models'\nimport { AuthenticationService } from '../services/authentication.service'\nimport { isNil } from '../../../utils'\nimport { UnauthorizedError } from '../errors/unauthorized.error'\nimport { UserRepository } from '../repositories/user.repository'\n\nexport enum SignInMethods {\n EMAIL_PASSWORD = 'email_password',\n GOOGLE = 'google',\n}\n\ntype SignInMethod = Lowercase<keyof typeof SignInMethods>\n\ntype SignInParams = {\n email?: string\n password?: string\n}\n\nexport class Authentication {\n constructor(private readonly authService: AuthenticationService, private readonly userRepository: UserRepository) {}\n\n async signIn({ email, password }: SignInParams, signInMethod: SignInMethod): Promise<User> {\n const method = this.getServiceByMethod(signInMethod)\n const userAuth = await this.authService[method]({ email, password })\n const user = this.userRepository.get(userAuth)\n\n if (!isNil(user)) return user\n if (/^.+@b4a.com.br$/.test(userAuth.email)) return this.createsUserByCredential(userAuth)\n\n throw new UnauthorizedError('Invalid credentials')\n }\n\n private getServiceByMethod(signInMethod: SignInMethod): string {\n return signInMethod === SignInMethods.EMAIL_PASSWORD ? 'signInWithEmailAndPassword' : 'signInWithGoogle'\n }\n\n private async createsUserByCredential(user: Partial<User>): Promise<User> {\n const [firstName, lastName] = user.displayName?.split(/\\s/)\n const person = User.toInstance({\n ...user,\n cpf: '',\n birthday: new Date(),\n firstName,\n lastName,\n acceptsNewsletter: false,\n area: Area.Transactional,\n officePosition: OfficePosition.Intern,\n type: UserType.Collaborator,\n })\n\n return this.userRepository.create(person)\n }\n}\n","import { AuthenticationService } from '../services/authentication.service'\n\nexport class SignOut {\n constructor(private readonly authService: AuthenticationService) {}\n\n async signOut(): Promise<void> {\n await this.authService.signOut()\n }\n}\n","export class InvalidArgumentError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","export class RequiredArgumentError extends Error {\n arguments: string[]\n\n constructor(readonly args: string[]) {\n super(`Required arguments: ${args.join(', ')}`)\n\n this.arguments = args\n }\n}\n","export class NotFoundError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BaseModelBuilder, BaseModelWithIdentifier } from '../../../../domain'\nimport { FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withFirestore = <TBase extends BaseModelWithIdentifier<TBase>>(MixinBase: MixinCtor) => {\n return class extends MixinBase implements FirestoreRepository<TBase> {\n readonly firestore?: FirebaseFirestore\n collectionName: string\n model: BaseModelBuilder<TBase>\n\n constructor(...args: Array<any>) {\n super(args)\n }\n\n collection(path?: string): CollectionReference<TBase> {\n return this.firestore.collection(path || this.collectionName).withConverter(this.buildModelInstance())\n }\n\n buildModelInstance(): {\n toFirestore: (data: TBase) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>) => TBase\n } {\n return {\n toFirestore: (data: TBase): DocumentData => data.toPlain(),\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>): TBase =>\n this.model.toInstance({ id: snap.id, ...snap.data() }),\n }\n }\n }\n}\n","import { QuerySnapshot, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BaseModelWithIdentifier } from '../../../../domain'\n\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\n\nexport const withHelpers = <Model extends BaseModelWithIdentifier<Model>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor & TMixinBase,\n) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends BaseModelWithIdentifier<T>>(snapShot: QuerySnapshot<T> | QueryDocumentSnapshot<T>[]): T[] {\n if (Array.isArray(snapShot)) {\n return snapShot.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n } else {\n return snapShot.docs.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n }\n }\n\n isSubCollection<T extends BaseModelWithIdentifier<T>>(\n repository: FirestoreRepository<T>,\n ): repository is FirestoreSubRepository<T> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { BaseModelWithIdentifier, GetRepository, NonFunctionProperties } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { NotFoundError } from '../../../../errors'\n\nexport const withGetFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: NonFunctionProperties<TBase>): Promise<TBase> {\n const doc = await this.collection(this.buildCollectionPathForGet(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .get()\n const data = doc.data()\n\n if (isNil(data)) throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`)\n\n return data\n }\n\n buildCollectionPathForGet(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { CollectionReference, Query, WhereFilterOp } from '@firebase/firestore-types'\n\nimport {\n BaseModelWithIdentifier,\n FindRepository,\n NonFunctionPropertyNames,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n RepositoryOrderByList,\n Where,\n} from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor, isNumber, isString } from '../../../../utils'\n\nexport const withFindFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class FindFirestore extends MixinBase implements FindRepository<TBase> {\n async find(\n filters?: RepositoryFindFielters<TBase>[],\n limits?: RepositoryLimitOptions<TBase>,\n orderBy?: RepositoryOrderByList<TBase>,\n ): Promise<RepositoryFindResult<TBase>> {\n let query: CollectionReference<TBase> | Query<TBase> = this.collection(this.buildCollectionPathForFind(filters))\n\n filters?.forEach((filterer) => (query = this.makeFirestoreWhere(query, filterer)))\n\n orderBy?.forEach((orderer) =>\n Object.keys(orderer).forEach((fieldName) => (query = query.orderBy(fieldName, orderer[fieldName]))),\n )\n\n query = this.defineLimits(query, filters, limits)\n\n const docs = await query.get()\n const data = docs.docs.map((doc) => doc.data())\n\n return {\n data,\n count: this.calculateCount(data, limits),\n }\n }\n\n buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>[]): string {\n if (!this.isSubCollection<TBase>(this)) return this.collectionName\n\n const parentIdField = this.parentIdField\n const parentId = filters.find((groupFilter) => Boolean(groupFilter[parentIdField]?.value))?.[parentIdField].value\n\n return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`\n }\n\n makeFirestoreWhere = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n filter: RepositoryFindFielters<TBase>,\n ): Query<TBase> =>\n Object.keys(filter).reduce(\n (query: Query<TBase>, fieldName: string) =>\n this.buildWhereSentence(query, fieldName as NonFunctionPropertyNames<TBase>, filter[fieldName]),\n queryReference,\n )\n\n buildWhereSentence = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n fieldName: NonFunctionPropertyNames<TBase>,\n options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>,\n ): Query<TBase> => {\n if (options.operator === Where.LIKE) {\n queryReference = queryReference.where(fieldName.toString(), '>=', options.value)\n queryReference = queryReference.where(fieldName.toString(), '<=', `${options.value}~`)\n }\n\n return queryReference.where(fieldName.toString(), options.operator as WhereFilterOp, options.value)\n }\n\n defineLimits(\n query: CollectionReference<TBase> | Query<TBase>,\n filters: RepositoryFindFielters<TBase>[],\n limits: RepositoryLimitOptions<TBase>,\n ): Query<TBase> {\n if (limits?.offset) {\n if (limits.offset instanceof this.model)\n query.startAfter(\n this.collection(this.buildCollectionPathForFind(filters)).doc(\n limits.offset[limits.offset.identifierFields().shift() as string],\n ),\n )\n if (isNumber(limits.offset) || isString(limits.offset)) query.startAt(limits.offset)\n }\n if (limits?.limit) query.limit(limits.limit)\n\n return query\n }\n\n calculateCount(data: TBase[], limits: RepositoryLimitOptions<TBase>): number {\n if (data.length <= 0) return 0\n if (data.length < limits?.limit) return data.length\n\n return Infinity\n }\n }\n}\n","import { DocumentReference } from '@firebase/firestore-types'\n\nimport { CreateRepository, BaseModelWithIdentifier } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isEmpty, MixinCtor } from '../../../../utils'\n\nexport const withCreateFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class CreateFirestore extends MixinBase implements CreateRepository<TBase> {\n async create(data: Partial<TBase>): Promise<TBase> {\n const docRef = await this.save(this.model.toInstance(data))\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n async save(data: TBase): Promise<DocumentReference<TBase>> {\n const id = data[data.identifierFields().shift()]?.toString()\n\n if (isEmpty(id)) return this.collection(this.buildCollectionPathForAdd(data)).add(data)\n\n const docRef = this.collection().doc(id)\n await docRef.set(data)\n\n return docRef\n }\n\n buildCollectionPathForAdd(identifiers: Partial<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { BaseModelWithIdentifier, UpdateRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withUpdateFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class UpdateFirestore extends MixinBase implements UpdateRepository<TBase> {\n async update(data: TBase): Promise<TBase> {\n const docRef = this.collection(this.buildCollectionPathForUpdate(data)).doc(\n data[data.identifierFields().shift().toString()],\n )\n\n await docRef.update(data.toPlain())\n\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n buildCollectionPathForUpdate(identifiers: TBase): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { BaseModelWithIdentifier, NonFunctionProperties, DeleteRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withDeleteFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class DeleteFirestore extends MixinBase implements DeleteRepository<TBase> {\n async delete(identifiers: NonFunctionProperties<TBase>): Promise<void> {\n await this.collection(this.buildCollectionPathForRemove(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .delete()\n }\n\n buildCollectionPathForRemove(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BaseModelWithIdentifier, NonFunctionPropertyNames } from '../../../../domain'\nimport { FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withSubCollection = <\n TBase extends BaseModelWithIdentifier<TBase>,\n TBaseParent extends BaseModelWithIdentifier<TBaseParent>,\n TMixinBase extends MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase>> & TMixinBase,\n ParentModel: new () => TBaseParent,\n) => {\n return class SubCollectionMix\n extends MixinBase\n implements FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>>\n {\n readonly parentRepository: FirestoreRepository<InstanceType<typeof ParentModel>>\n parentIdField: NonFunctionPropertyNames<TBase>\n\n constructor(...args: Array<any>) {\n super(args)\n }\n\n collection(path?: string): CollectionReference<TBase> {\n return super.collection(path)\n }\n }\n}\n","import { BaseModelWithIdentifier, CrudRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nimport { withCreateFirestore } from './with-create-firestore.mixin'\nimport { withDeleteFirestore } from './with-delete-firestore.mixin'\nimport { withFindFirestore } from './with-find-firestore.mixin'\nimport { withGetFirestore } from './with-get-firestore.mixin'\nimport { withUpdateFirestore } from './with-update-firestore.mixin'\n\nexport const withCrudFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class CrudFirestore\n extends withUpdateFirestore(\n withGetFirestore(withFindFirestore(withDeleteFirestore(withCreateFirestore(MixinBase)))),\n )\n implements CrudRepository<TBase> {}\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Subscription, SubscriptionRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Subscription>(Base)))\n implements SubscriptionRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscription'\n this.model = Subscription\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { BeautyProfile, User, UserRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class UserFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<User>(Base)))\n implements UserRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'users'\n this.model = User\n }\n\n async get(identifiers: Partial<User>): Promise<User> {\n const user = await super.get({ id: identifiers.id })\n\n user.beautyProfile = await this.getBeautyProfile(user.id)\n\n return user\n }\n\n private async getBeautyProfile(userId: string): Promise<BeautyProfile> {\n const beautyProfile = await this.collection()\n .doc(userId)\n .collection('CX')\n .withConverter(this.buildBeautyProfileModelInstance())\n .doc('beautyProfile')\n .get()\n\n return beautyProfile.data()\n }\n\n private buildBeautyProfileModelInstance(): {\n toFirestore: (data: BeautyProfile) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>) => BeautyProfile\n } {\n return {\n toFirestore: (data: BeautyProfile): DocumentData => data.toPlain(),\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>): BeautyProfile =>\n BeautyProfile.toInstance(snap.data()),\n }\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Edition, Subscription, EditionRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionEditionFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Edition>(Base))), Subscription)\n implements EditionRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\n super()\n this.collectionName = 'editions'\n this.parentIdField = 'subscriptionId'\n this.model = Edition\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { BeautyProfile, BeautyProfileRepository, User } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserBeautyProfileFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<BeautyProfile>(Base))), User)\n implements BeautyProfileRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'CX'\n this.parentIdField = 'userId'\n this.model = BeautyProfile\n }\n}\n","import firebase from 'firebase/app'\n\nimport { AuthenticationService, LoginAndPasswordParams, User } from '../../../domain'\n\nexport class AuthenticationFirebaseAuthService implements AuthenticationService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<Partial<User>> {\n const credentials = await this.firebaseAuth.signInWithEmailAndPassword(data.email, data.password)\n const user = credentials.user\n\n return { id: user.uid, displayName: user.displayName, email: user.email, phone: user.phoneNumber }\n }\n\n async signInWithGoogle(): Promise<Partial<User>> {\n const credentials = await this.firebaseAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider())\n const user = credentials.user\n\n return { id: user.uid, displayName: user.displayName, email: user.email, phone: user.phoneNumber }\n }\n\n async signOut(): Promise<void> {\n this.firebaseAuth.signOut()\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@infrab4a/connect" />
5
+ export * from './public-api';
@@ -0,0 +1,2 @@
1
+ export * from './model';
2
+ export * from './repository';
@@ -0,0 +1,3 @@
1
+ import { BaseModel } from './base.model';
2
+ import { IdentifierFields } from './identifier-fields';
3
+ export declare type BaseModelWithIdentifier<Model> = BaseModel<Model> & IdentifierFields<Model>;