util.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.inspect = exports.inherits = undefined;
  4. var _getIterator2 = require("babel-runtime/core-js/get-iterator");
  5. var _getIterator3 = _interopRequireDefault(_getIterator2);
  6. var _util = require("util");
  7. Object.defineProperty(exports, "inherits", {
  8. enumerable: true,
  9. get: function get() {
  10. return _util.inherits;
  11. }
  12. });
  13. Object.defineProperty(exports, "inspect", {
  14. enumerable: true,
  15. get: function get() {
  16. return _util.inspect;
  17. }
  18. });
  19. exports.canCompile = canCompile;
  20. exports.list = list;
  21. exports.regexify = regexify;
  22. exports.arrayify = arrayify;
  23. exports.booleanify = booleanify;
  24. exports.shouldIgnore = shouldIgnore;
  25. var _escapeRegExp = require("lodash/escapeRegExp");
  26. var _escapeRegExp2 = _interopRequireDefault(_escapeRegExp);
  27. var _startsWith = require("lodash/startsWith");
  28. var _startsWith2 = _interopRequireDefault(_startsWith);
  29. var _isBoolean = require("lodash/isBoolean");
  30. var _isBoolean2 = _interopRequireDefault(_isBoolean);
  31. var _minimatch = require("minimatch");
  32. var _minimatch2 = _interopRequireDefault(_minimatch);
  33. var _includes = require("lodash/includes");
  34. var _includes2 = _interopRequireDefault(_includes);
  35. var _isString = require("lodash/isString");
  36. var _isString2 = _interopRequireDefault(_isString);
  37. var _isRegExp = require("lodash/isRegExp");
  38. var _isRegExp2 = _interopRequireDefault(_isRegExp);
  39. var _path = require("path");
  40. var _path2 = _interopRequireDefault(_path);
  41. var _slash = require("slash");
  42. var _slash2 = _interopRequireDefault(_slash);
  43. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  44. function canCompile(filename, altExts) {
  45. var exts = altExts || canCompile.EXTENSIONS;
  46. var ext = _path2.default.extname(filename);
  47. return (0, _includes2.default)(exts, ext);
  48. }
  49. canCompile.EXTENSIONS = [".js", ".jsx", ".es6", ".es"];
  50. function list(val) {
  51. if (!val) {
  52. return [];
  53. } else if (Array.isArray(val)) {
  54. return val;
  55. } else if (typeof val === "string") {
  56. return val.split(",");
  57. } else {
  58. return [val];
  59. }
  60. }
  61. function regexify(val) {
  62. if (!val) {
  63. return new RegExp(/.^/);
  64. }
  65. if (Array.isArray(val)) {
  66. val = new RegExp(val.map(_escapeRegExp2.default).join("|"), "i");
  67. }
  68. if (typeof val === "string") {
  69. val = (0, _slash2.default)(val);
  70. if ((0, _startsWith2.default)(val, "./") || (0, _startsWith2.default)(val, "*/")) val = val.slice(2);
  71. if ((0, _startsWith2.default)(val, "**/")) val = val.slice(3);
  72. var regex = _minimatch2.default.makeRe(val, { nocase: true });
  73. return new RegExp(regex.source.slice(1, -1), "i");
  74. }
  75. if ((0, _isRegExp2.default)(val)) {
  76. return val;
  77. }
  78. throw new TypeError("illegal type for regexify");
  79. }
  80. function arrayify(val, mapFn) {
  81. if (!val) return [];
  82. if ((0, _isBoolean2.default)(val)) return arrayify([val], mapFn);
  83. if ((0, _isString2.default)(val)) return arrayify(list(val), mapFn);
  84. if (Array.isArray(val)) {
  85. if (mapFn) val = val.map(mapFn);
  86. return val;
  87. }
  88. return [val];
  89. }
  90. function booleanify(val) {
  91. if (val === "true" || val == 1) {
  92. return true;
  93. }
  94. if (val === "false" || val == 0 || !val) {
  95. return false;
  96. }
  97. return val;
  98. }
  99. function shouldIgnore(filename) {
  100. var ignore = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
  101. var only = arguments[2];
  102. filename = (0, _slash2.default)(filename);
  103. if (only) {
  104. for (var _iterator = only, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
  105. var _ref;
  106. if (_isArray) {
  107. if (_i >= _iterator.length) break;
  108. _ref = _iterator[_i++];
  109. } else {
  110. _i = _iterator.next();
  111. if (_i.done) break;
  112. _ref = _i.value;
  113. }
  114. var pattern = _ref;
  115. if (_shouldIgnore(pattern, filename)) return false;
  116. }
  117. return true;
  118. } else if (ignore.length) {
  119. for (var _iterator2 = ignore, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
  120. var _ref2;
  121. if (_isArray2) {
  122. if (_i2 >= _iterator2.length) break;
  123. _ref2 = _iterator2[_i2++];
  124. } else {
  125. _i2 = _iterator2.next();
  126. if (_i2.done) break;
  127. _ref2 = _i2.value;
  128. }
  129. var _pattern = _ref2;
  130. if (_shouldIgnore(_pattern, filename)) return true;
  131. }
  132. }
  133. return false;
  134. }
  135. function _shouldIgnore(pattern, filename) {
  136. if (typeof pattern === "function") {
  137. return pattern(filename);
  138. } else {
  139. return pattern.test(filename);
  140. }
  141. }