@sentry/node
Version:
Official Sentry SDK for Node.js
44 lines (34 loc) • 1.63 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
const fs = require('fs');
const path = require('path');
/**
* Recursively read the contents of a directory.
*
* @param targetDir Absolute or relative path of the directory to scan. All returned paths will be relative to this
* directory.
* @returns Array holding all relative paths
*/
function deepReadDirSync(targetDir) {
const targetDirAbsPath = path.resolve(targetDir);
if (!fs.existsSync(targetDirAbsPath)) {
throw new Error(`Cannot read contents of ${targetDirAbsPath}. Directory does not exist.`);
}
if (!fs.statSync(targetDirAbsPath).isDirectory()) {
throw new Error(`Cannot read contents of ${targetDirAbsPath}, because it is not a directory.`);
}
// This does the same thing as its containing function, `deepReadDirSync` (except that - purely for convenience - it
// deals in absolute paths rather than relative ones). We need this to be separate from the outer function to preserve
// the difference between `targetDirAbsPath` and `currentDirAbsPath`.
const deepReadCurrentDir = (currentDirAbsPath) => {
return fs.readdirSync(currentDirAbsPath).reduce((absPaths, itemName) => {
const itemAbsPath = path.join(currentDirAbsPath, itemName);
if (fs.statSync(itemAbsPath).isDirectory()) {
return [...absPaths, ...deepReadCurrentDir(itemAbsPath)];
}
return [...absPaths, itemAbsPath];
}, []);
};
return deepReadCurrentDir(targetDirAbsPath).map(absPath => path.relative(targetDirAbsPath, absPath));
}
exports.deepReadDirSync = deepReadDirSync;
//# sourceMappingURL=utils.js.map