index.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var scanDirectoryInternal = function () {
  6. var _ref = _asyncToGenerator(function* (path, recursive, validate, result) {
  7. var itemStat = yield stat(path);
  8. if (itemStat.isFile()) {
  9. result.files.push(path);
  10. } else if (itemStat.isDirectory() && recursive !== 0) {
  11. result.directories.push(path);
  12. }
  13. if (!itemStat.isDirectory() || recursive === 0) {
  14. return;
  15. }
  16. var contents = yield readdir(path);
  17. yield (0, _pMap2.default)(contents, function () {
  18. var _ref2 = _asyncToGenerator(function* (item) {
  19. var itemPath = _path2.default.join(path, item);
  20. if (validate(itemPath)) {
  21. yield scanDirectoryInternal(itemPath, recursive === 1 ? 0 : 2, validate, result);
  22. }
  23. });
  24. return function (_x5) {
  25. return _ref2.apply(this, arguments);
  26. };
  27. }());
  28. });
  29. return function scanDirectoryInternal(_x, _x2, _x3, _x4) {
  30. return _ref.apply(this, arguments);
  31. };
  32. }();
  33. var scanDirectory = function () {
  34. var _ref3 = _asyncToGenerator(function* (path) {
  35. var givenRecursive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  36. var givenValidate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  37. (0, _assert2.default)(path && typeof path === 'string', 'path must be a valid string');
  38. (0, _assert2.default)(!givenValidate || typeof givenValidate === 'function', 'validate must be a valid function');
  39. var recursive = !!givenRecursive;
  40. var validate = givenValidate || function (itemPath) {
  41. return _path2.default.basename(itemPath).substr(0, 1) !== '.';
  42. };
  43. var result = { files: [], directories: [] };
  44. yield scanDirectoryInternal(path, recursive ? 2 : 1, validate, result);
  45. return result;
  46. });
  47. return function scanDirectory(_x6) {
  48. return _ref3.apply(this, arguments);
  49. };
  50. }();
  51. var _fs = require('fs');
  52. var _fs2 = _interopRequireDefault(_fs);
  53. var _path = require('path');
  54. var _path2 = _interopRequireDefault(_path);
  55. var _pMap = require('p-map');
  56. var _pMap2 = _interopRequireDefault(_pMap);
  57. var _assert = require('assert');
  58. var _assert2 = _interopRequireDefault(_assert);
  59. var _sbPromisify = require('sb-promisify');
  60. var _sbPromisify2 = _interopRequireDefault(_sbPromisify);
  61. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  62. function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
  63. var stat = (0, _sbPromisify2.default)(_fs2.default.stat);
  64. var readdir = (0, _sbPromisify2.default)(_fs2.default.readdir);
  65. exports.default = scanDirectory;