umd-fetcher
Version:
A minimalist UMD module loader.
7 lines (6 loc) • 852 B
JavaScript
/*!
* 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;