@bigcommerce/checkout-sdk 1.943.2 → 1.945.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.
Files changed (35) hide show
  1. package/dist/cjs/checkout-button.js +1 -1
  2. package/dist/cjs/checkout-sdk-essential.js +1 -1
  3. package/dist/cjs/checkout-sdk.js +1 -1
  4. package/dist/cjs/hosted-form-v2-iframe-host.js +1 -1
  5. package/dist/cjs/integrations/amazon-pay.js +1 -1
  6. package/dist/cjs/integrations/bigcommerce-payments.js +1 -1
  7. package/dist/cjs/integrations/braintree.js +1 -1
  8. package/dist/cjs/integrations/braintree.js.map +1 -1
  9. package/dist/cjs/integrations/google-pay.js +1 -1
  10. package/dist/cjs/integrations/klarna.js +1 -1
  11. package/dist/cjs/integrations/paypal-commerce.js +1 -1
  12. package/dist/cjs/integrations/paypal-commerce.js.map +1 -1
  13. package/dist/cjs/integrations/paypal-express.js +1 -1
  14. package/dist/cjs/integrations/zip.js +1 -1
  15. package/dist/cjs/wallet-button.js +1 -1
  16. package/dist/cjs/wallet-button.js.map +1 -1
  17. package/dist/esm/checkout-button.js +1 -1
  18. package/dist/esm/checkout-sdk-essential.js +1 -1
  19. package/dist/esm/checkout-sdk.js +1 -1
  20. package/dist/esm/hosted-form-v2-iframe-host.js +1 -1
  21. package/dist/esm/integrations/amazon-pay.js +1 -1
  22. package/dist/esm/integrations/bigcommerce-payments.js +1 -1
  23. package/dist/esm/integrations/braintree.js +1 -1
  24. package/dist/esm/integrations/braintree.js.map +1 -1
  25. package/dist/esm/integrations/google-pay.js +1 -1
  26. package/dist/esm/integrations/klarna.js +1 -1
  27. package/dist/esm/integrations/paypal-commerce.js +1 -1
  28. package/dist/esm/integrations/paypal-commerce.js.map +1 -1
  29. package/dist/esm/integrations/paypal-express.js +1 -1
  30. package/dist/esm/integrations/zip.js +1 -1
  31. package/dist/esm/wallet-button.js +1 -1
  32. package/dist/esm/wallet-button.js.map +1 -1
  33. package/dist/types/integrations/braintree.d.ts +61 -0
  34. package/dist/types/integrations/paypal-commerce.d.ts +26 -0
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-button.js","mappings":"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Q,OAAO,IAAI5E,KAC9B+D,GAAoB,MAKvBA,GACDL,GACgC,mBAAzBA,GAEPA,GAER,CAEc,YAAAc,CACVtB,EACAzN,4CAEA,MAAMoP,eAAEA,EAAc7K,OAAEA,EAAM3E,SAAEA,GAAa6N,EAEvC/N,EACFnJ,KAAKiX,6BAA6BhD,oCAEtC,IACI,aAAa9K,EAAwB2P,cAAc,CAC/CrQ,KAAM,WACND,uBAAuB,EACvBuQ,yBAAyB,EACzB/K,SACA3E,SAAUA,EAASkB,KACnByO,aAAa,EACbvP,UAER,CAAE,MAAOvG,GAKL,MAJIuC,EAAiBvC,IAAUA,aAAiBrB,KAC5CgX,SAAAA,EAAiB3V,IAGfA,CACV,CACJ,GAEc,eAAAoR,CACVH,EACAC,EACAvH,EACA9D,4CAEA,UACU/I,KAAKiX,6BAA6B/C,yBACpCC,EACAC,EACAvH,EAER,CAAE,MAAO3J,GAKL,MAJIuC,EAAiBvC,IAAUA,aAAiBrB,KAC5CkH,SAAAA,EAAU7F,IAGRA,CACV,CACJ,ICtLJ,MAuBA+V,GAAejE,EArBVlB,IACD,MAAMjO,EAA2CxE,OAE3C0S,EAA8B,IAAIpO,EACpC,IAAIoM,EACAmH,IACArT,EACA,IAAI6N,GAER7N,GAGJ,OAAO,IAAImR,GACP,IAAInD,EACAC,EACAC,GAEJlO,IAI+D,CAAC,CAAEvF,GAAI,qBC/BjE6Y,GAA+B,CACxC,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,Q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","sources":["webpack://@bigcommerce/checkout-sdk/webpack/bootstrap","webpack://@bigcommerce/checkout-sdk/webpack/runtime/define property getters","webpack://@bigcommerce/checkout-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@bigcommerce/checkout-sdk/webpack/runtime/make namespace object","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/billing/billing-address-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/checkout/checkout-redirect-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/checkout/checkout-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-method-cancelled-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/payment/payment-order-intent-creation-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/payment/payment-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/wallet-button-integration-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/unsupported-browser-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-argument-invalid-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-invalid-form-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/not-initialized-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/load-paypal-sdk-once.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/paypal.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/utils/is-braintree-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-integration-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/utils/is-credit-card-instrument-like.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-method-client-unavailable-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-sdk-verison.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-sdk-scripts-integrity.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-script-loader.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/isManageableBraintreeSDKVersion.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-headless-sdk-version-manager.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-paypal-wallet-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/missing-data-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-paypal-wallet-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/to-resolvable-module.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/get-valid-button-style.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-paypal/braintree-paypal-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-paypal/create-braintree-paypal-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-utils/src/paypal-commerce-constants.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-types.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-script-loader.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-utils/src/utils/transform-locale-to-paypal-format.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-wallet-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce/paypal-commerce-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce/create-paypal-commerce-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/is-resolvable-module.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/utility/get-environment.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/console-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/noop-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/get-default-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/create-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/utility/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/registry/registry.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/registry/resolve-id-registry.ts","webpack://@bigcommerce/checkout-sdk/./packages/utility/src/bind-decorator/bind-decorator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/dom/set-unique-element-id.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/wallet-buttons/wallet-button-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/dom/is-element-id.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/wallet-buttons/create-wallet-button-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/wallet-buttons/create-wallet-button-strategy-registry.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/create-wallet-button-integration-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};","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport { GraphQLRequestOptions } from '../graphql-request-options';\n\nimport {\n AddBillingAddressResponseBody,\n AddressRequestBody,\n BillingAddressResponse,\n BillingAddressUpdateRequestBody,\n UpdateBillingAddressResponseBody,\n} from './billing-address';\n\nexport default class BillingAddressRequestSender {\n constructor(private readonly requestSender: RequestSender) {}\n\n async updateBillingAddress(\n graphQLEndpoint: string,\n checkoutId: string,\n address: BillingAddressUpdateRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n const document = `\n mutation UpdateCheckoutBillingAddressMutation(\n $input: UpdateCheckoutBillingAddressInput!\n ) {\n checkout {\n updateCheckoutBillingAddress(input: $input) {\n checkout {\n billingAddress {\n address1\n address2\n city\n company\n countryCode\n email\n entityId\n firstName\n lastName\n phone\n postalCode\n stateOrProvince\n stateOrProvinceCode\n }\n }\n }\n }\n }\n `;\n\n const { id, ...billingAddressFields } = address;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: {\n checkoutEntityId: checkoutId,\n addressEntityId: address.id,\n data: {\n address: {\n ...billingAddressFields,\n },\n },\n },\n },\n },\n };\n\n const response = await this.requestSender.post<UpdateBillingAddressResponseBody>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const { billingAddress } =\n response.body.data.checkout.updateCheckoutBillingAddress.checkout;\n\n return {\n ...response,\n body: billingAddress,\n };\n }\n\n async addBillingAddress(\n graphQLEndpoint: string,\n checkoutId: string,\n address: AddressRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n const document = `\n mutation AddCheckoutBillingAddressMutation(\n $input: AddCheckoutBillingAddressInput!\n ) {\n checkout {\n addCheckoutBillingAddress(input: $input) {\n checkout {\n billingAddress {\n address1\n address2\n city\n company\n countryCode\n email\n entityId\n firstName\n lastName\n phone\n postalCode\n stateOrProvince\n stateOrProvinceCode\n }\n }\n }\n }\n }\n `;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: {\n checkoutEntityId: checkoutId,\n data: {\n address: {\n ...address,\n },\n },\n },\n },\n },\n };\n\n const response = await this.requestSender.post<AddBillingAddressResponseBody>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const { billingAddress } = response.body.data.checkout.addCheckoutBillingAddress.checkout;\n\n return {\n ...response,\n body: billingAddress,\n };\n }\n}\n","import CustomError from './custom-error';\nimport setPrototypeOf from './set-prototype-of';\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 '@bigcommerce/checkout-sdk/payment-integration-api';\n\nexport default class CheckoutRedirectError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'An unexpected error has occurred during checkout redirection process. Please try again later.',\n );\n\n this.name = 'CheckoutRedirectError';\n this.type = 'checkout_redirect_error';\n }\n}\n","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport { GraphQLRequestOptions } from '../graphql-request-options';\n\nimport {\n CreateRedirectToCheckoutResponse,\n CreateRedirectToCheckoutResponseBody,\n RedirectToCheckoutUrlInputData,\n} from './checkout';\nimport CheckoutRedirectError from './checkout-redirect-error';\n\nexport class CheckoutRequestSender {\n constructor(private readonly requestSender: RequestSender) {}\n\n async getRedirectToCheckoutUrl(\n graphQLEndpoint: string,\n inputData: RedirectToCheckoutUrlInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreateRedirectToCheckoutResponseBody>> {\n const document = `\n mutation CheckoutRedirectMutation($input: CreateCartRedirectUrlsInput!) {\n cart {\n createCartRedirectUrls(input: $input) {\n errors {\n __typename\n ... on NotFoundError {\n message \n }\n ... on CreateRedirectUrlsCurrencyNotAllowed {\n message\n }\n }\n redirectUrls {\n externalCheckoutUrl\n }\n }\n }\n }\n `;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: inputData,\n },\n },\n };\n\n try {\n const response = await this.requestSender.post<CreateRedirectToCheckoutResponse>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const {\n data: {\n cart: { createCartRedirectUrls },\n },\n } = response.body;\n\n const errorMessage = createCartRedirectUrls.errors[0]?.message;\n\n if (errorMessage) {\n throw new CheckoutRedirectError(errorMessage);\n }\n\n if (createCartRedirectUrls.errors.length > 0) {\n throw new CheckoutRedirectError();\n }\n\n return {\n ...response,\n body: {\n redirectUrls: createCartRedirectUrls.redirectUrls,\n },\n };\n } catch (error) {\n if (error instanceof Error) {\n throw error;\n }\n\n throw new Error('Checkout redirection failed');\n }\n }\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when the payment flow is cancelled. It could be\n * due to a deliberate user interaction, i.e.: the user clicks on a cancel\n * button which dismisses the payment modal.\n */\nexport default class PaymentMethodCancelledError extends StandardError {\n constructor(message?: string) {\n super(message || 'Payment process was cancelled.');\n\n this.name = 'PaymentMethodCancelledError';\n this.type = 'payment_cancelled';\n }\n}\n","import { StandardError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nexport default class PaymentOrderCreationError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'An unexpected error has occurred during payment order creation process. Please try again later.',\n );\n\n this.name = 'PaymentOrderCreationError';\n this.type = 'payment_order_creation_error';\n }\n}\n","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport { PaymentMethodCancelledError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { GraphQLRequestOptions } from '../graphql-request-options';\n\nimport {\n CreatePaymentOrderIntentInputData,\n CreatePaymentOrderIntentResponse,\n CreatePaymentOrderIntentResponseBody,\n} from './payment';\nimport PaymentOrderCreationError from './payment-order-intent-creation-error';\n\nexport class PaymentRequestSender {\n constructor(private readonly requestSender: RequestSender) {}\n\n async createPaymentOrderIntent(\n graphQLEndpoint: string,\n inputData: CreatePaymentOrderIntentInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreatePaymentOrderIntentResponseBody>> {\n const document = `\n mutation CreatePaymentWalletIntentMutation(\n $input: CreatePaymentWalletIntentInput!\n ) {\n payment {\n paymentWallet {\n createPaymentWalletIntent(input: $input) {\n paymentWalletIntentData {\n __typename\n ... on PayPalCommercePaymentWalletIntentData {\n orderId\n approvalUrl\n initializationEntityId\n }\n }\n errors {\n __typename\n ... on CreatePaymentWalletIntentGenericError {\n message\n }\n ... on Error {\n message\n }\n }\n }\n }\n }\n }\n `;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: inputData,\n },\n },\n };\n\n try {\n const response = await this.requestSender.post<CreatePaymentOrderIntentResponse>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const {\n data: {\n payment: {\n paymentWallet: {\n createPaymentWalletIntent: { paymentWalletIntentData, errors },\n },\n },\n },\n } = response.body;\n\n const errorMessage = errors[0]?.message;\n\n if (errorMessage) {\n throw new PaymentOrderCreationError(errorMessage);\n }\n\n return {\n ...response,\n body: {\n ...paymentWalletIntentData,\n },\n };\n } catch (error) {\n if (!(error instanceof PaymentOrderCreationError)) {\n throw new PaymentMethodCancelledError();\n }\n\n throw error;\n }\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport {\n AddressRequestBody,\n BillingAddressResponse,\n BillingAddressUpdateRequestBody,\n} from './billing/billing-address';\nimport BillingAddressRequestSender from './billing/billing-address-request-sender';\nimport {\n CreateRedirectToCheckoutResponseBody,\n RedirectToCheckoutUrlInputData,\n} from './checkout/checkout';\nimport { CheckoutRequestSender } from './checkout/checkout-request-sender';\nimport { GraphQLRequestOptions } from './graphql-request-options';\nimport {\n CreatePaymentOrderIntentInputData,\n CreatePaymentOrderIntentResponseBody,\n} from './payment/payment';\nimport { PaymentRequestSender } from './payment/payment-request-sender';\n\nexport default class WalletButtonIntegrationService {\n constructor(\n private graphQLEndpoint: string,\n private billingAddressRequestSender: BillingAddressRequestSender,\n private paymentRequestSender: PaymentRequestSender,\n private checkoutRequestSender: CheckoutRequestSender,\n ) {}\n\n async addBillingAddress(\n checkoutId: string,\n address: AddressRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n return this.billingAddressRequestSender.addBillingAddress(\n this.graphQLEndpoint,\n checkoutId,\n address,\n options,\n );\n }\n\n async updateBillingAddress(\n checkoutId: string,\n address: BillingAddressUpdateRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n return this.billingAddressRequestSender.updateBillingAddress(\n this.graphQLEndpoint,\n checkoutId,\n address,\n options,\n );\n }\n\n async createPaymentOrderIntent(\n inputData: CreatePaymentOrderIntentInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreatePaymentOrderIntentResponseBody>> {\n return this.paymentRequestSender.createPaymentOrderIntent(\n this.graphQLEndpoint,\n inputData,\n options,\n );\n }\n\n async getRedirectToCheckoutUrl(\n inputData: RedirectToCheckoutUrlInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreateRedirectToCheckoutResponseBody>> {\n return this.checkoutRequestSender.getRedirectToCheckoutUrl(\n this.graphQLEndpoint,\n inputData,\n options,\n );\n }\n}\n","import { StandardError } from './index';\n\n/**\n * Throw this error if the shopper is using a browser version that is not\n * supported by us or any third party provider we use.\n */\nexport default class UnsupportedBrowserError extends StandardError {\n constructor(message?: string) {\n super(message || 'Unsupported browser error');\n\n this.name = 'UnsupportedBrowserError';\n this.type = 'unsupported_browser';\n }\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when a method is unable to proceed because the\n * caller has not provided all the arguments according to their requirements,\n * i.e.: if an argument is missing or it is not the expected data type.\n */\nexport default class InvalidArgumentError extends StandardError {\n constructor(message?: string) {\n super(message || 'Invalid arguments have been provided.');\n\n this.name = 'InvalidArgumentError';\n this.type = 'invalid_argument';\n }\n}\n","import InvalidArgumentError from './invalid-argument-error';\n\n/**\n * This error should be thrown when we are unable to submit a payment because\n * the caller has not provided all the required fields, i.e.: if an argument is\n * missing or it is not the expected data type.\n */\nexport default class PaymentArgumentInvalidError extends InvalidArgumentError {\n constructor(invalidFields?: string[]) {\n let message = 'Unable to submit payment for the order because the payload is invalid.';\n\n if (invalidFields) {\n message = `${message} Make sure the following fields are provided correctly: ${invalidFields.join(\n ', ',\n )}.`;\n }\n\n super(message);\n\n this.name = 'PaymentArgumentInvalidError';\n }\n}\n","import StandardError from './standard-error';\n\nexport interface PaymentInvalidFormErrorDetails {\n [key: string]: Array<{ message: string; type: string }>;\n}\n\nexport default class PaymentInvalidFormError extends StandardError {\n constructor(public details: PaymentInvalidFormErrorDetails, message?: string) {\n super(message || 'Unable to proceed because the payment form contains invalid data.');\n\n this.name = 'PaymentInvalidFormError';\n this.type = 'payment_invalid_form';\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 { BraintreePaypalCheckout, BraintreePaypalSdkCreatorConfig } from './braintree';\nimport { BraintreeError } from './types';\n\nlet paypalSdkPromise: Promise<BraintreePaypalCheckout | null> | null = null;\n\nexport default function loadPayPalSDKOnce(\n paypalCheckout: BraintreePaypalCheckout,\n config: BraintreePaypalSdkCreatorConfig,\n): Promise<BraintreePaypalCheckout | null> {\n if (!paypalSdkPromise) {\n paypalSdkPromise = new Promise((resolve, reject) => {\n paypalCheckout.loadPayPalSDK(config, (err: null | undefined | BraintreeError) => {\n if (err) {\n paypalSdkPromise = null;\n\n reject(err);\n } else {\n resolve(paypalCheckout);\n }\n });\n });\n }\n\n return paypalSdkPromise;\n}\n\n// for testing purposes\nexport function resetLoadPayPalSDKOncePromise() {\n paypalSdkPromise = null;\n}\n","// the PayPal side of things uses uppercase keys instead of camel case\n\n/**\n *\n * PayPal constants\n *\n */\nexport const PAYPAL_COMPONENTS = ['buttons', 'messages'];\n\nexport enum PaypalButtonStyleLayoutOption {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport enum PaypalButtonStyleSizeOption {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n RESPONSIVE = 'responsive',\n}\n\nexport enum PaypalButtonStyleColorOption {\n GOLD = 'gold',\n BLUE = 'blue',\n SIlVER = 'silver',\n BLACK = 'black',\n WHITE = 'white',\n}\n\nexport enum PaypalButtonStyleLabelOption {\n CHECKOUT = 'checkout',\n PAY = 'pay',\n BUYNOW = 'buynow',\n PAYPAL = 'paypal',\n CREDIT = 'credit',\n}\n\nexport enum PaypalButtonStyleShapeOption {\n PILL = 'pill',\n RECT = 'rect',\n}\n\n/**\n *\n * PayPal interfaces\n *\n */\nexport interface PaypalSDK {\n Button: PaypalButton;\n checkout: PaypalExpressCheckout;\n FUNDING: PaypalFundingTypeList;\n Buttons(options: PaypalButtonOptions): PaypalButtonRender;\n Messages(options: MessagingOptions): MessagingRender;\n}\n\nexport interface PaypalButton {\n render(options: PaypalButtonOptions, container: string): void;\n}\n\nexport interface PaypalExpressCheckout {\n initXO(): void;\n startFlow(url: string): void;\n closeFlow(): void;\n setup(merchantId: string, options: PaypalExpressCheckoutOptions): void;\n}\n\nexport interface PaypalExpressCheckoutOptions {\n button: string;\n environment: string;\n}\n\nexport interface MessagingOptions {\n amount: number;\n buyerCountry?: string;\n placement: string;\n style?: MessagesStyleOptions;\n}\n\nexport interface MessagesStyleOptions {\n color?: string; // 'blue' | 'black' | 'white' | 'white-no-border' | 'gray' | 'monochrome' | 'grayscale'\n layout?: string; // 'text' | 'flex'\n logo?: {\n type?: string; // 'primary' | 'alternative' | 'inline' | 'none'\n position?: string; // 'left' | 'right' | 'top'\n };\n ratio?: string; // '1x1' | '1x4' | '8x1' | '20x1'\n text?: {\n align?: string; // 'left' | 'right' | 'center'\n color?: string; // 'black' | 'white' | 'monochrome' | 'grayscale'\n size?: number; // from 10 to 16\n };\n}\n\nexport enum MessagingPlacements {\n CART = 'cart',\n HOME = 'homepage',\n PAYMENT = 'payment',\n PRODUCT = 'product',\n}\n\nexport interface MessagingRender {\n render(container: string): void;\n}\n\nexport interface PaypalButtonOptions {\n env?: string;\n commit?: boolean;\n style?: PaypalStyleOptions;\n funding?: PaypalFundingType;\n fundingSource?: string;\n client?: PaypalClientToken;\n payment?(data?: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n onAuthorize?(data: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n createOrder?(data?: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n onApprove?(data?: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n onClick?(payload: ClickCallbackPayload, actions: ClickButtonActions): void;\n onInit?(payload: InitCallbackPayload, actions: InitButtonActions): void;\n onCancel?(): void;\n onError?(error: Error): void;\n}\n\nexport interface PaypalStyleOptions {\n layout?: PaypalButtonStyleLayoutOption;\n size?: PaypalButtonStyleSizeOption;\n color?: PaypalButtonStyleColorOption;\n label?: PaypalButtonStyleLabelOption;\n shape?: PaypalButtonStyleShapeOption;\n tagline?: boolean;\n fundingicons?: boolean;\n height?: number | string;\n}\n\nexport interface PaypalClientToken {\n production?: string;\n sandbox?: string;\n}\n\nexport interface PaypalFundingType {\n allowed?: string[];\n disallowed?: string[];\n}\n\nexport interface PaypalActions {\n payment: PaypalPaymentActions;\n request: PaypalRequestActions;\n}\n\nexport interface PaypalButtonRender {\n render(container: string): void;\n isEligible(): boolean;\n close(): void;\n}\n\nexport interface PaypalAuthorizeData {\n payerId: string;\n paymentId?: string;\n billingToken?: string;\n payerID?: string;\n paymentID?: string;\n}\n\nexport interface PaypalFundingTypeList {\n CARD?: string;\n CREDIT?: string;\n PAYPAL?: string;\n PAYLATER?: string;\n}\n\nexport interface PaypalPaymentActions {\n get(id: string): Promise<unknown>;\n}\n\nexport interface PaypalRequestActions {\n post(url: string, payload?: object, options?: object): Promise<{ id: string }>;\n}\n\nexport interface InitCallbackPayload {\n correlationID: string;\n}\n\nexport interface ClickCallbackPayload {\n fundingSource: string;\n}\n\nexport interface InitButtonActions {\n enable(): void;\n disable(): void;\n}\n\nexport interface ClickButtonActions {\n reject(): void;\n resolve(): void;\n}\n","import { Omit } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport {\n PaypalAuthorizeData,\n PaypalButtonOptions,\n PaypalButtonRender,\n PaypalSDK,\n PaypalStyleOptions,\n} from './paypal';\nimport {\n BraintreeClientCreator,\n BraintreeDataCollectorCreator,\n BraintreeError,\n BraintreeFastlaneCreator,\n BraintreeGooglePaymentCreator,\n BraintreeHostedFieldsTokenizePayload,\n BraintreeModule,\n BraintreeModuleCreator,\n BraintreeModuleCreatorConfig,\n BraintreeThreeDSecureCreator,\n BraintreeTokenizationDetails,\n BraintreeUsBankAccountCreator,\n BraintreeWindow,\n FastlaneStylesSettings,\n VisaCheckoutSDK,\n} from './types';\nimport {\n VisaCheckoutInitOptions,\n VisaCheckoutPaymentSuccessPayload,\n VisaCheckoutTokenizedPayload,\n} from './visacheckout';\n\n/**\n *\n * Constants\n *\n */\nexport enum BraintreeEnv {\n Sandbox = 'sandbox',\n Production = 'production',\n}\n\n/**\n *\n * Common\n *\n */\nexport enum BraintreeModuleName {\n Client = 'client',\n DataCollector = 'dataCollector',\n Fastlane = 'fastlane',\n GooglePayment = 'googlePayment',\n HostedFields = 'hostedFields',\n LocalPayment = 'localPayment',\n Paypal = 'paypal',\n PaypalCheckout = 'paypalCheckout',\n ThreeDSecure = 'threeDSecure',\n UsBankAccount = 'usBankAccount',\n Venmo = 'venmo',\n VisaCheckout = 'visaCheckout',\n}\n\nexport type BraintreeModuleCreators =\n | BraintreeClientCreator\n | BraintreeFastlaneCreator\n | BraintreeDataCollectorCreator\n | BraintreeGooglePaymentCreator\n | BraintreeHostedFieldsCreator\n | BraintreePaypalCreator\n | BraintreePaypalCheckoutCreator\n | BraintreeThreeDSecureCreator\n | BraintreeVenmoCheckoutCreator\n | BraintreeVisaCheckoutCreator\n | BraintreeUsBankAccountCreator\n | BraintreeLocalPaymentCreator;\n\n// TODO: rename to BraintreeSdkModules\nexport interface BraintreeSDK {\n [BraintreeModuleName.Client]?: BraintreeClientCreator;\n [BraintreeModuleName.Fastlane]?: BraintreeFastlaneCreator;\n [BraintreeModuleName.DataCollector]?: BraintreeDataCollectorCreator;\n [BraintreeModuleName.GooglePayment]?: BraintreeGooglePaymentCreator;\n [BraintreeModuleName.HostedFields]?: BraintreeHostedFieldsCreator;\n [BraintreeModuleName.Paypal]?: BraintreePaypalCreator;\n [BraintreeModuleName.PaypalCheckout]?: BraintreePaypalCheckoutCreator;\n [BraintreeModuleName.ThreeDSecure]?: BraintreeThreeDSecureCreator;\n [BraintreeModuleName.Venmo]?: BraintreeVenmoCheckoutCreator;\n [BraintreeModuleName.VisaCheckout]?: BraintreeVisaCheckoutCreator;\n [BraintreeModuleName.UsBankAccount]?: BraintreeUsBankAccountCreator;\n [BraintreeModuleName.LocalPayment]?: BraintreeLocalPaymentCreator;\n}\n\nexport type BraintreeLocalPaymentCreator = BraintreeModuleCreator<\n BraintreeLocalPayment,\n BraintreeLocalPaymentCreateConfig,\n BraintreeError | undefined\n>;\n\nexport interface BraintreeLocalPaymentCreateConfig extends BraintreeModuleCreatorConfig {\n merchantAccountId: string;\n}\n\nexport interface BraintreeInitializationData {\n clientToken: string;\n enableCheckoutPaywallBanner?: boolean;\n intent?: 'authorize' | 'order' | 'sale';\n isCreditEnabled?: boolean;\n isAcceleratedCheckoutEnabled?: boolean;\n isFastlaneStylingEnabled?: boolean;\n isFastlaneEnabled?: boolean;\n isFastlaneShippingOptionAutoSelectEnabled?: boolean;\n fastlaneStyles?: FastlaneStylesSettings;\n isBraintreeAnalyticsV2Enabled?: boolean;\n shouldRunAcceleratedCheckout?: boolean; // TODO: only for BT AXO A/B testing purposes, hence should be removed after testing\n paymentButtonStyles?: Record<string, PaypalStyleOptions>;\n paypalBNPLConfiguration?: PayPalBNPLConfigurationItem[] | null;\n nonce?: string;\n}\n\nexport interface BraintreePaypalRequest {\n amount: string | number;\n billingAgreementDescription?: string;\n currency?: string;\n displayName?: string;\n enableShippingAddress: true;\n flow: 'checkout' | 'vault';\n intent?: 'authorize' | 'order' | 'sale';\n landingPageType?: 'login' | 'billing';\n locale?: string;\n offerCredit?: boolean;\n shippingAddressEditable?: boolean;\n shippingAddressOverride?: BraintreeShippingAddressOverride;\n useraction?: 'commit';\n}\n\nexport interface BraintreeShippingAddressOverride {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n countryCode: string;\n phone?: string;\n recipientName?: string;\n}\n\nexport interface BraintreeTokenizePayload {\n nonce: string;\n type: 'PaypalAccount' | 'VenmoAccount';\n details: BraintreeTokenizationDetails;\n creditFinancingOffered?: {\n totalCost: {\n value: string;\n currency: string;\n };\n term: number;\n monthlyPayment: {\n value: string;\n currency: string;\n };\n totalInsterest: {\n value: string;\n currency: string;\n };\n payerAcceptance: boolean;\n cartAmountImmutable: boolean;\n };\n}\n\nexport type BraintreeFormErrorData = Omit<BraintreeFormFieldState, 'isFocused'>;\n\nexport type BraintreeFormErrorDataKeys =\n | 'number'\n | 'expirationDate'\n | 'expirationMonth'\n | 'expirationYear'\n | 'cvv'\n | 'postalCode';\n\nexport type BraintreeFormErrorsData = Partial<\n Record<BraintreeFormErrorDataKeys, BraintreeFormErrorData>\n>;\n\n/**\n *\n * Braintree Hosted Fields\n *\n */\nexport type BraintreeHostedFieldsCreator = BraintreeModuleCreator<\n BraintreeHostedFields,\n BraintreeHostedFieldsCreatorConfig\n>;\n\nexport interface BraintreeHostedFields {\n getState(): BraintreeHostedFieldsState;\n teardown(): Promise<void>;\n tokenize(\n options?: BraintreeHostedFieldsTokenizeOptions,\n ): Promise<BraintreeHostedFieldsTokenizePayload>;\n on(eventName: string, callback: (event: BraintreeHostedFieldsState) => void): void;\n}\n\nexport interface BraintreeHostedFieldsCreatorConfig extends BraintreeModuleCreatorConfig {\n fields: {\n number?: BraintreeHostedFieldOption;\n expirationDate?: BraintreeHostedFieldOption;\n expirationMonth?: BraintreeHostedFieldOption;\n expirationYear?: BraintreeHostedFieldOption;\n cvv?: BraintreeHostedFieldOption;\n postalCode?: BraintreeHostedFieldOption;\n cardholderName?: BraintreeHostedFieldOption;\n };\n styles?: {\n input?: { [key: string]: string };\n '.invalid'?: { [key: string]: string };\n '.valid'?: { [key: string]: string };\n ':focus'?: { [key: string]: string };\n };\n preventCursorJumps?: boolean;\n}\n\nexport interface BraintreeHostedFieldOption {\n container: string | HTMLElement;\n placeholder?: string;\n type?: string;\n formatInput?: boolean;\n maskInput?: boolean | { character?: string; showLastFour?: string };\n select?: boolean | { options?: string[] };\n maxCardLength?: number;\n maxlength?: number;\n minlength?: number;\n prefill?: string;\n rejectUnsupportedCards?: boolean;\n supportedCardBrands?: { [key: string]: boolean };\n}\n\nexport interface BraintreeHostedFieldsState {\n cards: BraintreeHostedFieldsCard[];\n emittedBy: string;\n fields: {\n number?: BraintreeHostedFieldsFieldData;\n expirationDate?: BraintreeHostedFieldsFieldData;\n expirationMonth?: BraintreeHostedFieldsFieldData;\n expirationYear?: BraintreeHostedFieldsFieldData;\n cvv?: BraintreeHostedFieldsFieldData;\n postalCode?: BraintreeHostedFieldsFieldData;\n };\n}\n\nexport interface BraintreeHostedFieldsCard {\n type: string;\n niceType: string;\n code: { name: string; size: number };\n}\n\nexport interface BraintreeHostedFieldsFieldData {\n container: HTMLElement;\n isFocused: boolean;\n isEmpty: boolean;\n isPotentiallyValid: boolean;\n isValid: boolean;\n}\n\nexport interface BraintreeHostedFieldsTokenizeOptions {\n vault?: boolean;\n fieldsToTokenize?: string[];\n cardholderName?: string;\n billingAddress?: BraintreeBillingAddressRequestData;\n}\n\nexport interface BraintreeBillingAddressRequestData {\n postalCode?: string;\n firstName?: string;\n lastName?: string;\n company?: string;\n streetAddress?: string;\n extendedAddress?: string;\n locality?: string;\n region?: string;\n countryCodeNumeric?: string;\n countryCodeAlpha2?: string;\n countryCodeAlpha3?: string;\n countryName?: string;\n}\n\nexport interface BraintreeHostedFormError extends BraintreeError {\n details?: {\n invalidFieldKeys?: string[];\n };\n}\n\nexport interface BraintreeFormFieldState {\n isFocused: boolean;\n isEmpty: boolean;\n isPotentiallyValid: boolean;\n isValid: boolean;\n}\n\nexport interface TokenizationPayload {\n nonce: string;\n bin: string;\n}\n\n/**\n *\n * Braintree PayPal\n *\n */\nexport type BraintreePaypalCreator = BraintreeModuleCreator<BraintreePaypal>;\n\nexport interface BraintreePaypal {\n closeWindow(): void;\n focusWindow(): void;\n tokenize(options: BraintreePaypalRequest): Promise<BraintreeTokenizePayload>;\n Buttons?(options: PaypalButtonOptions): PaypalButtonRender;\n}\n\nexport interface BraintreeFormOptions {\n fields: BraintreeFormFieldsMap | BraintreeStoredCardFieldsMap;\n styles?: BraintreeFormFieldStylesMap;\n onBlur?(data: BraintreeFormFieldBlurEventData): void;\n onCardTypeChange?(data: BraintreeFormFieldCardTypeChangeEventData): void;\n onFocus?(data: BraintreeFormFieldFocusEventData): void;\n onValidate?(data: BraintreeFormFieldValidateEventData): void;\n onEnter?(data: BraintreeFormFieldEnterEventData): void;\n}\n\nexport enum BraintreeFormFieldType {\n CardCode = 'cardCode',\n CardCodeVerification = 'cardCodeVerification',\n CardExpiry = 'cardExpiry',\n CardName = 'cardName',\n CardNumber = 'cardNumber',\n CardNumberVerification = 'cardNumberVerification',\n}\n\nexport interface BraintreeFormFieldsMap {\n [BraintreeFormFieldType.CardCode]?: BraintreeFormFieldOptions;\n [BraintreeFormFieldType.CardExpiry]: BraintreeFormFieldOptions;\n [BraintreeFormFieldType.CardName]: BraintreeFormFieldOptions;\n [BraintreeFormFieldType.CardNumber]: BraintreeFormFieldOptions;\n}\n\nexport interface BraintreeStoredCardFieldsMap {\n [BraintreeFormFieldType.CardCodeVerification]?: BraintreeStoredCardFieldOptions;\n [BraintreeFormFieldType.CardNumberVerification]?: BraintreeStoredCardFieldOptions;\n}\n\nexport interface BraintreeFormFieldOptions {\n accessibilityLabel?: string;\n containerId: string;\n placeholder?: string;\n}\n\nexport interface BraintreeStoredCardFieldOptions extends BraintreeFormFieldOptions {\n instrumentId: string;\n}\n\nexport interface BraintreeFormFieldStylesMap {\n default?: BraintreeFormFieldStyles;\n error?: BraintreeFormFieldStyles;\n focus?: BraintreeFormFieldStyles;\n}\n\nexport type BraintreeFormFieldStyles = Partial<\n Pick<CSSStyleDeclaration, 'color' | 'fontFamily' | 'fontSize' | 'fontWeight'>\n>;\n\nexport interface BraintreeFormFieldKeyboardEventData {\n fieldType: string;\n errors?: BraintreeFormErrorsData;\n}\n\nexport type BraintreeFormFieldBlurEventData = BraintreeFormFieldKeyboardEventData;\nexport type BraintreeFormFieldEnterEventData = BraintreeFormFieldKeyboardEventData;\nexport type BraintreeFormFieldFocusEventData = BraintreeFormFieldKeyboardEventData;\n\nexport interface BraintreeFormFieldCardTypeChangeEventData {\n cardType?: string;\n}\n\nexport interface BraintreeFormFieldValidateEventData {\n errors: {\n [BraintreeFormFieldType.CardCode]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardExpiry]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardName]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardNumber]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardCodeVerification]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardNumberVerification]?: BraintreeFormFieldValidateErrorData[];\n };\n isValid: boolean;\n}\n\nexport interface BraintreeFormFieldValidateErrorData {\n fieldType: string;\n message: string;\n type: string;\n}\n\n/**\n *\n * Braintree PayPal Checkout\n *\n */\nexport type BraintreePaypalCheckoutCreator = BraintreeModuleCreator<BraintreePaypalCheckout>;\n\nexport interface BraintreePaypalCheckout {\n loadPayPalSDK(\n config: BraintreePaypalSdkCreatorConfig,\n callback: (err: null | undefined | BraintreeError) => void,\n ): void;\n createPayment(options: BraintreePaypalRequest): Promise<string>;\n teardown(): Promise<void>;\n tokenizePayment(options: PaypalAuthorizeData): Promise<BraintreeTokenizePayload>;\n}\n\nexport interface BraintreePaypalSdkCreatorConfig {\n components?: string;\n currency?: string;\n intent?: string;\n isCreditEnabled?: boolean;\n commit?: boolean;\n}\n\n/**\n *\n * Braintree Venmo\n *\n */\nexport type BraintreeVenmoCheckoutCreator = BraintreeModuleCreator<\n BraintreeVenmoCheckout,\n BraintreeVenmoCreatorConfig\n>;\n\nexport interface BraintreeVenmoCheckout extends BraintreeModule {\n tokenize(callback: (error: BraintreeError, payload: BraintreeTokenizePayload) => unknown): void;\n isBrowserSupported(): boolean;\n}\n\nexport interface BraintreeVenmoCreatorConfig extends BraintreeModuleCreatorConfig {\n allowDesktop?: boolean;\n paymentMethodUsage?: string;\n}\n\n/**\n *\n * Braintree Visa Checkout\n *\n */\nexport type BraintreeVisaCheckoutCreator = BraintreeModuleCreator<BraintreeVisaCheckout>;\n\nexport interface BraintreeVisaCheckout extends BraintreeModule {\n tokenize(payment: VisaCheckoutPaymentSuccessPayload): Promise<VisaCheckoutTokenizedPayload>;\n createInitOptions(options: Partial<VisaCheckoutInitOptions>): VisaCheckoutInitOptions;\n}\n\n/**\n *\n * Braintree BNPL Configurator related types\n *\n */\nexport interface PayPalBNPLConfigurationItem {\n id: string;\n name: string;\n status: boolean;\n styles: Record<string, string>;\n}\n\n/**\n *\n * Braintree Local Methods\n *\n */\nexport interface BraintreeLocalPaymentConfig {\n paymentType: string;\n amount: number;\n fallback: {\n url: string;\n buttonText: string;\n };\n currencyCode: string;\n shippingAddressRequired: boolean;\n email: string;\n givenName: string;\n surname: string;\n address: {\n countryCode: string;\n };\n onPaymentStart(data: BraintreeLPMPaymentStartData, start: () => Promise<void>): Promise<void>;\n}\n\nexport interface BraintreeLPMStartPaymentError {\n code: string;\n}\n\nexport interface BraintreeLPMPaymentStartData {\n paymentId: string;\n}\n\nexport interface BraintreeLocalPaymentsPayload {\n nonce: string;\n}\n\nexport interface BraintreeLocalPayment extends BraintreeModule {\n startPayment(\n config: BraintreeLocalPaymentConfig,\n callback: (\n startPaymentError: BraintreeLPMStartPaymentError | undefined,\n payload: BraintreeLocalPaymentsPayload,\n ) => Promise<void>,\n ): void;\n}\n\n/**\n *\n * Other\n *\n */\nexport interface BraintreeHostWindow extends BraintreeWindow {\n braintree?: BraintreeSDK;\n paypal?: PaypalSDK;\n V?: VisaCheckoutSDK;\n}\n","import { BraintreeError } from '../types';\n\nexport default function isBraintreeError(error: unknown): error is BraintreeError {\n return Boolean(\n typeof error === 'object' &&\n error !== null &&\n ('type' in error || 'message' in error || 'code' in error),\n );\n}\n","import { supportsPopups } from '@braintree/browser-detection';\nimport { isEmpty } from 'lodash';\n\nimport {\n Address,\n CreditCardInstrument,\n LegacyAddress,\n NonceInstrument,\n NotInitializedError,\n NotInitializedErrorType,\n Payment,\n PaymentArgumentInvalidError,\n PaymentInvalidFormError,\n PaymentInvalidFormErrorDetails,\n UnsupportedBrowserError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { Overlay } from '@bigcommerce/checkout-sdk/ui';\n\nimport BraintreeScriptLoader from './braintree-script-loader';\nimport loadPayPalSDKOnce from './load-paypal-sdk-once';\nimport {\n BraintreeClient,\n BraintreeDataCollector,\n BraintreeDataCollectorCreatorConfig,\n BraintreeDataCollectors,\n BraintreeEnv,\n BraintreeError,\n BraintreeFastlane,\n BraintreeFastlaneStylesOption,\n BraintreeHostWindow,\n BraintreeModule,\n BraintreePaypal,\n BraintreePaypalCheckout,\n BraintreePaypalSdkCreatorConfig,\n BraintreeRequestData,\n BraintreeShippingAddressOverride,\n BraintreeThreeDSecure,\n BraintreeThreeDSecureOptions,\n BraintreeTokenizationDetails,\n BraintreeTokenizePayload,\n BraintreeVenmoCheckout,\n BraintreeVenmoCreatorConfig,\n BraintreeVerifyPayload,\n PAYPAL_COMPONENTS,\n TokenizationPayload,\n} from './types';\nimport isBraintreeError from './utils/is-braintree-error';\nimport isCreditCardInstrumentLike from './utils/is-credit-card-instrument-like';\n\nexport interface PaypalConfig {\n amount: number;\n currency: string;\n locale: string;\n offerCredit?: boolean;\n shippingAddressEditable?: boolean;\n shippingAddressOverride?: BraintreeShippingAddressOverride;\n shouldSaveInstrument?: boolean;\n}\n\n// Info: this class is deprecated and will be removed in a nearest future. Please, do not add anything here.\nexport default class BraintreeIntegrationService {\n private client?: Promise<BraintreeClient>;\n private clientToken?: string;\n private dataCollectors: BraintreeDataCollectors = {};\n private paypalCheckout?: BraintreePaypalCheckout;\n private braintreePaypal?: Promise<BraintreePaypal>;\n private threeDSecureOptions?: BraintreeThreeDSecureOptions;\n private threeDS?: Promise<BraintreeThreeDSecure>;\n private venmoCheckout?: BraintreeVenmoCheckout;\n\n constructor(\n private braintreeScriptLoader: BraintreeScriptLoader,\n private braintreeHostWindow: BraintreeHostWindow,\n private overlay?: Overlay,\n ) {}\n\n initialize(clientToken: string, threeDSecureOptions?: BraintreeThreeDSecureOptions) {\n this.clientToken = clientToken;\n this.threeDSecureOptions = threeDSecureOptions;\n }\n\n async getBraintreeFastlane(\n cardId?: string,\n isTestModeEnabled?: boolean,\n styles?: BraintreeFastlaneStylesOption,\n ): Promise<BraintreeFastlane> {\n if (isTestModeEnabled) {\n window.localStorage.setItem('axoEnv', 'sandbox');\n window.localStorage.setItem('fastlaneEnv', 'sandbox');\n }\n\n if (!this.braintreeHostWindow.braintreeFastlane) {\n const clientToken = this.getClientTokenOrThrow();\n const client = await this.getClient();\n const deviceData = await this.getSessionId(cardId);\n\n const braintreeFastlaneCreator = await this.braintreeScriptLoader.loadFastlane();\n\n const defaultStyles = {\n root: {\n backgroundColorPrimary: 'transparent',\n },\n };\n\n this.braintreeHostWindow.braintreeFastlane = await braintreeFastlaneCreator.create({\n authorization: clientToken,\n client,\n deviceData,\n styles: styles || defaultStyles,\n });\n }\n\n return this.braintreeHostWindow.braintreeFastlane;\n }\n\n // Info: This method is deprecated. Use getClient method from BraintreeSdk class instead\n async getClient(): Promise<BraintreeClient> {\n if (!this.client) {\n const clientToken = this.getClientTokenOrThrow();\n const clientCreator = await this.braintreeScriptLoader.loadClient();\n\n this.client = clientCreator.create({ authorization: clientToken });\n }\n\n return this.client;\n }\n\n getPaypal(): Promise<BraintreePaypal> {\n if (!this.braintreePaypal) {\n this.braintreePaypal = Promise.all([\n this.getClient(),\n this.braintreeScriptLoader.loadPaypal(),\n ]).then(([client, paypal]) => paypal.create({ client }));\n }\n\n return this.braintreePaypal;\n }\n\n paypal({ shouldSaveInstrument, ...config }: PaypalConfig): Promise<BraintreeTokenizePayload> {\n const newWindowFlow = supportsPopups();\n\n return this.getPaypal()\n .then((paypal) => {\n if (newWindowFlow) {\n this.overlay?.show({\n onClick: () => paypal.focusWindow(),\n });\n }\n\n return paypal.tokenize({\n enableShippingAddress: true,\n flow: shouldSaveInstrument ? 'vault' : 'checkout',\n useraction: 'commit',\n ...config,\n });\n })\n .then((response) => {\n this.overlay?.remove();\n\n return response;\n })\n .catch((error) => {\n this.overlay?.remove();\n\n throw error;\n });\n }\n\n async getPaypalCheckout(\n config: Partial<BraintreePaypalSdkCreatorConfig>,\n onSuccess: (instance: BraintreePaypalCheckout) => void,\n onError: (error: BraintreeError) => void,\n ): Promise<BraintreePaypalCheckout> {\n const client = await this.getClient();\n const paypalCheckout = await this.braintreeScriptLoader.loadPaypalCheckout();\n\n const paypalCheckoutConfig = { client };\n const paypalCheckoutCallback = (\n error: BraintreeError | undefined,\n braintreePaypalCheckout: BraintreePaypalCheckout,\n ) => {\n if (error) {\n return onError(error);\n }\n\n const paypalSdkLoadCallback = () => onSuccess(braintreePaypalCheckout);\n const paypalSdkLoadConfig = {\n currency: config.currency,\n ...(config.isCreditEnabled && { 'enable-funding': 'paylater' }),\n components: PAYPAL_COMPONENTS.toString(),\n intent: config.intent,\n commit: config.commit ?? true,\n };\n\n if (!this.braintreeHostWindow.paypal) {\n void loadPayPalSDKOnce(braintreePaypalCheckout, paypalSdkLoadConfig).then(\n paypalSdkLoadCallback,\n );\n } else {\n onSuccess(braintreePaypalCheckout);\n }\n };\n\n this.paypalCheckout = await paypalCheckout.create(\n paypalCheckoutConfig,\n paypalCheckoutCallback,\n );\n\n return this.paypalCheckout;\n }\n\n async getDataCollector(\n options?: Partial<BraintreeDataCollectorCreatorConfig>,\n ): Promise<BraintreeDataCollector> {\n const cacheKey: keyof BraintreeDataCollectors = options?.paypal ? 'paypal' : 'default';\n\n let cached = this.dataCollectors[cacheKey];\n\n if (!cached) {\n try {\n const client = await this.getClient();\n const dataCollector = await this.braintreeScriptLoader.loadDataCollector();\n\n const dataCollectorConfig: BraintreeDataCollectorCreatorConfig = {\n client,\n kount: true,\n ...options,\n };\n\n cached = await dataCollector.create(dataCollectorConfig);\n } catch (error) {\n if (isBraintreeError(error) && error.code === 'DATA_COLLECTOR_KOUNT_NOT_ENABLED') {\n cached = {\n deviceData: undefined,\n teardown: () => Promise.resolve(),\n };\n } else {\n throw error;\n }\n }\n\n this.dataCollectors[cacheKey] = cached;\n }\n\n return cached;\n }\n\n getBraintreeEnv(isTestMode = false): BraintreeEnv {\n return isTestMode ? BraintreeEnv.Sandbox : BraintreeEnv.Production;\n }\n\n mapToBraintreeShippingAddressOverride(address: Address): BraintreeShippingAddressOverride {\n return {\n recipientName: `${address.firstName} ${address.lastName}`,\n line1: address.address1,\n line2: address.address2,\n city: address.city,\n state: address.stateOrProvinceCode,\n postalCode: address.postalCode,\n countryCode: address.countryCode,\n phone: address.phone,\n };\n }\n\n mapToLegacyShippingAddress(details: BraintreeTokenizationDetails): Partial<LegacyAddress> {\n const { email, phone, shippingAddress } = details;\n const recipientName = shippingAddress?.recipientName || '';\n const [firstName, lastName] = recipientName.split(' ');\n\n return {\n email,\n first_name: firstName || '',\n last_name: lastName || '',\n phone_number: phone,\n address_line_1: shippingAddress?.line1,\n address_line_2: shippingAddress?.line2,\n city: shippingAddress?.city,\n state: shippingAddress?.state,\n country_code: shippingAddress?.countryCode,\n postal_code: shippingAddress?.postalCode,\n };\n }\n\n mapToLegacyBillingAddress(details: BraintreeTokenizationDetails): Partial<LegacyAddress> {\n const { billingAddress, email, firstName, lastName, phone, shippingAddress } = details;\n\n const address = billingAddress || shippingAddress;\n\n return {\n email,\n first_name: firstName,\n last_name: lastName,\n phone_number: phone,\n address_line_1: address?.line1,\n address_line_2: address?.line2,\n city: address?.city,\n state: address?.state,\n country_code: address?.countryCode,\n postal_code: address?.postalCode,\n };\n }\n\n removeElement(elementId?: string): void {\n const element = elementId && document.getElementById(elementId);\n\n if (element) {\n element.remove();\n }\n }\n\n async getSessionId(cartId?: string): Promise<string | undefined> {\n const { deviceData } = await this.getDataCollector({\n riskCorrelationId: cartId,\n });\n\n return deviceData;\n }\n\n async teardown(): Promise<void> {\n await this.teardownModule(this.dataCollectors.default);\n await this.teardownModule(this.dataCollectors.paypal);\n this.dataCollectors = {};\n\n await this.teardownModule(this.paypalCheckout);\n this.paypalCheckout = undefined;\n\n // await this.teardownModule(this._venmoCheckout);\n // this._venmoCheckout = undefined;\n\n // await this.teardownModule(this._visaCheckout);\n // this._visaCheckout = undefined;\n }\n\n async get3DS(): Promise<BraintreeThreeDSecure> {\n if (!this.threeDS) {\n this.threeDS = Promise.all([\n this.getClient(),\n this.braintreeScriptLoader.load3DS(),\n ]).then(([client, threeDSecure]) => threeDSecure.create({ client, version: 2 }));\n }\n\n return this.threeDS;\n }\n\n async getVenmoCheckout(\n venmoConfig?: BraintreeVenmoCreatorConfig,\n ): Promise<BraintreeVenmoCheckout> {\n if (!this.venmoCheckout) {\n const client = await this.getClient();\n const venmoCheckout = await this.braintreeScriptLoader.loadVenmoCheckout();\n\n const venmoCheckoutConfig = {\n client,\n allowDesktop: true,\n paymentMethodUsage: 'multi_use',\n ...(venmoConfig || {}),\n };\n\n this.venmoCheckout = await new Promise<BraintreeVenmoCheckout>((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n venmoCheckout.create(\n venmoCheckoutConfig,\n (error: BraintreeError, braintreeVenmoCheckout: BraintreeVenmoCheckout) => {\n if (error) {\n return reject(error);\n }\n\n if (!braintreeVenmoCheckout.isBrowserSupported()) {\n return reject(new UnsupportedBrowserError());\n }\n\n resolve(braintreeVenmoCheckout);\n },\n );\n });\n }\n\n return this.venmoCheckout;\n }\n\n /*\n Braintree Credit Card and Braintree Hosted Form\n */\n async verifyCard(\n payment: Payment,\n billingAddress: Address,\n amount: number,\n ): Promise<NonceInstrument> {\n const tokenizationPayload = await this.tokenizeCard(payment, billingAddress);\n\n return this.challenge3DSVerification(tokenizationPayload, amount);\n }\n\n async tokenizeCard(payment: Payment, billingAddress: Address): Promise<TokenizationPayload> {\n const { paymentData } = payment;\n\n if (!isCreditCardInstrumentLike(paymentData)) {\n throw new PaymentArgumentInvalidError(['payment.paymentData']);\n }\n\n const errors = this.getErrorsRequiredFields(paymentData);\n\n if (!isEmpty(errors)) {\n throw new PaymentInvalidFormError(errors);\n }\n\n const requestData = this.mapToCreditCard(paymentData, billingAddress);\n const client = await this.getClient();\n const { creditCards } = await client.request(requestData);\n\n return {\n nonce: creditCards[0].nonce,\n bin: creditCards[0].details.bin,\n };\n }\n\n async challenge3DSVerification(\n tokenizationPayload: TokenizationPayload,\n amount: number,\n ): Promise<BraintreeVerifyPayload> {\n const threeDSecure = await this.get3DS();\n\n return this.present3DSChallenge(threeDSecure, amount, tokenizationPayload);\n }\n\n private teardownModule(module?: BraintreeModule) {\n return module ? module.teardown() : Promise.resolve();\n }\n\n private getClientTokenOrThrow(): string {\n if (!this.clientToken) {\n throw new NotInitializedError(NotInitializedErrorType.PaymentNotInitialized);\n }\n\n return this.clientToken;\n }\n\n private getErrorsRequiredFields(\n paymentData: CreditCardInstrument,\n ): PaymentInvalidFormErrorDetails {\n const { ccNumber, ccExpiry } = paymentData;\n const errors: PaymentInvalidFormErrorDetails = {};\n\n if (!ccNumber) {\n errors.ccNumber = [\n {\n message: 'Credit card number is required',\n type: 'required',\n },\n ];\n }\n\n if (!ccExpiry) {\n errors.ccExpiry = [\n {\n message: 'Expiration date is required',\n type: 'required',\n },\n ];\n }\n\n return errors;\n }\n\n private mapToCreditCard(\n creditCard: CreditCardInstrument,\n billingAddress?: Address,\n ): BraintreeRequestData {\n return {\n data: {\n creditCard: {\n cardholderName: creditCard.ccName,\n number: creditCard.ccNumber,\n cvv: creditCard.ccCvv,\n expirationDate: `${creditCard.ccExpiry.month}/${creditCard.ccExpiry.year}`,\n options: {\n validate: false,\n },\n billingAddress: billingAddress && {\n countryCodeAlpha2: billingAddress.countryCode,\n locality: billingAddress.city,\n countryName: billingAddress.country,\n postalCode: billingAddress.postalCode,\n streetAddress: billingAddress.address2\n ? `${billingAddress.address1} ${billingAddress.address2}`\n : billingAddress.address1,\n },\n },\n },\n endpoint: 'payment_methods/credit_cards',\n method: 'post',\n };\n }\n\n private present3DSChallenge(\n threeDSecure: BraintreeThreeDSecure,\n amount: number,\n tokenizationPayload: TokenizationPayload,\n ): Promise<BraintreeVerifyPayload> {\n const { nonce, bin } = tokenizationPayload;\n\n if (!nonce) {\n throw new NotInitializedError(NotInitializedErrorType.PaymentNotInitialized);\n }\n\n const { challengeRequested = true, additionalInformation = undefined } =\n this.threeDSecureOptions || {};\n\n const roundedAmount = amount.toFixed(2);\n\n return threeDSecure.verifyCard({\n amount: Number(roundedAmount),\n bin,\n challengeRequested,\n nonce,\n onLookupComplete: (_data, next) => {\n next();\n },\n collectDeviceData: true,\n additionalInformation,\n });\n }\n}\n","import { CreditCardInstrument } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nexport default function isCreditCardInstrumentLike(\n instrument: unknown,\n): instrument is CreditCardInstrument {\n if (typeof instrument !== 'object' || instrument === null) {\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const creditCardInstrument = instrument as Partial<Record<string, unknown>>;\n\n return (\n typeof creditCardInstrument.ccExpiry === 'object' &&\n creditCardInstrument.ccExpiry !== null &&\n typeof creditCardInstrument.ccNumber === 'string' &&\n typeof creditCardInstrument.ccName === 'string'\n );\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when the client library of a payment method fails\n * to load, or for some reason, it is inaccessible.\n */\nexport default class PaymentMethodClientUnavailableError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'Unable to proceed because the client library of a payment method is not loaded or ready to be used.',\n );\n\n this.name = 'PaymentMethodClientUnavailableError';\n this.type = 'payment_method_client_unavailable';\n }\n}\n","export const BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION = '3.128.0';\nexport const BRAINTREE_SDK_DEFAULT_VERSION = '3.123.2';\nexport const BRAINTREE_SDK_STABLE_VERSION = '3.106.0';\n","import { BraintreeModuleName } from './braintree';\nimport {\n BRAINTREE_SDK_DEFAULT_VERSION,\n BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION,\n BRAINTREE_SDK_STABLE_VERSION,\n} from './braintree-sdk-verison';\n\nexport const BRAINTREE_SDK_SCRIPTS_INTEGRITY = {\n [BRAINTREE_SDK_STABLE_VERSION]: {\n [BraintreeModuleName.Client]:\n 'sha384-26BXDNnJI23JYRyFBj4xe4sVNrUSSiSSu11kxVXNM/vEPONm4LuL00w6ZaTgQewt',\n [BraintreeModuleName.PaypalCheckout]:\n 'sha384-B+vzbZwnQtzWBthpkT4TXKUibO65tyeK7eCxSvpblgprTep2+IAXB2Cxxjrn710O',\n [BraintreeModuleName.Paypal]:\n 'sha384-uyAGL1/3+XJAHnGoNy4eCoXdzJ4f7Ilzp+6w9PNnEjs6DCCz9WMyJjMN1gzc78U+',\n [BraintreeModuleName.LocalPayment]:\n 'sha384-LIvOEMkIVEwVuYBdVOQc1AC5YbGGlwyfUheS0ACK218D2STuVYQlZ4FyEPowAEfT',\n [BraintreeModuleName.DataCollector]:\n 'sha384-1bo9JDz+Kscthc085cCKWur8CLwUoBpoNyxsDi7932mCl0zFq3A5mv+FQLw9GHpV',\n [BraintreeModuleName.UsBankAccount]:\n 'sha384-xmHBVaU+w74V+OebD3AaPONFxHUGMf+QRs8G/JxVPXNNP7MDa2jL0ICWHIe2tTfJ',\n [BraintreeModuleName.GooglePayment]:\n 'sha384-WKDJl8mqoP82qZpMGH6AbZxnvXnSW8ILV4M64CyMLiugGMwu7LyP89wjCkHqsiBe',\n [BraintreeModuleName.ThreeDSecure]:\n 'sha384-VQUlpGHzsGvs5XeiGFip7EXRsvoHWEXDVmgCacfbyieZI9mdBOqq3NSoyo28OCOB',\n [BraintreeModuleName.VisaCheckout]:\n 'sha384-yx7mADfzTN0T43Q6rlH49LIg1EJ0iUZgBp/EczX9LXsUGkySgxrD+nWHQRBkyfoT',\n [BraintreeModuleName.Venmo]:\n 'sha384-QX4rPjoj1ZDhuG0aSyKs56lEKDqTMTcjYxUHY1SzO5VZDsqIE2NTkqot7KNSCyov',\n [BraintreeModuleName.HostedFields]:\n 'sha384-VvYBACfSu0Cr/J32uKmxG7AXcNOJE1AzIIL3kbikyS7YKp5fz5Is+NzNP/lyauNy',\n [BraintreeModuleName.Fastlane]:\n 'sha384-9oGsZMRZwpGtDEDYa/dFt76dECqj1xAni9gIKgc3KfMIiRnR73nEeeUDLiBzxhFa',\n },\n [BRAINTREE_SDK_DEFAULT_VERSION]: {\n [BraintreeModuleName.Client]:\n 'sha384-o+nbQGcwNNxIBeXeu3+XmbSq+Cg8R3EN3N0l5hXCgMMU2RGY0t1z0LroSEIAbfAO',\n [BraintreeModuleName.PaypalCheckout]:\n 'sha384-WrfbWPBS4mH86GAoycPSgiH8hQ8KH7A67C93Hjhunv/xhNk2YpBn3wbFA4Fhg9U/',\n [BraintreeModuleName.Paypal]:\n 'sha384-VF389nvvrRUgDsTXMxTYORDtVegB9IQa3Cxr//DyJnLYnz8/X8VCzEvck2c+Megt',\n [BraintreeModuleName.LocalPayment]:\n 'sha384-tZKx2rEQbfmZpoPSY5VPmJEhaq4X75dLvwHMs3VE9U+C8lPyw+hWTIL1+GPvWCIH',\n [BraintreeModuleName.DataCollector]:\n 'sha384-E6k3wOpP7syCDDwaRDLF06942Y00NkbwJvWi2OQXwwKzGwG5fd3E7RFUvCCecfvO',\n [BraintreeModuleName.UsBankAccount]:\n 'sha384-258FON8LZGG0W9Qaz4Jij83pZHu30YnKjJA7gNulLBh6CclkucgF+tHDQuYFRYfW',\n [BraintreeModuleName.GooglePayment]:\n 'sha384-taJ2p/0+n0VH328POAoBiuEbL3tnHUTE9S42hK1V+Txs3X+QYjZOyKW35JgHRFfO',\n [BraintreeModuleName.ThreeDSecure]:\n 'sha384-+NSZH4Zj3sO5bdWvPKhU5N16QDxeueTVTnUVeleeESkhLSaz4Ob1hh/5myecc9Ym',\n [BraintreeModuleName.VisaCheckout]:\n 'sha384-66DiBjghxk1OmBj8aksN8gbQ+CwoQcx1vPfiXUN08g1iQVM+BwewF0p7toM3i7SS',\n [BraintreeModuleName.Venmo]:\n 'sha384-B5UwY42kE4RoLoWbQ7YpqosUlUad2/DlGWiw0HhoZbSPk30CQAaSA10ohyLDTkDU',\n [BraintreeModuleName.HostedFields]:\n 'sha384-Aw9EesSaUeWxe36PqEHiOyOyOq8M6CIb1gw7/yHNVPRzGtFXXcd2OQ8qXrIlOj2P',\n [BraintreeModuleName.Fastlane]:\n 'sha384-rhBL1hpZ71JqG+2TsT0Dih47mbjx8cjJCpeZjk9tw3df1gFMKfCTmMyZunhr7H4Y',\n },\n [BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION]: {\n [BraintreeModuleName.Client]:\n 'sha384-0WNxksIpRP+fYZiIdr12g6DBUQfLDzYCQJZtR/C8KkcwSGhPHfcFp3tTaGcMyFTq',\n [BraintreeModuleName.PaypalCheckout]:\n 'sha384-lWM1jk4BOxoDNV6Kop7tVNvQgINlmEVz0c/OwM+HNHK3QC8xqwd54Ovrt2QRDTjh',\n [BraintreeModuleName.Paypal]:\n 'sha384-fXUmVxC2EMZBDXZ7eTHSTL/LFBrHej/MSXT/vTBXvra4lzgLNGvREAp+x0GYObuH',\n [BraintreeModuleName.LocalPayment]:\n 'sha384-pha1xGuGSkmZH5x9aqHvRaO4xLea7rmQ/79PFj9zxNzxuFcOWZg7gOP7FibygOEC',\n [BraintreeModuleName.DataCollector]:\n 'sha384-Q6PI2F9eekWbAxhroybl+aEcvqhdowN/EQlGwBUyJOzPFn9982u9xl6SU6XfGKzc',\n [BraintreeModuleName.UsBankAccount]:\n 'sha384-W3RLQSKJL1tQ3+Y7mP6tmkamtZ8bV4Yw/XxL9Jj5JtXHraD8loMF8hAIG5m2zK7F',\n [BraintreeModuleName.GooglePayment]:\n 'sha384-TITQMsFWA3elDNGP2mWz2oKBo4qjt+TlqzovcaPoeBiAh/wPBi6nae50ADdgU1/i',\n [BraintreeModuleName.ThreeDSecure]:\n 'sha384-YiycYN89ZlL/Evcaq4y1ajW1mhd7JYfZBDuOwHtIn4/Jnm20GL+/XCM+zYAwWD8D',\n [BraintreeModuleName.VisaCheckout]:\n 'sha384-/OdaTv9qrkKzjObtUe6yzfDhHozFW/+uXlrSl736sOZRJpjGQETvpYXqMFFg69xv',\n [BraintreeModuleName.Venmo]:\n 'sha384-dA+ojdW9vbJS4JavcXyOs9d5uZHJg5dNtYupoPSH2zsXIiYDVS5amLb/u8qmQ6oz',\n [BraintreeModuleName.HostedFields]:\n 'sha384-31ZkS58+iaWsW06ftW52zzVZFp43WPd7pNYRiddYynSNg6Oh7WGbSFGorAUH6T1z',\n [BraintreeModuleName.Fastlane]:\n 'sha384-jlbrwNvL3HvLAUCtLSmrnQ2GH1udCUrRS/bVmReAS5fuIVvcW8Pko/Gkg82tlgtr',\n },\n};\n","import { ScriptLoader } from '@bigcommerce/script-loader';\n\nimport { PaymentMethodClientUnavailableError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { BRAINTREE_SDK_SCRIPTS_INTEGRITY } from './braintree-sdk-scripts-integrity';\nimport isManageableBraintreeSDKVersion from './isManageableBraintreeSDKVersion';\nimport {\n BraintreeClientCreator,\n BraintreeDataCollectorCreator,\n BraintreeFastlaneCreator,\n BraintreeGooglePaymentCreator,\n BraintreeHostedFieldsCreator,\n BraintreeHostWindow,\n BraintreeLocalPaymentCreator,\n BraintreeModuleCreators,\n BraintreeModuleName,\n BraintreePaypalCheckoutCreator,\n BraintreePaypalCreator,\n BraintreeThreeDSecureCreator,\n BraintreeUsBankAccountCreator,\n BraintreeVenmoCheckoutCreator,\n BraintreeVisaCheckoutCreator,\n SDKVersionManager,\n} from './types';\nimport { VisaCheckoutSDK } from './visacheckout';\n\nexport default class BraintreeScriptLoader {\n constructor(\n private scriptLoader: ScriptLoader,\n private braintreeHostWindow: BraintreeHostWindow,\n private braintreeSDKVersionManager: SDKVersionManager,\n ) {}\n\n async loadClient(): Promise<BraintreeClientCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeClientCreator>(\n BraintreeModuleName.Client,\n 'client.min.js',\n );\n }\n\n async loadFastlane(): Promise<BraintreeFastlaneCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeFastlaneCreator>(\n BraintreeModuleName.Fastlane,\n 'fastlane.min.js',\n );\n }\n\n async loadPaypalCheckout(): Promise<BraintreePaypalCheckoutCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreePaypalCheckoutCreator>(\n BraintreeModuleName.PaypalCheckout,\n 'paypal-checkout.min.js',\n );\n }\n\n async loadPaypal(): Promise<BraintreePaypalCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreePaypalCreator>(\n BraintreeModuleName.Paypal,\n 'paypal.min.js',\n );\n }\n\n async loadLocalPayment(): Promise<BraintreeLocalPaymentCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeLocalPaymentCreator>(\n BraintreeModuleName.LocalPayment,\n 'local-payment.min.js',\n );\n }\n\n async loadDataCollector(): Promise<BraintreeDataCollectorCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeDataCollectorCreator>(\n BraintreeModuleName.DataCollector,\n 'data-collector.min.js',\n );\n }\n\n async loadUsBankAccount(): Promise<BraintreeUsBankAccountCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeUsBankAccountCreator>(\n BraintreeModuleName.UsBankAccount,\n 'us-bank-account.min.js',\n );\n }\n\n async loadGooglePayment(): Promise<BraintreeGooglePaymentCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeGooglePaymentCreator>(\n BraintreeModuleName.GooglePayment,\n 'google-payment.min.js',\n );\n }\n\n async load3DS(): Promise<BraintreeThreeDSecureCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeThreeDSecureCreator>(\n BraintreeModuleName.ThreeDSecure,\n 'three-d-secure.min.js',\n );\n }\n\n loadVisaCheckout(): Promise<BraintreeVisaCheckoutCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeVisaCheckoutCreator>(\n BraintreeModuleName.VisaCheckout,\n 'visa-checkout.min.js',\n );\n }\n\n loadVenmoCheckout(): Promise<BraintreeVenmoCheckoutCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeVenmoCheckoutCreator>(\n BraintreeModuleName.Venmo,\n 'venmo.min.js',\n );\n }\n\n async loadHostedFields(): Promise<BraintreeHostedFieldsCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeHostedFieldsCreator>(\n BraintreeModuleName.HostedFields,\n 'hosted-fields.min.js',\n );\n }\n\n async loadVisaCheckoutSdk(testMode?: boolean): Promise<VisaCheckoutSDK> {\n if (this.braintreeHostWindow.V) {\n return this.braintreeHostWindow.V;\n }\n\n const hash = testMode\n ? 'sha384-0eu1s1GtqzXlL9DtLgmwzC5WWlEH/ADRM0n38cVQkvtT+W/gey96rcb1LwuUOPDm'\n : 'sha384-1f1csvP3ZFxg4dILH1GaY4LHlZ0oX7Rk83rxmLlwbnIi4TM0NYzXoev1VoEiVDS6';\n\n return this.scriptLoader\n .loadScript(\n `//${\n testMode ? 'sandbox-' : ''\n }assets.secure.checkout.visa.com/checkout-widget/resources/js/integration/v1/sdk.js`,\n {\n async: true,\n attributes: {\n integrity: hash,\n crossorigin: 'anonymous',\n },\n },\n )\n .then(() => {\n if (!this.braintreeHostWindow.V) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.braintreeHostWindow.V;\n });\n }\n\n private async loadBraintreeModuleOrThrow<T extends BraintreeModuleCreators>(\n braintreeModuleName: BraintreeModuleName,\n fileName: string,\n ): Promise<T> {\n let module = this.getBraintreeModule(braintreeModuleName);\n\n if (module) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return module as T;\n }\n\n const braintreeSdkVersion = this.braintreeSDKVersionManager.getSDKVersion();\n\n const scriptPath = `//js.braintreegateway.com/web/${braintreeSdkVersion}/js/${fileName}`;\n\n const integrity = isManageableBraintreeSDKVersion(braintreeSdkVersion)\n ? this.getIntegrityValuesByModuleName(braintreeModuleName, braintreeSdkVersion)\n : undefined;\n\n await this.scriptLoader.loadScript(\n scriptPath,\n integrity\n ? {\n async: true,\n attributes: {\n integrity,\n crossorigin: 'anonymous',\n },\n }\n : undefined,\n );\n\n module = this.getBraintreeModule(braintreeModuleName);\n\n if (!module) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return module as T;\n }\n\n private getBraintreeModule(\n braintreeModuleName: BraintreeModuleName,\n ): BraintreeModuleCreators | undefined {\n return this.braintreeHostWindow.braintree?.[braintreeModuleName];\n }\n\n private getIntegrityValuesByModuleName(\n moduleName: BraintreeModuleName,\n version: keyof typeof BRAINTREE_SDK_SCRIPTS_INTEGRITY,\n ): string {\n const integrity = BRAINTREE_SDK_SCRIPTS_INTEGRITY[version][moduleName];\n\n if (!integrity) {\n throw new Error('Unexpected fileName value');\n }\n\n return integrity;\n }\n}\n","import { BRAINTREE_SDK_SCRIPTS_INTEGRITY } from './braintree-sdk-scripts-integrity';\n\nfunction isManageableBraintreeSDKVersion(\n version: string,\n): version is keyof typeof BRAINTREE_SDK_SCRIPTS_INTEGRITY {\n return version in BRAINTREE_SDK_SCRIPTS_INTEGRITY;\n}\n\nexport default isManageableBraintreeSDKVersion;\n","import { BRAINTREE_SDK_DEFAULT_VERSION } from './braintree-sdk-verison';\nimport { SDKVersionManager } from './types';\n\nexport default class BraintreeHeadlessSDKVersionManager implements SDKVersionManager {\n getSDKVersion(): string {\n return BRAINTREE_SDK_DEFAULT_VERSION;\n }\n}\n","import { StandardError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\n/**\n * Throw this error if the Braintree PayPal wallet flow fails to redirect the\n * shopper to the external checkout page.\n */\nexport default class BraintreePaypalWalletError extends StandardError {\n constructor(message?: string) {\n super(message || 'Failed to redirect to checkout page');\n\n this.name = 'BraintreePaypalWalletError';\n this.type = 'braintree_paypal_wallet';\n }\n}\n","import StandardError from './standard-error';\n\nexport enum MissingDataErrorType {\n MissingBillingAddress,\n MissingCart,\n MissingCheckout,\n MissingConsignments,\n MissingCustomer,\n MissingCheckoutConfig,\n MissingOrder,\n MissingOrderConfig,\n MissingOrderId,\n MissingPayment,\n MissingPaymentId,\n MissingPaymentInstrument,\n MissingPaymentMethod,\n MissingPaymentRedirectUrl,\n MissingPaymentStatus,\n MissingPaymentToken,\n MissingShippingAddress,\n}\n\n/**\n * Throw this error when data that is expected to exist is missing. Usually it\n * is due to the fact that certain data has not been retrieved from or saved to\n * the server yet. And such data is required to perform certain actions.\n */\nexport default class MissingDataError extends StandardError {\n constructor(public subtype: MissingDataErrorType) {\n super(getErrorMessage(subtype));\n\n this.name = 'MissingDataError';\n this.type = 'missing_data';\n }\n}\n\nfunction getErrorMessage(type: MissingDataErrorType): string {\n switch (type) {\n case MissingDataErrorType.MissingBillingAddress:\n return 'Unable to proceed because billing address data is unavailable.';\n\n case MissingDataErrorType.MissingCart:\n return 'Unable to proceed because cart data is unavailable.';\n\n case MissingDataErrorType.MissingConsignments:\n return 'Unable to proceed because consignments data is unavailable.';\n\n case MissingDataErrorType.MissingCheckout:\n return 'Unable to proceed because checkout data is unavailable.';\n\n case MissingDataErrorType.MissingCustomer:\n return 'Unable to proceed because customer data is unavailable.';\n\n case MissingDataErrorType.MissingCheckoutConfig:\n case MissingDataErrorType.MissingOrderConfig:\n return 'Unable to proceed because configuration data is unavailable.';\n\n case MissingDataErrorType.MissingOrder:\n return 'Unable to proceed because order data is unavailable.';\n\n case MissingDataErrorType.MissingOrderId:\n return 'Unable to proceed because order ID is unavailable or not generated yet.';\n\n case MissingDataErrorType.MissingPayment:\n return 'Unable to proceed because payment data is unavailable.';\n\n case MissingDataErrorType.MissingPaymentToken:\n return 'Unable to proceed because the token required to submit a payment is missing.';\n\n case MissingDataErrorType.MissingPaymentMethod:\n return 'Unable to proceed because payment method data is unavailable or not properly configured.';\n\n case MissingDataErrorType.MissingShippingAddress:\n return 'Unable to proceed because shipping address data is unavailable.';\n\n default:\n return 'Unable to proceed because the required data is unavailable.';\n }\n}\n","import {\n PaymentMethodClientUnavailableError,\n StandardError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { WalletButtonIntegrationService } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport BraintreePaypalWalletError from './braintree-paypal-wallet-error';\n\nimport {\n BraintreeError,\n BraintreeIntegrationService,\n BraintreePaypalCheckout,\n BraintreePaypalSdkCreatorConfig,\n BraintreeTokenizePayload,\n isBraintreeError,\n PaypalAuthorizeData,\n} from './';\n\nexport default class BraintreePaypalWalletService {\n private braintreePaypalCheckout?: BraintreePaypalCheckout;\n\n constructor(\n private walletButtonIntegrationService: WalletButtonIntegrationService,\n private braintreeIntegrationService: BraintreeIntegrationService,\n ) {}\n\n /**\n *\n * Braintree SDK methods\n *\n */\n initialize(clientToken: string): void {\n this.braintreeIntegrationService.initialize(clientToken);\n }\n\n async loadPaypalCheckout(\n options: BraintreePaypalSdkCreatorConfig,\n containerId: string,\n onError?: (error: BraintreeError | StandardError) => void,\n ): Promise<BraintreePaypalCheckout> {\n this.braintreePaypalCheckout = await new Promise<BraintreePaypalCheckout>(\n (resolve, reject) => {\n void this.braintreeIntegrationService.getPaypalCheckout(\n options,\n resolve,\n (error: BraintreeError) => {\n this.removeElement(containerId);\n\n if (onError && isBraintreeError(error)) {\n onError(error);\n }\n\n reject(error);\n },\n );\n },\n );\n\n return this.braintreePaypalCheckout!;\n }\n\n getBraintreePaypalCheckoutOrThrow(): BraintreePaypalCheckout {\n if (!this.braintreePaypalCheckout) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.braintreePaypalCheckout;\n }\n\n async teardown(): Promise<void> {\n await this.braintreeIntegrationService.teardown();\n }\n\n /**\n *\n * Payment tokenizing and redirect methods\n *\n */\n async proxyTokenizationPayment(\n authorizeData: PaypalAuthorizeData,\n methodId: string,\n cartId: string,\n ): Promise<BraintreeTokenizePayload> {\n const braintreePaypalCheckout = this.getBraintreePaypalCheckoutOrThrow();\n\n const { deviceData } = await this.braintreeIntegrationService.getDataCollector({\n paypal: true,\n });\n\n const tokenizePayload = await braintreePaypalCheckout.tokenizePayment(authorizeData);\n const { details, nonce } = tokenizePayload;\n\n const billingAddress = this.braintreeIntegrationService.mapToLegacyBillingAddress(details);\n const shippingAddress =\n this.braintreeIntegrationService.mapToLegacyShippingAddress(details);\n\n const inputData = {\n paymentWalletData: {\n providerId: methodId,\n providerOrderId: nonce,\n },\n cartEntityId: cartId,\n queryParams: [\n { key: 'payment_type', value: 'paypal' },\n { key: 'action', value: 'set_external_checkout' },\n { key: 'provider', value: methodId },\n {\n key: 'billing_address',\n value: encodeURIComponent(JSON.stringify(billingAddress)),\n },\n {\n key: 'shipping_address',\n value: encodeURIComponent(JSON.stringify(shippingAddress)),\n },\n ...(deviceData ? [{ key: 'device_data', value: deviceData }] : []),\n ],\n };\n\n const response = await this.walletButtonIntegrationService.getRedirectToCheckoutUrl(\n inputData,\n );\n\n const externalCheckoutUrl = response.body.redirectUrls?.externalCheckoutUrl;\n\n if (!externalCheckoutUrl) {\n throw new BraintreePaypalWalletError();\n }\n\n window.location.assign(externalCheckoutUrl);\n\n return tokenizePayload;\n }\n\n /**\n *\n * Utils methods\n *\n */\n removeElement(containerId?: string): void {\n this.braintreeIntegrationService.removeElement(containerId);\n }\n}\n","import ResolvableModule from './resolvable-module';\n\nexport default function toResolvableModule<TModule extends object, TIdentifier>(\n module: TModule,\n resolveIds: TIdentifier[],\n): ResolvableModule<TModule, TIdentifier> {\n return Object.assign(module, { resolveIds });\n}\n","import { isNil, omitBy } from 'lodash';\n\nimport { PaypalStyleOptions } from '@bigcommerce/checkout-sdk/braintree-utils';\n\nexport default function getValidButtonStyle(style?: PaypalStyleOptions): PaypalStyleOptions {\n const { color, fundingicons, height = 40, layout, shape, size, tagline } = style || {};\n\n const validStyles = {\n color,\n fundingicons,\n height: getValidHeight(height),\n layout,\n shape: shape || 'rect',\n size,\n tagline,\n };\n\n return omitBy(validStyles, isNil);\n}\n\nfunction getValidHeight(height: number | string): number {\n const minHeight = 25;\n const defaultHeight = 40;\n const maxHeight = 55;\n\n const currentHeight = Number(height);\n\n if (!currentHeight || Number.isNaN(currentHeight)) {\n return defaultHeight;\n }\n\n if (currentHeight > maxHeight) {\n return maxHeight;\n }\n\n if (currentHeight < minHeight) {\n return minHeight;\n }\n\n return currentHeight;\n}\n","import {\n BraintreeError,\n BraintreeHostWindow,\n BraintreeInitializationData,\n BraintreePaypalSdkCreatorConfig,\n BraintreePaypalWalletService,\n isBraintreeError,\n PaypalAuthorizeData,\n PaypalButtonStyleColorOption,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport {\n CheckoutButtonInitializeOptions,\n CheckoutButtonStrategy,\n InvalidArgumentError,\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n StandardError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport getValidButtonStyle from '../get-valid-button-style';\n\nimport BraintreePaypalWalletInitializeOptions, {\n WithBraintreePaypalWalletInitializeOptions,\n} from './braintree-paypal-wallet-initialize-options';\n\nexport default class BraintreePaypalWalletStrategy implements CheckoutButtonStrategy {\n constructor(\n private braintreePaypalWalletService: BraintreePaypalWalletService,\n private braintreeHostWindow: BraintreeHostWindow,\n ) {}\n\n async initialize(\n options: CheckoutButtonInitializeOptions & WithBraintreePaypalWalletInitializeOptions,\n ): Promise<void> {\n const { braintreepaypal, containerId, methodId } = options;\n\n if (!methodId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.methodId\" argument is not provided.',\n );\n }\n\n if (!containerId) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.containerId\" argument is not provided.`,\n );\n }\n\n if (!braintreepaypal) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.braintreepaypal\" argument is not provided.`,\n );\n }\n\n let parsedPaymentMethod: PaymentMethod<BraintreeInitializationData>;\n\n try {\n parsedPaymentMethod = JSON.parse(atob(braintreepaypal.initializationData));\n } catch (error) {\n throw new InvalidArgumentError(\"Failed to parse payment method 'initializationData'.\");\n }\n\n const { initializationData, config } = parsedPaymentMethod;\n\n if (!braintreepaypal.clientToken || !initializationData || !config) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentMethod);\n }\n\n const paypalCheckoutOptions: BraintreePaypalSdkCreatorConfig = {\n currency: braintreepaypal.currency.code,\n intent: initializationData.intent,\n isCreditEnabled: initializationData.isCreditEnabled,\n commit: false,\n };\n\n this.braintreePaypalWalletService.initialize(braintreepaypal.clientToken);\n\n await this.braintreePaypalWalletService.loadPaypalCheckout(\n paypalCheckoutOptions,\n containerId,\n braintreepaypal.onError,\n );\n\n this.renderButton(\n braintreepaypal,\n containerId,\n methodId,\n !!config.testMode,\n initializationData.intent,\n );\n }\n\n async deinitialize(): Promise<void> {\n await this.braintreePaypalWalletService.teardown();\n }\n\n private renderButton(\n braintreepaypal: BraintreePaypalWalletInitializeOptions,\n containerId: string,\n methodId: string,\n testMode: boolean,\n intent?: BraintreeInitializationData['intent'],\n ): void {\n const { style, onEligibilityFailure } = braintreepaypal;\n const { paypal } = this.braintreeHostWindow;\n\n if (!paypal) {\n this.braintreePaypalWalletService.removeElement(containerId);\n\n return;\n }\n\n const fundingSources = [paypal.FUNDING.PAYPAL, paypal.FUNDING.PAYLATER];\n\n let hasRenderedButton = false;\n\n fundingSources.forEach((fundingSource) => {\n const buttonStyle =\n fundingSource === paypal.FUNDING.PAYLATER\n ? { ...getValidButtonStyle(style), color: PaypalButtonStyleColorOption.GOLD }\n : getValidButtonStyle(style);\n\n const paypalButtonRender = paypal.Buttons({\n env: testMode ? 'sandbox' : 'production',\n fundingSource,\n style: buttonStyle,\n createOrder: () => this.setupPayment(braintreepaypal, intent),\n onApprove: (authorizeData: PaypalAuthorizeData) =>\n this.tokenizePayment(\n authorizeData,\n methodId,\n braintreepaypal.cartId,\n braintreepaypal.onAuthorizeError,\n ),\n });\n\n if (paypalButtonRender.isEligible()) {\n paypalButtonRender.render(`#${containerId}`);\n hasRenderedButton = true;\n }\n });\n\n if (\n !hasRenderedButton &&\n onEligibilityFailure &&\n typeof onEligibilityFailure === 'function'\n ) {\n onEligibilityFailure();\n }\n }\n\n private async setupPayment(\n braintreepaypal: BraintreePaypalWalletInitializeOptions,\n intent?: BraintreeInitializationData['intent'],\n ): Promise<string | void> {\n const { onPaymentError, amount, currency } = braintreepaypal;\n\n const braintreePaypalCheckout =\n this.braintreePaypalWalletService.getBraintreePaypalCheckoutOrThrow();\n\n try {\n return await braintreePaypalCheckout.createPayment({\n flow: 'checkout',\n enableShippingAddress: true,\n shippingAddressEditable: false,\n amount,\n currency: currency.code,\n offerCredit: false,\n intent,\n });\n } catch (error: unknown) {\n if (isBraintreeError(error) || error instanceof StandardError) {\n onPaymentError?.(error);\n }\n\n throw error;\n }\n }\n\n private async tokenizePayment(\n authorizeData: PaypalAuthorizeData,\n methodId: string,\n cartId: string,\n onError?: (error: BraintreeError | StandardError) => void,\n ): Promise<void> {\n try {\n await this.braintreePaypalWalletService.proxyTokenizationPayment(\n authorizeData,\n methodId,\n cartId,\n );\n } catch (error) {\n if (isBraintreeError(error) || error instanceof StandardError) {\n onError?.(error);\n }\n\n throw error;\n }\n }\n}\n","import { getScriptLoader } from '@bigcommerce/script-loader';\n\nimport {\n BraintreeHeadlessSDKVersionManager,\n BraintreeHostWindow,\n BraintreeIntegrationService,\n BraintreePaypalWalletService,\n BraintreeScriptLoader,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport { toResolvableModule } from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n WalletButtonIntegrationService,\n WalletPaymentButtonStrategyFactory,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport BraintreePaypalWalletStrategy from './braintree-paypal-wallet-strategy';\n\nconst createBraintreePaypalWalletStrategy: WalletPaymentButtonStrategyFactory<\n BraintreePaypalWalletStrategy\n> = (walletButtonIntegrationService: WalletButtonIntegrationService) => {\n const braintreeHostWindow: BraintreeHostWindow = window;\n\n const braintreeIntegrationService = new BraintreeIntegrationService(\n new BraintreeScriptLoader(\n getScriptLoader(),\n braintreeHostWindow,\n new BraintreeHeadlessSDKVersionManager(),\n ),\n braintreeHostWindow,\n );\n\n return new BraintreePaypalWalletStrategy(\n new BraintreePaypalWalletService(\n walletButtonIntegrationService,\n braintreeIntegrationService,\n ),\n braintreeHostWindow,\n );\n};\n\nexport default toResolvableModule(createBraintreePaypalWalletStrategy, [{ id: 'braintreepaypal' }]);\n","export const LOADING_INDICATOR_STYLES = {\n 'background-color': 'rgba(0, 0, 0, 0.4)',\n 'z-index': '1000',\n};\n\n/**\n * PayPal SDK supported locales\n * https://developer.paypal.com/sdk/js/configuration/#link-locale\n */\nexport const PAYPAL_SDK_SUPPORTED_LOCALES = [\n 'ar_BH',\n 'ar_DZ',\n 'ar_EG',\n 'ar_JO',\n 'ar_KW',\n 'ar_MA',\n 'ar_OM',\n 'ar_QA',\n 'ar_SA',\n 'ar_TN',\n 'ar_YE',\n 'ar_AE',\n 'bg_BG',\n 'cs_CZ',\n 'da_DK',\n 'da_FO',\n 'da_GL',\n 'de_AT',\n 'de_CH',\n 'de_DE',\n 'de_LU',\n 'el_GR',\n 'en_AD',\n 'en_AE',\n 'en_AG',\n 'en_AI',\n 'en_AL',\n 'en_AM',\n 'en_AN',\n 'en_AO',\n 'en_AT',\n 'en_AU',\n 'en_AW',\n 'en_AZ',\n 'en_BB',\n 'en_BE',\n 'en_BH',\n 'en_BJ',\n 'en_BM',\n 'en_BN',\n 'en_BS',\n 'en_BT',\n 'en_BW',\n 'en_BY',\n 'en_BZ',\n 'en_C2',\n 'en_CA',\n 'en_CD',\n 'en_CG',\n 'en_CH',\n 'en_CI',\n 'en_CK',\n 'en_CL',\n 'en_CM',\n 'en_CN',\n 'en_CO',\n 'en_CR',\n 'en_CV',\n 'en_CY',\n 'en_CZ',\n 'en_DE',\n 'en_DJ',\n 'en_DK',\n 'en_DM',\n 'en_DO',\n 'en_DZ',\n 'en_EC',\n 'en_EE',\n 'en_EG',\n 'en_ER',\n 'en_ES',\n 'en_ET',\n 'en_FI',\n 'en_FJ',\n 'en_FK',\n 'en_FM',\n 'en_FO',\n 'en_FR',\n 'en_GA',\n 'en_GB',\n 'en_GD',\n 'en_GE',\n 'en_GF',\n 'en_GI',\n 'en_GL',\n 'en_GM',\n 'en_GN',\n 'en_GP',\n 'en_GR',\n 'en_GT',\n 'en_GW',\n 'en_GY',\n 'en_HK',\n 'en_HN',\n 'en_HR',\n 'en_HU',\n 'en_ID',\n 'en_IE',\n 'en_IL',\n 'en_IN',\n 'en_IS',\n 'en_IT',\n 'en_JM',\n 'en_JO',\n 'en_JP',\n 'en_KE',\n 'en_KG',\n 'en_KH',\n 'en_KI',\n 'en_KM',\n 'en_KN',\n 'en_KR',\n 'en_KW',\n 'en_KY',\n 'en_KZ',\n 'en_LA',\n 'en_LC',\n 'en_LI',\n 'en_LK',\n 'en_LS',\n 'en_LT',\n 'en_LU',\n 'en_LV',\n 'en_MA',\n 'en_MC',\n 'en_MD',\n 'en_ME',\n 'en_MG',\n 'en_MH',\n 'en_MK',\n 'en_ML',\n 'en_MN',\n 'en_MQ',\n 'en_MR',\n 'en_MS',\n 'en_MT',\n 'en_MU',\n 'en_MV',\n 'en_MW',\n 'en_MY',\n 'en_MZ',\n 'en_NA',\n 'en_NC',\n 'en_NE',\n 'en_NF',\n 'en_NG',\n 'en_NI',\n 'en_NL',\n 'en_NO',\n 'en_NP',\n 'en_NR',\n 'en_NU',\n 'en_NZ',\n 'en_OM',\n 'en_PA',\n 'en_PE',\n 'en_PF',\n 'en_PG',\n 'en_PH',\n 'en_PL',\n 'en_PM',\n 'en_PN',\n 'en_PT',\n 'en_PW',\n 'en_PY',\n 'en_QA',\n 'en_RE',\n 'en_RO',\n 'en_RS',\n 'en_RU',\n 'en_RW',\n 'en_SA',\n 'en_SB',\n 'en_SC',\n 'en_SE',\n 'en_SG',\n 'en_SH',\n 'en_SI',\n 'en_SJ',\n 'en_SK',\n 'en_SL',\n 'en_SM',\n 'en_SN',\n 'en_SO',\n 'en_SR',\n 'en_ST',\n 'en_SV',\n 'en_SZ',\n 'en_TC',\n 'en_TD',\n 'en_TG',\n 'en_TH',\n 'en_TJ',\n 'en_TM',\n 'en_TN',\n 'en_TO',\n 'en_TR',\n 'en_TT',\n 'en_TV',\n 'en_TW',\n 'en_TZ',\n 'en_UA',\n 'en_UG',\n 'en_US',\n 'en_UY',\n 'en_VA',\n 'en_VC',\n 'en_VE',\n 'en_VG',\n 'en_VN',\n 'en_VU',\n 'en_WF',\n 'en_WS',\n 'en_YE',\n 'en_YT',\n 'en_ZA',\n 'en_ZM',\n 'en_ZW',\n 'es_AD',\n 'es_AI',\n 'es_AO',\n 'es_AR',\n 'es_AW',\n 'es_BB',\n 'es_BJ',\n 'es_BM',\n 'es_BO',\n 'es_BS',\n 'es_BZ',\n 'es_CD',\n 'es_CG',\n 'es_CK',\n 'es_CL',\n 'es_CO',\n 'es_CR',\n 'es_CV',\n 'es_DJ',\n 'es_DM',\n 'es_DO',\n 'es_DZ',\n 'es_EC',\n 'es_EG',\n 'es_ER',\n 'es_ES',\n 'es_ET',\n 'es_FJ',\n 'es_FK',\n 'es_FO',\n 'es_GA',\n 'es_GD',\n 'es_GE',\n 'es_GI',\n 'es_GL',\n 'es_GM',\n 'es_GN',\n 'es_GT',\n 'es_GW',\n 'es_GY',\n 'es_HN',\n 'es_IE',\n 'es_JM',\n 'es_JO',\n 'es_KE',\n 'es_KG',\n 'es_KI',\n 'es_KM',\n 'es_KN',\n 'es_KW',\n 'es_KY',\n 'es_KZ',\n 'es_LC',\n 'es_LI',\n 'es_LS',\n 'es_LU',\n 'es_MA',\n 'es_MG',\n 'es_MH',\n 'es_ML',\n 'es_MR',\n 'es_MS',\n 'es_MU',\n 'es_MW',\n 'es_MX',\n 'es_MZ',\n 'es_NA',\n 'es_NC',\n 'es_NE',\n 'es_NF',\n 'es_NI',\n 'es_NR',\n 'es_NU',\n 'es_NZ',\n 'es_OM',\n 'es_PA',\n 'es_PE',\n 'es_PF',\n 'es_PG',\n 'es_PM',\n 'es_PN',\n 'es_PW',\n 'es_PY',\n 'es_QA',\n 'es_RS',\n 'es_RW',\n 'es_SA',\n 'es_SB',\n 'es_SC',\n 'es_SH',\n 'es_SJ',\n 'es_SL',\n 'es_SM',\n 'es_SN',\n 'es_SO',\n 'es_SR',\n 'es_ST',\n 'es_SV',\n 'es_SZ',\n 'es_TC',\n 'es_TD',\n 'es_TG',\n 'es_TJ',\n 'es_TM',\n 'es_TN',\n 'es_TT',\n 'es_TV',\n 'es_UA',\n 'es_UG',\n 'es_US',\n 'es_UY',\n 'es_VA',\n 'es_VC',\n 'es_VE',\n 'es_VG',\n 'es_VU',\n 'es_WF',\n 'es_YE',\n 'es_ZM',\n 'et_EE',\n 'fi_FI',\n 'fr_AD',\n 'fr_AE',\n 'fr_AI',\n 'fr_AM',\n 'fr_AO',\n 'fr_AW',\n 'fr_AZ',\n 'fr_BB',\n 'fr_BE',\n 'fr_BF',\n 'fr_BI',\n 'fr_BJ',\n 'fr_BM',\n 'fr_BS',\n 'fr_BZ',\n 'fr_CA',\n 'fr_CD',\n 'fr_CG',\n 'fr_CH',\n 'fr_CI',\n 'fr_CK',\n 'fr_CM',\n 'fr_CV',\n 'fr_DJ',\n 'fr_DM',\n 'fr_DO',\n 'fr_DZ',\n 'fr_EC',\n 'fr_ER',\n 'fr_ET',\n 'fr_FJ',\n 'fr_FK',\n 'fr_FO',\n 'fr_FR',\n 'fr_GA',\n 'fr_GD',\n 'fr_GE',\n 'fr_GF',\n 'fr_GI',\n 'fr_GL',\n 'fr_GM',\n 'fr_GN',\n 'fr_GP',\n 'fr_GT',\n 'fr_GW',\n 'fr_GY',\n 'fr_HN',\n 'fr_IE',\n 'fr_JM',\n 'fr_JO',\n 'fr_KE',\n 'fr_KG',\n 'fr_KI',\n 'fr_KM',\n 'fr_KN',\n 'fr_KW',\n 'fr_KY',\n 'fr_KZ',\n 'fr_LC',\n 'fr_LI',\n 'fr_LS',\n 'fr_LU',\n 'fr_MA',\n 'fr_MC',\n 'fr_MG',\n 'fr_MH',\n 'fr_ML',\n 'fr_MQ',\n 'fr_MR',\n 'fr_MS',\n 'fr_MU',\n 'fr_MW',\n 'fr_MZ',\n 'fr_NA',\n 'fr_NC',\n 'fr_NE',\n 'fr_NF',\n 'fr_NI',\n 'fr_NR',\n 'fr_NU',\n 'fr_NZ',\n 'fr_OM',\n 'fr_PA',\n 'fr_PE',\n 'fr_PF',\n 'fr_PG',\n 'fr_PM',\n 'fr_PN',\n 'fr_PW',\n 'fr_QA',\n 'fr_RE',\n 'fr_RS',\n 'fr_RW',\n 'fr_SA',\n 'fr_SB',\n 'fr_SC',\n 'fr_SH',\n 'fr_SJ',\n 'fr_SL',\n 'fr_SM',\n 'fr_SN',\n 'fr_SO',\n 'fr_SR',\n 'fr_ST',\n 'fr_SV',\n 'fr_SZ',\n 'fr_TC',\n 'fr_TD',\n 'fr_TG',\n 'fr_TJ',\n 'fr_TM',\n 'fr_TN',\n 'fr_TT',\n 'fr_TV',\n 'fr_UA',\n 'fr_UG',\n 'fr_US',\n 'fr_UY',\n 'fr_VA',\n 'fr_VC',\n 'fr_VE',\n 'fr_VG',\n 'fr_VU',\n 'fr_WF',\n 'fr_YE',\n 'fr_YT',\n 'fr_ZA',\n 'fr_ZM',\n 'he_IL',\n 'hu_HU',\n 'id_ID',\n 'it_IT',\n 'ja_JP',\n 'ko_KR',\n 'lv_LV',\n 'lt_LT',\n 'ms_BN',\n 'ms_MY',\n 'nl_BE',\n 'nl_NL',\n 'pl_PL',\n 'pt_BR',\n 'pt_PT',\n 'ro_RO',\n 'ru_EE',\n 'ru_LT',\n 'ru_LV',\n 'ru_RU',\n 'ru_UA',\n 'si_LK',\n 'sk_SK',\n 'sl_SI',\n 'sq_AL',\n 'sv_SE',\n 'tl_PH',\n 'th_TH',\n 'tr_TR',\n 'vi_VN',\n 'zh_C2',\n 'zh_CN',\n 'zh_HK',\n 'zh_TW',\n 'zh_AD',\n 'zh_AE',\n 'zh_AI',\n 'zh_AO',\n 'zh_AW',\n 'zh_BB',\n 'zh_BH',\n 'zh_BJ',\n 'zh_BM',\n 'zh_BS',\n 'zh_BZ',\n 'zh_CD',\n 'zh_CG',\n 'zh_CK',\n 'zh_CL',\n 'zh_CO',\n 'zh_CV',\n 'zh_DJ',\n 'zh_DM',\n 'zh_DO',\n 'zh_DZ',\n 'zh_EC',\n 'zh_EG',\n 'zh_ER',\n 'zh_ET',\n 'zh_FJ',\n 'zh_FK',\n 'zh_FO',\n 'zh_GA',\n 'zh_GD',\n 'zh_GE',\n 'zh_GI',\n 'zh_GL',\n 'zh_GM',\n 'zh_GN',\n 'zh_GT',\n 'zh_GW',\n 'zh_GY',\n 'zh_HN',\n 'zh_IE',\n 'zh_JM',\n 'zh_JO',\n 'zh_KE',\n 'zh_KG',\n 'zh_KI',\n 'zh_KM',\n 'zh_KN',\n 'zh_KW',\n 'zh_KY',\n 'zh_KZ',\n 'zh_LC',\n 'zh_LI',\n 'zh_LS',\n 'zh_LT',\n 'zh_LU',\n 'zh_MA',\n 'zh_MG',\n 'zh_MH',\n 'zh_ML',\n 'zh_MR',\n 'zh_MS',\n 'zh_MU',\n 'zh_MW',\n 'zh_MZ',\n 'zh_NA',\n 'zh_NC',\n 'zh_NE',\n 'zh_NF',\n 'zh_NI',\n 'zh_NR',\n 'zh_NU',\n 'zh_NZ',\n 'zh_OM',\n 'zh_PA',\n 'zh_PE',\n 'zh_PF',\n 'zh_PG',\n 'zh_PM',\n 'zh_PN',\n 'zh_PW',\n 'zh_QA',\n 'zh_RS',\n 'zh_RW',\n 'zh_SA',\n 'zh_SB',\n 'zh_SC',\n 'zh_SH',\n 'zh_SJ',\n 'zh_SL',\n 'zh_SM',\n 'zh_SN',\n 'zh_SO',\n 'zh_SR',\n 'zh_ST',\n 'zh_SV',\n 'zh_SZ',\n 'zh_TC',\n 'zh_TD',\n 'zh_TG',\n 'zh_TJ',\n 'zh_TM',\n 'zh_TN',\n 'zh_TT',\n 'zh_TV',\n 'zh_UA',\n 'zh_UG',\n 'zh_US',\n 'zh_UY',\n 'zh_VA',\n 'zh_VC',\n 'zh_VE',\n 'zh_VG',\n 'zh_VU',\n 'zh_WF',\n 'zh_YE',\n 'zh_ZA',\n 'zh_ZM',\n];\n","import {\n BuyNowCartRequestBody,\n HostedInstrument,\n ShippingOption,\n VaultedInstrument,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\n/**\n *\n * PayPal Commerce Funding sources\n *\n */\nexport type FundingType = string[];\nexport type EnableFundingType = FundingType | string;\n\nexport interface PayPalCommerceSDKFunding {\n CARD: string;\n PAYPAL: string;\n CREDIT: string;\n PAYLATER: string;\n OXXO: string;\n SEPA: string;\n VENMO: string;\n}\n\n/**\n *\n * PayPal Commerce SDK\n *\n */\n\nexport interface PayPalCommerceCardFieldsConfig {\n inputEvents: {\n onChange(data: PayPalCommerceCardFieldsState): void;\n onFocus(data: PayPalCommerceCardFieldsState): void;\n onBlur(data: PayPalCommerceCardFieldsState): void;\n onInputSubmitRequest(data: PayPalCommerceCardFieldsState): void;\n };\n createVaultSetupToken?: (data: PayPalCommerceCardFieldsState) => void;\n createOrder?: () => Promise<string>;\n style: PayPalCommerceHostedFieldsRenderOptions['styles'];\n onApprove(data: PayPalCommerceCardFieldsOnApproveData): void;\n onError(): void;\n}\n\nexport interface PayPalCommerceCardFieldsOnApproveData {\n vaultSetupToken?: string;\n orderID: string;\n liabilityShift?: LiabilityShiftEnum;\n}\n\nexport enum LiabilityShiftEnum {\n Possible = 'POSSIBLE',\n No = 'NO',\n Unknown = 'UNKNOWN',\n Yes = 'YES',\n}\n\ninterface PayPalCommerceCardFieldsFieldData {\n isFocused: boolean;\n isEmpty: boolean;\n isValid: boolean;\n isPotentiallyValid: boolean;\n}\n\ntype PayPalCommerceCardFieldsCard = PayPalCommerceHostedFieldsCard;\n\nexport interface PayPalCommerceCardFieldsState {\n cards: PayPalCommerceCardFieldsCard[];\n emittedBy: string;\n isFormValid: boolean;\n errors: string[];\n fields: {\n cardCvvField: PayPalCommerceCardFieldsFieldData;\n cardNumberField: PayPalCommerceCardFieldsFieldData;\n cardNameField?: PayPalCommerceCardFieldsFieldData;\n cardExpiryField: PayPalCommerceCardFieldsFieldData;\n };\n}\n\nexport interface PayPalCommerceFields {\n render(container: HTMLElement | string): Promise<void>;\n clear(): void;\n removeClass(className: string): Promise<void>;\n close(): Promise<void>;\n}\n\ninterface PayPalCommerceFieldsInitializationData {\n placeholder?: string;\n}\n\nexport interface PayPalCommerceCardFields {\n isEligible(): boolean;\n CVVField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n ExpiryField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n NameField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n NumberField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n submit(config?: PayPalCommerceCardFieldsSubmitConfig): Promise<void>;\n getState(): Promise<PayPalCommerceCardFieldsState>;\n}\n\nexport interface PayPalCommerceCardFieldsSubmitConfig {\n billingAddress: {\n company?: string;\n addressLine1: string;\n addressLine2?: string;\n adminArea1: string; // State\n adminArea2: string; // City\n postalCode: string;\n countryCode?: string;\n };\n}\n\nexport interface PayPalSDK {\n CardFields: (data: PayPalCommerceCardFieldsConfig) => Promise<PayPalCommerceCardFields>;\n Googlepay: () => {\n config: () => Promise<GooglePayConfig>;\n confirmOrder: (arg0: {\n orderId: string;\n paymentMethodData: ConfirmOrderData;\n }) => Promise<{ status: string }>;\n initiatePayerAction: () => void;\n };\n FUNDING: PayPalCommerceSDKFunding;\n HostedFields: {\n isEligible(): boolean;\n render(data: PayPalCommerceHostedFieldsRenderOptions): Promise<PayPalCommerceHostedFields>;\n };\n Legal: PayPalLegal & LegalFunding;\n Buttons(options: PayPalCommerceButtonsOptions): PayPalCommerceButtons;\n PaymentFields(options: PayPalCommercePaymentFieldsOptions): PayPalCommercePaymentFields;\n Messages(options: PayPalCommerceMessagesOptions): PayPalCommerceMessages;\n}\n\nexport interface ConfirmOrderData {\n tokenizationData: {\n type: string;\n token: string;\n };\n info: {\n cardNetwork: string;\n cardDetails: string;\n };\n type: string;\n}\n\nexport interface GooglePayConfig {\n allowedPaymentMethods: AllowedPaymentMethods[];\n apiVersion: number;\n apiVersionMinor: number;\n countryCode: string;\n isEligible: boolean;\n merchantInfo: {\n merchantId: string;\n merchantOrigin: string;\n };\n}\n\nexport interface AllowedPaymentMethods {\n type: string;\n parameters: {\n allowedAuthMethods: string[];\n allowedCardNetworks: string[];\n billingAddressRequired: boolean;\n assuranceDetailsRequired: boolean;\n billingAddressParameters: {\n format: string;\n };\n };\n tokenizationSpecification: {\n type: string;\n parameters: {\n gateway: string;\n gatewayMerchantId: string;\n };\n };\n}\n\nexport type PayPalLegal = (params: { fundingSource: string }) => {\n render(container: string): void;\n};\n\nexport interface LegalFunding {\n FUNDING: {\n PAY_UPON_INVOICE: string;\n };\n}\n\nexport interface BirthDate {\n getFullYear(): number;\n getDate(): number;\n getMonth(): number;\n}\n\nexport interface PayPalCommerceScriptParams {\n options: {\n 'client-id'?: string;\n 'merchant-id'?: string;\n 'buyer-country'?: string;\n 'disable-funding'?: FundingType;\n 'enable-funding'?: EnableFundingType;\n currency?: string;\n commit?: boolean;\n intent?: PayPalCommerceIntent;\n components?: ComponentsScriptType;\n locale?: string;\n };\n attributes: {\n 'data-client-token'?: string;\n 'data-client-metadata-id'?: string;\n 'data-partner-attribution-id'?: string;\n 'data-user-id-token'?: string;\n };\n}\n\nexport enum PayPalCommerceIntent {\n AUTHORIZE = 'authorize',\n CAPTURE = 'capture',\n}\n\nexport type ComponentsScriptType = Array<\n | 'buttons'\n | 'funding-eligibility'\n | 'hosted-fields'\n | 'messages'\n | 'payment-fields'\n | 'legal'\n | 'googlepay'\n | 'connect'\n | 'card-fields'\n>;\n\nexport interface PayPalCommerceHostWindow extends Window {\n paypal?: PayPalSDK;\n}\n\n/**\n *\n * PayPal Commerce Initialization Data\n *\n */\nexport interface PayPalCommerceInitializationData {\n attributionId?: string;\n availableAlternativePaymentMethods: FundingType;\n buttonStyle?: PayPalButtonStyleOptions;\n buyerCountry?: string;\n clientId: string;\n clientToken?: string;\n enabledAlternativePaymentMethods: FundingType;\n isDeveloperModeApplicable?: boolean;\n intent?: PayPalCommerceIntent;\n isAcceleratedCheckoutEnabled?: boolean;\n isHostedCheckoutEnabled?: boolean;\n isPayPalCreditAvailable?: boolean;\n isVenmoEnabled?: boolean;\n isGooglePayEnabled?: boolean;\n merchantId?: string;\n orderId?: string;\n shouldRenderFields?: boolean;\n shouldRunAcceleratedCheckout?: boolean;\n paymentButtonStyles?: Record<string, PayPalButtonStyleOptions>;\n paypalBNPLConfiguration?: PayPalBNPLConfigurationItem[];\n isServerSideShippingCallbacksEnabled?: boolean;\n}\n\nexport interface PayPalBNPLConfigurationItem {\n id: string;\n name: string;\n status: boolean;\n styles: Record<string, string>;\n}\n\n/**\n *\n * PayPal Commerce BuyNow\n *\n */\nexport interface PayPalBuyNowInitializeOptions {\n getBuyNowCartRequestBody(): BuyNowCartRequestBody;\n}\n\n/**\n *\n * PayPal Commerce Hosted Fields\n *\n */\nexport interface PayPalCommerceHostedFieldsRenderOptions {\n fields?: {\n number?: PayPalCommerceHostedFieldOption;\n cvv?: PayPalCommerceHostedFieldOption;\n expirationDate?: PayPalCommerceHostedFieldOption;\n };\n paymentsSDK?: boolean;\n styles?: {\n input?: { [key: string]: string };\n '.invalid'?: { [key: string]: string };\n '.valid'?: { [key: string]: string };\n ':focus'?: { [key: string]: string };\n };\n createOrder(): Promise<string>;\n}\n\nexport interface PayPalCommerceHostedFieldOption {\n selector: string;\n placeholder?: string;\n}\n\nexport interface PayPalCommerceHostedFields {\n submit(\n options?: PayPalCommerceHostedFieldsSubmitOptions,\n ): Promise<PayPalCommerceHostedFieldsApprove>;\n getState(): PayPalCommerceHostedFieldsState;\n on(eventName: string, callback: (event: PayPalCommerceHostedFieldsState) => void): void;\n}\n\nexport interface PayPalCommerceHostedFieldsSubmitOptions {\n contingencies?: Array<'3D_SECURE'>;\n cardholderName?: string;\n}\n\nexport interface PayPalCommerceHostedFieldsApprove {\n orderId: string;\n liabilityShift?: 'POSSIBLE' | 'NO' | 'UNKNOWN';\n}\n\nexport interface PayPalCommerceHostedFieldsState {\n cards: PayPalCommerceHostedFieldsCard[];\n emittedBy: string;\n fields: {\n number?: PayPalCommerceHostedFieldsFieldData;\n expirationDate?: PayPalCommerceHostedFieldsFieldData;\n expirationMonth?: PayPalCommerceHostedFieldsFieldData;\n expirationYear?: PayPalCommerceHostedFieldsFieldData;\n cvv?: PayPalCommerceHostedFieldsFieldData;\n postalCode?: PayPalCommerceHostedFieldsFieldData;\n };\n}\n\nexport interface PayPalCommerceHostedFieldsCard {\n type: string;\n niceType: string;\n code: {\n name: string;\n size: number;\n };\n}\n\nexport interface PayPalCommerceHostedFieldsFieldData {\n container: HTMLElement;\n isFocused: boolean;\n isEmpty: boolean;\n isPotentiallyValid: boolean;\n isValid: boolean;\n}\n\n/**\n *\n * PayPal Commerce Buttons\n *\n */\nexport interface PayPalCommerceButtons {\n render(id: string): void;\n close(): void;\n isEligible(): boolean;\n hasReturned?(): boolean;\n resume?(): void;\n}\n\nexport interface PayPalCommerceButtonsOptions {\n experience?: string;\n style?: PayPalButtonStyleOptions;\n fundingSource: string;\n createOrder(): Promise<string>;\n onApprove(\n data: ApproveCallbackPayload,\n actions: ApproveCallbackActions,\n ): Promise<boolean | void> | void;\n onInit?(data: InitCallbackPayload, actions: InitCallbackActions): Promise<void>;\n onComplete?(data: CompleteCallbackDataPayload): Promise<void>;\n onClick?(data: ClickCallbackPayload, actions: ClickCallbackActions): Promise<void> | void;\n onError?(error: Error): void;\n onCancel?(): void;\n onShippingAddressChange?(data: ShippingAddressChangeCallbackPayload): Promise<void>;\n onShippingOptionsChange?(data: ShippingOptionChangeCallbackPayload): Promise<void>;\n}\n\nexport interface ShippingOptionChangeCallbackPayload {\n orderId: string;\n selectedShippingOption: PayPalSelectedShippingOption;\n}\n\nexport interface ShippingAddressChangeCallbackPayload {\n orderId: string;\n shippingAddress: PayPalAddress;\n}\n\nexport interface ClickCallbackPayload {\n fundingSource: string;\n}\n\nexport interface ClickCallbackActions {\n reject(): void;\n resolve(): void;\n}\n\nexport interface InitCallbackPayload {\n correlationID: string;\n}\n\nexport interface InitCallbackActions {\n disable(): void;\n enable(): void;\n}\n\nexport interface PayPalAddress {\n city: string;\n countryCode: string;\n postalCode: string;\n state: string;\n}\n\nexport interface PaypalAddressCallbackData {\n city: string;\n country_code: string;\n postal_code: string;\n state: string;\n}\n\nexport interface PayPalSelectedShippingOption {\n amount: {\n currency_code: string;\n value: string;\n };\n id: string;\n label: string;\n selected: boolean;\n type: string;\n}\n\nexport interface ApproveCallbackPayload {\n orderID?: string;\n}\n\nexport interface ApproveCallbackActions {\n order: {\n get: () => Promise<PayPalOrderDetails>;\n };\n}\n\nexport interface PayPalOrderDetails {\n payer: {\n name: {\n given_name: string;\n surname: string;\n };\n email_address: string;\n address: PayPalOrderAddress;\n phone?: {\n phone_number: {\n national_number: string;\n };\n };\n };\n purchase_units: Array<{\n shipping: {\n address: PayPalOrderAddress;\n name: {\n full_name: string;\n };\n };\n }>;\n}\n\nexport interface PayPalOrderAddress {\n address_line_1: string;\n address_line_2: string;\n admin_area_2: string;\n admin_area_1?: string;\n postal_code: string;\n country_code: string;\n}\n\nexport interface CompleteCallbackDataPayload {\n intent: string;\n orderID: string;\n}\n\nexport enum StyleButtonLabel {\n paypal = 'paypal',\n checkout = 'checkout',\n buynow = 'buynow',\n pay = 'pay',\n installment = 'installment',\n}\n\nexport enum StyleButtonColor {\n gold = 'gold',\n blue = 'blue',\n silver = 'silver',\n black = 'black',\n white = 'white',\n}\n\nexport enum StyleButtonShape {\n pill = 'pill',\n rect = 'rect',\n}\n\nexport interface PayPalButtonStyleOptions {\n color?: StyleButtonColor;\n shape?: StyleButtonShape;\n height?: number;\n label?: StyleButtonLabel;\n}\n\n/**\n *\n * PayPal Commerce Payment fields\n *\n */\nexport interface PayPalCommercePaymentFields {\n render(id: string): void;\n}\n\nexport interface PayPalCommercePaymentFieldsOptions {\n style?: PayPalCommerceFieldsStyleOptions;\n fundingSource: string;\n fields: {\n name?: {\n value?: string;\n };\n email?: {\n value?: string;\n };\n };\n}\n\nexport interface PayPalCommerceFieldsStyleOptions {\n variables?: {\n fontFamily?: string;\n fontSizeBase?: string;\n fontSizeSm?: string;\n fontSizeM?: string;\n fontSizeLg?: string;\n textColor?: string;\n colorTextPlaceholder?: string;\n colorBackground?: string;\n colorInfo?: string;\n colorDanger?: string;\n borderRadius?: string;\n borderColor?: string;\n borderWidth?: string;\n borderFocusColor?: string;\n spacingUnit?: string;\n };\n rules?: {\n [key: string]: any;\n };\n}\n\n/**\n *\n * PayPalCommerce Messages\n */\n// TODO: This interface can be removed once the PayPaySDK interface is removed\nexport interface PayPalCommerceMessages {\n render(id: string): void;\n}\n\n// TODO: This interface can be removed once the PayPaySDK interface is removed\nexport interface PayPalCommerceMessagesOptions {\n amount: number;\n placement: string;\n style?: PayPalCommerceMessagesStyleOptions;\n fundingSource?: string;\n}\n\n// TODO: This interface can be removed once the PayPaySDK interface is removed\nexport interface PayPalCommerceMessagesStyleOptions {\n layout?: string;\n}\n\n/**\n *\n * Other\n *\n */\nexport enum NonInstantAlternativePaymentMethods {\n OXXO = 'oxxo',\n IDEAL = 'ideal',\n}\n\nexport interface PayPalOrderData {\n orderId: string;\n setupToken?: string;\n approveUrl: string;\n fastlaneToken?: string;\n}\n\nexport interface PayPalUpdateOrderRequestBody {\n availableShippingOptions?: ShippingOption[];\n cartId: string;\n selectedShippingOption?: ShippingOption | null;\n}\n\nexport interface PayPalUpdateOrderResponse {\n statusCode: number;\n}\n\nexport interface PayPalCreateOrderRequestBody extends HostedInstrument, VaultedInstrument {\n cartId: string;\n metadataId?: string;\n setupToken?: boolean;\n fastlaneToken?: string;\n}\n\nexport enum PayPalOrderStatus {\n Approved = 'APPROVED',\n Created = 'CREATED',\n PayerActionRequired = 'PAYER_ACTION_REQUIRED',\n PollingStop = 'POLLING_STOP',\n PollingError = 'POLLING_ERROR',\n}\n\nexport interface PayPalOrderStatusData {\n status: PayPalOrderStatus;\n}\n\nexport interface PayPalCreateOrderCardFieldsResponse {\n orderId: string;\n setupToken?: string;\n}\n","import { ScriptLoader } from '@bigcommerce/script-loader';\n\nimport {\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n PaymentMethodClientUnavailableError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { transformLocaleToPayPalFormat } from '@bigcommerce/checkout-sdk/paypal-utils';\n\nimport {\n ComponentsScriptType,\n FundingType,\n PayPalCommerceHostWindow,\n PayPalCommerceInitializationData,\n PayPalCommerceScriptParams,\n PayPalSDK,\n} from './paypal-commerce-types';\n\nexport default class PayPalCommerceScriptLoader {\n private window: PayPalCommerceHostWindow;\n\n constructor(private scriptLoader: ScriptLoader) {\n this.window = window;\n }\n\n async getPayPalSDK(\n paymentMethod: PaymentMethod<PayPalCommerceInitializationData>,\n currencyCode: string,\n storeLanguage: string | undefined,\n initializesOnCheckoutPage?: boolean,\n forceLoad?: boolean,\n ): Promise<PayPalSDK> {\n const paypalSdkScriptConfig = this.getPayPalSdkScriptConfigOrThrow(\n paymentMethod,\n currencyCode,\n storeLanguage,\n initializesOnCheckoutPage,\n );\n\n return this.loadPayPalSDK(paypalSdkScriptConfig, forceLoad);\n }\n\n private async loadPayPalSDK(\n paypalSdkScriptConfig: PayPalCommerceScriptParams,\n forceLoad = false,\n ): Promise<PayPalSDK> {\n if (!this.window.paypal || forceLoad) {\n const options = this.transformConfig<PayPalCommerceScriptParams['options']>(\n paypalSdkScriptConfig.options,\n );\n const attributes = this.transformConfig<PayPalCommerceScriptParams['attributes']>(\n paypalSdkScriptConfig.attributes,\n );\n\n const paypalSdkUrl = 'https://www.paypal.com/sdk/js';\n const scriptQuery = new URLSearchParams(options).toString();\n const scriptSrc = `${paypalSdkUrl}?${scriptQuery}`;\n\n await this.scriptLoader.loadScript(scriptSrc, { async: true, attributes });\n }\n\n if (!this.window.paypal) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.window.paypal;\n }\n\n private getPayPalSdkScriptConfigOrThrow(\n paymentMethod: PaymentMethod<PayPalCommerceInitializationData>,\n currencyCode: string,\n storeLanguage: string | undefined,\n initializesOnCheckoutPage = true,\n ): PayPalCommerceScriptParams {\n const { id, clientToken, initializationData } = paymentMethod;\n\n if (!initializationData?.clientId) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentMethod);\n }\n\n const {\n intent,\n clientId,\n merchantId,\n buyerCountry,\n attributionId,\n isVenmoEnabled,\n isHostedCheckoutEnabled,\n isPayPalCreditAvailable,\n isDeveloperModeApplicable,\n availableAlternativePaymentMethods = [],\n enabledAlternativePaymentMethods = [],\n isGooglePayEnabled,\n } = initializationData;\n\n const commit = isHostedCheckoutEnabled || initializesOnCheckoutPage;\n\n const shouldEnableCard = id === 'paypalcommercecreditcards';\n const enableCardFunding = shouldEnableCard ? ['card'] : [];\n const disableCardFunding = !shouldEnableCard ? ['card'] : [];\n\n const enableCreditFunding = isPayPalCreditAvailable ? ['credit', 'paylater'] : [];\n const disableCreditFunding = !isPayPalCreditAvailable ? ['credit', 'paylater'] : [];\n\n const enableVenmoFunding = isVenmoEnabled ? ['venmo'] : [];\n const disableVenmoFunding = !isVenmoEnabled ? ['venmo'] : [];\n const disableAPMsFunding = availableAlternativePaymentMethods.filter(\n (apm: string) => !enabledAlternativePaymentMethods.includes(apm),\n );\n const googlePayComponent: ComponentsScriptType = isGooglePayEnabled ? ['googlepay'] : [];\n const cardFieldsComponent: ComponentsScriptType = initializesOnCheckoutPage\n ? ['card-fields']\n : [];\n const disableFunding: FundingType = [\n ...disableCardFunding,\n ...disableCreditFunding,\n ...disableVenmoFunding,\n ...disableAPMsFunding,\n ];\n const enableFunding: FundingType = [\n ...enableCardFunding,\n ...enableCreditFunding,\n ...enableVenmoFunding,\n ...enabledAlternativePaymentMethods,\n ];\n\n const locale = transformLocaleToPayPalFormat(storeLanguage);\n\n return {\n options: {\n 'client-id': clientId,\n 'merchant-id': merchantId,\n 'enable-funding': enableFunding.length > 0 ? enableFunding : undefined,\n 'disable-funding': disableFunding.length > 0 ? disableFunding : undefined,\n commit,\n components: [\n 'buttons',\n 'hosted-fields',\n 'payment-fields',\n 'legal',\n ...googlePayComponent,\n ...cardFieldsComponent,\n ],\n currency: currencyCode,\n intent,\n ...(isDeveloperModeApplicable && { 'buyer-country': buyerCountry }),\n ...(locale && { locale }),\n },\n attributes: {\n 'data-partner-attribution-id': attributionId,\n 'data-client-token': clientToken,\n },\n };\n }\n\n private transformConfig<T extends Record<string, unknown>>(config: T): Record<string, string> {\n let transformedConfig = {};\n\n const keys = Object.keys(config) as Array<keyof T>;\n\n keys.forEach((key) => {\n const value = config[key];\n\n if (\n value === undefined ||\n value === null ||\n value === '' ||\n (Array.isArray(value) && value.length === 0)\n ) {\n return;\n }\n\n transformedConfig = {\n ...transformedConfig,\n [key]: Array.isArray(value) ? value.join(',') : value,\n };\n });\n\n return transformedConfig;\n }\n}\n","import { PAYPAL_SDK_SUPPORTED_LOCALES } from '../paypal-commerce-constants';\n\n/**\n * Transforms store language to PayPal SDK locale format.\n * PayPal SDK expects locale in format 'en_US' (underscore separator).\n * Returns undefined if the locale is not supported by PayPal SDK.\n * Examples: 'fr-CA' -> 'fr_CA', 'fr' -> 'fr_FR'\n */\nexport default function transformLocaleToPayPalFormat(\n storeLanguage: string | undefined,\n): string | undefined {\n if (!storeLanguage) {\n return undefined;\n }\n\n let locale: string;\n\n if (storeLanguage.includes('-')) {\n const [language, region] = storeLanguage.split('-');\n\n locale = `${language}_${region.toUpperCase()}`;\n } else {\n locale = `${storeLanguage}_${storeLanguage.toUpperCase()}`;\n }\n\n return PAYPAL_SDK_SUPPORTED_LOCALES.includes(locale) ? locale : undefined;\n}\n","import { Response } from '@bigcommerce/request-sender';\nimport { isNil, omitBy } from 'lodash';\n\nimport {\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n PaymentMethodClientUnavailableError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n AddressRequestBody,\n BillingAddressResponse,\n GraphQLRequestOptions,\n WalletButtonIntegrationService,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport PayPalCommerceScriptLoader from './paypal-commerce-script-loader';\nimport {\n PayPalButtonStyleOptions,\n PayPalCommerceInitializationData,\n PayPalSDK,\n StyleButtonColor,\n StyleButtonLabel,\n StyleButtonShape,\n} from './paypal-commerce-types';\n\nexport default class PaypalCommerceWalletService {\n private paypalSdk?: PayPalSDK;\n\n constructor(\n private walletButtonIntegrationService: WalletButtonIntegrationService,\n private paypalCommerceScriptLoader: PayPalCommerceScriptLoader,\n ) {}\n\n /**\n *\n * PayPalSDK methods\n *\n */\n async loadPayPalSdk(\n paymentMethod: PaymentMethod<PayPalCommerceInitializationData>,\n providedCurrencyCode: string,\n initializesOnCheckoutPage?: boolean,\n forceLoad?: boolean,\n ): Promise<PayPalSDK | undefined> {\n this.paypalSdk = await this.paypalCommerceScriptLoader.getPayPalSDK(\n paymentMethod,\n providedCurrencyCode,\n undefined,\n initializesOnCheckoutPage,\n forceLoad,\n );\n\n return this.paypalSdk;\n }\n\n getPayPalSdkOrThrow(): PayPalSDK {\n if (!this.paypalSdk) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.paypalSdk;\n }\n\n /**\n *\n * Payment submitting and tokenizing methods\n *\n */\n async proxyTokenizationPayment(cartId: string, orderId?: string): Promise<void> {\n if (!orderId) {\n throw new MissingDataError(MissingDataErrorType.MissingOrderId);\n }\n\n const inputData = {\n paymentWalletData: {\n providerId: 'paypalcommerce',\n providerOrderId: orderId,\n },\n cartEntityId: cartId,\n queryParams: [\n { key: 'payment_type', value: 'paypal' },\n { key: 'action', value: 'set_external_checkout' },\n { key: 'provider', value: 'paypalcommerce' },\n ],\n };\n\n const response = await this.walletButtonIntegrationService.getRedirectToCheckoutUrl(\n inputData,\n );\n\n if (!response.body.redirectUrls?.externalCheckoutUrl) {\n throw new Error('Failed to redirection to checkout page');\n }\n\n window.location.assign(response.body.redirectUrls.externalCheckoutUrl);\n }\n\n async createPaymentOrderIntent(\n providerId: string,\n cartId: string,\n options?: GraphQLRequestOptions,\n ): Promise<string> {\n const inputData = {\n cartEntityId: cartId,\n paymentWalletEntityId: providerId,\n };\n const response = await this.walletButtonIntegrationService.createPaymentOrderIntent(\n inputData,\n options,\n );\n\n return response.body.orderId;\n }\n\n async addBillingAddress(\n cartId: string,\n address: AddressRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n return this.walletButtonIntegrationService.addBillingAddress(cartId, address, options);\n }\n\n /**\n *\n * Buttons style methods\n *\n */\n getValidButtonStyle(style?: PayPalButtonStyleOptions): PayPalButtonStyleOptions {\n const { color, height, label, shape } = style || {};\n\n const validStyles = {\n color: color && StyleButtonColor[color] ? color : undefined,\n height: this.getValidHeight(height),\n label: label && StyleButtonLabel[label] ? label : undefined,\n shape: shape && StyleButtonShape[shape] ? shape : undefined,\n };\n\n return omitBy(validStyles, isNil);\n }\n\n getValidHeight(height?: number): number {\n const defaultHeight = 40;\n const minHeight = 25;\n const maxHeight = 55;\n\n if (!height || typeof height !== 'number') {\n return defaultHeight;\n }\n\n if (height > maxHeight) {\n return maxHeight;\n }\n\n if (height < minHeight) {\n return minHeight;\n }\n\n return height;\n }\n\n /**\n *\n * Utils methods\n *\n */\n removeElement(elementId?: string): void {\n const element = elementId && document.getElementById(elementId);\n\n if (element) {\n // For now this is a temporary solution, further removeElement method will be removed\n element.style.display = 'none';\n }\n }\n}\n","import {\n CheckoutButtonInitializeOptions,\n CheckoutButtonStrategy,\n InvalidArgumentError,\n PaymentMethod,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { PayPalCommerceInitializationData } from '@bigcommerce/checkout-sdk/paypal-commerce-utils';\nimport { AddressRequestBody } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport {\n ApproveCallbackActions,\n ApproveCallbackPayload,\n PayPalCommerceButtonsOptions,\n PayPalOrderDetails,\n} from '../paypal-commerce-types';\nimport PaypalCommerceWalletService from '../paypal-commerce-wallet-service';\n\nimport { WithPayPalCommerceWalletInitializeOptions } from './paypal-commerce-wallet-initialize-options';\n\nexport default class PaypalCommerceWalletStrategy implements CheckoutButtonStrategy {\n constructor(private paypalCommerceHeadlessWalletButtonService: PaypalCommerceWalletService) {}\n\n async initialize(\n options: CheckoutButtonInitializeOptions & WithPayPalCommerceWalletInitializeOptions,\n ): Promise<void> {\n const { paypalcommercepaypal, containerId, methodId } = options;\n\n if (!methodId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.methodId\" argument is not provided.',\n );\n }\n\n if (!containerId) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.containerId\" argument is not provided.`,\n );\n }\n\n if (!paypalcommercepaypal) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.paypalcommercepaypal\" argument is not provided.`,\n );\n }\n\n let parsedInitializationData: PaymentMethod<PayPalCommerceInitializationData>;\n\n try {\n parsedInitializationData = JSON.parse(atob(paypalcommercepaypal.initializationData));\n } catch {\n throw new InvalidArgumentError(\"Failed to parse payment method 'initializationData'.\");\n }\n\n await this.paypalCommerceHeadlessWalletButtonService.loadPayPalSdk(\n parsedInitializationData,\n paypalcommercepaypal.currency.code,\n false,\n );\n\n this.renderButton(containerId, 'paypalcommerce.paypal', paypalcommercepaypal.cartId);\n }\n\n deinitialize(): Promise<void> {\n return Promise.resolve();\n }\n\n private renderButton(containerId: string, methodId: string, cartId: string): void {\n const paypalSdk = this.paypalCommerceHeadlessWalletButtonService.getPayPalSdkOrThrow();\n\n const defaultCallbacks = {\n createOrder: () =>\n this.paypalCommerceHeadlessWalletButtonService.createPaymentOrderIntent(\n methodId,\n cartId,\n ),\n onApprove: async (\n { orderID }: ApproveCallbackPayload,\n actions: ApproveCallbackActions,\n ) => {\n const orderDetails = await actions.order.get();\n const billingAddress = this.mapOrderDetailsToBillingAddress(orderDetails);\n\n await this.paypalCommerceHeadlessWalletButtonService.addBillingAddress(\n cartId,\n billingAddress,\n );\n await this.paypalCommerceHeadlessWalletButtonService.proxyTokenizationPayment(\n cartId,\n orderID,\n );\n },\n };\n\n const buttonRenderOptions: PayPalCommerceButtonsOptions = {\n fundingSource: paypalSdk.FUNDING.PAYPAL,\n style: this.paypalCommerceHeadlessWalletButtonService.getValidButtonStyle(),\n ...defaultCallbacks,\n };\n\n const paypalButton = paypalSdk.Buttons(buttonRenderOptions);\n\n if (paypalButton.isEligible()) {\n paypalButton.render(`#${containerId}`);\n } else {\n this.paypalCommerceHeadlessWalletButtonService.removeElement(containerId);\n }\n }\n\n private mapOrderDetailsToBillingAddress(orderDetails: PayPalOrderDetails): AddressRequestBody {\n const { payer } = orderDetails;\n\n return {\n firstName: payer.name.given_name,\n lastName: payer.name.surname,\n company: '',\n address1: payer.address.address_line_1,\n address2: payer.address.address_line_2,\n city: payer.address.admin_area_2,\n email: payer.email_address,\n stateOrProvince: payer.address.admin_area_1 ?? '',\n stateOrProvinceCode: payer.address.admin_area_1 ?? '',\n countryCode: payer.address.country_code,\n postalCode: payer.address.postal_code,\n phone: payer.phone?.phone_number.national_number ?? '',\n shouldSaveAddress: false,\n };\n }\n}\n","import { getScriptLoader } from '@bigcommerce/script-loader';\n\nimport { toResolvableModule } from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { WalletPaymentButtonStrategyFactory } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport PayPalCommerceScriptLoader from '../paypal-commerce-script-loader';\nimport PaypalCommerceWalletService from '../paypal-commerce-wallet-service';\n\nimport PaypalCommerceWalletStrategy from './paypal-commerce-wallet-strategy';\n\nconst createPaypalCommerceWalletStrategy: WalletPaymentButtonStrategyFactory<\n PaypalCommerceWalletStrategy\n> = (walletButtonIntegrationService) =>\n new PaypalCommerceWalletStrategy(\n new PaypalCommerceWalletService(\n walletButtonIntegrationService,\n new PayPalCommerceScriptLoader(getScriptLoader()),\n ),\n );\n\nexport default toResolvableModule(createPaypalCommerceWalletStrategy, [\n { id: 'paypalcommercepaypal' },\n]);\n","import ResolvableModule from './resolvable-module';\n\nexport default function isResolvableModule<TModule extends object, TIdentifier>(\n module: TModule,\n): module is ResolvableModule<TModule, TIdentifier> {\n return module && 'resolveIds' in module;\n}\n","export default function getEnvironment(): string {\n try {\n return process.env.NODE_ENV || 'development';\n } catch (e) {\n return 'development';\n }\n}\n","import Logger from './logger';\n\ntype keys = 'log' | 'info' | 'warn' | 'error' | 'debug';\n\nexport default class ConsoleLogger implements Logger {\n constructor(private _console?: Console) {}\n\n log(...messages: any[]): void {\n this._logToConsole('log', ...messages);\n }\n\n info(...messages: any[]): void {\n this._logToConsole('info', ...messages);\n }\n\n warn(...messages: any[]): void {\n this._logToConsole('warn', ...messages);\n }\n\n error(...messages: any[]): void {\n this._logToConsole('error', ...messages);\n }\n\n debug(...messages: any[]): void {\n this._logToConsole('debug', ...messages);\n }\n\n private _logToConsole(type: keys, ...messages: any[]): void {\n if (!this._console || !this._console[type]) {\n return;\n }\n\n this._console[type].call(this._console, ...messages);\n }\n}\n","import Logger from './logger';\n\nexport default class NoopLogger implements Logger {\n log(): void {}\n\n info(): void {}\n\n warn(): void {}\n\n error(): void {}\n\n debug(): void {}\n}\n","import { getEnvironment } from '../utility';\n\nimport createLogger from './create-logger';\nimport Logger from './logger';\n\nconst logger = createLogger(getEnvironment() !== 'test');\n\nexport default function getDefaultLogger(): Logger {\n return logger;\n}\n","import ConsoleLogger from './console-logger';\nimport Logger from './logger';\nimport NoopLogger from './noop-logger';\n\nexport default function createLogger(isEnabled = true): Logger {\n if (!isEnabled) {\n return new NoopLogger();\n }\n\n return new ConsoleLogger(console);\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 './standard-error';\n\n/**\n * This error should be thrown when a method is unable to proceed because the\n * caller has not provided all the arguments according to their requirements,\n * i.e.: if an argument is missing or it is not the expected data type.\n */\nexport default class InvalidArgumentError extends StandardError {\n constructor(message?: string) {\n super(message || 'Invalid arguments have been provided.');\n\n this.name = 'InvalidArgumentError';\n this.type = 'invalid_argument';\n }\n}\n","import { InvalidArgumentError } from '../error/errors';\n\nimport Factory from './factory';\n\nexport default class Registry<T, K extends string = string> {\n private _factories: { [key: string]: Factory<T> };\n private _instances: { [key: string]: T };\n private _defaultToken: string;\n private _useFallback: string | boolean;\n private _tokenResolver: (\n token: string,\n registeredTokens: string[],\n exactMatch?: boolean,\n ) => string | undefined;\n\n constructor(options?: RegistryOptions) {\n this._factories = {};\n this._instances = {};\n this._defaultToken = options?.defaultToken ?? 'default';\n this._useFallback = options?.useFallback ?? true;\n this._tokenResolver = options?.tokenResolver ?? ((token) => token);\n }\n\n get(token?: K, cacheToken?: string): T {\n try {\n return this._getInstance(\n token || this._defaultToken,\n cacheToken || token || this._defaultToken,\n );\n } catch (error) {\n if (!this._useFallback) {\n throw error;\n }\n\n return this._getInstance(this._defaultToken, cacheToken || this._defaultToken);\n }\n }\n\n getFactory(token: string, exactMatch?: boolean): Factory<T> | undefined {\n const resolvedToken = this._tokenResolver(token, Object.keys(this._factories), exactMatch);\n const factory = resolvedToken ? this._factories[resolvedToken] : undefined;\n\n return factory;\n }\n\n register(token: K, factory: Factory<T>): void {\n if (this._hasFactory(token)) {\n throw new InvalidArgumentError(`'${token}' is already registered.`);\n }\n\n this._factories[token] = factory;\n }\n\n protected _hasFactory(token: string): boolean {\n return !!this._factories[token];\n }\n\n private _hasInstance(token: string): boolean {\n return !!this._instances[token];\n }\n\n private _getInstance(token: string, cacheToken: string): T {\n if (!this._hasInstance(cacheToken)) {\n const factory = this.getFactory(token);\n\n if (!factory) {\n throw new InvalidArgumentError(`'${token}' is not registered.`);\n }\n\n this._instances[cacheToken] = factory();\n }\n\n return this._instances[cacheToken];\n }\n}\n\nexport interface RegistryOptions {\n defaultToken?: string;\n useFallback?: boolean;\n tokenResolver?(token: string, registeredTokens: string[]): string | undefined;\n}\n","import { getDefaultLogger } from '../log';\nimport { getEnvironment } from '../utility';\n\nimport Factory from './factory';\nimport Registry from './registry';\n\nexport default class ResolveIdRegistry<TType, TToken extends { [key: string]: unknown }> {\n private _registry: Registry<TType>;\n\n constructor(private _useFallback = false) {\n this._registry = new Registry({\n tokenResolver: this._resolveToken.bind(this),\n defaultToken: this._encodeToken({ default: true } as unknown as TToken),\n useFallback: this._useFallback,\n });\n }\n\n get(resolveId: TToken): TType {\n return this._registry.get(this._encodeToken(resolveId));\n }\n\n getFactory(resolveId: TToken, exactMatch?: boolean): Factory<TType> | undefined {\n try {\n return this._registry.getFactory(this._encodeToken(resolveId), exactMatch);\n } catch (error) {\n return undefined;\n }\n }\n\n getUseFallback(): boolean {\n return this._useFallback;\n }\n\n register(resolveId: TToken, factory: Factory<TType>): void {\n this._registry.register(this._encodeToken(resolveId), factory);\n }\n\n private _encodeToken(resolveId: TToken): string {\n return btoa(JSON.stringify(resolveId));\n }\n\n private _decodeToken(token: string): TToken {\n return JSON.parse(atob(token));\n }\n\n private _resolveToken(\n token: string,\n registeredTokens: string[],\n exactMatch?: boolean,\n ): string | undefined {\n const query = this._decodeToken(token);\n\n const results: Array<{\n token: string;\n matches: number;\n default: boolean;\n totalKeys: number;\n }> = [];\n\n registeredTokens.forEach((registeredToken) => {\n const resolverId = this._decodeToken(registeredToken);\n\n const result = {\n token: registeredToken,\n matches: 0,\n default: false,\n totalKeys: Object.keys(resolverId).length,\n };\n\n for (const [key, value] of Object.entries(resolverId)) {\n if (key in query && query[key] !== value) {\n result.matches = 0;\n break;\n }\n\n if (key in query && query[key] === value) {\n result.matches++;\n }\n\n if (key === 'default' && value === true) {\n result.default = true;\n }\n }\n\n results.push(result);\n });\n\n const matchedResults = results\n .sort((a, b) => b.matches - a.matches)\n .filter((result) => result.matches > 0);\n\n if (matchedResults.length > 1 && matchedResults[0].matches === matchedResults[1].matches) {\n if (getEnvironment() === 'development') {\n getDefaultLogger().warn(\n 'The provided query matches at least two strategies with the same specificity. This warning can be resolved by making their resolve ID more specific.',\n );\n }\n }\n\n const queryKeyCount = Object.keys(query).length;\n\n if (exactMatch) {\n const exactResult = matchedResults.find(\n (result) => result.matches === queryKeyCount && result.matches === result.totalKeys,\n );\n\n if (!exactResult) {\n throw new Error(\n `Unable to resolve to a registered token with the provided token for ${JSON.stringify(\n query,\n )} with exact match.`,\n );\n }\n\n return exactResult.token;\n }\n\n const matched = matchedResults[0];\n\n if (matched && matched.token) {\n return matched.token;\n }\n\n if (this._useFallback) {\n const defaultToken = results.find((result) => result.default)?.token;\n\n if (defaultToken) {\n return defaultToken;\n }\n }\n\n throw new Error(\n `Unable to resolve to a registered token with the provided token for ${JSON.stringify(\n query,\n )}.`,\n );\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 // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const boundMethod = method.bind(this) as T;\n\n Object.defineProperty(this, key, {\n ...descriptor,\n value: boundMethod,\n });\n\n return boundMethod;\n },\n set(value) {\n method = value;\n },\n };\n}\n\nexport type Constructor<T> = new (...args: any[]) => T;\nexport type Method = (...args: any[]) => any;\n","import { uniqueId } from 'lodash';\n\nimport { InvalidArgumentError } from '../error/errors';\n\nconst getUniqId = (idPrefix?: string): string => {\n const id = uniqueId(idPrefix);\n\n return document.getElementById(id) ? getUniqId(idPrefix) : id;\n};\n\nexport default function setUniqueElementId(selector: string, idPrefix: string): string[] {\n const containers = document.querySelectorAll(selector);\n\n if (!containers.length) {\n throw new InvalidArgumentError(\n `Unable to find any element with the specified selector: ${selector}`,\n );\n }\n\n return Array.prototype.slice.call(containers).map((container: HTMLElement) => {\n if (!container.id) {\n container.id = getUniqId(idPrefix);\n }\n\n return container.id;\n });\n}\n","import { bindDecorator as bind } from '@bigcommerce/checkout-sdk/utility';\n\nimport { isElementId, setUniqueElementId } from '../common/dom';\n\nimport { BaseWalletButtonInitializeOptions, WalletButtonOptions } from './wallet-button-options';\nimport WalletButtonRegistryV2 from './wallet-button-strategy-registry-v2';\n\n@bind\nexport default class WalletButtonInitializer {\n constructor(private _registryV2: WalletButtonRegistryV2) {}\n\n initializeWalletButton(options: BaseWalletButtonInitializeOptions): Promise<void[]> {\n const containerIds = this.getContainerIds(options);\n\n return Promise.all(\n containerIds.map(async (containerId) => {\n const strategy = this._registryV2.get({ id: options.methodId });\n\n return strategy.initialize({ ...options, containerId });\n }),\n );\n }\n\n deinitializeWalletButton(options: WalletButtonOptions): Promise<void> {\n return this._registryV2.get({ id: options.methodId }).deinitialize();\n }\n\n private getContainerIds(options: BaseWalletButtonInitializeOptions) {\n return isElementId(options.containerId)\n ? [options.containerId]\n : setUniqueElementId(options.containerId, `${options.methodId}-container`);\n }\n}\n","/* eslint-disable no-useless-escape */\nexport default function isElementId(id: string): boolean {\n return /^\\w[\\w\\-\\:\\.]*$/.test(id);\n}\n","import { createWalletButtonIntegrationService } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport * as walletButtonStrategyFactories from '../generated/wallet-button-strategies';\n\nimport createWalletButtonStrategyRegistry from './create-wallet-button-strategy-registry';\nimport WalletButtonInitializer from './wallet-button-initializer';\nimport { WalletButtonInitializerOptions } from './wallet-buttons';\n\nexport default function createWalletButtonInitializer(\n options: WalletButtonInitializerOptions,\n): WalletButtonInitializer {\n const { graphQLEndpoint } = options;\n\n const walletButtonIntegrationService = createWalletButtonIntegrationService(graphQLEndpoint);\n\n const registryV2 = createWalletButtonStrategyRegistry(\n walletButtonIntegrationService,\n walletButtonStrategyFactories,\n );\n\n return new WalletButtonInitializer(registryV2);\n}\n","import {\n CheckoutButtonStrategy,\n CheckoutButtonStrategyResolveId,\n isResolvableModule,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n WalletButtonIntegrationService,\n WalletPaymentButtonStrategyFactory,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport { ResolveIdRegistry } from '../common/registry';\n\nexport interface WalletButtonStrategyFactories {\n [key: string]: WalletPaymentButtonStrategyFactory<CheckoutButtonStrategy>;\n}\n\nexport default function createWalletButtonStrategyRegistry(\n walletButtonIntegrationService: WalletButtonIntegrationService,\n walletButtonStrategyFactories: WalletButtonStrategyFactories,\n): ResolveIdRegistry<CheckoutButtonStrategy, CheckoutButtonStrategyResolveId> {\n const registry = new ResolveIdRegistry<\n CheckoutButtonStrategy,\n CheckoutButtonStrategyResolveId\n >();\n\n for (const [, createWalletButtonStrategy] of Object.entries(walletButtonStrategyFactories)) {\n if (\n !isResolvableModule<\n WalletPaymentButtonStrategyFactory<CheckoutButtonStrategy>,\n CheckoutButtonStrategyResolveId\n >(createWalletButtonStrategy)\n ) {\n continue;\n }\n\n for (const resolverId of createWalletButtonStrategy.resolveIds) {\n registry.register(resolverId, () =>\n createWalletButtonStrategy(walletButtonIntegrationService),\n );\n }\n }\n\n return registry;\n}\n","import { createRequestSender } from '@bigcommerce/request-sender';\n\nimport BillingAddressRequestSender from './billing/billing-address-request-sender';\nimport { CheckoutRequestSender } from './checkout/checkout-request-sender';\nimport { PaymentRequestSender } from './payment/payment-request-sender';\nimport WalletButtonIntegrationService from './wallet-button-integration-service';\n\nconst createWalletButtonIntegrationService = (\n graphQLEndpoint: string,\n): WalletButtonIntegrationService => {\n const requestSender = createRequestSender();\n\n return new WalletButtonIntegrationService(\n graphQLEndpoint,\n new BillingAddressRequestSender(requestSender),\n new PaymentRequestSender(requestSender),\n new CheckoutRequestSender(requestSender),\n );\n};\n\nexport default createWalletButtonIntegrationService;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","BillingAddressRequestSender","constructor","requestSender","this","updateBillingAddress","graphQLEndpoint","checkoutId","address","options","id","billingAddressFields","__rest","requestOptions","headers","assign","body","query","variables","input","checkoutEntityId","addressEntityId","data","response","post","window","location","origin","billingAddress","checkout","updateCheckoutBillingAddress","addBillingAddress","addCheckoutBillingAddress","StandardError","Error","message","super","name","type","setPrototypeOf","__proto__","captureStackTrace","stack","CheckoutRedirectError","CheckoutRequestSender","getRedirectToCheckoutUrl","inputData","cart","createCartRedirectUrls","errorMessage","_a","errors","length","redirectUrls","error","PaymentMethodCancelledError","PaymentOrderCreationError","PaymentRequestSender","createPaymentOrderIntent","payment","paymentWallet","createPaymentWalletIntent","paymentWalletIntentData","WalletButtonIntegrationService","billingAddressRequestSender","paymentRequestSender","checkoutRequestSender","UnsupportedBrowserError","InvalidArgumentError","PaymentArgumentInvalidError","invalidFields","join","PaymentInvalidFormError","details","NotInitializedErrorType","NotInitializedError","subtype","CustomerNotInitialized","PaymentNotInitialized","ShippingNotInitialized","SpamProtectionNotInitialized","getErrorMessage","paypalSdkPromise","PAYPAL_COMPONENTS","PaypalButtonStyleLayoutOption","PaypalButtonStyleSizeOption","PaypalButtonStyleColorOption","PaypalButtonStyleLabelOption","PaypalButtonStyleShapeOption","MessagingPlacements","BraintreeEnv","BraintreeModuleName","BraintreeFormFieldType","isBraintreeError","Boolean","BraintreeIntegrationService","braintreeScriptLoader","braintreeHostWindow","overlay","dataCollectors","initialize","clientToken","threeDSecureOptions","getBraintreeFastlane","cardId","isTestModeEnabled","styles","localStorage","setItem","braintreeFastlane","getClientTokenOrThrow","client","getClient","deviceData","getSessionId","braintreeFastlaneCreator","loadFastlane","defaultStyles","root","backgroundColorPrimary","create","authorization","clientCreator","loadClient","getPaypal","braintreePaypal","Promise","all","loadPaypal","then","paypal","shouldSaveInstrument","config","braintree_integration_service_rest","newWindowFlow","__WEBPACK_EXTERNAL_MODULE__braintree_browser_detection_e7ac357c_supportsPopups__","show","onClick","focusWindow","tokenize","enableShippingAddress","flow","useraction","remove","catch","getPaypalCheckout","onSuccess","onError","paypalCheckout","loadPaypalCheckout","paypalCheckoutConfig","braintreePaypalCheckout","paypalSdkLoadConfig","currency","isCreditEnabled","components","toString","intent","commit","resolve","reject","loadPayPalSDK","err","loadPayPalSDKOnce","getDataCollector","cacheKey","cached","dataCollector","loadDataCollector","dataCollectorConfig","kount","code","undefined","teardown","getBraintreeEnv","isTestMode","Sandbox","Production","mapToBraintreeShippingAddressOverride","recipientName","firstName","lastName","line1","address1","line2","address2","city","state","stateOrProvinceCode","postalCode","countryCode","phone","mapToLegacyShippingAddress","email","shippingAddress","split","first_name","last_name","phone_number","address_line_1","address_line_2","country_code","postal_code","mapToLegacyBillingAddress","removeElement","elementId","element","document","getElementById","cartId","riskCorrelationId","teardownModule","default","get3DS","threeDS","load3DS","threeDSecure","version","getVenmoCheckout","venmoConfig","venmoCheckout","loadVenmoCheckout","venmoCheckoutConfig","allowDesktop","paymentMethodUsage","braintreeVenmoCheckout","isBrowserSupported","verifyCard","amount","tokenizationPayload","tokenizeCard","challenge3DSVerification","paymentData","instrument","creditCardInstrument","ccExpiry","ccNumber","ccName","isCreditCardInstrumentLike","getErrorsRequiredFields","__WEBPACK_EXTERNAL_MODULE_lodash_isEmpty__","requestData","mapToCreditCard","creditCards","request","nonce","bin","present3DSChallenge","module","creditCard","cardholderName","number","cvv","ccCvv","expirationDate","month","year","validate","countryCodeAlpha2","locality","countryName","country","streetAddress","endpoint","method","challengeRequested","additionalInformation","roundedAmount","toFixed","Number","onLookupComplete","_data","next","collectDeviceData","PaymentMethodClientUnavailableError","BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION","BRAINTREE_SDK_DEFAULT_VERSION","BRAINTREE_SDK_STABLE_VERSION","BRAINTREE_SDK_SCRIPTS_INTEGRITY","Client","PaypalCheckout","Paypal","LocalPayment","DataCollector","UsBankAccount","GooglePayment","ThreeDSecure","VisaCheckout","Venmo","HostedFields","Fastlane","BraintreeScriptLoader","scriptLoader","braintreeSDKVersionManager","loadBraintreeModuleOrThrow","loadLocalPayment","loadUsBankAccount","loadGooglePayment","loadVisaCheckout","loadHostedFields","loadVisaCheckoutSdk","testMode","V","hash","loadScript","async","attributes","integrity","crossorigin","braintreeModuleName","fileName","getBraintreeModule","braintreeSdkVersion","getSDKVersion","scriptPath","getIntegrityValuesByModuleName","braintree","moduleName","BraintreeHeadlessSDKVersionManager","BraintreePaypalWalletError","MissingDataErrorType","BraintreePaypalWalletService","walletButtonIntegrationService","braintreeIntegrationService","containerId","getBraintreePaypalCheckoutOrThrow","proxyTokenizationPayment","authorizeData","methodId","tokenizePayload","tokenizePayment","paymentWalletData","providerId","providerOrderId","cartEntityId","queryParams","encodeURIComponent","JSON","stringify","externalCheckoutUrl","toResolvableModule","resolveIds","MissingDataError","MissingBillingAddress","MissingCart","MissingConsignments","MissingCheckout","MissingCustomer","MissingCheckoutConfig","MissingOrderConfig","MissingOrder","MissingOrderId","MissingPayment","MissingPaymentToken","MissingPaymentMethod","MissingShippingAddress","missing_data_error_getErrorMessage","getValidButtonStyle","style","color","fundingicons","height","layout","shape","size","tagline","validStyles","getValidHeight","__WEBPACK_EXTERNAL_MODULE_lodash_omitBy__","__WEBPACK_EXTERNAL_MODULE_lodash_isNil__","currentHeight","isNaN","BraintreePaypalWalletStrategy","braintreePaypalWalletService","braintreepaypal","parsedPaymentMethod","parse","atob","initializationData","paypalCheckoutOptions","renderButton","deinitialize","onEligibilityFailure","fundingSources","FUNDING","PAYPAL","PAYLATER","hasRenderedButton","forEach","fundingSource","buttonStyle","GOLD","paypalButtonRender","Buttons","env","createOrder","setupPayment","onApprove","onAuthorizeError","isEligible","render","onPaymentError","createPayment","shippingAddressEditable","offerCredit","create_braintree_paypal_wallet_strategy","__WEBPACK_EXTERNAL_MODULE__bigcommerce_script_loader_875b3e8f_getScriptLoader__","PAYPAL_SDK_SUPPORTED_LOCALES","LiabilityShiftEnum","PayPalCommerceIntent","StyleButtonLabel","StyleButtonColor","StyleButtonShape","NonInstantAlternativePaymentMethods","PayPalOrderStatus","PayPalCommerceScriptLoader","getPayPalSDK","paymentMethod","currencyCode","storeLanguage","initializesOnCheckoutPage","forceLoad","paypalSdkScriptConfig","getPayPalSdkScriptConfigOrThrow","paypalSdkScriptConfig_1","transformConfig","scriptSrc","URLSearchParams","clientId","merchantId","buyerCountry","attributionId","isVenmoEnabled","isHostedCheckoutEnabled","isPayPalCreditAvailable","isDeveloperModeApplicable","availableAlternativePaymentMethods","enabledAlternativePaymentMethods","isGooglePayEnabled","shouldEnableCard","enableCardFunding","enableCreditFunding","enableVenmoFunding","googlePayComponent","cardFieldsComponent","disableFunding","filter","apm","includes","enableFunding","locale","language","region","toUpperCase","transformLocaleToPayPalFormat","transformedConfig","keys","Array","isArray","PaypalCommerceWalletService","paypalCommerceScriptLoader","loadPayPalSdk","providedCurrencyCode","paypalSdk","getPayPalSdkOrThrow","orderId","paymentWalletEntityId","label","display","PaypalCommerceWalletStrategy","paypalCommerceHeadlessWalletButtonService","paypalcommercepaypal","parsedInitializationData","defaultCallbacks","actions_1","paypal_commerce_wallet_strategy_awaiter","orderID","actions","orderDetails","order","mapOrderDetailsToBillingAddress","buttonRenderOptions","paypalButton","payer","given_name","surname","company","admin_area_2","email_address","stateOrProvince","admin_area_1","_b","_d","_c","national_number","shouldSaveAddress","create_paypal_commerce_wallet_strategy","isResolvableModule","getEnvironment","e","ConsoleLogger","_console","log","messages","_logToConsole","info","warn","debug","NoopLogger","logger","isEnabled","console","createLogger","standard_error_StandardError","invalid_argument_error_InvalidArgumentError","Registry","_factories","_instances","_defaultToken","defaultToken","_useFallback","useFallback","_tokenResolver","tokenResolver","token","cacheToken","_getInstance","getFactory","exactMatch","resolvedToken","register","factory","_hasFactory","_hasInstance","ResolveIdRegistry","_registry","_resolveToken","bind","_encodeToken","resolveId","getUseFallback","btoa","_decodeToken","registeredTokens","results","registeredToken","resolverId","result","matches","totalKeys","entries","push","matchedResults","sort","a","b","queryKeyCount","exactResult","find","matched","bindMethodDecorator","_","descriptor","boundMethod","set","getUniqId","idPrefix","__WEBPACK_EXTERNAL_MODULE_lodash_uniqueId__","WalletButtonInitializer","_registryV2","initializeWalletButton","containerIds","getContainerIds","map","wallet_button_initializer_awaiter","deinitializeWalletButton","test","selector","containers","querySelectorAll","slice","container","setUniqueElementId","__decorate","target","decoratedTarget","getOwnPropertyNames","getOwnPropertyDescriptor","bindClassDecorator","createWalletButtonInitializer","registryV2","walletButtonStrategyFactories","registry","createWalletButtonStrategy","createWalletButtonStrategyRegistry","__WEBPACK_EXTERNAL_MODULE__bigcommerce_request_sender_01d1f546_createRequestSender__","create_wallet_button_integration_service","wallet_button_strategies_namespaceObject","wallet_button_initializer"],"sourceRoot":""}
1
+ {"version":3,"file":"wallet-button.js","mappings":"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CA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,aChkBQC,GAoKAC,GAgRAC,GAQAC,GAQAC,GAoFAC,GA6BAC,sSCrlBG,MAAMC,GAGjB,WAAAjc,CAAoBkS,GAAAhS,KAAAgS,aAAAA,EAChBhS,KAAKqB,OAASA,MAClB,CAEM,YAAA2a,CACFC,EACAC,EACAC,EACAC,EACAC,4CAEA,MAAMC,EAAwBtc,KAAKuc,gCAC/BN,EACAC,EACAC,EACAC,GAGJ,OAAOpc,KAAK6J,cAAcyS,EAAuBD,EACrD,GAEc,aAAAxS,CAAa2S,6CACvBF,EACAD,GAAY,GAEZ,IAAKrc,KAAKqB,OAAOyG,QAAUuU,EAAW,CAClC,MAAMhc,EAAUL,KAAKyc,gBACjBH,EAAsBjc,SAEpByS,EAAa9S,KAAKyc,gBACpBH,EAAsBxJ,YAKpB4J,EAAY,iCADE,IAAIC,gBAAgBtc,GAASmJ,mBAG3CxJ,KAAKgS,aAAaY,WAAW8J,EAAW,CAAE7J,OAAO,EAAMC,cACjE,CAEA,IAAK9S,KAAKqB,OAAOyG,OACb,MAAM,IAAIgJ,EAGd,OAAO9Q,KAAKqB,OAAOyG,MACvB,GAEQ,+BAAAyU,CACJN,EACAC,EACAC,EACAC,GAA4B,GAE5B,MAAM9b,GAAEA,EAAE2F,YAAEA,EAA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","sources":["webpack://@bigcommerce/checkout-sdk/webpack/bootstrap","webpack://@bigcommerce/checkout-sdk/webpack/runtime/define property getters","webpack://@bigcommerce/checkout-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@bigcommerce/checkout-sdk/webpack/runtime/make namespace object","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/billing/billing-address-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/checkout/checkout-redirect-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/checkout/checkout-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-method-cancelled-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/payment/payment-order-intent-creation-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/payment/payment-request-sender.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/wallet-button-integration-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/unsupported-browser-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-argument-invalid-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-invalid-form-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/not-initialized-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/load-paypal-sdk-once.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/paypal.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/utils/is-braintree-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-integration-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/utils/is-credit-card-instrument-like.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/payment-method-client-unavailable-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-sdk-verison.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-sdk-scripts-integrity.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-script-loader.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/isManageableBraintreeSDKVersion.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-headless-sdk-version-manager.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-paypal-wallet-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/errors/missing-data-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/braintree-paypal-wallet-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/to-resolvable-module.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/get-valid-button-style.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-paypal/braintree-paypal-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-paypal/create-braintree-paypal-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-paypal-credit/braintree-paypal-credit-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-paypal-credit/create-braintree-paypal-credit-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-utils/src/get-braintree-venmo-button-style.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-venmo/braintree-venmo-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/braintree-integration/src/braintree-venmo/create-braintree-venmo-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-utils/src/paypal-commerce-constants.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-types.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-script-loader.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-utils/src/utils/transform-locale-to-paypal-format.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-wallet-service.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce/paypal-commerce-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce/create-paypal-commerce-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-credit/paypal-commerce-credit-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/paypal-commerce-integration/src/paypal-commerce-credit/create-paypal-commerce-credit-wallet-strategy.ts","webpack://@bigcommerce/checkout-sdk/./packages/payment-integration-api/src/is-resolvable-module.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/utility/get-environment.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/console-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/noop-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/get-default-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/log/create-logger.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/standard-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/utility/set-prototype-of.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/error/errors/invalid-argument-error.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/registry/registry.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/registry/resolve-id-registry.ts","webpack://@bigcommerce/checkout-sdk/./packages/utility/src/bind-decorator/bind-decorator.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/dom/set-unique-element-id.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/wallet-buttons/wallet-button-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/common/dom/is-element-id.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/wallet-buttons/create-wallet-button-initializer.ts","webpack://@bigcommerce/checkout-sdk/./packages/core/src/wallet-buttons/create-wallet-button-strategy-registry.ts","webpack://@bigcommerce/checkout-sdk/./packages/wallet-button-integration/src/create-wallet-button-integration-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};","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport { GraphQLRequestOptions } from '../graphql-request-options';\n\nimport {\n AddBillingAddressResponseBody,\n AddressRequestBody,\n BillingAddressResponse,\n BillingAddressUpdateRequestBody,\n UpdateBillingAddressResponseBody,\n} from './billing-address';\n\nexport default class BillingAddressRequestSender {\n constructor(private readonly requestSender: RequestSender) {}\n\n async updateBillingAddress(\n graphQLEndpoint: string,\n checkoutId: string,\n address: BillingAddressUpdateRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n const document = `\n mutation UpdateCheckoutBillingAddressMutation(\n $input: UpdateCheckoutBillingAddressInput!\n ) {\n checkout {\n updateCheckoutBillingAddress(input: $input) {\n checkout {\n billingAddress {\n address1\n address2\n city\n company\n countryCode\n email\n entityId\n firstName\n lastName\n phone\n postalCode\n stateOrProvince\n stateOrProvinceCode\n }\n }\n }\n }\n }\n `;\n\n const { id, ...billingAddressFields } = address;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: {\n checkoutEntityId: checkoutId,\n addressEntityId: address.id,\n data: {\n address: {\n ...billingAddressFields,\n },\n },\n },\n },\n },\n };\n\n const response = await this.requestSender.post<UpdateBillingAddressResponseBody>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const { billingAddress } =\n response.body.data.checkout.updateCheckoutBillingAddress.checkout;\n\n return {\n ...response,\n body: billingAddress,\n };\n }\n\n async addBillingAddress(\n graphQLEndpoint: string,\n checkoutId: string,\n address: AddressRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n const document = `\n mutation AddCheckoutBillingAddressMutation(\n $input: AddCheckoutBillingAddressInput!\n ) {\n checkout {\n addCheckoutBillingAddress(input: $input) {\n checkout {\n billingAddress {\n address1\n address2\n city\n company\n countryCode\n email\n entityId\n firstName\n lastName\n phone\n postalCode\n stateOrProvince\n stateOrProvinceCode\n }\n }\n }\n }\n }\n `;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: {\n checkoutEntityId: checkoutId,\n data: {\n address: {\n ...address,\n },\n },\n },\n },\n },\n };\n\n const response = await this.requestSender.post<AddBillingAddressResponseBody>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const { billingAddress } = response.body.data.checkout.addCheckoutBillingAddress.checkout;\n\n return {\n ...response,\n body: billingAddress,\n };\n }\n}\n","import CustomError from './custom-error';\nimport setPrototypeOf from './set-prototype-of';\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 '@bigcommerce/checkout-sdk/payment-integration-api';\n\nexport default class CheckoutRedirectError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'An unexpected error has occurred during checkout redirection process. Please try again later.',\n );\n\n this.name = 'CheckoutRedirectError';\n this.type = 'checkout_redirect_error';\n }\n}\n","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport { GraphQLRequestOptions } from '../graphql-request-options';\n\nimport {\n CreateRedirectToCheckoutResponse,\n CreateRedirectToCheckoutResponseBody,\n RedirectToCheckoutUrlInputData,\n} from './checkout';\nimport CheckoutRedirectError from './checkout-redirect-error';\n\nexport class CheckoutRequestSender {\n constructor(private readonly requestSender: RequestSender) {}\n\n async getRedirectToCheckoutUrl(\n graphQLEndpoint: string,\n inputData: RedirectToCheckoutUrlInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreateRedirectToCheckoutResponseBody>> {\n const document = `\n mutation CheckoutRedirectMutation($input: CreateCartRedirectUrlsInput!) {\n cart {\n createCartRedirectUrls(input: $input) {\n errors {\n __typename\n ... on NotFoundError {\n message \n }\n ... on CreateRedirectUrlsCurrencyNotAllowed {\n message\n }\n }\n redirectUrls {\n externalCheckoutUrl\n }\n }\n }\n }\n `;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: inputData,\n },\n },\n };\n\n try {\n const response = await this.requestSender.post<CreateRedirectToCheckoutResponse>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const {\n data: {\n cart: { createCartRedirectUrls },\n },\n } = response.body;\n\n const errorMessage = createCartRedirectUrls.errors[0]?.message;\n\n if (errorMessage) {\n throw new CheckoutRedirectError(errorMessage);\n }\n\n if (createCartRedirectUrls.errors.length > 0) {\n throw new CheckoutRedirectError();\n }\n\n return {\n ...response,\n body: {\n redirectUrls: createCartRedirectUrls.redirectUrls,\n },\n };\n } catch (error) {\n if (error instanceof Error) {\n throw error;\n }\n\n throw new Error('Checkout redirection failed');\n }\n }\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when the payment flow is cancelled. It could be\n * due to a deliberate user interaction, i.e.: the user clicks on a cancel\n * button which dismisses the payment modal.\n */\nexport default class PaymentMethodCancelledError extends StandardError {\n constructor(message?: string) {\n super(message || 'Payment process was cancelled.');\n\n this.name = 'PaymentMethodCancelledError';\n this.type = 'payment_cancelled';\n }\n}\n","import { StandardError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nexport default class PaymentOrderCreationError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'An unexpected error has occurred during payment order creation process. Please try again later.',\n );\n\n this.name = 'PaymentOrderCreationError';\n this.type = 'payment_order_creation_error';\n }\n}\n","import { RequestSender, Response } from '@bigcommerce/request-sender';\n\nimport { PaymentMethodCancelledError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { GraphQLRequestOptions } from '../graphql-request-options';\n\nimport {\n CreatePaymentOrderIntentInputData,\n CreatePaymentOrderIntentResponse,\n CreatePaymentOrderIntentResponseBody,\n} from './payment';\nimport PaymentOrderCreationError from './payment-order-intent-creation-error';\n\nexport class PaymentRequestSender {\n constructor(private readonly requestSender: RequestSender) {}\n\n async createPaymentOrderIntent(\n graphQLEndpoint: string,\n inputData: CreatePaymentOrderIntentInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreatePaymentOrderIntentResponseBody>> {\n const document = `\n mutation CreatePaymentWalletIntentMutation(\n $input: CreatePaymentWalletIntentInput!\n ) {\n payment {\n paymentWallet {\n createPaymentWalletIntent(input: $input) {\n paymentWalletIntentData {\n __typename\n ... on PayPalCommercePaymentWalletIntentData {\n orderId\n approvalUrl\n initializationEntityId\n }\n }\n errors {\n __typename\n ... on CreatePaymentWalletIntentGenericError {\n message\n }\n ... on Error {\n message\n }\n }\n }\n }\n }\n }\n `;\n\n const requestOptions: GraphQLRequestOptions = {\n headers: {\n ...options?.headers,\n 'Content-Type': 'application/json',\n 'x-catalyst-graphql-proxy-requester': 'checkout-sdk-js',\n },\n body: {\n query: document,\n variables: {\n input: inputData,\n },\n },\n };\n\n try {\n const response = await this.requestSender.post<CreatePaymentOrderIntentResponse>(\n `${window.location.origin}/${graphQLEndpoint}`,\n requestOptions,\n );\n\n const {\n data: {\n payment: {\n paymentWallet: {\n createPaymentWalletIntent: { paymentWalletIntentData, errors },\n },\n },\n },\n } = response.body;\n\n const errorMessage = errors[0]?.message;\n\n if (errorMessage) {\n throw new PaymentOrderCreationError(errorMessage);\n }\n\n return {\n ...response,\n body: {\n ...paymentWalletIntentData,\n },\n };\n } catch (error) {\n if (!(error instanceof PaymentOrderCreationError)) {\n throw new PaymentMethodCancelledError();\n }\n\n throw error;\n }\n }\n}\n","import { Response } from '@bigcommerce/request-sender';\n\nimport {\n AddressRequestBody,\n BillingAddressResponse,\n BillingAddressUpdateRequestBody,\n} from './billing/billing-address';\nimport BillingAddressRequestSender from './billing/billing-address-request-sender';\nimport {\n CreateRedirectToCheckoutResponseBody,\n RedirectToCheckoutUrlInputData,\n} from './checkout/checkout';\nimport { CheckoutRequestSender } from './checkout/checkout-request-sender';\nimport { GraphQLRequestOptions } from './graphql-request-options';\nimport {\n CreatePaymentOrderIntentInputData,\n CreatePaymentOrderIntentResponseBody,\n} from './payment/payment';\nimport { PaymentRequestSender } from './payment/payment-request-sender';\n\nexport default class WalletButtonIntegrationService {\n constructor(\n private graphQLEndpoint: string,\n private billingAddressRequestSender: BillingAddressRequestSender,\n private paymentRequestSender: PaymentRequestSender,\n private checkoutRequestSender: CheckoutRequestSender,\n ) {}\n\n async addBillingAddress(\n checkoutId: string,\n address: AddressRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n return this.billingAddressRequestSender.addBillingAddress(\n this.graphQLEndpoint,\n checkoutId,\n address,\n options,\n );\n }\n\n async updateBillingAddress(\n checkoutId: string,\n address: BillingAddressUpdateRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n return this.billingAddressRequestSender.updateBillingAddress(\n this.graphQLEndpoint,\n checkoutId,\n address,\n options,\n );\n }\n\n async createPaymentOrderIntent(\n inputData: CreatePaymentOrderIntentInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreatePaymentOrderIntentResponseBody>> {\n return this.paymentRequestSender.createPaymentOrderIntent(\n this.graphQLEndpoint,\n inputData,\n options,\n );\n }\n\n async getRedirectToCheckoutUrl(\n inputData: RedirectToCheckoutUrlInputData,\n options?: GraphQLRequestOptions,\n ): Promise<Response<CreateRedirectToCheckoutResponseBody>> {\n return this.checkoutRequestSender.getRedirectToCheckoutUrl(\n this.graphQLEndpoint,\n inputData,\n options,\n );\n }\n}\n","import { StandardError } from './index';\n\n/**\n * Throw this error if the shopper is using a browser version that is not\n * supported by us or any third party provider we use.\n */\nexport default class UnsupportedBrowserError extends StandardError {\n constructor(message?: string) {\n super(message || 'Unsupported browser error');\n\n this.name = 'UnsupportedBrowserError';\n this.type = 'unsupported_browser';\n }\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when a method is unable to proceed because the\n * caller has not provided all the arguments according to their requirements,\n * i.e.: if an argument is missing or it is not the expected data type.\n */\nexport default class InvalidArgumentError extends StandardError {\n constructor(message?: string) {\n super(message || 'Invalid arguments have been provided.');\n\n this.name = 'InvalidArgumentError';\n this.type = 'invalid_argument';\n }\n}\n","import InvalidArgumentError from './invalid-argument-error';\n\n/**\n * This error should be thrown when we are unable to submit a payment because\n * the caller has not provided all the required fields, i.e.: if an argument is\n * missing or it is not the expected data type.\n */\nexport default class PaymentArgumentInvalidError extends InvalidArgumentError {\n constructor(invalidFields?: string[]) {\n let message = 'Unable to submit payment for the order because the payload is invalid.';\n\n if (invalidFields) {\n message = `${message} Make sure the following fields are provided correctly: ${invalidFields.join(\n ', ',\n )}.`;\n }\n\n super(message);\n\n this.name = 'PaymentArgumentInvalidError';\n }\n}\n","import StandardError from './standard-error';\n\nexport interface PaymentInvalidFormErrorDetails {\n [key: string]: Array<{ message: string; type: string }>;\n}\n\nexport default class PaymentInvalidFormError extends StandardError {\n constructor(public details: PaymentInvalidFormErrorDetails, message?: string) {\n super(message || 'Unable to proceed because the payment form contains invalid data.');\n\n this.name = 'PaymentInvalidFormError';\n this.type = 'payment_invalid_form';\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 { BraintreePaypalCheckout, BraintreePaypalSdkCreatorConfig } from './braintree';\nimport { BraintreeError } from './types';\n\nlet paypalSdkPromise: Promise<BraintreePaypalCheckout | null> | null = null;\n\nexport default function loadPayPalSDKOnce(\n paypalCheckout: BraintreePaypalCheckout,\n config: BraintreePaypalSdkCreatorConfig,\n): Promise<BraintreePaypalCheckout | null> {\n if (!paypalSdkPromise) {\n paypalSdkPromise = new Promise((resolve, reject) => {\n paypalCheckout.loadPayPalSDK(config, (err: null | undefined | BraintreeError) => {\n if (err) {\n paypalSdkPromise = null;\n\n reject(err);\n } else {\n resolve(paypalCheckout);\n }\n });\n });\n }\n\n return paypalSdkPromise;\n}\n\n// for testing purposes\nexport function resetLoadPayPalSDKOncePromise() {\n paypalSdkPromise = null;\n}\n","// the PayPal side of things uses uppercase keys instead of camel case\n\n/**\n *\n * PayPal constants\n *\n */\nexport const PAYPAL_COMPONENTS = ['buttons', 'messages'];\n\nexport enum PaypalButtonStyleLayoutOption {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport enum PaypalButtonStyleSizeOption {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n RESPONSIVE = 'responsive',\n}\n\nexport enum PaypalButtonStyleColorOption {\n GOLD = 'gold',\n BLUE = 'blue',\n SIlVER = 'silver',\n BLACK = 'black',\n WHITE = 'white',\n}\n\nexport enum PaypalButtonStyleLabelOption {\n CHECKOUT = 'checkout',\n PAY = 'pay',\n BUYNOW = 'buynow',\n PAYPAL = 'paypal',\n CREDIT = 'credit',\n}\n\nexport enum PaypalButtonStyleShapeOption {\n PILL = 'pill',\n RECT = 'rect',\n}\n\n/**\n *\n * PayPal interfaces\n *\n */\nexport interface PaypalSDK {\n Button: PaypalButton;\n checkout: PaypalExpressCheckout;\n FUNDING: PaypalFundingTypeList;\n Buttons(options: PaypalButtonOptions): PaypalButtonRender;\n Messages(options: MessagingOptions): MessagingRender;\n}\n\nexport interface PaypalButton {\n render(options: PaypalButtonOptions, container: string): void;\n}\n\nexport interface PaypalExpressCheckout {\n initXO(): void;\n startFlow(url: string): void;\n closeFlow(): void;\n setup(merchantId: string, options: PaypalExpressCheckoutOptions): void;\n}\n\nexport interface PaypalExpressCheckoutOptions {\n button: string;\n environment: string;\n}\n\nexport interface MessagingOptions {\n amount: number;\n buyerCountry?: string;\n placement: string;\n style?: MessagesStyleOptions;\n}\n\nexport interface MessagesStyleOptions {\n color?: string; // 'blue' | 'black' | 'white' | 'white-no-border' | 'gray' | 'monochrome' | 'grayscale'\n layout?: string; // 'text' | 'flex'\n logo?: {\n type?: string; // 'primary' | 'alternative' | 'inline' | 'none'\n position?: string; // 'left' | 'right' | 'top'\n };\n ratio?: string; // '1x1' | '1x4' | '8x1' | '20x1'\n text?: {\n align?: string; // 'left' | 'right' | 'center'\n color?: string; // 'black' | 'white' | 'monochrome' | 'grayscale'\n size?: number; // from 10 to 16\n };\n}\n\nexport enum MessagingPlacements {\n CART = 'cart',\n HOME = 'homepage',\n PAYMENT = 'payment',\n PRODUCT = 'product',\n}\n\nexport interface MessagingRender {\n render(container: string): void;\n}\n\nexport interface PaypalButtonOptions {\n env?: string;\n commit?: boolean;\n style?: PaypalStyleOptions;\n funding?: PaypalFundingType;\n fundingSource?: string;\n client?: PaypalClientToken;\n payment?(data?: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n onAuthorize?(data: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n createOrder?(data?: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n onApprove?(data?: PaypalAuthorizeData, actions?: PaypalActions): Promise<unknown>;\n onClick?(payload: ClickCallbackPayload, actions: ClickButtonActions): void;\n onInit?(payload: InitCallbackPayload, actions: InitButtonActions): void;\n onCancel?(): void;\n onError?(error: Error): void;\n}\n\nexport interface PaypalStyleOptions {\n layout?: PaypalButtonStyleLayoutOption;\n size?: PaypalButtonStyleSizeOption;\n color?: PaypalButtonStyleColorOption;\n label?: PaypalButtonStyleLabelOption;\n shape?: PaypalButtonStyleShapeOption;\n tagline?: boolean;\n fundingicons?: boolean;\n height?: number | string;\n}\n\nexport interface PaypalClientToken {\n production?: string;\n sandbox?: string;\n}\n\nexport interface PaypalFundingType {\n allowed?: string[];\n disallowed?: string[];\n}\n\nexport interface PaypalActions {\n payment: PaypalPaymentActions;\n request: PaypalRequestActions;\n}\n\nexport interface PaypalButtonRender {\n render(container: string): void;\n isEligible(): boolean;\n close(): void;\n}\n\nexport interface PaypalAuthorizeData {\n payerId: string;\n paymentId?: string;\n billingToken?: string;\n payerID?: string;\n paymentID?: string;\n}\n\nexport interface PaypalFundingTypeList {\n CARD?: string;\n CREDIT?: string;\n PAYPAL?: string;\n PAYLATER?: string;\n}\n\nexport interface PaypalPaymentActions {\n get(id: string): Promise<unknown>;\n}\n\nexport interface PaypalRequestActions {\n post(url: string, payload?: object, options?: object): Promise<{ id: string }>;\n}\n\nexport interface InitCallbackPayload {\n correlationID: string;\n}\n\nexport interface ClickCallbackPayload {\n fundingSource: string;\n}\n\nexport interface InitButtonActions {\n enable(): void;\n disable(): void;\n}\n\nexport interface ClickButtonActions {\n reject(): void;\n resolve(): void;\n}\n","import { Omit } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport {\n PaypalAuthorizeData,\n PaypalButtonOptions,\n PaypalButtonRender,\n PaypalSDK,\n PaypalStyleOptions,\n} from './paypal';\nimport {\n BraintreeClientCreator,\n BraintreeDataCollectorCreator,\n BraintreeError,\n BraintreeFastlaneCreator,\n BraintreeGooglePaymentCreator,\n BraintreeHostedFieldsTokenizePayload,\n BraintreeModule,\n BraintreeModuleCreator,\n BraintreeModuleCreatorConfig,\n BraintreeThreeDSecureCreator,\n BraintreeTokenizationDetails,\n BraintreeUsBankAccountCreator,\n BraintreeWindow,\n FastlaneStylesSettings,\n VisaCheckoutSDK,\n} from './types';\nimport {\n VisaCheckoutInitOptions,\n VisaCheckoutPaymentSuccessPayload,\n VisaCheckoutTokenizedPayload,\n} from './visacheckout';\n\n/**\n *\n * Constants\n *\n */\nexport enum BraintreeEnv {\n Sandbox = 'sandbox',\n Production = 'production',\n}\n\n/**\n *\n * Common\n *\n */\nexport enum BraintreeModuleName {\n Client = 'client',\n DataCollector = 'dataCollector',\n Fastlane = 'fastlane',\n GooglePayment = 'googlePayment',\n HostedFields = 'hostedFields',\n LocalPayment = 'localPayment',\n Paypal = 'paypal',\n PaypalCheckout = 'paypalCheckout',\n ThreeDSecure = 'threeDSecure',\n UsBankAccount = 'usBankAccount',\n Venmo = 'venmo',\n VisaCheckout = 'visaCheckout',\n}\n\nexport type BraintreeModuleCreators =\n | BraintreeClientCreator\n | BraintreeFastlaneCreator\n | BraintreeDataCollectorCreator\n | BraintreeGooglePaymentCreator\n | BraintreeHostedFieldsCreator\n | BraintreePaypalCreator\n | BraintreePaypalCheckoutCreator\n | BraintreeThreeDSecureCreator\n | BraintreeVenmoCheckoutCreator\n | BraintreeVisaCheckoutCreator\n | BraintreeUsBankAccountCreator\n | BraintreeLocalPaymentCreator;\n\n// TODO: rename to BraintreeSdkModules\nexport interface BraintreeSDK {\n [BraintreeModuleName.Client]?: BraintreeClientCreator;\n [BraintreeModuleName.Fastlane]?: BraintreeFastlaneCreator;\n [BraintreeModuleName.DataCollector]?: BraintreeDataCollectorCreator;\n [BraintreeModuleName.GooglePayment]?: BraintreeGooglePaymentCreator;\n [BraintreeModuleName.HostedFields]?: BraintreeHostedFieldsCreator;\n [BraintreeModuleName.Paypal]?: BraintreePaypalCreator;\n [BraintreeModuleName.PaypalCheckout]?: BraintreePaypalCheckoutCreator;\n [BraintreeModuleName.ThreeDSecure]?: BraintreeThreeDSecureCreator;\n [BraintreeModuleName.Venmo]?: BraintreeVenmoCheckoutCreator;\n [BraintreeModuleName.VisaCheckout]?: BraintreeVisaCheckoutCreator;\n [BraintreeModuleName.UsBankAccount]?: BraintreeUsBankAccountCreator;\n [BraintreeModuleName.LocalPayment]?: BraintreeLocalPaymentCreator;\n}\n\nexport type BraintreeLocalPaymentCreator = BraintreeModuleCreator<\n BraintreeLocalPayment,\n BraintreeLocalPaymentCreateConfig,\n BraintreeError | undefined\n>;\n\nexport interface BraintreeLocalPaymentCreateConfig extends BraintreeModuleCreatorConfig {\n merchantAccountId: string;\n}\n\nexport interface BraintreeInitializationData {\n clientToken: string;\n enableCheckoutPaywallBanner?: boolean;\n intent?: 'authorize' | 'order' | 'sale';\n isCreditEnabled?: boolean;\n isAcceleratedCheckoutEnabled?: boolean;\n isFastlaneStylingEnabled?: boolean;\n isFastlaneEnabled?: boolean;\n isFastlaneShippingOptionAutoSelectEnabled?: boolean;\n fastlaneStyles?: FastlaneStylesSettings;\n isBraintreeAnalyticsV2Enabled?: boolean;\n shouldRunAcceleratedCheckout?: boolean; // TODO: only for BT AXO A/B testing purposes, hence should be removed after testing\n paymentButtonStyles?: Record<string, PaypalStyleOptions>;\n paypalBNPLConfiguration?: PayPalBNPLConfigurationItem[] | null;\n nonce?: string;\n}\n\nexport interface BraintreePaypalRequest {\n amount: string | number;\n billingAgreementDescription?: string;\n currency?: string;\n displayName?: string;\n enableShippingAddress: true;\n flow: 'checkout' | 'vault';\n intent?: 'authorize' | 'order' | 'sale';\n landingPageType?: 'login' | 'billing';\n locale?: string;\n offerCredit?: boolean;\n shippingAddressEditable?: boolean;\n shippingAddressOverride?: BraintreeShippingAddressOverride;\n useraction?: 'commit';\n}\n\nexport interface BraintreeShippingAddressOverride {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n countryCode: string;\n phone?: string;\n recipientName?: string;\n}\n\nexport interface BraintreeTokenizePayload {\n nonce: string;\n type: 'PaypalAccount' | 'VenmoAccount';\n details: BraintreeTokenizationDetails;\n creditFinancingOffered?: {\n totalCost: {\n value: string;\n currency: string;\n };\n term: number;\n monthlyPayment: {\n value: string;\n currency: string;\n };\n totalInsterest: {\n value: string;\n currency: string;\n };\n payerAcceptance: boolean;\n cartAmountImmutable: boolean;\n };\n}\n\nexport type BraintreeFormErrorData = Omit<BraintreeFormFieldState, 'isFocused'>;\n\nexport type BraintreeFormErrorDataKeys =\n | 'number'\n | 'expirationDate'\n | 'expirationMonth'\n | 'expirationYear'\n | 'cvv'\n | 'postalCode';\n\nexport type BraintreeFormErrorsData = Partial<\n Record<BraintreeFormErrorDataKeys, BraintreeFormErrorData>\n>;\n\n/**\n *\n * Braintree Hosted Fields\n *\n */\nexport type BraintreeHostedFieldsCreator = BraintreeModuleCreator<\n BraintreeHostedFields,\n BraintreeHostedFieldsCreatorConfig\n>;\n\nexport interface BraintreeHostedFields {\n getState(): BraintreeHostedFieldsState;\n teardown(): Promise<void>;\n tokenize(\n options?: BraintreeHostedFieldsTokenizeOptions,\n ): Promise<BraintreeHostedFieldsTokenizePayload>;\n on(eventName: string, callback: (event: BraintreeHostedFieldsState) => void): void;\n}\n\nexport interface BraintreeHostedFieldsCreatorConfig extends BraintreeModuleCreatorConfig {\n fields: {\n number?: BraintreeHostedFieldOption;\n expirationDate?: BraintreeHostedFieldOption;\n expirationMonth?: BraintreeHostedFieldOption;\n expirationYear?: BraintreeHostedFieldOption;\n cvv?: BraintreeHostedFieldOption;\n postalCode?: BraintreeHostedFieldOption;\n cardholderName?: BraintreeHostedFieldOption;\n };\n styles?: {\n input?: { [key: string]: string };\n '.invalid'?: { [key: string]: string };\n '.valid'?: { [key: string]: string };\n ':focus'?: { [key: string]: string };\n };\n preventCursorJumps?: boolean;\n}\n\nexport interface BraintreeHostedFieldOption {\n container: string | HTMLElement;\n placeholder?: string;\n type?: string;\n formatInput?: boolean;\n maskInput?: boolean | { character?: string; showLastFour?: string };\n select?: boolean | { options?: string[] };\n maxCardLength?: number;\n maxlength?: number;\n minlength?: number;\n prefill?: string;\n rejectUnsupportedCards?: boolean;\n supportedCardBrands?: { [key: string]: boolean };\n}\n\nexport interface BraintreeHostedFieldsState {\n cards: BraintreeHostedFieldsCard[];\n emittedBy: string;\n fields: {\n number?: BraintreeHostedFieldsFieldData;\n expirationDate?: BraintreeHostedFieldsFieldData;\n expirationMonth?: BraintreeHostedFieldsFieldData;\n expirationYear?: BraintreeHostedFieldsFieldData;\n cvv?: BraintreeHostedFieldsFieldData;\n postalCode?: BraintreeHostedFieldsFieldData;\n };\n}\n\nexport interface BraintreeHostedFieldsCard {\n type: string;\n niceType: string;\n code: { name: string; size: number };\n}\n\nexport interface BraintreeHostedFieldsFieldData {\n container: HTMLElement;\n isFocused: boolean;\n isEmpty: boolean;\n isPotentiallyValid: boolean;\n isValid: boolean;\n}\n\nexport interface BraintreeHostedFieldsTokenizeOptions {\n vault?: boolean;\n fieldsToTokenize?: string[];\n cardholderName?: string;\n billingAddress?: BraintreeBillingAddressRequestData;\n}\n\nexport interface BraintreeBillingAddressRequestData {\n postalCode?: string;\n firstName?: string;\n lastName?: string;\n company?: string;\n streetAddress?: string;\n extendedAddress?: string;\n locality?: string;\n region?: string;\n countryCodeNumeric?: string;\n countryCodeAlpha2?: string;\n countryCodeAlpha3?: string;\n countryName?: string;\n}\n\nexport interface BraintreeHostedFormError extends BraintreeError {\n details?: {\n invalidFieldKeys?: string[];\n };\n}\n\nexport interface BraintreeFormFieldState {\n isFocused: boolean;\n isEmpty: boolean;\n isPotentiallyValid: boolean;\n isValid: boolean;\n}\n\nexport interface TokenizationPayload {\n nonce: string;\n bin: string;\n}\n\n/**\n *\n * Braintree PayPal\n *\n */\nexport type BraintreePaypalCreator = BraintreeModuleCreator<BraintreePaypal>;\n\nexport interface BraintreePaypal {\n closeWindow(): void;\n focusWindow(): void;\n tokenize(options: BraintreePaypalRequest): Promise<BraintreeTokenizePayload>;\n Buttons?(options: PaypalButtonOptions): PaypalButtonRender;\n}\n\nexport interface BraintreeFormOptions {\n fields: BraintreeFormFieldsMap | BraintreeStoredCardFieldsMap;\n styles?: BraintreeFormFieldStylesMap;\n onBlur?(data: BraintreeFormFieldBlurEventData): void;\n onCardTypeChange?(data: BraintreeFormFieldCardTypeChangeEventData): void;\n onFocus?(data: BraintreeFormFieldFocusEventData): void;\n onValidate?(data: BraintreeFormFieldValidateEventData): void;\n onEnter?(data: BraintreeFormFieldEnterEventData): void;\n}\n\nexport enum BraintreeFormFieldType {\n CardCode = 'cardCode',\n CardCodeVerification = 'cardCodeVerification',\n CardExpiry = 'cardExpiry',\n CardName = 'cardName',\n CardNumber = 'cardNumber',\n CardNumberVerification = 'cardNumberVerification',\n}\n\nexport interface BraintreeFormFieldsMap {\n [BraintreeFormFieldType.CardCode]?: BraintreeFormFieldOptions;\n [BraintreeFormFieldType.CardExpiry]: BraintreeFormFieldOptions;\n [BraintreeFormFieldType.CardName]: BraintreeFormFieldOptions;\n [BraintreeFormFieldType.CardNumber]: BraintreeFormFieldOptions;\n}\n\nexport interface BraintreeStoredCardFieldsMap {\n [BraintreeFormFieldType.CardCodeVerification]?: BraintreeStoredCardFieldOptions;\n [BraintreeFormFieldType.CardNumberVerification]?: BraintreeStoredCardFieldOptions;\n}\n\nexport interface BraintreeFormFieldOptions {\n accessibilityLabel?: string;\n containerId: string;\n placeholder?: string;\n}\n\nexport interface BraintreeStoredCardFieldOptions extends BraintreeFormFieldOptions {\n instrumentId: string;\n}\n\nexport interface BraintreeFormFieldStylesMap {\n default?: BraintreeFormFieldStyles;\n error?: BraintreeFormFieldStyles;\n focus?: BraintreeFormFieldStyles;\n}\n\nexport type BraintreeFormFieldStyles = Partial<\n Pick<CSSStyleDeclaration, 'color' | 'fontFamily' | 'fontSize' | 'fontWeight'>\n>;\n\nexport interface BraintreeFormFieldKeyboardEventData {\n fieldType: string;\n errors?: BraintreeFormErrorsData;\n}\n\nexport type BraintreeFormFieldBlurEventData = BraintreeFormFieldKeyboardEventData;\nexport type BraintreeFormFieldEnterEventData = BraintreeFormFieldKeyboardEventData;\nexport type BraintreeFormFieldFocusEventData = BraintreeFormFieldKeyboardEventData;\n\nexport interface BraintreeFormFieldCardTypeChangeEventData {\n cardType?: string;\n}\n\nexport interface BraintreeFormFieldValidateEventData {\n errors: {\n [BraintreeFormFieldType.CardCode]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardExpiry]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardName]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardNumber]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardCodeVerification]?: BraintreeFormFieldValidateErrorData[];\n [BraintreeFormFieldType.CardNumberVerification]?: BraintreeFormFieldValidateErrorData[];\n };\n isValid: boolean;\n}\n\nexport interface BraintreeFormFieldValidateErrorData {\n fieldType: string;\n message: string;\n type: string;\n}\n\n/**\n *\n * Braintree PayPal Checkout\n *\n */\nexport type BraintreePaypalCheckoutCreator = BraintreeModuleCreator<BraintreePaypalCheckout>;\n\nexport interface BraintreePaypalCheckout {\n loadPayPalSDK(\n config: BraintreePaypalSdkCreatorConfig,\n callback: (err: null | undefined | BraintreeError) => void,\n ): void;\n createPayment(options: BraintreePaypalRequest): Promise<string>;\n teardown(): Promise<void>;\n tokenizePayment(options: PaypalAuthorizeData): Promise<BraintreeTokenizePayload>;\n}\n\nexport interface BraintreePaypalSdkCreatorConfig {\n components?: string;\n currency?: string;\n intent?: string;\n isCreditEnabled?: boolean;\n commit?: boolean;\n}\n\n/**\n *\n * Braintree Venmo\n *\n */\nexport type BraintreeVenmoCheckoutCreator = BraintreeModuleCreator<\n BraintreeVenmoCheckout,\n BraintreeVenmoCreatorConfig\n>;\n\nexport interface BraintreeVenmoCheckout extends BraintreeModule {\n tokenize(callback: (error: BraintreeError, payload: BraintreeTokenizePayload) => unknown): void;\n isBrowserSupported(): boolean;\n}\n\nexport interface BraintreeVenmoCreatorConfig extends BraintreeModuleCreatorConfig {\n allowDesktop?: boolean;\n paymentMethodUsage?: string;\n}\n\n/**\n *\n * Braintree Visa Checkout\n *\n */\nexport type BraintreeVisaCheckoutCreator = BraintreeModuleCreator<BraintreeVisaCheckout>;\n\nexport interface BraintreeVisaCheckout extends BraintreeModule {\n tokenize(payment: VisaCheckoutPaymentSuccessPayload): Promise<VisaCheckoutTokenizedPayload>;\n createInitOptions(options: Partial<VisaCheckoutInitOptions>): VisaCheckoutInitOptions;\n}\n\n/**\n *\n * Braintree BNPL Configurator related types\n *\n */\nexport interface PayPalBNPLConfigurationItem {\n id: string;\n name: string;\n status: boolean;\n styles: Record<string, string>;\n}\n\n/**\n *\n * Braintree Local Methods\n *\n */\nexport interface BraintreeLocalPaymentConfig {\n paymentType: string;\n amount: number;\n fallback: {\n url: string;\n buttonText: string;\n };\n currencyCode: string;\n shippingAddressRequired: boolean;\n email: string;\n givenName: string;\n surname: string;\n address: {\n countryCode: string;\n };\n onPaymentStart(data: BraintreeLPMPaymentStartData, start: () => Promise<void>): Promise<void>;\n}\n\nexport interface BraintreeLPMStartPaymentError {\n code: string;\n}\n\nexport interface BraintreeLPMPaymentStartData {\n paymentId: string;\n}\n\nexport interface BraintreeLocalPaymentsPayload {\n nonce: string;\n}\n\nexport interface BraintreeLocalPayment extends BraintreeModule {\n startPayment(\n config: BraintreeLocalPaymentConfig,\n callback: (\n startPaymentError: BraintreeLPMStartPaymentError | undefined,\n payload: BraintreeLocalPaymentsPayload,\n ) => Promise<void>,\n ): void;\n}\n\n/**\n *\n * Other\n *\n */\nexport interface BraintreeHostWindow extends BraintreeWindow {\n braintree?: BraintreeSDK;\n paypal?: PaypalSDK;\n V?: VisaCheckoutSDK;\n}\n","import { BraintreeError } from '../types';\n\nexport default function isBraintreeError(error: unknown): error is BraintreeError {\n return Boolean(\n typeof error === 'object' &&\n error !== null &&\n ('type' in error || 'message' in error || 'code' in error),\n );\n}\n","import { supportsPopups } from '@braintree/browser-detection';\nimport { isEmpty } from 'lodash';\n\nimport {\n Address,\n CreditCardInstrument,\n LegacyAddress,\n NonceInstrument,\n NotInitializedError,\n NotInitializedErrorType,\n Payment,\n PaymentArgumentInvalidError,\n PaymentInvalidFormError,\n PaymentInvalidFormErrorDetails,\n UnsupportedBrowserError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { Overlay } from '@bigcommerce/checkout-sdk/ui';\n\nimport BraintreeScriptLoader from './braintree-script-loader';\nimport loadPayPalSDKOnce from './load-paypal-sdk-once';\nimport {\n BraintreeClient,\n BraintreeDataCollector,\n BraintreeDataCollectorCreatorConfig,\n BraintreeDataCollectors,\n BraintreeEnv,\n BraintreeError,\n BraintreeFastlane,\n BraintreeFastlaneStylesOption,\n BraintreeHostWindow,\n BraintreeModule,\n BraintreePaypal,\n BraintreePaypalCheckout,\n BraintreePaypalSdkCreatorConfig,\n BraintreeRequestData,\n BraintreeShippingAddressOverride,\n BraintreeThreeDSecure,\n BraintreeThreeDSecureOptions,\n BraintreeTokenizationDetails,\n BraintreeTokenizePayload,\n BraintreeVenmoCheckout,\n BraintreeVenmoCreatorConfig,\n BraintreeVerifyPayload,\n PAYPAL_COMPONENTS,\n TokenizationPayload,\n} from './types';\nimport isBraintreeError from './utils/is-braintree-error';\nimport isCreditCardInstrumentLike from './utils/is-credit-card-instrument-like';\n\nexport interface PaypalConfig {\n amount: number;\n currency: string;\n locale: string;\n offerCredit?: boolean;\n shippingAddressEditable?: boolean;\n shippingAddressOverride?: BraintreeShippingAddressOverride;\n shouldSaveInstrument?: boolean;\n}\n\n// Info: this class is deprecated and will be removed in a nearest future. Please, do not add anything here.\nexport default class BraintreeIntegrationService {\n private client?: Promise<BraintreeClient>;\n private clientToken?: string;\n private dataCollectors: BraintreeDataCollectors = {};\n private paypalCheckout?: BraintreePaypalCheckout;\n private braintreePaypal?: Promise<BraintreePaypal>;\n private threeDSecureOptions?: BraintreeThreeDSecureOptions;\n private threeDS?: Promise<BraintreeThreeDSecure>;\n private venmoCheckout?: BraintreeVenmoCheckout;\n\n constructor(\n private braintreeScriptLoader: BraintreeScriptLoader,\n private braintreeHostWindow: BraintreeHostWindow,\n private overlay?: Overlay,\n ) {}\n\n initialize(clientToken: string, threeDSecureOptions?: BraintreeThreeDSecureOptions) {\n this.clientToken = clientToken;\n this.threeDSecureOptions = threeDSecureOptions;\n }\n\n async getBraintreeFastlane(\n cardId?: string,\n isTestModeEnabled?: boolean,\n styles?: BraintreeFastlaneStylesOption,\n ): Promise<BraintreeFastlane> {\n if (isTestModeEnabled) {\n window.localStorage.setItem('axoEnv', 'sandbox');\n window.localStorage.setItem('fastlaneEnv', 'sandbox');\n }\n\n if (!this.braintreeHostWindow.braintreeFastlane) {\n const clientToken = this.getClientTokenOrThrow();\n const client = await this.getClient();\n const deviceData = await this.getSessionId(cardId);\n\n const braintreeFastlaneCreator = await this.braintreeScriptLoader.loadFastlane();\n\n const defaultStyles = {\n root: {\n backgroundColorPrimary: 'transparent',\n },\n };\n\n this.braintreeHostWindow.braintreeFastlane = await braintreeFastlaneCreator.create({\n authorization: clientToken,\n client,\n deviceData,\n styles: styles || defaultStyles,\n });\n }\n\n return this.braintreeHostWindow.braintreeFastlane;\n }\n\n // Info: This method is deprecated. Use getClient method from BraintreeSdk class instead\n async getClient(): Promise<BraintreeClient> {\n if (!this.client) {\n const clientToken = this.getClientTokenOrThrow();\n const clientCreator = await this.braintreeScriptLoader.loadClient();\n\n this.client = clientCreator.create({ authorization: clientToken });\n }\n\n return this.client;\n }\n\n getPaypal(): Promise<BraintreePaypal> {\n if (!this.braintreePaypal) {\n this.braintreePaypal = Promise.all([\n this.getClient(),\n this.braintreeScriptLoader.loadPaypal(),\n ]).then(([client, paypal]) => paypal.create({ client }));\n }\n\n return this.braintreePaypal;\n }\n\n paypal({ shouldSaveInstrument, ...config }: PaypalConfig): Promise<BraintreeTokenizePayload> {\n const newWindowFlow = supportsPopups();\n\n return this.getPaypal()\n .then((paypal) => {\n if (newWindowFlow) {\n this.overlay?.show({\n onClick: () => paypal.focusWindow(),\n });\n }\n\n return paypal.tokenize({\n enableShippingAddress: true,\n flow: shouldSaveInstrument ? 'vault' : 'checkout',\n useraction: 'commit',\n ...config,\n });\n })\n .then((response) => {\n this.overlay?.remove();\n\n return response;\n })\n .catch((error) => {\n this.overlay?.remove();\n\n throw error;\n });\n }\n\n async getPaypalCheckout(\n config: Partial<BraintreePaypalSdkCreatorConfig>,\n onSuccess: (instance: BraintreePaypalCheckout) => void,\n onError: (error: BraintreeError) => void,\n ): Promise<BraintreePaypalCheckout> {\n const client = await this.getClient();\n const paypalCheckout = await this.braintreeScriptLoader.loadPaypalCheckout();\n\n const paypalCheckoutConfig = { client };\n const paypalCheckoutCallback = (\n error: BraintreeError | undefined,\n braintreePaypalCheckout: BraintreePaypalCheckout,\n ) => {\n if (error) {\n return onError(error);\n }\n\n const paypalSdkLoadCallback = () => onSuccess(braintreePaypalCheckout);\n const paypalSdkLoadConfig = {\n currency: config.currency,\n ...(config.isCreditEnabled && { 'enable-funding': 'paylater' }),\n components: PAYPAL_COMPONENTS.toString(),\n intent: config.intent,\n commit: config.commit ?? true,\n };\n\n if (!this.braintreeHostWindow.paypal) {\n void loadPayPalSDKOnce(braintreePaypalCheckout, paypalSdkLoadConfig).then(\n paypalSdkLoadCallback,\n );\n } else {\n onSuccess(braintreePaypalCheckout);\n }\n };\n\n this.paypalCheckout = await paypalCheckout.create(\n paypalCheckoutConfig,\n paypalCheckoutCallback,\n );\n\n return this.paypalCheckout;\n }\n\n async getDataCollector(\n options?: Partial<BraintreeDataCollectorCreatorConfig>,\n ): Promise<BraintreeDataCollector> {\n const cacheKey: keyof BraintreeDataCollectors = options?.paypal ? 'paypal' : 'default';\n\n let cached = this.dataCollectors[cacheKey];\n\n if (!cached) {\n try {\n const client = await this.getClient();\n const dataCollector = await this.braintreeScriptLoader.loadDataCollector();\n\n const dataCollectorConfig: BraintreeDataCollectorCreatorConfig = {\n client,\n kount: true,\n ...options,\n };\n\n cached = await dataCollector.create(dataCollectorConfig);\n } catch (error) {\n if (isBraintreeError(error) && error.code === 'DATA_COLLECTOR_KOUNT_NOT_ENABLED') {\n cached = {\n deviceData: undefined,\n teardown: () => Promise.resolve(),\n };\n } else {\n throw error;\n }\n }\n\n this.dataCollectors[cacheKey] = cached;\n }\n\n return cached;\n }\n\n getBraintreeEnv(isTestMode = false): BraintreeEnv {\n return isTestMode ? BraintreeEnv.Sandbox : BraintreeEnv.Production;\n }\n\n mapToBraintreeShippingAddressOverride(address: Address): BraintreeShippingAddressOverride {\n return {\n recipientName: `${address.firstName} ${address.lastName}`,\n line1: address.address1,\n line2: address.address2,\n city: address.city,\n state: address.stateOrProvinceCode,\n postalCode: address.postalCode,\n countryCode: address.countryCode,\n phone: address.phone,\n };\n }\n\n mapToLegacyShippingAddress(details: BraintreeTokenizationDetails): Partial<LegacyAddress> {\n const { email, phone, shippingAddress } = details;\n const recipientName = shippingAddress?.recipientName || '';\n const [firstName, lastName] = recipientName.split(' ');\n\n return {\n email,\n first_name: firstName || '',\n last_name: lastName || '',\n phone_number: phone,\n address_line_1: shippingAddress?.line1,\n address_line_2: shippingAddress?.line2,\n city: shippingAddress?.city,\n state: shippingAddress?.state,\n country_code: shippingAddress?.countryCode,\n postal_code: shippingAddress?.postalCode,\n };\n }\n\n mapToLegacyBillingAddress(details: BraintreeTokenizationDetails): Partial<LegacyAddress> {\n const { billingAddress, email, firstName, lastName, phone, shippingAddress } = details;\n\n const address = billingAddress || shippingAddress;\n\n return {\n email,\n first_name: firstName,\n last_name: lastName,\n phone_number: phone,\n address_line_1: address?.line1,\n address_line_2: address?.line2,\n city: address?.city,\n state: address?.state,\n country_code: address?.countryCode,\n postal_code: address?.postalCode,\n };\n }\n\n removeElement(elementId?: string): void {\n const element = elementId && document.getElementById(elementId);\n\n if (element) {\n element.remove();\n }\n }\n\n async getSessionId(cartId?: string): Promise<string | undefined> {\n const { deviceData } = await this.getDataCollector({\n riskCorrelationId: cartId,\n });\n\n return deviceData;\n }\n\n async teardown(): Promise<void> {\n await this.teardownModule(this.dataCollectors.default);\n await this.teardownModule(this.dataCollectors.paypal);\n this.dataCollectors = {};\n\n await this.teardownModule(this.paypalCheckout);\n this.paypalCheckout = undefined;\n\n // await this.teardownModule(this._venmoCheckout);\n // this._venmoCheckout = undefined;\n\n // await this.teardownModule(this._visaCheckout);\n // this._visaCheckout = undefined;\n }\n\n async get3DS(): Promise<BraintreeThreeDSecure> {\n if (!this.threeDS) {\n this.threeDS = Promise.all([\n this.getClient(),\n this.braintreeScriptLoader.load3DS(),\n ]).then(([client, threeDSecure]) => threeDSecure.create({ client, version: 2 }));\n }\n\n return this.threeDS;\n }\n\n async getVenmoCheckout(\n venmoConfig?: BraintreeVenmoCreatorConfig,\n ): Promise<BraintreeVenmoCheckout> {\n if (!this.venmoCheckout) {\n const client = await this.getClient();\n const venmoCheckout = await this.braintreeScriptLoader.loadVenmoCheckout();\n\n const venmoCheckoutConfig = {\n client,\n allowDesktop: true,\n paymentMethodUsage: 'multi_use',\n ...(venmoConfig || {}),\n };\n\n this.venmoCheckout = await new Promise<BraintreeVenmoCheckout>((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n venmoCheckout.create(\n venmoCheckoutConfig,\n (error: BraintreeError, braintreeVenmoCheckout: BraintreeVenmoCheckout) => {\n if (error) {\n return reject(error);\n }\n\n if (!braintreeVenmoCheckout.isBrowserSupported()) {\n return reject(new UnsupportedBrowserError());\n }\n\n resolve(braintreeVenmoCheckout);\n },\n );\n });\n }\n\n return this.venmoCheckout;\n }\n\n /*\n Braintree Credit Card and Braintree Hosted Form\n */\n async verifyCard(\n payment: Payment,\n billingAddress: Address,\n amount: number,\n ): Promise<NonceInstrument> {\n const tokenizationPayload = await this.tokenizeCard(payment, billingAddress);\n\n return this.challenge3DSVerification(tokenizationPayload, amount);\n }\n\n async tokenizeCard(payment: Payment, billingAddress: Address): Promise<TokenizationPayload> {\n const { paymentData } = payment;\n\n if (!isCreditCardInstrumentLike(paymentData)) {\n throw new PaymentArgumentInvalidError(['payment.paymentData']);\n }\n\n const errors = this.getErrorsRequiredFields(paymentData);\n\n if (!isEmpty(errors)) {\n throw new PaymentInvalidFormError(errors);\n }\n\n const requestData = this.mapToCreditCard(paymentData, billingAddress);\n const client = await this.getClient();\n const { creditCards } = await client.request(requestData);\n\n return {\n nonce: creditCards[0].nonce,\n bin: creditCards[0].details.bin,\n };\n }\n\n async challenge3DSVerification(\n tokenizationPayload: TokenizationPayload,\n amount: number,\n ): Promise<BraintreeVerifyPayload> {\n const threeDSecure = await this.get3DS();\n\n return this.present3DSChallenge(threeDSecure, amount, tokenizationPayload);\n }\n\n private teardownModule(module?: BraintreeModule) {\n return module ? module.teardown() : Promise.resolve();\n }\n\n private getClientTokenOrThrow(): string {\n if (!this.clientToken) {\n throw new NotInitializedError(NotInitializedErrorType.PaymentNotInitialized);\n }\n\n return this.clientToken;\n }\n\n private getErrorsRequiredFields(\n paymentData: CreditCardInstrument,\n ): PaymentInvalidFormErrorDetails {\n const { ccNumber, ccExpiry } = paymentData;\n const errors: PaymentInvalidFormErrorDetails = {};\n\n if (!ccNumber) {\n errors.ccNumber = [\n {\n message: 'Credit card number is required',\n type: 'required',\n },\n ];\n }\n\n if (!ccExpiry) {\n errors.ccExpiry = [\n {\n message: 'Expiration date is required',\n type: 'required',\n },\n ];\n }\n\n return errors;\n }\n\n private mapToCreditCard(\n creditCard: CreditCardInstrument,\n billingAddress?: Address,\n ): BraintreeRequestData {\n return {\n data: {\n creditCard: {\n cardholderName: creditCard.ccName,\n number: creditCard.ccNumber,\n cvv: creditCard.ccCvv,\n expirationDate: `${creditCard.ccExpiry.month}/${creditCard.ccExpiry.year}`,\n options: {\n validate: false,\n },\n billingAddress: billingAddress && {\n countryCodeAlpha2: billingAddress.countryCode,\n locality: billingAddress.city,\n countryName: billingAddress.country,\n postalCode: billingAddress.postalCode,\n streetAddress: billingAddress.address2\n ? `${billingAddress.address1} ${billingAddress.address2}`\n : billingAddress.address1,\n },\n },\n },\n endpoint: 'payment_methods/credit_cards',\n method: 'post',\n };\n }\n\n private present3DSChallenge(\n threeDSecure: BraintreeThreeDSecure,\n amount: number,\n tokenizationPayload: TokenizationPayload,\n ): Promise<BraintreeVerifyPayload> {\n const { nonce, bin } = tokenizationPayload;\n\n if (!nonce) {\n throw new NotInitializedError(NotInitializedErrorType.PaymentNotInitialized);\n }\n\n const { challengeRequested = true, additionalInformation = undefined } =\n this.threeDSecureOptions || {};\n\n const roundedAmount = amount.toFixed(2);\n\n return threeDSecure.verifyCard({\n amount: Number(roundedAmount),\n bin,\n challengeRequested,\n nonce,\n onLookupComplete: (_data, next) => {\n next();\n },\n collectDeviceData: true,\n additionalInformation,\n });\n }\n}\n","import { CreditCardInstrument } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nexport default function isCreditCardInstrumentLike(\n instrument: unknown,\n): instrument is CreditCardInstrument {\n if (typeof instrument !== 'object' || instrument === null) {\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const creditCardInstrument = instrument as Partial<Record<string, unknown>>;\n\n return (\n typeof creditCardInstrument.ccExpiry === 'object' &&\n creditCardInstrument.ccExpiry !== null &&\n typeof creditCardInstrument.ccNumber === 'string' &&\n typeof creditCardInstrument.ccName === 'string'\n );\n}\n","import StandardError from './standard-error';\n\n/**\n * This error should be thrown when the client library of a payment method fails\n * to load, or for some reason, it is inaccessible.\n */\nexport default class PaymentMethodClientUnavailableError extends StandardError {\n constructor(message?: string) {\n super(\n message ||\n 'Unable to proceed because the client library of a payment method is not loaded or ready to be used.',\n );\n\n this.name = 'PaymentMethodClientUnavailableError';\n this.type = 'payment_method_client_unavailable';\n }\n}\n","export const BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION = '3.128.0';\nexport const BRAINTREE_SDK_DEFAULT_VERSION = '3.123.2';\nexport const BRAINTREE_SDK_STABLE_VERSION = '3.106.0';\n","import { BraintreeModuleName } from './braintree';\nimport {\n BRAINTREE_SDK_DEFAULT_VERSION,\n BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION,\n BRAINTREE_SDK_STABLE_VERSION,\n} from './braintree-sdk-verison';\n\nexport const BRAINTREE_SDK_SCRIPTS_INTEGRITY = {\n [BRAINTREE_SDK_STABLE_VERSION]: {\n [BraintreeModuleName.Client]:\n 'sha384-26BXDNnJI23JYRyFBj4xe4sVNrUSSiSSu11kxVXNM/vEPONm4LuL00w6ZaTgQewt',\n [BraintreeModuleName.PaypalCheckout]:\n 'sha384-B+vzbZwnQtzWBthpkT4TXKUibO65tyeK7eCxSvpblgprTep2+IAXB2Cxxjrn710O',\n [BraintreeModuleName.Paypal]:\n 'sha384-uyAGL1/3+XJAHnGoNy4eCoXdzJ4f7Ilzp+6w9PNnEjs6DCCz9WMyJjMN1gzc78U+',\n [BraintreeModuleName.LocalPayment]:\n 'sha384-LIvOEMkIVEwVuYBdVOQc1AC5YbGGlwyfUheS0ACK218D2STuVYQlZ4FyEPowAEfT',\n [BraintreeModuleName.DataCollector]:\n 'sha384-1bo9JDz+Kscthc085cCKWur8CLwUoBpoNyxsDi7932mCl0zFq3A5mv+FQLw9GHpV',\n [BraintreeModuleName.UsBankAccount]:\n 'sha384-xmHBVaU+w74V+OebD3AaPONFxHUGMf+QRs8G/JxVPXNNP7MDa2jL0ICWHIe2tTfJ',\n [BraintreeModuleName.GooglePayment]:\n 'sha384-WKDJl8mqoP82qZpMGH6AbZxnvXnSW8ILV4M64CyMLiugGMwu7LyP89wjCkHqsiBe',\n [BraintreeModuleName.ThreeDSecure]:\n 'sha384-VQUlpGHzsGvs5XeiGFip7EXRsvoHWEXDVmgCacfbyieZI9mdBOqq3NSoyo28OCOB',\n [BraintreeModuleName.VisaCheckout]:\n 'sha384-yx7mADfzTN0T43Q6rlH49LIg1EJ0iUZgBp/EczX9LXsUGkySgxrD+nWHQRBkyfoT',\n [BraintreeModuleName.Venmo]:\n 'sha384-QX4rPjoj1ZDhuG0aSyKs56lEKDqTMTcjYxUHY1SzO5VZDsqIE2NTkqot7KNSCyov',\n [BraintreeModuleName.HostedFields]:\n 'sha384-VvYBACfSu0Cr/J32uKmxG7AXcNOJE1AzIIL3kbikyS7YKp5fz5Is+NzNP/lyauNy',\n [BraintreeModuleName.Fastlane]:\n 'sha384-9oGsZMRZwpGtDEDYa/dFt76dECqj1xAni9gIKgc3KfMIiRnR73nEeeUDLiBzxhFa',\n },\n [BRAINTREE_SDK_DEFAULT_VERSION]: {\n [BraintreeModuleName.Client]:\n 'sha384-o+nbQGcwNNxIBeXeu3+XmbSq+Cg8R3EN3N0l5hXCgMMU2RGY0t1z0LroSEIAbfAO',\n [BraintreeModuleName.PaypalCheckout]:\n 'sha384-WrfbWPBS4mH86GAoycPSgiH8hQ8KH7A67C93Hjhunv/xhNk2YpBn3wbFA4Fhg9U/',\n [BraintreeModuleName.Paypal]:\n 'sha384-VF389nvvrRUgDsTXMxTYORDtVegB9IQa3Cxr//DyJnLYnz8/X8VCzEvck2c+Megt',\n [BraintreeModuleName.LocalPayment]:\n 'sha384-tZKx2rEQbfmZpoPSY5VPmJEhaq4X75dLvwHMs3VE9U+C8lPyw+hWTIL1+GPvWCIH',\n [BraintreeModuleName.DataCollector]:\n 'sha384-E6k3wOpP7syCDDwaRDLF06942Y00NkbwJvWi2OQXwwKzGwG5fd3E7RFUvCCecfvO',\n [BraintreeModuleName.UsBankAccount]:\n 'sha384-258FON8LZGG0W9Qaz4Jij83pZHu30YnKjJA7gNulLBh6CclkucgF+tHDQuYFRYfW',\n [BraintreeModuleName.GooglePayment]:\n 'sha384-taJ2p/0+n0VH328POAoBiuEbL3tnHUTE9S42hK1V+Txs3X+QYjZOyKW35JgHRFfO',\n [BraintreeModuleName.ThreeDSecure]:\n 'sha384-+NSZH4Zj3sO5bdWvPKhU5N16QDxeueTVTnUVeleeESkhLSaz4Ob1hh/5myecc9Ym',\n [BraintreeModuleName.VisaCheckout]:\n 'sha384-66DiBjghxk1OmBj8aksN8gbQ+CwoQcx1vPfiXUN08g1iQVM+BwewF0p7toM3i7SS',\n [BraintreeModuleName.Venmo]:\n 'sha384-B5UwY42kE4RoLoWbQ7YpqosUlUad2/DlGWiw0HhoZbSPk30CQAaSA10ohyLDTkDU',\n [BraintreeModuleName.HostedFields]:\n 'sha384-Aw9EesSaUeWxe36PqEHiOyOyOq8M6CIb1gw7/yHNVPRzGtFXXcd2OQ8qXrIlOj2P',\n [BraintreeModuleName.Fastlane]:\n 'sha384-rhBL1hpZ71JqG+2TsT0Dih47mbjx8cjJCpeZjk9tw3df1gFMKfCTmMyZunhr7H4Y',\n },\n [BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION]: {\n [BraintreeModuleName.Client]:\n 'sha384-0WNxksIpRP+fYZiIdr12g6DBUQfLDzYCQJZtR/C8KkcwSGhPHfcFp3tTaGcMyFTq',\n [BraintreeModuleName.PaypalCheckout]:\n 'sha384-lWM1jk4BOxoDNV6Kop7tVNvQgINlmEVz0c/OwM+HNHK3QC8xqwd54Ovrt2QRDTjh',\n [BraintreeModuleName.Paypal]:\n 'sha384-fXUmVxC2EMZBDXZ7eTHSTL/LFBrHej/MSXT/vTBXvra4lzgLNGvREAp+x0GYObuH',\n [BraintreeModuleName.LocalPayment]:\n 'sha384-pha1xGuGSkmZH5x9aqHvRaO4xLea7rmQ/79PFj9zxNzxuFcOWZg7gOP7FibygOEC',\n [BraintreeModuleName.DataCollector]:\n 'sha384-Q6PI2F9eekWbAxhroybl+aEcvqhdowN/EQlGwBUyJOzPFn9982u9xl6SU6XfGKzc',\n [BraintreeModuleName.UsBankAccount]:\n 'sha384-W3RLQSKJL1tQ3+Y7mP6tmkamtZ8bV4Yw/XxL9Jj5JtXHraD8loMF8hAIG5m2zK7F',\n [BraintreeModuleName.GooglePayment]:\n 'sha384-TITQMsFWA3elDNGP2mWz2oKBo4qjt+TlqzovcaPoeBiAh/wPBi6nae50ADdgU1/i',\n [BraintreeModuleName.ThreeDSecure]:\n 'sha384-YiycYN89ZlL/Evcaq4y1ajW1mhd7JYfZBDuOwHtIn4/Jnm20GL+/XCM+zYAwWD8D',\n [BraintreeModuleName.VisaCheckout]:\n 'sha384-/OdaTv9qrkKzjObtUe6yzfDhHozFW/+uXlrSl736sOZRJpjGQETvpYXqMFFg69xv',\n [BraintreeModuleName.Venmo]:\n 'sha384-dA+ojdW9vbJS4JavcXyOs9d5uZHJg5dNtYupoPSH2zsXIiYDVS5amLb/u8qmQ6oz',\n [BraintreeModuleName.HostedFields]:\n 'sha384-31ZkS58+iaWsW06ftW52zzVZFp43WPd7pNYRiddYynSNg6Oh7WGbSFGorAUH6T1z',\n [BraintreeModuleName.Fastlane]:\n 'sha384-jlbrwNvL3HvLAUCtLSmrnQ2GH1udCUrRS/bVmReAS5fuIVvcW8Pko/Gkg82tlgtr',\n },\n};\n","import { ScriptLoader } from '@bigcommerce/script-loader';\n\nimport { PaymentMethodClientUnavailableError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport { BRAINTREE_SDK_SCRIPTS_INTEGRITY } from './braintree-sdk-scripts-integrity';\nimport isManageableBraintreeSDKVersion from './isManageableBraintreeSDKVersion';\nimport {\n BraintreeClientCreator,\n BraintreeDataCollectorCreator,\n BraintreeFastlaneCreator,\n BraintreeGooglePaymentCreator,\n BraintreeHostedFieldsCreator,\n BraintreeHostWindow,\n BraintreeLocalPaymentCreator,\n BraintreeModuleCreators,\n BraintreeModuleName,\n BraintreePaypalCheckoutCreator,\n BraintreePaypalCreator,\n BraintreeThreeDSecureCreator,\n BraintreeUsBankAccountCreator,\n BraintreeVenmoCheckoutCreator,\n BraintreeVisaCheckoutCreator,\n SDKVersionManager,\n} from './types';\nimport { VisaCheckoutSDK } from './visacheckout';\n\nexport default class BraintreeScriptLoader {\n constructor(\n private scriptLoader: ScriptLoader,\n private braintreeHostWindow: BraintreeHostWindow,\n private braintreeSDKVersionManager: SDKVersionManager,\n ) {}\n\n async loadClient(): Promise<BraintreeClientCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeClientCreator>(\n BraintreeModuleName.Client,\n 'client.min.js',\n );\n }\n\n async loadFastlane(): Promise<BraintreeFastlaneCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeFastlaneCreator>(\n BraintreeModuleName.Fastlane,\n 'fastlane.min.js',\n );\n }\n\n async loadPaypalCheckout(): Promise<BraintreePaypalCheckoutCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreePaypalCheckoutCreator>(\n BraintreeModuleName.PaypalCheckout,\n 'paypal-checkout.min.js',\n );\n }\n\n async loadPaypal(): Promise<BraintreePaypalCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreePaypalCreator>(\n BraintreeModuleName.Paypal,\n 'paypal.min.js',\n );\n }\n\n async loadLocalPayment(): Promise<BraintreeLocalPaymentCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeLocalPaymentCreator>(\n BraintreeModuleName.LocalPayment,\n 'local-payment.min.js',\n );\n }\n\n async loadDataCollector(): Promise<BraintreeDataCollectorCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeDataCollectorCreator>(\n BraintreeModuleName.DataCollector,\n 'data-collector.min.js',\n );\n }\n\n async loadUsBankAccount(): Promise<BraintreeUsBankAccountCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeUsBankAccountCreator>(\n BraintreeModuleName.UsBankAccount,\n 'us-bank-account.min.js',\n );\n }\n\n async loadGooglePayment(): Promise<BraintreeGooglePaymentCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeGooglePaymentCreator>(\n BraintreeModuleName.GooglePayment,\n 'google-payment.min.js',\n );\n }\n\n async load3DS(): Promise<BraintreeThreeDSecureCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeThreeDSecureCreator>(\n BraintreeModuleName.ThreeDSecure,\n 'three-d-secure.min.js',\n );\n }\n\n loadVisaCheckout(): Promise<BraintreeVisaCheckoutCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeVisaCheckoutCreator>(\n BraintreeModuleName.VisaCheckout,\n 'visa-checkout.min.js',\n );\n }\n\n loadVenmoCheckout(): Promise<BraintreeVenmoCheckoutCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeVenmoCheckoutCreator>(\n BraintreeModuleName.Venmo,\n 'venmo.min.js',\n );\n }\n\n async loadHostedFields(): Promise<BraintreeHostedFieldsCreator> {\n return this.loadBraintreeModuleOrThrow<BraintreeHostedFieldsCreator>(\n BraintreeModuleName.HostedFields,\n 'hosted-fields.min.js',\n );\n }\n\n async loadVisaCheckoutSdk(testMode?: boolean): Promise<VisaCheckoutSDK> {\n if (this.braintreeHostWindow.V) {\n return this.braintreeHostWindow.V;\n }\n\n const hash = testMode\n ? 'sha384-0eu1s1GtqzXlL9DtLgmwzC5WWlEH/ADRM0n38cVQkvtT+W/gey96rcb1LwuUOPDm'\n : 'sha384-1f1csvP3ZFxg4dILH1GaY4LHlZ0oX7Rk83rxmLlwbnIi4TM0NYzXoev1VoEiVDS6';\n\n return this.scriptLoader\n .loadScript(\n `//${\n testMode ? 'sandbox-' : ''\n }assets.secure.checkout.visa.com/checkout-widget/resources/js/integration/v1/sdk.js`,\n {\n async: true,\n attributes: {\n integrity: hash,\n crossorigin: 'anonymous',\n },\n },\n )\n .then(() => {\n if (!this.braintreeHostWindow.V) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.braintreeHostWindow.V;\n });\n }\n\n private async loadBraintreeModuleOrThrow<T extends BraintreeModuleCreators>(\n braintreeModuleName: BraintreeModuleName,\n fileName: string,\n ): Promise<T> {\n let module = this.getBraintreeModule(braintreeModuleName);\n\n if (module) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return module as T;\n }\n\n const braintreeSdkVersion = this.braintreeSDKVersionManager.getSDKVersion();\n\n const scriptPath = `//js.braintreegateway.com/web/${braintreeSdkVersion}/js/${fileName}`;\n\n const integrity = isManageableBraintreeSDKVersion(braintreeSdkVersion)\n ? this.getIntegrityValuesByModuleName(braintreeModuleName, braintreeSdkVersion)\n : undefined;\n\n await this.scriptLoader.loadScript(\n scriptPath,\n integrity\n ? {\n async: true,\n attributes: {\n integrity,\n crossorigin: 'anonymous',\n },\n }\n : undefined,\n );\n\n module = this.getBraintreeModule(braintreeModuleName);\n\n if (!module) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return module as T;\n }\n\n private getBraintreeModule(\n braintreeModuleName: BraintreeModuleName,\n ): BraintreeModuleCreators | undefined {\n return this.braintreeHostWindow.braintree?.[braintreeModuleName];\n }\n\n private getIntegrityValuesByModuleName(\n moduleName: BraintreeModuleName,\n version: keyof typeof BRAINTREE_SDK_SCRIPTS_INTEGRITY,\n ): string {\n const integrity = BRAINTREE_SDK_SCRIPTS_INTEGRITY[version][moduleName];\n\n if (!integrity) {\n throw new Error('Unexpected fileName value');\n }\n\n return integrity;\n }\n}\n","import { BRAINTREE_SDK_SCRIPTS_INTEGRITY } from './braintree-sdk-scripts-integrity';\n\nfunction isManageableBraintreeSDKVersion(\n version: string,\n): version is keyof typeof BRAINTREE_SDK_SCRIPTS_INTEGRITY {\n return version in BRAINTREE_SDK_SCRIPTS_INTEGRITY;\n}\n\nexport default isManageableBraintreeSDKVersion;\n","import { BRAINTREE_SDK_DEFAULT_VERSION } from './braintree-sdk-verison';\nimport { SDKVersionManager } from './types';\n\nexport default class BraintreeHeadlessSDKVersionManager implements SDKVersionManager {\n getSDKVersion(): string {\n return BRAINTREE_SDK_DEFAULT_VERSION;\n }\n}\n","import { StandardError } from '@bigcommerce/checkout-sdk/payment-integration-api';\n\n/**\n * Throw this error if the Braintree PayPal wallet flow fails to redirect the\n * shopper to the external checkout page.\n */\nexport default class BraintreePaypalWalletError extends StandardError {\n constructor(message?: string) {\n super(message || 'Failed to redirect to checkout page');\n\n this.name = 'BraintreePaypalWalletError';\n this.type = 'braintree_paypal_wallet';\n }\n}\n","import StandardError from './standard-error';\n\nexport enum MissingDataErrorType {\n MissingBillingAddress,\n MissingCart,\n MissingCheckout,\n MissingConsignments,\n MissingCustomer,\n MissingCheckoutConfig,\n MissingOrder,\n MissingOrderConfig,\n MissingOrderId,\n MissingPayment,\n MissingPaymentId,\n MissingPaymentInstrument,\n MissingPaymentMethod,\n MissingPaymentRedirectUrl,\n MissingPaymentStatus,\n MissingPaymentToken,\n MissingShippingAddress,\n}\n\n/**\n * Throw this error when data that is expected to exist is missing. Usually it\n * is due to the fact that certain data has not been retrieved from or saved to\n * the server yet. And such data is required to perform certain actions.\n */\nexport default class MissingDataError extends StandardError {\n constructor(public subtype: MissingDataErrorType) {\n super(getErrorMessage(subtype));\n\n this.name = 'MissingDataError';\n this.type = 'missing_data';\n }\n}\n\nfunction getErrorMessage(type: MissingDataErrorType): string {\n switch (type) {\n case MissingDataErrorType.MissingBillingAddress:\n return 'Unable to proceed because billing address data is unavailable.';\n\n case MissingDataErrorType.MissingCart:\n return 'Unable to proceed because cart data is unavailable.';\n\n case MissingDataErrorType.MissingConsignments:\n return 'Unable to proceed because consignments data is unavailable.';\n\n case MissingDataErrorType.MissingCheckout:\n return 'Unable to proceed because checkout data is unavailable.';\n\n case MissingDataErrorType.MissingCustomer:\n return 'Unable to proceed because customer data is unavailable.';\n\n case MissingDataErrorType.MissingCheckoutConfig:\n case MissingDataErrorType.MissingOrderConfig:\n return 'Unable to proceed because configuration data is unavailable.';\n\n case MissingDataErrorType.MissingOrder:\n return 'Unable to proceed because order data is unavailable.';\n\n case MissingDataErrorType.MissingOrderId:\n return 'Unable to proceed because order ID is unavailable or not generated yet.';\n\n case MissingDataErrorType.MissingPayment:\n return 'Unable to proceed because payment data is unavailable.';\n\n case MissingDataErrorType.MissingPaymentToken:\n return 'Unable to proceed because the token required to submit a payment is missing.';\n\n case MissingDataErrorType.MissingPaymentMethod:\n return 'Unable to proceed because payment method data is unavailable or not properly configured.';\n\n case MissingDataErrorType.MissingShippingAddress:\n return 'Unable to proceed because shipping address data is unavailable.';\n\n default:\n return 'Unable to proceed because the required data is unavailable.';\n }\n}\n","import {\n PaymentMethodClientUnavailableError,\n StandardError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n AddressRequestBody,\n WalletButtonIntegrationService,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport BraintreePaypalWalletError from './braintree-paypal-wallet-error';\n\nimport {\n BraintreeError,\n BraintreeIntegrationService,\n BraintreePaypalCheckout,\n BraintreePaypalSdkCreatorConfig,\n BraintreeTokenizationDetails,\n BraintreeTokenizePayload,\n BraintreeVenmoCheckout,\n isBraintreeError,\n PaypalAuthorizeData,\n} from './';\n\nexport default class BraintreePaypalWalletService {\n private braintreePaypalCheckout?: BraintreePaypalCheckout;\n private braintreeVenmoCheckout?: BraintreeVenmoCheckout;\n\n constructor(\n private walletButtonIntegrationService: WalletButtonIntegrationService,\n private braintreeIntegrationService: BraintreeIntegrationService,\n ) {}\n\n /**\n *\n * Braintree SDK methods\n *\n */\n initialize(clientToken: string): void {\n this.braintreeIntegrationService.initialize(clientToken);\n }\n\n async loadPaypalCheckout(\n options: BraintreePaypalSdkCreatorConfig,\n containerId: string,\n onError?: (error: BraintreeError | StandardError) => void,\n ): Promise<BraintreePaypalCheckout> {\n this.braintreePaypalCheckout = await new Promise<BraintreePaypalCheckout>(\n (resolve, reject) => {\n void this.braintreeIntegrationService.getPaypalCheckout(\n options,\n resolve,\n (error: BraintreeError) => {\n this.removeElement(containerId);\n\n if (onError && isBraintreeError(error)) {\n onError(error);\n }\n\n reject(error);\n },\n );\n },\n );\n\n return this.braintreePaypalCheckout!;\n }\n\n async loadVenmoCheckout(containerId: string): Promise<BraintreeVenmoCheckout> {\n try {\n this.braintreeVenmoCheckout = await this.braintreeIntegrationService.getVenmoCheckout();\n } catch (error) {\n this.removeElement(containerId);\n\n throw error;\n }\n\n return this.braintreeVenmoCheckout;\n }\n\n getBraintreePaypalCheckoutOrThrow(): BraintreePaypalCheckout {\n if (!this.braintreePaypalCheckout) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.braintreePaypalCheckout;\n }\n\n getBraintreeVenmoCheckoutOrThrow(): BraintreeVenmoCheckout {\n if (!this.braintreeVenmoCheckout) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.braintreeVenmoCheckout;\n }\n\n async teardown(): Promise<void> {\n await this.braintreeIntegrationService.teardown();\n }\n\n /**\n *\n * Payment tokenizing and redirect methods\n *\n */\n async proxyTokenizationPayment(\n authorizeData: PaypalAuthorizeData,\n methodId: string,\n cartId: string,\n ): Promise<BraintreeTokenizePayload> {\n const braintreePaypalCheckout = this.getBraintreePaypalCheckoutOrThrow();\n\n const tokenizePayload = await braintreePaypalCheckout.tokenizePayment(authorizeData);\n\n return this.redirectToExternalCheckout(tokenizePayload, methodId, cartId);\n }\n\n async proxyVenmoTokenizationPayment(\n methodId: string,\n cartId: string,\n ): Promise<BraintreeTokenizePayload> {\n const tokenizePayload = await this.tokenizeVenmo();\n\n return this.redirectToExternalCheckout(tokenizePayload, methodId, cartId);\n }\n\n /**\n *\n * Utils methods\n *\n */\n removeElement(containerId?: string): void {\n this.braintreeIntegrationService.removeElement(containerId);\n }\n\n private async redirectToExternalCheckout(\n tokenizePayload: BraintreeTokenizePayload,\n methodId: string,\n cartId: string,\n ): Promise<BraintreeTokenizePayload> {\n const { deviceData } = await this.braintreeIntegrationService.getDataCollector({\n paypal: true,\n });\n\n const { details, nonce } = tokenizePayload;\n\n const shippingAddress =\n this.braintreeIntegrationService.mapToLegacyShippingAddress(details);\n\n await this.walletButtonIntegrationService.addBillingAddress(\n cartId,\n this.mapToBillingAddress(details),\n );\n\n const inputData = {\n paymentWalletData: {\n providerId: methodId,\n providerOrderId: nonce,\n },\n cartEntityId: cartId,\n queryParams: [\n { key: 'payment_type', value: 'paypal' },\n { key: 'action', value: 'set_external_checkout' },\n { key: 'provider', value: methodId },\n { key: 'nonce', value: nonce },\n {\n key: 'shipping_address',\n value: encodeURIComponent(JSON.stringify(shippingAddress)),\n },\n ...(deviceData ? [{ key: 'device_data', value: deviceData }] : []),\n ],\n };\n\n const response = await this.walletButtonIntegrationService.getRedirectToCheckoutUrl(\n inputData,\n );\n\n const externalCheckoutUrl = response.body.redirectUrls?.externalCheckoutUrl;\n\n if (!externalCheckoutUrl) {\n throw new BraintreePaypalWalletError();\n }\n\n window.location.assign(externalCheckoutUrl);\n\n return tokenizePayload;\n }\n\n private mapToBillingAddress(details: BraintreeTokenizationDetails): AddressRequestBody {\n const { billingAddress, email, firstName, lastName, phone, shippingAddress } = details;\n\n const address = billingAddress || shippingAddress;\n\n return {\n firstName: firstName || '',\n lastName: lastName || '',\n company: '',\n address1: address?.line1 || '',\n address2: address?.line2 || '',\n city: address?.city || '',\n email: email || '',\n stateOrProvince: address?.state || '',\n stateOrProvinceCode: address?.state || '',\n countryCode: address?.countryCode || '',\n postalCode: address?.postalCode || '',\n phone: phone || '',\n shouldSaveAddress: false,\n };\n }\n\n private tokenizeVenmo(): Promise<BraintreeTokenizePayload> {\n const braintreeVenmoCheckout = this.getBraintreeVenmoCheckoutOrThrow();\n\n return new Promise<BraintreeTokenizePayload>((resolve, reject) => {\n braintreeVenmoCheckout.tokenize(\n (error: BraintreeError | undefined, payload: BraintreeTokenizePayload) => {\n if (error) {\n return reject(error);\n }\n\n resolve(payload);\n },\n );\n });\n }\n}\n","import ResolvableModule from './resolvable-module';\n\nexport default function toResolvableModule<TModule extends object, TIdentifier>(\n module: TModule,\n resolveIds: TIdentifier[],\n): ResolvableModule<TModule, TIdentifier> {\n return Object.assign(module, { resolveIds });\n}\n","import { isNil, omitBy } from 'lodash';\n\nimport { PaypalStyleOptions } from '@bigcommerce/checkout-sdk/braintree-utils';\n\nexport default function getValidButtonStyle(style?: PaypalStyleOptions): PaypalStyleOptions {\n const { color, fundingicons, height = 40, layout, shape, size, tagline } = style || {};\n\n const validStyles = {\n color,\n fundingicons,\n height: getValidHeight(height),\n layout,\n shape: shape || 'rect',\n size,\n tagline,\n };\n\n return omitBy(validStyles, isNil);\n}\n\nfunction getValidHeight(height: number | string): number {\n const minHeight = 25;\n const defaultHeight = 40;\n const maxHeight = 55;\n\n const currentHeight = Number(height);\n\n if (!currentHeight || Number.isNaN(currentHeight)) {\n return defaultHeight;\n }\n\n if (currentHeight > maxHeight) {\n return maxHeight;\n }\n\n if (currentHeight < minHeight) {\n return minHeight;\n }\n\n return currentHeight;\n}\n","import {\n BraintreeError,\n BraintreeHostWindow,\n BraintreeInitializationData,\n BraintreePaypalSdkCreatorConfig,\n BraintreePaypalWalletService,\n isBraintreeError,\n PaypalAuthorizeData,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport {\n CheckoutButtonInitializeOptions,\n CheckoutButtonStrategy,\n InvalidArgumentError,\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n StandardError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport getValidButtonStyle from '../get-valid-button-style';\n\nimport BraintreePaypalWalletInitializeOptions, {\n WithBraintreePaypalWalletInitializeOptions,\n} from './braintree-paypal-wallet-initialize-options';\n\nexport default class BraintreePaypalWalletStrategy implements CheckoutButtonStrategy {\n constructor(\n private braintreePaypalWalletService: BraintreePaypalWalletService,\n private braintreeHostWindow: BraintreeHostWindow,\n ) {}\n\n async initialize(\n options: CheckoutButtonInitializeOptions & WithBraintreePaypalWalletInitializeOptions,\n ): Promise<void> {\n const { braintreepaypal, containerId, methodId } = options;\n\n if (!methodId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.methodId\" argument is not provided.',\n );\n }\n\n if (!containerId) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.containerId\" argument is not provided.`,\n );\n }\n\n if (!braintreepaypal) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.braintreepaypal\" argument is not provided.`,\n );\n }\n\n let parsedPaymentMethod: PaymentMethod<BraintreeInitializationData>;\n\n try {\n parsedPaymentMethod = JSON.parse(atob(braintreepaypal.initializationData));\n } catch (error) {\n throw new InvalidArgumentError(\"Failed to parse payment method 'initializationData'.\");\n }\n\n const { initializationData, config } = parsedPaymentMethod;\n\n if (!braintreepaypal.clientToken || !initializationData || !config) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentMethod);\n }\n\n const paypalCheckoutOptions: BraintreePaypalSdkCreatorConfig = {\n currency: braintreepaypal.currency.code,\n intent: initializationData.intent,\n isCreditEnabled: initializationData.isCreditEnabled,\n commit: false,\n };\n\n this.braintreePaypalWalletService.initialize(braintreepaypal.clientToken);\n\n await this.braintreePaypalWalletService.loadPaypalCheckout(\n paypalCheckoutOptions,\n containerId,\n braintreepaypal.onError,\n );\n\n this.renderButton(\n braintreepaypal,\n containerId,\n methodId,\n !!config.testMode,\n initializationData.intent,\n );\n }\n\n async deinitialize(): Promise<void> {\n await this.braintreePaypalWalletService.teardown();\n }\n\n private renderButton(\n braintreepaypal: BraintreePaypalWalletInitializeOptions,\n containerId: string,\n methodId: string,\n testMode: boolean,\n intent?: BraintreeInitializationData['intent'],\n ): void {\n const { style, onEligibilityFailure } = braintreepaypal;\n const { paypal } = this.braintreeHostWindow;\n\n if (!paypal) {\n this.braintreePaypalWalletService.removeElement(containerId);\n\n return;\n }\n\n const paypalButtonRender = paypal.Buttons({\n env: testMode ? 'sandbox' : 'production',\n fundingSource: paypal.FUNDING.PAYPAL,\n style: getValidButtonStyle(style),\n createOrder: () => this.setupPayment(braintreepaypal, intent),\n onApprove: (authorizeData: PaypalAuthorizeData) =>\n this.tokenizePayment(\n authorizeData,\n methodId,\n braintreepaypal.cartId,\n braintreepaypal.onAuthorizeError,\n ),\n });\n\n if (paypalButtonRender.isEligible()) {\n paypalButtonRender.render(`#${containerId}`);\n\n return;\n }\n\n if (onEligibilityFailure && typeof onEligibilityFailure === 'function') {\n onEligibilityFailure();\n }\n }\n\n private async setupPayment(\n braintreepaypal: BraintreePaypalWalletInitializeOptions,\n intent?: BraintreeInitializationData['intent'],\n ): Promise<string | void> {\n const { onPaymentError, amount, currency } = braintreepaypal;\n\n const braintreePaypalCheckout =\n this.braintreePaypalWalletService.getBraintreePaypalCheckoutOrThrow();\n\n try {\n return await braintreePaypalCheckout.createPayment({\n flow: 'checkout',\n enableShippingAddress: true,\n shippingAddressEditable: false,\n amount,\n currency: currency.code,\n offerCredit: false,\n intent,\n });\n } catch (error: unknown) {\n if (isBraintreeError(error) || error instanceof StandardError) {\n onPaymentError?.(error);\n }\n\n throw error;\n }\n }\n\n private async tokenizePayment(\n authorizeData: PaypalAuthorizeData,\n methodId: string,\n cartId: string,\n onError?: (error: BraintreeError | StandardError) => void,\n ): Promise<void> {\n try {\n await this.braintreePaypalWalletService.proxyTokenizationPayment(\n authorizeData,\n methodId,\n cartId,\n );\n } catch (error) {\n if (isBraintreeError(error) || error instanceof StandardError) {\n onError?.(error);\n }\n\n throw error;\n }\n }\n}\n","import { getScriptLoader } from '@bigcommerce/script-loader';\n\nimport {\n BraintreeHeadlessSDKVersionManager,\n BraintreeHostWindow,\n BraintreeIntegrationService,\n BraintreePaypalWalletService,\n BraintreeScriptLoader,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport { toResolvableModule } from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n WalletButtonIntegrationService,\n WalletPaymentButtonStrategyFactory,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport BraintreePaypalWalletStrategy from './braintree-paypal-wallet-strategy';\n\nconst createBraintreePaypalWalletStrategy: WalletPaymentButtonStrategyFactory<\n BraintreePaypalWalletStrategy\n> = (walletButtonIntegrationService: WalletButtonIntegrationService) => {\n const braintreeHostWindow: BraintreeHostWindow = window;\n\n const braintreeIntegrationService = new BraintreeIntegrationService(\n new BraintreeScriptLoader(\n getScriptLoader(),\n braintreeHostWindow,\n new BraintreeHeadlessSDKVersionManager(),\n ),\n braintreeHostWindow,\n );\n\n return new BraintreePaypalWalletStrategy(\n new BraintreePaypalWalletService(\n walletButtonIntegrationService,\n braintreeIntegrationService,\n ),\n braintreeHostWindow,\n );\n};\n\nexport default toResolvableModule(createBraintreePaypalWalletStrategy, [{ id: 'braintreepaypal' }]);\n","import {\n BraintreeError,\n BraintreeHostWindow,\n BraintreeInitializationData,\n BraintreePaypalSdkCreatorConfig,\n BraintreePaypalWalletService,\n isBraintreeError,\n PaypalAuthorizeData,\n PaypalButtonStyleColorOption,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport {\n CheckoutButtonInitializeOptions,\n CheckoutButtonStrategy,\n InvalidArgumentError,\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n StandardError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport getValidButtonStyle from '../get-valid-button-style';\n\nimport BraintreePaypalCreditWalletInitializeOptions, {\n WithBraintreePaypalCreditWalletInitializeOptions,\n} from './braintree-paypal-credit-wallet-initialize-options';\n\nexport default class BraintreePaypalCreditWalletStrategy implements CheckoutButtonStrategy {\n constructor(\n private braintreePaypalWalletService: BraintreePaypalWalletService,\n private braintreeHostWindow: BraintreeHostWindow,\n ) {}\n\n async initialize(\n options: CheckoutButtonInitializeOptions & WithBraintreePaypalCreditWalletInitializeOptions,\n ): Promise<void> {\n const { braintreepaypalcredit, containerId, methodId } = options;\n\n if (!methodId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.methodId\" argument is not provided.',\n );\n }\n\n if (!containerId) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.containerId\" argument is not provided.`,\n );\n }\n\n if (!braintreepaypalcredit) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.braintreepaypalcredit\" argument is not provided.`,\n );\n }\n\n let parsedPaymentMethod: PaymentMethod<BraintreeInitializationData>;\n\n try {\n parsedPaymentMethod = JSON.parse(atob(braintreepaypalcredit.initializationData));\n } catch (error) {\n throw new InvalidArgumentError(\"Failed to parse payment method 'initializationData'.\");\n }\n\n const { initializationData, config } = parsedPaymentMethod;\n\n if (!braintreepaypalcredit.clientToken || !initializationData || !config) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentMethod);\n }\n\n const paypalCheckoutOptions: BraintreePaypalSdkCreatorConfig = {\n currency: braintreepaypalcredit.currency.code,\n intent: initializationData.intent,\n isCreditEnabled: initializationData.isCreditEnabled,\n commit: false,\n };\n\n this.braintreePaypalWalletService.initialize(braintreepaypalcredit.clientToken);\n\n await this.braintreePaypalWalletService.loadPaypalCheckout(\n paypalCheckoutOptions,\n containerId,\n braintreepaypalcredit.onError,\n );\n\n this.renderButton(\n braintreepaypalcredit,\n containerId,\n methodId,\n !!config.testMode,\n initializationData.intent,\n );\n }\n\n async deinitialize(): Promise<void> {\n await this.braintreePaypalWalletService.teardown();\n }\n\n private renderButton(\n braintreepaypalcredit: BraintreePaypalCreditWalletInitializeOptions,\n containerId: string,\n methodId: string,\n testMode: boolean,\n intent?: BraintreeInitializationData['intent'],\n ): void {\n const { style, onEligibilityFailure } = braintreepaypalcredit;\n const { paypal } = this.braintreeHostWindow;\n\n if (!paypal) {\n this.braintreePaypalWalletService.removeElement(containerId);\n\n return;\n }\n\n const paypalButtonRender = paypal.Buttons({\n env: testMode ? 'sandbox' : 'production',\n fundingSource: paypal.FUNDING.PAYLATER,\n style: { ...getValidButtonStyle(style), color: PaypalButtonStyleColorOption.GOLD },\n createOrder: () => this.setupPayment(braintreepaypalcredit, intent),\n onApprove: (authorizeData: PaypalAuthorizeData) =>\n this.tokenizePayment(\n authorizeData,\n methodId,\n braintreepaypalcredit.cartId,\n braintreepaypalcredit.onAuthorizeError,\n ),\n });\n\n if (paypalButtonRender.isEligible()) {\n paypalButtonRender.render(`#${containerId}`);\n\n return;\n }\n\n if (onEligibilityFailure && typeof onEligibilityFailure === 'function') {\n onEligibilityFailure();\n }\n }\n\n private async setupPayment(\n braintreepaypalcredit: BraintreePaypalCreditWalletInitializeOptions,\n intent?: BraintreeInitializationData['intent'],\n ): Promise<string | void> {\n const { onPaymentError, amount, currency } = braintreepaypalcredit;\n\n const braintreePaypalCheckout =\n this.braintreePaypalWalletService.getBraintreePaypalCheckoutOrThrow();\n\n try {\n return await braintreePaypalCheckout.createPayment({\n flow: 'checkout',\n enableShippingAddress: true,\n shippingAddressEditable: false,\n amount,\n currency: currency.code,\n offerCredit: true,\n intent,\n });\n } catch (error: unknown) {\n if (isBraintreeError(error) || error instanceof StandardError) {\n onPaymentError?.(error);\n }\n\n throw error;\n }\n }\n\n private async tokenizePayment(\n authorizeData: PaypalAuthorizeData,\n methodId: string,\n cartId: string,\n onError?: (error: BraintreeError | StandardError) => void,\n ): Promise<void> {\n try {\n await this.braintreePaypalWalletService.proxyTokenizationPayment(\n authorizeData,\n methodId,\n cartId,\n );\n } catch (error) {\n if (isBraintreeError(error) || error instanceof StandardError) {\n onError?.(error);\n }\n\n throw error;\n }\n }\n}\n","import { getScriptLoader } from '@bigcommerce/script-loader';\n\nimport {\n BraintreeHeadlessSDKVersionManager,\n BraintreeHostWindow,\n BraintreeIntegrationService,\n BraintreePaypalWalletService,\n BraintreeScriptLoader,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport { toResolvableModule } from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n WalletButtonIntegrationService,\n WalletPaymentButtonStrategyFactory,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport BraintreePaypalCreditWalletStrategy from './braintree-paypal-credit-wallet-strategy';\n\nconst createBraintreePaypalCreditWalletStrategy: WalletPaymentButtonStrategyFactory<\n BraintreePaypalCreditWalletStrategy\n> = (walletButtonIntegrationService: WalletButtonIntegrationService) => {\n const braintreeHostWindow: BraintreeHostWindow = window;\n\n const braintreeIntegrationService = new BraintreeIntegrationService(\n new BraintreeScriptLoader(\n getScriptLoader(),\n braintreeHostWindow,\n new BraintreeHeadlessSDKVersionManager(),\n ),\n braintreeHostWindow,\n );\n\n return new BraintreePaypalCreditWalletStrategy(\n new BraintreePaypalWalletService(\n walletButtonIntegrationService,\n braintreeIntegrationService,\n ),\n braintreeHostWindow,\n );\n};\n\nexport default toResolvableModule(createBraintreePaypalCreditWalletStrategy, [\n { id: 'braintreepaypalcredit' },\n]);\n","import { PaypalButtonStyleColorOption, PaypalStyleOptions } from './paypal';\n\nexport const VenmoButtonImage = {\n [PaypalButtonStyleColorOption.WHITE]:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTE4IiBoZWlnaHQ9IjI5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiPgogICAgPGRlZnM+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwMCI+CiAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxOTgiIGhlaWdodD0iMzgiIGZpbGw9IndoaXRlIiBpZD0ic3ZnXzEiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgPC9kZWZzPgogICAgPGc+CiAgICAgICAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogICAgICAgIDxnIHN0cm9rZT0ibnVsbCIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSIgaWQ9InN2Z18yIj4KICAgICAgICAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBkPSJtMjAuMDM2ODgsNGMwLjc1NDU4LDEuMjY3NTEgMS4wOTQ4NSwyLjU3Mjk0IDEuMDk0ODUsNC4yMjIwOGMwLDUuMjU5ODUgLTQuNDE0OTYsMTIuMDkyNzEgLTcuOTk4MjMsMTYuODkwNzVsLTguMTg0NDMsMGwtMy4yODI0LC0xOS45NjExN2w3LjE2NjM0LC0wLjY5MmwxLjczNTQ1LDE0LjIwMzY1YzEuNjIxNTQsLTIuNjg2NjQgMy42MjI1OSwtNi45MDg3MSAzLjYyMjU5LC05Ljc4NzMzYzAsLTEuNTc1NjMgLTAuMjY1NCwtMi42NDg4IC0wLjY4MDE3LC0zLjUzMjQzbDYuNTI2LC0xLjM0MzU0eiIgZmlsbD0id2hpdGUiIGlkPSJzdmdfMyIvPgogICAgICAgICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGQ9Im0yOS4zMjQ3NCwxMi43ODk3NGMxLjMxODgsMCA0LjYzODc0LC0wLjYxMzUzIDQuNjM4NzQsLTIuNTMyNThjMCwtMC45MjE0NiAtMC42NDA2MiwtMS4zODEyIC0xLjM5NTY1LC0xLjM4MTJjLTEuMzIwODgsMCAtMy4wNTQxOCwxLjYxMDk0IC0zLjI0MzA5LDMuOTEzNzhsLTAuMDAwMDEsMHptLTAuMTUxMDgsMy44MDA2M2MwLDIuMzQzMyAxLjI4MTE0LDMuMjYyNTkgMi45Nzk1OCwzLjI2MjU5YzEuODQ5NjEsMCAzLjYyMDQ3LC0wLjQ1OTY1IDUuOTIyMjMsLTEuNjQ5MzFsLTAuODY3MDEsNS45ODcyNWMtMS42MjE2OCwwLjgwNTg4IC00LjE0OTExLDEuMzQzNTQgLTYuNjAyMzEsMS4zNDM1NGMtNi4yMjI5NCwwIC04LjQ1MDAyLC0zLjgzODEgLTguNDUwMDIsLTguNjM2MzJjMCwtNi4yMTg5NyAzLjYyMjczLC0xMi44MjIyOCAxMS4wOTE2OSwtMTIuODIyMjhjNC4xMTIxOCwwIDYuNDExNTksMi4zNDMwMyA2LjQxMTU5LDUuNjA1NjJjMC4wMDAzNiw1LjI1OTU4IC02LjYzNzI2LDYuODcwODggLTEwLjQ4NTc1LDYuOTA4OWwwLjAwMDAxLDB6IiBmaWxsPSJ3aGl0ZSIgaWQ9InN2Z180Ii8+CiAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgZD0ibTYwLjM0MDQ5LDguNjg0MDdjMCwwLjc2NzY3IC0wLjExNDUsMS44ODEwMyAtMC4yMjgzOCwyLjYwODdsLTIuMTUwNDEsMTMuODIwMDRsLTYuOTc4MDcsMGwxLjk2MTQ5LC0xMi42Njg2N2MwLjAzNzIxLC0wLjM0MzYxIDAuMTUxNTMsLTEuMDM1MzQgMC4xNTE1MywtMS40MTkxM2MwLC0wLjkyMTU1IC0wLjU2NjEyLC0xLjE1MTQ3IC0xLjI0NjY0LC0xLjE1MTQ3Yy0wLjkwMzk1LDAgLTEuODEwMDUsMC40MjE4MSAtMi40MTM1NiwwLjcyOTg0bC0yLjIyNDgyLDE0LjUwOTQzbC03LjAxNzM1LDBsMy4yMDU4OSwtMjAuNjkwODNsNi4wNzM0OSwwbDAuMDc2OTQsMS42NTE0OGMxLjQzMjg1LC0wLjk1OTQ4IDMuMzE5NTgsLTEuOTk3MjYgNS45OTY1NSwtMS45OTcyNmMzLjU0NjcsLTAuMDAwMzYgNC43OTMzNCwxLjg0Mjg0IDQuNzkzMzQsNC42MDc4NmwwLjAwMDAxLDB6IiBmaWxsPSJ3aGl0ZSIgaWQ9InN2Z181Ii8+CiAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgZD0ibTgxLjA1NjI0LDYuMzQwODZjMS45OTg1MiwtMS40NTcyMyAzLjg4NTcsLTIuMjY1MDEgNi40ODc3MiwtMi4yNjUwMWMzLjU4MzA5LDAgNC44Mjg5MiwxLjg0MzIgNC44Mjg5Miw0LjYwODIyYzAsMC43Njc2NyAtMC4xMTM3OCwxLjg4MTAzIC0wLjIyNzU3LDIuNjA4N2wtMi4xNDc5NywxMy44MTk4N2wtNi45Nzk5NiwwbDEuOTk4OTcsLTEyLjkzNjI0YzAuMDM2NzYsLTAuMzQ1NzcgMC4xMTQwNSwtMC43Njc1OCAwLjExNDA1LC0xLjAzNTE2YzAsLTEuMDM3NTkgLTAuNTY2MywtMS4yNjc2OSAtMS4yNDY2NCwtMS4yNjc2OWMtMC44NjY3NCwwIC0xLjczMzEyLDAuMzgzNzkgLTIuMzc2MzUsMC43Mjk3NWwtMi4yMjQzNywxNC41MDk2OWwtNi45NzgyNSwwbDEuOTk4ODgsLTEyLjkzNjQyYzAuMDM2ODQsLTAuMzQ1NzcgMC4xMTE3OSwtMC43Njc1OCAwLjExMTc5LC0xLjAzNTE2YzAsLTEuMDM3NSAtMC41NjY0OCwtMS4yNjc2OSAtMS4yNDQ0OCwtMS4yNjc2OWMtMC45MDU5MywwIC0xLjgxMDA1LDAuNDIxODEgLTIuNDEzNTYsMC43Mjk4NGwtMi4yMjY1NCwxNC41MDk0M2wtNy4wMTUwOSwwbDMuMjA1NTIsLTIwLjY5MDgzbDUuOTk5MjYsMGwwLjE4ODU1LDEuNzI3MzRjMS4zOTU2NSwtMS4wMzUxNiAzLjI4MDg0LC0yLjA3Mjg0IDUuODA4MDksLTIuMDcyODRjMi4xODgxNiwtMC4wMDA4MSAzLjYyMDgzLDAuOTU4ODUgNC4zMzkwMiwyLjI2NDE5bDAuMDAwMDEsMC4wMDAwMXoiIGZpbGw9IndoaXRlIiBpZD0ic3ZnXzYiLz4KICAgICAgICAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBkPSJtMTA2LjI2MDc1LDEyLjM2ODNjMCwtMS42ODkxNCAtMC40MTU0LC0yLjg0MDY5IC0xLjY1ODg4LC0yLjg0MDY5Yy0yLjc1NDI3LDAgLTMuMzE5NTgsNC45NTE0NyAtMy4zMTk1OCw3LjQ4NDRjMCwxLjkyMTY3IDAuNTI4MjgsMy4xMTA4OCAxLjc3MTc2LDMuMTEwODhjMi42MDM0NywwIDMuMjA2NywtNS4yMjE4NCAzLjIwNjcsLTcuNzU0NTl6bS0xMi4wNzAwNCw0LjMzNzk0YzAsLTYuNTI0OTIgMy4zOTQ1MywtMTIuNjMwMzggMTEuMjAzMTMsLTEyLjYzMDM4YzUuODg1MTIsMCA4LjAzNjE2LDMuNTMyNTEgOC4wMzYxNiw4LjQwODMxYzAsNi40NDkzNCAtMy4zNTc1MSwxMy4xMjgxMyAtMTEuMzU1NzMsMTMuMTI4MTNjLTUuOTIyMTQsMCAtNy44ODM1NSwtMy45NTQzMyAtNy44ODM1NSwtOC45MDYwNmwtMC4wMDAwMSwweiIgZmlsbD0id2hpdGUiIGlkPSJzdmdfNyIvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==',\n [PaypalButtonStyleColorOption.BLUE]:\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTE4IiBoZWlnaHQ9IjI5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiPgogICAgPGRlZnM+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwMCI+CiAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxOTgiIGhlaWdodD0iMzgiIGZpbGw9IiMwMDhDRkYiIGlkPSJzdmdfMSIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICA8L2RlZnM+CiAgICA8Zz4KICAgICAgICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgICAgICAgPGcgc3Ryb2tlPSJudWxsIiBjbGlwLXBhdGg9InVybCgjY2xpcDApIiBpZD0ic3ZnXzIiPgogICAgICAgICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGQ9Im0yMC4wMzY4OCw0YzAuNzU0NTgsMS4yNjc1MSAxLjA5NDg1LDIuNTcyOTQgMS4wOTQ4NSw0LjIyMjA4YzAsNS4yNTk4NSAtNC40MTQ5NiwxMi4wOTI3MSAtNy45OTgyMywxNi44OTA3NWwtOC4xODQ0MywwbC0zLjI4MjQsLTE5Ljk2MTE3bDcuMTY2MzQsLTAuNjkybDEuNzM1NDUsMTQuMjAzNjVjMS42MjE1NCwtMi42ODY2NCAzLjYyMjU5LC02LjkwODcxIDMuNjIyNTksLTkuNzg3MzNjMCwtMS41NzU2MyAtMC4yNjU0LC0yLjY0ODggLTAuNjgwMTcsLTMuNTMyNDNsNi41MjYsLTEuMzQzNTR6IiBmaWxsPSIjMDA4Q0ZGIiBpZD0ic3ZnXzMiLz4KICAgICAgICAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBkPSJtMjkuMzI0NzQsMTIuNzg5NzRjMS4zMTg4LDAgNC42Mzg3NCwtMC42MTM1MyA0LjYzODc0LC0yLjUzMjU4YzAsLTAuOTIxNDYgLTAuNjQwNjIsLTEuMzgxMiAtMS4zOTU2NSwtMS4zODEyYy0xLjMyMDg4LDAgLTMuMDU0MTgsMS42MTA5NCAtMy4yNDMwOSwzLjkxMzc4bC0wLjAwMDAxLDB6bS0wLjE1MTA4LDMuODAwNjNjMCwyLjM0MzMgMS4yODExNCwzLjI2MjU5IDIuOTc5NTgsMy4yNjI1OWMxLjg0OTYxLDAgMy42MjA0NywtMC40NTk2NSA1LjkyMjIzLC0xLjY0OTMxbC0wLjg2NzAxLDUuOTg3MjVjLTEuNjIxNjgsMC44MDU4OCAtNC4xNDkxMSwxLjM0MzU0IC02LjYwMjMxLDEuMzQzNTRjLTYuMjIyOTQsMCAtOC40NTAwMiwtMy44MzgxIC04LjQ1MDAyLC04LjYzNjMyYzAsLTYuMjE4OTcgMy42MjI3MywtMTIuODIyMjggMTEuMDkxNjksLTEyLjgyMjI4YzQuMTEyMTgsMCA2LjQxMTU5LDIuMzQzMDMgNi40MTE1OSw1LjYwNTYyYzAuMDAwMzYsNS4yNTk1OCAtNi42MzcyNiw2Ljg3MDg4IC0xMC40ODU3NSw2LjkwODlsMC4wMDAwMSwweiIgZmlsbD0iIzAwOENGRiIgaWQ9InN2Z180Ii8+CiAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgZD0ibTYwLjM0MDQ5LDguNjg0MDdjMCwwLjc2NzY3IC0wLjExNDUsMS44ODEwMyAtMC4yMjgzOCwyLjYwODdsLTIuMTUwNDEsMTMuODIwMDRsLTYuOTc4MDcsMGwxLjk2MTQ5LC0xMi42Njg2N2MwLjAzNzIxLC0wLjM0MzYxIDAuMTUxNTMsLTEuMDM1MzQgMC4xNTE1MywtMS40MTkxM2MwLC0wLjkyMTU1IC0wLjU2NjEyLC0xLjE1MTQ3IC0xLjI0NjY0LC0xLjE1MTQ3Yy0wLjkwMzk1LDAgLTEuODEwMDUsMC40MjE4MSAtMi40MTM1NiwwLjcyOTg0bC0yLjIyNDgyLDE0LjUwOTQzbC03LjAxNzM1LDBsMy4yMDU4OSwtMjAuNjkwODNsNi4wNzM0OSwwbDAuMDc2OTQsMS42NTE0OGMxLjQzMjg1LC0wLjk1OTQ4IDMuMzE5NTgsLTEuOTk3MjYgNS45OTY1NSwtMS45OTcyNmMzLjU0NjcsLTAuMDAwMzYgNC43OTMzNCwxLjg0Mjg0IDQuNzkzMzQsNC42MDc4NmwwLjAwMDAxLDB6IiBmaWxsPSIjMDA4Q0ZGIiBpZD0ic3ZnXzUiLz4KICAgICAgICAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBkPSJtODEuMDU2MjQsNi4zNDA4NmMxLjk5ODUyLC0xLjQ1NzIzIDMuODg1NywtMi4yNjUwMSA2LjQ4NzcyLC0yLjI2NTAxYzMuNTgzMDksMCA0LjgyODkyLDEuODQzMiA0LjgyODkyLDQuNjA4MjJjMCwwLjc2NzY3IC0wLjExMzc4LDEuODgxMDMgLTAuMjI3NTcsMi42MDg3bC0yLjE0Nzk3LDEzLjgxOTg3bC02Ljk3OTk2LDBsMS45OTg5NywtMTIuOTM2MjRjMC4wMzY3NiwtMC4zNDU3NyAwLjExNDA1LC0wLjc2NzU4IDAuMTE0MDUsLTEuMDM1MTZjMCwtMS4wMzc1OSAtMC41NjYzLC0xLjI2NzY5IC0xLjI0NjY0LC0xLjI2NzY5Yy0wLjg2Njc0LDAgLTEuNzMzMTIsMC4zODM3OSAtMi4zNzYzNSwwLjcyOTc1bC0yLjIyNDM3LDE0LjUwOTY5bC02Ljk3ODI1LDBsMS45OTg4OCwtMTIuOTM2NDJjMC4wMzY4NCwtMC4zNDU3NyAwLjExMTc5LC0wLjc2NzU4IDAuMTExNzksLTEuMDM1MTZjMCwtMS4wMzc1IC0wLjU2NjQ4LC0xLjI2NzY5IC0xLjI0NDQ4LC0xLjI2NzY5Yy0wLjkwNTkzLDAgLTEuODEwMDUsMC40MjE4MSAtMi40MTM1NiwwLjcyOTg0bC0yLjIyNjU0LDE0LjUwOTQzbC03LjAxNTA5LDBsMy4yMDU1MiwtMjAuNjkwODNsNS45OTkyNiwwbDAuMTg4NTUsMS43MjczNGMxLjM5NTY1LC0xLjAzNTE2IDMuMjgwODQsLTIuMDcyODQgNS44MDgwOSwtMi4wNzI4NGMyLjE4ODE2LC0wLjAwMDgxIDMuNjIwODMsMC45NTg4NSA0LjMzOTAyLDIuMjY0MTlsMC4wMDAwMSwwLjAwMDAxeiIgZmlsbD0iIzAwOENGRiIgaWQ9InN2Z182Ii8+CiAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgZD0ibTEwNi4yNjA3NSwxMi4zNjgzYzAsLTEuNjg5MTQgLTAuNDE1NCwtMi44NDA2OSAtMS42NTg4OCwtMi44NDA2OWMtMi43NTQyNywwIC0zLjMxOTU4LDQuOTUxNDcgLTMuMzE5NTgsNy40ODQ0YzAsMS45MjE2NyAwLjUyODI4LDMuMTEwODggMS43NzE3NiwzLjExMDg4YzIuNjAzNDcsMCAzLjIwNjcsLTUuMjIxODQgMy4yMDY3LC03Ljc1NDU5em0tMTIuMDcwMDQsNC4zMzc5NGMwLC02LjUyNDkyIDMuMzk0NTMsLTEyLjYzMDM4IDExLjIwMzEzLC0xMi42MzAzOGM1Ljg4NTEyLDAgOC4wMzYxNiwzLjUzMjUxIDguMDM2MTYsOC40MDgzMWMwLDYuNDQ5MzQgLTMuMzU3NTEsMTMuMTI4MTMgLTExLjM1NTczLDEzLjEyODEzYy01LjkyMjE0LDAgLTcuODgzNTUsLTMuOTU0MzMgLTcuODgzNTUsLTguOTA2MDZsLTAuMDAwMDEsMHoiIGZpbGw9IiMwMDhDRkYiIGlkPSJzdmdfNyIvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==',\n};\n\nconst getBraintreeVenmoButtonStyle = (styles: PaypalStyleOptions): Record<string, string> => {\n const { color, height } = styles;\n\n const colorParser = (c: string) => {\n if (c === PaypalButtonStyleColorOption.WHITE) {\n return '#FFFFFF';\n }\n\n return '#3D95CE';\n };\n\n return {\n backgroundColor: colorParser(color || ''),\n backgroundPosition: '50% 50%',\n backgroundSize: '80px auto',\n backgroundImage: `url(\"${\n VenmoButtonImage[\n color === PaypalButtonStyleColorOption.WHITE\n ? PaypalButtonStyleColorOption.BLUE\n : PaypalButtonStyleColorOption.WHITE\n ]\n }\")`,\n backgroundRepeat: 'no-repeat',\n borderRadius: '4px',\n cursor: 'pointer',\n transition: '0.2s ease',\n minHeight: `${height || 40}px`,\n minWidth: '150px',\n height: '100%',\n border: color === PaypalButtonStyleColorOption.WHITE ? '1px solid black' : 'none',\n };\n};\n\nexport default getBraintreeVenmoButtonStyle;\n","import {\n BraintreeInitializationData,\n BraintreePaypalWalletService,\n getBraintreeVenmoButtonStyle,\n isBraintreeError,\n PaypalButtonStyleColorOption,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport {\n CheckoutButtonInitializeOptions,\n CheckoutButtonStrategy,\n InvalidArgumentError,\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n StandardError,\n UnsupportedBrowserError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\nimport BraintreeVenmoWalletInitializeOptions, {\n WithBraintreeVenmoWalletInitializeOptions,\n} from './braintree-venmo-wallet-initialize-options';\n\nconst venmoButtonStyleHover = {\n backgroundColor: '#0a7fc2',\n};\n\nexport default class BraintreeVenmoWalletStrategy implements CheckoutButtonStrategy {\n constructor(private braintreePaypalWalletService: BraintreePaypalWalletService) {}\n\n async initialize(\n options: CheckoutButtonInitializeOptions & WithBraintreeVenmoWalletInitializeOptions,\n ): Promise<void> {\n const { braintreevenmo, containerId, methodId } = options;\n\n if (!methodId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.methodId\" argument is not provided.',\n );\n }\n\n if (!containerId) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.containerId\" argument is not provided.`,\n );\n }\n\n if (!braintreevenmo) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.braintreevenmo\" argument is not provided.`,\n );\n }\n\n let parsedPaymentMethod: PaymentMethod<BraintreeInitializationData>;\n\n try {\n parsedPaymentMethod = JSON.parse(atob(braintreevenmo.initializationData));\n } catch (error) {\n throw new InvalidArgumentError(\"Failed to parse payment method 'initializationData'.\");\n }\n\n const { initializationData, config } = parsedPaymentMethod;\n\n if (!braintreevenmo.clientToken || !initializationData || !config) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentMethod);\n }\n\n this.braintreePaypalWalletService.initialize(braintreevenmo.clientToken);\n\n try {\n await this.braintreePaypalWalletService.loadVenmoCheckout(containerId);\n } catch (error) {\n this.handleInitializationError(error, braintreevenmo);\n\n return;\n }\n\n this.renderButton(braintreevenmo, containerId, methodId, initializationData);\n }\n\n async deinitialize(): Promise<void> {\n await this.braintreePaypalWalletService.teardown();\n }\n\n private handleInitializationError(\n error: unknown,\n braintreevenmo: BraintreeVenmoWalletInitializeOptions,\n ): void {\n const { onError, onEligibilityFailure } = braintreevenmo;\n\n if (error instanceof UnsupportedBrowserError) {\n onEligibilityFailure?.();\n\n return;\n }\n\n if (isBraintreeError(error) || error instanceof StandardError) {\n onError?.(error);\n }\n }\n\n private renderButton(\n braintreevenmo: BraintreeVenmoWalletInitializeOptions,\n containerId: string,\n methodId: string,\n initializationData: BraintreeInitializationData,\n ): void {\n const { style, onEligibilityFailure } = braintreevenmo;\n const { cartButtonStyles } = initializationData.paymentButtonStyles || {};\n const buttonStyles = style || cartButtonStyles || {};\n const { color } = buttonStyles;\n\n const venmoButton = document.getElementById(containerId);\n\n if (!venmoButton) {\n this.braintreePaypalWalletService.removeElement(containerId);\n\n onEligibilityFailure?.();\n\n return;\n }\n\n venmoButton.setAttribute('aria-label', 'Venmo');\n Object.assign(venmoButton.style, getBraintreeVenmoButtonStyle(buttonStyles));\n\n venmoButton.addEventListener('click', async () => {\n venmoButton.setAttribute('disabled', 'true');\n\n try {\n await this.braintreePaypalWalletService.proxyVenmoTokenizationPayment(\n methodId,\n braintreevenmo.cartId,\n );\n } catch (error) {\n if (isBraintreeError(error) || error instanceof StandardError) {\n braintreevenmo.onAuthorizeError?.(error);\n }\n } finally {\n venmoButton.removeAttribute('disabled');\n }\n });\n\n if (color === PaypalButtonStyleColorOption.BLUE) {\n venmoButton.addEventListener('mouseenter', () => {\n venmoButton.style.backgroundColor = venmoButtonStyleHover.backgroundColor;\n });\n\n venmoButton.addEventListener('mouseleave', () => {\n venmoButton.style.backgroundColor =\n getBraintreeVenmoButtonStyle(buttonStyles).backgroundColor;\n });\n }\n }\n}\n","import { getScriptLoader } from '@bigcommerce/script-loader';\n\nimport {\n BraintreeHeadlessSDKVersionManager,\n BraintreeHostWindow,\n BraintreeIntegrationService,\n BraintreePaypalWalletService,\n BraintreeScriptLoader,\n} from '@bigcommerce/checkout-sdk/braintree-utils';\nimport { toResolvableModule } from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n WalletButtonIntegrationService,\n WalletPaymentButtonStrategyFactory,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport BraintreeVenmoWalletStrategy from './braintree-venmo-wallet-strategy';\n\nconst createBraintreeVenmoWalletStrategy: WalletPaymentButtonStrategyFactory<\n BraintreeVenmoWalletStrategy\n> = (walletButtonIntegrationService: WalletButtonIntegrationService) => {\n const braintreeHostWindow: BraintreeHostWindow = window;\n\n const braintreeIntegrationService = new BraintreeIntegrationService(\n new BraintreeScriptLoader(\n getScriptLoader(),\n braintreeHostWindow,\n new BraintreeHeadlessSDKVersionManager(),\n ),\n braintreeHostWindow,\n );\n\n return new BraintreeVenmoWalletStrategy(\n new BraintreePaypalWalletService(\n walletButtonIntegrationService,\n braintreeIntegrationService,\n ),\n );\n};\n\nexport default toResolvableModule(createBraintreeVenmoWalletStrategy, [{ id: 'braintreevenmo' }]);\n","export const LOADING_INDICATOR_STYLES = {\n 'background-color': 'rgba(0, 0, 0, 0.4)',\n 'z-index': '1000',\n};\n\n/**\n * PayPal SDK supported locales\n * https://developer.paypal.com/sdk/js/configuration/#link-locale\n */\nexport const PAYPAL_SDK_SUPPORTED_LOCALES = [\n 'ar_BH',\n 'ar_DZ',\n 'ar_EG',\n 'ar_JO',\n 'ar_KW',\n 'ar_MA',\n 'ar_OM',\n 'ar_QA',\n 'ar_SA',\n 'ar_TN',\n 'ar_YE',\n 'ar_AE',\n 'bg_BG',\n 'cs_CZ',\n 'da_DK',\n 'da_FO',\n 'da_GL',\n 'de_AT',\n 'de_CH',\n 'de_DE',\n 'de_LU',\n 'el_GR',\n 'en_AD',\n 'en_AE',\n 'en_AG',\n 'en_AI',\n 'en_AL',\n 'en_AM',\n 'en_AN',\n 'en_AO',\n 'en_AT',\n 'en_AU',\n 'en_AW',\n 'en_AZ',\n 'en_BB',\n 'en_BE',\n 'en_BH',\n 'en_BJ',\n 'en_BM',\n 'en_BN',\n 'en_BS',\n 'en_BT',\n 'en_BW',\n 'en_BY',\n 'en_BZ',\n 'en_C2',\n 'en_CA',\n 'en_CD',\n 'en_CG',\n 'en_CH',\n 'en_CI',\n 'en_CK',\n 'en_CL',\n 'en_CM',\n 'en_CN',\n 'en_CO',\n 'en_CR',\n 'en_CV',\n 'en_CY',\n 'en_CZ',\n 'en_DE',\n 'en_DJ',\n 'en_DK',\n 'en_DM',\n 'en_DO',\n 'en_DZ',\n 'en_EC',\n 'en_EE',\n 'en_EG',\n 'en_ER',\n 'en_ES',\n 'en_ET',\n 'en_FI',\n 'en_FJ',\n 'en_FK',\n 'en_FM',\n 'en_FO',\n 'en_FR',\n 'en_GA',\n 'en_GB',\n 'en_GD',\n 'en_GE',\n 'en_GF',\n 'en_GI',\n 'en_GL',\n 'en_GM',\n 'en_GN',\n 'en_GP',\n 'en_GR',\n 'en_GT',\n 'en_GW',\n 'en_GY',\n 'en_HK',\n 'en_HN',\n 'en_HR',\n 'en_HU',\n 'en_ID',\n 'en_IE',\n 'en_IL',\n 'en_IN',\n 'en_IS',\n 'en_IT',\n 'en_JM',\n 'en_JO',\n 'en_JP',\n 'en_KE',\n 'en_KG',\n 'en_KH',\n 'en_KI',\n 'en_KM',\n 'en_KN',\n 'en_KR',\n 'en_KW',\n 'en_KY',\n 'en_KZ',\n 'en_LA',\n 'en_LC',\n 'en_LI',\n 'en_LK',\n 'en_LS',\n 'en_LT',\n 'en_LU',\n 'en_LV',\n 'en_MA',\n 'en_MC',\n 'en_MD',\n 'en_ME',\n 'en_MG',\n 'en_MH',\n 'en_MK',\n 'en_ML',\n 'en_MN',\n 'en_MQ',\n 'en_MR',\n 'en_MS',\n 'en_MT',\n 'en_MU',\n 'en_MV',\n 'en_MW',\n 'en_MY',\n 'en_MZ',\n 'en_NA',\n 'en_NC',\n 'en_NE',\n 'en_NF',\n 'en_NG',\n 'en_NI',\n 'en_NL',\n 'en_NO',\n 'en_NP',\n 'en_NR',\n 'en_NU',\n 'en_NZ',\n 'en_OM',\n 'en_PA',\n 'en_PE',\n 'en_PF',\n 'en_PG',\n 'en_PH',\n 'en_PL',\n 'en_PM',\n 'en_PN',\n 'en_PT',\n 'en_PW',\n 'en_PY',\n 'en_QA',\n 'en_RE',\n 'en_RO',\n 'en_RS',\n 'en_RU',\n 'en_RW',\n 'en_SA',\n 'en_SB',\n 'en_SC',\n 'en_SE',\n 'en_SG',\n 'en_SH',\n 'en_SI',\n 'en_SJ',\n 'en_SK',\n 'en_SL',\n 'en_SM',\n 'en_SN',\n 'en_SO',\n 'en_SR',\n 'en_ST',\n 'en_SV',\n 'en_SZ',\n 'en_TC',\n 'en_TD',\n 'en_TG',\n 'en_TH',\n 'en_TJ',\n 'en_TM',\n 'en_TN',\n 'en_TO',\n 'en_TR',\n 'en_TT',\n 'en_TV',\n 'en_TW',\n 'en_TZ',\n 'en_UA',\n 'en_UG',\n 'en_US',\n 'en_UY',\n 'en_VA',\n 'en_VC',\n 'en_VE',\n 'en_VG',\n 'en_VN',\n 'en_VU',\n 'en_WF',\n 'en_WS',\n 'en_YE',\n 'en_YT',\n 'en_ZA',\n 'en_ZM',\n 'en_ZW',\n 'es_AD',\n 'es_AI',\n 'es_AO',\n 'es_AR',\n 'es_AW',\n 'es_BB',\n 'es_BJ',\n 'es_BM',\n 'es_BO',\n 'es_BS',\n 'es_BZ',\n 'es_CD',\n 'es_CG',\n 'es_CK',\n 'es_CL',\n 'es_CO',\n 'es_CR',\n 'es_CV',\n 'es_DJ',\n 'es_DM',\n 'es_DO',\n 'es_DZ',\n 'es_EC',\n 'es_EG',\n 'es_ER',\n 'es_ES',\n 'es_ET',\n 'es_FJ',\n 'es_FK',\n 'es_FO',\n 'es_GA',\n 'es_GD',\n 'es_GE',\n 'es_GI',\n 'es_GL',\n 'es_GM',\n 'es_GN',\n 'es_GT',\n 'es_GW',\n 'es_GY',\n 'es_HN',\n 'es_IE',\n 'es_JM',\n 'es_JO',\n 'es_KE',\n 'es_KG',\n 'es_KI',\n 'es_KM',\n 'es_KN',\n 'es_KW',\n 'es_KY',\n 'es_KZ',\n 'es_LC',\n 'es_LI',\n 'es_LS',\n 'es_LU',\n 'es_MA',\n 'es_MG',\n 'es_MH',\n 'es_ML',\n 'es_MR',\n 'es_MS',\n 'es_MU',\n 'es_MW',\n 'es_MX',\n 'es_MZ',\n 'es_NA',\n 'es_NC',\n 'es_NE',\n 'es_NF',\n 'es_NI',\n 'es_NR',\n 'es_NU',\n 'es_NZ',\n 'es_OM',\n 'es_PA',\n 'es_PE',\n 'es_PF',\n 'es_PG',\n 'es_PM',\n 'es_PN',\n 'es_PW',\n 'es_PY',\n 'es_QA',\n 'es_RS',\n 'es_RW',\n 'es_SA',\n 'es_SB',\n 'es_SC',\n 'es_SH',\n 'es_SJ',\n 'es_SL',\n 'es_SM',\n 'es_SN',\n 'es_SO',\n 'es_SR',\n 'es_ST',\n 'es_SV',\n 'es_SZ',\n 'es_TC',\n 'es_TD',\n 'es_TG',\n 'es_TJ',\n 'es_TM',\n 'es_TN',\n 'es_TT',\n 'es_TV',\n 'es_UA',\n 'es_UG',\n 'es_US',\n 'es_UY',\n 'es_VA',\n 'es_VC',\n 'es_VE',\n 'es_VG',\n 'es_VU',\n 'es_WF',\n 'es_YE',\n 'es_ZM',\n 'et_EE',\n 'fi_FI',\n 'fr_AD',\n 'fr_AE',\n 'fr_AI',\n 'fr_AM',\n 'fr_AO',\n 'fr_AW',\n 'fr_AZ',\n 'fr_BB',\n 'fr_BE',\n 'fr_BF',\n 'fr_BI',\n 'fr_BJ',\n 'fr_BM',\n 'fr_BS',\n 'fr_BZ',\n 'fr_CA',\n 'fr_CD',\n 'fr_CG',\n 'fr_CH',\n 'fr_CI',\n 'fr_CK',\n 'fr_CM',\n 'fr_CV',\n 'fr_DJ',\n 'fr_DM',\n 'fr_DO',\n 'fr_DZ',\n 'fr_EC',\n 'fr_ER',\n 'fr_ET',\n 'fr_FJ',\n 'fr_FK',\n 'fr_FO',\n 'fr_FR',\n 'fr_GA',\n 'fr_GD',\n 'fr_GE',\n 'fr_GF',\n 'fr_GI',\n 'fr_GL',\n 'fr_GM',\n 'fr_GN',\n 'fr_GP',\n 'fr_GT',\n 'fr_GW',\n 'fr_GY',\n 'fr_HN',\n 'fr_IE',\n 'fr_JM',\n 'fr_JO',\n 'fr_KE',\n 'fr_KG',\n 'fr_KI',\n 'fr_KM',\n 'fr_KN',\n 'fr_KW',\n 'fr_KY',\n 'fr_KZ',\n 'fr_LC',\n 'fr_LI',\n 'fr_LS',\n 'fr_LU',\n 'fr_MA',\n 'fr_MC',\n 'fr_MG',\n 'fr_MH',\n 'fr_ML',\n 'fr_MQ',\n 'fr_MR',\n 'fr_MS',\n 'fr_MU',\n 'fr_MW',\n 'fr_MZ',\n 'fr_NA',\n 'fr_NC',\n 'fr_NE',\n 'fr_NF',\n 'fr_NI',\n 'fr_NR',\n 'fr_NU',\n 'fr_NZ',\n 'fr_OM',\n 'fr_PA',\n 'fr_PE',\n 'fr_PF',\n 'fr_PG',\n 'fr_PM',\n 'fr_PN',\n 'fr_PW',\n 'fr_QA',\n 'fr_RE',\n 'fr_RS',\n 'fr_RW',\n 'fr_SA',\n 'fr_SB',\n 'fr_SC',\n 'fr_SH',\n 'fr_SJ',\n 'fr_SL',\n 'fr_SM',\n 'fr_SN',\n 'fr_SO',\n 'fr_SR',\n 'fr_ST',\n 'fr_SV',\n 'fr_SZ',\n 'fr_TC',\n 'fr_TD',\n 'fr_TG',\n 'fr_TJ',\n 'fr_TM',\n 'fr_TN',\n 'fr_TT',\n 'fr_TV',\n 'fr_UA',\n 'fr_UG',\n 'fr_US',\n 'fr_UY',\n 'fr_VA',\n 'fr_VC',\n 'fr_VE',\n 'fr_VG',\n 'fr_VU',\n 'fr_WF',\n 'fr_YE',\n 'fr_YT',\n 'fr_ZA',\n 'fr_ZM',\n 'he_IL',\n 'hu_HU',\n 'id_ID',\n 'it_IT',\n 'ja_JP',\n 'ko_KR',\n 'lv_LV',\n 'lt_LT',\n 'ms_BN',\n 'ms_MY',\n 'nl_BE',\n 'nl_NL',\n 'pl_PL',\n 'pt_BR',\n 'pt_PT',\n 'ro_RO',\n 'ru_EE',\n 'ru_LT',\n 'ru_LV',\n 'ru_RU',\n 'ru_UA',\n 'si_LK',\n 'sk_SK',\n 'sl_SI',\n 'sq_AL',\n 'sv_SE',\n 'tl_PH',\n 'th_TH',\n 'tr_TR',\n 'vi_VN',\n 'zh_C2',\n 'zh_CN',\n 'zh_HK',\n 'zh_TW',\n 'zh_AD',\n 'zh_AE',\n 'zh_AI',\n 'zh_AO',\n 'zh_AW',\n 'zh_BB',\n 'zh_BH',\n 'zh_BJ',\n 'zh_BM',\n 'zh_BS',\n 'zh_BZ',\n 'zh_CD',\n 'zh_CG',\n 'zh_CK',\n 'zh_CL',\n 'zh_CO',\n 'zh_CV',\n 'zh_DJ',\n 'zh_DM',\n 'zh_DO',\n 'zh_DZ',\n 'zh_EC',\n 'zh_EG',\n 'zh_ER',\n 'zh_ET',\n 'zh_FJ',\n 'zh_FK',\n 'zh_FO',\n 'zh_GA',\n 'zh_GD',\n 'zh_GE',\n 'zh_GI',\n 'zh_GL',\n 'zh_GM',\n 'zh_GN',\n 'zh_GT',\n 'zh_GW',\n 'zh_GY',\n 'zh_HN',\n 'zh_IE',\n 'zh_JM',\n 'zh_JO',\n 'zh_KE',\n 'zh_KG',\n 'zh_KI',\n 'zh_KM',\n 'zh_KN',\n 'zh_KW',\n 'zh_KY',\n 'zh_KZ',\n 'zh_LC',\n 'zh_LI',\n 'zh_LS',\n 'zh_LT',\n 'zh_LU',\n 'zh_MA',\n 'zh_MG',\n 'zh_MH',\n 'zh_ML',\n 'zh_MR',\n 'zh_MS',\n 'zh_MU',\n 'zh_MW',\n 'zh_MZ',\n 'zh_NA',\n 'zh_NC',\n 'zh_NE',\n 'zh_NF',\n 'zh_NI',\n 'zh_NR',\n 'zh_NU',\n 'zh_NZ',\n 'zh_OM',\n 'zh_PA',\n 'zh_PE',\n 'zh_PF',\n 'zh_PG',\n 'zh_PM',\n 'zh_PN',\n 'zh_PW',\n 'zh_QA',\n 'zh_RS',\n 'zh_RW',\n 'zh_SA',\n 'zh_SB',\n 'zh_SC',\n 'zh_SH',\n 'zh_SJ',\n 'zh_SL',\n 'zh_SM',\n 'zh_SN',\n 'zh_SO',\n 'zh_SR',\n 'zh_ST',\n 'zh_SV',\n 'zh_SZ',\n 'zh_TC',\n 'zh_TD',\n 'zh_TG',\n 'zh_TJ',\n 'zh_TM',\n 'zh_TN',\n 'zh_TT',\n 'zh_TV',\n 'zh_UA',\n 'zh_UG',\n 'zh_US',\n 'zh_UY',\n 'zh_VA',\n 'zh_VC',\n 'zh_VE',\n 'zh_VG',\n 'zh_VU',\n 'zh_WF',\n 'zh_YE',\n 'zh_ZA',\n 'zh_ZM',\n];\n","import {\n BuyNowCartRequestBody,\n HostedInstrument,\n ShippingOption,\n VaultedInstrument,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\n\n/**\n *\n * PayPal Commerce Funding sources\n *\n */\nexport type FundingType = string[];\nexport type EnableFundingType = FundingType | string;\n\nexport interface PayPalCommerceSDKFunding {\n CARD: string;\n PAYPAL: string;\n CREDIT: string;\n PAYLATER: string;\n OXXO: string;\n SEPA: string;\n VENMO: string;\n}\n\n/**\n *\n * PayPal Commerce SDK\n *\n */\n\nexport interface PayPalCommerceCardFieldsConfig {\n inputEvents: {\n onChange(data: PayPalCommerceCardFieldsState): void;\n onFocus(data: PayPalCommerceCardFieldsState): void;\n onBlur(data: PayPalCommerceCardFieldsState): void;\n onInputSubmitRequest(data: PayPalCommerceCardFieldsState): void;\n };\n createVaultSetupToken?: (data: PayPalCommerceCardFieldsState) => void;\n createOrder?: () => Promise<string>;\n style: PayPalCommerceHostedFieldsRenderOptions['styles'];\n onApprove(data: PayPalCommerceCardFieldsOnApproveData): void;\n onError(): void;\n}\n\nexport interface PayPalCommerceCardFieldsOnApproveData {\n vaultSetupToken?: string;\n orderID: string;\n liabilityShift?: LiabilityShiftEnum;\n}\n\nexport enum LiabilityShiftEnum {\n Possible = 'POSSIBLE',\n No = 'NO',\n Unknown = 'UNKNOWN',\n Yes = 'YES',\n}\n\ninterface PayPalCommerceCardFieldsFieldData {\n isFocused: boolean;\n isEmpty: boolean;\n isValid: boolean;\n isPotentiallyValid: boolean;\n}\n\ntype PayPalCommerceCardFieldsCard = PayPalCommerceHostedFieldsCard;\n\nexport interface PayPalCommerceCardFieldsState {\n cards: PayPalCommerceCardFieldsCard[];\n emittedBy: string;\n isFormValid: boolean;\n errors: string[];\n fields: {\n cardCvvField: PayPalCommerceCardFieldsFieldData;\n cardNumberField: PayPalCommerceCardFieldsFieldData;\n cardNameField?: PayPalCommerceCardFieldsFieldData;\n cardExpiryField: PayPalCommerceCardFieldsFieldData;\n };\n}\n\nexport interface PayPalCommerceFields {\n render(container: HTMLElement | string): Promise<void>;\n clear(): void;\n removeClass(className: string): Promise<void>;\n close(): Promise<void>;\n}\n\ninterface PayPalCommerceFieldsInitializationData {\n placeholder?: string;\n}\n\nexport interface PayPalCommerceCardFields {\n isEligible(): boolean;\n CVVField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n ExpiryField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n NameField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n NumberField(config?: PayPalCommerceFieldsInitializationData): PayPalCommerceFields;\n submit(config?: PayPalCommerceCardFieldsSubmitConfig): Promise<void>;\n getState(): Promise<PayPalCommerceCardFieldsState>;\n}\n\nexport interface PayPalCommerceCardFieldsSubmitConfig {\n billingAddress: {\n company?: string;\n addressLine1: string;\n addressLine2?: string;\n adminArea1: string; // State\n adminArea2: string; // City\n postalCode: string;\n countryCode?: string;\n };\n}\n\nexport interface PayPalSDK {\n CardFields: (data: PayPalCommerceCardFieldsConfig) => Promise<PayPalCommerceCardFields>;\n Googlepay: () => {\n config: () => Promise<GooglePayConfig>;\n confirmOrder: (arg0: {\n orderId: string;\n paymentMethodData: ConfirmOrderData;\n }) => Promise<{ status: string }>;\n initiatePayerAction: () => void;\n };\n FUNDING: PayPalCommerceSDKFunding;\n HostedFields: {\n isEligible(): boolean;\n render(data: PayPalCommerceHostedFieldsRenderOptions): Promise<PayPalCommerceHostedFields>;\n };\n Legal: PayPalLegal & LegalFunding;\n Buttons(options: PayPalCommerceButtonsOptions): PayPalCommerceButtons;\n PaymentFields(options: PayPalCommercePaymentFieldsOptions): PayPalCommercePaymentFields;\n Messages(options: PayPalCommerceMessagesOptions): PayPalCommerceMessages;\n}\n\nexport interface ConfirmOrderData {\n tokenizationData: {\n type: string;\n token: string;\n };\n info: {\n cardNetwork: string;\n cardDetails: string;\n };\n type: string;\n}\n\nexport interface GooglePayConfig {\n allowedPaymentMethods: AllowedPaymentMethods[];\n apiVersion: number;\n apiVersionMinor: number;\n countryCode: string;\n isEligible: boolean;\n merchantInfo: {\n merchantId: string;\n merchantOrigin: string;\n };\n}\n\nexport interface AllowedPaymentMethods {\n type: string;\n parameters: {\n allowedAuthMethods: string[];\n allowedCardNetworks: string[];\n billingAddressRequired: boolean;\n assuranceDetailsRequired: boolean;\n billingAddressParameters: {\n format: string;\n };\n };\n tokenizationSpecification: {\n type: string;\n parameters: {\n gateway: string;\n gatewayMerchantId: string;\n };\n };\n}\n\nexport type PayPalLegal = (params: { fundingSource: string }) => {\n render(container: string): void;\n};\n\nexport interface LegalFunding {\n FUNDING: {\n PAY_UPON_INVOICE: string;\n };\n}\n\nexport interface BirthDate {\n getFullYear(): number;\n getDate(): number;\n getMonth(): number;\n}\n\nexport interface PayPalCommerceScriptParams {\n options: {\n 'client-id'?: string;\n 'merchant-id'?: string;\n 'buyer-country'?: string;\n 'disable-funding'?: FundingType;\n 'enable-funding'?: EnableFundingType;\n currency?: string;\n commit?: boolean;\n intent?: PayPalCommerceIntent;\n components?: ComponentsScriptType;\n locale?: string;\n };\n attributes: {\n 'data-client-token'?: string;\n 'data-client-metadata-id'?: string;\n 'data-partner-attribution-id'?: string;\n 'data-user-id-token'?: string;\n };\n}\n\nexport enum PayPalCommerceIntent {\n AUTHORIZE = 'authorize',\n CAPTURE = 'capture',\n}\n\nexport type ComponentsScriptType = Array<\n | 'buttons'\n | 'funding-eligibility'\n | 'hosted-fields'\n | 'messages'\n | 'payment-fields'\n | 'legal'\n | 'googlepay'\n | 'connect'\n | 'card-fields'\n>;\n\nexport interface PayPalCommerceHostWindow extends Window {\n paypal?: PayPalSDK;\n}\n\n/**\n *\n * PayPal Commerce Initialization Data\n *\n */\nexport interface PayPalCommerceInitializationData {\n attributionId?: string;\n availableAlternativePaymentMethods: FundingType;\n buttonStyle?: PayPalButtonStyleOptions;\n buyerCountry?: string;\n clientId: string;\n clientToken?: string;\n enabledAlternativePaymentMethods: FundingType;\n isDeveloperModeApplicable?: boolean;\n intent?: PayPalCommerceIntent;\n isAcceleratedCheckoutEnabled?: boolean;\n isHostedCheckoutEnabled?: boolean;\n isPayPalCreditAvailable?: boolean;\n isVenmoEnabled?: boolean;\n isGooglePayEnabled?: boolean;\n merchantId?: string;\n orderId?: string;\n shouldRenderFields?: boolean;\n shouldRunAcceleratedCheckout?: boolean;\n paymentButtonStyles?: Record<string, PayPalButtonStyleOptions>;\n paypalBNPLConfiguration?: PayPalBNPLConfigurationItem[];\n isServerSideShippingCallbacksEnabled?: boolean;\n}\n\nexport interface PayPalBNPLConfigurationItem {\n id: string;\n name: string;\n status: boolean;\n styles: Record<string, string>;\n}\n\n/**\n *\n * PayPal Commerce BuyNow\n *\n */\nexport interface PayPalBuyNowInitializeOptions {\n getBuyNowCartRequestBody(): BuyNowCartRequestBody;\n}\n\n/**\n *\n * PayPal Commerce Hosted Fields\n *\n */\nexport interface PayPalCommerceHostedFieldsRenderOptions {\n fields?: {\n number?: PayPalCommerceHostedFieldOption;\n cvv?: PayPalCommerceHostedFieldOption;\n expirationDate?: PayPalCommerceHostedFieldOption;\n };\n paymentsSDK?: boolean;\n styles?: {\n input?: { [key: string]: string };\n '.invalid'?: { [key: string]: string };\n '.valid'?: { [key: string]: string };\n ':focus'?: { [key: string]: string };\n };\n createOrder(): Promise<string>;\n}\n\nexport interface PayPalCommerceHostedFieldOption {\n selector: string;\n placeholder?: string;\n}\n\nexport interface PayPalCommerceHostedFields {\n submit(\n options?: PayPalCommerceHostedFieldsSubmitOptions,\n ): Promise<PayPalCommerceHostedFieldsApprove>;\n getState(): PayPalCommerceHostedFieldsState;\n on(eventName: string, callback: (event: PayPalCommerceHostedFieldsState) => void): void;\n}\n\nexport interface PayPalCommerceHostedFieldsSubmitOptions {\n contingencies?: Array<'3D_SECURE'>;\n cardholderName?: string;\n}\n\nexport interface PayPalCommerceHostedFieldsApprove {\n orderId: string;\n liabilityShift?: 'POSSIBLE' | 'NO' | 'UNKNOWN';\n}\n\nexport interface PayPalCommerceHostedFieldsState {\n cards: PayPalCommerceHostedFieldsCard[];\n emittedBy: string;\n fields: {\n number?: PayPalCommerceHostedFieldsFieldData;\n expirationDate?: PayPalCommerceHostedFieldsFieldData;\n expirationMonth?: PayPalCommerceHostedFieldsFieldData;\n expirationYear?: PayPalCommerceHostedFieldsFieldData;\n cvv?: PayPalCommerceHostedFieldsFieldData;\n postalCode?: PayPalCommerceHostedFieldsFieldData;\n };\n}\n\nexport interface PayPalCommerceHostedFieldsCard {\n type: string;\n niceType: string;\n code: {\n name: string;\n size: number;\n };\n}\n\nexport interface PayPalCommerceHostedFieldsFieldData {\n container: HTMLElement;\n isFocused: boolean;\n isEmpty: boolean;\n isPotentiallyValid: boolean;\n isValid: boolean;\n}\n\n/**\n *\n * PayPal Commerce Buttons\n *\n */\nexport interface PayPalCommerceButtons {\n render(id: string): void;\n close(): void;\n isEligible(): boolean;\n hasReturned?(): boolean;\n resume?(): void;\n}\n\nexport interface PayPalCommerceButtonsOptions {\n experience?: string;\n style?: PayPalButtonStyleOptions;\n fundingSource: string;\n createOrder(): Promise<string>;\n onApprove(\n data: ApproveCallbackPayload,\n actions: ApproveCallbackActions,\n ): Promise<boolean | void> | void;\n onInit?(data: InitCallbackPayload, actions: InitCallbackActions): Promise<void>;\n onComplete?(data: CompleteCallbackDataPayload): Promise<void>;\n onClick?(data: ClickCallbackPayload, actions: ClickCallbackActions): Promise<void> | void;\n onError?(error: Error): void;\n onCancel?(): void;\n onShippingAddressChange?(data: ShippingAddressChangeCallbackPayload): Promise<void>;\n onShippingOptionsChange?(data: ShippingOptionChangeCallbackPayload): Promise<void>;\n}\n\nexport interface ShippingOptionChangeCallbackPayload {\n orderId: string;\n selectedShippingOption: PayPalSelectedShippingOption;\n}\n\nexport interface ShippingAddressChangeCallbackPayload {\n orderId: string;\n shippingAddress: PayPalAddress;\n}\n\nexport interface ClickCallbackPayload {\n fundingSource: string;\n}\n\nexport interface ClickCallbackActions {\n reject(): void;\n resolve(): void;\n}\n\nexport interface InitCallbackPayload {\n correlationID: string;\n}\n\nexport interface InitCallbackActions {\n disable(): void;\n enable(): void;\n}\n\nexport interface PayPalAddress {\n city: string;\n countryCode: string;\n postalCode: string;\n state: string;\n}\n\nexport interface PaypalAddressCallbackData {\n city: string;\n country_code: string;\n postal_code: string;\n state: string;\n}\n\nexport interface PayPalSelectedShippingOption {\n amount: {\n currency_code: string;\n value: string;\n };\n id: string;\n label: string;\n selected: boolean;\n type: string;\n}\n\nexport interface ApproveCallbackPayload {\n orderID?: string;\n}\n\nexport interface ApproveCallbackActions {\n order: {\n get: () => Promise<PayPalOrderDetails>;\n };\n}\n\nexport interface PayPalOrderDetails {\n payer: {\n name: {\n given_name: string;\n surname: string;\n };\n email_address: string;\n address: PayPalOrderAddress;\n phone?: {\n phone_number: {\n national_number: string;\n };\n };\n };\n purchase_units: Array<{\n shipping: {\n address: PayPalOrderAddress;\n name: {\n full_name: string;\n };\n };\n }>;\n}\n\nexport interface PayPalOrderAddress {\n address_line_1: string;\n address_line_2: string;\n admin_area_2: string;\n admin_area_1?: string;\n postal_code: string;\n country_code: string;\n}\n\nexport interface CompleteCallbackDataPayload {\n intent: string;\n orderID: string;\n}\n\nexport enum StyleButtonLabel {\n paypal = 'paypal',\n checkout = 'checkout',\n buynow = 'buynow',\n pay = 'pay',\n installment = 'installment',\n}\n\nexport enum StyleButtonColor {\n gold = 'gold',\n blue = 'blue',\n silver = 'silver',\n black = 'black',\n white = 'white',\n}\n\nexport enum StyleButtonShape {\n pill = 'pill',\n rect = 'rect',\n}\n\nexport interface PayPalButtonStyleOptions {\n color?: StyleButtonColor;\n shape?: StyleButtonShape;\n height?: number;\n label?: StyleButtonLabel;\n}\n\n/**\n *\n * PayPal Commerce Payment fields\n *\n */\nexport interface PayPalCommercePaymentFields {\n render(id: string): void;\n}\n\nexport interface PayPalCommercePaymentFieldsOptions {\n style?: PayPalCommerceFieldsStyleOptions;\n fundingSource: string;\n fields: {\n name?: {\n value?: string;\n };\n email?: {\n value?: string;\n };\n };\n}\n\nexport interface PayPalCommerceFieldsStyleOptions {\n variables?: {\n fontFamily?: string;\n fontSizeBase?: string;\n fontSizeSm?: string;\n fontSizeM?: string;\n fontSizeLg?: string;\n textColor?: string;\n colorTextPlaceholder?: string;\n colorBackground?: string;\n colorInfo?: string;\n colorDanger?: string;\n borderRadius?: string;\n borderColor?: string;\n borderWidth?: string;\n borderFocusColor?: string;\n spacingUnit?: string;\n };\n rules?: {\n [key: string]: any;\n };\n}\n\n/**\n *\n * PayPalCommerce Messages\n */\n// TODO: This interface can be removed once the PayPaySDK interface is removed\nexport interface PayPalCommerceMessages {\n render(id: string): void;\n}\n\n// TODO: This interface can be removed once the PayPaySDK interface is removed\nexport interface PayPalCommerceMessagesOptions {\n amount: number;\n placement: string;\n style?: PayPalCommerceMessagesStyleOptions;\n fundingSource?: string;\n}\n\n// TODO: This interface can be removed once the PayPaySDK interface is removed\nexport interface PayPalCommerceMessagesStyleOptions {\n layout?: string;\n}\n\n/**\n *\n * Other\n *\n */\nexport enum NonInstantAlternativePaymentMethods {\n OXXO = 'oxxo',\n IDEAL = 'ideal',\n}\n\nexport interface PayPalOrderData {\n orderId: string;\n setupToken?: string;\n approveUrl: string;\n fastlaneToken?: string;\n}\n\nexport interface PayPalUpdateOrderRequestBody {\n availableShippingOptions?: ShippingOption[];\n cartId: string;\n selectedShippingOption?: ShippingOption | null;\n}\n\nexport interface PayPalUpdateOrderResponse {\n statusCode: number;\n}\n\nexport interface PayPalCreateOrderRequestBody extends HostedInstrument, VaultedInstrument {\n cartId: string;\n metadataId?: string;\n setupToken?: boolean;\n fastlaneToken?: string;\n}\n\nexport enum PayPalOrderStatus {\n Approved = 'APPROVED',\n Created = 'CREATED',\n PayerActionRequired = 'PAYER_ACTION_REQUIRED',\n PollingStop = 'POLLING_STOP',\n PollingError = 'POLLING_ERROR',\n}\n\nexport interface PayPalOrderStatusData {\n status: PayPalOrderStatus;\n}\n\nexport interface PayPalCreateOrderCardFieldsResponse {\n orderId: string;\n setupToken?: string;\n}\n","import { ScriptLoader } from '@bigcommerce/script-loader';\n\nimport {\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n PaymentMethodClientUnavailableError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { transformLocaleToPayPalFormat } from '@bigcommerce/checkout-sdk/paypal-utils';\n\nimport {\n ComponentsScriptType,\n FundingType,\n PayPalCommerceHostWindow,\n PayPalCommerceInitializationData,\n PayPalCommerceScriptParams,\n PayPalSDK,\n} from './paypal-commerce-types';\n\nexport default class PayPalCommerceScriptLoader {\n private window: PayPalCommerceHostWindow;\n\n constructor(private scriptLoader: ScriptLoader) {\n this.window = window;\n }\n\n async getPayPalSDK(\n paymentMethod: PaymentMethod<PayPalCommerceInitializationData>,\n currencyCode: string,\n storeLanguage: string | undefined,\n initializesOnCheckoutPage?: boolean,\n forceLoad?: boolean,\n ): Promise<PayPalSDK> {\n const paypalSdkScriptConfig = this.getPayPalSdkScriptConfigOrThrow(\n paymentMethod,\n currencyCode,\n storeLanguage,\n initializesOnCheckoutPage,\n );\n\n return this.loadPayPalSDK(paypalSdkScriptConfig, forceLoad);\n }\n\n private async loadPayPalSDK(\n paypalSdkScriptConfig: PayPalCommerceScriptParams,\n forceLoad = false,\n ): Promise<PayPalSDK> {\n if (!this.window.paypal || forceLoad) {\n const options = this.transformConfig<PayPalCommerceScriptParams['options']>(\n paypalSdkScriptConfig.options,\n );\n const attributes = this.transformConfig<PayPalCommerceScriptParams['attributes']>(\n paypalSdkScriptConfig.attributes,\n );\n\n const paypalSdkUrl = 'https://www.paypal.com/sdk/js';\n const scriptQuery = new URLSearchParams(options).toString();\n const scriptSrc = `${paypalSdkUrl}?${scriptQuery}`;\n\n await this.scriptLoader.loadScript(scriptSrc, { async: true, attributes });\n }\n\n if (!this.window.paypal) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.window.paypal;\n }\n\n private getPayPalSdkScriptConfigOrThrow(\n paymentMethod: PaymentMethod<PayPalCommerceInitializationData>,\n currencyCode: string,\n storeLanguage: string | undefined,\n initializesOnCheckoutPage = true,\n ): PayPalCommerceScriptParams {\n const { id, clientToken, initializationData } = paymentMethod;\n\n if (!initializationData?.clientId) {\n throw new MissingDataError(MissingDataErrorType.MissingPaymentMethod);\n }\n\n const {\n intent,\n clientId,\n merchantId,\n buyerCountry,\n attributionId,\n isVenmoEnabled,\n isHostedCheckoutEnabled,\n isPayPalCreditAvailable,\n isDeveloperModeApplicable,\n availableAlternativePaymentMethods = [],\n enabledAlternativePaymentMethods = [],\n isGooglePayEnabled,\n } = initializationData;\n\n const commit = isHostedCheckoutEnabled || initializesOnCheckoutPage;\n\n const shouldEnableCard = id === 'paypalcommercecreditcards';\n const enableCardFunding = shouldEnableCard ? ['card'] : [];\n const disableCardFunding = !shouldEnableCard ? ['card'] : [];\n\n const enableCreditFunding = isPayPalCreditAvailable ? ['credit', 'paylater'] : [];\n const disableCreditFunding = !isPayPalCreditAvailable ? ['credit', 'paylater'] : [];\n\n const enableVenmoFunding = isVenmoEnabled ? ['venmo'] : [];\n const disableVenmoFunding = !isVenmoEnabled ? ['venmo'] : [];\n const disableAPMsFunding = availableAlternativePaymentMethods.filter(\n (apm: string) => !enabledAlternativePaymentMethods.includes(apm),\n );\n const googlePayComponent: ComponentsScriptType = isGooglePayEnabled ? ['googlepay'] : [];\n const cardFieldsComponent: ComponentsScriptType = initializesOnCheckoutPage\n ? ['card-fields']\n : [];\n const disableFunding: FundingType = [\n ...disableCardFunding,\n ...disableCreditFunding,\n ...disableVenmoFunding,\n ...disableAPMsFunding,\n ];\n const enableFunding: FundingType = [\n ...enableCardFunding,\n ...enableCreditFunding,\n ...enableVenmoFunding,\n ...enabledAlternativePaymentMethods,\n ];\n\n const locale = transformLocaleToPayPalFormat(storeLanguage);\n\n return {\n options: {\n 'client-id': clientId,\n 'merchant-id': merchantId,\n 'enable-funding': enableFunding.length > 0 ? enableFunding : undefined,\n 'disable-funding': disableFunding.length > 0 ? disableFunding : undefined,\n commit,\n components: [\n 'buttons',\n 'hosted-fields',\n 'payment-fields',\n 'legal',\n ...googlePayComponent,\n ...cardFieldsComponent,\n ],\n currency: currencyCode,\n intent,\n ...(isDeveloperModeApplicable && { 'buyer-country': buyerCountry }),\n ...(locale && { locale }),\n },\n attributes: {\n 'data-partner-attribution-id': attributionId,\n 'data-client-token': clientToken,\n },\n };\n }\n\n private transformConfig<T extends Record<string, unknown>>(config: T): Record<string, string> {\n let transformedConfig = {};\n\n const keys = Object.keys(config) as Array<keyof T>;\n\n keys.forEach((key) => {\n const value = config[key];\n\n if (\n value === undefined ||\n value === null ||\n value === '' ||\n (Array.isArray(value) && value.length === 0)\n ) {\n return;\n }\n\n transformedConfig = {\n ...transformedConfig,\n [key]: Array.isArray(value) ? value.join(',') : value,\n };\n });\n\n return transformedConfig;\n }\n}\n","import { PAYPAL_SDK_SUPPORTED_LOCALES } from '../paypal-commerce-constants';\n\n/**\n * Transforms store language to PayPal SDK locale format.\n * PayPal SDK expects locale in format 'en_US' (underscore separator).\n * Returns undefined if the locale is not supported by PayPal SDK.\n * Examples: 'fr-CA' -> 'fr_CA', 'fr' -> 'fr_FR'\n */\nexport default function transformLocaleToPayPalFormat(\n storeLanguage: string | undefined,\n): string | undefined {\n if (!storeLanguage) {\n return undefined;\n }\n\n let locale: string;\n\n if (storeLanguage.includes('-')) {\n const [language, region] = storeLanguage.split('-');\n\n locale = `${language}_${region.toUpperCase()}`;\n } else {\n locale = `${storeLanguage}_${storeLanguage.toUpperCase()}`;\n }\n\n return PAYPAL_SDK_SUPPORTED_LOCALES.includes(locale) ? locale : undefined;\n}\n","import { Response } from '@bigcommerce/request-sender';\nimport { isNil, omitBy } from 'lodash';\n\nimport {\n MissingDataError,\n MissingDataErrorType,\n PaymentMethod,\n PaymentMethodClientUnavailableError,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n AddressRequestBody,\n BillingAddressResponse,\n GraphQLRequestOptions,\n WalletButtonIntegrationService,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport PayPalCommerceScriptLoader from './paypal-commerce-script-loader';\nimport {\n PayPalButtonStyleOptions,\n PayPalCommerceInitializationData,\n PayPalSDK,\n StyleButtonColor,\n StyleButtonLabel,\n StyleButtonShape,\n} from './paypal-commerce-types';\n\nexport default class PaypalCommerceWalletService {\n private paypalSdk?: PayPalSDK;\n\n constructor(\n private walletButtonIntegrationService: WalletButtonIntegrationService,\n private paypalCommerceScriptLoader: PayPalCommerceScriptLoader,\n ) {}\n\n /**\n *\n * PayPalSDK methods\n *\n */\n async loadPayPalSdk(\n paymentMethod: PaymentMethod<PayPalCommerceInitializationData>,\n providedCurrencyCode: string,\n initializesOnCheckoutPage?: boolean,\n forceLoad?: boolean,\n ): Promise<PayPalSDK | undefined> {\n this.paypalSdk = await this.paypalCommerceScriptLoader.getPayPalSDK(\n paymentMethod,\n providedCurrencyCode,\n undefined,\n initializesOnCheckoutPage,\n forceLoad,\n );\n\n return this.paypalSdk;\n }\n\n getPayPalSdkOrThrow(): PayPalSDK {\n if (!this.paypalSdk) {\n throw new PaymentMethodClientUnavailableError();\n }\n\n return this.paypalSdk;\n }\n\n /**\n *\n * Payment submitting and tokenizing methods\n *\n */\n async proxyTokenizationPayment(cartId: string, orderId?: string): Promise<void> {\n if (!orderId) {\n throw new MissingDataError(MissingDataErrorType.MissingOrderId);\n }\n\n const inputData = {\n paymentWalletData: {\n providerId: 'paypalcommerce',\n providerOrderId: orderId,\n },\n cartEntityId: cartId,\n queryParams: [\n { key: 'payment_type', value: 'paypal' },\n { key: 'action', value: 'set_external_checkout' },\n { key: 'provider', value: 'paypalcommerce' },\n ],\n };\n\n const response = await this.walletButtonIntegrationService.getRedirectToCheckoutUrl(\n inputData,\n );\n\n if (!response.body.redirectUrls?.externalCheckoutUrl) {\n throw new Error('Failed to redirection to checkout page');\n }\n\n window.location.assign(response.body.redirectUrls.externalCheckoutUrl);\n }\n\n async createPaymentOrderIntent(\n providerId: string,\n cartId: string,\n options?: GraphQLRequestOptions,\n ): Promise<string> {\n const inputData = {\n cartEntityId: cartId,\n paymentWalletEntityId: providerId,\n };\n const response = await this.walletButtonIntegrationService.createPaymentOrderIntent(\n inputData,\n options,\n );\n\n return response.body.orderId;\n }\n\n async addBillingAddress(\n cartId: string,\n address: AddressRequestBody,\n options?: GraphQLRequestOptions,\n ): Promise<Response<BillingAddressResponse>> {\n return this.walletButtonIntegrationService.addBillingAddress(cartId, address, options);\n }\n\n /**\n *\n * Buttons style methods\n *\n */\n getValidButtonStyle(style?: PayPalButtonStyleOptions): PayPalButtonStyleOptions {\n const { color, height, label, shape } = style || {};\n\n const validStyles = {\n color: color && StyleButtonColor[color] ? color : undefined,\n height: this.getValidHeight(height),\n label: label && StyleButtonLabel[label] ? label : undefined,\n shape: shape && StyleButtonShape[shape] ? shape : undefined,\n };\n\n return omitBy(validStyles, isNil);\n }\n\n getValidHeight(height?: number): number {\n const defaultHeight = 40;\n const minHeight = 25;\n const maxHeight = 55;\n\n if (!height || typeof height !== 'number') {\n return defaultHeight;\n }\n\n if (height > maxHeight) {\n return maxHeight;\n }\n\n if (height < minHeight) {\n return minHeight;\n }\n\n return height;\n }\n\n /**\n *\n * Utils methods\n *\n */\n removeElement(elementId?: string): void {\n const element = elementId && document.getElementById(elementId);\n\n if (element) {\n // For now this is a temporary solution, further removeElement method will be removed\n element.style.display = 'none';\n }\n }\n}\n","import {\n CheckoutButtonInitializeOptions,\n CheckoutButtonStrategy,\n InvalidArgumentError,\n PaymentMethod,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { PayPalCommerceInitializationData } from '@bigcommerce/checkout-sdk/paypal-commerce-utils';\nimport { AddressRequestBody } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport {\n ApproveCallbackActions,\n ApproveCallbackPayload,\n PayPalCommerceButtonsOptions,\n PayPalOrderDetails,\n} from '../paypal-commerce-types';\nimport PaypalCommerceWalletService from '../paypal-commerce-wallet-service';\n\nimport { WithPayPalCommerceWalletInitializeOptions } from './paypal-commerce-wallet-initialize-options';\n\nexport default class PaypalCommerceWalletStrategy implements CheckoutButtonStrategy {\n constructor(private paypalCommerceHeadlessWalletButtonService: PaypalCommerceWalletService) {}\n\n async initialize(\n options: CheckoutButtonInitializeOptions & WithPayPalCommerceWalletInitializeOptions,\n ): Promise<void> {\n const { paypalcommercepaypal, containerId, methodId } = options;\n\n if (!methodId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.methodId\" argument is not provided.',\n );\n }\n\n if (!containerId) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.containerId\" argument is not provided.`,\n );\n }\n\n if (!paypalcommercepaypal) {\n throw new InvalidArgumentError(\n `Unable to initialize payment because \"options.paypalcommercepaypal\" argument is not provided.`,\n );\n }\n\n let parsedInitializationData: PaymentMethod<PayPalCommerceInitializationData>;\n\n try {\n parsedInitializationData = JSON.parse(atob(paypalcommercepaypal.initializationData));\n } catch {\n throw new InvalidArgumentError(\"Failed to parse payment method 'initializationData'.\");\n }\n\n await this.paypalCommerceHeadlessWalletButtonService.loadPayPalSdk(\n parsedInitializationData,\n paypalcommercepaypal.currency.code,\n false,\n );\n\n this.renderButton(containerId, 'paypalcommerce.paypal', paypalcommercepaypal.cartId);\n }\n\n deinitialize(): Promise<void> {\n return Promise.resolve();\n }\n\n private renderButton(containerId: string, methodId: string, cartId: string): void {\n const paypalSdk = this.paypalCommerceHeadlessWalletButtonService.getPayPalSdkOrThrow();\n\n const defaultCallbacks = {\n createOrder: () =>\n this.paypalCommerceHeadlessWalletButtonService.createPaymentOrderIntent(\n methodId,\n cartId,\n ),\n onApprove: async (\n { orderID }: ApproveCallbackPayload,\n actions: ApproveCallbackActions,\n ) => {\n const orderDetails = await actions.order.get();\n const billingAddress = this.mapOrderDetailsToBillingAddress(orderDetails);\n\n await this.paypalCommerceHeadlessWalletButtonService.addBillingAddress(\n cartId,\n billingAddress,\n );\n await this.paypalCommerceHeadlessWalletButtonService.proxyTokenizationPayment(\n cartId,\n orderID,\n );\n },\n };\n\n const buttonRenderOptions: PayPalCommerceButtonsOptions = {\n fundingSource: paypalSdk.FUNDING.PAYPAL,\n style: this.paypalCommerceHeadlessWalletButtonService.getValidButtonStyle(),\n ...defaultCallbacks,\n };\n\n const paypalButton = paypalSdk.Buttons(buttonRenderOptions);\n\n if (paypalButton.isEligible()) {\n paypalButton.render(`#${containerId}`);\n } else {\n this.paypalCommerceHeadlessWalletButtonService.removeElement(containerId);\n }\n }\n\n private mapOrderDetailsToBillingAddress(orderDetails: PayPalOrderDetails): AddressRequestBody {\n const { payer } = orderDetails;\n\n return {\n firstName: payer.name.given_name,\n lastName: payer.name.surname,\n company: '',\n address1: payer.address.address_line_1,\n address2: payer.address.address_line_2,\n city: payer.address.admin_area_2,\n email: payer.email_address,\n stateOrProvince: payer.address.admin_area_1 ?? '',\n stateOrProvinceCode: payer.address.admin_area_1 ?? '',\n countryCode: payer.address.country_code,\n postalCode: payer.address.postal_code,\n phone: payer.phone?.phone_number.national_number ?? '',\n shouldSaveAddress: false,\n };\n }\n}\n","import { getScriptLoader } from '@bigcommerce/script-loader';\n\nimport { toResolvableModule } from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { WalletPaymentButtonStrategyFactory } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport PayPalCommerceScriptLoader from '../paypal-commerce-script-loader';\nimport PaypalCommerceWalletService from '../paypal-commerce-wallet-service';\n\nimport PaypalCommerceWalletStrategy from './paypal-commerce-wallet-strategy';\n\nconst createPaypalCommerceWalletStrategy: WalletPaymentButtonStrategyFactory<\n PaypalCommerceWalletStrategy\n> = (walletButtonIntegrationService) =>\n new PaypalCommerceWalletStrategy(\n new PaypalCommerceWalletService(\n walletButtonIntegrationService,\n new PayPalCommerceScriptLoader(getScriptLoader()),\n ),\n );\n\nexport default toResolvableModule(createPaypalCommerceWalletStrategy, [\n { id: 'paypalcommercepaypal' },\n]);\n","import {\n CheckoutButtonInitializeOptions,\n CheckoutButtonStrategy,\n InvalidArgumentError,\n PaymentMethod,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { PayPalCommerceInitializationData } from '@bigcommerce/checkout-sdk/paypal-commerce-utils';\nimport { AddressRequestBody } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport {\n ApproveCallbackActions,\n ApproveCallbackPayload,\n PayPalButtonStyleOptions,\n PayPalCommerceButtonsOptions,\n PayPalOrderDetails,\n} from '../paypal-commerce-types';\nimport PaypalCommerceWalletService from '../paypal-commerce-wallet-service';\n\nimport { WithPayPalCommerceCreditWalletInitializeOptions } from './paypal-commerce-credit-wallet-initialize-options';\n\nexport default class PayPalCommerceCreditWalletStrategy implements CheckoutButtonStrategy {\n constructor(private paypalCommerceHeadlessWalletButtonService: PaypalCommerceWalletService) {}\n\n async initialize(\n options: CheckoutButtonInitializeOptions & WithPayPalCommerceCreditWalletInitializeOptions,\n ): Promise<void> {\n const { paypalcommercepaypalcredit, containerId, methodId } = options;\n\n if (!methodId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.methodId\" argument is not provided.',\n );\n }\n\n if (!containerId) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.containerId\" argument is not provided.',\n );\n }\n\n if (!paypalcommercepaypalcredit) {\n throw new InvalidArgumentError(\n 'Unable to initialize payment because \"options.paypalcommercepaypalcredit\" argument is not provided.',\n );\n }\n\n let parsedInitializationData: PaymentMethod<PayPalCommerceInitializationData>;\n\n try {\n parsedInitializationData = JSON.parse(\n atob(paypalcommercepaypalcredit.initializationData),\n );\n } catch {\n throw new InvalidArgumentError(\"Failed to parse payment method 'initializationData'.\");\n }\n\n await this.paypalCommerceHeadlessWalletButtonService.loadPayPalSdk(\n parsedInitializationData,\n paypalcommercepaypalcredit.currency.code,\n false,\n );\n\n const buttonStyle =\n parsedInitializationData.initializationData?.paymentButtonStyles?.cartButtonStyles;\n\n this.renderButton(\n containerId,\n 'paypalcommerce.paypalcredit',\n paypalcommercepaypalcredit.cartId,\n buttonStyle,\n );\n }\n\n deinitialize(): Promise<void> {\n return Promise.resolve();\n }\n\n private renderButton(\n containerId: string,\n methodId: string,\n cartId: string,\n buttonStyle?: PayPalButtonStyleOptions,\n ): void {\n const paypalSdk = this.paypalCommerceHeadlessWalletButtonService.getPayPalSdkOrThrow();\n const fundingSources = [paypalSdk.FUNDING.PAYLATER, paypalSdk.FUNDING.CREDIT];\n\n const defaultCallbacks = {\n createOrder: () =>\n this.paypalCommerceHeadlessWalletButtonService.createPaymentOrderIntent(\n methodId,\n cartId,\n ),\n onApprove: async (\n { orderID }: ApproveCallbackPayload,\n actions: ApproveCallbackActions,\n ) => {\n const orderDetails = await actions.order.get();\n const billingAddress = this.mapOrderDetailsToBillingAddress(orderDetails);\n\n await this.paypalCommerceHeadlessWalletButtonService.addBillingAddress(\n cartId,\n billingAddress,\n );\n\n await this.paypalCommerceHeadlessWalletButtonService.proxyTokenizationPayment(\n cartId,\n orderID,\n );\n },\n };\n\n let hasRenderedSmartButton = false;\n\n fundingSources.forEach((fundingSource) => {\n if (!hasRenderedSmartButton) {\n const buttonRenderOptions: PayPalCommerceButtonsOptions = {\n fundingSource,\n style: this.paypalCommerceHeadlessWalletButtonService.getValidButtonStyle(\n buttonStyle,\n ),\n ...defaultCallbacks,\n };\n\n const paypalButton = paypalSdk.Buttons(buttonRenderOptions);\n\n if (paypalButton.isEligible()) {\n paypalButton.render(`#${containerId}`);\n hasRenderedSmartButton = true;\n }\n }\n });\n\n if (!hasRenderedSmartButton) {\n this.paypalCommerceHeadlessWalletButtonService.removeElement(containerId);\n }\n }\n\n private mapOrderDetailsToBillingAddress(orderDetails: PayPalOrderDetails): AddressRequestBody {\n const { payer } = orderDetails;\n\n return {\n firstName: payer.name.given_name,\n lastName: payer.name.surname,\n company: '',\n address1: payer.address.address_line_1,\n address2: payer.address.address_line_2,\n city: payer.address.admin_area_2,\n email: payer.email_address,\n stateOrProvince: payer.address.admin_area_1 ?? '',\n stateOrProvinceCode: payer.address.admin_area_1 ?? '',\n countryCode: payer.address.country_code,\n postalCode: payer.address.postal_code,\n phone: payer.phone?.phone_number.national_number ?? '',\n shouldSaveAddress: false,\n };\n }\n}\n","import { getScriptLoader } from '@bigcommerce/script-loader';\n\nimport { toResolvableModule } from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport { WalletPaymentButtonStrategyFactory } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport PayPalCommerceScriptLoader from '../paypal-commerce-script-loader';\nimport PaypalCommerceWalletService from '../paypal-commerce-wallet-service';\n\nimport PayPalCommerceCreditWalletStrategy from './paypal-commerce-credit-wallet-strategy';\n\nconst createPayPalCommerceCreditWalletStrategy: WalletPaymentButtonStrategyFactory<\n PayPalCommerceCreditWalletStrategy\n> = (walletButtonIntegrationService) =>\n new PayPalCommerceCreditWalletStrategy(\n new PaypalCommerceWalletService(\n walletButtonIntegrationService,\n new PayPalCommerceScriptLoader(getScriptLoader()),\n ),\n );\n\nexport default toResolvableModule(createPayPalCommerceCreditWalletStrategy, [\n { id: 'paypalcommercepaypalcredit' },\n]);\n","import ResolvableModule from './resolvable-module';\n\nexport default function isResolvableModule<TModule extends object, TIdentifier>(\n module: TModule,\n): module is ResolvableModule<TModule, TIdentifier> {\n return module && 'resolveIds' in module;\n}\n","export default function getEnvironment(): string {\n try {\n return process.env.NODE_ENV || 'development';\n } catch (e) {\n return 'development';\n }\n}\n","import Logger from './logger';\n\ntype keys = 'log' | 'info' | 'warn' | 'error' | 'debug';\n\nexport default class ConsoleLogger implements Logger {\n constructor(private _console?: Console) {}\n\n log(...messages: any[]): void {\n this._logToConsole('log', ...messages);\n }\n\n info(...messages: any[]): void {\n this._logToConsole('info', ...messages);\n }\n\n warn(...messages: any[]): void {\n this._logToConsole('warn', ...messages);\n }\n\n error(...messages: any[]): void {\n this._logToConsole('error', ...messages);\n }\n\n debug(...messages: any[]): void {\n this._logToConsole('debug', ...messages);\n }\n\n private _logToConsole(type: keys, ...messages: any[]): void {\n if (!this._console || !this._console[type]) {\n return;\n }\n\n this._console[type].call(this._console, ...messages);\n }\n}\n","import Logger from './logger';\n\nexport default class NoopLogger implements Logger {\n log(): void {}\n\n info(): void {}\n\n warn(): void {}\n\n error(): void {}\n\n debug(): void {}\n}\n","import { getEnvironment } from '../utility';\n\nimport createLogger from './create-logger';\nimport Logger from './logger';\n\nconst logger = createLogger(getEnvironment() !== 'test');\n\nexport default function getDefaultLogger(): Logger {\n return logger;\n}\n","import ConsoleLogger from './console-logger';\nimport Logger from './logger';\nimport NoopLogger from './noop-logger';\n\nexport default function createLogger(isEnabled = true): Logger {\n if (!isEnabled) {\n return new NoopLogger();\n }\n\n return new ConsoleLogger(console);\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 './standard-error';\n\n/**\n * This error should be thrown when a method is unable to proceed because the\n * caller has not provided all the arguments according to their requirements,\n * i.e.: if an argument is missing or it is not the expected data type.\n */\nexport default class InvalidArgumentError extends StandardError {\n constructor(message?: string) {\n super(message || 'Invalid arguments have been provided.');\n\n this.name = 'InvalidArgumentError';\n this.type = 'invalid_argument';\n }\n}\n","import { InvalidArgumentError } from '../error/errors';\n\nimport Factory from './factory';\n\nexport default class Registry<T, K extends string = string> {\n private _factories: { [key: string]: Factory<T> };\n private _instances: { [key: string]: T };\n private _defaultToken: string;\n private _useFallback: string | boolean;\n private _tokenResolver: (\n token: string,\n registeredTokens: string[],\n exactMatch?: boolean,\n ) => string | undefined;\n\n constructor(options?: RegistryOptions) {\n this._factories = {};\n this._instances = {};\n this._defaultToken = options?.defaultToken ?? 'default';\n this._useFallback = options?.useFallback ?? true;\n this._tokenResolver = options?.tokenResolver ?? ((token) => token);\n }\n\n get(token?: K, cacheToken?: string): T {\n try {\n return this._getInstance(\n token || this._defaultToken,\n cacheToken || token || this._defaultToken,\n );\n } catch (error) {\n if (!this._useFallback) {\n throw error;\n }\n\n return this._getInstance(this._defaultToken, cacheToken || this._defaultToken);\n }\n }\n\n getFactory(token: string, exactMatch?: boolean): Factory<T> | undefined {\n const resolvedToken = this._tokenResolver(token, Object.keys(this._factories), exactMatch);\n const factory = resolvedToken ? this._factories[resolvedToken] : undefined;\n\n return factory;\n }\n\n register(token: K, factory: Factory<T>): void {\n if (this._hasFactory(token)) {\n throw new InvalidArgumentError(`'${token}' is already registered.`);\n }\n\n this._factories[token] = factory;\n }\n\n protected _hasFactory(token: string): boolean {\n return !!this._factories[token];\n }\n\n private _hasInstance(token: string): boolean {\n return !!this._instances[token];\n }\n\n private _getInstance(token: string, cacheToken: string): T {\n if (!this._hasInstance(cacheToken)) {\n const factory = this.getFactory(token);\n\n if (!factory) {\n throw new InvalidArgumentError(`'${token}' is not registered.`);\n }\n\n this._instances[cacheToken] = factory();\n }\n\n return this._instances[cacheToken];\n }\n}\n\nexport interface RegistryOptions {\n defaultToken?: string;\n useFallback?: boolean;\n tokenResolver?(token: string, registeredTokens: string[]): string | undefined;\n}\n","import { getDefaultLogger } from '../log';\nimport { getEnvironment } from '../utility';\n\nimport Factory from './factory';\nimport Registry from './registry';\n\nexport default class ResolveIdRegistry<TType, TToken extends { [key: string]: unknown }> {\n private _registry: Registry<TType>;\n\n constructor(private _useFallback = false) {\n this._registry = new Registry({\n tokenResolver: this._resolveToken.bind(this),\n defaultToken: this._encodeToken({ default: true } as unknown as TToken),\n useFallback: this._useFallback,\n });\n }\n\n get(resolveId: TToken): TType {\n return this._registry.get(this._encodeToken(resolveId));\n }\n\n getFactory(resolveId: TToken, exactMatch?: boolean): Factory<TType> | undefined {\n try {\n return this._registry.getFactory(this._encodeToken(resolveId), exactMatch);\n } catch (error) {\n return undefined;\n }\n }\n\n getUseFallback(): boolean {\n return this._useFallback;\n }\n\n register(resolveId: TToken, factory: Factory<TType>): void {\n this._registry.register(this._encodeToken(resolveId), factory);\n }\n\n private _encodeToken(resolveId: TToken): string {\n return btoa(JSON.stringify(resolveId));\n }\n\n private _decodeToken(token: string): TToken {\n return JSON.parse(atob(token));\n }\n\n private _resolveToken(\n token: string,\n registeredTokens: string[],\n exactMatch?: boolean,\n ): string | undefined {\n const query = this._decodeToken(token);\n\n const results: Array<{\n token: string;\n matches: number;\n default: boolean;\n totalKeys: number;\n }> = [];\n\n registeredTokens.forEach((registeredToken) => {\n const resolverId = this._decodeToken(registeredToken);\n\n const result = {\n token: registeredToken,\n matches: 0,\n default: false,\n totalKeys: Object.keys(resolverId).length,\n };\n\n for (const [key, value] of Object.entries(resolverId)) {\n if (key in query && query[key] !== value) {\n result.matches = 0;\n break;\n }\n\n if (key in query && query[key] === value) {\n result.matches++;\n }\n\n if (key === 'default' && value === true) {\n result.default = true;\n }\n }\n\n results.push(result);\n });\n\n const matchedResults = results\n .sort((a, b) => b.matches - a.matches)\n .filter((result) => result.matches > 0);\n\n if (matchedResults.length > 1 && matchedResults[0].matches === matchedResults[1].matches) {\n if (getEnvironment() === 'development') {\n getDefaultLogger().warn(\n 'The provided query matches at least two strategies with the same specificity. This warning can be resolved by making their resolve ID more specific.',\n );\n }\n }\n\n const queryKeyCount = Object.keys(query).length;\n\n if (exactMatch) {\n const exactResult = matchedResults.find(\n (result) => result.matches === queryKeyCount && result.matches === result.totalKeys,\n );\n\n if (!exactResult) {\n throw new Error(\n `Unable to resolve to a registered token with the provided token for ${JSON.stringify(\n query,\n )} with exact match.`,\n );\n }\n\n return exactResult.token;\n }\n\n const matched = matchedResults[0];\n\n if (matched && matched.token) {\n return matched.token;\n }\n\n if (this._useFallback) {\n const defaultToken = results.find((result) => result.default)?.token;\n\n if (defaultToken) {\n return defaultToken;\n }\n }\n\n throw new Error(\n `Unable to resolve to a registered token with the provided token for ${JSON.stringify(\n query,\n )}.`,\n );\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 // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const boundMethod = method.bind(this) as T;\n\n Object.defineProperty(this, key, {\n ...descriptor,\n value: boundMethod,\n });\n\n return boundMethod;\n },\n set(value) {\n method = value;\n },\n };\n}\n\nexport type Constructor<T> = new (...args: any[]) => T;\nexport type Method = (...args: any[]) => any;\n","import { uniqueId } from 'lodash';\n\nimport { InvalidArgumentError } from '../error/errors';\n\nconst getUniqId = (idPrefix?: string): string => {\n const id = uniqueId(idPrefix);\n\n return document.getElementById(id) ? getUniqId(idPrefix) : id;\n};\n\nexport default function setUniqueElementId(selector: string, idPrefix: string): string[] {\n const containers = document.querySelectorAll(selector);\n\n if (!containers.length) {\n throw new InvalidArgumentError(\n `Unable to find any element with the specified selector: ${selector}`,\n );\n }\n\n return Array.prototype.slice.call(containers).map((container: HTMLElement) => {\n if (!container.id) {\n container.id = getUniqId(idPrefix);\n }\n\n return container.id;\n });\n}\n","import { bindDecorator as bind } from '@bigcommerce/checkout-sdk/utility';\n\nimport { isElementId, setUniqueElementId } from '../common/dom';\n\nimport { BaseWalletButtonInitializeOptions, WalletButtonOptions } from './wallet-button-options';\nimport WalletButtonRegistryV2 from './wallet-button-strategy-registry-v2';\n\n@bind\nexport default class WalletButtonInitializer {\n constructor(private _registryV2: WalletButtonRegistryV2) {}\n\n initializeWalletButton(options: BaseWalletButtonInitializeOptions): Promise<void[]> {\n const containerIds = this.getContainerIds(options);\n\n return Promise.all(\n containerIds.map(async (containerId) => {\n const strategy = this._registryV2.get({ id: options.methodId });\n\n return strategy.initialize({ ...options, containerId });\n }),\n );\n }\n\n deinitializeWalletButton(options: WalletButtonOptions): Promise<void> {\n return this._registryV2.get({ id: options.methodId }).deinitialize();\n }\n\n private getContainerIds(options: BaseWalletButtonInitializeOptions) {\n return isElementId(options.containerId)\n ? [options.containerId]\n : setUniqueElementId(options.containerId, `${options.methodId}-container`);\n }\n}\n","/* eslint-disable no-useless-escape */\nexport default function isElementId(id: string): boolean {\n return /^\\w[\\w\\-\\:\\.]*$/.test(id);\n}\n","import { createWalletButtonIntegrationService } from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport * as walletButtonStrategyFactories from '../generated/wallet-button-strategies';\n\nimport createWalletButtonStrategyRegistry from './create-wallet-button-strategy-registry';\nimport WalletButtonInitializer from './wallet-button-initializer';\nimport { WalletButtonInitializerOptions } from './wallet-buttons';\n\nexport default function createWalletButtonInitializer(\n options: WalletButtonInitializerOptions,\n): WalletButtonInitializer {\n const { graphQLEndpoint } = options;\n\n const walletButtonIntegrationService = createWalletButtonIntegrationService(graphQLEndpoint);\n\n const registryV2 = createWalletButtonStrategyRegistry(\n walletButtonIntegrationService,\n walletButtonStrategyFactories,\n );\n\n return new WalletButtonInitializer(registryV2);\n}\n","import {\n CheckoutButtonStrategy,\n CheckoutButtonStrategyResolveId,\n isResolvableModule,\n} from '@bigcommerce/checkout-sdk/payment-integration-api';\nimport {\n WalletButtonIntegrationService,\n WalletPaymentButtonStrategyFactory,\n} from '@bigcommerce/checkout-sdk/wallet-button-integration';\n\nimport { ResolveIdRegistry } from '../common/registry';\n\nexport interface WalletButtonStrategyFactories {\n [key: string]: WalletPaymentButtonStrategyFactory<CheckoutButtonStrategy>;\n}\n\nexport default function createWalletButtonStrategyRegistry(\n walletButtonIntegrationService: WalletButtonIntegrationService,\n walletButtonStrategyFactories: WalletButtonStrategyFactories,\n): ResolveIdRegistry<CheckoutButtonStrategy, CheckoutButtonStrategyResolveId> {\n const registry = new ResolveIdRegistry<\n CheckoutButtonStrategy,\n CheckoutButtonStrategyResolveId\n >();\n\n for (const [, createWalletButtonStrategy] of Object.entries(walletButtonStrategyFactories)) {\n if (\n !isResolvableModule<\n WalletPaymentButtonStrategyFactory<CheckoutButtonStrategy>,\n CheckoutButtonStrategyResolveId\n >(createWalletButtonStrategy)\n ) {\n continue;\n }\n\n for (const resolverId of createWalletButtonStrategy.resolveIds) {\n registry.register(resolverId, () =>\n createWalletButtonStrategy(walletButtonIntegrationService),\n );\n }\n }\n\n return registry;\n}\n","import { createRequestSender } from '@bigcommerce/request-sender';\n\nimport BillingAddressRequestSender from './billing/billing-address-request-sender';\nimport { CheckoutRequestSender } from './checkout/checkout-request-sender';\nimport { PaymentRequestSender } from './payment/payment-request-sender';\nimport WalletButtonIntegrationService from './wallet-button-integration-service';\n\nconst createWalletButtonIntegrationService = (\n graphQLEndpoint: string,\n): WalletButtonIntegrationService => {\n const requestSender = createRequestSender();\n\n return new WalletButtonIntegrationService(\n graphQLEndpoint,\n new BillingAddressRequestSender(requestSender),\n new PaymentRequestSender(requestSender),\n new CheckoutRequestSender(requestSender),\n );\n};\n\nexport default createWalletButtonIntegrationService;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","BillingAddressRequestSender","constructor","requestSender","this","updateBillingAddress","graphQLEndpoint","checkoutId","address","options","id","billingAddressFields","__rest","requestOptions","headers","assign","body","query","variables","input","checkoutEntityId","addressEntityId","data","response","post","window","location","origin","billingAddress","checkout","updateCheckoutBillingAddress","addBillingAddress","addCheckoutBillingAddress","StandardError","Error","message","super","name","type","setPrototypeOf","__proto__","captureStackTrace","stack","CheckoutRedirectError","CheckoutRequestSender","getRedirectToCheckoutUrl","inputData","cart","createCartRedirectUrls","errorMessage","_a","errors","length","redirectUrls","error","PaymentMethodCancelledError","PaymentOrderCreationError","PaymentRequestSender","createPaymentOrderIntent","payment","paymentWallet","createPaymentWalletIntent","paymentWalletIntentData","WalletButtonIntegrationService","billingAddressRequestSender","paymentRequestSender","checkoutRequestSender","UnsupportedBrowserError","InvalidArgumentError","PaymentArgumentInvalidError","invalidFields","join","PaymentInvalidFormError","details","NotInitializedErrorType","NotInitializedError","subtype","CustomerNotInitialized","PaymentNotInitialized","ShippingNotInitialized","SpamProtectionNotInitialized","getErrorMessage","paypalSdkPromise","PAYPAL_COMPONENTS","PaypalButtonStyleLayoutOption","PaypalButtonStyleSizeOption","PaypalButtonStyleColorOption","PaypalButtonStyleLabelOption","PaypalButtonStyleShapeOption","MessagingPlacements","BraintreeEnv","BraintreeModuleName","BraintreeFormFieldType","isBraintreeError","Boolean","BraintreeIntegrationService","braintreeScriptLoader","braintreeHostWindow","overlay","dataCollectors","initialize","clientToken","threeDSecureOptions","getBraintreeFastlane","cardId","isTestModeEnabled","styles","localStorage","setItem","braintreeFastlane","getClientTokenOrThrow","client","getClient","deviceData","getSessionId","braintreeFastlaneCreator","loadFastlane","defaultStyles","root","backgroundColorPrimary","create","authorization","clientCreator","loadClient","getPaypal","braintreePaypal","Promise","all","loadPaypal","then","paypal","shouldSaveInstrument","config","braintree_integration_service_rest","newWindowFlow","__WEBPACK_EXTERNAL_MODULE__braintree_browser_detection_e7ac357c_supportsPopups__","show","onClick","focusWindow","tokenize","enableShippingAddress","flow","useraction","remove","catch","getPaypalCheckout","onSuccess","onError","paypalCheckout","loadPaypalCheckout","paypalCheckoutConfig","braintreePaypalCheckout","paypalSdkLoadConfig","currency","isCreditEnabled","components","toString","intent","commit","resolve","reject","loadPayPalSDK","err","loadPayPalSDKOnce","getDataCollector","cacheKey","cached","dataCollector","loadDataCollector","dataCollectorConfig","kount","code","undefined","teardown","getBraintreeEnv","isTestMode","Sandbox","Production","mapToBraintreeShippingAddressOverride","recipientName","firstName","lastName","line1","address1","line2","address2","city","state","stateOrProvinceCode","postalCode","countryCode","phone","mapToLegacyShippingAddress","email","shippingAddress","split","first_name","last_name","phone_number","address_line_1","address_line_2","country_code","postal_code","mapToLegacyBillingAddress","removeElement","elementId","element","document","getElementById","cartId","riskCorrelationId","teardownModule","default","get3DS","threeDS","load3DS","threeDSecure","version","getVenmoCheckout","venmoConfig","venmoCheckout","loadVenmoCheckout","venmoCheckoutConfig","allowDesktop","paymentMethodUsage","braintreeVenmoCheckout","isBrowserSupported","verifyCard","amount","tokenizationPayload","tokenizeCard","challenge3DSVerification","paymentData","instrument","creditCardInstrument","ccExpiry","ccNumber","ccName","isCreditCardInstrumentLike","getErrorsRequiredFields","__WEBPACK_EXTERNAL_MODULE_lodash_isEmpty__","requestData","mapToCreditCard","creditCards","request","nonce","bin","present3DSChallenge","module","creditCard","cardholderName","number","cvv","ccCvv","expirationDate","month","year","validate","countryCodeAlpha2","locality","countryName","country","streetAddress","endpoint","method","challengeRequested","additionalInformation","roundedAmount","toFixed","Number","onLookupComplete","_data","next","collectDeviceData","PaymentMethodClientUnavailableError","BRAINTREE_SDK_HOSTED_FIELDS_FIX_VERSION","BRAINTREE_SDK_DEFAULT_VERSION","BRAINTREE_SDK_STABLE_VERSION","BRAINTREE_SDK_SCRIPTS_INTEGRITY","Client","PaypalCheckout","Paypal","LocalPayment","DataCollector","UsBankAccount","GooglePayment","ThreeDSecure","VisaCheckout","Venmo","HostedFields","Fastlane","BraintreeScriptLoader","scriptLoader","braintreeSDKVersionManager","loadBraintreeModuleOrThrow","loadLocalPayment","loadUsBankAccount","loadGooglePayment","loadVisaCheckout","loadHostedFields","loadVisaCheckoutSdk","testMode","V","hash","loadScript","async","attributes","integrity","crossorigin","braintreeModuleName","fileName","getBraintreeModule","braintreeSdkVersion","getSDKVersion","scriptPath","getIntegrityValuesByModuleName","braintree","moduleName","BraintreeHeadlessSDKVersionManager","BraintreePaypalWalletError","MissingDataErrorType","BraintreePaypalWalletService","walletButtonIntegrationService","braintreeIntegrationService","containerId","getBraintreePaypalCheckoutOrThrow","getBraintreeVenmoCheckoutOrThrow","proxyTokenizationPayment","authorizeData","methodId","tokenizePayload","tokenizePayment","redirectToExternalCheckout","proxyVenmoTokenizationPayment","tokenizeVenmo","mapToBillingAddress","paymentWalletData","providerId","providerOrderId","cartEntityId","queryParams","encodeURIComponent","JSON","stringify","externalCheckoutUrl","company","stateOrProvince","shouldSaveAddress","payload","toResolvableModule","resolveIds","MissingDataError","MissingBillingAddress","MissingCart","MissingConsignments","MissingCheckout","MissingCustomer","MissingCheckoutConfig","MissingOrderConfig","MissingOrder","MissingOrderId","MissingPayment","MissingPaymentToken","MissingPaymentMethod","MissingShippingAddress","missing_data_error_getErrorMessage","getValidButtonStyle","style","color","fundingicons","height","layout","shape","size","tagline","validStyles","getValidHeight","__WEBPACK_EXTERNAL_MODULE_lodash_omitBy__","__WEBPACK_EXTERNAL_MODULE_lodash_isNil__","currentHeight","isNaN","BraintreePaypalWalletStrategy","braintreePaypalWalletService","braintreepaypal","parsedPaymentMethod","parse","atob","initializationData","paypalCheckoutOptions","renderButton","deinitialize","onEligibilityFailure","paypalButtonRender","Buttons","env","fundingSource","FUNDING","PAYPAL","createOrder","setupPayment","onApprove","onAuthorizeError","isEligible","render","onPaymentError","createPayment","shippingAddressEditable","offerCredit","create_braintree_paypal_wallet_strategy","__WEBPACK_EXTERNAL_MODULE__bigcommerce_script_loader_875b3e8f_getScriptLoader__","BraintreePaypalCreditWalletStrategy","braintreepaypalcredit","PAYLATER","GOLD","create_braintree_paypal_credit_wallet_strategy","VenmoButtonImage","WHITE","BLUE","get_braintree_venmo_button_style","backgroundColor","c","backgroundPosition","backgroundSize","backgroundImage","backgroundRepeat","borderRadius","cursor","transition","minHeight","minWidth","border","BraintreeVenmoWalletStrategy","braintreevenmo","handleInitializationError","cartButtonStyles","paymentButtonStyles","buttonStyles","venmoButton","setAttribute","addEventListener","braintree_venmo_wallet_strategy_awaiter","removeAttribute","create_braintree_venmo_wallet_strategy","PAYPAL_SDK_SUPPORTED_LOCALES","LiabilityShiftEnum","PayPalCommerceIntent","StyleButtonLabel","StyleButtonColor","StyleButtonShape","NonInstantAlternativePaymentMethods","PayPalOrderStatus","PayPalCommerceScriptLoader","getPayPalSDK","paymentMethod","currencyCode","storeLanguage","initializesOnCheckoutPage","forceLoad","paypalSdkScriptConfig","getPayPalSdkScriptConfigOrThrow","paypalSdkScriptConfig_1","transformConfig","scriptSrc","URLSearchParams","clientId","merchantId","buyerCountry","attributionId","isVenmoEnabled","isHostedCheckoutEnabled","isPayPalCreditAvailable","isDeveloperModeApplicable","availableAlternativePaymentMethods","enabledAlternativePaymentMethods","isGooglePayEnabled","shouldEnableCard","enableCardFunding","enableCreditFunding","enableVenmoFunding","googlePayComponent","cardFieldsComponent","disableFunding","filter","apm","includes","enableFunding","locale","language","region","toUpperCase","transformLocaleToPayPalFormat","transformedConfig","keys","forEach","Array","isArray","PaypalCommerceWalletService","paypalCommerceScriptLoader","loadPayPalSdk","providedCurrencyCode","paypalSdk","getPayPalSdkOrThrow","orderId","paymentWalletEntityId","label","display","PaypalCommerceWalletStrategy","paypalCommerceHeadlessWalletButtonService","paypalcommercepaypal","parsedInitializationData","defaultCallbacks","actions_1","paypal_commerce_wallet_strategy_awaiter","orderID","actions","orderDetails","order","mapOrderDetailsToBillingAddress","buttonRenderOptions","paypalButton","payer","given_name","surname","admin_area_2","email_address","admin_area_1","_b","_d","_c","national_number","create_paypal_commerce_wallet_strategy","PayPalCommerceCreditWalletStrategy","paypalcommercepaypalcredit","buttonStyle","fundingSources","CREDIT","paypal_commerce_credit_wallet_strategy_awaiter","hasRenderedSmartButton","create_paypal_commerce_credit_wallet_strategy","isResolvableModule","getEnvironment","e","ConsoleLogger","_console","log","messages","_logToConsole","info","warn","debug","NoopLogger","logger","isEnabled","console","createLogger","standard_error_StandardError","invalid_argument_error_InvalidArgumentError","Registry","_factories","_instances","_defaultToken","defaultToken","_useFallback","useFallback","_tokenResolver","tokenResolver","token","cacheToken","_getInstance","getFactory","exactMatch","resolvedToken","register","factory","_hasFactory","_hasInstance","ResolveIdRegistry","_registry","_resolveToken","bind","_encodeToken","resolveId","getUseFallback","btoa","_decodeToken","registeredTokens","results","registeredToken","resolverId","result","matches","totalKeys","entries","push","matchedResults","sort","a","b","queryKeyCount","exactResult","find","matched","bindMethodDecorator","_","descriptor","boundMethod","set","getUniqId","idPrefix","__WEBPACK_EXTERNAL_MODULE_lodash_uniqueId__","WalletButtonInitializer","_registryV2","initializeWalletButton","containerIds","getContainerIds","map","wallet_button_initializer_awaiter","deinitializeWalletButton","test","selector","containers","querySelectorAll","slice","container","setUniqueElementId","__decorate","target","decoratedTarget","getOwnPropertyNames","getOwnPropertyDescriptor","bindClassDecorator","createWalletButtonInitializer","registryV2","walletButtonStrategyFactories","registry","createWalletButtonStrategy","createWalletButtonStrategyRegistry","__WEBPACK_EXTERNAL_MODULE__bigcommerce_request_sender_01d1f546_createRequestSender__","create_wallet_button_integration_service","wallet_button_strategies_namespaceObject","wallet_button_initializer"],"sourceRoot":""}