dimport
Version:
Run ES Module syntax in any browser – even IE!
2 lines (1 loc) • 1.37 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.dimport=t()}(this,function(){function e(e,t){t.onerror=t.onload=null,URL.revokeObjectURL(t.temp),URL.revokeObjectURL(t.src),delete window[e],t.remove()}function t(e,t){return URL.createObjectURL(new Blob([t.replace(/(^|\s|;)(import\s*)(\(|.*from\s*|)['"]([^'"]+)['"]/gi,function(t,n,o,r,i){return n+("("==r?"window.dimport":o)+r+"'"+new URL(i,e)+"'"}).replace(/(^|\s|;)(import)(?=\()/g,"$1window.dimport")],{type:"application/javascript"}))}var n={};function o(r){r=new URL(r,location.href).href;try{return new Function("return import('"+r+"')").call()}catch(i){return n[r]?Promise.resolve(n[r]):fetch(r).then(function(e){return e.text()}).then(function(c){return window.dimport=o,new Promise(function(o,d,u){i=document.createElement("script"),u="$"+Math.random().toString(32).slice(2),i.type="module",i.onerror=function(){e(u,i),d(new TypeError("Failed to fetch dynamically imported module: "+r))},i.onload=function(){o(n[r]=window[u]),e(u,i)},i.temp=t(r,c),i.src=t(r,"import * as m from '"+i.temp+"';window."+u+"=m;"),document.head.appendChild(i)})})}}var r=void 0!==document&&document.currentScript||document.querySelector("script[data-main]");return r&&(r.text?o(t(location.href,r.text)):(r=r.getAttribute("data-main"))&&o(r)),o});