UNPKG

@godaddy/react

Version:

The `createCheckoutSession` function creates a new checkout session with GoDaddy's commerce API.

1,943 lines (1,932 loc) 62.2 kB
import { initGraphQLTada } from "gql.tada"; import { ClientError, request } from "graphql-request"; import { clsx } from "clsx"; import { twMerge } from "tailwind-merge"; //#region src/components/checkout/utils/case-conversion.ts /** * Convert kebab-case string to camelCase * @example kebabToCamel('font-sans') // 'fontSans' */ function kebabToCamel(str) { return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase()); } /** * Convert camelCase string to kebab-case * @example camelToKebab('fontSans') // 'font-sans' */ function camelToKebab(str) { return str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`); } /** * Convert kebab-case CSS variables object to camelCase for GraphQL * @param variables - Object with kebab-case keys * @returns Object with camelCase keys * @example * convertCSSVariablesToCamelCase({ 'font-sans': 'Arial', 'secondary-background': '#fff' }) * // { fontSans: 'Arial', secondaryBackground: '#fff' } */ function convertCSSVariablesToCamelCase(variables) { const result = {}; for (const [key, value] of Object.entries(variables)) if (value !== void 0) result[kebabToCamel(key)] = value; return result; } /** * Convert camelCase object keys to kebab-case (for GraphQL response to CSS variables) * @param obj - Object with camelCase keys * @returns Object with kebab-case keys typed as CSSVariables * @example * convertCamelCaseToKebabCase({ fontSans: 'Arial', secondaryBackground: '#fff' }) * // { 'font-sans': 'Arial', 'secondary-background': '#fff' } */ function convertCamelCaseToKebabCase(obj) { const result = {}; for (const [key, value] of Object.entries(obj)) if (value !== void 0) result[camelToKebab(key)] = value; return result; } //#endregion //#region src/lib/gql/gql-catalog-storefront.tada.ts const graphql$2 = initGraphQLTada(); //#endregion //#region src/lib/godaddy/catalog-storefront-queries.ts const SkuGroupsQuery = graphql$2(` query SkuGroups($first: Int, $after: String, $id: SKUGroupIdsFilter, $listId: ListIdFilter, $label: LabelFilter) { skuGroups(first: $first, after: $after, id: $id, listId: $listId, label: $label) { edges { cursor node { id name label description htmlDescription type priceRange { min max } compareAtPriceRange { min max } mediaObjects(first: 25) { edges { node { url type } } } attributes { edges { node { id name label description htmlDescription values(first: 50) { edges { node { id name label } } } } } } skus(first: 2) { edges { node { id label name inventoryCounts { edges { node { id quantity type } } } } } } } } pageInfo { hasNextPage hasPreviousPage startCursor endCursor } totalCount } } `); const SkuGroupQuery = graphql$2(` query SkuGroup($id: String!, $first: Int, $attributeValues: [String!] = []) { skuGroup(id: $id) { id name label description htmlDescription type priceRange { min max } compareAtPriceRange { min max } mediaObjects(first: 25) { edges { node { url type } } } attributes { edges { node { id name label description htmlDescription values(first: 50) { edges { node { id name label } } } } } } skus( attributeValues: { has: $attributeValues } first: $first ) { edges { node { id label name inventoryCounts { edges { node { id quantity type } } } } } } } } `); const SkuQuery = graphql$2(` query Sku($id: String!) { sku(id: $id) { id label name description htmlDescription code prices { edges { node { id value { value currencyCode } compareAtValue { value currencyCode } } } } inventoryCounts { edges { node { id quantity type } } } mediaObjects { edges { node { id url type label position } } } attributeValues { edges { node { id name label } } } } } `); //#endregion //#region src/lib/gql/gql-orders-storefront.tada.ts const graphql$1 = initGraphQLTada(); //#endregion //#region src/lib/godaddy/orders-storefront-mutations.ts const AddCartOrderMutation = graphql$1(` mutation AddCartOrder($input: AddDraftOrderInput!) { addDraftOrder(input: $input) { id customerId createdAt updatedAt context { storeId channelId } lineItems { id name quantity skuId type fulfillmentMode totals { subTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } feeTotal { value currencyCode } } } totals { subTotal { value currencyCode } shippingTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } feeTotal { value currencyCode } total { value currencyCode } } } } `); const AddLineItemBySkuIdMutation = graphql$1(` mutation AddLineItemBySkuId($input: AddLineItemInput!) { addLineItemBySkuId(input: $input) { id name quantity skuId type fulfillmentMode details { productAssetUrl sku unitOfMeasure selectedOptions { attribute values } selectedAddons { attribute sku values { name costAdjustment { value currencyCode } } } } totals { subTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } feeTotal { value currencyCode } } discounts { id name code amount { value currencyCode } } taxes { id name amount { value currencyCode } ratePercentage } createdAt updatedAt } } `); const UpdateCartOrderMutation = graphql$1(` mutation UpdateCartOrder($input: UpdateDraftOrderInput!) { updateDraftOrder(input: $input) { id customerId createdAt updatedAt context { storeId channelId } lineItems { id name quantity skuId type fulfillmentMode totals { subTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } feeTotal { value currencyCode } } } totals { subTotal { value currencyCode } shippingTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } feeTotal { value currencyCode } total { value currencyCode } } } } `); const DeleteLineItemByIdMutation = graphql$1(` mutation DeleteLineItemById($id: ID!, $orderId: ID!) { deleteLineItemById(id: $id, orderId: $orderId) } `); const ApplyDiscountCodesMutation = graphql$1(` mutation ApplyDiscountCodes($input: ApplyDiscountCodesInput!) { applyDiscountCodes(input: $input) { id discounts { id name code amount { value currencyCode } ratePercentage appliedBeforeTax } totals { subTotal { value currencyCode } shippingTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } productDiscountTotal { value currencyCode } shippingDiscountTotal { value currencyCode } feeTotal { value currencyCode } total { value currencyCode } } } } `); const UpdateLineItemByIdMutation = graphql$1(` mutation UpdateLineItemById($input: UpdateLineItemByIdInput!) { updateLineItemById(input: $input) { id name quantity skuId type fulfillmentMode details { productAssetUrl sku unitOfMeasure } totals { subTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } feeTotal { value currencyCode } } updatedAt } } `); //#endregion //#region src/lib/godaddy/orders-storefront-queries.ts const GetCartOrderQuery = graphql$1(` query GetCartOrder($id: ID!) { orderById(id: $id) { id customerId createdAt updatedAt context { storeId channelId } lineItems { id name quantity skuId type fulfillmentMode details { productAssetUrl sku unitOfMeasure selectedOptions { attribute values } selectedAddons { attribute sku values { name costAdjustment { value currencyCode } } } } totals { subTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } feeTotal { value currencyCode } } discounts { id name code amount { value currencyCode } ratePercentage } taxes { id name amount { value currencyCode } ratePercentage } notes { id content author authorType } } totals { subTotal { value currencyCode } shippingTotal { value currencyCode } taxTotal { value currencyCode } discountTotal { value currencyCode } productDiscountTotal { value currencyCode } shippingDiscountTotal { value currencyCode } feeTotal { value currencyCode } total { value currencyCode } } discounts { id name code amount { value currencyCode } ratePercentage appliedBeforeTax } taxes { id name amount { value currencyCode } ratePercentage included exempted } shipping { firstName lastName email phone companyName address { addressLine1 addressLine2 addressLine3 adminArea1 adminArea2 adminArea3 adminArea4 postalCode countryCode } } notes { id content author authorType createdAt } tags } } `); //#endregion //#region src/lib/graphql-with-errors.ts var GraphQLErrorWithCodes = class extends Error { constructor(errors) { const errorMessage = errors.length === 1 ? `${errors[0].message || "Unknown error"}` : `${errors.map((e) => e.message).filter(Boolean).join("; ")}`; super(errorMessage); this.errors = errors; this.name = "GraphQLErrorWithCodes"; } get codes() { return this.errors.map((e) => e.code).filter(Boolean); } get messages() { return this.errors.map((e) => e.message).filter(Boolean); } }; async function graphqlRequestWithErrors(endpoint, query, variables, headers) { try { return await request(endpoint, query, variables, headers); } catch (err) { if (err instanceof ClientError && err.response?.errors?.length) throw new GraphQLErrorWithCodes(err.response.errors.map((e) => ({ message: e.message, code: e.extensions?.code }))); throw err; } } //#endregion //#region src/lib/gql/gql-checkout.tada.ts const graphql = initGraphQLTada(); //#endregion //#region src/lib/godaddy/checkout-mutations.ts const CreateCheckoutSessionMutation = graphql(` mutation CreateCheckoutSession($input: MutationCreateCheckoutSessionInput!) { createCheckoutSession(input: $input) { id token url sourceApp returnUrl successUrl storeId businessId channelId customerId storeName environment enableTips enabledLocales enableSurcharge enableLocalPickup enableShipping enablePhoneCollection enableNotesCollection enablePromotionCodes enableTaxCollection enableShippingAddressCollection enableBillingAddressCollection enableAddressAutocomplete appearance { theme variables { fontSans fontSerif fontMono defaultFontFamily background secondaryBackground foreground card cardForeground popover popoverForeground primary primaryForeground secondary secondaryForeground muted mutedForeground accent accentForeground destructive destructiveForeground border input ring radius } } experimental_rules { freeShipping { enabled minimumOrderTotal } } shipping { originAddress { addressLine1 addressLine2 addressLine3 postalCode countryCode adminArea1 adminArea2 adminArea3 adminArea4 } } paymentMethods { card { processor checkoutTypes } ccavenue { processor checkoutTypes } express { processor checkoutTypes } applePay { processor checkoutTypes } googlePay { processor checkoutTypes } paypal { processor checkoutTypes } paze { processor checkoutTypes } offline { processor checkoutTypes } mercadopago { processor checkoutTypes } } draftOrder { id statuses { status } totals { total { currencyCode value } } } locations { id isDefault address { addressLine1 addressLine2 addressLine3 postalCode countryCode adminArea1 adminArea2 adminArea3 adminArea4 } operatingHours { pickupWindowInDays leadTime pickupSlotInterval timeZone hours { monday { enabled openTime closeTime } tuesday { enabled openTime closeTime } wednesday { enabled openTime closeTime } thursday { enabled openTime closeTime } friday { enabled openTime closeTime } saturday { enabled openTime closeTime } sunday { enabled openTime closeTime } } } } defaultOperatingHours { pickupWindowInDays leadTime pickupSlotInterval timeZone hours { monday { enabled openTime closeTime } tuesday { enabled openTime closeTime } wednesday { enabled openTime closeTime } thursday { enabled openTime closeTime } friday { enabled openTime closeTime } saturday { enabled openTime closeTime } sunday { enabled openTime closeTime } } } } } `); const VerifyCheckoutSessionAddressMutation = graphql(` mutation VerifyCheckoutSessionAddress($input: MutationVerifyAddressInput!) { verifyAddress(input: $input) { addressLine1 addressLine2 addressLine3 postalCode countryCode adminArea1 adminArea2 adminArea3 adminArea4 } } `); const UpdateCheckoutSessionDraftOrderMutation = graphql(` mutation UpdateCheckoutSessionDraftOrder($input: MutationUpdateCheckoutSessionDraftOrderInput!) { updateCheckoutSessionDraftOrder(input: $input) { id totals { discountTotal { currencyCode value } feeTotal { currencyCode value } shippingTotal { currencyCode value } subTotal { currencyCode value } taxTotal { currencyCode value } total { currencyCode value } } } } `); const CalculateCheckoutSessionTaxesMutation = graphql(` mutation CalculateCheckoutSessionTaxes($destination: TaxDestinationAddressInput) { calculateCheckoutSessionTaxes(destination: $destination) { totalTaxAmount { value currencyCode } } } `); const ApplyCheckoutSessionDiscountMutation = graphql(` mutation ApplyCheckoutSessionDiscount($input: MutationApplyCheckoutSessionDiscountInput!) { applyCheckoutSessionDiscount(input: $input) { id lineItems { externalId fulfillmentMode id name productId quantity status tags type discounts { amount { currencyCode value } appliedBeforeTax code id name ratePercentage } fees { appliedBeforeTax id name ratePercentage } totals { discountTotal { currencyCode value } feeTotal { currencyCode value } subTotal { currencyCode value } taxTotal { currencyCode value } } unitAmount { currencyCode value } } shippingLines { discounts { id amount { currencyCode value } appliedBeforeTax code } } discounts { amount { currencyCode value } appliedBeforeTax code id name ratePercentage } totals { discountTotal { currencyCode value } total { currencyCode value } } } } `); const ConfirmCheckoutSessionMutation = graphql(` mutation ConfirmCheckoutSession($input: MutationConfirmCheckoutSessionInput!, $sessionId: String!) { confirmCheckoutSession(input: $input, sessionId: $sessionId) { status } } `); const ApplyCheckoutSessionShippingMethodMutation = graphql(` mutation ApplyCheckoutSessionShippingMethod($input: [ApplyShippingMethodInput!]!) { applyCheckoutSessionShippingMethod(input: $input) { status draftOrder { totals { shippingTotal { currencyCode value } } } } } `); const ApplyCheckoutSessionDeliveryMethodMutation = graphql(` mutation ApplyCheckoutSessionDeliveryMethod($input: MutationApplyCheckoutSessionDeliveryMethodInput!) { applyCheckoutSessionDeliveryMethod(input: $input) { status } } `); const RemoveAppliedCheckoutSessionShippingMethodMutation = graphql(` mutation RemoveAppliedCheckoutSessionShippingMethod($input: RemoveShippingMethodInput!) { removeAppliedCheckoutSessionShippingMethod(input: $input) { status draftOrder { totals { shippingTotal { currencyCode value } } } } } `); const ApplyCheckoutSessionFulfillmentLocationMutation = graphql(` mutation ApplyCheckoutSessionFulfillmentLocation($input: MutationApplyCheckoutSessionFulfillmentLocationInput!) { applyCheckoutSessionFulfillmentLocation(input: $input) { status } } `); const ExchangeCheckoutTokenMutation = graphql(` mutation ExchangeCheckoutToken($input: MutationExchangeCheckoutTokenInput!) { exchangeCheckoutToken(input: $input) { jwt expiresAt expiresIn } } `); const RefreshCheckoutTokenMutation = graphql(` mutation RefreshCheckoutToken { refreshCheckoutToken { jwt expiresAt expiresIn } } `); const AuthorizeCheckoutSessionMutation = graphql(` mutation AuthorizeCheckoutSession($input: MutationAuthorizeCheckoutSessionInput!) { authorizeCheckoutSession(input: $input) { ... on SaleTransaction { transactionRefNum } ... on AuthorizeTransaction { transactionRefNum } } } `); //#endregion //#region src/lib/godaddy/checkout-queries.ts const GetCheckoutSessionQuery = graphql(` query GetCheckoutSession { checkoutSession { id token url sourceApp returnUrl successUrl storeId channelId businessId customerId storeName environment enableTips enabledLocales enableSurcharge enableLocalPickup enableShipping enablePhoneCollection enableNotesCollection enablePromotionCodes enableTaxCollection enableShippingAddressCollection enableBillingAddressCollection enableAddressAutocomplete appearance { theme variables { fontSans fontSerif fontMono defaultFontFamily background secondaryBackground foreground card cardForeground popover popoverForeground primary primaryForeground secondary secondaryForeground muted mutedForeground accent accentForeground destructive destructiveForeground border input ring radius } } experimental_rules { freeShipping { enabled minimumOrderTotal } } shipping { originAddress { addressLine1 addressLine2 addressLine3 postalCode countryCode adminArea1 adminArea2 adminArea3 adminArea4 } } paymentMethods { card { processor checkoutTypes } ccavenue { processor checkoutTypes } express { processor checkoutTypes } applePay { processor checkoutTypes } googlePay { processor checkoutTypes } paypal { processor checkoutTypes } paze { processor checkoutTypes } offline { processor checkoutTypes } mercadopago { processor checkoutTypes } } locations { id isDefault address { addressLine1 addressLine2 addressLine3 postalCode countryCode adminArea1 adminArea2 adminArea3 adminArea4 } operatingHours { pickupWindowInDays leadTime pickupSlotInterval timeZone hours { monday { enabled openTime closeTime } tuesday { enabled openTime closeTime } wednesday { enabled openTime closeTime } thursday { enabled openTime closeTime } friday { enabled openTime closeTime } saturday { enabled openTime closeTime } sunday { enabled openTime closeTime } } } } defaultOperatingHours { pickupWindowInDays leadTime pickupSlotInterval timeZone hours { monday { enabled openTime closeTime } tuesday { enabled openTime closeTime } wednesday { enabled openTime closeTime } thursday { enabled openTime closeTime } friday { enabled openTime closeTime } saturday { enabled openTime closeTime } sunday { enabled openTime closeTime } } } draftOrder { id statuses { fulfillmentStatus paymentStatus status } totals { subTotal { currencyCode value } } } } } `); const AddressMatchesQuery = graphql(` query CheckoutSessionWithAddressMatches($query: String!) { checkoutSession { id addresses(input: { query: $query }) { addressLine1 addressLine2 adminArea1 adminArea3 countryCode postalCode } } } `); const DraftOrderQuery = graphql(` query DraftOrder { checkoutSession { id draftOrder { id statuses { fulfillmentStatus paymentStatus status } shippingLines { id name requestedProvider requestedService amount { currencyCode value } discounts { id name amount { value currencyCode } code ratePercentage appliedBeforeTax metafields { key value } } } lineItems { externalId fulfillmentMode id name productId quantity status tags type details { productAssetUrl selectedAddons { attribute sku values { costAdjustment { currencyCode value } name } } selectedOptions { attribute values } sku unitOfMeasure } discounts { amount { currencyCode value } appliedBeforeTax code id name ratePercentage } fees { appliedBeforeTax id name ratePercentage } notes { authorType content id } taxes { exempted id included name ratePercentage } totals { discountTotal { currencyCode value } feeTotal { currencyCode value } subTotal { currencyCode value } taxTotal { currencyCode value } } unitAmount { currencyCode value } } shipping { firstName, lastName, email, phone, address { addressLine1 addressLine2 addressLine3 adminArea1 adminArea2 adminArea3 adminArea4 countryCode postalCode } } billing { firstName, lastName, email, phone, address { addressLine1 addressLine2 addressLine3 adminArea1 adminArea2 adminArea3 adminArea4 countryCode postalCode } } notes { authorType content id } discounts { amount { currencyCode value } appliedBeforeTax code id name ratePercentage } totals { discountTotal { currencyCode value } feeTotal { currencyCode value } shippingTotal { currencyCode value } subTotal { currencyCode value } taxTotal { currencyCode value } total { currencyCode value } } } } } `); const DraftOrderSkusQuery = graphql(` query Skus { checkoutSession { id skus(first: 100) { edges { node { id code name label description status weight, unitOfWeight disableShipping htmlDescription prices { currencyCode value } attributes { id name label values { id name label } } attributeValues { id name label } } } pageInfo { hasNextPage hasPreviousPage startCursor endCursor } } } } `); const DraftOrderTaxesQuery = graphql(` query Taxes($destination: TaxDestinationAddressInput, $lines: [TaxLineInput!], $discountAdjustments: CalculatedAdjustmentsInput) { checkoutSession { id storeId draftOrder { id calculatedTaxes(destination: $destination, lines: $lines, discountAdjustments: $discountAdjustments) { totalTaxAmount { currencyCode value } taxAmounts { rate { id name label calculationMethod value { appliedPercentage appliedAmount { currencyCode value } amount { currencyCode value } percentage } } totalTaxAmount { currencyCode value } } lines { calculationLine { id } totalTaxAmount { currencyCode value } taxAmounts { rate { id name calculationMethod } totalTaxAmount { currencyCode value } } } } } } } `); const DraftOrderShippingRatesQuery = graphql(` query ShippingRates($destination: DestinationAddressInput) { checkoutSession { id storeId draftOrder { id calculatedShippingRates(destination: $destination) { rates { carrierCode cost { value currencyCode } description displayName features maxDeliveryDate minDeliveryDate serviceCode } } } } } `); const DraftOrderPriceAdjustmentsQuery = graphql(` query PriceAdjustments($discountCodes: [String!], $shippingLines: [PriceAdjustmentShippingLineInput!]) { checkoutSession { id storeId draftOrder { id calculatedAdjustments(discountCodes: $discountCodes, shippingLines: $shippingLines) { adjustments { adjustment { ... on CalculatedDiscount { description id label name } ... on CalculatedFee { description id label name } } totalAmount { currencyCode value } } lines { calculationLine { id type } adjustments { adjustment { ... on CalculatedDiscount { description id label name } ... on CalculatedFee { description id label name } } totalAmount { currencyCode value } } totalDiscountAmount { currencyCode value } totalFeeAmount { currencyCode value } } totalDiscountAmount { currencyCode value } totalFeeAmount { currencyCode value } } } } } `); //#endregion //#region src/lib/godaddy/godaddy.ts function getHostByEnvironment(apiHost) { return `https://checkout.commerce.${apiHost || "api.godaddy.com"}`; } function getApiHostByEnvironment(apiHost, endpoint) { return `https://${apiHost || "api.godaddy.com"}${endpoint ? endpoint : ""}`; } async function createCheckoutSession(input, { accessToken, apiHost }) { if (!accessToken) throw new Error("No public access token provided"); let convertedVariables; if (input.appearance?.variables) { const variables = input.appearance.variables; if ("checkout" in variables) convertedVariables = convertCSSVariablesToCamelCase(variables.checkout); else convertedVariables = convertCSSVariablesToCamelCase(variables); } const { appearance,...restInput } = input; const graphqlInput = { ...restInput, ...appearance && { appearance: { theme: appearance.theme, ...convertedVariables && { variables: convertedVariables } } } }; return (await graphqlRequestWithErrors(getHostByEnvironment(apiHost), CreateCheckoutSessionMutation, { input: graphqlInput }, { Authorization: `Bearer ${accessToken}` })).createCheckoutSession; } async function exchangeCheckoutToken(input, apiHost) { if (!input.sessionId || !input.token) throw new Error("No session ID or token provided"); return (await graphqlRequestWithErrors(getHostByEnvironment(apiHost), ExchangeCheckoutTokenMutation, { input })).exchangeCheckoutToken; } async function refreshCheckoutToken(accessToken, apiHost) { if (!accessToken) throw new Error("No access token provided"); return (await graphqlRequestWithErrors(getHostByEnvironment(apiHost), RefreshCheckoutTokenMutation, {}, { Authorization: `Bearer ${accessToken}` })).refreshCheckoutToken; } async function getCheckoutSession({ accessToken }, apiHost) { return (await graphqlRequestWithErrors(getHostByEnvironment(apiHost), GetCheckoutSessionQuery, {}, { Authorization: `Bearer ${accessToken}` })).checkoutSession; } async function getAddressMatches(input, sessionOrAuth, apiHost) { const GODADDY_HOST = getHostByEnvironment(apiHost); if (sessionOrAuth && "accessToken" in sessionOrAuth) { if (!sessionOrAuth.accessToken) throw new Error("No access token provided"); return graphqlRequestWithErrors(GODADDY_HOST, AddressMatchesQuery, input, { Authorization: `Bearer ${sessionOrAuth.accessToken}` }); } const session = sessionOrAuth; if (!session?.token || !session?.id) throw new Error("No session token or ID provided"); return graphqlRequestWithErrors(GODADDY_HOST, AddressMatchesQuery, input, { "x-session-token": `${session.token}`, "x-session-id": session.id, "x-store-id": session.storeId }); } function getDraftOrder(sessionOrAuth, apiHost) { const GODADDY_HOST = getHostByEnvironment(apiHost); if (sessionOrAuth && "accessToken" in sessionOrAuth) { if (!sessionOrAuth.accessToken) throw new Error("No access token provided"); return graphqlRequestWithErrors(GODADDY_HOST, DraftOrderQuery, void 0, { Authorization: `Bearer ${sessionOrAuth.accessToken}` }); } const session = sessionOrAuth; if (!session?.token || !session?.id) throw new Error("No session token or ID provided"); return graphqlRequestWithErrors(GODADDY_HOST, DraftOrderQuery, void 0, { "x-session-token": `${session.token}`, "x-session-id": session.id, "x-store-id"