"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; function _react() { const data = _interopRequireDefault(require("react")); _react = function _react() { return data; }; return data; } function _fs() { const data = require("fs"); _fs = function _fs() { return data; }; return data; } function _assert() { const data = _interopRequireDefault(require("assert")); _assert = function _assert() { return data; }; return data; } function _path() { const data = require("path"); _path = function _path() { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _default(dirPath, opts = {}) { const showHidden = opts.showHidden, directoryOnly = opts.directoryOnly; (0, _assert().default)((0, _fs().statSync)(dirPath).isDirectory(), `path ${dirPath} is not a directory`); // Windows dir may have no rights, will throw error "not permitted" const items = (0, _fs().readdirSync)(dirPath).filter(fileName => { if (showHidden) { return true; } else { return !fileName.startsWith('.'); } }).map(fileName => { // 如果文件无权访问,返回一个空,筛掉他们 try { const type = (0, _fs().statSync)((0, _path().join)(dirPath, fileName)).isDirectory() ? 'directory' : 'file'; return { type, fileName }; } catch (error) { return null; } }).filter(item => item); let dirs = []; let files = []; items.forEach(item => { if (item.type === 'directory') { dirs.push(item); } else { files.push(item); } }); dirs = dirs.sort((a, b) => { return a - b; }); files = files.sort((a, b) => { return a - b; }); if (directoryOnly) { return dirs; } else { return dirs.concat(files); } }