@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.
- package/dist/checkout-button.js +1 -1
- package/dist/checkout-button.umd.js +1 -1
- package/dist/checkout-sdk.js +1 -1
- package/dist/checkout-sdk.umd.js +1 -1
- package/dist/hosted-form-v2-iframe-content.js +1 -1
- package/dist/hosted-form-v2-iframe-content.js.map +1 -1
- package/dist/hosted-form-v2-iframe-content.umd.js +1 -1
- package/dist/hosted-form-v2-iframe-content.umd.js.map +1 -1
- package/dist/hosted-form-v2-iframe-host.js +1 -1
- package/dist/hosted-form-v2-iframe-host.umd.js +1 -1
- package/dist/hosted-form.js +1 -1
- package/dist/hosted-form.js.map +1 -1
- package/dist/hosted-form.umd.js +1 -1
- package/dist/hosted-form.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-form-v2-iframe-content.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/hosted-form-v2/src/common/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/utility/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/url/parse-url.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/url/append-www.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/utility/bind-decorator.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/iframe/is-iframe-event.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/iframe/iframe-event-listener.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-storage.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/get-hosted-input-storage.ts","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/hosted-form-v2/src/common/iframe/iframe-event-poster.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-field-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/http-request/content-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/payment/Instrument.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/utils/isOfflinePaymentMethodId.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/payment/manual-order-payment-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/payment/storefront-stored-card-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/card-expiry-formatter.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"card-validator\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"lodash\"","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/card-number-formatter.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/map-to-autocomplete-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-autocomplete-fieldset.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-field-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-card-expiry-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-card-number-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-aggregator.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/errors/invalid-hosted-form-value-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-manual-order-payment-handler.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-stored-card-handler.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"yup\"","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-validator.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-factory.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/map-to-accessibility-label.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/errors/invalid-hosted-form-config-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/initialize-hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/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};","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 '../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","/**\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 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 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 { appendWww, parseUrl } from '../url';\nimport { bindDecorator as bind } from '../utility';\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/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","enum HostedFieldType {\n CardCode = 'cardCode',\n CardExpiry = 'cardExpiry',\n CardName = 'cardName',\n CardNumber = 'cardNumber',\n Note = 'note',\n Hidden = 'hidden',\n}\n\nexport default HostedFieldType;\n","enum ContentType {\n Json = 'application/json',\n JsonV1 = 'application/vnd.bc.v1+json',\n}\n\nexport default ContentType;\n","export enum InstrumentType {\n Card = 'card',\n ManualPayment = 'manual_payment',\n}\n\nexport const manualPaymentMethod = 'bigcommerce.manual_payment';\n\nexport enum OfflinePaymentMethods {\n BankDeposit = 'bigcommerce_offline.bank_deposit',\n Cheque = 'bigcommerce_offline.cheque',\n Cod = 'bigcommerce_offline.cod',\n InStore = 'bigcommerce_offline.in_store',\n MoneyOrder = 'bigcommerce_offline.money_order',\n}\n\nexport enum OfflinePaymentMethodTypes {\n BankDeposit = 'bank_deposit',\n Cheque = 'cheque',\n Cod = 'cod',\n InStore = 'in_store',\n MoneyOrder = 'money_order',\n}\n\nexport const offlinePaymentMethodTypeMap: Record<OfflinePaymentMethods, OfflinePaymentMethodTypes> =\n {\n [OfflinePaymentMethods.BankDeposit]: OfflinePaymentMethodTypes.BankDeposit,\n [OfflinePaymentMethods.Cheque]: OfflinePaymentMethodTypes.Cheque,\n [OfflinePaymentMethods.Cod]: OfflinePaymentMethodTypes.Cod,\n [OfflinePaymentMethods.InStore]: OfflinePaymentMethodTypes.InStore,\n [OfflinePaymentMethods.MoneyOrder]: OfflinePaymentMethodTypes.MoneyOrder,\n };\n\ninterface CardInstrument {\n type: InstrumentType.Card;\n name: string;\n number: string;\n expires: {\n month: number;\n year: number;\n };\n verification_value?: string;\n}\n\ninterface ManualPaymentInstrument {\n type: InstrumentType.ManualPayment;\n note: string;\n}\n\ninterface OfflinePaymentInstrument {\n type: OfflinePaymentMethodTypes;\n}\n\nexport type Instrument = CardInstrument | ManualPaymentInstrument | OfflinePaymentInstrument;\n","import { OfflinePaymentMethods } from '../payment';\n\nexport const isOfflinePaymentMethodId = (id: string): id is OfflinePaymentMethods => {\n return Object.values(OfflinePaymentMethods).includes(id as OfflinePaymentMethods);\n};\n","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport ContentType from '../common/http-request/content-type';\nimport HostedFormManualOrderData from '../hosted-form-manual-order-data';\nimport { HostedInputValues } from '../iframe-content';\nimport { isOfflinePaymentMethodId } from '../utils';\n\nimport {\n Instrument,\n InstrumentType,\n manualPaymentMethod,\n offlinePaymentMethodTypeMap,\n} from './Instrument';\n\nexport class ManualOrderPaymentRequestSender {\n constructor(private _requestSender: RequestSender, private _paymentOrigin: string) {}\n\n async submitPayment(\n requestInitializationData: HostedFormManualOrderData,\n instrumentFormData: HostedInputValues,\n nonce?: string,\n ): Promise<Response<unknown>> {\n const { paymentMethodId, paymentSessionToken } = requestInitializationData;\n\n let instrument: Instrument;\n\n if (paymentMethodId === manualPaymentMethod) {\n instrument = {\n type: InstrumentType.ManualPayment,\n note: instrumentFormData.note ?? '',\n };\n } else if (isOfflinePaymentMethodId(paymentMethodId)) {\n instrument = {\n type: offlinePaymentMethodTypeMap[paymentMethodId],\n };\n } else {\n const [expiryMonth, expiryYear] = instrumentFormData.cardExpiry\n ? instrumentFormData.cardExpiry.split('/')\n : [];\n\n instrument = {\n type: InstrumentType.Card,\n name: instrumentFormData.cardName ?? '',\n number: instrumentFormData.cardNumber\n ? instrumentFormData.cardNumber.replace(/ /g, '')\n : '',\n expires: {\n month: Number(expiryMonth.trim()),\n year: Number(`20${expiryYear.trim()}`),\n },\n verification_value: instrumentFormData.cardCode ?? undefined,\n };\n }\n\n const options = {\n headers: {\n Accept: ContentType.Json,\n 'Content-Type': ContentType.Json,\n 'X-Payment-Session-Token': paymentSessionToken,\n },\n body: {\n instrument,\n payment_method_id: paymentMethodId,\n form_nonce: nonce ?? undefined,\n },\n };\n\n return this._requestSender.post<unknown>(`${this._paymentOrigin}/payments`, options);\n }\n}\n","import { RequestSender } from '@bigcommerce/request-sender';\n\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentForm,\n} from '../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","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\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","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 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 HostedFieldType from './hosted-field-type';\nimport HostedFormManualOrderData from './hosted-form-manual-order-data';\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 SubmitManualOrderRequested = 'HOSTED_FIELD:SUBMIT_MANUAL_ORDER_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.SubmitManualOrderRequested]: HostedFieldSubmitManualOrderRequestEvent;\n [HostedFieldEventType.ValidateRequested]: HostedFieldValidateRequestEvent;\n [HostedFieldEventType.StoredCardRequested]: HostedFieldStoredCardRequestEvent;\n}\n\nexport type HostedFieldEvent =\n | HostedFieldAttachEvent\n | HostedFieldSubmitRequestEvent\n | HostedFieldSubmitManualOrderRequestEvent\n | HostedFieldValidateRequestEvent\n | HostedFieldStoredCardRequestEvent;\n\nexport interface HostedFieldSubmitRequestEvent {\n type: HostedFieldEventType.SubmitRequested;\n payload: {\n data: HostedFormOrderData;\n fields: HostedFieldType[];\n };\n}\n\nexport interface HostedFieldAttachEvent {\n type: HostedFieldEventType.AttachRequested;\n payload: {\n accessibilityLabel?: string;\n fontUrls?: string[];\n placeholder?: string;\n styles?: HostedFieldStylesMap;\n origin?: string;\n type: HostedFieldType;\n };\n}\n\nexport interface HostedFieldSubmitManualOrderRequestEvent {\n type: HostedFieldEventType.SubmitManualOrderRequested;\n payload: {\n data: HostedFormManualOrderData;\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 { PaymentErrorData, PaymentErrorResponseBody } from '../errors';\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 SubmitManualOrderSucceeded = 'HOSTED_INPUT:SUBMIT_MANUAL_ORDER_SUCCEEDED',\n SubmitManualOrderFailed = 'HOSTED_INPUT:SUBMIT_MANUAL_ORDER_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.SubmitManualOrderSucceeded]: HostedInputSubmitManualOrderSuccessEvent;\n [HostedInputEventType.SubmitManualOrderFailed]: HostedInputSubmitManualOrderErrorEvent;\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 | HostedInputSubmitManualOrderSuccessEvent\n | HostedInputSubmitManualOrderErrorEvent\n | HostedInputValidateEvent\n | HostedInputStoredCardSucceededEvent\n | HostedInputStoredCardErrorEvent;\n\nexport interface HostedInputAttachSuccessEvent {\n type: HostedInputEventType.AttachSucceeded;\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}\nexport interface HostedInputSubmitManualOrderSuccessEvent {\n type: HostedInputEventType.SubmitManualOrderSucceeded;\n payload: {\n response: Response<unknown>;\n };\n}\n\nexport interface HostedInputSubmitManualOrderErrorEvent {\n type: HostedInputEventType.SubmitManualOrderFailed;\n payload: {\n error: PaymentErrorData;\n response?: Response<PaymentErrorResponseBody>;\n };\n}\n\nexport interface HostedInputValidateEvent {\n type: HostedInputEventType.Validated;\n payload: HostedInputValidateResults;\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 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","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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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 _manualOrderPaymentHandler: HostedInputManualOrderPaymentHandler,\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\n this._eventListener.addListener(\n HostedFieldEventType.SubmitManualOrderRequested,\n this._manualOrderPaymentHandler.handle,\n );\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 case 'note':\n case 'hidden':\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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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 manualOrderPaymentHandler: HostedInputManualOrderPaymentHandler,\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 manualOrderPaymentHandler,\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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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 manualOrderPaymentHandler: HostedInputManualOrderPaymentHandler,\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 manualOrderPaymentHandler,\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/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 { get, isString, snakeCase } from 'lodash';\n\nimport { IframeEventPoster } from '../common/iframe';\nimport { InvalidHostedFormValueError, PaymentErrorResponseBody } from '../errors';\nimport { HostedFieldSubmitManualOrderRequestEvent } from '../hosted-field-events';\nimport { ManualOrderPaymentRequestSender } from '../payment';\nimport { isOfflinePaymentMethodId } from '../utils';\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 HostedInputManualOrderPaymentHandler {\n constructor(\n private _inputAggregator: HostedInputAggregator,\n private _inputValidator: HostedInputValidator,\n private _inputStorage: HostedInputStorage,\n private _eventPoster: IframeEventPoster<HostedInputEvent>,\n private _manualOrderPaymentRequestSender: ManualOrderPaymentRequestSender,\n ) {}\n\n handle: (event: HostedFieldSubmitManualOrderRequestEvent) => Promise<void> = async (event) => {\n const {\n payload: { data },\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 const error = new InvalidHostedFormValueError(results.errors);\n\n return this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: {\n error: { code: snakeCase(error.name), message: error.message },\n },\n });\n }\n\n try {\n const response = await this._manualOrderPaymentRequestSender.submitPayment(\n data,\n values,\n this._inputStorage.getNonce(),\n );\n\n const isFailure =\n get(response.body, 'type') === 'failure' && isString(get(response.body, 'code'));\n const isError = get(response.body, 'type') === 'error';\n\n const isSuccessfulOfflineOrder =\n isOfflinePaymentMethodId(data.paymentMethodId) &&\n get(response.body, 'type') === 'continue' &&\n get(response.body, 'code') === 'complete_offline';\n const isSuccessfulAsyncOrder =\n get(response.body, 'type') === 'continue' &&\n get(response.body, 'code') === 'await_confirmation';\n const isSuccess =\n get(response.body, 'type') === 'success' ||\n isSuccessfulOfflineOrder ||\n isSuccessfulAsyncOrder;\n\n if (isFailure) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: {\n error: { code: get(response.body, 'code') },\n },\n });\n } else if (isError) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: {\n error: { code: get(response.body, 'type') },\n },\n });\n } else if (isSuccess) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderSucceeded,\n payload: {\n response,\n },\n });\n }\n } catch (error) {\n if (this._isPaymentErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: { error: error.body.errors[0], response: error },\n });\n } else if (this._isErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\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 { HostedFieldStoredCardRequestEvent } from '../hosted-field-events';\nimport { StorefrontStoredCardRequestSender } from '../payment';\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 { 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 cardExpiry: this._getCardExpirySchema(),\n cardName: this._getCardNameSchema(),\n cardNumber: this._getCardNumberSchema(),\n note: this._getNoteSchema(),\n };\n\n constructor() {\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 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\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 _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 _getNoteSchema(): StringSchema {\n return string()\n .required('Manual payment description is required')\n .max(128, 'Payment description cannot exceed 128 letters');\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 _isValidationErrorType(error: any): error is { name: string } {\n return 'name' in error && error.name !== 'ValidationError';\n }\n}\n","import { createRequestSender } from '@bigcommerce/request-sender';\n\nimport { IframeEventListener, IframeEventPoster } from '../common/iframe';\nimport { appendWww, parseUrl } from '../common/url';\nimport HostedFieldType from '../hosted-field-type';\nimport { ManualOrderPaymentRequestSender, StorefrontStoredCardRequestSender } from '../payment';\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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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, private _paymentOrigin: string) {}\n\n create(\n form: HTMLFormElement,\n type: HostedFieldType,\n styles: HostedInputStylesMap = {},\n fontUrls: string[] = [],\n placeholder = '',\n accessibilityLabel: string = mapToAccessibilityLabel(type),\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.CardExpiry) {\n return this._createExpiryInput(\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\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._createManualOrderPaymentHandler(),\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 ): 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(),\n this._createManualOrderPaymentHandler(),\n this._createStoredCardHandler(),\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 ): 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(),\n this._createManualOrderPaymentHandler(),\n this._createStoredCardHandler(),\n );\n }\n\n private _createManualOrderPaymentHandler(): HostedInputManualOrderPaymentHandler {\n return new HostedInputManualOrderPaymentHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(),\n getHostedInputStorage(),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new ManualOrderPaymentRequestSender(createRequestSender(), this._paymentOrigin),\n );\n }\n\n private _createStoredCardHandler(): HostedInputStoredCardHandler {\n return new HostedInputStoredCardHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(),\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 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 return 'Credit card number';\n\n case HostedFieldType.Note:\n return 'Payment note';\n\n case HostedFieldType.Hidden:\n return 'Hidden field';\n }\n}\n","import { StandardError } from '../common/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 { accessibilityLabel, fontUrls, placeholder, styles, origin, 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 );\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, paymentOrigin } = options;\n const initializer = new HostedInputInitializer(\n new HostedInputFactory(parentOrigin, paymentOrigin),\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","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","target","descriptor","bindMethodDecorator","decoratedTarget","getOwnPropertyNames","forEach","getOwnPropertyDescriptor","bindClassDecorator","_","method","boundMethod","bind","this","set","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","HostedFieldType","ContentType","InstrumentType","OfflinePaymentMethods","OfflinePaymentMethodTypes","offlinePaymentMethodTypeMap","BankDeposit","Cheque","Cod","InStore","MoneyOrder","isOfflinePaymentMethodId","id","values","includes","_requestSender","_paymentOrigin","submitPayment","requestInitializationData","instrumentFormData","paymentMethodId","paymentSessionToken","instrument","ManualPayment","note","cardExpiry","split","expiryMonth","expiryYear","Card","cardName","number","cardNumber","expires","month","Number","trim","year","verification_value","cardCode","undefined","headers","Accept","Json","body","payment_method_id","form_nonce","submitPaymentInstrument","storeInstrumentFormData","providerId","currencyCode","paymentsUrl","shopperId","storeHash","vaultToken","billingAddress","defaultInstrument","Authorization","JSON","stringify","cardholder_name","cardholderName","expiry_month","expiry_year","verificationValue","billing_address","email","address1","address2","city","postal_code","postalCode","country_code","countryCode","company","first_name","firstName","last_name","lastName","phone","stateOrProvinceCode","state_or_province_code","provider_id","default_instrument","currency_code","format","RegExp","trimmedMonth","slice","trimmedYear","length","toObject","card","maxLength","max","creditCardType","info","lengths","unformattedValue","unformat","gaps","gapIndex","reduce","output","join","mapToAutocompleteType","CardCode","CardExpiry","CardName","CardNumber","_form","_fieldTypes","_inputAggregator","_handleChange","targetInput","targetHostedInput","getInputs","find","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","_manualOrderPaymentHandler","_storedCardHandler","_isTouched","_handleInput","_processChange","_handleBlur","_applyStyles","default","_validateForm","Blurred","payload","fieldType","_handleFocus","focus","Focused","_handleValidate","_handleSubmit","preventDefault","Entered","_forceFocusToInput","activeElement","navigator","userAgent","toLowerCase","_input","setAttribute","setSelectionRange","ValidateRequested","SubmitManualOrderRequested","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","keys","_fontLinks","querySelector","link","rel","head","getInputValues","validate","results","isValid","error","Validated","_previousValue","form","accessibilityLabel","fontUrls","eventListener","eventPoster","inputAggregator","inputValidator","manualOrderPaymentHandler","storedCardHandler","_formatter","_autocompleteFieldset","cardInfo","prevCardInfo","CardTypeChanged","cardType","unformattedPreviousValue","bin","isPotentiallyValid","substr","BinChanged","selectionEnd","formattedValue","_parentWindow","Array","frames","frame","DOMException","errors","flatMap","fieldErrors","_inputStorage","_manualOrderPaymentRequestSender","SubmitManualOrderFailed","code","snakeCase","response","isFailure","isString","isError","isSuccessfulOfflineOrder","isSuccessfulAsyncOrder","isSuccess","SubmitManualOrderSucceeded","_isPaymentErrorResponse","_isErrorResponse","_storedCardRequestSender","fields","StoredCardFailed","StoredCardSucceeded","_completeSchema","_getCardCodeSchema","_getCardExpirySchema","_getCardNameSchema","_getCardNumberSchema","_getNoteSchema","_configureCardValidator","requiredField","schemas","abortEarly","_isValidationErrorType","inner","innerError","path","discoverInfo","getTypeInfo","visaInfo","updateCard","patterns","addCard","niceType","size","string","required","cvv","expirationDate","_parentOrigin","create","Note","Hidden","mapToAccessibilityLabel","_createNumberInput","_createExpiryInput","normalizeParentOrigin","getParentOrigin","_createManualOrderPaymentHandler","_createStoredCardHandler","ManualOrderPaymentRequestSender","createRequestSender","_factory","_storage","initialize","containerId","_createFormContainer","_resetPageStyles","AttachRequested","field","getElementById","node","overflow","container","button","noValidate","initializeHostedInput","parentOrigin","paymentOrigin","poster","notifyInitializeError","AttachFailed"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"hosted-form-v2-iframe-content.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/hosted-form-v2/src/common/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/utility/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/url/parse-url.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/url/append-www.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/utility/bind-decorator.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/iframe/is-iframe-event.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/iframe/iframe-event-listener.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-storage.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/get-hosted-input-storage.ts","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/hosted-form-v2/src/common/iframe/iframe-event-poster.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-field-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/http-request/content-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/payment/Instrument.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/utils/isOfflinePaymentMethodId.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/payment/manual-order-payment-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/payment/storefront-stored-card-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/card-expiry-formatter.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"card-validator\"","webpack://@bigcommerce/checkout-sdk/external commonjs \"lodash\"","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/card-number-formatter.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/map-to-autocomplete-type.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-autocomplete-fieldset.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-field-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-events.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-card-expiry-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-card-number-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-aggregator.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/errors/invalid-hosted-form-value-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-manual-order-payment-handler.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-stored-card-handler.ts","webpack://@bigcommerce/checkout-sdk/external commonjs \"yup\"","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-validator.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-factory.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/map-to-accessibility-label.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/errors/invalid-hosted-form-config-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/hosted-input-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/iframe-content/initialize-hosted-input.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/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};","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 '../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","/**\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 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 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 { appendWww, parseUrl } from '../url';\nimport { bindDecorator as bind } from '../utility';\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/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","enum HostedFieldType {\n CardCode = 'cardCode',\n CardExpiry = 'cardExpiry',\n CardName = 'cardName',\n CardNumber = 'cardNumber',\n Note = 'note',\n Hidden = 'hidden',\n}\n\nexport default HostedFieldType;\n","enum ContentType {\n Json = 'application/json',\n JsonV1 = 'application/vnd.bc.v1+json',\n}\n\nexport default ContentType;\n","export enum InstrumentType {\n Card = 'card',\n ManualPayment = 'manual_payment',\n}\n\nexport const manualPaymentMethod = 'bigcommerce.manual_payment';\n\nexport enum OfflinePaymentMethods {\n BankDeposit = 'bigcommerce_offline.bank_deposit',\n Cheque = 'bigcommerce_offline.cheque',\n Cod = 'bigcommerce_offline.cod',\n InStore = 'bigcommerce_offline.in_store',\n MoneyOrder = 'bigcommerce_offline.money_order',\n}\n\nexport enum OfflinePaymentMethodTypes {\n BankDeposit = 'bank_deposit',\n Cheque = 'cheque',\n Cod = 'cod',\n InStore = 'in_store',\n MoneyOrder = 'money_order',\n}\n\nexport const offlinePaymentMethodTypeMap: Record<OfflinePaymentMethods, OfflinePaymentMethodTypes> =\n {\n [OfflinePaymentMethods.BankDeposit]: OfflinePaymentMethodTypes.BankDeposit,\n [OfflinePaymentMethods.Cheque]: OfflinePaymentMethodTypes.Cheque,\n [OfflinePaymentMethods.Cod]: OfflinePaymentMethodTypes.Cod,\n [OfflinePaymentMethods.InStore]: OfflinePaymentMethodTypes.InStore,\n [OfflinePaymentMethods.MoneyOrder]: OfflinePaymentMethodTypes.MoneyOrder,\n };\n\ninterface CardInstrument {\n type: InstrumentType.Card;\n name: string;\n number: string;\n expires: {\n month: number;\n year: number;\n };\n verification_value?: string;\n}\n\ninterface ManualPaymentInstrument {\n type: InstrumentType.ManualPayment;\n note: string;\n}\n\ninterface OfflinePaymentInstrument {\n type: OfflinePaymentMethodTypes;\n}\n\nexport type Instrument = CardInstrument | ManualPaymentInstrument | OfflinePaymentInstrument;\n","import { OfflinePaymentMethods } from '../payment';\n\nexport const isOfflinePaymentMethodId = (id: string): id is OfflinePaymentMethods => {\n return Object.values(OfflinePaymentMethods).includes(id as OfflinePaymentMethods);\n};\n","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport ContentType from '../common/http-request/content-type';\nimport HostedFormManualOrderData from '../hosted-form-manual-order-data';\nimport { HostedInputValues } from '../iframe-content';\nimport { isOfflinePaymentMethodId } from '../utils';\n\nimport {\n Instrument,\n InstrumentType,\n manualPaymentMethod,\n offlinePaymentMethodTypeMap,\n} from './Instrument';\n\nexport class ManualOrderPaymentRequestSender {\n constructor(private _requestSender: RequestSender, private _paymentOrigin: string) {}\n\n async submitPayment(\n requestInitializationData: HostedFormManualOrderData,\n instrumentFormData: HostedInputValues,\n nonce?: string,\n ): Promise<Response<unknown>> {\n const { paymentMethodId, paymentSessionToken } = requestInitializationData;\n\n let instrument: Instrument;\n\n if (paymentMethodId === manualPaymentMethod) {\n instrument = {\n type: InstrumentType.ManualPayment,\n note: instrumentFormData.note ?? '',\n };\n } else if (isOfflinePaymentMethodId(paymentMethodId)) {\n instrument = {\n type: offlinePaymentMethodTypeMap[paymentMethodId],\n };\n } else {\n const [expiryMonth, expiryYear] = instrumentFormData.cardExpiry\n ? instrumentFormData.cardExpiry.split('/')\n : [];\n\n instrument = {\n type: InstrumentType.Card,\n name: instrumentFormData.cardName ?? '',\n number: instrumentFormData.cardNumber\n ? instrumentFormData.cardNumber.replace(/ /g, '')\n : '',\n expires: {\n month: Number(expiryMonth.trim()),\n year: Number(`20${expiryYear.trim()}`),\n },\n verification_value: instrumentFormData.cardCode ?? undefined,\n };\n }\n\n const options = {\n headers: {\n Accept: ContentType.Json,\n 'Content-Type': ContentType.Json,\n 'X-Payment-Session-Token': paymentSessionToken,\n },\n body: {\n instrument,\n payment_method_id: paymentMethodId,\n form_nonce: nonce ?? undefined,\n },\n };\n\n return this._requestSender.post<unknown>(`${this._paymentOrigin}/payments`, options);\n }\n}\n","import { RequestSender } from '@bigcommerce/request-sender';\n\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentForm,\n} from '../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","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\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","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 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 HostedFieldType from './hosted-field-type';\nimport HostedFormManualOrderData from './hosted-form-manual-order-data';\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 SubmitManualOrderRequested = 'HOSTED_FIELD:SUBMIT_MANUAL_ORDER_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.SubmitManualOrderRequested]: HostedFieldSubmitManualOrderRequestEvent;\n [HostedFieldEventType.ValidateRequested]: HostedFieldValidateRequestEvent;\n [HostedFieldEventType.StoredCardRequested]: HostedFieldStoredCardRequestEvent;\n}\n\nexport type HostedFieldEvent =\n | HostedFieldAttachEvent\n | HostedFieldSubmitRequestEvent\n | HostedFieldSubmitManualOrderRequestEvent\n | HostedFieldValidateRequestEvent\n | HostedFieldStoredCardRequestEvent;\n\nexport interface HostedFieldSubmitRequestEvent {\n type: HostedFieldEventType.SubmitRequested;\n payload: {\n data: HostedFormOrderData;\n fields: HostedFieldType[];\n };\n}\n\nexport interface HostedFieldAttachEvent {\n type: HostedFieldEventType.AttachRequested;\n payload: {\n accessibilityLabel?: string;\n fontUrls?: string[];\n placeholder?: string;\n styles?: HostedFieldStylesMap;\n origin?: string;\n type: HostedFieldType;\n };\n}\n\nexport interface HostedFieldSubmitManualOrderRequestEvent {\n type: HostedFieldEventType.SubmitManualOrderRequested;\n payload: {\n data: HostedFormManualOrderData;\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 { PaymentErrorData, PaymentErrorResponseBody } from '../errors';\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 SubmitManualOrderSucceeded = 'HOSTED_INPUT:SUBMIT_MANUAL_ORDER_SUCCEEDED',\n SubmitManualOrderFailed = 'HOSTED_INPUT:SUBMIT_MANUAL_ORDER_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.SubmitManualOrderSucceeded]: HostedInputSubmitManualOrderSuccessEvent;\n [HostedInputEventType.SubmitManualOrderFailed]: HostedInputSubmitManualOrderErrorEvent;\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 | HostedInputSubmitManualOrderSuccessEvent\n | HostedInputSubmitManualOrderErrorEvent\n | HostedInputValidateEvent\n | HostedInputStoredCardSucceededEvent\n | HostedInputStoredCardErrorEvent;\n\nexport interface HostedInputAttachSuccessEvent {\n type: HostedInputEventType.AttachSucceeded;\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}\nexport interface HostedInputSubmitManualOrderSuccessEvent {\n type: HostedInputEventType.SubmitManualOrderSucceeded;\n payload: {\n response: Response<unknown>;\n };\n}\n\nexport interface HostedInputSubmitManualOrderErrorEvent {\n type: HostedInputEventType.SubmitManualOrderFailed;\n payload: {\n error: PaymentErrorData;\n response?: Response<PaymentErrorResponseBody>;\n };\n}\n\nexport interface HostedInputValidateEvent {\n type: HostedInputEventType.Validated;\n payload: HostedInputValidateResults;\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 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","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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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 _manualOrderPaymentHandler: HostedInputManualOrderPaymentHandler,\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\n this._eventListener.addListener(\n HostedFieldEventType.SubmitManualOrderRequested,\n this._manualOrderPaymentHandler.handle,\n );\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 case 'note':\n case 'hidden':\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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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 manualOrderPaymentHandler: HostedInputManualOrderPaymentHandler,\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 manualOrderPaymentHandler,\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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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 manualOrderPaymentHandler: HostedInputManualOrderPaymentHandler,\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 manualOrderPaymentHandler,\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/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 { get, isString, snakeCase } from 'lodash';\n\nimport { IframeEventPoster } from '../common/iframe';\nimport { InvalidHostedFormValueError, PaymentErrorResponseBody } from '../errors';\nimport { HostedFieldSubmitManualOrderRequestEvent } from '../hosted-field-events';\nimport { ManualOrderPaymentRequestSender } from '../payment';\nimport { isOfflinePaymentMethodId } from '../utils';\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 HostedInputManualOrderPaymentHandler {\n constructor(\n private _inputAggregator: HostedInputAggregator,\n private _inputValidator: HostedInputValidator,\n private _inputStorage: HostedInputStorage,\n private _eventPoster: IframeEventPoster<HostedInputEvent>,\n private _manualOrderPaymentRequestSender: ManualOrderPaymentRequestSender,\n ) {}\n\n handle: (event: HostedFieldSubmitManualOrderRequestEvent) => Promise<void> = async (event) => {\n const {\n payload: { data },\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 const error = new InvalidHostedFormValueError(results.errors);\n\n return this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: {\n error: { code: snakeCase(error.name), message: error.message },\n },\n });\n }\n\n try {\n const response = await this._manualOrderPaymentRequestSender.submitPayment(\n data,\n values,\n this._inputStorage.getNonce(),\n );\n\n const isFailure =\n get(response.body, 'type') === 'failure' && isString(get(response.body, 'code'));\n const isError = get(response.body, 'type') === 'error';\n\n const isSuccessfulOfflineOrder =\n isOfflinePaymentMethodId(data.paymentMethodId) &&\n get(response.body, 'type') === 'continue' &&\n get(response.body, 'code') === 'complete_offline';\n const isSuccessfulAsyncOrder =\n get(response.body, 'type') === 'continue' &&\n get(response.body, 'code') === 'await_confirmation';\n const isSuccess =\n get(response.body, 'type') === 'success' ||\n isSuccessfulOfflineOrder ||\n isSuccessfulAsyncOrder;\n\n if (isFailure) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: {\n error: { code: get(response.body, 'code') },\n },\n });\n } else if (isError) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: {\n error: { code: get(response.body, 'type') },\n },\n });\n } else if (isSuccess) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderSucceeded,\n payload: {\n response,\n },\n });\n }\n } catch (error) {\n if (this._isPaymentErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\n payload: { error: error.body.errors[0], response: error },\n });\n } else if (this._isErrorResponse(error)) {\n this._eventPoster.post({\n type: HostedInputEventType.SubmitManualOrderFailed,\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 { HostedFieldStoredCardRequestEvent } from '../hosted-field-events';\nimport { StorefrontStoredCardRequestSender } from '../payment';\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 { 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 cardExpiry: this._getCardExpirySchema(),\n cardName: this._getCardNameSchema(),\n cardNumber: this._getCardNumberSchema(),\n note: this._getNoteSchema(),\n };\n\n constructor() {\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 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\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 _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 _getNoteSchema(): StringSchema {\n return string()\n .required('Manual payment description is required')\n .max(128, 'Payment description cannot exceed 128 letters');\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 _isValidationErrorType(error: any): error is { name: string } {\n return 'name' in error && error.name !== 'ValidationError';\n }\n}\n","import { createRequestSender } from '@bigcommerce/request-sender';\n\nimport { IframeEventListener, IframeEventPoster } from '../common/iframe';\nimport { appendWww, parseUrl } from '../common/url';\nimport HostedFieldType from '../hosted-field-type';\nimport { ManualOrderPaymentRequestSender, StorefrontStoredCardRequestSender } from '../payment';\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 HostedInputManualOrderPaymentHandler from './hosted-input-manual-order-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, private _paymentOrigin: string) {}\n\n create(\n form: HTMLFormElement,\n type: HostedFieldType,\n styles: HostedInputStylesMap = {},\n fontUrls: string[] = [],\n placeholder = '',\n accessibilityLabel: string = mapToAccessibilityLabel(type),\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.CardExpiry) {\n return this._createExpiryInput(\n form,\n styles,\n fontUrls,\n placeholder,\n accessibilityLabel,\n autocomplete,\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._createManualOrderPaymentHandler(),\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 ): 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(),\n this._createManualOrderPaymentHandler(),\n this._createStoredCardHandler(),\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 ): 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(),\n this._createManualOrderPaymentHandler(),\n this._createStoredCardHandler(),\n );\n }\n\n private _createManualOrderPaymentHandler(): HostedInputManualOrderPaymentHandler {\n return new HostedInputManualOrderPaymentHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(),\n getHostedInputStorage(),\n new IframeEventPoster(this._parentOrigin, window.parent),\n new ManualOrderPaymentRequestSender(createRequestSender(), this._paymentOrigin),\n );\n }\n\n private _createStoredCardHandler(): HostedInputStoredCardHandler {\n return new HostedInputStoredCardHandler(\n new HostedInputAggregator(window.parent),\n new HostedInputValidator(),\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 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 return 'Credit card number';\n\n case HostedFieldType.Note:\n return 'Payment note';\n\n case HostedFieldType.Hidden:\n return 'Hidden field';\n }\n}\n","import { StandardError } from '../common/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 { accessibilityLabel, fontUrls, placeholder, styles, origin, 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 );\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, paymentOrigin } = options;\n const initializer = new HostedInputInitializer(\n new HostedInputFactory(parentOrigin, paymentOrigin),\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","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","target","descriptor","bindMethodDecorator","decoratedTarget","getOwnPropertyNames","forEach","getOwnPropertyDescriptor","bindClassDecorator","_","method","boundMethod","bind","this","set","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","HostedFieldType","ContentType","InstrumentType","OfflinePaymentMethods","OfflinePaymentMethodTypes","offlinePaymentMethodTypeMap","BankDeposit","Cheque","Cod","InStore","MoneyOrder","isOfflinePaymentMethodId","id","values","includes","_requestSender","_paymentOrigin","submitPayment","requestInitializationData","instrumentFormData","paymentMethodId","paymentSessionToken","instrument","ManualPayment","note","cardExpiry","split","expiryMonth","expiryYear","Card","cardName","number","cardNumber","expires","month","Number","trim","year","verification_value","cardCode","undefined","headers","Accept","Json","body","payment_method_id","form_nonce","submitPaymentInstrument","storeInstrumentFormData","providerId","currencyCode","paymentsUrl","shopperId","storeHash","vaultToken","billingAddress","defaultInstrument","Authorization","JSON","stringify","cardholder_name","cardholderName","expiry_month","expiry_year","verificationValue","billing_address","email","address1","address2","city","postal_code","postalCode","country_code","countryCode","company","first_name","firstName","last_name","lastName","phone","stateOrProvinceCode","state_or_province_code","provider_id","default_instrument","currency_code","format","RegExp","trimmedMonth","slice","trimmedYear","length","toObject","card","maxLength","max","creditCardType","info","lengths","unformattedValue","unformat","gaps","gapIndex","reduce","output","join","mapToAutocompleteType","CardCode","CardExpiry","CardName","CardNumber","_form","_fieldTypes","_inputAggregator","_handleChange","targetInput","targetHostedInput","getInputs","find","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","_manualOrderPaymentHandler","_storedCardHandler","_isTouched","_handleInput","_processChange","_handleBlur","_applyStyles","default","_validateForm","Blurred","payload","fieldType","_handleFocus","focus","Focused","_handleValidate","_handleSubmit","preventDefault","Entered","_forceFocusToInput","activeElement","navigator","userAgent","toLowerCase","_input","setAttribute","setSelectionRange","ValidateRequested","SubmitManualOrderRequested","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","keys","_fontLinks","querySelector","link","rel","head","getInputValues","validate","results","isValid","error","Validated","_previousValue","form","accessibilityLabel","fontUrls","eventListener","eventPoster","inputAggregator","inputValidator","manualOrderPaymentHandler","storedCardHandler","_formatter","_autocompleteFieldset","cardInfo","prevCardInfo","CardTypeChanged","cardType","unformattedPreviousValue","bin","isPotentiallyValid","substr","BinChanged","selectionEnd","formattedValue","_parentWindow","Array","frames","frame","DOMException","errors","flatMap","fieldErrors","_inputStorage","_manualOrderPaymentRequestSender","SubmitManualOrderFailed","code","snakeCase","response","isFailure","isString","isError","isSuccessfulOfflineOrder","isSuccessfulAsyncOrder","isSuccess","SubmitManualOrderSucceeded","_isPaymentErrorResponse","_isErrorResponse","_storedCardRequestSender","fields","StoredCardFailed","StoredCardSucceeded","_completeSchema","_getCardCodeSchema","_getCardExpirySchema","_getCardNameSchema","_getCardNumberSchema","_getNoteSchema","_configureCardValidator","requiredField","schemas","abortEarly","_isValidationErrorType","inner","innerError","path","discoverInfo","getTypeInfo","visaInfo","updateCard","patterns","addCard","niceType","size","string","required","cvv","expirationDate","numbers","match","num","_parentOrigin","create","Note","Hidden","mapToAccessibilityLabel","_createNumberInput","_createExpiryInput","normalizeParentOrigin","getParentOrigin","_createManualOrderPaymentHandler","_createStoredCardHandler","ManualOrderPaymentRequestSender","createRequestSender","_factory","_storage","initialize","containerId","_createFormContainer","_resetPageStyles","AttachRequested","field","getElementById","node","overflow","container","button","noValidate","initializeHostedInput","parentOrigin","paymentOrigin","poster","notifyInitializeError","AttachFailed"],"sourceRoot":""}
|