8bfaa64c719ac1a3359c21bd695a42f78d198237386ad74d0bf30e092ef184ae157bf5d3f762d464378ad49850a9d49cfa05bc70c6cdcd5fb9f6a4189a8d60 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const {inspect} = require('util');
  2. const _ = require('lodash');
  3. const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  4. exports.createAssetsFilter = createAssetsFilter;
  5. function createAssetsFilter(excludePatterns) {
  6. const excludeFunctions = _(excludePatterns)
  7. .castArray()
  8. .compact()
  9. .map(pattern => {
  10. if (typeof pattern === 'string') {
  11. pattern = new RegExp(pattern, 'u');
  12. }
  13. if (_.isRegExp(pattern)) {
  14. return (asset) => pattern.test(asset);
  15. }
  16. if (!_.isFunction(pattern)) {
  17. throw new TypeError(
  18. `Pattern should be either string, RegExp or a function, but "${inspect(pattern, {depth: 0})}" got.`
  19. );
  20. }
  21. return pattern;
  22. })
  23. .value();
  24. if (excludeFunctions.length) {
  25. return (asset) => _.every(excludeFunctions, fn => fn(asset) !== true);
  26. } else {
  27. return () => true;
  28. }
  29. }
  30. /**
  31. * @desc get string of current time
  32. * format: dd/MMM HH:mm
  33. * */
  34. exports.defaultTitle = function () {
  35. const time = new Date();
  36. const year = time.getFullYear();
  37. const month = MONTHS[time.getMonth()];
  38. const day = time.getDate();
  39. const hour = `0${time.getHours()}`.slice(-2);
  40. const minute = `0${time.getMinutes()}`.slice(-2);
  41. const currentTime = `${day} ${month} ${year} at ${hour}:${minute}`;
  42. return `${process.env.npm_package_name || 'Webpack Bundle Analyzer'} [${currentTime}]`;
  43. };