UNPKG

@expressive-tea/plugin

Version:

A Plugin Engine for Expressive Tea Framework.

33 lines (32 loc) 1.27 kB
"use strict"; 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;