{"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 {\n const { async, defer, beforeLoad, crossOrigin, nonce } = opts || {};\n\n const load = () => {\n return new Promise((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"}