UNPKG

chai-autoload-plugins

Version:

Automatically load chai plugins declared in package.json

58 lines (51 loc) 2.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadPlugins = loadPlugins; exports.loadPackagePlugins = loadPackagePlugins; var _matcher = require('./matcher'); /** * Load plugins from a list, including/excluding some based on a given configuration * @param {string[]} plugins List of plugins * @param {function(plugin:string): *} loadPlugin Function that loads a plugin * @param {object} settings Settings * @property {?(string|string[])} settings.include Regular expression, or array of names to include * @property {?(string|string[])} settings.exclude Regular expression, or array of names to exclude * (takes precence over `include`) * @return {*[]} Values returned by `loadPlugin` */ function loadPlugins(plugins, loadPlugin, _ref) { var include = _ref.include, exclude = _ref.exclude; return plugins.filter((0, _matcher.buildFilter)(include, exclude)).map(loadPlugin); } /** * Load Chai plugins of a package * @param {object} packageDefinition Content of `package.json` * @property {string[]} devDependencies=[] List of all available plugins * @property {?object} chaiAutoloadPlugins={} Settings * @property {?(string|string[])} chaiAutoloadPlugins.include Regular expression, or array of names * to include * @property {?(string|string[])} chaiAutoloadPlugins.exclude Regular expression, or array of names * to exclude (takes precence over * `include`) * @param {?function(name: string): object} _require=require CommonJS-like `require` method * @param {?object} chai=_require('chai') Chai */ function loadPackagePlugins(packageDefinition) { var _require = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : require; var chai = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _require('chai'); var _packageDefinition$de = packageDefinition.devDependencies, devDependencies = _packageDefinition$de === undefined ? [] : _packageDefinition$de, _packageDefinition$ch = packageDefinition.chaiAutoloadPlugins, config = _packageDefinition$ch === undefined ? {} : _packageDefinition$ch; var plugins = Object.keys(devDependencies); var loadPlugin = function loadPlugin(name) { var plugin = _require(name); if (typeof plugin === 'function') return chai.use(plugin); return null; }; var cfg = Object.assign({ include: '(^chai-|-chai$)', exclude: [] }, config); return loadPlugins(plugins, loadPlugin, cfg); }