{"version":3,"file":"loadScript.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      if (nonce) {\n        script.nonce = nonce;\n      }\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,CAAC;CAElE,MAAM,aAAa;EACjB,OAAO,IAAI,SAA4B,SAAS,WAAW;GACzD,IAAI,CAAC,KACH,uBAAO,IAAI,MAAM,YAAY,CAAC;GAGhC,IAAI,CAAC,YAAY,CAAC,SAAS,MACzB,uBAAO,IAAI,MAAM,iBAAiB,CAAC;GAGrC,MAAM,SAAS,SAAS,cAAc,QAAQ;GAE9C,IAAI,aACF,OAAO,aAAa,eAAe,WAAW;GAEhD,OAAO,QAAQ,SAAS;GACxB,OAAO,QAAQ,SAAS;GAExB,OAAO,iBAAiB,cAAc;IACpC,OAAO,OAAO;IACd,QAAQ,MAAM;GAChB,CAAC;GAED,OAAO,iBAAiB,UAAS,UAAS;IACxC,OAAO,OAAO;IACd,OAAO,MAAM,yBAAS,IAAI,MAAM,0BAA0B,KAAK,CAAC;GAClE,CAAC;GAED,OAAO,MAAM;GACb,IAAI,OACF,OAAO,QAAQ;GAEjB,aAAa,MAAM;GACnB,SAAS,KAAK,YAAY,MAAM;EAClC,CAAC;CACH;CAEA,OAAO,MAAM,MAAM,EACjB,cAAc,GAAG,eAAe;EAC9B,OAAO,cAAc;CACvB,EACF,CAAC;AACH"}