@expressive-tea/plugin
Version:
A Plugin Engine for Expressive Tea Framework.
33 lines (32 loc) • 1.27 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Plugin = void 0;
const object_helper_1 = require("@expressive-tea/commons/helpers/object-helper");
const helpers_1 = require("../helpers");
const lodash_1 = require("lodash");
const exceptions_1 = require("../exceptions");
class Plugin {
static isDependencyRegistered(dependencyName, dependencies) {
// tslint:disable-next-line:no-bitwise
return !!~(0, lodash_1.findIndex)(dependencies, ['name', dependencyName]);
}
getRegisteredStage(stage) {
const stages = (0, helpers_1.getStages)(this);
return stages[stage] || [];
}
register(appSettings, registeredPlugins) {
if ((0, lodash_1.size)(this.dependencies)) {
(0, lodash_1.each)(this.dependencies, dependency => {
if (!Plugin.isDependencyRegistered(dependency, registeredPlugins.map(d => d.name))) {
throw new exceptions_1.DependencyNotFound(dependency);
}
});
}
registeredPlugins.push({
name: this.name || (0, object_helper_1.getClass)(this).name,
priority: this.priority || 999
});
return registeredPlugins;
}
}
exports.Plugin = Plugin;
;