util.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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 _minimatch = require("minimatch");
  30. var _minimatch2 = _interopRequireDefault(_minimatch);
  31. var _includes = require("lodash/includes");
  32. var _includes2 = _interopRequireDefault(_includes);
  33. var _isRegExp = require("lodash/isRegExp");
  34. var _isRegExp2 = _interopRequireDefault(_isRegExp);
  35. var _path = require("path");
  36. var _path2 = _interopRequireDefault(_path);
  37. var _slash = require("slash");
  38. var _slash2 = _interopRequireDefault(_slash);
  39. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  40. function canCompile(filename, altExts) {
  41. var exts = altExts || canCompile.EXTENSIONS;
  42. var ext = _path2.default.extname(filename);
  43. return (0, _includes2.default)(exts, ext);
  44. }
  45. canCompile.EXTENSIONS = [".js", ".jsx", ".es6", ".es"];
  46. function list(val) {
  47. if (!val) {
  48. return [];
  49. } else if (Array.isArray(val)) {
  50. return val;
  51. } else if (typeof val === "string") {
  52. return val.split(",");
  53. } else {
  54. return [val];
  55. }
  56. }
  57. function regexify(val) {
  58. if (!val) {
  59. return new RegExp(/.^/);
  60. }
  61. if (Array.isArray(val)) {
  62. val = new RegExp(val.map(_escapeRegExp2.default).join("|"), "i");
  63. }
  64. if (typeof val === "string") {
  65. val = (0, _slash2.default)(val);
  66. if ((0, _startsWith2.default)(val, "./") || (0, _startsWith2.default)(val, "*/")) val = val.slice(2);
  67. if ((0, _startsWith2.default)(val, "**/")) val = val.slice(3);
  68. var regex = _minimatch2.default.makeRe(val, { nocase: true });
  69. return new RegExp(regex.source.slice(1, -1), "i");
  70. }
  71. if ((0, _isRegExp2.default)(val)) {
  72. return val;
  73. }
  74. throw new TypeError("illegal type for regexify");
  75. }
  76. function arrayify(val, mapFn) {
  77. if (!val) return [];
  78. if (typeof val === "boolean") return arrayify([val], mapFn);
  79. if (typeof val === "string") return arrayify(list(val), mapFn);
  80. if (Array.isArray(val)) {
  81. if (mapFn) val = val.map(mapFn);
  82. return val;
  83. }
  84. return [val];
  85. }
  86. function booleanify(val) {
  87. if (val === "true" || val == 1) {
  88. return true;
  89. }
  90. if (val === "false" || val == 0 || !val) {
  91. return false;
  92. }
  93. return val;
  94. }
  95. function shouldIgnore(filename) {
  96. var ignore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  97. var only = arguments[2];
  98. filename = filename.replace(/\\/g, "/");
  99. if (only) {
  100. for (var _iterator = only, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
  101. var _ref;
  102. if (_isArray) {
  103. if (_i >= _iterator.length) break;
  104. _ref = _iterator[_i++];
  105. } else {
  106. _i = _iterator.next();
  107. if (_i.done) break;
  108. _ref = _i.value;
  109. }
  110. var pattern = _ref;
  111. if (_shouldIgnore(pattern, filename)) return false;
  112. }
  113. return true;
  114. } else if (ignore.length) {
  115. for (var _iterator2 = ignore, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
  116. var _ref2;
  117. if (_isArray2) {
  118. if (_i2 >= _iterator2.length) break;
  119. _ref2 = _iterator2[_i2++];
  120. } else {
  121. _i2 = _iterator2.next();
  122. if (_i2.done) break;
  123. _ref2 = _i2.value;
  124. }
  125. var _pattern = _ref2;
  126. if (_shouldIgnore(_pattern, filename)) return true;
  127. }
  128. }
  129. return false;
  130. }
  131. function _shouldIgnore(pattern, filename) {
  132. if (typeof pattern === "function") {
  133. return pattern(filename);
  134. } else {
  135. return pattern.test(filename);
  136. }
  137. }