magnet-core
Version:
Magnet's core, a simple module loader.
65 lines • 2.43 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
function setupModules(app, pModule) {
return __awaiter(this, void 0, void 0, function* () {
try {
let task;
let Module;
let parameters = [app];
if (!pModule) {
return;
}
if (pModule.module) {
Module = pModule.module;
parameters.push(pModule.options);
}
else {
Module = pModule;
}
task = new Module(...parameters);
yield task.setup();
if (task.teardown) {
return task.teardown.bind(task);
}
}
catch (err) {
throw err;
}
});
}
exports.setupModules = setupModules;
function performTasks(app, modules) {
return __awaiter(this, void 0, void 0, function* () {
let allModuleDone;
let teardowns = [];
let fails = [];
try {
modules = modules.map((module) => Array.isArray(module) ? module : [module]);
for (let mdls of modules) {
mdls = mdls.map((mo) => setupModules(app, mo));
allModuleDone = yield Promise.all(mdls.map(utils_1.reflect));
teardowns.push(utils_1.retrieveReflect(allModuleDone, 'value'));
fails = utils_1.retrieveReflect(allModuleDone, 'error');
if (fails.length) {
return { teardowns, fails };
}
}
return { teardowns, fails };
}
catch (err) {
app.log.error(err);
return { teardowns, fails };
}
});
}
exports.performTasks = performTasks;
//# sourceMappingURL=process.js.map