@zonos/elements 1.0.17-alpha.0 → 1.0.17-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  // Execute our own script injection after a tick to give users time to do their
2
- import { initStripe, loadScript } from "./stripe";
2
+ import { initStripe, zonosStripeLoadScript, } from "./stripe";
3
3
  // own script injection.
4
- const stripePromise = Promise.resolve().then(() => loadScript(null));
4
+ const stripePromise = Promise.resolve().then(() => zonosStripeLoadScript(null));
5
5
  let loadCalled = false;
6
6
  stripePromise.catch((err) => {
7
7
  if (!loadCalled) {
@@ -9,7 +9,7 @@ stripePromise.catch((err) => {
9
9
  console.warn(err);
10
10
  }
11
11
  });
12
- export const loadStripe = async (...args) => {
12
+ export const zonosLoadStripe = async (...args) => {
13
13
  loadCalled = true;
14
14
  const startTime = Date.now();
15
15
  return stripePromise.then(maybeStripe => initStripe(maybeStripe, args, startTime));
@@ -1 +1 @@
1
- {"version":3,"file":"loadStripe.js","sourceRoot":"","sources":["../../src/scripts/loadStripe.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAAmB,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7E,wBAAwB;AACxB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAErE,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,aAAa,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;EACjC,IAAI,CAAC,UAAU,EAAE;IACf,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GACnB;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAe,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;EACtD,UAAU,GAAG,IAAI,CAAC;EAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAE7B,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CACtC,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CACzC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Execute our own script injection after a tick to give users time to do their\n\nimport { type LoadStripe, initStripe, loadScript } from 'src/scripts/stripe';\n\n// own script injection.\nconst stripePromise = Promise.resolve().then(() => loadScript(null));\n\nlet loadCalled = false;\n\nstripePromise.catch((err: Error) => {\n if (!loadCalled) {\n // eslint-disable-next-line no-console\n console.warn(err);\n }\n});\n\nexport const loadStripe: LoadStripe = async (...args) => {\n loadCalled = true;\n const startTime = Date.now();\n\n return stripePromise.then(maybeStripe =>\n initStripe(maybeStripe, args, startTime),\n );\n};\n"]}
1
+ {"version":3,"file":"loadStripe.js","sourceRoot":"","sources":["../../src/scripts/loadStripe.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAEL,UAAU,EACV,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,wBAAwB;AACxB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhF,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,aAAa,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;EACjC,IAAI,CAAC,UAAU,EAAE;IACf,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GACnB;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAe,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;EAC3D,UAAU,GAAG,IAAI,CAAC;EAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAE7B,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CACtC,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CACzC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Execute our own script injection after a tick to give users time to do their\n\nimport {\n type LoadStripe,\n initStripe,\n zonosStripeLoadScript,\n} from 'src/scripts/stripe';\n\n// own script injection.\nconst stripePromise = Promise.resolve().then(() => zonosStripeLoadScript(null));\n\nlet loadCalled = false;\n\nstripePromise.catch((err: Error) => {\n if (!loadCalled) {\n // eslint-disable-next-line no-console\n console.warn(err);\n }\n});\n\nexport const zonosLoadStripe: LoadStripe = async (...args) => {\n loadCalled = true;\n const startTime = Date.now();\n\n return stripePromise.then(maybeStripe =>\n initStripe(maybeStripe, args, startTime),\n );\n};\n"]}
@@ -4,7 +4,7 @@ import { logError } from "../components/utils/logging/logError";
4
4
  const V3_URL = 'https://js.stripe.com/v3';
5
5
  const V3_URL_REGEX = /^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;
6
6
  const EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';
7
- export const findScript = () => {
7
+ export const zonosStripeFindScript = () => {
8
8
  const scripts = document.querySelectorAll(`script[src^="${V3_URL}"]`);
9
9
  for (let i = 0; i < scripts.length; i++) {
10
10
  const script = scripts[i];
@@ -31,7 +31,7 @@ export const injectScript = (params) => {
31
31
  headBody.appendChild(script);
32
32
  return script;
33
33
  };
34
- export const loadScript = (params) => {
34
+ export const zonosStripeLoadScript = (params) => {
35
35
  // Ensure that we only attempt to load Stripe.js at most once
36
36
  if (stripePromise !== null) {
37
37
  return stripePromise;
@@ -51,7 +51,7 @@ export const loadScript = (params) => {
51
51
  return;
52
52
  }
53
53
  try {
54
- let script = findScript();
54
+ let script = zonosStripeFindScript();
55
55
  if (script && params) {
56
56
  console.warn(EXISTING_SCRIPT_MESSAGE);
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/scripts/stripe.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iEAAiE;AAIjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEjE,MAAM,MAAM,GAAG,0BAA0B,CAAC;AAC1C,MAAM,YAAY,GAAG,2CAA2C,CAAC;AAEjE,MAAM,uBAAuB,GAC3B,kJAAkJ,CAAC;AAWrJ,MAAM,CAAC,MAAM,UAAU,GAAG,GAA6B,EAAE;EACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CACvC,gBAAgB,MAAM,IAAI,CAC3B,CAAC;EAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,EAAE;MACX,SAAS;KACV;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;MAClC,SAAS;KACV;IAED,OAAO,MAAM,CAAC;GACf;EAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,IAAI,aAAa,GAA6C,IAAI,CAAC;AAEnE,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAAyB,EACC,EAAE;EAC5B,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;EAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EAChD,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC;EAEvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;EAEhD,IAAI,CAAC,QAAQ,EAAE;IACb,QAAQ,CACN,6EAA6E,CAC9E,CAAC;IAEF,OAAO,IAAI,CAAC;GACb;EAED,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;EAE7B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAAyB,EACU,EAAE;EACrC,6DAA6D;EAC7D,IAAI,aAAa,KAAK,IAAI,EAAE;IAC1B,OAAO,aAAa,CAAC;GACtB;EAED,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;MACpE,mEAAmE;MACnE,6CAA6C;MAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;MACd,OAAO;KACR;IAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;MAC3B,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;KACvC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE;MACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;MACvB,OAAO;KACR;IAED,IAAI;MACF,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;MAE1B,IAAI,MAAM,IAAI,MAAM,EAAE;QACpB,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;OACvC;WAAM,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;OAC/B;MAED,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QACpC,IAAI,MAAM,CAAC,MAAM,EAAE;UACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACxB;aAAM;UACL,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;SAC9C;MACH,CAAC,CAAC,CAAC;MAEH,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;MAChD,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;MACd,MAAM,CAAC,KAAK,CAAC,CAAC;MACd,OAAO;KACR;EACH,CAAC,CAAC,CAAC;EAEH,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,eAAe,GAAG,CAAC,MAAW,EAAE,SAAiB,EAAQ,EAAE;EAC/D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;IACvC,OAAO;GACR;EAED,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,WAAqC,EACrC,IAAmC,EACnC,SAAiB,EACF,EAAE;EACjB,IAAI,WAAW,KAAK,IAAI,EAAE;IACxB,OAAO,IAAI,CAAC;GACb;EAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;EAClD,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;EACnC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAElC,EAAqB,EAAE;EACtB,MAAM,YAAY,GAAG;;;;;;MAMjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;CAC3B,CAAC;EAEA,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IACjD,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvB,OAAO;GACR;EAED,IACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;IAChC,OAAO,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAChD;IACA,OAAO,MAAM,CAAC;GACf;EAED,QAAQ,CAAC,YAAY,CAAC,CAAC;AACzB,CAAC,CAAC","sourcesContent":["/* eslint-disable no-console */\n/** Loading stripe script extracted from stripe.js repository */\n\nimport type { Stripe, StripeConstructor } from '@stripe/stripe-js';\n\nimport { logError } from 'src/components/utils/logging/logError';\n\nconst V3_URL = 'https://js.stripe.com/v3';\nconst V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\n\nconst EXISTING_SCRIPT_MESSAGE =\n 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface LoadParams {\n advancedFraudSignals: boolean;\n}\n\nexport type LoadStripe = (\n ...args: Parameters<StripeConstructor>\n) => Promise<Stripe | null>;\n\nexport const findScript = (): HTMLScriptElement | null => {\n const scripts = document.querySelectorAll<HTMLScriptElement>(\n `script[src^=\"${V3_URL}\"]`,\n );\n\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (!script) {\n continue;\n }\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nlet stripePromise: Promise<StripeConstructor | null> | null = null;\n\nexport const injectScript = (\n params: null | LoadParams,\n): HTMLScriptElement | null => {\n const queryString =\n params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n const script = document.createElement('script');\n script.src = `${V3_URL}${queryString}`;\n\n const headBody = document.head || document.body;\n\n if (!headBody) {\n logError(\n 'Expected document.body not to be null. Stripe.js requires a <body> element.',\n );\n\n return null;\n }\n\n headBody.appendChild(script);\n\n return script;\n};\n\nexport const loadScript = (\n params: null | LoadParams,\n): Promise<StripeConstructor | null> => {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise((resolve, reject) => {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n let script = findScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n }\n\n script?.addEventListener('load', () => {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n });\n\n script?.addEventListener('error', () => {\n reject(new Error('Failed to load Stripe.js'));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n\n return stripePromise;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst registerWrapper = (stripe: any, startTime: number): void => {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({ name: 'stripe-js', startTime });\n};\n\nexport const initStripe = (\n maybeStripe: StripeConstructor | null,\n args: Parameters<StripeConstructor>,\n startTime: number,\n): Stripe | null => {\n if (maybeStripe === null) {\n return null;\n }\n\n const stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const validateLoadParams = (params: {\n advancedFraudSignals: boolean;\n}): LoadParams | void => {\n const errorMessage = `invalid load parameters; expected object of shape\n\n {advancedFraudSignals: boolean}\n\nbut received\n\n ${JSON.stringify(params)}\n`;\n\n if (params === null || typeof params !== 'object') {\n logError(errorMessage);\n return;\n }\n\n if (\n Object.keys(params).length === 1 &&\n typeof params.advancedFraudSignals === 'boolean'\n ) {\n return params;\n }\n\n logError(errorMessage);\n};\n"]}
1
+ {"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/scripts/stripe.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iEAAiE;AAIjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEjE,MAAM,MAAM,GAAG,0BAA0B,CAAC;AAC1C,MAAM,YAAY,GAAG,2CAA2C,CAAC;AAEjE,MAAM,uBAAuB,GAC3B,kJAAkJ,CAAC;AAWrJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAA6B,EAAE;EAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CACvC,gBAAgB,MAAM,IAAI,CAC3B,CAAC;EAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,EAAE;MACX,SAAS;KACV;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;MAClC,SAAS;KACV;IAED,OAAO,MAAM,CAAC;GACf;EAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,IAAI,aAAa,GAA6C,IAAI,CAAC;AAEnE,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAAyB,EACC,EAAE;EAC5B,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;EAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EAChD,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC;EAEvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;EAEhD,IAAI,CAAC,QAAQ,EAAE;IACb,QAAQ,CACN,6EAA6E,CAC9E,CAAC;IAEF,OAAO,IAAI,CAAC;GACb;EAED,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;EAE7B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAyB,EACU,EAAE;EACrC,6DAA6D;EAC7D,IAAI,aAAa,KAAK,IAAI,EAAE;IAC1B,OAAO,aAAa,CAAC;GACtB;EAED,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;MACpE,mEAAmE;MACnE,6CAA6C;MAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;MACd,OAAO;KACR;IAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;MAC3B,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;KACvC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE;MACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;MACvB,OAAO;KACR;IAED,IAAI;MACF,IAAI,MAAM,GAAG,qBAAqB,EAAE,CAAC;MAErC,IAAI,MAAM,IAAI,MAAM,EAAE;QACpB,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;OACvC;WAAM,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;OAC/B;MAED,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QACpC,IAAI,MAAM,CAAC,MAAM,EAAE;UACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACxB;aAAM;UACL,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;SAC9C;MACH,CAAC,CAAC,CAAC;MAEH,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;MAChD,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;MACd,MAAM,CAAC,KAAK,CAAC,CAAC;MACd,OAAO;KACR;EACH,CAAC,CAAC,CAAC;EAEH,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,eAAe,GAAG,CAAC,MAAW,EAAE,SAAiB,EAAQ,EAAE;EAC/D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;IACvC,OAAO;GACR;EAED,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,WAAqC,EACrC,IAAmC,EACnC,SAAiB,EACF,EAAE;EACjB,IAAI,WAAW,KAAK,IAAI,EAAE;IACxB,OAAO,IAAI,CAAC;GACb;EAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;EAClD,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;EACnC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAElC,EAAqB,EAAE;EACtB,MAAM,YAAY,GAAG;;;;;;MAMjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;CAC3B,CAAC;EAEA,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IACjD,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvB,OAAO;GACR;EAED,IACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;IAChC,OAAO,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAChD;IACA,OAAO,MAAM,CAAC;GACf;EAED,QAAQ,CAAC,YAAY,CAAC,CAAC;AACzB,CAAC,CAAC","sourcesContent":["/* eslint-disable no-console */\n/** Loading stripe script extracted from stripe.js repository */\n\nimport type { Stripe, StripeConstructor } from '@stripe/stripe-js';\n\nimport { logError } from 'src/components/utils/logging/logError';\n\nconst V3_URL = 'https://js.stripe.com/v3';\nconst V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\n\nconst EXISTING_SCRIPT_MESSAGE =\n 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface LoadParams {\n advancedFraudSignals: boolean;\n}\n\nexport type LoadStripe = (\n ...args: Parameters<StripeConstructor>\n) => Promise<Stripe | null>;\n\nexport const zonosStripeFindScript = (): HTMLScriptElement | null => {\n const scripts = document.querySelectorAll<HTMLScriptElement>(\n `script[src^=\"${V3_URL}\"]`,\n );\n\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (!script) {\n continue;\n }\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nlet stripePromise: Promise<StripeConstructor | null> | null = null;\n\nexport const injectScript = (\n params: null | LoadParams,\n): HTMLScriptElement | null => {\n const queryString =\n params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n const script = document.createElement('script');\n script.src = `${V3_URL}${queryString}`;\n\n const headBody = document.head || document.body;\n\n if (!headBody) {\n logError(\n 'Expected document.body not to be null. Stripe.js requires a <body> element.',\n );\n\n return null;\n }\n\n headBody.appendChild(script);\n\n return script;\n};\n\nexport const zonosStripeLoadScript = (\n params: null | LoadParams,\n): Promise<StripeConstructor | null> => {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise((resolve, reject) => {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n let script = zonosStripeFindScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n }\n\n script?.addEventListener('load', () => {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n });\n\n script?.addEventListener('error', () => {\n reject(new Error('Failed to load Stripe.js'));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n\n return stripePromise;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst registerWrapper = (stripe: any, startTime: number): void => {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({ name: 'stripe-js', startTime });\n};\n\nexport const initStripe = (\n maybeStripe: StripeConstructor | null,\n args: Parameters<StripeConstructor>,\n startTime: number,\n): Stripe | null => {\n if (maybeStripe === null) {\n return null;\n }\n\n const stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const validateLoadParams = (params: {\n advancedFraudSignals: boolean;\n}): LoadParams | void => {\n const errorMessage = `invalid load parameters; expected object of shape\n\n {advancedFraudSignals: boolean}\n\nbut received\n\n ${JSON.stringify(params)}\n`;\n\n if (params === null || typeof params !== 'object') {\n logError(errorMessage);\n return;\n }\n\n if (\n Object.keys(params).length === 1 &&\n typeof params.advancedFraudSignals === 'boolean'\n ) {\n return params;\n }\n\n logError(errorMessage);\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  var _a;
2
2
  import { log } from "../components/utils/logging/log";
3
3
  import { logError } from "../components/utils/logging/logError";
4
- import { loadStripe } from "./loadStripe";
4
+ import { zonosLoadStripe } from "./loadStripe";
5
5
  const ZONOS_URL = process.env.NEXT_PUBLIC_ZONOS_CDN_URL;
6
6
  const INTER_FONT_URL = 'https://rsms.me';
7
7
  const INTER_FONT_REGEX = /^https:\/\/rsms\.me\/inter\/inter\.css(.*)$/;
@@ -62,7 +62,7 @@ Zonos.injectController = ({ config, zonosApiKey, }) => {
62
62
  zonosController.addEventListener('stripeInitEvent', async (event) => {
63
63
  const { detail } = event;
64
64
  log('loading Stripe');
65
- const stripe = await loadStripe(detail.publishableKey);
65
+ const stripe = await zonosLoadStripe(detail.publishableKey);
66
66
  if (!stripe) {
67
67
  logError('API seems to be invalid or missing. Failed to load Stripe');
68
68
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"zonos.js","sourceRoot":"","sources":["../../src/scripts/zonos.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Stripe } from '@stripe/stripe-js';\n\nimport type { AppearanceConfig } from 'src/components/store/zonosStore';\nimport { log } from 'src/components/utils/logging/log';\nimport { logError } from 'src/components/utils/logging/logError';\nimport { loadStripe } from 'src/scripts/loadStripe';\nimport type { CheckoutConfig, HelloConfig, NotificationInit } from 'src/types';\nimport type { OnlineStoreConfig } from 'src/types/online-store/OnlineStoreConfig';\n\nconst ZONOS_URL = process.env.NEXT_PUBLIC_ZONOS_CDN_URL;\n\nconst INTER_FONT_URL = 'https://rsms.me';\nconst INTER_FONT_REGEX = /^https:\\/\\/rsms\\.me\\/inter\\/inter\\.css(.*)$/;\n\nexport type CurrencyConverter = (\n convertAndFormat: (amount: number) => string,\n convert: (amount: number) => number,\n format: (amount: number) => string,\n selector?: string,\n) => void;\n\nexport type LoadZonosParamsConfig = {\n appearance?: Partial<AppearanceConfig>;\n checkoutSettings?: Partial<CheckoutConfig>;\n currencyConverter?: CurrencyConverter;\n helloSettings?: Partial<HelloConfig>;\n onlineStoreSettings?: Partial<OnlineStoreConfig>;\n};\n\nexport type LoadZonosParams = LoadZonosParamsConfig & {\n zonosApiKey: string;\n};\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface Zonos {\n /**\n * Toggle debug mode (add query param 'zonosDebug=1' to url)\n * @default false\n */\n debug?: boolean;\n // status of zonos initialization\n doneInit: boolean;\n /** Stripe instance */\n stripe: Stripe;\n zonosApiKey: string;\n displayCurrency: () => void;\n init: (params: LoadZonosParams) => Promise<void>;\n showNotification: (props: NotificationInit) => void;\n}\n\nexport abstract class Zonos {\n static zonosApiKey: string;\n static stripe: Stripe;\n static doneInit: boolean = false;\n // if query 'zonosDebug=1' param from url, debug mode is on\n static debug: boolean =\n !!window.location.search.match(/\\?.*(&*)zonosDebug=1/);\n\n static init = async ({\n appearance,\n checkoutSettings,\n currencyConverter,\n helloSettings,\n zonosApiKey,\n }: LoadZonosParams) => {\n if (Zonos.doneInit) {\n // do nothing if zonos is already initializeds\n return;\n }\n log('====== ZONOS DEBUG MODE: on ======');\n if (!zonosApiKey) {\n logError('Missing Zonos API key');\n return;\n }\n this.zonosApiKey = zonosApiKey;\n // eslint-disable-next-line no-console\n log('init zonos');\n\n // inject zonos cdn\n Zonos.injectZonosCdn();\n\n // inject css for zonos elements\n Zonos.injectZonosCss();\n\n // inject fonts for zonos elements\n Zonos.injectFonts();\n\n // init zonos controller\n Zonos.injectController({\n config: {\n appearance,\n checkoutSettings,\n currencyConverter,\n helloSettings,\n },\n zonosApiKey,\n });\n Zonos.doneInit = true;\n };\n\n static displayCurrency = () => {\n const zonosHello = document.querySelector('zonos-hello');\n if (zonosHello) {\n void zonosHello.displayCurrency();\n }\n };\n\n static showNotification = (notification: NotificationInit) => {\n const zonosController = document.querySelector('zonos-controller');\n void zonosController?.showNotification(notification);\n };\n\n private static injectController = ({\n config,\n zonosApiKey,\n }: {\n config: LoadZonosParamsConfig;\n zonosApiKey: string;\n }) => {\n if (document.querySelector('zonos-controller')) {\n return;\n }\n const zonosController = document.createElement('zonos-controller');\n zonosController.config = config;\n zonosController.zonosApiKey = zonosApiKey;\n\n zonosController.addEventListener('stripeInitEvent', async event => {\n const { detail } = event as CustomEvent<{\n publishableKey: string;\n }>;\n log('loading Stripe');\n const stripe = await loadStripe(detail.publishableKey);\n if (!stripe) {\n logError('API seems to be invalid or missing. Failed to load Stripe');\n return;\n }\n window.Zonos.stripe = stripe;\n void zonosController.initCheckoutElement(stripe);\n });\n\n document.body.appendChild(zonosController);\n // eslint-disable-next-line no-console\n log('Zonos controller injected!');\n };\n\n private static injectZonosCdn = () => {\n const findScript = () => {\n const scripts = document.querySelectorAll<HTMLScriptElement>(\n `script[src^=\"${ZONOS_URL}/dist/zonos-elements\"]`,\n );\n scripts.forEach(script => {\n if (script.src.indexOf('zonos-elements.js')) {\n return true;\n }\n });\n return false;\n };\n if (findScript()) {\n // eslint-disable-next-line no-console\n log('Zonos script already exists in the document', 'warn');\n return;\n }\n const headOrBody = document.head || document.body;\n // init zonos elements when the zonosKey is valid\n // inject esmodule cdn for zonos elements\n const zonosEsmCdn = document.createElement('script');\n zonosEsmCdn.type = 'module';\n zonosEsmCdn.src = `${ZONOS_URL}/dist/zonos-elements/zonos-elements.esm.js`;\n headOrBody.appendChild(zonosEsmCdn);\n\n // inject non module cdn for zonos elements\n const zonosCdn = document.createElement('script');\n zonosCdn.noModule = true;\n zonosCdn.src = `${ZONOS_URL}/dist/zonos-elements/zonos-elements.js`;\n headOrBody.appendChild(zonosCdn);\n // eslint-disable-next-line no-console\n log('Zonos cdn script injected!');\n };\n\n private static injectZonosCss = () => {\n const findStyleLink = () => {\n return !!document.querySelector<HTMLLinkElement>(\n `link[rel=\"stylesheet\"][href^=\"${ZONOS_URL}/dist/zonos-elements/zonos-elements.css\"]`,\n );\n };\n\n if (findStyleLink()) {\n // eslint-disable-next-line no-console\n log('Zonos style links already injected', 'warn');\n return;\n }\n\n const headOrBody = document.head || document.body;\n // inject css for zonos elements\n const zonosCssPreconnect = document.createElement('link');\n zonosCssPreconnect.rel = 'preconnect';\n zonosCssPreconnect.href = `${ZONOS_URL}/`;\n headOrBody.appendChild(zonosCssPreconnect);\n // inject css for zonos elements\n const zonosCss = document.createElement('link');\n zonosCss.rel = 'stylesheet';\n zonosCss.href = `${ZONOS_URL}/dist/zonos-elements/zonos-elements.css`;\n headOrBody.appendChild(zonosCss);\n // eslint-disable-next-line no-console\n log('Zonos style css injected!');\n };\n\n private static injectFonts = () => {\n const findFont = () => {\n const links = document.querySelectorAll<HTMLLinkElement>(\n `link[rel=\"stylesheet\"][href^=\"${INTER_FONT_URL}\"]`,\n );\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n if (!link) {\n continue;\n }\n\n if (INTER_FONT_REGEX.test(link.href)) {\n continue;\n }\n\n return link;\n }\n\n return null;\n };\n\n if (findFont()) {\n // eslint-disable-next-line no-console\n log('Inter font already injected', 'warn');\n return;\n }\n\n const headOrBody = document.head || document.body;\n\n // inject css for zonos elements\n const fontPreconnect = document.createElement('link');\n fontPreconnect.rel = 'preconnect';\n fontPreconnect.href = INTER_FONT_URL;\n headOrBody.appendChild(fontPreconnect);\n // inject css for zonos elements\n const font = document.createElement('link');\n font.rel = 'stylesheet';\n font.href = `${INTER_FONT_URL}/inter/inter.css`;\n headOrBody.appendChild(font);\n // eslint-disable-next-line no-console\n log('Zonos font injected!');\n };\n}\n"]}
1
+ {"version":3,"file":"zonos.js","sourceRoot":"","sources":["../../src/scripts/zonos.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AAExD,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,gBAAgB,GAAG,6CAA6C,CAAC;AAsCvE,MAAM,OAAgB,KAAK;;;AAGlB,cAAQ,GAAY,KAAK,AAAjB,CAAkB;AACjC,2DAA2D;AACpD,WAAK,GACV,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,AAD5C,CAC6C;AAElD,UAAI,GAAG,KAAK,EAAE,EACnB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,WAAW,GACK,EAAE,EAAE;EACpB,IAAI,KAAK,CAAC,QAAQ,EAAE;IAClB,8CAA8C;IAC9C,OAAO;GACR;EACD,GAAG,CAAC,oCAAoC,CAAC,CAAC;EAC1C,IAAI,CAAC,WAAW,EAAE;IAChB,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAClC,OAAO;GACR;EACD,EAAI,CAAC,WAAW,GAAG,WAAW,CAAC;EAC/B,sCAAsC;EACtC,GAAG,CAAC,YAAY,CAAC,CAAC;EAElB,mBAAmB;EACnB,KAAK,CAAC,cAAc,EAAE,CAAC;EAEvB,gCAAgC;EAChC,KAAK,CAAC,cAAc,EAAE,CAAC;EAEvB,kCAAkC;EAClC,KAAK,CAAC,WAAW,EAAE,CAAC;EAEpB,wBAAwB;EACxB,KAAK,CAAC,gBAAgB,CAAC;IACrB,MAAM,EAAE;MACN,UAAU;MACV,gBAAgB;MAChB,iBAAiB;MACjB,aAAa;KACd;IACD,WAAW;GACZ,CAAC,CAAC;EACH,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,CAAC,AAxCU,CAwCT;AAEK,qBAAe,GAAG,GAAG,EAAE;EAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;EACzD,IAAI,UAAU,EAAE;IACd,KAAK,UAAU,CAAC,eAAe,EAAE,CAAC;GACnC;AACH,CAAC,AALqB,CAKpB;AAEK,sBAAgB,GAAG,CAAC,YAA8B,EAAE,EAAE;EAC3D,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;EACnE,KAAK,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,gBAAgB,CAAC,YAAY,CAAC,CAAA,CAAC;AACvD,CAAC,AAHsB,CAGrB;AAEa,sBAAgB,GAAG,CAAC,EACjC,MAAM,EACN,WAAW,GAIZ,EAAE,EAAE;EACH,IAAI,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;IAC9C,OAAO;GACR;EACD,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;EACnE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;EAChC,eAAe,CAAC,WAAW,GAAG,WAAW,CAAC;EAE1C,eAAe,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,KAEjB,CAAC;IACH,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,EAAE;MACX,QAAQ,CAAC,2DAA2D,CAAC,CAAC;MACtE,OAAO;KACR;IACD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,KAAK,eAAe,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;EACnD,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;EAC3C,sCAAsC;EACtC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AACpC,CAAC,AA/B8B,CA+B7B;AAEa,oBAAc,GAAG,GAAG,EAAE;EACnC,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CACvC,gBAAgB,SAAS,wBAAwB,CAClD,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;MACvB,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;QAC3C,OAAO,IAAI,CAAC;OACb;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;EACf,CAAC,CAAC;EACF,IAAI,UAAU,EAAE,EAAE;IAChB,sCAAsC;IACtC,GAAG,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAC;IAC3D,OAAO;GACR;EACD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;EAClD,iDAAiD;EACjD,yCAAyC;EACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACrD,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;EAC5B,WAAW,CAAC,GAAG,GAAG,GAAG,SAAS,4CAA4C,CAAC;EAC3E,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;EAEpC,2CAA2C;EAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EAClD,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,QAAQ,CAAC,GAAG,GAAG,GAAG,SAAS,wCAAwC,CAAC;EACpE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;EACjC,sCAAsC;EACtC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AACpC,CAAC,AAhC4B,CAgC3B;AAEa,oBAAc,GAAG,GAAG,EAAE;EACnC,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAC7B,iCAAiC,SAAS,2CAA2C,CACtF,CAAC;EACJ,CAAC,CAAC;EAEF,IAAI,aAAa,EAAE,EAAE;IACnB,sCAAsC;IACtC,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO;GACR;EAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;EAClD,gCAAgC;EAChC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAC1D,kBAAkB,CAAC,GAAG,GAAG,YAAY,CAAC;EACtC,kBAAkB,CAAC,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC;EAC1C,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;EAC3C,gCAAgC;EAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAChD,QAAQ,CAAC,GAAG,GAAG,YAAY,CAAC;EAC5B,QAAQ,CAAC,IAAI,GAAG,GAAG,SAAS,yCAAyC,CAAC;EACtE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;EACjC,sCAAsC;EACtC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACnC,CAAC,AA1B4B,CA0B3B;AAEa,iBAAW,GAAG,GAAG,EAAE;EAChC,MAAM,QAAQ,GAAG,GAAG,EAAE;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CACrC,iCAAiC,cAAc,IAAI,CACpD,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;MACtB,IAAI,CAAC,IAAI,EAAE;QACT,SAAS;OACV;MAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACpC,SAAS;OACV;MAED,OAAO,IAAI,CAAC;KACb;IAED,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;EAEF,IAAI,QAAQ,EAAE,EAAE;IACd,sCAAsC;IACtC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO;GACR;EAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;EAElD,gCAAgC;EAChC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACtD,cAAc,CAAC,GAAG,GAAG,YAAY,CAAC;EAClC,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC;EACrC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;EACvC,gCAAgC;EAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAC5C,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;EACxB,IAAI,CAAC,IAAI,GAAG,GAAG,cAAc,kBAAkB,CAAC;EAChD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EAC7B,sCAAsC;EACtC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAC9B,CAAC,AA1CyB,CA0CxB","sourcesContent":["import type { Stripe } from '@stripe/stripe-js';\n\nimport type { AppearanceConfig } from 'src/components/store/zonosStore';\nimport { log } from 'src/components/utils/logging/log';\nimport { logError } from 'src/components/utils/logging/logError';\nimport { zonosLoadStripe } from 'src/scripts/loadStripe';\nimport type { CheckoutConfig, HelloConfig, NotificationInit } from 'src/types';\nimport type { OnlineStoreConfig } from 'src/types/online-store/OnlineStoreConfig';\n\nconst ZONOS_URL = process.env.NEXT_PUBLIC_ZONOS_CDN_URL;\n\nconst INTER_FONT_URL = 'https://rsms.me';\nconst INTER_FONT_REGEX = /^https:\\/\\/rsms\\.me\\/inter\\/inter\\.css(.*)$/;\n\nexport type CurrencyConverter = (\n convertAndFormat: (amount: number) => string,\n convert: (amount: number) => number,\n format: (amount: number) => string,\n selector?: string,\n) => void;\n\nexport type LoadZonosParamsConfig = {\n appearance?: Partial<AppearanceConfig>;\n checkoutSettings?: Partial<CheckoutConfig>;\n currencyConverter?: CurrencyConverter;\n helloSettings?: Partial<HelloConfig>;\n onlineStoreSettings?: Partial<OnlineStoreConfig>;\n};\n\nexport type LoadZonosParams = LoadZonosParamsConfig & {\n zonosApiKey: string;\n};\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface Zonos {\n /**\n * Toggle debug mode (add query param 'zonosDebug=1' to url)\n * @default false\n */\n debug?: boolean;\n // status of zonos initialization\n doneInit: boolean;\n /** Stripe instance */\n stripe: Stripe;\n zonosApiKey: string;\n displayCurrency: () => void;\n init: (params: LoadZonosParams) => Promise<void>;\n showNotification: (props: NotificationInit) => void;\n}\n\nexport abstract class Zonos {\n static zonosApiKey: string;\n static stripe: Stripe;\n static doneInit: boolean = false;\n // if query 'zonosDebug=1' param from url, debug mode is on\n static debug: boolean =\n !!window.location.search.match(/\\?.*(&*)zonosDebug=1/);\n\n static init = async ({\n appearance,\n checkoutSettings,\n currencyConverter,\n helloSettings,\n zonosApiKey,\n }: LoadZonosParams) => {\n if (Zonos.doneInit) {\n // do nothing if zonos is already initializeds\n return;\n }\n log('====== ZONOS DEBUG MODE: on ======');\n if (!zonosApiKey) {\n logError('Missing Zonos API key');\n return;\n }\n this.zonosApiKey = zonosApiKey;\n // eslint-disable-next-line no-console\n log('init zonos');\n\n // inject zonos cdn\n Zonos.injectZonosCdn();\n\n // inject css for zonos elements\n Zonos.injectZonosCss();\n\n // inject fonts for zonos elements\n Zonos.injectFonts();\n\n // init zonos controller\n Zonos.injectController({\n config: {\n appearance,\n checkoutSettings,\n currencyConverter,\n helloSettings,\n },\n zonosApiKey,\n });\n Zonos.doneInit = true;\n };\n\n static displayCurrency = () => {\n const zonosHello = document.querySelector('zonos-hello');\n if (zonosHello) {\n void zonosHello.displayCurrency();\n }\n };\n\n static showNotification = (notification: NotificationInit) => {\n const zonosController = document.querySelector('zonos-controller');\n void zonosController?.showNotification(notification);\n };\n\n private static injectController = ({\n config,\n zonosApiKey,\n }: {\n config: LoadZonosParamsConfig;\n zonosApiKey: string;\n }) => {\n if (document.querySelector('zonos-controller')) {\n return;\n }\n const zonosController = document.createElement('zonos-controller');\n zonosController.config = config;\n zonosController.zonosApiKey = zonosApiKey;\n\n zonosController.addEventListener('stripeInitEvent', async event => {\n const { detail } = event as CustomEvent<{\n publishableKey: string;\n }>;\n log('loading Stripe');\n const stripe = await zonosLoadStripe(detail.publishableKey);\n if (!stripe) {\n logError('API seems to be invalid or missing. Failed to load Stripe');\n return;\n }\n window.Zonos.stripe = stripe;\n void zonosController.initCheckoutElement(stripe);\n });\n\n document.body.appendChild(zonosController);\n // eslint-disable-next-line no-console\n log('Zonos controller injected!');\n };\n\n private static injectZonosCdn = () => {\n const findScript = () => {\n const scripts = document.querySelectorAll<HTMLScriptElement>(\n `script[src^=\"${ZONOS_URL}/dist/zonos-elements\"]`,\n );\n scripts.forEach(script => {\n if (script.src.indexOf('zonos-elements.js')) {\n return true;\n }\n });\n return false;\n };\n if (findScript()) {\n // eslint-disable-next-line no-console\n log('Zonos script already exists in the document', 'warn');\n return;\n }\n const headOrBody = document.head || document.body;\n // init zonos elements when the zonosKey is valid\n // inject esmodule cdn for zonos elements\n const zonosEsmCdn = document.createElement('script');\n zonosEsmCdn.type = 'module';\n zonosEsmCdn.src = `${ZONOS_URL}/dist/zonos-elements/zonos-elements.esm.js`;\n headOrBody.appendChild(zonosEsmCdn);\n\n // inject non module cdn for zonos elements\n const zonosCdn = document.createElement('script');\n zonosCdn.noModule = true;\n zonosCdn.src = `${ZONOS_URL}/dist/zonos-elements/zonos-elements.js`;\n headOrBody.appendChild(zonosCdn);\n // eslint-disable-next-line no-console\n log('Zonos cdn script injected!');\n };\n\n private static injectZonosCss = () => {\n const findStyleLink = () => {\n return !!document.querySelector<HTMLLinkElement>(\n `link[rel=\"stylesheet\"][href^=\"${ZONOS_URL}/dist/zonos-elements/zonos-elements.css\"]`,\n );\n };\n\n if (findStyleLink()) {\n // eslint-disable-next-line no-console\n log('Zonos style links already injected', 'warn');\n return;\n }\n\n const headOrBody = document.head || document.body;\n // inject css for zonos elements\n const zonosCssPreconnect = document.createElement('link');\n zonosCssPreconnect.rel = 'preconnect';\n zonosCssPreconnect.href = `${ZONOS_URL}/`;\n headOrBody.appendChild(zonosCssPreconnect);\n // inject css for zonos elements\n const zonosCss = document.createElement('link');\n zonosCss.rel = 'stylesheet';\n zonosCss.href = `${ZONOS_URL}/dist/zonos-elements/zonos-elements.css`;\n headOrBody.appendChild(zonosCss);\n // eslint-disable-next-line no-console\n log('Zonos style css injected!');\n };\n\n private static injectFonts = () => {\n const findFont = () => {\n const links = document.querySelectorAll<HTMLLinkElement>(\n `link[rel=\"stylesheet\"][href^=\"${INTER_FONT_URL}\"]`,\n );\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n if (!link) {\n continue;\n }\n\n if (INTER_FONT_REGEX.test(link.href)) {\n continue;\n }\n\n return link;\n }\n\n return null;\n };\n\n if (findFont()) {\n // eslint-disable-next-line no-console\n log('Inter font already injected', 'warn');\n return;\n }\n\n const headOrBody = document.head || document.body;\n\n // inject css for zonos elements\n const fontPreconnect = document.createElement('link');\n fontPreconnect.rel = 'preconnect';\n fontPreconnect.href = INTER_FONT_URL;\n headOrBody.appendChild(fontPreconnect);\n // inject css for zonos elements\n const font = document.createElement('link');\n font.rel = 'stylesheet';\n font.href = `${INTER_FONT_URL}/inter/inter.css`;\n headOrBody.appendChild(font);\n // eslint-disable-next-line no-console\n log('Zonos font injected!');\n };\n}\n"]}
@@ -10,7 +10,7 @@ const logError = (message, ...rest) => {
10
10
  const V3_URL = 'https://js.stripe.com/v3';
11
11
  const V3_URL_REGEX = /^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;
12
12
  const EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';
13
- const findScript = () => {
13
+ const zonosStripeFindScript = () => {
14
14
  const scripts = document.querySelectorAll(`script[src^="${V3_URL}"]`);
15
15
  for (let i = 0; i < scripts.length; i++) {
16
16
  const script = scripts[i];
@@ -37,7 +37,7 @@ const injectScript = (params) => {
37
37
  headBody.appendChild(script);
38
38
  return script;
39
39
  };
40
- const loadScript = (params) => {
40
+ const zonosStripeLoadScript = (params) => {
41
41
  // Ensure that we only attempt to load Stripe.js at most once
42
42
  if (stripePromise$1 !== null) {
43
43
  return stripePromise$1;
@@ -57,7 +57,7 @@ const loadScript = (params) => {
57
57
  return;
58
58
  }
59
59
  try {
60
- let script = findScript();
60
+ let script = zonosStripeFindScript();
61
61
  if (script && params) {
62
62
  console.warn(EXISTING_SCRIPT_MESSAGE);
63
63
  }
@@ -101,7 +101,7 @@ const initStripe = (maybeStripe, args, startTime) => {
101
101
 
102
102
  // Execute our own script injection after a tick to give users time to do their
103
103
  // own script injection.
104
- const stripePromise = Promise.resolve().then(() => loadScript(null));
104
+ const stripePromise = Promise.resolve().then(() => zonosStripeLoadScript(null));
105
105
  let loadCalled = false;
106
106
  stripePromise.catch((err) => {
107
107
  if (!loadCalled) {
@@ -109,10 +109,10 @@ stripePromise.catch((err) => {
109
109
  console.warn(err);
110
110
  }
111
111
  });
112
- const loadStripe = async (...args) => {
112
+ const zonosLoadStripe = async (...args) => {
113
113
  loadCalled = true;
114
114
  const startTime = Date.now();
115
115
  return stripePromise.then(maybeStripe => initStripe(maybeStripe, args, startTime));
116
116
  };
117
117
 
118
- exports.loadStripe = loadStripe;
118
+ exports.zonosLoadStripe = zonosLoadStripe;
@@ -35,7 +35,7 @@ const logError = (message, ...rest) => {
35
35
  const V3_URL = 'https://js.stripe.com/v3';
36
36
  const V3_URL_REGEX = /^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;
37
37
  const EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';
38
- const findScript = () => {
38
+ const zonosStripeFindScript = () => {
39
39
  const scripts = document.querySelectorAll(`script[src^="${V3_URL}"]`);
40
40
  for (let i = 0; i < scripts.length; i++) {
41
41
  const script = scripts[i];
@@ -62,7 +62,7 @@ const injectScript = (params) => {
62
62
  headBody.appendChild(script);
63
63
  return script;
64
64
  };
65
- const loadScript = (params) => {
65
+ const zonosStripeLoadScript = (params) => {
66
66
  // Ensure that we only attempt to load Stripe.js at most once
67
67
  if (stripePromise$1 !== null) {
68
68
  return stripePromise$1;
@@ -82,7 +82,7 @@ const loadScript = (params) => {
82
82
  return;
83
83
  }
84
84
  try {
85
- let script = findScript();
85
+ let script = zonosStripeFindScript();
86
86
  if (script && params) {
87
87
  console.warn(EXISTING_SCRIPT_MESSAGE);
88
88
  }
@@ -126,7 +126,7 @@ const initStripe = (maybeStripe, args, startTime) => {
126
126
 
127
127
  // Execute our own script injection after a tick to give users time to do their
128
128
  // own script injection.
129
- const stripePromise = Promise.resolve().then(() => loadScript(null));
129
+ const stripePromise = Promise.resolve().then(() => zonosStripeLoadScript(null));
130
130
  let loadCalled = false;
131
131
  stripePromise.catch((err) => {
132
132
  if (!loadCalled) {
@@ -134,14 +134,14 @@ stripePromise.catch((err) => {
134
134
  console.warn(err);
135
135
  }
136
136
  });
137
- const loadStripe = async (...args) => {
137
+ const zonosLoadStripe = async (...args) => {
138
138
  loadCalled = true;
139
139
  const startTime = Date.now();
140
140
  return stripePromise.then(maybeStripe => initStripe(maybeStripe, args, startTime));
141
141
  };
142
142
 
143
143
  var _a;
144
- const ZONOS_URL = "https://unpkg.com/@zonos/elements@1.0.17-alpha.0";
144
+ const ZONOS_URL = "https://unpkg.com/@zonos/elements@1.0.17-alpha.1";
145
145
  const INTER_FONT_URL = 'https://rsms.me';
146
146
  const INTER_FONT_REGEX = /^https:\/\/rsms\.me\/inter\/inter\.css(.*)$/;
147
147
  class Zonos {
@@ -201,7 +201,7 @@ Zonos.injectController = ({ config, zonosApiKey, }) => {
201
201
  zonosController.addEventListener('stripeInitEvent', async (event) => {
202
202
  const { detail } = event;
203
203
  log('loading Stripe');
204
- const stripe = await loadStripe(detail.publishableKey);
204
+ const stripe = await zonosLoadStripe(detail.publishableKey);
205
205
  if (!stripe) {
206
206
  logError('API seems to be invalid or missing. Failed to load Stripe');
207
207
  return;
@@ -10,7 +10,7 @@ const logError = (message, ...rest) => {
10
10
  const V3_URL = 'https://js.stripe.com/v3';
11
11
  const V3_URL_REGEX = /^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;
12
12
  const EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';
13
- const findScript = () => {
13
+ const zonosStripeFindScript = () => {
14
14
  const scripts = document.querySelectorAll(`script[src^="${V3_URL}"]`);
15
15
  for (let i = 0; i < scripts.length; i++) {
16
16
  const script = scripts[i];
@@ -37,7 +37,7 @@ const injectScript = (params) => {
37
37
  headBody.appendChild(script);
38
38
  return script;
39
39
  };
40
- const loadScript = (params) => {
40
+ const zonosStripeLoadScript = (params) => {
41
41
  // Ensure that we only attempt to load Stripe.js at most once
42
42
  if (stripePromise !== null) {
43
43
  return stripePromise;
@@ -57,7 +57,7 @@ const loadScript = (params) => {
57
57
  return;
58
58
  }
59
59
  try {
60
- let script = findScript();
60
+ let script = zonosStripeFindScript();
61
61
  if (script && params) {
62
62
  console.warn(EXISTING_SCRIPT_MESSAGE);
63
63
  }
@@ -119,8 +119,8 @@ but received
119
119
  logError(errorMessage);
120
120
  };
121
121
 
122
- exports.findScript = findScript;
123
122
  exports.initStripe = initStripe;
124
123
  exports.injectScript = injectScript;
125
- exports.loadScript = loadScript;
126
124
  exports.validateLoadParams = validateLoadParams;
125
+ exports.zonosStripeFindScript = zonosStripeFindScript;
126
+ exports.zonosStripeLoadScript = zonosStripeLoadScript;
@@ -35,7 +35,7 @@ const logError = (message, ...rest) => {
35
35
  const V3_URL = 'https://js.stripe.com/v3';
36
36
  const V3_URL_REGEX = /^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;
37
37
  const EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';
38
- const findScript = () => {
38
+ const zonosStripeFindScript = () => {
39
39
  const scripts = document.querySelectorAll(`script[src^="${V3_URL}"]`);
40
40
  for (let i = 0; i < scripts.length; i++) {
41
41
  const script = scripts[i];
@@ -62,7 +62,7 @@ const injectScript = (params) => {
62
62
  headBody.appendChild(script);
63
63
  return script;
64
64
  };
65
- const loadScript = (params) => {
65
+ const zonosStripeLoadScript = (params) => {
66
66
  // Ensure that we only attempt to load Stripe.js at most once
67
67
  if (stripePromise$1 !== null) {
68
68
  return stripePromise$1;
@@ -82,7 +82,7 @@ const loadScript = (params) => {
82
82
  return;
83
83
  }
84
84
  try {
85
- let script = findScript();
85
+ let script = zonosStripeFindScript();
86
86
  if (script && params) {
87
87
  console.warn(EXISTING_SCRIPT_MESSAGE);
88
88
  }
@@ -126,7 +126,7 @@ const initStripe = (maybeStripe, args, startTime) => {
126
126
 
127
127
  // Execute our own script injection after a tick to give users time to do their
128
128
  // own script injection.
129
- const stripePromise = Promise.resolve().then(() => loadScript(null));
129
+ const stripePromise = Promise.resolve().then(() => zonosStripeLoadScript(null));
130
130
  let loadCalled = false;
131
131
  stripePromise.catch((err) => {
132
132
  if (!loadCalled) {
@@ -134,14 +134,14 @@ stripePromise.catch((err) => {
134
134
  console.warn(err);
135
135
  }
136
136
  });
137
- const loadStripe = async (...args) => {
137
+ const zonosLoadStripe = async (...args) => {
138
138
  loadCalled = true;
139
139
  const startTime = Date.now();
140
140
  return stripePromise.then(maybeStripe => initStripe(maybeStripe, args, startTime));
141
141
  };
142
142
 
143
143
  var _a;
144
- const ZONOS_URL = "https://unpkg.com/@zonos/elements@1.0.17-alpha.0";
144
+ const ZONOS_URL = "https://unpkg.com/@zonos/elements@1.0.17-alpha.1";
145
145
  const INTER_FONT_URL = 'https://rsms.me';
146
146
  const INTER_FONT_REGEX = /^https:\/\/rsms\.me\/inter\/inter\.css(.*)$/;
147
147
  class Zonos {
@@ -201,7 +201,7 @@ Zonos.injectController = ({ config, zonosApiKey, }) => {
201
201
  zonosController.addEventListener('stripeInitEvent', async (event) => {
202
202
  const { detail } = event;
203
203
  log('loading Stripe');
204
- const stripe = await loadStripe(detail.publishableKey);
204
+ const stripe = await zonosLoadStripe(detail.publishableKey);
205
205
  if (!stripe) {
206
206
  logError('API seems to be invalid or missing. Failed to load Stripe');
207
207
  return;
@@ -1,2 +1,2 @@
1
1
  import { type LoadStripe } from "./stripe";
2
- export declare const loadStripe: LoadStripe;
2
+ export declare const zonosLoadStripe: LoadStripe;
@@ -4,9 +4,9 @@ export interface LoadParams {
4
4
  advancedFraudSignals: boolean;
5
5
  }
6
6
  export type LoadStripe = (...args: Parameters<StripeConstructor>) => Promise<Stripe | null>;
7
- export declare const findScript: () => HTMLScriptElement | null;
7
+ export declare const zonosStripeFindScript: () => HTMLScriptElement | null;
8
8
  export declare const injectScript: (params: null | LoadParams) => HTMLScriptElement | null;
9
- export declare const loadScript: (params: null | LoadParams) => Promise<StripeConstructor | null>;
9
+ export declare const zonosStripeLoadScript: (params: null | LoadParams) => Promise<StripeConstructor | null>;
10
10
  export declare const initStripe: (maybeStripe: StripeConstructor | null, args: [publishableKey: string, options?: import("@stripe/stripe-js").StripeConstructorOptions | undefined], startTime: number) => Stripe | null;
11
11
  export declare const validateLoadParams: (params: {
12
12
  advancedFraudSignals: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zonos/elements",
3
- "version": "1.0.17-alpha.0",
3
+ "version": "1.0.17-alpha.1",
4
4
  "description": "Zonos component UI for Stripe elements",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.cjs.js",