get-all-files
Advanced tools
Comparing version 2.0.0 to 2.0.1
@@ -1,17 +0,15 @@ | ||
'use strict' | ||
"use strict"; | ||
Object.defineProperty(exports, '__esModule', { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}) | ||
exports.default = void 0 | ||
}); | ||
exports.default = void 0; | ||
var _fs = _interopRequireDefault(require('fs')) | ||
var _fs = _interopRequireDefault(require("fs")); | ||
var _path = require('path') | ||
var _path = require("path"); | ||
function _interopRequireDefault(obj) { | ||
return obj && obj.__esModule ? obj : { default: obj } | ||
} | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const fa = _fs.default.promises | ||
const fa = _fs.default.promises; | ||
@@ -25,3 +23,3 @@ function normalizeOptions({ | ||
isExcludedDir | ||
} | ||
}; | ||
} | ||
@@ -31,22 +29,22 @@ | ||
if (options.resolve === true) { | ||
dirname = (0, _path.resolve)(dirname) | ||
dirname = (0, _path.resolve)(dirname); | ||
} | ||
if (dirname.length > 0 && dirname[dirname.length - 1] !== _path.sep) { | ||
dirname += _path.sep | ||
dirname += _path.sep; | ||
} | ||
return dirname | ||
return dirname; | ||
} | ||
function* sync(filename, options) { | ||
options = normalizeOptions(options) | ||
options = normalizeOptions(options); | ||
if (!_fs.default.lstatSync(filename).isDirectory()) { | ||
return filename | ||
return filename; | ||
} | ||
yield* (function* walk(dirname) { | ||
yield* function* walk(dirname) { | ||
if (options.isExcludedDir(dirname)) { | ||
return | ||
return; | ||
} | ||
@@ -57,52 +55,53 @@ | ||
})) { | ||
const filename = dirname + dirent.name | ||
const filename = dirname + dirent.name; | ||
if (dirent.isDirectory()) { | ||
yield* walk(filename + _path.sep) | ||
yield* walk(filename + _path.sep); | ||
} else { | ||
yield filename | ||
yield filename; | ||
} | ||
} | ||
})(normalizeDirname(filename, options)) | ||
}(normalizeDirname(filename, options)); | ||
} | ||
sync.array = (filename, options) => Array.from(sync(filename, options)) | ||
sync.array = (filename, options) => Array.from(sync(filename, options)); | ||
function createNotifier() { | ||
let done = false | ||
let done = false; | ||
let resolve = () => {} | ||
let resolve = () => {}; | ||
let reject = () => {} | ||
let reject = () => {}; | ||
let notified = new Promise((pResolve, pReject) => { | ||
resolve = pResolve | ||
reject = pReject | ||
}) | ||
resolve = pResolve; | ||
reject = pReject; | ||
}); | ||
return { | ||
resolve() { | ||
const oldResolve = resolve | ||
const oldResolve = resolve; | ||
notified = new Promise((pResolve, pReject) => { | ||
resolve = pResolve | ||
reject = pReject | ||
}) | ||
oldResolve() | ||
resolve = pResolve; | ||
reject = pReject; | ||
}); | ||
oldResolve(); | ||
}, | ||
reject(error) { | ||
reject(error) | ||
reject(error); | ||
}, | ||
get done() { | ||
return done | ||
return done; | ||
}, | ||
set done(value) { | ||
done = value | ||
done = value; | ||
}, | ||
onResolved() { | ||
return notified | ||
return notified; | ||
} | ||
} | ||
}; | ||
} | ||
@@ -112,42 +111,38 @@ | ||
if (dirnames.length === 0) { | ||
notifier.done = true | ||
return | ||
notifier.done = true; | ||
return; | ||
} | ||
const children = [] | ||
let pending = dirnames.length | ||
const children = []; | ||
let pending = dirnames.length; | ||
for (const dirname of dirnames) { | ||
if (options.isExcludedDir(dirname)) { | ||
continue | ||
continue; | ||
} | ||
_fs.default.readdir( | ||
dirname, | ||
{ | ||
withFileTypes: true | ||
}, | ||
(error, dirents) => { | ||
if (error != null) { | ||
notifier.reject(error) | ||
return | ||
} | ||
_fs.default.readdir(dirname, { | ||
withFileTypes: true | ||
}, (error, dirents) => { | ||
if (error != null) { | ||
notifier.reject(error); | ||
return; | ||
} | ||
for (const dirent of dirents) { | ||
const filename = dirname + dirent.name | ||
for (const dirent of dirents) { | ||
const filename = dirname + dirent.name; | ||
if (dirent.isDirectory()) { | ||
children.push(filename + _path.sep) | ||
} else { | ||
filenames.push(filename) | ||
} | ||
if (dirent.isDirectory()) { | ||
children.push(filename + _path.sep); | ||
} else { | ||
filenames.push(filename); | ||
} | ||
} | ||
notifier.resolve() | ||
notifier.resolve(); | ||
if (--pending === 0) { | ||
walk(children, filenames, notifier) | ||
} | ||
if (--pending === 0) { | ||
walk(children, filenames, notifier, options); | ||
} | ||
) | ||
}); | ||
} | ||
@@ -157,31 +152,31 @@ } | ||
async function* async(filename, options) { | ||
options = normalizeOptions(options) | ||
options = normalizeOptions(options); | ||
if (!(await fa.lstat(filename)).isDirectory()) { | ||
return filename | ||
return filename; | ||
} | ||
const filenames = [] | ||
const notifier = createNotifier() | ||
walk([normalizeDirname(filename, options)], filenames, notifier, options) | ||
const filenames = []; | ||
const notifier = createNotifier(); | ||
walk([normalizeDirname(filename, options)], filenames, notifier, options); | ||
do { | ||
await notifier.onResolved() | ||
await notifier.onResolved(); | ||
while (filenames.length > 0) { | ||
yield filenames.pop() | ||
yield filenames.pop(); | ||
} | ||
} while (!notifier.done) | ||
} while (!notifier.done); | ||
} | ||
async.array = async (filename, options) => { | ||
const iterator = async(filename, options) | ||
const filenames = [] | ||
const iterator = async(filename, options); | ||
const filenames = []; | ||
for await (const filename of iterator) { | ||
filenames.push(filename) | ||
filenames.push(filename); | ||
} | ||
return filenames | ||
} | ||
return filenames; | ||
}; | ||
@@ -191,3 +186,3 @@ var _default = { | ||
sync | ||
} | ||
exports.default = _default | ||
}; | ||
exports.default = _default; |
145
package.json
{ | ||
"name": "get-all-files", | ||
"version": "2.0.0", | ||
"author": "Tomer Aberbach <tomeraberbach@gmail.com> (https://tomeraberba.ch)", | ||
"description": "A blazing fast recursive directory crawler with lazy sync and async iterator support.", | ||
"keywords": [ | ||
"fs", | ||
"recursive", | ||
"readdir", | ||
"path", | ||
"directory", | ||
"files", | ||
"lazy", | ||
"async", | ||
"iterator", | ||
"iterable" | ||
], | ||
"homepage": "https://github.com/TomerAberbach/get-all-files", | ||
"repository": "TomerAberbach/get-all-files", | ||
"bugs": { | ||
"url": "https://github.com/TomerAberbach/get-all-files/issues" | ||
}, | ||
"license": "MIT", | ||
"main": "lib/get-all-files.js", | ||
"module": "lib/get-all-files.mjs", | ||
"files": [ | ||
"lib" | ||
], | ||
"scripts": { | ||
"lint:eslint:base": "eslint -c ./eslint.config.js --cache --ext js --ignore-path .gitignore", | ||
"lint:eslint": "pnpm run lint:eslint:base -- --fix .", | ||
"lint:prettier:base": "prettier --loglevel silent", | ||
"lint:prettier": "pnpm run lint:prettier:base -- --write .", | ||
"lint": "run-s lint:*", | ||
"test": "ava", | ||
"build:main": "cross-env BABEL_ENV=main babel -o lib/get-all-files.js src/index.js", | ||
"build:module": "cross-env BABEL_ENV=module babel -o lib/get-all-files.mjs src/index.js", | ||
"build": "run-p build:*", | ||
"benchmark": "babel-node src/benchmark.js" | ||
}, | ||
"devDependencies": { | ||
"@ava/babel": "^1.0.1", | ||
"@babel/cli": "^7.8.4", | ||
"@babel/core": "^7.9.6", | ||
"@babel/node": "^7.8.7", | ||
"@babel/preset-env": "^7.9.6", | ||
"@babel/register": "^7.9.0", | ||
"all-files-in-tree": "^1.1.2", | ||
"ava": "^3.8.1", | ||
"babel-eslint": "10.1.0", | ||
"benny": "^3.6.14", | ||
"core-js": "^3.6.5", | ||
"cross-env": "^7.0.2", | ||
"eslint": "6.8.0", | ||
"eslint-config-prettier": "6.11.0", | ||
"eslint-plugin-ava": "10.3.0", | ||
"eslint-plugin-prettier": "3.1.3", | ||
"fdir": "^2.1.1", | ||
"fs-readdir-recursive": "^1.1.0", | ||
"klaw-sync": "^6.0.0", | ||
"npm-run-all": "^4.1.5", | ||
"prettier": "2.0.5", | ||
"recur-readdir": "^0.0.1", | ||
"recursive-files": "^1.0.2", | ||
"recursive-fs": "^2.1.0", | ||
"recursive-readdir": "^2.2.2", | ||
"regenerator-runtime": "^0.13.5", | ||
"rrdir": "^8.0.1", | ||
"walk-sync": "^2.1.0" | ||
}, | ||
"engines": { | ||
"node": ">= 10" | ||
} | ||
"name": "get-all-files", | ||
"version": "2.0.1", | ||
"author": "Tomer Aberbach <tomeraberbach@gmail.com> (https://tomeraberba.ch)", | ||
"description": "A blazing fast recursive directory crawler with lazy sync and async iterator support.", | ||
"keywords": [ | ||
"fs", | ||
"recursive", | ||
"readdir", | ||
"path", | ||
"directory", | ||
"files", | ||
"lazy", | ||
"async", | ||
"iterator", | ||
"iterable" | ||
], | ||
"homepage": "https://github.com/TomerAberbach/get-all-files", | ||
"repository": "TomerAberbach/get-all-files", | ||
"bugs": { | ||
"url": "https://github.com/TomerAberbach/get-all-files/issues" | ||
}, | ||
"license": "MIT", | ||
"main": "lib/get-all-files.js", | ||
"module": "lib/get-all-files.mjs", | ||
"files": [ | ||
"lib" | ||
], | ||
"scripts": { | ||
"lint:eslint:base": "eslint -c ./eslint.config.js --cache --ext js --ignore-path .gitignore", | ||
"lint:eslint": "pnpm run lint:eslint:base -- --fix .", | ||
"lint:prettier:base": "prettier --loglevel silent", | ||
"lint:prettier": "pnpm run lint:prettier:base -- --write .", | ||
"lint": "run-s lint:*", | ||
"test": "ava", | ||
"build:main": "cross-env BABEL_ENV=main babel -o lib/get-all-files.js src/index.js", | ||
"build:module": "cross-env BABEL_ENV=module babel -o lib/get-all-files.mjs src/index.js", | ||
"build": "run-p build:*", | ||
"benchmark": "babel-node src/benchmark.js" | ||
}, | ||
"devDependencies": { | ||
"@ava/babel": "^1.0.1", | ||
"@babel/cli": "^7.8.4", | ||
"@babel/core": "^7.9.6", | ||
"@babel/node": "^7.8.7", | ||
"@babel/preset-env": "^7.9.6", | ||
"@babel/register": "^7.9.0", | ||
"all-files-in-tree": "^1.1.2", | ||
"ava": "^3.8.2", | ||
"babel-eslint": "10.1.0", | ||
"benny": "^3.6.14", | ||
"core-js": "^3.6.5", | ||
"cross-env": "^7.0.2", | ||
"eslint": "7.0.0", | ||
"eslint-config-prettier": "6.11.0", | ||
"eslint-plugin-ava": "10.3.0", | ||
"eslint-plugin-prettier": "3.1.3", | ||
"fdir": "^3.4.2", | ||
"fs-readdir-recursive": "^1.1.0", | ||
"klaw-sync": "^6.0.0", | ||
"np": "^6.2.3", | ||
"npm-run-all": "^4.1.5", | ||
"prettier": "2.0.5", | ||
"recur-readdir": "^0.0.1", | ||
"recursive-files": "^1.0.2", | ||
"recursive-fs": "^2.1.0", | ||
"recursive-readdir": "^2.2.2", | ||
"regenerator-runtime": "^0.13.5", | ||
"rrdir": "^8.1.0", | ||
"walk-sync": "^2.1.0" | ||
}, | ||
"engines": { | ||
"node": ">= 10" | ||
} | ||
} |
@@ -5,3 +5,3 @@ # Get All Files | ||
> A blazing fast recursive directory crawler with sync and async iterator support. | ||
> A blazing fast recursive directory crawler with lazy sync and async iterator support. | ||
@@ -70,3 +70,3 @@ ## Install | ||
A path of file or directory to recursively find files in. | ||
A path to a file or directory to recursively find files in. | ||
@@ -81,3 +81,3 @@ #### `options` | ||
Type: `boolean` | ||
Type: `boolean`\ | ||
Default: `false` | ||
@@ -89,3 +89,3 @@ | ||
Type: `(dirname: string) => boolean` | ||
Type: `(dirname: string) => boolean`\ | ||
Default: `() => false` | ||
@@ -92,0 +92,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
13275
0
29
282