Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/wwwroot/mifepriston.org/node_modules/easy-extender/ |
Upload File : |
var _ = require("lodash"); /** * @constructor */ var EasyExtender = function (plugins, hooks) { this.plugins = {}; this.pluginOptions = {}; this.returnValues = {}; this.hooks = hooks; this.defaultPlugins = plugins; return this; }; /** * @returns {EasyExtender} */ EasyExtender.prototype.init = function () { if (this.defaultPlugins) { var required = Object.keys(this.defaultPlugins); required.forEach(function (name) { if (_.isUndefined(this.plugins[name])) { this.plugins[name] = this.defaultPlugins[name]; } }, this); } return this; }; /** * Call the '.plugin()' method of all registered plugins */ EasyExtender.prototype.initUserPlugins = function () { var args = _.toArray(arguments); var userPlugins = _.difference(Object.keys(this.plugins), Object.keys(this.defaultPlugins)); if (userPlugins.length) { userPlugins.forEach(function (plugin) { var pluginOptions = {}; if (this.pluginOptions) { pluginOptions = this.pluginOptions[plugin]; } this.returnValues[plugin].push({ value: this.get(plugin).apply(null, [pluginOptions].concat(args)) }); if (!_.isUndefined(pluginOptions) && !_.isUndefined(pluginOptions.enabled)) { if (pluginOptions.enabled) { this.enablePlugin(plugin); } else { this.disablePlugin(plugin); } } else { this.enablePlugin(plugin); } }, this); } }; /** * Wrap a module in East Extender pattern * @param module * @param localName */ EasyExtender.prototype.wrap = function (module, localName) { this.registerPlugin({ "plugin:name": localName, "plugin": function () { return module; } }); }; /** * @param {String} name * @returns {Function|Boolean} */ EasyExtender.prototype.get = function (name) { if (!_.isUndefined(this.plugins[name])) { return this.plugins[name].plugin || false; } return false; }; /** * @param {Object} module * @param {Object} [opts] * @param {Function} [cb] */ EasyExtender.prototype.registerPlugin = function (module, opts, cb) { var pluginOptions; if (!_.isFunction(module.plugin)) { return _.isFunction(cb) ? cb("Module must implement a .plugin() method") : false; } if (!cb && opts) { if (_.isFunction(opts)) { cb = opts; } else { pluginOptions = opts; } } var name = _.isUndefined(module["plugin:name"]) ? _.uniqueId() : module["plugin:name"]; this.pluginOptions[name] = pluginOptions; this.returnValues[name] = []; this.plugins[name] = module; if (_.isFunction(cb)) { cb(null); } this.disablePlugin(name); return this; }; /** * * @param name */ EasyExtender.prototype.getPlugin = function (module) { if (_.isString(module)) { module = this.plugins[module]; } if (!module) { return false; } return module; }; /** * * @param name */ EasyExtender.prototype.disablePlugin = function (module) { module = this.getPlugin(module); module._enabled = false; return module; }; /** * @param name */ EasyExtender.prototype.enablePlugin = function (module) { module = this.getPlugin(module); module._enabled = true; return module; }; /** * @param name * @returns {*} */ EasyExtender.prototype.hook = function (name) { // Get any extra args var args = Array.prototype.slice.call(arguments, 1); // build a list of hook funcs var funcs = []; _.each(this.plugins, function (plugin) { if (plugin.hooks) { if (!_.isUndefined(plugin.hooks[name])) { funcs.push(plugin.hooks[name]); } } }); return this.hooks[name].apply(this, [funcs].concat(args)); }; /** * @param name * @returns {*} */ EasyExtender.prototype.getReturnValues = function (name) { return this.returnValues[name] || []; }; module.exports = EasyExtender;