forked from caridy/es6-micro-loader
/
system-polyfill.min.js
1 lines (1 loc) · 1.79 KB
/
system-polyfill.min.js
1
!function(a){"use strict";function b(a,b){if("/"===a.charAt(0)&&(a=a.slice(1)),"."!==a.charAt(0))return a;for(var c=a.split("/");"."===c[0]||".."===c[0];)".."===c.shift()&&b.pop();return b.concat(c).join("/")}function c(a){var b=k[a];return b&&!j[a]&&(j[a]=!0,b.execute()),b&&b.proxy}function d(a,b){l[a]=b}function e(a){return l[a]||c(a)}function f(a){return!!l[a]||!!k[a]}function g(b,c){try{Services.scriptloader.loadSubScript(b,a,"UTF-8"),c()}catch(d){c(d)}}function h(a){return new Promise(function(b,c){g((m.baseURL||"/")+a+".js",function(d){i&&(m.register(a,i[0],i[1]),i=void 0);var e=k[a];return e?void Promise.all(e.deps.map(function(a){return l[a]||k[a]?Promise.resolve():h(a)})).then(b,c):void c(new Error("Error loading module "+a))})})}var i,j=Object.create(null),k=Object.create(null),l=Object.create(null),m={set:d,get:e,has:f,"import":function(a){return new Promise(function(c,d){var f=b(a,[]),g=e(f);return g?c(g):h(a).then(function(){c(e(f))})["catch"](d)})},register:function(a,c,d){if(Array.isArray(a))return i=[],void i.push.apply(i,arguments);var f,g,h=Object.create(null),j=Object.create(null);k[a]=f={proxy:h,values:j,deps:c.map(function(c){return b(c,a.split("/").slice(0,-1))}),dependants:[],update:function(a,b){g.setters[f.deps.indexOf(a)](b)},execute:function(){f.deps.map(function(b){var c=l[b];c?f.update(b,c):(c=e(b)&&k[b].values,c&&(k[b].dependants.push(a),f.update(b,c)))}),g.execute()}},g=d(function m(b,c){return"object"==typeof b?Object.keys(b).map(function(a){var c=b[a];return m(a,c),[a,c]}).reduce(function(a,b){return a[b[0]]=b[1],a},Object.create(null)):(j[b]=c,f.lock=!0,f.dependants.forEach(function(b){k[b]&&!k[b].lock&&k[b].update(a,j)}),f.lock=!1,Object.getOwnPropertyDescriptor(h,b)||Object.defineProperty(h,b,{enumerable:!0,get:function(){return j[b]}}),c)})}};a.System=m}(this);