(src: string | ScriptToLoad)
| 16 | type ScriptToLoad = { id: string; src: string }; |
| 17 | |
| 18 | export const loadScript = (src: string | ScriptToLoad) => { |
| 19 | const scriptToLoad = isString(src) ? { id: src, src } : src; |
| 20 | return new Promise<string>((res, rej) => { |
| 21 | const script = document.createElement('script'); |
| 22 | |
| 23 | if (document.querySelector(`script[src="${scriptToLoad.src}"]`)) { |
| 24 | return res(scriptToLoad.id); |
| 25 | } |
| 26 | |
| 27 | script.src = scriptToLoad.src; |
| 28 | script.onload = () => res(scriptToLoad.id); |
| 29 | script.onerror = () => rej(scriptToLoad.id); |
| 30 | document.head.appendChild(script); |
| 31 | }); |
| 32 | }; |
| 33 | |
| 34 | export const loadScripts = (scripts: { id: string; src: string }[]) => { |
| 35 | const promises = scripts.map(script => loadScript(script)); |
no test coverage detected