@bigcommerce/checkout-sdk 1.698.1 → 1.699.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-form-v2-iframe-host.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/external commonjs \"lodash\"","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/common/cancellable-promise/cancellable-promise.ts","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/dom/errors/unexpected-detachment-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/dom/detachment-observer.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/dom/mutation-observer.ts","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/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/iframe/is-iframe-event.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/iframe/iframe-event-poster.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/iframe-event-listener.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/errors/request-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/errors/map-from-payment-error-response.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/errors/invalid-hosted-form-error.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/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/hosted-field.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-form.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-form-factory.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/errors/not-initialized-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-form-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/create-hosted-form-service.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};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","export default class CancellablePromise<T> {\n promise: Promise<T>;\n cancel!: (reason?: any) => void;\n\n constructor(promise: Promise<T>) {\n const cancellable = new Promise<T>((_, reject) => {\n this.cancel = reject;\n });\n\n this.promise = Promise.race([promise, cancellable]);\n }\n}\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 '../../errors';\n\nexport default class UnexpectedDetachmentError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'Unable to proceed because the required element is unexpectedly detached from the page.',\n );\n\n this.name = 'UnexpectedDetachmentError';\n this.type = 'unexpected_detachment';\n }\n}\n","import { CancellablePromise } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { UnexpectedDetachmentError } from './errors';\nimport { MutationObserverFactory } from './mutation-observer';\n\nexport default class DetachmentObserver {\n constructor(private _mutationObserver: MutationObserverFactory) {}\n\n async ensurePresence<T>(targets: Node[], promise: Promise<T>): Promise<T> {\n const cancellable = new CancellablePromise(promise);\n\n const observer = this._mutationObserver.create((mutationsList) => {\n mutationsList.forEach((mutation) => {\n const removedTargets = Array.from(mutation.removedNodes).filter((node) =>\n targets.some((target) => node === target || node.contains(target)),\n );\n\n if (removedTargets.length === 0) {\n return;\n }\n\n cancellable.cancel(new UnexpectedDetachmentError());\n });\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n try {\n const output = await cancellable.promise;\n\n observer.disconnect();\n\n return output;\n } catch (error) {\n observer.disconnect();\n\n throw error;\n }\n }\n}\n","export interface MutationObeserverCreator {\n prototype: MutationObserver;\n new (callback: MutationCallback): MutationObserver;\n}\n\nexport interface MutationObserverWindow extends Window {\n MutationObserver: MutationObeserverCreator;\n}\n\nexport class MutationObserverFactory {\n constructor(private _window: MutationObserverWindow = window as MutationObserverWindow) {}\n\n create(callback: MutationCallback): MutationObserver {\n return new this._window.MutationObserver(callback);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs/operators\");","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 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 { 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","/**\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 { 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","import parseUrl from './parse-url';\nimport Url from './url';\n\nexport default function appendWww(url: Url): Url {\n return parseUrl(\n url.hostname.indexOf('www') === 0\n ? url.href\n : url.href.replace(url.hostname, `www.${url.hostname}`),\n );\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport StandardError from './standard-error';\n\nconst DEFAULT_RESPONSE = {\n body: {},\n headers: {},\n status: 0,\n};\n\n/**\n * Throw this error if we are unable to make a request to the server. It wraps\n * any server response into a JS error object.\n */\nexport default class RequestError<TBody = any> extends StandardError {\n body: TBody | {};\n headers: { [key: string]: any };\n errors: Array<{ code: string; message?: string }>;\n status: number;\n\n constructor(\n response?: Response<TBody | {}>,\n {\n message,\n errors,\n }: {\n message?: string;\n errors?: Array<{ code: string; message?: string }>;\n } = {},\n ) {\n const { body, headers, status } = response || DEFAULT_RESPONSE;\n\n super(message || 'An unexpected error has occurred.');\n\n this.name = 'RequestError';\n this.type = 'request';\n this.body = body;\n this.headers = headers;\n this.status = status;\n this.errors = errors || [];\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport { PaymentErrorResponseBody } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport RequestError from './request-error';\n\nexport default function mapFromPaymentErrorResponse(\n response: Response<PaymentErrorResponseBody>,\n message?: string,\n): RequestError {\n const { body } = response;\n const { errors = [] } = body;\n\n return new RequestError(response, {\n message: joinErrors(errors) || message,\n errors,\n });\n}\n\nfunction joinErrors(errors: Array<{ code: string; message?: string }>): string | undefined {\n if (!Array.isArray(errors)) {\n return;\n }\n\n return errors\n .reduce((result: string[], error) => {\n if (error && error.message) {\n return [...result, error.message];\n }\n\n return result;\n }, [])\n .join(' ');\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 { StandardError } from '../common/errors';\n\nexport default class InvalidHostedFormError extends StandardError {\n constructor(message?: string) {\n super(message || 'Unable to proceed due to an unknown error with the hosted payment form.');\n\n this.name = 'InvalidHostedFormError';\n this.type = 'invalid_hosted_form';\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 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';\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}\n\nexport interface HostedFieldEventMap {\n [HostedFieldEventType.AttachRequested]: HostedFieldAttachEvent;\n [HostedFieldEventType.SubmitManualOrderRequested]: HostedFieldSubmitManualOrderRequestEvent;\n [HostedFieldEventType.ValidateRequested]: HostedFieldValidateRequestEvent;\n}\n\nexport type HostedFieldEvent =\n | HostedFieldAttachEvent\n | HostedFieldSubmitRequestEvent\n | HostedFieldSubmitManualOrderRequestEvent\n | HostedFieldValidateRequestEvent;\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","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}\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\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","import { values } from 'lodash';\nimport { fromEvent } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { DetachmentObserver } from './common/dom';\nimport { mapFromPaymentErrorResponse } from './common/errors';\nimport { IframeEventListener, IframeEventPoster } from './common/iframe';\nimport { parseUrl } from './common/url';\nimport {\n InvalidHostedFormConfigError,\n InvalidHostedFormError,\n InvalidHostedFormValueError,\n} from './errors';\nimport { HostedFieldEvent, HostedFieldEventType } from './hosted-field-events';\nimport 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 HostedInputEventMap,\n HostedInputEventType,\n HostedInputSubmitErrorEvent,\n HostedInputSubmitManualOrderErrorEvent,\n HostedInputSubmitManualOrderSuccessEvent,\n HostedInputSubmitSuccessEvent,\n HostedInputValidateEvent,\n} from './iframe-content';\n\nexport const RETRY_INTERVAL = 60 * 1000;\nexport const LAST_RETRY_KEY = 'lastRetry';\n\nexport default class HostedField {\n private _iframe: HTMLIFrameElement;\n\n constructor(\n private _type: HostedFieldType,\n private _containerId: string,\n private _orderId: number,\n private _placeholder: string,\n private _accessibilityLabel: string,\n private _styles: HostedFieldStylesMap,\n private _eventPoster: IframeEventPoster<HostedFieldEvent>,\n private _eventListener: IframeEventListener<HostedInputEventMap>,\n private _detachmentObserver: DetachmentObserver,\n ) {\n this._iframe = document.createElement('iframe');\n\n this._iframe.src = `/admin/payments/${this._orderId}/hosted-form-field?version=${LIBRARY_VERSION}`;\n this._iframe.style.border = 'none';\n this._iframe.style.height = '100%';\n this._iframe.style.overflow = 'hidden';\n this._iframe.style.width = '100%';\n }\n\n getType(): HostedFieldType {\n return this._type;\n }\n\n async attach(): Promise<void> {\n const container = document.getElementById(this._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 container.appendChild(this._iframe);\n this._eventListener.listen();\n\n const promise = fromEvent(this._iframe, 'load')\n .pipe(\n switchMap(async ({ target }) => {\n const contentWindow = target && (target as HTMLIFrameElement).contentWindow;\n\n if (!contentWindow) {\n throw new Error('The content window of the iframe cannot be accessed.');\n }\n\n this._eventPoster.setTarget(contentWindow);\n\n await this._eventPoster.post(\n {\n type: HostedFieldEventType.AttachRequested,\n payload: {\n accessibilityLabel: this._accessibilityLabel,\n fontUrls: this._getFontUrls(),\n placeholder: this._placeholder,\n styles: this._styles,\n origin: document.location.origin,\n type: this._type,\n },\n },\n {\n successType: HostedInputEventType.AttachSucceeded,\n errorType: HostedInputEventType.AttachFailed,\n },\n );\n }),\n take(1),\n )\n .toPromise();\n\n await this._detachmentObserver.ensurePresence([this._iframe], promise);\n }\n\n detach(): void {\n if (!this._iframe.parentElement) {\n return;\n }\n\n this._iframe.parentElement.removeChild(this._iframe);\n this._eventListener.stopListen();\n }\n\n async submitForm(\n fields: HostedFieldType[],\n data: HostedFormOrderData,\n ): Promise<HostedInputSubmitSuccessEvent> {\n try {\n const promise = this._eventPoster.post<HostedInputSubmitSuccessEvent>(\n {\n type: HostedFieldEventType.SubmitRequested,\n payload: { fields, data },\n },\n {\n successType: HostedInputEventType.SubmitSucceeded,\n errorType: HostedInputEventType.SubmitFailed,\n },\n );\n\n return await this._detachmentObserver.ensurePresence([this._iframe], promise);\n } catch (event) {\n if (this._isSubmitErrorEvent(event)) {\n if (event.payload.error.code === 'hosted_form_error') {\n throw new InvalidHostedFormError(event.payload.error.message);\n }\n\n if (event.payload.response) {\n throw mapFromPaymentErrorResponse(event.payload.response);\n }\n\n throw new Error(event.payload.error.message);\n }\n\n throw event;\n }\n }\n\n async submitManualOrderForm(\n data: HostedFormManualOrderData,\n ): Promise<HostedInputSubmitManualOrderSuccessEvent> {\n try {\n const promise = this._eventPoster.post<HostedInputSubmitManualOrderSuccessEvent>(\n {\n type: HostedFieldEventType.SubmitManualOrderRequested,\n payload: { data },\n },\n {\n successType: HostedInputEventType.SubmitManualOrderSucceeded,\n errorType: HostedInputEventType.SubmitManualOrderFailed,\n },\n );\n\n return await this._detachmentObserver.ensurePresence([this._iframe], promise);\n } catch (event) {\n if (this._isSubmitManualOrderErrorEvent(event)) {\n if (event.payload.error.code === 'hosted_form_error') {\n throw new InvalidHostedFormError(event.payload.error.message);\n }\n\n if (event.payload.error.message) {\n throw new Error(event.payload.error.message);\n }\n\n throw new Error(event.payload.error.code);\n }\n\n throw event;\n }\n }\n\n async validateForm(): Promise<void> {\n const promise = this._eventPoster.post<HostedInputValidateEvent>(\n {\n type: HostedFieldEventType.ValidateRequested,\n },\n {\n successType: HostedInputEventType.Validated,\n },\n );\n\n const { payload } = await this._detachmentObserver.ensurePresence([this._iframe], promise);\n\n if (!payload.isValid) {\n throw new InvalidHostedFormValueError(payload.errors);\n }\n }\n\n private _getFontUrls(): string[] {\n const hostname = 'fonts.googleapis.com';\n const links = document.querySelectorAll(`link[href*='${hostname}'][rel='stylesheet']`);\n\n return Array.prototype.slice\n .call(links)\n .filter((link) => parseUrl(link.href).hostname === hostname)\n .filter((link) =>\n values(this._styles)\n .map((style) => style && style.fontFamily)\n .filter((family): family is string => typeof family === 'string')\n .some((family) =>\n family\n .split(/,\\s/)\n .some((name) => link.href.indexOf(name.replace(' ', '+')) !== -1),\n ),\n )\n .map((link) => link.href);\n }\n\n private _isSubmitManualOrderErrorEvent(\n event: any,\n ): event is HostedInputSubmitManualOrderErrorEvent {\n if (!(event instanceof Object) || event === null || !('type' in event)) {\n return false;\n }\n\n return event.type === HostedInputEventType.SubmitManualOrderFailed;\n }\n\n private _isSubmitErrorEvent(event: any): event is HostedInputSubmitErrorEvent {\n return event.type === HostedInputEventType.SubmitFailed;\n }\n}\n","import { noop, without } from 'lodash';\n\nimport {\n OrderPaymentRequestBody,\n PaymentAdditionalAction,\n PaymentIntegrationService,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { IframeEventListener } from './common/iframe';\nimport { InvalidHostedFormConfigError } from './errors';\nimport HostedField from './hosted-field';\nimport HostedFormManualOrderData from './hosted-form-manual-order-data';\nimport HostedFormOptions from './hosted-form-options';\nimport HostedFormOrderDataTransformer from './hosted-form-order-data-transformer';\nimport {\n HostedInputEnterEvent,\n HostedInputEventMap,\n HostedInputEventType,\n HostedInputSubmitManualOrderSuccessEvent,\n HostedInputSubmitSuccessEvent,\n} from './iframe-content';\n\ntype HostedFormEventCallbacks = Pick<\n HostedFormOptions,\n 'onBlur' | 'onCardTypeChange' | 'onFocus' | 'onEnter' | 'onValidate'\n>;\n\nexport interface HostedFormInterface {\n attach(): Promise<void>;\n detach(): void;\n getBin(): string | undefined;\n validate(): Promise<void>;\n getCardType(): string | undefined;\n}\n\nexport default class HostedForm implements HostedFormInterface {\n private _bin?: string;\n private _cardType?: string;\n\n constructor(\n private _fields: HostedField[],\n private _eventListener: IframeEventListener<HostedInputEventMap>,\n private _eventCallbacks: HostedFormEventCallbacks,\n ) {\n const {\n onBlur = noop,\n onCardTypeChange = noop,\n onFocus = noop,\n onValidate = noop,\n } = this._eventCallbacks;\n\n this._eventListener.addListener(HostedInputEventType.Blurred, ({ payload }) =>\n onBlur(payload),\n );\n this._eventListener.addListener(HostedInputEventType.CardTypeChanged, ({ payload }) =>\n onCardTypeChange(payload),\n );\n this._eventListener.addListener(HostedInputEventType.Focused, ({ payload }) =>\n onFocus(payload),\n );\n this._eventListener.addListener(HostedInputEventType.Validated, ({ payload }) =>\n onValidate(payload),\n );\n this._eventListener.addListener(HostedInputEventType.Entered, this._handleEnter);\n\n this._eventListener.addListener(\n HostedInputEventType.CardTypeChanged,\n ({ payload }) => (this._cardType = payload.cardType),\n );\n this._eventListener.addListener(\n HostedInputEventType.BinChanged,\n ({ payload }) => (this._bin = payload.bin),\n );\n }\n\n getBin(): string | undefined {\n return this._bin;\n }\n\n getCardType(): string | undefined {\n return this._cardType;\n }\n\n async attach(): Promise<void> {\n this._eventListener.listen();\n\n const field = this._getFirstField();\n const otherFields = without(this._fields, field);\n\n await field.attach();\n await Promise.all(otherFields.map((otherField) => otherField.attach()));\n }\n\n detach(): void {\n this._eventListener.stopListen();\n\n this._fields.forEach((field) => {\n field.detach();\n });\n }\n\n async submitManualOrderPayment(payload: {\n data: HostedFormManualOrderData;\n }): Promise<HostedInputSubmitManualOrderSuccessEvent | void> {\n return this._getFirstField().submitManualOrderForm(payload.data);\n }\n\n async submit(\n payload: OrderPaymentRequestBody,\n paymentIntegrationService: PaymentIntegrationService,\n payloadTransformer: HostedFormOrderDataTransformer,\n additionalActionData?: PaymentAdditionalAction,\n ): Promise<HostedInputSubmitSuccessEvent> {\n try {\n const response = await this._getFirstField().submitForm(\n this._fields.map((field) => field.getType()),\n payloadTransformer.transform(payload, additionalActionData),\n );\n\n return response;\n } catch (error) {\n let additionalAction: PaymentAdditionalAction;\n\n if (error instanceof Error || typeof error === 'string') {\n additionalAction = await paymentIntegrationService.handlePaymentHumanVerification(\n error,\n );\n } else {\n // Handle cases where error is not an instance of Error or string\n throw new Error('Unexpected error type');\n }\n\n const response = await this._getFirstField().submitForm(\n this._fields.map((field) => field.getType()),\n payloadTransformer.transform(payload, additionalAction),\n );\n\n return response;\n }\n }\n\n async validate(): Promise<void> {\n return this._getFirstField().validateForm();\n }\n\n private _getFirstField(): HostedField {\n const field = this._fields[0];\n\n if (!field) {\n throw new InvalidHostedFormConfigError(\n 'Unable to proceed because the payment form has no field defined.',\n );\n }\n\n return field;\n }\n\n private _handleEnter: (event: HostedInputEnterEvent) => Promise<void> = async ({ payload }) => {\n try {\n await this.validate();\n } catch (error) {\n // Catch form validation error because we want to trigger `onEnter`\n // irrespective of the validation result.\n if (error instanceof Error && error.name !== 'InvalidHostedFormValueError') {\n throw error;\n }\n }\n\n const { onEnter = noop } = this._eventCallbacks;\n\n onEnter(payload);\n };\n}\n","import { pick } from 'lodash';\n\nimport { DetachmentObserver, MutationObserverFactory } from './common/dom';\nimport { IframeEventListener, IframeEventPoster } from './common/iframe';\nimport HostedField from './hosted-field';\nimport HostedFieldType from './hosted-field-type';\nimport HostedForm from './hosted-form';\nimport HostedFormOptions from './hosted-form-options';\n\nexport default class HostedFormFactory {\n create(host: string, options: HostedFormOptions): HostedForm {\n const fieldTypes = Object.keys(options.fields) as HostedFieldType[];\n const fields = fieldTypes.reduce<HostedField[]>((result, type) => {\n const fields = options.fields;\n const fieldOptions = fields[type];\n\n if (!fieldOptions) {\n return result;\n }\n\n return [\n ...result,\n new HostedField(\n type,\n fieldOptions.containerId,\n options.orderId,\n fieldOptions.placeholder || '',\n fieldOptions.accessibilityLabel || '',\n options.styles || {},\n new IframeEventPoster(host),\n new IframeEventListener(host),\n new DetachmentObserver(new MutationObserverFactory()),\n ),\n ];\n }, []);\n\n return new HostedForm(\n fields,\n new IframeEventListener(host),\n pick(options, 'onBlur', 'onEnter', 'onFocus', 'onCardTypeChange', 'onValidate'),\n );\n }\n}\n","import StandardError from './standard-error';\n\nexport enum NotInitializedErrorType {\n CheckoutButtonNotInitialized,\n CustomerNotInitialized,\n PaymentNotInitialized,\n ShippingNotInitialized,\n SpamProtectionNotInitialized,\n}\n\n/**\n * Throw this error if a method requires a certain initialization call to be\n * made first. Some objects can be constructed but they cannot be used until a\n * separate initialization call is made.\n */\nexport default class NotInitializedError extends StandardError {\n constructor(public subtype: NotInitializedErrorType) {\n super(getErrorMessage(subtype));\n\n this.name = 'NotInitializedError';\n this.type = 'not_initialized';\n }\n}\n\nfunction getErrorMessage(type: NotInitializedErrorType): string {\n switch (type) {\n case NotInitializedErrorType.CustomerNotInitialized:\n return 'Unable to proceed because the customer step of checkout has not been initialized.';\n\n case NotInitializedErrorType.PaymentNotInitialized:\n return 'Unable to proceed because the payment step of checkout has not been initialized.';\n\n case NotInitializedErrorType.ShippingNotInitialized:\n return 'Unable to proceed because the shipping step of checkout has not been initialized.';\n\n case NotInitializedErrorType.SpamProtectionNotInitialized:\n return 'Unable to proceed because the checkout spam protection has not been initialized.';\n\n default:\n return 'Unable to proceed because the required component has not been initialized.';\n }\n}\n","import { NotInitializedError, NotInitializedErrorType } from './common/errors';\nimport HostedForm from './hosted-form';\nimport HostedFormFactory from './hosted-form-factory';\nimport HostedFormManualOrderData from './hosted-form-manual-order-data';\nimport HostedFormOptions from './hosted-form-options';\nimport { HostedInputSubmitManualOrderSuccessEvent } from './iframe-content';\n\nexport default class HostedFormService {\n protected _hostedForm?: HostedForm;\n constructor(protected _host: string, protected _hostedFormFactory: HostedFormFactory) {}\n\n initialize(options: HostedFormOptions): Promise<void> {\n const form = this._hostedFormFactory.create(this._host, options);\n\n return form.attach().then(() => {\n this._hostedForm = form;\n });\n }\n\n deinitialize() {\n if (this._hostedForm) {\n this._hostedForm.detach();\n this._hostedForm = undefined;\n }\n }\n\n async submitManualOrderPayment(\n data: HostedFormManualOrderData,\n ): Promise<HostedInputSubmitManualOrderSuccessEvent | void> {\n const form = this._hostedForm;\n\n if (!form) {\n throw new NotInitializedError(NotInitializedErrorType.PaymentNotInitialized);\n }\n\n await form.validate();\n\n return form.submitManualOrderPayment({ data });\n }\n}\n","import HostedFormFactory from './hosted-form-factory';\nimport HostedFormService from './hosted-form-service';\n\n/**\n * Creates an instance of `HostedFormService`.\n *\n *\n * @param host - Host url string parameter.\n * @returns An instance of `HostedFormService`.\n */\nexport function createHostedFormService(host: string) {\n return new HostedFormService(host, new HostedFormFactory());\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","require","promise","cancellable","Promise","_","reject","cancel","this","race","message","object","name","type","setPrototypeOf","__proto__","Error","captureStackTrace","stack","_mutationObserver","ensurePresence","targets","observer","create","mutationsList","forEach","mutation","Array","from","removedNodes","filter","node","some","target","contains","length","observe","document","body","childList","subtree","output","disconnect","_window","window","callback","MutationObserver","parseUrl","url","test","anchor","createElement","href","port","indexOf","hostname","hash","origin","protocol","pathname","search","isIframeEvent","targetOrigin","_targetWindow","_context","_targetOrigin","post","event","options","targetWindow","result","fromEvent","pipe","data","successType","errorType","map","take","toPromise","postMessage","context","setTarget","setContext","descriptor","bindMethodDecorator","decoratedTarget","getOwnPropertyNames","getOwnPropertyDescriptor","bindClassDecorator","method","boundMethod","bind","set","sourceOrigin","_sourceOrigins","replace","_isListening","_listeners","listen","addEventListener","_handleMessage","stopListen","removeEventListener","addListener","listener","listeners","push","removeListener","index","splice","trigger","messageEvent","DEFAULT_RESPONSE","headers","status","response","errors","joinErrors","isArray","reduce","error","join","flatMap","values","fieldErrors","HostedFieldEventType","HostedInputEventType","_type","_containerId","_orderId","_placeholder","_accessibilityLabel","_styles","_eventPoster","_eventListener","_detachmentObserver","_iframe","src","style","border","height","overflow","width","getType","attach","container","getElementById","appendChild","switchMap","contentWindow","AttachRequested","payload","accessibilityLabel","fontUrls","_getFontUrls","placeholder","styles","location","AttachSucceeded","AttachFailed","detach","parentElement","removeChild","submitForm","fields","SubmitRequested","SubmitSucceeded","SubmitFailed","_isSubmitErrorEvent","code","mapFromPaymentErrorResponse","submitManualOrderForm","SubmitManualOrderRequested","SubmitManualOrderSucceeded","SubmitManualOrderFailed","_isSubmitManualOrderErrorEvent","validateForm","ValidateRequested","Validated","isValid","links","querySelectorAll","slice","link","fontFamily","family","split","_fields","_eventCallbacks","_handleEnter","validate","noop","onBlur","onCardTypeChange","onFocus","onValidate","Blurred","CardTypeChanged","Focused","Entered","_cardType","cardType","BinChanged","_bin","bin","getBin","getCardType","field","_getFirstField","otherFields","without","all","otherField","submitManualOrderPayment","submit","paymentIntegrationService","payloadTransformer","additionalActionData","transform","additionalAction","handlePaymentHumanVerification","host","keys","fieldOptions","containerId","orderId","MutationObserverFactory","pick","NotInitializedErrorType","subtype","CustomerNotInitialized","PaymentNotInitialized","ShippingNotInitialized","SpamProtectionNotInitialized","getErrorMessage","_host","_hostedFormFactory","initialize","form","then","_hostedForm","deinitialize","undefined","createHostedFormService"],"sourceRoot":""}
1
+ {"version":3,"file":"hosted-form-v2-iframe-host.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/external commonjs \"lodash\"","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/common/cancellable-promise/cancellable-promise.ts","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/dom/errors/unexpected-detachment-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/dom/detachment-observer.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/dom/mutation-observer.ts","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/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/iframe/is-iframe-event.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/iframe/iframe-event-poster.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/iframe-event-listener.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/errors/request-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/errors/map-from-payment-error-response.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/errors/invalid-hosted-form-error.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/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/hosted-field.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-form.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-form-factory.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/common/errors/not-initialized-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/hosted-form-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/create-hosted-form-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/stored-card-hosted-form-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/hosted-form-v2/src/create-hosted-form-stored-card-service.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};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","export default class CancellablePromise<T> {\n promise: Promise<T>;\n cancel!: (reason?: any) => void;\n\n constructor(promise: Promise<T>) {\n const cancellable = new Promise<T>((_, reject) => {\n this.cancel = reject;\n });\n\n this.promise = Promise.race([promise, cancellable]);\n }\n}\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 '../../errors';\n\nexport default class UnexpectedDetachmentError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'Unable to proceed because the required element is unexpectedly detached from the page.',\n );\n\n this.name = 'UnexpectedDetachmentError';\n this.type = 'unexpected_detachment';\n }\n}\n","import { CancellablePromise } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { UnexpectedDetachmentError } from './errors';\nimport { MutationObserverFactory } from './mutation-observer';\n\nexport default class DetachmentObserver {\n constructor(private _mutationObserver: MutationObserverFactory) {}\n\n async ensurePresence<T>(targets: Node[], promise: Promise<T>): Promise<T> {\n const cancellable = new CancellablePromise(promise);\n\n const observer = this._mutationObserver.create((mutationsList) => {\n mutationsList.forEach((mutation) => {\n const removedTargets = Array.from(mutation.removedNodes).filter((node) =>\n targets.some((target) => node === target || node.contains(target)),\n );\n\n if (removedTargets.length === 0) {\n return;\n }\n\n cancellable.cancel(new UnexpectedDetachmentError());\n });\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n try {\n const output = await cancellable.promise;\n\n observer.disconnect();\n\n return output;\n } catch (error) {\n observer.disconnect();\n\n throw error;\n }\n }\n}\n","export interface MutationObeserverCreator {\n prototype: MutationObserver;\n new (callback: MutationCallback): MutationObserver;\n}\n\nexport interface MutationObserverWindow extends Window {\n MutationObserver: MutationObeserverCreator;\n}\n\nexport class MutationObserverFactory {\n constructor(private _window: MutationObserverWindow = window as MutationObserverWindow) {}\n\n create(callback: MutationCallback): MutationObserver {\n return new this._window.MutationObserver(callback);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs/operators\");","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 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 { 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","/**\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 { 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","import parseUrl from './parse-url';\nimport Url from './url';\n\nexport default function appendWww(url: Url): Url {\n return parseUrl(\n url.hostname.indexOf('www') === 0\n ? url.href\n : url.href.replace(url.hostname, `www.${url.hostname}`),\n );\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport StandardError from './standard-error';\n\nconst DEFAULT_RESPONSE = {\n body: {},\n headers: {},\n status: 0,\n};\n\n/**\n * Throw this error if we are unable to make a request to the server. It wraps\n * any server response into a JS error object.\n */\nexport default class RequestError<TBody = any> extends StandardError {\n body: TBody | {};\n headers: { [key: string]: any };\n errors: Array<{ code: string; message?: string }>;\n status: number;\n\n constructor(\n response?: Response<TBody | {}>,\n {\n message,\n errors,\n }: {\n message?: string;\n errors?: Array<{ code: string; message?: string }>;\n } = {},\n ) {\n const { body, headers, status } = response || DEFAULT_RESPONSE;\n\n super(message || 'An unexpected error has occurred.');\n\n this.name = 'RequestError';\n this.type = 'request';\n this.body = body;\n this.headers = headers;\n this.status = status;\n this.errors = errors || [];\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport { PaymentErrorResponseBody } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport RequestError from './request-error';\n\nexport default function mapFromPaymentErrorResponse(\n response: Response<PaymentErrorResponseBody>,\n message?: string,\n): RequestError {\n const { body } = response;\n const { errors = [] } = body;\n\n return new RequestError(response, {\n message: joinErrors(errors) || message,\n errors,\n });\n}\n\nfunction joinErrors(errors: Array<{ code: string; message?: string }>): string | undefined {\n if (!Array.isArray(errors)) {\n return;\n }\n\n return errors\n .reduce((result: string[], error) => {\n if (error && error.message) {\n return [...result, error.message];\n }\n\n return result;\n }, [])\n .join(' ');\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 { StandardError } from '../common/errors';\n\nexport default class InvalidHostedFormError extends StandardError {\n constructor(message?: string) {\n super(message || 'Unable to proceed due to an unknown error with the hosted payment form.');\n\n this.name = 'InvalidHostedFormError';\n this.type = 'invalid_hosted_form';\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 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 { values } from 'lodash';\nimport { fromEvent } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { DetachmentObserver } from './common/dom';\nimport { mapFromPaymentErrorResponse } from './common/errors';\nimport { IframeEventListener, IframeEventPoster } from './common/iframe';\nimport { parseUrl } from './common/url';\nimport {\n InvalidHostedFormConfigError,\n InvalidHostedFormError,\n InvalidHostedFormValueError,\n} from './errors';\nimport { HostedFieldEvent, HostedFieldEventType } from './hosted-field-events';\nimport 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 HostedInputEventMap,\n HostedInputEventType,\n HostedInputStoredCardSucceededEvent,\n HostedInputSubmitErrorEvent,\n HostedInputSubmitManualOrderErrorEvent,\n HostedInputSubmitManualOrderSuccessEvent,\n HostedInputSubmitSuccessEvent,\n HostedInputValidateEvent,\n} from './iframe-content';\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentFields,\n} from './stored-card-hosted-form-type';\n\nexport const RETRY_INTERVAL = 60 * 1000;\nexport const LAST_RETRY_KEY = 'lastRetry';\n\nexport default class HostedField {\n private _iframe: HTMLIFrameElement;\n\n constructor(\n private _type: HostedFieldType,\n private _containerId: string,\n private _placeholder: string,\n private _accessibilityLabel: string,\n private _styles: HostedFieldStylesMap,\n private _eventPoster: IframeEventPoster<HostedFieldEvent>,\n private _eventListener: IframeEventListener<HostedInputEventMap>,\n private _detachmentObserver: DetachmentObserver,\n private _orderId?: number,\n ) {\n this._iframe = document.createElement('iframe');\n\n this._iframe.src = this.getFrameSrc(this._orderId);\n this._iframe.style.border = 'none';\n this._iframe.style.height = '100%';\n this._iframe.style.overflow = 'hidden';\n this._iframe.style.width = '100%';\n }\n\n private getFrameSrc(orderId?: number): string {\n return typeof orderId !== 'undefined'\n ? `/admin/payments/${this._orderId}/hosted-form-field?version=${LIBRARY_VERSION}`\n : `/checkout/payment/hosted-field?version=${LIBRARY_VERSION}`;\n }\n\n getType(): HostedFieldType {\n return this._type;\n }\n\n async attach(): Promise<void> {\n const container = document.getElementById(this._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 container.appendChild(this._iframe);\n this._eventListener.listen();\n\n const promise = fromEvent(this._iframe, 'load')\n .pipe(\n switchMap(async ({ target }) => {\n const contentWindow = target && (target as HTMLIFrameElement).contentWindow;\n\n if (!contentWindow) {\n throw new Error('The content window of the iframe cannot be accessed.');\n }\n\n this._eventPoster.setTarget(contentWindow);\n\n await this._eventPoster.post(\n {\n type: HostedFieldEventType.AttachRequested,\n payload: {\n accessibilityLabel: this._accessibilityLabel,\n fontUrls: this._getFontUrls(),\n placeholder: this._placeholder,\n styles: this._styles,\n origin: document.location.origin,\n type: this._type,\n },\n },\n {\n successType: HostedInputEventType.AttachSucceeded,\n errorType: HostedInputEventType.AttachFailed,\n },\n );\n }),\n take(1),\n )\n .toPromise();\n\n await this._detachmentObserver.ensurePresence([this._iframe], promise);\n }\n\n detach(): void {\n if (!this._iframe.parentElement) {\n return;\n }\n\n this._iframe.parentElement.removeChild(this._iframe);\n this._eventListener.stopListen();\n }\n\n async submitForm(\n fields: HostedFieldType[],\n data: HostedFormOrderData,\n ): Promise<HostedInputSubmitSuccessEvent> {\n try {\n const promise = this._eventPoster.post<HostedInputSubmitSuccessEvent>(\n {\n type: HostedFieldEventType.SubmitRequested,\n payload: { fields, data },\n },\n {\n successType: HostedInputEventType.SubmitSucceeded,\n errorType: HostedInputEventType.SubmitFailed,\n },\n );\n\n return await this._detachmentObserver.ensurePresence([this._iframe], promise);\n } catch (event) {\n if (this._isSubmitErrorEvent(event)) {\n if (event.payload.error.code === 'hosted_form_error') {\n throw new InvalidHostedFormError(event.payload.error.message);\n }\n\n if (event.payload.response) {\n throw mapFromPaymentErrorResponse(event.payload.response);\n }\n\n throw new Error(event.payload.error.message);\n }\n\n throw event;\n }\n }\n\n async submitManualOrderForm(\n data: HostedFormManualOrderData,\n ): Promise<HostedInputSubmitManualOrderSuccessEvent> {\n try {\n const promise = this._eventPoster.post<HostedInputSubmitManualOrderSuccessEvent>(\n {\n type: HostedFieldEventType.SubmitManualOrderRequested,\n payload: { data },\n },\n {\n successType: HostedInputEventType.SubmitManualOrderSucceeded,\n errorType: HostedInputEventType.SubmitManualOrderFailed,\n },\n );\n\n return await this._detachmentObserver.ensurePresence([this._iframe], promise);\n } catch (event) {\n if (this._isSubmitManualOrderErrorEvent(event)) {\n if (event.payload.error.code === 'hosted_form_error') {\n throw new InvalidHostedFormError(event.payload.error.message);\n }\n\n if (event.payload.error.message) {\n throw new Error(event.payload.error.message);\n }\n\n throw new Error(event.payload.error.code);\n }\n\n throw event;\n }\n }\n\n async submitStoredCardForm(\n fields: StoredCardHostedFormInstrumentFields,\n data: StoredCardHostedFormData,\n ): Promise<HostedInputStoredCardSucceededEvent> {\n const promise = this._eventPoster.post<HostedInputStoredCardSucceededEvent>(\n {\n type: HostedFieldEventType.StoredCardRequested,\n payload: { fields, data },\n },\n {\n successType: HostedInputEventType.StoredCardSucceeded,\n errorType: HostedInputEventType.StoredCardFailed,\n },\n );\n\n return this._detachmentObserver.ensurePresence([this._iframe], promise);\n }\n\n async validateForm(): Promise<void> {\n const promise = this._eventPoster.post<HostedInputValidateEvent>(\n {\n type: HostedFieldEventType.ValidateRequested,\n },\n {\n successType: HostedInputEventType.Validated,\n },\n );\n\n const { payload } = await this._detachmentObserver.ensurePresence([this._iframe], promise);\n\n if (!payload.isValid) {\n throw new InvalidHostedFormValueError(payload.errors);\n }\n }\n\n private _getFontUrls(): string[] {\n const hostname = 'fonts.googleapis.com';\n const links = document.querySelectorAll(`link[href*='${hostname}'][rel='stylesheet']`);\n\n return Array.prototype.slice\n .call(links)\n .filter((link) => parseUrl(link.href).hostname === hostname)\n .filter((link) =>\n values(this._styles)\n .map((style) => style && style.fontFamily)\n .filter((family): family is string => typeof family === 'string')\n .some((family) =>\n family\n .split(/,\\s/)\n .some((name) => link.href.indexOf(name.replace(' ', '+')) !== -1),\n ),\n )\n .map((link) => link.href);\n }\n\n private _isSubmitManualOrderErrorEvent(\n event: any,\n ): event is HostedInputSubmitManualOrderErrorEvent {\n if (!(event instanceof Object) || event === null || !('type' in event)) {\n return false;\n }\n\n return event.type === HostedInputEventType.SubmitManualOrderFailed;\n }\n\n private _isSubmitErrorEvent(event: any): event is HostedInputSubmitErrorEvent {\n return event.type === HostedInputEventType.SubmitFailed;\n }\n}\n","import { noop, without } from 'lodash';\n\nimport {\n OrderPaymentRequestBody,\n PaymentAdditionalAction,\n PaymentIntegrationService,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { IframeEventListener } from './common/iframe';\nimport { InvalidHostedFormConfigError } from './errors';\nimport HostedField from './hosted-field';\nimport HostedFormManualOrderData from './hosted-form-manual-order-data';\nimport HostedFormOptions from './hosted-form-options';\nimport HostedFormOrderDataTransformer from './hosted-form-order-data-transformer';\nimport {\n HostedInputEnterEvent,\n HostedInputEventMap,\n HostedInputEventType,\n HostedInputStoredCardSucceededEvent,\n HostedInputSubmitManualOrderSuccessEvent,\n HostedInputSubmitSuccessEvent,\n} from './iframe-content';\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentFields,\n} from './stored-card-hosted-form-type';\n\ntype HostedFormEventCallbacks = Pick<\n HostedFormOptions,\n 'onBlur' | 'onCardTypeChange' | 'onFocus' | 'onEnter' | 'onValidate'\n>;\n\nexport interface HostedFormInterface {\n attach(): Promise<void>;\n detach(): void;\n getBin(): string | undefined;\n validate(): Promise<void>;\n getCardType(): string | undefined;\n}\n\nexport default class HostedForm implements HostedFormInterface {\n private _bin?: string;\n private _cardType?: string;\n\n constructor(\n private _fields: HostedField[],\n private _eventListener: IframeEventListener<HostedInputEventMap>,\n private _eventCallbacks: HostedFormEventCallbacks,\n ) {\n const {\n onBlur = noop,\n onCardTypeChange = noop,\n onFocus = noop,\n onValidate = noop,\n } = this._eventCallbacks;\n\n this._eventListener.addListener(HostedInputEventType.Blurred, ({ payload }) =>\n onBlur(payload),\n );\n this._eventListener.addListener(HostedInputEventType.CardTypeChanged, ({ payload }) =>\n onCardTypeChange(payload),\n );\n this._eventListener.addListener(HostedInputEventType.Focused, ({ payload }) =>\n onFocus(payload),\n );\n this._eventListener.addListener(HostedInputEventType.Validated, ({ payload }) =>\n onValidate(payload),\n );\n this._eventListener.addListener(HostedInputEventType.Entered, this._handleEnter);\n\n this._eventListener.addListener(\n HostedInputEventType.CardTypeChanged,\n ({ payload }) => (this._cardType = payload.cardType),\n );\n this._eventListener.addListener(\n HostedInputEventType.BinChanged,\n ({ payload }) => (this._bin = payload.bin),\n );\n }\n\n getBin(): string | undefined {\n return this._bin;\n }\n\n getCardType(): string | undefined {\n return this._cardType;\n }\n\n async attach(): Promise<void> {\n this._eventListener.listen();\n\n const field = this._getFirstField();\n const otherFields = without(this._fields, field);\n\n await field.attach();\n await Promise.all(otherFields.map((otherField) => otherField.attach()));\n }\n\n detach(): void {\n this._eventListener.stopListen();\n\n this._fields.forEach((field) => {\n field.detach();\n });\n }\n\n async submitManualOrderPayment(payload: {\n data: HostedFormManualOrderData;\n }): Promise<HostedInputSubmitManualOrderSuccessEvent | void> {\n return this._getFirstField().submitManualOrderForm(payload.data);\n }\n\n async submitStoredCard(payload: {\n fields: StoredCardHostedFormInstrumentFields;\n data: StoredCardHostedFormData;\n }): Promise<HostedInputStoredCardSucceededEvent | void> {\n return this._getFirstField().submitStoredCardForm(payload.fields, payload.data);\n }\n\n async submit(\n payload: OrderPaymentRequestBody,\n paymentIntegrationService: PaymentIntegrationService,\n payloadTransformer: HostedFormOrderDataTransformer,\n additionalActionData?: PaymentAdditionalAction,\n ): Promise<HostedInputSubmitSuccessEvent> {\n try {\n const response = await this._getFirstField().submitForm(\n this._fields.map((field) => field.getType()),\n payloadTransformer.transform(payload, additionalActionData),\n );\n\n return response;\n } catch (error) {\n let additionalAction: PaymentAdditionalAction;\n\n if (error instanceof Error || typeof error === 'string') {\n additionalAction = await paymentIntegrationService.handlePaymentHumanVerification(\n error,\n );\n } else {\n // Handle cases where error is not an instance of Error or string\n throw new Error('Unexpected error type');\n }\n\n const response = await this._getFirstField().submitForm(\n this._fields.map((field) => field.getType()),\n payloadTransformer.transform(payload, additionalAction),\n );\n\n return response;\n }\n }\n\n async validate(): Promise<void> {\n return this._getFirstField().validateForm();\n }\n\n private _getFirstField(): HostedField {\n const field = this._fields[0];\n\n if (!field) {\n throw new InvalidHostedFormConfigError(\n 'Unable to proceed because the payment form has no field defined.',\n );\n }\n\n return field;\n }\n\n private _handleEnter: (event: HostedInputEnterEvent) => Promise<void> = async ({ payload }) => {\n try {\n await this.validate();\n } catch (error) {\n // Catch form validation error because we want to trigger `onEnter`\n // irrespective of the validation result.\n if (error instanceof Error && error.name !== 'InvalidHostedFormValueError') {\n throw error;\n }\n }\n\n const { onEnter = noop } = this._eventCallbacks;\n\n onEnter(payload);\n };\n}\n","import { pick } from 'lodash';\n\nimport { DetachmentObserver, MutationObserverFactory } from './common/dom';\nimport { IframeEventListener, IframeEventPoster } from './common/iframe';\nimport HostedField from './hosted-field';\nimport HostedFieldType from './hosted-field-type';\nimport HostedForm from './hosted-form';\nimport HostedFormOptions from './hosted-form-options';\n\nexport default class HostedFormFactory {\n create(host: string, options: HostedFormOptions): HostedForm {\n const fieldTypes = Object.keys(options.fields) as HostedFieldType[];\n const fields = fieldTypes.reduce<HostedField[]>((result, type) => {\n const fields = options.fields;\n const fieldOptions = fields[type];\n\n if (!fieldOptions) {\n return result;\n }\n\n return [\n ...result,\n new HostedField(\n type,\n fieldOptions.containerId,\n fieldOptions.placeholder || '',\n fieldOptions.accessibilityLabel || '',\n options.styles || {},\n new IframeEventPoster(host),\n new IframeEventListener(host),\n new DetachmentObserver(new MutationObserverFactory()),\n options.orderId,\n ),\n ];\n }, []);\n\n return new HostedForm(\n fields,\n new IframeEventListener(host),\n pick(options, 'onBlur', 'onEnter', 'onFocus', 'onCardTypeChange', 'onValidate'),\n );\n }\n}\n","import StandardError from './standard-error';\n\nexport enum NotInitializedErrorType {\n CheckoutButtonNotInitialized,\n CustomerNotInitialized,\n PaymentNotInitialized,\n ShippingNotInitialized,\n SpamProtectionNotInitialized,\n}\n\n/**\n * Throw this error if a method requires a certain initialization call to be\n * made first. Some objects can be constructed but they cannot be used until a\n * separate initialization call is made.\n */\nexport default class NotInitializedError extends StandardError {\n constructor(public subtype: NotInitializedErrorType) {\n super(getErrorMessage(subtype));\n\n this.name = 'NotInitializedError';\n this.type = 'not_initialized';\n }\n}\n\nfunction getErrorMessage(type: NotInitializedErrorType): string {\n switch (type) {\n case NotInitializedErrorType.CustomerNotInitialized:\n return 'Unable to proceed because the customer step of checkout has not been initialized.';\n\n case NotInitializedErrorType.PaymentNotInitialized:\n return 'Unable to proceed because the payment step of checkout has not been initialized.';\n\n case NotInitializedErrorType.ShippingNotInitialized:\n return 'Unable to proceed because the shipping step of checkout has not been initialized.';\n\n case NotInitializedErrorType.SpamProtectionNotInitialized:\n return 'Unable to proceed because the checkout spam protection has not been initialized.';\n\n default:\n return 'Unable to proceed because the required component has not been initialized.';\n }\n}\n","import { NotInitializedError, NotInitializedErrorType } from './common/errors';\nimport HostedForm from './hosted-form';\nimport HostedFormFactory from './hosted-form-factory';\nimport HostedFormManualOrderData from './hosted-form-manual-order-data';\nimport HostedFormOptions from './hosted-form-options';\nimport { HostedInputSubmitManualOrderSuccessEvent } from './iframe-content';\n\nexport default class HostedFormService {\n protected _hostedForm?: HostedForm;\n constructor(protected _host: string, protected _hostedFormFactory: HostedFormFactory) {}\n\n initialize(options: HostedFormOptions): Promise<void> {\n const form = this._hostedFormFactory.create(this._host, options);\n\n return form.attach().then(() => {\n this._hostedForm = form;\n });\n }\n\n deinitialize() {\n if (this._hostedForm) {\n this._hostedForm.detach();\n this._hostedForm = undefined;\n }\n }\n\n async submitManualOrderPayment(\n data: HostedFormManualOrderData,\n ): Promise<HostedInputSubmitManualOrderSuccessEvent | void> {\n const form = this._hostedForm;\n\n if (!form) {\n throw new NotInitializedError(NotInitializedErrorType.PaymentNotInitialized);\n }\n\n await form.validate();\n\n return form.submitManualOrderPayment({ data });\n }\n}\n","import HostedFormFactory from './hosted-form-factory';\nimport HostedFormService from './hosted-form-service';\n\n/**\n * Creates an instance of `HostedFormService`.\n *\n *\n * @param host - Host url string parameter.\n * @returns An instance of `HostedFormService`.\n */\nexport function createHostedFormService(host: string) {\n return new HostedFormService(host, new HostedFormFactory());\n}\n","import { NotInitializedError, NotInitializedErrorType } from './common/errors';\nimport HostedForm from './hosted-form';\nimport HostedFormFactory from './hosted-form-factory';\nimport LegacyHostedFormOptions from './hosted-form-options';\nimport {\n StoredCardHostedFormData,\n StoredCardHostedFormInstrumentFields,\n} from './stored-card-hosted-form-type';\n\nexport default class StoredCardHostedFormService {\n protected _hostedForm?: HostedForm;\n constructor(protected _host: string, protected _hostedFormFactory: HostedFormFactory) {}\n\n async submitStoredCard(\n fields: StoredCardHostedFormInstrumentFields,\n data: StoredCardHostedFormData,\n ): Promise<void> {\n const form = this._hostedForm;\n\n if (!form) {\n throw new NotInitializedError(NotInitializedErrorType.PaymentNotInitialized);\n }\n\n await form.validate().then(() => form.submitStoredCard({ fields, data }));\n }\n\n initialize(options: LegacyHostedFormOptions): Promise<void> {\n const form = this._hostedFormFactory.create(this._host, options);\n\n return form.attach().then(() => {\n this._hostedForm = form;\n });\n }\n\n deinitialize() {\n if (this._hostedForm) {\n this._hostedForm.detach();\n }\n }\n}\n","import HostedFormFactory from './hosted-form-factory';\nimport StoredCardHostedFormService from './stored-card-hosted-form-service';\n\n/**\n * Creates an instance of `StoredCardHostedFormService`.\n *\n *\n * @param host - Host url string parameter.\n * @returns An instance of `StoredCardHostedFormService`.\n */\nexport default function createStoredCardHostedFormService(host: string) {\n return new StoredCardHostedFormService(host, new HostedFormFactory());\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","require","promise","cancellable","Promise","_","reject","cancel","this","race","message","object","name","type","setPrototypeOf","__proto__","Error","captureStackTrace","stack","_mutationObserver","ensurePresence","targets","observer","create","mutationsList","forEach","mutation","Array","from","removedNodes","filter","node","some","target","contains","length","observe","document","body","childList","subtree","output","disconnect","_window","window","callback","MutationObserver","parseUrl","url","test","anchor","createElement","href","port","indexOf","hostname","hash","origin","protocol","pathname","search","isIframeEvent","targetOrigin","_targetWindow","_context","_targetOrigin","post","event","options","targetWindow","result","fromEvent","pipe","data","successType","errorType","map","take","toPromise","postMessage","context","setTarget","setContext","descriptor","bindMethodDecorator","decoratedTarget","getOwnPropertyNames","getOwnPropertyDescriptor","bindClassDecorator","method","boundMethod","bind","set","sourceOrigin","_sourceOrigins","replace","_isListening","_listeners","listen","addEventListener","_handleMessage","stopListen","removeEventListener","addListener","listener","listeners","push","removeListener","index","splice","trigger","messageEvent","DEFAULT_RESPONSE","headers","status","response","errors","joinErrors","isArray","reduce","error","join","flatMap","values","fieldErrors","HostedFieldEventType","HostedInputEventType","_type","_containerId","_placeholder","_accessibilityLabel","_styles","_eventPoster","_eventListener","_detachmentObserver","_orderId","_iframe","src","getFrameSrc","style","border","height","overflow","width","orderId","getType","attach","container","getElementById","appendChild","switchMap","contentWindow","AttachRequested","payload","accessibilityLabel","fontUrls","_getFontUrls","placeholder","styles","location","AttachSucceeded","AttachFailed","detach","parentElement","removeChild","submitForm","fields","SubmitRequested","SubmitSucceeded","SubmitFailed","_isSubmitErrorEvent","code","mapFromPaymentErrorResponse","submitManualOrderForm","SubmitManualOrderRequested","SubmitManualOrderSucceeded","SubmitManualOrderFailed","_isSubmitManualOrderErrorEvent","submitStoredCardForm","StoredCardRequested","StoredCardSucceeded","StoredCardFailed","validateForm","ValidateRequested","Validated","isValid","links","querySelectorAll","slice","link","fontFamily","family","split","_fields","_eventCallbacks","_handleEnter","validate","noop","onBlur","onCardTypeChange","onFocus","onValidate","Blurred","CardTypeChanged","Focused","Entered","_cardType","cardType","BinChanged","_bin","bin","getBin","getCardType","field","_getFirstField","otherFields","without","all","otherField","submitManualOrderPayment","submitStoredCard","submit","paymentIntegrationService","payloadTransformer","additionalActionData","transform","additionalAction","handlePaymentHumanVerification","host","keys","fieldOptions","containerId","MutationObserverFactory","pick","NotInitializedErrorType","subtype","CustomerNotInitialized","PaymentNotInitialized","ShippingNotInitialized","SpamProtectionNotInitialized","getErrorMessage","_host","_hostedFormFactory","initialize","form","then","_hostedForm","deinitialize","undefined","createHostedFormService","createStoredCardHostedFormService"],"sourceRoot":""}