{"version":3,"file":"loadScript-UG_epen4.mjs","names":[],"sources":["../../src/loadScript.ts"],"sourcesContent":["import { retry } from './retry';\n\nconst NO_DOCUMENT_ERROR = 'loadScript cannot be called when document does not exist';\nconst NO_SRC_ERROR = 'loadScript cannot be called without a src';\n\ntype LoadScriptOptions = {\n  async?: boolean;\n  defer?: boolean;\n  crossOrigin?: 'anonymous' | 'use-credentials';\n  nonce?: string;\n  beforeLoad?: (script: HTMLScriptElement) => void;\n};\n\n/**\n *\n */\nexport async function loadScript(src = '', opts: LoadScriptOptions): Promise<HTMLScriptElement> {\n  const { async, defer, beforeLoad, crossOrigin, nonce } = opts || {};\n\n  const load = () => {\n    return new Promise<HTMLScriptElement>((resolve, reject) => {\n      if (!src) {\n        reject(new Error(NO_SRC_ERROR));\n      }\n\n      if (!document || !document.body) {\n        reject(new Error(NO_DOCUMENT_ERROR));\n      }\n\n      const script = document.createElement('script');\n\n      if (crossOrigin) {\n        script.setAttribute('crossorigin', crossOrigin);\n      }\n      script.async = async || false;\n      script.defer = defer || false;\n\n      script.addEventListener('load', () => {\n        script.remove();\n        resolve(script);\n      });\n\n      script.addEventListener('error', event => {\n        script.remove();\n        reject(event.error ?? new Error(`failed to load script: ${src}`));\n      });\n\n      script.src = src;\n      script.nonce = nonce;\n      beforeLoad?.(script);\n      document.body.appendChild(script);\n    });\n  };\n\n  return retry(load, {\n    shouldRetry: (_, iterations) => {\n      return iterations <= 5;\n    },\n  });\n}\n"],"mappings":";;;AAEA,MAAM,oBAAoB;AAC1B,MAAM,eAAe;;;;AAarB,eAAsB,WAAW,MAAM,IAAI,MAAqD;CAC9F,MAAM,EAAE,OAAO,OAAO,YAAY,aAAa,UAAU,QAAQ,EAAE;CAEnE,MAAM,aAAa;AACjB,SAAO,IAAI,SAA4B,SAAS,WAAW;AACzD,OAAI,CAAC,IACH,QAAO,IAAI,MAAM,aAAa,CAAC;AAGjC,OAAI,CAAC,YAAY,CAAC,SAAS,KACzB,QAAO,IAAI,MAAM,kBAAkB,CAAC;GAGtC,MAAM,SAAS,SAAS,cAAc,SAAS;AAE/C,OAAI,YACF,QAAO,aAAa,eAAe,YAAY;AAEjD,UAAO,QAAQ,SAAS;AACxB,UAAO,QAAQ,SAAS;AAExB,UAAO,iBAAiB,cAAc;AACpC,WAAO,QAAQ;AACf,YAAQ,OAAO;KACf;AAEF,UAAO,iBAAiB,UAAS,UAAS;AACxC,WAAO,QAAQ;AACf,WAAO,MAAM,yBAAS,IAAI,MAAM,0BAA0B,MAAM,CAAC;KACjE;AAEF,UAAO,MAAM;AACb,UAAO,QAAQ;AACf,gBAAa,OAAO;AACpB,YAAS,KAAK,YAAY,OAAO;IACjC;;AAGJ,QAAO,MAAM,MAAM,EACjB,cAAc,GAAG,eAAe;AAC9B,SAAO,cAAc;IAExB,CAAC"}