utils.js 801 B

1234567891011121314151617181920212223242526272829303132333435
  1. "use strict";
  2. const {
  3. inspect
  4. } = require('util');
  5. const _ = require('lodash');
  6. exports.createAssetsFilter = createAssetsFilter;
  7. function createAssetsFilter(excludePatterns) {
  8. const excludeFunctions = _(excludePatterns).castArray().compact().map(pattern => {
  9. if (typeof pattern === 'string') {
  10. pattern = new RegExp(pattern, 'u');
  11. }
  12. if (_.isRegExp(pattern)) {
  13. return asset => pattern.test(asset);
  14. }
  15. if (!_.isFunction(pattern)) {
  16. throw new TypeError(`Pattern should be either string, RegExp or a function, but "${inspect(pattern, {
  17. depth: 0
  18. })}" got.`);
  19. }
  20. return pattern;
  21. }).value();
  22. if (excludeFunctions.length) {
  23. return asset => _.every(excludeFunctions, fn => fn(asset) !== true);
  24. } else {
  25. return () => true;
  26. }
  27. }