@infrab4a/connect 3.14.3-beta.0 → 3.14.3-beta.2
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.
- package/bundles/infrab4a-connect.umd.js +72 -68
- package/bundles/infrab4a-connect.umd.js.map +1 -1
- package/domain/catalog/models/category.d.ts +2 -0
- package/esm2015/domain/catalog/models/category.js +6 -1
- package/fesm2015/infrab4a-connect.js +50 -46
- package/fesm2015/infrab4a-connect.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infrab4a-connect.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","../../../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/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/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","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 { 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 { 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","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 >= 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 { 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 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 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 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":["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","isNaN"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"infrab4a-connect.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","../../../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/kit-product.ts","../../../projects/connect/src/domain/catalog/models/product.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/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/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/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","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 } 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 { 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, GenericIdentifier } from '../../generic/model'\nimport { Shops } from './enums'\nimport { Filter } from './filter'\nimport { Product } from './product'\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 @Type(() => Product)\n childrenProducts?: Product[]\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 { 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","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 >= 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 { 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 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 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 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":["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","isNaN"],"mappings":"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"}
|