UNPKG

umd-fetcher

Version:

A minimalist UMD module loader.

7 lines (6 loc) 852 B
/*! * umd-fetcher v1.0.1 * (c) 2021 Alexandre Masy * @license MIT */ class e{static exists({name:e}){return window&&window.hasOwnProperty(e)}static get({name:t,fn:r="default"}){if(!e.exists(t))throw`The requested module with the name "${t}" does not exists.`;return window[t]}static fetch({url:t,name:r}){return e.exists({name:r})?Promise.resolve(e.get({name:r})):new Promise((n,s)=>{const o=document.createElement("script");o.async=!0,o.type="module";let a=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i);let t=setInterval(()=>{if(e.exists({name:r}))return clearInterval(t),n(e.get({name:r}))},1)},i=()=>(o.removeEventListener("load",a),o.removeEventListener("error",i),s(new Error("Error loading "+t)));o.addEventListener("load",a),o.addEventListener("error",i),o.src=t,document.head.appendChild(o)})}}export default e;