Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
guybedford committed Dec 15, 2020
1 parent ac9cb6f commit a4d6eda
Showing 1 changed file with 43 additions and 53 deletions.
96 changes: 43 additions & 53 deletions src/system-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export { systemJSPrototype, REGISTRY }

var toStringTag = hasSymbol && Symbol.toStringTag;
var REGISTRY = hasSymbol ? Symbol() : '@';
var emptyFunction = function () {};

function SystemJS () {
this[REGISTRY] = {};
Expand Down Expand Up @@ -52,7 +53,7 @@ systemJSPrototype.createContext = function (parentId) {

// onLoad(err, id, deps) provided for tracing / hot-reloading
if (!process.env.SYSTEM_PRODUCTION)
systemJSPrototype.onload = function () {};
systemJSPrototype.onload = emptyFunction;
function loadToId (load) {
return load.id;
}
Expand Down Expand Up @@ -129,16 +130,15 @@ export function getOrCreateLoad (loader, id, firstParentUrl) {
},
meta: loader.createContext(id)
} : undefined);
load.e = declared.execute || function () {};
load.e = declared.execute || emptyFunction;
return [registration[0], declared.setters || []];
}, function (err) {
load.e = null;
load.er = err;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, true);
throw err;
});

if (!process.env.SYSTEM_PRODUCTION)
instantiatePromise = instantiatePromise.catch(function (err) {
triggerOnload(loader, load, err, true);
throw err;
});

var linkPromise = instantiatePromise
.then(function (instantiation) {
return Promise.all(instantiation[0].map(function (dep, i) {
Expand All @@ -164,24 +164,20 @@ export function getOrCreateLoad (loader, id, firstParentUrl) {
});

return depLoad;
}, function (err) {
load.e = null;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, false);
throw err;
});
})
}))
.then(
function (depLoads) {
load.d = depLoads;
},
!process.env.SYSTEM_PRODUCTION && function (err) {
triggerOnload(loader, load, err, false);
throw err;
}
)
.then(function (depLoads) {
load.d = depLoads;
});
});

linkPromise.catch(function (err) {
load.e = null;
load.er = err;
});
// Node.js unhandled rejections
linkPromise.catch(emptyFunction);

// Capital letter = a promise function
return load = loader[REGISTRY][id] = {
Expand Down Expand Up @@ -229,7 +225,7 @@ function instantiateAll (loader, load, loaded) {
return Promise.all(load.d.map(function (dep) {
return instantiateAll(loader, dep, loaded);
}));
})
});
}
}

Expand Down Expand Up @@ -264,56 +260,50 @@ function postOrderExec (loader, load, seen) {
// deps execute first, unless circular
var depLoadPromises;
load.d.forEach(function (depLoad) {
try {
var depLoadPromise = postOrderExec(loader, depLoad, seen);
if (depLoadPromise)
(depLoadPromises = depLoadPromises || []).push(depLoadPromise);
}
catch (err) {
load.e = null;
load.er = err;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, false);
else throw err;
}
});
if (depLoadPromises)
return Promise.all(depLoadPromises).then(doExec, function (err) {
try {
var depLoadPromise = postOrderExec(loader, depLoad, seen);
if (depLoadPromise)
(depLoadPromises = depLoadPromises || []).push(depLoadPromise);
}
catch (err) {
load.e = null;
load.er = err;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, false);
else throw err;
});
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, false);
throw err;
}
});
if (depLoadPromises)
return Promise.all(depLoadPromises).then(doExec);

return doExec();

function doExec () {
try {
var execPromise = load.e.call(nullContext);
if (execPromise) {
execPromise = execPromise.then(function () {
load.C = load.n;
load.E = null; // indicates completion
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, null, true);
}, function (err) {
load.er = err;
load.E = null;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, true);
else throw err;
});
return load.E = load.E || execPromise;
execPromise = execPromise.then(function () {
load.C = load.n;
load.E = null; // indicates completion
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, null, true);
}, function (err) {
load.er = err;
load.E = null;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, true);
throw err;
});
return load.E = execPromise;
}
// (should be a promise, but a minify optimization to leave out Promise.resolve)
load.C = load.n;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, null, true);
}
catch (err) {
load.er = err;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, err, true);
else throw err;
throw err;
}
finally {
load.L = load.I = undefined;
load.e = null;
if (!process.env.SYSTEM_PRODUCTION) triggerOnload(loader, load, load.er, true);
}
}
}
Expand Down

0 comments on commit a4d6eda

Please sign in to comment.