@bigcommerce/checkout-sdk 1.702.0 → 1.703.0

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":"hosted-form.js","mappings":"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","sources":["webpack://@bigcommerce/checkout-sdk/webpack/bootstrap","webpack://@bigcommerce/checkout-sdk/webpack/runtime/define property getters","webpack://@bigcommerce/checkout-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@bigcommerce/checkout-sdk/webpack/runtime/make namespace object","webpack://@bigcommerce/checkout-sdk/./packages/utility/src/bind-decorator/bind-decorator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/utility/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/url/parse-url.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/url/append-www.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/iframe/is-iframe-event.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/iframe/iframe-event-listener.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-storage.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/get-hosted-input-storage.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"@bigcommerce/bigpay-client\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"@bigcommerce/request-sender\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"rxjs\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"rxjs/operators\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/iframe/iframe-event-poster.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/payment-request-sender.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"lodash\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/address/map-to-internal-address.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/billing/is-billing-address-like.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/common/utility/amount-transformer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/coupon/map-to-internal-coupon.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/coupon/map-to-internal-gift-certificate.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/generated/checkout-button-method-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-to-internal-line-items.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-gift-certificate-to-internal-line-item.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-to-internal-line-item.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-to-internal-cart.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/promotion/map-to-discount-notifications.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/missing-data-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/customer/map-to-internal-customer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/card-expiry-formatter.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"card-validator\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/card-number-formatter.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/order/map-to-internal-order.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/shipping/map-to-internal-shipping-option.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/payment-request-transformer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/is-vaulted-instrument.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/storefront-stored-card-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/hosted-field-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/map-to-autocomplete-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-autocomplete-fieldset.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/hosted-field-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-card-expiry-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-card-number-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-aggregator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/errors/invalid-hosted-form-value-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-payment-handler.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-stored-card-handler.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"yup\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-validator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-factory.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/map-to-accessibility-label.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/errors/invalid-hosted-form-config-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/initialize-hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/notify-initialize-error.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Decorates a class or a method by binding all its prototype methods or itself\n * to the calling instance respectively.\n */\nfunction bindDecorator<T extends Method>(\n target: object,\n key: string,\n descriptor: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\nfunction bindDecorator<T extends Constructor<object>>(target: T): T;\n\nfunction bindDecorator(target: any, key?: any, descriptor?: any): any {\n if (!key || !descriptor) {\n return bindClassDecorator(target);\n }\n\n return bindMethodDecorator(target, key, descriptor);\n}\n\nexport default bindDecorator;\n\n/**\n * Decorates a class by binding all its prototype methods to the calling\n * instance.\n */\nexport function bindClassDecorator<T extends Constructor<object>>(target: T): T {\n const decoratedTarget = class extends target {};\n\n Object.getOwnPropertyNames(target.prototype).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(target.prototype, key);\n\n if (!descriptor || key === 'constructor') {\n return;\n }\n\n Object.defineProperty(\n decoratedTarget.prototype,\n key,\n bindMethodDecorator(target.prototype, key, descriptor),\n );\n });\n\n return decoratedTarget;\n}\n\n/**\n * Decorates a method by binding it to the calling instance.\n */\nexport function bindMethodDecorator<T extends Method>(\n _: object,\n key: string,\n descriptor: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T> {\n if (typeof descriptor.value !== 'function') {\n return descriptor;\n }\n\n let method: T = descriptor.value;\n\n return {\n get() {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const boundMethod = method.bind(this) as T;\n\n Object.defineProperty(this, key, {\n ...descriptor,\n value: boundMethod,\n });\n\n return boundMethod;\n },\n set(value) {\n method = value;\n },\n };\n}\n\nexport type Constructor<T> = new (...args: any[]) => T;\nexport type Method = (...args: any[]) => any;\n","import { setPrototypeOf } from '../../utility';\n\nimport CustomError from './custom-error';\n\n/**\n * This error type should not be constructed directly. It is a base class for\n * all custom errors thrown in this library.\n */\nexport default abstract class StandardError extends Error implements CustomError {\n name = 'StandardError';\n type = 'standard';\n\n constructor(message?: string) {\n super(message || 'An unexpected error has occurred.');\n\n setPrototypeOf(this, new.target.prototype);\n\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, new.target);\n } else {\n this.stack = new Error(this.message).stack;\n }\n }\n}\n","export default function setPrototypeOf(object: any, prototype: object) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(object, prototype);\n } else {\n object.__proto__ = prototype;\n }\n\n return object;\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when a method is unable to proceed because the\n * caller has not provided all the arguments according to their requirements,\n * i.e.: if an argument is missing or it is not the expected data type.\n */\nexport default class InvalidArgumentError extends StandardError {\n constructor(message?: string) {\n super(message || 'Invalid arguments have been provided.');\n\n this.name = 'InvalidArgumentError';\n this.type = 'invalid_argument';\n }\n}\n","import { InvalidArgumentError } from '../error/errors';\n\nimport Url from './url';\n\nexport default function parseUrl(url: string): Url {\n if (!/^(https?:)?\\/\\//.test(url)) {\n throw new InvalidArgumentError('The provided URL must be absolute.');\n }\n\n // new URL() is not supported in IE11, use anchor tag instead\n const anchor = document.createElement('a');\n\n anchor.href = url;\n\n // IE11 returns 80 or 443 for the port number depending on the URL scheme,\n // even if the port number is not specified in the URL.\n const port =\n anchor.port && url.indexOf(`${anchor.hostname}:${anchor.port}`) !== -1 ? anchor.port : '';\n\n return {\n hash: anchor.hash,\n hostname: anchor.hostname,\n href: anchor.href,\n origin: `${anchor.protocol}//${anchor.hostname}${port ? `:${port}` : ''}`,\n pathname: anchor.pathname,\n port,\n protocol: anchor.protocol,\n search: anchor.search,\n };\n}\n","import parseUrl from './parse-url';\nimport Url from './url';\n\nexport default function appendWww(url: Url): Url {\n return parseUrl(\n url.hostname.indexOf('www') === 0\n ? url.href\n : url.href.replace(url.hostname, `www.${url.hostname}`),\n );\n}\n","import IframeEvent from './iframe-event';\n\nexport default function isIframeEvent<TEvent extends IframeEvent<TType>, TType extends string>(\n object: any,\n type: TType,\n): object is TEvent {\n return object.type === type;\n}\n","import { bindDecorator as bind } from '@bigcommerce/checkout-sdk/utility';\n\nimport { appendWww, parseUrl } from '../url';\n\nimport { IframeEventMap } from './iframe-event';\nimport isIframeEvent from './is-iframe-event';\n\nexport default class IframeEventListener<\n TEventMap extends IframeEventMap<keyof TEventMap>,\n TContext = undefined,\n> {\n private _isListening: boolean;\n private _listeners: EventListeners<TEventMap, TContext>;\n private _sourceOrigins: string[];\n\n constructor(sourceOrigin: string) {\n this._sourceOrigins = [\n parseUrl(sourceOrigin).origin,\n appendWww(parseUrl(sourceOrigin)).origin,\n ];\n this._isListening = false;\n this._listeners = {};\n }\n\n listen(): void {\n if (this._isListening) {\n return;\n }\n\n this._isListening = true;\n\n window.addEventListener('message', this._handleMessage);\n }\n\n stopListen(): void {\n if (!this._isListening) {\n return;\n }\n\n this._isListening = false;\n\n window.removeEventListener('message', this._handleMessage);\n }\n\n addListener<TType extends keyof TEventMap>(\n type: TType,\n listener: (event: TEventMap[TType], context?: TContext) => void,\n ): void {\n let listeners = this._listeners[type];\n\n if (!listeners) {\n this._listeners[type] = listeners = [];\n }\n\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n }\n\n removeListener<TType extends keyof TEventMap>(\n type: TType,\n listener: (event: TEventMap[TType], context?: TContext) => void,\n ): void {\n const listeners = this._listeners[type];\n\n if (!listeners) {\n return;\n }\n\n const index = listeners.indexOf(listener);\n\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n\n trigger<TType extends keyof TEventMap>(event: TEventMap[TType], context?: TContext): void {\n const listeners = this._listeners[event.type];\n\n if (!listeners) {\n return;\n }\n\n listeners.forEach((listener) => (context ? listener(event, context) : listener(event)));\n }\n\n @bind\n private _handleMessage(messageEvent: MessageEvent): void {\n if (\n this._sourceOrigins.indexOf(messageEvent.origin) === -1 ||\n !isIframeEvent(messageEvent.data as TEventMap[keyof TEventMap], messageEvent.data.type)\n ) {\n return;\n }\n\n const { context, ...event } = messageEvent.data;\n\n this.trigger(event, context);\n }\n}\n\ntype EventListeners<TEventMap, TContext = undefined> = {\n [key in keyof TEventMap]?: Array<(event: TEventMap[key], context?: TContext) => void>;\n};\n","export default class HostedInputStorage {\n private _nonce?: string;\n\n setNonce(nonce: string): void {\n this._nonce = nonce;\n }\n\n getNonce(): string | undefined {\n return this._nonce;\n }\n}\n","import HostedInputStorage from './hosted-input-storage';\n\nlet storage: HostedInputStorage | null;\n\nexport default function getHostedInputStorage(): HostedInputStorage {\n storage = storage || new HostedInputStorage();\n\n return storage;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@bigcommerce/bigpay-client\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@bigcommerce/request-sender\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs/operators\");","import { fromEvent } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\n\nimport { parseUrl } from '../url';\n\nimport IframeEvent from './iframe-event';\nimport isIframeEvent from './is-iframe-event';\n\nexport interface IframeEventPostOptions<\n TSuccessEvent extends IframeEvent,\n TErrorEvent extends IframeEvent,\n> {\n errorType?: TErrorEvent['type'];\n successType?: TSuccessEvent['type'];\n}\n\nexport default class IframeEventPoster<TEvent, TContext = undefined> {\n private _targetOrigin: string;\n\n constructor(targetOrigin: string, private _targetWindow?: Window, private _context?: TContext) {\n this._targetOrigin = targetOrigin === '*' ? '*' : parseUrl(targetOrigin).origin;\n }\n\n post(event: TEvent): void;\n post<\n TSuccessEvent extends IframeEvent = IframeEvent,\n TErrorEvent extends IframeEvent = IframeEvent,\n >(\n event: TEvent,\n options: IframeEventPostOptions<TSuccessEvent, TErrorEvent>,\n ): Promise<TSuccessEvent>;\n post<\n TSuccessEvent extends IframeEvent = IframeEvent,\n TErrorEvent extends IframeEvent = IframeEvent,\n >(\n event: TEvent,\n options?: IframeEventPostOptions<TSuccessEvent, TErrorEvent>,\n ): Promise<TSuccessEvent> | void {\n const targetWindow = this._targetWindow;\n\n if (window === targetWindow) {\n return;\n }\n\n if (!targetWindow) {\n throw new Error('Unable to post message because target window is not set.');\n }\n\n const result =\n options &&\n fromEvent<MessageEvent>(window, 'message')\n .pipe(\n filter(\n (event) =>\n event.origin === this._targetOrigin &&\n isIframeEvent(event.data, event.data.type) &&\n [options.successType, options.errorType].indexOf(event.data.type) !==\n -1,\n ),\n map((event) => {\n if (options.errorType === event.data.type) {\n throw event.data;\n }\n\n return event.data;\n }),\n take(1),\n )\n .toPromise();\n\n targetWindow.postMessage({ ...event, context: this._context }, this._targetOrigin);\n\n return result;\n }\n\n setTarget(window: Window) {\n this._targetWindow = window;\n }\n\n setContext(context: TContext) {\n this._context = context;\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport PaymentRequestBody from './payment-request-body';\n\n/**\n * @todo Convert this file into TypeScript properly\n */\nexport default class PaymentRequestSender {\n /**\n * @class\n * @param {BigpayClient} client\n */\n constructor(private _client: any) {}\n\n submitPayment(payload: PaymentRequestBody): Promise<Response<any>> {\n return new Promise((resolve, reject) => {\n this._client.submitPayment(payload, (error: any, response: any) => {\n if (error) {\n reject(this._transformResponse(error));\n } else {\n resolve(this._transformResponse(response));\n }\n });\n });\n }\n\n initializeOffsitePayment(payload: PaymentRequestBody, target?: string): Promise<void> {\n return new Promise(() => {\n this._client.initializeOffsitePayment(payload, null, target);\n });\n }\n\n private _transformResponse(response: any): Response<any> {\n return {\n headers: response.headers,\n body: response.data,\n status: response.status,\n statusText: response.statusText,\n };\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","import { BillingAddress, isBillingAddressLike } from '../billing';\nimport { Consignment } from '../shipping';\n\nimport Address from './address';\nimport InternalAddress from './internal-address';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalAddress(\n address: Address | BillingAddress,\n consignments?: Consignment[],\n): InternalAddress<any> {\n let addressId;\n\n if (isBillingAddressLike(address)) {\n addressId = address.id;\n } else if (consignments && consignments.length) {\n addressId = consignments[0].id;\n }\n\n return {\n id: addressId,\n firstName: address.firstName,\n lastName: address.lastName,\n company: address.company,\n addressLine1: address.address1,\n addressLine2: address.address2,\n city: address.city,\n province: address.stateOrProvince,\n provinceCode: address.stateOrProvinceCode,\n postCode: address.postalCode,\n country: address.country,\n countryCode: address.countryCode,\n phone: address.phone,\n customFields: address.customFields,\n };\n}\n","import { Address } from '../address';\n\nimport BillingAddress from './billing-address';\n\nexport default function isBillingAddressLike(address: Address): address is BillingAddress {\n const billingAddress = address as BillingAddress;\n\n return typeof billingAddress.id !== 'undefined';\n}\n","export default class AmountTransformer {\n constructor(private _decimalPlaces: number) {}\n\n toInteger(amount: number): number {\n return Math.round(amount * 10 ** this._decimalPlaces);\n }\n}\n","import Coupon from './coupon';\nimport InternalCoupon from './internal-coupon';\n\nconst couponTypes = [\n 'per_item_discount',\n 'percentage_discount',\n 'per_total_discount',\n 'shipping_discount',\n 'free_shipping',\n];\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalCoupon(coupon: Coupon): InternalCoupon {\n return {\n code: coupon.code,\n discount: coupon.displayName,\n discountType: couponTypes.indexOf(coupon.couponType),\n };\n}\n","import GiftCertificate from './gift-certificate';\nimport InternalGiftCertificate from './internal-gift-certificate';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalGiftCertificate(\n giftCertificate: GiftCertificate,\n): InternalGiftCertificate {\n return {\n code: giftCertificate.code,\n discountedAmount: giftCertificate.used,\n remainingBalance: giftCertificate.remaining,\n giftCertificate: {\n balance: giftCertificate.balance,\n code: giftCertificate.code,\n purchaseDate: giftCertificate.purchaseDate,\n },\n };\n}\n","enum CheckoutButtonMethodType {\n APPLEPAY = \"applepay\",\n AMAZON_PAY_V2 = \"amazonpay\",\n BRAINTREE_PAYPAL = \"braintreepaypal\",\n BRAINTREE_VENMO = \"braintreevenmo\",\n BRAINTREE_PAYPAL_CREDIT = \"braintreepaypalcredit\",\n GOOGLEPAY_ADYENV2 = \"googlepayadyenv2\",\n GOOGLEPAY_ADYENV3 = \"googlepayadyenv3\",\n GOOGLEPAY_AUTHORIZENET = \"googlepayauthorizenet\",\n GOOGLEPAY_BNZ = \"googlepaybnz\",\n GOOGLEPAY_BRAINTREE = \"googlepaybraintree\",\n GOOGLEPAY_CHECKOUTCOM = \"googlepaycheckoutcom\",\n GOOGLEPAY_CYBERSOURCEV2 = \"googlepaycybersourcev2\",\n GOOGLEPAY_ORBITAL = \"googlepayorbital\",\n GOOGLEPAY_STRIPE = \"googlepaystripe\",\n GOOGLEPAY_STRIPEUPE = \"googlepaystripeupe\",\n GOOGLEPAY_WORLDPAYACCESS = \"googlepayworldpayaccess\",\n MASTERPASS = \"masterpass\",\n PAYPALEXPRESS = \"paypalexpress\"\n}\nexport default CheckoutButtonMethodType;\n\n","import InternalLineItem from './internal-line-item';\nimport { LineItem } from './line-item';\nimport LineItemMap from './line-item-map';\nimport mapGiftCertificateToInternalLineItem from './map-gift-certificate-to-internal-line-item';\nimport mapToInternalLineItem from './map-to-internal-line-item';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalLineItems(\n itemMap: LineItemMap,\n decimalPlaces: number,\n idKey: keyof LineItem = 'id',\n): InternalLineItem[] {\n return (Object.keys(itemMap) as Array<keyof LineItemMap>).reduce(\n (result, key) => [\n ...result,\n ...(itemMap[key] as LineItem[]).map((item: any) => {\n if (key === 'giftCertificates') {\n return mapGiftCertificateToInternalLineItem(item, decimalPlaces);\n }\n\n return mapToInternalLineItem(\n item,\n mapToInternalLineItemType(key),\n decimalPlaces,\n idKey,\n );\n }),\n ],\n [] as InternalLineItem[],\n );\n}\n\nfunction mapToInternalLineItemType(type: string): string {\n switch (type) {\n case 'physicalItems':\n return 'ItemPhysicalEntity';\n\n case 'digitalItems':\n return 'ItemDigitalEntity';\n\n case 'giftCertificates':\n return 'ItemGiftCertificateEntity';\n\n default:\n return '';\n }\n}\n","import { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport InternalLineItem from './internal-line-item';\nimport { GiftCertificateItem } from './line-item';\n\nexport default function mapGiftCertificateToInternalLineItem(\n item: GiftCertificateItem,\n decimalPlaces: number,\n): InternalLineItem {\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: item.id,\n imageUrl: '',\n name: item.name,\n amount: item.amount,\n amountAfterDiscount: item.amount,\n discount: 0,\n integerAmount: amountTransformer.toInteger(item.amount),\n integerAmountAfterDiscount: amountTransformer.toInteger(item.amount),\n integerUnitPrice: amountTransformer.toInteger(item.amount),\n integerUnitPriceAfterDiscount: amountTransformer.toInteger(item.amount),\n integerDiscount: 0,\n quantity: 1,\n sender: item.sender,\n recipient: item.recipient,\n type: 'ItemGiftCertificateEntity',\n attributes: [],\n variantId: null,\n };\n}\n","import { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport InternalLineItem from './internal-line-item';\nimport { DigitalItem, LineItem } from './line-item';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalLineItem(\n item: LineItem,\n type: string,\n decimalPlaces: number,\n idKey: keyof LineItem = 'id',\n): InternalLineItem {\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: item[idKey] as string | number,\n imageUrl: item.imageUrl,\n amount: item.extendedListPrice,\n amountAfterDiscount: item.extendedSalePrice,\n discount: item.discountAmount,\n integerAmount: amountTransformer.toInteger(item.extendedListPrice),\n integerAmountAfterDiscount: amountTransformer.toInteger(item.extendedSalePrice),\n integerDiscount: amountTransformer.toInteger(item.discountAmount),\n integerUnitPrice: amountTransformer.toInteger(item.listPrice),\n integerUnitPriceAfterDiscount: amountTransformer.toInteger(item.salePrice),\n downloadsPageUrl: (item as DigitalItem).downloadPageUrl,\n name: item.name,\n quantity: item.quantity,\n brand: item.brand,\n sku: item.sku,\n categoryNames: item.categoryNames,\n variantId: item.variantId,\n productId: item.productId,\n attributes: (item.options || []).map((option) => ({\n name: option.name,\n value: option.value,\n })),\n addedByPromotion: item.addedByPromotion,\n type,\n };\n}\n","import { keyBy, reduce, some } from 'lodash';\n\nimport { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { Checkout } from '../checkout';\nimport { mapToInternalCoupon, mapToInternalGiftCertificate } from '../coupon';\nimport { mapToDiscountNotifications } from '../promotion';\n\nimport InternalCart from './internal-cart';\nimport mapToInternalLineItems from './map-to-internal-line-items';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalCart(checkout: Checkout): InternalCart {\n const decimalPlaces = checkout.cart.currency.decimalPlaces;\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: checkout.cart.id,\n items: mapToInternalLineItems(checkout.cart.lineItems, decimalPlaces),\n currency: checkout.cart.currency.code,\n coupon: {\n discountedAmount: reduce(\n checkout.cart.coupons,\n (sum, coupon) => {\n return sum + coupon.discountedAmount;\n },\n 0,\n ),\n coupons: checkout.cart.coupons.map(mapToInternalCoupon),\n },\n discount: {\n amount: checkout.cart.discountAmount,\n integerAmount: amountTransformer.toInteger(checkout.cart.discountAmount),\n },\n discountNotifications: mapToDiscountNotifications(checkout.promotions),\n giftCertificate: {\n totalDiscountedAmount: reduce(\n checkout.giftCertificates,\n (sum, certificate) => {\n return sum + certificate.used;\n },\n 0,\n ),\n appliedGiftCertificates: keyBy(\n checkout.giftCertificates.map(mapToInternalGiftCertificate),\n 'code',\n ),\n },\n shipping: {\n amount: checkout.shippingCostTotal,\n integerAmount: amountTransformer.toInteger(checkout.shippingCostTotal),\n amountBeforeDiscount: checkout.shippingCostBeforeDiscount,\n integerAmountBeforeDiscount: amountTransformer.toInteger(\n checkout.shippingCostBeforeDiscount,\n ),\n required: some(\n checkout.cart.lineItems.physicalItems,\n (lineItem) => lineItem.isShippingRequired,\n ),\n },\n subtotal: {\n amount: checkout.subtotal,\n integerAmount: amountTransformer.toInteger(checkout.subtotal),\n },\n storeCredit: {\n amount: checkout.customer ? checkout.customer.storeCredit : 0,\n },\n taxSubtotal: {\n amount: checkout.taxTotal,\n integerAmount: amountTransformer.toInteger(checkout.taxTotal),\n },\n taxes: checkout.taxes,\n taxTotal: {\n amount: checkout.taxTotal,\n integerAmount: amountTransformer.toInteger(checkout.taxTotal),\n },\n handling: {\n amount: checkout.handlingCostTotal,\n integerAmount: amountTransformer.toInteger(checkout.handlingCostTotal),\n },\n grandTotal: {\n amount: checkout.grandTotal,\n integerAmount: amountTransformer.toInteger(checkout.grandTotal),\n },\n };\n}\n","import { DiscountNotification } from '../discount';\n\nimport { Promotion } from '.';\n\nexport default function mapToDiscountNotifications(\n promotions?: Promotion[],\n): DiscountNotification[] {\n const notifications: DiscountNotification[] = [];\n\n (promotions || []).forEach((promotion) => {\n (promotion.banners || []).forEach((banner) => {\n notifications.push({\n placeholders: [],\n discountType: null,\n message: '',\n messageHtml: banner.text,\n });\n });\n });\n\n return notifications;\n}\n","import StandardError from './standard-error';\n\nexport enum MissingDataErrorType {\n MissingBillingAddress,\n MissingCart,\n MissingCheckout,\n MissingConsignments,\n MissingCustomer,\n MissingCheckoutConfig,\n MissingOrder,\n MissingOrderConfig,\n MissingOrderId,\n MissingPayment,\n MissingPaymentId,\n MissingPaymentInstrument,\n MissingPaymentMethod,\n MissingPaymentProviderCustomer,\n MissingPaymentRedirectUrl,\n MissingPaymentStatus,\n MissingPaymentToken,\n MissingShippingAddress,\n}\n\n/**\n * Throw this error when data that is expected to exist is missing. Usually it\n * is due to the fact that certain data has not been retrieved from or saved to\n * the server yet. And such data is required to perform certain actions.\n */\nexport default class MissingDataError extends StandardError {\n constructor(public subtype: MissingDataErrorType) {\n super(getErrorMessage(subtype));\n\n this.name = 'MissingDataError';\n this.type = 'missing_data';\n }\n}\n\nfunction getErrorMessage(type: MissingDataErrorType): string {\n switch (type) {\n case MissingDataErrorType.MissingBillingAddress:\n return 'Unable to proceed because billing address data is unavailable.';\n\n case MissingDataErrorType.MissingCart:\n return 'Unable to proceed because cart data is unavailable.';\n\n case MissingDataErrorType.MissingConsignments:\n return 'Unable to proceed because consignments data is unavailable.';\n\n case MissingDataErrorType.MissingCheckout:\n return 'Unable to proceed because checkout data is unavailable.';\n\n case MissingDataErrorType.MissingCustomer:\n return 'Unable to proceed because customer data is unavailable.';\n\n case MissingDataErrorType.MissingCheckoutConfig:\n case MissingDataErrorType.MissingOrderConfig:\n return 'Unable to proceed because configuration data is unavailable.';\n\n case MissingDataErrorType.MissingOrder:\n return 'Unable to proceed because order data is unavailable.';\n\n case MissingDataErrorType.MissingOrderId:\n return 'Unable to proceed because order ID is unavailable or not generated yet.';\n\n case MissingDataErrorType.MissingPayment:\n return 'Unable to proceed because payment data is unavailable.';\n\n case MissingDataErrorType.MissingPaymentToken:\n return 'Unable to proceed because the token required to submit a payment is missing.';\n\n case MissingDataErrorType.MissingPaymentMethod:\n return 'Unable to proceed because payment method data is unavailable or not properly configured.';\n\n case MissingDataErrorType.MissingPaymentProviderCustomer:\n return 'Unable to proceed because payment provider customer is unavailable.';\n\n case MissingDataErrorType.MissingShippingAddress:\n return 'Unable to proceed because shipping address data is unavailable.';\n\n default:\n return 'Unable to proceed because the required data is unavailable.';\n }\n}\n","import { mapToInternalAddress } from '../address';\nimport { OrderBillingAddress } from '../order-billing-address/order-billing-address-state';\n\nimport InternalCustomer from './internal-customer';\n\nimport { Customer } from '.';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalCustomer(\n customer: Customer,\n billingAddress: OrderBillingAddress,\n): InternalCustomer {\n const firstName = customer.firstName || billingAddress.firstName || '';\n const lastName = customer.lastName || billingAddress.lastName || '';\n\n return {\n addresses: (customer.addresses || []).map((address) => mapToInternalAddress(address)),\n customerId: customer.id,\n isGuest: customer.isGuest,\n storeCredit: customer.storeCredit,\n email: customer.email || billingAddress.email || '',\n firstName,\n lastName,\n name: customer.fullName || [firstName, lastName].join(' '),\n customerGroupName: customer.customerGroup && customer.customerGroup.name,\n };\n}\n","import CardExpiryDate from './card-expiry-date';\n\nconst NUMBER_SEPARATOR = '/';\n\nexport default class CardExpiryFormatter {\n format(value: string): string {\n const [month = '', year = ''] = value.split(new RegExp(`\\\\s*${NUMBER_SEPARATOR}\\\\s*`));\n const trimmedMonth = month.slice(0, 2);\n const trimmedYear =\n year.length === 4 ? year.slice(-2) : year ? year.slice(0, 2) : month.slice(2);\n\n // i.e.: '1'\n if (value.length < 2) {\n return month;\n }\n\n // ie.: '10 /' (without trailing space)\n if (value.length > 3 && !trimmedYear) {\n return trimmedMonth;\n }\n\n return `${trimmedMonth} ${NUMBER_SEPARATOR} ${trimmedYear}`;\n }\n\n toObject(value: string): CardExpiryDate {\n const [month = '', year = ''] = value.split(new RegExp(`\\\\s*${NUMBER_SEPARATOR}\\\\s*`));\n\n if (!/^\\d+$/.test(month) || !/^\\d+$/.test(year)) {\n return { month: '', year: '' };\n }\n\n return {\n month: month.length === 1 ? `0${month}` : month.slice(0, 2),\n year: year.length === 2 ? `20${year}` : year.slice(0, 4),\n };\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"card-validator\");","import { creditCardType, number } from 'card-validator';\nimport { max } from 'lodash';\n\nconst NUMBER_SEPARATOR = ' ';\n\nexport default class CardNumberFormatter {\n format(value: string): string {\n const { card } = number(value);\n\n if (!card) {\n return value;\n }\n\n const maxLength = max(creditCardType(value).map((info) => max(info.lengths)));\n const unformattedValue = this.unformat(value).slice(0, maxLength);\n\n return card.gaps\n .filter((gapIndex) => unformattedValue.length > gapIndex)\n .reduce(\n (output, gapIndex, index) =>\n [output.slice(0, gapIndex + index), output.slice(gapIndex + index)].join(\n NUMBER_SEPARATOR,\n ),\n unformattedValue,\n );\n }\n\n unformat(value: string): string {\n const { card } = number(value);\n\n if (!card) {\n return value;\n }\n\n return value.replace(new RegExp(NUMBER_SEPARATOR, 'g'), '');\n }\n}\n","import { filter, find, keyBy, reduce } from 'lodash';\n\nimport { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { LineItem, mapToInternalLineItems } from '../cart';\nimport { Checkout } from '../checkout';\nimport { mapToInternalCoupon } from '../coupon';\nimport { HOSTED } from '../payment';\n\nimport InternalOrder, {\n InternalGiftCertificateList,\n InternalIncompleteOrder,\n InternalOrderPayment,\n InternalSocialDataList,\n} from './internal-order';\nimport Order, {\n GatewayOrderPayment,\n GiftCertificateOrderPayment,\n OrderPayment,\n OrderPayments,\n} from './order';\nimport { OrderMetaState } from './order-state';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalOrder(\n order: Order,\n orderMeta: OrderMetaState = {},\n): InternalOrder {\n const decimalPlaces = order.currency.decimalPlaces;\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: order.orderId,\n items: mapToInternalLineItems(order.lineItems, order.currency.decimalPlaces, 'productId'),\n orderId: order.orderId,\n currency: order.currency.code,\n customerCanBeCreated: order.customerCanBeCreated,\n payment: mapToInternalOrderPayment(order.payments, orderMeta.payment),\n subtotal: {\n amount: order.baseAmount,\n integerAmount: amountTransformer.toInteger(order.baseAmount),\n },\n coupon: {\n discountedAmount: reduce(\n order.coupons,\n (sum, coupon) => {\n return sum + coupon.discountedAmount;\n },\n 0,\n ),\n coupons: order.coupons.map(mapToInternalCoupon),\n },\n discount: {\n amount: order.discountAmount,\n integerAmount: amountTransformer.toInteger(order.discountAmount),\n },\n token: orderMeta.orderToken,\n callbackUrl: orderMeta.callbackUrl,\n discountNotifications: [],\n giftCertificate: mapToGiftCertificates(order.payments),\n socialData: mapToInternalSocialDataList(order),\n status: order.status,\n hasDigitalItems: order.hasDigitalItems,\n isDownloadable: order.isDownloadable,\n isComplete: order.isComplete,\n shipping: {\n amount: order.shippingCostTotal,\n integerAmount: amountTransformer.toInteger(order.shippingCostTotal),\n amountBeforeDiscount: order.shippingCostBeforeDiscount,\n integerAmountBeforeDiscount: amountTransformer.toInteger(\n order.shippingCostBeforeDiscount,\n ),\n },\n storeCredit: {\n amount: mapToStoreCredit(order.payments),\n },\n taxes: order.taxes,\n taxTotal: {\n amount: order.taxTotal,\n integerAmount: amountTransformer.toInteger(order.taxTotal),\n },\n handling: {\n amount: order.handlingCostTotal,\n integerAmount: amountTransformer.toInteger(order.handlingCostTotal),\n },\n grandTotal: {\n amount: order.orderAmount,\n integerAmount: order.orderAmountAsInteger,\n },\n };\n}\n\nexport function mapToInternalIncompleteOrder(checkout: Checkout): InternalIncompleteOrder {\n const payment = find(checkout.payments, { providerType: HOSTED });\n\n return {\n orderId: null,\n isComplete: false,\n payment: !payment\n ? {}\n : {\n id: payment.providerId,\n gateway: payment.gatewayId,\n status: mapToInternalPaymentStatus(payment.detail.step),\n },\n };\n}\n\nfunction mapToInternalPaymentStatus(status: string): string {\n return `PAYMENT_STATUS_${status}`;\n}\n\nfunction mapToStoreCredit(payments?: OrderPayments): number {\n const item = find(payments, { providerId: 'storecredit' });\n\n return item ? item.amount : 0;\n}\n\nfunction mapToGiftCertificates(payments?: OrderPayments): InternalGiftCertificateList {\n const items = filter(payments, {\n providerId: 'giftcertificate',\n }) as GiftCertificateOrderPayment[];\n\n return {\n totalDiscountedAmount: reduce(items, (sum, item) => item.amount + sum, 0),\n appliedGiftCertificates: keyBy(\n items.map((item) => ({\n code: item.detail.code,\n discountedAmount: item.amount,\n remainingBalance: item.detail.remaining,\n giftCertificate: {\n balance: item.amount + item.detail.remaining,\n code: item.detail.code,\n purchaseDate: '',\n },\n })),\n 'code',\n ),\n };\n}\n\nfunction mapToInternalOrderPayment(\n payments?: OrderPayments,\n payment: InternalOrderPayment = {},\n): InternalOrderPayment {\n const item = find(payments, isDefaultOrderPayment) as GatewayOrderPayment;\n\n if (!item) {\n return {};\n }\n\n return {\n id: item.providerId,\n status: mapToInternalPaymentStatus(item.detail.step),\n helpText: item.detail.instructions,\n returnUrl: payment.returnUrl,\n };\n}\n\nfunction isDefaultOrderPayment(payment: OrderPayment): payment is GatewayOrderPayment {\n return payment.providerId !== 'giftcertificate' && payment.providerId !== 'storecredit';\n}\n\nfunction mapToInternalSocialDataList(\n order: Order,\n): { [itemId: string]: InternalSocialDataList } | undefined {\n const socialDataObject: { [itemId: string]: InternalSocialDataList } = {};\n const items = [...order.lineItems.physicalItems, ...order.lineItems.digitalItems];\n\n items.forEach((item) => {\n socialDataObject[item.id] = mapToInternalSocialData(item);\n });\n\n return socialDataObject;\n}\n\nfunction mapToInternalSocialData(lineItem: LineItem): InternalSocialDataList {\n const codes = ['fb', 'tw', 'gp'];\n\n return codes.reduce((socialData, code) => {\n const item =\n lineItem.socialMedia && find(lineItem.socialMedia, (item) => item.code === code);\n\n if (!item) {\n return socialData;\n }\n\n socialData[code] = {\n name: lineItem.name,\n description: lineItem.name,\n image: lineItem.imageUrl,\n url: item.link,\n shareText: item.text,\n sharingLink: item.link,\n channelName: item.channel,\n channelCode: item.code,\n };\n\n return socialData;\n }, {} as InternalSocialDataList);\n}\n","import InternalShippingOption from './internal-shipping-option';\nimport ShippingOption from './shipping-option';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalShippingOption(\n option: ShippingOption,\n isSelected: boolean,\n): InternalShippingOption {\n return {\n description: option.description,\n module: option.type,\n price: option.cost,\n id: option.id,\n selected: isSelected,\n isRecommended: option.isRecommended,\n imageUrl: option.imageUrl,\n transitTime: option.transitTime,\n };\n}\n","import { pick } from 'lodash';\n\nimport { Address, mapToInternalAddress } from '../address';\nimport { mapToInternalCart } from '../cart';\nimport { InternalCheckoutSelectors } from '../checkout';\nimport { CheckoutButtonMethodType } from '../checkout-buttons/strategies';\nimport { MissingDataError, MissingDataErrorType } from '../common/error/errors';\nimport { mapToInternalCustomer } from '../customer';\nimport { HostedFormOrderData } from '../hosted-form';\nimport {\n CardExpiryFormatter,\n CardNumberFormatter,\n HostedInputValues,\n} from '../hosted-form/iframe-content';\nimport { mapToInternalOrder } from '../order';\nimport { mapToInternalShippingOption } from '../shipping';\n\nimport isVaultedInstrument, { isFormattedVaultedInstrument } from './is-vaulted-instrument';\nimport Payment, {\n HostedCreditCardInstrument,\n HostedVaultedInstrument,\n PaymentInstrument,\n} from './payment';\nimport PaymentMethod from './payment-method';\nimport PaymentRequestBody from './payment-request-body';\n\nexport default class PaymentRequestTransformer {\n private _cardExpiryFormatter = new CardExpiryFormatter();\n private _cardNumberFormatter = new CardNumberFormatter();\n\n transform(payment: Payment, checkoutState: InternalCheckoutSelectors): PaymentRequestBody {\n const billingAddress = checkoutState.billingAddress.getBillingAddress();\n const checkout = checkoutState.checkout.getCheckout();\n const customer = checkoutState.customer.getCustomer();\n const order = checkoutState.order.getOrder();\n const paymentMethod = checkoutState.paymentMethods.getPaymentMethod(\n payment.methodId,\n payment.gatewayId,\n );\n const shippingAddress = this._mapShippingAddress(checkoutState, paymentMethod);\n const consignments = checkoutState.consignments.getConsignments();\n const shippingOption = checkoutState.consignments.getShippingOption();\n const storeConfig = checkoutState.config.getStoreConfig();\n const contextConfig = checkoutState.config.getContextConfig();\n const instrumentMeta = checkoutState.instruments.getInstrumentsMeta();\n const paymentMeta = checkoutState.paymentMethods.getPaymentMethodsMeta();\n const orderMeta = checkoutState.order.getOrderMeta();\n const internalCustomer =\n customer && billingAddress && mapToInternalCustomer(customer, billingAddress);\n\n const authToken =\n instrumentMeta &&\n payment.paymentData &&\n (isVaultedInstrument(payment.paymentData) ||\n isFormattedVaultedInstrument(payment.paymentData))\n ? `${checkoutState.payment.getPaymentToken()}, ${instrumentMeta.vaultAccessToken}`\n : checkoutState.payment.getPaymentToken();\n\n if (!authToken) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentToken);\n }\n\n return {\n additionalAction: payment.additionalAction,\n authToken,\n customer: internalCustomer,\n billingAddress: billingAddress && mapToInternalAddress(billingAddress),\n shippingAddress: shippingAddress && mapToInternalAddress(shippingAddress, consignments),\n shippingOption: shippingOption && mapToInternalShippingOption(shippingOption, true),\n cart: checkout && mapToInternalCart(checkout),\n order: order && mapToInternalOrder(order, orderMeta),\n orderMeta,\n payment: payment.paymentData,\n paymentMethod: paymentMethod && this._transformPaymentMethod(paymentMethod),\n quoteMeta: {\n request: {\n ...paymentMeta,\n geoCountryCode: contextConfig && contextConfig.geoCountryCode,\n },\n },\n source: 'bigcommerce-checkout-js-sdk',\n store: pick(storeConfig && storeConfig.storeProfile, [\n 'storeHash',\n 'storeId',\n 'storeLanguage',\n 'storeName',\n ]),\n };\n }\n\n transformWithHostedFormData(\n values: HostedInputValues,\n data: HostedFormOrderData,\n nonce: string,\n ): PaymentRequestBody {\n const {\n additionalAction,\n authToken,\n checkout,\n config,\n order,\n orderMeta,\n payment = {},\n paymentMethod,\n paymentMethodMeta,\n } = data;\n const consignment = checkout && checkout.consignments[0];\n const shippingAddress = consignment && consignment.shippingAddress;\n const shippingOption = consignment && consignment.selectedShippingOption;\n\n return {\n additionalAction,\n authToken,\n paymentMethod: paymentMethod && this._transformPaymentMethod(paymentMethod),\n customer:\n order &&\n order.billingAddress &&\n checkout &&\n mapToInternalCustomer(checkout.customer, order.billingAddress),\n billingAddress:\n order && order.billingAddress && mapToInternalAddress(order.billingAddress),\n shippingAddress:\n shippingAddress &&\n checkout &&\n mapToInternalAddress(shippingAddress, checkout.consignments),\n shippingOption: shippingOption && mapToInternalShippingOption(shippingOption, true),\n cart: checkout && mapToInternalCart(checkout),\n order: order && mapToInternalOrder(order, orderMeta),\n orderMeta,\n payment: this._transformHostedInputValues(values, payment, nonce),\n quoteMeta: {\n request: {\n ...paymentMethodMeta,\n geoCountryCode: config && config.context.geoCountryCode,\n },\n },\n source: 'bigcommerce-checkout-js-sdk',\n store:\n config &&\n pick(config.storeConfig.storeProfile, [\n 'storeHash',\n 'storeId',\n 'storeLanguage',\n 'storeName',\n ]),\n };\n }\n\n private _transformPaymentMethod(paymentMethod: PaymentMethod): PaymentMethod {\n if (paymentMethod.method === 'multi-option' && !paymentMethod.gateway) {\n return { ...paymentMethod, gateway: paymentMethod.id };\n }\n\n if (paymentMethod.initializationData && paymentMethod.initializationData.gateway) {\n return { ...paymentMethod, id: paymentMethod.initializationData.gateway };\n }\n\n if (paymentMethod.id === CheckoutButtonMethodType.BRAINTREE_VENMO) {\n return { ...paymentMethod, id: CheckoutButtonMethodType.BRAINTREE_PAYPAL };\n }\n\n return paymentMethod;\n }\n\n private _transformHostedInputValues(\n values: HostedInputValues,\n payment: HostedCreditCardInstrument | HostedVaultedInstrument,\n nonce: string,\n ): PaymentInstrument {\n return 'instrumentId' in payment\n ? {\n ...payment,\n ccCvv: values.cardCodeVerification,\n ccNumber:\n values.cardNumberVerification &&\n this._cardNumberFormatter.unformat(values.cardNumberVerification),\n hostedFormNonce: nonce,\n }\n : {\n ...payment,\n ccCvv: values.cardCode,\n ccExpiry: this._cardExpiryFormatter.toObject(values.cardExpiry || ''),\n ccName: values.cardName || '',\n ccNumber: this._cardNumberFormatter.unformat(values.cardNumber || ''),\n hostedFormNonce: nonce,\n };\n }\n\n private _mapShippingAddress(\n checkoutState: InternalCheckoutSelectors,\n paymentMethod?: PaymentMethod,\n ): Address | undefined {\n if (paymentMethod) {\n const isBopisEnabled = paymentMethod.initializationData?.bopis?.enabled;\n const requiredAddress = paymentMethod.initializationData?.bopis?.requiredAddress;\n const consignments = checkoutState.consignments.getConsignments();\n const isPickup = consignments?.every((consignment) => consignment.selectedPickupOption);\n\n if (isBopisEnabled && isPickup && requiredAddress === 'none') {\n return undefined;\n }\n }\n\n return checkoutState.shippingAddress.getShippingAddress();\n }\n}\n","import {\n FormattedPayload,\n FormattedVaultedInstrument,\n HostedVaultedInstrument,\n PaymentInstrument,\n VaultedInstrument,\n} from './payment';\n\nexport default function isVaultedInstrument(\n instrument: PaymentInstrument,\n): instrument is VaultedInstrument {\n return Boolean((instrument as VaultedInstrument).instrumentId);\n}\n\nexport function isHostedVaultedInstrument(\n instrument: PaymentInstrument,\n): instrument is HostedVaultedInstrument {\n return (\n Boolean((instrument as HostedVaultedInstrument).instrumentId) &&\n !Object.prototype.hasOwnProperty.call(instrument, 'ccNumber') &&\n !Object.prototype.hasOwnProperty.call(instrument, 'ccCvv')\n );\n}\n\nexport function isFormattedVaultedInstrument(\n instrument: PaymentInstrument,\n): instrument is FormattedPayload<FormattedVaultedInstrument> {\n const formattedInstrument = (instrument as FormattedPayload<FormattedVaultedInstrument>)\n .formattedPayload;\n\n if (!formattedInstrument) {\n return false;\n }\n\n return (\n typeof formattedInstrument.bigpay_token === 'string' ||\n Boolean(formattedInstrument.bigpay_token && formattedInstrument.bigpay_token.token)\n );\n}\n","import { RequestSender } from '@bigcommerce/request-sender';\n\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentForm,\n} from '../hosted-form/stored-card-hosted-form-type';\n\nexport default class StorefrontStoredCardRequestSender {\n constructor(private _requestSender: RequestSender) {}\n\n async submitPaymentInstrument(\n requestInitializationData: StoredCardHostedFormData,\n storeInstrumentFormData: StoredCardHostedFormInstrumentForm,\n ): Promise<void> {\n const { providerId, currencyCode, paymentsUrl, shopperId, storeHash, vaultToken } =\n requestInitializationData;\n\n const { billingAddress, instrument, defaultInstrument } = storeInstrumentFormData;\n const url = `${paymentsUrl}/stores/${storeHash}/customers/${shopperId}/stored_instruments`;\n const options = {\n headers: {\n Authorization: vaultToken,\n Accept: 'application/vnd.bc.v1+json',\n 'Content-Type': 'application/vnd.bc.v1+json',\n },\n body: JSON.stringify({\n instrument: {\n type: instrument.type,\n cardholder_name: instrument.cardholderName,\n number: instrument.number,\n expiry_month: instrument.expiryMonth,\n expiry_year: instrument.expiryYear,\n verification_value: instrument.verificationValue,\n },\n billing_address: {\n email: billingAddress.email,\n address1: billingAddress.address1,\n ...(billingAddress.address2 && { address2: billingAddress.address2 }),\n city: billingAddress.city,\n postal_code: billingAddress.postalCode,\n country_code: billingAddress.countryCode,\n ...(billingAddress.company && { company: billingAddress.company }),\n first_name: billingAddress.firstName,\n last_name: billingAddress.lastName,\n ...(billingAddress.phone && { phone: billingAddress.phone }),\n ...(billingAddress.stateOrProvinceCode && {\n state_or_province_code: billingAddress.stateOrProvinceCode,\n }),\n },\n provider_id: providerId,\n default_instrument: defaultInstrument,\n currency_code: currencyCode,\n }),\n };\n\n await this._requestSender.post<void>(url, options);\n }\n}\n","enum HostedFieldType {\n CardCode = 'cardCode',\n CardCodeVerification = 'cardCodeVerification',\n CardExpiry = 'cardExpiry',\n CardName = 'cardName',\n CardNumber = 'cardNumber',\n CardNumberVerification = 'cardNumberVerification',\n}\n\nexport default HostedFieldType;\n","import HostedFieldType from '../hosted-field-type';\n\nexport default function mapToAutocompleteType(type: HostedFieldType): string {\n switch (type) {\n case HostedFieldType.CardCode:\n return 'cc-csc';\n\n case HostedFieldType.CardExpiry:\n return 'cc-exp';\n\n case HostedFieldType.CardName:\n return 'cc-name';\n\n case HostedFieldType.CardNumber:\n return 'cc-number';\n\n default:\n return '';\n }\n}\n","import { kebabCase } from 'lodash';\n\nimport HostedFieldType from '../hosted-field-type';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport mapToAutocompleteType from './map-to-autocomplete-type';\n\nexport default class HostedAutocompleteFieldset {\n private _inputs: HTMLInputElement[];\n\n constructor(\n private _form: HTMLFormElement,\n private _fieldTypes: HostedFieldType[],\n private _inputAggregator: HostedInputAggregator,\n ) {\n this._inputs = this._fieldTypes.map((type) => this._createInput(type));\n }\n\n attach(): void {\n this._inputs.forEach((input) => this._form.appendChild(input));\n }\n\n detach(): void {\n this._inputs.forEach((input) => {\n if (!input.parentElement) {\n return;\n }\n\n input.parentElement.removeChild(input);\n });\n }\n\n private _createInput(type: HostedFieldType): HTMLInputElement {\n const input = document.createElement('input');\n\n input.autocomplete = mapToAutocompleteType(type);\n input.id = this._getAutocompleteElementId(type);\n input.tabIndex = -1;\n input.style.position = 'absolute';\n input.style.opacity = '0';\n input.style.zIndex = '-1';\n\n input.addEventListener('change', this._handleChange);\n\n return input;\n }\n\n private _handleChange: (event: Event) => void = (event) => {\n const targetInput = event.target as HTMLInputElement;\n\n if (!targetInput) {\n throw new Error('Unable to get a reference to the target of the change event.');\n }\n\n const targetHostedInput = this._inputAggregator\n .getInputs()\n .find((input) => this._getAutocompleteElementId(input.getType()) === targetInput.id);\n\n if (!targetHostedInput) {\n return;\n }\n\n targetHostedInput.setValue(targetInput.value);\n };\n\n private _getAutocompleteElementId(type: HostedFieldType): string {\n return `autocomplete-${kebabCase(type)}`;\n }\n}\n","import { CardInstrument } from '../payment/instrument';\n\nimport HostedFieldType from './hosted-field-type';\nimport { HostedFieldStylesMap } from './hosted-form-options';\nimport HostedFormOrderData from './hosted-form-order-data';\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentFields,\n} from './stored-card-hosted-form-type';\n\nexport enum HostedFieldEventType {\n AttachRequested = 'HOSTED_FIELD:ATTACH_REQUESTED',\n SubmitRequested = 'HOSTED_FIELD:SUBMITTED_REQUESTED',\n ValidateRequested = 'HOSTED_FIELD:VALIDATE_REQUESTED',\n StoredCardRequested = 'HOSTED_FIELD:STORED_CARD_REQUESTED',\n}\n\nexport interface HostedFieldEventMap {\n [HostedFieldEventType.AttachRequested]: HostedFieldAttachEvent;\n [HostedFieldEventType.SubmitRequested]: HostedFieldSubmitRequestEvent;\n [HostedFieldEventType.ValidateRequested]: HostedFieldValidateRequestEvent;\n [HostedFieldEventType.StoredCardRequested]: HostedFieldStoredCardRequestEvent;\n}\n\nexport type HostedFieldEvent =\n | HostedFieldAttachEvent\n | HostedFieldSubmitRequestEvent\n | HostedFieldValidateRequestEvent\n | HostedFieldStoredCardRequestEvent;\n\nexport interface HostedFieldAttachEvent {\n type: HostedFieldEventType.AttachRequested;\n payload: {\n accessibilityLabel?: string;\n cardInstrument?: CardInstrument;\n fontUrls?: string[];\n placeholder?: string;\n styles?: HostedFieldStylesMap;\n origin?: string;\n type: HostedFieldType;\n };\n}\n\nexport interface HostedFieldSubmitRequestEvent {\n type: HostedFieldEventType.SubmitRequested;\n payload: {\n data: HostedFormOrderData;\n fields: HostedFieldType[];\n };\n}\n\nexport interface HostedFieldValidateRequestEvent {\n type: HostedFieldEventType.ValidateRequested;\n}\n\nexport interface HostedFieldStoredCardRequestEvent {\n type: HostedFieldEventType.StoredCardRequested;\n payload: {\n data: StoredCardHostedFormData;\n fields: StoredCardHostedFormInstrumentFields;\n };\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport {\n PaymentErrorData,\n PaymentErrorResponseBody,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport HostedFieldType from '../hosted-field-type';\nimport { HostedFormErrorsData } from '../hosted-form-options';\n\nimport HostedInputInitializeErrorData from './hosted-input-initialize-error-data';\nimport HostedInputValidateResults from './hosted-input-validate-results';\n\n// Event types\nexport enum HostedInputEventType {\n AttachSucceeded = 'HOSTED_INPUT:ATTACH_SUCCEEDED',\n AttachFailed = 'HOSTED_INPUT:ATTACH_FAILED',\n BinChanged = 'HOSTED_INPUT:BIN_CHANGED',\n Blurred = 'HOSTED_INPUT:BLURRED',\n Changed = 'HOSTED_INPUT:CHANGED',\n CardTypeChanged = 'HOSTED_INPUT:CARD_TYPE_CHANGED',\n Entered = 'HOSTED_INPUT:ENTERED',\n Focused = 'HOSTED_INPUT:FOCUSED',\n SubmitSucceeded = 'HOSTED_INPUT:SUBMIT_SUCCEEDED',\n SubmitFailed = 'HOSTED_INPUT:SUBMIT_FAILED',\n Validated = 'HOSTED_INPUT:VALIDATED',\n StoredCardSucceeded = 'HOSTED_INPUT:STORED_CARD_SUCCEEDED',\n StoredCardFailed = 'HOSTED_INPUT:STORED_CARD_FAILED',\n}\n\n// Event mapping\nexport interface HostedInputEventMap {\n [HostedInputEventType.AttachSucceeded]: HostedInputAttachSuccessEvent;\n [HostedInputEventType.AttachFailed]: HostedInputAttachErrorEvent;\n [HostedInputEventType.BinChanged]: HostedInputBinChangeEvent;\n [HostedInputEventType.Blurred]: HostedInputBlurEvent;\n [HostedInputEventType.Changed]: HostedInputChangeEvent;\n [HostedInputEventType.CardTypeChanged]: HostedInputCardTypeChangeEvent;\n [HostedInputEventType.Entered]: HostedInputEnterEvent;\n [HostedInputEventType.Focused]: HostedInputFocusEvent;\n [HostedInputEventType.SubmitSucceeded]: HostedInputSubmitSuccessEvent;\n [HostedInputEventType.SubmitFailed]: HostedInputSubmitErrorEvent;\n [HostedInputEventType.Validated]: HostedInputValidateEvent;\n [HostedInputEventType.StoredCardFailed]: HostedInputStoredCardErrorEvent;\n [HostedInputEventType.StoredCardSucceeded]: HostedInputStoredCardSucceededEvent;\n}\n\n// Events\nexport type HostedInputEvent =\n | HostedInputAttachSuccessEvent\n | HostedInputAttachErrorEvent\n | HostedInputBinChangeEvent\n | HostedInputBlurEvent\n | HostedInputChangeEvent\n | HostedInputCardTypeChangeEvent\n | HostedInputEnterEvent\n | HostedInputFocusEvent\n | HostedInputSubmitSuccessEvent\n | HostedInputSubmitErrorEvent\n | HostedInputValidateEvent\n | HostedInputStoredCardSucceededEvent\n | HostedInputStoredCardErrorEvent;\n\nexport interface HostedInputAttachSuccessEvent {\n type: HostedInputEventType.AttachSucceeded;\n}\n\nexport interface HostedInputStoredCardSucceededEvent {\n type: HostedInputEventType.StoredCardSucceeded;\n}\n\nexport interface HostedInputStoredCardErrorEvent {\n type: HostedInputEventType.StoredCardFailed;\n payload?: {\n errors?: string[];\n error?: PaymentErrorData;\n response?: Response<PaymentErrorResponseBody>;\n };\n}\n\nexport interface HostedInputAttachErrorEvent {\n type: HostedInputEventType.AttachFailed;\n payload: {\n error: HostedInputInitializeErrorData;\n };\n}\n\nexport interface HostedInputBinChangeEvent {\n type: HostedInputEventType.BinChanged;\n payload: {\n bin?: string;\n };\n}\n\nexport interface HostedInputBlurEvent {\n type: HostedInputEventType.Blurred;\n payload: {\n fieldType: HostedFieldType;\n errors?: HostedFormErrorsData;\n };\n}\n\nexport interface HostedInputChangeEvent {\n type: HostedInputEventType.Changed;\n payload: {\n fieldType: HostedFieldType;\n };\n}\n\nexport interface HostedInputCardTypeChangeEvent {\n type: HostedInputEventType.CardTypeChanged;\n payload: {\n cardType?: string;\n };\n}\n\nexport interface HostedInputFocusEvent {\n type: HostedInputEventType.Focused;\n payload: {\n fieldType: HostedFieldType;\n };\n}\n\nexport interface HostedInputEnterEvent {\n type: HostedInputEventType.Entered;\n payload: {\n fieldType: HostedFieldType;\n };\n}\n\nexport interface HostedInputSubmitSuccessEvent {\n type: HostedInputEventType.SubmitSucceeded;\n payload: {\n response: Response<unknown>;\n };\n}\n\nexport interface HostedInputSubmitErrorEvent {\n type: HostedInputEventType.SubmitFailed;\n payload: {\n error: PaymentErrorData;\n response?: Response<PaymentErrorResponseBody>;\n };\n}\n\nexport interface HostedInputValidateEvent {\n type: HostedInputEventType.Validated;\n payload: HostedInputValidateResults;\n}\n","import { kebabCase } from 'lodash';\n\nimport { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { parseUrl } from '../../common/url';\nimport {\n HostedFieldEventMap,\n HostedFieldEventType,\n HostedFieldValidateRequestEvent,\n} from '../hosted-field-events';\nimport HostedFieldType from '../hosted-field-type';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport HostedInputStyles, { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\nimport HostedInputWindow from './hosted-input-window';\n\nexport default class HostedInput {\n protected _input: HTMLInputElement;\n protected _previousValue?: string;\n private _fontLinks?: HTMLLinkElement[];\n private _isTouched = false;\n\n /**\n * @internal\n */\n constructor(\n protected _type: HostedFieldType,\n protected _form: HTMLFormElement,\n protected _placeholder: string,\n protected _accessibilityLabel: string,\n protected _autocomplete: string,\n protected _styles: HostedInputStylesMap,\n protected _fontUrls: string[],\n protected _eventListener: IframeEventListener<HostedFieldEventMap>,\n protected _eventPoster: IframeEventPoster<HostedInputEvent>,\n protected _inputAggregator: HostedInputAggregator,\n protected _inputValidator: HostedInputValidator,\n protected _paymentHandler: HostedInputPaymentHandler,\n protected _storedCardHandler: HostedInputStoredCardHandler,\n ) {\n this._input = document.createElement('input');\n\n this._input.addEventListener('input', this._handleInput);\n this._input.addEventListener('blur', this._handleBlur);\n this._input.addEventListener('focus', this._handleFocus);\n this._eventListener.addListener(\n HostedFieldEventType.ValidateRequested,\n this._handleValidate,\n );\n this._eventListener.addListener(\n HostedFieldEventType.SubmitRequested,\n this._paymentHandler.handle,\n );\n this._eventListener.addListener(\n HostedFieldEventType.StoredCardRequested,\n this._storedCardHandler.handle,\n );\n\n this._configureInput();\n }\n\n getType(): HostedFieldType {\n return this._type;\n }\n\n getValue(): string {\n return this._input.value;\n }\n\n setValue(value: string): void {\n this._processChange(value);\n }\n\n isTouched(): boolean {\n return this._isTouched;\n }\n\n attach(): void {\n this._form.appendChild(this._input);\n this._form.addEventListener('submit', this._handleSubmit);\n\n this._loadFonts();\n\n this._eventPoster.setTarget(window.parent);\n this._eventListener.listen();\n\n // fixes the issue on Firefox/Safari where the input doesn't focus properly\n window.addEventListener('focus', this._forceFocusToInput);\n\n // Assign itself to the global so it can be accessed by its sibling frames\n (window as unknown as HostedInputWindow).hostedInput = this;\n\n this._eventPoster.post({ type: HostedInputEventType.AttachSucceeded });\n }\n\n detach(): void {\n if (this._input.parentElement) {\n this._input.parentElement.removeChild(this._input);\n }\n\n this._form.removeEventListener('submit', this._handleSubmit);\n this._unloadFonts();\n\n window.removeEventListener('focus', this._forceFocusToInput);\n\n this._eventListener.stopListen();\n }\n\n protected _formatValue(value: string): void {\n this._input.value = value;\n }\n\n protected _notifyChange(_value: string): void {\n this._eventPoster.post({\n type: HostedInputEventType.Changed,\n payload: {\n fieldType: this._type,\n },\n });\n }\n\n private _configureInput(): void {\n this._input.style.backgroundColor = 'transparent';\n this._input.style.border = '0';\n this._input.style.display = 'block';\n this._input.style.height = '100%';\n this._input.style.margin = '0';\n this._input.style.outline = 'none';\n this._input.style.padding = '0';\n this._input.style.width = '100%';\n this._input.id = kebabCase(this._type);\n this._input.placeholder = this._placeholder;\n this._input.autocomplete = this._autocomplete;\n\n this._input.setAttribute('aria-label', this._accessibilityLabel);\n\n this._applyStyles(this._styles.default);\n\n switch (this._input.id) {\n case 'card-code':\n case 'card-expiry':\n case 'card-number':\n this._input.type = 'text';\n this._input.inputMode = 'numeric';\n this._input.pattern = '[0-9]*';\n break;\n\n case 'card-name':\n this._input.type = 'text';\n this._input.inputMode = 'text';\n break;\n }\n }\n\n private _applyStyles(styles: HostedInputStyles = {}): void {\n const allowedStyles: {\n [key in keyof Required<HostedInputStyles>]: HostedInputStyles[key];\n } = {\n color: styles.color,\n fontFamily: styles.fontFamily,\n fontSize: styles.fontSize,\n fontWeight: styles.fontWeight,\n };\n const styleKeys = Object.keys(allowedStyles) as Array<keyof HostedInputStyles>;\n\n styleKeys.forEach((key) => {\n if (!allowedStyles[key]) {\n return;\n }\n\n this._input.style[key] = allowedStyles[key] || '';\n });\n }\n\n private _loadFonts(): void {\n if (this._fontLinks) {\n return;\n }\n\n this._fontLinks = this._fontUrls\n .filter((url) => parseUrl(url).hostname === 'fonts.googleapis.com')\n .filter((url) => !document.querySelector(`link[href='${url}'][rel='stylesheet']`))\n .map((url) => {\n const link = document.createElement('link');\n\n link.rel = 'stylesheet';\n link.href = url;\n\n document.head.appendChild(link);\n\n return link;\n });\n }\n\n private _unloadFonts(): void {\n if (!this._fontLinks) {\n return;\n }\n\n this._fontLinks.forEach((link) => {\n if (!link.parentElement) {\n return;\n }\n\n link.parentElement.removeChild(link);\n });\n\n this._fontLinks = undefined;\n }\n\n private async _validateForm(): Promise<void> {\n const values = this._inputAggregator.getInputValues();\n const results = await this._inputValidator.validate(values);\n\n if (results.isValid) {\n this._applyStyles(this._styles.default);\n } else {\n this._applyStyles(this._styles.error);\n }\n\n this._eventPoster.post({\n type: HostedInputEventType.Validated,\n payload: results,\n });\n }\n\n private _processChange(value: string): void {\n if (value === this._previousValue) {\n return;\n }\n\n this._isTouched = true;\n\n this._formatValue(value);\n this._validateForm();\n this._notifyChange(value);\n\n this._previousValue = value;\n }\n\n private _handleInput: (event: Event) => void = (event) => {\n const input = event.target as HTMLInputElement;\n\n this._processChange(input.value);\n };\n\n private _handleBlur: (event: Event) => void = () => {\n this._applyStyles(this._styles.default);\n this._validateForm();\n\n this._eventPoster.post({\n type: HostedInputEventType.Blurred,\n payload: {\n fieldType: this._type,\n },\n });\n };\n\n private _handleFocus: (event: Event) => void = () => {\n this._applyStyles(this._styles.focus);\n\n this._eventPoster.post({\n type: HostedInputEventType.Focused,\n payload: {\n fieldType: this._type,\n },\n });\n };\n\n private _handleValidate: (event: HostedFieldValidateRequestEvent) => void = () => {\n this._validateForm();\n };\n\n private _handleSubmit: (event: Event) => void = (event) => {\n event.preventDefault();\n\n this._eventPoster.post({\n type: HostedInputEventType.Entered,\n payload: {\n fieldType: this._type,\n },\n });\n };\n\n private _forceFocusToInput = (): void => {\n if (document.activeElement === document.body) {\n const browserName = navigator.userAgent.toLowerCase();\n\n if (browserName.indexOf('safari') > -1) {\n if (this._input.value === '') {\n this._input.setAttribute('value', ' ');\n this._input.setSelectionRange(0, 1);\n this._input.setAttribute('value', '');\n }\n } else {\n this._input.focus();\n }\n }\n };\n}\n","import { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { HostedFieldEventMap } from '../hosted-field-events';\nimport HostedFieldType from '../hosted-field-type';\n\nimport CardExpiryFormatter from './card-expiry-formatter';\nimport HostedInput from './hosted-input';\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent } from './hosted-input-events';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedCardExpiryInput extends HostedInput {\n /**\n * @internal\n */\n constructor(\n form: HTMLFormElement,\n placeholder: string,\n accessibilityLabel: string,\n autocomplete: string,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n eventListener: IframeEventListener<HostedFieldEventMap>,\n eventPoster: IframeEventPoster<HostedInputEvent>,\n inputAggregator: HostedInputAggregator,\n inputValidator: HostedInputValidator,\n paymentHandler: HostedInputPaymentHandler,\n storedCardHandler: HostedInputStoredCardHandler,\n private _formatter: CardExpiryFormatter,\n ) {\n super(\n HostedFieldType.CardExpiry,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n eventListener,\n eventPoster,\n inputAggregator,\n inputValidator,\n paymentHandler,\n storedCardHandler,\n );\n }\n\n protected _formatValue(value: string): void {\n this._input.value = this._formatter.format(value);\n }\n}\n","import { number } from 'card-validator';\nimport { get } from 'lodash';\n\nimport { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { HostedFieldEventMap } from '../hosted-field-events';\nimport HostedFieldType from '../hosted-field-type';\n\nimport CardNumberFormatter from './card-number-formatter';\nimport HostedAutocompleteFieldset from './hosted-autocomplete-fieldset';\nimport HostedInput from './hosted-input';\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedCardNumberInput extends HostedInput {\n /**\n * @internal\n */\n constructor(\n type: HostedFieldType,\n form: HTMLFormElement,\n placeholder: string,\n accessibilityLabel: string,\n autocomplete: string,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n eventListener: IframeEventListener<HostedFieldEventMap>,\n eventPoster: IframeEventPoster<HostedInputEvent>,\n inputAggregator: HostedInputAggregator,\n inputValidator: HostedInputValidator,\n paymentHandler: HostedInputPaymentHandler,\n storedCardHandler: HostedInputStoredCardHandler,\n private _autocompleteFieldset: HostedAutocompleteFieldset,\n private _formatter: CardNumberFormatter,\n ) {\n super(\n type,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n eventListener,\n eventPoster,\n inputAggregator,\n inputValidator,\n paymentHandler,\n storedCardHandler,\n );\n }\n\n attach(): void {\n super.attach();\n\n this._autocompleteFieldset.attach();\n }\n\n protected _notifyChange(value: string): void {\n const cardInfo = number(value).card;\n const prevCardInfo = this._previousValue && number(this._previousValue).card;\n\n if (get(prevCardInfo, 'type') !== get(cardInfo, 'type')) {\n this._eventPoster.post({\n type: HostedInputEventType.CardTypeChanged,\n payload: {\n cardType: cardInfo ? cardInfo.type : undefined,\n },\n });\n }\n\n const unformattedValue = this._formatter.unformat(value);\n const unformattedPreviousValue = this._previousValue\n ? this._formatter.unformat(this._previousValue)\n : '';\n\n const bin =\n unformattedValue.length >= 6 && number(unformattedValue).isPotentiallyValid\n ? unformattedValue.substr(0, 6)\n : '';\n const prevBin =\n unformattedPreviousValue.length >= 6 ? unformattedPreviousValue.substr(0, 6) : '';\n\n if (bin !== prevBin) {\n this._eventPoster.post({\n type: HostedInputEventType.BinChanged,\n payload: { bin },\n });\n }\n }\n\n protected _formatValue(value: string): void {\n const selectionEnd = this._input.selectionEnd;\n const formattedValue = this._formatter.format(value);\n\n if (selectionEnd === value.length && value.length < formattedValue.length) {\n this._input.setSelectionRange(formattedValue.length, formattedValue.length);\n } else {\n this._input.setSelectionRange(selectionEnd || 0, selectionEnd || 0);\n }\n\n this._input.value = formattedValue;\n }\n}\n","import HostedInput from './hosted-input';\nimport HostedInputValues from './hosted-input-values';\nimport HostedInputWindow from './hosted-input-window';\n\nexport default class HostedInputAggregator {\n constructor(private _parentWindow: Window) {}\n\n getInputs(filter?: (field: HostedInput) => boolean): HostedInput[] {\n return Array.prototype.slice\n .call(this._parentWindow.frames)\n .reduce((result: Window[], frame: Window) => {\n try {\n const input = (frame as HostedInputWindow).hostedInput;\n\n if (!input || (filter && !filter(input))) {\n return result;\n }\n\n return [...result, input];\n } catch (error) {\n if (error instanceof DOMException) {\n return result;\n }\n\n // IE11 doesn't throw `DOMException`\n if (error instanceof Error && error.message === 'Permission denied') {\n return result;\n }\n\n throw error;\n }\n }, []);\n }\n\n getInputValues(filter?: (field: HostedInput) => boolean): HostedInputValues {\n return this.getInputs(filter).reduce((result, input) => {\n return {\n ...result,\n [input.getType()]: input.getValue(),\n };\n }, {} as HostedInputValues);\n }\n}\n","import { flatMap, map, values } from 'lodash';\n\nimport { StandardError } from '../../common/error/errors';\nimport { HostedInputValidateErrorDataMap } from '../iframe-content';\n\nexport default class InvalidHostedFormValueError extends StandardError {\n constructor(public errors: HostedInputValidateErrorDataMap) {\n super(\n [\n 'Unable to proceed due to invalid user input values',\n ...flatMap(values(errors), (fieldErrors) =>\n map(fieldErrors, ({ message }) => message),\n ),\n ].join('. '),\n );\n\n this.name = 'InvalidHostedFormValueError';\n this.type = 'invalid_hosted_form_value';\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\nimport { snakeCase } from 'lodash';\n\nimport { PaymentErrorResponseBody } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { IframeEventPoster } from '../../common/iframe';\nimport { PaymentRequestSender, PaymentRequestTransformer } from '../../payment';\nimport { InvalidHostedFormValueError } from '../errors';\nimport { HostedFieldSubmitRequestEvent } from '../hosted-field-events';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputStorage from './hosted-input-storage';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedInputPaymentHandler {\n constructor(\n private _inputAggregator: HostedInputAggregator,\n private _inputValidator: HostedInputValidator,\n private _inputStorage: HostedInputStorage,\n private _eventPoster: IframeEventPoster<HostedInputEvent>,\n private _paymentRequestSender: PaymentRequestSender,\n private _paymentRequestTransformer: PaymentRequestTransformer,\n ) {}\n\n handle: (event: HostedFieldSubmitRequestEvent) => Promise<void> = async ({\n payload: { data },\n }) => {\n const values = this._inputAggregator.getInputValues();\n const results = await this._inputValidator.validate(values);\n\n this._eventPoster.post({\n type: HostedInputEventType.Validated,\n payload: results,\n });\n\n if (!results.isValid) {\n const error = new InvalidHostedFormValueError(results.errors);\n\n return this._eventPoster.post({\n type: HostedInputEventType.SubmitFailed,\n payload: {\n error: { code: snakeCase(error.name), message: error.message },\n },\n });\n }\n\n try {\n const response = await this._paymentRequestSender.submitPayment(\n this._paymentRequestTransformer.transformWithHostedFormData(\n values,\n data,\n this._inputStorage.getNonce() || '',\n ),\n );\n\n this._eventPoster.post({\n type: HostedInputEventType.SubmitSucceeded,\n payload: { response },\n });\n } catch (error) {\n if (this._isPaymentErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitFailed,\n payload: { error: error.body.errors[0], response: error },\n });\n } else if (this._isErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitFailed,\n payload: { error: { code: snakeCase(error.name), message: error.message } },\n });\n }\n }\n };\n\n private _isPaymentErrorResponse(response: any): response is Response<PaymentErrorResponseBody> {\n const { body: { errors = [] } = {} } = response || {};\n\n return (\n typeof (errors[0] && errors[0].code) === 'string' &&\n typeof (errors[0] && errors[0].message) === 'string'\n );\n }\n\n private _isErrorResponse(error: unknown): error is { name?: string; message?: string } {\n return (\n typeof error === 'object' &&\n error !== null &&\n (('name' in error && typeof (error as { name: unknown }).name === 'string') ||\n !('name' in error)) &&\n (('message' in error && typeof (error as { message: unknown }).message === 'string') ||\n !('message' in error))\n );\n }\n}\n","import { IframeEventPoster } from '../../common/iframe';\nimport { StorefrontStoredCardRequestSender } from '../../payment';\nimport { HostedFieldStoredCardRequestEvent } from '../hosted-field-events';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedInputStoredCardHandler {\n constructor(\n private _inputAggregator: HostedInputAggregator,\n private _inputValidator: HostedInputValidator,\n private _eventPoster: IframeEventPoster<HostedInputEvent>,\n private _storedCardRequestSender: StorefrontStoredCardRequestSender,\n ) {}\n\n handle: (event: HostedFieldStoredCardRequestEvent) => Promise<void> = async (event) => {\n const {\n payload: { data, fields },\n } = event;\n const values = this._inputAggregator.getInputValues();\n const results = await this._inputValidator.validate(values);\n\n this._eventPoster.post({\n type: HostedInputEventType.Validated,\n payload: results,\n });\n\n if (!results.isValid) {\n return this._eventPoster.post({\n type: HostedInputEventType.StoredCardFailed,\n });\n }\n\n const { defaultInstrument, ...billingAddress } = fields;\n\n const [expiryMonth, expiryYear] = values.cardExpiry ? values.cardExpiry.split('/') : [];\n\n try {\n await this._storedCardRequestSender.submitPaymentInstrument(data, {\n billingAddress,\n instrument: {\n type: 'card',\n cardholderName: values.cardName || '',\n number: values.cardNumber ? values.cardNumber.replace(/ /g, '') : '',\n expiryMonth: Number(expiryMonth.trim()),\n expiryYear: Number(`20${expiryYear.trim()}`),\n verificationValue: values.cardCode ?? '',\n },\n defaultInstrument,\n });\n\n this._eventPoster.post({\n type: HostedInputEventType.StoredCardSucceeded,\n });\n } catch (error) {\n this._eventPoster.post({\n type: HostedInputEventType.StoredCardFailed,\n });\n }\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"yup\");","import { creditCardType, cvv, expirationDate, number } from 'card-validator';\nimport { object, ObjectShape, string, StringSchema, ValidationError } from 'yup';\n\nimport { CardInstrument } from '../../payment/instrument';\n\nimport { HostedInputValidateErrorDataMap } from './hosted-input-validate-error-data';\nimport HostedInputValidateResults from './hosted-input-validate-results';\nimport HostedInputValues from './hosted-input-values';\n\nexport default class HostedInputValidator {\n private readonly _completeSchema: ObjectShape = {\n cardCode: this._getCardCodeSchema(),\n cardCodeVerification: this._getCardCodeVerificationSchema(),\n cardExpiry: this._getCardExpirySchema(),\n cardName: this._getCardNameSchema(),\n cardNumber: this._getCardNumberSchema(),\n cardNumberVerification: this._getCardNumberVerificationSchema(),\n };\n\n constructor(private _cardInstrument?: CardInstrument) {\n this._configureCardValidator();\n }\n\n async validate(values: HostedInputValues): Promise<HostedInputValidateResults> {\n const schemas: ObjectShape = {};\n const results: HostedInputValidateResults = {\n errors: {},\n isValid: true,\n };\n\n let requiredField: keyof HostedInputValues;\n\n for (requiredField in values) {\n if (Object.prototype.hasOwnProperty.call(values, requiredField)) {\n schemas[requiredField] = this._completeSchema[requiredField];\n results.errors[requiredField] = [];\n }\n }\n\n try {\n await object(schemas).validate(values, { abortEarly: false });\n\n return results;\n } catch (error) {\n if (this._isValidationErrorType(error)) {\n throw error;\n }\n\n return {\n errors: (\n Object.keys(results.errors) as Array<keyof HostedInputValidateErrorDataMap>\n ).reduce(\n (result, fieldType) => ({\n ...result,\n [fieldType]: (error as ValidationError).inner\n .filter((innerError) => innerError.path === fieldType)\n .map((innerError) => ({\n fieldType: innerError.path,\n message: innerError.errors.join(' '),\n type: innerError.type,\n })),\n }),\n {} as HostedInputValidateErrorDataMap,\n ),\n isValid: false,\n };\n }\n }\n\n private _configureCardValidator(): void {\n const discoverInfo = creditCardType.getTypeInfo('discover');\n const jcbInfo = creditCardType.getTypeInfo('jcb');\n const visaInfo = creditCardType.getTypeInfo('visa');\n\n // Need to support 13 digit PAN because some gateways only provide test credit card numbers in this format.\n creditCardType.updateCard('visa', {\n lengths: [13, ...(visaInfo.lengths || [])],\n });\n\n // Add support for 8-BIN Discover Cards.\n creditCardType.updateCard('discover', {\n patterns: [...(discoverInfo.patterns || []), [810, 817]],\n });\n\n creditCardType.addCard({\n niceType: 'Mada',\n type: 'mada',\n patterns: [\n 400861, 401757, 407197, 407395, 409201, 410685, 412565, 417633, 419593, 422817,\n 422818, 422819, 428331, 428671, 428672, 428673, 431361, 432328, 434107, 439954,\n 440533, 440647, 440795, 445564, 446393, 446404, 446672, 455036, 455708, 457865,\n 458456, 462220, 468540, 468541, 468542, 468543, 483010, 483011, 483012, 484783,\n 486094, 486095, 486096, 489317, 489318, 489319, 493428, 504300, 506968, 508160,\n 513213, 520058, 521076, 524130, 524514, 529415, 529741, 530060, 530906, 531095,\n 531196, 532013, 535825, 535989, 536023, 537767, 539931, 543085, 543357, 549760,\n 554180, 557606, 558848, 585265, 588845, 588846, 588847, 588848, 588849, 588850,\n 588851, 588982, 588983, 589005, 589206, 604906, 605141, 636120, 968201, 968202,\n 968203, 968204, 968205, 968206, 968207, 968208, 968209, 968210, 968211,\n ],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: 'CVV',\n size: 3,\n },\n });\n\n // Add support WorldPayAccess and Authorize.net test cards\n creditCardType.updateCard('jcb', {\n patterns: [...(jcbInfo.patterns || []), 3088, 3337, 3338],\n });\n }\n\n private _getCardCodeSchema(): StringSchema {\n return string()\n .required('CVV is required')\n .test({\n message: 'CVV must be valid',\n name: 'invalid_card_code',\n test(value) {\n const { card } = number((this.parent as HostedInputValues).cardNumber || '');\n\n return cvv(value, card && card.code ? card.code.size : undefined).isValid;\n },\n });\n }\n\n private _getCardCodeVerificationSchema(): StringSchema {\n return string()\n .required('CVV is required')\n .test({\n message: 'CVV must be valid',\n name: 'invalid_card_code',\n test: (value = '') => {\n const cardType =\n this._cardInstrument &&\n this._mapFromInstrumentCardType(this._cardInstrument.brand);\n const cardInfo = cardType && creditCardType.getTypeInfo(cardType);\n\n return cvv(value, cardInfo && cardInfo.code ? cardInfo.code.size : undefined)\n .isValid;\n },\n });\n }\n\n private _getCardExpirySchema(): StringSchema {\n return string()\n .required('Expiration date is required')\n .test({\n message: 'Expiration date must be a valid future date in MM / YY format',\n name: 'invalid_card_expiry',\n test: (value) => expirationDate(value).isValid,\n });\n }\n\n private _getCardNameSchema(): StringSchema {\n return string().max(200).required('Full name is required');\n }\n\n private _getCardNumberSchema(): StringSchema {\n return string()\n .required('Credit card number is required')\n .test({\n message: 'Credit card number must be valid',\n name: 'invalid_card_number',\n test: (value) => number(value).isValid,\n });\n }\n\n private _getCardNumberVerificationSchema(): StringSchema {\n return string()\n .required('Credit card number is required')\n .test({\n message: 'Credit card number must be valid',\n name: 'invalid_card_number',\n test: (value = '') => number(value).isValid,\n })\n .test({\n message: 'The card number entered does not match the card stored in your account',\n name: 'mismatched_card_number',\n test: (value = '') =>\n this._cardInstrument\n ? value.slice(-this._cardInstrument.last4.length) ===\n this._cardInstrument.last4\n : false,\n });\n }\n\n private _mapFromInstrumentCardType(type: string): string {\n switch (type) {\n case 'amex':\n case 'american_express':\n return 'american-express';\n\n case 'diners':\n return 'diners-club';\n\n default:\n return type;\n }\n }\n\n private _isValidationErrorType(error: any): error is { name: string } {\n return 'name' in error && error.name !== 'ValidationError';\n }\n}\n","import { createClient as createBigpayClient } from '@bigcommerce/bigpay-client';\nimport { createRequestSender } from '@bigcommerce/request-sender';\n\nimport { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { appendWww, parseUrl } from '../../common/url';\nimport {\n PaymentRequestSender,\n PaymentRequestTransformer,\n StorefrontStoredCardRequestSender,\n} from '../../payment';\nimport { CardInstrument } from '../../payment/instrument';\nimport HostedFieldType from '../hosted-field-type';\n\nimport CardExpiryFormatter from './card-expiry-formatter';\nimport CardNumberFormatter from './card-number-formatter';\nimport getHostedInputStorage from './get-hosted-input-storage';\nimport HostedAutocompleteFieldset from './hosted-autocomplete-fieldset';\nimport HostedCardExpiryInput from './hosted-card-expiry-input';\nimport HostedCardNumberInput from './hosted-card-number-input';\nimport HostedInput from './hosted-input';\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\nimport mapToAccessibilityLabel from './map-to-accessibility-label';\nimport mapToAutocompleteType from './map-to-autocomplete-type';\n\nexport default class HostedInputFactory {\n constructor(private _parentOrigin: string) {}\n\n create(\n form: HTMLFormElement,\n type: HostedFieldType,\n styles: HostedInputStylesMap = {},\n fontUrls: string[] = [],\n placeholder = '',\n accessibilityLabel: string = mapToAccessibilityLabel(type),\n cardInstrument?: CardInstrument,\n ): HostedInput {\n const autocomplete = mapToAutocompleteType(type);\n\n if (type === HostedFieldType.CardNumber) {\n return this._createNumberInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n );\n }\n\n if (type === HostedFieldType.CardNumberVerification) {\n return this._createNumberInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n cardInstrument,\n );\n }\n\n if (type === HostedFieldType.CardExpiry) {\n return this._createExpiryInput(\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n );\n }\n\n if (type === HostedFieldType.CardCodeVerification) {\n return this._createInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n cardInstrument,\n );\n }\n\n return this._createInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n );\n }\n\n normalizeParentOrigin(origin: string): void {\n if (this._parentOrigin === origin) {\n return;\n }\n\n if (\n this._parentOrigin !== appendWww(parseUrl(origin)).origin &&\n origin !== appendWww(parseUrl(this._parentOrigin)).origin\n ) {\n return;\n }\n\n this._parentOrigin = origin;\n }\n\n getParentOrigin(): string {\n return this._parentOrigin;\n }\n\n private _createExpiryInput(\n form: HTMLFormElement,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n placeholder: string,\n accessibilityLabel = '',\n autocomplete = '',\n ): HostedCardExpiryInput {\n return new HostedCardExpiryInput(\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n new IframeEventListener(this._parentOrigin),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(),\n this._createPaymentHandler(),\n this._createStoredCardHandler(),\n new CardExpiryFormatter(),\n );\n }\n\n private _createNumberInput(\n type: HostedFieldType,\n form: HTMLFormElement,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n placeholder: string,\n accessibilityLabel = '',\n autocomplete = '',\n cardInstrument?: CardInstrument,\n ): HostedCardNumberInput {\n return new HostedCardNumberInput(\n type,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n new IframeEventListener(this._parentOrigin),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n this._createPaymentHandler(cardInstrument),\n this._createStoredCardHandler(cardInstrument),\n new HostedAutocompleteFieldset(\n form,\n [HostedFieldType.CardCode, HostedFieldType.CardExpiry, HostedFieldType.CardName],\n new HostedInputAggregator(window.parent),\n ),\n new CardNumberFormatter(),\n );\n }\n\n private _createInput(\n type: HostedFieldType,\n form: HTMLFormElement,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n placeholder: string,\n accessibilityLabel = '',\n autocomplete = '',\n cardInstrument?: CardInstrument,\n ): HostedInput {\n return new HostedInput(\n type,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n new IframeEventListener(this._parentOrigin),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n this._createPaymentHandler(cardInstrument),\n this._createStoredCardHandler(cardInstrument),\n );\n }\n\n private _createPaymentHandler(cardInstrument?: CardInstrument): HostedInputPaymentHandler {\n return new HostedInputPaymentHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n getHostedInputStorage(),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new PaymentRequestSender(createBigpayClient()),\n new PaymentRequestTransformer(),\n );\n }\n\n private _createStoredCardHandler(\n cardInstrument?: CardInstrument,\n ): HostedInputStoredCardHandler {\n return new HostedInputStoredCardHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new StorefrontStoredCardRequestSender(createRequestSender()),\n );\n }\n}\n","import HostedFieldType from '../hosted-field-type';\n\nexport default function mapToAccessibilityLabel(type: HostedFieldType): string {\n switch (type) {\n case HostedFieldType.CardCode:\n case HostedFieldType.CardCodeVerification:\n return 'CVC';\n\n case HostedFieldType.CardExpiry:\n return 'Expiration';\n\n case HostedFieldType.CardName:\n return 'Name on card';\n\n case HostedFieldType.CardNumber:\n case HostedFieldType.CardNumberVerification:\n return 'Credit card number';\n }\n}\n","import { StandardError } from '../../common/error/errors';\n\nexport default class InvalidHostedFormConfigError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'Unable to proceed due to invalid configuration provided for the hosted payment form.',\n );\n\n this.name = 'InvalidHostedFormConfigError';\n this.type = 'invalid_hosted_form_config';\n }\n}\n","import { fromEvent } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nimport { IframeEventListener } from '../../common/iframe';\nimport { InvalidHostedFormConfigError } from '../errors';\nimport {\n HostedFieldAttachEvent,\n HostedFieldEventMap,\n HostedFieldEventType,\n} from '../hosted-field-events';\n\nimport HostedInput from './hosted-input';\nimport HostedInputFactory from './hosted-input-factory';\nimport HostedInputStorage from './hosted-input-storage';\n\ninterface EventTargetLike<TEvent> {\n addListener(eventName: string, handler: (event: TEvent) => void): void;\n removeListener(eventName: string, handler: (event: TEvent) => void): void;\n}\n\nexport default class HostedInputInitializer {\n constructor(\n private _factory: HostedInputFactory,\n private _storage: HostedInputStorage,\n private _eventListener: IframeEventListener<HostedFieldEventMap>,\n ) {}\n\n initialize(containerId: string, nonce?: string): Promise<HostedInput> {\n if (nonce) {\n this._storage.setNonce(nonce);\n }\n\n const form = this._createFormContainer(containerId);\n\n this._resetPageStyles(containerId);\n this._eventListener.listen();\n\n return fromEvent<HostedFieldAttachEvent>(\n this._eventListener as EventTargetLike<HostedFieldAttachEvent>,\n HostedFieldEventType.AttachRequested,\n )\n .pipe(\n map(({ payload }) => {\n const {\n accessibilityLabel,\n cardInstrument,\n fontUrls,\n placeholder,\n styles,\n origin,\n type,\n } = payload;\n\n if (origin) {\n this._factory.normalizeParentOrigin(origin);\n }\n\n const field = this._factory.create(\n form,\n type,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n cardInstrument,\n );\n\n field.attach();\n\n return field;\n }),\n take(1),\n )\n .toPromise();\n }\n\n private _resetPageStyles(containerId: string) {\n const html = document.querySelector('html');\n const body = document.querySelector('body');\n const container = document.getElementById(containerId);\n\n [html, body, container].forEach((node) => {\n if (!node) {\n return;\n }\n\n node.style.height = '100%';\n node.style.width = '100%';\n node.style.overflow = 'hidden';\n node.style.padding = '0';\n node.style.margin = '0';\n });\n }\n\n private _createFormContainer(containerId: string): HTMLFormElement {\n const container = document.getElementById(containerId);\n\n if (!container) {\n throw new InvalidHostedFormConfigError(\n 'Unable to proceed because the provided container ID is not valid.',\n );\n }\n\n const form = document.createElement('form');\n const button = document.createElement('button');\n\n form.noValidate = true;\n form.style.height = '100%';\n form.style.width = '100%';\n button.style.display = 'none';\n\n container.appendChild(form);\n form.appendChild(button);\n\n return form;\n }\n}\n","import { IframeEventListener } from '../../common/iframe';\nimport { HostedFieldEventMap } from '../hosted-field-events';\n\nimport getHostedInputStorage from './get-hosted-input-storage';\nimport HostedInput from './hosted-input';\nimport HostedInputFactory from './hosted-input-factory';\nimport HostedInputInitializer from './hosted-input-initializer';\nimport HostedInputOptions from './hosted-input-options';\n\nexport default function initializeHostedInput(options: HostedInputOptions): Promise<HostedInput> {\n const { containerId, nonce, parentOrigin } = options;\n const initializer = new HostedInputInitializer(\n new HostedInputFactory(parentOrigin),\n getHostedInputStorage(),\n new IframeEventListener<HostedFieldEventMap>(parentOrigin),\n );\n\n return initializer.initialize(containerId, nonce);\n}\n","import { IframeEventPoster } from '../../common/iframe';\n\nimport { HostedInputAttachErrorEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputInitializeErrorData from './hosted-input-initialize-error-data';\n\nconst poster = new IframeEventPoster<HostedInputAttachErrorEvent>('*', window.parent);\n\nexport default function notifyInitializeError(error: HostedInputInitializeErrorData): void {\n poster.post({\n type: HostedInputEventType.AttachFailed,\n payload: { error },\n });\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","target","descriptor","bindMethodDecorator","decoratedTarget","getOwnPropertyNames","forEach","getOwnPropertyDescriptor","bindClassDecorator","_","method","boundMethod","bind","this","set","message","object","name","type","setPrototypeOf","__proto__","Error","captureStackTrace","stack","parseUrl","url","test","anchor","document","createElement","href","port","indexOf","hostname","hash","origin","protocol","pathname","search","appendWww","replace","isIframeEvent","sourceOrigin","_sourceOrigins","_isListening","_listeners","listen","window","addEventListener","_handleMessage","stopListen","removeEventListener","addListener","listener","listeners","push","removeListener","index","splice","trigger","event","context","messageEvent","data","setNonce","nonce","_nonce","getNonce","storage","getHostedInputStorage","require","targetOrigin","_targetWindow","_context","_targetOrigin","post","options","targetWindow","result","fromEvent","pipe","filter","successType","errorType","map","take","toPromise","postMessage","setTarget","setContext","_client","submitPayment","payload","Promise","resolve","reject","error","response","_transformResponse","initializeOffsitePayment","headers","body","status","statusText","mapToInternalAddress","address","consignments","addressId","id","isBillingAddressLike","length","firstName","lastName","company","addressLine1","address1","addressLine2","address2","city","province","stateOrProvince","provinceCode","stateOrProvinceCode","postCode","postalCode","country","countryCode","phone","customFields","_decimalPlaces","toInteger","amount","Math","round","couponTypes","mapToInternalCoupon","coupon","code","discount","displayName","discountType","couponType","mapToInternalGiftCertificate","giftCertificate","discountedAmount","used","remainingBalance","remaining","balance","purchaseDate","CheckoutButtonMethodType","mapToInternalLineItems","itemMap","decimalPlaces","idKey","keys","reduce","item","amountTransformer","imageUrl","amountAfterDiscount","integerAmount","integerAmountAfterDiscount","integerUnitPrice","integerUnitPriceAfterDiscount","integerDiscount","quantity","sender","recipient","attributes","variantId","mapGiftCertificateToInternalLineItem","extendedListPrice","extendedSalePrice","discountAmount","listPrice","salePrice","downloadsPageUrl","downloadPageUrl","brand","sku","categoryNames","productId","option","addedByPromotion","mapToInternalLineItem","mapToInternalLineItemType","mapToInternalCart","checkout","promotions","notifications","cart","currency","items","lineItems","coupons","sum","discountNotifications","promotion","banners","banner","placeholders","messageHtml","text","totalDiscountedAmount","giftCertificates","certificate","appliedGiftCertificates","keyBy","shipping","shippingCostTotal","amountBeforeDiscount","shippingCostBeforeDiscount","integerAmountBeforeDiscount","required","some","physicalItems","lineItem","isShippingRequired","subtotal","storeCredit","customer","taxSubtotal","taxTotal","taxes","handling","handlingCostTotal","grandTotal","MissingDataErrorType","subtype","MissingBillingAddress","MissingCart","MissingConsignments","MissingCheckout","MissingCustomer","MissingCheckoutConfig","MissingOrderConfig","MissingOrder","MissingOrderId","MissingPayment","MissingPaymentToken","MissingPaymentMethod","MissingPaymentProviderCustomer","MissingShippingAddress","getErrorMessage","mapToInternalCustomer","billingAddress","addresses","customerId","isGuest","email","fullName","join","customerGroupName","customerGroup","format","split","RegExp","month","year","trimmedMonth","slice","trimmedYear","toObject","card","number","maxLength","max","creditCardType","info","lengths","unformattedValue","unformat","gaps","gapIndex","output","mapToInternalOrder","order","orderMeta","payments","orderId","customerCanBeCreated","payment","mapToInternalOrderPayment","baseAmount","token","orderToken","callbackUrl","providerId","detail","socialData","mapToInternalSocialDataList","hasDigitalItems","isDownloadable","isComplete","mapToStoreCredit","orderAmount","orderAmountAsInteger","find","isDefaultOrderPayment","step","helpText","instructions","returnUrl","socialDataObject","digitalItems","socialMedia","description","image","link","shareText","sharingLink","channelName","channel","channelCode","mapToInternalShippingOption","isSelected","module","price","cost","selected","isRecommended","transitTime","_cardExpiryFormatter","_cardNumberFormatter","transform","checkoutState","instrument","getBillingAddress","getCheckout","getCustomer","getOrder","paymentMethod","paymentMethods","getPaymentMethod","methodId","gatewayId","shippingAddress","_mapShippingAddress","getConsignments","shippingOption","getShippingOption","storeConfig","config","getStoreConfig","contextConfig","getContextConfig","instrumentMeta","instruments","getInstrumentsMeta","paymentMeta","getPaymentMethodsMeta","getOrderMeta","internalCustomer","authToken","paymentData","Boolean","instrumentId","formattedInstrument","formattedPayload","bigpay_token","isFormattedVaultedInstrument","getPaymentToken","vaultAccessToken","additionalAction","_transformPaymentMethod","quoteMeta","request","geoCountryCode","source","store","pick","storeProfile","transformWithHostedFormData","values","paymentMethodMeta","consignment","selectedShippingOption","_transformHostedInputValues","gateway","initializationData","BRAINTREE_VENMO","BRAINTREE_PAYPAL","ccCvv","cardCodeVerification","ccNumber","cardNumberVerification","hostedFormNonce","cardCode","ccExpiry","cardExpiry","ccName","cardName","cardNumber","isBopisEnabled","bopis","enabled","requiredAddress","isPickup","every","selectedPickupOption","getShippingAddress","_requestSender","submitPaymentInstrument","requestInitializationData","storeInstrumentFormData","currencyCode","paymentsUrl","shopperId","storeHash","vaultToken","defaultInstrument","Authorization","Accept","JSON","stringify","cardholder_name","cardholderName","expiry_month","expiryMonth","expiry_year","expiryYear","verification_value","verificationValue","billing_address","postal_code","country_code","first_name","last_name","state_or_province_code","provider_id","default_instrument","currency_code","HostedFieldType","mapToAutocompleteType","CardCode","CardExpiry","CardName","CardNumber","_form","_fieldTypes","_inputAggregator","_handleChange","targetInput","targetHostedInput","getInputs","input","_getAutocompleteElementId","getType","setValue","_inputs","_createInput","attach","appendChild","detach","parentElement","removeChild","autocomplete","tabIndex","style","position","opacity","zIndex","kebabCase","HostedFieldEventType","HostedInputEventType","_type","_placeholder","_accessibilityLabel","_autocomplete","_styles","_fontUrls","_eventListener","_eventPoster","_inputValidator","_paymentHandler","_storedCardHandler","_isTouched","_handleInput","_processChange","_handleBlur","_applyStyles","default","_validateForm","Blurred","fieldType","_handleFocus","focus","Focused","_handleValidate","_handleSubmit","preventDefault","Entered","_forceFocusToInput","activeElement","navigator","userAgent","toLowerCase","_input","setAttribute","setSelectionRange","ValidateRequested","SubmitRequested","handle","StoredCardRequested","_configureInput","getValue","isTouched","_loadFonts","parent","hostedInput","AttachSucceeded","_unloadFonts","_formatValue","_notifyChange","_value","Changed","backgroundColor","border","display","height","margin","outline","padding","width","placeholder","inputMode","pattern","styles","allowedStyles","color","fontFamily","fontSize","fontWeight","_fontLinks","querySelector","rel","head","undefined","getInputValues","validate","results","isValid","Validated","_previousValue","form","accessibilityLabel","fontUrls","eventListener","eventPoster","inputAggregator","inputValidator","paymentHandler","storedCardHandler","_formatter","_autocompleteFieldset","cardInfo","prevCardInfo","CardTypeChanged","cardType","unformattedPreviousValue","bin","isPotentiallyValid","substr","BinChanged","selectionEnd","formattedValue","_parentWindow","Array","frames","frame","DOMException","errors","flatMap","fieldErrors","_inputStorage","_paymentRequestSender","_paymentRequestTransformer","SubmitFailed","snakeCase","SubmitSucceeded","_isPaymentErrorResponse","_isErrorResponse","_storedCardRequestSender","fields","StoredCardFailed","Number","trim","StoredCardSucceeded","_cardInstrument","_completeSchema","_getCardCodeSchema","_getCardCodeVerificationSchema","_getCardExpirySchema","_getCardNameSchema","_getCardNumberSchema","_getCardNumberVerificationSchema","_configureCardValidator","requiredField","schemas","abortEarly","_isValidationErrorType","inner","innerError","path","discoverInfo","getTypeInfo","jcbInfo","visaInfo","updateCard","patterns","addCard","niceType","size","string","cvv","_mapFromInstrumentCardType","expirationDate","last4","_parentOrigin","create","cardInstrument","CardCodeVerification","CardNumberVerification","mapToAccessibilityLabel","_createNumberInput","_createExpiryInput","normalizeParentOrigin","getParentOrigin","_createPaymentHandler","_createStoredCardHandler","createRequestSender","_factory","_storage","initialize","containerId","_createFormContainer","_resetPageStyles","AttachRequested","field","getElementById","node","overflow","container","button","noValidate","initializeHostedInput","parentOrigin","poster","notifyInitializeError","AttachFailed"],"sourceRoot":""}
1
+ {"version":3,"file":"hosted-form.js","mappings":"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","sources":["webpack://@bigcommerce/checkout-sdk/webpack/bootstrap","webpack://@bigcommerce/checkout-sdk/webpack/runtime/define property getters","webpack://@bigcommerce/checkout-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@bigcommerce/checkout-sdk/webpack/runtime/make namespace object","webpack://@bigcommerce/checkout-sdk/./packages/utility/src/bind-decorator/bind-decorator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/utility/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/url/parse-url.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/url/append-www.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/iframe/is-iframe-event.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/iframe/iframe-event-listener.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-storage.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/get-hosted-input-storage.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"@bigcommerce/bigpay-client\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"@bigcommerce/request-sender\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"rxjs\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"rxjs/operators\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/iframe/iframe-event-poster.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/payment-request-sender.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"lodash\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/address/map-to-internal-address.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/billing/is-billing-address-like.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/common/utility/amount-transformer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/coupon/map-to-internal-coupon.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/coupon/map-to-internal-gift-certificate.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/generated/checkout-button-method-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-to-internal-line-items.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-gift-certificate-to-internal-line-item.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-to-internal-line-item.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/cart/map-to-internal-cart.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/promotion/map-to-discount-notifications.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/missing-data-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/customer/map-to-internal-customer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/card-expiry-formatter.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"card-validator\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/card-number-formatter.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/order/map-to-internal-order.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/shipping/map-to-internal-shipping-option.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/payment-request-transformer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/is-vaulted-instrument.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/payment/storefront-stored-card-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/hosted-field-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/map-to-autocomplete-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-autocomplete-fieldset.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/hosted-field-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-card-expiry-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-card-number-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-aggregator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/errors/invalid-hosted-form-value-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-payment-handler.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-stored-card-handler.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"yup\"","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-validator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-factory.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/map-to-accessibility-label.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/errors/invalid-hosted-form-config-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/hosted-input-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/initialize-hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/hosted-form/iframe-content/notify-initialize-error.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Decorates a class or a method by binding all its prototype methods or itself\n * to the calling instance respectively.\n */\nfunction bindDecorator<T extends Method>(\n target: object,\n key: string,\n descriptor: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\nfunction bindDecorator<T extends Constructor<object>>(target: T): T;\n\nfunction bindDecorator(target: any, key?: any, descriptor?: any): any {\n if (!key || !descriptor) {\n return bindClassDecorator(target);\n }\n\n return bindMethodDecorator(target, key, descriptor);\n}\n\nexport default bindDecorator;\n\n/**\n * Decorates a class by binding all its prototype methods to the calling\n * instance.\n */\nexport function bindClassDecorator<T extends Constructor<object>>(target: T): T {\n const decoratedTarget = class extends target {};\n\n Object.getOwnPropertyNames(target.prototype).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(target.prototype, key);\n\n if (!descriptor || key === 'constructor') {\n return;\n }\n\n Object.defineProperty(\n decoratedTarget.prototype,\n key,\n bindMethodDecorator(target.prototype, key, descriptor),\n );\n });\n\n return decoratedTarget;\n}\n\n/**\n * Decorates a method by binding it to the calling instance.\n */\nexport function bindMethodDecorator<T extends Method>(\n _: object,\n key: string,\n descriptor: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T> {\n if (typeof descriptor.value !== 'function') {\n return descriptor;\n }\n\n let method: T = descriptor.value;\n\n return {\n get() {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const boundMethod = method.bind(this) as T;\n\n Object.defineProperty(this, key, {\n ...descriptor,\n value: boundMethod,\n });\n\n return boundMethod;\n },\n set(value) {\n method = value;\n },\n };\n}\n\nexport type Constructor<T> = new (...args: any[]) => T;\nexport type Method = (...args: any[]) => any;\n","import { setPrototypeOf } from '../../utility';\n\nimport CustomError from './custom-error';\n\n/**\n * This error type should not be constructed directly. It is a base class for\n * all custom errors thrown in this library.\n */\nexport default abstract class StandardError extends Error implements CustomError {\n name = 'StandardError';\n type = 'standard';\n\n constructor(message?: string) {\n super(message || 'An unexpected error has occurred.');\n\n setPrototypeOf(this, new.target.prototype);\n\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, new.target);\n } else {\n this.stack = new Error(this.message).stack;\n }\n }\n}\n","export default function setPrototypeOf(object: any, prototype: object) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(object, prototype);\n } else {\n object.__proto__ = prototype;\n }\n\n return object;\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when a method is unable to proceed because the\n * caller has not provided all the arguments according to their requirements,\n * i.e.: if an argument is missing or it is not the expected data type.\n */\nexport default class InvalidArgumentError extends StandardError {\n constructor(message?: string) {\n super(message || 'Invalid arguments have been provided.');\n\n this.name = 'InvalidArgumentError';\n this.type = 'invalid_argument';\n }\n}\n","import { InvalidArgumentError } from '../error/errors';\n\nimport Url from './url';\n\nexport default function parseUrl(url: string): Url {\n if (!/^(https?:)?\\/\\//.test(url)) {\n throw new InvalidArgumentError('The provided URL must be absolute.');\n }\n\n // new URL() is not supported in IE11, use anchor tag instead\n const anchor = document.createElement('a');\n\n anchor.href = url;\n\n // IE11 returns 80 or 443 for the port number depending on the URL scheme,\n // even if the port number is not specified in the URL.\n const port =\n anchor.port && url.indexOf(`${anchor.hostname}:${anchor.port}`) !== -1 ? anchor.port : '';\n\n return {\n hash: anchor.hash,\n hostname: anchor.hostname,\n href: anchor.href,\n origin: `${anchor.protocol}//${anchor.hostname}${port ? `:${port}` : ''}`,\n pathname: anchor.pathname,\n port,\n protocol: anchor.protocol,\n search: anchor.search,\n };\n}\n","import parseUrl from './parse-url';\nimport Url from './url';\n\nexport default function appendWww(url: Url): Url {\n return parseUrl(\n url.hostname.indexOf('www') === 0\n ? url.href\n : url.href.replace(url.hostname, `www.${url.hostname}`),\n );\n}\n","import IframeEvent from './iframe-event';\n\nexport default function isIframeEvent<TEvent extends IframeEvent<TType>, TType extends string>(\n object: any,\n type: TType,\n): object is TEvent {\n return object.type === type;\n}\n","import { bindDecorator as bind } from '@bigcommerce/checkout-sdk/utility';\n\nimport { appendWww, parseUrl } from '../url';\n\nimport { IframeEventMap } from './iframe-event';\nimport isIframeEvent from './is-iframe-event';\n\nexport default class IframeEventListener<\n TEventMap extends IframeEventMap<keyof TEventMap>,\n TContext = undefined,\n> {\n private _isListening: boolean;\n private _listeners: EventListeners<TEventMap, TContext>;\n private _sourceOrigins: string[];\n\n constructor(sourceOrigin: string) {\n this._sourceOrigins = [\n parseUrl(sourceOrigin).origin,\n appendWww(parseUrl(sourceOrigin)).origin,\n ];\n this._isListening = false;\n this._listeners = {};\n }\n\n listen(): void {\n if (this._isListening) {\n return;\n }\n\n this._isListening = true;\n\n window.addEventListener('message', this._handleMessage);\n }\n\n stopListen(): void {\n if (!this._isListening) {\n return;\n }\n\n this._isListening = false;\n\n window.removeEventListener('message', this._handleMessage);\n }\n\n addListener<TType extends keyof TEventMap>(\n type: TType,\n listener: (event: TEventMap[TType], context?: TContext) => void,\n ): void {\n let listeners = this._listeners[type];\n\n if (!listeners) {\n this._listeners[type] = listeners = [];\n }\n\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n }\n\n removeListener<TType extends keyof TEventMap>(\n type: TType,\n listener: (event: TEventMap[TType], context?: TContext) => void,\n ): void {\n const listeners = this._listeners[type];\n\n if (!listeners) {\n return;\n }\n\n const index = listeners.indexOf(listener);\n\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n\n trigger<TType extends keyof TEventMap>(event: TEventMap[TType], context?: TContext): void {\n const listeners = this._listeners[event.type];\n\n if (!listeners) {\n return;\n }\n\n listeners.forEach((listener) => (context ? listener(event, context) : listener(event)));\n }\n\n @bind\n private _handleMessage(messageEvent: MessageEvent): void {\n if (\n this._sourceOrigins.indexOf(messageEvent.origin) === -1 ||\n !isIframeEvent(messageEvent.data as TEventMap[keyof TEventMap], messageEvent.data.type)\n ) {\n return;\n }\n\n const { context, ...event } = messageEvent.data;\n\n this.trigger(event, context);\n }\n}\n\ntype EventListeners<TEventMap, TContext = undefined> = {\n [key in keyof TEventMap]?: Array<(event: TEventMap[key], context?: TContext) => void>;\n};\n","export default class HostedInputStorage {\n private _nonce?: string;\n\n setNonce(nonce: string): void {\n this._nonce = nonce;\n }\n\n getNonce(): string | undefined {\n return this._nonce;\n }\n}\n","import HostedInputStorage from './hosted-input-storage';\n\nlet storage: HostedInputStorage | null;\n\nexport default function getHostedInputStorage(): HostedInputStorage {\n storage = storage || new HostedInputStorage();\n\n return storage;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@bigcommerce/bigpay-client\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@bigcommerce/request-sender\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs/operators\");","import { fromEvent } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\n\nimport { parseUrl } from '../url';\n\nimport IframeEvent from './iframe-event';\nimport isIframeEvent from './is-iframe-event';\n\nexport interface IframeEventPostOptions<\n TSuccessEvent extends IframeEvent,\n TErrorEvent extends IframeEvent,\n> {\n errorType?: TErrorEvent['type'];\n successType?: TSuccessEvent['type'];\n}\n\nexport default class IframeEventPoster<TEvent, TContext = undefined> {\n private _targetOrigin: string;\n\n constructor(targetOrigin: string, private _targetWindow?: Window, private _context?: TContext) {\n this._targetOrigin = targetOrigin === '*' ? '*' : parseUrl(targetOrigin).origin;\n }\n\n post(event: TEvent): void;\n post<\n TSuccessEvent extends IframeEvent = IframeEvent,\n TErrorEvent extends IframeEvent = IframeEvent,\n >(\n event: TEvent,\n options: IframeEventPostOptions<TSuccessEvent, TErrorEvent>,\n ): Promise<TSuccessEvent>;\n post<\n TSuccessEvent extends IframeEvent = IframeEvent,\n TErrorEvent extends IframeEvent = IframeEvent,\n >(\n event: TEvent,\n options?: IframeEventPostOptions<TSuccessEvent, TErrorEvent>,\n ): Promise<TSuccessEvent> | void {\n const targetWindow = this._targetWindow;\n\n if (window === targetWindow) {\n return;\n }\n\n if (!targetWindow) {\n throw new Error('Unable to post message because target window is not set.');\n }\n\n const result =\n options &&\n fromEvent<MessageEvent>(window, 'message')\n .pipe(\n filter(\n (event) =>\n event.origin === this._targetOrigin &&\n isIframeEvent(event.data, event.data.type) &&\n [options.successType, options.errorType].indexOf(event.data.type) !==\n -1,\n ),\n map((event) => {\n if (options.errorType === event.data.type) {\n throw event.data;\n }\n\n return event.data;\n }),\n take(1),\n )\n .toPromise();\n\n targetWindow.postMessage({ ...event, context: this._context }, this._targetOrigin);\n\n return result;\n }\n\n setTarget(window: Window) {\n this._targetWindow = window;\n }\n\n setContext(context: TContext) {\n this._context = context;\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport PaymentRequestBody from './payment-request-body';\n\n/**\n * @todo Convert this file into TypeScript properly\n */\nexport default class PaymentRequestSender {\n /**\n * @class\n * @param {BigpayClient} client\n */\n constructor(private _client: any) {}\n\n submitPayment(payload: PaymentRequestBody): Promise<Response<any>> {\n return new Promise((resolve, reject) => {\n this._client.submitPayment(payload, (error: any, response: any) => {\n if (error) {\n reject(this._transformResponse(error));\n } else {\n resolve(this._transformResponse(response));\n }\n });\n });\n }\n\n initializeOffsitePayment(payload: PaymentRequestBody, target?: string): Promise<void> {\n return new Promise(() => {\n this._client.initializeOffsitePayment(payload, null, target);\n });\n }\n\n private _transformResponse(response: any): Response<any> {\n return {\n headers: response.headers,\n body: response.data,\n status: response.status,\n statusText: response.statusText,\n };\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","import { BillingAddress, isBillingAddressLike } from '../billing';\nimport { Consignment } from '../shipping';\n\nimport Address from './address';\nimport InternalAddress from './internal-address';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalAddress(\n address: Address | BillingAddress,\n consignments?: Consignment[],\n): InternalAddress<any> {\n let addressId;\n\n if (isBillingAddressLike(address)) {\n addressId = address.id;\n } else if (consignments && consignments.length) {\n addressId = consignments[0].id;\n }\n\n return {\n id: addressId,\n firstName: address.firstName,\n lastName: address.lastName,\n company: address.company,\n addressLine1: address.address1,\n addressLine2: address.address2,\n city: address.city,\n province: address.stateOrProvince,\n provinceCode: address.stateOrProvinceCode,\n postCode: address.postalCode,\n country: address.country,\n countryCode: address.countryCode,\n phone: address.phone,\n customFields: address.customFields,\n };\n}\n","import { Address } from '../address';\n\nimport BillingAddress from './billing-address';\n\nexport default function isBillingAddressLike(address: Address): address is BillingAddress {\n const billingAddress = address as BillingAddress;\n\n return typeof billingAddress.id !== 'undefined';\n}\n","export default class AmountTransformer {\n constructor(private _decimalPlaces: number) {}\n\n toInteger(amount: number): number {\n return Math.round(amount * 10 ** this._decimalPlaces);\n }\n}\n","import Coupon from './coupon';\nimport InternalCoupon from './internal-coupon';\n\nconst couponTypes = [\n 'per_item_discount',\n 'percentage_discount',\n 'per_total_discount',\n 'shipping_discount',\n 'free_shipping',\n];\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalCoupon(coupon: Coupon): InternalCoupon {\n return {\n code: coupon.code,\n discount: coupon.displayName,\n discountType: couponTypes.indexOf(coupon.couponType),\n };\n}\n","import GiftCertificate from './gift-certificate';\nimport InternalGiftCertificate from './internal-gift-certificate';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalGiftCertificate(\n giftCertificate: GiftCertificate,\n): InternalGiftCertificate {\n return {\n code: giftCertificate.code,\n discountedAmount: giftCertificate.used,\n remainingBalance: giftCertificate.remaining,\n giftCertificate: {\n balance: giftCertificate.balance,\n code: giftCertificate.code,\n purchaseDate: giftCertificate.purchaseDate,\n },\n };\n}\n","enum CheckoutButtonMethodType {\n APPLEPAY = \"applepay\",\n AMAZON_PAY_V2 = \"amazonpay\",\n BRAINTREE_PAYPAL = \"braintreepaypal\",\n BRAINTREE_VENMO = \"braintreevenmo\",\n BRAINTREE_PAYPAL_CREDIT = \"braintreepaypalcredit\",\n GOOGLEPAY_ADYENV2 = \"googlepayadyenv2\",\n GOOGLEPAY_ADYENV3 = \"googlepayadyenv3\",\n GOOGLEPAY_AUTHORIZENET = \"googlepayauthorizenet\",\n GOOGLEPAY_BNZ = \"googlepaybnz\",\n GOOGLEPAY_BRAINTREE = \"googlepaybraintree\",\n GOOGLEPAY_CHECKOUTCOM = \"googlepaycheckoutcom\",\n GOOGLEPAY_CYBERSOURCEV2 = \"googlepaycybersourcev2\",\n GOOGLEPAY_ORBITAL = \"googlepayorbital\",\n GOOGLEPAY_STRIPE = \"googlepaystripe\",\n GOOGLEPAY_STRIPEUPE = \"googlepaystripeupe\",\n GOOGLEPAY_WORLDPAYACCESS = \"googlepayworldpayaccess\",\n MASTERPASS = \"masterpass\",\n PAYPALEXPRESS = \"paypalexpress\"\n}\nexport default CheckoutButtonMethodType;\n\n","import InternalLineItem from './internal-line-item';\nimport { LineItem } from './line-item';\nimport LineItemMap from './line-item-map';\nimport mapGiftCertificateToInternalLineItem from './map-gift-certificate-to-internal-line-item';\nimport mapToInternalLineItem from './map-to-internal-line-item';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalLineItems(\n itemMap: LineItemMap,\n decimalPlaces: number,\n idKey: keyof LineItem = 'id',\n): InternalLineItem[] {\n return (Object.keys(itemMap) as Array<keyof LineItemMap>).reduce(\n (result, key) => [\n ...result,\n ...(itemMap[key] as LineItem[]).map((item: any) => {\n if (key === 'giftCertificates') {\n return mapGiftCertificateToInternalLineItem(item, decimalPlaces);\n }\n\n return mapToInternalLineItem(\n item,\n mapToInternalLineItemType(key),\n decimalPlaces,\n idKey,\n );\n }),\n ],\n [] as InternalLineItem[],\n );\n}\n\nfunction mapToInternalLineItemType(type: string): string {\n switch (type) {\n case 'physicalItems':\n return 'ItemPhysicalEntity';\n\n case 'digitalItems':\n return 'ItemDigitalEntity';\n\n case 'giftCertificates':\n return 'ItemGiftCertificateEntity';\n\n default:\n return '';\n }\n}\n","import { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport InternalLineItem from './internal-line-item';\nimport { GiftCertificateItem } from './line-item';\n\nexport default function mapGiftCertificateToInternalLineItem(\n item: GiftCertificateItem,\n decimalPlaces: number,\n): InternalLineItem {\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: item.id,\n imageUrl: '',\n name: item.name,\n amount: item.amount,\n amountAfterDiscount: item.amount,\n discount: 0,\n integerAmount: amountTransformer.toInteger(item.amount),\n integerAmountAfterDiscount: amountTransformer.toInteger(item.amount),\n integerUnitPrice: amountTransformer.toInteger(item.amount),\n integerUnitPriceAfterDiscount: amountTransformer.toInteger(item.amount),\n integerDiscount: 0,\n quantity: 1,\n sender: item.sender,\n recipient: item.recipient,\n type: 'ItemGiftCertificateEntity',\n attributes: [],\n variantId: null,\n };\n}\n","import { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport InternalLineItem from './internal-line-item';\nimport { DigitalItem, LineItem } from './line-item';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalLineItem(\n item: LineItem,\n type: string,\n decimalPlaces: number,\n idKey: keyof LineItem = 'id',\n): InternalLineItem {\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: item[idKey] as string | number,\n imageUrl: item.imageUrl,\n amount: item.extendedListPrice,\n amountAfterDiscount: item.extendedSalePrice,\n discount: item.discountAmount,\n integerAmount: amountTransformer.toInteger(item.extendedListPrice),\n integerAmountAfterDiscount: amountTransformer.toInteger(item.extendedSalePrice),\n integerDiscount: amountTransformer.toInteger(item.discountAmount),\n integerUnitPrice: amountTransformer.toInteger(item.listPrice),\n integerUnitPriceAfterDiscount: amountTransformer.toInteger(item.salePrice),\n downloadsPageUrl: (item as DigitalItem).downloadPageUrl,\n name: item.name,\n quantity: item.quantity,\n brand: item.brand,\n sku: item.sku,\n categoryNames: item.categoryNames,\n variantId: item.variantId,\n productId: item.productId,\n attributes: (item.options || []).map((option) => ({\n name: option.name,\n value: option.value,\n })),\n addedByPromotion: item.addedByPromotion,\n type,\n };\n}\n","import { keyBy, reduce, some } from 'lodash';\n\nimport { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { Checkout } from '../checkout';\nimport { mapToInternalCoupon, mapToInternalGiftCertificate } from '../coupon';\nimport { mapToDiscountNotifications } from '../promotion';\n\nimport InternalCart from './internal-cart';\nimport mapToInternalLineItems from './map-to-internal-line-items';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalCart(checkout: Checkout): InternalCart {\n const decimalPlaces = checkout.cart.currency.decimalPlaces;\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: checkout.cart.id,\n items: mapToInternalLineItems(checkout.cart.lineItems, decimalPlaces),\n currency: checkout.cart.currency.code,\n coupon: {\n discountedAmount: reduce(\n checkout.cart.coupons,\n (sum, coupon) => {\n return sum + coupon.discountedAmount;\n },\n 0,\n ),\n coupons: checkout.cart.coupons.map(mapToInternalCoupon),\n },\n discount: {\n amount: checkout.cart.discountAmount,\n integerAmount: amountTransformer.toInteger(checkout.cart.discountAmount),\n },\n discountNotifications: mapToDiscountNotifications(checkout.promotions),\n giftCertificate: {\n totalDiscountedAmount: reduce(\n checkout.giftCertificates,\n (sum, certificate) => {\n return sum + certificate.used;\n },\n 0,\n ),\n appliedGiftCertificates: keyBy(\n checkout.giftCertificates.map(mapToInternalGiftCertificate),\n 'code',\n ),\n },\n shipping: {\n amount: checkout.shippingCostTotal,\n integerAmount: amountTransformer.toInteger(checkout.shippingCostTotal),\n amountBeforeDiscount: checkout.shippingCostBeforeDiscount,\n integerAmountBeforeDiscount: amountTransformer.toInteger(\n checkout.shippingCostBeforeDiscount,\n ),\n required: some(\n checkout.cart.lineItems.physicalItems,\n (lineItem) => lineItem.isShippingRequired,\n ),\n },\n subtotal: {\n amount: checkout.subtotal,\n integerAmount: amountTransformer.toInteger(checkout.subtotal),\n },\n storeCredit: {\n amount: checkout.customer ? checkout.customer.storeCredit : 0,\n },\n taxSubtotal: {\n amount: checkout.taxTotal,\n integerAmount: amountTransformer.toInteger(checkout.taxTotal),\n },\n taxes: checkout.taxes,\n taxTotal: {\n amount: checkout.taxTotal,\n integerAmount: amountTransformer.toInteger(checkout.taxTotal),\n },\n handling: {\n amount: checkout.handlingCostTotal,\n integerAmount: amountTransformer.toInteger(checkout.handlingCostTotal),\n },\n grandTotal: {\n amount: checkout.grandTotal,\n integerAmount: amountTransformer.toInteger(checkout.grandTotal),\n },\n };\n}\n","import { DiscountNotification } from '../discount';\n\nimport { Promotion } from '.';\n\nexport default function mapToDiscountNotifications(\n promotions?: Promotion[],\n): DiscountNotification[] {\n const notifications: DiscountNotification[] = [];\n\n (promotions || []).forEach((promotion) => {\n (promotion.banners || []).forEach((banner) => {\n notifications.push({\n placeholders: [],\n discountType: null,\n message: '',\n messageHtml: banner.text,\n });\n });\n });\n\n return notifications;\n}\n","import StandardError from './standard-error';\n\nexport enum MissingDataErrorType {\n MissingBillingAddress,\n MissingCart,\n MissingCheckout,\n MissingConsignments,\n MissingCustomer,\n MissingCheckoutConfig,\n MissingOrder,\n MissingOrderConfig,\n MissingOrderId,\n MissingPayment,\n MissingPaymentId,\n MissingPaymentInstrument,\n MissingPaymentMethod,\n MissingPaymentProviderCustomer,\n MissingPaymentRedirectUrl,\n MissingPaymentStatus,\n MissingPaymentToken,\n MissingShippingAddress,\n}\n\n/**\n * Throw this error when data that is expected to exist is missing. Usually it\n * is due to the fact that certain data has not been retrieved from or saved to\n * the server yet. And such data is required to perform certain actions.\n */\nexport default class MissingDataError extends StandardError {\n constructor(public subtype: MissingDataErrorType) {\n super(getErrorMessage(subtype));\n\n this.name = 'MissingDataError';\n this.type = 'missing_data';\n }\n}\n\nfunction getErrorMessage(type: MissingDataErrorType): string {\n switch (type) {\n case MissingDataErrorType.MissingBillingAddress:\n return 'Unable to proceed because billing address data is unavailable.';\n\n case MissingDataErrorType.MissingCart:\n return 'Unable to proceed because cart data is unavailable.';\n\n case MissingDataErrorType.MissingConsignments:\n return 'Unable to proceed because consignments data is unavailable.';\n\n case MissingDataErrorType.MissingCheckout:\n return 'Unable to proceed because checkout data is unavailable.';\n\n case MissingDataErrorType.MissingCustomer:\n return 'Unable to proceed because customer data is unavailable.';\n\n case MissingDataErrorType.MissingCheckoutConfig:\n case MissingDataErrorType.MissingOrderConfig:\n return 'Unable to proceed because configuration data is unavailable.';\n\n case MissingDataErrorType.MissingOrder:\n return 'Unable to proceed because order data is unavailable.';\n\n case MissingDataErrorType.MissingOrderId:\n return 'Unable to proceed because order ID is unavailable or not generated yet.';\n\n case MissingDataErrorType.MissingPayment:\n return 'Unable to proceed because payment data is unavailable.';\n\n case MissingDataErrorType.MissingPaymentToken:\n return 'Unable to proceed because the token required to submit a payment is missing.';\n\n case MissingDataErrorType.MissingPaymentMethod:\n return 'Unable to proceed because payment method data is unavailable or not properly configured.';\n\n case MissingDataErrorType.MissingPaymentProviderCustomer:\n return 'Unable to proceed because payment provider customer is unavailable.';\n\n case MissingDataErrorType.MissingShippingAddress:\n return 'Unable to proceed because shipping address data is unavailable.';\n\n default:\n return 'Unable to proceed because the required data is unavailable.';\n }\n}\n","import { mapToInternalAddress } from '../address';\nimport { OrderBillingAddress } from '../order-billing-address/order-billing-address-state';\n\nimport InternalCustomer from './internal-customer';\n\nimport { Customer } from '.';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalCustomer(\n customer: Customer,\n billingAddress: OrderBillingAddress,\n): InternalCustomer {\n const firstName = customer.firstName || billingAddress.firstName || '';\n const lastName = customer.lastName || billingAddress.lastName || '';\n\n return {\n addresses: (customer.addresses || []).map((address) => mapToInternalAddress(address)),\n customerId: customer.id,\n isGuest: customer.isGuest,\n storeCredit: customer.storeCredit,\n email: customer.email || billingAddress.email || '',\n firstName,\n lastName,\n name: customer.fullName || [firstName, lastName].join(' '),\n customerGroupName: customer.customerGroup && customer.customerGroup.name,\n };\n}\n","import CardExpiryDate from './card-expiry-date';\n\nconst NUMBER_SEPARATOR = '/';\n\nexport default class CardExpiryFormatter {\n format(value: string): string {\n const [month = '', year = ''] = value.split(new RegExp(`\\\\s*${NUMBER_SEPARATOR}\\\\s*`));\n const trimmedMonth = month.slice(0, 2);\n const trimmedYear =\n year.length === 4 ? year.slice(-2) : year ? year.slice(0, 2) : month.slice(2);\n\n // i.e.: '1'\n if (value.length < 2) {\n return month;\n }\n\n // ie.: '10 /' (without trailing space)\n if (value.length > 3 && !trimmedYear) {\n return trimmedMonth;\n }\n\n return `${trimmedMonth} ${NUMBER_SEPARATOR} ${trimmedYear}`;\n }\n\n toObject(value: string): CardExpiryDate {\n const [month = '', year = ''] = value.split(new RegExp(`\\\\s*${NUMBER_SEPARATOR}\\\\s*`));\n\n if (!/^\\d+$/.test(month) || !/^\\d+$/.test(year)) {\n return { month: '', year: '' };\n }\n\n return {\n month: month.length === 1 ? `0${month}` : month.slice(0, 2),\n year: year.length === 2 ? `20${year}` : year.slice(0, 4),\n };\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"card-validator\");","import { creditCardType, number } from 'card-validator';\nimport { max } from 'lodash';\n\nconst NUMBER_SEPARATOR = ' ';\n\nexport default class CardNumberFormatter {\n format(value: string): string {\n const { card } = number(value);\n\n if (!card) {\n return value;\n }\n\n const maxLength = max(creditCardType(value).map((info) => max(info.lengths)));\n const unformattedValue = this.unformat(value).slice(0, maxLength);\n\n return card.gaps\n .filter((gapIndex) => unformattedValue.length > gapIndex)\n .reduce(\n (output, gapIndex, index) =>\n [output.slice(0, gapIndex + index), output.slice(gapIndex + index)].join(\n NUMBER_SEPARATOR,\n ),\n unformattedValue,\n );\n }\n\n unformat(value: string): string {\n const { card } = number(value);\n\n if (!card) {\n return value;\n }\n\n return value.replace(new RegExp(NUMBER_SEPARATOR, 'g'), '');\n }\n}\n","import { filter, find, keyBy, reduce } from 'lodash';\n\nimport { AmountTransformer } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { LineItem, mapToInternalLineItems } from '../cart';\nimport { Checkout } from '../checkout';\nimport { mapToInternalCoupon } from '../coupon';\nimport { HOSTED } from '../payment';\n\nimport InternalOrder, {\n InternalGiftCertificateList,\n InternalIncompleteOrder,\n InternalOrderPayment,\n InternalSocialDataList,\n} from './internal-order';\nimport Order, {\n GatewayOrderPayment,\n GiftCertificateOrderPayment,\n OrderPayment,\n OrderPayments,\n} from './order';\nimport { OrderMetaState } from './order-state';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalOrder(\n order: Order,\n orderMeta: OrderMetaState = {},\n): InternalOrder {\n const decimalPlaces = order.currency.decimalPlaces;\n const amountTransformer = new AmountTransformer(decimalPlaces);\n\n return {\n id: order.orderId,\n items: mapToInternalLineItems(order.lineItems, order.currency.decimalPlaces, 'productId'),\n orderId: order.orderId,\n currency: order.currency.code,\n customerCanBeCreated: order.customerCanBeCreated,\n payment: mapToInternalOrderPayment(order.payments, orderMeta.payment),\n subtotal: {\n amount: order.baseAmount,\n integerAmount: amountTransformer.toInteger(order.baseAmount),\n },\n coupon: {\n discountedAmount: reduce(\n order.coupons,\n (sum, coupon) => {\n return sum + coupon.discountedAmount;\n },\n 0,\n ),\n coupons: order.coupons.map(mapToInternalCoupon),\n },\n discount: {\n amount: order.discountAmount,\n integerAmount: amountTransformer.toInteger(order.discountAmount),\n },\n token: orderMeta.orderToken,\n callbackUrl: orderMeta.callbackUrl,\n discountNotifications: [],\n giftCertificate: mapToGiftCertificates(order.payments),\n socialData: mapToInternalSocialDataList(order),\n status: order.status,\n hasDigitalItems: order.hasDigitalItems,\n isDownloadable: order.isDownloadable,\n isComplete: order.isComplete,\n shipping: {\n amount: order.shippingCostTotal,\n integerAmount: amountTransformer.toInteger(order.shippingCostTotal),\n amountBeforeDiscount: order.shippingCostBeforeDiscount,\n integerAmountBeforeDiscount: amountTransformer.toInteger(\n order.shippingCostBeforeDiscount,\n ),\n },\n storeCredit: {\n amount: mapToStoreCredit(order.payments),\n },\n taxes: order.taxes,\n taxTotal: {\n amount: order.taxTotal,\n integerAmount: amountTransformer.toInteger(order.taxTotal),\n },\n handling: {\n amount: order.handlingCostTotal,\n integerAmount: amountTransformer.toInteger(order.handlingCostTotal),\n },\n grandTotal: {\n amount: order.orderAmount,\n integerAmount: order.orderAmountAsInteger,\n },\n };\n}\n\nexport function mapToInternalIncompleteOrder(checkout: Checkout): InternalIncompleteOrder {\n const payment = find(checkout.payments, { providerType: HOSTED });\n\n return {\n orderId: null,\n isComplete: false,\n payment: !payment\n ? {}\n : {\n id: payment.providerId,\n gateway: payment.gatewayId,\n status: mapToInternalPaymentStatus(payment.detail.step),\n },\n };\n}\n\nfunction mapToInternalPaymentStatus(status: string): string {\n return `PAYMENT_STATUS_${status}`;\n}\n\nfunction mapToStoreCredit(payments?: OrderPayments): number {\n const item = find(payments, { providerId: 'storecredit' });\n\n return item ? item.amount : 0;\n}\n\nfunction mapToGiftCertificates(payments?: OrderPayments): InternalGiftCertificateList {\n const items = filter(payments, {\n providerId: 'giftcertificate',\n }) as GiftCertificateOrderPayment[];\n\n return {\n totalDiscountedAmount: reduce(items, (sum, item) => item.amount + sum, 0),\n appliedGiftCertificates: keyBy(\n items.map((item) => ({\n code: item.detail.code,\n discountedAmount: item.amount,\n remainingBalance: item.detail.remaining,\n giftCertificate: {\n balance: item.amount + item.detail.remaining,\n code: item.detail.code,\n purchaseDate: '',\n },\n })),\n 'code',\n ),\n };\n}\n\nfunction mapToInternalOrderPayment(\n payments?: OrderPayments,\n payment: InternalOrderPayment = {},\n): InternalOrderPayment {\n const item = find(payments, isDefaultOrderPayment) as GatewayOrderPayment;\n\n if (!item) {\n return {};\n }\n\n return {\n id: item.providerId,\n status: mapToInternalPaymentStatus(item.detail.step),\n helpText: item.detail.instructions,\n returnUrl: payment.returnUrl,\n };\n}\n\nfunction isDefaultOrderPayment(payment: OrderPayment): payment is GatewayOrderPayment {\n return payment.providerId !== 'giftcertificate' && payment.providerId !== 'storecredit';\n}\n\nfunction mapToInternalSocialDataList(\n order: Order,\n): { [itemId: string]: InternalSocialDataList } | undefined {\n const socialDataObject: { [itemId: string]: InternalSocialDataList } = {};\n const items = [...order.lineItems.physicalItems, ...order.lineItems.digitalItems];\n\n items.forEach((item) => {\n socialDataObject[item.id] = mapToInternalSocialData(item);\n });\n\n return socialDataObject;\n}\n\nfunction mapToInternalSocialData(lineItem: LineItem): InternalSocialDataList {\n const codes = ['fb', 'tw', 'gp'];\n\n return codes.reduce((socialData, code) => {\n const item =\n lineItem.socialMedia && find(lineItem.socialMedia, (item) => item.code === code);\n\n if (!item) {\n return socialData;\n }\n\n socialData[code] = {\n name: lineItem.name,\n description: lineItem.name,\n image: lineItem.imageUrl,\n url: item.link,\n shareText: item.text,\n sharingLink: item.link,\n channelName: item.channel,\n channelCode: item.code,\n };\n\n return socialData;\n }, {} as InternalSocialDataList);\n}\n","import InternalShippingOption from './internal-shipping-option';\nimport ShippingOption from './shipping-option';\n\n/**\n * @deprecated This mapper is only for internal use only. It is required during\n * the transition period as we are moving to adopt the new storefront API object\n * schema.\n */\nexport default function mapToInternalShippingOption(\n option: ShippingOption,\n isSelected: boolean,\n): InternalShippingOption {\n return {\n description: option.description,\n module: option.type,\n price: option.cost,\n id: option.id,\n selected: isSelected,\n isRecommended: option.isRecommended,\n imageUrl: option.imageUrl,\n transitTime: option.transitTime,\n };\n}\n","import { pick } from 'lodash';\n\nimport { Address, mapToInternalAddress } from '../address';\nimport { mapToInternalCart } from '../cart';\nimport { InternalCheckoutSelectors } from '../checkout';\nimport { CheckoutButtonMethodType } from '../checkout-buttons/strategies';\nimport { MissingDataError, MissingDataErrorType } from '../common/error/errors';\nimport { mapToInternalCustomer } from '../customer';\nimport { HostedFormOrderData } from '../hosted-form';\nimport {\n CardExpiryFormatter,\n CardNumberFormatter,\n HostedInputValues,\n} from '../hosted-form/iframe-content';\nimport { mapToInternalOrder } from '../order';\nimport { mapToInternalShippingOption } from '../shipping';\n\nimport isVaultedInstrument, { isFormattedVaultedInstrument } from './is-vaulted-instrument';\nimport Payment, {\n HostedCreditCardInstrument,\n HostedVaultedInstrument,\n PaymentInstrument,\n} from './payment';\nimport PaymentMethod from './payment-method';\nimport PaymentRequestBody from './payment-request-body';\n\nexport default class PaymentRequestTransformer {\n private _cardExpiryFormatter = new CardExpiryFormatter();\n private _cardNumberFormatter = new CardNumberFormatter();\n\n transform(payment: Payment, checkoutState: InternalCheckoutSelectors): PaymentRequestBody {\n const billingAddress = checkoutState.billingAddress.getBillingAddress();\n const checkout = checkoutState.checkout.getCheckout();\n const customer = checkoutState.customer.getCustomer();\n const order = checkoutState.order.getOrder();\n const paymentMethod = checkoutState.paymentMethods.getPaymentMethod(\n payment.methodId,\n payment.gatewayId,\n );\n const shippingAddress = this._mapShippingAddress(checkoutState, paymentMethod);\n const consignments = checkoutState.consignments.getConsignments();\n const shippingOption = checkoutState.consignments.getShippingOption();\n const storeConfig = checkoutState.config.getStoreConfig();\n const contextConfig = checkoutState.config.getContextConfig();\n const instrumentMeta = checkoutState.instruments.getInstrumentsMeta();\n const paymentMeta = checkoutState.paymentMethods.getPaymentMethodsMeta();\n const orderMeta = checkoutState.order.getOrderMeta();\n const internalCustomer =\n customer && billingAddress && mapToInternalCustomer(customer, billingAddress);\n\n const authToken =\n instrumentMeta &&\n payment.paymentData &&\n (isVaultedInstrument(payment.paymentData) ||\n isFormattedVaultedInstrument(payment.paymentData))\n ? `${checkoutState.payment.getPaymentToken()}, ${instrumentMeta.vaultAccessToken}`\n : checkoutState.payment.getPaymentToken();\n\n if (!authToken) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentToken);\n }\n\n return {\n additionalAction: payment.additionalAction,\n authToken,\n customer: internalCustomer,\n billingAddress: billingAddress && mapToInternalAddress(billingAddress),\n shippingAddress: shippingAddress && mapToInternalAddress(shippingAddress, consignments),\n shippingOption: shippingOption && mapToInternalShippingOption(shippingOption, true),\n cart: checkout && mapToInternalCart(checkout),\n order: order && mapToInternalOrder(order, orderMeta),\n orderMeta,\n payment: payment.paymentData,\n paymentMethod: paymentMethod && this._transformPaymentMethod(paymentMethod),\n quoteMeta: {\n request: {\n ...paymentMeta,\n geoCountryCode: contextConfig && contextConfig.geoCountryCode,\n },\n },\n source: 'bigcommerce-checkout-js-sdk',\n store: pick(storeConfig && storeConfig.storeProfile, [\n 'storeHash',\n 'storeId',\n 'storeLanguage',\n 'storeName',\n ]),\n };\n }\n\n transformWithHostedFormData(\n values: HostedInputValues,\n data: HostedFormOrderData,\n nonce: string,\n ): PaymentRequestBody {\n const {\n additionalAction,\n authToken,\n checkout,\n config,\n order,\n orderMeta,\n payment = {},\n paymentMethod,\n paymentMethodMeta,\n } = data;\n const consignment = checkout && checkout.consignments[0];\n const shippingAddress = consignment && consignment.shippingAddress;\n const shippingOption = consignment && consignment.selectedShippingOption;\n\n return {\n additionalAction,\n authToken,\n paymentMethod: paymentMethod && this._transformPaymentMethod(paymentMethod),\n customer:\n order &&\n order.billingAddress &&\n checkout &&\n mapToInternalCustomer(checkout.customer, order.billingAddress),\n billingAddress:\n order && order.billingAddress && mapToInternalAddress(order.billingAddress),\n shippingAddress:\n shippingAddress &&\n checkout &&\n mapToInternalAddress(shippingAddress, checkout.consignments),\n shippingOption: shippingOption && mapToInternalShippingOption(shippingOption, true),\n cart: checkout && mapToInternalCart(checkout),\n order: order && mapToInternalOrder(order, orderMeta),\n orderMeta,\n payment: this._transformHostedInputValues(values, payment, nonce),\n quoteMeta: {\n request: {\n ...paymentMethodMeta,\n geoCountryCode: config && config.context.geoCountryCode,\n },\n },\n source: 'bigcommerce-checkout-js-sdk',\n store:\n config &&\n pick(config.storeConfig.storeProfile, [\n 'storeHash',\n 'storeId',\n 'storeLanguage',\n 'storeName',\n ]),\n };\n }\n\n private _transformPaymentMethod(paymentMethod: PaymentMethod): PaymentMethod {\n if (paymentMethod.method === 'multi-option' && !paymentMethod.gateway) {\n return { ...paymentMethod, gateway: paymentMethod.id };\n }\n\n if (paymentMethod.initializationData && paymentMethod.initializationData.gateway) {\n return { ...paymentMethod, id: paymentMethod.initializationData.gateway };\n }\n\n if (paymentMethod.id === CheckoutButtonMethodType.BRAINTREE_VENMO) {\n return { ...paymentMethod, id: CheckoutButtonMethodType.BRAINTREE_PAYPAL };\n }\n\n return paymentMethod;\n }\n\n private _transformHostedInputValues(\n values: HostedInputValues,\n payment: HostedCreditCardInstrument | HostedVaultedInstrument,\n nonce: string,\n ): PaymentInstrument {\n return 'instrumentId' in payment\n ? {\n ...payment,\n ccCvv: values.cardCodeVerification,\n ccNumber:\n values.cardNumberVerification &&\n this._cardNumberFormatter.unformat(values.cardNumberVerification),\n hostedFormNonce: nonce,\n }\n : {\n ...payment,\n ccCvv: values.cardCode,\n ccExpiry: this._cardExpiryFormatter.toObject(values.cardExpiry || ''),\n ccName: values.cardName || '',\n ccNumber: this._cardNumberFormatter.unformat(values.cardNumber || ''),\n hostedFormNonce: nonce,\n };\n }\n\n private _mapShippingAddress(\n checkoutState: InternalCheckoutSelectors,\n paymentMethod?: PaymentMethod,\n ): Address | undefined {\n if (paymentMethod) {\n const isBopisEnabled = paymentMethod.initializationData?.bopis?.enabled;\n const requiredAddress = paymentMethod.initializationData?.bopis?.requiredAddress;\n const consignments = checkoutState.consignments.getConsignments();\n const isPickup = consignments?.every((consignment) => consignment.selectedPickupOption);\n\n if (isBopisEnabled && isPickup && requiredAddress === 'none') {\n return undefined;\n }\n }\n\n return checkoutState.shippingAddress.getShippingAddress();\n }\n}\n","import {\n FormattedPayload,\n FormattedVaultedInstrument,\n HostedVaultedInstrument,\n PaymentInstrument,\n VaultedInstrument,\n} from './payment';\n\nexport default function isVaultedInstrument(\n instrument: PaymentInstrument,\n): instrument is VaultedInstrument {\n return Boolean((instrument as VaultedInstrument).instrumentId);\n}\n\nexport function isHostedVaultedInstrument(\n instrument: PaymentInstrument,\n): instrument is HostedVaultedInstrument {\n return (\n Boolean((instrument as HostedVaultedInstrument).instrumentId) &&\n !Object.prototype.hasOwnProperty.call(instrument, 'ccNumber') &&\n !Object.prototype.hasOwnProperty.call(instrument, 'ccCvv')\n );\n}\n\nexport function isFormattedVaultedInstrument(\n instrument: PaymentInstrument,\n): instrument is FormattedPayload<FormattedVaultedInstrument> {\n const formattedInstrument = (instrument as FormattedPayload<FormattedVaultedInstrument>)\n .formattedPayload;\n\n if (!formattedInstrument) {\n return false;\n }\n\n return (\n typeof formattedInstrument.bigpay_token === 'string' ||\n Boolean(formattedInstrument.bigpay_token && formattedInstrument.bigpay_token.token)\n );\n}\n","import { RequestSender } from '@bigcommerce/request-sender';\n\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentForm,\n} from '../hosted-form/stored-card-hosted-form-type';\n\nexport default class StorefrontStoredCardRequestSender {\n constructor(private _requestSender: RequestSender) {}\n\n async submitPaymentInstrument(\n requestInitializationData: StoredCardHostedFormData,\n storeInstrumentFormData: StoredCardHostedFormInstrumentForm,\n ): Promise<void> {\n const { providerId, currencyCode, paymentsUrl, shopperId, storeHash, vaultToken } =\n requestInitializationData;\n\n const { billingAddress, instrument, defaultInstrument } = storeInstrumentFormData;\n const url = `${paymentsUrl}/stores/${storeHash}/customers/${shopperId}/stored_instruments`;\n const options = {\n headers: {\n Authorization: vaultToken,\n Accept: 'application/vnd.bc.v1+json',\n 'Content-Type': 'application/vnd.bc.v1+json',\n },\n body: JSON.stringify({\n instrument: {\n type: instrument.type,\n cardholder_name: instrument.cardholderName,\n number: instrument.number,\n expiry_month: instrument.expiryMonth,\n expiry_year: instrument.expiryYear,\n verification_value: instrument.verificationValue,\n },\n billing_address: {\n email: billingAddress.email,\n address1: billingAddress.address1,\n ...(billingAddress.address2 && { address2: billingAddress.address2 }),\n city: billingAddress.city,\n postal_code: billingAddress.postalCode,\n country_code: billingAddress.countryCode,\n ...(billingAddress.company && { company: billingAddress.company }),\n first_name: billingAddress.firstName,\n last_name: billingAddress.lastName,\n ...(billingAddress.phone && { phone: billingAddress.phone }),\n ...(billingAddress.stateOrProvinceCode && {\n state_or_province_code: billingAddress.stateOrProvinceCode,\n }),\n },\n provider_id: providerId,\n default_instrument: defaultInstrument,\n currency_code: currencyCode,\n }),\n };\n\n await this._requestSender.post<void>(url, options);\n }\n}\n","enum HostedFieldType {\n CardCode = 'cardCode',\n CardCodeVerification = 'cardCodeVerification',\n CardExpiry = 'cardExpiry',\n CardName = 'cardName',\n CardNumber = 'cardNumber',\n CardNumberVerification = 'cardNumberVerification',\n}\n\nexport default HostedFieldType;\n","import HostedFieldType from '../hosted-field-type';\n\nexport default function mapToAutocompleteType(type: HostedFieldType): string {\n switch (type) {\n case HostedFieldType.CardCode:\n return 'cc-csc';\n\n case HostedFieldType.CardExpiry:\n return 'cc-exp';\n\n case HostedFieldType.CardName:\n return 'cc-name';\n\n case HostedFieldType.CardNumber:\n return 'cc-number';\n\n default:\n return '';\n }\n}\n","import { kebabCase } from 'lodash';\n\nimport HostedFieldType from '../hosted-field-type';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport mapToAutocompleteType from './map-to-autocomplete-type';\n\nexport default class HostedAutocompleteFieldset {\n private _inputs: HTMLInputElement[];\n\n constructor(\n private _form: HTMLFormElement,\n private _fieldTypes: HostedFieldType[],\n private _inputAggregator: HostedInputAggregator,\n ) {\n this._inputs = this._fieldTypes.map((type) => this._createInput(type));\n }\n\n attach(): void {\n this._inputs.forEach((input) => this._form.appendChild(input));\n }\n\n detach(): void {\n this._inputs.forEach((input) => {\n if (!input.parentElement) {\n return;\n }\n\n input.parentElement.removeChild(input);\n });\n }\n\n private _createInput(type: HostedFieldType): HTMLInputElement {\n const input = document.createElement('input');\n\n input.autocomplete = mapToAutocompleteType(type);\n input.id = this._getAutocompleteElementId(type);\n input.tabIndex = -1;\n input.style.position = 'absolute';\n input.style.opacity = '0';\n input.style.zIndex = '-1';\n\n input.addEventListener('change', this._handleChange);\n\n return input;\n }\n\n private _handleChange: (event: Event) => void = (event) => {\n const targetInput = event.target as HTMLInputElement;\n\n if (!targetInput) {\n throw new Error('Unable to get a reference to the target of the change event.');\n }\n\n const targetHostedInput = this._inputAggregator\n .getInputs()\n .find((input) => this._getAutocompleteElementId(input.getType()) === targetInput.id);\n\n if (!targetHostedInput) {\n return;\n }\n\n targetHostedInput.setValue(targetInput.value);\n };\n\n private _getAutocompleteElementId(type: HostedFieldType): string {\n return `autocomplete-${kebabCase(type)}`;\n }\n}\n","import { CardInstrument } from '../payment/instrument';\n\nimport HostedFieldType from './hosted-field-type';\nimport { HostedFieldStylesMap } from './hosted-form-options';\nimport HostedFormOrderData from './hosted-form-order-data';\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentFields,\n} from './stored-card-hosted-form-type';\n\nexport enum HostedFieldEventType {\n AttachRequested = 'HOSTED_FIELD:ATTACH_REQUESTED',\n SubmitRequested = 'HOSTED_FIELD:SUBMITTED_REQUESTED',\n ValidateRequested = 'HOSTED_FIELD:VALIDATE_REQUESTED',\n StoredCardRequested = 'HOSTED_FIELD:STORED_CARD_REQUESTED',\n}\n\nexport interface HostedFieldEventMap {\n [HostedFieldEventType.AttachRequested]: HostedFieldAttachEvent;\n [HostedFieldEventType.SubmitRequested]: HostedFieldSubmitRequestEvent;\n [HostedFieldEventType.ValidateRequested]: HostedFieldValidateRequestEvent;\n [HostedFieldEventType.StoredCardRequested]: HostedFieldStoredCardRequestEvent;\n}\n\nexport type HostedFieldEvent =\n | HostedFieldAttachEvent\n | HostedFieldSubmitRequestEvent\n | HostedFieldValidateRequestEvent\n | HostedFieldStoredCardRequestEvent;\n\nexport interface HostedFieldAttachEvent {\n type: HostedFieldEventType.AttachRequested;\n payload: {\n accessibilityLabel?: string;\n cardInstrument?: CardInstrument;\n fontUrls?: string[];\n placeholder?: string;\n styles?: HostedFieldStylesMap;\n origin?: string;\n type: HostedFieldType;\n };\n}\n\nexport interface HostedFieldSubmitRequestEvent {\n type: HostedFieldEventType.SubmitRequested;\n payload: {\n data: HostedFormOrderData;\n fields: HostedFieldType[];\n };\n}\n\nexport interface HostedFieldValidateRequestEvent {\n type: HostedFieldEventType.ValidateRequested;\n}\n\nexport interface HostedFieldStoredCardRequestEvent {\n type: HostedFieldEventType.StoredCardRequested;\n payload: {\n data: StoredCardHostedFormData;\n fields: StoredCardHostedFormInstrumentFields;\n };\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport {\n PaymentErrorData,\n PaymentErrorResponseBody,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport HostedFieldType from '../hosted-field-type';\nimport { HostedFormErrorsData } from '../hosted-form-options';\n\nimport HostedInputInitializeErrorData from './hosted-input-initialize-error-data';\nimport HostedInputValidateResults from './hosted-input-validate-results';\n\n// Event types\nexport enum HostedInputEventType {\n AttachSucceeded = 'HOSTED_INPUT:ATTACH_SUCCEEDED',\n AttachFailed = 'HOSTED_INPUT:ATTACH_FAILED',\n BinChanged = 'HOSTED_INPUT:BIN_CHANGED',\n Blurred = 'HOSTED_INPUT:BLURRED',\n Changed = 'HOSTED_INPUT:CHANGED',\n CardTypeChanged = 'HOSTED_INPUT:CARD_TYPE_CHANGED',\n Entered = 'HOSTED_INPUT:ENTERED',\n Focused = 'HOSTED_INPUT:FOCUSED',\n SubmitSucceeded = 'HOSTED_INPUT:SUBMIT_SUCCEEDED',\n SubmitFailed = 'HOSTED_INPUT:SUBMIT_FAILED',\n Validated = 'HOSTED_INPUT:VALIDATED',\n StoredCardSucceeded = 'HOSTED_INPUT:STORED_CARD_SUCCEEDED',\n StoredCardFailed = 'HOSTED_INPUT:STORED_CARD_FAILED',\n}\n\n// Event mapping\nexport interface HostedInputEventMap {\n [HostedInputEventType.AttachSucceeded]: HostedInputAttachSuccessEvent;\n [HostedInputEventType.AttachFailed]: HostedInputAttachErrorEvent;\n [HostedInputEventType.BinChanged]: HostedInputBinChangeEvent;\n [HostedInputEventType.Blurred]: HostedInputBlurEvent;\n [HostedInputEventType.Changed]: HostedInputChangeEvent;\n [HostedInputEventType.CardTypeChanged]: HostedInputCardTypeChangeEvent;\n [HostedInputEventType.Entered]: HostedInputEnterEvent;\n [HostedInputEventType.Focused]: HostedInputFocusEvent;\n [HostedInputEventType.SubmitSucceeded]: HostedInputSubmitSuccessEvent;\n [HostedInputEventType.SubmitFailed]: HostedInputSubmitErrorEvent;\n [HostedInputEventType.Validated]: HostedInputValidateEvent;\n [HostedInputEventType.StoredCardFailed]: HostedInputStoredCardErrorEvent;\n [HostedInputEventType.StoredCardSucceeded]: HostedInputStoredCardSucceededEvent;\n}\n\n// Events\nexport type HostedInputEvent =\n | HostedInputAttachSuccessEvent\n | HostedInputAttachErrorEvent\n | HostedInputBinChangeEvent\n | HostedInputBlurEvent\n | HostedInputChangeEvent\n | HostedInputCardTypeChangeEvent\n | HostedInputEnterEvent\n | HostedInputFocusEvent\n | HostedInputSubmitSuccessEvent\n | HostedInputSubmitErrorEvent\n | HostedInputValidateEvent\n | HostedInputStoredCardSucceededEvent\n | HostedInputStoredCardErrorEvent;\n\nexport interface HostedInputAttachSuccessEvent {\n type: HostedInputEventType.AttachSucceeded;\n}\n\nexport interface HostedInputStoredCardSucceededEvent {\n type: HostedInputEventType.StoredCardSucceeded;\n}\n\nexport interface HostedInputStoredCardErrorEvent {\n type: HostedInputEventType.StoredCardFailed;\n payload?: {\n errors?: string[];\n error?: PaymentErrorData;\n response?: Response<PaymentErrorResponseBody>;\n };\n}\n\nexport interface HostedInputAttachErrorEvent {\n type: HostedInputEventType.AttachFailed;\n payload: {\n error: HostedInputInitializeErrorData;\n };\n}\n\nexport interface HostedInputBinChangeEvent {\n type: HostedInputEventType.BinChanged;\n payload: {\n bin?: string;\n };\n}\n\nexport interface HostedInputBlurEvent {\n type: HostedInputEventType.Blurred;\n payload: {\n fieldType: HostedFieldType;\n errors?: HostedFormErrorsData;\n };\n}\n\nexport interface HostedInputChangeEvent {\n type: HostedInputEventType.Changed;\n payload: {\n fieldType: HostedFieldType;\n };\n}\n\nexport interface HostedInputCardTypeChangeEvent {\n type: HostedInputEventType.CardTypeChanged;\n payload: {\n cardType?: string;\n };\n}\n\nexport interface HostedInputFocusEvent {\n type: HostedInputEventType.Focused;\n payload: {\n fieldType: HostedFieldType;\n };\n}\n\nexport interface HostedInputEnterEvent {\n type: HostedInputEventType.Entered;\n payload: {\n fieldType: HostedFieldType;\n };\n}\n\nexport interface HostedInputSubmitSuccessEvent {\n type: HostedInputEventType.SubmitSucceeded;\n payload: {\n response: Response<unknown>;\n };\n}\n\nexport interface HostedInputSubmitErrorEvent {\n type: HostedInputEventType.SubmitFailed;\n payload: {\n error: PaymentErrorData;\n response?: Response<PaymentErrorResponseBody>;\n };\n}\n\nexport interface HostedInputValidateEvent {\n type: HostedInputEventType.Validated;\n payload: HostedInputValidateResults;\n}\n","import { kebabCase } from 'lodash';\n\nimport { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { parseUrl } from '../../common/url';\nimport {\n HostedFieldEventMap,\n HostedFieldEventType,\n HostedFieldValidateRequestEvent,\n} from '../hosted-field-events';\nimport HostedFieldType from '../hosted-field-type';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport HostedInputStyles, { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\nimport HostedInputWindow from './hosted-input-window';\n\nexport default class HostedInput {\n protected _input: HTMLInputElement;\n protected _previousValue?: string;\n private _fontLinks?: HTMLLinkElement[];\n private _isTouched = false;\n\n /**\n * @internal\n */\n constructor(\n protected _type: HostedFieldType,\n protected _form: HTMLFormElement,\n protected _placeholder: string,\n protected _accessibilityLabel: string,\n protected _autocomplete: string,\n protected _styles: HostedInputStylesMap,\n protected _fontUrls: string[],\n protected _eventListener: IframeEventListener<HostedFieldEventMap>,\n protected _eventPoster: IframeEventPoster<HostedInputEvent>,\n protected _inputAggregator: HostedInputAggregator,\n protected _inputValidator: HostedInputValidator,\n protected _paymentHandler: HostedInputPaymentHandler,\n protected _storedCardHandler: HostedInputStoredCardHandler,\n ) {\n this._input = document.createElement('input');\n\n this._input.addEventListener('input', this._handleInput);\n this._input.addEventListener('blur', this._handleBlur);\n this._input.addEventListener('focus', this._handleFocus);\n this._eventListener.addListener(\n HostedFieldEventType.ValidateRequested,\n this._handleValidate,\n );\n this._eventListener.addListener(\n HostedFieldEventType.SubmitRequested,\n this._paymentHandler.handle,\n );\n this._eventListener.addListener(\n HostedFieldEventType.StoredCardRequested,\n this._storedCardHandler.handle,\n );\n\n this._configureInput();\n }\n\n getType(): HostedFieldType {\n return this._type;\n }\n\n getValue(): string {\n return this._input.value;\n }\n\n setValue(value: string): void {\n this._processChange(value);\n }\n\n isTouched(): boolean {\n return this._isTouched;\n }\n\n attach(): void {\n this._form.appendChild(this._input);\n this._form.addEventListener('submit', this._handleSubmit);\n\n this._loadFonts();\n\n this._eventPoster.setTarget(window.parent);\n this._eventListener.listen();\n\n // fixes the issue on Firefox/Safari where the input doesn't focus properly\n window.addEventListener('focus', this._forceFocusToInput);\n\n // Assign itself to the global so it can be accessed by its sibling frames\n (window as unknown as HostedInputWindow).hostedInput = this;\n\n this._eventPoster.post({ type: HostedInputEventType.AttachSucceeded });\n }\n\n detach(): void {\n if (this._input.parentElement) {\n this._input.parentElement.removeChild(this._input);\n }\n\n this._form.removeEventListener('submit', this._handleSubmit);\n this._unloadFonts();\n\n window.removeEventListener('focus', this._forceFocusToInput);\n\n this._eventListener.stopListen();\n }\n\n protected _formatValue(value: string): void {\n this._input.value = value;\n }\n\n protected _notifyChange(_value: string): void {\n this._eventPoster.post({\n type: HostedInputEventType.Changed,\n payload: {\n fieldType: this._type,\n },\n });\n }\n\n private _configureInput(): void {\n this._input.style.backgroundColor = 'transparent';\n this._input.style.border = '0';\n this._input.style.display = 'block';\n this._input.style.height = '100%';\n this._input.style.margin = '0';\n this._input.style.outline = 'none';\n this._input.style.padding = '0';\n this._input.style.width = '100%';\n this._input.id = kebabCase(this._type);\n this._input.placeholder = this._placeholder;\n this._input.autocomplete = this._autocomplete;\n\n this._input.setAttribute('aria-label', this._accessibilityLabel);\n\n this._applyStyles(this._styles.default);\n\n switch (this._input.id) {\n case 'card-code':\n case 'card-expiry':\n case 'card-number':\n this._input.type = 'text';\n this._input.inputMode = 'numeric';\n this._input.pattern = '[0-9]*';\n break;\n\n case 'card-name':\n this._input.type = 'text';\n this._input.inputMode = 'text';\n break;\n }\n }\n\n private _applyStyles(styles: HostedInputStyles = {}): void {\n const allowedStyles: {\n [key in keyof Required<HostedInputStyles>]: HostedInputStyles[key];\n } = {\n color: styles.color,\n fontFamily: styles.fontFamily,\n fontSize: styles.fontSize,\n fontWeight: styles.fontWeight,\n };\n const styleKeys = Object.keys(allowedStyles) as Array<keyof HostedInputStyles>;\n\n styleKeys.forEach((key) => {\n if (!allowedStyles[key]) {\n return;\n }\n\n this._input.style[key] = allowedStyles[key] || '';\n });\n }\n\n private _loadFonts(): void {\n if (this._fontLinks) {\n return;\n }\n\n this._fontLinks = this._fontUrls\n .filter((url) => parseUrl(url).hostname === 'fonts.googleapis.com')\n .filter((url) => !document.querySelector(`link[href='${url}'][rel='stylesheet']`))\n .map((url) => {\n const link = document.createElement('link');\n\n link.rel = 'stylesheet';\n link.href = url;\n\n document.head.appendChild(link);\n\n return link;\n });\n }\n\n private _unloadFonts(): void {\n if (!this._fontLinks) {\n return;\n }\n\n this._fontLinks.forEach((link) => {\n if (!link.parentElement) {\n return;\n }\n\n link.parentElement.removeChild(link);\n });\n\n this._fontLinks = undefined;\n }\n\n private async _validateForm(): Promise<void> {\n const values = this._inputAggregator.getInputValues();\n const results = await this._inputValidator.validate(values);\n\n if (results.isValid) {\n this._applyStyles(this._styles.default);\n } else {\n this._applyStyles(this._styles.error);\n }\n\n this._eventPoster.post({\n type: HostedInputEventType.Validated,\n payload: results,\n });\n }\n\n private _processChange(value: string): void {\n if (value === this._previousValue) {\n return;\n }\n\n this._isTouched = true;\n\n this._formatValue(value);\n this._validateForm();\n this._notifyChange(value);\n\n this._previousValue = value;\n }\n\n private _handleInput: (event: Event) => void = (event) => {\n const input = event.target as HTMLInputElement;\n\n this._processChange(input.value);\n };\n\n private _handleBlur: (event: Event) => void = () => {\n this._applyStyles(this._styles.default);\n this._validateForm();\n\n this._eventPoster.post({\n type: HostedInputEventType.Blurred,\n payload: {\n fieldType: this._type,\n },\n });\n };\n\n private _handleFocus: (event: Event) => void = () => {\n this._applyStyles(this._styles.focus);\n\n this._eventPoster.post({\n type: HostedInputEventType.Focused,\n payload: {\n fieldType: this._type,\n },\n });\n };\n\n private _handleValidate: (event: HostedFieldValidateRequestEvent) => void = () => {\n this._validateForm();\n };\n\n private _handleSubmit: (event: Event) => void = (event) => {\n event.preventDefault();\n\n this._eventPoster.post({\n type: HostedInputEventType.Entered,\n payload: {\n fieldType: this._type,\n },\n });\n };\n\n private _forceFocusToInput = (): void => {\n if (document.activeElement === document.body) {\n const browserName = navigator.userAgent.toLowerCase();\n\n if (browserName.indexOf('safari') > -1) {\n if (this._input.value === '') {\n this._input.setAttribute('value', ' ');\n this._input.setSelectionRange(0, 1);\n this._input.setAttribute('value', '');\n }\n } else {\n this._input.focus();\n }\n }\n };\n}\n","import { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { HostedFieldEventMap } from '../hosted-field-events';\nimport HostedFieldType from '../hosted-field-type';\n\nimport CardExpiryFormatter from './card-expiry-formatter';\nimport HostedInput from './hosted-input';\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent } from './hosted-input-events';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedCardExpiryInput extends HostedInput {\n /**\n * @internal\n */\n constructor(\n form: HTMLFormElement,\n placeholder: string,\n accessibilityLabel: string,\n autocomplete: string,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n eventListener: IframeEventListener<HostedFieldEventMap>,\n eventPoster: IframeEventPoster<HostedInputEvent>,\n inputAggregator: HostedInputAggregator,\n inputValidator: HostedInputValidator,\n paymentHandler: HostedInputPaymentHandler,\n storedCardHandler: HostedInputStoredCardHandler,\n private _formatter: CardExpiryFormatter,\n ) {\n super(\n HostedFieldType.CardExpiry,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n eventListener,\n eventPoster,\n inputAggregator,\n inputValidator,\n paymentHandler,\n storedCardHandler,\n );\n }\n\n protected _formatValue(value: string): void {\n this._input.value = this._formatter.format(value);\n }\n}\n","import { number } from 'card-validator';\nimport { get } from 'lodash';\n\nimport { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { HostedFieldEventMap } from '../hosted-field-events';\nimport HostedFieldType from '../hosted-field-type';\n\nimport CardNumberFormatter from './card-number-formatter';\nimport HostedAutocompleteFieldset from './hosted-autocomplete-fieldset';\nimport HostedInput from './hosted-input';\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedCardNumberInput extends HostedInput {\n /**\n * @internal\n */\n constructor(\n type: HostedFieldType,\n form: HTMLFormElement,\n placeholder: string,\n accessibilityLabel: string,\n autocomplete: string,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n eventListener: IframeEventListener<HostedFieldEventMap>,\n eventPoster: IframeEventPoster<HostedInputEvent>,\n inputAggregator: HostedInputAggregator,\n inputValidator: HostedInputValidator,\n paymentHandler: HostedInputPaymentHandler,\n storedCardHandler: HostedInputStoredCardHandler,\n private _autocompleteFieldset: HostedAutocompleteFieldset,\n private _formatter: CardNumberFormatter,\n ) {\n super(\n type,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n eventListener,\n eventPoster,\n inputAggregator,\n inputValidator,\n paymentHandler,\n storedCardHandler,\n );\n }\n\n attach(): void {\n super.attach();\n\n this._autocompleteFieldset.attach();\n }\n\n protected _notifyChange(value: string): void {\n const cardInfo = number(value).card;\n const prevCardInfo = this._previousValue && number(this._previousValue).card;\n\n if (get(prevCardInfo, 'type') !== get(cardInfo, 'type')) {\n this._eventPoster.post({\n type: HostedInputEventType.CardTypeChanged,\n payload: {\n cardType: cardInfo ? cardInfo.type : undefined,\n },\n });\n }\n\n const unformattedValue = this._formatter.unformat(value);\n const unformattedPreviousValue = this._previousValue\n ? this._formatter.unformat(this._previousValue)\n : '';\n\n const bin =\n unformattedValue.length >= 6 && number(unformattedValue).isPotentiallyValid\n ? unformattedValue.substr(0, 6)\n : '';\n const prevBin =\n unformattedPreviousValue.length >= 6 ? unformattedPreviousValue.substr(0, 6) : '';\n\n if (bin !== prevBin) {\n this._eventPoster.post({\n type: HostedInputEventType.BinChanged,\n payload: { bin },\n });\n }\n }\n\n protected _formatValue(value: string): void {\n const selectionEnd = this._input.selectionEnd;\n const formattedValue = this._formatter.format(value);\n\n if (selectionEnd === value.length && value.length < formattedValue.length) {\n this._input.setSelectionRange(formattedValue.length, formattedValue.length);\n } else {\n this._input.setSelectionRange(selectionEnd || 0, selectionEnd || 0);\n }\n\n this._input.value = formattedValue;\n }\n}\n","import HostedInput from './hosted-input';\nimport HostedInputValues from './hosted-input-values';\nimport HostedInputWindow from './hosted-input-window';\n\nexport default class HostedInputAggregator {\n constructor(private _parentWindow: Window) {}\n\n getInputs(filter?: (field: HostedInput) => boolean): HostedInput[] {\n return Array.prototype.slice\n .call(this._parentWindow.frames)\n .reduce((result: Window[], frame: Window) => {\n try {\n const input = (frame as HostedInputWindow).hostedInput;\n\n if (!input || (filter && !filter(input))) {\n return result;\n }\n\n return [...result, input];\n } catch (error) {\n if (error instanceof DOMException) {\n return result;\n }\n\n // IE11 doesn't throw `DOMException`\n if (error instanceof Error && error.message === 'Permission denied') {\n return result;\n }\n\n throw error;\n }\n }, []);\n }\n\n getInputValues(filter?: (field: HostedInput) => boolean): HostedInputValues {\n return this.getInputs(filter).reduce((result, input) => {\n return {\n ...result,\n [input.getType()]: input.getValue(),\n };\n }, {} as HostedInputValues);\n }\n}\n","import { flatMap, map, values } from 'lodash';\n\nimport { StandardError } from '../../common/error/errors';\nimport { HostedInputValidateErrorDataMap } from '../iframe-content';\n\nexport default class InvalidHostedFormValueError extends StandardError {\n constructor(public errors: HostedInputValidateErrorDataMap) {\n super(\n [\n 'Unable to proceed due to invalid user input values',\n ...flatMap(values(errors), (fieldErrors) =>\n map(fieldErrors, ({ message }) => message),\n ),\n ].join('. '),\n );\n\n this.name = 'InvalidHostedFormValueError';\n this.type = 'invalid_hosted_form_value';\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\nimport { snakeCase } from 'lodash';\n\nimport { PaymentErrorResponseBody } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { IframeEventPoster } from '../../common/iframe';\nimport { PaymentRequestSender, PaymentRequestTransformer } from '../../payment';\nimport { InvalidHostedFormValueError } from '../errors';\nimport { HostedFieldSubmitRequestEvent } from '../hosted-field-events';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputStorage from './hosted-input-storage';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedInputPaymentHandler {\n constructor(\n private _inputAggregator: HostedInputAggregator,\n private _inputValidator: HostedInputValidator,\n private _inputStorage: HostedInputStorage,\n private _eventPoster: IframeEventPoster<HostedInputEvent>,\n private _paymentRequestSender: PaymentRequestSender,\n private _paymentRequestTransformer: PaymentRequestTransformer,\n ) {}\n\n handle: (event: HostedFieldSubmitRequestEvent) => Promise<void> = async ({\n payload: { data },\n }) => {\n const values = this._inputAggregator.getInputValues();\n const results = await this._inputValidator.validate(values);\n\n this._eventPoster.post({\n type: HostedInputEventType.Validated,\n payload: results,\n });\n\n if (!results.isValid) {\n const error = new InvalidHostedFormValueError(results.errors);\n\n return this._eventPoster.post({\n type: HostedInputEventType.SubmitFailed,\n payload: {\n error: { code: snakeCase(error.name), message: error.message },\n },\n });\n }\n\n try {\n const response = await this._paymentRequestSender.submitPayment(\n this._paymentRequestTransformer.transformWithHostedFormData(\n values,\n data,\n this._inputStorage.getNonce() || '',\n ),\n );\n\n this._eventPoster.post({\n type: HostedInputEventType.SubmitSucceeded,\n payload: { response },\n });\n } catch (error) {\n if (this._isPaymentErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitFailed,\n payload: { error: error.body.errors[0], response: error },\n });\n } else if (this._isErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitFailed,\n payload: { error: { code: snakeCase(error.name), message: error.message } },\n });\n }\n }\n };\n\n private _isPaymentErrorResponse(response: any): response is Response<PaymentErrorResponseBody> {\n const { body: { errors = [] } = {} } = response || {};\n\n return (\n typeof (errors[0] && errors[0].code) === 'string' &&\n typeof (errors[0] && errors[0].message) === 'string'\n );\n }\n\n private _isErrorResponse(error: unknown): error is { name?: string; message?: string } {\n return (\n typeof error === 'object' &&\n error !== null &&\n (('name' in error && typeof (error as { name: unknown }).name === 'string') ||\n !('name' in error)) &&\n (('message' in error && typeof (error as { message: unknown }).message === 'string') ||\n !('message' in error))\n );\n }\n}\n","import { IframeEventPoster } from '../../common/iframe';\nimport { StorefrontStoredCardRequestSender } from '../../payment';\nimport { HostedFieldStoredCardRequestEvent } from '../hosted-field-events';\n\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport { HostedInputEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputValidator from './hosted-input-validator';\n\nexport default class HostedInputStoredCardHandler {\n constructor(\n private _inputAggregator: HostedInputAggregator,\n private _inputValidator: HostedInputValidator,\n private _eventPoster: IframeEventPoster<HostedInputEvent>,\n private _storedCardRequestSender: StorefrontStoredCardRequestSender,\n ) {}\n\n handle: (event: HostedFieldStoredCardRequestEvent) => Promise<void> = async (event) => {\n const {\n payload: { data, fields },\n } = event;\n const values = this._inputAggregator.getInputValues();\n const results = await this._inputValidator.validate(values);\n\n this._eventPoster.post({\n type: HostedInputEventType.Validated,\n payload: results,\n });\n\n if (!results.isValid) {\n return this._eventPoster.post({\n type: HostedInputEventType.StoredCardFailed,\n });\n }\n\n const { defaultInstrument, ...billingAddress } = fields;\n\n const [expiryMonth, expiryYear] = values.cardExpiry ? values.cardExpiry.split('/') : [];\n\n try {\n await this._storedCardRequestSender.submitPaymentInstrument(data, {\n billingAddress,\n instrument: {\n type: 'card',\n cardholderName: values.cardName || '',\n number: values.cardNumber ? values.cardNumber.replace(/ /g, '') : '',\n expiryMonth: Number(expiryMonth.trim()),\n expiryYear: Number(`20${expiryYear.trim()}`),\n verificationValue: values.cardCode ?? '',\n },\n defaultInstrument,\n });\n\n this._eventPoster.post({\n type: HostedInputEventType.StoredCardSucceeded,\n });\n } catch (error) {\n this._eventPoster.post({\n type: HostedInputEventType.StoredCardFailed,\n });\n }\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"yup\");","import { creditCardType, cvv, expirationDate, number } from 'card-validator';\nimport { object, ObjectShape, string, StringSchema, ValidationError } from 'yup';\n\nimport { CardInstrument } from '../../payment/instrument';\n\nimport { HostedInputValidateErrorDataMap } from './hosted-input-validate-error-data';\nimport HostedInputValidateResults from './hosted-input-validate-results';\nimport HostedInputValues from './hosted-input-values';\n\nexport default class HostedInputValidator {\n private readonly _completeSchema: ObjectShape = {\n cardCode: this._getCardCodeSchema(),\n cardCodeVerification: this._getCardCodeVerificationSchema(),\n cardExpiry: this._getCardExpirySchema(),\n cardName: this._getCardNameSchema(),\n cardNumber: this._getCardNumberSchema(),\n cardNumberVerification: this._getCardNumberVerificationSchema(),\n };\n\n constructor(private _cardInstrument?: CardInstrument) {\n this._configureCardValidator();\n }\n\n async validate(values: HostedInputValues): Promise<HostedInputValidateResults> {\n const schemas: ObjectShape = {};\n const results: HostedInputValidateResults = {\n errors: {},\n isValid: true,\n };\n\n let requiredField: keyof HostedInputValues;\n\n for (requiredField in values) {\n if (Object.prototype.hasOwnProperty.call(values, requiredField)) {\n schemas[requiredField] = this._completeSchema[requiredField];\n results.errors[requiredField] = [];\n }\n }\n\n try {\n await object(schemas).validate(values, { abortEarly: false });\n\n return results;\n } catch (error) {\n if (this._isValidationErrorType(error)) {\n throw error;\n }\n\n return {\n errors: (\n Object.keys(results.errors) as Array<keyof HostedInputValidateErrorDataMap>\n ).reduce(\n (result, fieldType) => ({\n ...result,\n [fieldType]: (error as ValidationError).inner\n .filter((innerError) => innerError.path === fieldType)\n .map((innerError) => ({\n fieldType: innerError.path,\n message: innerError.errors.join(' '),\n type: innerError.type,\n })),\n }),\n {} as HostedInputValidateErrorDataMap,\n ),\n isValid: false,\n };\n }\n }\n\n private _configureCardValidator(): void {\n const discoverInfo = creditCardType.getTypeInfo('discover');\n const jcbInfo = creditCardType.getTypeInfo('jcb');\n const visaInfo = creditCardType.getTypeInfo('visa');\n\n // Need to support 13 digit PAN because some gateways only provide test credit card numbers in this format.\n creditCardType.updateCard('visa', {\n lengths: [13, ...(visaInfo.lengths || [])],\n });\n\n // Add support for 8-BIN Discover Cards.\n creditCardType.updateCard('discover', {\n patterns: [...(discoverInfo.patterns || []), [810, 817]],\n });\n\n creditCardType.addCard({\n niceType: 'Mada',\n type: 'mada',\n patterns: [\n 400861, 401757, 407197, 407395, 409201, 410685, 412565, 417633, 419593, 422817,\n 422818, 422819, 428331, 428671, 428672, 428673, 431361, 432328, 434107, 439954,\n 440533, 440647, 440795, 445564, 446393, 446404, 446672, 455036, 455708, 457865,\n 458456, 462220, 468540, 468541, 468542, 468543, 483010, 483011, 483012, 484783,\n 486094, 486095, 486096, 489317, 489318, 489319, 493428, 504300, 506968, 508160,\n 513213, 520058, 521076, 524130, 524514, 529415, 529741, 530060, 530906, 531095,\n 531196, 532013, 535825, 535989, 536023, 537767, 539931, 543085, 543357, 549760,\n 554180, 557606, 558848, 585265, 588845, 588846, 588847, 588848, 588849, 588850,\n 588851, 588982, 588983, 589005, 589206, 604906, 605141, 636120, 968201, 968202,\n 968203, 968204, 968205, 968206, 968207, 968208, 968209, 968210, 968211,\n ],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: 'CVV',\n size: 3,\n },\n });\n\n // Add support WorldPayAccess and Authorize.net test cards\n creditCardType.updateCard('jcb', {\n patterns: [...(jcbInfo.patterns || []), 3088, 3337, 3338],\n });\n }\n\n private _getCardCodeSchema(): StringSchema {\n return string()\n .required('CVV is required')\n .test({\n message: 'CVV must be valid',\n name: 'invalid_card_code',\n test(value) {\n const { card } = number((this.parent as HostedInputValues).cardNumber || '');\n\n return cvv(value, card && card.code ? card.code.size : undefined).isValid;\n },\n });\n }\n\n private _getCardCodeVerificationSchema(): StringSchema {\n return string()\n .required('CVV is required')\n .test({\n message: 'CVV must be valid',\n name: 'invalid_card_code',\n test: (value = '') => {\n const cardType =\n this._cardInstrument &&\n this._mapFromInstrumentCardType(this._cardInstrument.brand);\n const cardInfo = cardType && creditCardType.getTypeInfo(cardType);\n\n return cvv(value, cardInfo && cardInfo.code ? cardInfo.code.size : undefined)\n .isValid;\n },\n });\n }\n\n private _getCardExpirySchema(): StringSchema {\n return string()\n .required('Expiration date is required')\n .test({\n message: 'Expiration date must be a valid future date in MM / YY format',\n name: 'invalid_card_expiry',\n test: (value) => expirationDate(value).isValid,\n });\n }\n\n private _getCardNameSchema(): StringSchema {\n return string()\n .max(200)\n .required('Full name is required')\n .test({\n message: 'Credit card name must be valid',\n name: 'invalid_card_name',\n test: (value) => {\n // Get all numbers from the input value after removing whitespaces\n const numbers = value.replace(/\\s/g, '').match(/[0-9]+/g);\n\n if (!numbers?.length) {\n return true;\n }\n\n for (const num of numbers) {\n if (number(num).isValid) {\n return false;\n }\n }\n\n return true;\n },\n });\n }\n\n private _getCardNumberSchema(): StringSchema {\n return string()\n .required('Credit card number is required')\n .test({\n message: 'Credit card number must be valid',\n name: 'invalid_card_number',\n test: (value) => number(value).isValid,\n });\n }\n\n private _getCardNumberVerificationSchema(): StringSchema {\n return string()\n .required('Credit card number is required')\n .test({\n message: 'Credit card number must be valid',\n name: 'invalid_card_number',\n test: (value = '') => number(value).isValid,\n })\n .test({\n message: 'The card number entered does not match the card stored in your account',\n name: 'mismatched_card_number',\n test: (value = '') =>\n this._cardInstrument\n ? value.slice(-this._cardInstrument.last4.length) ===\n this._cardInstrument.last4\n : false,\n });\n }\n\n private _mapFromInstrumentCardType(type: string): string {\n switch (type) {\n case 'amex':\n case 'american_express':\n return 'american-express';\n\n case 'diners':\n return 'diners-club';\n\n default:\n return type;\n }\n }\n\n private _isValidationErrorType(error: any): error is { name: string } {\n return 'name' in error && error.name !== 'ValidationError';\n }\n}\n","import { createClient as createBigpayClient } from '@bigcommerce/bigpay-client';\nimport { createRequestSender } from '@bigcommerce/request-sender';\n\nimport { IframeEventListener, IframeEventPoster } from '../../common/iframe';\nimport { appendWww, parseUrl } from '../../common/url';\nimport {\n PaymentRequestSender,\n PaymentRequestTransformer,\n StorefrontStoredCardRequestSender,\n} from '../../payment';\nimport { CardInstrument } from '../../payment/instrument';\nimport HostedFieldType from '../hosted-field-type';\n\nimport CardExpiryFormatter from './card-expiry-formatter';\nimport CardNumberFormatter from './card-number-formatter';\nimport getHostedInputStorage from './get-hosted-input-storage';\nimport HostedAutocompleteFieldset from './hosted-autocomplete-fieldset';\nimport HostedCardExpiryInput from './hosted-card-expiry-input';\nimport HostedCardNumberInput from './hosted-card-number-input';\nimport HostedInput from './hosted-input';\nimport HostedInputAggregator from './hosted-input-aggregator';\nimport HostedInputPaymentHandler from './hosted-input-payment-handler';\nimport HostedInputStoredCardHandler from './hosted-input-stored-card-handler';\nimport { HostedInputStylesMap } from './hosted-input-styles';\nimport HostedInputValidator from './hosted-input-validator';\nimport mapToAccessibilityLabel from './map-to-accessibility-label';\nimport mapToAutocompleteType from './map-to-autocomplete-type';\n\nexport default class HostedInputFactory {\n constructor(private _parentOrigin: string) {}\n\n create(\n form: HTMLFormElement,\n type: HostedFieldType,\n styles: HostedInputStylesMap = {},\n fontUrls: string[] = [],\n placeholder = '',\n accessibilityLabel: string = mapToAccessibilityLabel(type),\n cardInstrument?: CardInstrument,\n ): HostedInput {\n const autocomplete = mapToAutocompleteType(type);\n\n if (type === HostedFieldType.CardNumber) {\n return this._createNumberInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n );\n }\n\n if (type === HostedFieldType.CardNumberVerification) {\n return this._createNumberInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n cardInstrument,\n );\n }\n\n if (type === HostedFieldType.CardExpiry) {\n return this._createExpiryInput(\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n );\n }\n\n if (type === HostedFieldType.CardCodeVerification) {\n return this._createInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n cardInstrument,\n );\n }\n\n return this._createInput(\n type,\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\n );\n }\n\n normalizeParentOrigin(origin: string): void {\n if (this._parentOrigin === origin) {\n return;\n }\n\n if (\n this._parentOrigin !== appendWww(parseUrl(origin)).origin &&\n origin !== appendWww(parseUrl(this._parentOrigin)).origin\n ) {\n return;\n }\n\n this._parentOrigin = origin;\n }\n\n getParentOrigin(): string {\n return this._parentOrigin;\n }\n\n private _createExpiryInput(\n form: HTMLFormElement,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n placeholder: string,\n accessibilityLabel = '',\n autocomplete = '',\n ): HostedCardExpiryInput {\n return new HostedCardExpiryInput(\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n new IframeEventListener(this._parentOrigin),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(),\n this._createPaymentHandler(),\n this._createStoredCardHandler(),\n new CardExpiryFormatter(),\n );\n }\n\n private _createNumberInput(\n type: HostedFieldType,\n form: HTMLFormElement,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n placeholder: string,\n accessibilityLabel = '',\n autocomplete = '',\n cardInstrument?: CardInstrument,\n ): HostedCardNumberInput {\n return new HostedCardNumberInput(\n type,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n new IframeEventListener(this._parentOrigin),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n this._createPaymentHandler(cardInstrument),\n this._createStoredCardHandler(cardInstrument),\n new HostedAutocompleteFieldset(\n form,\n [HostedFieldType.CardCode, HostedFieldType.CardExpiry, HostedFieldType.CardName],\n new HostedInputAggregator(window.parent),\n ),\n new CardNumberFormatter(),\n );\n }\n\n private _createInput(\n type: HostedFieldType,\n form: HTMLFormElement,\n styles: HostedInputStylesMap,\n fontUrls: string[],\n placeholder: string,\n accessibilityLabel = '',\n autocomplete = '',\n cardInstrument?: CardInstrument,\n ): HostedInput {\n return new HostedInput(\n type,\n form,\n placeholder,\n accessibilityLabel,\n autocomplete,\n styles,\n fontUrls,\n new IframeEventListener(this._parentOrigin),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n this._createPaymentHandler(cardInstrument),\n this._createStoredCardHandler(cardInstrument),\n );\n }\n\n private _createPaymentHandler(cardInstrument?: CardInstrument): HostedInputPaymentHandler {\n return new HostedInputPaymentHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n getHostedInputStorage(),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new PaymentRequestSender(createBigpayClient()),\n new PaymentRequestTransformer(),\n );\n }\n\n private _createStoredCardHandler(\n cardInstrument?: CardInstrument,\n ): HostedInputStoredCardHandler {\n return new HostedInputStoredCardHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(cardInstrument),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new StorefrontStoredCardRequestSender(createRequestSender()),\n );\n }\n}\n","import HostedFieldType from '../hosted-field-type';\n\nexport default function mapToAccessibilityLabel(type: HostedFieldType): string {\n switch (type) {\n case HostedFieldType.CardCode:\n case HostedFieldType.CardCodeVerification:\n return 'CVC';\n\n case HostedFieldType.CardExpiry:\n return 'Expiration';\n\n case HostedFieldType.CardName:\n return 'Name on card';\n\n case HostedFieldType.CardNumber:\n case HostedFieldType.CardNumberVerification:\n return 'Credit card number';\n }\n}\n","import { StandardError } from '../../common/error/errors';\n\nexport default class InvalidHostedFormConfigError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'Unable to proceed due to invalid configuration provided for the hosted payment form.',\n );\n\n this.name = 'InvalidHostedFormConfigError';\n this.type = 'invalid_hosted_form_config';\n }\n}\n","import { fromEvent } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nimport { IframeEventListener } from '../../common/iframe';\nimport { InvalidHostedFormConfigError } from '../errors';\nimport {\n HostedFieldAttachEvent,\n HostedFieldEventMap,\n HostedFieldEventType,\n} from '../hosted-field-events';\n\nimport HostedInput from './hosted-input';\nimport HostedInputFactory from './hosted-input-factory';\nimport HostedInputStorage from './hosted-input-storage';\n\ninterface EventTargetLike<TEvent> {\n addListener(eventName: string, handler: (event: TEvent) => void): void;\n removeListener(eventName: string, handler: (event: TEvent) => void): void;\n}\n\nexport default class HostedInputInitializer {\n constructor(\n private _factory: HostedInputFactory,\n private _storage: HostedInputStorage,\n private _eventListener: IframeEventListener<HostedFieldEventMap>,\n ) {}\n\n initialize(containerId: string, nonce?: string): Promise<HostedInput> {\n if (nonce) {\n this._storage.setNonce(nonce);\n }\n\n const form = this._createFormContainer(containerId);\n\n this._resetPageStyles(containerId);\n this._eventListener.listen();\n\n return fromEvent<HostedFieldAttachEvent>(\n this._eventListener as EventTargetLike<HostedFieldAttachEvent>,\n HostedFieldEventType.AttachRequested,\n )\n .pipe(\n map(({ payload }) => {\n const {\n accessibilityLabel,\n cardInstrument,\n fontUrls,\n placeholder,\n styles,\n origin,\n type,\n } = payload;\n\n if (origin) {\n this._factory.normalizeParentOrigin(origin);\n }\n\n const field = this._factory.create(\n form,\n type,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n cardInstrument,\n );\n\n field.attach();\n\n return field;\n }),\n take(1),\n )\n .toPromise();\n }\n\n private _resetPageStyles(containerId: string) {\n const html = document.querySelector('html');\n const body = document.querySelector('body');\n const container = document.getElementById(containerId);\n\n [html, body, container].forEach((node) => {\n if (!node) {\n return;\n }\n\n node.style.height = '100%';\n node.style.width = '100%';\n node.style.overflow = 'hidden';\n node.style.padding = '0';\n node.style.margin = '0';\n });\n }\n\n private _createFormContainer(containerId: string): HTMLFormElement {\n const container = document.getElementById(containerId);\n\n if (!container) {\n throw new InvalidHostedFormConfigError(\n 'Unable to proceed because the provided container ID is not valid.',\n );\n }\n\n const form = document.createElement('form');\n const button = document.createElement('button');\n\n form.noValidate = true;\n form.style.height = '100%';\n form.style.width = '100%';\n button.style.display = 'none';\n\n container.appendChild(form);\n form.appendChild(button);\n\n return form;\n }\n}\n","import { IframeEventListener } from '../../common/iframe';\nimport { HostedFieldEventMap } from '../hosted-field-events';\n\nimport getHostedInputStorage from './get-hosted-input-storage';\nimport HostedInput from './hosted-input';\nimport HostedInputFactory from './hosted-input-factory';\nimport HostedInputInitializer from './hosted-input-initializer';\nimport HostedInputOptions from './hosted-input-options';\n\nexport default function initializeHostedInput(options: HostedInputOptions): Promise<HostedInput> {\n const { containerId, nonce, parentOrigin } = options;\n const initializer = new HostedInputInitializer(\n new HostedInputFactory(parentOrigin),\n getHostedInputStorage(),\n new IframeEventListener<HostedFieldEventMap>(parentOrigin),\n );\n\n return initializer.initialize(containerId, nonce);\n}\n","import { IframeEventPoster } from '../../common/iframe';\n\nimport { HostedInputAttachErrorEvent, HostedInputEventType } from './hosted-input-events';\nimport HostedInputInitializeErrorData from './hosted-input-initialize-error-data';\n\nconst poster = new IframeEventPoster<HostedInputAttachErrorEvent>('*', window.parent);\n\nexport default function notifyInitializeError(error: HostedInputInitializeErrorData): void {\n poster.post({\n type: HostedInputEventType.AttachFailed,\n payload: { error },\n });\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","target","descriptor","bindMethodDecorator","decoratedTarget","getOwnPropertyNames","forEach","getOwnPropertyDescriptor","bindClassDecorator","_","method","boundMethod","bind","this","set","message","object","name","type","setPrototypeOf","__proto__","Error","captureStackTrace","stack","parseUrl","url","test","anchor","document","createElement","href","port","indexOf","hostname","hash","origin","protocol","pathname","search","appendWww","replace","isIframeEvent","sourceOrigin","_sourceOrigins","_isListening","_listeners","listen","window","addEventListener","_handleMessage","stopListen","removeEventListener","addListener","listener","listeners","push","removeListener","index","splice","trigger","event","context","messageEvent","data","setNonce","nonce","_nonce","getNonce","storage","getHostedInputStorage","require","targetOrigin","_targetWindow","_context","_targetOrigin","post","options","targetWindow","result","fromEvent","pipe","filter","successType","errorType","map","take","toPromise","postMessage","setTarget","setContext","_client","submitPayment","payload","Promise","resolve","reject","error","response","_transformResponse","initializeOffsitePayment","headers","body","status","statusText","mapToInternalAddress","address","consignments","addressId","id","isBillingAddressLike","length","firstName","lastName","company","addressLine1","address1","addressLine2","address2","city","province","stateOrProvince","provinceCode","stateOrProvinceCode","postCode","postalCode","country","countryCode","phone","customFields","_decimalPlaces","toInteger","amount","Math","round","couponTypes","mapToInternalCoupon","coupon","code","discount","displayName","discountType","couponType","mapToInternalGiftCertificate","giftCertificate","discountedAmount","used","remainingBalance","remaining","balance","purchaseDate","CheckoutButtonMethodType","mapToInternalLineItems","itemMap","decimalPlaces","idKey","keys","reduce","item","amountTransformer","imageUrl","amountAfterDiscount","integerAmount","integerAmountAfterDiscount","integerUnitPrice","integerUnitPriceAfterDiscount","integerDiscount","quantity","sender","recipient","attributes","variantId","mapGiftCertificateToInternalLineItem","extendedListPrice","extendedSalePrice","discountAmount","listPrice","salePrice","downloadsPageUrl","downloadPageUrl","brand","sku","categoryNames","productId","option","addedByPromotion","mapToInternalLineItem","mapToInternalLineItemType","mapToInternalCart","checkout","promotions","notifications","cart","currency","items","lineItems","coupons","sum","discountNotifications","promotion","banners","banner","placeholders","messageHtml","text","totalDiscountedAmount","giftCertificates","certificate","appliedGiftCertificates","keyBy","shipping","shippingCostTotal","amountBeforeDiscount","shippingCostBeforeDiscount","integerAmountBeforeDiscount","required","some","physicalItems","lineItem","isShippingRequired","subtotal","storeCredit","customer","taxSubtotal","taxTotal","taxes","handling","handlingCostTotal","grandTotal","MissingDataErrorType","subtype","MissingBillingAddress","MissingCart","MissingConsignments","MissingCheckout","MissingCustomer","MissingCheckoutConfig","MissingOrderConfig","MissingOrder","MissingOrderId","MissingPayment","MissingPaymentToken","MissingPaymentMethod","MissingPaymentProviderCustomer","MissingShippingAddress","getErrorMessage","mapToInternalCustomer","billingAddress","addresses","customerId","isGuest","email","fullName","join","customerGroupName","customerGroup","format","split","RegExp","month","year","trimmedMonth","slice","trimmedYear","toObject","card","number","maxLength","max","creditCardType","info","lengths","unformattedValue","unformat","gaps","gapIndex","output","mapToInternalOrder","order","orderMeta","payments","orderId","customerCanBeCreated","payment","mapToInternalOrderPayment","baseAmount","token","orderToken","callbackUrl","providerId","detail","socialData","mapToInternalSocialDataList","hasDigitalItems","isDownloadable","isComplete","mapToStoreCredit","orderAmount","orderAmountAsInteger","find","isDefaultOrderPayment","step","helpText","instructions","returnUrl","socialDataObject","digitalItems","socialMedia","description","image","link","shareText","sharingLink","channelName","channel","channelCode","mapToInternalShippingOption","isSelected","module","price","cost","selected","isRecommended","transitTime","_cardExpiryFormatter","_cardNumberFormatter","transform","checkoutState","instrument","getBillingAddress","getCheckout","getCustomer","getOrder","paymentMethod","paymentMethods","getPaymentMethod","methodId","gatewayId","shippingAddress","_mapShippingAddress","getConsignments","shippingOption","getShippingOption","storeConfig","config","getStoreConfig","contextConfig","getContextConfig","instrumentMeta","instruments","getInstrumentsMeta","paymentMeta","getPaymentMethodsMeta","getOrderMeta","internalCustomer","authToken","paymentData","Boolean","instrumentId","formattedInstrument","formattedPayload","bigpay_token","isFormattedVaultedInstrument","getPaymentToken","vaultAccessToken","additionalAction","_transformPaymentMethod","quoteMeta","request","geoCountryCode","source","store","pick","storeProfile","transformWithHostedFormData","values","paymentMethodMeta","consignment","selectedShippingOption","_transformHostedInputValues","gateway","initializationData","BRAINTREE_VENMO","BRAINTREE_PAYPAL","ccCvv","cardCodeVerification","ccNumber","cardNumberVerification","hostedFormNonce","cardCode","ccExpiry","cardExpiry","ccName","cardName","cardNumber","isBopisEnabled","bopis","enabled","requiredAddress","isPickup","every","selectedPickupOption","getShippingAddress","_requestSender","submitPaymentInstrument","requestInitializationData","storeInstrumentFormData","currencyCode","paymentsUrl","shopperId","storeHash","vaultToken","defaultInstrument","Authorization","Accept","JSON","stringify","cardholder_name","cardholderName","expiry_month","expiryMonth","expiry_year","expiryYear","verification_value","verificationValue","billing_address","postal_code","country_code","first_name","last_name","state_or_province_code","provider_id","default_instrument","currency_code","HostedFieldType","mapToAutocompleteType","CardCode","CardExpiry","CardName","CardNumber","_form","_fieldTypes","_inputAggregator","_handleChange","targetInput","targetHostedInput","getInputs","input","_getAutocompleteElementId","getType","setValue","_inputs","_createInput","attach","appendChild","detach","parentElement","removeChild","autocomplete","tabIndex","style","position","opacity","zIndex","kebabCase","HostedFieldEventType","HostedInputEventType","_type","_placeholder","_accessibilityLabel","_autocomplete","_styles","_fontUrls","_eventListener","_eventPoster","_inputValidator","_paymentHandler","_storedCardHandler","_isTouched","_handleInput","_processChange","_handleBlur","_applyStyles","default","_validateForm","Blurred","fieldType","_handleFocus","focus","Focused","_handleValidate","_handleSubmit","preventDefault","Entered","_forceFocusToInput","activeElement","navigator","userAgent","toLowerCase","_input","setAttribute","setSelectionRange","ValidateRequested","SubmitRequested","handle","StoredCardRequested","_configureInput","getValue","isTouched","_loadFonts","parent","hostedInput","AttachSucceeded","_unloadFonts","_formatValue","_notifyChange","_value","Changed","backgroundColor","border","display","height","margin","outline","padding","width","placeholder","inputMode","pattern","styles","allowedStyles","color","fontFamily","fontSize","fontWeight","_fontLinks","querySelector","rel","head","undefined","getInputValues","validate","results","isValid","Validated","_previousValue","form","accessibilityLabel","fontUrls","eventListener","eventPoster","inputAggregator","inputValidator","paymentHandler","storedCardHandler","_formatter","_autocompleteFieldset","cardInfo","prevCardInfo","CardTypeChanged","cardType","unformattedPreviousValue","bin","isPotentiallyValid","substr","BinChanged","selectionEnd","formattedValue","_parentWindow","Array","frames","frame","DOMException","errors","flatMap","fieldErrors","_inputStorage","_paymentRequestSender","_paymentRequestTransformer","SubmitFailed","snakeCase","SubmitSucceeded","_isPaymentErrorResponse","_isErrorResponse","_storedCardRequestSender","fields","StoredCardFailed","Number","trim","StoredCardSucceeded","_cardInstrument","_completeSchema","_getCardCodeSchema","_getCardCodeVerificationSchema","_getCardExpirySchema","_getCardNameSchema","_getCardNumberSchema","_getCardNumberVerificationSchema","_configureCardValidator","requiredField","schemas","abortEarly","_isValidationErrorType","inner","innerError","path","discoverInfo","getTypeInfo","jcbInfo","visaInfo","updateCard","patterns","addCard","niceType","size","string","cvv","_mapFromInstrumentCardType","expirationDate","numbers","match","num","last4","_parentOrigin","create","cardInstrument","CardCodeVerification","CardNumberVerification","mapToAccessibilityLabel","_createNumberInput","_createExpiryInput","normalizeParentOrigin","getParentOrigin","_createPaymentHandler","_createStoredCardHandler","createRequestSender","_factory","_storage","initialize","containerId","_createFormContainer","_resetPageStyles","AttachRequested","field","getElementById","node","overflow","container","button","noValidate","initializeHostedInput","parentOrigin","poster","notifyInitializeError","AttachFailed"],"sourceRoot":""}