@infrab4a/connect 3.15.0-beta.1 → 3.15.0

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 (90) hide show
  1. package/bundles/infrab4a-connect.umd.js +706 -227
  2. package/bundles/infrab4a-connect.umd.js.map +1 -1
  3. package/domain/catalog/models/category-base.d.ts +30 -0
  4. package/domain/catalog/models/category-filter.d.ts +2 -0
  5. package/domain/catalog/models/category-for-product.d.ts +5 -0
  6. package/domain/catalog/models/category.d.ts +5 -27
  7. package/domain/catalog/models/index.d.ts +1 -0
  8. package/domain/catalog/models/kit-product.d.ts +3 -3
  9. package/domain/catalog/models/product-base.d.ts +40 -0
  10. package/domain/catalog/models/product-for-category.d.ts +7 -0
  11. package/domain/catalog/models/product-for-kit.d.ts +7 -0
  12. package/domain/catalog/models/product.d.ts +5 -40
  13. package/domain/catalog/models/wishlist.d.ts +6 -0
  14. package/domain/catalog/repositories/category-filter.repository.d.ts +1 -0
  15. package/domain/catalog/repositories/index.d.ts +1 -0
  16. package/domain/catalog/repositories/product.repository.d.ts +1 -1
  17. package/domain/catalog/repositories/wishlist.repository.d.ts +6 -0
  18. package/domain/generic/repository/find.repository.d.ts +1 -0
  19. package/domain/generic/repository/types/repository-find-result.type.d.ts +3 -0
  20. package/domain/shop-settings/enums/index.d.ts +0 -1
  21. package/domain/shop-settings/models/index.d.ts +0 -2
  22. package/domain/shop-settings/models/shop-settings.d.ts +1 -2
  23. package/domain/shop-settings/models/types/index.d.ts +0 -4
  24. package/domain/shop-settings/models/types/shop-section.type.d.ts +0 -3
  25. package/domain/shop-settings/repositories/index.d.ts +0 -2
  26. package/esm2015/domain/catalog/models/category-base.js +18 -0
  27. package/esm2015/domain/catalog/models/category-filter.js +6 -1
  28. package/esm2015/domain/catalog/models/category-for-product.js +7 -0
  29. package/esm2015/domain/catalog/models/category.js +6 -10
  30. package/esm2015/domain/catalog/models/index.js +2 -1
  31. package/esm2015/domain/catalog/models/kit-product.js +6 -6
  32. package/esm2015/domain/catalog/models/product-base.js +25 -0
  33. package/esm2015/domain/catalog/models/product-for-category.js +14 -0
  34. package/esm2015/domain/catalog/models/product-for-kit.js +14 -0
  35. package/esm2015/domain/catalog/models/product.js +6 -24
  36. package/esm2015/domain/catalog/models/wishlist.js +7 -0
  37. package/esm2015/domain/catalog/repositories/category-filter.repository.js +1 -1
  38. package/esm2015/domain/catalog/repositories/index.js +2 -1
  39. package/esm2015/domain/catalog/repositories/product.repository.js +1 -1
  40. package/esm2015/domain/catalog/repositories/wishlist.repository.js +2 -0
  41. package/esm2015/domain/generic/repository/find.repository.js +1 -1
  42. package/esm2015/domain/generic/repository/types/repository-find-result.type.js +1 -1
  43. package/esm2015/domain/shop-settings/enums/index.js +1 -2
  44. package/esm2015/domain/shop-settings/models/index.js +1 -3
  45. package/esm2015/domain/shop-settings/models/shop-settings.js +1 -1
  46. package/esm2015/domain/shop-settings/models/types/index.js +1 -5
  47. package/esm2015/domain/shop-settings/models/types/shop-section.type.js +1 -1
  48. package/esm2015/domain/shop-settings/repositories/index.js +1 -3
  49. package/esm2015/infra/elasticsearch/indexes/products-index.js +2 -2
  50. package/esm2015/infra/firebase/firestore/repositories/shop-settings/index.js +1 -3
  51. package/esm2015/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.js +2 -2
  52. package/esm2015/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.js +44 -14
  53. package/esm2015/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.js +52 -1
  54. package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js +36 -50
  55. package/esm2015/infra/hasura-graphql/repositories/catalog/index.js +2 -1
  56. package/esm2015/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.js +2 -2
  57. package/esm2015/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.js +252 -0
  58. package/esm2015/infra/hasura-graphql/types/graphql.repository.type.js +1 -1
  59. package/fesm2015/infrab4a-connect.js +469 -155
  60. package/fesm2015/infrab4a-connect.js.map +1 -1
  61. package/infra/firebase/firestore/repositories/shop-settings/index.d.ts +0 -2
  62. package/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +3 -2
  63. package/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.d.ts +2 -2
  64. package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +1 -0
  65. package/infra/hasura-graphql/repositories/catalog/index.d.ts +1 -0
  66. package/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.d.ts +27 -0
  67. package/infra/hasura-graphql/types/graphql.repository.type.d.ts +4 -3
  68. package/package.json +1 -1
  69. package/domain/shop-settings/enums/shop-page-name.enum.d.ts +0 -19
  70. package/domain/shop-settings/models/campaign-banner.d.ts +0 -11
  71. package/domain/shop-settings/models/campaign.d.ts +0 -10
  72. package/domain/shop-settings/models/types/campaign-page.d.ts +0 -17
  73. package/domain/shop-settings/models/types/sections.type.d.ts +0 -17
  74. package/domain/shop-settings/models/types/shop-gift.type.d.ts +0 -8
  75. package/domain/shop-settings/models/types/shop-post.type.d.ts +0 -7
  76. package/domain/shop-settings/repositories/campaign-banner.repository.d.ts +0 -4
  77. package/domain/shop-settings/repositories/campaign.repository.d.ts +0 -4
  78. package/esm2015/domain/shop-settings/enums/shop-page-name.enum.js +0 -21
  79. package/esm2015/domain/shop-settings/models/campaign-banner.js +0 -7
  80. package/esm2015/domain/shop-settings/models/campaign.js +0 -7
  81. package/esm2015/domain/shop-settings/models/types/campaign-page.js +0 -2
  82. package/esm2015/domain/shop-settings/models/types/sections.type.js +0 -2
  83. package/esm2015/domain/shop-settings/models/types/shop-gift.type.js +0 -2
  84. package/esm2015/domain/shop-settings/models/types/shop-post.type.js +0 -2
  85. package/esm2015/domain/shop-settings/repositories/campaign-banner.repository.js +0 -2
  86. package/esm2015/domain/shop-settings/repositories/campaign.repository.js +0 -2
  87. package/esm2015/infra/firebase/firestore/repositories/shop-settings/campaign-banner-firestore.repository.js +0 -12
  88. package/esm2015/infra/firebase/firestore/repositories/shop-settings/campaign-firestore.repository.js +0 -12
  89. package/infra/firebase/firestore/repositories/shop-settings/campaign-banner-firestore.repository.d.ts +0 -8
  90. package/infra/firebase/firestore/repositories/shop-settings/campaign-firestore.repository.d.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"infrab4a-connect.umd.js","sources":["../../../projects/connect/src/domain/generic/model/base.model.ts","../../../projects/connect/src/domain/generic/repository/enums/where.enum.ts","../../../projects/connect/src/domain/generic/repository/enums/update-option-actions.enum.ts","../../../projects/connect/src/domain/users/models/enums/accessory-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/area.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-sizes.enum.ts","../../../projects/connect/src/domain/users/models/enums/beauty-product-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-shapes.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-tattoos.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-oilinesses.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-tones.enum.ts","../../../projects/connect/src/domain/users/models/enums/family-incomes.enum.ts","../../../projects/connect/src/domain/users/models/enums/fragrance-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-colors.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-strands.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-types.enum.ts","../../../projects/connect/src/domain/users/models/enums/office-position.enum.ts","../../../projects/connect/src/domain/users/models/enums/product-spents.enum.ts","../../../projects/connect/src/domain/users/models/enums/user-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/billing-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/edition-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/payment-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/status.enum.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/connect/src/domain/users/models/subscription/edition.ts","../../../projects/connect/src/domain/shopping/models/payment.ts","../../../projects/connect/src/domain/users/models/subscription/payment.ts","../../../projects/connect/src/utils/log.utils.ts","../../../projects/connect/src/utils/helpers/reflect.helper.ts","../../../projects/connect/src/utils/helpers/debug-decorator.helper.ts","../../../projects/connect/src/utils/helpers/class-name.helper.ts","../../../projects/connect/src/utils/helpers/debug.helper.ts","../../../projects/connect/src/utils/decorators/debug.class.decorator.ts","../../../projects/connect/src/utils/decorators/trace.method.decorator.ts","../../../projects/connect/src/utils/is-uuid.ts","../../../projects/connect/src/utils/mixins/base.mixin.ts","../../../projects/connect/src/utils/parse-datetime.ts","../../../projects/connect/src/domain/shopping/models/enums/checkout-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-subtypes.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/exclusivities.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/coupon.ts","../../../projects/connect/src/domain/shopping/models/subscription/plan.ts","../../../projects/connect/src/domain/users/models/beauty-profile.ts","../../../projects/connect/src/domain/users/models/user.ts","../../../projects/connect/src/domain/location/models/address.ts","../../../projects/connect/src/domain/users/models/user-address.ts","../../../projects/connect/src/domain/users/models/subscription/subscription.ts","../../../projects/connect/src/domain/users/models/user-payment-method.ts","../../../projects/connect/src/domain/users/models/lead.ts","../../../projects/connect/src/domain/users/errors/unauthorized.error.ts","../../../projects/connect/src/domain/users/use-cases/authentication.ts","../../../projects/connect/src/domain/users/errors/user-already-registered.error.ts","../../../projects/connect/src/domain/users/errors/weak-password.error.ts","../../../projects/connect/src/domain/users/use-cases/register.ts","../../../projects/connect/src/domain/users/use-cases/signout.ts","../../../projects/connect/src/domain/users/use-cases/recovery-password.ts","../../../projects/connect/src/domain/catalog/models/filter.ts","../../../projects/connect/src/domain/catalog/models/category.ts","../../../projects/connect/src/domain/catalog/models/category-collection-children.ts","../../../projects/connect/src/domain/catalog/models/category-filter.ts","../../../projects/connect/src/domain/catalog/models/enums/product-genders.enum.ts","../../../projects/connect/src/domain/catalog/models/enums/shops.enum.ts","../../../projects/connect/src/domain/catalog/models/filter-option.ts","../../../projects/connect/src/domain/catalog/models/product.ts","../../../projects/connect/src/domain/catalog/models/kit-product.ts","../../../projects/connect/src/domain/catalog/models/variant.ts","../../../projects/connect/src/domain/shopping/models/buy-2-win.ts","../../../projects/connect/src/domain/shopping/models/campaign-dashboard.ts","../../../projects/connect/src/domain/shopping/models/campaign-hashtag.ts","../../../projects/connect/src/domain/shopping/models/line-item.ts","../../../projects/connect/src/domain/shopping/models/shipping-method.ts","../../../projects/connect/src/domain/shopping/models/checkout.ts","../../../projects/connect/src/domain/shopping/models/enums/order-status.enum.ts","../../../projects/connect/src/domain/shopping/models/order.ts","../../../projects/connect/src/domain/shopping/models/subscription/checkout.ts","../../../projects/connect/src/domain/catalog/helpers/round-product-price.helper.ts","../../../projects/connect/src/domain/shop-settings/enums/filter-type.enum.ts","../../../projects/connect/src/domain/shop-settings/enums/questions-filters.enum.ts","../../../projects/connect/src/domain/shop-settings/enums/shop-page-name.enum.ts","../../../projects/connect/src/domain/shop-settings/helpers/beauty-questions.helper.ts","../../../projects/connect/src/domain/shop-settings/models/campaign.ts","../../../projects/connect/src/domain/shop-settings/models/campaign-banner.ts","../../../projects/connect/src/domain/shop-settings/models/home.ts","../../../projects/connect/src/domain/shop-settings/models/shop-menu.ts","../../../projects/connect/src/domain/shop-settings/models/shop-settings.ts","../../../projects/connect/src/errors/invalid-argument.error.ts","../../../projects/connect/src/errors/required-argument.error.ts","../../../projects/connect/src/errors/not-found.error.ts","../../../projects/connect/src/errors/duplicated-results.error.ts","../../../projects/connect/src/infra/elasticsearch/adapters/axios.adapter.ts","../../../projects/connect/src/infra/elasticsearch/indexes/products-index.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-helpers.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-get-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/enums/firestore-field-type.enum.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-find-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-create-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-update-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-delete-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-sub-collection.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-crud-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/lead-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-address-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/category-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/campaign-banner-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/campaign-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.ts","../../../projects/connect/src/infra/firebase/auth/authentication-firebase-auth.service.ts","../../../projects/connect/src/infra/firebase/auth/register-firebase-auth.service.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/attribute-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-where.enum.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/filter-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/graphql-field.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/models/category-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/kit-product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/variant-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.ts","../../../projects/connect/src/infrab4a-connect.ts"],"sourcesContent":["import { instanceToPlain, plainToInstance } from 'class-transformer'\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionAndIdentifierPropertyNames,\n} from './types'\n\nexport type GenericIdentifier<M = { id: string }, T = NonFunctionAndIdentifierPropertyNames<M>> = T\n\nexport class BaseModel<Model extends ModelBaseStructure<Model, Identifiers>, Identifiers = GenericIdentifier>\n implements ModelBaseStructure<Model, Identifiers>\n{\n get identifier(): { [key in Extract<NonFunctionAndIdentifierPropertyNames<Model>, Identifiers>]: Model[key] } {\n const fields = (this.constructor as BaseModelBuilder<Model>).identifiersFields.filter(\n (field) => field !== 'identifier',\n )\n const data: Record<string, any> = this\n\n return fields.reduce((object, field) => ({ ...object, [field]: data[field] }), {})\n }\n\n get identifiersFields(): Identifiers[] {\n return (this.constructor as BaseModelBuilder<Model, Identifiers>).identifiersFields\n }\n\n constructor(args?: Partial<Model>) {\n Object.assign(this, args)\n }\n\n static toInstance<T>(this: new () => T, data?: Partial<NonFunctionAndIdentifierProperties<T>>): T {\n return plainToInstance(this, data || {})\n }\n\n static isModel<T extends ModelBaseStructure>(this: new () => T, value: any): value is T {\n return value instanceof this\n }\n\n toPlain(): any {\n return instanceToPlain(this)\n }\n}\n","export enum Where {\n EQUALS = '==',\n NOTEQUALS = '!=',\n GT = '>',\n GTE = '>=',\n IN = 'in',\n NOTIN = 'not in',\n LT = '<',\n LTE = '<=',\n LIKE = 'like',\n NOTLIKE = 'not like',\n ISNULL = 'is null',\n ISNOTNULL = 'is not null',\n}\n","export enum UpdateOptionActions {\n UPDATE = 'update',\n MERGE = 'merge',\n REMOVE = 'remove',\n REMOVE_FIELD = 'removeField',\n NULL = 'null',\n}\n","export enum AccessoryImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_RARELY_USE = 'Gosto, mas uso poucos',\n LIKE_ALWAYS_FOLLOW_FASHION = 'Gosto muito de acessórios e sempre procuro acompanhar a moda',\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 BeardProblems {\n NO_PROBLEMS = 'Sem problemas',\n DRY = 'Barba Seca',\n OILY = 'Barba Oleaosa',\n DANCRUFF = 'Barba com Caspa',\n INGROWN_HAIRS = 'Pêlos Encravados',\n DOESNT_GROW = 'Não Cresce',\n SPARSE_BEARD = 'Barba Rala',\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 BeautyProductImportances {\n KNOW_LITTLE_ABOUT = 'Conheço bem pouco de produtos de beleza e rotinas de cuidados',\n ALREADY_BOUGHT_NOTHING_SPECIALIZED = 'Já comprei alguns produtos básicos para cuidar de mim, mas nada muito especializado',\n GOOD_CARE_MYSELF = 'Me considero um homem que se cuida bem. Conheço sobre produtos especializados e me preocupo em ter uma rotina de cuidados',\n PERSONAL_CARE_EXPERT = 'Sou um expert em cuidados pessoais',\n}\n","export enum BodyProblems {\n NO_WORRIES = 'Sem preocupações',\n FLACCIDITY = 'Flacidez',\n LOCALIZED_FAT = 'Gordura Localizada',\n STRETCH_MARKS = 'Estrias',\n SENSITIVE_SKIN = 'Pele Sensível',\n DRY_SKIN = 'Pele Seca',\n OILY_ACNE = 'Oleosa/Acne',\n SKIN_FRECKLES = 'Pele com Sardas',\n PHOTOSENSITIVE_SKIN = 'Pele Fotossensível',\n}\n","export enum BodyShapes {\n LEAN = 'Magro',\n REGULAR = 'Regular',\n OVERWEIGHT = 'Acima do Peso',\n ATHLETIC = 'Atlético',\n MUSCULAR = 'Musculoso',\n}\n","export enum BodyTattoos {\n NONE = 'Nenhuma',\n HAS_DOESNT_CARE = 'Tenho mas não cuido',\n HAS_CARE_LOT = 'Tenho e cuido bastante',\n}\n","export enum FaceSkinOilinesses {\n DRY = 'Seca',\n OILY = 'Oleaosa',\n MIXED = 'Mista',\n NORMAL = 'Normal',\n DONT_KNOW = 'Eu não sei como dizer',\n}\n","export enum FaceSkinProblems {\n NO_PROBLEMS = 'Sem problemas',\n DARK_CIRCLES = 'Olheiras',\n WRINKLES = 'Rugas',\n BLACKHEADS_PIMPLES = 'Cravos e Espinhas',\n STAINS = 'Manchas',\n FRECKLES = 'Sardas',\n SENSITIVE = 'Sensível',\n PHOTOSENSITIVE = 'Fotossensível',\n}\n","export enum FaceSkinTones {\n VERY_CLEAR = 'Muito Clara',\n CLEAR = 'Clara',\n MEDIUM_LIGHT = 'Clara Média',\n MEDIUM_DARK = 'Escura Média',\n DARK = 'Escura',\n VERY_DARK = 'Muito Escura',\n}\n","export enum FamilyIncomes {\n UNTIL_3000 = 'Até R$3.000',\n SINCE_3001_TO_7000 = 'De R$3.001 a R$7.000',\n SINCE_7001_TO_10000 = 'De R$7.001 a R$10.000',\n SINCE_10001_TO_15000 = 'De R$10.001 a R$15.000',\n GRAN_THAN_15000 = 'Mais de R$15.000',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum FragranceImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_ALWAYS_USE_SAME = 'Gosto de perfumes, mas uso sempre os mesmos',\n LIKE_INNOVATE = 'Gosto de inovar e conhecer novas fragrâncias',\n}\n","export enum HairColors {\n BLACK = 'Preto',\n DARK_BROWN = 'Castanho Escuro',\n LIGHT_BROWN = 'Castanho Claro',\n DARK_BLONDE = 'Loiro Escuro',\n LIGHT_BLONDE = 'Loiro Claro',\n WHITE_GRAY = 'Branco/Grisalho',\n REDHEAD = 'Ruivo',\n OTHER = 'RuiOutroo',\n}\n","export enum HairProblems {\n NO_PROBLEMS = 'Sem problemas',\n DANCRUFF = 'Caspa',\n LOSS = 'Queda',\n OILY = 'Oleosidade',\n DRYNESS = 'Ressecamento',\n CHEMICAL = 'Quimica',\n WHITE_HAIR = 'Cabelos Brancos',\n REBEL_WIRES = 'Fios Rebeldes',\n}\n","export enum HairStrands {\n NORMAL = 'Fio Normal',\n DRY = 'Fio Seco',\n OILY = 'Fio Oleoso',\n MIXED = 'Fio Misto',\n FINE = 'Fio Fino',\n THICK = 'Fio Grosso',\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 OfficePosition {\n Intern = 'Estagi\\u00E1rio',\n Analyst = 'Analista',\n Manager = 'Gerente',\n Director = 'Diretor',\n}\n","export enum ProductSpents {\n UNTIL_50 = 'Até R$50',\n SINCE_51_TO_100 = 'De R$51 a R$100',\n SINCE_101_TO_200 = 'De R$101 a R$200',\n SINCE_201_TO_300 = 'De R$201 a R$300',\n GRAN_THAN_300 = 'Mais de R$300',\n NOW_ANSWER = 'Prefiro nao responder',\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 SHIPPED = 'Enviado',\n}\n","export enum PaymentType {\n AQUISITION = 'Aquisição',\n RENEWAL = 'Renovação',\n FREIGHT = 'mudança de endereço, Frete',\n}\n","export enum Status {\n ACTIVE = 'active',\n CANCELLED = 'Cancelado',\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\n\nimport { EditionStatus, BillingStatus } from './enums'\n\nexport type EditionIdentifiers = 'id' | 'subscriptionId'\n\nexport class Edition extends BaseModel<Edition, EditionIdentifiers> {\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 createdAt: Date\n updatedAt: Date\n\n static get identifiersFields(): EditionIdentifiers[] {\n return ['id', 'subscriptionId']\n }\n}\n","import { Expose } from 'class-transformer'\n\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nimport { PaymentBilling, PaymentCard, PaymentCustomer, PaymentItem, PaymentShipping } from './types'\n\nexport class Payment extends BaseModel<Payment> {\n id: number\n object: string\n status: string\n tid: number\n nsu: number\n amount: number\n cost: number\n installments: number\n referer: string\n ip: string\n phone: string\n address: string\n metadata: any\n device: string\n payment: string\n addition: string\n discount: string\n customer: PaymentCustomer\n billing: PaymentBilling\n shipping: PaymentShipping\n items: PaymentItem[]\n card: PaymentCard\n\n @Expose({ name: 'refuse_reason' })\n refuseReason: string\n @Expose({ name: 'status_reason' })\n statusReason: string\n @Expose({ name: 'acquirer_response_code' })\n acquirerResponseCode: string\n @Expose({ name: 'acquirer_name' })\n acquirerName: string\n @Expose({ name: 'acquirer_id' })\n acquirerId: string\n @Expose({ name: 'authorization_code' })\n authorizationCode: string\n @Expose({ name: 'soft_descriptor' })\n softDescriptor: string\n @Expose({ name: 'date_created' })\n dateCreated: string\n @Expose({ name: 'date_updated' })\n dateUpdated: string\n @Expose({ name: 'authorized_amount' })\n authorizedAmount: number\n @Expose({ name: 'paid_amount' })\n paidAmount: number\n @Expose({ name: 'refunded_amount' })\n refundedAmount: number\n @Expose({ name: 'card_holder_name' })\n cardHolderName: string\n @Expose({ name: 'card_last_digits' })\n cardLastDigits: string\n @Expose({ name: 'card_first_digits' })\n cardFirstDigits: string\n @Expose({ name: 'card_brand' })\n cardBrand: string\n @Expose({ name: 'card_pin_mode' })\n cardPinMode: string\n @Expose({ name: 'card_magstripe_fallback' })\n cardMagstripeFallback: boolean\n @Expose({ name: 'cvm_pin' })\n cvmPin: boolean\n @Expose({ name: 'postback_url' })\n postbackUrl: string\n @Expose({ name: 'payment_method' })\n paymentMethod: string\n @Expose({ name: 'capture_method' })\n captureMethod: string\n @Expose({ name: 'antifraud_score' })\n antifraudScore: string\n @Expose({ name: 'boleto_url' })\n boletoUrl: string\n @Expose({ name: 'boleto_barcode' })\n boletoBarcode: string\n @Expose({ name: 'boleto_expiration_date' })\n boletoExpirationDate: string\n @Expose({ name: 'subscription_id' })\n subscriptionId: string\n @Expose({ name: 'split_rules' })\n splitRules: string\n @Expose({ name: 'antifraud_metadata' })\n antifraudMetadata: any\n @Expose({ name: 'reference_key' })\n referenceKey: string\n @Expose({ name: 'local_transaction_id' })\n localTransactionId: string\n @Expose({ name: 'local_time' })\n localTime: string\n @Expose({ name: 'fraud_covered' })\n fraudCovered: boolean\n @Expose({ name: 'fraud_reimbursed' })\n fraudReimbursed: string\n @Expose({ name: 'order_id' })\n orderId: string\n @Expose({ name: 'risk_level' })\n riskLevel: string\n @Expose({ name: 'receipt_url' })\n receiptUrl: string\n @Expose({ name: 'private_label' })\n privateLabel: string\n @Expose({ name: 'pix_qr_code' })\n pixQrCode: string\n @Expose({ name: 'pix_expiration_date' })\n pixExpirationDate: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { Payment } from '../../../shopping/models/payment'\n\nimport { PaymentType } from './enums/payment-type.enum'\n\nexport type SubscriptionPaymentIdentifiers = 'id' | 'subscriptionId'\n\nexport class SubscriptionPayment extends BaseModel<SubscriptionPayment, SubscriptionPaymentIdentifiers> {\n id: string\n subscriptionId: string\n paymentType: PaymentType\n createdAt: Date\n attempts?: number\n\n @Type(() => Payment)\n payment: Payment\n\n static get identifiersFields(): SubscriptionPaymentIdentifiers[] {\n return ['id', 'subscriptionId']\n }\n}\n","import { debug, Debugger } from 'debug'\n\nexport enum DebugNamespaces {\n ROOT = 'connect',\n TRACE = 'trace',\n ERROR = 'error',\n}\n\nexport const Logger: Debugger = debug(DebugNamespaces.ROOT)\n","import { first, flatten, isArray, isNil, last } from 'lodash'\nimport 'reflect-metadata'\n\ntype Dictionary<T> = {\n [key: string]: T\n}\nexport type MetaArgs = {\n key: string\n target: any\n property?: string | symbol\n own?: boolean\n propertyDescriptor?: PropertyDescriptor\n}\nexport type MetaValueArgs<T = any> = MetaArgs & {\n value: T\n}\ntype MetaProperties<T = any> = Dictionary<T>\ntype MetaTargets = Dictionary<MetaProperties>\ntype MetaKeys = Dictionary<MetaTargets>\ntype MetaStorage = {\n value?: any\n object?: any\n values?: MetaKeys\n}\n\nexport class ReflectHelper {\n static get items(): MetaStorage {\n return this._items\n }\n\n static get keys(): Array<string> {\n return Object.keys(ReflectHelper.items)\n }\n\n static has(key: string, target?: any, property?: string | symbol): boolean {\n return (\n !isNil(key) &&\n !isNil(ReflectHelper.items[key]) &&\n (isNil(target) ||\n (!isNil(ReflectHelper.items[key][target]) &&\n (isNil(property) || !isNil(ReflectHelper.items[key][target][String(property)]))))\n )\n }\n\n static get<T = any>({ key, target, property, own = true }: MetaArgs): Array<T> {\n try {\n if (own) {\n return Reflect.getOwnMetadata(key, target, property) || null\n } else {\n return Reflect.getMetadata(key, target, property) || null\n }\n } catch (_err) {\n return null\n }\n }\n\n static first<T = any>({ key, target, property, own = true }: MetaArgs): T {\n const values = ReflectHelper.get<T>({ key, target, property, own })\n\n return isArray(values) ? first(values) : values\n }\n\n static last<T = any>({ key, target, property, own = true }: MetaArgs): T {\n const values = ReflectHelper.get<T>({ key, target, property, own })\n\n return isArray(values) ? last(values) : values\n }\n\n static set<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n Reflect.defineMetadata(key, value, target, property)\n\n ReflectHelper.put<T>({ key, target, property, value, propertyDescriptor })\n }\n\n static add<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n let values: Array<T> = ReflectHelper.get<T>({ key, target, property }) || new Array<T>()\n\n if (!Array.isArray(values)) values = [values]\n\n values.push(value)\n\n ReflectHelper.set<Array<T>>({ key, target, property, value: values, propertyDescriptor })\n }\n\n static all<T = any>({ key }: Partial<MetaArgs>): Array<MetaValueArgs<T>> {\n const items = ReflectHelper.items[key] || {}\n\n return flatten(Object.keys(items).map((item) => flatten(this.allFrom(key, items[item]))))\n }\n\n static allFrom(key: string, target: any): any {\n return Object.keys(target)\n .filter((property) => property !== 'object')\n .map((property) => this.allValuesFrom(key, target, property))\n }\n\n static allValuesFrom(key: string, target: any, property: any): any {\n const values = target[property]\n let value = values.value\n const propertyDescriptor = values.propertyDescriptor\n\n if (!isArray(value)) value = [value]\n\n return flatten(\n value.map((val: any) => {\n return {\n key,\n target: target.object,\n property,\n value: val,\n propertyDescriptor,\n }\n }),\n )\n }\n\n static delete({ key, target, property }: MetaArgs): boolean {\n Reflect.deleteMetadata(key, target, property)\n\n return ReflectHelper.remove(key, target, property)\n }\n\n static clear(key?: string): void {\n if (!key) {\n ReflectHelper.keys.forEach((storedKey) => {\n ReflectHelper.clear(storedKey)\n })\n } else {\n if (ReflectHelper.keys.includes(key)) {\n Object.values<MetaStorage>(ReflectHelper.items[key]).forEach((target) => {\n if (ReflectHelper.has(key, target)) {\n Object.values(ReflectHelper.items[key][target]).forEach((property) => {\n ReflectHelper.delete({\n key,\n target: target.object,\n property: String(property),\n })\n ReflectHelper.remove(key, target, String(property))\n })\n }\n\n ReflectHelper.delete({ key, target: target.object })\n ReflectHelper.remove(key, target)\n })\n }\n }\n }\n\n static getType({ target, propertyKey }): any {\n return Reflect.getMetadata('design:type', target, propertyKey)\n }\n\n static getReturntype({ target, propertyKey }): any {\n return Reflect.getMetadata('design:returntype', target, propertyKey)\n }\n\n static getAllMethods(target): string[] {\n const props = []\n let obj = target\n\n do {\n props.push(...Object.getOwnPropertyNames(obj))\n } while ((obj = Object.getPrototypeOf(obj)))\n\n return props.sort().filter((e, i, arr) => {\n if (\n [\n '__defineGetter__',\n '__defineSetter__',\n '__lookupGetter__',\n '__lookupSetter__',\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf',\n ].includes(e)\n )\n return false\n if (e != arr[i + 1] && typeof target[e] === 'function') return true\n })\n }\n\n private static _items: MetaStorage = {}\n\n private static put<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n const index = target.constructor.name\n\n ReflectHelper.items[key] = ReflectHelper.items[key] || {}\n ReflectHelper.items[key][index] = ReflectHelper.items[key][index] || {}\n ReflectHelper.items[key][index].object = target\n\n if (isNil(property)) {\n ReflectHelper.items[key][index].value = {\n value,\n propertyDescriptor,\n }\n } else {\n ReflectHelper.items[key][index][String(property)] = ReflectHelper.items[key][index][String(property)] || {}\n ReflectHelper.items[key][index][String(property)] = {\n value,\n propertyDescriptor,\n }\n }\n }\n\n private static remove(key: string, target?: any, property?: string | symbol): boolean {\n if (ReflectHelper.has(key, target, property)) return delete ReflectHelper.items[key][target][String(property)]\n else if (ReflectHelper.has(key, target)) return delete ReflectHelper.items[key][target]\n else if (ReflectHelper.has(key)) return delete ReflectHelper.items[key]\n else return false\n }\n}\n","import { ReflectHelper } from './reflect.helper'\n\nexport type DebugOptions = {\n name?: string\n namespaces?: Array<string>\n}\n\nexport class DebugDecoratorHelper {\n static DebugNamingMetadataKey = 'model:naming:decorator'\n\n static set(target: object, options: DebugOptions): void {\n ReflectHelper.add<DebugOptions>({\n key: DebugDecoratorHelper.DebugNamingMetadataKey,\n target,\n value: options,\n })\n }\n\n static get(target: object): DebugOptions {\n return ReflectHelper.first<DebugOptions>({\n key: DebugDecoratorHelper.DebugNamingMetadataKey,\n target,\n })\n }\n}\n","import { compact, get } from 'lodash'\n\nexport class ClassNameHelper {\n static get(clazz: any): string {\n if (!clazz) return null\n\n const prototype = Object.getPrototypeOf(clazz)\n const names = compact([\n get(clazz, 'constructor.name'),\n get(prototype, 'constructor.name'),\n get(prototype, '__proto__.constructor.name'),\n ])\n\n return names.find((name) => name !== 'class_1')\n }\n}\n","import { Debugger } from 'debug'\nimport { compact, flatten, get, isNil } from 'lodash'\nimport { Subject } from 'rxjs'\n\nimport { DebugNamespaces, Logger } from '../log.utils'\n\nimport { DebugDecoratorHelper } from './debug-decorator.helper'\nimport { ClassNameHelper } from './class-name.helper'\n\nexport type Debuggable = {\n debug: DebugHelper\n}\n\ntype DebugLog = {\n namespace: string\n message: string\n args: Array<any>\n}\n\ntype DebugError = {\n namespace: string\n error: any\n args: Array<any>\n}\n\nexport const isDebuggable = (object: any): object is Debuggable => {\n return 'debug' in object\n}\n\nexport class DebugHelper {\n static logs$ = new Subject<DebugLog>()\n static traces$ = new Subject<DebugLog>()\n static errors$ = new Subject<DebugError>()\n static isDebuggable = isDebuggable\n\n static namespacesFor(target: object): Array<string> {\n if (isNil(target)) return []\n\n const decorator = DebugDecoratorHelper.get(Object.getPrototypeOf(target))\n const namespaces = get(decorator, 'namespaces', [])\n const name = get(decorator, 'name', ClassNameHelper.get(target))\n\n return [...namespaces, name]\n }\n\n static as(...namespaces: Array<string>): DebugHelper {\n return new DebugHelper(...namespaces)\n }\n\n static for(target: object, ...namespaces: Array<string>): DebugHelper {\n const targetNamespaces = this.namespacesFor(target)\n\n return new DebugHelper(...targetNamespaces, ...namespaces)\n }\n\n static from(target: object, ...namespaces: Array<string>): DebugHelper {\n if (this.isDebuggable(target)) {\n const debug = target.debug\n\n if (namespaces) debug.push(...namespaces)\n\n return debug\n }\n\n return DebugHelper.for(target, ...namespaces)\n }\n\n static clonedFrom(target: object, ...namespaces: Array<string>): DebugHelper {\n if (this.isDebuggable(target)) {\n namespaces.push(...target.debug.entries)\n } else if (!isNil(target)) {\n namespaces.push(...this.namespacesFor(target))\n }\n\n return DebugHelper.for(target, ...namespaces)\n }\n\n static clone(target: object, ...namespaces: Array<string>): { original: DebugHelper; debug: DebugHelper } {\n let original: DebugHelper\n\n if (this.isDebuggable(target)) {\n original = target.debug\n namespaces.push(...original.entries)\n }\n\n return {\n original,\n debug: DebugHelper.for(target, ...namespaces),\n }\n }\n\n static replace(target: any, attrs: { with: DebugHelper }): void {\n if (this.isDebuggable(target)) target.debug = attrs.with\n }\n\n static mock(target: object, ...namespaces: Array<string>): { original: DebugHelper; debug: DebugHelper } {\n const { original, debug } = DebugHelper.clone(target, ...namespaces)\n\n DebugHelper.replace(target, { with: debug })\n\n return { original, debug }\n }\n\n logger: Debugger\n tracer: Debugger\n err: Debugger\n namespaces: Set<string>\n\n constructor(...namespace: Array<string>) {\n this.namespaces = new Set<string>()\n this.push(...namespace)\n }\n\n get entries(): Array<string> {\n return Array.from(get(this, 'namespaces', []))\n }\n\n get namespace(): string {\n return compact(flatten(this.entries)).join(':')\n }\n\n log(message?: any, ...args: Array<any>): DebugHelper {\n this.logger(JSON.stringify(message), ...args.map((element) => JSON.stringify(element)))\n DebugHelper.logs$.next({ namespace: this.namespace, message, args })\n\n return this\n }\n\n trace(message?: any, ...args: Array<any>): DebugHelper {\n this.logger.extend(DebugNamespaces.TRACE)(message, ...args)\n DebugHelper.traces$.next({ namespace: this.namespace, message, args })\n\n return this\n }\n\n error(error: any, ...args: Array<any>): DebugHelper {\n this.logger.extend(DebugNamespaces.ERROR)(JSON.stringify(error), ...args.map((element) => JSON.stringify(element)))\n DebugHelper.errors$.next({ namespace: this.namespace, error, args })\n\n return this\n }\n\n build(): DebugHelper {\n this.logger = Logger\n this.tracer = Logger\n this.err = Logger\n\n this.entries.forEach((namespace) => {\n this.logger = this.logger.extend(namespace)\n this.tracer = this.tracer.extend(namespace)\n this.err = this.err.extend(namespace)\n })\n\n return this\n }\n\n with(...namespace: Array<string>): DebugHelper {\n return new DebugHelper(...this.entries, ...namespace)\n }\n\n push(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n namespace.filter((item) => Boolean(item)).forEach((item) => this.namespaces.add(item))\n }\n\n return this.build()\n }\n\n unshift(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n return this.reset(...namespace, ...this.entries)\n }\n\n return this\n }\n\n reset(...namespace: Array<string>): DebugHelper {\n this.namespaces = new Set(flatten(compact(namespace)))\n\n return this.build()\n }\n\n startWith(...namespace: Array<string>): DebugHelper {\n const current = this.namespaces\n\n this.namespaces = new Set(flatten([compact(namespace), ...current]))\n\n return this.build()\n }\n\n shift(): DebugHelper {\n const list = this.entries\n\n list.shift()\n\n return this.reset(...list)\n }\n\n pop(): DebugHelper {\n const list = this.entries\n\n list.pop()\n\n return this.reset(...list)\n }\n\n clear(): DebugHelper {\n return this.reset()\n }\n\n remove(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n namespace.filter((item) => Boolean(item)).forEach((item) => this.namespaces.delete(item))\n }\n\n return this.build()\n }\n\n puts(...args: Array<string>): string {\n return [`[${this.namespace}]`, ...args].join(' ')\n }\n}\n","import { DebugDecoratorHelper, DebugOptions } from '../helpers'\n\nexport function Debug(opts?: DebugOptions): ClassDecorator {\n return function <TFunction>(target: any): TFunction | void {\n DebugDecoratorHelper.set(target.prototype, opts)\n }\n}\n","import { get } from 'lodash'\n\nimport { Debuggable, DebugHelper } from '../helpers'\n\nexport type CallbackFnArgs<T, Result> = {\n target: T\n result: Result\n args: Array<any>\n namespace?: Array<string>\n}\n\ntype CallbackFn<T, Result> = (opts: CallbackFnArgs<T, Result>) => void\n\ntype TraceOptions<T, Result> = {\n callbackFn?: CallbackFn<T, Result>\n level?: 'trace' | 'log'\n}\n\ntype Tracer<T, Result> = {\n options: TraceOptions<T, Result>\n method: any\n target: T & Debuggable\n propertyDescriptor: PropertyDescriptor\n propertyKey: string\n}\n\ntype CallTracerArgs = {\n target: any\n propertyKey: string\n propertyDescriptor: PropertyDescriptor\n args: Array<any>\n}\n\nconst ASYNC_IDENTIFIER = 'async'\n\nexport function Log<T, Result>(options: TraceOptions<T, Result> = {}) {\n return Trace<T, Result>({ level: 'log', ...options })\n}\n\nexport function Trace<T, Result>(options: TraceOptions<T, Result> = {}) {\n return function (target: any, propertyKey: string, propertyDescriptor: PropertyDescriptor) {\n const method = propertyDescriptor.value\n const isPromise = method.toString().includes(ASYNC_IDENTIFIER)\n const args = {\n options,\n method,\n target,\n propertyKey,\n propertyDescriptor,\n }\n\n propertyDescriptor.value = isPromise ? promiseTracer(args) : functionTracer(args)\n\n return propertyDescriptor\n }\n}\n\nconst traceCall = ({ target, propertyKey, propertyDescriptor, args }: CallTracerArgs): DebugHelper => {\n if (!target.debug) target.debug = DebugHelper.for(target, propertyKey)\n\n return target.debug.push(propertyKey).trace('called', { target, propertyKey, propertyDescriptor, args })\n}\n\nconst promiseTracer = function <T, Result>({ options, method, propertyKey, propertyDescriptor }: Tracer<T, Result>) {\n return function (...args: Array<any>): any {\n return new Promise((resolve, reject) => {\n const debug = traceCall({ target: this, propertyDescriptor, propertyKey, args })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('params').log(args)\n }\n\n return method\n .apply(this, args)\n .then((result: any) => {\n if (options.callbackFn) {\n options.callbackFn({ target: this, result, args, namespace: [propertyKey] })\n }\n\n if (get(options, 'level', '') === 'log') {\n debug.with('returns').log(result === undefined ? 'void' : result)\n }\n\n return resolve(result)\n })\n .catch((error: Error) => {\n debug.error(error, ...args)\n debug.with('stack').error(error.stack).pop()\n\n return reject(error)\n })\n .finally(() => {\n return debug.trace('finally', { args }).pop()\n })\n })\n }\n}\n\nconst functionTracer = function <T, Result>({\n options,\n target,\n method,\n propertyKey,\n propertyDescriptor,\n}: Tracer<T, Result>) {\n return function (...args: Array<any>): any {\n const debug = traceCall({ target: this || target, propertyDescriptor, propertyKey, args })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('params').log(args)\n }\n\n let result: any\n\n try {\n result = method.apply(this, args)\n\n if (options.callbackFn) options.callbackFn({ target: this, result, args, namespace: [propertyKey] })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('returns').log(result === undefined ? 'void' : result)\n }\n\n return result\n } catch (error) {\n debug.error(error, ...args).pop()\n\n throw error\n } finally {\n debug.trace('finally', { args }).pop()\n }\n }\n}\n","import { isString } from 'lodash'\n\nexport const isUUID = (value: string): boolean =>\n isString(value) && /[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}/.test(value)\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\n }\n}\n","import { isString } from 'lodash'\nimport { parseISO } from 'date-fns'\n\nexport const parseDateTime = (value: string): string | Date => {\n if (!isString(value)) return value\n if (\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value) &&\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T\\d{2}:\\d{2}:\\d{2}/.test(value)\n )\n return value\n\n const date = parseISO(value)\n\n if (isNaN(date.getTime())) return value\n\n return date\n}\n","export enum CheckoutTypes {\n ECOMMERCE = 1,\n SUBSCRIPTION = 2,\n ALL = 3,\n}\n","export enum CouponTypes {\n ABSOLUTE = 1,\n PERCENTAGE = 2,\n // FINANCIAL = 1,\n // PRODUCT,\n // GIFTCARD,\n // VOUCHER,\n}\n","export enum CouponSubtypes {\n ABSOLUTE = 1,\n PERCENTAGE = 2,\n}\n","export enum Exclusivities {\n ALL_USERS = 1,\n SPECIFIC_USER = 2,\n COLLABORATORS = 3,\n ACTIVE_SUBSCRIBER = 4,\n INACTIVE_SUBSCRIBER = 5,\n NON_SUBSCRIBER = 6,\n}\n","import { isNil } from '../../../../utils'\nimport { Shops } from '../../../catalog/models/enums/shops.enum'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\nimport { CouponTypes, Exclusivities } from './enums'\nimport { ClubeDaMensPlan } from './enums/coupon-club-mens.enum'\n\nconst COUPON_EXPIRATION = +1000 * 60 * 60 * 24 * 30\n\nexport class Coupon extends BaseModel<Coupon> {\n id: string\n category?: string\n discount: {\n subscriber: {\n type: CouponTypes\n value: number\n }\n non_subscriber: {\n type: CouponTypes\n value: number\n }\n subscription?: {\n type: CouponTypes\n value: number\n }\n }\n useLimits: {\n subscriber: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n non_subscriber: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n subscription?: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n }\n user?: string\n userExclusiveEmail?: string[]\n campaign?: string\n nickname: string\n beginAt: Date\n expiresIn?: Date\n // unlimited?: boolean\n // useLimit?: number\n // useLimitPerUser?: boolean\n shopAvailability: Shops\n personId?: number\n influencerEmail?: string\n plan?: ClubeDaMensPlan\n productsCategories: string[]\n minSubTotalValue?: number\n active?: Boolean\n createdAt: Date\n updatedAt?: Date\n checkoutType: CheckoutTypes\n exclusivityType?: [Exclusivities]\n\n get isInfluencer(): boolean {\n return !isNil(this.influencerEmail)\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n\n static createCoupon(userId: string): Coupon {\n return this.toInstance({\n nickname: `${Date.now()}`,\n checkoutType: CheckoutTypes.ECOMMERCE,\n discount: {\n subscriber: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n non_subscriber: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n subscription: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n },\n user: userId,\n createdAt: new Date(Date.now()),\n beginAt: new Date(Date.now()),\n expiresIn: new Date(Date.now() + COUPON_EXPIRATION),\n })\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\n\nexport class SubscriptionPlan extends BaseModel<SubscriptionPlan> {\n id: string\n name: string\n billingPrice: number\n recurrencePrice: number\n recurrenceCycle: number\n maxAttempts: number\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nimport { BeardSizes, HairTypes } from './enums'\n\nexport type BeautyProfileIdentifiers = 'id' | 'userId'\n\nexport class BeautyProfile extends BaseModel<BeautyProfile, BeautyProfileIdentifiers> {\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 static get identifiersFields(): BeautyProfileIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { isNil } from '../../../utils'\nimport { BaseModel, GenericIdentifier, NonFunctionAndIdentifierProperties } from '../../generic'\nimport { BeautyProfile } from './beauty-profile'\nimport { Area, OfficePosition, UserType } from './enums'\n\nexport class User extends BaseModel<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 area?: Area\n officePosition?: OfficePosition\n isSubscriber?: boolean\n subscriptionPlan?: string\n badgeId?: number\n badgeMultiplier?: number\n dateCreated?: Date\n dateModified?: Date\n\n @Type(() => BeautyProfile)\n beautyProfile?: BeautyProfile\n\n static toInstance<T>(this: new () => T, data?: Partial<NonFunctionAndIdentifierProperties<User>>): T {\n const instance = super.toInstance(data) as unknown as User\n\n if (!isNil(data.firstName))\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\n\n return instance as unknown as T\n }\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.beautyProfile\n\n return plain\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic'\nimport { LocationGeometry } from './types/location-geometry.type'\n\nexport abstract class Address<\n ChildAddress extends ModelBaseStructure<ChildAddress, Identifiers>,\n Identifiers = ChildAddress['identifiersFields'],\n> extends BaseModel<ChildAddress, Identifiers> {\n id: string\n default?: boolean\n recipient?: string\n zip?: string\n street?: string\n number?: string\n extension?: string\n reference?: string\n district?: string\n city?: string\n regionalPole?: string\n region?: string\n state?: string\n country?: string\n mailbox?: boolean\n mailboxNumber?: string\n formattedAddress?: string\n placeId?: string\n geometry?: LocationGeometry\n\n static get identifiersFields(): Array<GenericIdentifier | {}> {\n return ['id']\n }\n}\n","import { Address } from '../../location/models/address'\n\nexport type UserAddressIdentifiers = 'id' | 'userId'\n\nexport class UserAddress extends Address<UserAddress, UserAddressIdentifiers> {\n id: string\n userId: string\n\n static get identifiersFields(): UserAddressIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { Coupon } from '../../../shopping/models/coupons/coupon'\nimport { SubscriptionPlan } from '../../../shopping/models/subscription/plan'\nimport { User } from '../user'\nimport { UserAddress } from '../user-address'\nimport { Edition } from './edition'\nimport { Status } from './enums/status.enum'\nimport { SubscriptionPayment } from './payment'\n\nexport class Subscription extends BaseModel<Subscription> {\n id: string\n nextPayment: Date\n recurrence: boolean\n status: Status\n cardToken: string\n subtotalPrice?: number\n discount?: number\n totalPrice?: number\n createdAt: Date\n updatedAt: Date\n\n @Type(() => User)\n user: User\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => UserAddress)\n shippingAddress: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => Coupon)\n coupon?: Coupon\n @Type(() => Edition)\n editions: Edition[]\n @Type(() => SubscriptionPayment)\n payment?: SubscriptionPayment[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport type UserPaymentIdentifiers = 'id' | 'userId'\n\nexport class UserPaymentMethod extends BaseModel<UserPaymentMethod, UserPaymentIdentifiers> {\n brand: string\n cpf: string\n holderName: string\n last4: string\n pagarmeToken: string\n validUntil: string\n userId: string\n id: string\n fingerprint: string\n\n static get identifiersFields(): UserPaymentIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class Lead extends BaseModel<Lead> {\n id: string\n acceptsNewsletter: boolean\n email: string\n source: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class UnauthorizedError extends CustomError {\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 { CustomError } from 'ts-custom-error'\n\nexport class UserAlreadyRegisteredError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class WeakPasswordError extends CustomError {\n constructor(readonly message = 'Weak password') {\n super(message)\n }\n}\n","import { User, UserType } from '../models'\nimport { RegisterService } from '../services/register.service'\nimport { UserAlreadyRegisteredError } from '../errors'\nimport { UserRepository } from '../repositories/user.repository'\n\ntype RegisterParams = Partial<User> & { password: string }\n\nexport class Register {\n constructor(private readonly registerService: RegisterService, private readonly userRepository: UserRepository) {}\n\n async register(params: RegisterParams): Promise<User> {\n const email = params.email.toLocaleLowerCase()\n const displayName = `${params.firstName} ${params.lastName}`\n\n if (await this.userRepository.checkIfExistsByField('cpf', params.cpf))\n throw new UserAlreadyRegisteredError(`Usuário com CPF ${params.cpf} já registrado.`)\n if (await this.userRepository.checkIfExistsByField('email', params.email))\n throw new UserAlreadyRegisteredError(`Usuário com e-mail ${params.email} já registrado.`)\n\n const auth = await this.registerService.register({\n birthday: params.birthday,\n email,\n firstName: params.firstName,\n lastName: params.lastName,\n cpf: params.cpf,\n displayName,\n phone: params.phone,\n password: params.password,\n })\n\n delete params.password\n\n const user = await this.userRepository.create({\n ...params,\n id: auth.id,\n email,\n displayName,\n type: UserType.B2C,\n dateCreated: new Date(),\n dateModified: new Date(),\n })\n\n return user\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","import { AuthenticationService } from '../services/authentication.service'\n\nexport class RecoveryPassword {\n constructor(private readonly authService: AuthenticationService) {}\n\n async sendEmail(email: string): Promise<void> {\n await this.authService.sendPasswordResetEmail(email)\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { FilterOption } from './filter-option'\n\nexport class Filter extends BaseModel<Filter> {\n id: number\n description: string\n slug: string\n enabled: boolean\n options?: FilterOption[]\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { Shops } from './enums'\nimport { Filter } from './filter'\nimport { CategoryCondition, CategoryMetadata } from './types'\n\nexport class Category extends BaseModel<Category> {\n id: string\n brandCategory: boolean\n brandLogo?: string\n name: string\n slug: string\n image?: string\n brandCategoryBanner?: string\n brandCategoryBannerMobile?: string\n description: string\n conditions?: CategoryCondition\n products?: string[]\n createdAt?: Date\n updatedAt?: Date\n shop?: Shops\n shops?: string[]\n published: boolean\n metadata: CategoryMetadata\n isCollection?: boolean\n reference?: string\n parentId?: number\n\n @Type(() => Category)\n parent?: Category\n\n @Type(() => Filter)\n filters?: Filter[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\n\nexport type CategoryCollectionChildrenIdentifiers = 'collectionId' | 'categoryId'\n\nexport class CategoryCollectionChildren extends BaseModel<\n CategoryCollectionChildren,\n CategoryCollectionChildrenIdentifiers\n> {\n collectionId: number\n categoryId: number\n parentCollectionId?: number\n parentCategoryId?: number\n name: string\n slug: string\n reference?: string\n\n @Type(() => CategoryCollectionChildren)\n parent?: CategoryCollectionChildren\n\n static get identifiersFields(): CategoryCollectionChildrenIdentifiers[] {\n return ['collectionId', 'categoryId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\nimport { Filter } from './filter'\n\ntype CategoryFilterIdentifiers = 'id' | 'filterId' | 'categoryId'\n\nexport class CategoryFilter extends BaseModel<CategoryFilter, CategoryFilterIdentifiers> {\n id: number\n filterId: number\n categoryId: number\n\n @Type(() => Filter)\n filter?: Filter\n\n static get identifiersFields(): CategoryFilterIdentifiers[] {\n return ['id']\n }\n}\n","export enum GenderDestination {\n FEMALE = 'female',\n MALE = 'male',\n UNISEX = 'unisex',\n}\n","export enum Shops {\n MENSMARKET = `mensmarket`,\n GLAMSHOP = 'Glamshop',\n GLAMPOINTS = 'Glampoints',\n ALL = 'ALL'\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\n\nexport class FilterOption extends BaseModel<FilterOption> {\n id: string\n filterId: number\n description: string\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../generic/model'\n\nimport { Category } from './category'\nimport { KitProduct } from './kit-product'\nimport {\n ProductEvaluation,\n ProductGender,\n ProductMetadata,\n ProductReview,\n ShopDescription,\n ShopPrice,\n Stock,\n} from './types'\nimport { Variant } from './variant'\n\nexport class Product extends BaseModel<Product> {\n id: string\n name: string\n slug: string\n description: ShopDescription\n sku: string\n price: ShopPrice\n hasVariants: boolean\n NCM: string\n EAN: string\n CEST: string\n weight: number\n stock: Stock\n costPrice: number\n images?: string[]\n miniatures?: string[]\n published: boolean\n createdAt?: Date\n updatedAt?: Date\n brand: string\n tags?: string[]\n filters?: string[]\n type?: string\n categories?: string[]\n reviews?: ProductReview[]\n variant?: Variant\n video?: string\n isKit?: boolean\n rate?: number\n gender?: ProductGender\n shoppingCount?: number\n metadata: ProductMetadata\n\n @Type(() => Category)\n category: Category\n\n @Type(() => KitProduct)\n kitProducts?: KitProduct[]\n\n private reviewsTotal?: number\n\n get evaluation(): ProductEvaluation {\n return {\n reviews: this.reviews,\n count: this.reviewsTotal,\n rating: this.rate,\n }\n }\n\n set evaluation(evaluation: ProductEvaluation) {\n if (!evaluation) {\n this.reviews = null\n this.reviewsTotal = null\n this.rate = null\n\n return\n }\n\n this.reviews = evaluation.reviews || this.reviews\n this.reviewsTotal = evaluation.count || this.reviewsTotal\n this.rate = evaluation.rating || this.rate\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\nimport { Product } from './product'\n\ntype KitProductIdentifiers = 'productId' | 'kitProductId'\n\nexport class KitProduct extends BaseModel<KitProduct, KitProductIdentifiers> {\n productId: string\n kitProductId: string\n quantity: number\n\n @Type(() => Product)\n kit: Product\n\n @Type(() => Product)\n product: Product\n\n static get identifiersFields(): KitProductIdentifiers[] {\n return ['productId', 'kitProductId']\n }\n}\n","import { BaseModel } from '../../generic/model'\nimport { ShopPrice, Stock, VariantGrade } from './types'\n\nexport type ProductVariantIdentifiers = 'id' | 'productId'\n\nexport class Variant extends BaseModel<Variant, ProductVariantIdentifiers> {\n id: string\n productId: string\n sku: string\n price: ShopPrice\n EAN: string\n stock: Stock\n grade?: VariantGrade[]\n costPrice: number\n weight: number\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): ProductVariantIdentifiers[] {\n return ['id', 'productId']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Category, Shops } from '../../catalog/models'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class Buy2Win extends BaseModel<Buy2Win> {\n active: boolean\n cartValue: number\n createdAt: Date\n endDate: Date\n id?: string\n name: string\n products?: string[]\n shop: Shops\n activeCategory?: boolean\n cartValueMin?: number\n startDate: Date\n updatedAt?: Date\n\n @Type(() => Category)\n categories: Category[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from \"../../generic\"\n\nexport class CampaignDashboard extends BaseModel <CampaignDashboard> {\n\n id: string\n status: string\n updatedAt?: string\n environment: string\n bannerAlt: string\n imgMob: string\n imgDesk: string\n urlBanner?: string\n positionBanner?: number\n startDate?: Date\n endDate?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}","import { BaseModel, GenericIdentifier } from \"../../generic\"\n\nexport class CampaignHashtag extends BaseModel <CampaignHashtag> {\n\n id: string\n status?: string\n updatedAt?: string\n environment: string\n campaignName?: string\n campaignImage?: string \n campaignMinGlampoints?: number\n campaignMaxGlampoints?: number\n campaignReferCode?: string\n campaignDescription?: string\n startDate?: Date\n endDate?: Date\n campaignSubscribed: boolean\n rules?: string[]\n \n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n\n} ","import { Product } from '../../catalog/models/product'\n\nexport class LineItem extends Product {\n parentId?: string\n quantity: number\n isGift?: boolean\n pricePaid?: number\n image?: string\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class ShippingMethod extends BaseModel<ShippingMethod> {\n id: string\n CNPJ: string\n DaysToDelivery: number\n MaxGrams: number\n MinGrams: number\n ServiceCompanyRangeId: number\n ShippingCompanyId: number\n ShippingCompanyName: string\n ShippingPrice: number\n State: string\n ZipEnd: number\n ZipStart: number\n invoiceNumber?: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { Shops } from '../../catalog/models/enums/shops.enum'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { User, UserAddress } from '../../users'\nimport { Coupon } from './coupons/coupon'\nimport { LineItem } from './line-item'\nimport { ShippingMethod } from './shipping-method'\n\nexport class Checkout extends BaseModel<Checkout> {\n id?: string\n paymentId?: string\n status?: any\n createdAt?: Date\n updatedAt?: Date\n completedAt?: Date\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n shop: Shops\n glampoints?: number\n\n @Type(() => LineItem)\n lineItems?: LineItem[]\n @Type(() => User)\n user?: User\n @Type(() => UserAddress)\n shippingAddress?: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => ShippingMethod)\n shipping?: ShippingMethod\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","export enum OrderStatus {\n AGUARDANDO_PAGAMENTO = 'Aguardando pagamento',\n EM_PREPARO = 'Preparando pedido',\n NF_EMITIDA = 'Nota Fiscal Emitida',\n AGUARDANDO_ENVIO = 'Aguardando Transaportadora',\n ENVIADO = 'Enviado',\n ENTREGUE = 'Entregue',\n CANCELADO = 'Cancelado',\n CREDIT_CARD = 'credit_card',\n}\n","import { Type } from 'class-transformer'\nimport { Checkout } from './checkout'\nimport { OrderStatus } from './enums/order-status.enum'\nimport { Payment } from './payment'\n\nexport class Order extends Checkout {\n orderNumber?: string\n status: OrderStatus\n trackingCode?: string\n trackingUrl?: string\n\n @Type(() => Payment)\n payment: Payment\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { User, UserAddress } from '../../../users'\nimport { Coupon } from '../coupons/coupon'\nimport { SubscriptionPlan } from './plan'\n\nexport class CheckoutSubscription extends BaseModel<CheckoutSubscription> {\n id?: string\n user: User\n createdAt: Date\n updatedAt: Date\n completedAt?: Date\n userId?: string\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n\n @Type(() => UserAddress)\n shippingAddress: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { LineItem } from '../../shopping'\nimport { Product } from '../models'\n\nexport class RoundProductPricesHelper {\n public static roundProductPrices(product: Product): Product {\n product.price.price = Number(product.price.price.toFixed(2))\n product.price.fullPrice = Number(product.price.fullPrice.toFixed(2))\n if (product.price.subscriberPrice) {\n product.price.subscriberPrice = Number(product.price.subscriberPrice.toFixed(2))\n }\n if (product instanceof LineItem && product.pricePaid) {\n product.pricePaid = Number(product.pricePaid.toFixed(2))\n }\n\n return product\n }\n}\n","export enum FilterType {\n ACCESSORY_IMPORTANCE = 'accessoryImportance',\n BEARD_PROBLEMS = 'beardProblems',\n BEARD_SIZE = 'beardSize',\n BEAUTY_PRODUCT_IMPORTANCE = 'beautyProductImportance',\n BODY_PROBLEMS = 'bodyProblems',\n BODY_SHAPE = 'bodyShape',\n BODY_TATTOOS = 'bodyTattoos',\n FACE_SKIN_OILINESS = 'faceSkinOiliness',\n FACE_SKIN_PROBLEMS = 'faceSkinProblems',\n FACE_SKIN_TONE = 'faceSkinTone',\n FAMILY_INCOME = 'familyIncome',\n FRAGRANCE_IMPORTANCE = 'fragranceImportance',\n HAIR_COLOR = 'hairColor',\n HAIR_PROBLEMS = 'hairProblems',\n HAIR_STRANDS = 'hairStrands',\n HAIR_TYPE = 'hairType',\n PRODUCT_SPENT = 'productSpent',\n}\n","export enum QuestionsFilters {\n ACCESSORY_IMPORTANCE = 'Você gosta de usar acessórios masculinos?',\n BEARD_PROBLEMS = 'Quais problemas de barba você tem?',\n BEARD_SIZE = 'Quais caracteristicas se aplicam à sua BARBA/BIGODE?',\n BEAUTY_PRODUCT_IMPORTANCE = 'O que descreve melhor a sua relação com produtos de beleza e cuidados pessoais?',\n BODY_PROBLEMS = 'Qual ou quais preocupações você tem com a pele do seu corpo?',\n BODY_SHAPE = 'Qual e seu tipo de CORPO?',\n BODY_TATTOOS = 'Você tem alguma tatuagem?',\n FACE_SKIN_OILINESS = 'Quais caracteristicas se aplicam à pele do seu ROSTO?',\n FACE_SKIN_PROBLEMS = 'Quais problemas a pele do seu rosto tem?',\n FACE_SKIN_TONE = 'Qual seu tom de pele?',\n FAMILY_INCOME = 'Qual a sua renda familiar mensal (considerando a renda de todas as pessoas que moram com você)?',\n FRAGRANCE_IMPORTANCE = 'O quanto você gosta de experimentar perfumes?',\n HAIR_COLOR = 'Seu cabelo é naturalmente de qual COR?',\n HAIR_PROBLEMS = 'Qual ou quais problemas/característica de cabelo te preocupam?',\n HAIR_STRANDS = 'Como são seus fios?',\n HAIR_TYPE = 'Como é o seu cabelo?',\n PRODUCT_SPENT = 'Qual é o seu nivel de gasto mensal em produtos de beleza e cuidados pessoais?',\n}\n","export enum ShopPageName {\n LP_CLUB = 'LP_CLUBE',\n SUBSCRIBER_PANEL = 'SUBSCRIBER_PANEL',\n INVITE_FRIENDS = 'INVITE_FRIENDS',\n INVITE_AND_WIN = 'INVITE_AND_WIN',\n WIN_GLAMPOINTS = 'WIN_GLAMPOINTS',\n POSTS = 'POSTS',\n GLAMPOINTS_SHOWCASE = 'GLAMPOINTS_SHOWCASE',\n LP_EDITIONS = 'LP_EDITIONS',\n LP_GLAMBOX_EDITION = 'LP_GLAMBOX_EDITION',\n LP_GLAMBOX_PROMOTION = 'LP_GLAMBOX_PROMOTION',\n LP_GLAMBAG_PROMOTION = 'LP_GLAMBAG_PROMOTION',\n LP_GLAMPASS_PROMOTION = 'LP_GLAMPASS_PROMOTION',\n LP_SUBSCRIPTION_PROMOTION = 'LP_SUBSCRIPTION_PROMOTION',\n LP_GLAMPARTNER_PROMOTION = 'LP_GLAMPARTNER_PROMOTION',\n LP_GLAMQUEENS = 'LP_GLAMQUEENS',\n LP_INVITE = 'LP_INVITE',\n LP_LIVELO = 'LP_LIVELO',\n}\n","import * as Answers from '../../users/models/enums'\nimport { FilterType, QuestionsFilters } from '../enums'\n\ntype FilterAnswers = {\n [key: string]: string\n}\n\nexport class BeautyQuestionsHelper {\n static getAnswers(filter: FilterType): FilterAnswers {\n switch (filter) {\n case FilterType.ACCESSORY_IMPORTANCE:\n return Answers.AccessoryImportances\n case FilterType.BEARD_PROBLEMS:\n return Answers.BeardProblems\n case FilterType.BEARD_SIZE:\n return Answers.BeardSizes\n case FilterType.BEAUTY_PRODUCT_IMPORTANCE:\n return Answers.BeautyProductImportances\n case FilterType.BODY_PROBLEMS:\n return Answers.BodyProblems\n case FilterType.BODY_SHAPE:\n return Answers.BodyShapes\n case FilterType.BODY_TATTOOS:\n return Answers.BodyTattoos\n case FilterType.FACE_SKIN_OILINESS:\n return Answers.FaceSkinOilinesses\n case FilterType.FACE_SKIN_PROBLEMS:\n return Answers.FaceSkinProblems\n case FilterType.FACE_SKIN_TONE:\n return Answers.FaceSkinTones\n case FilterType.FAMILY_INCOME:\n return Answers.FamilyIncomes\n case FilterType.FRAGRANCE_IMPORTANCE:\n return Answers.FragranceImportances\n case FilterType.HAIR_COLOR:\n return Answers.HairColors\n case FilterType.HAIR_PROBLEMS:\n return Answers.HairProblems\n case FilterType.HAIR_STRANDS:\n return Answers.HairStrands\n case FilterType.HAIR_TYPE:\n return Answers.HairTypes\n case FilterType.PRODUCT_SPENT:\n return Answers.ProductSpents\n }\n }\n\n static getQuestions(filter: FilterType): string {\n return QuestionsFilters[filter]\n }\n}\n","import { Shops } from '../../catalog'\nimport { BaseModel, GenericIdentifier } from '../../generic'\nimport { CampaignPage } from './types/campaign-page'\n\nexport class Campaign extends BaseModel<Campaign> {\n pages: CampaignPage\n publishDate: Date\n endDate: Date\n shop: Shops\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic'\n\nexport class CampaignBanner extends BaseModel<CampaignBanner> {\n imageDesk: string\n imageMobile: string\n titleMeta: string\n imageMeta: string\n title: string\n redirectLink: string\n altText: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { Banner, Benefit, HomeDataStructure } from './types'\n\nexport class Home extends BaseModel<Home> {\n benefitsSection: Benefit[]\n blockBanners: Banner[]\n blogBanner: Banner\n brandsCarousel: Banner[]\n buyToWinBanner: Banner\n discoverCategories: string[]\n featuredCampaignBanner: Banner\n featuredCategories: string[]\n heroCarousel: Banner[]\n verticalCarousels: string[]\n id: string\n data: HomeDataStructure\n minValueForFreeShipping: number\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { MenuNav } from './types/menu-nav.type'\n\nexport class ShopMenu extends BaseModel<ShopMenu> {\n menuNav: MenuNav[]\n id: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { ShopPageName } from '../enums'\nimport { ShopBanner, ShopBrands, ShopCarousel, ShopCollection } from './types'\n\nexport class ShopSettings extends BaseModel<ShopSettings> {\n id: string | ShopPageName\n name: string\n shop: string\n sections: (ShopBanner | ShopCarousel | ShopCollection | ShopBrands)[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class InvalidArgumentError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class RequiredArgumentError extends CustomError {\n arguments: string[]\n\n constructor(readonly args: string[]) {\n super(`Required arguments: ${args.join(', ')}`)\n\n this.arguments = args\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class NotFoundError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class DuplicatedResultsError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import axios from 'axios'\nimport { ModelBaseStructure } from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { ElasticSearchResult } from '../types/elastic-search-result'\nimport { ElasticSearchAdapter } from './elastic-search.adapter'\n\nexport type AxiosElasticSearchConfig = {\n url: string\n credential: string\n}\n\nexport class AxiosAdapter<T extends ModelBaseStructure<T>> implements ElasticSearchAdapter<T> {\n constructor(private readonly config: AxiosElasticSearchConfig) {}\n\n async get(index: string, id: string): Promise<T> {\n try {\n const { data } = await axios({\n url: `${this.config.url}/${index}/_doc/${id}`,\n method: 'GET',\n responseType: 'json',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `ApiKey ${this.config.credential}`,\n },\n })\n\n return data._source\n } catch (error) {\n throw new NotFoundError(error.message)\n }\n }\n\n async query(index: string, query: any): Promise<ElasticSearchResult<T>> {\n const { data } = await axios({\n url: `${this.config.url}/${index}/_search`,\n method: 'POST',\n responseType: 'json',\n headers: {\n Accept: 'application/vnd.elasticsearch+json;compatible-with=7',\n 'Content-Type': 'application/vnd.elasticsearch+json;compatible-with=7',\n Authorization: `ApiKey ${this.config.credential}`,\n },\n data: query,\n })\n\n return {\n total: data.hits.total.value,\n hits: data.hits.hits,\n }\n }\n\n async save(index: string, data: Partial<T>): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_doc`,\n method: 'POST',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n data,\n })\n }\n\n async update(index: string, id: string, data: Partial<T>): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_update/${id}`,\n method: 'PUT',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n data,\n })\n }\n\n async delete(index: string, id: string): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_doc/${id}`,\n method: 'DELETE',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n })\n }\n}\n","import { Product, RoundProductPricesHelper, Shops } from '../../../domain'\nimport { ProductHasuraGraphQL } from '../../hasura-graphql'\nimport { ElasticSearchAdapter } from '../adapters'\n\nexport class ProductsIndex {\n private index = `products`\n constructor(private readonly adapter: ElasticSearchAdapter<Product>) {}\n\n async getById(id: string): Promise<Product> {\n const data = await this.adapter.get(this.index, id)\n return Product.toInstance(data)\n }\n\n async search(searchTerm: string, total: number, shop: string) {\n const size: number = total >= 10 ? 500 : 9\n\n const fields = [\n 'EAN',\n 'brand',\n 'id',\n 'images',\n 'miniatures',\n 'name',\n 'price',\n 'sku',\n 'stock',\n 'slug',\n 'reviews',\n 'hasVariants',\n 'rate',\n ]\n\n const filter: Array<{ term: { [key: string]: string | boolean | number } }> = [{ term: { published: true } }]\n\n if (size > 9) {\n fields.push(...['pricePaid', 'isGift', 'stock', 'weight', 'tags'])\n } else {\n filter.push({ term: { tags: shop == Shops.GLAMSHOP ? 'feminino' : 'masculino' } })\n }\n\n const search = await this.adapter.query(this.index, {\n size,\n _source: fields,\n query: {\n bool: {\n must: {\n multi_match: {\n query: `${searchTerm}`,\n type: 'bool_prefix',\n fields: [\n 'name',\n 'name.folded',\n 'name.search',\n 'description',\n 'description.search',\n 'description.folded',\n 'brand',\n 'brand.search',\n 'brand.folded',\n ],\n fuzziness: 2,\n },\n },\n should: {\n match_phrase_prefix: {\n 'name.search': {\n query: `${searchTerm}`,\n slop: 10,\n },\n },\n },\n filter,\n },\n },\n })\n\n search.hits = search.hits\n .filter((e: any) => e._source.name !== '')\n .map((hit) => {\n RoundProductPricesHelper.roundProductPrices(hit._source)\n return hit\n })\n\n return search\n }\n\n async save(product: ProductHasuraGraphQL): Promise<void> {\n try {\n const { createdAt, updatedAt, kitProducts, ...data } = product\n\n this.adapter.save(this.index, data)\n } catch (error) {\n console.error(error)\n }\n }\n\n async update(product: ProductHasuraGraphQL) {\n try {\n await this.adapter.update(this.index, product.id, product)\n } catch (error) {\n console.error(error)\n }\n }\n\n async delete(id: string): Promise<void> {\n try {\n await this.adapter.delete(this.index, id)\n } catch (error) {\n console.error(error)\n }\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../../domain'\nimport { each, isObject, MixinCtor, unset } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreRepository } from '../types'\n\nexport const withFirestore = <TBase extends ModelBaseStructure<TBase>, T extends MixinCtor = MixinCtor>(\n MixinBase: T,\n): MixinCtor<FirestoreRepository<TBase>, never> => {\n const isObjectsAndNoDate = (data: any): boolean =>\n data &&\n !Array.isArray(data) &&\n typeof data === 'object' &&\n data?.constructor.name !== 'Timestamp' &&\n !('seconds' in data)\n const bindDate = (data: Record<string, any>, keyName: string): Record<string, any> => {\n if (data?.constructor.name === 'Timestamp') return data.toDate()\n if (data && typeof data === 'object' && 'seconds' in data) return new Date(data.seconds * 1000)\n if (typeof data === 'number' && ['createdAt', 'updatedAt'].includes(keyName)) return new Date(data)\n\n return data\n }\n const bindAllDateFromObject = (data: {}): NonFunctionAndIdentifierPropertiesWithNoPartial<TBase> => {\n return Object.keys(data).reduce(\n (object, key) => ({\n ...object,\n [key]: isObjectsAndNoDate(data[key])\n ? bindAllDateFromObject(data[key])\n : Array.isArray(data[key])\n ? data[key].map((element) => (isObjectsAndNoDate(element) ? bindAllDateFromObject(element) : element))\n : bindDate(data[key], key),\n }),\n {} as NonFunctionAndIdentifierPropertiesWithNoPartial<TBase>,\n )\n }\n const omitByRecursivelyInPlace = (value: any, iteratee: (value: any, key: string) => boolean): any => {\n each(value, (v, k) => {\n if (iteratee(v, k)) {\n unset(value, k)\n } else if (isObject(v)) {\n omitByRecursivelyInPlace(v, iteratee)\n }\n })\n\n return value\n }\n\n return class extends MixinBase implements FirestoreRepository<TBase> {\n readonly firestore?: FirebaseFirestore\n collectionName: string\n model: BaseModelBuilder<TBase>\n fields: Record<NonFunctionAndIdentifierPropertyNames<TBase>, FirestoreFieldType>\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 => {\n const plain = data?.toPlain ? data.toPlain() : data\n\n return omitByRecursivelyInPlace(plain, (value) => value === undefined)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>): TBase => {\n const data = snap.data()\n let bindedData: NonFunctionAndIdentifierPropertiesWithNoPartial<TBase>\n\n try {\n const ids = { id: snap.id }\n\n bindedData = bindAllDateFromObject(data)\n\n return this.model.toInstance({ ...bindedData, ...ids })\n } catch (error) {\n console.info('id', snap.id)\n console.info('data', JSON.stringify(bindedData))\n console.error(error)\n\n throw error\n }\n },\n }\n }\n }\n}\n","import { QueryDocumentSnapshot, QuerySnapshot } from '@firebase/firestore-types'\nimport { ModelBaseStructure } from '../../../../domain'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\n\nexport const withHelpers = <TMixinBase extends MixinCtor = MixinCtor>(MixinBase: MixinCtor & TMixinBase) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends ModelBaseStructure<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 ModelBaseStructure<T>, E extends ModelBaseStructure<E>>(\n repository: FirestoreRepository<T> | FirestoreSubRepository<T, E>,\n ): repository is FirestoreSubRepository<T, E> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { GetRepository, IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withGetFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & InstanceType<TMixinBase> & GetRepository<TBase> & FirestoreHelpers, []> => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: IdentifiersModel<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: IdentifiersModel<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } as any\n}\n","export enum FirestoreFieldType {\n String = 'string',\n Number = 'number',\n Boolean = 'boolean',\n Timestamp = 'timestamp',\n Array = 'array',\n Map = 'map',\n}\n","import { CollectionReference, Query, WhereFilterOp } from '@firebase/firestore-types'\nimport {\n FindRepository,\n FindRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionPropertyNames,\n RepositoryFindField,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n Where,\n} from '../../../../domain'\nimport { isDate, isNil, isNumber, isObject, isString, MixinCtor, set } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withFindFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & InstanceType<TMixinBase> & FindRepository<TBase> & FirestoreHelpers, []> => {\n const checkIfIsFilterOption = (filter: any): filter is RepositoryFindFieltersOptions<TBase, any> =>\n !isNil(filter?.operator)\n const getValueFromFilter = (filter: RepositoryFindField<TBase, any>): any => {\n return checkIfIsFilterOption(filter) ? filter.value : filter\n }\n const getFinalValueFrom = (value: any) =>\n isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)\n ? value\n : Object.values(getFinalValueFrom)\n\n return class FindFirestore extends MixinBase implements FindRepository<TBase> {\n async find({ filters, limits, orderBy, options }: FindRepositoryParams<TBase> = {}): Promise<\n RepositoryFindResult<TBase>\n > {\n const orderByKeys = Object.keys(orderBy || {})\n const enableCount = options?.enableCount ?? true\n let query: CollectionReference<TBase> | Query<TBase> = this.collection(\n this.buildCollectionPathForFind(filters || {}),\n )\n\n query = this.makeFirestoreWhere(query, filters || {})\n\n if (orderByKeys.length) {\n const filtersKeysWithUnordered = Object.keys(filters || {}).filter(\n (filterKey) => !orderByKeys.includes(filterKey),\n )\n\n if (filtersKeysWithUnordered.length)\n filtersKeysWithUnordered.forEach(\n (filterKey) =>\n (orderBy = {\n ...(![Where.EQUALS].includes(filters[filterKey].operator) ? { [filterKey]: 'asc' } : {}),\n ...orderBy,\n }),\n )\n\n Object.keys(orderBy).forEach((fieldName) => (query = query.orderBy(fieldName, orderBy[fieldName])))\n }\n\n query = await 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: enableCount ? this.calculateCount(data, limits) : Infinity,\n }\n }\n\n buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>): string {\n if (!this.isSubCollection(this)) return this.collectionName\n\n const parentIdField = this.parentIdField as NonFunctionAndIdentifierPropertyNames<TBase>\n const parentId = getValueFromFilter(filters?.[parentIdField])\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) => this.buildWhereSentence(query, fieldName, filter[fieldName]),\n queryReference,\n )\n\n buildWhereSentence = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n fieldName: NonFunctionPropertyNames<TBase> | string,\n options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>,\n ): Query<TBase> => {\n if (this.isSubCollection(this) && fieldName === this.parentIdField) return queryReference\n\n const value = options?.value || options\n const object = {}\n\n set(object, fieldName, value)\n\n const plainInstance = new this.model(object).toPlain()\n const firestoreFieldName =\n fieldName.toString().indexOf('.') > -1\n ? fieldName.toString()\n : Object.keys(plainInstance).find((key) => plainInstance[key])\n\n if (options?.operator === Where.LIKE) {\n if (\n Array.isArray(options?.value) &&\n (this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName])\n )\n return queryReference.where(firestoreFieldName, 'array-contains-any', options.value)\n\n queryReference = queryReference.where(firestoreFieldName, '>=', options.value)\n queryReference = queryReference.where(firestoreFieldName, '<=', `${options.value}~`)\n\n return queryReference\n }\n if (\n options?.operator === Where.IN &&\n Array.isArray(options?.value) &&\n (this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName])\n )\n return queryReference.where(firestoreFieldName, 'array-contains', options.value)\n if (isObject(options) && isNil(options?.operator) && isNil(options?.value)) {\n return Object.keys(options).reduce(\n (queryReferenceWithWhere, key) =>\n this.buildWhereSentence(queryReferenceWithWhere, `${fieldName.toString()}.${key}`, options[key]),\n queryReference,\n )\n }\n\n return queryReference.where(\n firestoreFieldName,\n (options?.operator as WhereFilterOp) || '==',\n options?.value || options,\n )\n }\n\n async defineLimits(\n query: CollectionReference<TBase> | Query<TBase>,\n filters: RepositoryFindFielters<TBase>,\n limits: RepositoryLimitOptions<TBase>,\n ): Promise<Query<TBase>> {\n if (limits?.offset) {\n if (this.model.isModel(limits.offset))\n query = query.startAfter(\n await this.collection(this.buildCollectionPathForFind(filters))\n .doc(limits.offset[limits.offset.identifiersFields.shift() as string])\n .get(),\n )\n else if (isNumber(limits.offset) || isString(limits.offset)) query = query.startAt(limits.offset)\n }\n if (limits?.limit) query = 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 } as any\n}\n","import { DocumentReference } from '@firebase/firestore-types'\nimport { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../../domain'\nimport { isEmpty, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withCreateFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & CreateRepository<TBase> & FirestoreHelpers,\n []\n> => {\n return class CreateFirestore extends MixinBase implements CreateRepository<TBase> {\n async create(data: CreateRepositoryParams<TBase>): Promise<TBase> {\n const docRef = await this.save(this.model.toInstance(data as any))\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n async save(data: TBase): Promise<DocumentReference<TBase>> {\n const id = Object.values(data.identifier)?.shift()?.toString()\n const collectionPath = this.buildCollectionPathForAdd(data)\n\n if (isEmpty(id)) return this.collection(collectionPath).add(data)\n\n const docRef = this.collection(collectionPath).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 } as any\n}\n","import firebase from 'firebase'\nimport {\n IdentifierModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../../domain'\nimport { MixinCtor, PropType, isNil } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport type UpdateFirestoreRepositoryType<MBase extends ModelBaseStructure<MBase>> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport const withUpdateFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & UpdateRepository<TBase> & InstanceType<TMixinBase> & FirestoreHelpers,\n []\n> => {\n const getValueFromParams = (\n params: RepositoryUpdateParams<TBase>,\n field: NonFunctionAndIdentifierPropertyNames<TBase> | IdentifierModel<TBase>,\n ): PropType<TBase, NonFunctionAndIdentifierPropertyNames<TBase>> =>\n (isNil(params[field as string]?.value) ? params[field as string] : params[field as string].value) || null\n const getValueByAction = (options: UpdateOptions<TBase>): firebase.firestore.FieldValue | unknown => {\n const fieldValues = firebase.firestore.FieldValue\n\n if (isNil(options.action)) return options\n if (options.action === UpdateOptionActions.REMOVE_FIELD) return fieldValues.delete()\n if (Array.isArray(options.value)) {\n if (options.action === UpdateOptionActions.MERGE) return fieldValues.arrayUnion(...options.value)\n if (options.action === UpdateOptionActions.REMOVE) return fieldValues.arrayRemove(...options.value)\n }\n\n return options.value\n }\n\n return class UpdateFirestore extends MixinBase implements UpdateRepository<TBase> {\n async update(data: RepositoryUpdateParams<TBase>): Promise<TBase> {\n const model = new this.model()\n const keyField = model.identifiersFields.shift()\n const docRef = this.collection(this.buildCollectionPathForUpdate(data)).doc(\n getValueFromParams(data, keyField as IdentifierModel<TBase>).toString(),\n )\n\n await docRef.set(this.paramsToPlain(data), { merge: true })\n\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n buildCollectionPathForUpdate(identifiers: RepositoryUpdateParams<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${getValueFromParams(identifiers, this.parentIdField)}/${\n this.collectionName\n }`\n : this.collectionName\n }\n\n paramsToPlain(params: RepositoryUpdateParams<TBase>): Partial<TBase> {\n const model = this.model\n\n if (model.isModel(params)) return params.toPlain()\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({ ...data, [currentKey]: getValueByAction(params[currentKey]) }),\n {},\n )\n }\n } as any\n}\n","import { DeleteRepository, DeleteRepositoryParams, IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withDeleteFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & DeleteRepository<TBase> & FirestoreHelpers,\n []\n> => {\n return class DeleteFirestore extends MixinBase implements DeleteRepository<TBase> {\n async delete(identifiers: DeleteRepositoryParams<TBase>): Promise<void> {\n await this.collection(this.buildCollectionPathForRemove(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .delete()\n }\n\n buildCollectionPathForRemove(identifiers: IdentifiersModel<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } as any\n}\n","import { CollectionReference } from '@firebase/firestore-types'\nimport { IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\n\nexport const withSubCollection = <\n TBase extends ModelBaseStructure<TBase>,\n TBaseParent extends ModelBaseStructure<TBaseParent>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase>> & TMixinBase,\n ParentModel: new () => TBaseParent,\n): MixinCtor<\n FirestoreRepository<TBase> &\n InstanceType<TMixinBase> &\n FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>> &\n FirestoreHelpers,\n []\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: keyof IdentifiersModel<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 } as any\n}\n","import { CrudRepository, ModelBaseStructure } from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\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 = <\n TBase extends ModelBaseStructure<TBase>,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & Repository & FirestoreHelpers, []> => {\n return class CrudFirestore\n extends withUpdateFirestore(\n withGetFirestore(\n withFindFirestore(\n withDeleteFirestore(\n withCreateFirestore(MixinBase as MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers>),\n ),\n ),\n ),\n )\n implements CrudRepository<TBase> {} as any\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Lead, LeadRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class LeadFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Lead>(Base)))\n implements LeadRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'leads'\n this.model = Lead\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 { 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 { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPayment, Subscription, SubscriptionPaymentRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionPaymentFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<SubscriptionPayment>(Base))), Subscription)\n implements SubscriptionPaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\n super()\n this.collectionName = 'payments'\n this.parentIdField = 'subscriptionId'\n this.model = SubscriptionPayment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { User, UserAddress, UserAddressRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserAddressFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserAddress>(Base))), User)\n implements UserAddressRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'address'\n this.parentIdField = 'userId'\n this.model = UserAddress\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 { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BeautyProfile, User, UserRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class UserFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<User>(Base)))\n implements UserRepository\n{\n constructor(\n readonly firestore: FirebaseFirestore,\n ) {\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 user.isSubscriber = await this.checkIfIsSubscriber(user.id)\n\n return user\n }\n\n async checkIfExistsByField(field: string, value: string): Promise<boolean> {\n const result = await this.find({ filters: {[field]: value} });\n\n return result.count > 0\n }\n\n buildModelInstance(): {\n toFirestore: (data: User) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<User>) => User\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: User): DocumentData => {\n const plain = toFirestore(data)\n\n delete plain.isSubscriber\n\n return plain\n },\n fromFirestore,\n }\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 async checkIfIsSubscriber(userId: string): Promise<boolean> {\n const docs = await this.firestore\n .collection('subscription')\n .where('user.id', '==', userId)\n .where('status', '==', 'active')\n .get()\n\n return !!docs && !!docs.size\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 { User, UserPaymentMethod, UserPaymentMethodRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserPaymentMethodFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserPaymentMethod>(Base))), User)\n implements UserPaymentMethodRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'payment_method'\n this.parentIdField = 'userId'\n this.model = UserPaymentMethod\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Category, CategoryRepository, Product, Shops } from '../../../../../domain'\nimport { Base, chunk } from '../../../../../utils'\n\nimport { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../../errors'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CategoryFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Category>(Base)))\n implements CategoryRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'categories'\n this.model = Category\n }\n\n getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n return this.collection(this.collectionName)\n .where('slug', '==', slug)\n .where('shop', '==', shop)\n .where('published', '==', true)\n .get()\n .then((snap) => {\n if (snap.size > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n if (snap.empty) throw new NotFoundError(`Document with slug ${slug} not found`)\n\n return snap.docs[0].data()\n })\n .catch((error) => error)\n }\n\n async getCategoriesForHome(\n categoryIds: string[],\n limit = 4,\n gender?: string,\n ): Promise<{ category: Category; products: Product[] }[]> {\n const categorySnap = await this.collection(this.collectionName)\n .where('id', 'in', categoryIds.filter(Boolean))\n .where('published', '==', true)\n .get()\n\n if (categorySnap.empty) throw new NotFoundError('Categories not found')\n\n const categories = categorySnap.docs.map((doc) => doc.data())\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true, gender }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(\n category: Category,\n options?: { limit?: number; hasStock?: boolean; gender?: string },\n ): Promise<Product[]> {\n if (!category.products) throw new RequiredArgumentError(['Category products is empty'])\n\n const chunks = chunk(category.products, 10)\n const products = []\n\n for (const productIds of chunks) {\n if (options?.limit && products.length >= options?.limit) break\n\n let query = await this.collection('productsErpVitrine')\n .where('published', '==', true)\n .where('id', 'in', productIds)\n\n if (options?.hasStock) query = query.where('stock.quantity', '>', 0)\n if (options?.gender) query = query.where('tags', 'array-contains', options?.gender)\n if (options?.limit) query = query.limit(options?.limit)\n\n const productSnap = await query.get()\n\n if (productSnap.empty) continue\n\n products.push(...productSnap.docs.map((doc) => doc.data()))\n }\n\n return products\n }\n\n getCategoryByShop(shop: string): Promise<Category[]> {\n return\n }\n\n getChildren(parentId: number): Promise<Category[]> {\n return\n }\n\n isChild(id: number, parentId: number): Promise<boolean> {\n return\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport {\n FindRepositoryParams,\n Product,\n ProductRepository,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\n Where,\n} from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements ProductRepository\n{\n private reviews: Partial<Record<ReviewStatusParams, ReviewWithProductData[]>> = {}\n\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'productsErpVitrine'\n this.model = Product\n }\n\n async getBySlug(slug: string): Promise<Product> {\n const result = await this.find({\n filters: {\n slug: { operator: Where.EQUALS, value: slug },\n },\n })\n\n return result?.data?.shift()\n }\n\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\n const { data: products } = await this.find()\n\n products.forEach((product) => {\n if ([undefined, 0].includes(product.reviews?.length)) return\n\n const productInfo = {\n productId: product.id,\n productName: product.name,\n productSku: product.sku,\n }\n\n this.reviews.pending = []\n this.reviews.approved = []\n this.reviews.rejected = []\n\n product.reviews.forEach((review) => {\n if ([null, undefined].includes(review.status)) return this.reviews.pending.push({ ...review, ...productInfo })\n if (review.status === false) return this.reviews.rejected.push({ ...review, ...productInfo })\n if (!!review.status) return this.reviews.approved.push({ ...review, ...productInfo })\n })\n })\n\n return this.reviews[status]\n }\n\n cleanShoppingCountFromIds(ids: string[]): Promise<void> {\n return\n }\n\n findCatalog(params: FindRepositoryParams<Product>): Promise<RepositoryFindResult<Product>> {\n return this.find(params)\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, Variant, VariantRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { ProductFirestoreRepository } from './product-firestore.repository'\n\nexport class ProductVariantFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Variant>(Base))), Product)\n implements VariantRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: ProductFirestoreRepository) {\n super()\n this.collectionName = 'variants'\n this.parentIdField = 'productId'\n this.model = Variant\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, SubscriptionProductRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements SubscriptionProductRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionProducts'\n this.model = Product\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Buy2Win, Buy2WinRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class Buy2WinFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Buy2Win>(Base)))\n implements Buy2WinRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'buy2win'\n this.model = Buy2Win\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\n\nimport { CampaignDashboard } from '../../../../../domain/shopping/models/campaign-dashboard'\nimport { CampaignDashboardRepository } from '../../../../../domain/shopping/repositories/campaign-dashboard.repository'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignDashboardFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CampaignDashboard>(Base)))\n implements CampaignDashboardRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'dashboardCampaignsAuto'\n this.model = CampaignDashboard\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\n\nimport { CampaignHashtag } from '../../../../../domain/shopping/models/campaign-hashtag'\nimport { CampaignHashtagRepository } from '../../../../../domain/shopping/repositories/campaign-hashtag.repository'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignHashtagFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CampaignHashtag>(Base)))\n implements CampaignHashtagRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'hashtagCampaignsAuto'\n this.model = CampaignHashtag\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Checkout, CheckoutRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Checkout>(Base)))\n implements CheckoutRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkouts'\n this.model = Checkout\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { CheckoutSubscription, CheckoutSubscriptionRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutSubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CheckoutSubscription>(Base)))\n implements CheckoutSubscriptionRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkoutsSubscription'\n this.model = CheckoutSubscription\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Base, isNil } from '../../../../../utils'\nimport { Coupon, CouponRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CouponFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Coupon>(Base)))\n implements CouponRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'coupons'\n this.model = Coupon\n }\n\n buildModelInstance(): {\n toFirestore: (data: Coupon) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>) => Coupon\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Coupon): DocumentData => {\n const plain = toFirestore(data)\n\n if (!!data.expiresIn) plain.expiresIn = data.expiresIn.getTime()\n\n return plain\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>): Coupon => {\n const instance = fromFirestore(snap)\n\n if (!isNil(instance.expiresIn)) instance.expiresIn = new Date(snap.data().expiresIn)\n\n return instance\n },\n }\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Order, OrderRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { FirestoreFieldType } from '../../enums'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class OrderFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Order>(Base)))\n implements OrderRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'orders'\n this.model = Order\n this.fields = {\n status: FirestoreFieldType.String,\n }\n }\n\n buildModelInstance(): {\n toFirestore: (data: Order) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Order>) => Order\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n return {\n toFirestore: (data: Order): DocumentData => toFirestore(data?.toPlain ? data.toPlain() : data),\n fromFirestore: (snap: QueryDocumentSnapshot<Order>): Order => {\n const instance = fromFirestore(snap)\n\n return this.orderFromFirestore(instance)\n },\n }\n }\n\n private orderFromFirestore = (order: Order): Order => {\n if (!!order?.lineItems?.length) {\n order.lineItems = order.lineItems.map((lineItem) => {\n if (!!lineItem.price?.[order.shop]) {\n const shopPrice = lineItem['price'][order.shop]\n\n lineItem['price'] = shopPrice\n }\n\n return lineItem\n })\n }\n\n return order\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { LegacyOrderRepository } from '../../../../../domain'\n\nimport { OrderFirestoreRepository } from './order-firestore.repository'\n\nexport class LegacyOrderFirestoreRepository extends OrderFirestoreRepository implements LegacyOrderRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super(firestore)\n this.collectionName = 'legacyOrders'\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Payment, PaymentRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class PaymentFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Payment>(Base)))\n implements PaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'payments'\n this.model = Payment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionPlanFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\n implements SubscriptionPlanRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionPlans'\n this.model = SubscriptionPlan\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { CampaignBanner, CampaignBannerRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignBannerFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CampaignBanner>(Base)))\n implements CampaignBannerRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'banners'\n this.model = CampaignBanner\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { Campaign, CampaignRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Campaign>(Base)))\n implements CampaignRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'campaigns'\n this.model = Campaign\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport firebase from 'firebase'\n\nimport { Base } from '../../../../../utils'\nimport { Category, Home, HomeCategoryGroup, HomeRepository, Product } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class HomeFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Home>(Base)))\n implements HomeRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'dms'\n this.model = Home\n }\n\n buildModelInstance(): {\n toFirestore: (data: Home) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Home>) => Home\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Home): DocumentData => {\n const modifiedData = this.homeToFirestore(data)\n\n return toFirestore(modifiedData)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Home>): Home => {\n const instance = fromFirestore(snap)\n\n return this.homeFromFirestore(instance)\n },\n }\n }\n\n private homeToFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.homeCategoryGroupToPlain)\n }\n\n return home\n }\n\n private homeCategoryGroupToPlain = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: homeCategoryGroup.category.toPlain(),\n products: homeCategoryGroup.products.map((product) => product.toPlain()),\n })\n\n private homeFromFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup)\n home.data.createdAt =\n home.data.createdAt instanceof firebase.firestore.Timestamp ? home.data.createdAt.toDate() : home.data.createdAt\n home.data.expiresAt =\n home.data.expiresAt instanceof firebase.firestore.Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt\n }\n\n return home\n }\n\n private plainToHomeCategoryGroup = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: Category.toInstance(homeCategoryGroup.category),\n products: homeCategoryGroup.products.map((product) => Product.toInstance(product)),\n })\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { ShopMenu, ShopMenuRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopMenuFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopMenu>(Base)))\n implements ShopMenuRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'shopMenus'\n this.model = ShopMenu\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { ShopSettings, ShopSettingsRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopSettingsFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopSettings>(Base)))\n implements ShopSettingsRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'shopSettings'\n this.model = ShopSettings\n }\n}\n","import firebase from 'firebase'\n\nimport { AuthenticationService, BasicUserData, LoginAndPasswordParams } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class AuthenticationFirebaseAuthService implements AuthenticationService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithEmailAndPassword(data.email, data.password)\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signInWithGoogle(): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider())\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signOut(): Promise<void> {\n this.firebaseAuth.signOut()\n }\n\n async signInAnonymously(): Promise<FirebaseUserWithId> {\n const auth = await this.firebaseAuth.signInAnonymously()\n const user = auth.user as FirebaseUserWithId\n\n user.id = auth.user.uid\n\n return user\n }\n\n async sendPasswordResetEmail(email: string): Promise<void> {\n return this.firebaseAuth.sendPasswordResetEmail(email)\n }\n}\n","import firebase from 'firebase'\n\nimport { RegisterParams, RegisterService, UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class RegisterFirebaseAuthService implements RegisterService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async register(params: RegisterParams): Promise<FirebaseUserWithId> {\n try {\n const auth = await this.firebaseAuth.createUserWithEmailAndPassword(params.email, params.password)\n const user = auth.user as FirebaseUserWithId\n\n user.sendEmailVerification()\n user.id = auth.user.uid\n\n return user\n } catch (error) {\n if (error.code === 'auth/email-already-in-use') throw new UserAlreadyRegisteredError('Email already registered')\n if (error.code === 'auth/weak-password') throw new WeakPasswordError()\n\n throw error\n }\n }\n}\n","import { ModelBaseStructure, NonFunctionAndIdentifierPropertyNames } from '../../../../domain'\nimport { isNil, isObject } from '../../../../utils'\nimport { ColumnOptions, HasuraGraphQLFields } from '../../types'\n\ntype FindByAttributeResult<\n MBase extends ModelBaseStructure<MBase>,\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase>,\n> = ColumnOptions<MBase[Attribute], MBase> & { attributeName: Attribute }\n\nexport class AttributeOptionHelper {\n static FindByAttribute = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase> = NonFunctionAndIdentifierPropertyNames<MBase>,\n >(\n attributeName: Attribute,\n fields: HasuraGraphQLFields<MBase>,\n ): FindByAttributeResult<MBase, Attribute> => {\n if (fields.includes(attributeName as any))\n return { columnName: attributeName.toString(), attributeName, to: (value) => value, from: (value) => value }\n\n const field = fields.find(\n (columnOption) => isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()),\n )\n const fieldOption = field?.[attributeName.toString()]\n\n if (isNil(fieldOption)) return { columnName: attributeName.toString(), attributeName }\n if (Array.isArray(fieldOption)) return { columnName: attributeName.toString(), attributeName, fields: fieldOption }\n\n return { attributeName, columnName: attributeName.toString(), ...fieldOption }\n }\n\n static CheckIsColumnOption = <Model extends ModelBaseStructure<Model>, ParentModel extends ModelBaseStructure>(\n fieldValue: ColumnOptions<Model, ParentModel>,\n ): fieldValue is ColumnOptions<Model, ParentModel> => !!fieldValue?.columnName\n\n static FindColumnOptionFromList = <\n Model extends ModelBaseStructure<Model>,\n ParentModel extends ModelBaseStructure<ParentModel>,\n >(\n columnName: string,\n fields: HasuraGraphQLFields<ParentModel>,\n ): ColumnOptions<Model, ParentModel> & { attributeName: NonFunctionAndIdentifierPropertyNames<ParentModel> } => {\n if (fields.includes(columnName as any))\n return { columnName, attributeName: columnName as NonFunctionAndIdentifierPropertyNames<ParentModel> }\n\n const field =\n fields.find(\n (columnOption) =>\n isObject(columnOption) &&\n Object.values(columnOption).find(\n (option) => AttributeOptionHelper.CheckIsColumnOption(option) && option.columnName === columnName,\n )?.columnName === columnName,\n ) || {}\n const attributeName = Object.keys(field).find(\n (fieldOptionFromList) =>\n AttributeOptionHelper.CheckIsColumnOption(field[fieldOptionFromList]) ||\n Array.isArray(field[fieldOptionFromList]),\n )\n const fieldOption = field?.[attributeName]\n\n if (Array.isArray(fieldOption))\n return { attributeName: attributeName as NonFunctionAndIdentifierPropertyNames<ParentModel>, fields: fieldOption }\n\n return {\n attributeName: (attributeName as NonFunctionAndIdentifierPropertyNames<ParentModel>) || columnName,\n columnName,\n ...fieldOption,\n }\n }\n}\n","export enum HasuraGraphQLWhere {\n EQUALS = '_eq',\n GT = '_gt',\n GTE = '_gte',\n IN = '_in',\n NOTIN = '_nin',\n LT = '_lt',\n LTE = '_lte',\n LIKE = '_like',\n NOTLIKE = '_nlike',\n ISNULL = '_is_null',\n ISNOTNULL = '_is_null',\n}\n","export enum HasuraGraphQLColumnType {\n Int = 'Int',\n Float = 'Float',\n Boolean = 'Boolean',\n String = 'String',\n DateTime = 'timestampz',\n Json = 'json',\n Jsonb = 'jsonb',\n Enum = 'enum',\n Uuid = 'uuid',\n}\n","import { ModelBaseStructure, RepositoryFindFieltersOptions, Where } from '../../../../domain'\nimport { isNil } from '../../../../utils'\nimport { ColumnOptions } from '../../types'\n\nexport class FilterOptionHelper {\n static CheckIfIsFilterOption = <Model extends ModelBaseStructure>(\n filter: any,\n ): filter is RepositoryFindFieltersOptions<Model, any> => !isNil(filter?.operator)\n\n static GetValueFromFilter = <Model extends ModelBaseStructure<Model>>(\n filter: RepositoryFindFieltersOptions<Model, any>,\n fieldOption: ColumnOptions<any, any>,\n ): any => {\n if (!FilterOptionHelper.CheckIfIsFilterOption(filter)) return filter\n if (filter.operator === Where.ISNULL) return true\n if (filter.operator === Where.ISNOTNULL) return false\n\n const converter = fieldOption.to\n ? fieldOption.to\n : (value) =>\n filter.operator === Where.LIKE && !Array.isArray(filter.value) && value.indexOf('%') < 0\n ? `%${value}%`\n : value\n\n return Array.isArray(filter.value) && !fieldOption.fields && [Where.IN, Where.NOTIN].includes(filter.operator)\n ? filter.value.map((fieldValue) => converter(fieldValue))\n : converter(filter.value as any)\n }\n}\n","import {\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionPropertyNames,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n Where,\n} from '../../../../domain'\nimport { isNil, isObject } from '../../../../utils'\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\nimport { ColumnOptions, HasuraGraphQLFields, VariableOptions } from '../../types'\n\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { FilterOptionHelper } from './filter-option.helper'\n\nexport class BindFilterQueryHelper {\n static MakeGraphQLWhere = <MBase extends ModelBaseStructure<MBase>>(\n filter: RepositoryFindFielters<MBase>,\n fields: HasuraGraphQLFields<MBase>,\n ): VariableOptions =>\n Object.keys(filter).reduce((variables: VariableOptions, fieldName: string) => {\n const columnOption = AttributeOptionHelper.FindByAttribute(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n fields,\n )\n\n if (!columnOption.bindFindFilter)\n return {\n ...variables,\n ...{\n [columnOption.columnName]: BindFilterQueryHelper.BuildWhereSentence(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n filter[fieldName],\n fields,\n ),\n },\n }\n\n const builtFilter: RepositoryFindFieltersOptions<\n MBase,\n NonFunctionPropertyNames<MBase>\n > = columnOption.bindFindFilter(filter[fieldName])\n\n return {\n ...variables,\n ...Object.keys(builtFilter).reduce(\n (variablesList: VariableOptions, columnName: string) => ({\n ...variablesList,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n builtFilter[columnName],\n fields,\n ),\n }),\n {},\n ),\n }\n }, {})\n\n static BuildWhereSentence = <MBase extends ModelBaseStructure<MBase>>(\n field: NonFunctionAndIdentifierPropertyNames<MBase>,\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n fields: HasuraGraphQLFields<MBase>,\n ): VariableOptions => {\n const fieldSentenceOptions = AttributeOptionHelper.FindByAttribute<MBase>(field, fields)\n const isNestedField =\n !Array.isArray(options) &&\n isObject(options) &&\n isNil(options?.operator) &&\n isNil(options?.value) &&\n isNil(fieldSentenceOptions?.to)\n\n if (isNestedField)\n return Object.keys(options).reduce((variables, key) => {\n const fieldOptions = AttributeOptionHelper.FindByAttribute<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n fieldSentenceOptions?.fields || (fields as any),\n )\n const columnName = fieldOptions.columnName\n const columnFields = fieldOptions.fields\n\n return {\n ...variables,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n options[key],\n columnFields || ([] as any),\n ),\n }\n }, {})\n\n if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))\n return {\n [fieldSentenceOptions.fields[0] as NonFunctionAndIdentifierPropertyNames<MBase>]:\n BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }\n\n if (!Array.isArray(options) && isObject(options) && !FilterOptionHelper.CheckIfIsFilterOption(options))\n options = Object.values(options)[0] as RepositoryFindFieltersOptions<MBase, any>\n\n return Array.isArray(options)\n ? options.reduce(\n (whereSentence, option) => ({\n ...whereSentence,\n ...BindFilterQueryHelper.BuildOperatorSentence(\n option,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }),\n {},\n )\n : BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n )\n }\n\n static BuildOperatorSentence = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, any>,\n fieldOption: ColumnOptions<any, any>,\n ): VariableOptions => ({\n [BindFilterQueryHelper.GetHasuraOperator(options, fieldOption)]: FilterOptionHelper.GetValueFromFilter(\n options,\n fieldOption,\n ),\n })\n\n static GetHasuraOperator = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n fieldOption: ColumnOptions<any, any>,\n ): HasuraGraphQLWhere => {\n if (!FilterOptionHelper.CheckIfIsFilterOption(options)) return HasuraGraphQLWhere.EQUALS\n if (fieldOption.type === HasuraGraphQLColumnType.Jsonb) return BindFilterQueryHelper.GetHasuraJsonbOperator(options)\n\n return HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n }\n\n static GetHasuraJsonbOperator = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n ): HasuraGraphQLWhere => {\n if (options.operator === Where.IN) return '_contains' as HasuraGraphQLWhere\n if (options.operator === Where.LIKE) return '_has_keys_any' as HasuraGraphQLWhere\n\n return HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n }\n}\n","import {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n PartialIdentifiersModel,\n} from '../../../../domain'\nimport { isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils'\nimport { ColumnOptions, Fields, GraphQLParams, HasuraGraphQLFields } from '../../types'\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { BindFilterQueryHelper } from './bind-filter-query.helper'\n\nexport class GraphQLFieldHelper {\n static CheckIsGraphQLParams = <Model extends ModelBaseStructure<Model>>(\n params: string | GraphQLParams<Model>[],\n ): params is GraphQLParams<Model>[] =>\n !isString(params) && Array.isArray(params) && params.length >= 0 && !!params[0].operation\n\n static ConvertModelFieldsToGraphQLFields = <Model extends ModelBaseStructure<Model>>(\n fields: HasuraGraphQLFields<Model>,\n ): Fields => {\n return fields\n ?.map((field) => {\n if (isString(field)) return field.toString()\n\n const fieldName = Object.keys(field).shift()\n const fieldValue = field[fieldName]\n\n if (Array.isArray(fieldValue))\n return { [fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue) }\n if (!AttributeOptionHelper.CheckIsColumnOption(fieldValue)) return\n\n const isNestedField = !!fieldValue.fields\n\n if (isNestedField) return GraphQLFieldHelper.ConvertNestedFieldsToGraphQLFields(fieldName, fieldValue as any)\n\n return fieldValue.columnName\n })\n .filter((field) => !!field)\n }\n\n static ConvertFieldValueFrom = <\n Model extends ModelBaseStructure<Model>,\n DataType extends Record<string, string | number | DataType | Date>,\n >(\n data: string | number | DataType | Date,\n fields: HasuraGraphQLFields<Model>,\n ): NonFunctionAndIdentifierPropertiesWithNoPartial<Model> | PartialIdentifiersModel<Model> =>\n Object.keys(data).reduce((result, columnName) => {\n const {\n attributeName,\n fields: attributeFields,\n from,\n } = AttributeOptionHelper.FindColumnOptionFromList(columnName, fields)\n\n if (!!attributeFields && Array.isArray(attributeFields)) {\n if (Array.isArray(data[columnName]))\n return {\n ...result,\n [attributeName]: from\n ? from(data[columnName], data)\n : data[columnName].map((value) =>\n GraphQLFieldHelper.ConvertFieldValueFrom(value, attributeFields as any),\n ),\n }\n if (isObject(data[columnName]))\n return {\n ...result,\n [attributeName]: !!from\n ? from(data[columnName])\n : GraphQLFieldHelper.ConvertFieldValueFrom(data[columnName], attributeFields as any),\n }\n }\n\n if (!!from) return { ...result, [attributeName]: from(data[columnName], data) }\n\n return { ...result, [attributeName]: parseDateTime(data[columnName]) }\n }, {} as NonFunctionAndIdentifierPropertiesWithNoPartial<Model>)\n\n static ConvertFieldValueTo = <\n Model extends ModelBaseStructure<Model>,\n DataType extends Record<string, string | number | DataType | Date>,\n >(\n instance: Model,\n fields: HasuraGraphQLFields<Model>,\n update = false,\n ): DataType => {\n const data: Partial<ModelBaseStructure> = instance.toPlain?.() || instance\n\n return Object.keys(data).reduce((result, attributeName) => {\n const {\n columnName,\n fields: attributeFields,\n foreignKeyColumn,\n to,\n bindPersistData,\n } = AttributeOptionHelper.FindByAttribute(attributeName as NonFunctionAndIdentifierPropertyNames<Model>, fields)\n\n if (bindPersistData) return { ...result, ...bindPersistData(data[attributeName], instance) }\n if (isNil(columnName)) return result\n if (\n !!foreignKeyColumn &&\n !isEmpty(foreignKeyColumn) &&\n !Object.keys(foreignKeyColumn).filter((key) => !data[attributeName]?.[key]).length\n )\n return Object.keys(foreignKeyColumn).reduce(\n (object, current) => {\n const { columnName: foreignColumnName } = AttributeOptionHelper.FindByAttribute(\n foreignKeyColumn[current],\n fields,\n )\n\n return { ...object, [foreignColumnName]: data[attributeName]?.[current] }\n },\n { ...result },\n )\n\n if (update && isObject(data[attributeName]) && !isNil(attributeFields) && !isDate(data[attributeName]))\n return result\n\n if (!!columnName && Array.isArray(attributeFields) && isObject(data[attributeName])) {\n const converted = !isNil(columnName) && to ? to(instance[attributeName], instance) : data[attributeName]\n\n return {\n ...result,\n ...(converted !== undefined\n ? {\n [columnName]: {\n data:\n instance[attributeName] instanceof BaseModel\n ? GraphQLFieldHelper.ConvertFieldValueTo(\n data[attributeName],\n attributeFields as HasuraGraphQLFields<BaseModel<any>>,\n )\n : converted,\n },\n }\n : {}),\n }\n }\n\n if (!!to) return { ...result, [columnName]: to(instance[attributeName], instance) }\n\n return { ...result, [columnName]: data[attributeName] }\n }, {} as DataType)\n }\n\n private static ConvertNestedFieldsToGraphQLFields = <\n T extends ModelBaseStructure<T>,\n P extends ModelBaseStructure<P>,\n >(\n fieldName: string,\n fieldValue: ColumnOptions<T, P>,\n ) => {\n const hasCustomFilters = !!fieldValue.filters\n\n if (hasCustomFilters)\n return {\n operation: fieldValue.columnName || fieldName,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),\n variables: {\n [`${fieldValue.columnName}_where`]: {\n name: 'where',\n type: fieldValue.filters.filterType,\n value: BindFilterQueryHelper.MakeGraphQLWhere(fieldValue.filters.filters, fieldValue.fields),\n required: true,\n },\n },\n }\n\n return {\n [fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),\n }\n }\n}\n","import { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { DebugHelper, MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type CreateConstructorParams = {\n insertGraphQLOperation?: string\n insertAllGraphQLOperation?: string\n insertGraphQLObjectType?: string\n}\n\nexport const withCreateHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & InstanceType<TMixinBase> & CreateRepository<MBase>,\n MergeConstructorParams<CreateConstructorParams, ConstructorParameters<TMixinBase>>\n> => {\n return class CreateHasuraGraphQLMixin extends MixinBase implements CreateRepository<MBase> {\n insertGraphQLOperation: string\n insertAllGraphQLOperation: string\n insertGraphQLObjectType: string\n\n constructor(...params) {\n const options: CreateConstructorParams = params?.[0]\n\n super(...params)\n\n this.insertGraphQLOperation = options?.insertGraphQLOperation || `insert_${this.tableName}_one`\n this.insertAllGraphQLOperation = options?.insertAllGraphQLOperation || `insert_${this.tableName}`\n this.insertGraphQLObjectType = options?.insertGraphQLObjectType || `${this.tableName}_insert_input`\n }\n\n async create(data: CreateRepositoryParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'create')\n\n const newData = await this.save(this.model.toInstance(data))\n\n return this.model.toInstance(newData)\n }\n\n async createAll(data: Partial<MBase>[]): Promise<[MBase]> {\n this.logger = DebugHelper.from(this, 'createAll')\n\n const result = await this.mutation<MBase>(\n this.insertAllGraphQLOperation,\n [{ returning: this.model.identifiersFields }],\n {\n objects: {\n type: this.insertGraphQLObjectType,\n required: true,\n list: true,\n value: data.map((item: MBase) => this.convertDataToHasura(item)),\n },\n },\n )\n\n return result[this.insertAllGraphQLOperation].returning.map((item, index) =>\n this.model.toInstance({\n ...data[index],\n ...item,\n }),\n )\n }\n\n async save(data: MBase): Promise<Partial<MBase>> {\n const primaryKeyColumns = this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>\n const foreignKeyColumns = this.fields\n .map((field) => {\n const columnOptions = Object.values(field).shift()\n\n return (\n AttributeOptionHelper.CheckIsColumnOption(columnOptions) &&\n columnOptions.foreignKeyColumn && [\n ...Object.values(columnOptions.foreignKeyColumn).map(\n (foreignKeyName) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyName as any, this.fields)?.columnName,\n ),\n {\n [columnOptions.columnName]: Object.keys(columnOptions.foreignKeyColumn).map(\n (foreignKeyField) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyField as any, columnOptions?.fields as any)\n ?.columnName || foreignKeyField,\n ),\n },\n ]\n )\n })\n .filter(Boolean)\n .reduce((keys, current) => [...keys, ...current], [])\n\n const result = await this.mutation<MBase>(\n this.insertGraphQLOperation,\n [...primaryKeyColumns, ...foreignKeyColumns] as HasuraGraphQLFields<MBase>,\n {\n object: { type: this.insertGraphQLObjectType, required: true, value: this.convertDataToHasura(data) },\n },\n )\n\n return { ...data.toPlain(), ...this.convertDataFromHasura(result[this.insertGraphQLOperation]).toPlain() }\n }\n } as any\n}\n","import {\n DeleteRepository,\n DeleteRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../domain'\nimport { DebugHelper, MergeConstructorParams, MixinCtor, isNil } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type DeleteConstructorParams = {\n deleteGraphQLOperation?: string\n}\n\nexport const withDeleteHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & DeleteRepository<MBase> & InstanceType<TMixinBase>,\n MergeConstructorParams<DeleteConstructorParams, ConstructorParameters<TMixinBase>>\n> => {\n return class DeleteHasuraGraphQLMixin extends MixinBase implements DeleteRepository<MBase> {\n deleteGraphQLOperation: string\n\n constructor(...params: any[]) {\n const options: DeleteConstructorParams = params?.[0]\n\n super(...params)\n\n this.deleteGraphQLOperation = options?.deleteGraphQLOperation || `delete_${this.tableName}_by_pk`\n }\n\n async delete(identifiers: DeleteRepositoryParams<MBase>): Promise<void> {\n this.logger = DebugHelper.from(this, 'delete')\n\n const instance = this.model.toInstance(identifiers as any)\n\n await this.mutation(\n this.deleteGraphQLOperation,\n this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>,\n this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value = columnOption.to(identifiers[identifier.toString()], instance)\n\n return {\n ...ids,\n [columnOption.columnName]: {\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\n value,\n required: true,\n },\n }\n }, {}),\n )\n }\n } as any\n}\n","import axios from 'axios'\nimport { mutation, query } from 'gql-query-builder'\nimport { BaseModelBuilder, ModelBaseStructure } from '../../../domain'\nimport {\n DebugHelper,\n isBoolean,\n isInteger,\n isNaN,\n isNil,\n isNumber,\n isString,\n isUUID,\n MergeConstructorParams,\n MixinCtor,\n parseISO,\n} from '../../../utils'\nimport {\n GraphQLParams,\n GraphQLRepository,\n HasuraGraphQLAuthOptions,\n HasuraGraphQLFields,\n HasuraGraphQLHeaders,\n VariableOptions,\n} from '../types'\nimport { GraphQLFieldHelper } from './helpers'\n\nexport type ConstructorParams<Model extends ModelBaseStructure<Model, Model['identifiersFields'][number]>> = {\n tableName: string\n model: BaseModelBuilder<Model>\n fields: HasuraGraphQLFields<Model>\n endpoint: string\n authOptions: HasuraGraphQLAuthOptions\n}\n\nexport const withHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n T extends MixinCtor = MixinCtor,\n>(\n MixinBase: T,\n): MixinCtor<GraphQLRepository<MBase>, MergeConstructorParams<ConstructorParams<MBase>, ConstructorParameters<T>>> => {\n return class HasuraGraphQLMixin extends MixinBase implements GraphQLRepository<MBase> {\n tableName: string\n endpoint: string\n authOptions: HasuraGraphQLAuthOptions\n model: BaseModelBuilder<MBase>\n fields: HasuraGraphQLFields<MBase>\n logger: DebugHelper\n\n get headers(): HasuraGraphQLHeaders {\n return {\n 'Content-Type': 'application/json',\n ...(isNil(this.authOptions.authToken) ? {} : { Authorization: this.authOptions.authToken }),\n ...(isNil(this.authOptions.adminSecret) ? {} : { 'X-Hasura-Admin-Secret': this.authOptions.adminSecret }),\n ...(isNil(this.authOptions.authRole)\n ? {}\n : { 'X-Hasura-Role': this.authOptions.authRole.role, 'X-Hasura-User-Id': this.authOptions.authRole.userId }),\n }\n }\n\n constructor(...params) {\n const options: ConstructorParams<MBase> = params[0]\n\n super(...params)\n\n this.tableName = options.tableName\n this.endpoint = options.endpoint\n this.authOptions = options.authOptions\n this.model = options.model\n this.fields = options.fields || (this.model.identifiersFields as HasuraGraphQLFields<MBase>)\n this.logger = DebugHelper.from(this)\n }\n\n async mutation<ReturnFields = any>(\n operation: string,\n fields?: string[] | HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const resultQuery = mutation({\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields as HasuraGraphQLFields<MBase>),\n })\n\n return this.fetch(resultQuery)\n }\n\n async query<ReturnFields = any>(\n operation: string | GraphQLParams<MBase>[],\n fields?: string[] | HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const resultQuery = GraphQLFieldHelper.CheckIsGraphQLParams(operation)\n ? query(\n operation.map((option) => ({\n operation: option.operation,\n variables: option.variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(option.fields),\n })),\n )\n : query({\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields as HasuraGraphQLFields<MBase>),\n })\n\n return this.fetch(resultQuery)\n }\n\n async fetch<ReturnFields = any>(params: { variables: any; query: string }): Promise<ReturnFields> {\n this.logger.with('params').log(params)\n\n const headers = this.headers\n const { data: result } = await axios({\n url: `${this.endpoint}`,\n method: 'POST',\n data: params,\n headers,\n })\n\n if (!isNil(result.errors)) throw new Error(JSON.stringify(result.errors))\n\n this.logger.with('returns').log(result)\n\n return result.data\n }\n\n getAttributeGraphQLTypeOf<FieldType>(value: FieldType): string {\n if (isUUID(value as any)) return 'uuid'\n if (isString(value)) return 'String'\n if (isBoolean(value)) return 'Boolean'\n if (value instanceof Date) return 'timestamptz'\n if (isInteger(value)) return 'Int'\n if (isNumber(value)) return 'numeric'\n\n throw new Error('Type not implemented yet')\n }\n\n checkIfIsDateTimeAndParse(value: string): Date | string {\n if (!/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value)) return value\n\n const date = parseISO(value)\n\n if (isNaN(date.getTime())) return value\n\n return date\n }\n\n convertDataFromHasura(\n data: Record<string, string | number>,\n fields?: string[] | HasuraGraphQLFields<MBase>,\n ): MBase {\n const plain = GraphQLFieldHelper.ConvertFieldValueFrom(\n data,\n (fields as HasuraGraphQLFields<MBase>) || this.fields,\n )\n\n return this.model.toInstance(plain)\n }\n\n convertDataToHasura(instance: MBase, update = false): Record<string, string | number> {\n return GraphQLFieldHelper.ConvertFieldValueTo(instance, this.fields, update)\n }\n }\n}\n","import {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../domain'\nimport { DebugHelper, MergeConstructorParams, MixinCtor, isNil } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type UpdateHasuraGraphQLRepositoryType<\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport type UpdateConstructorParams = {\n updateGraphQLOperation?: string\n updateGraphQLObjectType?: string\n updateGraphQLPKType?: string\n}\n\nexport const withUpdateHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & UpdateHasuraGraphQLRepositoryType<MBase> & InstanceType<TMixinBase>,\n MergeConstructorParams<UpdateConstructorParams, ConstructorParameters<TMixinBase>>\n> => {\n const getValueByAction = (options: UpdateOptions<MBase>): unknown => {\n if (options instanceof BaseModel) return options.toPlain()\n if (isNil(options?.action)) return options\n if ([UpdateOptionActions.REMOVE_FIELD.toString(), UpdateOptionActions.NULL.toString()].includes(options.action))\n return null\n\n return options.value\n }\n\n return class UpdateHasuraGraphQLMixin extends MixinBase implements UpdateRepository<MBase> {\n updateGraphQLOperation: string\n updateGraphQLObjectType: string\n updateGraphQLPKType: string\n\n constructor(...params) {\n const options: UpdateConstructorParams = params?.[0]\n\n super(...params)\n\n this.updateGraphQLOperation = options?.updateGraphQLOperation || `update_${this.tableName}_by_pk`\n this.updateGraphQLObjectType = options?.updateGraphQLObjectType || `${this.tableName}_set_input`\n this.updateGraphQLPKType = options?.updateGraphQLPKType || `${this.tableName}_pk_columns_input`\n }\n\n async update(data: RepositoryUpdateParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'update')\n\n const plainData = this.paramsToPlain(data)\n\n await this.mutation(\n this.updateGraphQLOperation,\n this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>,\n {\n _set: {\n type: this.updateGraphQLObjectType,\n value: this.convertDataToHasura(this.model.toInstance(plainData), true),\n required: true,\n },\n pk_columns: { type: this.updateGraphQLPKType, value: this.getUpdateModelKeys(plainData), required: true },\n },\n )\n\n return this.model.toInstance(plainData)\n }\n\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase> {\n const model = this.model\n\n if (model.isModel(params)) return params.toPlain()\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({\n ...data,\n ...(params[currentKey] !== undefined && { [currentKey]: getValueByAction(params[currentKey]) }),\n }),\n {},\n )\n }\n\n getUpdateModelKeys(data: Partial<MBase>): NonFunctionAndIdentifierProperties<MBase> {\n const instance = this.model.toInstance(data)\n\n return this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute<MBase, NonFunctionAndIdentifierPropertyNames<MBase>>(\n identifierBinded,\n this.fields,\n )\n const value = columnOption?.to?.(data[identifierBinded], instance) || data[columnOption.attributeName]\n\n return {\n ...ids,\n [columnOption.columnName]: value,\n }\n }, {} as NonFunctionAndIdentifierProperties<MBase>)\n }\n } as any\n}\n","import {\n GetRepository,\n GetRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { DebugHelper, MixinCtor, isNil } from '../../../utils'\nimport { GraphQLRepository } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type GetConstructorParams = {\n getGraphQLOperation?: string\n}\n\nexport const withGetHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n) => {\n return class GetHasuraGraphQLMixin extends MixinBase implements GetRepository<MBase> {\n getGraphQLOperation: string\n\n constructor(...params) {\n const options: GetConstructorParams = params?.[0]\n\n super(...params)\n\n this.getGraphQLOperation = options?.getGraphQLOperation || `${this.tableName}_by_pk`\n }\n\n async get(identifiers: GetRepositoryParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'get')\n\n const instance = this.model.toInstance(identifiers)\n const result = await this.query(\n this.getGraphQLOperation,\n this.fields,\n this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value =\n columnOption?.to?.(identifiers[identifier.toString()], instance) || identifiers[identifier.toString()]\n\n return {\n ...ids,\n [columnOption.columnName]: {\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\n value,\n required: true,\n },\n }\n }, {}),\n )\n const data = result[this.getGraphQLOperation]\n\n if (isNil(data)) throw new NotFoundError(`${instance.constructor.name} not found`)\n\n return this.convertDataFromHasura(result[this.getGraphQLOperation])\n }\n }\n}\n","import {\n FindRepository,\n FindRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryFindResult,\n RepositoryOrderBy,\n} from '../../../domain'\nimport { DebugHelper, isNil, MixinCtor, set } from '../../../utils'\nimport { GraphQLParams, GraphQLRepository, HasuraGraphQLFields } from '../types'\nimport { AttributeOptionHelper, BindFilterQueryHelper } from './helpers'\n\nexport const withFindHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n) => {\n return class FindHasuraGraphQLMixin extends MixinBase implements FindRepository<MBase> {\n async find(params?: FindRepositoryParams<MBase>): Promise<RepositoryFindResult<MBase>> {\n this.logger = DebugHelper.from(this, 'find')\n\n const { filters, limits, orderBy, options } = params || {}\n const enableCount = options?.enableCount ?? true\n const variablesCount = {\n ...(isNil(orderBy)\n ? {}\n : {\n order_by: {\n type: `${this.tableName}_order_by!`,\n list: true,\n value: this.bindOrderByAttributes(orderBy, this.fields),\n },\n }),\n ...(isNil(filters)\n ? {}\n : {\n where: {\n value: BindFilterQueryHelper.MakeGraphQLWhere(filters, this.fields),\n type: `${this.tableName}_bool_exp`,\n required: true,\n },\n }),\n }\n const variables = {\n ...(isNil(limits) ? {} : limits),\n ...variablesCount,\n }\n const aggregateFields = [\n ...(enableCount ? ['count'] : []),\n ...this.bindAggretageAttributes(params.options, this.fields),\n ]\n const result = await this.query([\n {\n operation: this.tableName,\n fields: params.fields\n ? params.fields\n .map(\n (fieldName) =>\n this.fields.find((fieldOption) => fieldOption === fieldName) ??\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === fieldName),\n )\n .filter(Boolean)\n : this.fields,\n variables,\n },\n ...(aggregateFields.length > 0\n ? [\n {\n operation: `${this.tableName}_aggregate`,\n fields: [\n {\n aggregate: aggregateFields,\n },\n ],\n variables: variablesCount,\n } as GraphQLParams<MBase>,\n ]\n : []),\n ])\n const data: MBase[] = result[this.tableName].map((row) => this.convertDataFromHasura(row))\n\n return {\n data,\n count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity,\n ...(options?.minimal?.length\n ? {\n minimal: options.minimal.reduce(\n (minimals, current) => ({\n ...(minimals as any),\n ...set(\n minimals,\n current,\n result[`${this.tableName}_aggregate`].aggregate.min[\n AttributeOptionHelper.FindByAttribute(\n current.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n this.fields,\n )?.columnName || (current as any)\n ],\n ),\n }),\n {},\n ),\n }\n : {}),\n ...(options?.maximum?.length\n ? {\n maximum: options.maximum.reduce(\n (maximums, current) => ({\n ...(maximums as any),\n ...set(\n maximums,\n current,\n result[`${this.tableName}_aggregate`].aggregate.max[\n AttributeOptionHelper.FindByAttribute(\n current.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n this.fields,\n )?.columnName || (current as any)\n ],\n ),\n }),\n {},\n ),\n }\n : {}),\n }\n }\n\n bindOrderByAttributes = (orderBy: RepositoryOrderBy<MBase>, fields: HasuraGraphQLFields<MBase>) =>\n Object.keys(orderBy).reduce(\n (acc, current) => ({\n ...acc,\n [AttributeOptionHelper.FindByAttribute(current as NonFunctionAndIdentifierPropertyNames<MBase>, fields)\n .columnName]: orderBy[current as NonFunctionAndIdentifierPropertyNames<MBase>],\n }),\n {},\n )\n\n bindAggretageAttributes = (\n aggregates: {\n minimal?: FindRepositoryParams<MBase>['options']['minimal']\n maximum?: FindRepositoryParams<MBase>['options']['maximum']\n },\n fields: HasuraGraphQLFields<MBase>,\n ) => [\n ...(aggregates?.minimal?.length\n ? [\n {\n min: this.bindAttributesToColumns(aggregates?.minimal, fields),\n },\n ]\n : []),\n ...(aggregates?.maximum?.length\n ? [\n {\n max: this.bindAttributesToColumns(aggregates?.maximum, fields),\n },\n ]\n : []),\n ]\n\n bindAttributesToColumns = (\n attributes: Array<NonFunctionAndIdentifierPropertyNames<MBase> | {}>,\n fields: HasuraGraphQLFields<MBase>,\n ) =>\n attributes.map(\n (attr) =>\n AttributeOptionHelper.FindByAttribute(\n attr.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n fields,\n )?.columnName || attr,\n )\n }\n}\n","import { CrudRepository, ModelBaseStructure } from '../../../domain'\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository } from '../types'\n\nimport { CreateConstructorParams, withCreateHasuraGraphQL } from './with-create-hasura-graphql.mixin'\nimport { DeleteConstructorParams, withDeleteHasuraGraphQL } from './with-delete-hasura-graphql.mixin'\nimport { withFindHasuraGraphQL } from './with-find-hasura-graphql.mixin'\nimport { GetConstructorParams, withGetHasuraGraphQL } from './with-get-hasura-graphql.mixin'\nimport { ConstructorParams } from './with-hasura-graphql.mixin'\nimport {\n UpdateConstructorParams,\n UpdateHasuraGraphQLRepositoryType,\n withUpdateHasuraGraphQL,\n} from './with-update-hasura-graphql.mixin'\n\nexport const withCrudHasuraGraphQL = <\n TBase extends ModelBaseStructure<TBase, TBase['identifiersFields'][number]>,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<GraphQLRepository<TBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<TBase> & Repository & UpdateHasuraGraphQLRepositoryType<TBase>,\n MergeConstructorParams<\n ConstructorParams<TBase> &\n CreateConstructorParams &\n DeleteConstructorParams &\n GetConstructorParams &\n UpdateConstructorParams,\n ConstructorParameters<TMixinBase>\n >\n> => {\n return class CrudHasuraGraphQLMixin\n extends withUpdateHasuraGraphQL(\n withGetHasuraGraphQL(\n withFindHasuraGraphQL(\n withDeleteHasuraGraphQL(withCreateHasuraGraphQL(MixinBase as MixinCtor<GraphQLRepository<TBase>>)),\n ),\n ),\n )\n implements CrudRepository<TBase> {} as any\n}\n","import { Category } from '../../../domain'\n\nexport class CategoryHasuraGraphQL extends Category {\n firestoreId?: string\n brandCondition?: string\n tagCondition?: string[]\n}\n","import { Type } from 'class-transformer'\nimport { Product } from '../../../domain'\nimport { KitProductHasuraGraphQL } from './kit-product-hasura-graphql'\n\nexport class ProductHasuraGraphQL extends Product {\n firestoreId?: string\n fullPrice?: number\n subscriberDiscountPercentage?: number\n subscriberPrice?: number\n productId?: number\n differentials?: string\n whoMustUse?: string\n howToUse?: string\n brandDescription?: string\n categoryId?: number\n ingredients?: string\n hasStock?: boolean\n intGender?: number\n\n @Type(() => KitProductHasuraGraphQL)\n kitProducts?: KitProductHasuraGraphQL[]\n}\n","import { Type } from 'class-transformer'\n\nimport { KitProduct } from '../../../domain'\n\nimport { ProductHasuraGraphQL } from './product-hasura-graphql'\n\nexport class KitProductHasuraGraphQL extends KitProduct {\n @Type(() => ProductHasuraGraphQL)\n kit: ProductHasuraGraphQL\n\n @Type(() => ProductHasuraGraphQL)\n product: ProductHasuraGraphQL\n}\n","import { Variant } from '../../../domain'\n\nexport class VariantHasuraGraphQL extends Variant {\n firestoreId?: string\n fullPrice?: number\n subscriberDiscountPercentage?: number\n subscriberPrice?: number\n hasStock?: boolean\n\n name? = ''\n hasVariants? = false\n}\n","import { CategoryCollectionChildren } from '../../../../domain'\nimport { CategoryCollectionChildrenRepository } from '../../../../domain/catalog/repositories/category-collection-children.repository'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class CategoryCollectionChildrenHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryCollectionChildren>(Base))\n implements CategoryCollectionChildrenRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'category_collection_children',\n model: CategoryCollectionChildren,\n endpoint,\n authOptions,\n fields: [\n { collectionId: { columnName: 'collection_id' } },\n { categoryId: { columnName: 'category_id' } },\n 'name',\n 'slug',\n 'reference',\n { parentCollectionId: { columnName: 'parent_collection_id' } },\n { parentCategoryId: { columnName: 'parent_category_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { collectionId: 'parentCollectionId', categoryId: 'parentCategoryId' },\n fields: [\n { collectionId: { columnName: 'collection_id' } },\n { categoryId: { columnName: 'category_id' } },\n 'name',\n 'slug',\n 'reference',\n { parentCollectionId: { columnName: 'parent_collection_id' } },\n { parentCategoryId: { columnName: 'parent_category_id' } },\n ],\n },\n },\n ],\n })\n }\n}\n","import { CategoryFilter } from '../../../../domain'\nimport { CategoryFilterRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class CategoryFilterHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryFilter>(Base))\n implements CategoryFilterRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'category_filter',\n model: CategoryFilter,\n endpoint,\n authOptions,\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n { categoryId: { columnName: 'category_id' } },\n {\n filter: {\n columnName: 'filter',\n foreignKeyColumn: { id: 'filterId' },\n fields: [\n 'id',\n 'description',\n 'slug',\n 'enabled',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n options: {\n columnName: 'options',\n foreignKeyColumn: { filterId: 'id' },\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n 'description',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n },\n },\n ],\n },\n },\n ],\n })\n }\n\n deleteByCategoryAndFilter(categoryId: number, filterId: number): Promise<any> {\n return this.mutation('delete_category_filter', ['affected_rows'], {\n where: {\n type: 'category_filter_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId }, filter_id: { _eq: filterId } },\n },\n })\n }\n}\n","import {\n Category,\n CategoryMetadata,\n CategoryRepository,\n CreateRepositoryParams,\n GetRepositoryParams,\n Product,\n Shops,\n UpdateRepositoryParams,\n Where,\n} from '../../../../domain'\nimport { DuplicatedResultsError, NotFoundError } from '../../../../errors'\nimport { Base, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { CategoryHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLAuthOptions } from '../../types'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\n\nimport { ProductHasuraGraphQLRepository } from './product-hasura-graphql.repository'\n\nexport class CategoryHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryHasuraGraphQL>(Base))\n implements CategoryRepository\n{\n constructor(\n endpoint: string,\n authOptions: HasuraGraphQLAuthOptions,\n private readonly productRepository: ProductHasuraGraphQLRepository,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'category',\n model: Category,\n endpoint,\n authOptions,\n fields: [\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n 'name',\n 'description',\n 'image',\n 'published',\n 'shop',\n { shops: { columnName: 'shops', type: HasuraGraphQLColumnType.Jsonb } },\n 'slug',\n { brandCategory: { columnName: 'brand_category' } },\n { brandCategoryBanner: { columnName: 'brand_banner' } },\n { brandCategoryBannerMobile: { columnName: 'brand_banner_mobile' } },\n { brandLogo: { columnName: 'brand_logo' } },\n { brandCondition: { columnName: 'brand_condition' } },\n {\n conditions: {\n columnName: 'tag_condition',\n type: HasuraGraphQLColumnType.Jsonb,\n from: (tags: unknown, row) => ({ brand: row.brand_condition, tags: Array.isArray(tags) ? tags : [] }),\n bindPersistData: (value) => {\n return {\n brand_condition: value.brand,\n tag_condition: value?.tags || [],\n }\n },\n bindFindFilter: (sentence: any) => {\n return {\n ...(sentence.brand ? { brand_condition: sentence.brand } : {}),\n ...(sentence.tags ? { tag_condition: sentence.tags } : {}),\n }\n },\n },\n },\n {\n filters: {\n columnName: 'filters',\n foreignKeyColumn: { filter_id: 'id' },\n fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],\n bindPersistData: (value) => ({\n filters: { data: value.map((filter) => ({ filter_id: filter.id })) },\n }),\n from: (filters: { filter: { id: number; description: string; slug: string; enabled: boolean } }[]) =>\n filters?.map((filter) => filter?.filter) || [],\n },\n },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n products: {\n columnName: 'products',\n fields: ['product_id'],\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\n to: (productIds) =>\n productIds.map((productId) => ({\n product_id: +productId,\n })),\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value) => ({\n metadata: { data: value },\n }),\n },\n },\n { isCollection: { columnName: 'is_collection' } },\n 'reference',\n { parentId: { columnName: 'parent_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { id: 'parentId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n ],\n })\n }\n\n async create(params: CreateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { metadata, ...data } = params\n\n return super.create({ ...data, metadata: metadata || { description: null, title: null } })\n }\n\n async get(identifiers: GetRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n return Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]\n : super.get(identifiers)\n }\n\n async update(params: UpdateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { products, id: checkId, metadata, filters, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = await this.getId(plainData.id)\n const category = await super.update({ id, ...data })\n\n category.products = products && (await this.updateProducts(+id, { products }))\n category.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n category.filters = filters && (await this.updateFilters(+id, { filters }))\n\n return category\n }\n\n async getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n if (!slug) return\n\n const { data } = await this.find({\n filters: {\n slug,\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n if (!data.length) throw new NotFoundError(`Category with slug ${slug} not found`)\n if (data.length > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n return data.shift()\n }\n\n async getCategoryByShop(shop: string): Promise<Category[]> {\n if (!shop) return\n\n const { data } = await this.find({\n filters: {\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n return data\n }\n\n async getCategoriesForHome(\n categoryIds: string[],\n limit = 4,\n gender?: string,\n ): Promise<{ category: Category; products: Product[] }[]> {\n if (!categoryIds?.length) return []\n\n const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId))\n const categoriesHasura = categoryIds.filter((categoryId) => +categoryId > 0)\n const categories = []\n\n if (categoriesFirestore.length)\n categories.push(\n ...(await this.find({\n filters: { firestoreId: { operator: Where.IN, value: categoriesFirestore.filter(Boolean) }, published: true },\n }).then(({ data }) => data)),\n )\n if (categoriesHasura.length)\n categories.push(\n ...(await this.find({\n filters: { id: { operator: Where.IN, value: categoriesHasura.filter(Boolean) }, published: true },\n }).then(({ data }) => data)),\n )\n\n if (!categories.length) return []\n\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true, gender }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(\n category: Category,\n options?: { limit?: number; hasStock?: boolean; gender?: string },\n ): Promise<Product[]> {\n if (!category?.products?.length) return []\n\n const products = []\n const { data: productsData } = await this.productRepository.find({\n filters: {\n id: { operator: Where.IN, value: category.products },\n published: true,\n ...(options?.hasStock ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {}),\n ...(options?.gender ? { tags: { operator: Where.IN, value: [options?.gender] } } : {}),\n },\n fields: [\n 'id',\n 'name',\n 'slug',\n 'images',\n 'miniatures',\n 'price',\n 'fullPrice',\n 'subscriberDiscountPercentage',\n 'subscriberPrice',\n 'stock',\n 'published',\n 'CEST',\n 'EAN',\n 'NCM',\n 'brand',\n 'costPrice',\n 'hasVariants',\n 'isKit',\n 'sku',\n 'rate',\n 'tags',\n 'type',\n 'shoppingCount',\n 'gender',\n 'createdAt',\n ],\n ...(options?.limit ? { limits: { limit: options?.limit } } : {}),\n options: { enableCount: false },\n })\n\n products.push(...productsData)\n\n return products\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Category with id ${id} not found`)\n }\n\n private async updateProducts(\n categoryId: number,\n { products }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'products'>,\n ): Promise<CategoryHasuraGraphQL['products']> {\n if ('action' in products && products.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n return []\n }\n\n const plainData = this.paramsToPlain({ products })\n\n if (!plainData.products || plainData.products.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.products.map((productId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.products\n }\n\n private async updateMetadata(\n categoryId: number,\n { metadata }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'metadata'>,\n ): Promise<CategoryMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return\n\n await this.mutation('update_category_metadata_by_pk', ['category_id'], {\n pk_columns: {\n value: { category_id: categoryId },\n type: 'category_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['category_id']),\n type: 'category_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n private async updateFilters(\n categoryId: number,\n { filters }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'filters'>,\n ) {\n if ('action' in filters && filters.action === 'remove' && filters.value.length) {\n for (let i = 0; i < filters.value.length; i++) {\n await this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filters.value[i].id)\n }\n\n return []\n }\n\n if ('action' in filters && filters.action === 'merge' && filters.value.length) {\n let filtersList = []\n\n for (let i = 0; i < filters.value.length; i++) {\n try {\n const hasFilter = await this.categoryFilterRepository\n .find({\n filters: {\n categoryId,\n filterId: filters.value[i].id,\n },\n })\n .then((data) => data.data.shift())\n\n if (hasFilter) {\n filtersList.push(hasFilter)\n } else {\n const newCategoryFilter = await this.categoryFilterRepository.create({\n filterId: filters.value[i].id,\n categoryId,\n })\n\n filtersList.push(newCategoryFilter)\n }\n } catch (error) {\n console.log('catch error: ', error)\n }\n }\n\n return filtersList\n }\n\n if (Array.isArray(filters) && filters.length) {\n let filtersList = []\n\n for (let i = 0; i < filters.length; i++) {\n try {\n const hasFilter = await this.categoryFilterRepository\n .find({\n filters: {\n categoryId,\n filterId: filters[i].id,\n },\n })\n .then((data) => data.data.shift())\n\n if (hasFilter) {\n filtersList.push(hasFilter)\n } else {\n const newCategoryFilter = await this.categoryFilterRepository.create({\n filterId: filters[i].id,\n categoryId,\n })\n filtersList.push(newCategoryFilter)\n }\n } catch (error) {\n console.log('catch error: ', error)\n }\n }\n\n return filtersList\n }\n }\n\n public async getChildren(parentId: number): Promise<Category[]> {\n const { category_tree } = await this.query('category_tree', ['id', 'name', 'parent_id'], {\n args: {\n type: 'category_tree_args',\n value: { parentid: parentId },\n required: true,\n },\n })\n\n return category_tree.map((category: Record<string, any>) => Category.toInstance(category))\n }\n\n public async isChild(id: number, parentId: number): Promise<boolean> {\n const categoryTree = await this.getChildren(parentId)\n\n return categoryTree.some((c) => c.id == id.toString())\n }\n}\n","import { Filter, UpdateRepositoryParams } from '../../../../domain'\nimport { FilterRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\nimport { FilterOptionHasuraGraphQLRepository } from './filter-option-hasura-graphql.repository'\n\nexport class FilterHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<Filter>(Base))\n implements FilterRepository\n{\n constructor(\n endpoint: string,\n authOptions: HasuraGraphQLAuthOptions,\n private readonly filterOptionRepository: FilterOptionHasuraGraphQLRepository,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'filter',\n model: Filter,\n endpoint,\n authOptions,\n fields: [\n 'id',\n 'description',\n 'slug',\n 'enabled',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n options: {\n columnName: 'options',\n foreignKeyColumn: { filterId: 'id' },\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n 'description',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n },\n },\n ],\n })\n }\n\n async update(params: UpdateRepositoryParams<Filter>): Promise<Filter> {\n const { options, ...data } = params\n\n const filter = await super.update(data)\n\n filter.options = await this.updateOptions(+data.id, { options })\n\n return filter\n }\n\n async updateOptions(filterId: number, { options }: Pick<UpdateRepositoryParams<Filter>, 'options'>) {\n if (!options) return []\n\n if ('action' in options && options.action === 'remove' && options.value.length) {\n for (let i = 0; i < options.value.length; i++) {\n await this.filterOptionRepository.delete({ id: options.value[i].id })\n }\n\n return []\n }\n\n if ('action' in options && options.action === 'merge' && options.value.length) {\n let filterOptions = []\n\n for (let i = 0; i < options.value.length; i++) {\n try {\n const hasFilter = await this.filterOptionRepository.get({ id: options.value[i].id })\n if (hasFilter) filterOptions.push(hasFilter)\n } catch (error) {\n const newOption = await this.filterOptionRepository.create({ ...options.value[i], filterId })\n filterOptions.push(newOption)\n }\n }\n\n return filterOptions\n }\n\n if (Array.isArray(options) && options.length) {\n let filterOptions = []\n\n for (let i = 0; i < options.length; i++) {\n try {\n const hasFilter = await this.filterOptionRepository.get({ id: options[i].id })\n if (hasFilter) filterOptions.push(hasFilter)\n } catch (error) {\n const newOption = await this.filterOptionRepository.create({ ...options[i], filterId })\n filterOptions.push(newOption)\n }\n }\n }\n\n return []\n }\n\n async delete(params: UpdateRepositoryParams<Filter>): Promise<void> {\n const { options, ...data } = params\n\n const categoryFilters = await this.categoryFilterRepository\n .find({\n filters: {\n filterId: +data.id,\n },\n })\n .then((result) => result.data)\n\n if (categoryFilters.length) throw new Error('Erro: o filtro está associado a uma ou mais categoria(s)')\n\n await this.deleteOptions(options)\n\n await super.delete({ id: +data.id })\n\n return\n }\n\n async deleteOptions(options): Promise<void> {\n for (let i = 0; i < options.length; i++) {\n try {\n await this.filterOptionRepository.delete({ id: options[i].id })\n } catch (error) {\n console.log(error)\n }\n }\n }\n}\n","import { FilterOption } from '../../../../domain'\nimport { FilterOptionRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class FilterOptionHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<FilterOption>(Base))\n implements FilterOptionRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'filter_option',\n model: FilterOption,\n endpoint,\n authOptions,\n fields: [\n 'id',\n 'description',\n { filterId: { columnName: 'filter_id' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n })\n }\n}\n","import {\n CreateRepositoryParams,\n FindRepositoryParams,\n GetRepositoryParams,\n NonFunctionPropertyNames,\n ProductGender,\n ProductMetadata,\n ProductRepository,\n ProductReview,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\n RoundProductPricesHelper,\n ShopPrice,\n Shops,\n UpdateRepositoryParams,\n Where,\n} from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { Base, isNil, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { ProductHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLAuthOptions, HasuraGraphQLFields } from '../../types'\n\ntype ProductReviewFields = {\n id?: string\n shop: Shops\n rate: number\n author?: string\n email?: string\n location?: string\n review?: string\n status?: boolean\n title?: string\n personId?: number\n points?: number\n orderId?: string\n createdAt?: Date\n updatedAt?: Date\n}\n\nexport class ProductHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<ProductHasuraGraphQL>(Base))\n implements ProductRepository\n{\n private get reviewsFields(): any {\n return [\n 'id',\n 'shop',\n 'rate',\n 'author',\n 'email',\n 'location',\n 'review',\n 'status',\n 'title',\n { personId: { columnName: 'person_id' } },\n 'points',\n { orderId: { columnName: 'order_id' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ]\n }\n\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'product',\n model: ProductHasuraGraphQL,\n endpoint,\n authOptions,\n fields: [],\n })\n\n const commonFields: HasuraGraphQLFields<ProductHasuraGraphQL> = [\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n { productId: { columnName: 'main_product_id' } },\n { CEST: { columnName: 'cest' } },\n { EAN: { columnName: 'ean' } },\n { NCM: { columnName: 'ncm' } },\n 'brand',\n { costPrice: { columnName: 'cost_price' } },\n {\n description: {\n columnName: 'description',\n from: (description, data) => ({\n description,\n differentials: data.differentials,\n whoMustUse: data.who_must_use,\n howToUse: data.how_to_use,\n brand: data.brand_description,\n ingredients: data.ingredients,\n }),\n bindFindFilter: (filters: any) => {\n return {\n ...(filters?.description && { description: filters.description }),\n ...(filters.differentials && { differentials: filters.differentials }),\n ...(filters.whoMustUse && {\n who_must_use: filters.whoMustUse,\n }),\n ...(filters.howToUse && {\n how_to_use: filters.howToUse,\n }),\n ...(filters.brand && {\n brand_description: filters.brand,\n }),\n ...(filters.ingredients && {\n ingredients: filters.ingredients,\n }),\n }\n },\n bindPersistData: (descriptionData) => ({\n ...(descriptionData?.description && { description: descriptionData.description }),\n ...(descriptionData.differentials && { differentials: descriptionData.differentials }),\n ...(descriptionData.whoMustUse && {\n who_must_use: descriptionData.whoMustUse,\n }),\n ...(descriptionData.howToUse && { how_to_use: descriptionData.howToUse }),\n ...(descriptionData.brand && { brand_description: descriptionData.brand }),\n ...(descriptionData.ingredients && { ingredients: descriptionData.ingredients }),\n }),\n },\n },\n { differentials: { columnName: 'differentials' } },\n { whoMustUse: { columnName: 'who_must_use' } },\n { howToUse: { columnName: 'how_to_use' } },\n { brandDescription: { columnName: 'brand_description' } },\n { ingredients: { columnName: 'ingredients' } },\n { hasVariants: { columnName: 'has_variants' } },\n {\n images: {\n columnName: 'images',\n to: (value) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\n },\n },\n {\n miniatures: {\n columnName: 'miniatures',\n to: (value) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\n },\n },\n 'name',\n {\n price: {\n columnName: 'price',\n from: (price, data): ShopPrice => ({\n price,\n fullPrice: data.full_price,\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\n subscriberPrice: data.subscriber_price,\n }),\n bindFindFilter: (filters: any) => {\n return {\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\n }),\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\n subscriber_price: filters.subscriberPrice,\n }),\n }\n },\n bindPersistData: (priceData) => ({\n ...(priceData?.price >= 0 && { price: priceData.price }),\n ...(priceData.fullPrice >= 0 && { full_price: priceData.fullPrice }),\n ...(priceData.subscriberDiscountPercentage >= 0 && {\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\n }),\n ...(priceData.subscriberPrice >= 0 && { subscriber_price: priceData.subscriberPrice }),\n }),\n },\n },\n { fullPrice: { columnName: 'full_price' } },\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\n { subscriberPrice: { columnName: 'subscriber_price' } },\n 'published',\n 'sku',\n {\n stock: {\n columnName: 'stock',\n from: (quantity: number) => ({ quantity }),\n to: (value) => (isNil(value?.quantity) ? value : value?.quantity),\n },\n },\n { hasStock: { columnName: 'has_stock' } },\n 'slug',\n 'type',\n 'video',\n 'weight',\n 'gender',\n { intGender: { columnName: 'int_gender' } },\n { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },\n { filters: { columnName: 'filters', type: HasuraGraphQLColumnType.Jsonb } },\n { isKit: { columnName: 'is_kit' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n { rate: { columnName: 'rating' } },\n { reviewsTotal: { columnName: 'reviews_total' } },\n { shoppingCount: { columnName: 'shopping_count' } },\n { categoryId: { columnName: 'category_id' } },\n {\n category: {\n columnName: 'category',\n foreignKeyColumn: { id: 'categoryId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n ]\n\n this.fields = [\n ...commonFields,\n {\n categories: {\n columnName: 'categories',\n fields: ['category_id'],\n bindPersistData: (value) => ({\n categories: { data: value.map((category) => ({ category_id: +category })) },\n }),\n to: (categories) => categories.map((categoryId) => +categoryId),\n from: (categories: { category_id: number }[]) =>\n categories?.map((category) => category?.category_id?.toString()) || [],\n },\n },\n {\n kitProducts: {\n columnName: 'kit_products',\n foreignKeyColumn: { productId: 'id' },\n fields: [\n { productId: { columnName: 'product_id' } },\n { kitProductId: { columnName: 'kit_product_id' } },\n 'quantity',\n { product: { columnName: 'product', foreignKeyColumn: { id: 'product_id' }, fields: commonFields } },\n ],\n },\n },\n {\n reviews: {\n columnName: 'reviews',\n foreignKeyColumn: { product_id: 'id' },\n fields: this.reviewsFields,\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value) => ({\n metadata: { data: value },\n }),\n },\n },\n ]\n }\n\n async create(params: CreateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const { metadata, ...data } = params\n const product = await super.create(\n omit({ ...data, metadata: metadata || { description: null, title: null } }, ['reviews']),\n )\n\n try {\n product.reviews = data.reviews && (await this.updateReviews(+product.id, data))\n } catch (error) {\n await this.delete({ id: product.id })\n\n throw error\n }\n\n return product\n }\n\n async get(identifiers: GetRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const product = Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]\n : await super.get(identifiers)\n\n if (product.productId) throw new NotFoundError('Product not found, it is a variant')\n\n product.reviews = product.reviews || (await this.findReviewsByProduct(+product.id))\n\n return product\n }\n\n async find(params?: FindRepositoryParams<ProductHasuraGraphQL>): Promise<RepositoryFindResult<ProductHasuraGraphQL>> {\n const { filters, fields, ...options } = params || {}\n const bindFields =\n fields ||\n (this.fields\n .map((field) => (typeof field === 'string' ? field : Object.keys(field).shift()))\n .filter((field) => field !== 'reviews') as NonFunctionPropertyNames<\n ProductHasuraGraphQL,\n keyof ProductHasuraGraphQL\n >[])\n\n if (options.options?.minimal?.includes('price'))\n options.options?.minimal.push('price.price', 'price.fullPrice', 'price.subscriberPrice')\n if (options.options?.maximum?.includes('price'))\n options.options?.maximum.push('price.price', 'price.fullPrice', 'price.subscriberPrice')\n\n options.options?.minimal?.splice(options.options?.minimal.indexOf('price'), 1)\n options.options?.maximum?.splice(options.options?.maximum.indexOf('price'), 1)\n\n return super.find({\n ...options,\n filters: { ...filters, productId: { operator: Where.ISNULL } },\n fields: [\n ...bindFields,\n ...(bindFields.includes('price')\n ? ([\n 'subscriberPrice',\n 'subscriberDiscountPercentage',\n 'fullPrice',\n ] as NonFunctionPropertyNames<ProductHasuraGraphQL>[])\n : []),\n ],\n })\n }\n\n async getBySlug(slug: string): Promise<ProductHasuraGraphQL> {\n const result = await this.find({\n filters: {\n slug,\n },\n fields: this.fields.map((field) =>\n typeof field === 'string' ? field : Object.keys(field).shift(),\n ) as NonFunctionPropertyNames<ProductHasuraGraphQL, keyof ProductHasuraGraphQL>[],\n options: {\n enableCount: false,\n },\n })\n\n const product = result?.data?.shift()\n\n RoundProductPricesHelper.roundProductPrices(product)\n\n return product\n }\n\n async update(params: UpdateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const { categories, kitProducts, reviews, id: checkId, rate, metadata, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = await this.getId(plainData.id)\n const product = await super.update({ id, ...data })\n\n product.categories = categories && (await this.updateCategories(+id, { categories }))\n product.kitProducts = kitProducts && (await this.updateKitProducts(+id, { kitProducts }))\n product.reviews = reviews && (await this.updateReviews(+id, { reviews }))\n product.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n\n return product\n }\n\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\n const reviewsExpression = {\n status:\n status === 'pending'\n ? { [HasuraGraphQLWhere.ISNULL]: true }\n : { [HasuraGraphQLWhere.EQUALS]: status === 'approved' },\n }\n const { product: data } = await this.query(\n 'product',\n ['id', 'name', 'sku', { reviews: { columnName: 'reviews', fields: this.reviewsFields } }],\n {\n where: { value: { reviews: reviewsExpression }, type: 'product_bool_exp', required: true },\n },\n )\n\n return data.reduce(\n (reviews, product) => [\n ...reviews,\n ...product.reviews\n .filter(\n (review) =>\n (status === 'pending' && [undefined, null].includes(review.status)) ||\n (status === 'approved' && review.status === true) ||\n (status === 'rejected' && review.status === false),\n )\n .map((review) => ({\n ...this.bindReviewToModel(review),\n productId: product.id,\n productName: product.name,\n productSku: product.sku,\n })),\n ],\n [] as ReviewWithProductData[],\n )\n }\n\n async findCatalog(\n params: FindRepositoryParams<ProductHasuraGraphQL>,\n mainGender?: Extract<ProductGender, 'female' | 'male'>,\n ): Promise<RepositoryFindResult<ProductHasuraGraphQL>> {\n return this.find({\n ...params,\n filters: { ...params.filters, published: true },\n orderBy: {\n hasStock: 'desc',\n intGender: mainGender === 'female' ? 'desc' : 'asc',\n ...omit(params.orderBy, ['hasStock', 'intGender']),\n },\n })\n }\n\n private async updateCategories(\n productId: number,\n { categories }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'categories'>,\n ): Promise<ProductHasuraGraphQL['categories']> {\n if ('action' in categories && categories.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { product_id: { _eq: productId } },\n },\n })\n\n return []\n }\n\n const plainData = this.paramsToPlain({ categories })\n\n if (!plainData.categories || plainData.categories.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { product_id: { _eq: productId } },\n },\n })\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.categories.map((categoryId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.categories\n }\n\n private async updateKitProducts(\n productId: number,\n { kitProducts }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'kitProducts'>,\n ): Promise<ProductHasuraGraphQL['kitProducts']> {\n const plainData = this.paramsToPlain({ kitProducts })\n\n await this.mutation('delete_product_kit', ['affected_rows'], {\n where: {\n type: 'product_kit_bool_exp',\n required: true,\n value: { kit_product_id: { _eq: productId } },\n },\n })\n\n await this.mutation('insert_product_kit', ['affected_rows'], {\n objects: {\n type: '[product_kit_insert_input!]',\n required: true,\n value: plainData.kitProducts.map((kitProduct) => ({\n kit_product_id: productId,\n product_id: kitProduct.productId || kitProduct.product.id,\n quantity: kitProduct.quantity,\n })),\n },\n })\n\n return plainData.kitProducts\n }\n\n private async updateReviews(\n productId: number,\n { reviews }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'reviews'>,\n ): Promise<ProductReview[]> {\n if (!reviews) return []\n if ('action' in reviews && reviews.action === 'remove') {\n const reviewIds = await Promise.all(\n reviews.value.map(async (reviewData) => {\n const review = await this.findReview(reviewData, productId)\n\n return review?.id\n }),\n )\n\n await this.mutation('delete_product_review', ['affected_rows'], {\n where: { value: { id: { _in: reviewIds.filter(Boolean) } }, type: 'product_review_bool_exp', required: true },\n })\n\n return reviews.value.map((review, index) => !reviewIds[index] && review).filter(Boolean)\n }\n\n const plainData = this.paramsToPlain({ reviews })\n\n if (!plainData.reviews || plainData.reviews.length <= 0) return []\n\n return Promise.all(\n plainData.reviews.map(async (reviewData) => {\n const review = await this.findReview(reviewData, productId)\n\n if (review.id)\n return this.bindReviewToModel(\n (\n await this.mutation('update_product_review_by_pk', this.reviewsFields, {\n pk_columns: {\n value: { id: review.id },\n type: 'product_review_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(this.bindReviewToHasura(reviewData), ['id', 'product_id']),\n type: 'product_review_set_input',\n required: true,\n },\n })\n ).update_product_review_by_pk,\n )\n\n return this.bindReviewToModel(\n (\n await this.mutation('insert_product_review_one', this.reviewsFields, {\n object: {\n value: omit({ ...this.bindReviewToHasura(reviewData), product_id: productId }, ['id']),\n type: 'product_review_insert_input',\n required: true,\n },\n })\n ).insert_product_review_one,\n )\n }),\n )\n }\n\n private async updateMetadata(\n productId: number,\n { metadata }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'metadata'>,\n ): Promise<ProductMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return\n\n await this.mutation('update_product_metadata_by_pk', ['product_id'], {\n pk_columns: {\n value: { product_id: productId },\n type: 'product_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['product_id']),\n type: 'product_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Product with id ${id} not found`)\n }\n\n private async findReviewsByProduct(productId: number): Promise<ProductReview[]> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n },\n type: 'product_review_bool_exp',\n required: true,\n },\n })\n\n return data && data.map((review) => this.bindReviewToModel(review))\n }\n\n private async findReview(review: ProductReview, productId: number): Promise<ProductReview> {\n if (review.id) return review\n\n let loadedReview: ProductReview\n\n if (review.personId) loadedReview = await this.getReviewByPersonId(review.personId, productId, review.orderId)\n if (!loadedReview && review.author && review.email)\n loadedReview = await this.getReviewByAuthorAndEmail(review.author, review.email, productId, review.orderId)\n\n return loadedReview || review\n }\n\n private async getReviewByPersonId(personId: number, productId: number, orderId?: string): Promise<ProductReview> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n person_id: { _eq: personId },\n ...(orderId && { order_id: { _eq: orderId } }),\n },\n type: `product_review_bool_exp`,\n required: true,\n },\n })\n\n return data && data[0] && this.bindReviewToModel(data[0])\n }\n\n private async getReviewByAuthorAndEmail(\n author: string,\n email: string,\n productId: number,\n orderId?: string,\n ): Promise<ProductReview> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n author: { _eq: author },\n email: { _eq: email },\n ...(orderId && { order_id: { _eq: orderId } }),\n },\n type: `product_review_bool_exp`,\n required: true,\n },\n })\n\n return data && data[0] && this.bindReviewToModel(data[0])\n }\n\n private bindReviewToModel = (plain: Record<string, any>): ProductReview => ({\n ...omit(plain, ['product_id', 'created_at', 'updated_at', 'person_id', 'order_id']),\n createdAt: typeof plain.created_at === 'string' ? new Date(plain.created_at) : plain.created_at,\n updatedAt: typeof plain.updated_at === 'string' ? new Date(plain.updated_at) : plain.updated_at,\n personId: plain.person_id,\n orderId: plain.order_id,\n })\n\n private bindReviewToHasura = (review: ProductReview): ProductReviewFields => ({\n ...omit(review, ['productId', 'createdAt', 'updatedAt', 'personId', 'orderId']),\n person_id: review.personId,\n order_id: review.orderId,\n })\n\n async cleanShoppingCountFromIds(ids: string[]): Promise<void> {\n return await this.mutation('update_product', ['affected_rows'], {\n where: {\n value: { id: { _nin: ids } },\n type: 'product_bool_exp',\n required: true,\n },\n _set: {\n value: { shopping_count: 0 },\n type: 'product_set_input',\n },\n })\n }\n}\n","import {\n FindRepositoryParams,\n GetRepositoryParams,\n RepositoryFindResult,\n ShopPrice,\n UpdateRepositoryParams,\n VariantRepository,\n Where,\n} from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { Base, isNil } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { VariantHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class VariantHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<VariantHasuraGraphQL>(Base))\n implements VariantRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'product',\n model: VariantHasuraGraphQL,\n endpoint,\n authOptions,\n fields: [\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n { productId: { columnName: 'main_product_id', to: (value) => +value, from: (value) => value?.toString() } },\n { EAN: { columnName: 'ean' } },\n { costPrice: { columnName: 'cost_price' } },\n {\n price: {\n columnName: 'price',\n from: (price, data): ShopPrice => ({\n price,\n fullPrice: data.full_price,\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\n subscriberPrice: data.subscriber_price,\n }),\n bindFindFilter: (sentence) => {\n const filters = Object.values(sentence).shift()\n\n return {\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\n }),\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\n subscriber_price: filters.subscriberPrice,\n }),\n }\n },\n bindPersistData: (priceData) => ({\n ...(priceData?.price >= 0 && { price: priceData.price }),\n ...(priceData.fullPrice >= 0 && { full_price: priceData.fullPrice }),\n ...(priceData.subscriberDiscountPercentage >= 0 && {\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\n }),\n ...(priceData.subscriberPrice >= 0 && { subscriber_price: priceData.subscriberPrice }),\n }),\n },\n },\n { fullPrice: { columnName: 'full_price' } },\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\n { subscriberPrice: { columnName: 'subscriber_price' } },\n 'sku',\n {\n stock: {\n columnName: 'stock',\n from: (quantity: number) => ({ quantity }),\n to: (value) => (isNil(value?.quantity) ? value : value?.quantity),\n },\n },\n { hasStock: { columnName: 'has_stock' } },\n 'weight',\n { name: { to: () => '', from: () => undefined } },\n { hasVariants: { columnName: 'has_variants', to: () => false, from: () => undefined } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n grade: {\n columnName: 'grade',\n type: HasuraGraphQLColumnType.Jsonb,\n },\n },\n ],\n })\n }\n\n async get(identifiers: GetRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\n const variant = Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]\n : await super.get(identifiers)\n\n if (!variant.productId) throw new NotFoundError(`Variant not found, it is a product`)\n\n return variant\n }\n\n async find(params?: FindRepositoryParams<VariantHasuraGraphQL>): Promise<RepositoryFindResult<VariantHasuraGraphQL>> {\n const { filters, ...options } = params || {}\n\n return super.find({ ...options, filters: { productId: { operator: Where.ISNOTNULL }, ...filters } })\n }\n\n async update(params: UpdateRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\n const { productId, id: checkId, ...data } = params\n const dataWithProductId = this.paramsToPlain({ id: checkId, productId })\n const id = await this.getId(dataWithProductId.id)\n const product = await super.update({ id, ...data })\n\n product.productId = dataWithProductId.productId\n\n return product\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Product with id ${id} not found`)\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["plainToInstance","instanceToPlain","Where","UpdateOptionActions","AccessoryImportances","Area","BeardProblems","BeardSizes","BeautyProductImportances","BodyProblems","BodyShapes","BodyTattoos","FaceSkinOilinesses","FaceSkinProblems","FaceSkinTones","FamilyIncomes","FragranceImportances","HairColors","HairProblems","HairStrands","HairTypes","OfficePosition","ProductSpents","UserType","BillingStatus","EditionStatus","PaymentType","Status","Expose","Type","DebugNamespaces","debug","isNil","isArray","first","last","flatten","compact","get","Subject","isString","parseISO","CheckoutTypes","CouponTypes","CouponSubtypes","Exclusivities","CustomError","SignInMethods","GenderDestination","Shops","OrderStatus","FilterType","QuestionsFilters","ShopPageName","Answers.AccessoryImportances","Answers.BeardProblems","Answers.BeardSizes","Answers.BeautyProductImportances","Answers.BodyProblems","Answers.BodyShapes","Answers.BodyTattoos","Answers.FaceSkinOilinesses","Answers.FaceSkinProblems","Answers.FaceSkinTones","Answers.FamilyIncomes","Answers.FragranceImportances","Answers.HairColors","Answers.HairProblems","Answers.HairStrands","Answers.HairTypes","Answers.ProductSpents","axios","each","unset","isObject","isNumber","isDate","set","isEmpty","firebase","chunk","mutation","query","isBoolean","isInteger","isNaN","omit"],"mappings":"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"}
1
+ {"version":3,"file":"infrab4a-connect.umd.js","sources":["../../../projects/connect/src/domain/generic/model/base.model.ts","../../../projects/connect/src/domain/generic/repository/enums/where.enum.ts","../../../projects/connect/src/domain/generic/repository/enums/update-option-actions.enum.ts","../../../projects/connect/src/domain/users/models/enums/accessory-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/area.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-sizes.enum.ts","../../../projects/connect/src/domain/users/models/enums/beauty-product-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-shapes.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-tattoos.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-oilinesses.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-tones.enum.ts","../../../projects/connect/src/domain/users/models/enums/family-incomes.enum.ts","../../../projects/connect/src/domain/users/models/enums/fragrance-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-colors.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-strands.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-types.enum.ts","../../../projects/connect/src/domain/users/models/enums/office-position.enum.ts","../../../projects/connect/src/domain/users/models/enums/product-spents.enum.ts","../../../projects/connect/src/domain/users/models/enums/user-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/billing-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/edition-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/payment-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/status.enum.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/connect/src/domain/users/models/subscription/edition.ts","../../../projects/connect/src/domain/shopping/models/payment.ts","../../../projects/connect/src/domain/users/models/subscription/payment.ts","../../../projects/connect/src/utils/log.utils.ts","../../../projects/connect/src/utils/helpers/reflect.helper.ts","../../../projects/connect/src/utils/helpers/debug-decorator.helper.ts","../../../projects/connect/src/utils/helpers/class-name.helper.ts","../../../projects/connect/src/utils/helpers/debug.helper.ts","../../../projects/connect/src/utils/decorators/debug.class.decorator.ts","../../../projects/connect/src/utils/decorators/trace.method.decorator.ts","../../../projects/connect/src/utils/is-uuid.ts","../../../projects/connect/src/utils/mixins/base.mixin.ts","../../../projects/connect/src/utils/parse-datetime.ts","../../../projects/connect/src/domain/shopping/models/enums/checkout-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-subtypes.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/exclusivities.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/coupon.ts","../../../projects/connect/src/domain/shopping/models/subscription/plan.ts","../../../projects/connect/src/domain/users/models/beauty-profile.ts","../../../projects/connect/src/domain/users/models/user.ts","../../../projects/connect/src/domain/location/models/address.ts","../../../projects/connect/src/domain/users/models/user-address.ts","../../../projects/connect/src/domain/users/models/subscription/subscription.ts","../../../projects/connect/src/domain/users/models/user-payment-method.ts","../../../projects/connect/src/domain/users/models/lead.ts","../../../projects/connect/src/domain/users/errors/unauthorized.error.ts","../../../projects/connect/src/domain/users/use-cases/authentication.ts","../../../projects/connect/src/domain/users/errors/user-already-registered.error.ts","../../../projects/connect/src/domain/users/errors/weak-password.error.ts","../../../projects/connect/src/domain/users/use-cases/register.ts","../../../projects/connect/src/domain/users/use-cases/signout.ts","../../../projects/connect/src/domain/users/use-cases/recovery-password.ts","../../../projects/connect/src/domain/catalog/models/filter.ts","../../../projects/connect/src/domain/catalog/models/category-base.ts","../../../projects/connect/src/domain/catalog/models/category-for-product.ts","../../../projects/connect/src/domain/catalog/models/product-base.ts","../../../projects/connect/src/domain/catalog/models/product-for-kit.ts","../../../projects/connect/src/domain/catalog/models/kit-product.ts","../../../projects/connect/src/domain/catalog/models/product-for-category.ts","../../../projects/connect/src/domain/catalog/models/category.ts","../../../projects/connect/src/domain/catalog/models/category-collection-children.ts","../../../projects/connect/src/domain/catalog/models/category-filter.ts","../../../projects/connect/src/domain/catalog/models/enums/product-genders.enum.ts","../../../projects/connect/src/domain/catalog/models/enums/shops.enum.ts","../../../projects/connect/src/domain/catalog/models/filter-option.ts","../../../projects/connect/src/domain/catalog/models/product.ts","../../../projects/connect/src/domain/catalog/models/variant.ts","../../../projects/connect/src/domain/catalog/models/wishlist.ts","../../../projects/connect/src/domain/shopping/models/buy-2-win.ts","../../../projects/connect/src/domain/shopping/models/campaign-dashboard.ts","../../../projects/connect/src/domain/shopping/models/campaign-hashtag.ts","../../../projects/connect/src/domain/shopping/models/line-item.ts","../../../projects/connect/src/domain/shopping/models/shipping-method.ts","../../../projects/connect/src/domain/shopping/models/checkout.ts","../../../projects/connect/src/domain/shopping/models/enums/order-status.enum.ts","../../../projects/connect/src/domain/shopping/models/order.ts","../../../projects/connect/src/domain/shopping/models/subscription/checkout.ts","../../../projects/connect/src/domain/catalog/helpers/round-product-price.helper.ts","../../../projects/connect/src/domain/shop-settings/enums/filter-type.enum.ts","../../../projects/connect/src/domain/shop-settings/enums/questions-filters.enum.ts","../../../projects/connect/src/domain/shop-settings/helpers/beauty-questions.helper.ts","../../../projects/connect/src/domain/shop-settings/models/home.ts","../../../projects/connect/src/domain/shop-settings/models/shop-menu.ts","../../../projects/connect/src/domain/shop-settings/models/shop-settings.ts","../../../projects/connect/src/errors/invalid-argument.error.ts","../../../projects/connect/src/errors/required-argument.error.ts","../../../projects/connect/src/errors/not-found.error.ts","../../../projects/connect/src/errors/duplicated-results.error.ts","../../../projects/connect/src/infra/elasticsearch/adapters/axios.adapter.ts","../../../projects/connect/src/infra/elasticsearch/indexes/products-index.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-helpers.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-get-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/enums/firestore-field-type.enum.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-find-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-create-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-update-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-delete-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-sub-collection.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-crud-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/lead-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-address-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/category-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.ts","../../../projects/connect/src/infra/firebase/auth/authentication-firebase-auth.service.ts","../../../projects/connect/src/infra/firebase/auth/register-firebase-auth.service.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/attribute-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-where.enum.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/filter-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/graphql-field.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/models/category-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/kit-product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/variant-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.ts","../../../projects/connect/src/infrab4a-connect.ts"],"sourcesContent":["import { instanceToPlain, plainToInstance } from 'class-transformer'\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionAndIdentifierPropertyNames,\n} from './types'\n\nexport type GenericIdentifier<M = { id: string }, T = NonFunctionAndIdentifierPropertyNames<M>> = T\n\nexport class BaseModel<Model extends ModelBaseStructure<Model, Identifiers>, Identifiers = GenericIdentifier>\n implements ModelBaseStructure<Model, Identifiers>\n{\n get identifier(): { [key in Extract<NonFunctionAndIdentifierPropertyNames<Model>, Identifiers>]: Model[key] } {\n const fields = (this.constructor as BaseModelBuilder<Model>).identifiersFields.filter(\n (field) => field !== 'identifier',\n )\n const data: Record<string, any> = this\n\n return fields.reduce((object, field) => ({ ...object, [field]: data[field] }), {})\n }\n\n get identifiersFields(): Identifiers[] {\n return (this.constructor as BaseModelBuilder<Model, Identifiers>).identifiersFields\n }\n\n constructor(args?: Partial<Model>) {\n Object.assign(this, args)\n }\n\n static toInstance<T>(this: new () => T, data?: Partial<NonFunctionAndIdentifierProperties<T>>): T {\n return plainToInstance(this, data || {})\n }\n\n static isModel<T extends ModelBaseStructure>(this: new () => T, value: any): value is T {\n return value instanceof this\n }\n\n toPlain(): any {\n return instanceToPlain(this)\n }\n}\n","export enum Where {\n EQUALS = '==',\n NOTEQUALS = '!=',\n GT = '>',\n GTE = '>=',\n IN = 'in',\n NOTIN = 'not in',\n LT = '<',\n LTE = '<=',\n LIKE = 'like',\n NOTLIKE = 'not like',\n ISNULL = 'is null',\n ISNOTNULL = 'is not null',\n}\n","export enum UpdateOptionActions {\n UPDATE = 'update',\n MERGE = 'merge',\n REMOVE = 'remove',\n REMOVE_FIELD = 'removeField',\n NULL = 'null',\n}\n","export enum AccessoryImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_RARELY_USE = 'Gosto, mas uso poucos',\n LIKE_ALWAYS_FOLLOW_FASHION = 'Gosto muito de acessórios e sempre procuro acompanhar a moda',\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 BeardProblems {\n NO_PROBLEMS = 'Sem problemas',\n DRY = 'Barba Seca',\n OILY = 'Barba Oleaosa',\n DANCRUFF = 'Barba com Caspa',\n INGROWN_HAIRS = 'Pêlos Encravados',\n DOESNT_GROW = 'Não Cresce',\n SPARSE_BEARD = 'Barba Rala',\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 BeautyProductImportances {\n KNOW_LITTLE_ABOUT = 'Conheço bem pouco de produtos de beleza e rotinas de cuidados',\n ALREADY_BOUGHT_NOTHING_SPECIALIZED = 'Já comprei alguns produtos básicos para cuidar de mim, mas nada muito especializado',\n GOOD_CARE_MYSELF = 'Me considero um homem que se cuida bem. Conheço sobre produtos especializados e me preocupo em ter uma rotina de cuidados',\n PERSONAL_CARE_EXPERT = 'Sou um expert em cuidados pessoais',\n}\n","export enum BodyProblems {\n NO_WORRIES = 'Sem preocupações',\n FLACCIDITY = 'Flacidez',\n LOCALIZED_FAT = 'Gordura Localizada',\n STRETCH_MARKS = 'Estrias',\n SENSITIVE_SKIN = 'Pele Sensível',\n DRY_SKIN = 'Pele Seca',\n OILY_ACNE = 'Oleosa/Acne',\n SKIN_FRECKLES = 'Pele com Sardas',\n PHOTOSENSITIVE_SKIN = 'Pele Fotossensível',\n}\n","export enum BodyShapes {\n LEAN = 'Magro',\n REGULAR = 'Regular',\n OVERWEIGHT = 'Acima do Peso',\n ATHLETIC = 'Atlético',\n MUSCULAR = 'Musculoso',\n}\n","export enum BodyTattoos {\n NONE = 'Nenhuma',\n HAS_DOESNT_CARE = 'Tenho mas não cuido',\n HAS_CARE_LOT = 'Tenho e cuido bastante',\n}\n","export enum FaceSkinOilinesses {\n DRY = 'Seca',\n OILY = 'Oleaosa',\n MIXED = 'Mista',\n NORMAL = 'Normal',\n DONT_KNOW = 'Eu não sei como dizer',\n}\n","export enum FaceSkinProblems {\n NO_PROBLEMS = 'Sem problemas',\n DARK_CIRCLES = 'Olheiras',\n WRINKLES = 'Rugas',\n BLACKHEADS_PIMPLES = 'Cravos e Espinhas',\n STAINS = 'Manchas',\n FRECKLES = 'Sardas',\n SENSITIVE = 'Sensível',\n PHOTOSENSITIVE = 'Fotossensível',\n}\n","export enum FaceSkinTones {\n VERY_CLEAR = 'Muito Clara',\n CLEAR = 'Clara',\n MEDIUM_LIGHT = 'Clara Média',\n MEDIUM_DARK = 'Escura Média',\n DARK = 'Escura',\n VERY_DARK = 'Muito Escura',\n}\n","export enum FamilyIncomes {\n UNTIL_3000 = 'Até R$3.000',\n SINCE_3001_TO_7000 = 'De R$3.001 a R$7.000',\n SINCE_7001_TO_10000 = 'De R$7.001 a R$10.000',\n SINCE_10001_TO_15000 = 'De R$10.001 a R$15.000',\n GRAN_THAN_15000 = 'Mais de R$15.000',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum FragranceImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_ALWAYS_USE_SAME = 'Gosto de perfumes, mas uso sempre os mesmos',\n LIKE_INNOVATE = 'Gosto de inovar e conhecer novas fragrâncias',\n}\n","export enum HairColors {\n BLACK = 'Preto',\n DARK_BROWN = 'Castanho Escuro',\n LIGHT_BROWN = 'Castanho Claro',\n DARK_BLONDE = 'Loiro Escuro',\n LIGHT_BLONDE = 'Loiro Claro',\n WHITE_GRAY = 'Branco/Grisalho',\n REDHEAD = 'Ruivo',\n OTHER = 'RuiOutroo',\n}\n","export enum HairProblems {\n NO_PROBLEMS = 'Sem problemas',\n DANCRUFF = 'Caspa',\n LOSS = 'Queda',\n OILY = 'Oleosidade',\n DRYNESS = 'Ressecamento',\n CHEMICAL = 'Quimica',\n WHITE_HAIR = 'Cabelos Brancos',\n REBEL_WIRES = 'Fios Rebeldes',\n}\n","export enum HairStrands {\n NORMAL = 'Fio Normal',\n DRY = 'Fio Seco',\n OILY = 'Fio Oleoso',\n MIXED = 'Fio Misto',\n FINE = 'Fio Fino',\n THICK = 'Fio Grosso',\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 OfficePosition {\n Intern = 'Estagi\\u00E1rio',\n Analyst = 'Analista',\n Manager = 'Gerente',\n Director = 'Diretor',\n}\n","export enum ProductSpents {\n UNTIL_50 = 'Até R$50',\n SINCE_51_TO_100 = 'De R$51 a R$100',\n SINCE_101_TO_200 = 'De R$101 a R$200',\n SINCE_201_TO_300 = 'De R$201 a R$300',\n GRAN_THAN_300 = 'Mais de R$300',\n NOW_ANSWER = 'Prefiro nao responder',\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 SHIPPED = 'Enviado',\n}\n","export enum PaymentType {\n AQUISITION = 'Aquisição',\n RENEWAL = 'Renovação',\n FREIGHT = 'mudança de endereço, Frete',\n}\n","export enum Status {\n ACTIVE = 'active',\n CANCELLED = 'Cancelado',\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\n\nimport { EditionStatus, BillingStatus } from './enums'\n\nexport type EditionIdentifiers = 'id' | 'subscriptionId'\n\nexport class Edition extends BaseModel<Edition, EditionIdentifiers> {\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 createdAt: Date\n updatedAt: Date\n\n static get identifiersFields(): EditionIdentifiers[] {\n return ['id', 'subscriptionId']\n }\n}\n","import { Expose } from 'class-transformer'\n\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nimport { PaymentBilling, PaymentCard, PaymentCustomer, PaymentItem, PaymentShipping } from './types'\n\nexport class Payment extends BaseModel<Payment> {\n id: number\n object: string\n status: string\n tid: number\n nsu: number\n amount: number\n cost: number\n installments: number\n referer: string\n ip: string\n phone: string\n address: string\n metadata: any\n device: string\n payment: string\n addition: string\n discount: string\n customer: PaymentCustomer\n billing: PaymentBilling\n shipping: PaymentShipping\n items: PaymentItem[]\n card: PaymentCard\n\n @Expose({ name: 'refuse_reason' })\n refuseReason: string\n @Expose({ name: 'status_reason' })\n statusReason: string\n @Expose({ name: 'acquirer_response_code' })\n acquirerResponseCode: string\n @Expose({ name: 'acquirer_name' })\n acquirerName: string\n @Expose({ name: 'acquirer_id' })\n acquirerId: string\n @Expose({ name: 'authorization_code' })\n authorizationCode: string\n @Expose({ name: 'soft_descriptor' })\n softDescriptor: string\n @Expose({ name: 'date_created' })\n dateCreated: string\n @Expose({ name: 'date_updated' })\n dateUpdated: string\n @Expose({ name: 'authorized_amount' })\n authorizedAmount: number\n @Expose({ name: 'paid_amount' })\n paidAmount: number\n @Expose({ name: 'refunded_amount' })\n refundedAmount: number\n @Expose({ name: 'card_holder_name' })\n cardHolderName: string\n @Expose({ name: 'card_last_digits' })\n cardLastDigits: string\n @Expose({ name: 'card_first_digits' })\n cardFirstDigits: string\n @Expose({ name: 'card_brand' })\n cardBrand: string\n @Expose({ name: 'card_pin_mode' })\n cardPinMode: string\n @Expose({ name: 'card_magstripe_fallback' })\n cardMagstripeFallback: boolean\n @Expose({ name: 'cvm_pin' })\n cvmPin: boolean\n @Expose({ name: 'postback_url' })\n postbackUrl: string\n @Expose({ name: 'payment_method' })\n paymentMethod: string\n @Expose({ name: 'capture_method' })\n captureMethod: string\n @Expose({ name: 'antifraud_score' })\n antifraudScore: string\n @Expose({ name: 'boleto_url' })\n boletoUrl: string\n @Expose({ name: 'boleto_barcode' })\n boletoBarcode: string\n @Expose({ name: 'boleto_expiration_date' })\n boletoExpirationDate: string\n @Expose({ name: 'subscription_id' })\n subscriptionId: string\n @Expose({ name: 'split_rules' })\n splitRules: string\n @Expose({ name: 'antifraud_metadata' })\n antifraudMetadata: any\n @Expose({ name: 'reference_key' })\n referenceKey: string\n @Expose({ name: 'local_transaction_id' })\n localTransactionId: string\n @Expose({ name: 'local_time' })\n localTime: string\n @Expose({ name: 'fraud_covered' })\n fraudCovered: boolean\n @Expose({ name: 'fraud_reimbursed' })\n fraudReimbursed: string\n @Expose({ name: 'order_id' })\n orderId: string\n @Expose({ name: 'risk_level' })\n riskLevel: string\n @Expose({ name: 'receipt_url' })\n receiptUrl: string\n @Expose({ name: 'private_label' })\n privateLabel: string\n @Expose({ name: 'pix_qr_code' })\n pixQrCode: string\n @Expose({ name: 'pix_expiration_date' })\n pixExpirationDate: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { Payment } from '../../../shopping/models/payment'\n\nimport { PaymentType } from './enums/payment-type.enum'\n\nexport type SubscriptionPaymentIdentifiers = 'id' | 'subscriptionId'\n\nexport class SubscriptionPayment extends BaseModel<SubscriptionPayment, SubscriptionPaymentIdentifiers> {\n id: string\n subscriptionId: string\n paymentType: PaymentType\n createdAt: Date\n attempts?: number\n\n @Type(() => Payment)\n payment: Payment\n\n static get identifiersFields(): SubscriptionPaymentIdentifiers[] {\n return ['id', 'subscriptionId']\n }\n}\n","import { debug, Debugger } from 'debug'\n\nexport enum DebugNamespaces {\n ROOT = 'connect',\n TRACE = 'trace',\n ERROR = 'error',\n}\n\nexport const Logger: Debugger = debug(DebugNamespaces.ROOT)\n","import { first, flatten, isArray, isNil, last } from 'lodash'\nimport 'reflect-metadata'\n\ntype Dictionary<T> = {\n [key: string]: T\n}\nexport type MetaArgs = {\n key: string\n target: any\n property?: string | symbol\n own?: boolean\n propertyDescriptor?: PropertyDescriptor\n}\nexport type MetaValueArgs<T = any> = MetaArgs & {\n value: T\n}\ntype MetaProperties<T = any> = Dictionary<T>\ntype MetaTargets = Dictionary<MetaProperties>\ntype MetaKeys = Dictionary<MetaTargets>\ntype MetaStorage = {\n value?: any\n object?: any\n values?: MetaKeys\n}\n\nexport class ReflectHelper {\n static get items(): MetaStorage {\n return this._items\n }\n\n static get keys(): Array<string> {\n return Object.keys(ReflectHelper.items)\n }\n\n static has(key: string, target?: any, property?: string | symbol): boolean {\n return (\n !isNil(key) &&\n !isNil(ReflectHelper.items[key]) &&\n (isNil(target) ||\n (!isNil(ReflectHelper.items[key][target]) &&\n (isNil(property) || !isNil(ReflectHelper.items[key][target][String(property)]))))\n )\n }\n\n static get<T = any>({ key, target, property, own = true }: MetaArgs): Array<T> {\n try {\n if (own) {\n return Reflect.getOwnMetadata(key, target, property) || null\n } else {\n return Reflect.getMetadata(key, target, property) || null\n }\n } catch (_err) {\n return null\n }\n }\n\n static first<T = any>({ key, target, property, own = true }: MetaArgs): T {\n const values = ReflectHelper.get<T>({ key, target, property, own })\n\n return isArray(values) ? first(values) : values\n }\n\n static last<T = any>({ key, target, property, own = true }: MetaArgs): T {\n const values = ReflectHelper.get<T>({ key, target, property, own })\n\n return isArray(values) ? last(values) : values\n }\n\n static set<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n Reflect.defineMetadata(key, value, target, property)\n\n ReflectHelper.put<T>({ key, target, property, value, propertyDescriptor })\n }\n\n static add<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n let values: Array<T> = ReflectHelper.get<T>({ key, target, property }) || new Array<T>()\n\n if (!Array.isArray(values)) values = [values]\n\n values.push(value)\n\n ReflectHelper.set<Array<T>>({ key, target, property, value: values, propertyDescriptor })\n }\n\n static all<T = any>({ key }: Partial<MetaArgs>): Array<MetaValueArgs<T>> {\n const items = ReflectHelper.items[key] || {}\n\n return flatten(Object.keys(items).map((item) => flatten(this.allFrom(key, items[item]))))\n }\n\n static allFrom(key: string, target: any): any {\n return Object.keys(target)\n .filter((property) => property !== 'object')\n .map((property) => this.allValuesFrom(key, target, property))\n }\n\n static allValuesFrom(key: string, target: any, property: any): any {\n const values = target[property]\n let value = values.value\n const propertyDescriptor = values.propertyDescriptor\n\n if (!isArray(value)) value = [value]\n\n return flatten(\n value.map((val: any) => {\n return {\n key,\n target: target.object,\n property,\n value: val,\n propertyDescriptor,\n }\n }),\n )\n }\n\n static delete({ key, target, property }: MetaArgs): boolean {\n Reflect.deleteMetadata(key, target, property)\n\n return ReflectHelper.remove(key, target, property)\n }\n\n static clear(key?: string): void {\n if (!key) {\n ReflectHelper.keys.forEach((storedKey) => {\n ReflectHelper.clear(storedKey)\n })\n } else {\n if (ReflectHelper.keys.includes(key)) {\n Object.values<MetaStorage>(ReflectHelper.items[key]).forEach((target) => {\n if (ReflectHelper.has(key, target)) {\n Object.values(ReflectHelper.items[key][target]).forEach((property) => {\n ReflectHelper.delete({\n key,\n target: target.object,\n property: String(property),\n })\n ReflectHelper.remove(key, target, String(property))\n })\n }\n\n ReflectHelper.delete({ key, target: target.object })\n ReflectHelper.remove(key, target)\n })\n }\n }\n }\n\n static getType({ target, propertyKey }): any {\n return Reflect.getMetadata('design:type', target, propertyKey)\n }\n\n static getReturntype({ target, propertyKey }): any {\n return Reflect.getMetadata('design:returntype', target, propertyKey)\n }\n\n static getAllMethods(target): string[] {\n const props = []\n let obj = target\n\n do {\n props.push(...Object.getOwnPropertyNames(obj))\n } while ((obj = Object.getPrototypeOf(obj)))\n\n return props.sort().filter((e, i, arr) => {\n if (\n [\n '__defineGetter__',\n '__defineSetter__',\n '__lookupGetter__',\n '__lookupSetter__',\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf',\n ].includes(e)\n )\n return false\n if (e != arr[i + 1] && typeof target[e] === 'function') return true\n })\n }\n\n private static _items: MetaStorage = {}\n\n private static put<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n const index = target.constructor.name\n\n ReflectHelper.items[key] = ReflectHelper.items[key] || {}\n ReflectHelper.items[key][index] = ReflectHelper.items[key][index] || {}\n ReflectHelper.items[key][index].object = target\n\n if (isNil(property)) {\n ReflectHelper.items[key][index].value = {\n value,\n propertyDescriptor,\n }\n } else {\n ReflectHelper.items[key][index][String(property)] = ReflectHelper.items[key][index][String(property)] || {}\n ReflectHelper.items[key][index][String(property)] = {\n value,\n propertyDescriptor,\n }\n }\n }\n\n private static remove(key: string, target?: any, property?: string | symbol): boolean {\n if (ReflectHelper.has(key, target, property)) return delete ReflectHelper.items[key][target][String(property)]\n else if (ReflectHelper.has(key, target)) return delete ReflectHelper.items[key][target]\n else if (ReflectHelper.has(key)) return delete ReflectHelper.items[key]\n else return false\n }\n}\n","import { ReflectHelper } from './reflect.helper'\n\nexport type DebugOptions = {\n name?: string\n namespaces?: Array<string>\n}\n\nexport class DebugDecoratorHelper {\n static DebugNamingMetadataKey = 'model:naming:decorator'\n\n static set(target: object, options: DebugOptions): void {\n ReflectHelper.add<DebugOptions>({\n key: DebugDecoratorHelper.DebugNamingMetadataKey,\n target,\n value: options,\n })\n }\n\n static get(target: object): DebugOptions {\n return ReflectHelper.first<DebugOptions>({\n key: DebugDecoratorHelper.DebugNamingMetadataKey,\n target,\n })\n }\n}\n","import { compact, get } from 'lodash'\n\nexport class ClassNameHelper {\n static get(clazz: any): string {\n if (!clazz) return null\n\n const prototype = Object.getPrototypeOf(clazz)\n const names = compact([\n get(clazz, 'constructor.name'),\n get(prototype, 'constructor.name'),\n get(prototype, '__proto__.constructor.name'),\n ])\n\n return names.find((name) => name !== 'class_1')\n }\n}\n","import { Debugger } from 'debug'\nimport { compact, flatten, get, isNil } from 'lodash'\nimport { Subject } from 'rxjs'\n\nimport { DebugNamespaces, Logger } from '../log.utils'\n\nimport { DebugDecoratorHelper } from './debug-decorator.helper'\nimport { ClassNameHelper } from './class-name.helper'\n\nexport type Debuggable = {\n debug: DebugHelper\n}\n\ntype DebugLog = {\n namespace: string\n message: string\n args: Array<any>\n}\n\ntype DebugError = {\n namespace: string\n error: any\n args: Array<any>\n}\n\nexport const isDebuggable = (object: any): object is Debuggable => {\n return 'debug' in object\n}\n\nexport class DebugHelper {\n static logs$ = new Subject<DebugLog>()\n static traces$ = new Subject<DebugLog>()\n static errors$ = new Subject<DebugError>()\n static isDebuggable = isDebuggable\n\n static namespacesFor(target: object): Array<string> {\n if (isNil(target)) return []\n\n const decorator = DebugDecoratorHelper.get(Object.getPrototypeOf(target))\n const namespaces = get(decorator, 'namespaces', [])\n const name = get(decorator, 'name', ClassNameHelper.get(target))\n\n return [...namespaces, name]\n }\n\n static as(...namespaces: Array<string>): DebugHelper {\n return new DebugHelper(...namespaces)\n }\n\n static for(target: object, ...namespaces: Array<string>): DebugHelper {\n const targetNamespaces = this.namespacesFor(target)\n\n return new DebugHelper(...targetNamespaces, ...namespaces)\n }\n\n static from(target: object, ...namespaces: Array<string>): DebugHelper {\n if (this.isDebuggable(target)) {\n const debug = target.debug\n\n if (namespaces) debug.push(...namespaces)\n\n return debug\n }\n\n return DebugHelper.for(target, ...namespaces)\n }\n\n static clonedFrom(target: object, ...namespaces: Array<string>): DebugHelper {\n if (this.isDebuggable(target)) {\n namespaces.push(...target.debug.entries)\n } else if (!isNil(target)) {\n namespaces.push(...this.namespacesFor(target))\n }\n\n return DebugHelper.for(target, ...namespaces)\n }\n\n static clone(target: object, ...namespaces: Array<string>): { original: DebugHelper; debug: DebugHelper } {\n let original: DebugHelper\n\n if (this.isDebuggable(target)) {\n original = target.debug\n namespaces.push(...original.entries)\n }\n\n return {\n original,\n debug: DebugHelper.for(target, ...namespaces),\n }\n }\n\n static replace(target: any, attrs: { with: DebugHelper }): void {\n if (this.isDebuggable(target)) target.debug = attrs.with\n }\n\n static mock(target: object, ...namespaces: Array<string>): { original: DebugHelper; debug: DebugHelper } {\n const { original, debug } = DebugHelper.clone(target, ...namespaces)\n\n DebugHelper.replace(target, { with: debug })\n\n return { original, debug }\n }\n\n logger: Debugger\n tracer: Debugger\n err: Debugger\n namespaces: Set<string>\n\n constructor(...namespace: Array<string>) {\n this.namespaces = new Set<string>()\n this.push(...namespace)\n }\n\n get entries(): Array<string> {\n return Array.from(get(this, 'namespaces', []))\n }\n\n get namespace(): string {\n return compact(flatten(this.entries)).join(':')\n }\n\n log(message?: any, ...args: Array<any>): DebugHelper {\n this.logger(JSON.stringify(message), ...args.map((element) => JSON.stringify(element)))\n DebugHelper.logs$.next({ namespace: this.namespace, message, args })\n\n return this\n }\n\n trace(message?: any, ...args: Array<any>): DebugHelper {\n this.logger.extend(DebugNamespaces.TRACE)(message, ...args)\n DebugHelper.traces$.next({ namespace: this.namespace, message, args })\n\n return this\n }\n\n error(error: any, ...args: Array<any>): DebugHelper {\n this.logger.extend(DebugNamespaces.ERROR)(JSON.stringify(error), ...args.map((element) => JSON.stringify(element)))\n DebugHelper.errors$.next({ namespace: this.namespace, error, args })\n\n return this\n }\n\n build(): DebugHelper {\n this.logger = Logger\n this.tracer = Logger\n this.err = Logger\n\n this.entries.forEach((namespace) => {\n this.logger = this.logger.extend(namespace)\n this.tracer = this.tracer.extend(namespace)\n this.err = this.err.extend(namespace)\n })\n\n return this\n }\n\n with(...namespace: Array<string>): DebugHelper {\n return new DebugHelper(...this.entries, ...namespace)\n }\n\n push(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n namespace.filter((item) => Boolean(item)).forEach((item) => this.namespaces.add(item))\n }\n\n return this.build()\n }\n\n unshift(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n return this.reset(...namespace, ...this.entries)\n }\n\n return this\n }\n\n reset(...namespace: Array<string>): DebugHelper {\n this.namespaces = new Set(flatten(compact(namespace)))\n\n return this.build()\n }\n\n startWith(...namespace: Array<string>): DebugHelper {\n const current = this.namespaces\n\n this.namespaces = new Set(flatten([compact(namespace), ...current]))\n\n return this.build()\n }\n\n shift(): DebugHelper {\n const list = this.entries\n\n list.shift()\n\n return this.reset(...list)\n }\n\n pop(): DebugHelper {\n const list = this.entries\n\n list.pop()\n\n return this.reset(...list)\n }\n\n clear(): DebugHelper {\n return this.reset()\n }\n\n remove(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n namespace.filter((item) => Boolean(item)).forEach((item) => this.namespaces.delete(item))\n }\n\n return this.build()\n }\n\n puts(...args: Array<string>): string {\n return [`[${this.namespace}]`, ...args].join(' ')\n }\n}\n","import { DebugDecoratorHelper, DebugOptions } from '../helpers'\n\nexport function Debug(opts?: DebugOptions): ClassDecorator {\n return function <TFunction>(target: any): TFunction | void {\n DebugDecoratorHelper.set(target.prototype, opts)\n }\n}\n","import { get } from 'lodash'\n\nimport { Debuggable, DebugHelper } from '../helpers'\n\nexport type CallbackFnArgs<T, Result> = {\n target: T\n result: Result\n args: Array<any>\n namespace?: Array<string>\n}\n\ntype CallbackFn<T, Result> = (opts: CallbackFnArgs<T, Result>) => void\n\ntype TraceOptions<T, Result> = {\n callbackFn?: CallbackFn<T, Result>\n level?: 'trace' | 'log'\n}\n\ntype Tracer<T, Result> = {\n options: TraceOptions<T, Result>\n method: any\n target: T & Debuggable\n propertyDescriptor: PropertyDescriptor\n propertyKey: string\n}\n\ntype CallTracerArgs = {\n target: any\n propertyKey: string\n propertyDescriptor: PropertyDescriptor\n args: Array<any>\n}\n\nconst ASYNC_IDENTIFIER = 'async'\n\nexport function Log<T, Result>(options: TraceOptions<T, Result> = {}) {\n return Trace<T, Result>({ level: 'log', ...options })\n}\n\nexport function Trace<T, Result>(options: TraceOptions<T, Result> = {}) {\n return function (target: any, propertyKey: string, propertyDescriptor: PropertyDescriptor) {\n const method = propertyDescriptor.value\n const isPromise = method.toString().includes(ASYNC_IDENTIFIER)\n const args = {\n options,\n method,\n target,\n propertyKey,\n propertyDescriptor,\n }\n\n propertyDescriptor.value = isPromise ? promiseTracer(args) : functionTracer(args)\n\n return propertyDescriptor\n }\n}\n\nconst traceCall = ({ target, propertyKey, propertyDescriptor, args }: CallTracerArgs): DebugHelper => {\n if (!target.debug) target.debug = DebugHelper.for(target, propertyKey)\n\n return target.debug.push(propertyKey).trace('called', { target, propertyKey, propertyDescriptor, args })\n}\n\nconst promiseTracer = function <T, Result>({ options, method, propertyKey, propertyDescriptor }: Tracer<T, Result>) {\n return function (...args: Array<any>): any {\n return new Promise((resolve, reject) => {\n const debug = traceCall({ target: this, propertyDescriptor, propertyKey, args })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('params').log(args)\n }\n\n return method\n .apply(this, args)\n .then((result: any) => {\n if (options.callbackFn) {\n options.callbackFn({ target: this, result, args, namespace: [propertyKey] })\n }\n\n if (get(options, 'level', '') === 'log') {\n debug.with('returns').log(result === undefined ? 'void' : result)\n }\n\n return resolve(result)\n })\n .catch((error: Error) => {\n debug.error(error, ...args)\n debug.with('stack').error(error.stack).pop()\n\n return reject(error)\n })\n .finally(() => {\n return debug.trace('finally', { args }).pop()\n })\n })\n }\n}\n\nconst functionTracer = function <T, Result>({\n options,\n target,\n method,\n propertyKey,\n propertyDescriptor,\n}: Tracer<T, Result>) {\n return function (...args: Array<any>): any {\n const debug = traceCall({ target: this || target, propertyDescriptor, propertyKey, args })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('params').log(args)\n }\n\n let result: any\n\n try {\n result = method.apply(this, args)\n\n if (options.callbackFn) options.callbackFn({ target: this, result, args, namespace: [propertyKey] })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('returns').log(result === undefined ? 'void' : result)\n }\n\n return result\n } catch (error) {\n debug.error(error, ...args).pop()\n\n throw error\n } finally {\n debug.trace('finally', { args }).pop()\n }\n }\n}\n","import { isString } from 'lodash'\n\nexport const isUUID = (value: string): boolean =>\n isString(value) && /[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}/.test(value)\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\n }\n}\n","import { isString } from 'lodash'\nimport { parseISO } from 'date-fns'\n\nexport const parseDateTime = (value: string): string | Date => {\n if (!isString(value)) return value\n if (\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value) &&\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T\\d{2}:\\d{2}:\\d{2}/.test(value)\n )\n return value\n\n const date = parseISO(value)\n\n if (isNaN(date.getTime())) return value\n\n return date\n}\n","export enum CheckoutTypes {\n ECOMMERCE = 1,\n SUBSCRIPTION = 2,\n ALL = 3,\n}\n","export enum CouponTypes {\n ABSOLUTE = 1,\n PERCENTAGE = 2,\n // FINANCIAL = 1,\n // PRODUCT,\n // GIFTCARD,\n // VOUCHER,\n}\n","export enum CouponSubtypes {\n ABSOLUTE = 1,\n PERCENTAGE = 2,\n}\n","export enum Exclusivities {\n ALL_USERS = 1,\n SPECIFIC_USER = 2,\n COLLABORATORS = 3,\n ACTIVE_SUBSCRIBER = 4,\n INACTIVE_SUBSCRIBER = 5,\n NON_SUBSCRIBER = 6,\n}\n","import { isNil } from '../../../../utils'\nimport { Shops } from '../../../catalog/models/enums/shops.enum'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\nimport { CouponTypes, Exclusivities } from './enums'\nimport { ClubeDaMensPlan } from './enums/coupon-club-mens.enum'\n\nconst COUPON_EXPIRATION = +1000 * 60 * 60 * 24 * 30\n\nexport class Coupon extends BaseModel<Coupon> {\n id: string\n category?: string\n discount: {\n subscriber: {\n type: CouponTypes\n value: number\n }\n non_subscriber: {\n type: CouponTypes\n value: number\n }\n subscription?: {\n type: CouponTypes\n value: number\n }\n }\n useLimits: {\n subscriber: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n non_subscriber: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n subscription?: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n }\n user?: string\n userExclusiveEmail?: string[]\n campaign?: string\n nickname: string\n beginAt: Date\n expiresIn?: Date\n // unlimited?: boolean\n // useLimit?: number\n // useLimitPerUser?: boolean\n shopAvailability: Shops\n personId?: number\n influencerEmail?: string\n plan?: ClubeDaMensPlan\n productsCategories: string[]\n minSubTotalValue?: number\n active?: Boolean\n createdAt: Date\n updatedAt?: Date\n checkoutType: CheckoutTypes\n exclusivityType?: [Exclusivities]\n\n get isInfluencer(): boolean {\n return !isNil(this.influencerEmail)\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n\n static createCoupon(userId: string): Coupon {\n return this.toInstance({\n nickname: `${Date.now()}`,\n checkoutType: CheckoutTypes.ECOMMERCE,\n discount: {\n subscriber: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n non_subscriber: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n subscription: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n },\n user: userId,\n createdAt: new Date(Date.now()),\n beginAt: new Date(Date.now()),\n expiresIn: new Date(Date.now() + COUPON_EXPIRATION),\n })\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\n\nexport class SubscriptionPlan extends BaseModel<SubscriptionPlan> {\n id: string\n name: string\n billingPrice: number\n recurrencePrice: number\n recurrenceCycle: number\n maxAttempts: number\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nimport { BeardSizes, HairTypes } from './enums'\n\nexport type BeautyProfileIdentifiers = 'id' | 'userId'\n\nexport class BeautyProfile extends BaseModel<BeautyProfile, BeautyProfileIdentifiers> {\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 static get identifiersFields(): BeautyProfileIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { isNil } from '../../../utils'\nimport { BaseModel, GenericIdentifier, NonFunctionAndIdentifierProperties } from '../../generic'\nimport { BeautyProfile } from './beauty-profile'\nimport { Area, OfficePosition, UserType } from './enums'\n\nexport class User extends BaseModel<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 area?: Area\n officePosition?: OfficePosition\n isSubscriber?: boolean\n subscriptionPlan?: string\n badgeId?: number\n badgeMultiplier?: number\n dateCreated?: Date\n dateModified?: Date\n\n @Type(() => BeautyProfile)\n beautyProfile?: BeautyProfile\n\n static toInstance<T>(this: new () => T, data?: Partial<NonFunctionAndIdentifierProperties<User>>): T {\n const instance = super.toInstance(data) as unknown as User\n\n if (!isNil(data.firstName))\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\n\n return instance as unknown as T\n }\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.beautyProfile\n\n return plain\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic'\nimport { LocationGeometry } from './types/location-geometry.type'\n\nexport abstract class Address<\n ChildAddress extends ModelBaseStructure<ChildAddress, Identifiers>,\n Identifiers = ChildAddress['identifiersFields'],\n> extends BaseModel<ChildAddress, Identifiers> {\n id: string\n default?: boolean\n recipient?: string\n zip?: string\n street?: string\n number?: string\n extension?: string\n reference?: string\n district?: string\n city?: string\n regionalPole?: string\n region?: string\n state?: string\n country?: string\n mailbox?: boolean\n mailboxNumber?: string\n formattedAddress?: string\n placeId?: string\n geometry?: LocationGeometry\n\n static get identifiersFields(): Array<GenericIdentifier | {}> {\n return ['id']\n }\n}\n","import { Address } from '../../location/models/address'\n\nexport type UserAddressIdentifiers = 'id' | 'userId'\n\nexport class UserAddress extends Address<UserAddress, UserAddressIdentifiers> {\n id: string\n userId: string\n\n static get identifiersFields(): UserAddressIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { Coupon } from '../../../shopping/models/coupons/coupon'\nimport { SubscriptionPlan } from '../../../shopping/models/subscription/plan'\nimport { User } from '../user'\nimport { UserAddress } from '../user-address'\nimport { Edition } from './edition'\nimport { Status } from './enums/status.enum'\nimport { SubscriptionPayment } from './payment'\n\nexport class Subscription extends BaseModel<Subscription> {\n id: string\n nextPayment: Date\n recurrence: boolean\n status: Status\n cardToken: string\n subtotalPrice?: number\n discount?: number\n totalPrice?: number\n createdAt: Date\n updatedAt: Date\n\n @Type(() => User)\n user: User\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => UserAddress)\n shippingAddress: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => Coupon)\n coupon?: Coupon\n @Type(() => Edition)\n editions: Edition[]\n @Type(() => SubscriptionPayment)\n payment?: SubscriptionPayment[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport type UserPaymentIdentifiers = 'id' | 'userId'\n\nexport class UserPaymentMethod extends BaseModel<UserPaymentMethod, UserPaymentIdentifiers> {\n brand: string\n cpf: string\n holderName: string\n last4: string\n pagarmeToken: string\n validUntil: string\n userId: string\n id: string\n fingerprint: string\n\n static get identifiersFields(): UserPaymentIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class Lead extends BaseModel<Lead> {\n id: string\n acceptsNewsletter: boolean\n email: string\n source: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class UnauthorizedError extends CustomError {\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 { CustomError } from 'ts-custom-error'\n\nexport class UserAlreadyRegisteredError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class WeakPasswordError extends CustomError {\n constructor(readonly message = 'Weak password') {\n super(message)\n }\n}\n","import { User, UserType } from '../models'\nimport { RegisterService } from '../services/register.service'\nimport { UserAlreadyRegisteredError } from '../errors'\nimport { UserRepository } from '../repositories/user.repository'\n\ntype RegisterParams = Partial<User> & { password: string }\n\nexport class Register {\n constructor(private readonly registerService: RegisterService, private readonly userRepository: UserRepository) {}\n\n async register(params: RegisterParams): Promise<User> {\n const email = params.email.toLocaleLowerCase()\n const displayName = `${params.firstName} ${params.lastName}`\n\n if (await this.userRepository.checkIfExistsByField('cpf', params.cpf))\n throw new UserAlreadyRegisteredError(`Usuário com CPF ${params.cpf} já registrado.`)\n if (await this.userRepository.checkIfExistsByField('email', params.email))\n throw new UserAlreadyRegisteredError(`Usuário com e-mail ${params.email} já registrado.`)\n\n const auth = await this.registerService.register({\n birthday: params.birthday,\n email,\n firstName: params.firstName,\n lastName: params.lastName,\n cpf: params.cpf,\n displayName,\n phone: params.phone,\n password: params.password,\n })\n\n delete params.password\n\n const user = await this.userRepository.create({\n ...params,\n id: auth.id,\n email,\n displayName,\n type: UserType.B2C,\n dateCreated: new Date(),\n dateModified: new Date(),\n })\n\n return user\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","import { AuthenticationService } from '../services/authentication.service'\n\nexport class RecoveryPassword {\n constructor(private readonly authService: AuthenticationService) {}\n\n async sendEmail(email: string): Promise<void> {\n await this.authService.sendPasswordResetEmail(email)\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { FilterOption } from './filter-option'\n\nexport class Filter extends BaseModel<Filter> {\n id: number\n description: string\n slug: string\n enabled: boolean\n options?: FilterOption[]\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model'\nimport { Shops } from './enums'\nimport { Filter } from './filter'\nimport { CategoryCondition, CategoryMetadata } from './types'\n\nexport class CategoryBase<\n ChildCategory extends ModelBaseStructure<ChildCategory, Identifiers> = ModelBaseStructure<any, any>,\n Identifiers = ChildCategory['identifiersFields'],\n> extends BaseModel<ChildCategory, Identifiers> {\n id: string\n brandCategory: boolean\n brandLogo?: string\n name: string\n slug: string\n image?: string\n brandCategoryBanner?: string\n brandCategoryBannerMobile?: string\n description: string\n conditions?: CategoryCondition\n products?: string[]\n createdAt?: Date\n updatedAt?: Date\n shop?: Shops\n shops?: string[]\n published: boolean\n metadata: CategoryMetadata\n isCollection?: boolean\n isWishlist?: boolean\n reference?: string\n parentId?: number\n\n @Type(() => CategoryBase)\n parent?: CategoryBase\n\n @Type(() => Filter)\n filters?: Filter[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { GenericIdentifier } from '../../generic/model'\nimport { CategoryBase } from './category-base'\n\nexport class CategoryForProduct extends CategoryBase<CategoryForProduct, GenericIdentifier> {\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model'\nimport {\n ProductEvaluation,\n ProductGender,\n ProductMetadata,\n ProductReview,\n ShopDescription,\n ShopPrice,\n Stock,\n} from './types'\nimport { Variant } from './variant'\n\nexport class ProductBase<\n ChildProduct extends ModelBaseStructure<ChildProduct, Identifiers>,\n Identifiers = ChildProduct['identifiersFields'],\n> extends BaseModel<ChildProduct, Identifiers> {\n id: string\n name: string\n slug: string\n description: ShopDescription\n sku: string\n price: ShopPrice\n hasVariants: boolean\n NCM: string\n EAN: string\n CEST: string\n weight: number\n stock: Stock\n costPrice: number\n images?: string[]\n miniatures?: string[]\n published: boolean\n createdAt?: Date\n updatedAt?: Date\n brand: string\n tags?: string[]\n filters?: string[]\n type?: string\n categories?: string[]\n reviews?: ProductReview[]\n variant?: Variant\n video?: string\n isKit?: boolean\n rate?: number\n gender?: ProductGender\n shoppingCount?: number\n metadata: ProductMetadata\n\n private reviewsTotal?: number\n\n get evaluation(): ProductEvaluation {\n return {\n reviews: this.reviews,\n count: this.reviewsTotal,\n rating: this.rate,\n }\n }\n\n set evaluation(evaluation: ProductEvaluation) {\n if (!evaluation) {\n this.reviews = null\n this.reviewsTotal = null\n this.rate = null\n\n return\n }\n\n this.reviews = evaluation.reviews || this.reviews\n this.reviewsTotal = evaluation.count || this.reviewsTotal\n this.rate = evaluation.rating || this.rate\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { CategoryForProduct } from './category-for-product'\nimport { ProductBase } from './product-base'\n\nexport class ProductForKit extends ProductBase<ProductForKit, GenericIdentifier> {\n @Type(() => CategoryForProduct)\n category: CategoryForProduct\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\nimport { ProductForKit } from './product-for-kit'\n\ntype KitProductIdentifiers = 'productId' | 'kitProductId'\n\nexport class KitProduct extends BaseModel<KitProduct, KitProductIdentifiers> {\n productId: string\n kitProductId: string\n quantity: number\n\n @Type(() => ProductForKit)\n kit: ProductForKit\n\n @Type(() => ProductForKit)\n product: ProductForKit\n\n static get identifiersFields(): KitProductIdentifiers[] {\n return ['productId', 'kitProductId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { KitProduct } from './kit-product'\nimport { ProductBase } from './product-base'\n\nexport class ProductForCategory extends ProductBase<ProductForCategory, GenericIdentifier> {\n @Type(() => KitProduct)\n kitProducts?: KitProduct[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { CategoryBase } from './category-base'\nimport { ProductForCategory } from './product-for-category'\n\nexport class Category extends CategoryBase<Category, GenericIdentifier> {\n @Type(() => ProductForCategory)\n childrenProducts?: ProductForCategory[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\n\nexport type CategoryCollectionChildrenIdentifiers = 'collectionId' | 'categoryId'\n\nexport class CategoryCollectionChildren extends BaseModel<\n CategoryCollectionChildren,\n CategoryCollectionChildrenIdentifiers\n> {\n collectionId: number\n categoryId: number\n parentCollectionId?: number\n parentCategoryId?: number\n name: string\n slug: string\n reference?: string\n\n @Type(() => CategoryCollectionChildren)\n parent?: CategoryCollectionChildren\n\n static get identifiersFields(): CategoryCollectionChildrenIdentifiers[] {\n return ['collectionId', 'categoryId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\nimport { Category } from './category'\nimport { Filter } from './filter'\n\ntype CategoryFilterIdentifiers = 'id' | 'filterId' | 'categoryId'\n\nexport class CategoryFilter extends BaseModel<CategoryFilter, CategoryFilterIdentifiers> {\n id: number\n filterId: number\n categoryId: number\n\n @Type(() => Filter)\n filter?: Filter\n\n @Type(() => Category)\n category?: Category\n\n static get identifiersFields(): CategoryFilterIdentifiers[] {\n return ['id']\n }\n}\n","export enum GenderDestination {\n FEMALE = 'female',\n MALE = 'male',\n UNISEX = 'unisex',\n}\n","export enum Shops {\n MENSMARKET = `mensmarket`,\n GLAMSHOP = 'Glamshop',\n GLAMPOINTS = 'Glampoints',\n ALL = 'ALL'\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\n\nexport class FilterOption extends BaseModel<FilterOption> {\n id: string\n filterId: number\n description: string\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { CategoryForProduct } from './category-for-product'\nimport { KitProduct } from './kit-product'\nimport { ProductBase } from './product-base'\n\nexport class Product extends ProductBase<Product, GenericIdentifier> {\n @Type(() => CategoryForProduct)\n category: CategoryForProduct\n\n @Type(() => KitProduct)\n kitProducts?: KitProduct[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../generic/model'\nimport { ShopPrice, Stock, VariantGrade } from './types'\n\nexport type ProductVariantIdentifiers = 'id' | 'productId'\n\nexport class Variant extends BaseModel<Variant, ProductVariantIdentifiers> {\n id: string\n productId: string\n sku: string\n price: ShopPrice\n EAN: string\n stock: Stock\n grade?: VariantGrade[]\n costPrice: number\n weight: number\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): ProductVariantIdentifiers[] {\n return ['id', 'productId']\n }\n}\n","import { GenericIdentifier } from '../../generic/model'\nimport { Category } from './category'\n\nexport class Wishlist extends Category {\n personId?: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Category, Shops } from '../../catalog/models'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class Buy2Win extends BaseModel<Buy2Win> {\n active: boolean\n cartValue: number\n createdAt: Date\n endDate: Date\n id?: string\n name: string\n products?: string[]\n shop: Shops\n activeCategory?: boolean\n cartValueMin?: number\n startDate: Date\n updatedAt?: Date\n\n @Type(() => Category)\n categories: Category[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from \"../../generic\"\n\nexport class CampaignDashboard extends BaseModel <CampaignDashboard> {\n\n id: string\n status: string\n updatedAt?: string\n environment: string\n bannerAlt: string\n imgMob: string\n imgDesk: string\n urlBanner?: string\n positionBanner?: number\n startDate?: Date\n endDate?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}","import { BaseModel, GenericIdentifier } from \"../../generic\"\n\nexport class CampaignHashtag extends BaseModel <CampaignHashtag> {\n\n id: string\n status?: string\n updatedAt?: string\n environment: string\n campaignName?: string\n campaignImage?: string \n campaignMinGlampoints?: number\n campaignMaxGlampoints?: number\n campaignReferCode?: string\n campaignDescription?: string\n startDate?: Date\n endDate?: Date\n campaignSubscribed: boolean\n rules?: string[]\n \n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n\n} ","import { Product } from '../../catalog/models/product'\n\nexport class LineItem extends Product {\n parentId?: string\n quantity: number\n isGift?: boolean\n pricePaid?: number\n image?: string\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class ShippingMethod extends BaseModel<ShippingMethod> {\n id: string\n CNPJ: string\n DaysToDelivery: number\n MaxGrams: number\n MinGrams: number\n ServiceCompanyRangeId: number\n ShippingCompanyId: number\n ShippingCompanyName: string\n ShippingPrice: number\n State: string\n ZipEnd: number\n ZipStart: number\n invoiceNumber?: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { Shops } from '../../catalog/models/enums/shops.enum'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { User, UserAddress } from '../../users'\nimport { Coupon } from './coupons/coupon'\nimport { LineItem } from './line-item'\nimport { ShippingMethod } from './shipping-method'\n\nexport class Checkout extends BaseModel<Checkout> {\n id?: string\n paymentId?: string\n status?: any\n createdAt?: Date\n updatedAt?: Date\n completedAt?: Date\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n shop: Shops\n glampoints?: number\n\n @Type(() => LineItem)\n lineItems?: LineItem[]\n @Type(() => User)\n user?: User\n @Type(() => UserAddress)\n shippingAddress?: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => ShippingMethod)\n shipping?: ShippingMethod\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","export enum OrderStatus {\n AGUARDANDO_PAGAMENTO = 'Aguardando pagamento',\n EM_PREPARO = 'Preparando pedido',\n NF_EMITIDA = 'Nota Fiscal Emitida',\n AGUARDANDO_ENVIO = 'Aguardando Transaportadora',\n ENVIADO = 'Enviado',\n ENTREGUE = 'Entregue',\n CANCELADO = 'Cancelado',\n CREDIT_CARD = 'credit_card',\n}\n","import { Type } from 'class-transformer'\nimport { Checkout } from './checkout'\nimport { OrderStatus } from './enums/order-status.enum'\nimport { Payment } from './payment'\n\nexport class Order extends Checkout {\n orderNumber?: string\n status: OrderStatus\n trackingCode?: string\n trackingUrl?: string\n\n @Type(() => Payment)\n payment: Payment\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { User, UserAddress } from '../../../users'\nimport { Coupon } from '../coupons/coupon'\nimport { SubscriptionPlan } from './plan'\n\nexport class CheckoutSubscription extends BaseModel<CheckoutSubscription> {\n id?: string\n user: User\n createdAt: Date\n updatedAt: Date\n completedAt?: Date\n userId?: string\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n\n @Type(() => UserAddress)\n shippingAddress: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { LineItem } from '../../shopping'\nimport { Product } from '../models'\n\nexport class RoundProductPricesHelper {\n public static roundProductPrices(product: Product): Product {\n product.price.price = Number(product.price.price.toFixed(2))\n product.price.fullPrice = Number(product.price.fullPrice.toFixed(2))\n if (product.price.subscriberPrice) {\n product.price.subscriberPrice = Number(product.price.subscriberPrice.toFixed(2))\n }\n if (product instanceof LineItem && product.pricePaid) {\n product.pricePaid = Number(product.pricePaid.toFixed(2))\n }\n\n return product\n }\n}\n","export enum FilterType {\n ACCESSORY_IMPORTANCE = 'accessoryImportance',\n BEARD_PROBLEMS = 'beardProblems',\n BEARD_SIZE = 'beardSize',\n BEAUTY_PRODUCT_IMPORTANCE = 'beautyProductImportance',\n BODY_PROBLEMS = 'bodyProblems',\n BODY_SHAPE = 'bodyShape',\n BODY_TATTOOS = 'bodyTattoos',\n FACE_SKIN_OILINESS = 'faceSkinOiliness',\n FACE_SKIN_PROBLEMS = 'faceSkinProblems',\n FACE_SKIN_TONE = 'faceSkinTone',\n FAMILY_INCOME = 'familyIncome',\n FRAGRANCE_IMPORTANCE = 'fragranceImportance',\n HAIR_COLOR = 'hairColor',\n HAIR_PROBLEMS = 'hairProblems',\n HAIR_STRANDS = 'hairStrands',\n HAIR_TYPE = 'hairType',\n PRODUCT_SPENT = 'productSpent',\n}\n","export enum QuestionsFilters {\n ACCESSORY_IMPORTANCE = 'Você gosta de usar acessórios masculinos?',\n BEARD_PROBLEMS = 'Quais problemas de barba você tem?',\n BEARD_SIZE = 'Quais caracteristicas se aplicam à sua BARBA/BIGODE?',\n BEAUTY_PRODUCT_IMPORTANCE = 'O que descreve melhor a sua relação com produtos de beleza e cuidados pessoais?',\n BODY_PROBLEMS = 'Qual ou quais preocupações você tem com a pele do seu corpo?',\n BODY_SHAPE = 'Qual e seu tipo de CORPO?',\n BODY_TATTOOS = 'Você tem alguma tatuagem?',\n FACE_SKIN_OILINESS = 'Quais caracteristicas se aplicam à pele do seu ROSTO?',\n FACE_SKIN_PROBLEMS = 'Quais problemas a pele do seu rosto tem?',\n FACE_SKIN_TONE = 'Qual seu tom de pele?',\n FAMILY_INCOME = 'Qual a sua renda familiar mensal (considerando a renda de todas as pessoas que moram com você)?',\n FRAGRANCE_IMPORTANCE = 'O quanto você gosta de experimentar perfumes?',\n HAIR_COLOR = 'Seu cabelo é naturalmente de qual COR?',\n HAIR_PROBLEMS = 'Qual ou quais problemas/característica de cabelo te preocupam?',\n HAIR_STRANDS = 'Como são seus fios?',\n HAIR_TYPE = 'Como é o seu cabelo?',\n PRODUCT_SPENT = 'Qual é o seu nivel de gasto mensal em produtos de beleza e cuidados pessoais?',\n}\n","import * as Answers from '../../users/models/enums'\nimport { FilterType, QuestionsFilters } from '../enums'\n\ntype FilterAnswers = {\n [key: string]: string\n}\n\nexport class BeautyQuestionsHelper {\n static getAnswers(filter: FilterType): FilterAnswers {\n switch (filter) {\n case FilterType.ACCESSORY_IMPORTANCE:\n return Answers.AccessoryImportances\n case FilterType.BEARD_PROBLEMS:\n return Answers.BeardProblems\n case FilterType.BEARD_SIZE:\n return Answers.BeardSizes\n case FilterType.BEAUTY_PRODUCT_IMPORTANCE:\n return Answers.BeautyProductImportances\n case FilterType.BODY_PROBLEMS:\n return Answers.BodyProblems\n case FilterType.BODY_SHAPE:\n return Answers.BodyShapes\n case FilterType.BODY_TATTOOS:\n return Answers.BodyTattoos\n case FilterType.FACE_SKIN_OILINESS:\n return Answers.FaceSkinOilinesses\n case FilterType.FACE_SKIN_PROBLEMS:\n return Answers.FaceSkinProblems\n case FilterType.FACE_SKIN_TONE:\n return Answers.FaceSkinTones\n case FilterType.FAMILY_INCOME:\n return Answers.FamilyIncomes\n case FilterType.FRAGRANCE_IMPORTANCE:\n return Answers.FragranceImportances\n case FilterType.HAIR_COLOR:\n return Answers.HairColors\n case FilterType.HAIR_PROBLEMS:\n return Answers.HairProblems\n case FilterType.HAIR_STRANDS:\n return Answers.HairStrands\n case FilterType.HAIR_TYPE:\n return Answers.HairTypes\n case FilterType.PRODUCT_SPENT:\n return Answers.ProductSpents\n }\n }\n\n static getQuestions(filter: FilterType): string {\n return QuestionsFilters[filter]\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { Banner, Benefit, HomeDataStructure } from './types'\n\nexport class Home extends BaseModel<Home> {\n benefitsSection: Benefit[]\n blockBanners: Banner[]\n blogBanner: Banner\n brandsCarousel: Banner[]\n buyToWinBanner: Banner\n discoverCategories: string[]\n featuredCampaignBanner: Banner\n featuredCategories: string[]\n heroCarousel: Banner[]\n verticalCarousels: string[]\n id: string\n data: HomeDataStructure\n minValueForFreeShipping: number\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { MenuNav } from './types/menu-nav.type'\n\nexport class ShopMenu extends BaseModel<ShopMenu> {\n menuNav: MenuNav[]\n id: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { ShopBanner, ShopBrands, ShopCarousel, ShopCollection } from './types'\n\nexport class ShopSettings extends BaseModel<ShopSettings> {\n id: string\n name: string\n shop: string\n sections: (ShopBanner | ShopCarousel | ShopCollection | ShopBrands)[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class InvalidArgumentError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class RequiredArgumentError extends CustomError {\n arguments: string[]\n\n constructor(readonly args: string[]) {\n super(`Required arguments: ${args.join(', ')}`)\n\n this.arguments = args\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class NotFoundError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class DuplicatedResultsError extends CustomError {\n constructor(readonly message) {\n super(message)\n }\n}\n","import axios from 'axios'\nimport { ModelBaseStructure } from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { ElasticSearchResult } from '../types/elastic-search-result'\nimport { ElasticSearchAdapter } from './elastic-search.adapter'\n\nexport type AxiosElasticSearchConfig = {\n url: string\n credential: string\n}\n\nexport class AxiosAdapter<T extends ModelBaseStructure<T>> implements ElasticSearchAdapter<T> {\n constructor(private readonly config: AxiosElasticSearchConfig) {}\n\n async get(index: string, id: string): Promise<T> {\n try {\n const { data } = await axios({\n url: `${this.config.url}/${index}/_doc/${id}`,\n method: 'GET',\n responseType: 'json',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `ApiKey ${this.config.credential}`,\n },\n })\n\n return data._source\n } catch (error) {\n throw new NotFoundError(error.message)\n }\n }\n\n async query(index: string, query: any): Promise<ElasticSearchResult<T>> {\n const { data } = await axios({\n url: `${this.config.url}/${index}/_search`,\n method: 'POST',\n responseType: 'json',\n headers: {\n Accept: 'application/vnd.elasticsearch+json;compatible-with=7',\n 'Content-Type': 'application/vnd.elasticsearch+json;compatible-with=7',\n Authorization: `ApiKey ${this.config.credential}`,\n },\n data: query,\n })\n\n return {\n total: data.hits.total.value,\n hits: data.hits.hits,\n }\n }\n\n async save(index: string, data: Partial<T>): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_doc`,\n method: 'POST',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n data,\n })\n }\n\n async update(index: string, id: string, data: Partial<T>): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_update/${id}`,\n method: 'PUT',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n data,\n })\n }\n\n async delete(index: string, id: string): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_doc/${id}`,\n method: 'DELETE',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n })\n }\n}\n","import { Product, RoundProductPricesHelper, Shops } from '../../../domain'\nimport { ProductHasuraGraphQL } from '../../hasura-graphql'\nimport { ElasticSearchAdapter } from '../adapters'\n\nexport class ProductsIndex {\n private index = `products`\n constructor(private readonly adapter: ElasticSearchAdapter<Product>) {}\n\n async getById(id: string): Promise<Product> {\n const data = await this.adapter.get(this.index, id)\n return Product.toInstance(data)\n }\n\n async search(searchTerm: string, total: number, shop: string) {\n const size: number = total || 9\n\n const fields = [\n 'EAN',\n 'brand',\n 'id',\n 'images',\n 'miniatures',\n 'name',\n 'price',\n 'sku',\n 'stock',\n 'slug',\n 'reviews',\n 'hasVariants',\n 'rate',\n ]\n\n const filter: Array<{ term: { [key: string]: string | boolean | number } }> = [{ term: { published: true } }]\n\n if (size > 9) {\n fields.push(...['pricePaid', 'isGift', 'stock', 'weight', 'tags'])\n } else {\n filter.push({ term: { tags: shop == Shops.GLAMSHOP ? 'feminino' : 'masculino' } })\n }\n\n const search = await this.adapter.query(this.index, {\n size,\n _source: fields,\n query: {\n bool: {\n must: {\n multi_match: {\n query: `${searchTerm}`,\n type: 'bool_prefix',\n fields: [\n 'name',\n 'name.folded',\n 'name.search',\n 'description',\n 'description.search',\n 'description.folded',\n 'brand',\n 'brand.search',\n 'brand.folded',\n ],\n fuzziness: 2,\n },\n },\n should: {\n match_phrase_prefix: {\n 'name.search': {\n query: `${searchTerm}`,\n slop: 10,\n },\n },\n },\n filter,\n },\n },\n })\n\n search.hits = search.hits\n .filter((e: any) => e._source.name !== '')\n .map((hit) => {\n RoundProductPricesHelper.roundProductPrices(hit._source)\n return hit\n })\n\n return search\n }\n\n async save(product: ProductHasuraGraphQL): Promise<void> {\n try {\n const { createdAt, updatedAt, kitProducts, ...data } = product\n\n this.adapter.save(this.index, data)\n } catch (error) {\n console.error(error)\n }\n }\n\n async update(product: ProductHasuraGraphQL) {\n try {\n await this.adapter.update(this.index, product.id, product)\n } catch (error) {\n console.error(error)\n }\n }\n\n async delete(id: string): Promise<void> {\n try {\n await this.adapter.delete(this.index, id)\n } catch (error) {\n console.error(error)\n }\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../../domain'\nimport { each, isObject, MixinCtor, unset } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreRepository } from '../types'\n\nexport const withFirestore = <TBase extends ModelBaseStructure<TBase>, T extends MixinCtor = MixinCtor>(\n MixinBase: T,\n): MixinCtor<FirestoreRepository<TBase>, never> => {\n const isObjectsAndNoDate = (data: any): boolean =>\n data &&\n !Array.isArray(data) &&\n typeof data === 'object' &&\n data?.constructor.name !== 'Timestamp' &&\n !('seconds' in data)\n const bindDate = (data: Record<string, any>, keyName: string): Record<string, any> => {\n if (data?.constructor.name === 'Timestamp') return data.toDate()\n if (data && typeof data === 'object' && 'seconds' in data) return new Date(data.seconds * 1000)\n if (typeof data === 'number' && ['createdAt', 'updatedAt'].includes(keyName)) return new Date(data)\n\n return data\n }\n const bindAllDateFromObject = (data: {}): NonFunctionAndIdentifierPropertiesWithNoPartial<TBase> => {\n return Object.keys(data).reduce(\n (object, key) => ({\n ...object,\n [key]: isObjectsAndNoDate(data[key])\n ? bindAllDateFromObject(data[key])\n : Array.isArray(data[key])\n ? data[key].map((element) => (isObjectsAndNoDate(element) ? bindAllDateFromObject(element) : element))\n : bindDate(data[key], key),\n }),\n {} as NonFunctionAndIdentifierPropertiesWithNoPartial<TBase>,\n )\n }\n const omitByRecursivelyInPlace = (value: any, iteratee: (value: any, key: string) => boolean): any => {\n each(value, (v, k) => {\n if (iteratee(v, k)) {\n unset(value, k)\n } else if (isObject(v)) {\n omitByRecursivelyInPlace(v, iteratee)\n }\n })\n\n return value\n }\n\n return class extends MixinBase implements FirestoreRepository<TBase> {\n readonly firestore?: FirebaseFirestore\n collectionName: string\n model: BaseModelBuilder<TBase>\n fields: Record<NonFunctionAndIdentifierPropertyNames<TBase>, FirestoreFieldType>\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 => {\n const plain = data?.toPlain ? data.toPlain() : data\n\n return omitByRecursivelyInPlace(plain, (value) => value === undefined)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>): TBase => {\n const data = snap.data()\n let bindedData: NonFunctionAndIdentifierPropertiesWithNoPartial<TBase>\n\n try {\n const ids = { id: snap.id }\n\n bindedData = bindAllDateFromObject(data)\n\n return this.model.toInstance({ ...bindedData, ...ids })\n } catch (error) {\n console.info('id', snap.id)\n console.info('data', JSON.stringify(bindedData))\n console.error(error)\n\n throw error\n }\n },\n }\n }\n }\n}\n","import { QueryDocumentSnapshot, QuerySnapshot } from '@firebase/firestore-types'\nimport { ModelBaseStructure } from '../../../../domain'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\n\nexport const withHelpers = <TMixinBase extends MixinCtor = MixinCtor>(MixinBase: MixinCtor & TMixinBase) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends ModelBaseStructure<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 ModelBaseStructure<T>, E extends ModelBaseStructure<E>>(\n repository: FirestoreRepository<T> | FirestoreSubRepository<T, E>,\n ): repository is FirestoreSubRepository<T, E> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { GetRepository, IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withGetFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & InstanceType<TMixinBase> & GetRepository<TBase> & FirestoreHelpers, []> => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: IdentifiersModel<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: IdentifiersModel<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } as any\n}\n","export enum FirestoreFieldType {\n String = 'string',\n Number = 'number',\n Boolean = 'boolean',\n Timestamp = 'timestamp',\n Array = 'array',\n Map = 'map',\n}\n","import { CollectionReference, Query, WhereFilterOp } from '@firebase/firestore-types'\nimport {\n FindRepository,\n FindRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionPropertyNames,\n RepositoryFindField,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n Where,\n} from '../../../../domain'\nimport { isDate, isNil, isNumber, isObject, isString, MixinCtor, set } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withFindFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & InstanceType<TMixinBase> & FindRepository<TBase> & FirestoreHelpers, []> => {\n const checkIfIsFilterOption = (filter: any): filter is RepositoryFindFieltersOptions<TBase, any> =>\n !isNil(filter?.operator)\n const getValueFromFilter = (filter: RepositoryFindField<TBase, any>): any => {\n return checkIfIsFilterOption(filter) ? filter.value : filter\n }\n const getFinalValueFrom = (value: any) =>\n isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)\n ? value\n : Object.values(getFinalValueFrom)\n\n return class FindFirestore extends MixinBase implements FindRepository<TBase> {\n async find({ filters, limits, orderBy, options }: FindRepositoryParams<TBase> = {}): Promise<\n RepositoryFindResult<TBase>\n > {\n const orderByKeys = Object.keys(orderBy || {})\n const enableCount = options?.enableCount ?? true\n let query: CollectionReference<TBase> | Query<TBase> = this.collection(\n this.buildCollectionPathForFind(filters || {}),\n )\n\n query = this.makeFirestoreWhere(query, filters || {})\n\n if (orderByKeys.length) {\n const filtersKeysWithUnordered = Object.keys(filters || {}).filter(\n (filterKey) => !orderByKeys.includes(filterKey),\n )\n\n if (filtersKeysWithUnordered.length)\n filtersKeysWithUnordered.forEach(\n (filterKey) =>\n (orderBy = {\n ...(![Where.EQUALS].includes(filters[filterKey].operator) ? { [filterKey]: 'asc' } : {}),\n ...orderBy,\n }),\n )\n\n Object.keys(orderBy).forEach((fieldName) => (query = query.orderBy(fieldName, orderBy[fieldName])))\n }\n\n query = await 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: enableCount ? this.calculateCount(data, limits) : Infinity,\n }\n }\n\n buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>): string {\n if (!this.isSubCollection(this)) return this.collectionName\n\n const parentIdField = this.parentIdField as NonFunctionAndIdentifierPropertyNames<TBase>\n const parentId = getValueFromFilter(filters?.[parentIdField])\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) => this.buildWhereSentence(query, fieldName, filter[fieldName]),\n queryReference,\n )\n\n buildWhereSentence = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n fieldName: NonFunctionPropertyNames<TBase> | string,\n options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>,\n ): Query<TBase> => {\n if (this.isSubCollection(this) && fieldName === this.parentIdField) return queryReference\n\n const value = options?.value || options\n const object = {}\n\n set(object, fieldName, value)\n\n const plainInstance = new this.model(object).toPlain()\n const firestoreFieldName =\n fieldName.toString().indexOf('.') > -1\n ? fieldName.toString()\n : Object.keys(plainInstance).find((key) => plainInstance[key])\n\n if (options?.operator === Where.LIKE) {\n if (\n Array.isArray(options?.value) &&\n (this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName])\n )\n return queryReference.where(firestoreFieldName, 'array-contains-any', options.value)\n\n queryReference = queryReference.where(firestoreFieldName, '>=', options.value)\n queryReference = queryReference.where(firestoreFieldName, '<=', `${options.value}~`)\n\n return queryReference\n }\n if (\n options?.operator === Where.IN &&\n Array.isArray(options?.value) &&\n (this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName])\n )\n return queryReference.where(firestoreFieldName, 'array-contains', options.value)\n if (isObject(options) && isNil(options?.operator) && isNil(options?.value)) {\n return Object.keys(options).reduce(\n (queryReferenceWithWhere, key) =>\n this.buildWhereSentence(queryReferenceWithWhere, `${fieldName.toString()}.${key}`, options[key]),\n queryReference,\n )\n }\n\n return queryReference.where(\n firestoreFieldName,\n (options?.operator as WhereFilterOp) || '==',\n options?.value || options,\n )\n }\n\n async defineLimits(\n query: CollectionReference<TBase> | Query<TBase>,\n filters: RepositoryFindFielters<TBase>,\n limits: RepositoryLimitOptions<TBase>,\n ): Promise<Query<TBase>> {\n if (limits?.offset) {\n if (this.model.isModel(limits.offset))\n query = query.startAfter(\n await this.collection(this.buildCollectionPathForFind(filters))\n .doc(limits.offset[limits.offset.identifiersFields.shift() as string])\n .get(),\n )\n else if (isNumber(limits.offset) || isString(limits.offset)) query = query.startAt(limits.offset)\n }\n if (limits?.limit) query = 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 } as any\n}\n","import { DocumentReference } from '@firebase/firestore-types'\nimport { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../../domain'\nimport { isEmpty, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withCreateFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & CreateRepository<TBase> & FirestoreHelpers,\n []\n> => {\n return class CreateFirestore extends MixinBase implements CreateRepository<TBase> {\n async create(data: CreateRepositoryParams<TBase>): Promise<TBase> {\n const docRef = await this.save(this.model.toInstance(data as any))\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n async save(data: TBase): Promise<DocumentReference<TBase>> {\n const id = Object.values(data.identifier)?.shift()?.toString()\n const collectionPath = this.buildCollectionPathForAdd(data)\n\n if (isEmpty(id)) return this.collection(collectionPath).add(data)\n\n const docRef = this.collection(collectionPath).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 } as any\n}\n","import firebase from 'firebase'\nimport {\n IdentifierModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../../domain'\nimport { MixinCtor, PropType, isNil } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport type UpdateFirestoreRepositoryType<MBase extends ModelBaseStructure<MBase>> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport const withUpdateFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & UpdateRepository<TBase> & InstanceType<TMixinBase> & FirestoreHelpers,\n []\n> => {\n const getValueFromParams = (\n params: RepositoryUpdateParams<TBase>,\n field: NonFunctionAndIdentifierPropertyNames<TBase> | IdentifierModel<TBase>,\n ): PropType<TBase, NonFunctionAndIdentifierPropertyNames<TBase>> =>\n (isNil(params[field as string]?.value) ? params[field as string] : params[field as string].value) || null\n const getValueByAction = (options: UpdateOptions<TBase>): firebase.firestore.FieldValue | unknown => {\n const fieldValues = firebase.firestore.FieldValue\n\n if (isNil(options.action)) return options\n if (options.action === UpdateOptionActions.REMOVE_FIELD) return fieldValues.delete()\n if (Array.isArray(options.value)) {\n if (options.action === UpdateOptionActions.MERGE) return fieldValues.arrayUnion(...options.value)\n if (options.action === UpdateOptionActions.REMOVE) return fieldValues.arrayRemove(...options.value)\n }\n\n return options.value\n }\n\n return class UpdateFirestore extends MixinBase implements UpdateRepository<TBase> {\n async update(data: RepositoryUpdateParams<TBase>): Promise<TBase> {\n const model = new this.model()\n const keyField = model.identifiersFields.shift()\n const docRef = this.collection(this.buildCollectionPathForUpdate(data)).doc(\n getValueFromParams(data, keyField as IdentifierModel<TBase>).toString(),\n )\n\n await docRef.set(this.paramsToPlain(data), { merge: true })\n\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n buildCollectionPathForUpdate(identifiers: RepositoryUpdateParams<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${getValueFromParams(identifiers, this.parentIdField)}/${\n this.collectionName\n }`\n : this.collectionName\n }\n\n paramsToPlain(params: RepositoryUpdateParams<TBase>): Partial<TBase> {\n const model = this.model\n\n if (model.isModel(params)) return params.toPlain()\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({ ...data, [currentKey]: getValueByAction(params[currentKey]) }),\n {},\n )\n }\n } as any\n}\n","import { DeleteRepository, DeleteRepositoryParams, IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withDeleteFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & DeleteRepository<TBase> & FirestoreHelpers,\n []\n> => {\n return class DeleteFirestore extends MixinBase implements DeleteRepository<TBase> {\n async delete(identifiers: DeleteRepositoryParams<TBase>): Promise<void> {\n await this.collection(this.buildCollectionPathForRemove(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .delete()\n }\n\n buildCollectionPathForRemove(identifiers: IdentifiersModel<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } as any\n}\n","import { CollectionReference } from '@firebase/firestore-types'\nimport { IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\n\nexport const withSubCollection = <\n TBase extends ModelBaseStructure<TBase>,\n TBaseParent extends ModelBaseStructure<TBaseParent>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase>> & TMixinBase,\n ParentModel: new () => TBaseParent,\n): MixinCtor<\n FirestoreRepository<TBase> &\n InstanceType<TMixinBase> &\n FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>> &\n FirestoreHelpers,\n []\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: keyof IdentifiersModel<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 } as any\n}\n","import { CrudRepository, ModelBaseStructure } from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\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 = <\n TBase extends ModelBaseStructure<TBase>,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & Repository & FirestoreHelpers, []> => {\n return class CrudFirestore\n extends withUpdateFirestore(\n withGetFirestore(\n withFindFirestore(\n withDeleteFirestore(\n withCreateFirestore(MixinBase as MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers>),\n ),\n ),\n ),\n )\n implements CrudRepository<TBase> {} as any\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Lead, LeadRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class LeadFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Lead>(Base)))\n implements LeadRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'leads'\n this.model = Lead\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 { 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 { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPayment, Subscription, SubscriptionPaymentRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionPaymentFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<SubscriptionPayment>(Base))), Subscription)\n implements SubscriptionPaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\n super()\n this.collectionName = 'payments'\n this.parentIdField = 'subscriptionId'\n this.model = SubscriptionPayment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { User, UserAddress, UserAddressRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserAddressFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserAddress>(Base))), User)\n implements UserAddressRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'address'\n this.parentIdField = 'userId'\n this.model = UserAddress\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 { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BeautyProfile, User, UserRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class UserFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<User>(Base)))\n implements UserRepository\n{\n constructor(\n readonly firestore: FirebaseFirestore,\n ) {\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 user.isSubscriber = await this.checkIfIsSubscriber(user.id)\n\n return user\n }\n\n async checkIfExistsByField(field: string, value: string): Promise<boolean> {\n const result = await this.find({ filters: {[field]: value} });\n\n return result.count > 0\n }\n\n buildModelInstance(): {\n toFirestore: (data: User) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<User>) => User\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: User): DocumentData => {\n const plain = toFirestore(data)\n\n delete plain.isSubscriber\n\n return plain\n },\n fromFirestore,\n }\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 async checkIfIsSubscriber(userId: string): Promise<boolean> {\n const docs = await this.firestore\n .collection('subscription')\n .where('user.id', '==', userId)\n .where('status', '==', 'active')\n .get()\n\n return !!docs && !!docs.size\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 { User, UserPaymentMethod, UserPaymentMethodRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserPaymentMethodFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserPaymentMethod>(Base))), User)\n implements UserPaymentMethodRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'payment_method'\n this.parentIdField = 'userId'\n this.model = UserPaymentMethod\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Category, CategoryRepository, Product, Shops } from '../../../../../domain'\nimport { Base, chunk } from '../../../../../utils'\n\nimport { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../../errors'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CategoryFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Category>(Base)))\n implements CategoryRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'categories'\n this.model = Category\n }\n\n getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n return this.collection(this.collectionName)\n .where('slug', '==', slug)\n .where('shop', '==', shop)\n .where('published', '==', true)\n .get()\n .then((snap) => {\n if (snap.size > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n if (snap.empty) throw new NotFoundError(`Document with slug ${slug} not found`)\n\n return snap.docs[0].data()\n })\n .catch((error) => error)\n }\n\n async getCategoriesForHome(\n categoryIds: string[],\n limit = 4,\n gender?: string,\n ): Promise<{ category: Category; products: Product[] }[]> {\n const categorySnap = await this.collection(this.collectionName)\n .where('id', 'in', categoryIds.filter(Boolean))\n .where('published', '==', true)\n .get()\n\n if (categorySnap.empty) throw new NotFoundError('Categories not found')\n\n const categories = categorySnap.docs.map((doc) => doc.data())\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true, gender }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(\n category: Category,\n options?: { limit?: number; hasStock?: boolean; gender?: string },\n ): Promise<Product[]> {\n if (!category.products) throw new RequiredArgumentError(['Category products is empty'])\n\n const chunks = chunk(category.products, 10)\n const products = []\n\n for (const productIds of chunks) {\n if (options?.limit && products.length >= options?.limit) break\n\n let query = await this.collection('productsErpVitrine')\n .where('published', '==', true)\n .where('id', 'in', productIds)\n\n if (options?.hasStock) query = query.where('stock.quantity', '>', 0)\n if (options?.gender) query = query.where('tags', 'array-contains', options?.gender)\n if (options?.limit) query = query.limit(options?.limit)\n\n const productSnap = await query.get()\n\n if (productSnap.empty) continue\n\n products.push(...productSnap.docs.map((doc) => doc.data()))\n }\n\n return products\n }\n\n getCategoryByShop(shop: string): Promise<Category[]> {\n return\n }\n\n getChildren(parentId: number): Promise<Category[]> {\n return\n }\n\n isChild(id: number, parentId: number): Promise<boolean> {\n return\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport {\n FindRepositoryParams,\n Product,\n ProductRepository,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\n Where,\n} from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements ProductRepository\n{\n private reviews: Partial<Record<ReviewStatusParams, ReviewWithProductData[]>> = {}\n\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'productsErpVitrine'\n this.model = Product\n }\n\n async getBySlug(slug: string): Promise<Product> {\n const result = await this.find({\n filters: {\n slug: { operator: Where.EQUALS, value: slug },\n },\n })\n\n return result?.data?.shift()\n }\n\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\n const { data: products } = await this.find()\n\n products.forEach((product) => {\n if ([undefined, 0].includes(product.reviews?.length)) return\n\n const productInfo = {\n productId: product.id,\n productName: product.name,\n productSku: product.sku,\n }\n\n this.reviews.pending = []\n this.reviews.approved = []\n this.reviews.rejected = []\n\n product.reviews.forEach((review) => {\n if ([null, undefined].includes(review.status)) return this.reviews.pending.push({ ...review, ...productInfo })\n if (review.status === false) return this.reviews.rejected.push({ ...review, ...productInfo })\n if (!!review.status) return this.reviews.approved.push({ ...review, ...productInfo })\n })\n })\n\n return this.reviews[status]\n }\n\n cleanShoppingCountFromIds(ids: string[]): Promise<void> {\n return\n }\n\n findCatalog(params: FindRepositoryParams<Product>): Promise<RepositoryFindResult<Product>> {\n return this.find(params)\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, Variant, VariantRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { ProductFirestoreRepository } from './product-firestore.repository'\n\nexport class ProductVariantFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Variant>(Base))), Product)\n implements VariantRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: ProductFirestoreRepository) {\n super()\n this.collectionName = 'variants'\n this.parentIdField = 'productId'\n this.model = Variant\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, SubscriptionProductRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements SubscriptionProductRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionProducts'\n this.model = Product\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Buy2Win, Buy2WinRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class Buy2WinFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Buy2Win>(Base)))\n implements Buy2WinRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'buy2win'\n this.model = Buy2Win\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\n\nimport { CampaignDashboard } from '../../../../../domain/shopping/models/campaign-dashboard'\nimport { CampaignDashboardRepository } from '../../../../../domain/shopping/repositories/campaign-dashboard.repository'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignDashboardFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CampaignDashboard>(Base)))\n implements CampaignDashboardRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'dashboardCampaignsAuto'\n this.model = CampaignDashboard\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\n\nimport { CampaignHashtag } from '../../../../../domain/shopping/models/campaign-hashtag'\nimport { CampaignHashtagRepository } from '../../../../../domain/shopping/repositories/campaign-hashtag.repository'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignHashtagFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CampaignHashtag>(Base)))\n implements CampaignHashtagRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'hashtagCampaignsAuto'\n this.model = CampaignHashtag\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Checkout, CheckoutRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Checkout>(Base)))\n implements CheckoutRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkouts'\n this.model = Checkout\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { CheckoutSubscription, CheckoutSubscriptionRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutSubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CheckoutSubscription>(Base)))\n implements CheckoutSubscriptionRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkoutsSubscription'\n this.model = CheckoutSubscription\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Base, isNil } from '../../../../../utils'\nimport { Coupon, CouponRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CouponFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Coupon>(Base)))\n implements CouponRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'coupons'\n this.model = Coupon\n }\n\n buildModelInstance(): {\n toFirestore: (data: Coupon) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>) => Coupon\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Coupon): DocumentData => {\n const plain = toFirestore(data)\n\n if (!!data.expiresIn) plain.expiresIn = data.expiresIn.getTime()\n\n return plain\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>): Coupon => {\n const instance = fromFirestore(snap)\n\n if (!isNil(instance.expiresIn)) instance.expiresIn = new Date(snap.data().expiresIn)\n\n return instance\n },\n }\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Order, OrderRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { FirestoreFieldType } from '../../enums'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class OrderFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Order>(Base)))\n implements OrderRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'orders'\n this.model = Order\n this.fields = {\n status: FirestoreFieldType.String,\n }\n }\n\n buildModelInstance(): {\n toFirestore: (data: Order) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Order>) => Order\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n return {\n toFirestore: (data: Order): DocumentData => toFirestore(data?.toPlain ? data.toPlain() : data),\n fromFirestore: (snap: QueryDocumentSnapshot<Order>): Order => {\n const instance = fromFirestore(snap)\n\n return this.orderFromFirestore(instance)\n },\n }\n }\n\n private orderFromFirestore = (order: Order): Order => {\n if (!!order?.lineItems?.length) {\n order.lineItems = order.lineItems.map((lineItem) => {\n if (!!lineItem.price?.[order.shop]) {\n const shopPrice = lineItem['price'][order.shop]\n\n lineItem['price'] = shopPrice\n }\n\n return lineItem\n })\n }\n\n return order\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { LegacyOrderRepository } from '../../../../../domain'\n\nimport { OrderFirestoreRepository } from './order-firestore.repository'\n\nexport class LegacyOrderFirestoreRepository extends OrderFirestoreRepository implements LegacyOrderRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super(firestore)\n this.collectionName = 'legacyOrders'\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Payment, PaymentRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class PaymentFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Payment>(Base)))\n implements PaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'payments'\n this.model = Payment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionPlanFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\n implements SubscriptionPlanRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionPlans'\n this.model = SubscriptionPlan\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport firebase from 'firebase'\n\nimport { Base } from '../../../../../utils'\nimport { Category, Home, HomeCategoryGroup, HomeRepository, Product } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class HomeFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Home>(Base)))\n implements HomeRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'dms'\n this.model = Home\n }\n\n buildModelInstance(): {\n toFirestore: (data: Home) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Home>) => Home\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Home): DocumentData => {\n const modifiedData = this.homeToFirestore(data)\n\n return toFirestore(modifiedData)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Home>): Home => {\n const instance = fromFirestore(snap)\n\n return this.homeFromFirestore(instance)\n },\n }\n }\n\n private homeToFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.homeCategoryGroupToPlain)\n }\n\n return home\n }\n\n private homeCategoryGroupToPlain = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: homeCategoryGroup.category.toPlain(),\n products: homeCategoryGroup.products.map((product) => product.toPlain()),\n })\n\n private homeFromFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup)\n home.data.createdAt =\n home.data.createdAt instanceof firebase.firestore.Timestamp ? home.data.createdAt.toDate() : home.data.createdAt\n home.data.expiresAt =\n home.data.expiresAt instanceof firebase.firestore.Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt\n }\n\n return home\n }\n\n private plainToHomeCategoryGroup = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: Category.toInstance(homeCategoryGroup.category),\n products: homeCategoryGroup.products.map((product) => Product.toInstance(product)),\n })\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { ShopMenu, ShopMenuRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopMenuFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopMenu>(Base)))\n implements ShopMenuRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'shopMenus'\n this.model = ShopMenu\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { ShopSettings, ShopSettingsRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopSettingsFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopSettings>(Base)))\n implements ShopSettingsRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'shopSettings'\n this.model = ShopSettings\n }\n}\n","import firebase from 'firebase'\n\nimport { AuthenticationService, BasicUserData, LoginAndPasswordParams } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class AuthenticationFirebaseAuthService implements AuthenticationService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithEmailAndPassword(data.email, data.password)\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signInWithGoogle(): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider())\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signOut(): Promise<void> {\n this.firebaseAuth.signOut()\n }\n\n async signInAnonymously(): Promise<FirebaseUserWithId> {\n const auth = await this.firebaseAuth.signInAnonymously()\n const user = auth.user as FirebaseUserWithId\n\n user.id = auth.user.uid\n\n return user\n }\n\n async sendPasswordResetEmail(email: string): Promise<void> {\n return this.firebaseAuth.sendPasswordResetEmail(email)\n }\n}\n","import firebase from 'firebase'\n\nimport { RegisterParams, RegisterService, UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class RegisterFirebaseAuthService implements RegisterService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async register(params: RegisterParams): Promise<FirebaseUserWithId> {\n try {\n const auth = await this.firebaseAuth.createUserWithEmailAndPassword(params.email, params.password)\n const user = auth.user as FirebaseUserWithId\n\n user.sendEmailVerification()\n user.id = auth.user.uid\n\n return user\n } catch (error) {\n if (error.code === 'auth/email-already-in-use') throw new UserAlreadyRegisteredError('Email already registered')\n if (error.code === 'auth/weak-password') throw new WeakPasswordError()\n\n throw error\n }\n }\n}\n","import { ModelBaseStructure, NonFunctionAndIdentifierPropertyNames } from '../../../../domain'\nimport { isNil, isObject } from '../../../../utils'\nimport { ColumnOptions, HasuraGraphQLFields } from '../../types'\n\ntype FindByAttributeResult<\n MBase extends ModelBaseStructure<MBase>,\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase>,\n> = ColumnOptions<MBase[Attribute], MBase> & { attributeName: Attribute }\n\nexport class AttributeOptionHelper {\n static FindByAttribute = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase> = NonFunctionAndIdentifierPropertyNames<MBase>,\n >(\n attributeName: Attribute,\n fields: HasuraGraphQLFields<MBase>,\n ): FindByAttributeResult<MBase, Attribute> => {\n if (fields.includes(attributeName as any))\n return { columnName: attributeName.toString(), attributeName, to: (value) => value, from: (value) => value }\n\n const field = fields.find(\n (columnOption) => isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()),\n )\n const fieldOption = field?.[attributeName.toString()]\n\n if (isNil(fieldOption)) return { columnName: attributeName.toString(), attributeName }\n if (Array.isArray(fieldOption)) return { columnName: attributeName.toString(), attributeName, fields: fieldOption }\n\n return { attributeName, columnName: attributeName.toString(), ...fieldOption }\n }\n\n static CheckIsColumnOption = <Model extends ModelBaseStructure<Model>, ParentModel extends ModelBaseStructure>(\n fieldValue: ColumnOptions<Model, ParentModel>,\n ): fieldValue is ColumnOptions<Model, ParentModel> => !!fieldValue?.columnName\n\n static FindColumnOptionFromList = <\n Model extends ModelBaseStructure<Model>,\n ParentModel extends ModelBaseStructure<ParentModel>,\n >(\n columnName: string,\n fields: HasuraGraphQLFields<ParentModel>,\n ): ColumnOptions<Model, ParentModel> & { attributeName: NonFunctionAndIdentifierPropertyNames<ParentModel> } => {\n if (fields.includes(columnName as any))\n return { columnName, attributeName: columnName as NonFunctionAndIdentifierPropertyNames<ParentModel> }\n\n const field =\n fields.find(\n (columnOption) =>\n isObject(columnOption) &&\n Object.values(columnOption).find(\n (option) => AttributeOptionHelper.CheckIsColumnOption(option) && option.columnName === columnName,\n )?.columnName === columnName,\n ) || {}\n const attributeName = Object.keys(field).find(\n (fieldOptionFromList) =>\n AttributeOptionHelper.CheckIsColumnOption(field[fieldOptionFromList]) ||\n Array.isArray(field[fieldOptionFromList]),\n )\n const fieldOption = field?.[attributeName]\n\n if (Array.isArray(fieldOption))\n return { attributeName: attributeName as NonFunctionAndIdentifierPropertyNames<ParentModel>, fields: fieldOption }\n\n return {\n attributeName: (attributeName as NonFunctionAndIdentifierPropertyNames<ParentModel>) || columnName,\n columnName,\n ...fieldOption,\n }\n }\n}\n","export enum HasuraGraphQLWhere {\n EQUALS = '_eq',\n GT = '_gt',\n GTE = '_gte',\n IN = '_in',\n NOTIN = '_nin',\n LT = '_lt',\n LTE = '_lte',\n LIKE = '_like',\n NOTLIKE = '_nlike',\n ISNULL = '_is_null',\n ISNOTNULL = '_is_null',\n}\n","export enum HasuraGraphQLColumnType {\n Int = 'Int',\n Float = 'Float',\n Boolean = 'Boolean',\n String = 'String',\n DateTime = 'timestampz',\n Json = 'json',\n Jsonb = 'jsonb',\n Enum = 'enum',\n Uuid = 'uuid',\n}\n","import { ModelBaseStructure, RepositoryFindFieltersOptions, Where } from '../../../../domain'\nimport { isNil } from '../../../../utils'\nimport { ColumnOptions } from '../../types'\n\nexport class FilterOptionHelper {\n static CheckIfIsFilterOption = <Model extends ModelBaseStructure>(\n filter: any,\n ): filter is RepositoryFindFieltersOptions<Model, any> => !isNil(filter?.operator)\n\n static GetValueFromFilter = <Model extends ModelBaseStructure<Model>>(\n filter: RepositoryFindFieltersOptions<Model, any>,\n fieldOption: ColumnOptions<any, any>,\n ): any => {\n if (!FilterOptionHelper.CheckIfIsFilterOption(filter)) return filter\n if (filter.operator === Where.ISNULL) return true\n if (filter.operator === Where.ISNOTNULL) return false\n\n const converter = fieldOption.to\n ? fieldOption.to\n : (value) =>\n filter.operator === Where.LIKE && !Array.isArray(filter.value) && value.indexOf('%') < 0\n ? `%${value}%`\n : value\n\n return Array.isArray(filter.value) && !fieldOption.fields && [Where.IN, Where.NOTIN].includes(filter.operator)\n ? filter.value.map((fieldValue) => converter(fieldValue))\n : converter(filter.value as any)\n }\n}\n","import {\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionPropertyNames,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n Where,\n} from '../../../../domain'\nimport { isNil, isObject } from '../../../../utils'\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\nimport { ColumnOptions, HasuraGraphQLFields, VariableOptions } from '../../types'\n\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { FilterOptionHelper } from './filter-option.helper'\n\nexport class BindFilterQueryHelper {\n static MakeGraphQLWhere = <MBase extends ModelBaseStructure<MBase>>(\n filter: RepositoryFindFielters<MBase>,\n fields: HasuraGraphQLFields<MBase>,\n ): VariableOptions =>\n Object.keys(filter).reduce((variables: VariableOptions, fieldName: string) => {\n const columnOption = AttributeOptionHelper.FindByAttribute(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n fields,\n )\n\n if (!columnOption.bindFindFilter)\n return {\n ...variables,\n ...{\n [columnOption.columnName]: BindFilterQueryHelper.BuildWhereSentence(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n filter[fieldName],\n fields,\n ),\n },\n }\n\n const builtFilter: RepositoryFindFieltersOptions<\n MBase,\n NonFunctionPropertyNames<MBase>\n > = columnOption.bindFindFilter(filter[fieldName])\n\n return {\n ...variables,\n ...Object.keys(builtFilter).reduce(\n (variablesList: VariableOptions, columnName: string) => ({\n ...variablesList,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n builtFilter[columnName],\n fields,\n ),\n }),\n {},\n ),\n }\n }, {})\n\n static BuildWhereSentence = <MBase extends ModelBaseStructure<MBase>>(\n field: NonFunctionAndIdentifierPropertyNames<MBase>,\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n fields: HasuraGraphQLFields<MBase>,\n ): VariableOptions => {\n const fieldSentenceOptions = AttributeOptionHelper.FindByAttribute<MBase>(field, fields)\n const isNestedField =\n !Array.isArray(options) &&\n isObject(options) &&\n isNil(options?.operator) &&\n isNil(options?.value) &&\n isNil(fieldSentenceOptions?.to)\n\n if (isNestedField)\n return Object.keys(options).reduce((variables, key) => {\n const fieldOptions = AttributeOptionHelper.FindByAttribute<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n fieldSentenceOptions?.fields || (fields as any),\n )\n const columnName = fieldOptions.columnName\n const columnFields = fieldOptions.fields\n\n return {\n ...variables,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n options[key],\n fieldSentenceOptions?.fields || columnFields || (fields as any),\n ),\n }\n }, {})\n\n if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))\n return {\n [fieldSentenceOptions.fields[0] as NonFunctionAndIdentifierPropertyNames<MBase>]:\n BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }\n\n if (!Array.isArray(options) && isObject(options) && !FilterOptionHelper.CheckIfIsFilterOption(options))\n options = Object.values(options)[0] as RepositoryFindFieltersOptions<MBase, any>\n\n return Array.isArray(options)\n ? options.reduce(\n (whereSentence, option) => ({\n ...whereSentence,\n ...BindFilterQueryHelper.BuildOperatorSentence(\n option,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }),\n {},\n )\n : BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n )\n }\n\n static BuildOperatorSentence = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, any>,\n fieldOption: ColumnOptions<any, any>,\n ): VariableOptions => ({\n [BindFilterQueryHelper.GetHasuraOperator(options, fieldOption)]: FilterOptionHelper.GetValueFromFilter(\n options,\n fieldOption,\n ),\n })\n\n static GetHasuraOperator = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n fieldOption: ColumnOptions<any, any>,\n ): HasuraGraphQLWhere => {\n if (!FilterOptionHelper.CheckIfIsFilterOption(options)) return HasuraGraphQLWhere.EQUALS\n if (fieldOption.type === HasuraGraphQLColumnType.Jsonb) return BindFilterQueryHelper.GetHasuraJsonbOperator(options)\n\n return HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n }\n\n static GetHasuraJsonbOperator = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n ): HasuraGraphQLWhere => {\n if (options.operator === Where.IN) return '_contains' as HasuraGraphQLWhere\n if (options.operator === Where.LIKE) return '_has_keys_any' as HasuraGraphQLWhere\n\n return HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n }\n}\n","import {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n PartialIdentifiersModel,\n} from '../../../../domain'\nimport { isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils'\nimport { ColumnOptions, Fields, GraphQLParams, HasuraGraphQLFields } from '../../types'\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { BindFilterQueryHelper } from './bind-filter-query.helper'\n\nexport class GraphQLFieldHelper {\n static CheckIsGraphQLParams = <Model extends ModelBaseStructure<Model>>(\n params: string | GraphQLParams<Model>[],\n ): params is GraphQLParams<Model>[] =>\n !isString(params) && Array.isArray(params) && params.length >= 0 && !!params[0].operation\n\n static ConvertModelFieldsToGraphQLFields = <Model extends ModelBaseStructure<Model>>(\n fields: HasuraGraphQLFields<Model>,\n ): Fields => {\n return fields\n ?.map((field) => {\n if (isString(field)) return field.toString()\n\n const fieldName = Object.keys(field).shift()\n const fieldValue = field[fieldName]\n\n if (Array.isArray(fieldValue))\n return { [fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue) }\n if (!AttributeOptionHelper.CheckIsColumnOption(fieldValue)) return\n\n const isNestedField = !!fieldValue.fields\n\n if (isNestedField) return GraphQLFieldHelper.ConvertNestedFieldsToGraphQLFields(fieldName, fieldValue as any)\n\n return fieldValue.columnName\n })\n .filter((field) => !!field)\n }\n\n static ConvertFieldValueFrom = <\n Model extends ModelBaseStructure<Model>,\n DataType extends Record<string, string | number | DataType | Date>,\n >(\n data: string | number | DataType | Date,\n fields: HasuraGraphQLFields<Model>,\n ): NonFunctionAndIdentifierPropertiesWithNoPartial<Model> | PartialIdentifiersModel<Model> =>\n Object.keys(data).reduce((result, columnName) => {\n const {\n attributeName,\n fields: attributeFields,\n from,\n } = AttributeOptionHelper.FindColumnOptionFromList(columnName, fields)\n\n if (!!attributeFields && Array.isArray(attributeFields)) {\n if (Array.isArray(data[columnName]))\n return {\n ...result,\n [attributeName]: from\n ? from(data[columnName], data)\n : data[columnName].map((value) =>\n GraphQLFieldHelper.ConvertFieldValueFrom(value, attributeFields as any),\n ),\n }\n if (isObject(data[columnName]))\n return {\n ...result,\n [attributeName]: !!from\n ? from(data[columnName])\n : GraphQLFieldHelper.ConvertFieldValueFrom(data[columnName], attributeFields as any),\n }\n }\n\n if (!!from) return { ...result, [attributeName]: from(data[columnName], data) }\n\n return { ...result, [attributeName]: parseDateTime(data[columnName]) }\n }, {} as NonFunctionAndIdentifierPropertiesWithNoPartial<Model>)\n\n static ConvertFieldValueTo = <\n Model extends ModelBaseStructure<Model>,\n DataType extends Record<string, string | number | DataType | Date>,\n >(\n instance: Model,\n fields: HasuraGraphQLFields<Model>,\n update = false,\n ): DataType => {\n const data: Partial<ModelBaseStructure> = instance.toPlain?.() || instance\n\n return Object.keys(data).reduce((result, attributeName) => {\n const {\n columnName,\n fields: attributeFields,\n foreignKeyColumn,\n to,\n bindPersistData,\n } = AttributeOptionHelper.FindByAttribute(attributeName as NonFunctionAndIdentifierPropertyNames<Model>, fields)\n\n if (bindPersistData) return { ...result, ...bindPersistData(data[attributeName], instance) }\n if (isNil(columnName)) return result\n if (\n !!foreignKeyColumn &&\n !isEmpty(foreignKeyColumn) &&\n !Object.keys(foreignKeyColumn).filter((key) => !data[attributeName]?.[key]).length\n )\n return Object.keys(foreignKeyColumn).reduce(\n (object, current) => {\n const { columnName: foreignColumnName } = AttributeOptionHelper.FindByAttribute(\n foreignKeyColumn[current],\n fields,\n )\n\n return { ...object, [foreignColumnName]: data[attributeName]?.[current] }\n },\n { ...result },\n )\n\n if (update && isObject(data[attributeName]) && !isNil(attributeFields) && !isDate(data[attributeName]))\n return result\n\n if (!!columnName && Array.isArray(attributeFields) && isObject(data[attributeName])) {\n const converted = !isNil(columnName) && to ? to(instance[attributeName], instance) : data[attributeName]\n\n return {\n ...result,\n ...(converted !== undefined\n ? {\n [columnName]: {\n data:\n instance[attributeName] instanceof BaseModel\n ? GraphQLFieldHelper.ConvertFieldValueTo(\n data[attributeName],\n attributeFields as HasuraGraphQLFields<BaseModel<any>>,\n )\n : converted,\n },\n }\n : {}),\n }\n }\n\n if (!!to) return { ...result, [columnName]: to(instance[attributeName], instance) }\n\n return { ...result, [columnName]: data[attributeName] }\n }, {} as DataType)\n }\n\n private static ConvertNestedFieldsToGraphQLFields = <\n T extends ModelBaseStructure<T>,\n P extends ModelBaseStructure<P>,\n >(\n fieldName: string,\n fieldValue: ColumnOptions<T, P>,\n ) => {\n const hasCustomFilters = !!fieldValue.filters\n\n if (hasCustomFilters)\n return {\n operation: fieldValue.columnName || fieldName,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),\n variables: {\n [`${fieldValue.columnName}_where`]: {\n name: 'where',\n type: fieldValue.filters.filterType,\n value: BindFilterQueryHelper.MakeGraphQLWhere(fieldValue.filters.filters, fieldValue.fields),\n required: true,\n },\n },\n }\n\n return {\n [fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),\n }\n }\n}\n","import { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { DebugHelper, MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type CreateConstructorParams = {\n insertGraphQLOperation?: string\n insertAllGraphQLOperation?: string\n insertGraphQLObjectType?: string\n}\n\nexport const withCreateHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & InstanceType<TMixinBase> & CreateRepository<MBase>,\n MergeConstructorParams<CreateConstructorParams, ConstructorParameters<TMixinBase>>\n> => {\n return class CreateHasuraGraphQLMixin extends MixinBase implements CreateRepository<MBase> {\n insertGraphQLOperation: string\n insertAllGraphQLOperation: string\n insertGraphQLObjectType: string\n\n constructor(...params) {\n const options: CreateConstructorParams = params?.[0]\n\n super(...params)\n\n this.insertGraphQLOperation = options?.insertGraphQLOperation || `insert_${this.tableName}_one`\n this.insertAllGraphQLOperation = options?.insertAllGraphQLOperation || `insert_${this.tableName}`\n this.insertGraphQLObjectType = options?.insertGraphQLObjectType || `${this.tableName}_insert_input`\n }\n\n async create(data: CreateRepositoryParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'create')\n\n const newData = await this.save(this.model.toInstance(data))\n\n return this.model.toInstance(newData)\n }\n\n async createAll(data: Partial<MBase>[]): Promise<[MBase]> {\n this.logger = DebugHelper.from(this, 'createAll')\n\n const result = await this.mutation<MBase>(\n this.insertAllGraphQLOperation,\n [{ returning: this.model.identifiersFields }],\n {\n objects: {\n type: this.insertGraphQLObjectType,\n required: true,\n list: true,\n value: data.map((item: MBase) => this.convertDataToHasura(item)),\n },\n },\n )\n\n return result[this.insertAllGraphQLOperation].returning.map((item, index) =>\n this.model.toInstance({\n ...data[index],\n ...item,\n }),\n )\n }\n\n async save(data: MBase): Promise<Partial<MBase>> {\n const primaryKeyColumns = this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>\n const foreignKeyColumns = this.fields\n .map((field) => {\n const columnOptions = Object.values(field).shift()\n\n return (\n AttributeOptionHelper.CheckIsColumnOption(columnOptions) &&\n columnOptions.foreignKeyColumn && [\n ...Object.values(columnOptions.foreignKeyColumn).map(\n (foreignKeyName) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyName as any, this.fields)?.columnName,\n ),\n {\n [columnOptions.columnName]: Object.keys(columnOptions.foreignKeyColumn).map(\n (foreignKeyField) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyField as any, columnOptions?.fields as any)\n ?.columnName || foreignKeyField,\n ),\n },\n ]\n )\n })\n .filter(Boolean)\n .reduce((keys, current) => [...keys, ...current], [])\n\n const result = await this.mutation<MBase>(\n this.insertGraphQLOperation,\n [...primaryKeyColumns, ...foreignKeyColumns] as HasuraGraphQLFields<MBase>,\n {\n object: { type: this.insertGraphQLObjectType, required: true, value: this.convertDataToHasura(data) },\n },\n )\n\n return { ...data.toPlain(), ...this.convertDataFromHasura(result[this.insertGraphQLOperation]).toPlain() }\n }\n } as any\n}\n","import {\n DeleteRepository,\n DeleteRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../domain'\nimport { DebugHelper, MergeConstructorParams, MixinCtor, isNil } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type DeleteConstructorParams = {\n deleteGraphQLOperation?: string\n}\n\nexport const withDeleteHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & DeleteRepository<MBase> & InstanceType<TMixinBase>,\n MergeConstructorParams<DeleteConstructorParams, ConstructorParameters<TMixinBase>>\n> => {\n return class DeleteHasuraGraphQLMixin extends MixinBase implements DeleteRepository<MBase> {\n deleteGraphQLOperation: string\n\n constructor(...params: any[]) {\n const options: DeleteConstructorParams = params?.[0]\n\n super(...params)\n\n this.deleteGraphQLOperation = options?.deleteGraphQLOperation || `delete_${this.tableName}_by_pk`\n }\n\n async delete(identifiers: DeleteRepositoryParams<MBase>): Promise<void> {\n this.logger = DebugHelper.from(this, 'delete')\n\n const instance = this.model.toInstance(identifiers as any)\n\n await this.mutation(\n this.deleteGraphQLOperation,\n this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>,\n this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value = columnOption.to(identifiers[identifier.toString()], instance)\n\n return {\n ...ids,\n [columnOption.columnName]: {\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\n value,\n required: true,\n },\n }\n }, {}),\n )\n }\n } as any\n}\n","import axios from 'axios'\nimport { mutation, query } from 'gql-query-builder'\nimport { BaseModelBuilder, ModelBaseStructure } from '../../../domain'\nimport {\n DebugHelper,\n isBoolean,\n isInteger,\n isNaN,\n isNil,\n isNumber,\n isString,\n isUUID,\n MergeConstructorParams,\n MixinCtor,\n parseISO,\n} from '../../../utils'\nimport {\n GraphQLParams,\n GraphQLRepository,\n HasuraGraphQLAuthOptions,\n HasuraGraphQLFields,\n HasuraGraphQLHeaders,\n VariableOptions,\n} from '../types'\nimport { GraphQLFieldHelper } from './helpers'\n\nexport type ConstructorParams<Model extends ModelBaseStructure<Model, Model['identifiersFields'][number]>> = {\n tableName: string\n model: BaseModelBuilder<Model>\n fields: HasuraGraphQLFields<Model>\n endpoint: string\n authOptions: HasuraGraphQLAuthOptions\n}\n\nexport const withHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n T extends MixinCtor = MixinCtor,\n>(\n MixinBase: T,\n): MixinCtor<GraphQLRepository<MBase>, MergeConstructorParams<ConstructorParams<MBase>, ConstructorParameters<T>>> => {\n return class HasuraGraphQLMixin extends MixinBase implements GraphQLRepository<MBase> {\n tableName: string\n endpoint: string\n authOptions: HasuraGraphQLAuthOptions\n model: BaseModelBuilder<MBase>\n fields: HasuraGraphQLFields<MBase>\n logger: DebugHelper\n\n get headers(): HasuraGraphQLHeaders {\n return {\n 'Content-Type': 'application/json',\n ...(isNil(this.authOptions.authToken) ? {} : { Authorization: this.authOptions.authToken }),\n ...(isNil(this.authOptions.adminSecret) ? {} : { 'X-Hasura-Admin-Secret': this.authOptions.adminSecret }),\n ...(isNil(this.authOptions.authRole)\n ? {}\n : { 'X-Hasura-Role': this.authOptions.authRole.role, 'X-Hasura-User-Id': this.authOptions.authRole.userId }),\n }\n }\n\n constructor(...params) {\n const options: ConstructorParams<MBase> = params[0]\n\n super(...params)\n\n this.tableName = options.tableName\n this.endpoint = options.endpoint\n this.authOptions = options.authOptions\n this.model = options.model\n this.fields = options.fields || (this.model.identifiersFields as HasuraGraphQLFields<MBase>)\n this.logger = DebugHelper.from(this)\n }\n\n async mutation<ReturnFields = any>(\n operation: string,\n fields?: string[] | HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const resultQuery = mutation({\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields as HasuraGraphQLFields<MBase>),\n })\n\n return this.fetch(resultQuery)\n }\n\n async query<ReturnFields = any>(\n operation: string | GraphQLParams<MBase>[],\n fields?: string[] | HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const resultQuery = GraphQLFieldHelper.CheckIsGraphQLParams(operation)\n ? query(\n operation.map((option) => ({\n operation: option.operation,\n variables: option.variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(option.fields),\n })),\n )\n : query({\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields as HasuraGraphQLFields<MBase>),\n })\n\n return this.fetch(resultQuery)\n }\n\n async fetch<ReturnFields = any>(params: { variables: any; query: string }): Promise<ReturnFields> {\n this.logger.with('params').log(params)\n\n const headers = this.headers\n const { data: result } = await axios({\n url: `${this.endpoint}`,\n method: 'POST',\n data: params,\n headers,\n })\n\n if (!isNil(result.errors)) throw new Error(JSON.stringify(result.errors))\n\n this.logger.with('returns').log(result)\n\n return result.data\n }\n\n getAttributeGraphQLTypeOf<FieldType>(value: FieldType): string {\n if (isUUID(value as any)) return 'uuid'\n if (isString(value)) return 'String'\n if (isBoolean(value)) return 'Boolean'\n if (value instanceof Date) return 'timestamptz'\n if (isInteger(value)) return 'Int'\n if (isNumber(value)) return 'numeric'\n\n throw new Error('Type not implemented yet')\n }\n\n checkIfIsDateTimeAndParse(value: string): Date | string {\n if (!/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value)) return value\n\n const date = parseISO(value)\n\n if (isNaN(date.getTime())) return value\n\n return date\n }\n\n convertDataFromHasura(\n data: Record<string, string | number>,\n fields?: string[] | HasuraGraphQLFields<MBase>,\n ): MBase {\n const plain = GraphQLFieldHelper.ConvertFieldValueFrom(\n data,\n (fields as HasuraGraphQLFields<MBase>) || this.fields,\n )\n\n return this.model.toInstance(plain)\n }\n\n convertDataToHasura(instance: MBase, update = false): Record<string, string | number> {\n return GraphQLFieldHelper.ConvertFieldValueTo(instance, this.fields, update)\n }\n }\n}\n","import {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../domain'\nimport { DebugHelper, MergeConstructorParams, MixinCtor, isNil } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type UpdateHasuraGraphQLRepositoryType<\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport type UpdateConstructorParams = {\n updateGraphQLOperation?: string\n updateGraphQLObjectType?: string\n updateGraphQLPKType?: string\n}\n\nexport const withUpdateHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & UpdateHasuraGraphQLRepositoryType<MBase> & InstanceType<TMixinBase>,\n MergeConstructorParams<UpdateConstructorParams, ConstructorParameters<TMixinBase>>\n> => {\n const getValueByAction = (options: UpdateOptions<MBase>): unknown => {\n if (options instanceof BaseModel) return options.toPlain()\n if (isNil(options?.action)) return options\n if ([UpdateOptionActions.REMOVE_FIELD.toString(), UpdateOptionActions.NULL.toString()].includes(options.action))\n return null\n\n return options.value\n }\n\n return class UpdateHasuraGraphQLMixin extends MixinBase implements UpdateRepository<MBase> {\n updateGraphQLOperation: string\n updateGraphQLObjectType: string\n updateGraphQLPKType: string\n\n constructor(...params) {\n const options: UpdateConstructorParams = params?.[0]\n\n super(...params)\n\n this.updateGraphQLOperation = options?.updateGraphQLOperation || `update_${this.tableName}_by_pk`\n this.updateGraphQLObjectType = options?.updateGraphQLObjectType || `${this.tableName}_set_input`\n this.updateGraphQLPKType = options?.updateGraphQLPKType || `${this.tableName}_pk_columns_input`\n }\n\n async update(data: RepositoryUpdateParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'update')\n\n const plainData = this.paramsToPlain(data)\n\n await this.mutation(\n this.updateGraphQLOperation,\n this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>,\n {\n _set: {\n type: this.updateGraphQLObjectType,\n value: this.convertDataToHasura(this.model.toInstance(plainData), true),\n required: true,\n },\n pk_columns: { type: this.updateGraphQLPKType, value: this.getUpdateModelKeys(plainData), required: true },\n },\n )\n\n return this.model.toInstance(plainData)\n }\n\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase> {\n const model = this.model\n\n if (model.isModel(params)) return params.toPlain()\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({\n ...data,\n ...(params[currentKey] !== undefined && { [currentKey]: getValueByAction(params[currentKey]) }),\n }),\n {},\n )\n }\n\n getUpdateModelKeys(data: Partial<MBase>): NonFunctionAndIdentifierProperties<MBase> {\n const instance = this.model.toInstance(data)\n\n return this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute<MBase, NonFunctionAndIdentifierPropertyNames<MBase>>(\n identifierBinded,\n this.fields,\n )\n const value = columnOption?.to?.(data[identifierBinded], instance) || data[columnOption.attributeName]\n\n return {\n ...ids,\n [columnOption.columnName]: value,\n }\n }, {} as NonFunctionAndIdentifierProperties<MBase>)\n }\n } as any\n}\n","import {\n GetRepository,\n GetRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { DebugHelper, MixinCtor, isNil } from '../../../utils'\nimport { GraphQLRepository } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type GetConstructorParams = {\n getGraphQLOperation?: string\n}\n\nexport const withGetHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n) => {\n return class GetHasuraGraphQLMixin extends MixinBase implements GetRepository<MBase> {\n getGraphQLOperation: string\n\n constructor(...params) {\n const options: GetConstructorParams = params?.[0]\n\n super(...params)\n\n this.getGraphQLOperation = options?.getGraphQLOperation || `${this.tableName}_by_pk`\n }\n\n async get(identifiers: GetRepositoryParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'get')\n\n const instance = this.model.toInstance(identifiers)\n const result = await this.query(\n this.getGraphQLOperation,\n this.fields,\n this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value =\n columnOption?.to?.(identifiers[identifier.toString()], instance) || identifiers[identifier.toString()]\n\n return {\n ...ids,\n [columnOption.columnName]: {\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\n value,\n required: true,\n },\n }\n }, {}),\n )\n const data = result[this.getGraphQLOperation]\n\n if (isNil(data)) throw new NotFoundError(`${instance.constructor.name} not found`)\n\n return this.convertDataFromHasura(result[this.getGraphQLOperation])\n }\n }\n}\n","import {\n FindRepository,\n FindRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryFindResult,\n RepositoryOrderBy,\n} from '../../../domain'\nimport { DebugHelper, isNil, MixinCtor, set } from '../../../utils'\nimport { GraphQLParams, GraphQLRepository, HasuraGraphQLFields } from '../types'\nimport { AttributeOptionHelper, BindFilterQueryHelper } from './helpers'\n\nexport const withFindHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n) => {\n return class FindHasuraGraphQLMixin extends MixinBase implements FindRepository<MBase> {\n async find(params?: FindRepositoryParams<MBase>): Promise<RepositoryFindResult<MBase>> {\n this.logger = DebugHelper.from(this, 'find')\n\n const { filters, limits, orderBy, options } = params || {}\n const enableCount = options?.enableCount ?? true\n const variablesFilters = isNil(filters)\n ? {}\n : {\n where: {\n value: BindFilterQueryHelper.MakeGraphQLWhere(filters, this.fields),\n type: `${this.tableName}_bool_exp`,\n required: true,\n },\n }\n const variablesCount = {\n ...(isNil(orderBy)\n ? {}\n : {\n order_by: {\n type: `${this.tableName}_order_by!`,\n list: true,\n value: this.bindOrderByAttributes(orderBy, this.fields),\n },\n }),\n ...variablesFilters,\n }\n const variables = {\n ...(isNil(limits) ? {} : limits),\n ...variablesCount,\n }\n const aggregateFields = [\n ...(enableCount ? ['count'] : []),\n ...this.bindAggretageAttributes(params.options, this.fields),\n ]\n const result = await this.query([\n {\n operation: this.tableName,\n fields: params.fields\n ? params.fields\n .map(\n (fieldName) =>\n this.fields.find((fieldOption) => fieldOption === fieldName) ??\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === fieldName),\n )\n .filter(Boolean)\n : this.fields,\n variables,\n },\n ...(aggregateFields.length > 0\n ? [\n {\n operation: `${this.tableName}_aggregate`,\n fields: [\n {\n aggregate: aggregateFields,\n },\n ],\n variables: variablesCount,\n } as GraphQLParams<MBase>,\n ]\n : []),\n ...((!params.limits?.offset &&\n params.options?.distinct?.map((distinct) => {\n const distinctOption =\n this.fields.find((fieldOption) => fieldOption === distinct) ??\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === distinct)\n const fieldName = Object.values(distinctOption).shift()?.columnName || distinct\n\n return {\n operation: {\n name: `${this.tableName}`,\n alias: `${this.tableName}_${distinct}_distinct`,\n },\n fields: [distinctOption],\n variables: {\n ...variablesFilters,\n [`${this.tableName}_${fieldName}_distinct`]: {\n type: `${this.tableName}_select_column!`,\n list: true,\n value: fieldName,\n name: 'distinct_on',\n },\n },\n } as GraphQLParams<MBase>\n })) ||\n []),\n ])\n const data: MBase[] = result[this.tableName].map((row) => this.convertDataFromHasura(row))\n\n return {\n data,\n count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity,\n ...(options?.minimal?.length\n ? {\n minimal: options.minimal.reduce(\n (minimals, current) => ({\n ...(minimals as any),\n ...set(\n minimals,\n current,\n result[`${this.tableName}_aggregate`].aggregate.min[\n AttributeOptionHelper.FindByAttribute(\n current.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n this.fields,\n )?.columnName || (current as any)\n ],\n ),\n }),\n {},\n ),\n }\n : {}),\n ...(options?.maximum?.length\n ? {\n maximum: options.maximum.reduce(\n (maximums, current) => ({\n ...(maximums as any),\n ...set(\n maximums,\n current,\n result[`${this.tableName}_aggregate`].aggregate.max[\n AttributeOptionHelper.FindByAttribute(\n current.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n this.fields,\n )?.columnName || (current as any)\n ],\n ),\n }),\n {},\n ),\n }\n : {}),\n ...(!params.limits?.offset &&\n options?.distinct?.length && {\n distinct: options?.distinct.reduce((distinct, current) => {\n const distinctOption =\n this.fields.find((fieldOption) => fieldOption === current) ??\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === current)\n const fieldName = Object.values(distinctOption).shift()?.columnName || current\n\n return {\n ...distinct,\n [current.toString()]: result[`${this.tableName}_${current.toString()}_distinct`].map(\n (obj) => obj[fieldName],\n ),\n }\n }, {} as any),\n }),\n }\n }\n\n bindOrderByAttributes = (orderBy: RepositoryOrderBy<MBase>, fields: HasuraGraphQLFields<MBase>) =>\n Object.keys(orderBy).reduce(\n (acc, current) => ({\n ...acc,\n [AttributeOptionHelper.FindByAttribute(current as NonFunctionAndIdentifierPropertyNames<MBase>, fields)\n .columnName]: orderBy[current as NonFunctionAndIdentifierPropertyNames<MBase>],\n }),\n {},\n )\n\n bindAggretageAttributes = (\n aggregates: {\n minimal?: FindRepositoryParams<MBase>['options']['minimal']\n maximum?: FindRepositoryParams<MBase>['options']['maximum']\n },\n fields: HasuraGraphQLFields<MBase>,\n ) => [\n ...(aggregates?.minimal?.length\n ? [\n {\n min: this.bindAttributesToColumns(aggregates?.minimal, fields),\n },\n ]\n : []),\n ...(aggregates?.maximum?.length\n ? [\n {\n max: this.bindAttributesToColumns(aggregates?.maximum, fields),\n },\n ]\n : []),\n ]\n\n bindDistinctAttributes = (\n distinct: FindRepositoryParams<MBase>['options']['distinct'],\n fields: HasuraGraphQLFields<MBase>,\n ) => this.bindAttributesToColumns(distinct, fields)\n\n bindAttributesToColumns = (\n attributes: Array<NonFunctionAndIdentifierPropertyNames<MBase> | {}>,\n fields: HasuraGraphQLFields<MBase>,\n ) =>\n attributes.map(\n (attr) =>\n AttributeOptionHelper.FindByAttribute(\n attr.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n fields,\n )?.columnName || attr,\n )\n }\n}\n","import { CrudRepository, ModelBaseStructure } from '../../../domain'\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository } from '../types'\n\nimport { CreateConstructorParams, withCreateHasuraGraphQL } from './with-create-hasura-graphql.mixin'\nimport { DeleteConstructorParams, withDeleteHasuraGraphQL } from './with-delete-hasura-graphql.mixin'\nimport { withFindHasuraGraphQL } from './with-find-hasura-graphql.mixin'\nimport { GetConstructorParams, withGetHasuraGraphQL } from './with-get-hasura-graphql.mixin'\nimport { ConstructorParams } from './with-hasura-graphql.mixin'\nimport {\n UpdateConstructorParams,\n UpdateHasuraGraphQLRepositoryType,\n withUpdateHasuraGraphQL,\n} from './with-update-hasura-graphql.mixin'\n\nexport const withCrudHasuraGraphQL = <\n TBase extends ModelBaseStructure<TBase, TBase['identifiersFields'][number]>,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<GraphQLRepository<TBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<TBase> & Repository & UpdateHasuraGraphQLRepositoryType<TBase>,\n MergeConstructorParams<\n ConstructorParams<TBase> &\n CreateConstructorParams &\n DeleteConstructorParams &\n GetConstructorParams &\n UpdateConstructorParams,\n ConstructorParameters<TMixinBase>\n >\n> => {\n return class CrudHasuraGraphQLMixin\n extends withUpdateHasuraGraphQL(\n withGetHasuraGraphQL(\n withFindHasuraGraphQL(\n withDeleteHasuraGraphQL(withCreateHasuraGraphQL(MixinBase as MixinCtor<GraphQLRepository<TBase>>)),\n ),\n ),\n )\n implements CrudRepository<TBase> {} as any\n}\n","import { Category } from '../../../domain'\n\nexport class CategoryHasuraGraphQL extends Category {\n firestoreId?: string\n brandCondition?: string\n tagCondition?: string[]\n}\n","import { Type } from 'class-transformer'\nimport { Product } from '../../../domain'\nimport { KitProductHasuraGraphQL } from './kit-product-hasura-graphql'\n\nexport class ProductHasuraGraphQL extends Product {\n firestoreId?: string\n fullPrice?: number\n subscriberDiscountPercentage?: number\n subscriberPrice?: number\n productId?: number\n differentials?: string\n whoMustUse?: string\n howToUse?: string\n brandDescription?: string\n categoryId?: number\n ingredients?: string\n hasStock?: boolean\n intGender?: number\n\n @Type(() => KitProductHasuraGraphQL)\n kitProducts?: KitProductHasuraGraphQL[]\n}\n","import { Type } from 'class-transformer'\n\nimport { KitProduct } from '../../../domain'\n\nimport { ProductHasuraGraphQL } from './product-hasura-graphql'\n\nexport class KitProductHasuraGraphQL extends KitProduct {\n @Type(() => ProductHasuraGraphQL)\n kit: ProductHasuraGraphQL\n\n @Type(() => ProductHasuraGraphQL)\n product: ProductHasuraGraphQL\n}\n","import { Variant } from '../../../domain'\n\nexport class VariantHasuraGraphQL extends Variant {\n firestoreId?: string\n fullPrice?: number\n subscriberDiscountPercentage?: number\n subscriberPrice?: number\n hasStock?: boolean\n\n name? = ''\n hasVariants? = false\n}\n","import { CategoryCollectionChildren } from '../../../../domain'\nimport { CategoryCollectionChildrenRepository } from '../../../../domain/catalog/repositories/category-collection-children.repository'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class CategoryCollectionChildrenHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryCollectionChildren>(Base))\n implements CategoryCollectionChildrenRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'category_collection_children',\n model: CategoryCollectionChildren,\n endpoint,\n authOptions,\n fields: [\n { collectionId: { columnName: 'collection_id' } },\n { categoryId: { columnName: 'category_id' } },\n 'name',\n 'slug',\n 'reference',\n { parentCollectionId: { columnName: 'parent_collection_id' } },\n { parentCategoryId: { columnName: 'parent_category_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { collectionId: 'parentCollectionId', categoryId: 'parentCategoryId' },\n fields: [\n { collectionId: { columnName: 'collection_id' } },\n { categoryId: { columnName: 'category_id' } },\n 'name',\n 'slug',\n 'reference',\n { parentCollectionId: { columnName: 'parent_collection_id' } },\n { parentCategoryId: { columnName: 'parent_category_id' } },\n ],\n },\n },\n ],\n })\n }\n}\n","import { CategoryFilter } from '../../../../domain'\nimport { CategoryFilterRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class CategoryFilterHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryFilter>(Base))\n implements CategoryFilterRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'category_filter',\n model: CategoryFilter,\n endpoint,\n authOptions,\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n { categoryId: { columnName: 'category_id' } },\n {\n filter: {\n columnName: 'filter',\n foreignKeyColumn: { id: 'filterId' },\n fields: [\n 'id',\n 'description',\n 'slug',\n 'enabled',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n options: {\n columnName: 'options',\n foreignKeyColumn: { filterId: 'id' },\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n 'description',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n },\n },\n ],\n },\n },\n {\n category: {\n columnName: 'category',\n foreignKeyColumn: { id: 'categoryId' },\n fields: [\n 'id',\n 'description',\n {\n products: {\n columnName: 'products',\n fields: ['product_id'],\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\n to: (productIds) =>\n productIds.map((productId) => ({\n product_id: +productId,\n })),\n },\n },\n {\n childrenProducts: {\n columnName: 'children_products',\n foreignKeyColumn: { category_id: 'id' },\n fields: [\n 'id',\n 'name',\n 'slug',\n {\n categories: {\n columnName: 'categories',\n fields: ['category_id'],\n bindPersistData: (value) => ({\n categories: { data: value.map((category) => ({ category_id: +category })) },\n }),\n to: (categories) => categories.map((categoryId) => +categoryId),\n from: (categories: { category_id: number }[]) =>\n categories?.map((category) => category?.category_id?.toString()) || [],\n },\n },\n ],\n },\n },\n ],\n },\n },\n ],\n })\n }\n\n deleteByCategory(categoryId: number): Promise<any> {\n return this.mutation('delete_category_filter', ['affected_rows'], {\n where: {\n type: 'category_filter_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n }\n\n deleteByCategoryAndFilter(categoryId: number, filterId: number): Promise<any> {\n return this.mutation('delete_category_filter', ['affected_rows'], {\n where: {\n type: 'category_filter_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId }, filter_id: { _eq: filterId } },\n },\n })\n }\n}\n","import {\n Category,\n CategoryMetadata,\n CategoryRepository,\n CreateRepositoryParams,\n GetRepositoryParams,\n Product,\n Shops,\n UpdateRepositoryParams,\n Where,\n} from '../../../../domain'\nimport { DuplicatedResultsError, NotFoundError } from '../../../../errors'\nimport { Base, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { CategoryHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLAuthOptions } from '../../types'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\nimport { ProductHasuraGraphQLRepository } from './product-hasura-graphql.repository'\n\nexport class CategoryHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryHasuraGraphQL>(Base))\n implements CategoryRepository\n{\n constructor(\n endpoint: string,\n authOptions: HasuraGraphQLAuthOptions,\n private readonly productRepository: ProductHasuraGraphQLRepository,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'category',\n model: Category,\n endpoint,\n authOptions,\n fields: [\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n 'name',\n 'description',\n 'image',\n 'published',\n 'shop',\n { shops: { columnName: 'shops', type: HasuraGraphQLColumnType.Jsonb } },\n 'slug',\n { brandCategory: { columnName: 'brand_category' } },\n { brandCategoryBanner: { columnName: 'brand_banner' } },\n { brandCategoryBannerMobile: { columnName: 'brand_banner_mobile' } },\n { brandLogo: { columnName: 'brand_logo' } },\n { brandCondition: { columnName: 'brand_condition' } },\n {\n conditions: {\n columnName: 'tag_condition',\n type: HasuraGraphQLColumnType.Jsonb,\n from: (tags: unknown, row) => ({ brand: row.brand_condition, tags: Array.isArray(tags) ? tags : [] }),\n bindPersistData: (value) => {\n return {\n brand_condition: value.brand,\n tag_condition: value?.tags || [],\n }\n },\n bindFindFilter: (sentence: any) => {\n return {\n ...(sentence.brand ? { brand_condition: sentence.brand } : {}),\n ...(sentence.tags ? { tag_condition: sentence.tags } : {}),\n }\n },\n },\n },\n {\n filters: {\n columnName: 'filters',\n foreignKeyColumn: { filter_id: 'id' },\n fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],\n bindPersistData: (value) => ({\n filters: { data: value.map((filter) => ({ filter_id: filter.id })) },\n }),\n from: (filters: { filter: { id: number; description: string; slug: string; enabled: boolean } }[]) =>\n filters?.map((filter) => filter?.filter) || [],\n },\n },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n products: {\n columnName: 'products',\n fields: ['product_id'],\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\n to: (productIds) =>\n productIds.map((productId) => ({\n product_id: +productId,\n })),\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value) => ({\n metadata: { data: value },\n }),\n },\n },\n { isCollection: { columnName: 'is_collection' } },\n { isWishlist: { columnName: 'is_wishlist' } },\n 'reference',\n { parentId: { columnName: 'parent_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { id: 'parentId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n ],\n })\n }\n\n async create(params: CreateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { metadata, ...data } = params\n\n return super.create({ ...data, isWishlist: false, metadata: metadata || { description: null, title: null } })\n }\n\n async get(identifiers: GetRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n return Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]\n : super.get(identifiers)\n }\n\n async update(params: UpdateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { products, id: checkId, metadata, filters, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = await this.getId(plainData.id)\n const category = await super.update({ id, ...data, isWishlist: false })\n\n category.products = products && (await this.updateProducts(+id, { products }))\n category.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n category.filters = filters && (await this.updateFilters(+id, { filters }))\n\n return category\n }\n\n async getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n if (!slug) return\n\n const { data } = await this.find({\n filters: {\n slug,\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n isWishlist: { operator: Where.EQUALS, value: false },\n },\n options: {\n enableCount: false,\n },\n })\n\n if (!data.length) throw new NotFoundError(`Category with slug ${slug} not found`)\n if (data.length > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n return data.shift()\n }\n\n async getCategoryByShop(shop: string): Promise<Category[]> {\n if (!shop) return\n\n const { data } = await this.find({\n filters: {\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n isWishlist: { operator: Where.EQUALS, value: false },\n },\n options: {\n enableCount: false,\n },\n })\n\n return data\n }\n\n async getCategoriesForHome(\n categoryIds: string[],\n limit = 4,\n gender?: string,\n ): Promise<{ category: Category; products: Product[] }[]> {\n if (!categoryIds?.length) return []\n\n const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId))\n const categoriesHasura = categoryIds.filter((categoryId) => +categoryId > 0)\n const categories = []\n\n if (categoriesFirestore.length)\n categories.push(\n ...(await this.find({\n filters: { firestoreId: { operator: Where.IN, value: categoriesFirestore.filter(Boolean) }, published: true },\n }).then(({ data }) => data)),\n )\n if (categoriesHasura.length)\n categories.push(\n ...(await this.find({\n filters: { id: { operator: Where.IN, value: categoriesHasura.filter(Boolean) }, published: true },\n }).then(({ data }) => data)),\n )\n\n if (!categories.length) return []\n\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true, gender }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(\n category: Category,\n options?: { limit?: number; hasStock?: boolean; gender?: string },\n ): Promise<Product[]> {\n if (!category?.products?.length) return []\n\n const products = []\n const { data: productsData } = await this.productRepository.find({\n filters: {\n id: { operator: Where.IN, value: category.products },\n published: true,\n ...(options?.hasStock ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {}),\n ...(options?.gender ? { tags: { operator: Where.IN, value: [options?.gender] } } : {}),\n },\n fields: [\n 'id',\n 'name',\n 'slug',\n 'images',\n 'miniatures',\n 'price',\n 'fullPrice',\n 'subscriberDiscountPercentage',\n 'subscriberPrice',\n 'stock',\n 'published',\n 'CEST',\n 'EAN',\n 'NCM',\n 'brand',\n 'costPrice',\n 'hasVariants',\n 'isKit',\n 'sku',\n 'rate',\n 'tags',\n 'type',\n 'shoppingCount',\n 'gender',\n 'createdAt',\n ],\n ...(options?.limit ? { limits: { limit: options?.limit } } : {}),\n options: { enableCount: false },\n })\n\n products.push(...productsData)\n\n return products\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Category with id ${id} not found`)\n }\n\n private async updateProducts(\n categoryId: number,\n { products }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'products'>,\n ): Promise<CategoryHasuraGraphQL['products']> {\n if ('action' in products && products.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n return []\n }\n\n const plainData = this.paramsToPlain({ products })\n\n if (!plainData.products || plainData.products.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.products.map((productId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.products\n }\n\n private async updateMetadata(\n categoryId: number,\n { metadata }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'metadata'>,\n ): Promise<CategoryMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return\n\n await this.mutation('update_category_metadata_by_pk', ['category_id'], {\n pk_columns: {\n value: { category_id: categoryId },\n type: 'category_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['category_id']),\n type: 'category_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n private async updateFilters(\n categoryId: number,\n { filters }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'filters'>,\n ) {\n if ('action' in filters && filters.action === 'remove' && filters.value.length) {\n for (let i = 0; i < filters.value.length; i++) {\n await this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filters.value[i].id)\n }\n\n return []\n }\n\n if ('action' in filters && filters.action === 'merge' && filters.value.length) {\n let filtersList = []\n\n const currentFilters = await this.categoryFilterRepository\n .find({\n filters: {\n categoryId,\n },\n })\n .then((res) => res.data)\n\n const currentFiltersId = currentFilters.map((f) => f.id)\n const filtersUpdatedId = filters.value.map((f) => f.id)\n\n const filterToBeDeleted = currentFiltersId.filter((c) => !filtersUpdatedId.includes(c))\n const filterToBeInserted = filtersUpdatedId.filter((c) => !currentFiltersId.includes(c))\n\n for (const filter of filterToBeDeleted) {\n const index = currentFilters.findIndex((f) => f.id == filter)\n if (index != -1) {\n currentFilters.splice(index, 1)\n }\n await this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filter)\n }\n\n for (const filter of filterToBeInserted) {\n const newCategoryFilter = await this.categoryFilterRepository.create({\n filterId: filter,\n categoryId,\n })\n\n filtersList.push(newCategoryFilter)\n }\n\n return [...currentFilters, ...filtersList]\n }\n\n if (Array.isArray(filters) && filters.length) {\n await this.categoryFilterRepository.deleteByCategory(categoryId)\n let filtersList = []\n\n for (let i = 0; i < filters.length; i++) {\n const newCategoryFilter = await this.categoryFilterRepository.create({\n filterId: filters[i].id,\n categoryId,\n })\n filtersList.push(newCategoryFilter)\n }\n\n return filtersList\n }\n }\n\n public async getChildren(parentId: number): Promise<Category[]> {\n const { category_tree } = await this.query('category_tree', ['id', 'name', 'parent_id'], {\n args: {\n type: 'category_tree_args',\n value: { parentid: parentId },\n required: true,\n },\n })\n\n return category_tree.map((category: Record<string, any>) => Category.toInstance(category))\n }\n\n public async isChild(id: number, parentId: number): Promise<boolean> {\n const categoryTree = await this.getChildren(parentId)\n\n return categoryTree.some((c) => c.id == id.toString())\n }\n}\n","import { Filter, UpdateRepositoryParams } from '../../../../domain'\nimport { FilterRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\nimport { FilterOptionHasuraGraphQLRepository } from './filter-option-hasura-graphql.repository'\n\nexport class FilterHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<Filter>(Base))\n implements FilterRepository\n{\n constructor(\n endpoint: string,\n authOptions: HasuraGraphQLAuthOptions,\n private readonly filterOptionRepository: FilterOptionHasuraGraphQLRepository,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'filter',\n model: Filter,\n endpoint,\n authOptions,\n fields: [\n 'id',\n 'description',\n 'slug',\n 'enabled',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n options: {\n columnName: 'options',\n foreignKeyColumn: { filterId: 'id' },\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n 'description',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n },\n },\n ],\n })\n }\n\n async update(params: UpdateRepositoryParams<Filter>): Promise<Filter> {\n const { options, ...data } = params\n\n const filter = await super.update(data)\n\n filter.options = await this.updateOptions(+data.id, { options })\n\n return filter\n }\n\n async updateOptions(filterId: number, { options }: Pick<UpdateRepositoryParams<Filter>, 'options'>) {\n if (!options) return []\n\n if ('action' in options && options.action === 'remove' && options.value.length) {\n for (let i = 0; i < options.value.length; i++) {\n await this.filterOptionRepository.delete({ id: options.value[i].id })\n }\n\n return []\n }\n\n if ('action' in options && options.action === 'merge' && options.value.length) {\n let filterOptions = []\n\n for (let i = 0; i < options.value.length; i++) {\n try {\n const hasFilter = await this.filterOptionRepository.get({ id: options.value[i].id })\n if (hasFilter) filterOptions.push(hasFilter)\n } catch (error) {\n const newOption = await this.filterOptionRepository.create({ ...options.value[i], filterId })\n filterOptions.push(newOption)\n }\n }\n\n return filterOptions\n }\n\n if (Array.isArray(options) && options.length) {\n let filterOptions = []\n\n for (let i = 0; i < options.length; i++) {\n try {\n const hasFilter = await this.filterOptionRepository.get({ id: options[i].id })\n if (hasFilter) filterOptions.push(hasFilter)\n } catch (error) {\n const newOption = await this.filterOptionRepository.create({ ...options[i], filterId })\n filterOptions.push(newOption)\n }\n }\n }\n\n return []\n }\n\n async delete(params: UpdateRepositoryParams<Filter>): Promise<void> {\n const { options, ...data } = params\n\n const categoryFilters = await this.categoryFilterRepository\n .find({\n filters: {\n filterId: +data.id,\n },\n })\n .then((result) => result.data)\n\n if (categoryFilters.length) throw new Error('Erro: o filtro está associado a uma ou mais categoria(s)')\n\n await this.deleteOptions(options)\n\n await super.delete({ id: +data.id })\n\n return\n }\n\n async deleteOptions(options): Promise<void> {\n for (let i = 0; i < options.length; i++) {\n try {\n await this.filterOptionRepository.delete({ id: options[i].id })\n } catch (error) {\n console.log(error)\n }\n }\n }\n}\n","import { FilterOption } from '../../../../domain'\nimport { FilterOptionRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class FilterOptionHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<FilterOption>(Base))\n implements FilterOptionRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'filter_option',\n model: FilterOption,\n endpoint,\n authOptions,\n fields: [\n 'id',\n 'description',\n { filterId: { columnName: 'filter_id' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n })\n }\n}\n","import {\n CreateRepositoryParams,\n FindRepositoryParams,\n GetRepositoryParams,\n NonFunctionPropertyNames,\n ProductGender,\n ProductMetadata,\n ProductRepository,\n ProductReview,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\n RoundProductPricesHelper,\n ShopPrice,\n Shops,\n UpdateRepositoryParams,\n Where,\n} from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { Base, isNil, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { ProductHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLAuthOptions, HasuraGraphQLFields } from '../../types'\n\ntype ProductReviewFields = {\n id?: string\n shop: Shops\n rate: number\n author?: string\n email?: string\n location?: string\n review?: string\n status?: boolean\n title?: string\n personId?: number\n points?: number\n orderId?: string\n createdAt?: Date\n updatedAt?: Date\n}\n\nexport class ProductHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<ProductHasuraGraphQL>(Base))\n implements ProductRepository\n{\n private get reviewsFields(): any {\n return [\n 'id',\n 'shop',\n 'rate',\n 'author',\n 'email',\n 'location',\n 'review',\n 'status',\n 'title',\n { personId: { columnName: 'person_id' } },\n 'points',\n { orderId: { columnName: 'order_id' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ]\n }\n\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'product',\n model: ProductHasuraGraphQL,\n endpoint,\n authOptions,\n fields: [],\n })\n\n const commonFields: HasuraGraphQLFields<ProductHasuraGraphQL> = [\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n { productId: { columnName: 'main_product_id' } },\n { CEST: { columnName: 'cest' } },\n { EAN: { columnName: 'ean' } },\n { NCM: { columnName: 'ncm' } },\n 'brand',\n { costPrice: { columnName: 'cost_price' } },\n {\n description: {\n columnName: 'description',\n from: (description, data) => ({\n description,\n differentials: data.differentials,\n whoMustUse: data.who_must_use,\n howToUse: data.how_to_use,\n brand: data.brand_description,\n ingredients: data.ingredients,\n }),\n bindFindFilter: (filters: any) => {\n return {\n ...(filters?.description && { description: filters.description }),\n ...(filters.differentials && { differentials: filters.differentials }),\n ...(filters.whoMustUse && {\n who_must_use: filters.whoMustUse,\n }),\n ...(filters.howToUse && {\n how_to_use: filters.howToUse,\n }),\n ...(filters.brand && {\n brand_description: filters.brand,\n }),\n ...(filters.ingredients && {\n ingredients: filters.ingredients,\n }),\n }\n },\n bindPersistData: (descriptionData) => ({\n ...(descriptionData?.description && { description: descriptionData.description }),\n ...(descriptionData.differentials && { differentials: descriptionData.differentials }),\n ...(descriptionData.whoMustUse && {\n who_must_use: descriptionData.whoMustUse,\n }),\n ...(descriptionData.howToUse && { how_to_use: descriptionData.howToUse }),\n ...(descriptionData.brand && { brand_description: descriptionData.brand }),\n ...(descriptionData.ingredients && { ingredients: descriptionData.ingredients }),\n }),\n },\n },\n { differentials: { columnName: 'differentials' } },\n { whoMustUse: { columnName: 'who_must_use' } },\n { howToUse: { columnName: 'how_to_use' } },\n { brandDescription: { columnName: 'brand_description' } },\n { ingredients: { columnName: 'ingredients' } },\n { hasVariants: { columnName: 'has_variants' } },\n {\n images: {\n columnName: 'images',\n to: (value) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\n },\n },\n {\n miniatures: {\n columnName: 'miniatures',\n to: (value) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\n },\n },\n 'name',\n {\n price: {\n columnName: 'price',\n from: (price, data): ShopPrice => ({\n price,\n fullPrice: data.full_price,\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\n subscriberPrice: data.subscriber_price,\n }),\n bindFindFilter: (filters: any) => {\n return {\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\n }),\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\n subscriber_price: filters.subscriberPrice,\n }),\n }\n },\n bindPersistData: (priceData) => ({\n ...(priceData?.price >= 0 && { price: priceData.price }),\n ...(priceData.fullPrice >= 0 && { full_price: priceData.fullPrice }),\n ...(priceData.subscriberDiscountPercentage >= 0 && {\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\n }),\n ...(priceData.subscriberPrice >= 0 && { subscriber_price: priceData.subscriberPrice }),\n }),\n },\n },\n { fullPrice: { columnName: 'full_price' } },\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\n { subscriberPrice: { columnName: 'subscriber_price' } },\n 'published',\n 'sku',\n {\n stock: {\n columnName: 'stock',\n from: (quantity: number) => ({ quantity }),\n to: (value) => (isNil(value?.quantity) ? value : value?.quantity),\n },\n },\n { hasStock: { columnName: 'has_stock' } },\n 'slug',\n 'type',\n 'video',\n 'weight',\n 'gender',\n { intGender: { columnName: 'int_gender' } },\n { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },\n { filters: { columnName: 'filters', type: HasuraGraphQLColumnType.Jsonb } },\n { isKit: { columnName: 'is_kit' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n { rate: { columnName: 'rating' } },\n { reviewsTotal: { columnName: 'reviews_total' } },\n { shoppingCount: { columnName: 'shopping_count' } },\n { categoryId: { columnName: 'category_id' } },\n {\n category: {\n columnName: 'category',\n foreignKeyColumn: { id: 'categoryId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n ]\n\n this.fields = [\n ...commonFields,\n {\n categories: {\n columnName: 'categories',\n fields: ['category_id'],\n bindPersistData: (value) => ({\n categories: { data: value.map((category) => ({ category_id: +category })) },\n }),\n to: (categories) => categories.map((categoryId) => +categoryId),\n from: (categories: { category_id: number }[]) =>\n categories?.map((category) => category?.category_id?.toString()) || [],\n },\n },\n {\n kitProducts: {\n columnName: 'kit_products',\n foreignKeyColumn: { productId: 'id' },\n fields: [\n { productId: { columnName: 'product_id' } },\n { kitProductId: { columnName: 'kit_product_id' } },\n 'quantity',\n { product: { columnName: 'product', foreignKeyColumn: { id: 'product_id' }, fields: commonFields } },\n ],\n },\n },\n {\n reviews: {\n columnName: 'reviews',\n foreignKeyColumn: { product_id: 'id' },\n fields: this.reviewsFields,\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value) => ({\n metadata: { data: value },\n }),\n },\n },\n ]\n }\n\n async create(params: CreateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const { metadata, ...data } = params\n const product = await super.create(\n omit({ ...data, metadata: metadata || { description: null, title: null } }, ['reviews']),\n )\n\n try {\n product.reviews = data.reviews && (await this.updateReviews(+product.id, data))\n } catch (error) {\n await this.delete({ id: product.id })\n\n throw error\n }\n\n return product\n }\n\n async get(identifiers: GetRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const product = Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]\n : await super.get(identifiers)\n\n if (product.productId) throw new NotFoundError('Product not found, it is a variant')\n\n product.reviews = product.reviews || (await this.findReviewsByProduct(+product.id))\n\n return product\n }\n\n async find(params?: FindRepositoryParams<ProductHasuraGraphQL>): Promise<RepositoryFindResult<ProductHasuraGraphQL>> {\n const { filters, fields, ...options } = params || {}\n const bindFields =\n fields ||\n (this.fields\n .map((field) => (typeof field === 'string' ? field : Object.keys(field).shift()))\n .filter((field) => field !== 'reviews') as NonFunctionPropertyNames<\n ProductHasuraGraphQL,\n keyof ProductHasuraGraphQL\n >[])\n\n if (options.options?.minimal?.includes('price'))\n options.options?.minimal.push('price.price', 'price.fullPrice', 'price.subscriberPrice')\n if (options.options?.maximum?.includes('price'))\n options.options?.maximum.push('price.price', 'price.fullPrice', 'price.subscriberPrice')\n\n options.options?.minimal?.splice(options.options?.minimal.indexOf('price'), 1)\n options.options?.maximum?.splice(options.options?.maximum.indexOf('price'), 1)\n\n return super.find({\n ...options,\n filters: { ...filters, productId: { operator: Where.ISNULL } },\n fields: [\n ...bindFields,\n ...(bindFields.includes('price')\n ? ([\n 'subscriberPrice',\n 'subscriberDiscountPercentage',\n 'fullPrice',\n ] as NonFunctionPropertyNames<ProductHasuraGraphQL>[])\n : []),\n ],\n })\n }\n\n async getBySlug(slug: string): Promise<ProductHasuraGraphQL> {\n const result = await this.find({\n filters: {\n slug,\n },\n fields: this.fields.map((field) =>\n typeof field === 'string' ? field : Object.keys(field).shift(),\n ) as NonFunctionPropertyNames<ProductHasuraGraphQL, keyof ProductHasuraGraphQL>[],\n options: {\n enableCount: false,\n },\n })\n\n const product = result?.data?.shift()\n\n RoundProductPricesHelper.roundProductPrices(product)\n\n return product\n }\n\n async update(params: UpdateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const { categories, kitProducts, reviews, id: checkId, rate, metadata, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = await this.getId(plainData.id)\n const product = await super.update({ id, ...data })\n\n product.categories = categories && (await this.updateCategories(+id, { categories }))\n product.kitProducts = kitProducts && (await this.updateKitProducts(+id, { kitProducts }))\n product.reviews = reviews && (await this.updateReviews(+id, { reviews }))\n product.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n\n return product\n }\n\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\n const reviewsExpression = {\n status:\n status === 'pending'\n ? { [HasuraGraphQLWhere.ISNULL]: true }\n : { [HasuraGraphQLWhere.EQUALS]: status === 'approved' },\n }\n const { product: data } = await this.query(\n 'product',\n ['id', 'name', 'sku', { reviews: { columnName: 'reviews', fields: this.reviewsFields } }],\n {\n where: { value: { reviews: reviewsExpression }, type: 'product_bool_exp', required: true },\n },\n )\n\n return data.reduce(\n (reviews, product) => [\n ...reviews,\n ...product.reviews\n .filter(\n (review) =>\n (status === 'pending' && [undefined, null].includes(review.status)) ||\n (status === 'approved' && review.status === true) ||\n (status === 'rejected' && review.status === false),\n )\n .map((review) => ({\n ...this.bindReviewToModel(review),\n productId: product.id,\n productName: product.name,\n productSku: product.sku,\n })),\n ],\n [] as ReviewWithProductData[],\n )\n }\n\n async findCatalog(\n params: FindRepositoryParams<ProductHasuraGraphQL>,\n mainGender?: Extract<ProductGender, 'female' | 'male'>,\n ): Promise<RepositoryFindResult<ProductHasuraGraphQL>> {\n return this.find({\n ...params,\n filters: { ...params.filters, published: true },\n orderBy: {\n hasStock: 'desc',\n ...(!mainGender ? {} : { intGender: mainGender === 'female' ? 'desc' : 'asc' }),\n ...omit(params.orderBy, ['hasStock', 'intGender']),\n },\n })\n }\n\n private async updateCategories(\n productId: number,\n { categories }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'categories'>,\n ): Promise<ProductHasuraGraphQL['categories']> {\n if ('action' in categories && categories.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { product_id: { _eq: productId } },\n },\n })\n\n return []\n }\n\n const plainData = this.paramsToPlain({ categories })\n\n if (!plainData.categories || plainData.categories.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { product_id: { _eq: productId } },\n },\n })\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.categories.map((categoryId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.categories\n }\n\n private async updateKitProducts(\n productId: number,\n { kitProducts }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'kitProducts'>,\n ): Promise<ProductHasuraGraphQL['kitProducts']> {\n const plainData = this.paramsToPlain({ kitProducts })\n\n await this.mutation('delete_product_kit', ['affected_rows'], {\n where: {\n type: 'product_kit_bool_exp',\n required: true,\n value: { kit_product_id: { _eq: productId } },\n },\n })\n\n await this.mutation('insert_product_kit', ['affected_rows'], {\n objects: {\n type: '[product_kit_insert_input!]',\n required: true,\n value: plainData.kitProducts.map((kitProduct) => ({\n kit_product_id: productId,\n product_id: kitProduct.productId || kitProduct.product.id,\n quantity: kitProduct.quantity,\n })),\n },\n })\n\n return plainData.kitProducts\n }\n\n private async updateReviews(\n productId: number,\n { reviews }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'reviews'>,\n ): Promise<ProductReview[]> {\n if (!reviews) return []\n if ('action' in reviews && reviews.action === 'remove') {\n const reviewIds = await Promise.all(\n reviews.value.map(async (reviewData) => {\n const review = await this.findReview(reviewData, productId)\n\n return review?.id\n }),\n )\n\n await this.mutation('delete_product_review', ['affected_rows'], {\n where: { value: { id: { _in: reviewIds.filter(Boolean) } }, type: 'product_review_bool_exp', required: true },\n })\n\n return reviews.value.map((review, index) => !reviewIds[index] && review).filter(Boolean)\n }\n\n const plainData = this.paramsToPlain({ reviews })\n\n if (!plainData.reviews || plainData.reviews.length <= 0) return []\n\n return Promise.all(\n plainData.reviews.map(async (reviewData) => {\n const review = await this.findReview(reviewData, productId)\n\n if (review.id)\n return this.bindReviewToModel(\n (\n await this.mutation('update_product_review_by_pk', this.reviewsFields, {\n pk_columns: {\n value: { id: review.id },\n type: 'product_review_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(this.bindReviewToHasura(reviewData), ['id', 'product_id']),\n type: 'product_review_set_input',\n required: true,\n },\n })\n ).update_product_review_by_pk,\n )\n\n return this.bindReviewToModel(\n (\n await this.mutation('insert_product_review_one', this.reviewsFields, {\n object: {\n value: omit({ ...this.bindReviewToHasura(reviewData), product_id: productId }, ['id']),\n type: 'product_review_insert_input',\n required: true,\n },\n })\n ).insert_product_review_one,\n )\n }),\n )\n }\n\n private async updateMetadata(\n productId: number,\n { metadata }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'metadata'>,\n ): Promise<ProductMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return\n\n await this.mutation('update_product_metadata_by_pk', ['product_id'], {\n pk_columns: {\n value: { product_id: productId },\n type: 'product_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['product_id']),\n type: 'product_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Product with id ${id} not found`)\n }\n\n private async findReviewsByProduct(productId: number): Promise<ProductReview[]> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n },\n type: 'product_review_bool_exp',\n required: true,\n },\n })\n\n return data && data.map((review) => this.bindReviewToModel(review))\n }\n\n private async findReview(review: ProductReview, productId: number): Promise<ProductReview> {\n if (review.id) return review\n\n let loadedReview: ProductReview\n\n if (review.personId) loadedReview = await this.getReviewByPersonId(review.personId, productId, review.orderId)\n if (!loadedReview && review.author && review.email)\n loadedReview = await this.getReviewByAuthorAndEmail(review.author, review.email, productId, review.orderId)\n\n return loadedReview || review\n }\n\n private async getReviewByPersonId(personId: number, productId: number, orderId?: string): Promise<ProductReview> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n person_id: { _eq: personId },\n ...(orderId && { order_id: { _eq: orderId } }),\n },\n type: `product_review_bool_exp`,\n required: true,\n },\n })\n\n return data && data[0] && this.bindReviewToModel(data[0])\n }\n\n private async getReviewByAuthorAndEmail(\n author: string,\n email: string,\n productId: number,\n orderId?: string,\n ): Promise<ProductReview> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n author: { _eq: author },\n email: { _eq: email },\n ...(orderId && { order_id: { _eq: orderId } }),\n },\n type: `product_review_bool_exp`,\n required: true,\n },\n })\n\n return data && data[0] && this.bindReviewToModel(data[0])\n }\n\n private bindReviewToModel = (plain: Record<string, any>): ProductReview => ({\n ...omit(plain, ['product_id', 'created_at', 'updated_at', 'person_id', 'order_id']),\n createdAt: typeof plain.created_at === 'string' ? new Date(plain.created_at) : plain.created_at,\n updatedAt: typeof plain.updated_at === 'string' ? new Date(plain.updated_at) : plain.updated_at,\n personId: plain.person_id,\n orderId: plain.order_id,\n })\n\n private bindReviewToHasura = (review: ProductReview): ProductReviewFields => ({\n ...omit(review, ['productId', 'createdAt', 'updatedAt', 'personId', 'orderId']),\n person_id: review.personId,\n order_id: review.orderId,\n })\n\n async cleanShoppingCountFromIds(ids: string[]): Promise<void> {\n return await this.mutation('update_product', ['affected_rows'], {\n where: {\n value: { id: { _nin: ids } },\n type: 'product_bool_exp',\n required: true,\n },\n _set: {\n value: { shopping_count: 0 },\n type: 'product_set_input',\n },\n })\n }\n}\n","import {\n FindRepositoryParams,\n GetRepositoryParams,\n RepositoryFindResult,\n ShopPrice,\n UpdateRepositoryParams,\n VariantRepository,\n Where,\n} from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { Base, isNil } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { VariantHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLAuthOptions } from '../../types'\n\nexport class VariantHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<VariantHasuraGraphQL>(Base))\n implements VariantRepository\n{\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\n super({\n tableName: 'product',\n model: VariantHasuraGraphQL,\n endpoint,\n authOptions,\n fields: [\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n { productId: { columnName: 'main_product_id', to: (value) => +value, from: (value) => value?.toString() } },\n { EAN: { columnName: 'ean' } },\n { costPrice: { columnName: 'cost_price' } },\n {\n price: {\n columnName: 'price',\n from: (price, data): ShopPrice => ({\n price,\n fullPrice: data.full_price,\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\n subscriberPrice: data.subscriber_price,\n }),\n bindFindFilter: (sentence) => {\n const filters = Object.values(sentence).shift()\n\n return {\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\n }),\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\n subscriber_price: filters.subscriberPrice,\n }),\n }\n },\n bindPersistData: (priceData) => ({\n ...(priceData?.price >= 0 && { price: priceData.price }),\n ...(priceData.fullPrice >= 0 && { full_price: priceData.fullPrice }),\n ...(priceData.subscriberDiscountPercentage >= 0 && {\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\n }),\n ...(priceData.subscriberPrice >= 0 && { subscriber_price: priceData.subscriberPrice }),\n }),\n },\n },\n { fullPrice: { columnName: 'full_price' } },\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\n { subscriberPrice: { columnName: 'subscriber_price' } },\n 'sku',\n {\n stock: {\n columnName: 'stock',\n from: (quantity: number) => ({ quantity }),\n to: (value) => (isNil(value?.quantity) ? value : value?.quantity),\n },\n },\n { hasStock: { columnName: 'has_stock' } },\n 'weight',\n { name: { to: () => '', from: () => undefined } },\n { hasVariants: { columnName: 'has_variants', to: () => false, from: () => undefined } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n grade: {\n columnName: 'grade',\n type: HasuraGraphQLColumnType.Jsonb,\n },\n },\n ],\n })\n }\n\n async get(identifiers: GetRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\n const variant = Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]\n : await super.get(identifiers)\n\n if (!variant.productId) throw new NotFoundError(`Variant not found, it is a product`)\n\n return variant\n }\n\n async find(params?: FindRepositoryParams<VariantHasuraGraphQL>): Promise<RepositoryFindResult<VariantHasuraGraphQL>> {\n const { filters, ...options } = params || {}\n\n return super.find({ ...options, filters: { productId: { operator: Where.ISNOTNULL }, ...filters } })\n }\n\n async update(params: UpdateRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\n const { productId, id: checkId, ...data } = params\n const dataWithProductId = this.paramsToPlain({ id: checkId, productId })\n const id = await this.getId(dataWithProductId.id)\n const product = await super.update({ id, ...data })\n\n product.productId = dataWithProductId.productId\n\n return product\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Product with id ${id} not found`)\n }\n}\n","import {\n Category,\n CategoryMetadata,\n CreateRepositoryParams,\n GetRepositoryParams,\n Product,\n Shops,\n UpdateRepositoryParams,\n Where,\n Wishlist,\n WishlistRepository,\n} from '../../../../domain'\nimport { DuplicatedResultsError, NotFoundError } from '../../../../errors'\nimport { Base, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { CategoryHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLAuthOptions } from '../../types'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\n\nexport class WishlistHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<Wishlist>(Base))\n implements WishlistRepository\n{\n constructor(\n endpoint: string,\n authOptions: HasuraGraphQLAuthOptions,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'category',\n model: Wishlist,\n endpoint,\n authOptions,\n fields: [\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n 'name',\n 'description',\n 'image',\n 'published',\n 'shop',\n { shops: { columnName: 'shops', type: HasuraGraphQLColumnType.Jsonb } },\n 'slug',\n { brandCategory: { columnName: 'brand_category' } },\n { brandCategoryBanner: { columnName: 'brand_banner' } },\n { brandCategoryBannerMobile: { columnName: 'brand_banner_mobile' } },\n { brandLogo: { columnName: 'brand_logo' } },\n { brandCondition: { columnName: 'brand_condition' } },\n {\n conditions: {\n columnName: 'tag_condition',\n type: HasuraGraphQLColumnType.Jsonb,\n from: (tags: unknown, row) => ({ brand: row.brand_condition, tags: Array.isArray(tags) ? tags : [] }),\n bindPersistData: (value) => {\n return {\n brand_condition: value.brand,\n tag_condition: value?.tags || [],\n }\n },\n bindFindFilter: (sentence: any) => {\n return {\n ...(sentence.brand ? { brand_condition: sentence.brand } : {}),\n ...(sentence.tags ? { tag_condition: sentence.tags } : {}),\n }\n },\n },\n },\n {\n filters: {\n columnName: 'filters',\n foreignKeyColumn: { filter_id: 'id' },\n fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],\n bindPersistData: (value) => ({\n filters: { data: value.map((filter) => ({ filter_id: filter.id })) },\n }),\n from: (filters: { filter: { id: number; description: string; slug: string; enabled: boolean } }[]) =>\n filters?.map((filter) => filter?.filter) || [],\n },\n },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n products: {\n columnName: 'products',\n fields: ['product_id'],\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\n to: (productIds) =>\n productIds.map((productId) => ({\n product_id: +productId,\n })),\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value) => ({\n metadata: { data: value },\n }),\n },\n },\n { isCollection: { columnName: 'is_collection' } },\n { isWishlist: { columnName: 'is_wishlist' } },\n 'reference',\n { parentId: { columnName: 'parent_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { id: 'parentId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n { personId: { columnName: 'person_id' } },\n ],\n })\n }\n\n async create(params: CreateRepositoryParams<Wishlist>): Promise<Wishlist> {\n const { metadata, ...data } = params\n\n return super.create({\n ...data,\n isWishlist: true,\n isCollection: true,\n brandCategory: false,\n metadata: metadata || { description: data.description, title: data.name },\n })\n }\n\n async get(identifiers: GetRepositoryParams<Wishlist>): Promise<Wishlist> {\n const data = await super.get(identifiers)\n\n if (!data.isWishlist) throw new NotFoundError(`Category with id ${identifiers.id} is not a wishlist`)\n\n return data\n }\n\n async update(params: UpdateRepositoryParams<Wishlist>): Promise<Wishlist> {\n const { products, id: checkId, metadata, filters, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = plainData.id\n const category = await super.update({ id, ...data, isWishlist: true, isCollection: true, brandCategory: false })\n\n category.products = products && (await this.updateProducts(+id, { products }))\n category.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n\n return category\n }\n\n async getWishlistBySlug(slug: string): Promise<Wishlist> {\n if (!slug) return\n\n const { data } = await this.find({\n filters: {\n slug,\n isWishlist: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n if (!data.length) throw new NotFoundError(`Wishlist with slug ${slug} not found`)\n if (data.length > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n return data.shift()\n }\n\n async getWishlistByPerson(personId: string): Promise<Wishlist[]> {\n if (!personId) return\n\n const { data } = await this.find({\n filters: {\n personId: { operator: Where.EQUALS, value: personId },\n isWishlist: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n if (!data.length) throw new NotFoundError(`Wishlists from person ${personId} not found`)\n\n return data\n }\n\n private async updateProducts(\n categoryId: number,\n { products }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'products'>,\n ): Promise<CategoryHasuraGraphQL['products']> {\n if ('action' in products && products.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n await this.categoryFilterRepository.deleteByCategory(categoryId)\n\n return []\n }\n\n const plainData = this.paramsToPlain({ products })\n\n if (!plainData.products || plainData.products.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n await this.categoryFilterRepository.deleteByCategory(categoryId)\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.products.map((productId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.products\n }\n\n private async updateMetadata(\n categoryId: number,\n { metadata }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'metadata'>,\n ): Promise<CategoryMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return\n\n await this.mutation('update_category_metadata_by_pk', ['category_id'], {\n pk_columns: {\n value: { category_id: categoryId },\n type: 'category_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['category_id']),\n type: 'category_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n getCategoryBySlug(slug: string, _shop: Shops): Promise<Wishlist> {\n return this.getWishlistBySlug(slug)\n }\n\n async getCategoryByShop(shop: string): Promise<any> {\n if (!shop) return\n\n const { data } = await this.find({\n filters: {\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n isWishlist: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n return data\n }\n\n getCategoriesForHome(categoryIds: string[], limit?: number, gender?: string): any {\n return\n }\n\n mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): Promise<Product[]> {\n return\n }\n\n getChildren(parentId: number): Promise<Category[]> {\n return\n }\n\n isChild(id: number, parentId: number): Promise<boolean> {\n return\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["plainToInstance","instanceToPlain","Where","UpdateOptionActions","AccessoryImportances","Area","BeardProblems","BeardSizes","BeautyProductImportances","BodyProblems","BodyShapes","BodyTattoos","FaceSkinOilinesses","FaceSkinProblems","FaceSkinTones","FamilyIncomes","FragranceImportances","HairColors","HairProblems","HairStrands","HairTypes","OfficePosition","ProductSpents","UserType","BillingStatus","EditionStatus","PaymentType","Status","Expose","Type","DebugNamespaces","debug","isNil","isArray","first","last","flatten","compact","get","Subject","isString","parseISO","CheckoutTypes","CouponTypes","CouponSubtypes","Exclusivities","CustomError","SignInMethods","GenderDestination","Shops","OrderStatus","FilterType","QuestionsFilters","Answers.AccessoryImportances","Answers.BeardProblems","Answers.BeardSizes","Answers.BeautyProductImportances","Answers.BodyProblems","Answers.BodyShapes","Answers.BodyTattoos","Answers.FaceSkinOilinesses","Answers.FaceSkinProblems","Answers.FaceSkinTones","Answers.FamilyIncomes","Answers.FragranceImportances","Answers.HairColors","Answers.HairProblems","Answers.HairStrands","Answers.HairTypes","Answers.ProductSpents","axios","each","unset","isObject","isNumber","isDate","set","isEmpty","firebase","chunk","mutation","query","isBoolean","isInteger","isNaN","omit"],"mappings":"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"}