@artisan-commerce/builders 0.7.0-canary.73 → 0.7.0-canary.74

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":"bundle.cjs","sources":["../src/utils/common.utils.ts","../src/builders/common.builder.ts","../src/builders/image.builder.ts","../src/builders/account.builder.ts","../src/builders/banner.builder.ts","../src/builders/billingData.builder.ts","../src/builders/catalogue.builder.ts","../src/builders/product.builder.ts","../src/builders/category.builder.ts","../src/builders/country.builder.ts","../src/builders/coupon.builder.ts","../src/builders/fulfillment.builder.ts","../src/builders/masivo.builder.ts","../src/builders/user.builder.ts","../src/builders/vendor.builder.ts","../src/builders/store.builder.ts","../src/builders/shoppingCart.builder.ts","../src/builders/shippingAddress.builder.ts","../src/builders/settings.builder.ts","../src/builders/order.builder.ts","../src/builders/notification.builder.ts","../src/builders/payment.builder.ts","../src/utils/instance.utils.ts"],"sourcesContent":["// Common utility functions\nimport { faker } from \"@faker-js/faker\";\n\n/**\n * Generates and array of objects of the given type.\n *\n * @param {Function} builder Function passed to generate random data for each object\n * @param {number} quantity The number of objects to be generated\n * @returns {T[]} An array of objects of the given type\n */\nexport const genItems = <T>(\n builder: (overrides?: Partial<T>) => T,\n quantity?: number\n): T[] => {\n const num = quantity ?? faker.datatype.number({ min: 1, max: 10 });\n\n const items: T[] = [];\n for (let i = 0; i < num; i++) {\n items.push(builder());\n }\n return items;\n};\n","// Common builder functions\nimport { faker } from \"@faker-js/faker\";\nimport btoa from \"btoa\";\nimport { CountryCode, DocumentType } from \"@artisan-commerce/types\";\nimport { ARDocumentType, BODocumentType } from \"@artisan-commerce/types\";\nimport { BRDocumentType, CLDocumentType } from \"@artisan-commerce/types\";\nimport { CODocumentType, ECDocumentType } from \"@artisan-commerce/types\";\nimport { PYDocumentType, PEDocumentType } from \"@artisan-commerce/types\";\nimport { UYDocumentType, VEDocumentType } from \"@artisan-commerce/types\";\nimport { USDocumentType, CommonDocumentType } from \"@artisan-commerce/types\";\nimport { CountrySummary, RandomImageConfig } from \"@artisan-commerce/types\";\n\nexport { genItems } from \"../utils/common.utils\";\n\n/**\n * Default document types for all countries.\n *\n * @since 0.1.0\n */\nexport const getCommonDocumentTypes = (): CommonDocumentType[] => [\"PASSPORT\"];\n\n/**\n * Argentina supported document types.\n *\n * @since 0.1.0\n */\nexport const getARDocumentTypes = (): ARDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"DNI\"\n];\n\n/**\n * Bolivia supported document types.\n *\n * @since 0.1.0\n */\nexport const getBODocumentTypes = (): BODocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Brasil supported document types.\n *\n * @since 0.1.0\n */\nexport const getBRDocumentTypes = (): BRDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Chile supported document types.\n *\n * @since 0.1.0\n */\nexport const getCLDocumentTypes = (): CLDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"RUT\"\n];\n\n/**\n * Colombia supported document types.\n *\n * @since 0.1.0\n */\nexport const getCODocumentTypes = (): CODocumentType[] => [\n ...getCommonDocumentTypes(),\n \"NIT\",\n \"CI_CO\"\n];\n\n/**\n * Ecuador supported document types.\n *\n * @since 0.1.0\n */\nexport const getECDocumentTypes = (): ECDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"CI\",\n \"RUC\"\n];\n\n/**\n * Paraguay supported document types.\n *\n * @since 0.1.0\n */\nexport const getPYDocumentTypes = (): PYDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Perú supported document types.\n *\n * @since 0.1.0\n */\nexport const getPEDocumentTypes = (): PEDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"DNI\",\n \"RUC\"\n];\n\n/**\n * Uruguay supported document types.\n *\n * @since 0.1.0\n */\nexport const getUYDocumentTypes = (): UYDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Venezuela supported document types.\n *\n * @since 0.1.0\n */\nexport const getVEDocumentTypes = (): VEDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"CE_VE\",\n \"CI_VE\",\n \"RIF\"\n];\n\n/**\n * United States supported document types.\n *\n * @since 0.1.0\n */\nexport const getUSDocumentTypes = (): USDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Generates a random password.\n *\n * @since 0.1.0\n * @param {any[]} args An array of arguments to be passed when\n * generating the password\n * @returns A random password\n */\nexport const getPassword = (...args: any[]) =>\n `!0_Oo${faker.internet.password(...args)}`;\n\n/**\n * Generates a random username.\n *\n * @since 0.1.0\n */\nexport const getUsername = (\n ...params: Parameters<typeof faker.internet.userName>\n) => faker.internet.userName(...params);\n\n/**\n * Generates a random unique identifier.\n *\n * @since 0.1.0\n */\nexport const genId = (...params: Parameters<typeof faker.datatype.uuid>) =>\n faker.datatype.uuid(...params);\n\n/**\n * Generates a random id of type number.\n *\n * @since 0.1.0\n */\nexport const genNumericId = (\n ...params: Parameters<typeof faker.random.numeric>\n) => +faker.random.numeric(...params);\n\n/**\n * Generates a random word.\n *\n * @since 0.1.0\n */\nexport const genWord = (...params: Parameters<typeof faker.lorem.word>) =>\n faker.lorem.word(...params);\n\n/**\n * Generates a random address.\n *\n * @since 0.1.0\n */\nexport const genAddress = (\n ...params: Parameters<typeof faker.address.streetAddress>\n) => faker.address.streetAddress(...params);\n\n/**\n * Generates a random name.\n *\n * @since 0.1.0\n */\nexport const genName = (...params: Parameters<typeof faker.name.fullName>) =>\n faker.name.fullName(...params);\n\n/**\n * Generates a random email.\n *\n * @since 0.1.0\n */\nexport const genEmail = (...params: Parameters<typeof faker.internet.email>) =>\n faker.internet.email(...params);\n\n/**\n * Generates a random company name.\n *\n * @since 0.1.0\n */\nexport const genCompanyName = (\n ...params: Parameters<typeof faker.company.name>\n) => faker.company.name(...params);\n\n/**\n * Generates a random paragraph.\n *\n * @since 0.1.0\n */\nexport const genParagraph = (\n ...params: Parameters<typeof faker.lorem.paragraph>\n) => faker.lorem.paragraph(...params);\n\n/**\n * Generates a random title containing 3 words.\n *\n * @since 0.1.0\n */\nexport const genTitle = (...params: Parameters<typeof faker.lorem.slug>) =>\n faker.lorem.slug(...params);\n\n/**\n * Generates a random number.\n *\n * @since 0.1.0\n */\nexport const genNumber = (\n ...params: Parameters<typeof faker.datatype.number>\n) => faker.datatype.number(...params);\n\n/**\n * Generates a random boolean value.\n *\n * @since 0.1.0\n */\nexport const getBoolean = (\n ...params: Parameters<typeof faker.datatype.boolean>\n) => faker.datatype.boolean(...params);\n\n/**\n * Generates a random country name.\n *\n * @since 0.1.0\n */\nexport const genCountryName = (\n ...params: Parameters<typeof faker.address.country>\n) => faker.address.country(...params);\n\n/**\n * Generates a random image based on custom configuration.\n *\n * @since 0.5.15\n * @param {RandomImageConfig} randomImageConfig Configuration\n * to generate a random image\n * @returns {string} An url of the image generated\n */\nexport const genRandomImage = (randomImageConfig?: RandomImageConfig) => {\n const { query = \"product\" } = randomImageConfig ?? {};\n const { width = 300, height = 300 } = randomImageConfig ?? {};\n\n let url = `https://source.unsplash.com/${width}x${height}`;\n\n if (query) url += `/?${query}`;\n\n return url;\n};\n\n/** Generates random words.\n *\n * @since 0.1.0\n * @param {number} words The quantity of words to be generated\n */\nexport const genWords = (words?: number) => faker.random.words(words);\n\n/**\n * Generates a random internet url.\n *\n * @since 0.1.0\n */\nexport const genURL = (...params: Parameters<typeof faker.internet.url>) =>\n faker.internet.url(...params);\n\n/**\n * Generates a random date in ISO format.\n *\n * @since 0.1.0\n */\nexport const genDate = () => faker.date.recent(7).toISOString();\n\n/**\n * Generates a random base64 value.\n *\n * @since 0.1.0\n */\nexport const genBase64 = () => btoa(genWord());\n\n/**\n * Generates a random boolean value.\n *\n * @since 0.1.0\n * @param {number} bias A number between 0 and 1 which will be used\n * to generate a boolean\n * @throws Error if bias is not between 0 and 1\n * @returns {boolean} A boolean value\n */\nexport const genBiasBoolean = (bias: number): boolean => {\n if (bias > 1 || bias < 0) {\n throw new Error(\n `Bias must be a number between 0 and 1. Value ${bias} is not valid`\n );\n }\n const random = faker.datatype.number({ min: 0, max: 1, precision: 4 });\n return random <= bias;\n};\n\n/**\n * Generates a random document.\n *\n * @since 0.1.0\n * @param {number} digits The number of digits with which the document\n * will be generated\n * @returns {string} A random document\n */\nexport const genDocument = (digits: number): string => {\n let document = \"\";\n for (let i = 0; i < digits; i++) {\n document += genNumber(9);\n }\n return document;\n};\n\n/**\n * Generates a random document type.\n *\n * @since 0.1.0\n * @param {string} countryISOCode Country calling code\n */\nexport const genDocumentType = (\n countryISOCode: CountryCode = \"EC\"\n): DocumentType => {\n switch (countryISOCode) {\n case \"AR\":\n return chooseRandom(getARDocumentTypes());\n case \"BO\":\n return chooseRandom(getBODocumentTypes());\n case \"BR\":\n return chooseRandom(getBRDocumentTypes());\n case \"CL\":\n return chooseRandom(getCLDocumentTypes());\n case \"CO\":\n return chooseRandom(getCODocumentTypes());\n case \"EC\":\n return chooseRandom(getECDocumentTypes());\n case \"PY\":\n return chooseRandom(getPYDocumentTypes());\n case \"PE\":\n return chooseRandom(getPEDocumentTypes());\n case \"UY\":\n return chooseRandom(getUYDocumentTypes());\n case \"VE\":\n return chooseRandom(getVEDocumentTypes());\n case \"US\":\n return chooseRandom(getUSDocumentTypes());\n default:\n throw new Error(\n `Builder genDocumentType: The given country ISO code \"${countryISOCode}\" is not a supported ISO code`\n );\n }\n};\n\n/**\n * Generates a random mobile phone with the country code provided.\n *\n * @since 0.1.0\n * @param {string} countryCode Country calling code\n * @returns {string} A string like a mobile phone\n */\nexport const genMobilPhone = (countryCode: string): string => {\n return `+${countryCode} ${genDocument(3)} ${genDocument(3)} ${genDocument(\n 4\n )}`;\n};\n\n/**\n * Generates a Country Summary object with random data.\n *\n * @since 0.1.0\n * @param {number} id Country specific id\n * @param {string} name Country specific name\n * @returns {CountrySummary} A {@link CountrySummary} object\n */\nexport const genCountry = (id?: string, name?: string): CountrySummary => {\n const country: CountrySummary = {\n id: id ?? genId(),\n name: name ?? genCountryName()\n };\n return country;\n};\n\n/**\n * Fills a number of type string with characters.\n *\n * @since 0.1.0\n * @param {string} num A string, the length of it will\n * be used to fill the number\n * @param {number} max A number, the length of it will\n * be used to fill the number\n * @returns {string} A string filled with the data passed\n */\nexport const fillNumber = (num: string, max?: number): string => {\n const maxNumLength = max ? String(max).length : num.length;\n let newId = num;\n for (let i = 0; i < maxNumLength - num.length; i++) {\n newId = `0${newId}`;\n }\n return newId;\n};\n\n/**\n * Chooses a random item inside the array provided.\n *\n * @since 0.1.0\n * @param {T[]} arr An array of generic items\n * @returns {T} A random item of the array passed as param\n */\nexport const chooseRandom = <T = string>(array?: T[]): T =>\n faker.helpers.arrayElement<T>(array);\n\n// /**\n// * Generates a random currency symbol.\n// *\n// * @since 0.1.0\n// */\nexport const genSymbol = () => chooseRandom([\"$\", \"S/\", \"$b\", \"Bs\"]);\n\n// /**\n// * Generates a random internet ip.\n// *\n// * @since 0.1.0\n// */\nexport const genIP = (...params: Parameters<typeof faker.internet.ip>) =>\n faker.internet.ip(...params);\n","// Image builder functions\nimport { CDNImage, URLImage, RandomImageConfig } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genRandomImage, genWord, genURL } from \"./common.builder\";\n\n/**\n * Generates a random image url.\n *\n * @since 0.5.15\n */\nexport const buildURLImage = genRandomImage;\n\n/**\n * Generates a list of URLImage.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {URLImage} An array of {@link URLImage}\n */\nexport const genURLImages = (\n quantity?: number,\n overrides?: RandomImageConfig\n): URLImage[] => {\n return genItems(() => buildURLImage(overrides), quantity);\n};\n\n/**\n * Generates CDNImage object with random data.\n *\n * @since 0.5.15\n * @param {Partial<CDNImage>} overrides Properties to override\n * a {@link CDNImage}\n * @param {RandomImageConfig} options image request options{{@link RandomImageConfig}\n * @returns {CDNImage} A {@link CDNImage} object\n */\nexport const buildCDNImage = (\n overrides: Partial<CDNImage> = {},\n options?: RandomImageConfig\n): CDNImage => {\n const imageName = genWord();\n return {\n bucket: null,\n cloudFrontUrl: genURL(),\n key: `images/${imageName}.jpg`,\n name: `${imageName}.jpg`,\n url: buildURLImage(options),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CDNImage objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @param {RandomImageConfig} options image request options{{@link RandomImageConfig}\n * @returns {CDNImage[]} An array of CDNImage objects, see {@link CDNImage}\n */\nexport const genCDNImages = (\n quantity?: number,\n options?: RandomImageConfig\n): CDNImage[] => {\n return genItems(() => buildCDNImage(undefined, options), quantity);\n};\n","// Account builder functions\nimport { Account, AdditionalInfo } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genId, genName } from \"./common.builder\";\nimport { genParagraph } from \"./common.builder\";\nimport { genCDNImages } from \"./image.builder\";\n\n/**\n * Generates Account object with random data.\n *\n * @template T Account additional info\n * @since 0.1.0\n * @param {Partial<Account>} overrides Properties to override a {@link Account}\n * @returns {Account} A {@link Account} object\n */\nexport const buildAccount = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Account<T>> = {}\n): Account<T> => {\n return {\n accountId: genId(),\n name: genName(),\n description: genBiasBoolean(0.5) ? genParagraph() : undefined,\n images: genCDNImages(undefined, { query: \"brand\" }),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Account objects with random data.\n *\n * @template T Accounts additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Account[]} An array of {@link Account}s objects\n */\nexport const genAccounts = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Account<T>[] => {\n return genItems(buildAccount, quantity);\n};\n","// Banner builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, BannerCoupon } from \"@artisan-commerce/types\";\nimport { BannerImage } from \"@artisan-commerce/types\";\nimport { BannerBenefits } from \"@artisan-commerce/types\";\nimport { Banner, BannerType, BannerScope } from \"@artisan-commerce/types\";\n\nimport { genId, genWord } from \"./common.builder\";\nimport { buildURLImage } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genRandomImage } from \"./common.builder\";\nimport { genNumber, genURL, genWords, genBiasBoolean } from \"./common.builder\";\n\n/**\n * Generates banner object with random data.\n *\n * @template T Banner additional info\n * @since 0.1.0\n * @param {Partial<Banner>} overrides Properties to override a {@link Banner}\n * @returns {Banner} A {@link Banner} object\n */\nexport const buildBanner = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Banner<T>> = {}\n): Banner<T> => {\n const bannerScopes: BannerScope[] = [\"APP\", \"GLOBAL\", \"WEB\"];\n const bannerTypes: BannerType[] = [\n \"COUPON\",\n \"INFO\",\n \"PRODUCT\",\n \"URL\",\n \"CATEGORY\",\n \"COUPON_QR\",\n \"SECTION\"\n ];\n\n return {\n banner_title: genWords(2),\n banner_description: genWords(8),\n image_url: buildURLImage(),\n banner_qr_code: \"\",\n coupon: buildBannerCoupon(),\n coupon_id: genId(),\n banner_type: chooseRandom(bannerTypes),\n image_file_name: `${genWord}.jpg`,\n benefits: genBannerBenefits(),\n vendor_id: genId(),\n vendor_name: faker.company.name(),\n scope: chooseRandom(bannerScopes),\n banner_category_id: genId(),\n product_id: null,\n product_name: null,\n stores: [],\n banner_url: buildURLImage(),\n image_bucket: null,\n image_cloud_front_url: genURL(),\n image_key: `banners/${genWord}.jpg`,\n category_id: genId(),\n category_name: faker.company.name(),\n channel_id: genId(),\n images: genBannerImages(),\n section: null,\n ...overrides\n };\n};\n\n/**\n * Generates BannerCoupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BannerCoupon>} overrides Properties to override\n * a {@link BannerCoupon}\n * @returns {BannerCoupon} A {@link BannerCoupon} object\n */\nexport const buildBannerCoupon = (\n overrides: Partial<BannerCoupon> = {}\n): BannerCoupon => {\n return {\n name: genWord(),\n only_store: genBiasBoolean(0.6),\n coupon_type: chooseRandom([\"COUPON\", \"MIX\"]),\n ...overrides\n };\n};\n\n/**\n * Generates BannerBenefits object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BannerBenefits>} overrides Properties to override\n * a {@link BannerBenefits}\n * @returns {BannerBenefits} A {@link BannerBenefits} object\n */\nexport const buildBannerBenefits = (\n overrides: Partial<BannerBenefits> = {}\n): BannerBenefits => {\n return {\n id: genId(),\n name: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of banner benefits objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BannerBenefits[]} An array of banner benefits, see {@link BannerBenefits}\n */\nexport const genBannerBenefits = (quantity?: number): BannerBenefits[] => {\n return genItems(buildBannerBenefits, quantity);\n};\n\n/**\n * Generates a list of Banner objects with random data.\n *\n * @template T Banners additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Banner[]} An array of {@link Banner}s objects\n */\nexport const genBanners = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Banner<T>[] => {\n return genItems(buildBanner, quantity);\n};\n\n/**\n * Generates BannerImage object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BannerImage>} overrides Properties to override\n * a {@link BannerImage}\n * @returns {BannerImage} A {@link BannerImage} object\n */\nexport const buildBannerImage = (\n overrides: Partial<BannerImage> = {}\n): BannerImage => {\n return {\n file_name: `${genWord}.jpg`,\n id: genId(),\n image_file_name: `${genWord}.jpg`,\n image_key: `banners/${genWord}.jpg`,\n image_url: buildURLImage(),\n position: genNumber(100),\n url: genRandomImage(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of banner image objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BannerImage[]} An array of banner images, see {@link BannerImage}\n */\nexport const genBannerImages = (quantity?: number): BannerImage[] => {\n return genItems(buildBannerImage, quantity);\n};\n","// Billing data builder functions\nimport { AdditionalInfo, BillingData } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genName, genDocumentType, genDocument, genId } from \"./common.builder\";\nimport { genAddress, genMobilPhone, genEmail } from \"./common.builder\";\nimport { getBoolean, genCountry } from \"./common.builder\";\n\n/**\n * Generates BillingData object with random data.\n *\n * @template T Billing data additional info\n * @since 0.1.0\n * @param {Partial<BillingData>} overrides Properties to override\n * a {@link BillingData}\n * @returns {BillingData} A {@link BillingData} object\n */\nexport const buildBillingData = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<BillingData<T>> = {}\n): BillingData<T> => {\n return {\n id: genId(),\n name: `${genName()} ${genName()}`,\n nickname: genName(),\n documentType: genDocumentType(),\n document: genDocument(10),\n address: genAddress(),\n phone: genMobilPhone(\"593\"),\n email: genEmail(),\n default: getBoolean(),\n country: genCountry(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Billing Data objects with random data.\n *\n * @template T Billing data additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BillingData[]} An array of {@link BillingData}s objects\n */\nexport const genBillingData = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): BillingData<T>[] => {\n return genItems(buildBillingData, quantity);\n};\n","// Catalogue builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, Catalogue } from \"@artisan-commerce/types\";\n\nimport { chooseRandom, genBiasBoolean, genNumber } from \"./common.builder\";\n\nconst catalogueOptions = [\"A domicilio\", \"Pick-up\"];\n\n/**\n * Generates Catalogue object with random data.\n *\n * @template T Catalogue additional info\n * @since 0.1.0\n * @param {Partial<Catalogue>} overrides Properties to override\n * a {@link Catalogue}\n * @returns {Catalogue} A {@link Catalogue} object\n */\nexport const buildCatalogue = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Catalogue<T>> = {}\n): Catalogue<T> => {\n return {\n catalogueId: genNumber(200).toString(),\n name: faker.company.bsAdjective(),\n active: genBiasBoolean(0.5),\n friendlyName: faker.company.name(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Catalogue objects with custom data.\n *\n * @template T Catalogues additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Catalogue[]} An array of {@link Catalogue}s objects\n */\nexport const genCatalogues = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Catalogue<T>[] => {\n const num = quantity ?? genNumber({ min: 1, max: 10 });\n let options = [...catalogueOptions];\n const catalogues = [];\n for (let i = 0; i < num; i++) {\n const overrides: Partial<Catalogue<T>> = {};\n const option = chooseRandom(options);\n if (option) {\n overrides.name = option;\n }\n const catalogue = buildCatalogue<T>(overrides);\n catalogues.push(catalogue);\n options = options.filter(catalogue => catalogue !== option);\n }\n return catalogues;\n};\n","// Product builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, BaseProduct, Category } from \"@artisan-commerce/types\";\nimport { CartProductAnswer } from \"@artisan-commerce/types\";\nimport { CartProductQuestion } from \"@artisan-commerce/types\";\nimport { CartProduct, ProductQuestion } from \"@artisan-commerce/types\";\nimport { ProductAnswer, ProductDetails } from \"@artisan-commerce/types\";\nimport { PriceCategory, PriceCategoryTax } from \"@artisan-commerce/types\";\n\nimport { genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genNumber, chooseRandom, genBiasBoolean } from \"./common.builder\";\n\n/**\n * Generates PriceCategoryTax object with random data.\n *\n * @since 0.1.0\n * @param {Partial<PriceCategoryTax>} overrides Properties to override\n * a {@link PriceCategoryTax}\n * @returns {PriceCategoryTax} A {@link PriceCategoryTax} object\n */\nexport const buildPriceCategoryTax = (\n overrides: Partial<PriceCategoryTax> = {}\n): PriceCategoryTax => {\n return {\n code: 0,\n name: chooseRandom([\"IVA\"]),\n percentage: 10,\n vatRate: \"\",\n vatRateCode: 0,\n ...overrides\n };\n};\n\n/**\n * Generates a list of PriceCategoryTax objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {PriceCategoryTax[]} An array of price category taxes objects,\n * see {@link PriceCategoryTax}\n */\nexport const genPriceCategoryTaxes = (\n quantity?: number\n): PriceCategoryTax[] => {\n return genItems(buildPriceCategoryTax, quantity);\n};\n\nconst getTaxTotals = (taxes: PriceCategoryTax[], grossPrice: number) => {\n return taxes.reduce((acc, tax) => {\n return acc + (tax.percentage / 100) * grossPrice;\n }, 0);\n};\n\n/**\n * Generates PriceCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<PriceCategory>} overrides Properties to override\n * a {@link PriceCategory}\n * @returns {PriceCategory} A {@link PriceCategory} object\n */\nexport const buildPriceCategory = (\n overrides: Partial<PriceCategory> = {}\n): PriceCategory => {\n const category = overrides.category ?? \"NORMAL\";\n const precision = category === \"NORMAL\" ? 2 : undefined;\n const grossPrice = genNumber({ min: 2, max: 20, precision });\n const withTaxes = genBiasBoolean(0.9);\n const taxes = genPriceCategoryTaxes(withTaxes && precision ? 1 : 0);\n const taxTotal = getTaxTotals(taxes, grossPrice);\n const netPrice = grossPrice + taxTotal;\n return {\n category,\n discount: 0,\n discountGrossPrice: 0,\n discountNetPrice: 0,\n discounts: [],\n grossPrice,\n netPrice,\n symbol: \"$\",\n taxes,\n salePercentage: 0,\n priceBeforeSale: 0,\n ...overrides\n };\n};\n\n/**\n * Generates BaseProduct object with random data.\n *\n * @template T Product additional info\n * @since 0.1.0\n * @param {Partial<BaseProduct>} overrides Properties to override\n * a {@link BaseProduct}\n * @returns {BaseProduct} A {@link BaseProduct} object\n */\nexport const buildBaseProduct = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<BaseProduct<T>> = {}\n): BaseProduct<T> => {\n return {\n attributes: {\n Cantidad: \"1\",\n externalId: \"001\",\n showInMenu: true\n },\n available: true,\n addDirectlyToCart: genBiasBoolean(0.5),\n coverUrl: \"\",\n description: faker.lorem.lines(2),\n images: genCDNImages(genNumber({ min: 1, max: 5 })),\n measure: \"unit\",\n name: faker.commerce.productName(),\n outOfService: false,\n outOfStock: false,\n prices: {\n NORMAL: buildPriceCategory({ category: \"NORMAL\" }),\n POINTS: buildPriceCategory({ category: \"POINTS\" }),\n SUGGESTED: buildPriceCategory({ category: \"SUGGESTED\" })\n },\n productId: genNumber(999).toString(),\n sponsored: false,\n standardTime: \"\",\n status: \"ACTIVE\",\n stock: 1000,\n suggestedPrice: \"\",\n type: \"PRODUCT\",\n ...overrides\n };\n};\n\n/**\n * Generates a list of BaseProduct objects with random data.\n *\n * @template T Product additional info\n * @template U Product additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BaseProduct[]} An array of BaseProduct objects,\n * see {@link BaseProduct}\n */\nexport const genBaseProducts = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): BaseProduct<T>[] => {\n return genItems(buildBaseProduct, quantity);\n};\n\n/**\n * Render type for product answers\n *\n * @since 0.1.0\n */\nexport const MODIFIER_TYPES = [\"RADIO\", \"CHECKBOX\", \"QUANTITY\", \"CUSTOMIZED\"];\n\n/**\n * Generates ProductAnswer object with random data.\n *\n * @template T Product additional info\n * @since 0.1.0\n * @param {Partial<ProductAnswer>} overrides Properties to override\n * a {@link ProductAnswer}\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductAnswer} A {@link ProductAnswer} object\n */\nexport const buildProductAnswer = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ProductAnswer<T>> = {},\n loop = 1\n): ProductAnswer<T> => {\n const withQuestions = genBiasBoolean(0.1) && loop < 2;\n const selectedRenderType = chooseRandom(MODIFIER_TYPES);\n const renderType = genBiasBoolean(0.9) ? null : selectedRenderType;\n const images = genCDNImages(undefined, { width: 60, height: 60 });\n return {\n attributes: {\n Cantidad: \"1\",\n externalId: \"001\",\n showInMenu: true\n },\n images: genBiasBoolean(0.1) ? [] : images,\n name: faker.name.jobDescriptor(),\n prices: {\n NORMAL: buildPriceCategory({ category: \"NORMAL\" }),\n POINTS: buildPriceCategory({ category: \"POINTS\" }),\n SUGGESTED: buildPriceCategory({ category: \"SUGGESTED\" })\n },\n productId: genNumber(999).toString(),\n type: chooseRandom([\"PRODUCT\", \"MODIFIER\"]),\n renderType,\n questions: withQuestions ? genProductQuestions<T>(undefined, loop + 1) : [],\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductAnswer objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductAnswer[]} An array of ProductAnswer objects,\n * see {@link ProductAnswer}\n */\nexport const genProductAnswers = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number,\n loop = 1\n): ProductAnswer<T>[] => {\n if (loop > 2) return [];\n const num = quantity ?? genNumber({ min: 1, max: 6 });\n\n const productAnswers = [];\n for (let i = 0; i < num; i++) {\n const productAnswer = buildProductAnswer<T>({}, loop);\n productAnswers.push(productAnswer);\n }\n return productAnswers;\n};\n\n/**\n * Generates ProductQuestion object with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {Partial<ProductQuestion>} overrides Properties to override\n * a {@link ProductQuestion}\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductQuestion} A {@link ProductQuestion} object\n */\nexport const buildProductQuestion = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ProductQuestion<T>> = {},\n loop = 1\n): ProductQuestion<T> => {\n const randomMin = genNumber({ min: 0, max: 5 });\n const likelyMin = genNumber({ min: 0, max: 1 });\n const min = genBiasBoolean(0.8) ? likelyMin : randomMin;\n const randomMax = genNumber({ min, max: 5 });\n const likelyMax = genNumber({ min, max: min > 1 ? min : 1 });\n const max = genBiasBoolean(0.8) ? likelyMax : randomMax;\n const selectedType = chooseRandom(MODIFIER_TYPES);\n const type = genBiasBoolean(0.9) ? null : selectedType;\n return {\n answers: genProductAnswers<T>(undefined, loop),\n description: faker.finance.transactionType(),\n max,\n min,\n name: faker.finance.accountName(),\n questionId: genNumber(999).toString(),\n type,\n images: genCDNImages(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductQuestion objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductQuestion[]} An array of ProductQuestion objects,\n * see {@link ProductQuestion}\n */\nexport const genProductQuestions = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number,\n loop = 1\n): ProductQuestion<T>[] => {\n if (loop > 2) return [];\n const num = quantity ?? genNumber({ min: 1, max: 5 });\n\n const productQuestions = [];\n for (let i = 0; i < num; i++) {\n const productQuestion = buildProductQuestion<T>({}, loop);\n productQuestions.push(productQuestion);\n }\n return productQuestions;\n};\n\n/**\n * Generates ProductDetails object with random data.\n *\n * @template T Product additional info\n * @since 0.1.0\n * @param {Partial<ProductDetails>} overrides Properties to override\n * a {@link ProductDetails}\n * @returns {ProductDetails} A {@link ProductDetails} object\n */\nexport const buildProductDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<ProductDetails<T, U>> = {}\n): ProductDetails<T, U> => {\n const questions = genProductQuestions<T>(undefined, 1);\n const categories: Category<U>[] = [];\n return {\n ...buildBaseProduct(),\n addDirectlyToCart: !questions.length,\n isPriceVip: false,\n manufacturer: [],\n maxAmountForSale: 0,\n schedule: [],\n questions,\n benefitId: null,\n categories: genBiasBoolean(0.5) ? categories : null,\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductDetails objects with random data.\n *\n * @template T Products additional info\n * @template U Categories additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ProductDetails[]} An array of ProductDetails objects,\n * see {@link ProductDetails}\n */\nexport const genProductDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): ProductDetails<T, U>[] => {\n return genItems(buildProductDetails, quantity);\n};\n\n/**\n * Generates CartProductAnswer object with random data.\n *\n * @template T Product answer additional info\n * @since 0.1.0\n * @param questionId The question id associated with the answer\n * @param {Partial<CartProductAnswer>} overrides Properties to override\n * a {@link CartProductAnswer}\n * @returns {CartProductAnswer} A {@link CartProductAnswer} object\n */\nexport const buildCartProductAnswer = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n questionId: string,\n overrides: Partial<CartProductAnswer<T>> = {}\n): CartProductAnswer<T> => {\n return {\n ...buildProductAnswer(),\n amount: 1,\n questionId,\n priceCategory: \"NORMAL\",\n comment: genBiasBoolean(0.2) ? faker.commerce.productMaterial() : \"\",\n questionsAndAnswers: [],\n ...overrides\n };\n};\n\n/**\n * Generates a list of CartProductAnswer objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CartProductAnswer[]} An array of CartProductAnswer objects,\n * see {@link CartProductAnswer}\n */\nexport const genCartProductAnswers = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): CartProductAnswer<T>[] => {\n const num = quantity ?? genNumber({ min: 1, max: 5 });\n\n const cartProductAnswers = [];\n for (let i = 0; i < num; i++) {\n const cartProductAnswer = buildCartProductAnswer<T>(i.toString());\n cartProductAnswers.push(cartProductAnswer);\n }\n return cartProductAnswers;\n};\n\n/**\n * Generates CartProductQuestion object with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {Partial<CartProductQuestion>} overrides Properties to override\n * a {@link CartProductQuestion}\n * @returns {CartProductQuestion} A {@link CartProductQuestion} object\n */\nexport const buildCartProductQuestion = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<CartProductQuestion<T>> = {}\n): CartProductQuestion<T> => {\n return {\n ...buildProductQuestion(),\n answers: genCartProductAnswers(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CartProductQuestion objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CartProductQuestion[]} An array of CartProductQuestion objects,\n * see {@link CartProductQuestion}\n */\nexport const genCartProductQuestions = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): CartProductQuestion<T>[] => {\n return genItems(buildCartProductQuestion, quantity);\n};\n\n/**\n * Generates CartProduct object with random data.\n *\n * @template T Product additional info\n * @template U Categories additional info\n * @since 0.1.0\n * @param {Partial<CartProduct>} overrides Properties to override\n * a {@link CartProduct}\n * @returns {CartProduct} A {@link CartProduct} object\n */\nexport const buildCartProduct = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<CartProduct<T, U>> = {}\n): CartProduct<T, U> => {\n const comment = genBiasBoolean(0.2) ? faker.commerce.productMaterial() : \"\";\n const questions = genProductQuestions<T>(undefined, 1);\n return {\n ...buildProductDetails<T, U>(),\n questions,\n addDirectlyToCart: !questions.length,\n amount: 1,\n priceCategory: \"NORMAL\",\n alerts: [],\n comment,\n questionsAndAnswers: genCartProductQuestions<T>(),\n hash: \"\",\n createdAt: \"\",\n updatedAt: \"\",\n ...overrides\n };\n};\n\n/**\n * Generates a list of CartProduct objects with random data.\n *\n * @template T Products additional info\n * @template U Categories additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CartProduct[]} An array of CartProduct objects,\n * see {@link CartProduct}\n */\nexport const genCartProducts = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): CartProduct<T, U>[] => {\n return genItems(buildCartProduct, quantity);\n};\n","// Category builder functions\nimport { AdditionalInfo, Category } from \"@artisan-commerce/types\";\nimport { CategoryWithProducts } from \"@artisan-commerce/types\";\n\nimport { genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genBaseProducts } from \"./product.builder\";\nimport { genBiasBoolean, genId, genName } from \"./common.builder\";\n\n/**\n * Generates Category object with random data.\n *\n * @template T Category additional info\n * @since 0.1.0\n * @param {Partial<Category>} overrides Properties to override\n * a {@link Category}\n * @returns {Category} A {@link Category} object\n */\nexport const buildCategory = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Category<T>> = {}\n): Category<T> => {\n return {\n categoryId: genId(),\n displayInMenu: genBiasBoolean(0.9),\n images: genCDNImages(undefined, { width: 1200, height: 400 }),\n name: genName(),\n reload: true,\n subcategories: genBiasBoolean(0.5),\n featured: false,\n ...overrides\n };\n};\n\n/**\n * Generates a list of Category objects with random data.\n *\n * @template T Categories additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Category[]} An array of categories objects, see {@link Category}\n */\nexport const genCategories = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Category<T>[] => {\n return genItems(buildCategory, quantity);\n};\n\n/**\n * Generates CategoryWithProducts object with random data.\n *\n * @since 0.1.0\n * @param {Partial<CategoryWithProducts>} overrides Properties to override\n * a {@link CategoryWithProducts}\n * @returns {CategoryWithProducts} A {@link CategoryWithProducts} object\n */\nexport const buildCategoryWithProducts = (\n overrides: Partial<CategoryWithProducts> = {}\n): CategoryWithProducts => {\n const category = buildCategory();\n return {\n ...category,\n products: genBaseProducts(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CategoryWithProducts objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CategoryWithProducts[]} An array of products by categories,\n * see {@link CategoryWithProducts}\n */\nexport const genCategoryWithProducts = (\n quantity?: number\n): CategoryWithProducts[] => {\n return genItems(buildCategoryWithProducts, quantity);\n};\n","// Country builder functions\nimport { AdditionalInfo, Country, CountryCode } from \"@artisan-commerce/types\";\nimport { CountryCurrency } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genId, genName, genSymbol } from \"./common.builder\";\nimport { chooseRandom } from \"./common.builder\";\n\n/**\n * All values of CountryCode.\n *\n * @since 0.1.0\n */\nexport const countriesCodes: CountryCode[] = [\n \"AR\",\n \"BO\",\n \"BR\",\n \"CL\",\n \"CO\",\n \"EC\",\n \"PY\",\n \"PE\",\n \"UY\",\n \"VE\",\n \"US\"\n];\n\n/**\n * Generates CountryCurrency object with random data.\n *\n * @since 0.1.0\n * @param {Partial<CountryCurrency>} overrides Properties to override\n * a {@link CountryCurrency}\n * @returns {CountryCurrency} A {@link CountryCurrency} object\n */\nexport const buildCountryCurrency = (\n overrides: Partial<CountryCurrency> = {}\n): CountryCurrency => {\n return {\n id: genId(),\n name: chooseRandom([\"USD\", \"EUR\", \"CHL\"]),\n sign: genSymbol(),\n external_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of country's currency objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns A list of country's currency objects, see {@link CountryCurrency}\n */\nexport const genCountryCurrencies = (quantity?: number): CountryCurrency[] => {\n return genItems(buildCountryCurrency, quantity);\n};\n\n/**\n * Generates Country object with random data.\n *\n * @template T Country additional info\n * @since 0.1.0\n * @param {Country} overrides Properties to override a {@link Country}\n * @returns {Country} A {@link Country} object\n */\nexport const buildCountry = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Country<T>> = {}\n): Country<T> => {\n return {\n id: genId(),\n code: chooseRandom(countriesCodes),\n currency: buildCountryCurrency(),\n name: genName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of countries objects with random data.\n *\n * @template T Countries additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns An array of countries objects, see {@link Country}\n */\nexport const genCountries = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Country<T>[] => {\n return genItems(buildCountry, quantity);\n};\n","// Coupon builder functions\nimport { StoreCouponDetail } from \"@artisan-commerce/types\";\nimport { BenefitData, ProductCoupon } from \"@artisan-commerce/types\";\nimport { Wallet, StoreCoupon, Coupon } from \"@artisan-commerce/types\";\nimport { CouponCategory, Code, Token } from \"@artisan-commerce/types\";\nimport { Benefit, BenefitTypes, Award } from \"@artisan-commerce/types\";\n\nimport { buildURLImage, genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genCompanyName } from \"./common.builder\";\nimport { chooseRandom, genBiasBoolean } from \"./common.builder\";\nimport { genDate, genId, genNumber, genWord, genWords } from \"./common.builder\";\n\n/**\n * Generates Benefit object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Benefit>} overrides Properties to override a {@link Benefit}\n * @returns {Benefit} A {@link Benefit} object\n */\nexport const buildBenefit = (overrides: Partial<Benefit> = {}): Benefit => {\n const benefitTypes: BenefitTypes[] = [\n \"ALTER_DELIVERY\",\n \"DISCOUNT_FIXED\",\n \"DISCOUNT_PERCENTAGE\",\n \"PRODUCT\"\n ];\n const type = chooseRandom(benefitTypes);\n return {\n accountId: genId(),\n alerts: [],\n hash: genId(),\n award: type === \"PRODUCT\" ? genAwards(1) : buildAward(),\n benefitId: genId(),\n benefitWalletId: genId(),\n code: null,\n combined: genWord(),\n createdAt: genDate(),\n description: genWords(6),\n discountPercentage: genNumber(100),\n discountFixed: `${genNumber()}`,\n expirationDate: genDate(),\n externalId: null,\n image: genCDNImages(undefined, { query: \"discount\" }),\n limitAward: null,\n limitBenefit: genNumber(4),\n logicOperator: chooseRandom([\"OR\", \"AND\"]),\n quantity: genNumber(7),\n rules: [],\n title: genWords(3),\n type,\n updatedAt: genDate(),\n channelId: genId(),\n vendorId: genNumber(30).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Benefit objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Benefit[]} An array of Benefit objects, see {@link Benefit}\n */\nexport const genBenefits = (quantity?: number): Benefit[] => {\n return genItems(buildBenefit, quantity);\n};\n\n/**\n * Generates Award object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Award>} overrides Properties to override a {@link Award}\n * @returns {Award} A {@link Award} object\n */\nexport const buildAward = (overrides: Partial<Award> = {}): Award => {\n return {\n benefitId: genId(),\n discountPercentage: genNumber(100),\n discountValue: null,\n id: genId(),\n amount: genNumber(5),\n productDescription: genWords(5),\n productId: genId(),\n vendorId: genNumber(99).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Award objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Award[]} An array of Award objects, see {@link Award}\n */\nexport const genAwards = (quantity?: number): Award[] => {\n return genItems(buildAward, quantity);\n};\n\n/**\n * Generates Wallet object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Wallet>} overrides Properties to override a {@link Wallet}\n * @returns {Wallet} A {@link Wallet} object\n */\nexport const buildWallet = (overrides: Partial<Wallet> = {}): Wallet => {\n return {\n benefits: genBenefits(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Wallet objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Wallet[]} An array of Wallet objects, see {@link Wallet}\n */\nexport const genWallets = (quantity?: number): Wallet[] => {\n return genItems(buildWallet, quantity);\n};\n\n/**\n * Generates StoreCoupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<StoreCoupon>} overrides Properties to override\n * a {@link StoreCoupon}\n * @returns {StoreCoupon} A {@link StoreCoupon} object\n */\nexport const buildStoreCoupon = (\n overrides: Partial<StoreCoupon> = {}\n): StoreCoupon => {\n return {\n featured: genBiasBoolean(0.5),\n id: genId(),\n name: genCompanyName(),\n vendor_id: genNumber(9999).toString(),\n coupons: genCoupons(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StoreCoupon objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {StoreCoupon[]} An array of StoreCoupon objects,\n * see {@link StoreCoupon}\n */\nexport const genStoreCoupons = (quantity?: number): StoreCoupon[] => {\n return genItems(buildStoreCoupon, quantity);\n};\n\n/**\n * Generates ProductCoupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<ProductCoupon>} overrides Properties to override\n * a {@link ProductCoupon}\n * @returns {ProductCoupon} A {@link ProductCoupon} object\n */\nexport const buildProductCoupon = (\n overrides: Partial<ProductCoupon> = {}\n): ProductCoupon => {\n return {\n amount: genNumber(1),\n id: genId(),\n benefitId: genId(),\n discountPercentage: genNumber(100),\n discountValue: genNumber(10),\n productDescription: genWords(3),\n productId: genId(),\n swapProductId: null,\n vendorId: genNumber(999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductCoupon objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ProductCoupon[]} An array of ProductCoupon objects,\n * see {@link ProductCoupon}\n */\nexport const genProductCoupons = (quantity?: number): ProductCoupon[] => {\n return genItems(buildProductCoupon, quantity);\n};\n\n/**\n * Generates BenefitData object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BenefitData>} overrides Properties to override\n * a {@link BenefitData}\n * @returns {BenefitData} A {@link BenefitData} object\n */\nexport const buildBenefitData = (\n overrides: Partial<BenefitData> = {}\n): BenefitData => {\n return {\n account_id: genId(),\n amount: genNumber(1),\n automatic_redeemed: genBiasBoolean(0.1).toString(),\n code: genWord().toUpperCase(),\n combined: genBiasBoolean(0.1).toString(),\n days: null,\n description: genWords(5),\n discount_percentage: genNumber(9),\n end_date: genDate(),\n error_validation: genWords(3),\n expiration_date: genDate(),\n external_id: genNumber(10000).toString(),\n id: genId(),\n image: null,\n instruction: null,\n limit_award: null,\n limit_benefit: genNumber(99),\n logic_operator: chooseRandom([\"OR\", \"AND\"]),\n name: genWord(),\n products: genProductCoupons(1),\n quantity: genNumber(1),\n rules: [],\n spend: genNumber(100),\n start_date: genDate(),\n status: genWord(),\n stock: genNumber(999),\n success_message: genWords(3),\n term_and_condition: genWords(3),\n type: \"MIX\",\n type_alias: genWord(),\n unit: null,\n vendor_id: genNumber(99).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BenefitData objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BenefitData[]} An array of BenefitData objects,\n * see {@link BenefitData}\n */\nexport const genBenefitData = (quantity?: number): BenefitData[] => {\n return genItems(buildBenefitData, quantity);\n};\n\n/**\n * Generates Coupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Coupon>} overrides Properties to override\n * a {@link Coupon}\n * @returns {Coupon} A {@link Coupon} object\n */\nexport const buildCoupon = (overrides: Partial<Coupon> = {}): Coupon => {\n return {\n benefits: genBenefitData(1),\n category: buildCouponCategory(),\n codes: genCodes(),\n end_date: genDate(),\n image: buildURLImage({ query: \"coupon\" }),\n id: genId(),\n name: genWord(),\n only_store: genBiasBoolean(0.6),\n spend: genNumber(100),\n start_date: genDate(),\n status: chooseRandom([\"ACTIVE\", \"INACTIVE\"]),\n stock: genNumber(999),\n term_and_condition: genWords(5),\n text: genWords(4),\n type: \"COUPON\",\n vendor_id: genNumber(999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Coupon objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Coupon[]} An array of Coupon objects,\n * see {@link Coupon}\n */\nexport const genCoupons = (quantity?: number): Coupon[] => {\n return genItems(buildCoupon, quantity);\n};\n\n/**\n * Generates CouponCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<CouponCategory>} overrides Properties to override\n * a {@link CouponCategory}\n * @returns {CouponCategory} A {@link CouponCategory} object\n */\nexport const buildCouponCategory = (\n overrides: Partial<CouponCategory> = {}\n): CouponCategory => {\n return {\n featured: genBiasBoolean(0.5),\n id: genId(),\n name: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CouponCategory objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CouponCategory[]} An array of CouponCategory objects,\n * see {@link CouponCategory}\n */\nexport const genCouponCategories = (quantity?: number): CouponCategory[] => {\n return genItems(buildCouponCategory, quantity);\n};\n\n/**\n * Generates Code object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Code>} overrides Properties to override\n * a {@link Code}\n * @returns {Code} A {@link Code} object\n */\nexport const buildCode = (overrides: Partial<Code> = {}): Code => {\n return {\n code: genWord().toUpperCase(),\n coupon_id: genId(),\n id: genId(),\n status: chooseRandom([\"ACTIVE\", \"INACTIVE\"]),\n jwt: buildToken(),\n used: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Code objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Code[]} An array of Code objects,\n * see {@link Code}\n */\nexport const genCodes = (quantity?: number): Code[] => {\n return genItems(buildCode, quantity);\n};\n\n/**\n * Generates Token object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Token>} overrides Properties to override\n * a {@link Token}\n * @returns {Token} A {@link Token} object\n */\nexport const buildToken = (overrides: Partial<Token> = {}): Token => {\n return {\n token: \"www.google.com\",\n dif: genNumber(1700000000),\n iat: genNumber(1700000000),\n exp: genNumber(30000),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Token objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Token[]} An array of Token objects,\n * see {@link Token}\n */\nexport const genTokens = (quantity?: number): Token[] => {\n return genItems(buildToken, quantity);\n};\n\n/**\n * Generates StoreCouponDetail object with random data.\n *\n * @since 0.1.0\n * @param {Partial<StoreCouponDetail>} overrides Properties to override\n * a {@link StoreCouponDetail}\n * @returns {StoreCouponDetail} A {@link StoreCouponDetail} object\n */\nexport const buildStoreCouponDetail = (\n overrides: Partial<StoreCouponDetail> = {}\n): StoreCouponDetail => {\n return {\n benefits: genBenefitData(1),\n codes: genCodes(),\n end_date: genDate(),\n image: buildURLImage({ query: \"coupon\", height: 200, width: 544 }),\n id: genId(),\n name: genWord(),\n only_store: genBiasBoolean(0.6),\n spend: genNumber(100),\n start_date: genDate(),\n status: chooseRandom([\"ACTIVE\", \"INACTIVE\"]),\n stock: genNumber(999),\n term_and_condition: genWords(5),\n text: genWords(4),\n type: \"COUPON\",\n vendor_id: genNumber(999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StoreCouponDetail objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {StoreCouponDetail[]} An array of StoreCouponDetail objects,\n * see {@link StoreCouponDetail}\n */\nexport const genStoreCouponDetails = (\n quantity?: number\n): StoreCouponDetail[] => {\n return genItems(buildStoreCouponDetail, quantity);\n};\n","// Fulfillment builder functions\n\nimport { Workflow, StepWorkflow } from \"@artisan-commerce/types\";\nimport { StepWorkflowAdditionalInfo } from \"@artisan-commerce/types\";\nimport { StepWorkflowGroup, StepCode } from \"@artisan-commerce/types\";\nimport { ArtisnRequestMethod, Issue } from \"@artisan-commerce/types\";\nimport { StepCategory, StepNotification } from \"@artisan-commerce/types\";\nimport { IssueAdditionalInfo, IssueHistory } from \"@artisan-commerce/types\";\nimport { WebhookWorkflow, TransitionWorkflow } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genDate, genId } from \"./common.builder\";\nimport { genName, genURL, genNumber, genWords } from \"./common.builder\";\nimport { genBiasBoolean, genCompanyName } from \"./common.builder\";\n\n/**\n * All values of StepCategory.\n *\n * @since 0.1.0\n */\nexport const stepCategory: StepCategory[] = [\n \"DONE\",\n \"IN_PROGRESS\",\n \"PAYMENT_IN_PROGRESS\",\n \"TO_DO\"\n];\n\n/**\n * All values of StepCode.\n *\n * @since 0.1.0\n */\nexport const stepCode: StepCode[] = [\n \"START\",\n \"IN_PROGRESS\",\n \"ORDERED\",\n \"RECEIVED\",\n \"TO_ASSIGN\",\n \"ASSIGNED\",\n \"ON_ROUTE\",\n \"DISPATCHED\",\n \"CANCELED\",\n \"ERROR\"\n];\n\n/**\n * Generates Issue object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Issue>} overrides Properties to override\n * a {@link Issue}\n * @returns {Issue} A {@link Issue} object\n */\nexport const buildIssue = (overrides: Partial<Issue> = {}): Issue => {\n return {\n conditions: [],\n children: [],\n related: [],\n step: buildStepWorkflow(),\n account_id: genId(),\n additional_info: buildIssueAdditionalInfo(),\n client_issue_id: genId(),\n transaction_id: genId(),\n history: genIssueHistory(),\n id: genId(),\n parent_issue_id: null,\n related_issue_id: null,\n step_id: genId(),\n vendor_id: genId(),\n workflow_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Issue objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Issue[]} An array of Issue objects,\n * see {@link Issue}\n */\nexport const genIssues = (quantity?: number): Issue[] => {\n return genItems(buildIssue, quantity);\n};\n\n/**\n * Generates IssueAdditionalInfo object with random data.\n *\n * @since 0.5.15\n * @param {Partial<IssueAdditionalInfo>} overrides Properties to override\n * a {@link IssueAdditionalInfo}\n * @returns {IssueAdditionalInfo} A {@link IssueAdditionalInfo} object\n */\nexport const buildIssueAdditionalInfo = (\n overrides: Partial<IssueAdditionalInfo> = {}\n): IssueAdditionalInfo => {\n return {\n stores: [\n genNumber(200),\n genNumber(200),\n genNumber(200),\n genNumber(200),\n genNumber(200)\n ],\n uid: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of IssueAdditionalInfo objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {IssueAdditionalInfo[]} An array of IssueAdditionalInfo objects,\n * see {@link IssueAdditionalInfo}\n */\nexport const genIssueAdditionalInfo = (\n quantity?: number\n): IssueAdditionalInfo[] => {\n return genItems(buildIssueAdditionalInfo, quantity);\n};\n\n/**\n * Generates IssueHistory object with random data.\n *\n * @since 0.5.15\n * @param {Partial<IssueHistory>} overrides Properties to override\n * a {@link IssueHistory}\n * @returns {IssueHistory} A {@link IssueHistory} object\n */\nexport const buildIssueHistory = (\n overrides: Partial<IssueHistory> = {}\n): IssueHistory => {\n return {\n conditions: [],\n created_at: genDate(),\n finished_at: genDate(),\n additional_info: buildIssueAdditionalInfo(),\n id: genId(),\n step_id: genId(),\n step_name: genWords(2),\n transition_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of IssueHistory objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {IssueHistory[]} An array of IssueHistory objects,\n * see {@link IssueHistory}\n */\nexport const genIssueHistory = (quantity?: number): IssueHistory[] => {\n return genItems(buildIssueHistory, quantity);\n};\n\n/**\n * Generates Workflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Workflow>} overrides Properties to override\n * a {@link Workflow}\n * @returns {Workflow} A {@link Workflow} object\n */\nexport const buildWorkflow = (overrides: Partial<Workflow> = {}): Workflow => {\n return {\n description: genWords(7),\n id: genId(),\n name: genCompanyName(),\n steps: genStepWorkflows(),\n webhooks: genWebhookWorkflows(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Workflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Workflow[]} An array of Workflow objects, see {@link Workflow}\n */\nexport const genWorkflows = (quantity?: number): Workflow[] => {\n return genItems(buildWorkflow, quantity);\n};\n\n/**\n * Generates StepNotification object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepNotification>} overrides Properties to override\n * a {@link StepNotification}\n * @returns {StepNotification} A {@link StepNotification} object\n */\nexport const buildStepNotification = (\n overrides: Partial<StepNotification> = {}\n): StepNotification => {\n return {\n send_mail: genBiasBoolean(0.6),\n send_push: genBiasBoolean(0.4),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepNotification objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepNotification[]} An array of StepNotification objects,\n * see {@link StepNotification}\n */\nexport const genStepNotifications = (quantity?: number): StepNotification[] => {\n return genItems(buildStepNotification, quantity);\n};\n\n/**\n * Generates StepWorkflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepWorkflow>} overrides Properties to override\n * a {@link StepWorkflow}\n * @returns {StepWorkflow} A {@link StepWorkflow} object\n */\nexport const buildStepWorkflow = (\n overrides: Partial<StepWorkflow> = {}\n): StepWorkflow => {\n return {\n additional_info: buildStepWorkflowAdditionalInfo(),\n category: chooseRandom(stepCategory),\n code: chooseRandom(stepCode),\n color: chooseRandom([\"#FFFFFF\", \"#000000\"]),\n id: genId(),\n description: genWords(10),\n description_frontend: genWords(5),\n name: genCompanyName(),\n subtitle_frontend: genWords(5),\n title_frontend: genWords(3),\n transitions: genTransitionWorkflows(),\n notification: buildStepNotification(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepWorkflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepWorkflow[]} An array of StepWorkflow objects,\n * see {@link StepWorkflow}\n */\nexport const genStepWorkflows = (quantity?: number): StepWorkflow[] => {\n return genItems(buildStepWorkflow, quantity);\n};\n\n/**\n * Generates WebhookWorkflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<WebhookWorkflow>} overrides Properties to override\n * a {@link WebhookWorkflow}\n * @returns {WebhookWorkflow} A {@link WebhookWorkflow} object\n */\nexport const buildWebhookWorkflow = (\n overrides: Partial<WebhookWorkflow> = {}\n): WebhookWorkflow => {\n const methods: ArtisnRequestMethod[] = [\n \"DELETE\",\n \"GET\",\n \"POST\",\n \"PATCH\",\n \"PUT\"\n ];\n\n return {\n id: genId(),\n method: chooseRandom(methods),\n url: genURL(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of WebhookWorkflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {WebhookWorkflow[]} An array of WebhookWorkflow objects,\n * see {@link WebhookWorkflow}\n */\nexport const genWebhookWorkflows = (quantity?: number): WebhookWorkflow[] => {\n return genItems(buildWebhookWorkflow, quantity);\n};\n\n/**\n * Generates StepWorkflowAdditionalInfo object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepWorkflowAdditionalInfo>} overrides Properties to\n * override a {@link StepWorkflowAdditionalInfo}\n * @returns {StepWorkflowAdditionalInfo} A\n * {@link StepWorkflowAdditionalInfo} object\n */\nexport const buildStepWorkflowAdditionalInfo = (\n overrides: Partial<StepWorkflowAdditionalInfo> = {}\n): StepWorkflowAdditionalInfo => {\n return {\n client_frontend: genBiasBoolean(0.6),\n operators_frontend: genBiasBoolean(0.4),\n group: buildStepWorkflowGroup(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepWorkflowAdditionalInfo objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepWorkflowAdditionalInfo[]} An array of\n * StepWorkflowAdditionalInfo objects, see {@link StepWorkflowAdditionalInfo}\n */\nexport const genStepWorkflowAdditionalInfos = (\n quantity?: number\n): StepWorkflowAdditionalInfo[] => {\n return genItems(buildStepWorkflowAdditionalInfo, quantity);\n};\n\n/**\n * Generates StepWorkflowGroup object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepWorkflowGroup>} overrides Properties to override\n * a {@link StepWorkflowGroup}\n * @returns {StepWorkflowGroup} A {@link StepWorkflowGroup} object\n */\nexport const buildStepWorkflowGroup = (\n overrides: Partial<StepWorkflowGroup> = {}\n): StepWorkflowGroup => {\n const stepCode: StepCode[] = [\n \"START\",\n \"IN_PROGRESS\",\n \"ORDERED\",\n \"RECEIVED\",\n \"TO_ASSIGN\",\n \"ASSIGNED\",\n \"ON_ROUTE\",\n \"DISPATCHED\",\n \"CANCELED\",\n \"ERROR\"\n ];\n\n return {\n code: chooseRandom(stepCode),\n description: genWords(6),\n type: \"default\",\n weight: genNumber(10000).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepWorkflowGroup objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepWorkflowGroup[]} An array of StepWorkflowGroup objects,\n * see {@link StepWorkflowGroup}\n */\nexport const genStepWorkflowGroups = (\n quantity?: number\n): StepWorkflowGroup[] => {\n return genItems(buildStepWorkflowGroup, quantity);\n};\n\n/**\n * Generates TransitionWorkflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<TransitionWorkflow>} overrides Properties to override\n * a {@link TransitionWorkflow}\n * @returns {TransitionWorkflow} A {@link TransitionWorkflow} object\n */\nexport const buildTransitionWorkflow = (\n overrides: Partial<TransitionWorkflow> = {}\n): TransitionWorkflow => {\n return {\n channel_id: genId(),\n conditions: [],\n description: genWords(10),\n from_step_id: genId(),\n to_step_id: genId(),\n id: genId(),\n name: genName(),\n vendor_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of TransitionWorkflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {TransitionWorkflow[]} An array of TransitionWorkflow objects,\n * see {@link TransitionWorkflow}\n */\nexport const genTransitionWorkflows = (\n quantity?: number\n): TransitionWorkflow[] => {\n return genItems(buildTransitionWorkflow, quantity);\n};\n","import { MasivoCondition, MasivoEffect } from \"@artisan-commerce/types\";\nimport { CouponCampaignAttributes, CodeFormat } from \"@artisan-commerce/types\";\nimport { MasivoConditionBase, WalletAttribute } from \"@artisan-commerce/types\";\nimport { WalletMedia, WalletReward, MasivoTier } from \"@artisan-commerce/types\";\nimport { ExtendedLoyaltyInfo, CodesSummary } from \"@artisan-commerce/types\";\nimport { RedeemableBenefit } from \"@artisan-commerce/types\";\nimport { MasivoCustomerMetrics } from \"@artisan-commerce/types\";\nimport { MasivoWallet, MetricPeriod } from \"@artisan-commerce/types\";\nimport { MasivoCustomer, MasivoInfo } from \"@artisan-commerce/types\";\nimport { WalletTotal, WalletLine } from \"@artisan-commerce/types\";\nimport { MasivoCampaign, MasivoCampaignRule } from \"@artisan-commerce/types\";\nimport { LoyaltyAccumulation } from \"@artisan-commerce/types\";\n\nimport { genBiasBoolean } from \"./common.builder\";\nimport { genNumericId, genNumber, genId, genWord } from \"./common.builder\";\nimport { genDate, genParagraph, genURL, chooseRandom } from \"./common.builder\";\n\nexport const buildMasivoCustomer = (\n overrides?: MasivoCustomer\n): MasivoCustomer => {\n return {\n name: genWord(),\n tier_id: \"eac25bef-c6de-4906-8d99-014b5950132f\",\n email: `${genWord()}@${genWord()}.com`,\n gender: chooseRandom([\"MALE\", \"FEMALE\", \"NOT_SPECIFIED\"]),\n id: `${genNumericId()}`,\n metadata: {},\n registration_date: \"2024-11-15T00:00:00+00:00\",\n status: \"ACTIVE\",\n dob: \"2010-11-15T00:00:00+00:00\",\n metrics: buildCustomerMetrics(),\n ...overrides\n };\n};\n\nexport const buildCustomerMetrics = (\n overrides?: MasivoCustomerMetrics\n): MasivoCustomerMetrics => {\n return {\n last_month: buildMetrics(),\n last_quarter: buildMetrics(),\n last_year: buildMetrics(),\n last_semester: buildMetrics(),\n this_month: buildMetrics(),\n this_quarter: buildMetrics(),\n this_semester: buildMetrics(),\n this_year: buildMetrics(),\n lifetime: buildMetrics(),\n ...overrides\n };\n};\n\nexport const buildMetrics = (overrides?: MetricPeriod): MetricPeriod => {\n return {\n from: genDate().toString(),\n to: genDate().toString(),\n last_visit: null,\n number_of_purchases: genNumber(),\n spend_total: genNumber(),\n tier_id: genId(),\n ...overrides\n };\n};\n\nexport const buildMasivoWallet = (overrides?: MasivoWallet): MasivoWallet => {\n return {\n id: `${genNumericId()}`,\n owner_id: `${genNumericId()}`,\n totals: [buildWalletTotal(), buildWalletTotal()],\n lines: [buildWalletLine(), buildWalletLine()],\n ...overrides\n };\n};\n\nexport const buildMasivoInfo = (\n override?: MasivoInfo,\n customerOverrides?: MasivoCustomer,\n walletOverrides?: MasivoWallet\n): MasivoInfo => {\n return {\n customer: buildMasivoCustomer(customerOverrides),\n wallet: buildMasivoWallet(walletOverrides),\n ...override\n };\n};\n\nexport const buildWalletMedia = (overrides?: WalletMedia): WalletMedia => {\n return {\n thumbnail_url: genURL(),\n cover_url: genURL(),\n ...overrides\n };\n};\n\nexport const buildWalletAttribute = (\n overrides?: WalletAttribute\n): WalletAttribute => {\n return {\n conversion_factor: genNumber(1),\n action: chooseRandom([\"ADD_PRODUCT\", \"REPLACE_PRODUCT\"]),\n discount_type: chooseRandom([\"fixed\", \"percentage\"]),\n discount_value: genNumber(10),\n new_amount: genNumber(20),\n replace_amount: genNumber(20),\n replace_product_id: genId(),\n new_product_id: genId(),\n item_id: genId(),\n type: chooseRandom([\"order\", \"shipping\", \"product\"]),\n ...overrides\n };\n};\n\nexport const buildMasivoConditionBase = (\n overrides?: MasivoConditionBase\n): MasivoConditionBase => {\n return {\n invalidMessage: genWord(4),\n primitive: chooseRandom([\"int\", \"char\", \"bool\"]),\n type: chooseRandom([\n \"Current date\",\n \"Registration\",\n \"Birthday\",\n \"Customer number of purchases\",\n \"Customer has made a purchase\",\n \"Customer points balance\",\n \"Customer spend total\",\n \"Customer total spend\",\n \"Ordered at store\",\n \"Ordered in channel\",\n \"Payment method\",\n \"Order includes product\",\n \"Order value\",\n \"Order includes tag\",\n \"Product includes tag\",\n \"Shipping includes tag\"\n ]),\n operator: chooseRandom([\n \"greater than\",\n \"greater than or equal to\",\n \"less than\",\n \"less than or equal to\",\n \"equal to\",\n \"not equal to\",\n \"is\",\n \"is not\",\n \"falls within period\",\n \"occurred\",\n \"occurred in the last\",\n \"occurred more than\"\n ]),\n ...overrides\n };\n};\n\nexport const buildMasivoCondition = (\n overrides?: MasivoCondition\n): MasivoCondition => {\n return {\n ...buildMasivoConditionBase(),\n value: genWord(4),\n reward_id: genId(),\n allDay: genBiasBoolean(0.2),\n startDate: genDate().toString(),\n endDate: genDate().toString(),\n repeat: chooseRandom([\n \"NONE\",\n \"DAILY\",\n \"WEEKLY\",\n \"FORTNIGHTLY\",\n \"MONTHLY\",\n \"WEEK_OF_MONTH\"\n ]),\n reporting_period: chooseRandom([\n \"MONTHLY\",\n \"QUARTERLY\",\n \"YEARLY\",\n \"SEMESTERLY\"\n ]),\n ...overrides\n };\n};\n\nexport const buildWalletReward = (overrides?: WalletReward): WalletReward => {\n return {\n id: genId(),\n name: genWord(4),\n description: genWord(12),\n conditions: [],\n media: buildWalletMedia(),\n type: chooseRandom([\"DISCOUNT\", \"POINTS\", \"GIFT_CARD\", \"PRODUCT\"]),\n status: \"ACTIVE\",\n brand_id: null,\n attributes: buildWalletAttribute({\n conversion_factor: 0.025\n }),\n ...overrides\n };\n};\n\nexport const buildWalletTotal = (overrides?: WalletTotal): WalletTotal => {\n return {\n reward_id: genId(),\n reward: buildWalletReward(),\n total: genNumber(200),\n expiration_date: genDate().toString(),\n ...overrides\n };\n};\n\nexport const buildWalletLine = (overrides?: WalletLine): WalletLine => {\n return {\n brand_id: genId(),\n reward_id: genId(),\n campaign_id: genId(),\n expiration_date: genDate().toString(),\n issued_at: genDate().toString(),\n reservation_expires_at: genDate().toString(),\n amount: genNumber(200),\n reward: buildWalletReward(),\n ...overrides\n };\n};\n\nexport const buildRedeemableBenefit = (\n overrides?: RedeemableBenefit\n): RedeemableBenefit => {\n return {\n brand_id: genId(),\n campaign_id: genId(),\n issued_at: genDate().toString(),\n amount: genNumber(200),\n ...buildWalletTotal(),\n ...overrides\n };\n};\n\nexport const buildLoyaltyAccumulation = (\n override?: LoyaltyAccumulation\n): LoyaltyAccumulation => {\n if (override) return override;\n const [line] = [buildWalletLine()];\n const [total] = [buildWalletTotal()];\n const { reward } = total;\n return { ...line, reward };\n};\n\nexport const buildMasivoTier = (overrides?: MasivoTier): MasivoTier => {\n return {\n id: genId(),\n name: `${genWord()} ${genWord()}`,\n status: \"ACTIVE\",\n level: genNumber(12),\n description: genParagraph(1),\n entry_conditions: [[buildMasivoCondition()]],\n exit_conditions: [[buildMasivoCondition()]],\n template_id: genId(),\n ...overrides\n };\n};\n\nexport const buildExtendedLoyaltyInfo = (\n overrides?: ExtendedLoyaltyInfo\n): ExtendedLoyaltyInfo => {\n return {\n ...buildMasivoInfo(),\n accumulations: [buildLoyaltyAccumulation()],\n redemptions: [],\n ...overrides\n };\n};\n\nexport const buildCodesSummary = (overrides?: CodesSummary): CodesSummary => {\n return {\n codes: [genWord(1), genWord(1), genWord(1)],\n left: genNumber(70),\n used: genNumber(30),\n total: genNumber(100),\n ...overrides\n };\n};\n\nexport const buildCodeFormat = (overrides?: CodeFormat): CodeFormat => {\n return {\n case_sensitive: genBiasBoolean(0.3),\n exclude_characters: genWord(1),\n include_characters: genWord(1),\n template: genWord(10),\n ...overrides\n };\n};\n\nexport const buildCouponCampaignAttributes = (\n overrides?: CouponCampaignAttributes\n): CouponCampaignAttributes => {\n return {\n code_format: buildCodeFormat(),\n codes_summary: buildCodesSummary(),\n max_redemptions_per_code: genNumber(3),\n max_redemptions_per_code_per_customer: genNumber(5),\n ...overrides\n };\n};\n\nexport const buildLoyaltyCampaign = (\n overrides?: MasivoCampaign\n): MasivoCampaign => {\n return {\n id: genId(),\n name: `${genWord()} ${genWord()}`,\n description: genParagraph(1),\n brand_id: genId(),\n start_date: genDate().toString(),\n end_date: null,\n rules: [buildCampaignRule(), buildCampaignRule()],\n type: chooseRandom([\"COUPONS\", \"BEHAVIOR\"]),\n funded_by: null,\n labels: [chooseRandom([\"Domicilio\", \"Restaurantes\"])],\n budget: genNumber(1000),\n divide_budget_in: chooseRandom([\"daily\", \"weekly\", \"monthly\", \"total\"]),\n content: {\n Title: {\n name: genWord(),\n type: \"input\",\n value: genWord()\n },\n BannerImage: {\n name: genWord(),\n type: \"input\",\n value: genURL()\n }\n },\n template_id: genId(),\n metadata: {},\n attributes: buildCouponCampaignAttributes(),\n status: chooseRandom([\"RUNNING\", \"PAUSED\", \"SCHEDULED\", \"FINISHED\"]),\n ...overrides\n };\n};\n\nexport const buildMasivoEffect = (overrides?: MasivoEffect): MasivoEffect => {\n return {\n amount: genNumber(200),\n type: chooseRandom([\"DISCOUNT\", \"POINTS\", \"GIFT_CARD\", \"PRODUCT\"]),\n reward_id: genId(),\n reward: buildWalletReward(),\n tier_id: genId(),\n expiration_date: genDate().toString(),\n multiplier: chooseRandom([\"Order value\"]),\n ...overrides\n };\n};\n\nexport const buildCampaignRule = (\n overrides?: MasivoCampaignRule\n): MasivoCampaignRule => {\n return { conditions: [], effects: [], ...overrides };\n};\n","// User builders\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, Phone, User } from \"@artisan-commerce/types\";\n\nimport { chooseRandom, genBiasBoolean } from \"./common.builder\";\nimport { genDocument, genDocumentType } from \"./common.builder\";\nimport { genEmail, genNumber } from \"./common.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genId, genName, genCountry, genNumericId } from \"./common.builder\";\nimport { countriesCodes } from \"./country.builder\";\n\n/**\n * Generates User object with random data.\n *\n * @template T User additional info\n * @since 0.1.0\n * @param {Partial<User>} overrides Properties to override a {@link User}\n * @returns {User} A {@link User} object\n */\nexport const buildUser = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<User<T>> = {}\n): User<T> => {\n return {\n idInt: genNumericId(),\n uid: genId(),\n name: genName(),\n lastname: genName(),\n email: genEmail(),\n birthdate: faker.date.past().toISOString().split(\"T\")[0],\n country: genCountry(),\n document: genDocument(10),\n documentType: genDocumentType(),\n active: genBiasBoolean(0.8),\n externalId: genId(),\n gender: chooseRandom([\"MALE\", \"FEMALE\"]),\n vendorId: genId(),\n middleName: genName(),\n secondLastname: genName(),\n origin: chooseRandom([\"ios\", \"android\", \"web\"]),\n phone: buildPhone(),\n maritalStatus: chooseRandom([\"MARRIED\", \"DIVORCED\", \"SINGLE\"]),\n type: \"NORMAL\",\n latestConditionsAcceptanceDate: faker.date.past().toISOString(),\n rewardsProgramStatus: chooseRandom([\"REGISTERED\", \"UNREGISTERED\"]),\n ...overrides\n };\n};\n\n/**\n * Generates a list of User objects with random data.\n *\n * @template T Users additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {User[]} An array of {@link User}s objects\n */\nexport const genUsers = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): User<T>[] => {\n return genItems(buildUser, quantity);\n};\n\n/**\n * Generates Phone object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Phone>} overrides Properties to override a {@link Phone}\n * @returns {Phone} A {@link Phone} object\n */\nexport const buildPhone = (overrides: Partial<Phone> = {}): Phone => {\n return {\n countryCode: chooseRandom([\"+593\", \"+1\"]),\n countryIsoCode: chooseRandom(countriesCodes),\n number: genNumber(9999999999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Phone objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Phone[]} An array of Phone objects, see {@link Phone}\n */\nexport const genPhones = (quantity?: number): Phone[] => {\n return genItems(buildPhone, quantity);\n};\n","// Vendor builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, Vendor } from \"@artisan-commerce/types\";\n\nimport { genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genNumber, genWords } from \"./common.builder\";\n\n/**\n * Generates Vendor object with random data.\n *\n * @template T Vendor additional info\n * @since 0.1.0\n * @param {Partial<Vendor>} overrides Properties to override a {@link Vendor}\n * @returns {Vendor} A {@link Vendor} object\n */\nexport const buildVendor = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Vendor<T>> = {}\n): Vendor<T> => {\n return {\n id: genNumber(999).toString(),\n images: genCDNImages(undefined, { query: \"brand\" }),\n maxPurchaseValue: 0,\n name: faker.company.name(),\n description: genWords(10),\n sponsored: genBiasBoolean(0.5),\n active: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Vendor objects with random data.\n *\n * @template T Vendors additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Vendor[]} An array of {@link Vendor}s objects\n */\nexport const genVendors = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Vendor<T>[] => {\n return genItems(buildVendor, quantity);\n};\n","// Stores builder\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo } from \"@artisan-commerce/types\";\nimport { Days, Service, Delivery, Schedule } from \"@artisan-commerce/types\";\nimport { Store } from \"@artisan-commerce/types\";\nimport { GenericStoreLocation, StoreLocation } from \"@artisan-commerce/types\";\n\nimport { buildVendor } from \"./vendor.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genWord, genURL } from \"./common.builder\";\nimport { genCDNImages } from \"./image.builder\";\nimport { genCatalogues } from \"./catalogue.builder\";\nimport { genNumber, chooseRandom } from \"./common.builder\";\nimport { genBiasBoolean, genMobilPhone, genId } from \"./common.builder\";\nimport { genSymbol, genCompanyName } from \"./common.builder\";\n\n/**\n * Generates Store object with random data.\n *\n * @template T Store additional info\n * @template U Vendor additional info\n * @template V Catalogues additional info\n * @since 0.1.0\n * @param {Partial<Store>} overrides Properties to override a {@link Store}\n * @returns {Store} A {@link Store} object\n */\nexport const buildStore = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<Store<T, U, V>> = {}\n): Store<T, U, V> => {\n return {\n storeId: genId(),\n storeName: faker.name.jobTitle(),\n address: faker.address.street(),\n vendor: buildVendor<U>(),\n coverage: genBiasBoolean(0.99),\n coverUrl: genURL(),\n delivery: buildDelivery(),\n description: null,\n isOpen: genBiasBoolean(0.99),\n maxOrderAmount: genNumber(50),\n minOrderAmount: genNumber(10),\n orderSymbol: genSymbol(),\n phone: genMobilPhone(\"593\"),\n sponsored: genBiasBoolean(0.1),\n latitude: genNumber({ min: 0, max: 80, precision: 6 }),\n longitude: genNumber({ min: 0, max: 80, precision: 6 }),\n schedules: genSchedules(8),\n timezone: \"\",\n services: genServices(10),\n cookTime: genNumber(60).toString(),\n city: buildGenericStoreLocation(),\n outOfService: genBiasBoolean(0.1),\n isDefault: genBiasBoolean(0.1),\n active: genBiasBoolean(0.9),\n minOrder: genNumber(15),\n minOrderSymbol: genSymbol(),\n country: buildGenericStoreLocation(),\n location: buildStoreLocation(),\n catalogues: genCatalogues(),\n images: genCDNImages(undefined, { query: \"store\" }),\n distance: genNumber(20),\n polygons: null,\n ...overrides\n };\n};\n\n/**\n * Generates Delivery object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Delivery>} overrides Properties to override\n * a {@link Delivery}\n * @returns {Delivery} A {@link Delivery} object\n */\nexport const buildDelivery = (overrides: Partial<Delivery> = {}): Delivery => {\n return {\n deliveryTimeUnit: chooseRandom([\"min\"]),\n deliveryTimeValue: genNumber(60).toString(),\n express: genBiasBoolean(0.1),\n freeDelivery: genBiasBoolean(0.1),\n ...overrides\n };\n};\n\n/**\n * Generates Schedule object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Schedule>} overrides Properties to override\n * a {@link Schedule}\n * @returns {Schedule} A {@link Schedule} object\n */\nexport const buildSchedule = (overrides: Partial<Schedule> = {}): Schedule => {\n const days: Days[] = [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\",\n \"SPECIAL\"\n ];\n return {\n day: chooseRandom(days),\n from: genNumber(36000),\n to: genNumber(77400),\n catalogueId: genNumber(100).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates Service object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Service>} overrides Properties to override a {@link Service}\n * @returns {Service} A {@link Service} object\n */\nexport const buildService = (overrides: Partial<Service> = {}): Service => {\n return {\n name: genWord(),\n active: genBiasBoolean(0.5),\n url: genURL(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Service objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Service[]} An array of {@link Service}s objects\n */\nexport const genServices = (quantity?: number): Service[] => {\n return genItems(buildService, quantity);\n};\n\n/**\n * Generates a list of Schedule objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Schedule[]} An array of {@link Schedule}s objects\n */\nexport const genSchedules = (quantity?: number): Schedule[] => {\n return genItems(buildSchedule, quantity);\n};\n\n/**\n * Generates a list of Store objects with random data.\n *\n * @template T Store additional info\n * @template U Vendor additional info\n * @template V Catalogues additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Store[]} An array of {@link Store}s objects\n */\nexport const genStores = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): Store<T, U, V>[] => {\n return genItems(buildStore, quantity);\n};\n\n/**\n * Generates GenericStoreLocation object with random data.\n *\n * @since 0.1.0\n * @param {Partial<GenericStoreLocation>} overrides Properties to override\n * a {@link GenericStoreLocation}\n * @returns {GenericStoreLocation} A {@link GenericStoreLocation} object\n */\nexport const buildGenericStoreLocation = (\n overrides: Partial<GenericStoreLocation> = {}\n): GenericStoreLocation => {\n return {\n id: genId(),\n name: genCompanyName(),\n active: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of GenericStoreLocation objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {GenericStoreLocation[]} An array of {@link GenericStoreLocation}s\n * objects\n */\nexport const genGenericStoreLocation = (\n quantity?: number\n): GenericStoreLocation[] => {\n return genItems(buildGenericStoreLocation, quantity);\n};\n\n/**\n * Generates StoreLocation object with random data.\n *\n * @since 0.1.0\n * @param {Partial<StoreLocation>} overrides Properties to override\n * a {@link StoreLocation}\n * @returns {StoreLocation} A {@link StoreLocation} object\n */\nexport const buildStoreLocation = (\n overrides: Partial<StoreLocation> = {}\n): StoreLocation => {\n return {\n lat: genNumber(),\n lon: genNumber(),\n geohash: \"6rbpjdx8km6m\",\n fragment: genBiasBoolean(0.8),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StoreLocation objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {StoreLocation[]} An array of {@link StoreLocation}s objects\n */\nexport const genStoreLocation = (quantity?: number): StoreLocation[] => {\n return genItems(buildStoreLocation, quantity);\n};\n","// ShoppingCart builder functions\nimport { AdditionalInfo } from \"@artisan-commerce/types\";\nimport { ShippingCostTax, BenefitTypes } from \"@artisan-commerce/types\";\nimport { BillTotal, BillTotalCategory } from \"@artisan-commerce/types\";\nimport { ShoppingCart, ShippingCost } from \"@artisan-commerce/types\";\nimport { CartStore, Objectify, Discount } from \"@artisan-commerce/types\";\n\nimport { buildStore } from \"./store.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genBiasBoolean, genId } from \"./common.builder\";\nimport { genSymbol, genWord, genNumber } from \"./common.builder\";\n/**\n * Generates BillTotalCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BillTotalCategory>} overrides Properties to override\n * a {@link BillTotalCategory}\n * @returns {BillTotalCategory} A {@link BillTotalCategory} object\n */\nexport const buildBillTotalNormalCategory = (\n overrides: Partial<BillTotalCategory> = {}\n): BillTotalCategory => {\n const subtotalBeforeTaxes = genNumber({ min: 1, max: 10, precision: 2 });\n const taxTotal = subtotalBeforeTaxes * 0.12;\n const total = subtotalBeforeTaxes + taxTotal;\n return {\n subtotalBeforeTaxes,\n taxTotal,\n total,\n discounts: genDiscounts(1),\n taxes: [],\n ...overrides\n };\n};\n\n/**\n * Generates BillTotal object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BillTotal>} overrides Properties to override\n * a {@link BillTotal}\n * @returns {BillTotal} A {@link BillTotal} object\n */\nexport const buildBillTotal = (\n overrides: Partial<BillTotal> = {}\n): BillTotal => {\n return {\n NORMAL: buildBillTotalNormalCategory(),\n POINTS: buildBillTotalNormalCategory(),\n ...overrides\n };\n};\n\n/**\n * Generates CartStore object with random data.\n *\n * @template T Store additional info\n * @template U Product additional info\n * @template V Categories additional info\n * @template W Vendor additional info\n * @template X Catalogues additional info\n * @since 0.1.0\n * @param {Partial<CartStore>} overrides Properties to override\n * a {@link CartStore}\n * @returns {CartStore} A {@link CartStore} object\n */\nexport const buildCartStore = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo,\n W extends AdditionalInfo = AdditionalInfo,\n X extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<CartStore<T, U, V, W, X>> = {}\n): CartStore<T, U, V, W, X> => {\n return {\n ...buildStore<T, W, X>(),\n alerts: [],\n products: {},\n ...overrides\n };\n};\n\n/**\n * Generates a CartStore object where the key is the store id\n * and the value is the cart store object\n *\n * @template T Store additional info\n * @template U Product additional info\n * @template V Categories additional info\n * @template W Vendor additional info\n * @template X Catalogues additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Objectify<CartStore>} An Objectify<{@link CartStore}>\n */\nexport const genCartStores = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo,\n W extends AdditionalInfo = AdditionalInfo,\n X extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): Objectify<CartStore<T, U, V, W, X>> => {\n const num = quantity ?? genNumber({ min: 1, max: 1 });\n\n const cartStores: Objectify<CartStore<T, U, V, W, X>> = {};\n for (let i = 0; i < num; i++) {\n const cartStore = buildCartStore<T, U, V, W, X>();\n const storeIndex = cartStore.storeId;\n cartStores[storeIndex] = cartStore;\n }\n return cartStores;\n};\n\n/**\n * Generates ShoppingCart object with random data.\n *\n * @template T Shopping cart additional info\n * @template U Product additional info\n * @template V Categories additional info\n * @template W Store additional info\n * @template X Vendor additional info\n * @template Y Catalogues additional info\n * @template Z Shipping cost additional info\n * @since 0.1.0\n * @param {Partial<ShoppingCart>} overrides Properties to override\n * a {@link ShoppingCart}\n * @returns {ShoppingCart} A {@link ShoppingCart} object\n */\nexport const buildShoppingCart = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo,\n W extends AdditionalInfo = AdditionalInfo,\n X extends AdditionalInfo = AdditionalInfo,\n Y extends AdditionalInfo = AdditionalInfo,\n Z extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<ShoppingCart<T, U, V, W, X, Y, Z>> = {}\n): ShoppingCart<T, U, V, W, X, Y, Z> => {\n return {\n name: \"default\",\n billTotal: buildBillTotal(),\n channelId: genId(),\n createdAt: new Date().toISOString(),\n latitude: genNumber({ min: -20, max: 20, precision: 8 }),\n longitude: genNumber({ min: -20, max: 20, precision: 8 }),\n id: genNumber(999).toString(),\n updatedAt: new Date().toISOString(),\n stores: genCartStores<W, U, V, X, Y>(),\n shippingCost: buildShippingCost<Z>(),\n ...overrides\n };\n};\n\n/**\n * Generates ShippingCost object with random data.\n *\n * @template T Shipping cost additional info\n * @since 0.1.0\n * @param {Partial<ShippingCost>} overrides Properties to override\n * a {@link ShippingCost}\n * @returns {ShippingCost} A {@link ShippingCost} object\n */\nexport const buildShippingCost = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ShippingCost<T>> = {}\n): ShippingCost<T> => {\n return {\n amount: genNumber(3),\n discountTotal: genNumber(100),\n discounts: [],\n grossPrice: genNumber(100),\n name: genWord(),\n netPrice: genNumber(100),\n productId: genId(),\n subtotalBeforeTaxes: genNumber(100),\n symbol: genSymbol(),\n taxTotal: genNumber(100),\n taxes: genShippingCostTaxes(),\n total: genNumber(100),\n discountNetPrice: genNumber(100),\n ...overrides\n };\n};\n\n/**\n * Generates ShippingCostTax object with random data.\n *\n * @since 0.1.0\n * @param {Partial<ShippingCostTax>} overrides Properties to override\n * a {@link ShippingCostTax}\n * @returns {ShippingCostTax} A {@link ShippingCostTax} object\n */\nexport const buildShippingCostTax = (\n overrides: Partial<ShippingCostTax> = {}\n): ShippingCostTax => {\n return {\n percentage: genNumber(100),\n name: genWord(),\n vatRateCode: genNumber(100),\n code: genNumber(100),\n vatRate: genWord(),\n taxBase: genNumber(100),\n value: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ShippingCostTax objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ShippingCostTax[]} An array of shipping cost taxes objects,\n * see {@link ShippingCostTax}\n */\nexport const genShippingCostTaxes = (quantity?: number): ShippingCostTax[] => {\n return genItems(buildShippingCostTax, quantity);\n};\n\n/**\n * Generates Discount object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Discount>} overrides Properties to override\n * a {@link Discount}\n * @returns {Discount} A {@link Discount} object\n */\nexport const buildDiscount = (overrides: Partial<Discount> = {}): Discount => {\n const benefitTypes: BenefitTypes[] = [\n \"ALTER_DELIVERY\",\n \"DISCOUNT_FIXED\",\n \"DISCOUNT_PERCENTAGE\",\n \"PRODUCT\"\n ];\n const type = chooseRandom(benefitTypes);\n return {\n benefitId: genId(),\n benefitWalletId: genId(),\n discountBase: genNumber(100),\n hasTaxes: genBiasBoolean(0.5),\n isInitialized: genBiasBoolean(0.5),\n name: genWord(),\n percentage: genNumber(100),\n taxValue: genNumber(100),\n type,\n value: genNumber(100),\n ...overrides\n };\n};\n\nexport const genDiscounts = (quantity?: number): Discount[] => {\n return genItems(buildDiscount, quantity);\n};\n","// Shipping address builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { Field, AdditionalInfo } from \"@artisan-commerce/types\";\nimport { ShippingAddress, LivingPlace } from \"@artisan-commerce/types\";\nimport { Rule, Message } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genWord, genNumber, genName, genId } from \"./common.builder\";\nimport { genAddress, getBoolean, genCountry, genDate } from \"./common.builder\";\nimport { genBiasBoolean } from \"./common.builder\";\n\n/**\n * Generates a random street name.\n *\n * @since 0.1.0\n */\nexport const genStreetName = (\n ...params: Parameters<typeof faker.address.street>\n) => faker.address.street(...params);\n\n/**\n * Generates a random street number.\n *\n * @since 0.1.0\n */\nexport const genStreetNumber = (\n ...params: Parameters<typeof faker.address.zipCode>\n) => faker.address.zipCode(...params);\n\n/**\n * Generates a random latitude.\n *\n * @since 0.1.0\n */\nexport const genLatitude = (\n ...params: Parameters<typeof faker.address.latitude>\n) => faker.address.latitude(...params);\n\n/**\n * Generates a random longitude.\n *\n * @since 0.1.0\n */\nexport const genLongitude = (\n ...params: Parameters<typeof faker.address.longitude>\n) => faker.address.longitude(...params);\n\n/**\n * Generates Field object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Field>} overrides Properties to override a {@link Field}\n * @returns {Field} A {@link Field} object\n */\nexport const buildField = (overrides: Partial<Field> = {}): Field => {\n return {\n id: genWord(),\n value: genWord(),\n label: genWord(),\n rules: buildRule(),\n messages: buildMessage(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Field objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Field[]} A list of {@link Field} objects\n */\nexport const genFields = (quantity?: number): Field[] => {\n return genItems(buildField, quantity);\n};\n\n/**\n * Generates Rule object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Rule>} overrides Properties to override a {@link Rule}\n * @returns {Rule} A {@link Rule} object\n */\nexport const buildRule = (overrides?: Partial<Rule>): Rule => {\n return {\n max: genNumber(),\n min: genNumber(),\n ...overrides\n };\n};\n\n/**\n * Generates Message object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Message>} overrides Properties to override a {@link Message}\n * @returns {Message} A {@link Message} object\n */\nexport const buildMessage = (overrides?: Partial<Message>): Message => {\n return {\n max: genWord(),\n min: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Rules objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Rule[]} A list of {@link Rule} objects\n */\nexport const genRules = (quantity?: number): Rule[] => {\n return genItems(buildRule, quantity);\n};\n\n/**\n * Generates a list of Messages objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Message[]} A list of {@link Message} objects\n */\nexport const genMessages = (quantity?: number): Message[] => {\n return genItems(buildMessage, quantity);\n};\n\n/**\n * Generates LivingPlace object with random data.\n *\n * @since 0.1.0\n * @param {Partial<LivingPlace>} overrides Properties to override\n * a {@link LivingPlace}\n * @returns {LivingPlace} A {@link LivingPlace} object\n */\nexport const buildLivingPlace = (\n overrides: Partial<LivingPlace> = {}\n): LivingPlace => {\n return {\n id: genId(),\n fields: genFields(2),\n name: genWord(),\n active: 1,\n countryId: \"1\",\n ...overrides\n };\n};\n\n/**\n * Generates a list of LivingPlaces objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {LivingPlace[]} A list of {@link LivingPlace} objects\n */\nexport const genLivingPlaces = (quantity?: number): LivingPlace[] => {\n return genItems(buildLivingPlace, quantity);\n};\n\n/**\n * Generates ShippingAddress object with random data.\n *\n * @template T Shipping address additional info\n * @since 0.1.0\n * @param {Partial<ShippingAddress>} overrides Properties to override\n * a {@link ShippingAddress}\n * @returns {ShippingAddress} A {@link ShippingAddress} object\n */\nexport const buildShippingAddress = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ShippingAddress<T>> = {}\n): ShippingAddress<T> => {\n return {\n id: genId(),\n default: getBoolean(),\n mainStreet: genStreetName(),\n number: genStreetNumber(),\n secondaryStreet: genStreetName(),\n reference: genAddress(),\n lat: +genLatitude(),\n lng: +genLongitude(),\n country: genCountry(),\n livingPlace: buildLivingPlace(),\n updatedAt: genBiasBoolean(0.4) ? genDate() : undefined,\n createdAt: genDate(),\n numberContactAddress: genNumber().toString(),\n nickname: genName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ShippingAddresses objects with random data.\n *\n * @template T Shipping addresses additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ShippingAddress[]} A list of {@link ShippingAddress} objects\n */\nexport const genShippingAddress = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): ShippingAddress<T>[] => {\n return genItems(buildShippingAddress, quantity);\n};\n","// Settings builder functions\n\nimport { Settings, UserSettings } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genId } from \"./common.builder\";\n\n/**\n * Generates Settings object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Settings>} overrides Properties to override\n * a {@link Settings}\n * @returns {Settings} A {@link Settings} object\n */\nexport const buildSettings = (overrides: Partial<Settings> = {}): Settings => {\n return {\n emailNotifications: genBiasBoolean(0.5),\n pushNotifications: genBiasBoolean(0.4),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Settings objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Settings[]} An array of Settings objects,\n * see {@link Settings}\n */\nexport const genSettings = (quantity?: number): Settings[] => {\n return genItems(buildSettings, quantity);\n};\n\n/**\n * Generates UserSettings object with random data.\n *\n * @since 0.5.15\n * @param {Partial<UserSettings>} overrides Properties to override\n * a {@link UserSettings}\n * @returns {UserSettings} A {@link UserSettings} object\n */\nexport const buildUserSettings = (\n overrides: Partial<UserSettings> = {}\n): UserSettings => {\n return {\n uid: genId(),\n settings: buildSettings(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of UserSettings objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {UserSettings[]} An array of UserSettings objects,\n * see {@link UserSettings}\n */\nexport const genUserSettings = (quantity?: number): UserSettings[] => {\n return genItems(buildUserSettings, quantity);\n};\n","// Order builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderBillTotal, OrderProductBillTotal } from \"@artisan-commerce/types\";\nimport { OrderBillProduct } from \"@artisan-commerce/types\";\nimport { OrderStoreDelivery } from \"@artisan-commerce/types\";\nimport { OrderProduct, OrderStore } from \"@artisan-commerce/types\";\nimport { PaymentMethodByOrder } from \"@artisan-commerce/types\";\nimport { OrderRetry, Suborder, ZipCodeField } from \"@artisan-commerce/types\";\nimport { OperatorInformation } from \"@artisan-commerce/types\";\nimport { OrderRetryPaymentMethod } from \"@artisan-commerce/types\";\nimport { MetadataShipping, OrderUser } from \"@artisan-commerce/types\";\nimport { InjectionDetail, IntegrationMessage } from \"@artisan-commerce/types\";\nimport { Allocation, BaseField, Status } from \"@artisan-commerce/types\";\nimport { BaseOrder, OrderDetails } from \"@artisan-commerce/types\";\nimport { OrderStep, OrderShoppingCart } from \"@artisan-commerce/types\";\nimport { OrderPaymentMethod, OrderStatus } from \"@artisan-commerce/types\";\nimport { PaymentStatus } from \"@artisan-commerce/types\";\nimport { OrderDetailShippingCost } from \"@artisan-commerce/types\";\nimport { OrderStepAdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderStepAdditionalInfoGroup } from \"@artisan-commerce/types\";\nimport { OrderProductAdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderProductAttributes } from \"@artisan-commerce/types\";\nimport { OrderBillProductAdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderProductPriceCategory } from \"@artisan-commerce/types\";\nimport { TaxCalculations, TaxCalculation } from \"@artisan-commerce/types\";\nimport { OrderProductImage } from \"@artisan-commerce/types\";\nimport { OrderStoreAdditionalInfo } from \"@artisan-commerce/types\";\n\nimport { buildUser } from \"./user.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { buildBillingData } from \"./billingData.builder\";\nimport { buildBillTotalNormalCategory } from \"./shoppingCart.builder\";\nimport { buildShoppingCart } from \"./shoppingCart.builder\";\nimport { stepCategory, stepCode } from \"./fulfillment.builder\";\nimport { buildShippingAddress } from \"./shippingAddress.builder\";\nimport { genIP } from \"./common.builder\";\nimport { genBiasBoolean, genMobilPhone, genSymbol } from \"./common.builder\";\nimport { chooseRandom, genWord, genWords, genURL } from \"./common.builder\";\nimport { genLatitude, genLongitude } from \"./shippingAddress.builder\";\nimport { genCompanyName, genDate, genId, genNumber } from \"./common.builder\";\nimport { genDocument, genEmail, genName, genNumericId } from \"./common.builder\";\nimport { genCartProductQuestions } from \"./product.builder\";\nimport { buildSettings } from \"./settings.builder\";\nimport { buildURLImage } from \"./image.builder\";\nimport { genSchedules } from \"./store.builder\";\n\n/**\n * All values of OrderStatus.\n *\n * @since 0.1.0\n */\nexport const orderStatusOptions: OrderStatus[] = [\n \"APPROVED\",\n \"PENDING\",\n \"REJECTED\"\n];\n\n/**\n * All values of PaymentStatus.\n *\n * @since 0.5.4\n */\nexport const paymentStatus: PaymentStatus[] = [\n \"CANCELED\",\n \"PAID\",\n \"PENDING\",\n \"REFUNDED\"\n];\n\n/**\n * All values of Allocation.\n *\n * @since 0.1.0\n */\nexport const allocationOptions: Allocation[] = [\n \"PICKUP_TO_GO\",\n \"PICKUP_IN_PLACE\",\n \"DELIVERY\"\n];\n\n/**\n * Generate a sequence identifier with random numbers.\n *\n * @since 0.1.0\n */\nexport const genSeqId = () => {\n const randomNumber = genNumber({\n min: 111111,\n max: 999999\n });\n\n return `0000${randomNumber}-${randomNumber}`;\n};\n\n/**\n * Generate a order reference with random data.\n *\n * @since 0.1.0\n */\nexport const genReference = () => {\n return `${genSeqId()}.00${genNumber(10)}`;\n};\n\n/**\n * Generates BaseOrder object with random data.\n *\n * @template T Order additional info\n * @template U Shopping cart additional info\n * @template V User additional info\n * @since 0.1.0\n * @param {Partial<BaseOrder>} overrides Properties to override\n * a {@link BaseOrder}\n * @returns {BaseOrder} A {@link BaseOrder} object\n */\nexport const buildBaseOrder = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<BaseOrder<T, U, V>> = {}\n): BaseOrder<T, U, V> => {\n const allocation = chooseRandom(allocationOptions);\n const date = allocation !== \"DELIVERY\" ? genDate() : null;\n const category = chooseRandom(stepCategory);\n const code = chooseRandom(stepCode);\n const id = genId();\n const name = genWord();\n\n return {\n additionalMessage: genWords(3),\n allocation,\n channelId: genId(),\n id: genId(),\n orderDate: genDate(),\n orderTime: genDate(),\n pickupDate: date,\n pickupTime: date,\n seq_id: genSeqId(),\n shoppingCart: buildOrderShoppingCart(),\n step: buildOrderStep({ category, code, id, name }),\n stepCategory: category,\n stepCode: code,\n stepId: id,\n stepName: name,\n transactionId: genId(),\n vendorId: genId(),\n accountId: genId(),\n uid: genId(),\n hash: genId(),\n pickupCooktime: null,\n channelName: genCompanyName(),\n issueId: genId(),\n billingDataByUserId: genId(),\n comment: genWords(5),\n shippingAddressByUserId: genId(),\n user: buildOrderUser(),\n createdByOperator: buildOperatorInformation(),\n vendorName: genCompanyName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BaseOrder objects with random data.\n *\n * @template T Orders additional info\n * @template U Shopping carts additional info\n * @template V Users additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BaseOrder[]} An array of BaseOrder objects,\n * see {@link BaseOrder}\n */\nexport const genBaseOrders = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): BaseOrder<T, U, V>[] => {\n return genItems(buildBaseOrder, quantity);\n};\n\n/**\n * Generates OrderDetails object with random data.\n *\n * @template T Order additional info\n * @template U Shopping cart additional info\n * @template V User additional info\n * @since 0.1.0\n * @param {Partial<OrderDetails>} overrides Properties to override\n * a {@link OrderDetails}\n * @returns {OrderDetails} A {@link OrderDetails} object\n */\nexport const buildOrderDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<OrderDetails<T, U, V>> = {}\n): OrderDetails<T, U, V> => {\n return {\n ...buildBaseOrder(),\n billingData: buildBillingData(),\n shippingAddress: buildShippingAddress(),\n shippingCost: buildOrderDetailShippingCost(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderDetails objects with random data.\n *\n * @template T Orders additional info\n * @template U Shopping carts additional info\n * @template V Users additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderDetails[]} An array of OrderDetails objects,\n * see {@link OrderDetails}\n */\nexport const genOrderDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): OrderDetails<T, U, V>[] => {\n return genItems(buildOrderDetails, quantity);\n};\n\n/**\n * Generates OrderStep object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStep>} overrides Properties to override\n * a {@link OrderStep}\n * @returns {OrderStep} A {@link OrderStep} object\n */\nexport const buildOrderStep = (\n overrides: Partial<OrderStep> = {}\n): OrderStep => {\n return {\n description_frontend: genWords(6),\n subtitle_frontend: genWords(5),\n category: genWord(),\n code: genWord(),\n color: chooseRandom([\"#FFFFFF\", \"#000000\"]),\n description: genWords(6),\n id: genId(),\n name: genWord(),\n additional_info: buildOrderStepAdditionalInfo(),\n title_frontend: genWords(3),\n ...overrides\n };\n};\n\n/**\n * Generates OrderStepAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStepAdditionalInfo>} overrides Properties to override\n * a {@link OrderStepAdditionalInfo}\n * @returns {OrderStepAdditionalInfo} A\n * {@link OrderStepAdditionalInfo} object\n */\nexport const buildOrderStepAdditionalInfo = (\n overrides: Partial<OrderStepAdditionalInfo> = {}\n): OrderStepAdditionalInfo => {\n return {\n client_frontend: genBiasBoolean(0.5),\n client_frontend_error: genBiasBoolean(0.7),\n group: buildOrderStepAdditionalInfoGroup(),\n operators_frontend: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStepAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStepAdditionalInfo[]} An array of\n * OrderStepAdditionalInfo objects,\n * see {@link OrderStepAdditionalInfo}\n */\nexport const genOrderStepAdditionalInfos = (\n quantity?: number\n): OrderStepAdditionalInfo[] => {\n return genItems(buildOrderStepAdditionalInfo, quantity);\n};\n\n/**\n * Generates OrderStepAdditionalInfoGroup object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStepAdditionalInfoGroup>} overrides Properties\n * to override a {@link OrderStepAdditionalInfoGroup}\n * @returns {OrderStepAdditionalInfoGroup} A\n * {@link OrderStepAdditionalInfoGroup} object\n */\nexport const buildOrderStepAdditionalInfoGroup = (\n overrides: Partial<OrderStepAdditionalInfoGroup> = {}\n): OrderStepAdditionalInfoGroup => {\n return {\n code: genWord(),\n description: genWords(5),\n type: genWord(),\n weight: genNumber(10).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStep objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStep[]} An array of OrderStep objects,\n * see {@link OrderStep}\n */\nexport const genOrderSteps = (quantity?: number): OrderStep[] => {\n return genItems(buildOrderStep, quantity);\n};\n\n/**\n * Generates OrderDetailShippingCost object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderDetailShippingCost>} overrides Properties to override\n * a {@link OrderDetailShippingCost}\n * @returns {OrderDetailShippingCost} A {@link OrderDetailShippingCost} object\n */\nexport const buildOrderDetailShippingCost = (\n overrides: Partial<OrderDetailShippingCost> = {}\n): OrderDetailShippingCost => {\n return {\n net_price: genNumber(200),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderDetailShippingCost objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderDetailShippingCost[]} An array of OrderDetailShippingCost\n * objects, see {@link OrderDetailShippingCost}\n */\nexport const genOrderDetailShippingCosts = (\n quantity?: number\n): OrderDetailShippingCost[] => {\n return genItems(buildOrderDetailShippingCost, quantity);\n};\n\n/**\n * Generates OrderRetry object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderRetry>} overrides Properties to override\n * a {@link OrderRetry}\n * @returns {OrderRetry} A {@link OrderRetry} object\n */\nexport const buildOrderRetry = (\n overrides: Partial<OrderRetry> = {}\n): OrderRetry => {\n return {\n id: genId(),\n amount: genNumber(100).toString(),\n created_at: genDate(),\n updated_at: genDate(),\n ip_address: genIP(),\n platform: genWord(),\n process_url: genURL(),\n request_id: genId(),\n reference: genReference(),\n payment_method_by_order: buildPaymentMethodByOrder(),\n step: buildOrderStep(),\n ...buildStatus(),\n status: genWord(),\n payment_method_by_order_id: genId(),\n user_agent: genWord(),\n payment_method: null,\n ...overrides\n };\n};\n\n/**\n * Generates Status object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Status>} overrides Properties to override\n * a {@link Status}\n * @returns {Status} A {@link Status} object\n */\nexport const buildStatus = (overrides: Partial<Status> = {}): Status => {\n return {\n status_category: genWord(),\n status_code: genWord(),\n status_id: genId(),\n status_name: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Status objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Status[]} An array of Status objects,\n * see {@link Status}\n */\nexport const genStatus = (quantity?: number): Status[] => {\n return genItems(buildStatus, quantity);\n};\n\n/**\n * Generates a list of OrderRetry objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderRetry[]} An array of OrderRetry objects,\n * see {@link OrderRetry}\n */\nexport const genOrderRetries = (quantity?: number): OrderRetry[] => {\n return genItems(buildOrderRetry, quantity);\n};\n\n/**\n * Generates OrderPaymentMethod object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderPaymentMethod>} overrides Properties to override\n * a {@link OrderPaymentMethod}\n * @returns {OrderPaymentMethod} A {@link OrderPaymentMethod} object\n */\nexport const buildOrderPaymentMethod = (\n overrides: Partial<OrderPaymentMethod> = {}\n): OrderPaymentMethod => {\n return {\n id: genId(),\n lastRetry: buildOrderRetry(),\n payment_method_id: genId(),\n status: chooseRandom(orderStatusOptions),\n step: buildOrderStep(),\n total: genNumber(200).toString(),\n payment_method_name: chooseRandom([\"CC\", \"CASH\", \"DATAPHONE\"]),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderPaymentMethod objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderPaymentMethod[]} An array of OrderPaymentMethod\n * objects, see {@link OrderPaymentMethod}\n */\nexport const genOrderPaymentMethods = (\n quantity?: number\n): OrderPaymentMethod[] => {\n return genItems(buildOrderPaymentMethod, quantity);\n};\n\n/**\n * Generates OrderShoppingCart object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderShoppingCart>} overrides Properties to override\n * a {@link OrderShoppingCart}\n * @returns {OrderShoppingCart} A {@link OrderShoppingCart} object\n */\nexport const buildOrderShoppingCart = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<OrderShoppingCart<T>> = {}\n): OrderShoppingCart<T> => {\n return {\n ...buildShoppingCart(),\n stores: genOrderStores(),\n paidPaymentMethods: genOrderPaymentMethods(),\n allRetries: genOrderRetries(),\n rejectedPaymentMethods: genOrderPaymentMethods(),\n comment: genWords(6),\n instructions: genWords(6),\n statusName: genWord(),\n paymentStatus: chooseRandom(paymentStatus),\n statusId: genId(),\n statusCode: chooseRandom(stepCode),\n issueId: genId(),\n invoiceNumber: genId(),\n billTotal: buildOrderBillTotal(),\n additional_info: undefined,\n ...overrides\n };\n};\n\n/**\n * Generates OrderStoreAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStoreAdditionalInfo>} overrides Properties to override\n * a {@link OrderStoreAdditionalInfo}\n * @returns {OrderStoreAdditionalInfo} A {@link OrderStoreAdditionalInfo} object\n */\nexport const buildOrderStoreAdditionalInfo = (\n overrides: Partial<OrderStoreAdditionalInfo> = {}\n): OrderStoreAdditionalInfo => {\n return {\n address: faker.address.street(),\n coverage: genBiasBoolean(0.99),\n latitude: genNumber({ min: 0, max: 80, precision: 6 }),\n longitude: genNumber({ min: 0, max: 80, precision: 6 }),\n schedules: genSchedules(8),\n phone: genMobilPhone(\"593\"),\n sponsored: genBiasBoolean(0.1),\n timezone: \"\",\n channel_name: faker.name.jobTitle(),\n order_symbol: genSymbol(),\n external_id: genId(),\n is_drinks_store: genBiasBoolean(0.3),\n max_order_amount: genNumber(100),\n min_order_amount: genNumber(5),\n show_drinks_store: genBiasBoolean(0.4),\n store_external_code: genId(),\n delivery: buildOrderStoreDelivery(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStoreAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStoreAdditionalInfo[]} An array of OrderStoreAdditionalInfo objects,\n * see {@link OrderStoreAdditionalInfo}\n */\nexport const genOrderStoreAdditionalInfos = (\n quantity?: number\n): OrderStoreAdditionalInfo[] => {\n return genItems(buildOrderStoreAdditionalInfo, quantity);\n};\n\n/**\n * Generates OrderStoreDelivery object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStoreDelivery>} overrides Properties to override\n * a {@link OrderStoreDelivery}\n * @returns {OrderStoreDelivery} A {@link OrderStoreDelivery} object\n */\nexport const buildOrderStoreDelivery = (\n overrides: Partial<OrderStoreDelivery> = {}\n): OrderStoreDelivery => {\n return {\n delivery_time_unit: chooseRandom([\"min\"]),\n delivery_time_value: genNumber(60).toString(),\n express: genBiasBoolean(0.1),\n free_delivery: genBiasBoolean(0.1),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStoreDelivery objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStoreDelivery[]} An array of OrderStoreDelivery objects,\n * see {@link OrderStoreDelivery}\n */\nexport const genOrderStoreDeliveries = (\n quantity?: number\n): OrderStoreDelivery[] => {\n return genItems(buildOrderStoreDelivery, quantity);\n};\n\n/**\n * Generates OrderStore object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStore>} overrides Properties to override\n * a {@link OrderStore}\n * @returns {OrderStore} A {@link OrderStore} object\n */\nexport const buildOrderStore = (\n overrides: Partial<OrderStore> = {}\n): OrderStore => {\n return {\n id: genId(),\n orderId: genId(),\n digitalCommandSent: genWord(),\n statusId: genId(),\n statusName: genWord(),\n statusCode: chooseRandom(stepCode),\n billStoreTotal: buildOrderProductBillTotal(),\n products: genOrderProducts(),\n storeId: genId(),\n storeName: faker.name.jobTitle(),\n additionalInfo: buildOrderStoreAdditionalInfo(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStore objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStore[]} An array of OrderStore objects,\n * see {@link OrderStore}\n */\nexport const genOrderStores = (quantity?: number): OrderStore[] => {\n return genItems(buildOrderStore, quantity);\n};\n\n/**\n * Generates OrderProductAttributes object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductAttributes>} overrides Properties to override\n * a {@link OrderProductAttributes}\n * @returns {OrderProductAttributes} A {@link OrderProductAttributes} object\n */\nexport const buildOrderProductAttributes = (\n overrides: Partial<OrderProductAttributes> = {}\n): OrderProductAttributes => {\n return {\n cantidad: \"1\",\n external_id: \"001\",\n show_in_menu: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductAttributes objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductAttributes[]} An array of OrderProductAttributes\n * objects, see {@link OrderProductAttributes}\n */\nexport const genOrderProductAttributes = (\n quantity?: number\n): OrderProductAttributes[] => {\n return genItems(buildOrderProductAttributes, quantity);\n};\n\n/**\n * Generates OrderProductAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductAdditionalInfo>} overrides Properties to override\n * a {@link OrderProductAdditionalInfo}\n * @returns {OrderProductAdditionalInfo} A {@link OrderProductAdditionalInfo}\n * object\n */\nexport const buildOrderProductAdditionalInfo = (\n overrides: Partial<OrderProductAdditionalInfo> = {}\n): OrderProductAdditionalInfo => {\n return {\n attributes: buildOrderProductAttributes(),\n available: genBiasBoolean(0.5),\n description: faker.lorem.lines(2),\n is_price_vip: genBiasBoolean(0.5),\n max_amount_for_sale: genNumber(100),\n new_store: genId(),\n out_of_service: genBiasBoolean(0.5),\n out_of_stock: genBiasBoolean(0.5),\n sponsored: genBiasBoolean(0.1),\n status: \"ACTIVE\",\n stock: 1000,\n suggested_price: genNumber(100).toString(),\n type: \"PRODUCT\",\n measure: \"unit\",\n bill_product: buildOrderBillProductAdditionalInfo(),\n bill_product_and_answers: buildOrderBillProductAdditionalInfo(),\n images: genOrderProductImages(),\n price_category: \"NORMAL\",\n prices: buildOrderBillProductAdditionalInfo(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductAdditionalInfo[]} An array of\n * OrderProductAdditionalInfo objects, see {@link OrderProductAdditionalInfo}\n */\nexport const genOrderProductAdditionalInfos = (\n quantity?: number\n): OrderProductAdditionalInfo[] => {\n return genItems(buildOrderProductAdditionalInfo, quantity);\n};\n\n/**\n * Generates OrderProductImage object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductImage>} overrides Properties to override\n * a {@link OrderProductImage}\n * @returns {OrderProductImage} A {@link OrderProductImage} object\n */\nexport const buildOrderProductImage = (\n overrides: Partial<OrderProductImage> = {}\n): OrderProductImage => {\n const imageName = genWord();\n return {\n bucket: genWord(),\n cloud_front_url: genURL(),\n key: `images/${imageName}.jpg`,\n name: `${imageName}.jpg`,\n url: buildURLImage(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductImage objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductImage[]} An array of OrderProductImage objects,\n * see {@link OrderProductImage}\n */\nexport const genOrderProductImages = (\n quantity?: number\n): OrderProductImage[] => {\n return genItems(buildOrderProductImage, quantity);\n};\n\n/**\n * Generates OrderBillProductAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderBillProductAdditionalInfo>} overrides Properties to\n * override a {@link OrderBillProductAdditionalInfo}\n * @returns {OrderBillProductAdditionalInfo} A\n * {@link OrderBillProductAdditionalInfo} object\n */\nexport const buildOrderBillProductAdditionalInfo = (\n overrides: Partial<OrderBillProductAdditionalInfo> = {}\n): OrderBillProductAdditionalInfo => {\n return {\n normal: buildOrderProductPriceCategory(),\n points: buildOrderProductPriceCategory(),\n ...overrides\n };\n};\n\n/**\n * Generates TaxCalculation object with random data.\n *\n * @since 0.1.0\n * @param {Partial<TaxCalculation>} overrides Properties to override\n * a {@link TaxCalculation}\n * @returns {TaxCalculation} A {@link TaxCalculation} object\n */\nexport const buildTaxCalculation = (\n overrides: Partial<TaxCalculation> = {}\n): TaxCalculation => {\n return {\n code: genNumber(10),\n name: chooseRandom([\"IVA\"]),\n percentage: genNumber(10),\n vat_rate: genNumber(10).toString(),\n tax_base: genNumber(10),\n value: genNumber(10),\n vat_rate_code: genNumber(10),\n ...overrides\n };\n};\n\n/**\n * Generates a list of TaxCalculation objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {TaxCalculation[]} An array of TaxCalculation objects,\n * see {@link TaxCalculation}\n */\nexport const genTaxCalculations = (quantity?: number): TaxCalculation[] => {\n return genItems(buildTaxCalculation, quantity);\n};\n\n/**\n * Generates TaxCalculations object with random data.\n *\n * @since 0.1.0\n * @param {Partial<TaxCalculations>} overrides Properties to override\n * a {@link TaxCalculations}\n * @returns {TaxCalculations} A {@link TaxCalculations} object\n */\nexport const buildTaxCalculations = (\n overrides: Partial<TaxCalculations> = {}\n): TaxCalculations => {\n const key = `${genNumber(10)}_${genNumber(10)}`;\n // @ts-ignore since it cannot deduce if the key is string or undefined\n return {\n [key]: buildTaxCalculation(),\n ...overrides\n };\n};\n\n/**\n * Generates OrderProductPriceCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductPriceCategory>} overrides Properties to override\n * a {@link OrderProductPriceCategory}\n * @returns {OrderProductPriceCategory} A {@link OrderProductPriceCategory}\n * object\n */\nexport const buildOrderProductPriceCategory = (\n overrides: Partial<OrderProductPriceCategory> = {}\n): OrderProductPriceCategory => {\n return {\n amount: genNumber(50),\n taxes: genTaxCalculations(),\n category: \"NORMAL\",\n discount: genNumber(12),\n discount_gross_price: genNumber(50),\n discount_net_price: genNumber(50),\n discount_total: genNumber(40),\n discounts: [],\n gross_price: genNumber(50),\n net_price: genNumber(50),\n name: faker.commerce.productName(),\n subtotal_before_taxes: genNumber(30),\n subtotal_before_taxes_before_discounts: genNumber(30),\n subtotal_without_taxes: genNumber(30),\n subtotal_zero: 0,\n product_id: genId(),\n symbol: genSymbol(),\n tax_calcs: buildTaxCalculations(),\n tax_total: genNumber(12),\n total: genNumber(50),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductPriceCategory objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductPriceCategory[]} An array of OrderProductPriceCategory\n * objects, see {@link OrderProductPriceCategory}\n */\nexport const genOrderProductPriceCategories = (\n quantity?: number\n): OrderProductPriceCategory[] => {\n return genItems(buildOrderProductPriceCategory, quantity);\n};\n\n/**\n * Generates OrderProduct object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProduct>} overrides Properties to override\n * a {@link OrderProduct}\n * @returns {OrderProduct} A {@link OrderProduct} object\n */\nexport const buildOrderProduct = (\n overrides: Partial<OrderProduct> = {}\n): OrderProduct => {\n return {\n id: genId(),\n additionalInfo: buildOrderProductAdditionalInfo(),\n productId: genId(),\n productName: genWords(5),\n comment: genWords(5),\n billProduct: buildOrderBillProduct(),\n billProductAndAnswers: buildOrderProductBillTotal(),\n questionsAndAnswers: genCartProductQuestions(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProduct objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProduct[]} An array of OrderProduct objects,\n * see {@link OrderProduct}\n */\nexport const genOrderProducts = (quantity?: number): OrderProduct[] => {\n return genItems(buildOrderProduct, quantity);\n};\n\n/**\n * Generates OrderBillProduct object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderBillProduct>} overrides Properties to override\n * a {@link OrderBillProduct}\n * @returns {OrderBillProduct} A {@link OrderBillProduct} object\n */\nexport const buildOrderBillProduct = (\n overrides: Partial<OrderBillProduct> = {}\n): OrderBillProduct => {\n return {\n ...buildOrderProductBillTotal(),\n amount: genNumber(50),\n ...overrides\n };\n};\n\n/**\n * Generates OrderProductBillTotal object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductBillTotal>} overrides Properties to override\n * a {@link OrderProductBillTotal}\n * @returns {OrderProductBillTotal} A {@link OrderProductBillTotal} object\n */\nexport const buildOrderProductBillTotal = (\n overrides: Partial<OrderProductBillTotal> = {}\n): OrderProductBillTotal => {\n return {\n ...buildBillTotalNormalCategory(),\n discountTotal: genNumber(10),\n ...overrides\n };\n};\n\n/**\n * Generates OrderBillTotal object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderBillTotal>} overrides Properties to override\n * a {@link OrderBillTotal}\n * @returns {OrderBillTotal} A {@link OrderBillTotal} object\n */\nexport const buildOrderBillTotal = (\n overrides: Partial<OrderBillTotal> = {}\n): OrderBillTotal => {\n return {\n ...buildBillTotalNormalCategory(),\n discountTotal: genNumber(10),\n subtotalTaxedWithoutTaxes: genNumber(10),\n subtotalZero: genNumber(10),\n tip: genNumber(10),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderShoppingCart objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderShoppingCart[]} An array of OrderShoppingCart objects,\n * see {@link OrderShoppingCart}\n */\nexport const genOrderShoppingCarts = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): OrderShoppingCart<T>[] => {\n return genItems(buildOrderShoppingCart, quantity);\n};\n\n/**\n * Generates MetadataShipping object with random data.\n *\n * @since 0.1.0\n * @param {Partial<MetadataShipping>} overrides Properties to override\n * a {@link MetadataShipping}\n * @returns {MetadataShipping} A {@link MetadataShipping} object\n */\nexport const buildMetadataShipping = (\n overrides: Partial<MetadataShipping> = {}\n): MetadataShipping => {\n return {\n area: buildBaseField(),\n city: buildBaseField(),\n zone: buildZipCodeField(),\n store: buildBaseField(),\n country: buildBaseField(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of MetadataShipping objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {MetadataShipping[]} An array of MetadataShipping objects,\n * see {@link MetadataShipping}\n */\nexport const genMetadataShippings = (quantity?: number): MetadataShipping[] => {\n return genItems(buildMetadataShipping, quantity);\n};\n\n/**\n * Generates BaseField object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BaseField>} overrides Properties to override\n * a {@link BaseField}\n * @returns {BaseField} A {@link BaseField} object\n */\nexport const buildBaseField = (\n overrides: Partial<BaseField> = {}\n): BaseField => {\n return {\n id: genId(),\n name: genName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BaseField objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BaseField[]} An array of BaseField objects,\n * see {@link BaseField}\n */\nexport const genBaseFields = (quantity?: number): BaseField[] => {\n return genItems(buildBaseField, quantity);\n};\n\n/**\n * Generates ZipCodeField object with random data.\n *\n * @since 0.1.0\n * @param {Partial<ZipCodeField>} overrides Properties to override\n * a {@link ZipCodeField}\n * @returns {ZipCodeField} A {@link ZipCodeField} object\n */\nexport const buildZipCodeField = (\n overrides: Partial<ZipCodeField> = {}\n): ZipCodeField => {\n return {\n ...buildBaseField(),\n zipCode: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ZipCodeField objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ZipCodeField[]} An array of ZipCodeField objects,\n * see {@link ZipCodeField}\n */\nexport const genZipCodeFields = (quantity?: number): ZipCodeField[] => {\n return genItems(buildZipCodeField, quantity);\n};\n\n/**\n * Generates IntegrationMessage object with random data.\n *\n * @since 0.1.0\n * @param {Partial<IntegrationMessage>} overrides Properties to override\n * a {@link IntegrationMessage}\n * @returns {IntegrationMessage} A {@link IntegrationMessage} object\n */\nexport const buildIntegrationMessage = (\n overrides: Partial<IntegrationMessage> = {}\n): IntegrationMessage => {\n return {\n kfcInjection: {\n [genNumber(999999).toString()]: buildInjectionDetail()\n },\n ...overrides\n };\n};\n\n/**\n * Generates a list of IntegrationMessage objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {IntegrationMessage[]} An array of IntegrationMessage objects,\n * see {@link IntegrationMessage}\n */\nexport const genIntegrationMessages = (\n quantity?: number\n): IntegrationMessage[] => {\n return genItems(buildIntegrationMessage, quantity);\n};\n\n/**\n * Generates InjectionDetail object with random data.\n *\n * @since 0.1.0\n * @param {Partial<InjectionDetail>} overrides Properties to override\n * a {@link InjectionDetail}\n * @returns {InjectionDetail} A {@link InjectionDetail} object\n */\nexport const buildInjectionDetail = (\n overrides: Partial<InjectionDetail> = {}\n): InjectionDetail => {\n return {\n causa: genWord(),\n codigo: genNumericId(),\n mensaje: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of InjectionDetail objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {InjectionDetail[]} An array of InjectionDetail objects,\n * see {@link InjectionDetail}\n */\nexport const genInjectionDetails = (quantity?: number): InjectionDetail[] => {\n return genItems(buildInjectionDetail, quantity);\n};\n\n/**\n * Generates OrderUser object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderUser>} overrides Properties to override\n * a {@link OrderUser}\n * @returns {OrderUser} A {@link OrderUser} object\n */\nexport const buildOrderUser = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<OrderUser<T>> = {}\n): OrderUser<T> => {\n return {\n ...buildUser<T>(),\n settings: buildSettings(),\n additionalInfo: undefined,\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderUser objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderUser[]} An array of OrderUser objects,\n * see {@link OrderUser}\n */\nexport const genOrderUsers = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): OrderUser<T>[] => {\n return genItems(buildOrderUser, quantity);\n};\n\n/**\n * Generates OperatorInformation object with random data.\n *\n * @param {Partial<OperatorInformation>} overrides Properties to override\n * a {@link OperatorInformation}\n * @returns {OperatorInformation} A {@link OperatorInformation} object\n */\nexport const buildOperatorInformation = (\n overrides: Partial<OperatorInformation> = {}\n): OperatorInformation => {\n return {\n id: genId(),\n name: genName(),\n email: genEmail(),\n skill: genWords(4),\n document: genDocument(10),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OperatorInformation objects with random data.\n *\n * @param {number} quantity The number of objects to be generated\n * @returns {OperatorInformation[]} An array of OperatorInformation objects,\n * see {@link OperatorInformation}\n */\nexport const genOperatorInformation = (\n quantity?: number\n): OperatorInformation[] => {\n return genItems(buildOperatorInformation, quantity);\n};\n\n/**\n * Generates Suborder object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Suborder>} overrides Properties to override\n * a {@link Suborder}\n * @returns {Suborder} A {@link Suborder} object\n */\nexport const buildSuborder = (overrides: Partial<Suborder> = {}): Suborder => {\n return {\n ...buildStatus(),\n additional_info: genWord(),\n created_at: genDate(),\n updated_at: genDate(),\n order_id: genId(),\n id: genId(),\n store_id: genId(),\n store_name: genCompanyName(),\n vendor: genCompanyName(),\n digital_command_sent: genBiasBoolean(0.5).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Suborder objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Suborder[]} An array of Suborder objects,\n * see {@link Suborder}\n */\nexport const genSuborders = (quantity?: number): Suborder[] => {\n return genItems(buildSuborder, quantity);\n};\n\n/**\n * Generates PaymentMethodByOrder object with random data.\n *\n * @since 0.1.0\n * @param {Partial<PaymentMethodByOrder>} overrides Properties to override\n * a {@link PaymentMethodByOrder}\n * @returns {PaymentMethodByOrder} A {@link PaymentMethodByOrder} object\n */\nexport const buildPaymentMethodByOrder = (\n overrides: Partial<PaymentMethodByOrder> = {}\n): PaymentMethodByOrder => {\n return {\n ...buildStatus(),\n amount: genNumber(200).toString(),\n created_at: genDate(),\n updated_at: genDate(),\n id: genId(),\n payment_method_id: genId(),\n status: genWord(),\n sri_payment_method_id: genId(),\n order: buildOrderRetryPaymentMethod(),\n order_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of PaymentMethodByOrder objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {PaymentMethodByOrder[]} An array of PaymentMethodByOrder objects,\n * see {@link PaymentMethodByOrder}\n */\nexport const genPaymentMethodByOrders = (\n quantity?: number\n): PaymentMethodByOrder[] => {\n return genItems(buildPaymentMethodByOrder, quantity);\n};\n\n/**\n * Generates OrderRetryPaymentMethod object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderRetryPaymentMethod>} overrides Properties to override\n * a {@link OrderRetryPaymentMethod}\n * @returns {OrderRetryPaymentMethod} A {@link OrderRetryPaymentMethod} object\n */\nexport const buildOrderRetryPaymentMethod = (\n overrides: Partial<OrderRetryPaymentMethod> = {}\n): OrderRetryPaymentMethod => {\n return {\n account_id: genId(),\n vendor_id: genId(),\n allocation: chooseRandom(allocationOptions),\n billing_data_by_user_id: genId(),\n channel_id: genId(),\n created_at: genDate(),\n latitude: genLatitude(),\n longitude: genLongitude(),\n uid: genId(),\n insoft_order_process: genWord(),\n id: genId(),\n sent_fulfillment: genWord(),\n shopping_cart_id: genId(),\n ...buildStatus(),\n step: genNumber(10),\n suborders: genSuborders(),\n updated_at: genDate(),\n payment_status: chooseRandom(orderStatusOptions),\n seq_val: genReference(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderRetryPaymentMethod objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderRetryPaymentMethod[]} An array of\n * OrderRetryPaymentMethod objects, see {@link OrderRetryPaymentMethod}\n */\nexport const genOrderRetryPaymentMethods = (\n quantity?: number\n): OrderRetryPaymentMethod[] => {\n return genItems(buildOrderRetryPaymentMethod, quantity);\n};\n","// Notification builder functions\n\nimport { Notification, NotificationUser } from \"@artisan-commerce/types\";\nimport { NotificationAdditionalInfo } from \"@artisan-commerce/types\";\nimport { NotificationExtraData } from \"@artisan-commerce/types\";\nimport { NotificationStep, NotificationStore } from \"@artisan-commerce/types\";\nimport { NotificationListItem } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genAddress, genCompanyName } from \"./common.builder\";\nimport { genDate, genEmail, genId, genWord } from \"./common.builder\";\nimport { getBoolean, genName, genNumber, genWords } from \"./common.builder\";\nimport { stepCategory, stepCode } from \"./fulfillment.builder\";\nimport { allocationOptions, buildBaseField } from \"./order.builder\";\nimport { genReference, buildMetadataShipping } from \"./order.builder\";\n\n/**\n * Generates Notification object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Notification>} overrides Properties to override\n * a {@link Notification}\n * @returns {Notification} A {@link Notification} object\n */\nexport const buildNotification = (\n overrides: Partial<Notification> = {}\n): Notification => {\n return {\n id: genId(),\n title: genWords(2),\n description: genWords(6),\n listTitle: genWords(2),\n listItems: genNotificationListItems(),\n creationDate: genDate(),\n priority: chooseRandom([\"HIGH\", \"LOW\"]),\n read: chooseRandom([\"YES\", \"NO\"]),\n extra_data: buildNotificationExtraData(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Notification objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Notification[]} An array of Notification objects,\n * see {@link Notification}\n */\nexport const genNotifications = (quantity?: number): Notification[] => {\n return genItems(buildNotification, quantity);\n};\n\n/**\n * Generates NotificationUser object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationUser>} overrides Properties to override\n * a {@link NotificationUser}\n * @returns {NotificationUser} A {@link NotificationUser} object\n */\nexport const buildNotificationUser = (\n overrides: Partial<NotificationUser> = {}\n): NotificationUser => {\n return {\n name: genName(),\n address: genAddress(),\n email: genEmail(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationUser objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationUser[]} An array of NotificationUser objects,\n * see {@link NotificationUser}\n */\nexport const genNotificationUsers = (quantity?: number): NotificationUser[] => {\n return genItems(buildNotificationUser, quantity);\n};\n\n/**\n * Generates NotificationStore object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationStore>} overrides Properties to override\n * a {@link NotificationStore}\n * @returns {NotificationStore} A {@link NotificationStore} object\n */\nexport const buildNotificationStore = (\n overrides: Partial<NotificationStore> = {}\n): NotificationStore => {\n return {\n ...buildBaseField(),\n address: genAddress(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationStore objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationStore[]} An array of NotificationStore objects,\n * see {@link NotificationStore}\n */\nexport const genNotificationStores = (\n quantity?: number\n): NotificationStore[] => {\n return genItems(buildNotificationStore, quantity);\n};\n\n/**\n * Generates NotificationStep object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationStep>} overrides Properties to override\n * a {@link NotificationStep}\n * @returns {NotificationStep} A {@link NotificationStep} object\n */\nexport const buildNotificationStep = (\n overrides: Partial<NotificationStep> = {}\n): NotificationStep => {\n return {\n id: genId(),\n name: genWord(),\n code: chooseRandom(stepCode),\n category: chooseRandom(stepCategory),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationStep objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationStep[]} An array of NotificationStep objects,\n * see {@link NotificationStep}\n */\nexport const genNotificationSteps = (quantity?: number): NotificationStep[] => {\n return genItems(buildNotificationStep, quantity);\n};\n\n/**\n * Generates NotificationAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationAdditionalInfo>} overrides Properties to override\n * a {@link NotificationAdditionalInfo}\n * @returns {NotificationAdditionalInfo} A {@link NotificationAdditionalInfo} object\n */\nexport const buildNotificationAdditionalInfo = (\n overrides: Partial<NotificationAdditionalInfo> = {}\n): NotificationAdditionalInfo => {\n return {\n parent_shopping_cart: getBoolean(),\n metadata_shipping: buildMetadataShipping(),\n aud: genCompanyName(),\n workflowId: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationAdditionalInfo[]} An array of NotificationAdditionalInfo objects,\n * see {@link NotificationAdditionalInfo}\n */\nexport const genNotificationAdditionalInfos = (\n quantity?: number\n): NotificationAdditionalInfo[] => {\n return genItems(buildNotificationAdditionalInfo, quantity);\n};\n\n/**\n * Generates NotificationExtraData object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationExtraData>} overrides Properties to override\n * a {@link NotificationExtraData}\n * @returns {NotificationExtraData} A {@link NotificationExtraData} object\n */\nexport const buildNotificationExtraData = (\n overrides: Partial<NotificationExtraData> = {}\n): NotificationExtraData => {\n const vendorIncompat = buildBaseField();\n\n return {\n id: genId(),\n seqVal: genReference(),\n uid: genId(),\n user: buildNotificationUser(),\n accountId: genId(),\n vendor: { ...vendorIncompat, id: vendorIncompat.id.toString() },\n city: buildBaseField(),\n store: buildNotificationStore(),\n channel_id: genId(),\n countryId: genId(),\n step: buildNotificationStep(),\n allocation: chooseRandom(allocationOptions),\n paymentMethod: \"Points\",\n total: genNumber(9999).toString(),\n additionalInfo: buildNotificationAdditionalInfo(),\n created_at: genDate(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationExtraData objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationExtraData[]} An array of NotificationExtraData objects,\n * see {@link NotificationExtraData}\n */\nexport const genNotificationExtraDatas = (\n quantity?: number\n): NotificationExtraData[] => {\n return genItems(buildNotificationExtraData, quantity);\n};\n\n/**\n * Generates NotificationListItem object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationListItem>} overrides Properties to override\n * a {@link NotificationListItem}\n * @returns {NotificationListItem} A {@link NotificationListItem} object\n */\nexport const buildNotificationListItem = (\n overrides: Partial<NotificationListItem> = {}\n): NotificationListItem => {\n return {\n title: genWords(2),\n description: genWords(6),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationListItem objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationListItem[]} An array of NotificationListItem objects,\n * see {@link NotificationListItem}\n */\nexport const genNotificationListItems = (\n quantity?: number\n): NotificationListItem[] => {\n return genItems(buildNotificationListItem, quantity);\n};\n","// Payment builder functions\n\nimport { BasePaymentMethod, PaymentMethod } from \"@artisan-commerce/types\";\nimport { PaymentProvider, CreditCardMapping } from \"@artisan-commerce/types\";\nimport { CardName, PaymentMethodName } from \"@artisan-commerce/types\";\nimport { CardInscription } from \"@artisan-commerce/types\";\n\nimport { buildURLImage } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genId, genNumericId, genWord } from \"./common.builder\";\nimport { chooseRandom, genDate, genNumber, genURL } from \"./common.builder\";\n\n/**\n * Generates BasePaymentMethod object with random data.\n *\n * @since 0.5.15\n * @param {Partial<BasePaymentMethod>} overrides Properties to override\n * a {@link BasePaymentMethod}\n * @returns {BasePaymentMethod} A {@link BasePaymentMethod} object\n */\nexport const buildBasePaymentMethod = (\n overrides: Partial<BasePaymentMethod> = {}\n): BasePaymentMethod => {\n return {\n created_at: genDate(),\n deleted_at: genDate(),\n updated_at: genDate(),\n id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BasePaymentMethod objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {BasePaymentMethod[]} An array of BasePaymentMethod objects,\n * see {@link BasePaymentMethod}\n */\nexport const genBasePaymentMethods = (\n quantity?: number\n): BasePaymentMethod[] => {\n return genItems(buildBasePaymentMethod, quantity);\n};\n\n/**\n * Generates PaymentMethod object with random data.\n *\n * @since 0.5.15\n * @param {Partial<PaymentMethod>} overrides Properties to override\n * a {@link PaymentMethod}\n * @returns {PaymentMethod} A {@link PaymentMethod} object\n */\nexport const buildPaymentMethod = (\n overrides: Partial<PaymentMethod> = {}\n): PaymentMethod => {\n const paymentNames: PaymentMethodName[] = [\n \"CASH\",\n \"CREDIT_CARD\",\n \"DATAPHONE\"\n ];\n\n return {\n ...buildBasePaymentMethod(),\n name: chooseRandom(paymentNames),\n image_url: genURL(),\n default: genBiasBoolean(0.6),\n external_id: genNumber(50).toString(),\n external_code: genNumber(50),\n parent_id: genNumber(50).toString(),\n methods: genPaymentProviders(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of PaymentMethod objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {PaymentMethod[]} An array of PaymentMethod objects,\n * see {@link PaymentMethod}\n */\nexport const genPaymentMethods = (quantity?: number): PaymentMethod[] => {\n return genItems(buildPaymentMethod, quantity);\n};\n\n/**\n * Generates PaymentProvider object with random data.\n *\n * @since 0.5.15\n * @param {Partial<PaymentProvider>} overrides Properties to override\n * a {@link PaymentProvider}\n * @returns {PaymentProvider} A {@link PaymentProvider} object\n */\nexport const buildPaymentProvider = (\n overrides: Partial<PaymentProvider> = {}\n): PaymentProvider => {\n const providerNames = [\"PayPhone\", \"Kushki\", \"Place to Pay\", \"Mercadopago\"];\n return {\n ...buildBasePaymentMethod(),\n name: chooseRandom(providerNames),\n image_url: genURL(),\n default: genBiasBoolean(0.6),\n external_id: genNumber(50).toString(),\n external_code: genNumber(50),\n parent_id: genNumber(50).toString(),\n methods: [],\n cc_brands: genCreditCardMappings(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of PaymentProvider objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {PaymentProvider[]} An array of credit card brands,\n * see {@link PaymentProvider}\n */\nexport const genPaymentProviders = (quantity?: number): PaymentProvider[] => {\n return genItems(buildPaymentProvider, quantity);\n};\n\n/**\n * Generates CreditCardMapping object with random data.\n *\n * @since 0.5.15\n * @param {Partial<CreditCardMapping>} overrides Properties to override\n * a {@link CreditCardMapping}\n * @returns {CreditCardMapping} A {@link CreditCardMapping} object\n */\nexport const buildCreditCardMapping = (\n overrides: Partial<CreditCardMapping> = {}\n): CreditCardMapping => {\n const cardsName: CardName[] = [\n \"American Express\",\n \"Diners\",\n \"Discover\",\n \"Visa\",\n \"MasterCard\"\n ];\n return {\n ...buildBasePaymentMethod(),\n id: genId(),\n name: chooseRandom(cardsName),\n image_url: buildURLImage(),\n cc_brands_mapping: [],\n ...overrides\n };\n};\n\n/**\n * Generates a list of CreditCardMapping objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {CreditCardMapping[]} An array of credit card mappings,\n * see {@link CreditCardMapping}\n */\nexport const genCreditCardMappings = (\n quantity?: number\n): CreditCardMapping[] => {\n return genItems(buildCreditCardMapping, quantity);\n};\n\n/**\n * Generates CardInscription object with random data.\n *\n * @since 0.5.15\n * @param {Partial<CardInscription>} overrides Properties to override\n * a {@link CardInscription}\n * @returns {CardInscription} A {@link CardInscription} object\n */\nexport const buildCardInscription = (\n overrides: Partial<CardInscription> = {}\n): CardInscription => {\n return {\n authCode: genNumericId().toString(),\n bin: genWord(),\n createdAt: new Date().toDateString(),\n id: genId(),\n uid: genId(),\n number: genNumericId().toString(),\n paymentToken: genNumericId().toString(),\n type: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CardInscription objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {CardInscription[]} An array of card inscriptions,\n * see {@link CardInscription}\n */\nexport const genCardInscriptions = (quantity?: number): CardInscription[] => {\n return genItems(buildCardInscription, quantity);\n};\n","import { faker } from \"@faker-js/faker\";\n\nexport const seed = <T extends number | number[] | undefined = undefined>(\n seed?: T\n): T extends number ? number : T extends number[] ? number[] : number => {\n if (!faker) throw new Error(\"Faker not found\");\n // @ts-ignore\n return faker.seed(seed);\n};\n"],"names":["faker","__spreadValues","__spreadProps"],"mappings":"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"}
1
+ {"version":3,"file":"bundle.cjs","sources":["../src/utils/common.utils.ts","../src/builders/common.builder.ts","../src/builders/image.builder.ts","../src/builders/account.builder.ts","../src/builders/banner.builder.ts","../src/builders/billingData.builder.ts","../src/builders/catalogue.builder.ts","../src/builders/product.builder.ts","../src/builders/category.builder.ts","../src/builders/country.builder.ts","../src/builders/coupon.builder.ts","../src/builders/fulfillment.builder.ts","../src/builders/masivo.builder.ts","../src/builders/user.builder.ts","../src/builders/vendor.builder.ts","../src/builders/store.builder.ts","../src/builders/shoppingCart.builder.ts","../src/builders/shippingAddress.builder.ts","../src/builders/settings.builder.ts","../src/builders/order.builder.ts","../src/builders/notification.builder.ts","../src/builders/payment.builder.ts","../src/utils/instance.utils.ts"],"sourcesContent":["// Common utility functions\nimport { faker } from \"@faker-js/faker\";\n\n/**\n * Generates and array of objects of the given type.\n *\n * @param {Function} builder Function passed to generate random data for each object\n * @param {number} quantity The number of objects to be generated\n * @returns {T[]} An array of objects of the given type\n */\nexport const genItems = <T>(\n builder: (overrides?: Partial<T>) => T,\n quantity?: number\n): T[] => {\n const num = quantity ?? faker.datatype.number({ min: 1, max: 10 });\n\n const items: T[] = [];\n for (let i = 0; i < num; i++) {\n items.push(builder());\n }\n return items;\n};\n","// Common builder functions\nimport { faker } from \"@faker-js/faker\";\nimport btoa from \"btoa\";\nimport { CountryCode, DocumentType } from \"@artisan-commerce/types\";\nimport { ARDocumentType, BODocumentType } from \"@artisan-commerce/types\";\nimport { BRDocumentType, CLDocumentType } from \"@artisan-commerce/types\";\nimport { CODocumentType, ECDocumentType } from \"@artisan-commerce/types\";\nimport { PYDocumentType, PEDocumentType } from \"@artisan-commerce/types\";\nimport { UYDocumentType, VEDocumentType } from \"@artisan-commerce/types\";\nimport { USDocumentType, CommonDocumentType } from \"@artisan-commerce/types\";\nimport { CountrySummary, RandomImageConfig } from \"@artisan-commerce/types\";\n\nexport { genItems } from \"../utils/common.utils\";\n\n/**\n * Default document types for all countries.\n *\n * @since 0.1.0\n */\nexport const getCommonDocumentTypes = (): CommonDocumentType[] => [\"PASSPORT\"];\n\n/**\n * Argentina supported document types.\n *\n * @since 0.1.0\n */\nexport const getARDocumentTypes = (): ARDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"DNI\"\n];\n\n/**\n * Bolivia supported document types.\n *\n * @since 0.1.0\n */\nexport const getBODocumentTypes = (): BODocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Brasil supported document types.\n *\n * @since 0.1.0\n */\nexport const getBRDocumentTypes = (): BRDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Chile supported document types.\n *\n * @since 0.1.0\n */\nexport const getCLDocumentTypes = (): CLDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"RUT\"\n];\n\n/**\n * Colombia supported document types.\n *\n * @since 0.1.0\n */\nexport const getCODocumentTypes = (): CODocumentType[] => [\n ...getCommonDocumentTypes(),\n \"NIT\",\n \"CI_CO\"\n];\n\n/**\n * Ecuador supported document types.\n *\n * @since 0.1.0\n */\nexport const getECDocumentTypes = (): ECDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"CI\",\n \"RUC\"\n];\n\n/**\n * Paraguay supported document types.\n *\n * @since 0.1.0\n */\nexport const getPYDocumentTypes = (): PYDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Perú supported document types.\n *\n * @since 0.1.0\n */\nexport const getPEDocumentTypes = (): PEDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"DNI\",\n \"RUC\"\n];\n\n/**\n * Uruguay supported document types.\n *\n * @since 0.1.0\n */\nexport const getUYDocumentTypes = (): UYDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Venezuela supported document types.\n *\n * @since 0.1.0\n */\nexport const getVEDocumentTypes = (): VEDocumentType[] => [\n ...getCommonDocumentTypes(),\n \"CE_VE\",\n \"CI_VE\",\n \"RIF\"\n];\n\n/**\n * United States supported document types.\n *\n * @since 0.1.0\n */\nexport const getUSDocumentTypes = (): USDocumentType[] => [\n ...getCommonDocumentTypes()\n];\n\n/**\n * Generates a random password.\n *\n * @since 0.1.0\n * @param {any[]} args An array of arguments to be passed when\n * generating the password\n * @returns A random password\n */\nexport const getPassword = (...args: any[]) =>\n `!0_Oo${faker.internet.password(...args)}`;\n\n/**\n * Generates a random username.\n *\n * @since 0.1.0\n */\nexport const getUsername = (\n ...params: Parameters<typeof faker.internet.userName>\n) => faker.internet.userName(...params);\n\n/**\n * Generates a random unique identifier.\n *\n * @since 0.1.0\n */\nexport const genId = (...params: Parameters<typeof faker.datatype.uuid>) =>\n faker.datatype.uuid(...params);\n\n/**\n * Generates a random id of type number.\n *\n * @since 0.1.0\n */\nexport const genNumericId = (\n ...params: Parameters<typeof faker.random.numeric>\n) => +faker.random.numeric(...params);\n\n/**\n * Generates a random word.\n *\n * @since 0.1.0\n */\nexport const genWord = (...params: Parameters<typeof faker.lorem.word>) =>\n faker.lorem.word(...params);\n\n/**\n * Generates a random address.\n *\n * @since 0.1.0\n */\nexport const genAddress = (\n ...params: Parameters<typeof faker.address.streetAddress>\n) => faker.address.streetAddress(...params);\n\n/**\n * Generates a random name.\n *\n * @since 0.1.0\n */\nexport const genName = (...params: Parameters<typeof faker.name.fullName>) =>\n faker.name.fullName(...params);\n\n/**\n * Generates a random email.\n *\n * @since 0.1.0\n */\nexport const genEmail = (...params: Parameters<typeof faker.internet.email>) =>\n faker.internet.email(...params);\n\n/**\n * Generates a random company name.\n *\n * @since 0.1.0\n */\nexport const genCompanyName = (\n ...params: Parameters<typeof faker.company.name>\n) => faker.company.name(...params);\n\n/**\n * Generates a random paragraph.\n *\n * @since 0.1.0\n */\nexport const genParagraph = (\n ...params: Parameters<typeof faker.lorem.paragraph>\n) => faker.lorem.paragraph(...params);\n\n/**\n * Generates a random title containing 3 words.\n *\n * @since 0.1.0\n */\nexport const genTitle = (...params: Parameters<typeof faker.lorem.slug>) =>\n faker.lorem.slug(...params);\n\n/**\n * Generates a random number.\n *\n * @since 0.1.0\n */\nexport const genNumber = (\n ...params: Parameters<typeof faker.datatype.number>\n) => faker.datatype.number(...params);\n\n/**\n * Generates a random boolean value.\n *\n * @since 0.1.0\n */\nexport const getBoolean = (\n ...params: Parameters<typeof faker.datatype.boolean>\n) => faker.datatype.boolean(...params);\n\n/**\n * Generates a random country name.\n *\n * @since 0.1.0\n */\nexport const genCountryName = (\n ...params: Parameters<typeof faker.address.country>\n) => faker.address.country(...params);\n\n/**\n * Generates a random image based on custom configuration.\n *\n * @since 0.5.15\n * @param {RandomImageConfig} randomImageConfig Configuration\n * to generate a random image\n * @returns {string} An url of the image generated\n */\nexport const genRandomImage = (randomImageConfig?: RandomImageConfig) => {\n const { query = \"product\" } = randomImageConfig ?? {};\n const { width = 300, height = 300 } = randomImageConfig ?? {};\n\n let url = `https://source.unsplash.com/${width}x${height}`;\n\n if (query) url += `/?${query}`;\n\n return url;\n};\n\n/** Generates random words.\n *\n * @since 0.1.0\n * @param {number} words The quantity of words to be generated\n */\nexport const genWords = (words?: number) => faker.random.words(words);\n\n/**\n * Generates a random internet url.\n *\n * @since 0.1.0\n */\nexport const genURL = (...params: Parameters<typeof faker.internet.url>) =>\n faker.internet.url(...params);\n\n/**\n * Generates a random date in ISO format.\n *\n * @since 0.1.0\n */\nexport const genDate = () => faker.date.recent(7).toISOString();\n\n/**\n * Generates a random base64 value.\n *\n * @since 0.1.0\n */\nexport const genBase64 = () => btoa(genWord());\n\n/**\n * Generates a random boolean value.\n *\n * @since 0.1.0\n * @param {number} bias A number between 0 and 1 which will be used\n * to generate a boolean\n * @throws Error if bias is not between 0 and 1\n * @returns {boolean} A boolean value\n */\nexport const genBiasBoolean = (bias: number): boolean => {\n if (bias > 1 || bias < 0) {\n throw new Error(\n `Bias must be a number between 0 and 1. Value ${bias} is not valid`\n );\n }\n const random = faker.datatype.number({ min: 0, max: 1, precision: 4 });\n return random <= bias;\n};\n\n/**\n * Generates a random document.\n *\n * @since 0.1.0\n * @param {number} digits The number of digits with which the document\n * will be generated\n * @returns {string} A random document\n */\nexport const genDocument = (digits: number): string => {\n let document = \"\";\n for (let i = 0; i < digits; i++) {\n document += genNumber(9);\n }\n return document;\n};\n\n/**\n * Generates a random document type.\n *\n * @since 0.1.0\n * @param {string} countryISOCode Country calling code\n */\nexport const genDocumentType = (\n countryISOCode: CountryCode = \"EC\"\n): DocumentType => {\n switch (countryISOCode) {\n case \"AR\":\n return chooseRandom(getARDocumentTypes());\n case \"BO\":\n return chooseRandom(getBODocumentTypes());\n case \"BR\":\n return chooseRandom(getBRDocumentTypes());\n case \"CL\":\n return chooseRandom(getCLDocumentTypes());\n case \"CO\":\n return chooseRandom(getCODocumentTypes());\n case \"EC\":\n return chooseRandom(getECDocumentTypes());\n case \"PY\":\n return chooseRandom(getPYDocumentTypes());\n case \"PE\":\n return chooseRandom(getPEDocumentTypes());\n case \"UY\":\n return chooseRandom(getUYDocumentTypes());\n case \"VE\":\n return chooseRandom(getVEDocumentTypes());\n case \"US\":\n return chooseRandom(getUSDocumentTypes());\n default:\n throw new Error(\n `Builder genDocumentType: The given country ISO code \"${countryISOCode}\" is not a supported ISO code`\n );\n }\n};\n\n/**\n * Generates a random mobile phone with the country code provided.\n *\n * @since 0.1.0\n * @param {string} countryCode Country calling code\n * @returns {string} A string like a mobile phone\n */\nexport const genMobilPhone = (countryCode: string): string => {\n return `+${countryCode} ${genDocument(3)} ${genDocument(3)} ${genDocument(\n 4\n )}`;\n};\n\n/**\n * Generates a Country Summary object with random data.\n *\n * @since 0.1.0\n * @param {number} id Country specific id\n * @param {string} name Country specific name\n * @returns {CountrySummary} A {@link CountrySummary} object\n */\nexport const genCountry = (id?: string, name?: string): CountrySummary => {\n const country: CountrySummary = {\n id: id ?? genId(),\n name: name ?? genCountryName()\n };\n return country;\n};\n\n/**\n * Fills a number of type string with characters.\n *\n * @since 0.1.0\n * @param {string} num A string, the length of it will\n * be used to fill the number\n * @param {number} max A number, the length of it will\n * be used to fill the number\n * @returns {string} A string filled with the data passed\n */\nexport const fillNumber = (num: string, max?: number): string => {\n const maxNumLength = max ? String(max).length : num.length;\n let newId = num;\n for (let i = 0; i < maxNumLength - num.length; i++) {\n newId = `0${newId}`;\n }\n return newId;\n};\n\n/**\n * Chooses a random item inside the array provided.\n *\n * @since 0.1.0\n * @param {T[]} arr An array of generic items\n * @returns {T} A random item of the array passed as param\n */\nexport const chooseRandom = <T = string>(array?: T[]): T =>\n faker.helpers.arrayElement<T>(array);\n\n// /**\n// * Generates a random currency symbol.\n// *\n// * @since 0.1.0\n// */\nexport const genSymbol = () => chooseRandom([\"$\", \"S/\", \"$b\", \"Bs\"]);\n\n// /**\n// * Generates a random internet ip.\n// *\n// * @since 0.1.0\n// */\nexport const genIP = (...params: Parameters<typeof faker.internet.ip>) =>\n faker.internet.ip(...params);\n","// Image builder functions\nimport { CDNImage, URLImage, RandomImageConfig } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genRandomImage, genWord, genURL } from \"./common.builder\";\n\n/**\n * Generates a random image url.\n *\n * @since 0.5.15\n */\nexport const buildURLImage = genRandomImage;\n\n/**\n * Generates a list of URLImage.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {URLImage} An array of {@link URLImage}\n */\nexport const genURLImages = (\n quantity?: number,\n overrides?: RandomImageConfig\n): URLImage[] => {\n return genItems(() => buildURLImage(overrides), quantity);\n};\n\n/**\n * Generates CDNImage object with random data.\n *\n * @since 0.5.15\n * @param {Partial<CDNImage>} overrides Properties to override\n * a {@link CDNImage}\n * @param {RandomImageConfig} options image request options{{@link RandomImageConfig}\n * @returns {CDNImage} A {@link CDNImage} object\n */\nexport const buildCDNImage = (\n overrides: Partial<CDNImage> = {},\n options?: RandomImageConfig\n): CDNImage => {\n const imageName = genWord();\n return {\n bucket: null,\n cloudFrontUrl: genURL(),\n key: `images/${imageName}.jpg`,\n name: `${imageName}.jpg`,\n url: buildURLImage(options),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CDNImage objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @param {RandomImageConfig} options image request options{{@link RandomImageConfig}\n * @returns {CDNImage[]} An array of CDNImage objects, see {@link CDNImage}\n */\nexport const genCDNImages = (\n quantity?: number,\n options?: RandomImageConfig\n): CDNImage[] => {\n return genItems(() => buildCDNImage(undefined, options), quantity);\n};\n","// Account builder functions\nimport { Account, AdditionalInfo } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genId, genName } from \"./common.builder\";\nimport { genParagraph } from \"./common.builder\";\nimport { genCDNImages } from \"./image.builder\";\n\n/**\n * Generates Account object with random data.\n *\n * @template T Account additional info\n * @since 0.1.0\n * @param {Partial<Account>} overrides Properties to override a {@link Account}\n * @returns {Account} A {@link Account} object\n */\nexport const buildAccount = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Account<T>> = {}\n): Account<T> => {\n return {\n accountId: genId(),\n name: genName(),\n description: genBiasBoolean(0.5) ? genParagraph() : undefined,\n images: genCDNImages(undefined, { query: \"brand\" }),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Account objects with random data.\n *\n * @template T Accounts additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Account[]} An array of {@link Account}s objects\n */\nexport const genAccounts = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Account<T>[] => {\n return genItems(buildAccount, quantity);\n};\n","// Banner builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, BannerCoupon } from \"@artisan-commerce/types\";\nimport { BannerImage } from \"@artisan-commerce/types\";\nimport { BannerBenefits } from \"@artisan-commerce/types\";\nimport { Banner, BannerType, BannerScope } from \"@artisan-commerce/types\";\n\nimport { genId, genWord } from \"./common.builder\";\nimport { buildURLImage } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genRandomImage } from \"./common.builder\";\nimport { genNumber, genURL, genWords, genBiasBoolean } from \"./common.builder\";\n\n/**\n * Generates banner object with random data.\n *\n * @template T Banner additional info\n * @since 0.1.0\n * @param {Partial<Banner>} overrides Properties to override a {@link Banner}\n * @returns {Banner} A {@link Banner} object\n */\nexport const buildBanner = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Banner<T>> = {}\n): Banner<T> => {\n const bannerScopes: BannerScope[] = [\"APP\", \"GLOBAL\", \"WEB\"];\n const bannerTypes: BannerType[] = [\n \"COUPON\",\n \"INFO\",\n \"PRODUCT\",\n \"URL\",\n \"CATEGORY\",\n \"COUPON_QR\",\n \"SECTION\"\n ];\n\n return {\n banner_title: genWords(2),\n banner_description: genWords(8),\n image_url: buildURLImage(),\n banner_qr_code: \"\",\n coupon: buildBannerCoupon(),\n coupon_id: genId(),\n banner_type: chooseRandom(bannerTypes),\n image_file_name: `${genWord}.jpg`,\n benefits: genBannerBenefits(),\n vendor_id: genId(),\n vendor_name: faker.company.name(),\n scope: chooseRandom(bannerScopes),\n banner_category_id: genId(),\n product_id: null,\n product_name: null,\n stores: [],\n banner_url: buildURLImage(),\n image_bucket: null,\n image_cloud_front_url: genURL(),\n image_key: `banners/${genWord}.jpg`,\n category_id: genId(),\n category_name: faker.company.name(),\n channel_id: genId(),\n images: genBannerImages(),\n section: null,\n ...overrides\n };\n};\n\n/**\n * Generates BannerCoupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BannerCoupon>} overrides Properties to override\n * a {@link BannerCoupon}\n * @returns {BannerCoupon} A {@link BannerCoupon} object\n */\nexport const buildBannerCoupon = (\n overrides: Partial<BannerCoupon> = {}\n): BannerCoupon => {\n return {\n name: genWord(),\n only_store: genBiasBoolean(0.6),\n coupon_type: chooseRandom([\"COUPON\", \"MIX\"]),\n ...overrides\n };\n};\n\n/**\n * Generates BannerBenefits object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BannerBenefits>} overrides Properties to override\n * a {@link BannerBenefits}\n * @returns {BannerBenefits} A {@link BannerBenefits} object\n */\nexport const buildBannerBenefits = (\n overrides: Partial<BannerBenefits> = {}\n): BannerBenefits => {\n return {\n id: genId(),\n name: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of banner benefits objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BannerBenefits[]} An array of banner benefits, see {@link BannerBenefits}\n */\nexport const genBannerBenefits = (quantity?: number): BannerBenefits[] => {\n return genItems(buildBannerBenefits, quantity);\n};\n\n/**\n * Generates a list of Banner objects with random data.\n *\n * @template T Banners additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Banner[]} An array of {@link Banner}s objects\n */\nexport const genBanners = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Banner<T>[] => {\n return genItems(buildBanner, quantity);\n};\n\n/**\n * Generates BannerImage object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BannerImage>} overrides Properties to override\n * a {@link BannerImage}\n * @returns {BannerImage} A {@link BannerImage} object\n */\nexport const buildBannerImage = (\n overrides: Partial<BannerImage> = {}\n): BannerImage => {\n return {\n file_name: `${genWord}.jpg`,\n id: genId(),\n image_file_name: `${genWord}.jpg`,\n image_key: `banners/${genWord}.jpg`,\n image_url: buildURLImage(),\n position: genNumber(100),\n url: genRandomImage(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of banner image objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BannerImage[]} An array of banner images, see {@link BannerImage}\n */\nexport const genBannerImages = (quantity?: number): BannerImage[] => {\n return genItems(buildBannerImage, quantity);\n};\n","// Billing data builder functions\nimport { AdditionalInfo, BillingData } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genName, genDocumentType, genDocument, genId } from \"./common.builder\";\nimport { genAddress, genMobilPhone, genEmail } from \"./common.builder\";\nimport { getBoolean, genCountry } from \"./common.builder\";\n\n/**\n * Generates BillingData object with random data.\n *\n * @template T Billing data additional info\n * @since 0.1.0\n * @param {Partial<BillingData>} overrides Properties to override\n * a {@link BillingData}\n * @returns {BillingData} A {@link BillingData} object\n */\nexport const buildBillingData = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<BillingData<T>> = {}\n): BillingData<T> => {\n return {\n id: genId(),\n name: `${genName()} ${genName()}`,\n nickname: genName(),\n documentType: genDocumentType(),\n document: genDocument(10),\n address: genAddress(),\n phone: genMobilPhone(\"593\"),\n email: genEmail(),\n default: getBoolean(),\n country: genCountry(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Billing Data objects with random data.\n *\n * @template T Billing data additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BillingData[]} An array of {@link BillingData}s objects\n */\nexport const genBillingData = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): BillingData<T>[] => {\n return genItems(buildBillingData, quantity);\n};\n","// Catalogue builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, Catalogue } from \"@artisan-commerce/types\";\n\nimport { chooseRandom, genBiasBoolean, genNumber } from \"./common.builder\";\n\nconst catalogueOptions = [\"A domicilio\", \"Pick-up\"];\n\n/**\n * Generates Catalogue object with random data.\n *\n * @template T Catalogue additional info\n * @since 0.1.0\n * @param {Partial<Catalogue>} overrides Properties to override\n * a {@link Catalogue}\n * @returns {Catalogue} A {@link Catalogue} object\n */\nexport const buildCatalogue = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Catalogue<T>> = {}\n): Catalogue<T> => {\n return {\n catalogueId: genNumber(200).toString(),\n name: faker.company.bsAdjective(),\n active: genBiasBoolean(0.5),\n friendlyName: faker.company.name(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Catalogue objects with custom data.\n *\n * @template T Catalogues additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Catalogue[]} An array of {@link Catalogue}s objects\n */\nexport const genCatalogues = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Catalogue<T>[] => {\n const num = quantity ?? genNumber({ min: 1, max: 10 });\n let options = [...catalogueOptions];\n const catalogues = [];\n for (let i = 0; i < num; i++) {\n const overrides: Partial<Catalogue<T>> = {};\n const option = chooseRandom(options);\n if (option) {\n overrides.name = option;\n }\n const catalogue = buildCatalogue<T>(overrides);\n catalogues.push(catalogue);\n options = options.filter(catalogue => catalogue !== option);\n }\n return catalogues;\n};\n","// Product builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, BaseProduct, Category } from \"@artisan-commerce/types\";\nimport { CartProductAnswer } from \"@artisan-commerce/types\";\nimport { CartProductQuestion } from \"@artisan-commerce/types\";\nimport { CartProduct, ProductQuestion } from \"@artisan-commerce/types\";\nimport { ProductAnswer, ProductDetails } from \"@artisan-commerce/types\";\nimport { PriceCategory, PriceCategoryTax } from \"@artisan-commerce/types\";\n\nimport { genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genNumber, chooseRandom, genBiasBoolean } from \"./common.builder\";\n\n/**\n * Generates PriceCategoryTax object with random data.\n *\n * @since 0.1.0\n * @param {Partial<PriceCategoryTax>} overrides Properties to override\n * a {@link PriceCategoryTax}\n * @returns {PriceCategoryTax} A {@link PriceCategoryTax} object\n */\nexport const buildPriceCategoryTax = (\n overrides: Partial<PriceCategoryTax> = {}\n): PriceCategoryTax => {\n return {\n code: 0,\n name: chooseRandom([\"IVA\"]),\n percentage: 10,\n vatRate: \"\",\n vatRateCode: 0,\n ...overrides\n };\n};\n\n/**\n * Generates a list of PriceCategoryTax objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {PriceCategoryTax[]} An array of price category taxes objects,\n * see {@link PriceCategoryTax}\n */\nexport const genPriceCategoryTaxes = (\n quantity?: number\n): PriceCategoryTax[] => {\n return genItems(buildPriceCategoryTax, quantity);\n};\n\nconst getTaxTotals = (taxes: PriceCategoryTax[], grossPrice: number) => {\n return taxes.reduce((acc, tax) => {\n return acc + (tax.percentage / 100) * grossPrice;\n }, 0);\n};\n\n/**\n * Generates PriceCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<PriceCategory>} overrides Properties to override\n * a {@link PriceCategory}\n * @returns {PriceCategory} A {@link PriceCategory} object\n */\nexport const buildPriceCategory = (\n overrides: Partial<PriceCategory> = {}\n): PriceCategory => {\n const category = overrides.category ?? \"NORMAL\";\n const precision = category === \"NORMAL\" ? 2 : undefined;\n const grossPrice = genNumber({ min: 2, max: 20, precision });\n const withTaxes = genBiasBoolean(0.9);\n const taxes = genPriceCategoryTaxes(withTaxes && precision ? 1 : 0);\n const taxTotal = getTaxTotals(taxes, grossPrice);\n const netPrice = grossPrice + taxTotal;\n return {\n category,\n discount: 0,\n discountGrossPrice: 0,\n discountNetPrice: 0,\n discounts: [],\n grossPrice,\n netPrice,\n symbol: \"$\",\n taxes,\n salePercentage: 0,\n priceBeforeSale: 0,\n ...overrides\n };\n};\n\n/**\n * Generates BaseProduct object with random data.\n *\n * @template T Product additional info\n * @since 0.1.0\n * @param {Partial<BaseProduct>} overrides Properties to override\n * a {@link BaseProduct}\n * @returns {BaseProduct} A {@link BaseProduct} object\n */\nexport const buildBaseProduct = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<BaseProduct<T>> = {}\n): BaseProduct<T> => {\n return {\n attributes: {\n Cantidad: \"1\",\n externalId: \"001\",\n showInMenu: true\n },\n available: true,\n addDirectlyToCart: genBiasBoolean(0.5),\n coverUrl: \"\",\n description: faker.lorem.lines(2),\n images: genCDNImages(genNumber({ min: 1, max: 5 })),\n measure: \"unit\",\n name: faker.commerce.productName(),\n outOfService: false,\n outOfStock: false,\n prices: {\n NORMAL: buildPriceCategory({ category: \"NORMAL\" }),\n POINTS: buildPriceCategory({ category: \"POINTS\" }),\n SUGGESTED: buildPriceCategory({ category: \"SUGGESTED\" })\n },\n productId: genNumber(999).toString(),\n sponsored: false,\n standardTime: \"\",\n status: \"ACTIVE\",\n stock: 1000,\n suggestedPrice: \"\",\n type: \"PRODUCT\",\n ...overrides\n };\n};\n\n/**\n * Generates a list of BaseProduct objects with random data.\n *\n * @template T Product additional info\n * @template U Product additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BaseProduct[]} An array of BaseProduct objects,\n * see {@link BaseProduct}\n */\nexport const genBaseProducts = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): BaseProduct<T>[] => {\n return genItems(buildBaseProduct, quantity);\n};\n\n/**\n * Render type for product answers\n *\n * @since 0.1.0\n */\nexport const MODIFIER_TYPES = [\"RADIO\", \"CHECKBOX\", \"QUANTITY\", \"CUSTOMIZED\"];\n\n/**\n * Generates ProductAnswer object with random data.\n *\n * @template T Product additional info\n * @since 0.1.0\n * @param {Partial<ProductAnswer>} overrides Properties to override\n * a {@link ProductAnswer}\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductAnswer} A {@link ProductAnswer} object\n */\nexport const buildProductAnswer = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ProductAnswer<T>> = {},\n loop = 1\n): ProductAnswer<T> => {\n const withQuestions = genBiasBoolean(0.1) && loop < 2;\n const selectedRenderType = chooseRandom(MODIFIER_TYPES);\n const renderType = genBiasBoolean(0.9) ? null : selectedRenderType;\n const images = genCDNImages(undefined, { width: 60, height: 60 });\n return {\n attributes: {\n Cantidad: \"1\",\n externalId: \"001\",\n showInMenu: true\n },\n images: genBiasBoolean(0.1) ? [] : images,\n name: faker.name.jobDescriptor(),\n prices: {\n NORMAL: buildPriceCategory({ category: \"NORMAL\" }),\n POINTS: buildPriceCategory({ category: \"POINTS\" }),\n SUGGESTED: buildPriceCategory({ category: \"SUGGESTED\" })\n },\n productId: genNumber(999).toString(),\n type: chooseRandom([\"PRODUCT\", \"MODIFIER\"]),\n renderType,\n questions: withQuestions ? genProductQuestions<T>(undefined, loop + 1) : [],\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductAnswer objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductAnswer[]} An array of ProductAnswer objects,\n * see {@link ProductAnswer}\n */\nexport const genProductAnswers = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number,\n loop = 1\n): ProductAnswer<T>[] => {\n if (loop > 2) return [];\n const num = quantity ?? genNumber({ min: 1, max: 6 });\n\n const productAnswers = [];\n for (let i = 0; i < num; i++) {\n const productAnswer = buildProductAnswer<T>({}, loop);\n productAnswers.push(productAnswer);\n }\n return productAnswers;\n};\n\n/**\n * Generates ProductQuestion object with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {Partial<ProductQuestion>} overrides Properties to override\n * a {@link ProductQuestion}\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductQuestion} A {@link ProductQuestion} object\n */\nexport const buildProductQuestion = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ProductQuestion<T>> = {},\n loop = 1\n): ProductQuestion<T> => {\n const randomMin = genNumber({ min: 0, max: 5 });\n const likelyMin = genNumber({ min: 0, max: 1 });\n const min = genBiasBoolean(0.8) ? likelyMin : randomMin;\n const randomMax = genNumber({ min, max: 5 });\n const likelyMax = genNumber({ min, max: min > 1 ? min : 1 });\n const max = genBiasBoolean(0.8) ? likelyMax : randomMax;\n const selectedType = chooseRandom(MODIFIER_TYPES);\n const type = genBiasBoolean(0.9) ? null : selectedType;\n return {\n answers: genProductAnswers<T>(undefined, loop),\n description: faker.finance.transactionType(),\n max,\n min,\n name: faker.finance.accountName(),\n questionId: genNumber(999).toString(),\n type,\n images: genCDNImages(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductQuestion objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @param {number} loop The quantity of loops the function will be run\n * @returns {ProductQuestion[]} An array of ProductQuestion objects,\n * see {@link ProductQuestion}\n */\nexport const genProductQuestions = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number,\n loop = 1\n): ProductQuestion<T>[] => {\n if (loop > 2) return [];\n const num = quantity ?? genNumber({ min: 1, max: 5 });\n\n const productQuestions = [];\n for (let i = 0; i < num; i++) {\n const productQuestion = buildProductQuestion<T>({}, loop);\n productQuestions.push(productQuestion);\n }\n return productQuestions;\n};\n\n/**\n * Generates ProductDetails object with random data.\n *\n * @template T Product additional info\n * @since 0.1.0\n * @param {Partial<ProductDetails>} overrides Properties to override\n * a {@link ProductDetails}\n * @returns {ProductDetails} A {@link ProductDetails} object\n */\nexport const buildProductDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<ProductDetails<T, U>> = {}\n): ProductDetails<T, U> => {\n const questions = genProductQuestions<T>(undefined, 1);\n const categories: Category<U>[] = [];\n return {\n ...buildBaseProduct(),\n addDirectlyToCart: !questions.length,\n isPriceVip: false,\n manufacturer: [],\n maxAmountForSale: 0,\n schedule: [],\n questions,\n benefitId: null,\n categories: genBiasBoolean(0.5) ? categories : null,\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductDetails objects with random data.\n *\n * @template T Products additional info\n * @template U Categories additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ProductDetails[]} An array of ProductDetails objects,\n * see {@link ProductDetails}\n */\nexport const genProductDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): ProductDetails<T, U>[] => {\n return genItems(buildProductDetails, quantity);\n};\n\n/**\n * Generates CartProductAnswer object with random data.\n *\n * @template T Product answer additional info\n * @since 0.1.0\n * @param questionId The question id associated with the answer\n * @param {Partial<CartProductAnswer>} overrides Properties to override\n * a {@link CartProductAnswer}\n * @returns {CartProductAnswer} A {@link CartProductAnswer} object\n */\nexport const buildCartProductAnswer = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n questionId: string,\n overrides: Partial<CartProductAnswer<T>> = {}\n): CartProductAnswer<T> => {\n return {\n ...buildProductAnswer(),\n amount: 1,\n questionId,\n priceCategory: \"NORMAL\",\n comment: genBiasBoolean(0.2) ? faker.commerce.productMaterial() : \"\",\n questionsAndAnswers: [],\n ...overrides\n };\n};\n\n/**\n * Generates a list of CartProductAnswer objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CartProductAnswer[]} An array of CartProductAnswer objects,\n * see {@link CartProductAnswer}\n */\nexport const genCartProductAnswers = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): CartProductAnswer<T>[] => {\n const num = quantity ?? genNumber({ min: 1, max: 5 });\n\n const cartProductAnswers = [];\n for (let i = 0; i < num; i++) {\n const cartProductAnswer = buildCartProductAnswer<T>(i.toString());\n cartProductAnswers.push(cartProductAnswer);\n }\n return cartProductAnswers;\n};\n\n/**\n * Generates CartProductQuestion object with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {Partial<CartProductQuestion>} overrides Properties to override\n * a {@link CartProductQuestion}\n * @returns {CartProductQuestion} A {@link CartProductQuestion} object\n */\nexport const buildCartProductQuestion = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<CartProductQuestion<T>> = {}\n): CartProductQuestion<T> => {\n return {\n ...buildProductQuestion(),\n answers: genCartProductAnswers(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CartProductQuestion objects with random data.\n *\n * @template T Product answers additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CartProductQuestion[]} An array of CartProductQuestion objects,\n * see {@link CartProductQuestion}\n */\nexport const genCartProductQuestions = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): CartProductQuestion<T>[] => {\n return genItems(buildCartProductQuestion, quantity);\n};\n\n/**\n * Generates CartProduct object with random data.\n *\n * @template T Product additional info\n * @template U Categories additional info\n * @since 0.1.0\n * @param {Partial<CartProduct>} overrides Properties to override\n * a {@link CartProduct}\n * @returns {CartProduct} A {@link CartProduct} object\n */\nexport const buildCartProduct = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<CartProduct<T, U>> = {}\n): CartProduct<T, U> => {\n const comment = genBiasBoolean(0.2) ? faker.commerce.productMaterial() : \"\";\n const questions = genProductQuestions<T>(undefined, 1);\n return {\n ...buildProductDetails<T, U>(),\n questions,\n addDirectlyToCart: !questions.length,\n amount: 1,\n priceCategory: \"NORMAL\",\n alerts: [],\n comment,\n questionsAndAnswers: genCartProductQuestions<T>(),\n hash: \"\",\n createdAt: \"\",\n updatedAt: \"\",\n ...overrides\n };\n};\n\n/**\n * Generates a list of CartProduct objects with random data.\n *\n * @template T Products additional info\n * @template U Categories additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CartProduct[]} An array of CartProduct objects,\n * see {@link CartProduct}\n */\nexport const genCartProducts = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): CartProduct<T, U>[] => {\n return genItems(buildCartProduct, quantity);\n};\n","// Category builder functions\nimport { AdditionalInfo, Category } from \"@artisan-commerce/types\";\nimport { CategoryWithProducts } from \"@artisan-commerce/types\";\n\nimport { genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genBaseProducts } from \"./product.builder\";\nimport { genBiasBoolean, genId, genName } from \"./common.builder\";\n\n/**\n * Generates Category object with random data.\n *\n * @template T Category additional info\n * @since 0.1.0\n * @param {Partial<Category>} overrides Properties to override\n * a {@link Category}\n * @returns {Category} A {@link Category} object\n */\nexport const buildCategory = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Category<T>> = {}\n): Category<T> => {\n return {\n categoryId: genId(),\n displayInMenu: genBiasBoolean(0.9),\n images: genCDNImages(undefined, { width: 1200, height: 400 }),\n name: genName(),\n reload: true,\n subcategories: genBiasBoolean(0.5),\n featured: false,\n ...overrides\n };\n};\n\n/**\n * Generates a list of Category objects with random data.\n *\n * @template T Categories additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Category[]} An array of categories objects, see {@link Category}\n */\nexport const genCategories = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Category<T>[] => {\n return genItems(buildCategory, quantity);\n};\n\n/**\n * Generates CategoryWithProducts object with random data.\n *\n * @since 0.1.0\n * @param {Partial<CategoryWithProducts>} overrides Properties to override\n * a {@link CategoryWithProducts}\n * @returns {CategoryWithProducts} A {@link CategoryWithProducts} object\n */\nexport const buildCategoryWithProducts = (\n overrides: Partial<CategoryWithProducts> = {}\n): CategoryWithProducts => {\n const category = buildCategory();\n return {\n ...category,\n products: genBaseProducts(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CategoryWithProducts objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CategoryWithProducts[]} An array of products by categories,\n * see {@link CategoryWithProducts}\n */\nexport const genCategoryWithProducts = (\n quantity?: number\n): CategoryWithProducts[] => {\n return genItems(buildCategoryWithProducts, quantity);\n};\n","// Country builder functions\nimport { AdditionalInfo, Country, CountryCode } from \"@artisan-commerce/types\";\nimport { CountryCurrency } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genId, genName, genSymbol } from \"./common.builder\";\nimport { chooseRandom } from \"./common.builder\";\n\n/**\n * All values of CountryCode.\n *\n * @since 0.1.0\n */\nexport const countriesCodes: CountryCode[] = [\n \"AR\",\n \"BO\",\n \"BR\",\n \"CL\",\n \"CO\",\n \"EC\",\n \"PY\",\n \"PE\",\n \"UY\",\n \"VE\",\n \"US\"\n];\n\n/**\n * Generates CountryCurrency object with random data.\n *\n * @since 0.1.0\n * @param {Partial<CountryCurrency>} overrides Properties to override\n * a {@link CountryCurrency}\n * @returns {CountryCurrency} A {@link CountryCurrency} object\n */\nexport const buildCountryCurrency = (\n overrides: Partial<CountryCurrency> = {}\n): CountryCurrency => {\n return {\n id: genId(),\n name: chooseRandom([\"USD\", \"EUR\", \"CHL\"]),\n sign: genSymbol(),\n external_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of country's currency objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns A list of country's currency objects, see {@link CountryCurrency}\n */\nexport const genCountryCurrencies = (quantity?: number): CountryCurrency[] => {\n return genItems(buildCountryCurrency, quantity);\n};\n\n/**\n * Generates Country object with random data.\n *\n * @template T Country additional info\n * @since 0.1.0\n * @param {Country} overrides Properties to override a {@link Country}\n * @returns {Country} A {@link Country} object\n */\nexport const buildCountry = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Country<T>> = {}\n): Country<T> => {\n return {\n id: genId(),\n code: chooseRandom(countriesCodes),\n currency: buildCountryCurrency(),\n name: genName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of countries objects with random data.\n *\n * @template T Countries additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns An array of countries objects, see {@link Country}\n */\nexport const genCountries = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Country<T>[] => {\n return genItems(buildCountry, quantity);\n};\n","// Coupon builder functions\nimport { StoreCouponDetail } from \"@artisan-commerce/types\";\nimport { BenefitData, ProductCoupon } from \"@artisan-commerce/types\";\nimport { Wallet, StoreCoupon, Coupon } from \"@artisan-commerce/types\";\nimport { CouponCategory, Code, Token } from \"@artisan-commerce/types\";\nimport { Benefit, BenefitTypes, Award } from \"@artisan-commerce/types\";\n\nimport { buildURLImage, genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genCompanyName } from \"./common.builder\";\nimport { chooseRandom, genBiasBoolean } from \"./common.builder\";\nimport { genDate, genId, genNumber, genWord, genWords } from \"./common.builder\";\n\n/**\n * Generates Benefit object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Benefit>} overrides Properties to override a {@link Benefit}\n * @returns {Benefit} A {@link Benefit} object\n */\nexport const buildBenefit = (overrides: Partial<Benefit> = {}): Benefit => {\n const benefitTypes: BenefitTypes[] = [\n \"ALTER_DELIVERY\",\n \"DISCOUNT_FIXED\",\n \"DISCOUNT_PERCENTAGE\",\n \"PRODUCT\"\n ];\n const type = chooseRandom(benefitTypes);\n return {\n accountId: genId(),\n alerts: [],\n hash: genId(),\n award: type === \"PRODUCT\" ? genAwards(1) : buildAward(),\n benefitId: genId(),\n benefitWalletId: genId(),\n code: null,\n combined: genWord(),\n createdAt: genDate(),\n description: genWords(6),\n discountPercentage: genNumber(100),\n discountFixed: `${genNumber()}`,\n expirationDate: genDate(),\n externalId: null,\n image: genCDNImages(undefined, { query: \"discount\" }),\n limitAward: null,\n limitBenefit: genNumber(4),\n logicOperator: chooseRandom([\"OR\", \"AND\"]),\n quantity: genNumber(7),\n rules: [],\n title: genWords(3),\n type,\n updatedAt: genDate(),\n channelId: genId(),\n vendorId: genNumber(30).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Benefit objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Benefit[]} An array of Benefit objects, see {@link Benefit}\n */\nexport const genBenefits = (quantity?: number): Benefit[] => {\n return genItems(buildBenefit, quantity);\n};\n\n/**\n * Generates Award object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Award>} overrides Properties to override a {@link Award}\n * @returns {Award} A {@link Award} object\n */\nexport const buildAward = (overrides: Partial<Award> = {}): Award => {\n return {\n benefitId: genId(),\n discountPercentage: genNumber(100),\n discountValue: null,\n id: genId(),\n amount: genNumber(5),\n productDescription: genWords(5),\n productId: genId(),\n vendorId: genNumber(99).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Award objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Award[]} An array of Award objects, see {@link Award}\n */\nexport const genAwards = (quantity?: number): Award[] => {\n return genItems(buildAward, quantity);\n};\n\n/**\n * Generates Wallet object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Wallet>} overrides Properties to override a {@link Wallet}\n * @returns {Wallet} A {@link Wallet} object\n */\nexport const buildWallet = (overrides: Partial<Wallet> = {}): Wallet => {\n return {\n benefits: genBenefits(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Wallet objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Wallet[]} An array of Wallet objects, see {@link Wallet}\n */\nexport const genWallets = (quantity?: number): Wallet[] => {\n return genItems(buildWallet, quantity);\n};\n\n/**\n * Generates StoreCoupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<StoreCoupon>} overrides Properties to override\n * a {@link StoreCoupon}\n * @returns {StoreCoupon} A {@link StoreCoupon} object\n */\nexport const buildStoreCoupon = (\n overrides: Partial<StoreCoupon> = {}\n): StoreCoupon => {\n return {\n featured: genBiasBoolean(0.5),\n id: genId(),\n name: genCompanyName(),\n vendor_id: genNumber(9999).toString(),\n coupons: genCoupons(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StoreCoupon objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {StoreCoupon[]} An array of StoreCoupon objects,\n * see {@link StoreCoupon}\n */\nexport const genStoreCoupons = (quantity?: number): StoreCoupon[] => {\n return genItems(buildStoreCoupon, quantity);\n};\n\n/**\n * Generates ProductCoupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<ProductCoupon>} overrides Properties to override\n * a {@link ProductCoupon}\n * @returns {ProductCoupon} A {@link ProductCoupon} object\n */\nexport const buildProductCoupon = (\n overrides: Partial<ProductCoupon> = {}\n): ProductCoupon => {\n return {\n amount: genNumber(1),\n id: genId(),\n benefitId: genId(),\n discountPercentage: genNumber(100),\n discountValue: genNumber(10),\n productDescription: genWords(3),\n productId: genId(),\n swapProductId: null,\n vendorId: genNumber(999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ProductCoupon objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ProductCoupon[]} An array of ProductCoupon objects,\n * see {@link ProductCoupon}\n */\nexport const genProductCoupons = (quantity?: number): ProductCoupon[] => {\n return genItems(buildProductCoupon, quantity);\n};\n\n/**\n * Generates BenefitData object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BenefitData>} overrides Properties to override\n * a {@link BenefitData}\n * @returns {BenefitData} A {@link BenefitData} object\n */\nexport const buildBenefitData = (\n overrides: Partial<BenefitData> = {}\n): BenefitData => {\n return {\n account_id: genId(),\n amount: genNumber(1),\n automatic_redeemed: genBiasBoolean(0.1).toString(),\n code: genWord().toUpperCase(),\n combined: genBiasBoolean(0.1).toString(),\n days: null,\n description: genWords(5),\n discount_percentage: genNumber(9),\n end_date: genDate(),\n error_validation: genWords(3),\n expiration_date: genDate(),\n external_id: genNumber(10000).toString(),\n id: genId(),\n image: null,\n instruction: null,\n limit_award: null,\n limit_benefit: genNumber(99),\n logic_operator: chooseRandom([\"OR\", \"AND\"]),\n name: genWord(),\n products: genProductCoupons(1),\n quantity: genNumber(1),\n rules: [],\n spend: genNumber(100),\n start_date: genDate(),\n status: genWord(),\n stock: genNumber(999),\n success_message: genWords(3),\n term_and_condition: genWords(3),\n type: \"MIX\",\n type_alias: genWord(),\n unit: null,\n vendor_id: genNumber(99).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BenefitData objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BenefitData[]} An array of BenefitData objects,\n * see {@link BenefitData}\n */\nexport const genBenefitData = (quantity?: number): BenefitData[] => {\n return genItems(buildBenefitData, quantity);\n};\n\n/**\n * Generates Coupon object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Coupon>} overrides Properties to override\n * a {@link Coupon}\n * @returns {Coupon} A {@link Coupon} object\n */\nexport const buildCoupon = (overrides: Partial<Coupon> = {}): Coupon => {\n return {\n benefits: genBenefitData(1),\n category: buildCouponCategory(),\n codes: genCodes(),\n end_date: genDate(),\n image: buildURLImage({ query: \"coupon\" }),\n id: genId(),\n name: genWord(),\n only_store: genBiasBoolean(0.6),\n spend: genNumber(100),\n start_date: genDate(),\n status: chooseRandom([\"ACTIVE\", \"INACTIVE\"]),\n stock: genNumber(999),\n term_and_condition: genWords(5),\n text: genWords(4),\n type: \"COUPON\",\n vendor_id: genNumber(999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Coupon objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Coupon[]} An array of Coupon objects,\n * see {@link Coupon}\n */\nexport const genCoupons = (quantity?: number): Coupon[] => {\n return genItems(buildCoupon, quantity);\n};\n\n/**\n * Generates CouponCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<CouponCategory>} overrides Properties to override\n * a {@link CouponCategory}\n * @returns {CouponCategory} A {@link CouponCategory} object\n */\nexport const buildCouponCategory = (\n overrides: Partial<CouponCategory> = {}\n): CouponCategory => {\n return {\n featured: genBiasBoolean(0.5),\n id: genId(),\n name: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CouponCategory objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {CouponCategory[]} An array of CouponCategory objects,\n * see {@link CouponCategory}\n */\nexport const genCouponCategories = (quantity?: number): CouponCategory[] => {\n return genItems(buildCouponCategory, quantity);\n};\n\n/**\n * Generates Code object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Code>} overrides Properties to override\n * a {@link Code}\n * @returns {Code} A {@link Code} object\n */\nexport const buildCode = (overrides: Partial<Code> = {}): Code => {\n return {\n code: genWord().toUpperCase(),\n coupon_id: genId(),\n id: genId(),\n status: chooseRandom([\"ACTIVE\", \"INACTIVE\"]),\n jwt: buildToken(),\n used: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Code objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Code[]} An array of Code objects,\n * see {@link Code}\n */\nexport const genCodes = (quantity?: number): Code[] => {\n return genItems(buildCode, quantity);\n};\n\n/**\n * Generates Token object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Token>} overrides Properties to override\n * a {@link Token}\n * @returns {Token} A {@link Token} object\n */\nexport const buildToken = (overrides: Partial<Token> = {}): Token => {\n return {\n token: \"www.google.com\",\n dif: genNumber(1700000000),\n iat: genNumber(1700000000),\n exp: genNumber(30000),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Token objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Token[]} An array of Token objects,\n * see {@link Token}\n */\nexport const genTokens = (quantity?: number): Token[] => {\n return genItems(buildToken, quantity);\n};\n\n/**\n * Generates StoreCouponDetail object with random data.\n *\n * @since 0.1.0\n * @param {Partial<StoreCouponDetail>} overrides Properties to override\n * a {@link StoreCouponDetail}\n * @returns {StoreCouponDetail} A {@link StoreCouponDetail} object\n */\nexport const buildStoreCouponDetail = (\n overrides: Partial<StoreCouponDetail> = {}\n): StoreCouponDetail => {\n return {\n benefits: genBenefitData(1),\n codes: genCodes(),\n end_date: genDate(),\n image: buildURLImage({ query: \"coupon\", height: 200, width: 544 }),\n id: genId(),\n name: genWord(),\n only_store: genBiasBoolean(0.6),\n spend: genNumber(100),\n start_date: genDate(),\n status: chooseRandom([\"ACTIVE\", \"INACTIVE\"]),\n stock: genNumber(999),\n term_and_condition: genWords(5),\n text: genWords(4),\n type: \"COUPON\",\n vendor_id: genNumber(999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StoreCouponDetail objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {StoreCouponDetail[]} An array of StoreCouponDetail objects,\n * see {@link StoreCouponDetail}\n */\nexport const genStoreCouponDetails = (\n quantity?: number\n): StoreCouponDetail[] => {\n return genItems(buildStoreCouponDetail, quantity);\n};\n","// Fulfillment builder functions\n\nimport { Workflow, StepWorkflow } from \"@artisan-commerce/types\";\nimport { StepWorkflowAdditionalInfo } from \"@artisan-commerce/types\";\nimport { StepWorkflowGroup, StepCode } from \"@artisan-commerce/types\";\nimport { ArtisnRequestMethod, Issue } from \"@artisan-commerce/types\";\nimport { StepCategory, StepNotification } from \"@artisan-commerce/types\";\nimport { IssueAdditionalInfo, IssueHistory } from \"@artisan-commerce/types\";\nimport { WebhookWorkflow, TransitionWorkflow } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genDate, genId } from \"./common.builder\";\nimport { genName, genURL, genNumber, genWords } from \"./common.builder\";\nimport { genBiasBoolean, genCompanyName } from \"./common.builder\";\n\n/**\n * All values of StepCategory.\n *\n * @since 0.1.0\n */\nexport const stepCategory: StepCategory[] = [\n \"DONE\",\n \"IN_PROGRESS\",\n \"PAYMENT_IN_PROGRESS\",\n \"TO_DO\"\n];\n\n/**\n * All values of StepCode.\n *\n * @since 0.1.0\n */\nexport const stepCode: StepCode[] = [\n \"START\",\n \"IN_PROGRESS\",\n \"ORDERED\",\n \"RECEIVED\",\n \"TO_ASSIGN\",\n \"ASSIGNED\",\n \"ON_ROUTE\",\n \"DISPATCHED\",\n \"CANCELED\",\n \"ERROR\"\n];\n\n/**\n * Generates Issue object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Issue>} overrides Properties to override\n * a {@link Issue}\n * @returns {Issue} A {@link Issue} object\n */\nexport const buildIssue = (overrides: Partial<Issue> = {}): Issue => {\n return {\n conditions: [],\n children: [],\n related: [],\n step: buildStepWorkflow(),\n account_id: genId(),\n additional_info: buildIssueAdditionalInfo(),\n client_issue_id: genId(),\n transaction_id: genId(),\n history: genIssueHistory(),\n id: genId(),\n parent_issue_id: null,\n related_issue_id: null,\n step_id: genId(),\n vendor_id: genId(),\n workflow_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Issue objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Issue[]} An array of Issue objects,\n * see {@link Issue}\n */\nexport const genIssues = (quantity?: number): Issue[] => {\n return genItems(buildIssue, quantity);\n};\n\n/**\n * Generates IssueAdditionalInfo object with random data.\n *\n * @since 0.5.15\n * @param {Partial<IssueAdditionalInfo>} overrides Properties to override\n * a {@link IssueAdditionalInfo}\n * @returns {IssueAdditionalInfo} A {@link IssueAdditionalInfo} object\n */\nexport const buildIssueAdditionalInfo = (\n overrides: Partial<IssueAdditionalInfo> = {}\n): IssueAdditionalInfo => {\n return {\n stores: [\n genNumber(200),\n genNumber(200),\n genNumber(200),\n genNumber(200),\n genNumber(200)\n ],\n uid: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of IssueAdditionalInfo objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {IssueAdditionalInfo[]} An array of IssueAdditionalInfo objects,\n * see {@link IssueAdditionalInfo}\n */\nexport const genIssueAdditionalInfo = (\n quantity?: number\n): IssueAdditionalInfo[] => {\n return genItems(buildIssueAdditionalInfo, quantity);\n};\n\n/**\n * Generates IssueHistory object with random data.\n *\n * @since 0.5.15\n * @param {Partial<IssueHistory>} overrides Properties to override\n * a {@link IssueHistory}\n * @returns {IssueHistory} A {@link IssueHistory} object\n */\nexport const buildIssueHistory = (\n overrides: Partial<IssueHistory> = {}\n): IssueHistory => {\n return {\n conditions: [],\n created_at: genDate(),\n finished_at: genDate(),\n additional_info: buildIssueAdditionalInfo(),\n id: genId(),\n step_id: genId(),\n step_name: genWords(2),\n transition_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of IssueHistory objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {IssueHistory[]} An array of IssueHistory objects,\n * see {@link IssueHistory}\n */\nexport const genIssueHistory = (quantity?: number): IssueHistory[] => {\n return genItems(buildIssueHistory, quantity);\n};\n\n/**\n * Generates Workflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Workflow>} overrides Properties to override\n * a {@link Workflow}\n * @returns {Workflow} A {@link Workflow} object\n */\nexport const buildWorkflow = (overrides: Partial<Workflow> = {}): Workflow => {\n return {\n description: genWords(7),\n id: genId(),\n name: genCompanyName(),\n steps: genStepWorkflows(),\n webhooks: genWebhookWorkflows(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Workflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Workflow[]} An array of Workflow objects, see {@link Workflow}\n */\nexport const genWorkflows = (quantity?: number): Workflow[] => {\n return genItems(buildWorkflow, quantity);\n};\n\n/**\n * Generates StepNotification object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepNotification>} overrides Properties to override\n * a {@link StepNotification}\n * @returns {StepNotification} A {@link StepNotification} object\n */\nexport const buildStepNotification = (\n overrides: Partial<StepNotification> = {}\n): StepNotification => {\n return {\n send_mail: genBiasBoolean(0.6),\n send_push: genBiasBoolean(0.4),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepNotification objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepNotification[]} An array of StepNotification objects,\n * see {@link StepNotification}\n */\nexport const genStepNotifications = (quantity?: number): StepNotification[] => {\n return genItems(buildStepNotification, quantity);\n};\n\n/**\n * Generates StepWorkflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepWorkflow>} overrides Properties to override\n * a {@link StepWorkflow}\n * @returns {StepWorkflow} A {@link StepWorkflow} object\n */\nexport const buildStepWorkflow = (\n overrides: Partial<StepWorkflow> = {}\n): StepWorkflow => {\n return {\n additional_info: buildStepWorkflowAdditionalInfo(),\n category: chooseRandom(stepCategory),\n code: chooseRandom(stepCode),\n color: chooseRandom([\"#FFFFFF\", \"#000000\"]),\n id: genId(),\n description: genWords(10),\n description_frontend: genWords(5),\n name: genCompanyName(),\n subtitle_frontend: genWords(5),\n title_frontend: genWords(3),\n transitions: genTransitionWorkflows(),\n notification: buildStepNotification(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepWorkflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepWorkflow[]} An array of StepWorkflow objects,\n * see {@link StepWorkflow}\n */\nexport const genStepWorkflows = (quantity?: number): StepWorkflow[] => {\n return genItems(buildStepWorkflow, quantity);\n};\n\n/**\n * Generates WebhookWorkflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<WebhookWorkflow>} overrides Properties to override\n * a {@link WebhookWorkflow}\n * @returns {WebhookWorkflow} A {@link WebhookWorkflow} object\n */\nexport const buildWebhookWorkflow = (\n overrides: Partial<WebhookWorkflow> = {}\n): WebhookWorkflow => {\n const methods: ArtisnRequestMethod[] = [\n \"DELETE\",\n \"GET\",\n \"POST\",\n \"PATCH\",\n \"PUT\"\n ];\n\n return {\n id: genId(),\n method: chooseRandom(methods),\n url: genURL(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of WebhookWorkflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {WebhookWorkflow[]} An array of WebhookWorkflow objects,\n * see {@link WebhookWorkflow}\n */\nexport const genWebhookWorkflows = (quantity?: number): WebhookWorkflow[] => {\n return genItems(buildWebhookWorkflow, quantity);\n};\n\n/**\n * Generates StepWorkflowAdditionalInfo object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepWorkflowAdditionalInfo>} overrides Properties to\n * override a {@link StepWorkflowAdditionalInfo}\n * @returns {StepWorkflowAdditionalInfo} A\n * {@link StepWorkflowAdditionalInfo} object\n */\nexport const buildStepWorkflowAdditionalInfo = (\n overrides: Partial<StepWorkflowAdditionalInfo> = {}\n): StepWorkflowAdditionalInfo => {\n return {\n client_frontend: genBiasBoolean(0.6),\n operators_frontend: genBiasBoolean(0.4),\n group: buildStepWorkflowGroup(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepWorkflowAdditionalInfo objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepWorkflowAdditionalInfo[]} An array of\n * StepWorkflowAdditionalInfo objects, see {@link StepWorkflowAdditionalInfo}\n */\nexport const genStepWorkflowAdditionalInfos = (\n quantity?: number\n): StepWorkflowAdditionalInfo[] => {\n return genItems(buildStepWorkflowAdditionalInfo, quantity);\n};\n\n/**\n * Generates StepWorkflowGroup object with random data.\n *\n * @since 0.5.15\n * @param {Partial<StepWorkflowGroup>} overrides Properties to override\n * a {@link StepWorkflowGroup}\n * @returns {StepWorkflowGroup} A {@link StepWorkflowGroup} object\n */\nexport const buildStepWorkflowGroup = (\n overrides: Partial<StepWorkflowGroup> = {}\n): StepWorkflowGroup => {\n const stepCode: StepCode[] = [\n \"START\",\n \"IN_PROGRESS\",\n \"ORDERED\",\n \"RECEIVED\",\n \"TO_ASSIGN\",\n \"ASSIGNED\",\n \"ON_ROUTE\",\n \"DISPATCHED\",\n \"CANCELED\",\n \"ERROR\"\n ];\n\n return {\n code: chooseRandom(stepCode),\n description: genWords(6),\n type: \"default\",\n weight: genNumber(10000).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StepWorkflowGroup objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {StepWorkflowGroup[]} An array of StepWorkflowGroup objects,\n * see {@link StepWorkflowGroup}\n */\nexport const genStepWorkflowGroups = (\n quantity?: number\n): StepWorkflowGroup[] => {\n return genItems(buildStepWorkflowGroup, quantity);\n};\n\n/**\n * Generates TransitionWorkflow object with random data.\n *\n * @since 0.5.15\n * @param {Partial<TransitionWorkflow>} overrides Properties to override\n * a {@link TransitionWorkflow}\n * @returns {TransitionWorkflow} A {@link TransitionWorkflow} object\n */\nexport const buildTransitionWorkflow = (\n overrides: Partial<TransitionWorkflow> = {}\n): TransitionWorkflow => {\n return {\n channel_id: genId(),\n conditions: [],\n description: genWords(10),\n from_step_id: genId(),\n to_step_id: genId(),\n id: genId(),\n name: genName(),\n vendor_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of TransitionWorkflow objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {TransitionWorkflow[]} An array of TransitionWorkflow objects,\n * see {@link TransitionWorkflow}\n */\nexport const genTransitionWorkflows = (\n quantity?: number\n): TransitionWorkflow[] => {\n return genItems(buildTransitionWorkflow, quantity);\n};\n","import { MasivoCondition, MasivoEffect } from \"@artisan-commerce/types\";\nimport { CouponCampaignAttributes, CodeFormat } from \"@artisan-commerce/types\";\nimport { MasivoConditionBase, WalletAttribute } from \"@artisan-commerce/types\";\nimport { WalletMedia, WalletReward, MasivoTier } from \"@artisan-commerce/types\";\nimport { ExtendedLoyaltyInfo, CodesSummary } from \"@artisan-commerce/types\";\nimport { RedeemableBenefit } from \"@artisan-commerce/types\";\nimport { MasivoCustomerMetrics } from \"@artisan-commerce/types\";\nimport { MasivoWallet, MetricPeriod } from \"@artisan-commerce/types\";\nimport { MasivoCustomer, MasivoInfo } from \"@artisan-commerce/types\";\nimport { WalletTotal, WalletLine } from \"@artisan-commerce/types\";\nimport { MasivoCampaign, MasivoCampaignRule } from \"@artisan-commerce/types\";\nimport { LoyaltyAccumulation } from \"@artisan-commerce/types\";\n\nimport { genBiasBoolean } from \"./common.builder\";\nimport { genNumericId, genNumber, genId, genWord } from \"./common.builder\";\nimport { genDate, genParagraph, genURL, chooseRandom } from \"./common.builder\";\n\nexport const buildMasivoCustomer = (\n overrides?: MasivoCustomer\n): MasivoCustomer => {\n return {\n name: genWord(),\n tier_id: \"eac25bef-c6de-4906-8d99-014b5950132f\",\n email: `${genWord()}@${genWord()}.com`,\n gender: chooseRandom([\"MALE\", \"FEMALE\", \"NOT_SPECIFIED\"]),\n id: `${genNumericId()}`,\n metadata: {},\n registration_date: \"2024-11-15T00:00:00+00:00\",\n status: \"ACTIVE\",\n dob: \"2010-11-15T00:00:00+00:00\",\n metrics: buildCustomerMetrics(),\n ...overrides\n };\n};\n\nexport const buildCustomerMetrics = (\n overrides?: MasivoCustomerMetrics\n): MasivoCustomerMetrics => {\n return {\n last_month: buildMetrics(),\n last_quarter: buildMetrics(),\n last_year: buildMetrics(),\n last_semester: buildMetrics(),\n this_month: buildMetrics(),\n this_quarter: buildMetrics(),\n this_semester: buildMetrics(),\n this_year: buildMetrics(),\n lifetime: buildMetrics(),\n ...overrides\n };\n};\n\nexport const buildMetrics = (overrides?: MetricPeriod): MetricPeriod => {\n return {\n from: genDate().toString(),\n to: genDate().toString(),\n last_visit: null,\n number_of_purchases: genNumber(),\n spend_total: genNumber(),\n tier_id: genId(),\n ...overrides\n };\n};\n\nexport const buildMasivoWallet = (overrides?: MasivoWallet): MasivoWallet => {\n return {\n id: `${genNumericId()}`,\n owner_id: `${genNumericId()}`,\n totals: [buildWalletTotal(), buildWalletTotal()],\n lines: [buildWalletLine(), buildWalletLine()],\n ...overrides\n };\n};\n\nexport const buildMasivoInfo = (\n override?: MasivoInfo,\n customerOverrides?: MasivoCustomer,\n walletOverrides?: MasivoWallet\n): MasivoInfo => {\n return {\n customer: buildMasivoCustomer(customerOverrides),\n wallet: buildMasivoWallet(walletOverrides),\n ...override\n };\n};\n\nexport const buildWalletMedia = (overrides?: WalletMedia): WalletMedia => {\n return {\n thumbnail_url: genURL(),\n cover_url: genURL(),\n ...overrides\n };\n};\n\nexport const buildWalletAttribute = (\n overrides?: WalletAttribute\n): WalletAttribute => {\n return {\n conversion_factor: genNumber(1),\n action: chooseRandom([\"ADD_PRODUCT\", \"REPLACE_PRODUCT\"]),\n discount_type: chooseRandom([\"fixed\", \"percentage\"]),\n discount_value: genNumber(10),\n new_amount: genNumber(20),\n replace_amount: genNumber(20),\n replace_product_id: genId(),\n new_product_id: genId(),\n item_id: genId(),\n type: chooseRandom([\"order\", \"shipping\", \"product\"]),\n ...overrides\n };\n};\n\nexport const buildMasivoConditionBase = (\n overrides?: MasivoConditionBase\n): MasivoConditionBase => {\n return {\n invalidMessage: genWord(4),\n primitive: chooseRandom([\"int\", \"char\", \"bool\"]),\n type: chooseRandom([\n \"Current date\",\n \"Registration\",\n \"Birthday\",\n \"Customer number of purchases\",\n \"Customer has made a purchase\",\n \"Customer points balance\",\n \"Customer spend total\",\n \"Customer total spend\",\n \"Ordered at store\",\n \"Ordered in channel\",\n \"Payment method\",\n \"Order includes product\",\n \"Order value\",\n \"Order includes tag\",\n \"Product includes tag\",\n \"Shipping includes tag\"\n ]),\n operator: chooseRandom([\n \"greater than\",\n \"greater than or equal to\",\n \"less than\",\n \"less than or equal to\",\n \"equal to\",\n \"not equal to\",\n \"is\",\n \"is not\",\n \"falls within period\",\n \"occurred\",\n \"occurred in the last\",\n \"occurred more than\"\n ]),\n ...overrides\n };\n};\n\nexport const buildMasivoCondition = (\n overrides?: MasivoCondition\n): MasivoCondition => {\n return {\n ...buildMasivoConditionBase(),\n value: genWord(4),\n reward_id: genId(),\n allDay: genBiasBoolean(0.2),\n startDate: genDate().toString(),\n endDate: genDate().toString(),\n repeat: chooseRandom([\n \"NONE\",\n \"DAILY\",\n \"WEEKLY\",\n \"FORTNIGHTLY\",\n \"MONTHLY\",\n \"WEEK_OF_MONTH\"\n ]),\n reporting_period: chooseRandom([\n \"MONTHLY\",\n \"QUARTERLY\",\n \"YEARLY\",\n \"SEMESTERLY\"\n ]),\n ...overrides\n };\n};\n\nexport const buildWalletReward = (overrides?: WalletReward): WalletReward => {\n return {\n id: genId(),\n name: genWord(4),\n description: genWord(12),\n conditions: [],\n media: buildWalletMedia(),\n type: chooseRandom([\"DISCOUNT\", \"POINTS\", \"GIFT_CARD\", \"PRODUCT\"]),\n status: \"ACTIVE\",\n brand_id: null,\n attributes: buildWalletAttribute({\n conversion_factor: 0.025\n }),\n ...overrides\n };\n};\n\nexport const buildWalletTotal = (overrides?: WalletTotal): WalletTotal => {\n return {\n reward_id: genId(),\n reward: buildWalletReward(),\n total: genNumber(200),\n expiration_date: genDate().toString(),\n ...overrides\n };\n};\n\nexport const buildWalletLine = (overrides?: WalletLine): WalletLine => {\n return {\n brand_id: genId(),\n reward_id: genId(),\n campaign_id: genId(),\n expiration_date: genDate().toString(),\n issued_at: genDate().toString(),\n reservation_expires_at: genDate().toString(),\n amount: genNumber(200),\n reward: buildWalletReward(),\n ...overrides\n };\n};\n\nexport const buildRedeemableBenefit = (\n overrides?: RedeemableBenefit\n): RedeemableBenefit => {\n return {\n brand_id: genId(),\n campaign_id: genId(),\n issued_at: genDate().toString(),\n amount: genNumber(200),\n alerts: [],\n ...buildWalletTotal(),\n ...overrides\n };\n};\n\nexport const buildLoyaltyAccumulation = (\n override?: LoyaltyAccumulation\n): LoyaltyAccumulation => {\n if (override) return override;\n const [line] = [buildWalletLine()];\n const [total] = [buildWalletTotal()];\n const { reward } = total;\n return { ...line, reward };\n};\n\nexport const buildMasivoTier = (overrides?: MasivoTier): MasivoTier => {\n return {\n id: genId(),\n name: `${genWord()} ${genWord()}`,\n status: \"ACTIVE\",\n level: genNumber(12),\n description: genParagraph(1),\n entry_conditions: [[buildMasivoCondition()]],\n exit_conditions: [[buildMasivoCondition()]],\n template_id: genId(),\n ...overrides\n };\n};\n\nexport const buildExtendedLoyaltyInfo = (\n overrides?: ExtendedLoyaltyInfo\n): ExtendedLoyaltyInfo => {\n return {\n ...buildMasivoInfo(),\n accumulations: [buildLoyaltyAccumulation()],\n redemptions: [],\n ...overrides\n };\n};\n\nexport const buildCodesSummary = (overrides?: CodesSummary): CodesSummary => {\n return {\n codes: [genWord(1), genWord(1), genWord(1)],\n left: genNumber(70),\n used: genNumber(30),\n total: genNumber(100),\n ...overrides\n };\n};\n\nexport const buildCodeFormat = (overrides?: CodeFormat): CodeFormat => {\n return {\n case_sensitive: genBiasBoolean(0.3),\n exclude_characters: genWord(1),\n include_characters: genWord(1),\n template: genWord(10),\n ...overrides\n };\n};\n\nexport const buildCouponCampaignAttributes = (\n overrides?: CouponCampaignAttributes\n): CouponCampaignAttributes => {\n return {\n code_format: buildCodeFormat(),\n codes_summary: buildCodesSummary(),\n max_redemptions_per_code: genNumber(3),\n max_redemptions_per_code_per_customer: genNumber(5),\n ...overrides\n };\n};\n\nexport const buildLoyaltyCampaign = (\n overrides?: MasivoCampaign\n): MasivoCampaign => {\n return {\n id: genId(),\n name: `${genWord()} ${genWord()}`,\n description: genParagraph(1),\n brand_id: genId(),\n start_date: genDate().toString(),\n end_date: null,\n rules: [buildCampaignRule(), buildCampaignRule()],\n type: chooseRandom([\"COUPONS\", \"BEHAVIOR\"]),\n funded_by: null,\n labels: [chooseRandom([\"Domicilio\", \"Restaurantes\"])],\n budget: genNumber(1000),\n divide_budget_in: chooseRandom([\"daily\", \"weekly\", \"monthly\", \"total\"]),\n content: {\n Title: {\n name: genWord(),\n type: \"input\",\n value: genWord()\n },\n BannerImage: {\n name: genWord(),\n type: \"input\",\n value: genURL()\n }\n },\n template_id: genId(),\n metadata: {},\n attributes: buildCouponCampaignAttributes(),\n status: chooseRandom([\"RUNNING\", \"PAUSED\", \"SCHEDULED\", \"FINISHED\"]),\n ...overrides\n };\n};\n\nexport const buildMasivoEffect = (overrides?: MasivoEffect): MasivoEffect => {\n return {\n amount: genNumber(200),\n type: chooseRandom([\"DISCOUNT\", \"POINTS\", \"GIFT_CARD\", \"PRODUCT\"]),\n reward_id: genId(),\n reward: buildWalletReward(),\n tier_id: genId(),\n expiration_date: genDate().toString(),\n multiplier: chooseRandom([\"Order value\"]),\n ...overrides\n };\n};\n\nexport const buildCampaignRule = (\n overrides?: MasivoCampaignRule\n): MasivoCampaignRule => {\n return { conditions: [], effects: [], ...overrides };\n};\n","// User builders\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, Phone, User } from \"@artisan-commerce/types\";\n\nimport { chooseRandom, genBiasBoolean } from \"./common.builder\";\nimport { genDocument, genDocumentType } from \"./common.builder\";\nimport { genEmail, genNumber } from \"./common.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genId, genName, genCountry, genNumericId } from \"./common.builder\";\nimport { countriesCodes } from \"./country.builder\";\n\n/**\n * Generates User object with random data.\n *\n * @template T User additional info\n * @since 0.1.0\n * @param {Partial<User>} overrides Properties to override a {@link User}\n * @returns {User} A {@link User} object\n */\nexport const buildUser = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<User<T>> = {}\n): User<T> => {\n return {\n idInt: genNumericId(),\n uid: genId(),\n name: genName(),\n lastname: genName(),\n email: genEmail(),\n birthdate: faker.date.past().toISOString().split(\"T\")[0],\n country: genCountry(),\n document: genDocument(10),\n documentType: genDocumentType(),\n active: genBiasBoolean(0.8),\n externalId: genId(),\n gender: chooseRandom([\"MALE\", \"FEMALE\"]),\n vendorId: genId(),\n middleName: genName(),\n secondLastname: genName(),\n origin: chooseRandom([\"ios\", \"android\", \"web\"]),\n phone: buildPhone(),\n maritalStatus: chooseRandom([\"MARRIED\", \"DIVORCED\", \"SINGLE\"]),\n type: \"NORMAL\",\n latestConditionsAcceptanceDate: faker.date.past().toISOString(),\n rewardsProgramStatus: chooseRandom([\"REGISTERED\", \"UNREGISTERED\"]),\n ...overrides\n };\n};\n\n/**\n * Generates a list of User objects with random data.\n *\n * @template T Users additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {User[]} An array of {@link User}s objects\n */\nexport const genUsers = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): User<T>[] => {\n return genItems(buildUser, quantity);\n};\n\n/**\n * Generates Phone object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Phone>} overrides Properties to override a {@link Phone}\n * @returns {Phone} A {@link Phone} object\n */\nexport const buildPhone = (overrides: Partial<Phone> = {}): Phone => {\n return {\n countryCode: chooseRandom([\"+593\", \"+1\"]),\n countryIsoCode: chooseRandom(countriesCodes),\n number: genNumber(9999999999).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Phone objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Phone[]} An array of Phone objects, see {@link Phone}\n */\nexport const genPhones = (quantity?: number): Phone[] => {\n return genItems(buildPhone, quantity);\n};\n","// Vendor builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo, Vendor } from \"@artisan-commerce/types\";\n\nimport { genCDNImages } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genNumber, genWords } from \"./common.builder\";\n\n/**\n * Generates Vendor object with random data.\n *\n * @template T Vendor additional info\n * @since 0.1.0\n * @param {Partial<Vendor>} overrides Properties to override a {@link Vendor}\n * @returns {Vendor} A {@link Vendor} object\n */\nexport const buildVendor = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<Vendor<T>> = {}\n): Vendor<T> => {\n return {\n id: genNumber(999).toString(),\n images: genCDNImages(undefined, { query: \"brand\" }),\n maxPurchaseValue: 0,\n name: faker.company.name(),\n description: genWords(10),\n sponsored: genBiasBoolean(0.5),\n active: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Vendor objects with random data.\n *\n * @template T Vendors additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Vendor[]} An array of {@link Vendor}s objects\n */\nexport const genVendors = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): Vendor<T>[] => {\n return genItems(buildVendor, quantity);\n};\n","// Stores builder\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo } from \"@artisan-commerce/types\";\nimport { Days, Service, Delivery, Schedule } from \"@artisan-commerce/types\";\nimport { Store } from \"@artisan-commerce/types\";\nimport { GenericStoreLocation, StoreLocation } from \"@artisan-commerce/types\";\n\nimport { buildVendor } from \"./vendor.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genWord, genURL } from \"./common.builder\";\nimport { genCDNImages } from \"./image.builder\";\nimport { genCatalogues } from \"./catalogue.builder\";\nimport { genNumber, chooseRandom } from \"./common.builder\";\nimport { genBiasBoolean, genMobilPhone, genId } from \"./common.builder\";\nimport { genSymbol, genCompanyName } from \"./common.builder\";\n\n/**\n * Generates Store object with random data.\n *\n * @template T Store additional info\n * @template U Vendor additional info\n * @template V Catalogues additional info\n * @since 0.1.0\n * @param {Partial<Store>} overrides Properties to override a {@link Store}\n * @returns {Store} A {@link Store} object\n */\nexport const buildStore = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<Store<T, U, V>> = {}\n): Store<T, U, V> => {\n return {\n storeId: genId(),\n storeName: faker.name.jobTitle(),\n address: faker.address.street(),\n vendor: buildVendor<U>(),\n coverage: genBiasBoolean(0.99),\n coverUrl: genURL(),\n delivery: buildDelivery(),\n description: null,\n isOpen: genBiasBoolean(0.99),\n maxOrderAmount: genNumber(50),\n minOrderAmount: genNumber(10),\n orderSymbol: genSymbol(),\n phone: genMobilPhone(\"593\"),\n sponsored: genBiasBoolean(0.1),\n latitude: genNumber({ min: 0, max: 80, precision: 6 }),\n longitude: genNumber({ min: 0, max: 80, precision: 6 }),\n schedules: genSchedules(8),\n timezone: \"\",\n services: genServices(10),\n cookTime: genNumber(60).toString(),\n city: buildGenericStoreLocation(),\n outOfService: genBiasBoolean(0.1),\n isDefault: genBiasBoolean(0.1),\n active: genBiasBoolean(0.9),\n minOrder: genNumber(15),\n minOrderSymbol: genSymbol(),\n country: buildGenericStoreLocation(),\n location: buildStoreLocation(),\n catalogues: genCatalogues(),\n images: genCDNImages(undefined, { query: \"store\" }),\n distance: genNumber(20),\n polygons: null,\n ...overrides\n };\n};\n\n/**\n * Generates Delivery object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Delivery>} overrides Properties to override\n * a {@link Delivery}\n * @returns {Delivery} A {@link Delivery} object\n */\nexport const buildDelivery = (overrides: Partial<Delivery> = {}): Delivery => {\n return {\n deliveryTimeUnit: chooseRandom([\"min\"]),\n deliveryTimeValue: genNumber(60).toString(),\n express: genBiasBoolean(0.1),\n freeDelivery: genBiasBoolean(0.1),\n ...overrides\n };\n};\n\n/**\n * Generates Schedule object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Schedule>} overrides Properties to override\n * a {@link Schedule}\n * @returns {Schedule} A {@link Schedule} object\n */\nexport const buildSchedule = (overrides: Partial<Schedule> = {}): Schedule => {\n const days: Days[] = [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\",\n \"SPECIAL\"\n ];\n return {\n day: chooseRandom(days),\n from: genNumber(36000),\n to: genNumber(77400),\n catalogueId: genNumber(100).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates Service object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Service>} overrides Properties to override a {@link Service}\n * @returns {Service} A {@link Service} object\n */\nexport const buildService = (overrides: Partial<Service> = {}): Service => {\n return {\n name: genWord(),\n active: genBiasBoolean(0.5),\n url: genURL(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Service objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Service[]} An array of {@link Service}s objects\n */\nexport const genServices = (quantity?: number): Service[] => {\n return genItems(buildService, quantity);\n};\n\n/**\n * Generates a list of Schedule objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Schedule[]} An array of {@link Schedule}s objects\n */\nexport const genSchedules = (quantity?: number): Schedule[] => {\n return genItems(buildSchedule, quantity);\n};\n\n/**\n * Generates a list of Store objects with random data.\n *\n * @template T Store additional info\n * @template U Vendor additional info\n * @template V Catalogues additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Store[]} An array of {@link Store}s objects\n */\nexport const genStores = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): Store<T, U, V>[] => {\n return genItems(buildStore, quantity);\n};\n\n/**\n * Generates GenericStoreLocation object with random data.\n *\n * @since 0.1.0\n * @param {Partial<GenericStoreLocation>} overrides Properties to override\n * a {@link GenericStoreLocation}\n * @returns {GenericStoreLocation} A {@link GenericStoreLocation} object\n */\nexport const buildGenericStoreLocation = (\n overrides: Partial<GenericStoreLocation> = {}\n): GenericStoreLocation => {\n return {\n id: genId(),\n name: genCompanyName(),\n active: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of GenericStoreLocation objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {GenericStoreLocation[]} An array of {@link GenericStoreLocation}s\n * objects\n */\nexport const genGenericStoreLocation = (\n quantity?: number\n): GenericStoreLocation[] => {\n return genItems(buildGenericStoreLocation, quantity);\n};\n\n/**\n * Generates StoreLocation object with random data.\n *\n * @since 0.1.0\n * @param {Partial<StoreLocation>} overrides Properties to override\n * a {@link StoreLocation}\n * @returns {StoreLocation} A {@link StoreLocation} object\n */\nexport const buildStoreLocation = (\n overrides: Partial<StoreLocation> = {}\n): StoreLocation => {\n return {\n lat: genNumber(),\n lon: genNumber(),\n geohash: \"6rbpjdx8km6m\",\n fragment: genBiasBoolean(0.8),\n ...overrides\n };\n};\n\n/**\n * Generates a list of StoreLocation objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {StoreLocation[]} An array of {@link StoreLocation}s objects\n */\nexport const genStoreLocation = (quantity?: number): StoreLocation[] => {\n return genItems(buildStoreLocation, quantity);\n};\n","// ShoppingCart builder functions\nimport { AdditionalInfo } from \"@artisan-commerce/types\";\nimport { ShippingCostTax, BenefitTypes } from \"@artisan-commerce/types\";\nimport { BillTotal, BillTotalCategory } from \"@artisan-commerce/types\";\nimport { ShoppingCart, ShippingCost } from \"@artisan-commerce/types\";\nimport { CartStore, Objectify, Discount } from \"@artisan-commerce/types\";\n\nimport { buildStore } from \"./store.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genBiasBoolean, genId } from \"./common.builder\";\nimport { genSymbol, genWord, genNumber } from \"./common.builder\";\n/**\n * Generates BillTotalCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BillTotalCategory>} overrides Properties to override\n * a {@link BillTotalCategory}\n * @returns {BillTotalCategory} A {@link BillTotalCategory} object\n */\nexport const buildBillTotalNormalCategory = (\n overrides: Partial<BillTotalCategory> = {}\n): BillTotalCategory => {\n const subtotalBeforeTaxes = genNumber({ min: 1, max: 10, precision: 2 });\n const taxTotal = subtotalBeforeTaxes * 0.12;\n const total = subtotalBeforeTaxes + taxTotal;\n return {\n subtotalBeforeTaxes,\n taxTotal,\n total,\n discounts: genDiscounts(1),\n taxes: [],\n ...overrides\n };\n};\n\n/**\n * Generates BillTotal object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BillTotal>} overrides Properties to override\n * a {@link BillTotal}\n * @returns {BillTotal} A {@link BillTotal} object\n */\nexport const buildBillTotal = (\n overrides: Partial<BillTotal> = {}\n): BillTotal => {\n return {\n NORMAL: buildBillTotalNormalCategory(),\n POINTS: buildBillTotalNormalCategory(),\n ...overrides\n };\n};\n\n/**\n * Generates CartStore object with random data.\n *\n * @template T Store additional info\n * @template U Product additional info\n * @template V Categories additional info\n * @template W Vendor additional info\n * @template X Catalogues additional info\n * @since 0.1.0\n * @param {Partial<CartStore>} overrides Properties to override\n * a {@link CartStore}\n * @returns {CartStore} A {@link CartStore} object\n */\nexport const buildCartStore = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo,\n W extends AdditionalInfo = AdditionalInfo,\n X extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<CartStore<T, U, V, W, X>> = {}\n): CartStore<T, U, V, W, X> => {\n return {\n ...buildStore<T, W, X>(),\n alerts: [],\n products: {},\n ...overrides\n };\n};\n\n/**\n * Generates a CartStore object where the key is the store id\n * and the value is the cart store object\n *\n * @template T Store additional info\n * @template U Product additional info\n * @template V Categories additional info\n * @template W Vendor additional info\n * @template X Catalogues additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Objectify<CartStore>} An Objectify<{@link CartStore}>\n */\nexport const genCartStores = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo,\n W extends AdditionalInfo = AdditionalInfo,\n X extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): Objectify<CartStore<T, U, V, W, X>> => {\n const num = quantity ?? genNumber({ min: 1, max: 1 });\n\n const cartStores: Objectify<CartStore<T, U, V, W, X>> = {};\n for (let i = 0; i < num; i++) {\n const cartStore = buildCartStore<T, U, V, W, X>();\n const storeIndex = cartStore.storeId;\n cartStores[storeIndex] = cartStore;\n }\n return cartStores;\n};\n\n/**\n * Generates ShoppingCart object with random data.\n *\n * @template T Shopping cart additional info\n * @template U Product additional info\n * @template V Categories additional info\n * @template W Store additional info\n * @template X Vendor additional info\n * @template Y Catalogues additional info\n * @template Z Shipping cost additional info\n * @since 0.1.0\n * @param {Partial<ShoppingCart>} overrides Properties to override\n * a {@link ShoppingCart}\n * @returns {ShoppingCart} A {@link ShoppingCart} object\n */\nexport const buildShoppingCart = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo,\n W extends AdditionalInfo = AdditionalInfo,\n X extends AdditionalInfo = AdditionalInfo,\n Y extends AdditionalInfo = AdditionalInfo,\n Z extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<ShoppingCart<T, U, V, W, X, Y, Z>> = {}\n): ShoppingCart<T, U, V, W, X, Y, Z> => {\n return {\n name: \"default\",\n billTotal: buildBillTotal(),\n channelId: genId(),\n createdAt: new Date().toISOString(),\n latitude: genNumber({ min: -20, max: 20, precision: 8 }),\n longitude: genNumber({ min: -20, max: 20, precision: 8 }),\n id: genNumber(999).toString(),\n updatedAt: new Date().toISOString(),\n stores: genCartStores<W, U, V, X, Y>(),\n shippingCost: buildShippingCost<Z>(),\n ...overrides\n };\n};\n\n/**\n * Generates ShippingCost object with random data.\n *\n * @template T Shipping cost additional info\n * @since 0.1.0\n * @param {Partial<ShippingCost>} overrides Properties to override\n * a {@link ShippingCost}\n * @returns {ShippingCost} A {@link ShippingCost} object\n */\nexport const buildShippingCost = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ShippingCost<T>> = {}\n): ShippingCost<T> => {\n return {\n amount: genNumber(3),\n discountTotal: genNumber(100),\n discounts: [],\n grossPrice: genNumber(100),\n name: genWord(),\n netPrice: genNumber(100),\n productId: genId(),\n subtotalBeforeTaxes: genNumber(100),\n symbol: genSymbol(),\n taxTotal: genNumber(100),\n taxes: genShippingCostTaxes(),\n total: genNumber(100),\n discountNetPrice: genNumber(100),\n ...overrides\n };\n};\n\n/**\n * Generates ShippingCostTax object with random data.\n *\n * @since 0.1.0\n * @param {Partial<ShippingCostTax>} overrides Properties to override\n * a {@link ShippingCostTax}\n * @returns {ShippingCostTax} A {@link ShippingCostTax} object\n */\nexport const buildShippingCostTax = (\n overrides: Partial<ShippingCostTax> = {}\n): ShippingCostTax => {\n return {\n percentage: genNumber(100),\n name: genWord(),\n vatRateCode: genNumber(100),\n code: genNumber(100),\n vatRate: genWord(),\n taxBase: genNumber(100),\n value: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ShippingCostTax objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ShippingCostTax[]} An array of shipping cost taxes objects,\n * see {@link ShippingCostTax}\n */\nexport const genShippingCostTaxes = (quantity?: number): ShippingCostTax[] => {\n return genItems(buildShippingCostTax, quantity);\n};\n\n/**\n * Generates Discount object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Discount>} overrides Properties to override\n * a {@link Discount}\n * @returns {Discount} A {@link Discount} object\n */\nexport const buildDiscount = (overrides: Partial<Discount> = {}): Discount => {\n const benefitTypes: BenefitTypes[] = [\n \"ALTER_DELIVERY\",\n \"DISCOUNT_FIXED\",\n \"DISCOUNT_PERCENTAGE\",\n \"PRODUCT\"\n ];\n const type = chooseRandom(benefitTypes);\n return {\n benefitId: genId(),\n benefitWalletId: genId(),\n discountBase: genNumber(100),\n hasTaxes: genBiasBoolean(0.5),\n isInitialized: genBiasBoolean(0.5),\n name: genWord(),\n percentage: genNumber(100),\n taxValue: genNumber(100),\n type,\n value: genNumber(100),\n ...overrides\n };\n};\n\nexport const genDiscounts = (quantity?: number): Discount[] => {\n return genItems(buildDiscount, quantity);\n};\n","// Shipping address builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { Field, AdditionalInfo } from \"@artisan-commerce/types\";\nimport { ShippingAddress, LivingPlace } from \"@artisan-commerce/types\";\nimport { Rule, Message } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genWord, genNumber, genName, genId } from \"./common.builder\";\nimport { genAddress, getBoolean, genCountry, genDate } from \"./common.builder\";\nimport { genBiasBoolean } from \"./common.builder\";\n\n/**\n * Generates a random street name.\n *\n * @since 0.1.0\n */\nexport const genStreetName = (\n ...params: Parameters<typeof faker.address.street>\n) => faker.address.street(...params);\n\n/**\n * Generates a random street number.\n *\n * @since 0.1.0\n */\nexport const genStreetNumber = (\n ...params: Parameters<typeof faker.address.zipCode>\n) => faker.address.zipCode(...params);\n\n/**\n * Generates a random latitude.\n *\n * @since 0.1.0\n */\nexport const genLatitude = (\n ...params: Parameters<typeof faker.address.latitude>\n) => faker.address.latitude(...params);\n\n/**\n * Generates a random longitude.\n *\n * @since 0.1.0\n */\nexport const genLongitude = (\n ...params: Parameters<typeof faker.address.longitude>\n) => faker.address.longitude(...params);\n\n/**\n * Generates Field object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Field>} overrides Properties to override a {@link Field}\n * @returns {Field} A {@link Field} object\n */\nexport const buildField = (overrides: Partial<Field> = {}): Field => {\n return {\n id: genWord(),\n value: genWord(),\n label: genWord(),\n rules: buildRule(),\n messages: buildMessage(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Field objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Field[]} A list of {@link Field} objects\n */\nexport const genFields = (quantity?: number): Field[] => {\n return genItems(buildField, quantity);\n};\n\n/**\n * Generates Rule object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Rule>} overrides Properties to override a {@link Rule}\n * @returns {Rule} A {@link Rule} object\n */\nexport const buildRule = (overrides?: Partial<Rule>): Rule => {\n return {\n max: genNumber(),\n min: genNumber(),\n ...overrides\n };\n};\n\n/**\n * Generates Message object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Message>} overrides Properties to override a {@link Message}\n * @returns {Message} A {@link Message} object\n */\nexport const buildMessage = (overrides?: Partial<Message>): Message => {\n return {\n max: genWord(),\n min: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Rules objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Rule[]} A list of {@link Rule} objects\n */\nexport const genRules = (quantity?: number): Rule[] => {\n return genItems(buildRule, quantity);\n};\n\n/**\n * Generates a list of Messages objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Message[]} A list of {@link Message} objects\n */\nexport const genMessages = (quantity?: number): Message[] => {\n return genItems(buildMessage, quantity);\n};\n\n/**\n * Generates LivingPlace object with random data.\n *\n * @since 0.1.0\n * @param {Partial<LivingPlace>} overrides Properties to override\n * a {@link LivingPlace}\n * @returns {LivingPlace} A {@link LivingPlace} object\n */\nexport const buildLivingPlace = (\n overrides: Partial<LivingPlace> = {}\n): LivingPlace => {\n return {\n id: genId(),\n fields: genFields(2),\n name: genWord(),\n active: 1,\n countryId: \"1\",\n ...overrides\n };\n};\n\n/**\n * Generates a list of LivingPlaces objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {LivingPlace[]} A list of {@link LivingPlace} objects\n */\nexport const genLivingPlaces = (quantity?: number): LivingPlace[] => {\n return genItems(buildLivingPlace, quantity);\n};\n\n/**\n * Generates ShippingAddress object with random data.\n *\n * @template T Shipping address additional info\n * @since 0.1.0\n * @param {Partial<ShippingAddress>} overrides Properties to override\n * a {@link ShippingAddress}\n * @returns {ShippingAddress} A {@link ShippingAddress} object\n */\nexport const buildShippingAddress = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<ShippingAddress<T>> = {}\n): ShippingAddress<T> => {\n return {\n id: genId(),\n default: getBoolean(),\n mainStreet: genStreetName(),\n number: genStreetNumber(),\n secondaryStreet: genStreetName(),\n reference: genAddress(),\n lat: +genLatitude(),\n lng: +genLongitude(),\n country: genCountry(),\n livingPlace: buildLivingPlace(),\n updatedAt: genBiasBoolean(0.4) ? genDate() : undefined,\n createdAt: genDate(),\n numberContactAddress: genNumber().toString(),\n nickname: genName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ShippingAddresses objects with random data.\n *\n * @template T Shipping addresses additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ShippingAddress[]} A list of {@link ShippingAddress} objects\n */\nexport const genShippingAddress = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): ShippingAddress<T>[] => {\n return genItems(buildShippingAddress, quantity);\n};\n","// Settings builder functions\n\nimport { Settings, UserSettings } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genId } from \"./common.builder\";\n\n/**\n * Generates Settings object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Settings>} overrides Properties to override\n * a {@link Settings}\n * @returns {Settings} A {@link Settings} object\n */\nexport const buildSettings = (overrides: Partial<Settings> = {}): Settings => {\n return {\n emailNotifications: genBiasBoolean(0.5),\n pushNotifications: genBiasBoolean(0.4),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Settings objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Settings[]} An array of Settings objects,\n * see {@link Settings}\n */\nexport const genSettings = (quantity?: number): Settings[] => {\n return genItems(buildSettings, quantity);\n};\n\n/**\n * Generates UserSettings object with random data.\n *\n * @since 0.5.15\n * @param {Partial<UserSettings>} overrides Properties to override\n * a {@link UserSettings}\n * @returns {UserSettings} A {@link UserSettings} object\n */\nexport const buildUserSettings = (\n overrides: Partial<UserSettings> = {}\n): UserSettings => {\n return {\n uid: genId(),\n settings: buildSettings(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of UserSettings objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {UserSettings[]} An array of UserSettings objects,\n * see {@link UserSettings}\n */\nexport const genUserSettings = (quantity?: number): UserSettings[] => {\n return genItems(buildUserSettings, quantity);\n};\n","// Order builder functions\nimport { faker } from \"@faker-js/faker\";\nimport { AdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderBillTotal, OrderProductBillTotal } from \"@artisan-commerce/types\";\nimport { OrderBillProduct } from \"@artisan-commerce/types\";\nimport { OrderStoreDelivery } from \"@artisan-commerce/types\";\nimport { OrderProduct, OrderStore } from \"@artisan-commerce/types\";\nimport { PaymentMethodByOrder } from \"@artisan-commerce/types\";\nimport { OrderRetry, Suborder, ZipCodeField } from \"@artisan-commerce/types\";\nimport { OperatorInformation } from \"@artisan-commerce/types\";\nimport { OrderRetryPaymentMethod } from \"@artisan-commerce/types\";\nimport { MetadataShipping, OrderUser } from \"@artisan-commerce/types\";\nimport { InjectionDetail, IntegrationMessage } from \"@artisan-commerce/types\";\nimport { Allocation, BaseField, Status } from \"@artisan-commerce/types\";\nimport { BaseOrder, OrderDetails } from \"@artisan-commerce/types\";\nimport { OrderStep, OrderShoppingCart } from \"@artisan-commerce/types\";\nimport { OrderPaymentMethod, OrderStatus } from \"@artisan-commerce/types\";\nimport { PaymentStatus } from \"@artisan-commerce/types\";\nimport { OrderDetailShippingCost } from \"@artisan-commerce/types\";\nimport { OrderStepAdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderStepAdditionalInfoGroup } from \"@artisan-commerce/types\";\nimport { OrderProductAdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderProductAttributes } from \"@artisan-commerce/types\";\nimport { OrderBillProductAdditionalInfo } from \"@artisan-commerce/types\";\nimport { OrderProductPriceCategory } from \"@artisan-commerce/types\";\nimport { TaxCalculations, TaxCalculation } from \"@artisan-commerce/types\";\nimport { OrderProductImage } from \"@artisan-commerce/types\";\nimport { OrderStoreAdditionalInfo } from \"@artisan-commerce/types\";\n\nimport { buildUser } from \"./user.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { buildBillingData } from \"./billingData.builder\";\nimport { buildBillTotalNormalCategory } from \"./shoppingCart.builder\";\nimport { buildShoppingCart } from \"./shoppingCart.builder\";\nimport { stepCategory, stepCode } from \"./fulfillment.builder\";\nimport { buildShippingAddress } from \"./shippingAddress.builder\";\nimport { genIP } from \"./common.builder\";\nimport { genBiasBoolean, genMobilPhone, genSymbol } from \"./common.builder\";\nimport { chooseRandom, genWord, genWords, genURL } from \"./common.builder\";\nimport { genLatitude, genLongitude } from \"./shippingAddress.builder\";\nimport { genCompanyName, genDate, genId, genNumber } from \"./common.builder\";\nimport { genDocument, genEmail, genName, genNumericId } from \"./common.builder\";\nimport { genCartProductQuestions } from \"./product.builder\";\nimport { buildSettings } from \"./settings.builder\";\nimport { buildURLImage } from \"./image.builder\";\nimport { genSchedules } from \"./store.builder\";\n\n/**\n * All values of OrderStatus.\n *\n * @since 0.1.0\n */\nexport const orderStatusOptions: OrderStatus[] = [\n \"APPROVED\",\n \"PENDING\",\n \"REJECTED\"\n];\n\n/**\n * All values of PaymentStatus.\n *\n * @since 0.5.4\n */\nexport const paymentStatus: PaymentStatus[] = [\n \"CANCELED\",\n \"PAID\",\n \"PENDING\",\n \"REFUNDED\"\n];\n\n/**\n * All values of Allocation.\n *\n * @since 0.1.0\n */\nexport const allocationOptions: Allocation[] = [\n \"PICKUP_TO_GO\",\n \"PICKUP_IN_PLACE\",\n \"DELIVERY\"\n];\n\n/**\n * Generate a sequence identifier with random numbers.\n *\n * @since 0.1.0\n */\nexport const genSeqId = () => {\n const randomNumber = genNumber({\n min: 111111,\n max: 999999\n });\n\n return `0000${randomNumber}-${randomNumber}`;\n};\n\n/**\n * Generate a order reference with random data.\n *\n * @since 0.1.0\n */\nexport const genReference = () => {\n return `${genSeqId()}.00${genNumber(10)}`;\n};\n\n/**\n * Generates BaseOrder object with random data.\n *\n * @template T Order additional info\n * @template U Shopping cart additional info\n * @template V User additional info\n * @since 0.1.0\n * @param {Partial<BaseOrder>} overrides Properties to override\n * a {@link BaseOrder}\n * @returns {BaseOrder} A {@link BaseOrder} object\n */\nexport const buildBaseOrder = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<BaseOrder<T, U, V>> = {}\n): BaseOrder<T, U, V> => {\n const allocation = chooseRandom(allocationOptions);\n const date = allocation !== \"DELIVERY\" ? genDate() : null;\n const category = chooseRandom(stepCategory);\n const code = chooseRandom(stepCode);\n const id = genId();\n const name = genWord();\n\n return {\n additionalMessage: genWords(3),\n allocation,\n channelId: genId(),\n id: genId(),\n orderDate: genDate(),\n orderTime: genDate(),\n pickupDate: date,\n pickupTime: date,\n seq_id: genSeqId(),\n shoppingCart: buildOrderShoppingCart(),\n step: buildOrderStep({ category, code, id, name }),\n stepCategory: category,\n stepCode: code,\n stepId: id,\n stepName: name,\n transactionId: genId(),\n vendorId: genId(),\n accountId: genId(),\n uid: genId(),\n hash: genId(),\n pickupCooktime: null,\n channelName: genCompanyName(),\n issueId: genId(),\n billingDataByUserId: genId(),\n comment: genWords(5),\n shippingAddressByUserId: genId(),\n user: buildOrderUser(),\n createdByOperator: buildOperatorInformation(),\n vendorName: genCompanyName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BaseOrder objects with random data.\n *\n * @template T Orders additional info\n * @template U Shopping carts additional info\n * @template V Users additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BaseOrder[]} An array of BaseOrder objects,\n * see {@link BaseOrder}\n */\nexport const genBaseOrders = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): BaseOrder<T, U, V>[] => {\n return genItems(buildBaseOrder, quantity);\n};\n\n/**\n * Generates OrderDetails object with random data.\n *\n * @template T Order additional info\n * @template U Shopping cart additional info\n * @template V User additional info\n * @since 0.1.0\n * @param {Partial<OrderDetails>} overrides Properties to override\n * a {@link OrderDetails}\n * @returns {OrderDetails} A {@link OrderDetails} object\n */\nexport const buildOrderDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<OrderDetails<T, U, V>> = {}\n): OrderDetails<T, U, V> => {\n return {\n ...buildBaseOrder(),\n billingData: buildBillingData(),\n shippingAddress: buildShippingAddress(),\n shippingCost: buildOrderDetailShippingCost(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderDetails objects with random data.\n *\n * @template T Orders additional info\n * @template U Shopping carts additional info\n * @template V Users additional info\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderDetails[]} An array of OrderDetails objects,\n * see {@link OrderDetails}\n */\nexport const genOrderDetails = <\n T extends AdditionalInfo = AdditionalInfo,\n U extends AdditionalInfo = AdditionalInfo,\n V extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): OrderDetails<T, U, V>[] => {\n return genItems(buildOrderDetails, quantity);\n};\n\n/**\n * Generates OrderStep object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStep>} overrides Properties to override\n * a {@link OrderStep}\n * @returns {OrderStep} A {@link OrderStep} object\n */\nexport const buildOrderStep = (\n overrides: Partial<OrderStep> = {}\n): OrderStep => {\n return {\n description_frontend: genWords(6),\n subtitle_frontend: genWords(5),\n category: genWord(),\n code: genWord(),\n color: chooseRandom([\"#FFFFFF\", \"#000000\"]),\n description: genWords(6),\n id: genId(),\n name: genWord(),\n additional_info: buildOrderStepAdditionalInfo(),\n title_frontend: genWords(3),\n ...overrides\n };\n};\n\n/**\n * Generates OrderStepAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStepAdditionalInfo>} overrides Properties to override\n * a {@link OrderStepAdditionalInfo}\n * @returns {OrderStepAdditionalInfo} A\n * {@link OrderStepAdditionalInfo} object\n */\nexport const buildOrderStepAdditionalInfo = (\n overrides: Partial<OrderStepAdditionalInfo> = {}\n): OrderStepAdditionalInfo => {\n return {\n client_frontend: genBiasBoolean(0.5),\n client_frontend_error: genBiasBoolean(0.7),\n group: buildOrderStepAdditionalInfoGroup(),\n operators_frontend: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStepAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStepAdditionalInfo[]} An array of\n * OrderStepAdditionalInfo objects,\n * see {@link OrderStepAdditionalInfo}\n */\nexport const genOrderStepAdditionalInfos = (\n quantity?: number\n): OrderStepAdditionalInfo[] => {\n return genItems(buildOrderStepAdditionalInfo, quantity);\n};\n\n/**\n * Generates OrderStepAdditionalInfoGroup object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStepAdditionalInfoGroup>} overrides Properties\n * to override a {@link OrderStepAdditionalInfoGroup}\n * @returns {OrderStepAdditionalInfoGroup} A\n * {@link OrderStepAdditionalInfoGroup} object\n */\nexport const buildOrderStepAdditionalInfoGroup = (\n overrides: Partial<OrderStepAdditionalInfoGroup> = {}\n): OrderStepAdditionalInfoGroup => {\n return {\n code: genWord(),\n description: genWords(5),\n type: genWord(),\n weight: genNumber(10).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStep objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStep[]} An array of OrderStep objects,\n * see {@link OrderStep}\n */\nexport const genOrderSteps = (quantity?: number): OrderStep[] => {\n return genItems(buildOrderStep, quantity);\n};\n\n/**\n * Generates OrderDetailShippingCost object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderDetailShippingCost>} overrides Properties to override\n * a {@link OrderDetailShippingCost}\n * @returns {OrderDetailShippingCost} A {@link OrderDetailShippingCost} object\n */\nexport const buildOrderDetailShippingCost = (\n overrides: Partial<OrderDetailShippingCost> = {}\n): OrderDetailShippingCost => {\n return {\n net_price: genNumber(200),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderDetailShippingCost objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderDetailShippingCost[]} An array of OrderDetailShippingCost\n * objects, see {@link OrderDetailShippingCost}\n */\nexport const genOrderDetailShippingCosts = (\n quantity?: number\n): OrderDetailShippingCost[] => {\n return genItems(buildOrderDetailShippingCost, quantity);\n};\n\n/**\n * Generates OrderRetry object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderRetry>} overrides Properties to override\n * a {@link OrderRetry}\n * @returns {OrderRetry} A {@link OrderRetry} object\n */\nexport const buildOrderRetry = (\n overrides: Partial<OrderRetry> = {}\n): OrderRetry => {\n return {\n id: genId(),\n amount: genNumber(100).toString(),\n created_at: genDate(),\n updated_at: genDate(),\n ip_address: genIP(),\n platform: genWord(),\n process_url: genURL(),\n request_id: genId(),\n reference: genReference(),\n payment_method_by_order: buildPaymentMethodByOrder(),\n step: buildOrderStep(),\n ...buildStatus(),\n status: genWord(),\n payment_method_by_order_id: genId(),\n user_agent: genWord(),\n payment_method: null,\n ...overrides\n };\n};\n\n/**\n * Generates Status object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Status>} overrides Properties to override\n * a {@link Status}\n * @returns {Status} A {@link Status} object\n */\nexport const buildStatus = (overrides: Partial<Status> = {}): Status => {\n return {\n status_category: genWord(),\n status_code: genWord(),\n status_id: genId(),\n status_name: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Status objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Status[]} An array of Status objects,\n * see {@link Status}\n */\nexport const genStatus = (quantity?: number): Status[] => {\n return genItems(buildStatus, quantity);\n};\n\n/**\n * Generates a list of OrderRetry objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderRetry[]} An array of OrderRetry objects,\n * see {@link OrderRetry}\n */\nexport const genOrderRetries = (quantity?: number): OrderRetry[] => {\n return genItems(buildOrderRetry, quantity);\n};\n\n/**\n * Generates OrderPaymentMethod object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderPaymentMethod>} overrides Properties to override\n * a {@link OrderPaymentMethod}\n * @returns {OrderPaymentMethod} A {@link OrderPaymentMethod} object\n */\nexport const buildOrderPaymentMethod = (\n overrides: Partial<OrderPaymentMethod> = {}\n): OrderPaymentMethod => {\n return {\n id: genId(),\n lastRetry: buildOrderRetry(),\n payment_method_id: genId(),\n status: chooseRandom(orderStatusOptions),\n step: buildOrderStep(),\n total: genNumber(200).toString(),\n payment_method_name: chooseRandom([\"CC\", \"CASH\", \"DATAPHONE\"]),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderPaymentMethod objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderPaymentMethod[]} An array of OrderPaymentMethod\n * objects, see {@link OrderPaymentMethod}\n */\nexport const genOrderPaymentMethods = (\n quantity?: number\n): OrderPaymentMethod[] => {\n return genItems(buildOrderPaymentMethod, quantity);\n};\n\n/**\n * Generates OrderShoppingCart object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderShoppingCart>} overrides Properties to override\n * a {@link OrderShoppingCart}\n * @returns {OrderShoppingCart} A {@link OrderShoppingCart} object\n */\nexport const buildOrderShoppingCart = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n overrides: Partial<OrderShoppingCart<T>> = {}\n): OrderShoppingCart<T> => {\n return {\n ...buildShoppingCart(),\n stores: genOrderStores(),\n paidPaymentMethods: genOrderPaymentMethods(),\n allRetries: genOrderRetries(),\n rejectedPaymentMethods: genOrderPaymentMethods(),\n comment: genWords(6),\n instructions: genWords(6),\n statusName: genWord(),\n paymentStatus: chooseRandom(paymentStatus),\n statusId: genId(),\n statusCode: chooseRandom(stepCode),\n issueId: genId(),\n invoiceNumber: genId(),\n billTotal: buildOrderBillTotal(),\n additional_info: undefined,\n ...overrides\n };\n};\n\n/**\n * Generates OrderStoreAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStoreAdditionalInfo>} overrides Properties to override\n * a {@link OrderStoreAdditionalInfo}\n * @returns {OrderStoreAdditionalInfo} A {@link OrderStoreAdditionalInfo} object\n */\nexport const buildOrderStoreAdditionalInfo = (\n overrides: Partial<OrderStoreAdditionalInfo> = {}\n): OrderStoreAdditionalInfo => {\n return {\n address: faker.address.street(),\n coverage: genBiasBoolean(0.99),\n latitude: genNumber({ min: 0, max: 80, precision: 6 }),\n longitude: genNumber({ min: 0, max: 80, precision: 6 }),\n schedules: genSchedules(8),\n phone: genMobilPhone(\"593\"),\n sponsored: genBiasBoolean(0.1),\n timezone: \"\",\n channel_name: faker.name.jobTitle(),\n order_symbol: genSymbol(),\n external_id: genId(),\n is_drinks_store: genBiasBoolean(0.3),\n max_order_amount: genNumber(100),\n min_order_amount: genNumber(5),\n show_drinks_store: genBiasBoolean(0.4),\n store_external_code: genId(),\n delivery: buildOrderStoreDelivery(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStoreAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStoreAdditionalInfo[]} An array of OrderStoreAdditionalInfo objects,\n * see {@link OrderStoreAdditionalInfo}\n */\nexport const genOrderStoreAdditionalInfos = (\n quantity?: number\n): OrderStoreAdditionalInfo[] => {\n return genItems(buildOrderStoreAdditionalInfo, quantity);\n};\n\n/**\n * Generates OrderStoreDelivery object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStoreDelivery>} overrides Properties to override\n * a {@link OrderStoreDelivery}\n * @returns {OrderStoreDelivery} A {@link OrderStoreDelivery} object\n */\nexport const buildOrderStoreDelivery = (\n overrides: Partial<OrderStoreDelivery> = {}\n): OrderStoreDelivery => {\n return {\n delivery_time_unit: chooseRandom([\"min\"]),\n delivery_time_value: genNumber(60).toString(),\n express: genBiasBoolean(0.1),\n free_delivery: genBiasBoolean(0.1),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStoreDelivery objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStoreDelivery[]} An array of OrderStoreDelivery objects,\n * see {@link OrderStoreDelivery}\n */\nexport const genOrderStoreDeliveries = (\n quantity?: number\n): OrderStoreDelivery[] => {\n return genItems(buildOrderStoreDelivery, quantity);\n};\n\n/**\n * Generates OrderStore object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderStore>} overrides Properties to override\n * a {@link OrderStore}\n * @returns {OrderStore} A {@link OrderStore} object\n */\nexport const buildOrderStore = (\n overrides: Partial<OrderStore> = {}\n): OrderStore => {\n return {\n id: genId(),\n orderId: genId(),\n digitalCommandSent: genWord(),\n statusId: genId(),\n statusName: genWord(),\n statusCode: chooseRandom(stepCode),\n billStoreTotal: buildOrderProductBillTotal(),\n products: genOrderProducts(),\n storeId: genId(),\n storeName: faker.name.jobTitle(),\n additionalInfo: buildOrderStoreAdditionalInfo(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderStore objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderStore[]} An array of OrderStore objects,\n * see {@link OrderStore}\n */\nexport const genOrderStores = (quantity?: number): OrderStore[] => {\n return genItems(buildOrderStore, quantity);\n};\n\n/**\n * Generates OrderProductAttributes object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductAttributes>} overrides Properties to override\n * a {@link OrderProductAttributes}\n * @returns {OrderProductAttributes} A {@link OrderProductAttributes} object\n */\nexport const buildOrderProductAttributes = (\n overrides: Partial<OrderProductAttributes> = {}\n): OrderProductAttributes => {\n return {\n cantidad: \"1\",\n external_id: \"001\",\n show_in_menu: genBiasBoolean(0.5),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductAttributes objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductAttributes[]} An array of OrderProductAttributes\n * objects, see {@link OrderProductAttributes}\n */\nexport const genOrderProductAttributes = (\n quantity?: number\n): OrderProductAttributes[] => {\n return genItems(buildOrderProductAttributes, quantity);\n};\n\n/**\n * Generates OrderProductAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductAdditionalInfo>} overrides Properties to override\n * a {@link OrderProductAdditionalInfo}\n * @returns {OrderProductAdditionalInfo} A {@link OrderProductAdditionalInfo}\n * object\n */\nexport const buildOrderProductAdditionalInfo = (\n overrides: Partial<OrderProductAdditionalInfo> = {}\n): OrderProductAdditionalInfo => {\n return {\n attributes: buildOrderProductAttributes(),\n available: genBiasBoolean(0.5),\n description: faker.lorem.lines(2),\n is_price_vip: genBiasBoolean(0.5),\n max_amount_for_sale: genNumber(100),\n new_store: genId(),\n out_of_service: genBiasBoolean(0.5),\n out_of_stock: genBiasBoolean(0.5),\n sponsored: genBiasBoolean(0.1),\n status: \"ACTIVE\",\n stock: 1000,\n suggested_price: genNumber(100).toString(),\n type: \"PRODUCT\",\n measure: \"unit\",\n bill_product: buildOrderBillProductAdditionalInfo(),\n bill_product_and_answers: buildOrderBillProductAdditionalInfo(),\n images: genOrderProductImages(),\n price_category: \"NORMAL\",\n prices: buildOrderBillProductAdditionalInfo(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductAdditionalInfo[]} An array of\n * OrderProductAdditionalInfo objects, see {@link OrderProductAdditionalInfo}\n */\nexport const genOrderProductAdditionalInfos = (\n quantity?: number\n): OrderProductAdditionalInfo[] => {\n return genItems(buildOrderProductAdditionalInfo, quantity);\n};\n\n/**\n * Generates OrderProductImage object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductImage>} overrides Properties to override\n * a {@link OrderProductImage}\n * @returns {OrderProductImage} A {@link OrderProductImage} object\n */\nexport const buildOrderProductImage = (\n overrides: Partial<OrderProductImage> = {}\n): OrderProductImage => {\n const imageName = genWord();\n return {\n bucket: genWord(),\n cloud_front_url: genURL(),\n key: `images/${imageName}.jpg`,\n name: `${imageName}.jpg`,\n url: buildURLImage(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductImage objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductImage[]} An array of OrderProductImage objects,\n * see {@link OrderProductImage}\n */\nexport const genOrderProductImages = (\n quantity?: number\n): OrderProductImage[] => {\n return genItems(buildOrderProductImage, quantity);\n};\n\n/**\n * Generates OrderBillProductAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderBillProductAdditionalInfo>} overrides Properties to\n * override a {@link OrderBillProductAdditionalInfo}\n * @returns {OrderBillProductAdditionalInfo} A\n * {@link OrderBillProductAdditionalInfo} object\n */\nexport const buildOrderBillProductAdditionalInfo = (\n overrides: Partial<OrderBillProductAdditionalInfo> = {}\n): OrderBillProductAdditionalInfo => {\n return {\n normal: buildOrderProductPriceCategory(),\n points: buildOrderProductPriceCategory(),\n ...overrides\n };\n};\n\n/**\n * Generates TaxCalculation object with random data.\n *\n * @since 0.1.0\n * @param {Partial<TaxCalculation>} overrides Properties to override\n * a {@link TaxCalculation}\n * @returns {TaxCalculation} A {@link TaxCalculation} object\n */\nexport const buildTaxCalculation = (\n overrides: Partial<TaxCalculation> = {}\n): TaxCalculation => {\n return {\n code: genNumber(10),\n name: chooseRandom([\"IVA\"]),\n percentage: genNumber(10),\n vat_rate: genNumber(10).toString(),\n tax_base: genNumber(10),\n value: genNumber(10),\n vat_rate_code: genNumber(10),\n ...overrides\n };\n};\n\n/**\n * Generates a list of TaxCalculation objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {TaxCalculation[]} An array of TaxCalculation objects,\n * see {@link TaxCalculation}\n */\nexport const genTaxCalculations = (quantity?: number): TaxCalculation[] => {\n return genItems(buildTaxCalculation, quantity);\n};\n\n/**\n * Generates TaxCalculations object with random data.\n *\n * @since 0.1.0\n * @param {Partial<TaxCalculations>} overrides Properties to override\n * a {@link TaxCalculations}\n * @returns {TaxCalculations} A {@link TaxCalculations} object\n */\nexport const buildTaxCalculations = (\n overrides: Partial<TaxCalculations> = {}\n): TaxCalculations => {\n const key = `${genNumber(10)}_${genNumber(10)}`;\n // @ts-ignore since it cannot deduce if the key is string or undefined\n return {\n [key]: buildTaxCalculation(),\n ...overrides\n };\n};\n\n/**\n * Generates OrderProductPriceCategory object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductPriceCategory>} overrides Properties to override\n * a {@link OrderProductPriceCategory}\n * @returns {OrderProductPriceCategory} A {@link OrderProductPriceCategory}\n * object\n */\nexport const buildOrderProductPriceCategory = (\n overrides: Partial<OrderProductPriceCategory> = {}\n): OrderProductPriceCategory => {\n return {\n amount: genNumber(50),\n taxes: genTaxCalculations(),\n category: \"NORMAL\",\n discount: genNumber(12),\n discount_gross_price: genNumber(50),\n discount_net_price: genNumber(50),\n discount_total: genNumber(40),\n discounts: [],\n gross_price: genNumber(50),\n net_price: genNumber(50),\n name: faker.commerce.productName(),\n subtotal_before_taxes: genNumber(30),\n subtotal_before_taxes_before_discounts: genNumber(30),\n subtotal_without_taxes: genNumber(30),\n subtotal_zero: 0,\n product_id: genId(),\n symbol: genSymbol(),\n tax_calcs: buildTaxCalculations(),\n tax_total: genNumber(12),\n total: genNumber(50),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProductPriceCategory objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProductPriceCategory[]} An array of OrderProductPriceCategory\n * objects, see {@link OrderProductPriceCategory}\n */\nexport const genOrderProductPriceCategories = (\n quantity?: number\n): OrderProductPriceCategory[] => {\n return genItems(buildOrderProductPriceCategory, quantity);\n};\n\n/**\n * Generates OrderProduct object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProduct>} overrides Properties to override\n * a {@link OrderProduct}\n * @returns {OrderProduct} A {@link OrderProduct} object\n */\nexport const buildOrderProduct = (\n overrides: Partial<OrderProduct> = {}\n): OrderProduct => {\n return {\n id: genId(),\n additionalInfo: buildOrderProductAdditionalInfo(),\n productId: genId(),\n productName: genWords(5),\n comment: genWords(5),\n billProduct: buildOrderBillProduct(),\n billProductAndAnswers: buildOrderProductBillTotal(),\n questionsAndAnswers: genCartProductQuestions(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderProduct objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderProduct[]} An array of OrderProduct objects,\n * see {@link OrderProduct}\n */\nexport const genOrderProducts = (quantity?: number): OrderProduct[] => {\n return genItems(buildOrderProduct, quantity);\n};\n\n/**\n * Generates OrderBillProduct object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderBillProduct>} overrides Properties to override\n * a {@link OrderBillProduct}\n * @returns {OrderBillProduct} A {@link OrderBillProduct} object\n */\nexport const buildOrderBillProduct = (\n overrides: Partial<OrderBillProduct> = {}\n): OrderBillProduct => {\n return {\n ...buildOrderProductBillTotal(),\n amount: genNumber(50),\n ...overrides\n };\n};\n\n/**\n * Generates OrderProductBillTotal object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderProductBillTotal>} overrides Properties to override\n * a {@link OrderProductBillTotal}\n * @returns {OrderProductBillTotal} A {@link OrderProductBillTotal} object\n */\nexport const buildOrderProductBillTotal = (\n overrides: Partial<OrderProductBillTotal> = {}\n): OrderProductBillTotal => {\n return {\n ...buildBillTotalNormalCategory(),\n discountTotal: genNumber(10),\n ...overrides\n };\n};\n\n/**\n * Generates OrderBillTotal object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderBillTotal>} overrides Properties to override\n * a {@link OrderBillTotal}\n * @returns {OrderBillTotal} A {@link OrderBillTotal} object\n */\nexport const buildOrderBillTotal = (\n overrides: Partial<OrderBillTotal> = {}\n): OrderBillTotal => {\n return {\n ...buildBillTotalNormalCategory(),\n discountTotal: genNumber(10),\n subtotalTaxedWithoutTaxes: genNumber(10),\n subtotalZero: genNumber(10),\n tip: genNumber(10),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderShoppingCart objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderShoppingCart[]} An array of OrderShoppingCart objects,\n * see {@link OrderShoppingCart}\n */\nexport const genOrderShoppingCarts = <\n T extends AdditionalInfo = AdditionalInfo\n>(\n quantity?: number\n): OrderShoppingCart<T>[] => {\n return genItems(buildOrderShoppingCart, quantity);\n};\n\n/**\n * Generates MetadataShipping object with random data.\n *\n * @since 0.1.0\n * @param {Partial<MetadataShipping>} overrides Properties to override\n * a {@link MetadataShipping}\n * @returns {MetadataShipping} A {@link MetadataShipping} object\n */\nexport const buildMetadataShipping = (\n overrides: Partial<MetadataShipping> = {}\n): MetadataShipping => {\n return {\n area: buildBaseField(),\n city: buildBaseField(),\n zone: buildZipCodeField(),\n store: buildBaseField(),\n country: buildBaseField(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of MetadataShipping objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {MetadataShipping[]} An array of MetadataShipping objects,\n * see {@link MetadataShipping}\n */\nexport const genMetadataShippings = (quantity?: number): MetadataShipping[] => {\n return genItems(buildMetadataShipping, quantity);\n};\n\n/**\n * Generates BaseField object with random data.\n *\n * @since 0.1.0\n * @param {Partial<BaseField>} overrides Properties to override\n * a {@link BaseField}\n * @returns {BaseField} A {@link BaseField} object\n */\nexport const buildBaseField = (\n overrides: Partial<BaseField> = {}\n): BaseField => {\n return {\n id: genId(),\n name: genName(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BaseField objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {BaseField[]} An array of BaseField objects,\n * see {@link BaseField}\n */\nexport const genBaseFields = (quantity?: number): BaseField[] => {\n return genItems(buildBaseField, quantity);\n};\n\n/**\n * Generates ZipCodeField object with random data.\n *\n * @since 0.1.0\n * @param {Partial<ZipCodeField>} overrides Properties to override\n * a {@link ZipCodeField}\n * @returns {ZipCodeField} A {@link ZipCodeField} object\n */\nexport const buildZipCodeField = (\n overrides: Partial<ZipCodeField> = {}\n): ZipCodeField => {\n return {\n ...buildBaseField(),\n zipCode: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of ZipCodeField objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {ZipCodeField[]} An array of ZipCodeField objects,\n * see {@link ZipCodeField}\n */\nexport const genZipCodeFields = (quantity?: number): ZipCodeField[] => {\n return genItems(buildZipCodeField, quantity);\n};\n\n/**\n * Generates IntegrationMessage object with random data.\n *\n * @since 0.1.0\n * @param {Partial<IntegrationMessage>} overrides Properties to override\n * a {@link IntegrationMessage}\n * @returns {IntegrationMessage} A {@link IntegrationMessage} object\n */\nexport const buildIntegrationMessage = (\n overrides: Partial<IntegrationMessage> = {}\n): IntegrationMessage => {\n return {\n kfcInjection: {\n [genNumber(999999).toString()]: buildInjectionDetail()\n },\n ...overrides\n };\n};\n\n/**\n * Generates a list of IntegrationMessage objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {IntegrationMessage[]} An array of IntegrationMessage objects,\n * see {@link IntegrationMessage}\n */\nexport const genIntegrationMessages = (\n quantity?: number\n): IntegrationMessage[] => {\n return genItems(buildIntegrationMessage, quantity);\n};\n\n/**\n * Generates InjectionDetail object with random data.\n *\n * @since 0.1.0\n * @param {Partial<InjectionDetail>} overrides Properties to override\n * a {@link InjectionDetail}\n * @returns {InjectionDetail} A {@link InjectionDetail} object\n */\nexport const buildInjectionDetail = (\n overrides: Partial<InjectionDetail> = {}\n): InjectionDetail => {\n return {\n causa: genWord(),\n codigo: genNumericId(),\n mensaje: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of InjectionDetail objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {InjectionDetail[]} An array of InjectionDetail objects,\n * see {@link InjectionDetail}\n */\nexport const genInjectionDetails = (quantity?: number): InjectionDetail[] => {\n return genItems(buildInjectionDetail, quantity);\n};\n\n/**\n * Generates OrderUser object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderUser>} overrides Properties to override\n * a {@link OrderUser}\n * @returns {OrderUser} A {@link OrderUser} object\n */\nexport const buildOrderUser = <T extends AdditionalInfo = AdditionalInfo>(\n overrides: Partial<OrderUser<T>> = {}\n): OrderUser<T> => {\n return {\n ...buildUser<T>(),\n settings: buildSettings(),\n additionalInfo: undefined,\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderUser objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderUser[]} An array of OrderUser objects,\n * see {@link OrderUser}\n */\nexport const genOrderUsers = <T extends AdditionalInfo = AdditionalInfo>(\n quantity?: number\n): OrderUser<T>[] => {\n return genItems(buildOrderUser, quantity);\n};\n\n/**\n * Generates OperatorInformation object with random data.\n *\n * @param {Partial<OperatorInformation>} overrides Properties to override\n * a {@link OperatorInformation}\n * @returns {OperatorInformation} A {@link OperatorInformation} object\n */\nexport const buildOperatorInformation = (\n overrides: Partial<OperatorInformation> = {}\n): OperatorInformation => {\n return {\n id: genId(),\n name: genName(),\n email: genEmail(),\n skill: genWords(4),\n document: genDocument(10),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OperatorInformation objects with random data.\n *\n * @param {number} quantity The number of objects to be generated\n * @returns {OperatorInformation[]} An array of OperatorInformation objects,\n * see {@link OperatorInformation}\n */\nexport const genOperatorInformation = (\n quantity?: number\n): OperatorInformation[] => {\n return genItems(buildOperatorInformation, quantity);\n};\n\n/**\n * Generates Suborder object with random data.\n *\n * @since 0.1.0\n * @param {Partial<Suborder>} overrides Properties to override\n * a {@link Suborder}\n * @returns {Suborder} A {@link Suborder} object\n */\nexport const buildSuborder = (overrides: Partial<Suborder> = {}): Suborder => {\n return {\n ...buildStatus(),\n additional_info: genWord(),\n created_at: genDate(),\n updated_at: genDate(),\n order_id: genId(),\n id: genId(),\n store_id: genId(),\n store_name: genCompanyName(),\n vendor: genCompanyName(),\n digital_command_sent: genBiasBoolean(0.5).toString(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Suborder objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {Suborder[]} An array of Suborder objects,\n * see {@link Suborder}\n */\nexport const genSuborders = (quantity?: number): Suborder[] => {\n return genItems(buildSuborder, quantity);\n};\n\n/**\n * Generates PaymentMethodByOrder object with random data.\n *\n * @since 0.1.0\n * @param {Partial<PaymentMethodByOrder>} overrides Properties to override\n * a {@link PaymentMethodByOrder}\n * @returns {PaymentMethodByOrder} A {@link PaymentMethodByOrder} object\n */\nexport const buildPaymentMethodByOrder = (\n overrides: Partial<PaymentMethodByOrder> = {}\n): PaymentMethodByOrder => {\n return {\n ...buildStatus(),\n amount: genNumber(200).toString(),\n created_at: genDate(),\n updated_at: genDate(),\n id: genId(),\n payment_method_id: genId(),\n status: genWord(),\n sri_payment_method_id: genId(),\n order: buildOrderRetryPaymentMethod(),\n order_id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of PaymentMethodByOrder objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {PaymentMethodByOrder[]} An array of PaymentMethodByOrder objects,\n * see {@link PaymentMethodByOrder}\n */\nexport const genPaymentMethodByOrders = (\n quantity?: number\n): PaymentMethodByOrder[] => {\n return genItems(buildPaymentMethodByOrder, quantity);\n};\n\n/**\n * Generates OrderRetryPaymentMethod object with random data.\n *\n * @since 0.1.0\n * @param {Partial<OrderRetryPaymentMethod>} overrides Properties to override\n * a {@link OrderRetryPaymentMethod}\n * @returns {OrderRetryPaymentMethod} A {@link OrderRetryPaymentMethod} object\n */\nexport const buildOrderRetryPaymentMethod = (\n overrides: Partial<OrderRetryPaymentMethod> = {}\n): OrderRetryPaymentMethod => {\n return {\n account_id: genId(),\n vendor_id: genId(),\n allocation: chooseRandom(allocationOptions),\n billing_data_by_user_id: genId(),\n channel_id: genId(),\n created_at: genDate(),\n latitude: genLatitude(),\n longitude: genLongitude(),\n uid: genId(),\n insoft_order_process: genWord(),\n id: genId(),\n sent_fulfillment: genWord(),\n shopping_cart_id: genId(),\n ...buildStatus(),\n step: genNumber(10),\n suborders: genSuborders(),\n updated_at: genDate(),\n payment_status: chooseRandom(orderStatusOptions),\n seq_val: genReference(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of OrderRetryPaymentMethod objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {OrderRetryPaymentMethod[]} An array of\n * OrderRetryPaymentMethod objects, see {@link OrderRetryPaymentMethod}\n */\nexport const genOrderRetryPaymentMethods = (\n quantity?: number\n): OrderRetryPaymentMethod[] => {\n return genItems(buildOrderRetryPaymentMethod, quantity);\n};\n","// Notification builder functions\n\nimport { Notification, NotificationUser } from \"@artisan-commerce/types\";\nimport { NotificationAdditionalInfo } from \"@artisan-commerce/types\";\nimport { NotificationExtraData } from \"@artisan-commerce/types\";\nimport { NotificationStep, NotificationStore } from \"@artisan-commerce/types\";\nimport { NotificationListItem } from \"@artisan-commerce/types\";\n\nimport { genItems } from \"../utils/common.utils\";\nimport { chooseRandom, genAddress, genCompanyName } from \"./common.builder\";\nimport { genDate, genEmail, genId, genWord } from \"./common.builder\";\nimport { getBoolean, genName, genNumber, genWords } from \"./common.builder\";\nimport { stepCategory, stepCode } from \"./fulfillment.builder\";\nimport { allocationOptions, buildBaseField } from \"./order.builder\";\nimport { genReference, buildMetadataShipping } from \"./order.builder\";\n\n/**\n * Generates Notification object with random data.\n *\n * @since 0.5.15\n * @param {Partial<Notification>} overrides Properties to override\n * a {@link Notification}\n * @returns {Notification} A {@link Notification} object\n */\nexport const buildNotification = (\n overrides: Partial<Notification> = {}\n): Notification => {\n return {\n id: genId(),\n title: genWords(2),\n description: genWords(6),\n listTitle: genWords(2),\n listItems: genNotificationListItems(),\n creationDate: genDate(),\n priority: chooseRandom([\"HIGH\", \"LOW\"]),\n read: chooseRandom([\"YES\", \"NO\"]),\n extra_data: buildNotificationExtraData(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of Notification objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {Notification[]} An array of Notification objects,\n * see {@link Notification}\n */\nexport const genNotifications = (quantity?: number): Notification[] => {\n return genItems(buildNotification, quantity);\n};\n\n/**\n * Generates NotificationUser object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationUser>} overrides Properties to override\n * a {@link NotificationUser}\n * @returns {NotificationUser} A {@link NotificationUser} object\n */\nexport const buildNotificationUser = (\n overrides: Partial<NotificationUser> = {}\n): NotificationUser => {\n return {\n name: genName(),\n address: genAddress(),\n email: genEmail(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationUser objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationUser[]} An array of NotificationUser objects,\n * see {@link NotificationUser}\n */\nexport const genNotificationUsers = (quantity?: number): NotificationUser[] => {\n return genItems(buildNotificationUser, quantity);\n};\n\n/**\n * Generates NotificationStore object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationStore>} overrides Properties to override\n * a {@link NotificationStore}\n * @returns {NotificationStore} A {@link NotificationStore} object\n */\nexport const buildNotificationStore = (\n overrides: Partial<NotificationStore> = {}\n): NotificationStore => {\n return {\n ...buildBaseField(),\n address: genAddress(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationStore objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationStore[]} An array of NotificationStore objects,\n * see {@link NotificationStore}\n */\nexport const genNotificationStores = (\n quantity?: number\n): NotificationStore[] => {\n return genItems(buildNotificationStore, quantity);\n};\n\n/**\n * Generates NotificationStep object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationStep>} overrides Properties to override\n * a {@link NotificationStep}\n * @returns {NotificationStep} A {@link NotificationStep} object\n */\nexport const buildNotificationStep = (\n overrides: Partial<NotificationStep> = {}\n): NotificationStep => {\n return {\n id: genId(),\n name: genWord(),\n code: chooseRandom(stepCode),\n category: chooseRandom(stepCategory),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationStep objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationStep[]} An array of NotificationStep objects,\n * see {@link NotificationStep}\n */\nexport const genNotificationSteps = (quantity?: number): NotificationStep[] => {\n return genItems(buildNotificationStep, quantity);\n};\n\n/**\n * Generates NotificationAdditionalInfo object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationAdditionalInfo>} overrides Properties to override\n * a {@link NotificationAdditionalInfo}\n * @returns {NotificationAdditionalInfo} A {@link NotificationAdditionalInfo} object\n */\nexport const buildNotificationAdditionalInfo = (\n overrides: Partial<NotificationAdditionalInfo> = {}\n): NotificationAdditionalInfo => {\n return {\n parent_shopping_cart: getBoolean(),\n metadata_shipping: buildMetadataShipping(),\n aud: genCompanyName(),\n workflowId: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationAdditionalInfo objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationAdditionalInfo[]} An array of NotificationAdditionalInfo objects,\n * see {@link NotificationAdditionalInfo}\n */\nexport const genNotificationAdditionalInfos = (\n quantity?: number\n): NotificationAdditionalInfo[] => {\n return genItems(buildNotificationAdditionalInfo, quantity);\n};\n\n/**\n * Generates NotificationExtraData object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationExtraData>} overrides Properties to override\n * a {@link NotificationExtraData}\n * @returns {NotificationExtraData} A {@link NotificationExtraData} object\n */\nexport const buildNotificationExtraData = (\n overrides: Partial<NotificationExtraData> = {}\n): NotificationExtraData => {\n const vendorIncompat = buildBaseField();\n\n return {\n id: genId(),\n seqVal: genReference(),\n uid: genId(),\n user: buildNotificationUser(),\n accountId: genId(),\n vendor: { ...vendorIncompat, id: vendorIncompat.id.toString() },\n city: buildBaseField(),\n store: buildNotificationStore(),\n channel_id: genId(),\n countryId: genId(),\n step: buildNotificationStep(),\n allocation: chooseRandom(allocationOptions),\n paymentMethod: \"Points\",\n total: genNumber(9999).toString(),\n additionalInfo: buildNotificationAdditionalInfo(),\n created_at: genDate(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationExtraData objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationExtraData[]} An array of NotificationExtraData objects,\n * see {@link NotificationExtraData}\n */\nexport const genNotificationExtraDatas = (\n quantity?: number\n): NotificationExtraData[] => {\n return genItems(buildNotificationExtraData, quantity);\n};\n\n/**\n * Generates NotificationListItem object with random data.\n *\n * @since 0.1.0\n * @param {Partial<NotificationListItem>} overrides Properties to override\n * a {@link NotificationListItem}\n * @returns {NotificationListItem} A {@link NotificationListItem} object\n */\nexport const buildNotificationListItem = (\n overrides: Partial<NotificationListItem> = {}\n): NotificationListItem => {\n return {\n title: genWords(2),\n description: genWords(6),\n ...overrides\n };\n};\n\n/**\n * Generates a list of NotificationListItem objects with random data.\n *\n * @since 0.1.0\n * @param {number} quantity The number of objects to be generated\n * @returns {NotificationListItem[]} An array of NotificationListItem objects,\n * see {@link NotificationListItem}\n */\nexport const genNotificationListItems = (\n quantity?: number\n): NotificationListItem[] => {\n return genItems(buildNotificationListItem, quantity);\n};\n","// Payment builder functions\n\nimport { BasePaymentMethod, PaymentMethod } from \"@artisan-commerce/types\";\nimport { PaymentProvider, CreditCardMapping } from \"@artisan-commerce/types\";\nimport { CardName, PaymentMethodName } from \"@artisan-commerce/types\";\nimport { CardInscription } from \"@artisan-commerce/types\";\n\nimport { buildURLImage } from \"./image.builder\";\nimport { genItems } from \"../utils/common.utils\";\nimport { genBiasBoolean, genId, genNumericId, genWord } from \"./common.builder\";\nimport { chooseRandom, genDate, genNumber, genURL } from \"./common.builder\";\n\n/**\n * Generates BasePaymentMethod object with random data.\n *\n * @since 0.5.15\n * @param {Partial<BasePaymentMethod>} overrides Properties to override\n * a {@link BasePaymentMethod}\n * @returns {BasePaymentMethod} A {@link BasePaymentMethod} object\n */\nexport const buildBasePaymentMethod = (\n overrides: Partial<BasePaymentMethod> = {}\n): BasePaymentMethod => {\n return {\n created_at: genDate(),\n deleted_at: genDate(),\n updated_at: genDate(),\n id: genId(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of BasePaymentMethod objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {BasePaymentMethod[]} An array of BasePaymentMethod objects,\n * see {@link BasePaymentMethod}\n */\nexport const genBasePaymentMethods = (\n quantity?: number\n): BasePaymentMethod[] => {\n return genItems(buildBasePaymentMethod, quantity);\n};\n\n/**\n * Generates PaymentMethod object with random data.\n *\n * @since 0.5.15\n * @param {Partial<PaymentMethod>} overrides Properties to override\n * a {@link PaymentMethod}\n * @returns {PaymentMethod} A {@link PaymentMethod} object\n */\nexport const buildPaymentMethod = (\n overrides: Partial<PaymentMethod> = {}\n): PaymentMethod => {\n const paymentNames: PaymentMethodName[] = [\n \"CASH\",\n \"CREDIT_CARD\",\n \"DATAPHONE\"\n ];\n\n return {\n ...buildBasePaymentMethod(),\n name: chooseRandom(paymentNames),\n image_url: genURL(),\n default: genBiasBoolean(0.6),\n external_id: genNumber(50).toString(),\n external_code: genNumber(50),\n parent_id: genNumber(50).toString(),\n methods: genPaymentProviders(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of PaymentMethod objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {PaymentMethod[]} An array of PaymentMethod objects,\n * see {@link PaymentMethod}\n */\nexport const genPaymentMethods = (quantity?: number): PaymentMethod[] => {\n return genItems(buildPaymentMethod, quantity);\n};\n\n/**\n * Generates PaymentProvider object with random data.\n *\n * @since 0.5.15\n * @param {Partial<PaymentProvider>} overrides Properties to override\n * a {@link PaymentProvider}\n * @returns {PaymentProvider} A {@link PaymentProvider} object\n */\nexport const buildPaymentProvider = (\n overrides: Partial<PaymentProvider> = {}\n): PaymentProvider => {\n const providerNames = [\"PayPhone\", \"Kushki\", \"Place to Pay\", \"Mercadopago\"];\n return {\n ...buildBasePaymentMethod(),\n name: chooseRandom(providerNames),\n image_url: genURL(),\n default: genBiasBoolean(0.6),\n external_id: genNumber(50).toString(),\n external_code: genNumber(50),\n parent_id: genNumber(50).toString(),\n methods: [],\n cc_brands: genCreditCardMappings(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of PaymentProvider objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {PaymentProvider[]} An array of credit card brands,\n * see {@link PaymentProvider}\n */\nexport const genPaymentProviders = (quantity?: number): PaymentProvider[] => {\n return genItems(buildPaymentProvider, quantity);\n};\n\n/**\n * Generates CreditCardMapping object with random data.\n *\n * @since 0.5.15\n * @param {Partial<CreditCardMapping>} overrides Properties to override\n * a {@link CreditCardMapping}\n * @returns {CreditCardMapping} A {@link CreditCardMapping} object\n */\nexport const buildCreditCardMapping = (\n overrides: Partial<CreditCardMapping> = {}\n): CreditCardMapping => {\n const cardsName: CardName[] = [\n \"American Express\",\n \"Diners\",\n \"Discover\",\n \"Visa\",\n \"MasterCard\"\n ];\n return {\n ...buildBasePaymentMethod(),\n id: genId(),\n name: chooseRandom(cardsName),\n image_url: buildURLImage(),\n cc_brands_mapping: [],\n ...overrides\n };\n};\n\n/**\n * Generates a list of CreditCardMapping objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {CreditCardMapping[]} An array of credit card mappings,\n * see {@link CreditCardMapping}\n */\nexport const genCreditCardMappings = (\n quantity?: number\n): CreditCardMapping[] => {\n return genItems(buildCreditCardMapping, quantity);\n};\n\n/**\n * Generates CardInscription object with random data.\n *\n * @since 0.5.15\n * @param {Partial<CardInscription>} overrides Properties to override\n * a {@link CardInscription}\n * @returns {CardInscription} A {@link CardInscription} object\n */\nexport const buildCardInscription = (\n overrides: Partial<CardInscription> = {}\n): CardInscription => {\n return {\n authCode: genNumericId().toString(),\n bin: genWord(),\n createdAt: new Date().toDateString(),\n id: genId(),\n uid: genId(),\n number: genNumericId().toString(),\n paymentToken: genNumericId().toString(),\n type: genWord(),\n ...overrides\n };\n};\n\n/**\n * Generates a list of CardInscription objects with random data.\n *\n * @since 0.5.15\n * @param {number} quantity The number of objects to be generated\n * @returns {CardInscription[]} An array of card inscriptions,\n * see {@link CardInscription}\n */\nexport const genCardInscriptions = (quantity?: number): CardInscription[] => {\n return genItems(buildCardInscription, quantity);\n};\n","import { faker } from \"@faker-js/faker\";\n\nexport const seed = <T extends number | number[] | undefined = undefined>(\n seed?: T\n): T extends number ? number : T extends number[] ? number[] : number => {\n if (!faker) throw new Error(\"Faker not found\");\n // @ts-ignore\n return faker.seed(seed);\n};\n"],"names":["faker","__spreadValues","__spreadProps"],"mappings":"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"}