@faststore/api 1.6.19 → 1.6.22

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":"api.esm.js","sources":["../src/platforms/vtex/clients/fetch.ts","../src/platforms/vtex/clients/commerce/index.ts","../src/platforms/vtex/clients/search/index.ts","../src/platforms/vtex/clients/index.ts","../src/platforms/vtex/loaders/simulation.ts","../src/platforms/vtex/utils/errors.ts","../src/platforms/vtex/utils/enhanceSku.ts","../src/platforms/vtex/loaders/sku.ts","../src/platforms/vtex/loaders/collection.ts","../src/platforms/vtex/loaders/index.ts","../src/platforms/vtex/resolvers/aggregateOffer.ts","../src/platforms/vtex/resolvers/aggregateRating.ts","../src/platforms/vtex/utils/slugify.ts","../src/platforms/vtex/resolvers/collection.ts","../src/platforms/vtex/resolvers/facet.ts","../src/platforms/vtex/resolvers/facetValue.ts","../src/platforms/vtex/resolvers/validateCart.ts","../src/platforms/vtex/utils/channel.ts","../src/platforms/vtex/resolvers/updateSession.ts","../src/platforms/vtex/resolvers/mutation.ts","../src/platforms/vtex/resolvers/offer.ts","../src/platforms/vtex/resolvers/product.ts","../src/platforms/vtex/resolvers/productGroup.ts","../src/platforms/vtex/utils/facets.ts","../src/platforms/vtex/utils/sort.ts","../src/platforms/vtex/resolvers/query.ts","../src/platforms/vtex/resolvers/review.ts","../src/platforms/vtex/resolvers/searchResult.ts","../src/platforms/vtex/resolvers/seo.ts","../src/platforms/vtex/index.ts","../src/typeDefs/index.ts","../src/index.ts"],"sourcesContent":["import fetch from 'isomorphic-unfetch'\n\nexport const fetchAPI = async (info: RequestInfo, init?: RequestInit) => {\n const response = await fetch(info, init)\n\n if (response.ok) {\n return response.json()\n }\n\n console.error(info, init, response)\n const text = await response.text()\n\n throw new Error(text)\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { Brand } from './types/Brand'\nimport type { CategoryTree } from './types/CategoryTree'\nimport type { OrderForm, OrderFormInputItem } from './types/OrderForm'\nimport type { PortalPagetype } from './types/Portal'\nimport type { Region, RegionInput } from './types/Region'\nimport type {\n Simulation,\n SimulationArgs,\n SimulationOptions,\n} from './types/Simulation'\nimport type { Session } from './types/Session'\n\nconst BASE_INIT = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n}\n\nexport const VtexCommerce = (\n { account, environment }: Options,\n ctx: Context\n) => {\n const base = `https://${account}.${environment}.com.br`\n\n return {\n catalog: {\n brand: {\n list: (): Promise<Brand[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/brand/list`),\n },\n category: {\n tree: (depth = 3): Promise<CategoryTree[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/category/tree/${depth}`),\n },\n portal: {\n pagetype: (slug: string): Promise<PortalPagetype> =>\n fetchAPI(`${base}/api/catalog_system/pub/portal/pagetype/${slug}`),\n },\n },\n checkout: {\n simulation: (\n args: SimulationArgs,\n { salesChannel }: SimulationOptions = {\n salesChannel: ctx.storage.channel,\n }\n ): Promise<Simulation> => {\n const params = new URLSearchParams({\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForms/simulation?${params.toString()}`,\n {\n ...BASE_INIT,\n body: JSON.stringify(args),\n }\n )\n },\n orderForm: ({\n id,\n refreshOutdatedData = true,\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n refreshOutdatedData?: boolean\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n refreshOutdatedData: refreshOutdatedData.toString(),\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}?${params.toString()}`,\n BASE_INIT\n )\n },\n updateOrderFormItems: ({\n id,\n orderItems,\n allowOutdatedData = 'paymentData',\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n orderItems: OrderFormInputItem[]\n allowOutdatedData?: 'paymentData'\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n allowOutdatedData,\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}/items?${params}`,\n {\n ...BASE_INIT,\n body: JSON.stringify({ orderItems }),\n method: 'PATCH',\n }\n )\n },\n region: async ({\n postalCode,\n country,\n salesChannel,\n }: RegionInput): Promise<Region> => {\n return fetchAPI(\n `${base}/api/checkout/pub/regions/?postalCode=${postalCode}&country=${country}&sc=${\n salesChannel ?? ''\n }`\n )\n },\n },\n session: (): Promise<Session> =>\n fetchAPI(\n `${base}/api/sessions?items=profile.id,profile.email,profile.firstName,profile.lastName`,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n cookie: ctx.headers.cookie,\n },\n body: '{}',\n }\n ),\n }\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { SelectedFacet } from '../../utils/facets'\nimport type { ProductSearchResult } from './types/ProductSearchResult'\nimport type { AttributeSearchResult } from './types/AttributeSearchResult'\n\nexport type Sort =\n | 'price:desc'\n | 'price:asc'\n | 'orders:desc'\n | 'name:desc'\n | 'name:asc'\n | 'release:desc'\n | 'discount:desc'\n | ''\n\nexport interface SearchArgs {\n query?: string\n page: number\n count: number\n type: 'product_search' | 'attribute_search'\n sort?: Sort\n selectedFacets?: SelectedFacet[]\n fuzzy?: '0' | '1'\n hideUnavailableItems?: boolean\n}\n\nexport interface ProductLocator {\n field: 'id' | 'slug'\n value: string\n}\n\nexport const IntelligentSearch = (\n { account, environment, hideUnavailableItems }: Options,\n ctx: Context\n) => {\n const base = `http://portal.${environment}.com.br/search-api/v1/${account}`\n const policyFacet = { key: 'trade-policy', value: ctx.storage.channel }\n\n const addDefaultFacets = (facets: SelectedFacet[]) => {\n const facet = facets.find(({ key }) => key === policyFacet.key)\n\n if (facet === undefined) {\n return [...facets, policyFacet]\n }\n\n return facets\n }\n\n const search = <T>({\n query = '',\n page,\n count,\n sort = '',\n selectedFacets = [],\n type,\n fuzzy = '0',\n }: SearchArgs): Promise<T> => {\n const params = new URLSearchParams({\n page: (page + 1).toString(),\n count: count.toString(),\n query,\n sort,\n fuzzy,\n })\n\n if (hideUnavailableItems !== undefined) {\n params.append('hide-unavailable-items', hideUnavailableItems.toString())\n }\n\n const pathname = addDefaultFacets(selectedFacets)\n .map(({ key, value }) => `${key}/${value}`)\n .join('/')\n\n return fetchAPI(\n `${base}/api/split/${type}/${pathname}?${params.toString()}`\n )\n }\n\n const products = (args: Omit<SearchArgs, 'type'>) =>\n search<ProductSearchResult>({ ...args, type: 'product_search' })\n\n const facets = (args: Omit<SearchArgs, 'type'>) =>\n search<AttributeSearchResult>({ ...args, type: 'attribute_search' })\n\n return {\n facets,\n products,\n }\n}\n","import { VtexCommerce } from './commerce'\nimport { IntelligentSearch } from './search'\nimport type { Context, Options } from '..'\n\nexport type Clients = ReturnType<typeof getClients>\n\nexport const getClients = (options: Options, ctx: Context) => {\n const search = IntelligentSearch(options, ctx)\n const commerce = VtexCommerce(options, ctx)\n\n return {\n search,\n commerce,\n }\n}\n","import DataLoader from 'dataloader'\nimport pLimit from 'p-limit'\n\nimport type {\n PayloadItem,\n Simulation,\n} from '../clients/commerce/types/Simulation'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\n\n// Limits concurrent requests to the API per request cycle\nconst CONCURRENT_REQUESTS_MAX = 1\n\nexport const getSimulationLoader = (_: Options, clients: Clients) => {\n const limit = pLimit(CONCURRENT_REQUESTS_MAX)\n\n const loader = async (allItems: readonly PayloadItem[][]) => {\n const items = [...allItems.flat()]\n const simulation = await clients.commerce.checkout.simulation({\n items,\n })\n\n // Sort and filter simulation since Checkout API may return\n // items that we didn't ask for\n const simulated = simulation.items.reduce((acc, item) => {\n const index = item.requestIndex\n\n if (typeof index === 'number' && index < acc.length) {\n acc[index] = item\n }\n\n return acc\n }, Array(items.length).fill(null) as Simulation['items'])\n\n const itemsIndices = allItems.reduce(\n (acc, curr) => [...acc, curr.length + acc[acc.length - 1]],\n [0]\n )\n\n return allItems.map((__, index) => ({\n ...simulation,\n items: simulated\n .slice(itemsIndices[index], itemsIndices[index + 1])\n .filter((item) => Boolean(item)),\n }))\n }\n\n const limited = async (allItems: readonly PayloadItem[][]) =>\n limit(loader, allItems)\n\n return new DataLoader<PayloadItem[], Simulation>(limited, {\n maxBatchSize: 50,\n })\n}\n","export class BadRequestError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'BadRequestError'\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'NotFoundError'\n }\n}\n","import type { Product, Sku } from '../clients/search/types/ProductSearchResult'\n\nexport type EnhancedSku = Sku & { isVariantOf: Product }\n\nexport const enhanceSku = (sku: Sku, product: Product): EnhancedSku => ({\n ...sku,\n isVariantOf: product,\n})\n","import DataLoader from 'dataloader'\n\nimport { BadRequestError } from '../utils/errors'\nimport { enhanceSku } from '../utils/enhanceSku'\nimport type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\nimport type { SelectedFacet } from '../utils/facets'\n\nexport const getSkuLoader = (_: Options, clients: Clients) => {\n const loader = async (facetsList: readonly SelectedFacet[][]) => {\n const skuIds = facetsList.map((facets) => {\n const maybeFacet = facets.find(({ key }) => key === 'id')\n\n if (!maybeFacet) {\n throw new BadRequestError(\n 'Error while loading SKU. Needs to pass an id to selected facets'\n )\n }\n\n return maybeFacet.value\n })\n\n const { products } = await clients.search.products({\n query: `sku:${skuIds.join(';')}`,\n page: 0,\n count: skuIds.length,\n })\n\n const skuBySkuId = products.reduce((acc, product) => {\n for (const sku of product.skus) {\n acc[sku.id] = enhanceSku(sku, product)\n }\n\n return acc\n }, {} as Record<string, EnhancedSku>)\n\n const skus = skuIds.map((skuId) => skuBySkuId[skuId])\n const missingSkus = skus.filter((sku) => !sku)\n\n if (missingSkus.length > 0) {\n throw new Error(\n `Search API did not return the following skus: ${missingSkus.join(',')}`\n )\n }\n\n return skus\n }\n\n return new DataLoader<SelectedFacet[], EnhancedSku>(loader, {\n maxBatchSize: 99, // Max allowed batch size of Search API\n })\n}\n","import DataLoader from 'dataloader'\nimport pLimit from 'p-limit'\n\nimport { NotFoundError } from '../utils/errors'\nimport type { CollectionPageType } from '../clients/commerce/types/Portal'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\n\n// Limits concurrent requests to 20 so that they don't timeout\nconst CONCURRENT_REQUESTS_MAX = 20\n\nconst collectionPageTypes = new Set([\n 'brand',\n 'category',\n 'department',\n 'subcategory',\n] as const)\n\nexport const isCollectionPageType = (x: any): x is CollectionPageType =>\n typeof x.pageType === 'string' &&\n collectionPageTypes.has(x.pageType.toLowerCase())\n\nexport const getCollectionLoader = (_: Options, clients: Clients) => {\n const limit = pLimit(CONCURRENT_REQUESTS_MAX)\n\n const loader = async (\n slugs: readonly string[]\n ): Promise<CollectionPageType[]> => {\n return Promise.all(\n slugs.map((slug: string) =>\n limit(async () => {\n const page = await clients.commerce.catalog.portal.pagetype(slug)\n\n if (isCollectionPageType(page)) {\n return page\n }\n\n throw new NotFoundError(\n `Catalog returned ${page.pageType} for slug: ${slug}. This usually happens when there is more than one category with the same name in the same category tree level.`\n )\n })\n )\n )\n }\n\n return new DataLoader<string, CollectionPageType>(loader, {\n // DataLoader is being used to cache requests, not to batch them\n batch: false,\n })\n}\n","import { getSimulationLoader } from './simulation'\nimport { getSkuLoader } from './sku'\nimport { getCollectionLoader } from './collection'\nimport type { Context, Options } from '..'\n\nexport type Loaders = ReturnType<typeof getLoaders>\n\nexport const getLoaders = (options: Options, { clients }: Context) => {\n const skuLoader = getSkuLoader(options, clients)\n const simulationLoader = getSimulationLoader(options, clients)\n const collectionLoader = getCollectionLoader(options, clients)\n\n return {\n skuLoader,\n simulationLoader,\n collectionLoader,\n }\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Simulation } from '../clients/commerce/types/Simulation'\n\ntype Resolvers = (root: Simulation & { product: EnhancedSku }) => unknown\n\nconst inStock = (item: Simulation['items'][0]) =>\n item.availability === 'available'\n\n// Smallest Available Selling Price First\nexport const sortOfferByPrice = (\n items: Simulation['items']\n): Simulation['items'] =>\n items.sort((a, b) => {\n if (inStock(a) && !inStock(b)) {\n return -1\n }\n\n if (!inStock(a) && inStock(b)) {\n return 1\n }\n\n return a.sellingPrice - b.sellingPrice\n })\n\nexport const StoreAggregateOffer: Record<string, Resolvers> = {\n highPrice: ({ items }) => {\n const availableItems = items.filter(inStock)\n const highPrice = availableItems.pop()?.sellingPrice\n\n return (highPrice ?? 0) / 1e2\n },\n lowPrice: ({ items }) => {\n const availableItems = items.filter(inStock)\n const lowPrice = availableItems[0]?.sellingPrice\n\n return (lowPrice ?? 0) / 1e2\n },\n offerCount: ({ items }) => items.length,\n priceCurrency: () => '',\n offers: ({ items, product }) => items.map((item) => ({ ...item, product })),\n}\n","import type { Resolver } from '..'\n\n// TODO: Add a review system integration\nexport const StoreAggregateRating: Record<string, Resolver> = {\n ratingValue: () => 5,\n reviewCount: () => 0,\n}\n","import rawSlugify from '@sindresorhus/slugify'\n\nexport const slugify = (path: string) =>\n rawSlugify(path, { separator: '-', lowercase: true })\n","import { isCollectionPageType } from '../loaders/collection'\nimport { slugify as baseSlugify } from '../utils/slugify'\nimport type { Resolver } from '..'\nimport type { Brand } from '../clients/commerce/types/Brand'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { CollectionPageType } from '../clients/commerce/types/Portal'\n\ntype Root = Brand | (CategoryTree & { level: number }) | CollectionPageType\n\nconst isBrand = (x: any): x is Brand => x.type === 'brand'\n\nconst slugify = (root: Root) => {\n if (isBrand(root)) {\n return baseSlugify(root.name.toLowerCase())\n }\n\n if (isCollectionPageType(root)) {\n return new URL(`https://${root.url}`).pathname.slice(1)\n }\n\n return new URL(root.url).pathname.slice(1)\n}\n\nexport const StoreCollection: Record<string, Resolver<Root>> = {\n id: ({ id }) => id.toString(),\n slug: (root) => slugify(root),\n seo: (root) =>\n isBrand(root) || isCollectionPageType(root)\n ? {\n title: root.title,\n description: root.metaTagDescription,\n }\n : {\n title: root.Title,\n description: root.MetaTagDescription,\n },\n type: (root) =>\n isBrand(root)\n ? 'Brand'\n : isCollectionPageType(root)\n ? root.pageType\n : root.level === 0\n ? 'Department'\n : 'Category',\n meta: (root) =>\n isBrand(root)\n ? {\n selectedFacets: [{ key: 'brand', value: baseSlugify(root.name) }],\n }\n : {\n selectedFacets: new URL(\n isCollectionPageType(root) ? `https://${root.url}` : root.url\n ).pathname\n .slice(1)\n .split('/')\n .map((segment, index) => ({\n key: `category-${index + 1}`,\n value: baseSlugify(segment),\n })),\n },\n breadcrumbList: async (root, _, ctx) => {\n const {\n loaders: { collectionLoader },\n } = ctx\n\n const slug = slugify(root)\n\n /**\n * Split slug into segments so we fetch all data for\n * the breadcrumb. For instance, if we get `/foo/bar`\n * we need all metadata for both `/foo` and `/bar` and\n * thus we need to fetch pageType for `/foo` and `/bar`\n */\n const segments = slug.split('/').filter((segment) => Boolean(segment))\n const slugs = segments.map((__, index) =>\n segments.slice(0, index + 1).join('/')\n )\n\n const collections = await Promise.all(\n slugs.map((s) => collectionLoader.load(s))\n )\n\n return {\n itemListElement: collections.map((collection, index) => ({\n item: new URL(`https://${collection.url}`).pathname.toLowerCase(),\n name: collection.name,\n position: index + 1,\n })),\n numberOfItems: collections.length,\n }\n },\n}\n","import type { Resolver } from '..'\nimport type { Attribute } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Attribute\n\nexport const StoreFacet: Record<string, Resolver<Root>> = {\n key: ({ key }) => key,\n label: ({ label }) => label,\n values: ({ values }) => values,\n type: ({ type }) => (type === 'text' ? 'BOOLEAN' : 'RANGE'),\n}\n","import type { Resolver } from '..'\nimport type { Value } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Value\n\nexport const StoreFacetValue: Record<string, Resolver<Root>> = {\n value: ({ key, from, to }) => key ?? `${from}-to-${to}`,\n label: ({ label }) => label ?? 'unknown',\n selected: ({ active }) => active,\n quantity: ({ count }) => count,\n}\n","import deepEquals from 'fast-deep-equal'\n\nimport type {\n IStoreOrder,\n IStoreCart,\n IStoreOffer,\n} from '../../../__generated__/schema'\nimport type {\n OrderForm,\n OrderFormItem,\n OrderFormInputItem,\n} from '../clients/commerce/types/OrderForm'\nimport type { Context } from '..'\n\ntype Indexed<T> = T & { index?: number }\n\nconst getId = (item: IStoreOffer) =>\n [item.itemOffered.sku, item.seller.identifier, item.price].join('::')\n\nconst orderFormItemToOffer = (\n item: OrderFormItem,\n index?: number\n): Indexed<IStoreOffer> => ({\n listPrice: item.listPrice / 100,\n price: item.sellingPrice / 100,\n quantity: item.quantity,\n seller: { identifier: item.seller },\n itemOffered: {\n sku: item.id,\n image: [],\n name: item.name,\n },\n index,\n})\n\nconst offerToOrderItemInput = (\n offer: Indexed<IStoreOffer>\n): OrderFormInputItem => ({\n quantity: offer.quantity,\n seller: offer.seller.identifier,\n id: offer.itemOffered.sku,\n index: offer.index,\n})\n\nconst groupById = (offers: IStoreOffer[]): Map<string, IStoreOffer> =>\n offers.reduce((acc, item) => {\n const id = getId(item)\n\n acc.set(id, acc.get(id) ?? item)\n\n return acc\n }, new Map<string, IStoreOffer>())\n\nconst equals = (storeOrder: IStoreOrder, orderForm: OrderForm) => {\n const pick = (item: Indexed<IStoreOffer>, index: number) => ({\n ...item,\n itemOffered: {\n sku: item.itemOffered.sku,\n },\n index,\n })\n\n const orderFormItems = orderForm.items.map(orderFormItemToOffer).map(pick)\n const storeOrderItems = storeOrder.acceptedOffer.map(pick)\n\n const isSameOrder = storeOrder.orderNumber === orderForm.orderFormId\n const orderItensAreSync = deepEquals(orderFormItems, storeOrderItems)\n\n return isSameOrder && orderItensAreSync\n}\n\n/**\n * This resolver implements the optimistic cart behavior. The main idea in here\n * is that we receive a cart from the UI (as query params) and we validate it with\n * the commerce platform. If the cart is valid, we return null, if the cart is\n * invalid according to the commerce platform, we return the new cart the UI should use\n * instead\n *\n * The algorithm is something like:\n * 1. Fetch orderForm from VTEX\n * 2. Compute delta changes between the orderForm and the UI's cart\n * 3. Update the orderForm in VTEX platform accordingly\n * 4. If any changes were made, send to the UI the new cart. Null otherwise\n */\nexport const validateCart = async (\n _: unknown,\n { cart: { order } }: { cart: IStoreCart },\n ctx: Context\n) => {\n const { orderNumber, acceptedOffer } = order\n const {\n clients: { commerce },\n loaders: { skuLoader },\n } = ctx\n\n // Step1: Get OrderForm from VTEX Commerce\n const orderForm = await commerce.checkout.orderForm({\n id: orderNumber,\n })\n\n // Step2: Process items from both browser and checkout so they have the same shape\n const browserItemsById = groupById(acceptedOffer)\n const originItemsById = groupById(orderForm.items.map(orderFormItemToOffer))\n const browserItems = Array.from(browserItemsById.values()) // items on the user's browser\n const originItems = Array.from(originItemsById.values()) // items on the VTEX platform backend\n\n // Step3: Compute delta changes\n const { itemsToAdd, itemsToUpdate } = browserItems.reduce(\n (acc, item) => {\n const maybeOriginItem = originItemsById.get(getId(item))\n\n if (!maybeOriginItem) {\n acc.itemsToAdd.push(item)\n } else {\n acc.itemsToUpdate.push({\n ...maybeOriginItem,\n quantity: item.quantity,\n })\n }\n\n return acc\n },\n {\n itemsToAdd: [] as IStoreOffer[],\n itemsToUpdate: [] as IStoreOffer[],\n }\n )\n\n const itemsToDelete = originItems\n .filter((item) => !browserItemsById.has(getId(item)))\n .map((item) => ({ ...item, quantity: 0 }))\n\n const changes = [...itemsToAdd, ...itemsToUpdate, ...itemsToDelete].map(\n offerToOrderItemInput\n )\n\n if (changes.length === 0) {\n return null\n }\n\n // Step4: Apply delta changes to order form\n const updatedOrderForm = await commerce.checkout.updateOrderFormItems({\n id: orderForm.orderFormId,\n orderItems: changes,\n })\n\n // Step5: If no changes detected before/after updating orderForm, the order is validated\n if (equals(order, updatedOrderForm)) {\n return null\n }\n\n // Step6: There were changes, convert orderForm to StoreOrder\n return {\n order: {\n orderNumber: updatedOrderForm.orderFormId,\n acceptedOffer: updatedOrderForm.items.map((item) => ({\n ...item,\n product: skuLoader.load([{ key: 'id', value: item.id }]), // TODO: add channel\n })),\n },\n messages: updatedOrderForm.messages.map(({ text, status }) => ({\n text,\n status: status.toUpperCase(),\n })),\n }\n}\n","export interface Channel {\n regionId?: string\n salesChannel?: string\n}\n\nexport default class ChannelMarshal {\n public static parse(channelString: string): Channel {\n try {\n const parsedChannel = JSON.parse(channelString) as Channel\n\n return {\n regionId: parsedChannel.regionId ?? '',\n salesChannel: parsedChannel.salesChannel ?? '',\n }\n } catch (error) {\n console.error(error)\n\n throw new Error('Malformed channel string')\n }\n }\n\n public static stringify(channel: Channel): string {\n return JSON.stringify(channel)\n }\n}\n","import type { Context } from '..'\nimport type {\n MutationUpdateSessionArgs,\n StoreSession,\n} from '../../../__generated__/schema'\nimport ChannelMarshal from '../utils/channel'\n\nexport const updateSession = async (\n _: any,\n { session }: MutationUpdateSessionArgs,\n { clients }: Context\n): Promise<StoreSession> => {\n const channel = ChannelMarshal.parse(session.channel ?? '')\n const regionData = await clients.commerce.checkout.region({\n postalCode: String(session.postalCode ?? '').replace(/\\D/g, ''),\n country: session.country ?? '',\n })\n\n return {\n ...session,\n channel: ChannelMarshal.stringify({\n ...channel,\n regionId: regionData?.[0]?.id,\n }),\n }\n}\n","import { validateCart } from './validateCart'\nimport { updateSession } from './updateSession'\n\nexport const Mutation = {\n validateCart,\n updateSession,\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { Item } from '../clients/commerce/types/Simulation'\nimport type { OrderFormItem } from '../clients/commerce/types/OrderForm'\n\ntype Root =\n | (Item & { product: EnhancedSku }) // when querying search/product\n | (OrderFormItem & { product: Promise<EnhancedSku> }) // when querying order\n\nexport const StoreOffer: Record<string, Resolver<Root>> = {\n priceCurrency: () => '',\n priceValidUntil: ({ priceValidUntil }) => priceValidUntil ?? '',\n itemCondition: () => 'https://schema.org/NewCondition',\n availability: ({ availability }) =>\n availability === 'available'\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n seller: ({ seller }) => ({\n identifier: seller,\n }),\n price: ({ sellingPrice }) => sellingPrice / 1e2, // TODO add spot price calculation\n sellingPrice: ({ sellingPrice }) => sellingPrice / 1e2,\n listPrice: ({ listPrice }) => listPrice / 1e2,\n itemOffered: ({ product }) => product,\n quantity: ({ quantity }) => quantity,\n}\n","import { slugify } from '../utils/slugify'\nimport type { Resolver } from '..'\nimport type { EnhancedSku } from '../utils/enhanceSku'\nimport { sortOfferByPrice } from './aggregateOffer'\n\ntype Root = EnhancedSku\n\nconst DEFAULT_IMAGE = {\n name: 'image',\n value:\n 'https://storecomponents.vtexassets.com/assets/faststore/images/image___117a6d3e229a96ad0e0d0876352566e2.svg',\n}\n\nconst getSlug = (link: string, id: string) => `${link}-${id}`\nconst getPath = (link: string, id: string) => `/${getSlug(link, id)}/p`\nconst nonEmptyArray = <T>(array: T[] | null | undefined) =>\n Array.isArray(array) && array.length > 0 ? array : null\n\nexport const StoreProduct: Record<string, Resolver<Root>> = {\n productID: ({ id }) => id,\n name: ({ isVariantOf, name }) => name ?? isVariantOf.name,\n slug: ({ isVariantOf: { link }, id }) => getSlug(link, id),\n description: ({ isVariantOf: { description } }) => description,\n seo: ({ isVariantOf: { name, description } }) => ({\n title: name,\n description,\n }),\n brand: ({ isVariantOf: { brand } }) => ({ name: brand }),\n breadcrumbList: ({ isVariantOf: { categoryTrees, name, link }, id }) => ({\n itemListElement: [\n ...categoryTrees.reverse().map(({ categoryNames }, index) => ({\n name: categoryNames[categoryNames.length - 1],\n item: `/${categoryNames\n .map((categoryName) => slugify(categoryName))\n .join('/')}`,\n position: index + 1,\n })),\n {\n name,\n item: getPath(link, id),\n position: categoryTrees.length + 1,\n },\n ],\n numberOfItems: categoryTrees.length,\n }),\n image: ({ isVariantOf, images }) =>\n (\n nonEmptyArray(images) ??\n nonEmptyArray(isVariantOf.images) ?? [DEFAULT_IMAGE]\n ).map(({ name, value }) => ({\n alternateName: name ?? '',\n url: value.replace('vteximg.com.br', 'vtexassets.com'),\n })),\n sku: ({ id }) => id,\n gtin: ({ reference }) => reference ?? '',\n review: () => [],\n aggregateRating: () => ({}),\n offers: async (product, _, ctx) => {\n const {\n loaders: { simulationLoader },\n storage: { channel },\n } = ctx\n\n const { id, policies } = product\n const sellers = policies.find((policy) => policy.id === channel)?.sellers\n\n if (sellers == null) {\n // This error will likely happen when you forget to forward the channel somewhere in your code.\n // Make sure all queries that lead to a product are forwarding the channel in context corectly\n throw new Error(\n `Product with id ${id} has no sellers for channel ${channel}.`\n )\n }\n\n // Unique seller ids\n const sellerIds = sellers.map((seller) => seller.id)\n const items = Array.from(new Set(sellerIds)).map((seller) => ({\n quantity: 1,\n seller,\n id,\n }))\n\n const simulation = await simulationLoader.load(items)\n\n return {\n ...simulation,\n items: sortOfferByPrice(simulation.items),\n product,\n }\n },\n isVariantOf: ({ isVariantOf }) => isVariantOf,\n additionalProperty: ({ attributes = [] }) =>\n attributes.map((attribute) => ({\n name: attribute.key,\n value: attribute.value,\n })),\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Product } from '../clients/search/types/ProductSearchResult'\nimport type { Resolver } from '..'\n\nexport const StoreProductGroup: Record<string, Resolver<Product>> = {\n hasVariant: (root) => root.skus.map((sku) => enhanceSku(sku, root)),\n productGroupID: ({ product }) => product,\n name: ({ name }) => name,\n additionalProperty: ({ textAttributes = [], productSpecifications = [] }) => {\n const specs = new Set(productSpecifications)\n\n return textAttributes\n .filter((attribute) => specs.has(attribute.labelKey))\n .map((attribute) => ({\n name: attribute.labelKey,\n value: attribute.labelValue,\n }))\n },\n}\n","export interface SelectedFacet {\n key: string\n value: string\n}\n\n/**\n * Transform facets from the store to VTEX platform facets.\n * For instance, the channel in Store becomes trade-policy in VTEX's realm\n * */\nexport const transformSelectedFacet = ({ key, value }: SelectedFacet) => {\n switch (key) {\n case 'channel':\n return { key: 'trade-policy', value }\n\n default:\n return { key, value }\n }\n}\n","export const SORT_MAP = {\n price_desc: 'price:desc',\n price_asc: 'price:asc',\n orders_desc: 'orders:desc',\n name_desc: 'name:desc',\n name_asc: 'name:asc',\n release_desc: 'release:desc',\n discount_desc: 'discount:desc',\n score_desc: '',\n} as const\n","import { enhanceSku } from '../utils/enhanceSku'\nimport { transformSelectedFacet } from '../utils/facets'\nimport { SORT_MAP } from '../utils/sort'\nimport { StoreCollection } from './collection'\nimport type {\n QueryProductArgs,\n QueryAllCollectionsArgs,\n QueryAllProductsArgs,\n QuerySearchArgs,\n QueryCollectionArgs,\n} from '../../../__generated__/schema'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { Context } from '../index'\n\nexport const Query = {\n product: async (_: unknown, { locator }: QueryProductArgs, ctx: Context) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n locator.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const {\n loaders: { skuLoader },\n } = ctx\n\n return skuLoader.load(locator.map(transformSelectedFacet))\n },\n collection: (_: unknown, { slug }: QueryCollectionArgs, ctx: Context) => {\n const {\n loaders: { collectionLoader },\n } = ctx\n\n return collectionLoader.load(slug)\n },\n search: async (\n _: unknown,\n { first, after: maybeAfter, sort, term, selectedFacets }: QuerySearchArgs,\n ctx: Context\n ) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n selectedFacets?.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const searchArgs = {\n page: Math.ceil(after / first),\n count: first,\n query: term,\n sort: SORT_MAP[sort ?? 'score_desc'],\n selectedFacets: selectedFacets?.map(transformSelectedFacet) ?? [],\n }\n\n return searchArgs\n },\n allProducts: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllProductsArgs,\n ctx: Context\n ) => {\n const {\n clients: { search },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const products = await search.products({\n page: Math.ceil(after / first),\n count: first,\n })\n\n const skus = products.products\n .map((product) => product.skus.map((sku) => enhanceSku(sku, product)))\n .flat()\n .filter((sku) => sku.sellers.length > 0)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n // after + index is bigger than after+first itself because of the array flat() above\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: (after + index).toString(),\n })),\n }\n },\n allCollections: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllCollectionsArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n\n const [brands, tree] = await Promise.all([\n commerce.catalog.brand.list(),\n commerce.catalog.category.tree(),\n ])\n\n const categories: Array<CategoryTree & { level: number }> = []\n const dfs = (node: CategoryTree, level: number) => {\n categories.push({ ...node, level })\n\n for (const child of node.children) {\n dfs(child, level + 1)\n }\n }\n\n for (const node of tree) {\n dfs(node, 0)\n }\n\n const collections = [\n ...brands\n .filter((brand) => brand.isActive)\n .map((x) => ({ ...x, type: 'brand' })),\n ...categories,\n ]\n\n const validCollections = collections\n // Nullable slugs may cause one route to override the other\n .filter((node) => Boolean(StoreCollection.slug(node, null, ctx, null)))\n\n return {\n pageInfo: {\n hasNextPage: validCollections.length - after > first,\n hasPreviousPage: after > 0,\n startCursor: '0',\n endCursor: (\n Math.min(first, validCollections.length - after) - 1\n ).toString(),\n totalCount: validCollections.length,\n },\n edges: validCollections\n .slice(after, after + first)\n .map((node, index) => ({\n node,\n cursor: (after + index).toString(),\n })),\n }\n },\n person: async (_: unknown, __: unknown, ctx: Context) => {\n const {\n clients: { commerce },\n } = ctx\n\n const {\n namespaces: { profile },\n } = await commerce.session()\n\n return {\n id: profile?.id?.value ?? '',\n email: profile?.email?.value ?? '',\n givenName: profile?.firstName?.value ?? '',\n familyName: profile?.lastName?.value ?? '',\n }\n },\n}\n","import type { Resolver } from '..'\n\nexport const StoreReview: Record<string, Resolver> = {\n reviewRating: () => ({\n ratingValue: 5,\n bestRating: 5,\n }),\n author: () => ({\n name: '',\n }),\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { SearchArgs } from '../clients/search'\nimport type { Attribute } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Omit<SearchArgs, 'type'>\n\nconst REMOVED_FACETS_FROM_COLLECTION_PAGE = ['departamento']\n\nexport const StoreSearchResult: Record<string, Resolver<Root>> = {\n products: async (searchArgs, _, ctx) => {\n const {\n clients: { search },\n } = ctx\n\n const products = await search.products(searchArgs)\n\n const skus = products.products\n .map((product) => {\n const [maybeSku] = product.skus\n\n return maybeSku && enhanceSku(maybeSku, product)\n })\n .filter((sku) => !!sku)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: index.toString(),\n })),\n }\n },\n facets: async (searchArgs, _, ctx) => {\n const {\n clients: { search: is },\n } = ctx\n\n const facets = await is.facets(searchArgs)\n\n const isCollectionPage = !searchArgs.query\n const filteredFacets = facets?.attributes?.reduce((acc, currentFacet) => {\n const shouldFilterFacet = REMOVED_FACETS_FROM_COLLECTION_PAGE.includes(\n currentFacet.key\n )\n\n const shouldRemoveFacetFromCollectionPage =\n isCollectionPage && shouldFilterFacet\n\n if (shouldRemoveFacetFromCollectionPage) {\n return acc\n }\n\n currentFacet.values.sort((a, b) => {\n const firstItemLabel = a.label ?? ''\n const secondItemLabel = b.label ?? ''\n\n return firstItemLabel.localeCompare(secondItemLabel)\n })\n\n acc.push(currentFacet)\n\n return acc\n }, [] as Attribute[])\n\n return filteredFacets ?? []\n },\n}\n","import type { Resolver } from '..'\n\ntype Root = { title?: string; description?: string }\n\nexport const StoreSeo: Record<string, Resolver<Root>> = {\n title: ({ title }) => title ?? '',\n description: ({ description }) => description ?? '',\n titleTemplate: () => '',\n canonical: () => '',\n}\n","import { getClients } from './clients'\nimport { getLoaders } from './loaders'\nimport { StoreAggregateOffer } from './resolvers/aggregateOffer'\nimport { StoreAggregateRating } from './resolvers/aggregateRating'\nimport { StoreCollection } from './resolvers/collection'\nimport { StoreFacet } from './resolvers/facet'\nimport { StoreFacetValue } from './resolvers/facetValue'\nimport { Mutation } from './resolvers/mutation'\nimport { StoreOffer } from './resolvers/offer'\nimport { StoreProduct } from './resolvers/product'\nimport { StoreProductGroup } from './resolvers/productGroup'\nimport { Query } from './resolvers/query'\nimport { StoreReview } from './resolvers/review'\nimport { StoreSearchResult } from './resolvers/searchResult'\nimport { StoreSeo } from './resolvers/seo'\nimport type { Loaders } from './loaders'\nimport type { Clients } from './clients'\n\nexport interface Options {\n platform: 'vtex'\n account: string\n environment: 'vtexcommercestable' | 'vtexcommercebeta'\n // Default sales channel to use for fetching products\n channel: string\n hideUnavailableItems: boolean\n}\n\nexport interface Context {\n clients: Clients\n loaders: Loaders\n /**\n * @description Storage updated at each request.\n *\n * Use this datastructure to store and share small values in the context.\n * Use it with caution since dependecy injection leads to a more complex code\n * */\n storage: {\n channel: string\n }\n headers: Record<string, string>\n}\n\nexport type Resolver<R = unknown, A = unknown> = (\n root: R,\n args: A,\n ctx: Context,\n info: any\n) => any\n\nconst Resolvers = {\n StoreCollection,\n StoreAggregateOffer,\n StoreProduct,\n StoreSeo,\n StoreFacet,\n StoreFacetValue,\n StoreOffer,\n StoreAggregateRating,\n StoreReview,\n StoreProductGroup,\n StoreSearchResult,\n Query,\n Mutation,\n}\n\nexport const getContextFactory = (options: Options) => (ctx: any) => {\n ctx.storage = {\n channel: options.channel,\n }\n ctx.clients = getClients(options, ctx)\n ctx.loaders = getLoaders(options, ctx)\n\n return ctx\n}\n\nexport const getResolvers = (_: Options) => Resolvers\n","import { print } from 'graphql'\n\nimport AggregateOffer from './aggregateOffer.graphql'\nimport AggregateRating from './aggregateRating.graphql'\nimport Author from './author.graphql'\nimport Brand from './brand.graphql'\nimport Breadcrumb from './breadcrumb.graphql'\nimport Collection from './collection.graphql'\nimport Facet from './facet.graphql'\nimport Image from './image.graphql'\nimport Mutation from './mutation.graphql'\nimport Offer from './offer.graphql'\nimport Order from './order.graphql'\nimport Organization from './organization.graphql'\nimport PageInfo from './pageInfo.graphql'\nimport Product from './product.graphql'\nimport ProductGroup from './productGroup.graphql'\nimport Query from './query.graphql'\nimport Review from './review.graphql'\nimport Seo from './seo.graphql'\nimport Cart from './cart.graphql'\nimport Status from './status.graphql'\nimport PropertyValue from './propertyValue.graphql'\n\nexport const typeDefs = [\n Query,\n Mutation,\n Brand,\n Breadcrumb,\n Collection,\n Facet,\n Image,\n PageInfo,\n Product,\n Seo,\n Offer,\n AggregateRating,\n Review,\n Author,\n ProductGroup,\n Organization,\n AggregateOffer,\n Order,\n Cart,\n Status,\n PropertyValue,\n]\n .map(print)\n .join('\\n')\n","import { makeExecutableSchema } from '@graphql-tools/schema'\n\nimport {\n getContextFactory as getContextFactoryVTEX,\n getResolvers as getResolversVTEX,\n} from './platforms/vtex'\nimport { typeDefs } from './typeDefs'\nimport type { Options as OptionsVTEX } from './platforms/vtex'\n\nexport * from './__generated__/schema'\n\nexport type Options = OptionsVTEX\n\nconst platforms = {\n vtex: {\n getResolvers: getResolversVTEX,\n getContextFactory: getContextFactoryVTEX,\n },\n}\n\nexport const getTypeDefs = () => typeDefs\n\nexport const getResolvers = (options: Options) =>\n platforms[options.platform].getResolvers(options)\n\nexport const getContextFactory = (options: Options) =>\n platforms[options.platform].getContextFactory(options)\n\nexport const getSchema = async (options: Options) =>\n makeExecutableSchema({\n resolvers: getResolvers(options),\n typeDefs,\n })\n"],"names":["fetchAPI","info","init","response","fetch","ok","json","console","error","text","Error","BASE_INIT","method","headers","VtexCommerce","account","environment","ctx","base","catalog","brand","list","category","tree","depth","portal","pagetype","slug","checkout","simulation","args","salesChannel","storage","channel","params","URLSearchParams","sc","toString","body","JSON","stringify","orderForm","id","refreshOutdatedData","updateOrderFormItems","orderItems","allowOutdatedData","region","postalCode","country","session","cookie","IntelligentSearch","hideUnavailableItems","policyFacet","key","value","addDefaultFacets","facets","facet","find","undefined","search","query","page","count","sort","selectedFacets","type","fuzzy","append","pathname","map","join","products","getClients","options","commerce","CONCURRENT_REQUESTS_MAX","getSimulationLoader","_","clients","limit","pLimit","loader","allItems","items","flat","simulated","reduce","acc","item","index","requestIndex","length","Array","fill","itemsIndices","curr","__","slice","filter","Boolean","limited","DataLoader","maxBatchSize","BadRequestError","constructor","message","name","NotFoundError","enhanceSku","sku","product","isVariantOf","getSkuLoader","facetsList","skuIds","maybeFacet","skuBySkuId","skus","skuId","missingSkus","collectionPageTypes","Set","isCollectionPageType","x","pageType","has","toLowerCase","getCollectionLoader","slugs","Promise","all","batch","getLoaders","skuLoader","simulationLoader","collectionLoader","inStock","availability","sortOfferByPrice","a","b","sellingPrice","StoreAggregateOffer","highPrice","availableItems","pop","lowPrice","offerCount","priceCurrency","offers","StoreAggregateRating","ratingValue","reviewCount","slugify","path","rawSlugify","separator","lowercase","isBrand","root","baseSlugify","URL","url","StoreCollection","seo","title","description","metaTagDescription","Title","MetaTagDescription","level","meta","split","segment","breadcrumbList","loaders","segments","collections","s","load","itemListElement","collection","position","numberOfItems","StoreFacet","label","values","StoreFacetValue","from","to","selected","active","quantity","getId","itemOffered","seller","identifier","price","orderFormItemToOffer","listPrice","image","offerToOrderItemInput","offer","groupById","set","get","Map","equals","storeOrder","pick","orderFormItems","storeOrderItems","acceptedOffer","isSameOrder","orderNumber","orderFormId","orderItensAreSync","deepEquals","validateCart","cart","order","browserItemsById","originItemsById","browserItems","originItems","itemsToAdd","itemsToUpdate","maybeOriginItem","push","itemsToDelete","changes","updatedOrderForm","messages","status","toUpperCase","ChannelMarshal","parse","channelString","parsedChannel","regionId","updateSession","regionData","String","replace","Mutation","StoreOffer","priceValidUntil","itemCondition","DEFAULT_IMAGE","getSlug","link","getPath","nonEmptyArray","array","isArray","StoreProduct","productID","categoryTrees","reverse","categoryNames","categoryName","images","alternateName","gtin","reference","review","aggregateRating","policies","sellers","policy","sellerIds","additionalProperty","attributes","attribute","StoreProductGroup","hasVariant","productGroupID","textAttributes","productSpecifications","specs","labelKey","labelValue","transformSelectedFacet","SORT_MAP","price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc","Query","locator","first","after","maybeAfter","term","Number","searchArgs","Math","ceil","allProducts","pageInfo","hasNextPage","pagination","hasPreviousPage","before","startCursor","endCursor","total","totalCount","edges","node","cursor","allCollections","brands","categories","dfs","child","children","isActive","validCollections","min","person","namespaces","profile","email","givenName","firstName","familyName","lastName","StoreReview","reviewRating","bestRating","author","REMOVED_FACETS_FROM_COLLECTION_PAGE","StoreSearchResult","maybeSku","is","isCollectionPage","filteredFacets","currentFacet","shouldFilterFacet","includes","shouldRemoveFacetFromCollectionPage","firstItemLabel","secondItemLabel","localeCompare","StoreSeo","titleTemplate","canonical","Resolvers","getContextFactory","getResolvers","typeDefs","Brand","Breadcrumb","Collection","Facet","Image","PageInfo","Product","Seo","Offer","AggregateRating","Review","Author","ProductGroup","Organization","AggregateOffer","Order","Cart","Status","PropertyValue","print","platforms","vtex","getResolversVTEX","getContextFactoryVTEX","getTypeDefs","platform","getSchema","makeExecutableSchema","resolvers"],"mappings":"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"}
1
+ {"version":3,"file":"api.esm.js","sources":["../src/platforms/vtex/clients/fetch.ts","../src/platforms/vtex/clients/commerce/index.ts","../src/platforms/vtex/clients/search/index.ts","../src/platforms/vtex/clients/index.ts","../src/platforms/vtex/loaders/simulation.ts","../src/platforms/vtex/utils/errors.ts","../src/platforms/vtex/utils/enhanceSku.ts","../src/platforms/vtex/loaders/sku.ts","../src/platforms/vtex/loaders/collection.ts","../src/platforms/vtex/loaders/index.ts","../src/platforms/vtex/resolvers/aggregateOffer.ts","../src/platforms/vtex/resolvers/aggregateRating.ts","../src/platforms/vtex/utils/slugify.ts","../src/platforms/vtex/resolvers/collection.ts","../src/platforms/vtex/resolvers/facet.ts","../src/platforms/vtex/resolvers/facetValue.ts","../src/platforms/vtex/resolvers/validateCart.ts","../src/platforms/vtex/utils/channel.ts","../src/platforms/vtex/resolvers/updateSession.ts","../src/platforms/vtex/resolvers/mutation.ts","../src/platforms/vtex/resolvers/offer.ts","../src/platforms/vtex/resolvers/product.ts","../src/platforms/vtex/resolvers/productGroup.ts","../src/platforms/vtex/utils/facets.ts","../src/platforms/vtex/utils/sort.ts","../src/platforms/vtex/resolvers/query.ts","../src/platforms/vtex/resolvers/review.ts","../src/platforms/vtex/resolvers/searchResult.ts","../src/platforms/vtex/resolvers/seo.ts","../src/platforms/vtex/index.ts","../src/typeDefs/index.ts","../src/index.ts"],"sourcesContent":["import fetch from 'isomorphic-unfetch'\n\nexport const fetchAPI = async (info: RequestInfo, init?: RequestInit) => {\n const response = await fetch(info, init)\n\n if (response.ok) {\n return response.json()\n }\n\n console.error(info, init, response)\n const text = await response.text()\n\n throw new Error(text)\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { Brand } from './types/Brand'\nimport type { CategoryTree } from './types/CategoryTree'\nimport type { OrderForm, OrderFormInputItem } from './types/OrderForm'\nimport type { PortalPagetype } from './types/Portal'\nimport type { Region, RegionInput } from './types/Region'\nimport type {\n Simulation,\n SimulationArgs,\n SimulationOptions,\n} from './types/Simulation'\nimport type { Session } from './types/Session'\n\nconst BASE_INIT = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n}\n\nexport const VtexCommerce = (\n { account, environment }: Options,\n ctx: Context\n) => {\n const base = `https://${account}.${environment}.com.br`\n\n return {\n catalog: {\n brand: {\n list: (): Promise<Brand[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/brand/list`),\n },\n category: {\n tree: (depth = 3): Promise<CategoryTree[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/category/tree/${depth}`),\n },\n portal: {\n pagetype: (slug: string): Promise<PortalPagetype> =>\n fetchAPI(`${base}/api/catalog_system/pub/portal/pagetype/${slug}`),\n },\n },\n checkout: {\n simulation: (\n args: SimulationArgs,\n { salesChannel }: SimulationOptions = {\n salesChannel: ctx.storage.channel,\n }\n ): Promise<Simulation> => {\n const params = new URLSearchParams({\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForms/simulation?${params.toString()}`,\n {\n ...BASE_INIT,\n body: JSON.stringify(args),\n }\n )\n },\n orderForm: ({\n id,\n refreshOutdatedData = true,\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n refreshOutdatedData?: boolean\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n refreshOutdatedData: refreshOutdatedData.toString(),\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}?${params.toString()}`,\n BASE_INIT\n )\n },\n updateOrderFormItems: ({\n id,\n orderItems,\n allowOutdatedData = 'paymentData',\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n orderItems: OrderFormInputItem[]\n allowOutdatedData?: 'paymentData'\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n allowOutdatedData,\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}/items?${params}`,\n {\n ...BASE_INIT,\n body: JSON.stringify({ orderItems }),\n method: 'PATCH',\n }\n )\n },\n region: async ({\n postalCode,\n country,\n salesChannel,\n }: RegionInput): Promise<Region> => {\n return fetchAPI(\n `${base}/api/checkout/pub/regions/?postalCode=${postalCode}&country=${country}&sc=${\n salesChannel ?? ''\n }`\n )\n },\n },\n session: (): Promise<Session> =>\n fetchAPI(\n `${base}/api/sessions?items=profile.id,profile.email,profile.firstName,profile.lastName`,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n cookie: ctx.headers.cookie,\n },\n body: '{}',\n }\n ),\n }\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { SelectedFacet } from '../../utils/facets'\nimport type { ProductSearchResult } from './types/ProductSearchResult'\nimport type { AttributeSearchResult } from './types/AttributeSearchResult'\n\nexport type Sort =\n | 'price:desc'\n | 'price:asc'\n | 'orders:desc'\n | 'name:desc'\n | 'name:asc'\n | 'release:desc'\n | 'discount:desc'\n | ''\n\nexport interface SearchArgs {\n query?: string\n page: number\n count: number\n type: 'product_search' | 'attribute_search'\n sort?: Sort\n selectedFacets?: SelectedFacet[]\n fuzzy?: '0' | '1'\n hideUnavailableItems?: boolean\n}\n\nexport interface ProductLocator {\n field: 'id' | 'slug'\n value: string\n}\n\nexport const IntelligentSearch = (\n { account, environment, hideUnavailableItems }: Options,\n ctx: Context\n) => {\n const base = `http://portal.${environment}.com.br/search-api/v1/${account}`\n const policyFacet = { key: 'trade-policy', value: ctx.storage.channel }\n\n const addDefaultFacets = (facets: SelectedFacet[]) => {\n const facet = facets.find(({ key }) => key === policyFacet.key)\n\n if (facet === undefined) {\n return [...facets, policyFacet]\n }\n\n return facets\n }\n\n const search = <T>({\n query = '',\n page,\n count,\n sort = '',\n selectedFacets = [],\n type,\n fuzzy = '0',\n }: SearchArgs): Promise<T> => {\n const params = new URLSearchParams({\n page: (page + 1).toString(),\n count: count.toString(),\n query,\n sort,\n fuzzy,\n })\n\n if (hideUnavailableItems !== undefined) {\n params.append('hide-unavailable-items', hideUnavailableItems.toString())\n }\n\n const pathname = addDefaultFacets(selectedFacets)\n .map(({ key, value }) => `${key}/${value}`)\n .join('/')\n\n return fetchAPI(\n `${base}/api/split/${type}/${pathname}?${params.toString()}`\n )\n }\n\n const products = (args: Omit<SearchArgs, 'type'>) =>\n search<ProductSearchResult>({ ...args, type: 'product_search' })\n\n const facets = (args: Omit<SearchArgs, 'type'>) =>\n search<AttributeSearchResult>({ ...args, type: 'attribute_search' })\n\n return {\n facets,\n products,\n }\n}\n","import { VtexCommerce } from './commerce'\nimport { IntelligentSearch } from './search'\nimport type { Context, Options } from '..'\n\nexport type Clients = ReturnType<typeof getClients>\n\nexport const getClients = (options: Options, ctx: Context) => {\n const search = IntelligentSearch(options, ctx)\n const commerce = VtexCommerce(options, ctx)\n\n return {\n search,\n commerce,\n }\n}\n","import DataLoader from 'dataloader'\nimport pLimit from 'p-limit'\n\nimport type {\n PayloadItem,\n Simulation,\n} from '../clients/commerce/types/Simulation'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\n\n// Limits concurrent requests to the API per request cycle\nconst CONCURRENT_REQUESTS_MAX = 1\n\nexport const getSimulationLoader = (_: Options, clients: Clients) => {\n const limit = pLimit(CONCURRENT_REQUESTS_MAX)\n\n const loader = async (allItems: readonly PayloadItem[][]) => {\n const items = [...allItems.flat()]\n const simulation = await clients.commerce.checkout.simulation({\n items,\n })\n\n // Sort and filter simulation since Checkout API may return\n // items that we didn't ask for\n const simulated = simulation.items.reduce((acc, item) => {\n const index = item.requestIndex\n\n if (typeof index === 'number' && index < acc.length) {\n acc[index] = item\n }\n\n return acc\n }, Array(items.length).fill(null) as Simulation['items'])\n\n const itemsIndices = allItems.reduce(\n (acc, curr) => [...acc, curr.length + acc[acc.length - 1]],\n [0]\n )\n\n return allItems.map((__, index) => ({\n ...simulation,\n items: simulated\n .slice(itemsIndices[index], itemsIndices[index + 1])\n .filter((item) => Boolean(item)),\n }))\n }\n\n const limited = async (allItems: readonly PayloadItem[][]) =>\n limit(loader, allItems)\n\n return new DataLoader<PayloadItem[], Simulation>(limited, {\n maxBatchSize: 50,\n })\n}\n","export class BadRequestError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'BadRequestError'\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'NotFoundError'\n }\n}\n","import type { Product, Sku } from '../clients/search/types/ProductSearchResult'\n\nexport type EnhancedSku = Sku & { isVariantOf: Product }\n\nexport const enhanceSku = (sku: Sku, product: Product): EnhancedSku => ({\n ...sku,\n isVariantOf: product,\n})\n","import DataLoader from 'dataloader'\n\nimport { BadRequestError } from '../utils/errors'\nimport { enhanceSku } from '../utils/enhanceSku'\nimport type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\nimport type { SelectedFacet } from '../utils/facets'\n\nexport const getSkuLoader = (_: Options, clients: Clients) => {\n const loader = async (facetsList: readonly SelectedFacet[][]) => {\n const skuIds = facetsList.map((facets) => {\n const maybeFacet = facets.find(({ key }) => key === 'id')\n\n if (!maybeFacet) {\n throw new BadRequestError(\n 'Error while loading SKU. Needs to pass an id to selected facets'\n )\n }\n\n return maybeFacet.value\n })\n\n const { products } = await clients.search.products({\n query: `sku:${skuIds.join(';')}`,\n page: 0,\n count: skuIds.length,\n })\n\n const skuBySkuId = products.reduce((acc, product) => {\n for (const sku of product.skus) {\n acc[sku.id] = enhanceSku(sku, product)\n }\n\n return acc\n }, {} as Record<string, EnhancedSku>)\n\n const skus = skuIds.map((skuId) => skuBySkuId[skuId])\n const missingSkus = skus.filter((sku) => !sku)\n\n if (missingSkus.length > 0) {\n throw new Error(\n `Search API did not return the following skus: ${missingSkus.join(',')}`\n )\n }\n\n return skus\n }\n\n return new DataLoader<SelectedFacet[], EnhancedSku>(loader, {\n maxBatchSize: 99, // Max allowed batch size of Search API\n })\n}\n","import DataLoader from 'dataloader'\nimport pLimit from 'p-limit'\n\nimport { NotFoundError } from '../utils/errors'\nimport type { CollectionPageType } from '../clients/commerce/types/Portal'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\n\n// Limits concurrent requests to 20 so that they don't timeout\nconst CONCURRENT_REQUESTS_MAX = 20\n\nconst collectionPageTypes = new Set([\n 'brand',\n 'category',\n 'department',\n 'subcategory',\n] as const)\n\nexport const isCollectionPageType = (x: any): x is CollectionPageType =>\n typeof x.pageType === 'string' &&\n collectionPageTypes.has(x.pageType.toLowerCase())\n\nexport const getCollectionLoader = (_: Options, clients: Clients) => {\n const limit = pLimit(CONCURRENT_REQUESTS_MAX)\n\n const loader = async (\n slugs: readonly string[]\n ): Promise<CollectionPageType[]> => {\n return Promise.all(\n slugs.map((slug: string) =>\n limit(async () => {\n const page = await clients.commerce.catalog.portal.pagetype(slug)\n\n if (isCollectionPageType(page)) {\n return page\n }\n\n throw new NotFoundError(\n `Catalog returned ${page.pageType} for slug: ${slug}. This usually happens when there is more than one category with the same name in the same category tree level.`\n )\n })\n )\n )\n }\n\n return new DataLoader<string, CollectionPageType>(loader, {\n // DataLoader is being used to cache requests, not to batch them\n batch: false,\n })\n}\n","import { getSimulationLoader } from './simulation'\nimport { getSkuLoader } from './sku'\nimport { getCollectionLoader } from './collection'\nimport type { Context, Options } from '..'\n\nexport type Loaders = ReturnType<typeof getLoaders>\n\nexport const getLoaders = (options: Options, { clients }: Context) => {\n const skuLoader = getSkuLoader(options, clients)\n const simulationLoader = getSimulationLoader(options, clients)\n const collectionLoader = getCollectionLoader(options, clients)\n\n return {\n skuLoader,\n simulationLoader,\n collectionLoader,\n }\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Simulation } from '../clients/commerce/types/Simulation'\n\ntype Resolvers = (root: Simulation & { product: EnhancedSku }) => unknown\n\nconst inStock = (item: Simulation['items'][0]) =>\n item.availability === 'available'\n\n// Smallest Available Selling Price First\nexport const sortOfferByPrice = (\n items: Simulation['items']\n): Simulation['items'] =>\n items.sort((a, b) => {\n if (inStock(a) && !inStock(b)) {\n return -1\n }\n\n if (!inStock(a) && inStock(b)) {\n return 1\n }\n\n return a.sellingPrice - b.sellingPrice\n })\n\nexport const StoreAggregateOffer: Record<string, Resolvers> = {\n highPrice: ({ items }) => {\n const availableItems = items.filter(inStock)\n const highPrice = availableItems.pop()?.sellingPrice\n\n return (highPrice ?? 0) / 1e2\n },\n lowPrice: ({ items }) => {\n const availableItems = items.filter(inStock)\n const lowPrice = availableItems[0]?.sellingPrice\n\n return (lowPrice ?? 0) / 1e2\n },\n offerCount: ({ items }) => items.length,\n priceCurrency: () => '',\n offers: ({ items, product }) => items.map((item) => ({ ...item, product })),\n}\n","import type { Resolver } from '..'\n\n// TODO: Add a review system integration\nexport const StoreAggregateRating: Record<string, Resolver> = {\n ratingValue: () => 5,\n reviewCount: () => 0,\n}\n","import rawSlugify from '@sindresorhus/slugify'\n\nexport const slugify = (path: string) =>\n rawSlugify(path, { separator: '-', lowercase: true })\n","import { isCollectionPageType } from '../loaders/collection'\nimport { slugify as baseSlugify } from '../utils/slugify'\nimport type { Resolver } from '..'\nimport type { Brand } from '../clients/commerce/types/Brand'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { CollectionPageType } from '../clients/commerce/types/Portal'\n\ntype Root = Brand | (CategoryTree & { level: number }) | CollectionPageType\n\nconst isBrand = (x: any): x is Brand => x.type === 'brand'\n\nconst slugify = (root: Root) => {\n if (isBrand(root)) {\n return baseSlugify(root.name.toLowerCase())\n }\n\n if (isCollectionPageType(root)) {\n return new URL(`https://${root.url}`).pathname.slice(1)\n }\n\n return new URL(root.url).pathname.slice(1)\n}\n\nexport const StoreCollection: Record<string, Resolver<Root>> = {\n id: ({ id }) => id.toString(),\n slug: (root) => slugify(root),\n seo: (root) =>\n isBrand(root) || isCollectionPageType(root)\n ? {\n title: root.title,\n description: root.metaTagDescription,\n }\n : {\n title: root.Title,\n description: root.MetaTagDescription,\n },\n type: (root) =>\n isBrand(root)\n ? 'Brand'\n : isCollectionPageType(root)\n ? root.pageType\n : root.level === 0\n ? 'Department'\n : 'Category',\n meta: (root) =>\n isBrand(root)\n ? {\n selectedFacets: [{ key: 'brand', value: baseSlugify(root.name) }],\n }\n : {\n selectedFacets: new URL(\n isCollectionPageType(root) ? `https://${root.url}` : root.url\n ).pathname\n .slice(1)\n .split('/')\n .map((segment, index) => ({\n key: `category-${index + 1}`,\n value: baseSlugify(segment),\n })),\n },\n breadcrumbList: async (root, _, ctx) => {\n const {\n loaders: { collectionLoader },\n } = ctx\n\n const slug = slugify(root)\n\n /**\n * Split slug into segments so we fetch all data for\n * the breadcrumb. For instance, if we get `/foo/bar`\n * we need all metadata for both `/foo` and `/bar` and\n * thus we need to fetch pageType for `/foo` and `/bar`\n */\n const segments = slug.split('/').filter((segment) => Boolean(segment))\n const slugs = segments.map((__, index) =>\n segments.slice(0, index + 1).join('/')\n )\n\n const collections = await Promise.all(\n slugs.map((s) => collectionLoader.load(s))\n )\n\n return {\n itemListElement: collections.map((collection, index) => ({\n item: new URL(`https://${collection.url}`).pathname.toLowerCase(),\n name: collection.name,\n position: index + 1,\n })),\n numberOfItems: collections.length,\n }\n },\n}\n","import type { Resolver } from '..'\nimport type { Attribute } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Attribute\n\nexport const StoreFacet: Record<string, Resolver<Root>> = {\n key: ({ key }) => key,\n label: ({ label }) => label,\n values: ({ values }) => values,\n type: ({ type }) => (type === 'text' ? 'BOOLEAN' : 'RANGE'),\n}\n","import type { Resolver } from '..'\nimport type { Value } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Value\n\nexport const StoreFacetValue: Record<string, Resolver<Root>> = {\n value: ({ key, from, to }) => key ?? `${from}-to-${to}`,\n label: ({ label }) => label ?? 'unknown',\n selected: ({ active }) => active,\n quantity: ({ count }) => count,\n}\n","import deepEquals from 'fast-deep-equal'\n\nimport type {\n IStoreOrder,\n IStoreCart,\n IStoreOffer,\n} from '../../../__generated__/schema'\nimport type {\n OrderForm,\n OrderFormItem,\n OrderFormInputItem,\n} from '../clients/commerce/types/OrderForm'\nimport type { Context } from '..'\n\ntype Indexed<T> = T & { index?: number }\n\nconst getId = (item: IStoreOffer) =>\n [item.itemOffered.sku, item.seller.identifier, item.price].join('::')\n\nconst orderFormItemToOffer = (\n item: OrderFormItem,\n index?: number\n): Indexed<IStoreOffer> => ({\n listPrice: item.listPrice / 100,\n price: item.sellingPrice / 100,\n quantity: item.quantity,\n seller: { identifier: item.seller },\n itemOffered: {\n sku: item.id,\n image: [],\n name: item.name,\n },\n index,\n})\n\nconst offerToOrderItemInput = (\n offer: Indexed<IStoreOffer>\n): OrderFormInputItem => ({\n quantity: offer.quantity,\n seller: offer.seller.identifier,\n id: offer.itemOffered.sku,\n index: offer.index,\n})\n\nconst groupById = (offers: IStoreOffer[]): Map<string, IStoreOffer> =>\n offers.reduce((acc, item) => {\n const id = getId(item)\n\n acc.set(id, acc.get(id) ?? item)\n\n return acc\n }, new Map<string, IStoreOffer>())\n\nconst equals = (storeOrder: IStoreOrder, orderForm: OrderForm) => {\n const pick = (item: Indexed<IStoreOffer>, index: number) => ({\n ...item,\n itemOffered: {\n sku: item.itemOffered.sku,\n },\n index,\n })\n\n const orderFormItems = orderForm.items.map(orderFormItemToOffer).map(pick)\n const storeOrderItems = storeOrder.acceptedOffer.map(pick)\n\n const isSameOrder = storeOrder.orderNumber === orderForm.orderFormId\n const orderItensAreSync = deepEquals(orderFormItems, storeOrderItems)\n\n return isSameOrder && orderItensAreSync\n}\n\n/**\n * This resolver implements the optimistic cart behavior. The main idea in here\n * is that we receive a cart from the UI (as query params) and we validate it with\n * the commerce platform. If the cart is valid, we return null, if the cart is\n * invalid according to the commerce platform, we return the new cart the UI should use\n * instead\n *\n * The algorithm is something like:\n * 1. Fetch orderForm from VTEX\n * 2. Compute delta changes between the orderForm and the UI's cart\n * 3. Update the orderForm in VTEX platform accordingly\n * 4. If any changes were made, send to the UI the new cart. Null otherwise\n */\nexport const validateCart = async (\n _: unknown,\n { cart: { order } }: { cart: IStoreCart },\n ctx: Context\n) => {\n const { orderNumber, acceptedOffer } = order\n const {\n clients: { commerce },\n loaders: { skuLoader },\n } = ctx\n\n // Step1: Get OrderForm from VTEX Commerce\n const orderForm = await commerce.checkout.orderForm({\n id: orderNumber,\n })\n\n // Step2: Process items from both browser and checkout so they have the same shape\n const browserItemsById = groupById(acceptedOffer)\n const originItemsById = groupById(orderForm.items.map(orderFormItemToOffer))\n const browserItems = Array.from(browserItemsById.values()) // items on the user's browser\n const originItems = Array.from(originItemsById.values()) // items on the VTEX platform backend\n\n // Step3: Compute delta changes\n const { itemsToAdd, itemsToUpdate } = browserItems.reduce(\n (acc, item) => {\n const maybeOriginItem = originItemsById.get(getId(item))\n\n if (!maybeOriginItem) {\n acc.itemsToAdd.push(item)\n } else {\n acc.itemsToUpdate.push({\n ...maybeOriginItem,\n quantity: item.quantity,\n })\n }\n\n return acc\n },\n {\n itemsToAdd: [] as IStoreOffer[],\n itemsToUpdate: [] as IStoreOffer[],\n }\n )\n\n const itemsToDelete = originItems\n .filter((item) => !browserItemsById.has(getId(item)))\n .map((item) => ({ ...item, quantity: 0 }))\n\n const changes = [...itemsToAdd, ...itemsToUpdate, ...itemsToDelete].map(\n offerToOrderItemInput\n )\n\n if (changes.length === 0) {\n return null\n }\n\n // Step4: Apply delta changes to order form\n const updatedOrderForm = await commerce.checkout.updateOrderFormItems({\n id: orderForm.orderFormId,\n orderItems: changes,\n })\n\n // Step5: If no changes detected before/after updating orderForm, the order is validated\n if (equals(order, updatedOrderForm)) {\n return null\n }\n\n // Step6: There were changes, convert orderForm to StoreOrder\n return {\n order: {\n orderNumber: updatedOrderForm.orderFormId,\n acceptedOffer: updatedOrderForm.items.map((item) => ({\n ...item,\n product: skuLoader.load([{ key: 'id', value: item.id }]), // TODO: add channel\n })),\n },\n messages: updatedOrderForm.messages.map(({ text, status }) => ({\n text,\n status: status.toUpperCase(),\n })),\n }\n}\n","export interface Channel {\n regionId?: string\n salesChannel?: string\n}\n\nexport default class ChannelMarshal {\n public static parse(channelString: string): Channel {\n try {\n const parsedChannel = JSON.parse(channelString) as Channel\n\n return {\n regionId: parsedChannel.regionId ?? '',\n salesChannel: parsedChannel.salesChannel ?? '',\n }\n } catch (error) {\n console.error(error)\n\n throw new Error('Malformed channel string')\n }\n }\n\n public static stringify(channel: Channel): string {\n return JSON.stringify(channel)\n }\n}\n","import type { Context } from '..'\nimport type {\n MutationUpdateSessionArgs,\n StoreSession,\n} from '../../../__generated__/schema'\nimport ChannelMarshal from '../utils/channel'\n\nexport const updateSession = async (\n _: any,\n { session }: MutationUpdateSessionArgs,\n { clients }: Context\n): Promise<StoreSession> => {\n const channel = ChannelMarshal.parse(session.channel ?? '')\n const regionData = await clients.commerce.checkout.region({\n postalCode: String(session.postalCode ?? '').replace(/\\D/g, ''),\n country: session.country ?? '',\n })\n\n return {\n ...session,\n channel: ChannelMarshal.stringify({\n ...channel,\n regionId: regionData?.[0]?.id,\n }),\n }\n}\n","import { validateCart } from './validateCart'\nimport { updateSession } from './updateSession'\n\nexport const Mutation = {\n validateCart,\n updateSession,\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { Item } from '../clients/commerce/types/Simulation'\nimport type { OrderFormItem } from '../clients/commerce/types/OrderForm'\n\ntype Root =\n | (Item & { product: EnhancedSku }) // when querying search/product\n | (OrderFormItem & { product: Promise<EnhancedSku> }) // when querying order\n\nexport const StoreOffer: Record<string, Resolver<Root>> = {\n priceCurrency: () => '',\n priceValidUntil: ({ priceValidUntil }) => priceValidUntil ?? '',\n itemCondition: () => 'https://schema.org/NewCondition',\n availability: ({ availability }) =>\n availability === 'available'\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n seller: ({ seller }) => ({\n identifier: seller,\n }),\n price: ({ sellingPrice }) => sellingPrice / 1e2, // TODO add spot price calculation\n sellingPrice: ({ sellingPrice }) => sellingPrice / 1e2,\n listPrice: ({ listPrice }) => listPrice / 1e2,\n itemOffered: ({ product }) => product,\n quantity: ({ quantity }) => quantity,\n}\n","import { slugify } from '../utils/slugify'\nimport type { Resolver } from '..'\nimport type { EnhancedSku } from '../utils/enhanceSku'\nimport { sortOfferByPrice } from './aggregateOffer'\n\ntype Root = EnhancedSku\n\nconst DEFAULT_IMAGE = {\n name: 'image',\n value:\n 'https://storecomponents.vtexassets.com/assets/faststore/images/image___117a6d3e229a96ad0e0d0876352566e2.svg',\n}\n\nconst getSlug = (link: string, id: string) => `${link}-${id}`\nconst getPath = (link: string, id: string) => `/${getSlug(link, id)}/p`\nconst nonEmptyArray = <T>(array: T[] | null | undefined) =>\n Array.isArray(array) && array.length > 0 ? array : null\n\nexport const StoreProduct: Record<string, Resolver<Root>> = {\n productID: ({ id }) => id,\n name: ({ isVariantOf, name }) => name ?? isVariantOf.name,\n slug: ({ isVariantOf: { link }, id }) => getSlug(link, id),\n description: ({ isVariantOf: { description } }) => description,\n seo: ({ isVariantOf: { name, description } }) => ({\n title: name,\n description,\n }),\n brand: ({ isVariantOf: { brand } }) => ({ name: brand }),\n breadcrumbList: ({ isVariantOf: { categoryTrees, name, link }, id }) => ({\n itemListElement: [\n ...categoryTrees.reverse().map(({ categoryNames }, index) => ({\n name: categoryNames[categoryNames.length - 1],\n item: `/${categoryNames\n .map((categoryName) => slugify(categoryName))\n .join('/')}`,\n position: index + 1,\n })),\n {\n name,\n item: getPath(link, id),\n position: categoryTrees.length + 1,\n },\n ],\n numberOfItems: categoryTrees.length,\n }),\n image: ({ isVariantOf, images }) =>\n (\n nonEmptyArray(images) ??\n nonEmptyArray(isVariantOf.images) ?? [DEFAULT_IMAGE]\n ).map(({ name, value }) => ({\n alternateName: name ?? '',\n url: value.replace('vteximg.com.br', 'vtexassets.com'),\n })),\n sku: ({ id }) => id,\n gtin: ({ reference }) => reference ?? '',\n review: () => [],\n aggregateRating: () => ({}),\n offers: async (product, _, ctx) => {\n const {\n loaders: { simulationLoader },\n storage: { channel },\n } = ctx\n\n const { id, policies } = product\n const sellers = policies.find((policy) => policy.id === channel)?.sellers\n\n if (sellers == null) {\n // This error will likely happen when you forget to forward the channel somewhere in your code.\n // Make sure all queries that lead to a product are forwarding the channel in context corectly\n throw new Error(\n `Product with id ${id} has no sellers for channel ${channel}.`\n )\n }\n\n // Unique seller ids\n const sellerIds = sellers.map((seller) => seller.id)\n const items = Array.from(new Set(sellerIds)).map((seller) => ({\n quantity: 1,\n seller,\n id,\n }))\n\n const simulation = await simulationLoader.load(items)\n\n return {\n ...simulation,\n items: sortOfferByPrice(simulation.items),\n product,\n }\n },\n isVariantOf: ({ isVariantOf }) => isVariantOf,\n additionalProperty: ({ attributes = [] }) =>\n attributes.map((attribute) => ({\n name: attribute.key,\n value: attribute.value,\n })),\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Product } from '../clients/search/types/ProductSearchResult'\nimport type { Resolver } from '..'\n\nexport const StoreProductGroup: Record<string, Resolver<Product>> = {\n hasVariant: (root) => root.skus.map((sku) => enhanceSku(sku, root)),\n productGroupID: ({ product }) => product,\n name: ({ name }) => name,\n additionalProperty: ({ textAttributes = [], productSpecifications = [] }) => {\n const specs = new Set(productSpecifications)\n\n return textAttributes\n .filter((attribute) => specs.has(attribute.labelKey))\n .map((attribute) => ({\n name: attribute.labelKey,\n value: attribute.labelValue,\n }))\n },\n}\n","export interface SelectedFacet {\n key: string\n value: string\n}\n\n/**\n * Transform facets from the store to VTEX platform facets.\n * For instance, the channel in Store becomes trade-policy in VTEX's realm\n * */\nexport const transformSelectedFacet = ({ key, value }: SelectedFacet) => {\n switch (key) {\n case 'channel':\n return { key: 'trade-policy', value }\n\n default:\n return { key, value }\n }\n}\n","export const SORT_MAP = {\n price_desc: 'price:desc',\n price_asc: 'price:asc',\n orders_desc: 'orders:desc',\n name_desc: 'name:desc',\n name_asc: 'name:asc',\n release_desc: 'release:desc',\n discount_desc: 'discount:desc',\n score_desc: '',\n} as const\n","import { enhanceSku } from '../utils/enhanceSku'\nimport { transformSelectedFacet } from '../utils/facets'\nimport { SORT_MAP } from '../utils/sort'\nimport { StoreCollection } from './collection'\nimport type {\n QueryProductArgs,\n QueryAllCollectionsArgs,\n QueryAllProductsArgs,\n QuerySearchArgs,\n QueryCollectionArgs,\n} from '../../../__generated__/schema'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { Context } from '../index'\n\nexport const Query = {\n product: async (_: unknown, { locator }: QueryProductArgs, ctx: Context) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n locator.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const {\n loaders: { skuLoader },\n } = ctx\n\n return skuLoader.load(locator.map(transformSelectedFacet))\n },\n collection: (_: unknown, { slug }: QueryCollectionArgs, ctx: Context) => {\n const {\n loaders: { collectionLoader },\n } = ctx\n\n return collectionLoader.load(slug)\n },\n search: async (\n _: unknown,\n { first, after: maybeAfter, sort, term, selectedFacets }: QuerySearchArgs,\n ctx: Context\n ) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n selectedFacets?.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const searchArgs = {\n page: Math.ceil(after / first),\n count: first,\n query: term,\n sort: SORT_MAP[sort ?? 'score_desc'],\n selectedFacets: selectedFacets?.map(transformSelectedFacet) ?? [],\n }\n\n return searchArgs\n },\n allProducts: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllProductsArgs,\n ctx: Context\n ) => {\n const {\n clients: { search },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const products = await search.products({\n page: Math.ceil(after / first),\n count: first,\n })\n\n const skus = products.products\n .map((product) => product.skus.map((sku) => enhanceSku(sku, product)))\n .flat()\n .filter((sku) => sku.sellers.length > 0)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n // after + index is bigger than after+first itself because of the array flat() above\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: (after + index).toString(),\n })),\n }\n },\n allCollections: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllCollectionsArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n\n const [brands, tree] = await Promise.all([\n commerce.catalog.brand.list(),\n commerce.catalog.category.tree(),\n ])\n\n const categories: Array<CategoryTree & { level: number }> = []\n const dfs = (node: CategoryTree, level: number) => {\n categories.push({ ...node, level })\n\n for (const child of node.children) {\n dfs(child, level + 1)\n }\n }\n\n for (const node of tree) {\n dfs(node, 0)\n }\n\n const collections = [\n ...brands\n .filter((brand) => brand.isActive)\n .map((x) => ({ ...x, type: 'brand' })),\n ...categories,\n ]\n\n const validCollections = collections\n // Nullable slugs may cause one route to override the other\n .filter((node) => Boolean(StoreCollection.slug(node, null, ctx, null)))\n\n return {\n pageInfo: {\n hasNextPage: validCollections.length - after > first,\n hasPreviousPage: after > 0,\n startCursor: '0',\n endCursor: (\n Math.min(first, validCollections.length - after) - 1\n ).toString(),\n totalCount: validCollections.length,\n },\n edges: validCollections\n .slice(after, after + first)\n .map((node, index) => ({\n node,\n cursor: (after + index).toString(),\n })),\n }\n },\n person: async (_: unknown, __: unknown, ctx: Context) => {\n const {\n clients: { commerce },\n } = ctx\n\n const {\n namespaces: { profile = null },\n } = await commerce.session()\n\n return (\n profile && {\n id: profile.id?.value ?? '',\n email: profile.email?.value ?? '',\n givenName: profile.firstName?.value ?? '',\n familyName: profile.lastName?.value ?? '',\n }\n )\n },\n}\n","import type { Resolver } from '..'\n\nexport const StoreReview: Record<string, Resolver> = {\n reviewRating: () => ({\n ratingValue: 5,\n bestRating: 5,\n }),\n author: () => ({\n name: '',\n }),\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { SearchArgs } from '../clients/search'\nimport type { Attribute } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Omit<SearchArgs, 'type'>\n\nconst REMOVED_FACETS_FROM_COLLECTION_PAGE = ['departamento']\n\nexport const StoreSearchResult: Record<string, Resolver<Root>> = {\n products: async (searchArgs, _, ctx) => {\n const {\n clients: { search },\n } = ctx\n\n const products = await search.products(searchArgs)\n\n const skus = products.products\n .map((product) => {\n const [maybeSku] = product.skus\n\n return maybeSku && enhanceSku(maybeSku, product)\n })\n .filter((sku) => !!sku)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: index.toString(),\n })),\n }\n },\n facets: async (searchArgs, _, ctx) => {\n const {\n clients: { search: is },\n } = ctx\n\n const facets = await is.facets(searchArgs)\n\n const isCollectionPage = !searchArgs.query\n const filteredFacets = facets?.attributes?.reduce((acc, currentFacet) => {\n const shouldFilterFacet = REMOVED_FACETS_FROM_COLLECTION_PAGE.includes(\n currentFacet.key\n )\n\n const shouldRemoveFacetFromCollectionPage =\n isCollectionPage && shouldFilterFacet\n\n if (shouldRemoveFacetFromCollectionPage) {\n return acc\n }\n\n currentFacet.values.sort((a, b) => {\n const firstItemLabel = a.label ?? ''\n const secondItemLabel = b.label ?? ''\n\n return firstItemLabel.localeCompare(secondItemLabel)\n })\n\n acc.push(currentFacet)\n\n return acc\n }, [] as Attribute[])\n\n return filteredFacets ?? []\n },\n}\n","import type { Resolver } from '..'\n\ntype Root = { title?: string; description?: string }\n\nexport const StoreSeo: Record<string, Resolver<Root>> = {\n title: ({ title }) => title ?? '',\n description: ({ description }) => description ?? '',\n titleTemplate: () => '',\n canonical: () => '',\n}\n","import { getClients } from './clients'\nimport { getLoaders } from './loaders'\nimport { StoreAggregateOffer } from './resolvers/aggregateOffer'\nimport { StoreAggregateRating } from './resolvers/aggregateRating'\nimport { StoreCollection } from './resolvers/collection'\nimport { StoreFacet } from './resolvers/facet'\nimport { StoreFacetValue } from './resolvers/facetValue'\nimport { Mutation } from './resolvers/mutation'\nimport { StoreOffer } from './resolvers/offer'\nimport { StoreProduct } from './resolvers/product'\nimport { StoreProductGroup } from './resolvers/productGroup'\nimport { Query } from './resolvers/query'\nimport { StoreReview } from './resolvers/review'\nimport { StoreSearchResult } from './resolvers/searchResult'\nimport { StoreSeo } from './resolvers/seo'\nimport type { Loaders } from './loaders'\nimport type { Clients } from './clients'\n\nexport interface Options {\n platform: 'vtex'\n account: string\n environment: 'vtexcommercestable' | 'vtexcommercebeta'\n // Default sales channel to use for fetching products\n channel: string\n hideUnavailableItems: boolean\n}\n\nexport interface Context {\n clients: Clients\n loaders: Loaders\n /**\n * @description Storage updated at each request.\n *\n * Use this datastructure to store and share small values in the context.\n * Use it with caution since dependecy injection leads to a more complex code\n * */\n storage: {\n channel: string\n }\n headers: Record<string, string>\n}\n\nexport type Resolver<R = unknown, A = unknown> = (\n root: R,\n args: A,\n ctx: Context,\n info: any\n) => any\n\nconst Resolvers = {\n StoreCollection,\n StoreAggregateOffer,\n StoreProduct,\n StoreSeo,\n StoreFacet,\n StoreFacetValue,\n StoreOffer,\n StoreAggregateRating,\n StoreReview,\n StoreProductGroup,\n StoreSearchResult,\n Query,\n Mutation,\n}\n\nexport const getContextFactory = (options: Options) => (ctx: any) => {\n ctx.storage = {\n channel: options.channel,\n }\n ctx.clients = getClients(options, ctx)\n ctx.loaders = getLoaders(options, ctx)\n\n return ctx\n}\n\nexport const getResolvers = (_: Options) => Resolvers\n","import { print } from 'graphql'\n\nimport AggregateOffer from './aggregateOffer.graphql'\nimport AggregateRating from './aggregateRating.graphql'\nimport Author from './author.graphql'\nimport Brand from './brand.graphql'\nimport Breadcrumb from './breadcrumb.graphql'\nimport Collection from './collection.graphql'\nimport Facet from './facet.graphql'\nimport Image from './image.graphql'\nimport Mutation from './mutation.graphql'\nimport Offer from './offer.graphql'\nimport Order from './order.graphql'\nimport Organization from './organization.graphql'\nimport PageInfo from './pageInfo.graphql'\nimport Product from './product.graphql'\nimport ProductGroup from './productGroup.graphql'\nimport Query from './query.graphql'\nimport Review from './review.graphql'\nimport Seo from './seo.graphql'\nimport Cart from './cart.graphql'\nimport Status from './status.graphql'\nimport PropertyValue from './propertyValue.graphql'\nimport Person from './person.graphql'\n\nexport const typeDefs = [\n Query,\n Mutation,\n Brand,\n Breadcrumb,\n Collection,\n Facet,\n Image,\n PageInfo,\n Product,\n Seo,\n Offer,\n AggregateRating,\n Review,\n Author,\n ProductGroup,\n Organization,\n AggregateOffer,\n Order,\n Cart,\n Status,\n PropertyValue,\n Person,\n]\n .map(print)\n .join('\\n')\n","import { makeExecutableSchema } from '@graphql-tools/schema'\n\nimport {\n getContextFactory as getContextFactoryVTEX,\n getResolvers as getResolversVTEX,\n} from './platforms/vtex'\nimport { typeDefs } from './typeDefs'\nimport type { Options as OptionsVTEX } from './platforms/vtex'\n\nexport * from './__generated__/schema'\n\nexport type Options = OptionsVTEX\n\nconst platforms = {\n vtex: {\n getResolvers: getResolversVTEX,\n getContextFactory: getContextFactoryVTEX,\n },\n}\n\nexport const getTypeDefs = () => typeDefs\n\nexport const getResolvers = (options: Options) =>\n platforms[options.platform].getResolvers(options)\n\nexport const getContextFactory = (options: Options) =>\n platforms[options.platform].getContextFactory(options)\n\nexport const getSchema = async (options: Options) =>\n makeExecutableSchema({\n resolvers: getResolvers(options),\n typeDefs,\n })\n"],"names":["fetchAPI","info","init","response","fetch","ok","json","console","error","text","Error","BASE_INIT","method","headers","VtexCommerce","account","environment","ctx","base","catalog","brand","list","category","tree","depth","portal","pagetype","slug","checkout","simulation","args","salesChannel","storage","channel","params","URLSearchParams","sc","toString","body","JSON","stringify","orderForm","id","refreshOutdatedData","updateOrderFormItems","orderItems","allowOutdatedData","region","postalCode","country","session","cookie","IntelligentSearch","hideUnavailableItems","policyFacet","key","value","addDefaultFacets","facets","facet","find","undefined","search","query","page","count","sort","selectedFacets","type","fuzzy","append","pathname","map","join","products","getClients","options","commerce","CONCURRENT_REQUESTS_MAX","getSimulationLoader","_","clients","limit","pLimit","loader","allItems","items","flat","simulated","reduce","acc","item","index","requestIndex","length","Array","fill","itemsIndices","curr","__","slice","filter","Boolean","limited","DataLoader","maxBatchSize","BadRequestError","constructor","message","name","NotFoundError","enhanceSku","sku","product","isVariantOf","getSkuLoader","facetsList","skuIds","maybeFacet","skuBySkuId","skus","skuId","missingSkus","collectionPageTypes","Set","isCollectionPageType","x","pageType","has","toLowerCase","getCollectionLoader","slugs","Promise","all","batch","getLoaders","skuLoader","simulationLoader","collectionLoader","inStock","availability","sortOfferByPrice","a","b","sellingPrice","StoreAggregateOffer","highPrice","availableItems","pop","lowPrice","offerCount","priceCurrency","offers","StoreAggregateRating","ratingValue","reviewCount","slugify","path","rawSlugify","separator","lowercase","isBrand","root","baseSlugify","URL","url","StoreCollection","seo","title","description","metaTagDescription","Title","MetaTagDescription","level","meta","split","segment","breadcrumbList","loaders","segments","collections","s","load","itemListElement","collection","position","numberOfItems","StoreFacet","label","values","StoreFacetValue","from","to","selected","active","quantity","getId","itemOffered","seller","identifier","price","orderFormItemToOffer","listPrice","image","offerToOrderItemInput","offer","groupById","set","get","Map","equals","storeOrder","pick","orderFormItems","storeOrderItems","acceptedOffer","isSameOrder","orderNumber","orderFormId","orderItensAreSync","deepEquals","validateCart","cart","order","browserItemsById","originItemsById","browserItems","originItems","itemsToAdd","itemsToUpdate","maybeOriginItem","push","itemsToDelete","changes","updatedOrderForm","messages","status","toUpperCase","ChannelMarshal","parse","channelString","parsedChannel","regionId","updateSession","regionData","String","replace","Mutation","StoreOffer","priceValidUntil","itemCondition","DEFAULT_IMAGE","getSlug","link","getPath","nonEmptyArray","array","isArray","StoreProduct","productID","categoryTrees","reverse","categoryNames","categoryName","images","alternateName","gtin","reference","review","aggregateRating","policies","sellers","policy","sellerIds","additionalProperty","attributes","attribute","StoreProductGroup","hasVariant","productGroupID","textAttributes","productSpecifications","specs","labelKey","labelValue","transformSelectedFacet","SORT_MAP","price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc","Query","locator","first","after","maybeAfter","term","Number","searchArgs","Math","ceil","allProducts","pageInfo","hasNextPage","pagination","hasPreviousPage","before","startCursor","endCursor","total","totalCount","edges","node","cursor","allCollections","brands","categories","dfs","child","children","isActive","validCollections","min","person","namespaces","profile","email","givenName","firstName","familyName","lastName","StoreReview","reviewRating","bestRating","author","REMOVED_FACETS_FROM_COLLECTION_PAGE","StoreSearchResult","maybeSku","is","isCollectionPage","filteredFacets","currentFacet","shouldFilterFacet","includes","shouldRemoveFacetFromCollectionPage","firstItemLabel","secondItemLabel","localeCompare","StoreSeo","titleTemplate","canonical","Resolvers","getContextFactory","getResolvers","typeDefs","Brand","Breadcrumb","Collection","Facet","Image","PageInfo","Product","Seo","Offer","AggregateRating","Review","Author","ProductGroup","Organization","AggregateOffer","Order","Cart","Status","PropertyValue","Person","print","platforms","vtex","getResolversVTEX","getContextFactoryVTEX","getTypeDefs","platform","getSchema","makeExecutableSchema","resolvers"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -79,7 +79,7 @@ export declare const getResolvers: (options: Options) => {
79
79
  email: string;
80
80
  givenName: string;
81
81
  familyName: string;
82
- }>;
82
+ } | null>;
83
83
  };
84
84
  Mutation: {
85
85
  validateCart: (_: unknown, { cart: { order } }: {
@@ -100,7 +100,7 @@ export declare const getResolvers: (_: Options) => {
100
100
  email: string;
101
101
  givenName: string;
102
102
  familyName: string;
103
- }>;
103
+ } | null>;
104
104
  };
105
105
  Mutation: {
106
106
  validateCart: (_: unknown, { cart: { order } }: {
@@ -55,5 +55,5 @@ export declare const Query: {
55
55
  email: string;
56
56
  givenName: string;
57
57
  familyName: string;
58
- }>;
58
+ } | null>;
59
59
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/api",
3
- "version": "1.6.19",
3
+ "version": "1.6.22",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -43,5 +43,5 @@
43
43
  "peerDependencies": {
44
44
  "graphql": "^15.6.0"
45
45
  },
46
- "gitHead": "b0e6e5d161efa1c18544388d60fe3a6249361514"
46
+ "gitHead": "f1a7cc39edfe0556d7ee6e19402bedbb212ba2eb"
47
47
  }
@@ -75,7 +75,7 @@ export type Query = {
75
75
  allCollections: StoreCollectionConnection;
76
76
  allProducts: StoreProductConnection;
77
77
  collection: StoreCollection;
78
- person: StorePerson;
78
+ person?: Maybe<StorePerson>;
79
79
  product: StoreProduct;
80
80
  search: StoreSearchResult;
81
81
  };
@@ -158,14 +158,16 @@ export const Query = {
158
158
  } = ctx
159
159
 
160
160
  const {
161
- namespaces: { profile },
161
+ namespaces: { profile = null },
162
162
  } = await commerce.session()
163
163
 
164
- return {
165
- id: profile?.id?.value ?? '',
166
- email: profile?.email?.value ?? '',
167
- givenName: profile?.firstName?.value ?? '',
168
- familyName: profile?.lastName?.value ?? '',
169
- }
164
+ return (
165
+ profile && {
166
+ id: profile.id?.value ?? '',
167
+ email: profile.email?.value ?? '',
168
+ givenName: profile.firstName?.value ?? '',
169
+ familyName: profile.lastName?.value ?? '',
170
+ }
171
+ )
170
172
  },
171
173
  }
@@ -21,6 +21,7 @@ import Seo from './seo.graphql'
21
21
  import Cart from './cart.graphql'
22
22
  import Status from './status.graphql'
23
23
  import PropertyValue from './propertyValue.graphql'
24
+ import Person from './person.graphql'
24
25
 
25
26
  export const typeDefs = [
26
27
  Query,
@@ -44,6 +45,7 @@ export const typeDefs = [
44
45
  Cart,
45
46
  Status,
46
47
  PropertyValue,
48
+ Person,
47
49
  ]
48
50
  .map(print)
49
51
  .join('\n')
@@ -0,0 +1,6 @@
1
+ type StorePerson {
2
+ id: String!
3
+ email: String!
4
+ givenName: String!
5
+ familyName: String!
6
+ }
@@ -44,13 +44,6 @@ type StoreSearchResult {
44
44
  facets: [StoreFacet!]!
45
45
  }
46
46
 
47
- type StorePerson {
48
- id: String!
49
- email: String!
50
- givenName: String!
51
- familyName: String!
52
- }
53
-
54
47
  type Query {
55
48
  product(locator: [IStoreSelectedFacet!]!): StoreProduct!
56
49
 
@@ -68,5 +61,5 @@ type Query {
68
61
 
69
62
  allCollections(first: Int!, after: String): StoreCollectionConnection!
70
63
 
71
- person: StorePerson!
64
+ person: StorePerson
72
65
  }