wip on fakeSystem

This commit is contained in:
ScriptedAlchemy 2020-04-09 12:39:29 -07:00 committed by Tobias Koppers
parent 88f4d1fe0b
commit aabcb3ceac
2 changed files with 16 additions and 24 deletions

View File

@ -32,19 +32,6 @@ module.exports = {
}
});
});
scope.DEF = {
get(module) {
return new Promise(resolve => {
setTimeout(() => {
resolve(() => ({
__esModule: true,
module,
default: "def"
}));
}, 100);
});
}
};
},
afterExecute: () => {
System.execute("(anonym)");

View File

@ -12,6 +12,15 @@ const System = {
fn = deps;
deps = [];
}
let entry = {
name,
deps,
fn,
executed: false,
exports: undefined
};
const dynamicExport = result => {
if (System.registry[name] !== entry) {
throw new Error(`Module ${name} calls dynamicExport too late`);
@ -26,30 +35,25 @@ const System = {
return Promise.resolve();
}
};
if (name in System.registry) {
throw new Error(`Module ${name} is already registered`);
}
const mod = fn(dynamicExport, systemContext);
System.registry[name] = entry;
entry.mod = fn(dynamicExport, systemContext);
if (deps.length > 0) {
if (!Array.isArray(mod.setters)) {
if (!Array.isArray(entry.mod.setters)) {
throw new Error(
`Module ${name} must have setters, because it has dependencies`
);
}
if (mod.setters.length !== deps.length) {
if (entry.mod.setters.length !== deps.length) {
throw new Error(
`Module ${name} has incorrect number of setters for the dependencies`
);
}
}
const entry = {
name,
deps,
fn,
mod,
executed: false,
exports: undefined
};
System.registry[name] = entry;
},
registry: undefined,
@ -72,6 +76,7 @@ const System = {
},
ensureExecuted: name => {
const m = System.registry[name];
console.log(m);
if (!m) throw new Error(`Module ${name} not registered`);
if (!m.executed) {
m.executed = true;