Walk fileobjects recursively and apply a provided payload to them.
fileobject-walker is out of maintenance until further notice.
There will be no additional features, and no bugfixes. If you're interested in taking over this project, you may use GitHub to get in touch (e.g. by posting an issue in this repository).
Just install from npm:
npm install @mischback/fileobject-walker
The fileObjectWalker()
accepts two mandatory and unlimited optional parameters.
startingPoint
: A file or directory (provided as string) as starting point of the walker. If specified as a relative path, the function will resolve it (make it absolute) with the current working directory of your Node process as root.payload
: The function to execute on files. The function must accept a filename, specified as string, as its first parameter. It may accept more parameters for its internal control flow (see below). The function is expected to work Promise-based.- any parameter provided after
payload
are considered parameters for the providedpayload
function and are passed on when executing thepayload
.
See the following application in TypeScript. Please note, that the parameters
passed to payload
are of type unknown
and must be cast to their original
type inside of the payload
function.
import { fileObjectWalker } from "../walker";
import { basename } from "path";
function examplePayload(
filename: string,
payloadArg1: unknown,
payloadArg2: unknown
): Promise<{ [key: string]: string }> {
const arg1 = payloadArg1 as string;
const arg2 = payloadArg2 as number;
return new Promise((resolve, reject) => {
if (basename(filename) !== arg1) return resolve({ [filename]: "skipped" });
return reject(arg2);
});
}
fileObjectWalker("./", examplePayload, "foo.txt", 1337)
.then((retVal) => {
// produces a long list of files if there is no "foo.txt" in your current
// working directory or any of its subfolders
console.log(retVal);
})
.catch((err) => {
// 1337 if there is a "foo.txt" in your current working directory or any of
// its subfolders
console.log(err);
});
Issues, pull requests and feature requests are welcome. Just use the project's issue tracker.
fileobject-walker is implemented in TypeScript and compiled/transpiled to actual JavaScript on release.