UNPKG

s2s

Version:
67 lines (52 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = handlePlugins; var _keyLocker = _interopRequireDefault(require("key-locker")); var _utils = require("../utils"); var _some = _interopRequireDefault(require("../utils/some")); var _handlePlugin = require("./handle-plugin"); var _selectHandler = require("./select-handler"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function validate(plugin, eventPath, eventType) { if (typeof plugin.test === 'string' || Array.isArray(plugin.test)) { return (0, _some.default)(eventPath, plugin.test); } else if (!plugin.test.test(eventPath)) { return false; } if (plugin.only && !plugin.only.includes(eventType)) { return false; } return true; } const lock = new _keyLocker.default(); function handlePlugins(eventPath, eventType, config = {}) { if (lock.has(eventPath)) { return; } const { plugins = [], afterHooks: hooks = [], handlerMapper = {} } = config; for (const plugin of plugins) { if (validate(plugin, eventPath, eventType)) { lock.add(eventPath); try { const handler = (0, _selectHandler.selectHandler)(handlerMapper, plugin.handler, eventPath); (0, _handlePlugin.handlePlugin)(handler, { eventPath, plugin, hooks }); } catch (error) { if (error.code === 'ENOENT') { console.error(error.message); } else { console.error((0, _utils.toErrorStack)(error)); } } } } }