@infrab4a/connect 3.3.1-beta.1 → 3.3.1-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.
@@ -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/domain/location/models/address.ts","../../../projects/connect/src/utils/mixins/base.mixin.ts","../../../projects/connect/src/utils/is-uuid.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/users/models/subscription/subscription.ts","../../../projects/connect/src/domain/users/models/user-address.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/category.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/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/enums/order-status.enum.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/order.ts","../../../projects/connect/src/domain/shopping/models/subscription/checkout.ts","../../../projects/connect/src/domain/shopping/models/buy-2-win.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/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/checkout-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/payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/subscription-plan-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/legacy-order-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/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-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'\n\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionProperties,\n} from './types'\n\nexport type GenericIdentifier<T = 'id'> = T\n\nexport class BaseModel<Model, Identifiers = GenericIdentifier> implements ModelBaseStructure<Model, Identifiers> {\n get identifier(): NonFunctionAndIdentifierProperties<Model> {\n const fields = (this.constructor as BaseModelBuilder<Model>).identifiersFields.filter(\n (field) => field !== 'identifier',\n )\n\n return fields.reduce(\n (object, field) => ({ ...object, [field]: this[field as string] }),\n {} as NonFunctionAndIdentifierProperties<Model>,\n )\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 extends ModelBaseStructure>(this: new () => T, data?: Partial<NonFunctionProperties<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 { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nimport { LocationGeometry } from './types/location-geometry.type'\n\nexport abstract class Address<Identifiers = GenericIdentifier> extends BaseModel<Address, Identifiers> {\n default?: boolean\n recipient?: string\n zip?: string\n street?: string\n number?: string\n extension?: 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(): string[] {\n return ['id']\n }\n}\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\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","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 { Expose } from 'class-transformer'\n\nimport { 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'\n\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 type: CouponTypes\n discount?: number\n user?: string\n userExclusiveEmail?: string\n campaign?: string\n nickname: string\n beginAt: Date\n expiresIn?: Date\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\n @Expose({ name: 'checkout_type' })\n checkoutType: CheckoutTypes\n\n @Expose({ name: 'exclusivity_type' })\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 type: CouponTypes.ABSOLUTE,\n checkoutType: CheckoutTypes.ECOMMERCE,\n discount: 30,\n user: userId,\n useLimit: 1,\n useLimitPerUser: true,\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'\n\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { isNil } from '../../../utils'\nimport { NonFunctionProperties, ModelBaseStructure } from '../../generic/model/types'\n\nimport { Area, OfficePosition, UserType } from './enums'\nimport { BeautyProfile } from './beauty-profile'\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 extends ModelBaseStructure<User>>(\n this: new () => T,\n data?: Partial<NonFunctionProperties<User>>,\n ): T {\n const instance = super.toInstance(data) as User\n\n if (!isNil(data.firstName))\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\n\n return instance as any\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 { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\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'\n\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(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\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 { Address } from '../../location/models/address'\n\nexport type UserAddressIdentifiers = 'id' | 'userId'\n\nexport class UserAddress extends Address<UserAddressIdentifiers> {\n id: string\n userId: string\n\n static get identifiersFields(): UserAddressIdentifiers[] {\n return ['id', 'userId']\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\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, NonFunctionPropertyNames } from '../../generic/model'\nimport { Shops } from './enums'\n\nimport { CategoryCondition, CategoryFilter, 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 filters?: CategoryFilter[]\n createdAt?: Date\n updatedAt?: Date\n shop: Shops\n published: boolean\n metadata: CategoryMetadata\n\n identifierFields(): NonFunctionPropertyNames<Category>[] {\n return ['id']\n }\n\n static get identifiersFields(): GenericIdentifier[] {\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 { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier, NonFunctionPropertyNames } from '../../generic/model'\n\nimport { KitProduct } from './kit-product'\nimport { ProductGender, ProductMetadata, ProductReview, ShopDescription, ShopPrice, Stock } 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 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(() => KitProduct)\n kitProducts?: KitProduct[]\n\n identifierFields(): NonFunctionPropertyNames<Product>[] {\n return ['id']\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../generic/model'\n\nimport { Product } from './product'\n\ntype KitProductIdentifiers = 'productId' | 'kitProducId'\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', 'kitProducId']\n }\n}\n","import { BaseModel, NonFunctionPropertyNames } from '../../generic/model'\n\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 identifierFields(): NonFunctionPropertyNames<Variant>[] {\n return ['id']\n }\n\n static get identifiersFields(): ProductVariantIdentifiers[] {\n return ['id', 'productId']\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 { 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\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../location/models/address'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { User } from '../../users/models/user'\n\nimport { Coupon } from './coupons/coupon'\nimport { LineItem } from './line-item'\nimport { ShippingMethod } from './shipping-method'\nimport { Shops } from '../../catalog/models/enums/shops.enum'\n\nexport class Checkout extends BaseModel<Checkout> {\n id?: string\n paymentId?: string\n status?: string\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(() => Address)\n shippingAddress?: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => ShippingMethod)\n shipping?: ShippingMethod\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Checkout } from './checkout'\nimport { OrderStatus } from './enums/order-status.enum'\nimport { Payment } from './payment'\n\nexport class Order extends Checkout {\n status: OrderStatus\n trackingCode?: string\n trackingUrl?: string\n\n @Type(() => Payment)\n payment: Payment\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { Coupon } from '../coupons/coupon'\nimport { User } from '../../../users/models/user'\n\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(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\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 { Type } from 'class-transformer'\n\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { Shops, Category } from '../../catalog/models'\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 startDate: Date\n updatedAt?: Date\n\n @Type(() => Category)\n categories: Category[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\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 { 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'\n\nimport { BaseModel } from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { ElasticSearchResult } from '../types/elastic-search-result'\n\nexport type AxiosElasticSearchConfig = {\n url: string\n credential: string\n}\n\nexport class AxiosAdapter<T extends BaseModel<T>> {\n constructor(private readonly config: AxiosElasticSearchConfig) {}\n\n async get(index: string): Promise<Partial<T>> {\n try {\n const { data } = await axios({\n url: `${this.config.url}/${index}`,\n method: 'GET',\n headers: { Authorization: `Basic ${this.config.credential}` },\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<Partial<T>>> {\n const { data } = await axios({\n url: `${this.config.url}/${index}`,\n method: 'POST',\n headers: { Authorization: `Basic ${this.config.credential}` },\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}`,\n method: 'PUT',\n headers: { Authorization: `Basic ${this.config.credential}` },\n data,\n })\n }\n\n async delete(index: string): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}`,\n method: 'DELETE',\n headers: { Authorization: `Basic ${this.config.credential}` },\n })\n }\n}\n","import { Product, Shops } from '../../../domain'\nimport { ProductHasuraGraphQL } from '../../hasura-graphql'\nimport { AxiosAdapter } from '../adapters'\n\nexport class ProductsIndex {\n constructor(private readonly adapter: AxiosAdapter<Product>) {}\n\n async get(id): Promise<Product> {\n const data = await this.adapter.get(`products/_doc/${id}`)\n\n return Product.toInstance(data)\n }\n\n async findById(ids: string[], options?: { hasStock: boolean; size: number; shop: Shops }): Promise<Product[]> {\n const fields = [\n 'brand',\n 'id',\n 'images',\n 'miniatures',\n 'name',\n 'price',\n 'sku',\n 'stock',\n 'slug',\n 'reviews',\n 'pricePaid',\n 'isGift',\n 'stock',\n 'weight',\n 'tags',\n 'hasVariants',\n 'type'\n ]\n const { hits } = await this.adapter.query('products/_search', {\n _source: fields,\n query: {\n bool: {\n filter: [\n {\n terms: {\n _id: ids,\n },\n },\n {\n term: {\n published: true,\n },\n },\n ...(options.hasStock\n ? [\n {\n range: {\n 'stock.quantity': {\n gt: 0,\n },\n },\n },\n ]\n : []),\n ],\n },\n },\n ...(options.size ? { size: options.size } : {}),\n })\n\n return hits.map((hit) => Product.toInstance(hit._source))\n }\n\n async save(product: ProductHasuraGraphQL): Promise<void> {\n delete product.createdAt\n delete product.updatedAt\n delete product.kitProducts\n\n try {\n if (!product.firestoreId) throw new Error('Is not a product from firestore')\n\n await this.get(product.firestoreId)\n\n await this.adapter.save(`products/_doc/${product.firestoreId}`, product.toPlain())\n } catch (error) {\n console.error(error.message)\n\n await this.adapter.save(`products/_doc/${product.id}`, product.toPlain())\n }\n }\n\n async delete(product: ProductHasuraGraphQL): Promise<void> {\n try {\n await this.get(product.firestoreId)\n\n await this.adapter.delete(`products/_doc/${product.firestoreId}`)\n } catch (error) {\n await this.adapter.delete(`products/_doc/${product.id}`)\n }\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreRepository } from '../types'\n\nexport const withFirestore = <TBase extends ModelBaseStructure, 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\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 => (data?.toPlain ? data.toPlain() : data),\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 { QuerySnapshot, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { ModelBaseStructure } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\n\nexport const withHelpers = <TMixinBase extends MixinCtor = MixinCtor>(MixinBase: MixinCtor & TMixinBase) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends ModelBaseStructure>(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>(\n repository: FirestoreRepository<T>,\n ): repository is FirestoreSubRepository<T> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { ModelBaseStructure, GetRepository, NonFunctionProperties } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../../utils'\nimport { NotFoundError } from '../../../../errors'\n\nexport const withGetFirestore = <\n TBase extends ModelBaseStructure,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & GetRepository<TBase> & FirestoreHelpers,\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: NonFunctionProperties<TBase>): Promise<TBase> {\n const doc = await this.collection(this.buildCollectionPathForGet(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .get()\n const data = doc.data()\n\n if (isNil(data)) throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`)\n\n return data\n }\n\n buildCollectionPathForGet(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } 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'\n\nimport {\n FindRepository,\n FindRepositoryParams,\n ModelBaseStructure,\n NonFunctionPropertyNames,\n RepositoryFindField,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n Where,\n} from '../../../../domain'\nimport { isDate, isNil, isNumber, isObject, isString, MergeConstructorParams, MixinCtor, set } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withFindFirestore = <\n TBase extends ModelBaseStructure,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & FindRepository<TBase> & FirestoreHelpers,\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\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<TBase>(this)) return this.collectionName\n\n const parentIdField = this.parentIdField\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<TBase>(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'\n\nimport { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isEmpty, MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nexport const withCreateFirestore = <\n TBase extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\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 = data[data.identifiersFields.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'\n\nimport {\n ModelBaseStructure,\n NonFunctionPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MergeConstructorParams, MixinCtor, PropType } from '../../../../utils'\n\nexport type UpdateFirestoreRepositoryType<MBase extends ModelBaseStructure> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport const withUpdateFirestore = <\n TBase extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\n const getValueFromParams = (\n params: RepositoryUpdateParams<TBase>,\n field: NonFunctionPropertyNames<TBase>,\n ): PropType<TBase, NonFunctionPropertyNames<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).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 { IdentifiersModel, ModelBaseStructure, DeleteRepository, DeleteRepositoryParams } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nexport const withDeleteFirestore = <\n TBase extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\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'\n\nimport { IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nexport const withSubCollection = <\n TBase extends ModelBaseStructure,\n TBaseParent extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\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 { ModelBaseStructure, CrudRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nimport { withCreateFirestore } from './with-create-firestore.mixin'\nimport { withDeleteFirestore } from './with-delete-firestore.mixin'\nimport { withFindFirestore } from './with-find-firestore.mixin'\nimport { withGetFirestore } from './with-get-firestore.mixin'\nimport { withUpdateFirestore } from './with-update-firestore.mixin'\n\nexport const withCrudFirestore = <\n TBase extends ModelBaseStructure,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & Repository & FirestoreHelpers,\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\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'\n\nimport { Base } from '../../../../../utils'\nimport { User, UserAddress, UserAddressRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\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(categoryIds: string[], limit = 4): 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 }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): 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?.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","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Product, ProductRepository, ReviewStatusParams, ReviewWithProductData, Where } 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","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 { 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 { 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 { 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 { 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 { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionPlanFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\n implements SubscriptionPlanRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionPlans'\n this.model = SubscriptionPlan\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\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 { 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 { 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 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,\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)) return { columnName: attributeName.toString(), attributeName }\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, ParentModel extends ModelBaseStructure>(\n fieldValue: ColumnOptions<Model, ParentModel>,\n ): fieldValue is ColumnOptions<Model, ParentModel> => !!fieldValue.columnName\n\n static FindColumnOptionFromList = <Model extends ModelBaseStructure, ParentModel extends ModelBaseStructure>(\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>(\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'\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { FilterOptionHelper } from './filter-option.helper'\n\nexport class BindFilterQueryHelper {\n static MakeGraphQLWhere = <MBase extends ModelBaseStructure>(\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>(\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\n if (\n !Array.isArray(options) &&\n isObject(options) &&\n isNil(options?.operator) &&\n isNil(options?.value) &&\n isNil(fieldSentenceOptions?.to)\n )\n return Object.keys(options).reduce((variables, key) => {\n const fieldOptions = AttributeOptionHelper.FindByAttribute<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n fieldSentenceOptions?.fields || (fields as any),\n )\n const columnName = fieldOptions.columnName\n const columnFields = fieldOptions.fields\n\n return {\n ...variables,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n options[key],\n columnFields || ([] as any),\n ),\n }\n }, {})\n\n if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))\n return {\n [fieldSentenceOptions.fields[0] as NonFunctionAndIdentifierPropertyNames<MBase>]:\n BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }\n\n if (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>(\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>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n fieldOption: ColumnOptions<any, any>,\n ): HasuraGraphQLWhere =>\n FilterOptionHelper.CheckIfIsFilterOption(options)\n ? fieldOption.type === HasuraGraphQLColumnType.Jsonb\n ? BindFilterQueryHelper.GetHasuraJsonbOperator(options)\n : HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n : HasuraGraphQLWhere.EQUALS\n\n static GetHasuraJsonbOperator = <MBase extends ModelBaseStructure>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n ): HasuraGraphQLWhere =>\n options.operator === Where.IN\n ? '_contains'\n : options.operator === Where.LIKE\n ? '_has_keys_any'\n : HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n}\n","import {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionProperties,\n} from '../../../../domain'\nimport { isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils'\nimport { Fields, GraphQLParams, HasuraGraphQLFields } from '../../types'\n\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { BindFilterQueryHelper } from './bind-filter-query.helper'\n\nexport class GraphQLFieldHelper {\n static CheckIsGraphQLParams = <Model extends ModelBaseStructure>(\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>(\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 if (fieldValue.fields)\n return !fieldValue.filters\n ? {\n [fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(\n fieldValue.fields,\n ),\n }\n : {\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 fieldValue.columnName\n })\n .filter((field) => !!field)\n }\n\n static ConvertFieldValueFrom = <\n Model extends ModelBaseStructure,\n DataType extends Record<string, string | number | DataType | Date>,\n >(\n data: string | number | DataType | Date,\n fields: HasuraGraphQLFields<Model>,\n ): Partial<NonFunctionProperties<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) => GraphQLFieldHelper.ConvertFieldValueFrom(value, attributeFields)),\n }\n if (isObject(data[columnName]))\n return {\n ...result,\n [attributeName]: !!from\n ? from(data[columnName])\n : GraphQLFieldHelper.ConvertFieldValueFrom(data[columnName], attributeFields),\n }\n }\n\n if (!!from) return { ...result, [attributeName]: from(data[columnName], data) }\n\n return { ...result, [attributeName]: parseDateTime(data[columnName]) }\n }, {})\n\n static ConvertFieldValueTo = <\n Model extends ModelBaseStructure,\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) => ({ ...object, [foreignKeyColumn[current]]: data[attributeName]?.[current] }),\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(data[attributeName], attributeFields)\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","import { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type CreateConstructorParams = {\n insertGraphQLOperation?: string\n insertGraphQLObjectType?: string\n}\n\nexport const withCreateHasuraGraphQL = <\n MBase extends ModelBaseStructure,\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 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.insertGraphQLObjectType = options?.insertGraphQLObjectType || `${this.tableName}_insert_input`\n }\n\n async create(data: CreateRepositoryParams<MBase>): Promise<MBase> {\n const newData = await this.save(this.model.toInstance(data as any))\n\n return this.model.toInstance(newData)\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),\n {\n [columnOptions.columnName]: Object.keys(columnOptions.foreignKeyColumn).map(\n (foreignKeyField) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyField as any, columnOptions?.fields)?.columnName ||\n 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 { DeleteRepository, DeleteRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type DeleteConstructorParams = {\n deleteGraphQLOperation?: string\n}\n\nexport const withDeleteHasuraGraphQL = <\n MBase extends ModelBaseStructure,\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 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 if (isNil(instance[identifier])) 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 { mutation, query } from 'gql-query-builder'\nimport fetch from 'node-fetch'\n\nimport { BaseModelBuilder, ModelBaseStructure } from '../../../domain'\nimport {\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'\n\nimport { GraphQLFieldHelper } from './helpers'\n\nexport type ConstructorParams<Model extends ModelBaseStructure> = {\n tableName: string\n model: BaseModelBuilder<Model>\n fields: HasuraGraphQLFields<Model>\n endpoint: string\n authOptions: HasuraGraphQLAuthOptions\n}\n\nexport const withHasuraGraphQL = <MBase extends ModelBaseStructure, T extends MixinCtor = MixinCtor>(\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\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 }\n\n async mutation<ReturnFields = any>(\n operation: string,\n fields?: HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const resultQuery = mutation({\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields),\n })\n\n return this.fetch(resultQuery)\n }\n\n async query<ReturnFields = any>(\n operation: string | GraphQLParams<MBase>[],\n fields?: 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),\n })\n\n return this.fetch(resultQuery)\n }\n\n async fetch<ReturnFields = any>(params: { variables: any; query: string }): Promise<ReturnFields> {\n const headers = this.headers\n const response = await fetch(`${this.endpoint}`, {\n method: 'POST',\n body: JSON.stringify(params),\n headers,\n })\n const result: any = await response.json()\n\n if (!isNil(result.errors)) throw new Error(JSON.stringify(result.errors))\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(data: Record<string, string | number>): MBase {\n const plain = GraphQLFieldHelper.ConvertFieldValueFrom(data, this.fields)\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 RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../domain'\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type UpdateHasuraGraphQLRepositoryType<MBase extends ModelBaseStructure> = 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,\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 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 if (isNil(instance[identifier])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value = columnOption?.to?.(data[identifier.toString()], 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 { GetRepository, GetRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { isNil, MixinCtor } 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,\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 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 if (isNil(instance[identifier])) 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 { FindRepository, FindRepositoryParams, ModelBaseStructure, RepositoryFindResult } from '../../../domain'\nimport { isNil, MixinCtor } from '../../../utils'\nimport { GraphQLParams, GraphQLRepository } from '../types'\n\nimport { BindFilterQueryHelper } from './helpers'\n\nexport const withFindHasuraGraphQL = <\n MBase extends ModelBaseStructure,\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 const { filters, limits, orderBy, options } = params || {}\n const enableCount = options?.enableCount ?? true\n const variablesCount = {\n ...(isNil(orderBy) ? {} : { order_by: { type: `${this.tableName}_order_by!`, list: true, value: orderBy } }),\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 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 ...(enableCount\n ? []\n : [\n {\n operation: `${this.tableName}_aggregate`,\n fields: [{ aggregate: ['count'] }],\n variables: variablesCount,\n } as GraphQLParams<MBase>,\n ]),\n ])\n const data: MBase[] = result[this.tableName].map((row) => this.convertDataFromHasura(row))\n const count = enableCount && result[`${this.tableName}_aggregate`].aggregate.count\n\n return { data, count: enableCount ? count : Infinity }\n }\n }\n}\n","import { ModelBaseStructure, CrudRepository } from '../../../domain'\nimport { GraphQLRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\n\nimport { CreateConstructorParams, withCreateHasuraGraphQL } from './with-create-hasura-graphql.mixin'\nimport { ConstructorParams } from './with-hasura-graphql.mixin'\nimport { DeleteConstructorParams, withDeleteHasuraGraphQL } from './with-delete-hasura-graphql.mixin'\nimport { GetConstructorParams, withGetHasuraGraphQL } from './with-get-hasura-graphql.mixin'\nimport {\n UpdateConstructorParams,\n UpdateHasuraGraphQLRepositoryType,\n withUpdateHasuraGraphQL,\n} from './with-update-hasura-graphql.mixin'\nimport { withFindHasuraGraphQL } from './with-find-hasura-graphql.mixin'\n\nexport const withCrudHasuraGraphQL = <\n TBase extends ModelBaseStructure,\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'\n\nimport { Product } from '../../../domain'\n\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\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\n name ? = ''\n hasVariants ? = false\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'\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 ) {\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 '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 'filters',\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 ],\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 } })).data?.[0]\n : super.get(identifiers)\n }\n\n async update(params: UpdateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { products, id: checkId, metadata, ...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\n return category\n }\n\n async getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n if (!slug) return\n\n const { data, count } = await this.find({ filters: { slug, shop, published: true } })\n\n if (count > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n if (!count) throw new NotFoundError(`Category with slug ${slug} not found`)\n\n return data.shift()\n }\n\n async getCategoriesForHome(categoryIds: string[], limit = 4): 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 }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): 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 },\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 ],\n ...(options?.limit ? { limits: { limit: options?.limit } } : {}),\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 } })\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","import {\n CreateRepositoryParams,\n FindRepositoryParams,\n GetRepositoryParams,\n NonFunctionPropertyNames,\n ProductMetadata,\n ProductRepository,\n ProductReview,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\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 }),\n bindFindFilter: (sentence) => {\n const filters = Object.values(sentence).shift()\n\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 }\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 }),\n },\n },\n { differentials: { columnName: 'differentials' } },\n { whoMustUse: { columnName: 'who_must_use' } },\n { howToUse: { columnName: 'how_to_use' } },\n { brandDescription: { columnName: 'brand_description' } },\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: (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 '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 'slug',\n 'type',\n 'video',\n 'weight',\n 'gender',\n { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },\n { isKit: { columnName: 'is_kit' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n rate: {\n columnName: 'reviews_aggregate',\n filters: {\n filters: { status: true },\n filterType: 'product_review_bool_exp',\n },\n fields: [{ aggregate: [{ avg: ['rate'] }] }],\n from: (value) => value.aggregate.avg.rate,\n },\n },\n { shoppingCount: { columnName: 'shopping_count' } },\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 } })).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 return super.find({\n ...options,\n filters: { ...filters, productId: { operator: Where.ISNULL } },\n fields: bindFields,\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 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 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 } })\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","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 '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 } })\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":";;;;;;;;;;;;;MAWa,SAAS;IACpB,IAAI,UAAU;QACZ,MAAM,MAAM,GAAI,IAAI,CAAC,WAAuC,CAAC,iBAAiB,CAAC,MAAM,CACnF,CAAC,KAAK,KAAK,KAAK,KAAK,YAAY,CAClC,CAAA;QAED,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,MAAM,EAAE,KAAK,sCAAW,MAAM,KAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC,IAAG,EAClE,EAA+C,CAChD,CAAA;KACF;IAED,IAAI,iBAAiB;QACnB,OAAQ,IAAI,CAAC,WAAoD,CAAC,iBAAiB,CAAA;KACpF;IAED,YAAY,IAAqB;QAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;KAC1B;IAED,OAAO,UAAU,CAAkD,IAAwC;QACzG,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;KACzC;IAED,OAAO,OAAO,CAAkD,KAAU;QACxE,OAAO,KAAK,YAAY,IAAI,CAAA;KAC7B;IAED,OAAO;QACL,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;KAC7B;;;ICzCS;AAAZ,WAAY,KAAK;IACf,sBAAa,CAAA;IACb,yBAAgB,CAAA;IAChB,iBAAQ,CAAA;IACR,mBAAU,CAAA;IACV,kBAAS,CAAA;IACT,yBAAgB,CAAA;IAChB,iBAAQ,CAAA;IACR,mBAAU,CAAA;IACV,sBAAa,CAAA;IACb,6BAAoB,CAAA;IACpB,2BAAkB,CAAA;IAClB,kCAAyB,CAAA;AAC3B,CAAC,EAbW,KAAK,KAAL,KAAK;;ICAL;AAAZ,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,sCAAe,CAAA;IACf,wCAAiB,CAAA;IACjB,mDAA4B,CAAA;IAC5B,oCAAa,CAAA;AACf,CAAC,EANW,mBAAmB,KAAnB,mBAAmB;;ICAnB;AAAZ,WAAY,oBAAoB;IAC9B,mEAAsC,CAAA;IACtC,iEAAyC,CAAA;IACzC,wHAA2F,CAAA;AAC7F,CAAC,EAJW,oBAAoB,KAApB,oBAAoB;;ICApB;AAAZ,WAAY,IAAI;IACd,oBAAY,CAAA;IACZ,mBAAW,CAAA;IACX,sCAA8B,CAAA;IAC9B,2BAAmB,CAAA;IACnB,sCAA8B,CAAA;IAC9B,0CAAkC,CAAA;IAClC,2BAAmB,CAAA;IACnB,gCAAwB,CAAA;IACxB,iBAAS,CAAA;AACX,CAAC,EAVW,IAAI,KAAJ,IAAI;;ICAJ;AAAZ,WAAY,aAAa;IACvB,8CAA6B,CAAA;IAC7B,mCAAkB,CAAA;IAClB,uCAAsB,CAAA;IACtB,6CAA4B,CAAA;IAC5B,wDAAkC,CAAA;IAClC,gDAA0B,CAAA;IAC1B,4CAA2B,CAAA;AAC7B,CAAC,EARW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,UAAU;IACpB,4BAAc,CAAA;IACd,mCAAgB,CAAA;IAChB,6BAAe,CAAA;IACf,iCAAmB,CAAA;IACnB,mCAAqB,CAAA;AACvB,CAAC,EANW,UAAU,KAAV,UAAU;;ICAV;AAAZ,WAAY,wBAAwB;IAClC,oHAAmF,CAAA;IACnF,gKAA0H,CAAA;IAC1H,+KAA8I,CAAA;IAC9I,uFAA2D,CAAA;AAC7D,CAAC,EALW,wBAAwB,KAAxB,wBAAwB;;ICAxB;AAAZ,WAAY,YAAY;IACtB,yDAA+B,CAAA;IAC/B,uCAAuB,CAAA;IACvB,oDAAoC,CAAA;IACpC,yCAAyB,CAAA;IACzB,qDAAgC,CAAA;IAChC,sCAAsB,CAAA;IACtB,yCAAyB,CAAA;IACzB,iDAAiC,CAAA;IACjC,+DAA0C,CAAA;AAC5C,CAAC,EAVW,YAAY,KAAZ,YAAY;;ICAZ;AAAZ,WAAY,UAAU;IACpB,4BAAc,CAAA;IACd,iCAAmB,CAAA;IACnB,0CAA4B,CAAA;IAC5B,wCAAqB,CAAA;IACrB,oCAAsB,CAAA;AACxB,CAAC,EANW,UAAU,KAAV,UAAU;;ICAV;AAAZ,WAAY,WAAW;IACrB,+BAAgB,CAAA;IAChB,2DAAuC,CAAA;IACvC,sDAAuC,CAAA;AACzC,CAAC,EAJW,WAAW,KAAX,WAAW;;ICAX;AAAZ,WAAY,kBAAkB;IAC5B,kCAAY,CAAA;IACZ,sCAAgB,CAAA;IAChB,qCAAe,CAAA;IACf,uCAAiB,CAAA;IACjB,8DAAmC,CAAA;AACrC,CAAC,EANW,kBAAkB,KAAlB,kBAAkB;;ICAlB;AAAZ,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,6CAAyB,CAAA;IACzB,sCAAkB,CAAA;IAClB,4DAAwC,CAAA;IACxC,sCAAkB,CAAA;IAClB,uCAAmB,CAAA;IACnB,+CAAsB,CAAA;IACtB,yDAAgC,CAAA;AAClC,CAAC,EATW,gBAAgB,KAAhB,gBAAgB;;ICAhB;AAAZ,WAAY,aAAa;IACvB,2CAA0B,CAAA;IAC1B,gCAAe,CAAA;IACf,kDAA4B,CAAA;IAC5B,kDAA4B,CAAA;IAC5B,gCAAe,CAAA;IACf,2CAA0B,CAAA;AAC5B,CAAC,EAPW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,aAAa;IACvB,gDAA0B,CAAA;IAC1B,4DAA2C,CAAA;IAC3C,8DAA6C,CAAA;IAC7C,gEAA+C,CAAA;IAC/C,qDAAoC,CAAA;IACpC,qDAAoC,CAAA;AACtC,CAAC,EAPW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,oBAAoB;IAC9B,mEAAsC,CAAA;IACtC,4FAAoE,CAAA;IACpE,2FAA8D,CAAA;AAChE,CAAC,EAJW,oBAAoB,KAApB,oBAAoB;;ICApB;AAAZ,WAAY,UAAU;IACpB,6BAAe,CAAA;IACf,4CAA8B,CAAA;IAC9B,4CAA8B,CAAA;IAC9B,0CAA4B,CAAA;IAC5B,0CAA4B,CAAA;IAC5B,4CAA8B,CAAA;IAC9B,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;AACrB,CAAC,EATW,UAAU,KAAV,UAAU;;ICAV;AAAZ,WAAY,YAAY;IACtB,6CAA6B,CAAA;IAC7B,kCAAkB,CAAA;IAClB,8BAAc,CAAA;IACd,mCAAmB,CAAA;IACnB,wCAAwB,CAAA;IACxB,oCAAoB,CAAA;IACpB,8CAA8B,CAAA;IAC9B,6CAA6B,CAAA;AAC/B,CAAC,EATW,YAAY,KAAZ,YAAY;;ICAZ;AAAZ,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,+BAAgB,CAAA;IAChB,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,mCAAoB,CAAA;AACtB,CAAC,EAPW,WAAW,KAAX,WAAW;;ICAX;AAAZ,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,+BAAkB,CAAA;IAClB,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;AACrB,CAAC,EANW,SAAS,KAAT,SAAS;;ICAT;AAAZ,WAAY,cAAc;IACxB,4CAA0B,CAAA;IAC1B,sCAAoB,CAAA;IACpB,qCAAmB,CAAA;IACnB,sCAAoB,CAAA;AACtB,CAAC,EALW,cAAc,KAAd,cAAc;;ICAd;AAAZ,WAAY,aAAa;IACvB,2CAAqB,CAAA;IACrB,oDAAmC,CAAA;IACnC,sDAAqC,CAAA;IACrC,sDAAqC,CAAA;IACrC,gDAA+B,CAAA;IAC/B,qDAAoC,CAAA;AACtC,CAAC,EAPW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,QAAQ;IAClB,wCAA4B,CAAA;IAC5B,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,2BAAe,CAAA;IACf,6CAA4B,CAAA;IAC5B,qCAAyB,CAAA;AAC3B,CAAC,EAPW,QAAQ,KAAR,QAAQ;;ICAR;AAAZ,WAAY,aAAa;IACvB,+BAAc,CAAA;AAChB,CAAC,EAFW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,aAAa;IACvB,qEAA0C,CAAA;IAC1C,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,WAAW;IACrB,iDAAwB,CAAA;IACxB,8CAAqB,CAAA;IACrB,+DAAsC,CAAA;AACxC,CAAC,EAJW,WAAW,KAAX,WAAW;;ICAX;AAAZ,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,iCAAuB,CAAA;AACzB,CAAC,EAHW,MAAM,KAAN,MAAM;;MCML,OAAQ,SAAQ,SAAsC;IAYjE,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;KAChC;;;MCdU,OAAQ,SAAQ,SAAkB;IAyG7C,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;CACF;AAnFC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;6CACd;AAEpB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;6CACd;AAEpB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;;qDACf;AAE5B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;6CACd;AAEpB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;2CACd;AAElB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;;kDACd;AAEzB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;;+CACd;AAEtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;4CACd;AAEnB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;4CACd;AAEnB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;;iDACd;AAExB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;2CACd;AAElB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;;+CACd;AAEtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;+CACf;AAEtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;+CACf;AAEtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;;gDACf;AAEvB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;0CACd;AAEjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;4CACf;AAEnB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;;sDACd;AAE9B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;uCACb;AAEf;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;4CACd;AAEnB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;;8CACd;AAErB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;;8CACd;AAErB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;;+CACd;AAEtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;0CACd;AAEjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;;8CACd;AAErB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;;qDACf;AAE5B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;;+CACd;AAEtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;2CACd;AAElB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;;kDACjB;AAEtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;6CACd;AAEpB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;;mDACf;AAE1B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;0CACd;AAEjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;6CACb;AAErB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;gDACd;AAEvB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;;wCACd;AAEf;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;0CACd;AAEjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;2CACd;AAElB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;6CACd;AAEpB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;0CACf;AAEjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;;kDACf;;MCpGd,mBAAoB,SAAQ,SAA8D;IAUrG,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;KAChC;CACF;AALC;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACX,OAAO;oDAAA;;MCbI,OAAyC,SAAQ,SAA+B;IAmBpG,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;;;MCzBU,IAAI;IACf,YAAY,GAAG,IAAgB;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;KAC7B;;;MCDU,MAAM,GAAG,CAAC,KAAa,KAClC,QAAQ,CAAC,KAAK,CAAC,IAAI,iFAAiF,CAAC,IAAI,CAAC,KAAK;;MCApG,aAAa,GAAG,CAAC,KAAa;IACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,IACE,CAAC,kDAAkD,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/D,CAAC,mEAAmE,CAAC,IAAI,CAAC,KAAK,CAAC;QAEhF,OAAO,KAAK,CAAA;IAEd,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE5B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,KAAK,CAAA;IAEvC,OAAO,IAAI,CAAA;AACb;;IChBY;AAAZ,WAAY,aAAa;IACvB,2DAAa,CAAA;IACb,iEAAgB,CAAA;IAChB,+CAAO,CAAA;AACT,CAAC,EAJW,aAAa,KAAb,aAAa;;ICAb;AAAZ,WAAY,WAAW;IACrB,qDAAY,CAAA;IACZ,yDAAc,CAAA;;;;;AAKhB,CAAC,EAPW,WAAW,KAAX,WAAW;;ICAX;AAAZ,WAAY,cAAc;IACxB,2DAAY,CAAA;IACZ,+DAAc,CAAA;AAChB,CAAC,EAHW,cAAc,KAAd,cAAc;;ICAd;AAAZ,WAAY,aAAa;IACvB,2DAAa,CAAA;IACb,mEAAiB,CAAA;IACjB,mEAAiB,CAAA;IACjB,2EAAqB,CAAA;IACrB,+EAAuB,CAAA;IACvB,qEAAkB,CAAA;AACpB,CAAC,EAPW,aAAa,KAAb,aAAa;;ACUzB,MAAM,iBAAiB,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;MAEtC,MAAO,SAAQ,SAAiB;IA4B3C,IAAI,YAAY;QACd,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;KACpC;IAED,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;IAED,OAAO,YAAY,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC;YACrB,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,EAAE,WAAW,CAAC,QAAQ;YAC1B,YAAY,EAAE,aAAa,CAAC,SAAS;YACrC,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,IAAI;YACrB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;SACpD,CAAC,CAAA;KACH;CACF;AA3BC;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;4CACP;AAG3B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;+CACN;;MCpCpB,gBAAiB,SAAQ,SAA2B;IAQ/D,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;;;MCNU,aAAc,SAAQ,SAAkD;IAMnF,OAAO;QACL,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,EAAE,CAAA;QAEf,OAAO,KAAK,CAAA;KACb;IAED,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;KACxB;;;MCbU,IAAK,SAAQ,SAAe;IAuBvC,OAAO,UAAU,CAEf,IAA2C;QAE3C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAS,CAAA;QAE/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YACxB,QAAQ,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAA;QAE/F,OAAO,QAAe,CAAA;KACvB;IAED,OAAO;QACL,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,aAAa,CAAA;QAE1B,OAAO,KAAK,CAAA;KACb;IAED,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;CACF;AAzBC;IADC,IAAI,CAAC,MAAM,aAAa,CAAC;8BACV,aAAa;2CAAA;;MClBlB,YAAa,SAAQ,SAAuB;IA2BvD,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;CACF;AAjBC;IADC,IAAI,CAAC,MAAM,IAAI,CAAC;8BACX,IAAI;0CAAA;AAEV;IADC,IAAI,CAAC,MAAM,gBAAgB,CAAC;8BACX,gBAAgB;sDAAA;AAElC;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACH,OAAO;qDAAA;AAExB;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACH,OAAO;oDAAA;AAExB;IADC,IAAI,CAAC,MAAM,MAAM,CAAC;8BACV,MAAM;4CAAA;AAEf;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;;8CACD;AAEnB;IADC,IAAI,CAAC,MAAM,mBAAmB,CAAC;;6CACD;;MCjCpB,WAAY,SAAQ,OAA+B;IAI9D,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;KACxB;;;MCNU,iBAAkB,SAAQ,SAAoD;IAWzF,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;KACxB;;;MCfU,IAAK,SAAQ,SAAe;IAKvC,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;;;MCPU,iBAAkB,SAAQ,WAAW;IAChD,YAAqB,OAAO;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QADK,YAAO,GAAP,OAAO,CAAA;KAE3B;;;ICCS;AAAZ,WAAY,aAAa;IACvB,kDAAiC,CAAA;IACjC,kCAAiB,CAAA;AACnB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;MASY,cAAc;IACzB,YAA6B,WAAkC,EAAmB,cAA8B;QAAnF,gBAAW,GAAX,WAAW,CAAuB;QAAmB,mBAAc,GAAd,cAAc,CAAgB;KAAI;IAE9G,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAgB,EAAE,YAA0B;;YACxE,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;YACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAE9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC7B,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;YAEzF,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAA;SACnD;KAAA;IAEO,kBAAkB,CAAC,YAA0B;QACnD,OAAO,YAAY,KAAK,aAAa,CAAC,cAAc,GAAG,4BAA4B,GAAG,kBAAkB,CAAA;KACzG;IAEa,uBAAuB,CAAC,IAAmB;;;YACvD,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,iCACzB,IAAI,KACP,GAAG,EAAE,EAAE,EACP,QAAQ,EAAE,IAAI,IAAI,EAAE,EACpB,SAAS;gBACT,QAAQ,EACR,iBAAiB,EAAE,KAAK,EACxB,IAAI,EAAE,IAAI,CAAC,aAAa,EACxB,cAAc,EAAE,cAAc,CAAC,MAAM,EACrC,IAAI,EAAE,QAAQ,CAAC,YAAY,IAC3B,CAAA;YAEF,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;;KAC1C;;;MCjDU,0BAA2B,SAAQ,WAAW;IACzD,YAAqB,OAAO;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QADK,YAAO,GAAP,OAAO,CAAA;KAE3B;;;MCHU,iBAAkB,SAAQ,WAAW;IAChD,YAAqB,UAAU,eAAe;QAC5C,KAAK,CAAC,OAAO,CAAC,CAAA;QADK,YAAO,GAAP,OAAO,CAAkB;KAE7C;;;MCEU,QAAQ;IACnB,YAA6B,eAAgC,EAAmB,cAA8B;QAAjF,oBAAe,GAAf,eAAe,CAAiB;QAAmB,mBAAc,GAAd,cAAc,CAAgB;KAAI;IAE5G,QAAQ,CAAC,MAAsB;;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAA;YAC9C,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAA;YAE5D,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;gBACnE,MAAM,IAAI,0BAA0B,CAAC,mBAAmB,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAA;YACtF,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;gBACvE,MAAM,IAAI,0BAA0B,CAAC,sBAAsB,MAAM,CAAC,KAAK,iBAAiB,CAAC,CAAA;YAE3F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC/C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK;gBACL,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,WAAW;gBACX,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAA;YAEF,OAAO,MAAM,CAAC,QAAQ,CAAA;YAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,iCACxC,MAAM,KACT,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,KAAK;gBACL,WAAW,EACX,IAAI,EAAE,QAAQ,CAAC,GAAG,EAClB,WAAW,EAAE,IAAI,IAAI,EAAE,EACvB,YAAY,EAAE,IAAI,IAAI,EAAE,IACxB,CAAA;YAEF,OAAO,IAAI,CAAA;SACZ;KAAA;;;MCzCU,OAAO;IAClB,YAA6B,WAAkC;QAAlC,gBAAW,GAAX,WAAW,CAAuB;KAAI;IAE7D,OAAO;;YACX,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;SACjC;KAAA;;;MCLU,gBAAgB;IAC3B,YAA6B,WAAkC;QAAlC,gBAAW,GAAX,WAAW,CAAuB;KAAI;IAE7D,SAAS,CAAC,KAAa;;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;SACrD;KAAA;;;MCFU,QAAS,SAAQ,SAAmB;IAmB/C,gBAAgB;QACd,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;IAED,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;;;IC9BS;AAAZ,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,sCAAiB,CAAA;AACnB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB;;ICAjB;AAAZ,WAAY,KAAK;IACf,kCAAyB,CAAA;IACzB,8BAAqB,CAAA;IACrB,kCAAyB,CAAA;IACzB,oBAAW,CAAA;AACb,CAAC,EALW,KAAK,KAAL,KAAK;;MCOJ,OAAQ,SAAQ,SAAkB;IAmC7C,gBAAgB;QACd,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;IAED,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;CACF;AATC;IADC,IAAI,CAAC,MAAM,UAAU,CAAC;;4CACG;;MChCf,UAAW,SAAQ,SAA4C;IAW1E,WAAW,iBAAiB;QAC1B,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;KACpC;CACF;AARC;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACf,OAAO;uCAAA;AAGZ;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACX,OAAO;2CAAA;;MCXL,OAAQ,SAAQ,SAA6C;IAaxE,gBAAgB;QACd,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;IAED,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;KAC3B;;;ICzBS;AAAZ,WAAY,WAAW;IACrB,4DAA6C,CAAA;IAC7C,+CAAgC,CAAA;IAChC,iDAAkC,CAAA;IAClC,8DAA+C,CAAA;IAC/C,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;AAC7B,CAAC,EATW,WAAW,KAAX,WAAW;;MCEV,QAAS,SAAQ,OAAO;;;MCAxB,cAAe,SAAQ,SAAyB;IAc3D,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;;;MCPU,QAAS,SAAQ,SAAmB;IA0B/C,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;CACF;AAfC;IADC,IAAI,CAAC,MAAM,QAAQ,CAAC;;2CACC;AAEtB;IADC,IAAI,CAAC,MAAM,IAAI,CAAC;8BACV,IAAI;sCAAA;AAEX;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACF,OAAO;iDAAA;AAEzB;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACH,OAAO;gDAAA;AAExB;IADC,IAAI,CAAC,MAAM,cAAc,CAAC;8BAChB,cAAc;0CAAA;AAEzB;IADC,IAAI,CAAC,MAAM,MAAM,CAAC;8BACV,MAAM;wCAAA;;MC7BJ,KAAM,SAAQ,QAAQ;CAOlC;AADC;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACX,OAAO;sCAAA;;MCHL,oBAAqB,SAAQ,SAA+B;IAoBvE,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;CACF;AAXC;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACH,OAAO;6DAAA;AAExB;IADC,IAAI,CAAC,MAAM,OAAO,CAAC;8BACH,OAAO;4DAAA;AAExB;IADC,IAAI,CAAC,MAAM,gBAAgB,CAAC;8BACX,gBAAgB;8DAAA;AAElC;IADC,IAAI,CAAC,MAAM,MAAM,CAAC;8BACV,MAAM;oDAAA;;MCtBJ,OAAQ,SAAQ,SAAkB;IAe7C,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;CACF;AALC;IADC,IAAI,CAAC,MAAM,QAAQ,CAAC;;2CACC;;IClBZ;AAAZ,WAAY,UAAU;IACpB,0DAA4C,CAAA;IAC5C,8CAAgC,CAAA;IAChC,sCAAwB,CAAA;IACxB,mEAAqD,CAAA;IACrD,4CAA8B,CAAA;IAC9B,sCAAwB,CAAA;IACxB,0CAA4B,CAAA;IAC5B,qDAAuC,CAAA;IACvC,qDAAuC,CAAA;IACvC,6CAA+B,CAAA;IAC/B,4CAA8B,CAAA;IAC9B,0DAA4C,CAAA;IAC5C,sCAAwB,CAAA;IACxB,4CAA8B,CAAA;IAC9B,0CAA4B,CAAA;IAC5B,oCAAsB,CAAA;IACtB,4CAA8B,CAAA;AAChC,CAAC,EAlBW,UAAU,KAAV,UAAU;;ICAV;AAAZ,WAAY,gBAAgB;IAC1B,gGAAkE,CAAA;IAClE,8EAAqD,CAAA;IACrD,4FAAmE,CAAA;IACnE,2IAA6G,CAAA;IAC7G,iHAA8E,CAAA;IAC9E,4DAAwC,CAAA;IACxC,mEAA0C,CAAA;IAC1C,qGAA4E,CAAA;IAC5E,mFAA+D,CAAA;IAC/D,4DAAwC,CAAA;IACxC,0IAAiH,CAAA;IACjH,+FAAsE,CAAA;IACtE,8EAAqD,CAAA;IACrD,yGAAgF,CAAA;IAChF,6DAAoC,CAAA;IACpC,2DAAkC,CAAA;IAClC,wHAA+F,CAAA;AACjG,CAAC,EAlBW,gBAAgB,KAAhB,gBAAgB;;MCOf,qBAAqB;IAChC,OAAO,UAAU,CAAC,MAAkB;QAClC,QAAQ,MAAM;YACZ,KAAK,UAAU,CAAC,oBAAoB;gBAClC,OAAOA,oBAA4B,CAAA;YACrC,KAAK,UAAU,CAAC,cAAc;gBAC5B,OAAOC,aAAqB,CAAA;YAC9B,KAAK,UAAU,CAAC,UAAU;gBACxB,OAAOC,UAAkB,CAAA;YAC3B,KAAK,UAAU,CAAC,yBAAyB;gBACvC,OAAOC,wBAAgC,CAAA;YACzC,KAAK,UAAU,CAAC,aAAa;gBAC3B,OAAOC,YAAoB,CAAA;YAC7B,KAAK,UAAU,CAAC,UAAU;gBACxB,OAAOC,UAAkB,CAAA;YAC3B,KAAK,UAAU,CAAC,YAAY;gBAC1B,OAAOC,WAAmB,CAAA;YAC5B,KAAK,UAAU,CAAC,kBAAkB;gBAChC,OAAOC,kBAA0B,CAAA;YACnC,KAAK,UAAU,CAAC,kBAAkB;gBAChC,OAAOC,gBAAwB,CAAA;YACjC,KAAK,UAAU,CAAC,cAAc;gBAC5B,OAAOC,aAAqB,CAAA;YAC9B,KAAK,UAAU,CAAC,aAAa;gBAC3B,OAAOC,aAAqB,CAAA;YAC9B,KAAK,UAAU,CAAC,oBAAoB;gBAClC,OAAOC,oBAA4B,CAAA;YACrC,KAAK,UAAU,CAAC,UAAU;gBACxB,OAAOC,UAAkB,CAAA;YAC3B,KAAK,UAAU,CAAC,aAAa;gBAC3B,OAAOC,YAAoB,CAAA;YAC7B,KAAK,UAAU,CAAC,YAAY;gBAC1B,OAAOC,WAAmB,CAAA;YAC5B,KAAK,UAAU,CAAC,SAAS;gBACvB,OAAOC,SAAiB,CAAA;YAC1B,KAAK,UAAU,CAAC,aAAa;gBAC3B,OAAOC,aAAqB,CAAA;SAC/B;KACF;IAED,OAAO,YAAY,CAAC,MAAkB;QACpC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAA;KAChC;;;MC9CU,IAAK,SAAQ,SAAe;IAevC,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;;;MCjBU,QAAS,SAAQ,SAAmB;IAI/C,WAAW,iBAAiB;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;KACd;;;MCPU,oBAAqB,SAAQ,WAAW;IACnD,YAAqB,OAAO;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QADK,YAAO,GAAP,OAAO,CAAA;KAE3B;;;MCHU,qBAAsB,SAAQ,WAAW;IAGpD,YAAqB,IAAc;QACjC,KAAK,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAD5B,SAAI,GAAJ,IAAI,CAAU;QAGjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;KACtB;;;MCPU,aAAc,SAAQ,WAAW;IAC5C,YAAqB,OAAO;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QADK,YAAO,GAAP,OAAO,CAAA;KAE3B;;;MCHU,sBAAuB,SAAQ,WAAW;IACrD,YAAqB,OAAO;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QADK,YAAO,GAAP,OAAO,CAAA;KAE3B;;;MCMU,YAAY;IACvB,YAA6B,MAAgC;QAAhC,WAAM,GAAN,MAAM,CAA0B;KAAI;IAE3D,GAAG,CAAC,KAAa;;YACrB,IAAI;gBACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC;oBAC3B,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;oBAClC,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;iBAC9D,CAAC,CAAA;gBAEF,OAAO,IAAI,CAAC,OAAO,CAAA;aACpB;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;aACvC;SACF;KAAA;IAEK,KAAK,CAAC,KAAa,EAAE,KAAU;;YACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC;gBAC3B,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;gBAClC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;gBAC7D,IAAI,EAAE,KAAK;aACZ,CAAC,CAAA;YAEF,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;aACrB,CAAA;SACF;KAAA;IAEK,IAAI,CAAC,KAAa,EAAE,IAAgB;;YACxC,MAAM,KAAK,CAAC;gBACV,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;gBAClC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;gBAC7D,IAAI;aACL,CAAC,CAAA;SACH;KAAA;IAEK,MAAM,CAAC,KAAa;;YACxB,MAAM,KAAK,CAAC;gBACV,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;gBAClC,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;aAC9D,CAAC,CAAA;SACH;KAAA;;;MCrDU,aAAa;IACxB,YAA6B,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;KAAI;IAEzD,GAAG,CAAC,EAAE;;YACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;YAE1D,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;SAChC;KAAA;IAEK,QAAQ,CAAC,GAAa,EAAE,OAA0D;;YACtF,MAAM,MAAM,GAAG;gBACb,OAAO;gBACP,IAAI;gBACJ,QAAQ;gBACR,YAAY;gBACZ,MAAM;gBACN,OAAO;gBACP,KAAK;gBACL,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,WAAW;gBACX,QAAQ;gBACR,OAAO;gBACP,QAAQ;gBACR,MAAM;gBACN,aAAa;gBACb,MAAM;aACP,CAAA;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,kBAC1D,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;oBACL,IAAI,EAAE;wBACJ,MAAM,EAAE;4BACN;gCACE,KAAK,EAAE;oCACL,GAAG,EAAE,GAAG;iCACT;6BACF;4BACD;gCACE,IAAI,EAAE;oCACJ,SAAS,EAAE,IAAI;iCAChB;6BACF;4BACD,IAAI,OAAO,CAAC,QAAQ;kCAChB;oCACE;wCACE,KAAK,EAAE;4CACL,gBAAgB,EAAE;gDAChB,EAAE,EAAE,CAAC;6CACN;yCACF;qCACF;iCACF;kCACD,EAAE,CAAC;yBACR;qBACF;iBACF,KACG,OAAO,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAC9C,CAAA;YAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;SAC1D;KAAA;IAEK,IAAI,CAAC,OAA6B;;YACtC,OAAO,OAAO,CAAC,SAAS,CAAA;YACxB,OAAO,OAAO,CAAC,SAAS,CAAA;YACxB,OAAO,OAAO,CAAC,WAAW,CAAA;YAE1B,IAAI;gBACF,IAAI,CAAC,OAAO,CAAC,WAAW;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;gBAE5E,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBAEnC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;aACnF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAE5B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;aAC1E;SACF;KAAA;IAEK,MAAM,CAAC,OAA6B;;YACxC,IAAI;gBACF,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBAEnC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;aAClE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;aACzD;SACF;KAAA;;;MClFU,aAAa,GAAG,CAC3B,SAAY;IAEZ,MAAM,kBAAkB,GAAG,CAAC,IAAS,KACnC,IAAI;QACJ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,IAAI,MAAK,WAAW;QACtC,EAAE,SAAS,IAAI,IAAI,CAAC,CAAA;IACtB,MAAM,QAAQ,GAAG,CAAC,IAAyB,EAAE,OAAe;QAC1D,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,IAAI,MAAK,WAAW;YAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;QAChE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;QAC/F,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnG,OAAO,IAAI,CAAA;KACZ,CAAA;IACD,MAAM,qBAAqB,GAAG,CAAC,IAAQ;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAC7B,CAAC,MAAM,EAAE,GAAG,sCACP,MAAM,KACT,CAAC,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;kBAChC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;kBAChC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;sBACxB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;sBACpG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAC5B,EACF,EAA4D,CAC7D,CAAA;KACF,CAAA;IAED,OAAO,cAAc,SAAS;QAM5B,UAAU,CAAC,IAAa;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;SACvG;QAED,kBAAkB;YAIhB,OAAO;gBACL,WAAW,EAAE,CAAC,IAAW,MAAoB,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,IAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;gBACnF,aAAa,EAAE,CAAC,IAAkC;oBAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;oBACxB,IAAI,UAAkE,CAAA;oBAEtE,IAAI;wBACF,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;wBAE3B,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;wBAExC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,iCAAM,UAAU,GAAK,GAAG,EAAG,CAAA;qBACxD;oBAAC,OAAO,KAAK,EAAE;wBACd,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;wBAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;wBAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;wBAEpB,MAAM,KAAK,CAAA;qBACZ;iBACF;aACF,CAAA;SACF;KACF,CAAA;AACH;;MCzEa,WAAW,GAAG,CAA2C,SAAiC;IACrG,OAAO,cAAc,SAAS;QAC5B,OAAO,CAA+B,QAAuD;YAC3F,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC3B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAA6B,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;aACnE;iBAAM;gBACL,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAA6B,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;aACxE;SACF;QAED,eAAe,CACb,UAAkC;YAElC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAA;SAC3E;KACF,CAAA;AACH;;MCjBa,gBAAgB,GAAG,CAI9B,SAAgF;IAKhF,OAAO,MAAM,YAAa,SAAQ,SAAS;QACnC,GAAG,CAAC,WAAyC;;gBACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;qBAC3E,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;qBAClD,GAAG,EAAE,CAAA;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;gBAEvB,IAAI,KAAK,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,aAAa,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;gBAE7F,OAAO,IAAI,CAAA;aACZ;SAAA;QAED,yBAAyB,CAAC,WAAyC;YACjE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;kBAC7B,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;kBACnG,IAAI,CAAC,cAAc,CAAA;SACxB;KACK,CAAA;AACV;;AChCA,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,yCAAmB,CAAA;IACnB,6CAAuB,CAAA;IACvB,qCAAe,CAAA;IACf,iCAAW,CAAA;AACb,CAAC,EAPW,kBAAkB,KAAlB,kBAAkB;;MCkBjB,iBAAiB,GAAG,CAI/B,SAAgF;IAKhF,MAAM,qBAAqB,GAAG,CAAC,MAAW,KACxC,CAAC,KAAK,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,CAAA;IAC1B,MAAM,kBAAkB,GAAG,CAAC,MAAuC;QACjE,OAAO,qBAAqB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAA;KAC7D,CAAA;IACD,MAAM,iBAAiB,GAAG,CAAC,KAAU,KACnC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;UACvE,KAAK;UACL,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAEtC,OAAO,MAAM,aAAc,SAAQ,SAAS;QAArC;;YAiDL,uBAAkB,GAAG,CACnB,cAAyD,EACzD,MAAqC,KAErC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACxB,CAAC,KAAmB,EAAE,SAAiB,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EACxG,cAAc,CACf,CAAA;YAEH,uBAAkB,GAAG,CACnB,cAAyD,EACzD,SAAmD,EACnD,OAA8E;gBAE9E,IAAI,IAAI,CAAC,eAAe,CAAQ,IAAI,CAAC,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;oBAAE,OAAO,cAAc,CAAA;gBAEhG,MAAM,KAAK,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,OAAO,CAAA;gBACvC,MAAM,MAAM,GAAG,EAAE,CAAA;gBAEjB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;gBAE7B,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;gBACtD,MAAM,kBAAkB,GACtB,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;sBAClC,SAAS,CAAC,QAAQ,EAAE;sBACpB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;gBAElE,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,MAAK,KAAK,CAAC,IAAI,EAAE;oBACpC,IACE,KAAK,CAAC,OAAO,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;yBAC5B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,kBAAkB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;wBAElG,OAAO,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;oBAEtF,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;oBAC9E,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA;oBAEpF,OAAO,cAAc,CAAA;iBACtB;gBACD,IACE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,MAAK,KAAK,CAAC,EAAE;oBAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;qBAC5B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,kBAAkB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;oBAElG,OAAO,cAAc,CAAC,KAAK,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBAClF,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,EAAE;oBAC1E,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAChC,CAAC,uBAAuB,EAAE,GAAG,KAC3B,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAClG,cAAc,CACf,CAAA;iBACF;gBAED,OAAO,cAAc,CAAC,KAAK,CACzB,kBAAkB,EAClB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAA0B,KAAI,IAAI,EAC5C,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,OAAO,CAC1B,CAAA;aACF,CAAA;SA2BF;QArIO,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAkC,EAAE;;;gBAGhF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;gBAC9C,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,IAAI,CAAA;gBAChD,IAAI,KAAK,GAA8C,IAAI,CAAC,UAAU,CACpE,IAAI,CAAC,0BAA0B,CAAC,OAAO,IAAI,EAAE,CAAC,CAC/C,CAAA;gBAED,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;gBAErD,IAAI,WAAW,CAAC,MAAM,EAAE;oBACtB,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAChE,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAChD,CAAA;oBAED,IAAI,wBAAwB,CAAC,MAAM;wBACjC,wBAAwB,CAAC,OAAO,CAC9B,CAAC,SAAS,MACP,OAAO,oCACF,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,GAAG,KAAK,EAAE,GAAG,EAAE,IACpF,OAAO,CACX,CAAC,CACL,CAAA;oBAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;iBACpG;gBAED,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;gBAEvD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAA;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;gBAE/C,OAAO;oBACL,IAAI;oBACJ,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ;iBAClE,CAAA;;SACF;QAED,0BAA0B,CAAC,OAAsC;YAC/D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,cAAc,CAAA;YAElE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;YACxC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,aAAa,CAAC,CAAC,CAAA;YAE7D,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAA;SACpF;QA8DK,YAAY,CAChB,KAAgD,EAChD,OAAsC,EACtC,MAAqC;;gBAErC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE;oBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;wBACnC,KAAK,GAAG,KAAK,CAAC,UAAU,CACtB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;6BAC5D,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAY,CAAC,CAAC;6BACrE,GAAG,EAAE,CACT,CAAA;yBACE,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;wBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;iBAClG;gBACD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK;oBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAEpD,OAAO,KAAK,CAAA;aACb;SAAA;QAED,cAAc,CAAC,IAAa,EAAE,MAAqC;YACjE,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAA;YAC9B,IAAI,IAAI,CAAC,MAAM,IAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAA;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAA;YAEnD,OAAO,QAAQ,CAAA;SAChB;KACK,CAAA;AACV;;MCtKa,mBAAmB,GAAG,CAIjC,SAAgF;IAKhF,OAAO,MAAM,eAAgB,SAAQ,SAAS;QACtC,MAAM,CAAC,IAAmC;;gBAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAW,CAAC,CAAC,CAAA;gBAClE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;gBAE9B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;aAClB;SAAA;QAEK,IAAI,CAAC,IAAW;;;gBACpB,MAAM,EAAE,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,0CAAE,QAAQ,EAAE,CAAA;gBAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;gBAE3D,IAAI,OAAO,CAAC,EAAE,CAAC;oBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAEjE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACtD,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAEtB,OAAO,MAAM,CAAA;;SACd;QAED,yBAAyB,CAAC,WAA2B;YACnD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;kBAC7B,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;kBACnG,IAAI,CAAC,cAAc,CAAA;SACxB;KACK,CAAA;AACV;;MCxBa,mBAAmB,GAAG,CAIjC,SAAgF;IAKhF,MAAM,kBAAkB,GAAG,CACzB,MAAqC,EACrC,KAAsC,eAEtC,OAAA,CAAC,KAAK,CAAC,MAAA,MAAM,CAAC,KAAe,CAAC,0CAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAe,CAAC,GAAG,MAAM,CAAC,KAAe,CAAC,CAAC,KAAK,KAAK,IAAI,CAAA,EAAA,CAAA;IAC3G,MAAM,gBAAgB,GAAG,CAAC,OAA6B;QACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAA;QAEjD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,OAAO,CAAA;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,CAAC,YAAY;YAAE,OAAO,WAAW,CAAC,MAAM,EAAE,CAAA;QACpF,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,CAAC,KAAK;gBAAE,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YACjG,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM;gBAAE,OAAO,WAAW,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;SACpG;QAED,OAAO,OAAO,CAAC,KAAK,CAAA;KACrB,CAAA;IAED,OAAO,MAAM,eAAgB,SAAQ,SAAS;QACtC,MAAM,CAAC,IAAmC;;gBAC9C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAA;gBAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;gBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CACzE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAC9C,CAAA;gBAED,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBAE3D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;gBAE9B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;aAClB;SAAA;QAED,4BAA4B,CAAC,WAA0C;YACrE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;kBAC7B,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,IAAI,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAC5F,IAAI,CAAC,cACP,EAAE;kBACF,IAAI,CAAC,cAAc,CAAA;SACxB;QAED,aAAa,CAAC,MAAqC;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;YAExB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,EAAE,CAAA;YAElD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,UAAU,sCAAW,IAAI,KAAE,CAAC,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAG,EACvF,EAAE,CACH,CAAA;SACF;KACK,CAAA;AACV;;MC1Ea,mBAAmB,GAAG,CAIjC,SAAgF;IAKhF,OAAO,MAAM,eAAgB,SAAQ,SAAS;QACtC,MAAM,CAAC,WAA0C;;gBACrD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;qBAClE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;qBAClD,MAAM,EAAE,CAAA;aACZ;SAAA;QAED,4BAA4B,CAAC,WAAoC;YAC/D,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;kBAC7B,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;kBACnG,IAAI,CAAC,cAAc,CAAA;SACxB;KACK,CAAA;AACV;;MCpBa,iBAAiB,GAAG,CAK/B,SAA6D,EAC7D,WAAkC;IAQlC,OAAO,MAAM,gBACX,SAAQ,SAAS;QAMjB,YAAY,GAAG,IAAgB;YAC7B,KAAK,CAAC,IAAI,CAAC,CAAA;SACZ;QAED,UAAU,CAAC,IAAa;YACtB,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;SAC9B;KACK,CAAA;AACV;;MCzBa,iBAAiB,GAAG,CAK/B,SAAgF;IAKhF,OAAO,MAAM,aACX,SAAQ,mBAAmB,CACzB,gBAAgB,CACd,iBAAiB,CACf,mBAAmB,CACjB,mBAAmB,CAAC,SAAqE,CAAC,CAC3F,CACF,CACF,CACF;KACyC,CAAA;AAC9C;;MCxBa,uBACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAO,IAAI,CAAC,CAAC,CAAC;IAGjE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;KAClB;;;MCPU,sCACX,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAU,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;IAGrG,YAAqB,SAA4B,EAAW,gBAAiD;QAC3G,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAAW,qBAAgB,GAAhB,gBAAgB,CAAiC;QAE3G,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;QAChC,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAA;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;KACrB;;;MCVU,+BACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAe,IAAI,CAAC,CAAC,CAAC;IAGzE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAA;KAC1B;;;MCPU,sCACX,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAsB,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;IAGjH,YAAqB,SAA4B,EAAW,gBAAiD;QAC3G,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAAW,qBAAgB,GAAhB,gBAAgB,CAAiC;QAE3G,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;QAChC,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAA;QACrC,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAA;KACjC;;;MCTU,8BACX,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAc,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAGjG,YAAqB,SAA4B,EAAW,gBAAyC;QACnG,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAAW,qBAAgB,GAAhB,gBAAgB,CAAyB;QAEnG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;KACzB;;;MCTU,oCACX,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAgB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAGnG,YAAqB,SAA4B,EAAW,gBAAyC;QACnG,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAAW,qBAAgB,GAAhB,gBAAgB,CAAyB;QAEnG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,aAAa,CAAA;KAC3B;;;MCXU,uBACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAO,IAAI,CAAC,CAAC,CAAC;IAGjE,YACW,SAA4B;QAErC,KAAK,EAAE,CAAA;QAFE,cAAS,GAAT,SAAS,CAAmB;QAGrC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;KAClB;IAEK,GAAG,CAAC,WAA0B;;;;;YAClC,MAAM,IAAI,GAAG,MAAM,OAAM,GAAG,YAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;YAEpD,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACzD,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAE3D,OAAO,IAAI,CAAA;SACZ;KAAA;IAEK,oBAAoB,CAAC,KAAa,EAAE,KAAa;;YACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAC,CAAC,KAAK,GAAG,KAAK,EAAC,EAAE,CAAC,CAAC;YAE9D,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;SACxB;KAAA;IAED,kBAAkB;QAIhB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAA;QAEjE,OAAO;YACL,WAAW,EAAE,CAAC,IAAU;gBACtB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAE/B,OAAO,KAAK,CAAC,YAAY,CAAA;gBAEzB,OAAO,KAAK,CAAA;aACb;YACD,aAAa;SACd,CAAA;KACF;IAEa,gBAAgB,CAAC,MAAc;;YAC3C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;iBAC1C,GAAG,CAAC,MAAM,CAAC;iBACX,UAAU,CAAC,IAAI,CAAC;iBAChB,aAAa,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC;iBACrD,GAAG,CAAC,eAAe,CAAC;iBACpB,GAAG,EAAE,CAAA;YAER,OAAO,aAAa,CAAC,IAAI,EAAE,CAAA;SAC5B;KAAA;IAEa,mBAAmB,CAAC,MAAc;;YAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS;iBAC9B,UAAU,CAAC,cAAc,CAAC;iBAC1B,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;iBAC9B,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC;iBAC/B,GAAG,EAAE,CAAA;YAER,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;SAC7B;KAAA;IAEO,+BAA+B;QAIrC,OAAO;YACL,WAAW,EAAE,CAAC,IAAmB,KAAmB,IAAI,CAAC,OAAO,EAAE;YAClE,aAAa,EAAE,CAAC,IAA0C,KACxD,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxC,CAAA;KACF;;;MCzEU,oCACX,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAoB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAGvG,YAAqB,SAA4B,EAAW,gBAAyC;QACnG,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAAW,qBAAgB,GAAhB,gBAAgB,CAAyB;QAEnG,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAA;QACtC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAA;KAC/B;;;MCTU,2BACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAW,IAAI,CAAC,CAAC,CAAC;IAGrE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,YAAY,CAAA;QAClC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;KACtB;IAED,iBAAiB,CAAC,IAAY,EAAE,IAAW;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;aACxC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;aACzB,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;aACzB,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;aAC9B,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,IAAI;YACT,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;gBAAE,MAAM,IAAI,sBAAsB,CAAC,kCAAkC,CAAC,CAAA;YAEvF,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,aAAa,CAAC,sBAAsB,IAAI,YAAY,CAAC,CAAA;YAE/E,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;SAC3B,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;KAC3B;IAEK,oBAAoB,CAAC,WAAqB,EAAE,KAAK,GAAG,CAAC;;YACzD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;iBAC5D,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAC9C,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;iBAC9B,GAAG,EAAE,CAAA;YAER,IAAI,YAAY,CAAC,KAAK;gBAAE,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,CAAA;YAEvE,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7D,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,UAAU,CAAC,GAAG,CAAC,CAAO,QAAQ;gBAAK,QAAC;oBAClC,QAAQ;oBACR,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACxE,EAAC;cAAA,CAAC,CACJ,CAAA;YAED,OAAO,YAAY,CAAA;SACpB;KAAA;IAEK,aAAa,CAAC,QAAkB,EAAE,OAAgD;;YACtF,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAAE,MAAM,IAAI,qBAAqB,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAA;YAEvF,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,QAAQ,GAAG,EAAE,CAAA;YAEnB,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE;gBAC/B,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,QAAQ,CAAC,MAAM,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA;oBAAE,MAAK;gBAE9D,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;qBACpD,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;qBAC9B,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;gBAEhC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;oBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBACpE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;oBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,CAAA;gBAEvD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAA;gBAErC,IAAI,WAAW,CAAC,KAAK;oBAAE,SAAQ;gBAE/B,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;aAC5D;YAED,OAAO,QAAQ,CAAA;SAChB;KAAA;;;MCtEU,0BACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAU,IAAI,CAAC,CAAC,CAAC;IAKpE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAFzC,YAAO,GAAiE,EAAE,CAAA;QAIhF,IAAI,CAAC,cAAc,GAAG,oBAAoB,CAAA;QAC1C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;KACrB;IAEK,SAAS,CAAC,IAAY;;;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC7B,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC9C;aACF,CAAC,CAAA;YAEF,OAAO,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,KAAK,EAAE,CAAA;;KAC7B;IAEK,YAAY,CAAC,MAA0B;;YAC3C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YAE5C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO;;gBACvB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAA,OAAO,CAAC,OAAO,0CAAE,MAAM,CAAC;oBAAE,OAAM;gBAE5D,MAAM,WAAW,GAAG;oBAClB,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,WAAW,EAAE,OAAO,CAAC,IAAI;oBACzB,UAAU,EAAE,OAAO,CAAC,GAAG;iBACxB,CAAA;gBAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAA;gBACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAA;gBAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAA;gBAE1B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;oBAC7B,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;wBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,iCAAM,MAAM,GAAK,WAAW,EAAG,CAAA;oBAC9G,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;wBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,iCAAM,MAAM,GAAK,WAAW,EAAG,CAAA;oBAC7F,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM;wBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,iCAAM,MAAM,GAAK,WAAW,EAAG,CAAA;iBACtF,CAAC,CAAA;aACH,CAAC,CAAA;YAEF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SAC5B;KAAA;;;MC7CU,iCACX,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAU,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAGhG,YAAqB,SAA4B,EAAW,gBAA4C;QACtG,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAAW,qBAAgB,GAAhB,gBAAgB,CAA4B;QAEtG,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;QAChC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;KACrB;;;MCVU,sCACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAU,IAAI,CAAC,CAAC,CAAC;IAGpE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAA;QAC5C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;KACrB;;;MCRU,2BACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAW,IAAI,CAAC,CAAC,CAAC;IAGrE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,WAAW,CAAA;QACjC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;KACtB;;;MCRU,yBACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAS,IAAI,CAAC,CAAC,CAAC;IAGnE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;KACpB;IAED,kBAAkB;QAIhB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAA;QAEjE,OAAO;YACL,WAAW,EAAE,CAAC,IAAY;gBACxB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAE/B,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS;oBAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;gBAEhE,OAAO,KAAK,CAAA;aACb;YACD,aAAa,EAAE,CAAC,IAAmC;gBACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;gBAEpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAA;gBAEpF,OAAO,QAAQ,CAAA;aAChB;SACF,CAAA;KACF;;;MC/BU,wBACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAQ,IAAI,CAAC,CAAC,CAAC;IAGlE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAwBzC,uBAAkB,GAAG,CAAC,KAAY;;YACxC,IAAI,CAAC,EAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,0CAAE,MAAM,CAAA,EAAE;gBAC9B,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ;;oBAC7C,IAAI,CAAC,EAAC,MAAA,QAAQ,CAAC,KAAK,0CAAG,KAAK,CAAC,IAAI,CAAC,CAAA,EAAE;wBAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;wBAE/C,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;qBAC9B;oBAED,OAAO,QAAQ,CAAA;iBAChB,CAAC,CAAA;aACH;YAED,OAAO,KAAK,CAAA;SACb,CAAA;QApCC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG;YACZ,MAAM,EAAE,kBAAkB,CAAC,MAAM;SAClC,CAAA;KACF;IAED,kBAAkB;QAIhB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAA;QACjE,OAAO;YACL,WAAW,EAAE,CAAC,IAAW,KAAmB,WAAW,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,IAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YAC9F,aAAa,EAAE,CAAC,IAAkC;gBAChD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;gBAEpC,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;aACzC;SACF,CAAA;KACF;;;MC3BU,0BACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAU,IAAI,CAAC,CAAC,CAAC;IAGpE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;KACrB;;;MCRU,uCACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAuB,IAAI,CAAC,CAAC,CAAC;IAGjF,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,uBAAuB,CAAA;QAC7C,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAA;KAClC;;;MCRU,mCACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAmB,IAAI,CAAC,CAAC,CAAC;IAG7E,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAA;QACzC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAA;KAC9B;;;MCRU,0BACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAU,IAAI,CAAC,CAAC,CAAC;IAGpE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;KACrB;;;MCTU,8BAA+B,SAAQ,wBAAwB;IAC1E,YAAqB,SAA4B;QAC/C,KAAK,CAAC,SAAS,CAAC,CAAA;QADG,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;KACrC;;;MCFU,uBACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAO,IAAI,CAAC,CAAC,CAAC;IAGjE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QA0BzC,oBAAe,GAAG,CAAC,IAAU;;YACnC,IAAI,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;gBACpG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;gBACpG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;aACrG;YAED,OAAO,IAAI,CAAA;SACZ,CAAA;QAEO,6BAAwB,GAAG,CAAC,iBAAoC,MAAM;YAC5E,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE;YAC9C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;SACzE,CAAC,CAAA;QAEM,sBAAiB,GAAG,CAAC,IAAU;;YACrC,IAAI,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;gBACpG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;gBACpG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;gBACpG,IAAI,CAAC,IAAI,CAAC,SAAS;oBACjB,IAAI,CAAC,IAAI,CAAC,SAAS,YAAY,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;gBAClH,IAAI,CAAC,IAAI,CAAC,SAAS;oBACjB,IAAI,CAAC,IAAI,CAAC,SAAS,YAAY,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;aACnH;YAED,OAAO,IAAI,CAAA;SACZ,CAAA;QAEO,6BAAwB,GAAG,CAAC,iBAAoC,MAAM;YAC5E,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YACzD,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACnF,CAAC,CAAA;QAxDA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;KAClB;IAED,kBAAkB;QAIhB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAA;QAEjE,OAAO;YACL,WAAW,EAAE,CAAC,IAAU;gBACtB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;gBAE/C,OAAO,WAAW,CAAC,YAAY,CAAC,CAAA;aACjC;YACD,aAAa,EAAE,CAAC,IAAiC;gBAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;gBAEpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;aACxC;SACF,CAAA;KACF;;;MC7BU,2BACX,SAAQ,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAW,IAAI,CAAC,CAAC,CAAC;IAErE,YAAqB,SAA4B;QAC/C,KAAK,EAAE,CAAA;QADY,cAAS,GAAT,SAAS,CAAmB;QAE/C,IAAI,CAAC,cAAc,GAAG,WAAW,CAAA;QACjC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;KACtB;;;MCRU,iCAAiC;IAC5C,YAA6B,YAAgC;QAAhC,iBAAY,GAAZ,YAAY,CAAoB;KAAI;IAE3D,0BAA0B,CAAC,IAA4B;;YAC3D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YACjG,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;YAE7B,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,GAAG;gBACZ,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,WAAW,EAAE,KAAK;aACnB,CAAA;SACF;KAAA;IAEK,gBAAgB;;YACpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;YACnG,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;YAE7B,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,GAAG;gBACZ,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,WAAW,EAAE,KAAK;aACnB,CAAA;SACF;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA;SAC5B;KAAA;IAEK,iBAAiB;;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAA;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAA0B,CAAA;YAE5C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YAEvB,OAAO,IAAI,CAAA;SACZ;KAAA;IAEK,sBAAsB,CAAC,KAAa;;YACxC,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;SACvD;KAAA;;;MC5CU,2BAA2B;IACtC,YAA6B,YAAgC;QAAhC,iBAAY,GAAZ,YAAY,CAAoB;KAAI;IAE3D,QAAQ,CAAC,MAAsB;;YACnC,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAClG,MAAM,IAAI,GAAG,IAAI,CAAC,IAA0B,CAAA;gBAE5C,IAAI,CAAC,qBAAqB,EAAE,CAAA;gBAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;gBAEvB,OAAO,IAAI,CAAA;aACZ;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B;oBAAE,MAAM,IAAI,0BAA0B,CAAC,0BAA0B,CAAC,CAAA;gBAChH,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;oBAAE,MAAM,IAAI,iBAAiB,EAAE,CAAA;gBAEtE,MAAM,KAAK,CAAA;aACZ;SACF;KAAA;;;MCfU,qBAAqB;;AACzB,qCAAe,GAAG,CAIvB,aAAwB,EACxB,MAAkC;IAElC,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAoB,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAA;IAEzG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CACzG,CAAA;IACD,MAAM,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IAErD,IAAI,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAA;IACtF,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IAEnH,uBAAS,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,IAAK,WAAW,EAAE;AAChF,CAAC,CAAA;AAEM,yCAAmB,GAAG,CAC3B,UAA6C,KACO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;AAEtE,8CAAwB,GAAG,CAChC,UAAkB,EAClB,MAAwC;IAExC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAiB,CAAC;QACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAgE,EAAE,CAAA;IAExG,MAAM,KAAK,GACT,MAAM,CAAC,IAAI,CACT,CAAC,YAAY;;QACX,OAAA,QAAQ,CAAC,YAAY,CAAC;YACtB,CAAA,MAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAC9B,CAAC,MAAM,KAAK,qBAAqB,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAClG,0CAAE,UAAU,MAAK,UAAU,CAAA;KAAA,CAC/B,IAAI,EAAE,CAAA;IACT,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3C,CAAC,mBAAmB,KAClB,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAC5C,CAAA;IACD,MAAM,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,aAAa,CAAC,CAAA;IAE1C,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAC5B,OAAO,EAAE,aAAa,EAAE,aAAmE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IAEpH,uBACE,aAAa,EAAG,aAAoE,IAAI,UAAU,EAClG,UAAU,IACP,WAAW,EACf;AACH,CAAC;;AChEH,IAAY,kBAYX;AAZD,WAAY,kBAAkB;IAC5B,oCAAc,CAAA;IACd,gCAAU,CAAA;IACV,kCAAY,CAAA;IACZ,gCAAU,CAAA;IACV,oCAAc,CAAA;IACd,gCAAU,CAAA;IACV,kCAAY,CAAA;IACZ,oCAAc,CAAA;IACd,wCAAkB,CAAA;IAClB,yCAAmB,CAAA;IACnB,4CAAsB,CAAA;AACxB,CAAC,EAZW,kBAAkB,KAAlB,kBAAkB;;ACA9B,IAAY,uBAUX;AAVD,WAAY,uBAAuB;IACjC,sCAAW,CAAA;IACX,0CAAe,CAAA;IACf,8CAAmB,CAAA;IACnB,4CAAiB,CAAA;IACjB,kDAAuB,CAAA;IACvB,wCAAa,CAAA;IACb,0CAAe,CAAA;IACf,wCAAa,CAAA;IACb,wCAAa,CAAA;AACf,CAAC,EAVW,uBAAuB,KAAvB,uBAAuB;;MCItB,kBAAkB;;AACtB,wCAAqB,GAAG,CAC7B,MAAW,KAC6C,CAAC,KAAK,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,CAAA;AAE3E,qCAAkB,GAAG,CAC1B,MAAiD,EACjD,WAAoC;IAEpC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IACpE,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACjD,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAA;IAErD,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE;UAC5B,WAAW,CAAC,EAAE;UACd,CAAC,KAAK,KACJ,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;cACpF,IAAI,KAAK,GAAG;cACZ,KAAK,CAAA;IAEf,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;UAC1G,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC;UACvD,SAAS,CAAC,MAAM,CAAC,KAAY,CAAC,CAAA;AACpC,CAAC;;MCbU,qBAAqB;;AACzB,sCAAgB,GAAG,CACxB,MAAqC,EACrC,MAAkC,KAElC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAA0B,EAAE,SAAiB;IACvE,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,CACxD,SAAyD,EACzD,MAAM,CACP,CAAA;IAED,IAAI,CAAC,YAAY,CAAC,cAAc;QAC9B,uCACK,SAAS,GACT;YACD,CAAC,YAAY,CAAC,UAAU,GAAG,qBAAqB,CAAC,kBAAkB,CACjE,SAAyD,EACzD,MAAM,CAAC,SAAS,CAAC,EACjB,MAAM,CACP;SACF,EACF;IAEH,MAAM,WAAW,GAGb,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAElD,uCACK,SAAS,GACT,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAChC,CAAC,aAA8B,EAAE,UAAkB,sCAC9C,aAAa,KAChB,CAAC,UAAU,GAAG,qBAAqB,CAAC,kBAAkB,CACpD,SAAyD,EACzD,WAAW,CAAC,UAAU,CAAC,EACvB,MAAM,CACP,IACD,EACF,EAAE,CACH,EACF;AACH,CAAC,EAAE,EAAE,CAAC,CAAA;AAED,wCAAkB,GAAG,CAC1B,KAAmD,EACnD,OAA8E,EAC9E,MAAkC;IAElC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,eAAe,CAAQ,KAAK,EAAE,MAAM,CAAC,CAAA;IAExF,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACvB,QAAQ,CAAC,OAAO,CAAC;QACjB,KAAK,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC;QACxB,KAAK,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;QACrB,KAAK,CAAC,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,EAAE,CAAC;QAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,GAAG;YAChD,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,CACxD,GAAmD,EACnD,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,KAAK,MAAc,CAChD,CAAA;YACD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAA;YAC1C,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAA;YAExC,uCACK,SAAS,KACZ,CAAC,UAAU,GAAG,qBAAqB,CAAC,kBAAkB,CACpD,GAAmD,EACnD,OAAO,CAAC,GAAG,CAAC,EACZ,YAAY,IAAK,EAAU,CAC5B,IACF;SACF,EAAE,EAAE,CAAC,CAAA;IAER,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAChE,OAAO;YACL,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAiD,GAC7E,qBAAqB,CAAC,qBAAqB,CACzC,OAAO,EACP,oBAAiG,CAClG;SACJ,CAAA;IAEH,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC;QACzE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAA8C,CAAA;IAElF,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;UACzB,OAAO,CAAC,MAAM,CACZ,CAAC,aAAa,EAAE,MAAM,sCACjB,aAAa,GACb,qBAAqB,CAAC,qBAAqB,CAC5C,MAAM,EACN,oBAAiG,CAClG,EACD,EACF,EAAE,CACH;UACD,qBAAqB,CAAC,qBAAqB,CACzC,OAAO,EACP,oBAAiG,CAClG,CAAA;AACP,CAAC,CAAA;AAEM,2CAAqB,GAAG,CAC7B,OAAkD,EAClD,WAAoC,MACf;IACrB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,kBAAkB,CAAC,kBAAkB,CACpG,OAAO,EACP,WAAW,CACZ;CACF,CAAC,CAAA;AAEK,uCAAiB,GAAG,CACzB,OAA8E,EAC9E,WAAoC,KAEpC,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC;MAC7C,WAAW,CAAC,IAAI,KAAK,uBAAuB,CAAC,KAAK;UAChD,qBAAqB,CAAC,sBAAsB,CAAC,OAAO,CAAC;UACrD,kBAAkB,CAChB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAClC,CAAC,eAAe,KACd,eAAe,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAA,CAAC,CACnG,CACF;MACH,kBAAkB,CAAC,MAAM,CAAA;AAExB,4CAAsB,GAAG,CAC9B,OAA8E,KAE9E,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE;MACzB,WAAW;MACX,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI;UAC/B,eAAe;UACf,kBAAkB,CAChB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAClC,CAAC,eAAe,KACd,eAAe,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAA,CAAC,CACnG,CACF;;MChJI,kBAAkB;;AACtB,uCAAoB,GAAG,CAC5B,MAAuC,KAEvC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAEpF,oDAAiC,GAAG,CACzC,MAAkC;IAElC,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CACT,GAAG,CAAC,CAAC,KAAK;QACV,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;QAE5C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;QAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;QAEnC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3B,OAAO,EAAE,CAAC,SAAS,GAAG,kBAAkB,CAAC,iCAAiC,CAAC,UAAU,CAAC,EAAE,CAAA;QAC1F,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,UAAU,CAAC;YAAE,OAAM;QAClE,IAAI,UAAU,CAAC,MAAM;YACnB,OAAO,CAAC,UAAU,CAAC,OAAO;kBACtB;oBACE,CAAC,UAAU,CAAC,UAAU,IAAI,SAAS,GAAG,kBAAkB,CAAC,iCAAiC,CACxF,UAAU,CAAC,MAAM,CAClB;iBACF;kBACD;oBACE,SAAS,EAAE,UAAU,CAAC,UAAU,IAAI,SAAS;oBAC7C,MAAM,EAAE,kBAAkB,CAAC,iCAAiC,CAAC,UAAU,CAAC,MAAM,CAAC;oBAC/E,SAAS,EAAE;wBACT,CAAC,GAAG,UAAU,CAAC,UAAU,QAAQ,GAAG;4BAClC,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU;4BACnC,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC;4BAC5F,QAAQ,EAAE,IAAI;yBACf;qBACF;iBACF,CAAA;QAEP,OAAO,UAAU,CAAC,UAAU,CAAA;KAC7B,EACA,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC,CAAA;AAEM,wCAAqB,GAAG,CAI7B,IAAuC,EACvC,MAAkC,KAElC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU;IAC1C,MAAM,EACJ,aAAa,EACb,MAAM,EAAE,eAAe,EACvB,IAAI,GACL,GAAG,qBAAqB,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAEtE,IAAI,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,uCACK,MAAM,KACT,CAAC,aAAa,GAAG,IAAI;sBACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;sBAC5B,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,IACtG;QACH,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,uCACK,MAAM,KACT,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI;sBACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;sBACtB,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,IAChF;KACJ;IAED,IAAI,CAAC,CAAC,IAAI;QAAE,uCAAY,MAAM,KAAE,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAE;IAE/E,uCAAY,MAAM,KAAE,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAE;AACxE,CAAC,EAAE,EAAE,CAAC,CAAA;AAED,sCAAmB,GAAG,CAI3B,QAAe,EACf,MAAkC,EAClC,MAAM,GAAG,KAAK;;IAEd,MAAM,IAAI,GAAgC,CAAA,MAAA,QAAQ,CAAC,OAAO,+CAAhB,QAAQ,CAAY,KAAI,QAAQ,CAAA;IAE1E,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,aAAa;QACpD,MAAM,EACJ,UAAU,EACV,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAChB,EAAE,EACF,eAAe,GAChB,GAAG,qBAAqB,CAAC,eAAe,CAAC,aAA6D,EAAE,MAAM,CAAC,CAAA;QAEhH,IAAI,eAAe;YAAE,uCAAY,MAAM,GAAK,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE;QAC5F,IAAI,KAAK,CAAC,UAAU,CAAC;YAAE,OAAO,MAAM,CAAA;QACpC,IACE,CAAC,CAAC,gBAAgB;YAClB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC1B,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,eAAK,OAAA,EAAC,MAAA,IAAI,CAAC,aAAa,CAAC,0CAAG,GAAG,CAAC,CAAA,CAAA,EAAA,CAAC,CAAC,MAAM;YAElF,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,OAAO,eAAK,wCAAM,MAAM,KAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,0CAAG,OAAO,CAAC,KAAG,EAAA,oBAC5F,MAAM,EACZ,CAAA;QAEH,IAAI,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACpG,OAAO,MAAM,CAAA;QAEf,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;YACnF,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA;YAExG,uCACK,MAAM,IACL,SAAS,KAAK,SAAS;kBACvB;oBACE,CAAC,UAAU,GAAG;wBACZ,IAAI,EACF,QAAQ,CAAC,aAAa,CAAC,YAAY,SAAS;8BACxC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC;8BAC5E,SAAS;qBAChB;iBACF;kBACD,EAAE,GACP;SACF;QAED,IAAI,CAAC,CAAC,EAAE;YAAE,uCAAY,MAAM,KAAE,CAAC,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,IAAE;QAEnF,uCAAY,MAAM,KAAE,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAE;KACxD,EAAE,EAAc,CAAC,CAAA;AACpB,CAAC;;MCzIU,uBAAuB,GAAG,CAIrC,SAA2D;IAK3D,OAAO,MAAM,wBAAyB,SAAQ,SAAS;QAIrD,YAAY,GAAG,MAAM;YACnB,MAAM,OAAO,GAA4B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAA;YAEpD,KAAK,CAAC,GAAG,MAAM,CAAC,CAAA;YAEhB,IAAI,CAAC,sBAAsB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,KAAI,UAAU,IAAI,CAAC,SAAS,MAAM,CAAA;YAC/F,IAAI,CAAC,uBAAuB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,uBAAuB,KAAI,GAAG,IAAI,CAAC,SAAS,eAAe,CAAA;SACpG;QAEK,MAAM,CAAC,IAAmC;;gBAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAW,CAAC,CAAC,CAAA;gBAEnE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;aACtC;SAAA;QAEK,IAAI,CAAC,IAAW;;gBACpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CACxD,CAAC,KAAK,KAAK,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAClD,CAAA;gBAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM;qBAClC,GAAG,CAAC,CAAC,KAAK;oBACT,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;oBAElD,QACE,qBAAqB,CAAC,mBAAmB,CAAC,aAAa,CAAC;wBACxD,aAAa,CAAC,gBAAgB,IAAI;wBAChC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;wBAChD;4BACE,CAAC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,GAAG,CACzE,CAAC,eAAe;;gCACd,OAAA,CAAA,MAAA,qBAAqB,CAAC,eAAe,CAAC,eAAsB,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,CAAC,0CAAE,UAAU;oCAChG,eAAe,CAAA;6BAAA,CAClB;yBACF;qBACF,EACF;iBACF,CAAC;qBACD,MAAM,CAAC,OAAO,CAAC;qBACf,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;gBAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAChC,IAAI,CAAC,sBAAsB,EAC3B,CAAC,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,CAA+B,EAC1E;oBACE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;iBACtG,CACF,CAAA;gBAED,uCAAY,IAAI,CAAC,OAAO,EAAE,GAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;aAC3G;SAAA;KACK,CAAA;AACV;;MCjEa,uBAAuB,GAAG,CAIrC,SAA2D;IAK3D,OAAO,MAAM,wBAAyB,SAAQ,SAAS;QAGrD,YAAY,GAAG,MAAa;YAC1B,MAAM,OAAO,GAA4B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAA;YAEpD,KAAK,CAAC,GAAG,MAAM,CAAC,CAAA;YAEhB,IAAI,CAAC,sBAAsB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,KAAI,UAAU,IAAI,CAAC,SAAS,QAAQ,CAAA;SAClG;QAEK,MAAM,CAAC,WAA0C;;gBACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAkB,CAAC,CAAA;gBAE1D,MAAM,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAC9B,CAAC,KAAK,KAAK,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAClD,EAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU;oBAClD,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAAE,OAAO,GAAG,CAAA;oBAE3C,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;oBACnF,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;oBAE3E,uCACK,GAAG,KACN,CAAC,YAAY,CAAC,UAAU,GAAG;4BACzB,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC;4BAChE,KAAK;4BACL,QAAQ,EAAE,IAAI;yBACf,IACF;iBACF,EAAE,EAAE,CAAC,CACP,CAAA;aACF;SAAA;KACK,CAAA;AACV;;MCrBa,iBAAiB,GAAG,CAC/B,SAAY;IAEZ,OAAO,MAAM,kBAAmB,SAAQ,SAAS;QAkB/C,YAAY,GAAG,MAAM;YACnB,MAAM,OAAO,GAA6B,MAAM,CAAC,CAAC,CAAC,CAAA;YAEnD,KAAK,CAAC,GAAG,MAAM,CAAC,CAAA;YAEhB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;YAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;YAChC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;YACtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YAC1B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAK,IAAI,CAAC,KAAK,CAAC,iBAAgD,CAAA;SAC7F;QArBD,IAAI,OAAO;YACT,mDACE,cAAc,EAAE,kBAAkB,KAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KACtF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KACpG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;kBAChC,EAAE;kBACF,EAAE,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,GAC9G;SACF;QAcK,QAAQ,CACZ,SAAiB,EACjB,MAAmC,EACnC,SAA2B;;gBAE3B,MAAM,WAAW,GAAG,QAAQ,CAAC;oBAC3B,SAAS;oBACT,SAAS;oBACT,MAAM,EAAE,kBAAkB,CAAC,iCAAiC,CAAC,MAAM,CAAC;iBACrE,CAAC,CAAA;gBAEF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC/B;SAAA;QAEK,KAAK,CACT,SAA0C,EAC1C,MAAmC,EACnC,SAA2B;;gBAE3B,MAAM,WAAW,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,SAAS,CAAC;sBAClE,KAAK,CACH,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;wBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,MAAM,EAAE,kBAAkB,CAAC,iCAAiC,CAAC,MAAM,CAAC,MAAM,CAAC;qBAC5E,CAAC,CAAC,CACJ;sBACD,KAAK,CAAC;wBACJ,SAAS;wBACT,SAAS;wBACT,MAAM,EAAE,kBAAkB,CAAC,iCAAiC,CAAC,MAAM,CAAC;qBACrE,CAAC,CAAA;gBAEN,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC/B;SAAA;QAEK,KAAK,CAAqB,MAAyC;;gBACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;gBAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;oBAC/C,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAC5B,OAAO;iBACR,CAAC,CAAA;gBACF,MAAM,MAAM,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBAEzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;gBAEzE,OAAO,MAAM,CAAC,IAAI,CAAA;aACnB;SAAA;QAED,yBAAyB,CAAY,KAAgB;YACnD,IAAI,MAAM,CAAC,KAAY,CAAC;gBAAE,OAAO,MAAM,CAAA;YACvC,IAAI,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,QAAQ,CAAA;YACpC,IAAI,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAA;YACtC,IAAI,KAAK,YAAY,IAAI;gBAAE,OAAO,aAAa,CAAA;YAC/C,IAAI,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAClC,IAAI,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAA;YAErC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,yBAAyB,CAAC,KAAa;YACrC,IAAI,CAAC,kDAAkD,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAEjF,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;YAE5B,IAAIC,OAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAA;YAEvC,OAAO,IAAI,CAAA;SACZ;QAED,qBAAqB,CAAC,IAAqC;YACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAEzE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;SACpC;QAED,mBAAmB,CAAC,QAAe,EAAE,MAAM,GAAG,KAAK;YACjD,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAC7E;KACF,CAAA;AACH;;MC7Ha,uBAAuB,GAAG,CAIrC,SAA2D;IAK3D,MAAM,gBAAgB,GAAG,CAAC,OAA6B;QACrD,IAAI,OAAO,YAAY,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1D,IAAI,KAAK,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;YAAE,OAAO,OAAO,CAAA;QAC1C,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7G,OAAO,IAAI,CAAA;QAEb,OAAO,OAAO,CAAC,KAAK,CAAA;KACrB,CAAA;IAED,OAAO,MAAM,wBAAyB,SAAQ,SAAS;QAKrD,YAAY,GAAG,MAAM;YACnB,MAAM,OAAO,GAA4B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAA;YAEpD,KAAK,CAAC,GAAG,MAAM,CAAC,CAAA;YAEhB,IAAI,CAAC,sBAAsB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,KAAI,UAAU,IAAI,CAAC,SAAS,QAAQ,CAAA;YACjG,IAAI,CAAC,uBAAuB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,uBAAuB,KAAI,GAAG,IAAI,CAAC,SAAS,YAAY,CAAA;YAChG,IAAI,CAAC,mBAAmB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,KAAI,GAAG,IAAI,CAAC,SAAS,mBAAmB,CAAA;SAChG;QAEK,MAAM,CAAC,IAAmC;;gBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;gBAE1C,MAAM,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAC9B,CAAC,KAAK,KAAK,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAClD,EAC/B;oBACE,IAAI,EAAE;wBACJ,IAAI,EAAE,IAAI,CAAC,uBAAuB;wBAClC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;wBACvE,QAAQ,EAAE,IAAI;qBACf;oBACD,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC1G,CACF,CAAA;gBAED,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;aACxC;SAAA;QAED,aAAa,CAAC,MAAqC;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;YAExB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,EAAE,CAAA;YAElD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,UAAU,sCACZ,IAAI,IACH,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAC9F,EACF,EAAE,CACH,CAAA;SACF;QAED,kBAAkB,CAAC,IAAoB;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAE5C,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU;;gBACzD,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAAE,OAAO,GAAG,CAAA;gBAE3C,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBACnF,MAAM,KAAK,GAAG,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,EAAE,+CAAhB,YAAY,EAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;gBAE3G,uCACK,GAAG,KACN,CAAC,YAAY,CAAC,UAAU,GAAG,KAAK,IACjC;aACF,EAAE,EAA+C,CAAC,CAAA;SACpD;KACK,CAAA;AACV;;MCjGa,oBAAoB,GAAG,CAIlC,SAA2D;IAE3D,OAAO,MAAM,qBAAsB,SAAQ,SAAS;QAGlD,YAAY,GAAG,MAAM;YACnB,MAAM,OAAO,GAAyB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAA;YAEjD,KAAK,CAAC,GAAG,MAAM,CAAC,CAAA;YAEhB,IAAI,CAAC,mBAAmB,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,KAAI,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAA;SACrF;QAEK,GAAG,CAAC,WAAuC;;gBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;gBACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU;;oBAClD,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAAE,OAAO,GAAG,CAAA;oBAE3C,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;oBACnF,MAAM,KAAK,GACT,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,EAAE,+CAAhB,YAAY,EAAO,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;oBAExG,uCACK,GAAG,KACN,CAAC,YAAY,CAAC,UAAU,GAAG;4BACzB,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC;4BAChE,KAAK;4BACL,QAAQ,EAAE,IAAI;yBACf,IACF;iBACF,EAAE,EAAE,CAAC,CACP,CAAA;gBACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;gBAE7C,IAAI,KAAK,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,aAAa,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;gBAElF,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;aACpE;SAAA;KACF,CAAA;AACH;;MCnDa,qBAAqB,GAAG,CAInC,SAA2D;IAE3D,OAAO,MAAM,sBAAuB,SAAQ,SAAS;QAC7C,IAAI,CAAC,MAAoC;;;gBAC7C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;gBAC1D,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,IAAI,CAAA;gBAChD,MAAM,cAAc,oCACd,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KACvG,KAAK,CAAC,OAAO,CAAC;sBACd,EAAE;sBACF;wBACE,KAAK,EAAE;4BACL,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;4BACnE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,WAAW;4BAClC,QAAQ,EAAE,IAAI;yBACf;qBACF,EACN,CAAA;gBACD,MAAM,SAAS,oCACT,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,IAC5B,cAAc,CAClB,CAAA;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;oBAC9B;wBACE,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;8BACjB,MAAM,CAAC,MAAM;iCACV,GAAG,CACF,CAAC,SAAS;;gCACR,OAAA,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,KAAK,SAAS,CAAC,mCAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,SAAS,CAAC,CAAA;6BAAA,CACpF;iCACA,MAAM,CAAC,OAAO,CAAC;8BAClB,IAAI,CAAC,MAAM;wBACf,SAAS;qBACV;oBACD,IAAI,WAAW;0BACX,EAAE;0BACF;4BACE;gCACE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,YAAY;gCACxC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gCAClC,SAAS,EAAE,cAAc;6BACF;yBAC1B,CAAC;iBACP,CAAC,CAAA;gBACF,MAAM,IAAI,GAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC1F,MAAM,KAAK,GAAG,WAAW,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,SAAS,CAAC,KAAK,CAAA;gBAElF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAA;;SACvD;KACF,CAAA;AACH;;MC/Ca,qBAAqB,GAAG,CAKnC,SAA2D;IAY3D,OAAO,MAAM,sBACX,SAAQ,uBAAuB,CAC7B,oBAAoB,CAClB,qBAAqB,CACnB,uBAAuB,CAAC,uBAAuB,CAAC,SAAgD,CAAC,CAAC,CACnG,CACF,CACF;KACyC,CAAA;AAC9C;;MCvCa,qBAAsB,SAAQ,QAAQ;;;MCItC,oBAAqB,SAAQ,OAAO;CAahD;AADC;IADC,IAAI,CAAC,MAAM,uBAAuB,CAAC;;yDACG;;MCZ5B,uBAAwB,SAAQ,UAAU;CAMtD;AAJC;IADC,IAAI,CAAC,MAAM,oBAAoB,CAAC;8BAC5B,oBAAoB;oDAAA;AAGzB;IADC,IAAI,CAAC,MAAM,oBAAoB,CAAC;8BACxB,oBAAoB;wDAAA;;MCTlB,oBAAqB,SAAQ,OAAO;IAAjD;;QAME,SAAI,GAAK,EAAE,CAAA;QACX,gBAAW,GAAK,KAAK,CAAA;KACtB;;;MCUY,+BACX,SAAQ,qBAAqB,CAAC,iBAAiB,CAAwB,IAAI,CAAC,CAAC;IAG7E,YACE,QAAgB,EAChB,WAAqC,EACpB,iBAAiD;QAElE,KAAK,CAAC;YACJ,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,QAAQ;YACf,QAAQ;YACR,WAAW;YACX,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE;gBACtF,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;gBAC/C,MAAM;gBACN,aAAa;gBACb,OAAO;gBACP,WAAW;gBACX,MAAM;gBACN,MAAM;gBACN,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE;gBACnD,EAAE,mBAAmB,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;gBACvD,EAAE,yBAAyB,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE;gBACpE,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;gBAC3C,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE;gBACrD;oBACE,UAAU,EAAE;wBACV,UAAU,EAAE,eAAe;wBAC3B,IAAI,EAAE,uBAAuB,CAAC,KAAK;wBACnC,IAAI,EAAE,CAAC,IAAa,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC;wBACrG,eAAe,EAAE,CAAC,KAAK;4BACrB,OAAO;gCACL,eAAe,EAAE,KAAK,CAAC,KAAK;gCAC5B,aAAa,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,EAAE;6BACjC,CAAA;yBACF;wBACD,cAAc,EAAE,CAAC,QAAa;4BAC5B,wCACM,QAAQ,CAAC,KAAK,GAAG,EAAE,eAAe,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,KACzD,QAAQ,CAAC,IAAI,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAC1D;yBACF;qBACF;iBACF;gBACD,SAAS;gBACT,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;gBAC3C,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;gBAC3C;oBACE,QAAQ,EAAE;wBACR,UAAU,EAAE,UAAU;wBACtB,MAAM,EAAE,CAAC,YAAY,CAAC;wBACtB,IAAI,EAAE,CAAC,KAA+B,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;wBAChG,EAAE,EAAE,CAAC,UAAU,KACb,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM;4BAC7B,UAAU,EAAE,CAAC,SAAS;yBACvB,CAAC,CAAC;qBACN;iBACF;gBACD;oBACE,QAAQ,EAAE;wBACR,UAAU,EAAE,UAAU;wBACtB,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;wBAChC,eAAe,EAAE,CAAC,KAAK,MAAM;4BAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;yBAC1B,CAAC;qBACH;iBACF;aACF;SACF,CAAC,CAAA;QAhEe,sBAAiB,GAAjB,iBAAiB,CAAgC;KAiEnE;IAEK,MAAM,CAAC,MAAqD;;;;;YAChE,MAAM,EAAE,QAAQ,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAA9B,YAAqB,CAAS,CAAA;YAEpC,OAAO,OAAM,MAAM,4CAAM,IAAI,KAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAG;SAC3F;KAAA;IAEK,GAAG,CAAC,WAAuD;;;;;;YAC/D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;kBAChC,MAAA,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,0CAAG,CAAC,CAAC;kBACzE,OAAM,GAAG,YAAC,WAAW,CAAC,CAAA;;KAC3B;IAEK,MAAM,CAAC,MAAqD;;;;;YAChE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAArD,8BAA4C,CAAS,CAAA;YAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YACrD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,MAAM,OAAM,MAAM,4BAAG,EAAE,IAAK,IAAI,EAAG,CAAA;YAEpD,QAAQ,CAAC,QAAQ,GAAG,QAAQ,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;YAC9E,QAAQ,CAAC,QAAQ,GAAG,QAAQ,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;YAE9E,OAAO,QAAQ,CAAA;SAChB;KAAA;IAEK,iBAAiB,CAAC,IAAY,EAAE,IAAW;;YAC/C,IAAI,CAAC,IAAI;gBAAE,OAAM;YAEjB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAErF,IAAI,KAAK,GAAG,CAAC;gBAAE,MAAM,IAAI,sBAAsB,CAAC,kCAAkC,CAAC,CAAA;YACnF,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,aAAa,CAAC,sBAAsB,IAAI,YAAY,CAAC,CAAA;YAE3E,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;SACpB;KAAA;IAEK,oBAAoB,CAAC,WAAqB,EAAE,KAAK,GAAG,CAAC;;YACzD,IAAI,EAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,CAAA;gBAAE,OAAO,EAAE,CAAA;YAEnC,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;YACzF,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;YAC5E,MAAM,UAAU,GAAG,EAAE,CAAA;YAErB,IAAI,mBAAmB,CAAC,MAAM;gBAC5B,UAAU,CAAC,IAAI,CACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC;oBAClB,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;iBAC9G,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAC7B,CAAA;YACH,IAAI,gBAAgB,CAAC,MAAM;gBACzB,UAAU,CAAC,IAAI,CACb,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC;oBAClB,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;iBAClG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAC7B,CAAA;YAEH,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAA;YAEjC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,UAAU,CAAC,GAAG,CAAC,CAAO,QAAQ;gBAAK,QAAC;oBAClC,QAAQ;oBACR,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACxE,EAAC;cAAA,CAAC,CACJ,CAAA;YAED,OAAO,YAAY,CAAA;SACpB;KAAA;IAEK,aAAa,CAAC,QAAkB,EAAE,OAAgD;;;YACtF,IAAI,EAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,0CAAE,MAAM,CAAA;gBAAE,OAAO,EAAE,CAAA;YAE1C,MAAM,QAAQ,GAAG,EAAE,CAAA;YACnB,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,iBAC9D,OAAO,kBACL,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,EACpD,SAAS,EAAE,IAAI,KACX,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,IAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAExF,MAAM,EAAE;oBACN,IAAI;oBACJ,MAAM;oBACN,MAAM;oBACN,QAAQ;oBACR,YAAY;oBACZ,OAAO;oBACP,WAAW;oBACX,8BAA8B;oBAC9B,iBAAiB;oBACjB,OAAO;oBACP,WAAW;oBACX,MAAM;oBACN,KAAK;oBACL,KAAK;oBACL,OAAO;oBACP,WAAW;oBACX,aAAa;oBACb,OAAO;oBACP,KAAK;oBACL,MAAM;oBACN,MAAM;oBACN,MAAM;oBACN,eAAe;iBAChB,KACG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,IAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAC/D,CAAA;YAEF,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;YAE9B,OAAO,QAAQ,CAAA;;KAChB;IAEa,KAAK,CAAC,EAAU;;;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAAE,OAAO,EAAE,CAAA;YAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAElE,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,EAAE;gBAAE,OAAO,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,EAAE,CAAA;YAEvC,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAA;;KAC5D;IAEa,cAAc,CAC1B,UAAkB,EAClB,EAAE,QAAQ,EAAmE;;YAE7E,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;gBACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,EAAE;oBAChE,KAAK,EAAE;wBACL,IAAI,EAAE,2BAA2B;wBACjC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;qBAC5C;iBACF,CAAC,CAAA;gBAEF,OAAO,EAAE,CAAA;aACV;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;YAElD,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAA;YAEpE,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,EAAE;gBAChE,KAAK,EAAE;oBACL,IAAI,EAAE,2BAA2B;oBACjC,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;iBAC5C;aACF,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,EAAE;gBAChE,OAAO,EAAE;oBACP,IAAI,EAAE,kCAAkC;oBACxC,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;iBACnG;aACF,CAAC,CAAA;YAEF,OAAO,SAAS,CAAC,QAAQ,CAAA;SAC1B;KAAA;IAEa,cAAc,CAC1B,UAAkB,EAClB,EAAE,QAAQ,EAAmE;;YAE7E,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;YAElD,IAAI,CAAC,SAAS,CAAC,QAAQ;gBAAE,OAAM;YAE/B,MAAM,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,CAAC,aAAa,CAAC,EAAE;gBACrE,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;oBAClC,IAAI,EAAE,oCAAoC;oBAC1C,QAAQ,EAAE,IAAI;iBACf;gBACD,IAAI,EAAE;oBACJ,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC;oBACtC,IAAI,EAAE,6BAA6B;oBACnC,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAA;YAEF,OAAO,SAAS,CAAC,QAAQ,CAAA;SAC1B;KAAA;;;MC3OU,8BACX,SAAQ,qBAAqB,CAAC,iBAAiB,CAAuB,IAAI,CAAC,CAAC;IAsB5E,YAAY,QAAgB,EAAE,WAAqC;QACjE,KAAK,CAAC;YACJ,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,oBAAoB;YAC3B,QAAQ;YACR,WAAW;YACX,MAAM,EAAE,EAAE;SACX,CAAC,CAAA;QA2gBI,sBAAiB,GAAG,CAAC,KAA0B,sCAClD,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,KACnF,SAAS,EAAE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,EAC/F,SAAS,EAAE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,EAC/F,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,OAAO,EAAE,KAAK,CAAC,QAAQ,IACvB,CAAA;QAEM,uBAAkB,GAAG,CAAC,MAAqB,sCAC9C,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,KAC/E,SAAS,EAAE,MAAM,CAAC,QAAQ,EAC1B,QAAQ,EAAE,MAAM,CAAC,OAAO,IACxB,CAAA;QArhBA,MAAM,YAAY,GAA8C;YAC9D,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE;YACtF,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;YAC/C,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE;YAChD,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;YAChC,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;YAC9B,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;YAC9B,OAAO;YACP,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;YAC3C;gBACE,WAAW,EAAE;oBACX,UAAU,EAAE,aAAa;oBACzB,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM;wBAC5B,WAAW;wBACX,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,UAAU,EAAE,IAAI,CAAC,YAAY;wBAC7B,QAAQ,EAAE,IAAI,CAAC,UAAU;wBACzB,KAAK,EAAE,IAAI,CAAC,iBAAiB;qBAC9B,CAAC;oBACF,cAAc,EAAE,CAAC,QAAQ;wBACvB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;wBAE/C,kFACM,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,KAC5D,OAAO,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,KACjE,OAAO,CAAC,UAAU,IAAI;4BACxB,YAAY,EAAE,OAAO,CAAC,UAAU;yBACjC,KACG,OAAO,CAAC,QAAQ,IAAI;4BACtB,UAAU,EAAE,OAAO,CAAC,QAAQ;yBAC7B,KACG,OAAO,CAAC,KAAK,IAAI;4BACnB,iBAAiB,EAAE,OAAO,CAAC,KAAK;yBACjC,GACF;qBACF;oBACD,eAAe,EAAE,CAAC,eAAe,iFAC3B,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,KAAI,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE,KAC5E,eAAe,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,aAAa,EAAE,KACjF,eAAe,CAAC,UAAU,IAAI;wBAChC,YAAY,EAAE,eAAe,CAAC,UAAU;qBACzC,KACG,eAAe,CAAC,QAAQ,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,KACpE,eAAe,CAAC,KAAK,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,KAAK,EAAE,GACzE;iBACH;aACF;YACD,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE;YAClD,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;YAC9C,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;YAC1C,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE;YACzD,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;YAC/C;gBACE,MAAM,EAAE;oBACN,UAAU,EAAE,QAAQ;oBACpB,EAAE,EAAE,CAAC,KAAK,eAAK,QAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,CAAC,GAAG,KAAK,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,+CAAX,KAAK,EAAS,KAAK,CAAC,KAAI,EAAE,IAAI,GAAG,IAAI,EAAC,EAAA;iBAChF;aACF;YACD;gBACE,UAAU,EAAE;oBACV,UAAU,EAAE,YAAY;oBACxB,EAAE,EAAE,CAAC,KAAK,eAAK,QAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,CAAC,GAAG,KAAK,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,+CAAX,KAAK,EAAS,KAAK,CAAC,KAAI,EAAE,IAAI,GAAG,IAAI,EAAC,EAAA;iBAChF;aACF;YACD,MAAM;YACN;gBACE,KAAK,EAAE;oBACL,UAAU,EAAE,OAAO;oBACnB,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,MAAiB;wBACjC,KAAK;wBACL,SAAS,EAAE,IAAI,CAAC,UAAU;wBAC1B,4BAA4B,EAAE,IAAI,CAAC,8BAA8B;wBACjE,eAAe,EAAE,IAAI,CAAC,gBAAgB;qBACvC,CAAC;oBACF,cAAc,EAAE,CAAC,QAAQ;wBACvB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;wBAE/C,oEACM,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KACpE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,KACnF,CAAC,OAAO,CAAC,4BAA4B,IAAI,OAAO,CAAC,4BAA4B,KAAK,CAAC,KAAK;4BAC1F,8BAA8B,EAAE,OAAO,CAAC,4BAA4B;yBACrE,KACG,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,KAAK,CAAC,KAAK;4BAChE,gBAAgB,EAAE,OAAO,CAAC,eAAe;yBAC1C,GACF;qBACF;oBACD,eAAe,EAAE,CAAC,SAAS,mEACrB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,KAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KACnD,SAAS,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,KAC/D,SAAS,CAAC,4BAA4B,IAAI,CAAC,IAAI;wBACjD,8BAA8B,EAAE,SAAS,CAAC,4BAA4B;qBACvE,KACG,SAAS,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,CAAC,eAAe,EAAE,GACrF;iBACH;aACF;YACD,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;YAC3C,EAAE,4BAA4B,EAAE,EAAE,UAAU,EAAE,gCAAgC,EAAE,EAAE;YAClF,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE;YACvD,WAAW;YACX,KAAK;YACL;gBACE,KAAK,EAAE;oBACL,UAAU,EAAE,OAAO;oBACnB,IAAI,EAAE,CAAC,QAAgB,MAAM,EAAE,QAAQ,EAAE,CAAC;oBAC1C,EAAE,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,GAAG,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC;iBAClE;aACF;YACD,MAAM;YACN,MAAM;YACN,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,CAAC,KAAK,EAAE,EAAE;YACrE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;YACnC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;YAC3C,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;YAC3C;gBACE,IAAI,EAAE;oBACJ,UAAU,EAAE,mBAAmB;oBAC/B,OAAO,EAAE;wBACP,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;wBACzB,UAAU,EAAE,yBAAyB;qBACtC;oBACD,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC5C,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;iBAC1C;aACF;YACD,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE;SACpD,CAAA;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,YAAY;YACf;gBACE,UAAU,EAAE;oBACV,UAAU,EAAE,YAAY;oBACxB,MAAM,EAAE,CAAC,aAAa,CAAC;oBACvB,eAAe,EAAE,CAAC,KAAK,MAAM;wBAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;qBAC5E,CAAC;oBACF,EAAE,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,UAAU,CAAC;oBAC/D,IAAI,EAAE,CAAC,UAAqC,KAC1C,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,CAAC,CAAC,QAAQ,eAAK,OAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,0CAAE,QAAQ,EAAE,CAAA,EAAA,CAAC,KAAI,EAAE;iBACzE;aACF;YACD;gBACE,WAAW,EAAE;oBACX,UAAU,EAAE,cAAc;oBAC1B,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;oBACrC,MAAM,EAAE;wBACN,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;wBAC3C,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE;wBAClD,UAAU;wBACV,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;qBACrG;iBACF;aACF;YACD;gBACE,OAAO,EAAE;oBACP,UAAU,EAAE,SAAS;oBACrB,gBAAgB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;oBACtC,MAAM,EAAE,IAAI,CAAC,aAAa;iBAC3B;aACF;YACD;gBACE,QAAQ,EAAE;oBACR,UAAU,EAAE,UAAU;oBACtB,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;oBAChC,eAAe,EAAE,CAAC,KAAK,MAAM;wBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;qBAC1B,CAAC;iBACH;aACF;SACF,CAAA;KACF;IA5MD,IAAY,aAAa;QACvB,OAAO;YACL,IAAI;YACJ,MAAM;YACN,MAAM;YACN,QAAQ;YACR,OAAO;YACP,UAAU;YACV,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE;YACzC,QAAQ;YACR,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE;YACvC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;YAC3C,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;SAC5C,CAAA;KACF;IA6LK,MAAM,CAAC,MAAoD;;;;;YAC/D,MAAM,EAAE,QAAQ,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAA9B,YAAqB,CAAS,CAAA;YACpC,MAAM,OAAO,GAAG,MAAM,OAAM,MAAM,YAChC,IAAI,iCAAM,IAAI,KAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC,CACzF,CAAA;YAED,IAAI;gBACF,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;aAChF;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;gBAErC,MAAM,KAAK,CAAA;aACZ;YAED,OAAO,OAAO,CAAA;SACf;KAAA;IAEK,GAAG,CAAC,WAAsD;;;;;;YAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;kBACzC,MAAA,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,0CAAG,CAAC,CAAC;kBACzE,MAAM,OAAM,GAAG,YAAC,WAAW,CAAC,CAAA;YAEhC,IAAI,OAAO,CAAC,SAAS;gBAAE,MAAM,IAAI,aAAa,CAAC,oCAAoC,CAAC,CAAA;YAEpF,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;YAEnF,OAAO,OAAO,CAAA;;KACf;IAEK,IAAI,CAAC,MAAmD;;;;;YAC5D,MAAM,KAAkC,MAAM,IAAI,EAAE,EAA9C,EAAE,OAAO,EAAE,MAAM,OAA6B,EAAxB,OAAO,cAA7B,qBAA+B,CAAe,CAAA;YACpD,MAAM,UAAU,GACd,MAAM;gBACL,IAAI,CAAC,MAAM;qBACT,GAAG,CAAC,CAAC,KAAK,MAAM,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;qBAChF,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,SAAS,CAGpC,CAAA;YAEN,OAAO,OAAM,IAAI,4CACZ,OAAO,KACV,OAAO,kCAAO,OAAO,KAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAC5D,MAAM,EAAE,UAAU,KAClB;SACH;KAAA;IAEK,SAAS,CAAC,IAAY;;;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC7B,OAAO,EAAE;oBACP,IAAI;iBACL;gBACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAC5B,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CACiB;gBACjF,OAAO,EAAE;oBACP,WAAW,EAAE,KAAK;iBACnB;aACF,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,KAAK,EAAE,CAAA;YAErC,OAAO,OAAO,CAAA;;KACf;IAEK,MAAM,CAAC,MAAoD;;;;;YAC/D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAAnF,kEAA0E,CAAS,CAAA;YACzF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YACrD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YACzC,MAAM,OAAO,GAAG,MAAM,OAAM,MAAM,4BAAG,EAAE,IAAK,IAAI,EAAG,CAAA;YAEnD,OAAO,CAAC,UAAU,GAAG,UAAU,KAAK,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;YACrF,OAAO,CAAC,WAAW,GAAG,WAAW,KAAK,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YACzF,OAAO,CAAC,OAAO,GAAG,OAAO,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,QAAQ,GAAG,QAAQ,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;YAE7E,OAAO,OAAO,CAAA;SACf;KAAA;IAEK,YAAY,CAAC,MAA0B;;YAC3C,MAAM,iBAAiB,GAAG;gBACxB,MAAM,EACJ,MAAM,KAAK,SAAS;sBAChB,EAAE,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,EAAE;sBACrC,EAAE,CAAC,kBAAkB,CAAC,MAAM,GAAG,MAAM,KAAK,UAAU,EAAE;aAC7D,CAAA;YACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CACxC,SAAS,EACT,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EACzF;gBACE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC3F,CACF,CAAA;YAED,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,OAAO,EAAE,OAAO,KAAK;gBACpB,GAAG,OAAO;gBACV,GAAG,OAAO,CAAC,OAAO;qBACf,MAAM,CACL,CAAC,MAAM,KACL,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;qBACjE,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;qBAChD,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CACrD;qBACA,GAAG,CAAC,CAAC,MAAM,sCACP,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KACjC,SAAS,EAAE,OAAO,CAAC,EAAE,EACrB,WAAW,EAAE,OAAO,CAAC,IAAI,EACzB,UAAU,EAAE,OAAO,CAAC,GAAG,IACvB,CAAC;aACN,EACD,EAA6B,CAC9B,CAAA;SACF;KAAA;IAEa,gBAAgB,CAC5B,SAAiB,EACjB,EAAE,UAAU,EAAoE;;YAEhF,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE;gBAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,EAAE;oBAChE,KAAK,EAAE;wBACL,IAAI,EAAE,2BAA2B;wBACjC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;qBAC1C;iBACF,CAAC,CAAA;gBAEF,OAAO,EAAE,CAAA;aACV;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;YAEpD,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAA;YAExE,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,EAAE;gBAChE,KAAK,EAAE;oBACL,IAAI,EAAE,2BAA2B;oBACjC,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;iBAC1C;aACF,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,EAAE;gBAChE,OAAO,EAAE;oBACP,IAAI,EAAE,kCAAkC;oBACxC,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;iBACtG;aACF,CAAC,CAAA;YAEF,OAAO,SAAS,CAAC,UAAU,CAAA;SAC5B;KAAA;IAEa,iBAAiB,CAC7B,SAAiB,EACjB,EAAE,WAAW,EAAqE;;YAElF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;YAErD,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,eAAe,CAAC,EAAE;gBAC3D,KAAK,EAAE;oBACL,IAAI,EAAE,sBAAsB;oBAC5B,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;iBAC9C;aACF,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,eAAe,CAAC,EAAE;gBAC3D,OAAO,EAAE;oBACP,IAAI,EAAE,6BAA6B;oBACnC,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM;wBAChD,cAAc,EAAE,SAAS;wBACzB,UAAU,EAAE,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;wBACzD,QAAQ,EAAE,UAAU,CAAC,QAAQ;qBAC9B,CAAC,CAAC;iBACJ;aACF,CAAC,CAAA;YAEF,OAAO,SAAS,CAAC,WAAW,CAAA;SAC7B;KAAA;IAEa,aAAa,CACzB,SAAiB,EACjB,EAAE,OAAO,EAAiE;;YAE1E,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAA;YACvB,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;gBACtD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAO,UAAU;oBACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;oBAE3D,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAA;iBAClB,CAAA,CAAC,CACH,CAAA;gBAED,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,eAAe,CAAC,EAAE;oBAC9D,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC9G,CAAC,CAAA;gBAEF,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;aACzF;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;YAEjD,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAA;YAElE,OAAO,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAO,UAAU;gBACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;gBAE3D,IAAI,MAAM,CAAC,EAAE;oBACX,OAAO,IAAI,CAAC,iBAAiB,CAC3B,CACE,MAAM,IAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE,IAAI,CAAC,aAAa,EAAE;wBACrE,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;4BACxB,IAAI,EAAE,iCAAiC;4BACvC,QAAQ,EAAE,IAAI;yBACf;wBACD,IAAI,EAAE;4BACJ,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;4BACtE,IAAI,EAAE,0BAA0B;4BAChC,QAAQ,EAAE,IAAI;yBACf;qBACF,CAAC,EACF,2BAA2B,CAC9B,CAAA;gBAEH,OAAO,IAAI,CAAC,iBAAiB,CAC3B,CACE,MAAM,IAAI,CAAC,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC,aAAa,EAAE;oBACnE,MAAM,EAAE;wBACN,KAAK,EAAE,IAAI,iCAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,KAAE,UAAU,EAAE,SAAS,KAAI,CAAC,IAAI,CAAC,CAAC;wBACtF,IAAI,EAAE,6BAA6B;wBACnC,QAAQ,EAAE,IAAI;qBACf;iBACF,CAAC,EACF,yBAAyB,CAC5B,CAAA;aACF,CAAA,CAAC,CACH,CAAA;SACF;KAAA;IAEa,cAAc,CAC1B,SAAiB,EACjB,EAAE,QAAQ,EAAkE;;YAE5E,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;YAElD,IAAI,CAAC,SAAS,CAAC,QAAQ;gBAAE,OAAM;YAE/B,MAAM,IAAI,CAAC,QAAQ,CAAC,+BAA+B,EAAE,CAAC,YAAY,CAAC,EAAE;gBACnE,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;oBAChC,IAAI,EAAE,mCAAmC;oBACzC,QAAQ,EAAE,IAAI;iBACf;gBACD,IAAI,EAAE;oBACJ,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC;oBACrC,IAAI,EAAE,4BAA4B;oBAClC,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAA;YAEF,OAAO,SAAS,CAAC,QAAQ,CAAA;SAC1B;KAAA;IAEa,KAAK,CAAC,EAAU;;;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAAE,OAAO,EAAE,CAAA;YAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAElE,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,EAAE;gBAAE,OAAO,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,EAAE,CAAA;YAEvC,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;;KAC3D;IAEa,oBAAoB,CAAC,SAAiB;;YAClD,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE;gBACtF,KAAK,EAAE;oBACL,KAAK,EAAE;wBACL,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;qBAC/B;oBACD,IAAI,EAAE,yBAAyB;oBAC/B,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAA;YAEF,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;SACpE;KAAA;IAEa,UAAU,CAAC,MAAqB,EAAE,SAAiB;;YAC/D,IAAI,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAA;YAE5B,IAAI,YAA2B,CAAA;YAE/B,IAAI,MAAM,CAAC,QAAQ;gBAAE,YAAY,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YAC9G,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK;gBAChD,YAAY,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YAE7G,OAAO,YAAY,IAAI,MAAM,CAAA;SAC9B;KAAA;IAEa,mBAAmB,CAAC,QAAgB,EAAE,SAAiB,EAAE,OAAgB;;YACrF,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE;gBACtF,KAAK,EAAE;oBACL,KAAK,kBACH,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAC9B,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KACxB,OAAO,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAC9C;oBACD,IAAI,EAAE,yBAAyB;oBAC/B,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAA;YAEF,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;SAC1D;KAAA;IAEa,yBAAyB,CACrC,MAAc,EACd,KAAa,EACb,SAAiB,EACjB,OAAgB;;YAEhB,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE;gBACtF,KAAK,EAAE;oBACL,KAAK,kBACH,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAC9B,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EACvB,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KACjB,OAAO,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAC9C;oBACD,IAAI,EAAE,yBAAyB;oBAC/B,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAA;YAEF,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;SAC1D;KAAA;;;MC/jBU,8BACX,SAAQ,qBAAqB,CAAC,iBAAiB,CAAuB,IAAI,CAAC,CAAC;IAG5E,YAAY,QAAgB,EAAE,WAAqC;QACjE,KAAK,CAAC;YACJ,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,oBAAoB;YAC3B,QAAQ;YACR,WAAW;YACX,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE;gBACtF,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;gBAC/C,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE,EAAE,EAAE;gBAC3G,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;gBAC9B,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;gBAC3C;oBACE,KAAK,EAAE;wBACL,UAAU,EAAE,OAAO;wBACnB,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,MAAiB;4BACjC,KAAK;4BACL,SAAS,EAAE,IAAI,CAAC,UAAU;4BAC1B,4BAA4B,EAAE,IAAI,CAAC,8BAA8B;4BACjE,eAAe,EAAE,IAAI,CAAC,gBAAgB;yBACvC,CAAC;wBACF,cAAc,EAAE,CAAC,QAAQ;4BACvB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;4BAE/C,oEACM,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KACpE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,KACnF,CAAC,OAAO,CAAC,4BAA4B,IAAI,OAAO,CAAC,4BAA4B,KAAK,CAAC,KAAK;gCAC1F,8BAA8B,EAAE,OAAO,CAAC,4BAA4B;6BACrE,KACG,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,KAAK,CAAC,KAAK;gCAChE,gBAAgB,EAAE,OAAO,CAAC,eAAe;6BAC1C,GACF;yBACF;wBACD,eAAe,EAAE,CAAC,SAAS,mEACrB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,KAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KACnD,SAAS,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,KAC/D,SAAS,CAAC,4BAA4B,IAAI,CAAC,IAAI;4BACjD,8BAA8B,EAAE,SAAS,CAAC,4BAA4B;yBACvE,KACG,SAAS,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,CAAC,eAAe,EAAE,GACrF;qBACH;iBACF;gBACD,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;gBAC3C,EAAE,4BAA4B,EAAE,EAAE,UAAU,EAAE,gCAAgC,EAAE,EAAE;gBAClF,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE;gBACvD,KAAK;gBACL;oBACE,KAAK,EAAE;wBACL,UAAU,EAAE,OAAO;wBACnB,IAAI,EAAE,CAAC,QAAgB,MAAM,EAAE,QAAQ,EAAE,CAAC;wBAC1C,EAAE,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,GAAG,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC;qBAClE;iBACF;gBACD,QAAQ;gBACR,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,EAAE,EAAE;gBACjD,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,EAAE,EAAE;gBACvF,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;gBAC3C,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;gBAC3C;oBACE,KAAK,EAAE;wBACL,UAAU,EAAE,OAAO;wBACnB,IAAI,EAAE,uBAAuB,CAAC,KAAK;qBACpC;iBACF;aACF;SACF,CAAC,CAAA;KACH;IAEK,GAAG,CAAC,WAAsD;;;;;;YAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;kBACzC,MAAA,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,0CAAG,CAAC,CAAC;kBACzE,MAAM,OAAM,GAAG,YAAC,WAAW,CAAC,CAAA;YAEhC,IAAI,CAAC,OAAO,CAAC,SAAS;gBAAE,MAAM,IAAI,aAAa,CAAC,oCAAoC,CAAC,CAAA;YAErF,OAAO,OAAO,CAAA;;KACf;IAEK,IAAI,CAAC,MAAmD;;;;;YAC5D,MAAM,KAA0B,MAAM,IAAI,EAAE,EAAtC,EAAE,OAAO,OAA6B,EAAxB,OAAO,cAArB,WAAuB,CAAe,CAAA;YAE5C,OAAO,OAAM,IAAI,4CAAM,OAAO,KAAE,OAAO,kBAAI,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,IAAK,OAAO,MAAK;SACrG;KAAA;IAEK,MAAM,CAAC,MAAoD;;;;;YAC/D,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAA5C,mBAAmC,CAAS,CAAA;YAClD,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;YACxE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,OAAO,GAAG,MAAM,OAAM,MAAM,4BAAG,EAAE,IAAK,IAAI,EAAG,CAAA;YAEnD,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAA;YAE/C,OAAO,OAAO,CAAA;SACf;KAAA;IAEa,KAAK,CAAC,EAAU;;;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAAE,OAAO,EAAE,CAAA;YAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAElE,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,EAAE;gBAAE,OAAO,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,EAAE,CAAA;YAEvC,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;;KAC3D;;;AC9HH;;;;;;"}
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/domain/location/models/address.ts","../../../projects/connect/src/utils/mixins/base.mixin.ts","../../../projects/connect/src/utils/is-uuid.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/users/models/subscription/subscription.ts","../../../projects/connect/src/domain/users/models/user-address.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/category.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/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/enums/order-status.enum.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/order.ts","../../../projects/connect/src/domain/shopping/models/subscription/checkout.ts","../../../projects/connect/src/domain/shopping/models/buy-2-win.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/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/checkout-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/payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/subscription-plan-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/legacy-order-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/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-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'\n\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionProperties,\n} from './types'\n\nexport type GenericIdentifier<T = 'id'> = T\n\nexport class BaseModel<Model, Identifiers = GenericIdentifier> implements ModelBaseStructure<Model, Identifiers> {\n get identifier(): NonFunctionAndIdentifierProperties<Model> {\n const fields = (this.constructor as BaseModelBuilder<Model>).identifiersFields.filter(\n (field) => field !== 'identifier',\n )\n\n return fields.reduce(\n (object, field) => ({ ...object, [field]: this[field as string] }),\n {} as NonFunctionAndIdentifierProperties<Model>,\n )\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 extends ModelBaseStructure>(this: new () => T, data?: Partial<NonFunctionProperties<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 { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nimport { LocationGeometry } from './types/location-geometry.type'\n\nexport abstract class Address<Identifiers = GenericIdentifier> extends BaseModel<Address, Identifiers> {\n default?: boolean\n recipient?: string\n zip?: string\n street?: string\n number?: string\n extension?: 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(): string[] {\n return ['id']\n }\n}\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\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","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 { Expose } from 'class-transformer'\n\nimport { 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'\n\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 type: CouponTypes\n discount?: number\n user?: string\n userExclusiveEmail?: string\n campaign?: string\n nickname: string\n beginAt: Date\n expiresIn?: Date\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\n @Expose({ name: 'checkout_type' })\n checkoutType: CheckoutTypes\n\n @Expose({ name: 'exclusivity_type' })\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 type: CouponTypes.ABSOLUTE,\n checkoutType: CheckoutTypes.ECOMMERCE,\n discount: 30,\n user: userId,\n useLimit: 1,\n useLimitPerUser: true,\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'\n\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { isNil } from '../../../utils'\nimport { NonFunctionProperties, ModelBaseStructure } from '../../generic/model/types'\n\nimport { Area, OfficePosition, UserType } from './enums'\nimport { BeautyProfile } from './beauty-profile'\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 extends ModelBaseStructure<User>>(\n this: new () => T,\n data?: Partial<NonFunctionProperties<User>>,\n ): T {\n const instance = super.toInstance(data) as User\n\n if (!isNil(data.firstName))\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\n\n return instance as any\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 { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\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'\n\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(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\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 { Address } from '../../location/models/address'\n\nexport type UserAddressIdentifiers = 'id' | 'userId'\n\nexport class UserAddress extends Address<UserAddressIdentifiers> {\n id: string\n userId: string\n\n static get identifiersFields(): UserAddressIdentifiers[] {\n return ['id', 'userId']\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\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, NonFunctionPropertyNames } from '../../generic/model'\nimport { Shops } from './enums'\n\nimport { CategoryCondition, CategoryFilter, 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 filters?: CategoryFilter[]\n createdAt?: Date\n updatedAt?: Date\n shop: Shops\n published: boolean\n metadata: CategoryMetadata\n\n identifierFields(): NonFunctionPropertyNames<Category>[] {\n return ['id']\n }\n\n static get identifiersFields(): GenericIdentifier[] {\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 { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier, NonFunctionPropertyNames } from '../../generic/model'\n\nimport { KitProduct } from './kit-product'\nimport { ProductGender, ProductMetadata, ProductReview, ShopDescription, ShopPrice, Stock } 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 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(() => KitProduct)\n kitProducts?: KitProduct[]\n\n identifierFields(): NonFunctionPropertyNames<Product>[] {\n return ['id']\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../generic/model'\n\nimport { Product } from './product'\n\ntype KitProductIdentifiers = 'productId' | 'kitProducId'\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', 'kitProducId']\n }\n}\n","import { BaseModel, NonFunctionPropertyNames } from '../../generic/model'\n\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 identifierFields(): NonFunctionPropertyNames<Variant>[] {\n return ['id']\n }\n\n static get identifiersFields(): ProductVariantIdentifiers[] {\n return ['id', 'productId']\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 { 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\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../location/models/address'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { User } from '../../users/models/user'\n\nimport { Coupon } from './coupons/coupon'\nimport { LineItem } from './line-item'\nimport { ShippingMethod } from './shipping-method'\nimport { Shops } from '../../catalog/models/enums/shops.enum'\n\nexport class Checkout extends BaseModel<Checkout> {\n id?: string\n paymentId?: string\n status?: string\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(() => Address)\n shippingAddress?: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => ShippingMethod)\n shipping?: ShippingMethod\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Checkout } from './checkout'\nimport { OrderStatus } from './enums/order-status.enum'\nimport { Payment } from './payment'\n\nexport class Order extends Checkout {\n status: OrderStatus\n trackingCode?: string\n trackingUrl?: string\n\n @Type(() => Payment)\n payment: Payment\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { Coupon } from '../coupons/coupon'\nimport { User } from '../../../users/models/user'\n\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(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\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 { Type } from 'class-transformer'\n\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { Shops, Category } from '../../catalog/models'\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 startDate: Date\n updatedAt?: Date\n\n @Type(() => Category)\n categories: Category[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\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 { 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'\n\nimport { BaseModel } from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { ElasticSearchResult } from '../types/elastic-search-result'\n\nexport type AxiosElasticSearchConfig = {\n url: string\n credential: string\n}\n\nexport class AxiosAdapter<T extends BaseModel<T>> {\n constructor(private readonly config: AxiosElasticSearchConfig) {}\n\n async get(index: string): Promise<Partial<T>> {\n try {\n const { data } = await axios({\n url: `${this.config.url}/${index}`,\n method: 'GET',\n headers: { Authorization: `Basic ${this.config.credential}` },\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<Partial<T>>> {\n const { data } = await axios({\n url: `${this.config.url}/${index}`,\n method: 'POST',\n headers: { Authorization: `Basic ${this.config.credential}` },\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}`,\n method: 'PUT',\n headers: { Authorization: `Basic ${this.config.credential}` },\n data,\n })\n }\n\n async delete(index: string): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}`,\n method: 'DELETE',\n headers: { Authorization: `Basic ${this.config.credential}` },\n })\n }\n}\n","import { Product, Shops } from '../../../domain'\nimport { ProductHasuraGraphQL } from '../../hasura-graphql'\nimport { AxiosAdapter } from '../adapters'\n\nexport class ProductsIndex {\n constructor(private readonly adapter: AxiosAdapter<Product>) {}\n\n async get(id): Promise<Product> {\n const data = await this.adapter.get(`products/_doc/${id}`)\n\n return Product.toInstance(data)\n }\n\n async findById(ids: string[], options?: { hasStock: boolean; size: number; shop: Shops }): Promise<Product[]> {\n const fields = [\n 'brand',\n 'id',\n 'images',\n 'miniatures',\n 'name',\n 'price',\n 'sku',\n 'stock',\n 'slug',\n 'reviews',\n 'pricePaid',\n 'isGift',\n 'stock',\n 'weight',\n 'tags',\n 'hasVariants',\n 'type'\n ]\n const { hits } = await this.adapter.query('products/_search', {\n _source: fields,\n query: {\n bool: {\n filter: [\n {\n terms: {\n _id: ids,\n },\n },\n {\n term: {\n published: true,\n },\n },\n ...(options.hasStock\n ? [\n {\n range: {\n 'stock.quantity': {\n gt: 0,\n },\n },\n },\n ]\n : []),\n ],\n },\n },\n ...(options.size ? { size: options.size } : {}),\n })\n\n return hits.map((hit) => Product.toInstance(hit._source))\n }\n\n async save(product: ProductHasuraGraphQL): Promise<void> {\n delete product.createdAt\n delete product.updatedAt\n delete product.kitProducts\n\n try {\n if (!product.firestoreId) throw new Error('Is not a product from firestore')\n\n await this.get(product.firestoreId)\n\n await this.adapter.save(`products/_doc/${product.firestoreId}`, product.toPlain())\n } catch (error) {\n console.error(error.message)\n\n await this.adapter.save(`products/_doc/${product.id}`, product.toPlain())\n }\n }\n\n async delete(product: ProductHasuraGraphQL): Promise<void> {\n try {\n await this.get(product.firestoreId)\n\n await this.adapter.delete(`products/_doc/${product.firestoreId}`)\n } catch (error) {\n await this.adapter.delete(`products/_doc/${product.id}`)\n }\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreRepository } from '../types'\n\nexport const withFirestore = <TBase extends ModelBaseStructure, 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\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 => (data?.toPlain ? data.toPlain() : data),\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 { QuerySnapshot, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { ModelBaseStructure } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\n\nexport const withHelpers = <TMixinBase extends MixinCtor = MixinCtor>(MixinBase: MixinCtor & TMixinBase) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends ModelBaseStructure>(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>(\n repository: FirestoreRepository<T>,\n ): repository is FirestoreSubRepository<T> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { ModelBaseStructure, GetRepository, NonFunctionProperties } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../../utils'\nimport { NotFoundError } from '../../../../errors'\n\nexport const withGetFirestore = <\n TBase extends ModelBaseStructure,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & GetRepository<TBase> & FirestoreHelpers,\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: NonFunctionProperties<TBase>): Promise<TBase> {\n const doc = await this.collection(this.buildCollectionPathForGet(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .get()\n const data = doc.data()\n\n if (isNil(data)) throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`)\n\n return data\n }\n\n buildCollectionPathForGet(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } 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'\n\nimport {\n FindRepository,\n FindRepositoryParams,\n ModelBaseStructure,\n NonFunctionPropertyNames,\n RepositoryFindField,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n Where,\n} from '../../../../domain'\nimport { isDate, isNil, isNumber, isObject, isString, MergeConstructorParams, MixinCtor, set } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withFindFirestore = <\n TBase extends ModelBaseStructure,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & FindRepository<TBase> & FirestoreHelpers,\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\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<TBase>(this)) return this.collectionName\n\n const parentIdField = this.parentIdField\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<TBase>(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'\n\nimport { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isEmpty, MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nexport const withCreateFirestore = <\n TBase extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\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 = data[data.identifiersFields.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'\n\nimport {\n ModelBaseStructure,\n NonFunctionPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MergeConstructorParams, MixinCtor, PropType } from '../../../../utils'\n\nexport type UpdateFirestoreRepositoryType<MBase extends ModelBaseStructure> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport const withUpdateFirestore = <\n TBase extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\n const getValueFromParams = (\n params: RepositoryUpdateParams<TBase>,\n field: NonFunctionPropertyNames<TBase>,\n ): PropType<TBase, NonFunctionPropertyNames<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).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 { IdentifiersModel, ModelBaseStructure, DeleteRepository, DeleteRepositoryParams } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nexport const withDeleteFirestore = <\n TBase extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\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'\n\nimport { IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nexport const withSubCollection = <\n TBase extends ModelBaseStructure,\n TBaseParent extends ModelBaseStructure,\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 MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\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 { ModelBaseStructure, CrudRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\n\nimport { withCreateFirestore } from './with-create-firestore.mixin'\nimport { withDeleteFirestore } from './with-delete-firestore.mixin'\nimport { withFindFirestore } from './with-find-firestore.mixin'\nimport { withGetFirestore } from './with-get-firestore.mixin'\nimport { withUpdateFirestore } from './with-update-firestore.mixin'\n\nexport const withCrudFirestore = <\n TBase extends ModelBaseStructure,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & Repository & FirestoreHelpers,\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\n> => {\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'\n\nimport { Base } from '../../../../../utils'\nimport { User, UserAddress, UserAddressRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\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(categoryIds: string[], limit = 4): 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 }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): 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?.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","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Product, ProductRepository, ReviewStatusParams, ReviewWithProductData, Where } 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","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 { 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 { 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 { 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 { 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 { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionPlanFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\n implements SubscriptionPlanRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionPlans'\n this.model = SubscriptionPlan\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\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 { 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 { 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 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,\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)) return { columnName: attributeName.toString(), attributeName }\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, ParentModel extends ModelBaseStructure>(\n fieldValue: ColumnOptions<Model, ParentModel>,\n ): fieldValue is ColumnOptions<Model, ParentModel> => !!fieldValue.columnName\n\n static FindColumnOptionFromList = <Model extends ModelBaseStructure, ParentModel extends ModelBaseStructure>(\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>(\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'\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { FilterOptionHelper } from './filter-option.helper'\n\nexport class BindFilterQueryHelper {\n static MakeGraphQLWhere = <MBase extends ModelBaseStructure>(\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>(\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\n if (\n !Array.isArray(options) &&\n isObject(options) &&\n isNil(options?.operator) &&\n isNil(options?.value) &&\n isNil(fieldSentenceOptions?.to)\n )\n return Object.keys(options).reduce((variables, key) => {\n const fieldOptions = AttributeOptionHelper.FindByAttribute<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n fieldSentenceOptions?.fields || (fields as any),\n )\n const columnName = fieldOptions.columnName\n const columnFields = fieldOptions.fields\n\n return {\n ...variables,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n options[key],\n columnFields || ([] as any),\n ),\n }\n }, {})\n\n if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))\n return {\n [fieldSentenceOptions.fields[0] as NonFunctionAndIdentifierPropertyNames<MBase>]:\n BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }\n\n if (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>(\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>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n fieldOption: ColumnOptions<any, any>,\n ): HasuraGraphQLWhere =>\n FilterOptionHelper.CheckIfIsFilterOption(options)\n ? fieldOption.type === HasuraGraphQLColumnType.Jsonb\n ? BindFilterQueryHelper.GetHasuraJsonbOperator(options)\n : HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n : HasuraGraphQLWhere.EQUALS\n\n static GetHasuraJsonbOperator = <MBase extends ModelBaseStructure>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n ): HasuraGraphQLWhere =>\n options.operator === Where.IN\n ? '_contains'\n : options.operator === Where.LIKE\n ? '_has_keys_any'\n : HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\n )\n ]\n}\n","import {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionProperties,\n} from '../../../../domain'\nimport { isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils'\nimport { Fields, GraphQLParams, HasuraGraphQLFields } from '../../types'\n\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { BindFilterQueryHelper } from './bind-filter-query.helper'\n\nexport class GraphQLFieldHelper {\n static CheckIsGraphQLParams = <Model extends ModelBaseStructure>(\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>(\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 if (fieldValue.fields)\n return !fieldValue.filters\n ? {\n [fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(\n fieldValue.fields,\n ),\n }\n : {\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 fieldValue.columnName\n })\n .filter((field) => !!field)\n }\n\n static ConvertFieldValueFrom = <\n Model extends ModelBaseStructure,\n DataType extends Record<string, string | number | DataType | Date>,\n >(\n data: string | number | DataType | Date,\n fields: HasuraGraphQLFields<Model>,\n ): Partial<NonFunctionProperties<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) => GraphQLFieldHelper.ConvertFieldValueFrom(value, attributeFields)),\n }\n if (isObject(data[columnName]))\n return {\n ...result,\n [attributeName]: !!from\n ? from(data[columnName])\n : GraphQLFieldHelper.ConvertFieldValueFrom(data[columnName], attributeFields),\n }\n }\n\n if (!!from) return { ...result, [attributeName]: from(data[columnName], data) }\n\n return { ...result, [attributeName]: parseDateTime(data[columnName]) }\n }, {})\n\n static ConvertFieldValueTo = <\n Model extends ModelBaseStructure,\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) => ({ ...object, [foreignKeyColumn[current]]: data[attributeName]?.[current] }),\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(data[attributeName], attributeFields)\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","import { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type CreateConstructorParams = {\n insertGraphQLOperation?: string\n insertGraphQLObjectType?: string\n}\n\nexport const withCreateHasuraGraphQL = <\n MBase extends ModelBaseStructure,\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 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.insertGraphQLObjectType = options?.insertGraphQLObjectType || `${this.tableName}_insert_input`\n }\n\n async create(data: CreateRepositoryParams<MBase>): Promise<MBase> {\n const newData = await this.save(this.model.toInstance(data as any))\n\n return this.model.toInstance(newData)\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),\n {\n [columnOptions.columnName]: Object.keys(columnOptions.foreignKeyColumn).map(\n (foreignKeyField) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyField as any, columnOptions?.fields)?.columnName ||\n 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 { DeleteRepository, DeleteRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type DeleteConstructorParams = {\n deleteGraphQLOperation?: string\n}\n\nexport const withDeleteHasuraGraphQL = <\n MBase extends ModelBaseStructure,\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 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 if (isNil(instance[identifier])) 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 { mutation, query } from 'gql-query-builder'\nimport fetch from 'node-fetch'\n\nimport { BaseModelBuilder, ModelBaseStructure } from '../../../domain'\nimport {\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'\n\nimport { GraphQLFieldHelper } from './helpers'\n\nexport type ConstructorParams<Model extends ModelBaseStructure> = {\n tableName: string\n model: BaseModelBuilder<Model>\n fields: HasuraGraphQLFields<Model>\n endpoint: string\n authOptions: HasuraGraphQLAuthOptions\n}\n\nexport const withHasuraGraphQL = <MBase extends ModelBaseStructure, T extends MixinCtor = MixinCtor>(\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\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 }\n\n async mutation<ReturnFields = any>(\n operation: string,\n fields?: HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const resultQuery = mutation({\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields),\n })\n\n return this.fetch(resultQuery)\n }\n\n async query<ReturnFields = any>(\n operation: string | GraphQLParams<MBase>[],\n fields?: 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),\n })\n\n return this.fetch(resultQuery)\n }\n\n async fetch<ReturnFields = any>(params: { variables: any; query: string }): Promise<ReturnFields> {\n const headers = this.headers\n const response = await fetch(`${this.endpoint}`, {\n method: 'POST',\n body: JSON.stringify(params),\n headers,\n })\n const result: any = await response.json()\n\n if (!isNil(result.errors)) throw new Error(JSON.stringify(result.errors))\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(data: Record<string, string | number>): MBase {\n const plain = GraphQLFieldHelper.ConvertFieldValueFrom(data, this.fields)\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 RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../domain'\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type UpdateHasuraGraphQLRepositoryType<MBase extends ModelBaseStructure> = 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,\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 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 if (isNil(instance[identifier])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value = columnOption?.to?.(data[identifier.toString()], 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 { GetRepository, GetRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { isNil, MixinCtor } 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,\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 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 if (isNil(instance[identifier])) 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 { FindRepository, FindRepositoryParams, ModelBaseStructure, RepositoryFindResult } from '../../../domain'\nimport { isNil, MixinCtor } from '../../../utils'\nimport { GraphQLParams, GraphQLRepository } from '../types'\n\nimport { BindFilterQueryHelper } from './helpers'\n\nexport const withFindHasuraGraphQL = <\n MBase extends ModelBaseStructure,\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 const { filters, limits, orderBy, options } = params || {}\n const enableCount = options?.enableCount ?? true\n const variablesCount = {\n ...(isNil(orderBy) ? {} : { order_by: { type: `${this.tableName}_order_by!`, list: true, value: orderBy } }),\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 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 ...(enableCount\n ? [\n {\n operation: `${this.tableName}_aggregate`,\n fields: [{ aggregate: ['count'] }],\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 { data, count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity }\n }\n }\n}\n","import { ModelBaseStructure, CrudRepository } from '../../../domain'\nimport { GraphQLRepository } from '../types'\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\n\nimport { CreateConstructorParams, withCreateHasuraGraphQL } from './with-create-hasura-graphql.mixin'\nimport { ConstructorParams } from './with-hasura-graphql.mixin'\nimport { DeleteConstructorParams, withDeleteHasuraGraphQL } from './with-delete-hasura-graphql.mixin'\nimport { GetConstructorParams, withGetHasuraGraphQL } from './with-get-hasura-graphql.mixin'\nimport {\n UpdateConstructorParams,\n UpdateHasuraGraphQLRepositoryType,\n withUpdateHasuraGraphQL,\n} from './with-update-hasura-graphql.mixin'\nimport { withFindHasuraGraphQL } from './with-find-hasura-graphql.mixin'\n\nexport const withCrudHasuraGraphQL = <\n TBase extends ModelBaseStructure,\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'\n\nimport { Product } from '../../../domain'\n\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\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\n name ? = ''\n hasVariants ? = false\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'\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 ) {\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 '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 'filters',\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 ],\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 } })).data?.[0]\n : super.get(identifiers)\n }\n\n async update(params: UpdateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { products, id: checkId, metadata, ...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\n return category\n }\n\n async getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n if (!slug) return\n\n const { data, count } = await this.find({ filters: { slug, shop, published: true } })\n\n if (count > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n if (!count) throw new NotFoundError(`Category with slug ${slug} not found`)\n\n return data.shift()\n }\n\n async getCategoriesForHome(categoryIds: string[], limit = 4): 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 }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): 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 },\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 ],\n ...(options?.limit ? { limits: { limit: options?.limit } } : {}),\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 } })\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","import {\n CreateRepositoryParams,\n FindRepositoryParams,\n GetRepositoryParams,\n NonFunctionPropertyNames,\n ProductMetadata,\n ProductRepository,\n ProductReview,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\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 }),\n bindFindFilter: (sentence) => {\n const filters = Object.values(sentence).shift()\n\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 }\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 }),\n },\n },\n { differentials: { columnName: 'differentials' } },\n { whoMustUse: { columnName: 'who_must_use' } },\n { howToUse: { columnName: 'how_to_use' } },\n { brandDescription: { columnName: 'brand_description' } },\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: (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 '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 'slug',\n 'type',\n 'video',\n 'weight',\n 'gender',\n { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },\n { isKit: { columnName: 'is_kit' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n rate: {\n columnName: 'reviews_aggregate',\n filters: {\n filters: { status: true },\n filterType: 'product_review_bool_exp',\n },\n fields: [{ aggregate: [{ avg: ['rate'] }] }],\n from: (value) => value.aggregate.avg.rate,\n },\n },\n { shoppingCount: { columnName: 'shopping_count' } },\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 } })).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 return super.find({\n ...options,\n filters: { ...filters, productId: { operator: Where.ISNULL } },\n fields: bindFields,\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 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 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 } })\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","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 '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 } })\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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"}