Visulima fs
Human friendly file system utilities for Node.js
[
][typescript-url] [![npm-image]][npm-url] [![license-image]][license-url]
Daniel Bannert's open source work is supported by the community on GitHub Sponsors
Install
npm install @visulima/fs
yarn add @visulima/fs
pnpm add @visulima/fs
Note: If you want to parse or write YAML, you'll need to install yaml as well.
npm install yaml
yarn add yaml
pnpm add yaml
After installing yaml, you can use the readYaml, readYamlSync and writeYaml, writeYamlSync functions from @visulima/fs/yaml.
Usage
walk
import { walk } from "@visulima/fs";
const filesAndFolders: string[] = [];
for await (const index of walk(`${__dirname}/fixtures`, {})) {
filesAndFolders.push(index.path);
}
console.log(filesAndFolders);
walkSync
import { walkSync } from "@visulima/fs";
const filesAndFolders: string[] = [];
for (const index of walkSync(`${__dirname}/fixtures`, {})) {
filesAndFolders.push(index.path);
}
console.log(filesAndFolders);
API for walk and walkSync
path
Type: string
The directory to start from.
options
Type: object
maxDepth
Type: number
Default: Infinity
Optional: true
Description: The maximum depth of the file tree to be walked recursively.
includeFiles
Type: boolean
Default: true
Optional: true
Description: Indicates whether file entries should be included or not.
includeDirs
Type: boolean
Default: true
Optional: true
Description: Indicates whether directory entries should be included or not.
includeSymlinks
Type: boolean
Default: true
Optional: true
Description: Indicates whether symlink entries should be included or not. This option is meaningful only if followSymlinks is set to false.
followSymlinks
Type: boolean
Default: false
Optional: true
Description: Indicates whether symlinks should be resolved or not.
extensions
Type: string[]
Default: undefined
Optional: true
Description: List of file extensions used to filter entries. If specified, entries without the file extension specified by this option are excluded.
match
Type: (RegExp | string)[]
Default: undefined
Optional: true
Description: List of regular expression or glob patterns used to filter entries. If specified, entries that do not match the patterns specified by this option are excluded.
skip
Type: (RegExp | string)[]
Default: undefined
Optional: true
Description: List of regular expression or glob patterns used to filter entries. If specified, entries matching the patterns specified by this option are excluded.
findUp
Find a file or directory by walking up parent directories.
import { findUp } from "@visulima/fs";
const file = await findUp("package.json");
console.log(file);
findUpSync
Find a file or directory by walking up parent directories.
import { findUpSync } from "@visulima/fs";
const file = findUpSync("package.json");
console.log(file);
API for findUp and findUpSync
name
Type: string[] | string | ((directory: PathLike) => PathLike | Promise<PathLike | typeof FIND_UP_STOP> | typeof FIND_UP_STOP)
Sync Type: string[] | string | ((directory: PathLike) => PathLike | typeof FIND_UP_STOP)
The name of the file or directory to find.
If an array is specified, the first item that exists will be returned.
A function that will be called with each directory until it returns a string with the path, which stops the search, or the root directory has been reached and nothing was found. Useful if you want to match files with certain patterns, set of permissions, or other advanced use-cases.
When using async mode, the matcher may optionally be an async or promise-returning function that returns the path.
options
Type: object
cwd
Type: URL | string
Default: process.cwd()
The directory to start from.
type
Type: string
Default: 'file'
Values: 'file' | 'directory'
The type of path to match.
stopAt
Type: URL | string
Default: Root directory
A directory path where the search halts if no matches are found before reaching this point.
allowSymlinks
Type: boolean
Default: true
Allow symbolic links to match if they point to the target file or directory.
readFile
Read a file.
import { readFile } from "@visulima/fs";
const file = await readFile("package.json");
console.log(file);
readFileSync
Read a file.
import { readFileSync } from "@visulima/fs";
const file = readFileSync("package.json");
console.log(file);
API for readFile and readFileSync
path
Type: string
The path to the file to read.
options
Type: object
buffer
Type: boolean
Default: true
Optional: true
Description: Indicates whether the file contents should be returned as a Buffer or a string.
compression
Type: "brotli" | "gzip" | undefined
Default: undefined
Optional: true
Description: The file compression.
encoding
Type: "ascii" | "base64" | "base64url" | "hex" | "latin1" | "ucs-2" | "ucs2" | "utf-8" | "utf-16le" | "utf8" | "utf16le" | undefined
Default: utf8
Optional: true
flag
Type: number | string | undefined
Default: 'r'
Optional: true
isAccessible
Check if a file or directory exists and is accessible.
import { isAccessible } from "@visulima/fs";
const file = await isAccessible("package.json");
console.log(file);
isAccessibleSync
Check if a file or directory exists and is accessible.
import { isAccessibleSync } from "@visulima/fs";
const file = isAccessibleSync("package.json");
console.log(file);
API for isAccessible and isAccessibleSync
path
Type: string
The path to the file or directory to check.
mode
Type: number
Default: fs.constants.F_OK
Optional: true
Description: The accessibility mode.
Utilities
parseJson
Parse JSON with more helpful errors.
import { parseJson, JSONError } from "@visulima/fs/utils";
const json = '{\n\t"foo": true,\n}';
JSON.parse(json);
parseJson(json);
parseJson(json, "foo.json");
API for parseJson
json
Type: string
The JSON string to parse.
reviver
Type: Function
Prescribes how the value originally produced by parsing is transformed, before being returned. See JSON.parse docs for more.
filename
Type: string
The filename to use in error messages.
API for JSONError
Exposed for use in instanceof checks.
fileName
Type: string
The filename displayed in the error message.
codeFrame
Type: string
The printable section of the JSON which produces the error.
Api Docs
eol
Functions
detect()
function detect(content): "\n" | "\r\n";
Defined in: packages/fs/src/eol.ts:29
Detect the EOL character for string input.
Returns null if no newline.
Parameters
content
string
The string content to detect the EOL from.
Returns
"\n" | "\r\n"
Example
import { detect } from "@visulima/fs/eol";
detect("Hello\r\nWorld");
detect("Hello\nWorld");
detect("HelloWorld");
format()
function format(content, eol): string;
Defined in: packages/fs/src/eol.ts:54
Format the file to the targeted EOL.
Parameters
content
string
The string content to format.
eol
The target EOL character.
"\n" | "\r\n"
Returns
string
Example
import { format, LF, CRLF } from "@visulima/fs/eol";
format("Hello\r\nWorld\nUnix", LF);
format("Hello\nWorld\r\nWindows", CRLF);
Variables
CRLF
const CRLF: "\r\n";
Defined in: packages/fs/src/eol.ts:9
End-of-line character for Windows platforms.
EOL
const EOL: "\n" | "\r\n";
Defined in: packages/fs/src/eol.ts:14
End-of-line character evaluated for the current platform.
LF
const LF: "\n";
Defined in: packages/fs/src/eol.ts:6
End-of-line character for POSIX platforms such as macOS and Linux.
error
Classes
AlreadyExistsError
Defined in: packages/fs/src/error/already-exists-error.ts:28
Error thrown when a file or directory already exists at a specified path, and an operation was expecting it not to.
Example
import { AlreadyExistsError } from "@visulima/fs/error";
import { ensureSymlinkSync } from "@visulima/fs";
import { join } from "node:path";
try {
const someFunctionThatMightThrow = (path) => {
if (path === "/tmp/existing-file.txt") {
throw new AlreadyExistsError(`file already exists at '/tmp/existing-file.txt'`);
}
};
someFunctionThatMightThrow("/tmp/existing-file.txt");
} catch (error) {
if (error instanceof AlreadyExistsError) {
console.error(`Operation failed because path exists: ${error.message}`);
console.error(`Error code: ${error.code}`);
} else {
console.error("An unexpected error occurred:", error);
}
}
Extends
Constructors
Constructor
new AlreadyExistsError(message): AlreadyExistsError;
Defined in: packages/fs/src/error/already-exists-error.ts:33
Creates a new instance.
Parameters
message
string
The error message.
Returns
AlreadyExistsError
Overrides
Error.constructor;
Accessors
code
Get Signature
get code(): string;
Defined in: packages/fs/src/error/already-exists-error.ts:38
Returns
string
Set Signature
set code(_name): void;
Defined in: packages/fs/src/error/already-exists-error.ts:43
Parameters
_name
string
Returns
void
name
Get Signature
get name(): string;
Defined in: packages/fs/src/error/already-exists-error.ts:48
Returns
string
Set Signature
set name(_name): void;
Defined in: packages/fs/src/error/already-exists-error.ts:53
Parameters
_name
string
Returns
void
Overrides
Error.name;
Methods
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:91
Create .stack property on a target object
Parameters
targetObject
object
constructorOpt?
Function
Returns
void
Inherited from
Error.captureStackTrace;
Properties
cause?
optional cause: unknown;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Error.cause;
message
message: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1077
Inherited from
Error.message;
stack?
optional stack: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Error.stack;
prepareStackTrace()?
static optional prepareStackTrace: (err, stackTraces) => any;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:98
Optional override for formatting stack traces
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
Error.prepareStackTrace;
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:100
Inherited from
Error.stackTraceLimit;
DirectoryError
Defined in: packages/fs/src/error/directory-error.ts:36
Error thrown when an operation that is not allowed on a directory is attempted.
This typically occurs when a file-specific operation is used on a directory path.
Example
import { DirectoryError } from "@visulima/fs/error";
import { readFile } from "@visulima/fs";
import { join } from "node:path";
const attemptToReadFileFromDir = async () => {
try {
const pretendReadFileOnDir = (path) => {
if (path === "/tmp/my-directory") {
throw new DirectoryError(`read '/tmp/my-directory'`);
}
};
pretendReadFileOnDir("/tmp/my-directory");
} catch (error) {
if (error instanceof DirectoryError) {
console.error(`Operation failed, path is a directory: ${error.message}`);
console.error(`Error code: ${error.code}`);
} else {
console.error("An unexpected error occurred:", error);
}
}
};
attemptToReadFileFromDir();
Extends
Constructors
Constructor
new DirectoryError(message): DirectoryError;
Defined in: packages/fs/src/error/directory-error.ts:41
Creates a new instance.
Parameters
message
string
The error message.
Returns
DirectoryError
Overrides
Error.constructor;
Accessors
code
Get Signature
get code(): string;
Defined in: packages/fs/src/error/directory-error.ts:46
Returns
string
Set Signature
set code(_name): void;
Defined in: packages/fs/src/error/directory-error.ts:51
Parameters
_name
string
Returns
void
name
Get Signature
get name(): string;
Defined in: packages/fs/src/error/directory-error.ts:56
Returns
string
Set Signature
set name(_name): void;
Defined in: packages/fs/src/error/directory-error.ts:61
Parameters
_name
string
Returns
void
Overrides
Error.name;
Methods
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:91
Create .stack property on a target object
Parameters
targetObject
object
constructorOpt?
Function
Returns
void
Inherited from
Error.captureStackTrace;
Properties
cause?
optional cause: unknown;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Error.cause;
message
message: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1077
Inherited from
Error.message;
stack?
optional stack: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Error.stack;
prepareStackTrace()?
static optional prepareStackTrace: (err, stackTraces) => any;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:98
Optional override for formatting stack traces
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
Error.prepareStackTrace;
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:100
Inherited from
Error.stackTraceLimit;
NotEmptyError
Defined in: packages/fs/src/error/not-empty-error.ts:40
Error thrown when a directory is not empty.
Example
import { NotEmptyError } from "@visulima/fs/error";
import { rmdir } from "node:fs/promises";
import { join } from "node:path";
const attemptToRemoveNonEmptyDir = async () => {
const dirPath = join("/tmp", "my-non-empty-dir");
try {
const simulateNotEmpty = (path) => {
if (path === dirPath) {
throw new NotEmptyError(`rmdir '${dirPath}'`);
}
};
simulateNotEmpty(dirPath);
} catch (error) {
if (error instanceof NotEmptyError) {
console.error(`Operation failed, directory is not empty: ${error.message}`);
console.error(`Error code: ${error.code}`);
} else {
console.error("An unexpected error occurred:", error);
}
}
};
attemptToRemoveNonEmptyDir();
Extends
Constructors
Constructor
new NotEmptyError(message): NotEmptyError;
Defined in: packages/fs/src/error/not-empty-error.ts:45
Creates a new instance.
Parameters
message
string
The error message.
Returns
NotEmptyError
Overrides
Error.constructor;
Accessors
code
Get Signature
get code(): string;
Defined in: packages/fs/src/error/not-empty-error.ts:50
Returns
string
Set Signature
set code(_name): void;
Defined in: packages/fs/src/error/not-empty-error.ts:55
Parameters
_name
string
Returns
void
name
Get Signature
get name(): string;
Defined in: packages/fs/src/error/not-empty-error.ts:60
Returns
string
Set Signature
set name(_name): void;
Defined in: packages/fs/src/error/not-empty-error.ts:65
Parameters
_name
string
Returns
void
Overrides
Error.name;
Methods
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:91
Create .stack property on a target object
Parameters
targetObject
object
constructorOpt?
Function
Returns
void
Inherited from
Error.captureStackTrace;
Properties
cause?
optional cause: unknown;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Error.cause;
message
message: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1077
Inherited from
Error.message;
stack?
optional stack: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Error.stack;
prepareStackTrace()?
static optional prepareStackTrace: (err, stackTraces) => any;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:98
Optional override for formatting stack traces
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
Error.prepareStackTrace;
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:100
Inherited from
Error.stackTraceLimit;
NotFoundError
Defined in: packages/fs/src/error/not-found-error.ts:33
Error thrown when a file or directory is not found at a specified path.
Example
import { NotFoundError } from "@visulima/fs/error";
import { readFile } from "@visulima/fs";
import { join } from "node:path";
const tryReadingNonExistentFile = async () => {
const filePath = join("/tmp", "this-file-does-not-exist.txt");
try {
const simulateNotFound = (path) => {
if (path === filePath) {
throw new NotFoundError(`no such file or directory, open '${filePath}'`);
}
};
simulateNotFound(filePath);
} catch (error) {
if (error instanceof NotFoundError) {
console.error(`Operation failed, path not found: ${error.message}`);
console.error(`Error code: ${error.code}`);
} else {
console.error("An unexpected error occurred:", error);
}
}
};
tryReadingNonExistentFile();
Extends
Constructors
Constructor
new NotFoundError(message): NotFoundError;
Defined in: packages/fs/src/error/not-found-error.ts:38
Creates a new instance.
Parameters
message
string
The error message.
Returns
NotFoundError
Overrides
Error.constructor;
Accessors
code
Get Signature
get code(): string;
Defined in: packages/fs/src/error/not-found-error.ts:43
Returns
string
Set Signature
set code(_name): void;
Defined in: packages/fs/src/error/not-found-error.ts:48
Parameters
_name
string
Returns
void
name
Get Signature
get name(): string;
Defined in: packages/fs/src/error/not-found-error.ts:53
Returns
string
Set Signature
set name(_name): void;
Defined in: packages/fs/src/error/not-found-error.ts:58
Parameters
_name
string
Returns
void
Overrides
Error.name;
Methods
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:91
Create .stack property on a target object
Parameters
targetObject
object
constructorOpt?
Function
Returns
void
Inherited from
Error.captureStackTrace;
Properties
cause?
optional cause: unknown;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Error.cause;
message
message: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1077
Inherited from
Error.message;
stack?
optional stack: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Error.stack;
prepareStackTrace()?
static optional prepareStackTrace: (err, stackTraces) => any;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:98
Optional override for formatting stack traces
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
Error.prepareStackTrace;
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:100
Inherited from
Error.stackTraceLimit;
PermissionError
Defined in: packages/fs/src/error/permission-error.ts:34
Error thrown when an operation is not permitted due to insufficient privileges
or other access control restrictions.
Example
import { PermissionError } from "@visulima/fs/error";
import { writeFile } from "@visulima/fs";
import { join } from "node:path";
const tryWritingToProtectedFile = async () => {
const filePath = join("/root", "protected-file.txt");
try {
const simulatePermissionError = (path) => {
if (path === filePath) {
throw new PermissionError(`open '${filePath}'`);
}
};
simulatePermissionError(filePath);
} catch (error) {
if (error instanceof PermissionError) {
console.error(`Operation not permitted: ${error.message}`);
console.error(`Error code: ${error.code}`);
} else {
console.error("An unexpected error occurred:", error);
}
}
};
tryWritingToProtectedFile();
Extends
Constructors
Constructor
new PermissionError(message): PermissionError;
Defined in: packages/fs/src/error/permission-error.ts:39
Creates a new instance.
Parameters
message
string
The error message.
Returns
PermissionError
Overrides
Error.constructor;
Accessors
code
Get Signature
get code(): string;
Defined in: packages/fs/src/error/permission-error.ts:44
Returns
string
Set Signature
set code(_name): void;
Defined in: packages/fs/src/error/permission-error.ts:49
Parameters
_name
string
Returns
void
name
Get Signature
get name(): string;
Defined in: packages/fs/src/error/permission-error.ts:54
Returns
string
Set Signature
set name(_name): void;
Defined in: packages/fs/src/error/permission-error.ts:59
Parameters
_name
string
Returns
void
Overrides
Error.name;
Methods
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:91
Create .stack property on a target object
Parameters
targetObject
object
constructorOpt?
Function
Returns
void
Inherited from
Error.captureStackTrace;
Properties
cause?
optional cause: unknown;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Error.cause;
message
message: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1077
Inherited from
Error.message;
stack?
optional stack: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Error.stack;
prepareStackTrace()?
static optional prepareStackTrace: (err, stackTraces) => any;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:98
Optional override for formatting stack traces
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
Error.prepareStackTrace;
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:100
Inherited from
Error.stackTraceLimit;
WalkError
Defined in: packages/fs/src/error/walk-error.ts:43
Error thrown in walk or walkSync during iteration.
Example
import { WalkError } from "@visulima/fs/error";
import { walk } from "@visulima/fs";
import { join } from "node:path";
const processDirectory = async () => {
const dirToWalk = join("/tmp", "non-existent-or-permission-denied-dir");
try {
const simulateWalkError = async (rootDir) => {
const underlyingError = new Error("Permission denied reading subdirectory");
throw new WalkError(underlyingError, rootDir);
};
await simulateWalkError(dirToWalk);
} catch (error) {
if (error instanceof WalkError) {
console.error(`Error during directory walk of "${error.root}": ${error.message}`);
if (error.cause) {
console.error(`Underlying cause: ${error.cause}`);
}
} else {
console.error("An unexpected error occurred:", error);
}
}
};
processDirectory();
Extends
Constructors
Constructor
new WalkError(cause, root): WalkError;
Defined in: packages/fs/src/error/walk-error.ts:52
Constructs a new instance.
Parameters
cause
unknown
The underlying error or reason for the walk failure.
root
string
The root directory path where the walk operation started or encountered the error.
Returns
WalkError
Overrides
Error.constructor;
Accessors
name
Get Signature
get name(): string;
Defined in: packages/fs/src/error/walk-error.ts:61
Returns
string
Set Signature
set name(_name): void;
Defined in: packages/fs/src/error/walk-error.ts:66
Parameters
_name
string
Returns
void
Overrides
Error.name;
Methods
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:91
Create .stack property on a target object
Parameters
targetObject
object
constructorOpt?
Function
Returns
void
Inherited from
Error.captureStackTrace;
Properties
cause?
optional cause: unknown;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Error.cause;
message
message: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1077
Inherited from
Error.message;
root
root: string;
Defined in: packages/fs/src/error/walk-error.ts:45
File path of the root that's being walked.
stack?
optional stack: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Error.stack;
prepareStackTrace()?
static optional prepareStackTrace: (err, stackTraces) => any;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:98
Optional override for formatting stack traces
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
Error.prepareStackTrace;
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:100
Inherited from
Error.stackTraceLimit;
References
JSONError
Re-exports JSONError
index
Functions
collect()
function collect(directory, options): Promise<string[]>;
Defined in: packages/fs/src/find/collect.ts:37
Asynchronously collects all file paths within a directory that match the specified criteria.
By default, it searches for JavaScript and TypeScript file extensions.
Parameters
directory
string
The root directory to start collecting files from.
options
WalkOptions = {}
Optional configuration to control the collection process. See WalkOptions.
Returns
Promise<string[]>
A promise that resolves to an array of absolute file paths.
Example
import { collect } from "@visulima/fs";
import { join } from "node:path";
const collectFiles = async () => {
const files = await collect(join("/tmp", "docs"), {
extensions: ["txt", "md"],
maxDepth: 2,
includeDirs: false,
});
console.log(files);
const jsFiles = await collect(join("/tmp", "project"), {
extensions: ["js"],
skip: [/node_modules/],
});
console.log(jsFiles);
};
collectFiles();
collectSync()
function collectSync(directory, options): string[];
Defined in: packages/fs/src/find/collect-sync.ts:33
Synchronously collects all file paths within a directory that match the specified criteria.
By default, it searches for JavaScript and TypeScript file extensions.
Parameters
directory
string
The root directory to start collecting files from.
options
WalkOptions = {}
Optional configuration to control the collection process. See WalkOptions.
Returns
string[]
An array of absolute file paths.
Example
import { collectSync } from "@visulima/fs";
import { join } from "node:path";
const files = collectSync(join("/tmp", "docs"), {
extensions: ["txt", "md"],
maxDepth: 2,
includeDirs: false,
});
console.log(files);
const jsFiles = collectSync(join("/tmp", "project"), {
extensions: ["js"],
skip: [/node_modules/],
});
console.log(jsFiles);
emptyDir()
function emptyDir(dir, options?): Promise<void>;
Defined in: packages/fs/src/remove/empty-dir.ts:38
Ensures that a directory is empty.
Deletes directory contents if the directory is not empty.
If the directory does not exist, it is created.
The directory itself is not deleted.
Parameters
dir
The path to the directory to empty.
string | URL
options?
RetryOptions
Optional configuration for the operation. See RetryOptions.
Returns
Promise<void>
A promise that resolves when the directory is empty.
Example
import { emptyDir } from "@visulima/fs";
import { join } from "node:path";
const clearTempDir = async () => {
try {
await emptyDir(join("/tmp", "my-app-temp"));
console.log("Temporary directory emptied or created.");
} catch (error) {
console.error("Failed to empty directory:", error);
}
};
clearTempDir();
emptyDirSync()
function emptyDirSync(dir, options?): void;
Defined in: packages/fs/src/remove/empty-dir-sync.ts:33
Ensures that a directory is empty.
Deletes directory contents if the directory is not empty.
If the directory does not exist, it is created.
The directory itself is not deleted.
Parameters
dir
The path to the directory to empty.
string | URL
options?
RetryOptions
Optional configuration for the operation. See RetryOptions.
Returns
void
void
Example
import { emptyDirSync } from "@visulima/fs";
import { join } from "node:path";
try {
emptyDirSync(join("/tmp", "my-app-temp"));
console.log("Temporary directory emptied or created.");
} catch (error) {
console.error("Failed to empty directory:", error);
}
ensureDir()
function ensureDir(directory): Promise<void>;
Defined in: packages/fs/src/ensure/ensure-dir.ts:20
Ensures that the directory exists.
If the directory structure does not exist, it is created. Like mkdir -p.
Parameters
directory
The path to the directory to ensure exists.
string | URL
Returns
Promise<void>
Example
import ensureDir from "@visulima/fs/ensure/ensure-dir";
await ensureDir("/tmp/foo/bar/baz");
ensureDirSync()
function ensureDirSync(directory): void;
Defined in: packages/fs/src/ensure/ensure-dir-sync.ts:20
Ensures that the directory exists.
If the directory structure does not exist, it is created. Like mkdir -p.
Parameters
directory
The path to the directory to ensure exists.
string | URL
Returns
void
Example
import ensureDirSync from "@visulima/fs/ensure/ensure-dir-sync";
ensureDirSync("/tmp/foo/bar/baz");
ensureFile()
function ensureFile(filePath): Promise<void>;
Defined in: packages/fs/src/ensure/ensure-file.ts:37
Asynchronously ensures that a file exists.
If the directory structure for the file does not exist, it is created.
If the file already exists, it is not modified.
Parameters
filePath
The path to the file. Can be a string or a URL object.
string | URL
Returns
Promise<void>
A Promise that resolves when the file has been created or confirmed to exist.
Throws
Will throw an error if the path exists and is not a file.
Throws
Will throw an error if directory or file creation fails for reasons other than the path not existing initially.
Example
import { ensureFile } from "@visulima/fs";
(async () => {
try {
await ensureFile("path/to/my/file.txt");
console.log("File ensured!");
await ensureFile(new URL("file:///path/to/another/file.log"));
console.log("Another file ensured!");
} catch (error) {
console.error("Failed to ensure file:", error);
}
})();
ensureFileSync()
function ensureFileSync(filePath): void;
Defined in: packages/fs/src/ensure/ensure-file-sync.ts:24
Ensures that the file exists.
If the file that is requested to be created is in directories that do not exist,
these directories are created. If the file already exists, it is NOT MODIFIED.
Parameters
filePath
The path to the file to ensure exists.
string | URL
Returns
void
Example
import { ensureFileSync } from "@visulima/fs";
ensureFileSync("/tmp/foo/bar/baz.txt");
ensureLink()
function ensureLink(source, destination): Promise<void>;
Defined in: packages/fs/src/ensure/ensure-link.ts:25
Ensures that the hard link exists.
If the directory structure does not exist, it is created.
Parameters
source
The path to the source file or directory.
string | URL
destination
The path to the destination link.
string | URL
Returns
Promise<void>
Example
import { ensureLink } from "@visulima/fs";
import { join } from "node:path";
await ensureLink(join("/tmp", "foo", "bar.txt"), join("/tmp", "foo", "bar-link.txt"));
ensureLinkSync()
function ensureLinkSync(source, destination): void;
Defined in: packages/fs/src/ensure/ensure-link-sync.ts:25
Ensures that the hard link exists.
If the directory structure does not exist, it is created.
Parameters
source
The path to the source file or directory.
string | URL
destination
The path to the destination link.
string | URL
Returns
void
Example
import { ensureLinkSync } from "@visulima/fs";
import { join } from "node:path";
ensureLinkSync(join("/tmp", "foo", "bar.txt"), join("/tmp", "foo", "bar-link.txt"));
ensureSymlink()
function ensureSymlink(target, linkName, type?): Promise<void>;
Defined in: packages/fs/src/ensure/ensure-symlink.ts:39
Ensures that the link exists, and points to a valid file.
If the directory structure does not exist, it is created.
If the link already exists, it is not modified but error is thrown if it is not point to the given target.
Parameters
target
the source file path
string | URL
linkName
the destination link path
string | URL
type?
Type
the type of the symlink, or null to use automatic detection
Returns
Promise<void>
A void promise that resolves once the link exists.
Example
import { ensureSymlink } from "@visulima/fs";
import { join } from "node:path";
await ensureSymlink(join("/tmp", "foo", "bar.txt"), join("/tmp", "foo", "link-to-bar.txt"));
await ensureSymlink(join("/tmp", "foo", "baz-dir"), join("/tmp", "foo", "link-to-baz-dir"), "dir");
ensureSymlinkSync()
function ensureSymlinkSync(target, linkName, type?): void;
Defined in: packages/fs/src/ensure/ensure-symlink-sync.ts:39
Ensures that the link exists, and points to a valid file.
If the directory structure does not exist, it is created.
If the link already exists, it is not modified but error is thrown if it is not point to the given target.
Parameters
target
the source file path
string | URL
linkName
the destination link path
string | URL
type?
Type
the type of the symlink, or null to use automatic detection
Returns
void
A void.
Example
import { ensureSymlinkSync } from "@visulima/fs";
import { join } from "node:path";
ensureSymlinkSync(join("/tmp", "foo", "bar.txt"), join("/tmp", "foo", "link-to-bar.txt"));
ensureSymlinkSync(join("/tmp", "foo", "baz-dir"), join("/tmp", "foo", "link-to-baz-dir"), "dir");
findUp()
function findUp(name, options): Promise<string>;
Defined in: packages/fs/src/find/find-up.ts:55
Asynchronously finds a file or directory by walking up parent directories.
Parameters
name
FindUpName
The name(s) of the file or directory to find. Can be a string, an array of strings, or a function that returns a name or FIND_UP_STOP.
options
FindUpOptions = {}
Optional configuration for the search. See FindUpOptions.
Returns
Promise<string>
A promise that resolves to the absolute path of the first found file/directory, or undefined if not found.
Example
import { findUp } from "@visulima/fs";
import { join } from "node:path";
const findProjectRoot = async () => {
const projectRoot = await findUp("package.json", {
cwd: join("/tmp", "foo", "bar", "baz"),
type: "file",
});
console.log(projectRoot);
const gitDirOrReadme = await findUp([".git", "README.md"], {
cwd: join("/tmp", "foo", "bar"),
});
console.log(gitDirOrReadme);
const customFound = await findUp(
(directory) => {
if (directory === join("/tmp", "foo")) {
return "found-it-here.txt";
}
return undefined;
},
{
cwd: join("/tmp", "foo", "bar", "baz"),
stopAt: join("/tmp"),
},
);
console.log(customFound);
};
findProjectRoot();
findUpSync()
function findUpSync(name, options): string;
Defined in: packages/fs/src/find/find-up-sync.ts:51
Synchronously finds a file or directory by walking up parent directories.
Parameters
name
FindUpNameSync
The name(s) of the file or directory to find. Can be a string, an array of strings, or a function that returns a name or FIND_UP_STOP.
options
FindUpOptions = {}
Optional configuration for the search. See FindUpOptions.
Returns
string
The absolute path of the first found file/directory, or undefined if not found.
Example
import { findUpSync } from "@visulima/fs";
import { join } from "node:path";
const projectRoot = findUpSync("package.json", {
cwd: join("/tmp", "foo", "bar", "baz"),
type: "file",
});
console.log(projectRoot);
const gitDirOrReadme = findUpSync([".git", "README.md"], {
cwd: join("/tmp", "foo", "bar"),
});
console.log(gitDirOrReadme);
const customFound = findUpSync(
(directory) => {
if (directory === join("/tmp", "foo")) {
return "found-it-here.txt";
}
return undefined;
},
{
cwd: join("/tmp", "foo", "bar", "baz"),
stopAt: join("/tmp"),
},
);
console.log(customFound);
isAccessible()
function isAccessible(path, mode?): Promise<boolean>;
Defined in: packages/fs/src/is-accessible.ts:36
Asynchronously tests a user's permissions for the file or directory specified by path.
Returns a Promise that resolves to true if the accessibility check is successful, false otherwise.
Parameters
path
The path to the file or directory. Can be a string or a URL object.
string | URL
mode?
number
The accessibility checks to perform. Defaults to F_OK (check for existence).
Other possible values include R_OK (check for read access), W_OK (check for write access),
and X_OK (check for execute/search access). Multiple modes can be combined using bitwise OR.
Returns
Promise<boolean>
A Promise that resolves to a boolean indicating if the path is accessible with the specified mode.
Example
import { isAccessible, F_OK, R_OK } from "@visulima/fs";
(async () => {
if (await isAccessible("myFile.txt")) {
console.log("myFile.txt exists");
}
if (await isAccessible("myFile.txt", R_OK)) {
console.log("myFile.txt is readable");
}
if (await isAccessible("myDirectory", F_OK | R_OK | W_OK)) {
console.log("myDirectory exists, is readable and writable");
}
})();
isAccessibleSync()
function isAccessibleSync(path, mode?): boolean;
Defined in: packages/fs/src/is-accessible-sync.ts:9
Synchronously tests a user's permissions for the file or directory specified by path.
If the accessibility check is successful, true is returned. Otherwise, false is returned.
Parameters
path
string | URL
mode?
number
Returns
boolean
true if the accessibility check is successful, false otherwise.
Param
A path to a file or directory. If a URL is provided, it must use the file: protocol.
Param
The accessibility checks to perform. Default: F_OK (tests for existence of the file).
Other possible values are R_OK (tests for read permission), W_OK (tests for write permission),
and X_OK (tests for execute permissions). Multiple modes can be combined using bitwise OR.
Example
import { isAccessibleSync, F_OK, R_OK, W_OK } from "@visulima/fs";
import { writeFileSync, unlinkSync, chmodSync } from "node:fs";
import { join } from "node:path";
const filePath = join("temp-access-test.txt");
writeFileSync(filePath, "content");
console.log(`File exists: ${isAccessibleSync(filePath)}`);
unlinkSync(filePath);
console.log(`File exists after delete: ${isAccessibleSync(filePath)}`);
writeFileSync(filePath, "content");
chmodSync(filePath, 0o600);
console.log(`Readable: ${isAccessibleSync(filePath, R_OK)}`);
console.log(`Writable: ${isAccessibleSync(filePath, W_OK)}`);
console.log(`Readable & Writable: ${isAccessibleSync(filePath, R_OK | W_OK)}`);
chmodSync(filePath, 0o400);
console.log(`Readable (after chmod): ${isAccessibleSync(filePath, R_OK)}`);
console.log(`Writable (after chmod): ${isAccessibleSync(filePath, W_OK)}`);
unlinkSync(filePath);
writeFileSync(filePath, "content for URL test");
const fileUrl = new URL(`file://${join(process.cwd(), filePath)}`);
console.log(`URL exists: ${isAccessibleSync(fileUrl)}`);
unlinkSync(filePath);
move()
function move(sourcePath, destinationPath, options): Promise<void>;
Defined in: packages/fs/src/move/index.ts:35
Move a file asynchronously.
Parameters
sourcePath
string
The file you want to move.
destinationPath
string
Where you want the file moved.
options
MoveOptions = {}
Configuration options.
Returns
Promise<void>
A Promise that resolves when the file has been moved.
Example
import { move } from '@visulima/fs';
await move('source/test.png', 'destination/test.png');
console.log('The file has been moved');
moveSync()
function moveSync(sourcePath, destinationPath, options?): void;
Defined in: packages/fs/src/move/index.ts:61
Move a file synchronously.
Parameters
sourcePath
string
The file you want to move.
destinationPath
string
Where you want the file moved.
options?
MoveOptions
Configuration options.
Returns
void
Nothing is returned.
Example
import { moveSync } from '@visulima/fs';
moveSync('source/test.png', 'destination/test.png');
console.log('The file has been moved');
readFile()
function readFile<O>(path, options?): Promise<ContentType<O>>;
Defined in: packages/fs/src/read/read-file.ts:57
Asynchronously reads the entire contents of a file.
It can also decompress the file content if a compression option is provided.
Type Parameters
O
O extends ReadFileOptions<"brotli" | "gzip" | "none"> = undefined
The type of the options object, extending ReadFileOptions.
Parameters
path
The path to the file to read. Can be a file URL or a string path.
string | URL
options?
O
Optional configuration for reading the file. See ReadFileOptions.
Available compression methods: "brotli", "gzip", "none" (default).
Returns
Promise<ContentType<O>>
A promise that resolves with the file content. The type of the content (string or Buffer)
depends on the buffer option (defaults to string if buffer is false or not set).
Example
import { readFile } from "@visulima/fs";
import { join } from "node:path";
const readMyFile = async () => {
try {
const content = await readFile(join("path", "to", "my-file.txt"));
console.log("File content:", content);
const bufferContent = await readFile(join("path", "to", "another-file.bin"), { buffer: true });
console.log("Buffer length:", bufferContent.length);
} catch (error) {
console.error("Failed to read file:", error);
}
};
readMyFile();
readFileSync()
function readFileSync<O>(path, options?): ContentType<O>;
Defined in: packages/fs/src/read/read-file-sync.ts:51
Synchronously reads the entire contents of a file.
It can also decompress the file content if a compression option is provided.
Type Parameters
O
O extends ReadFileOptions<"brotli" | "gzip" | "none"> = undefined
The type of the options object, extending ReadFileOptions.
Parameters
path
The path to the file to read. Can be a file URL or a string path.
string | URL
options?
O
Optional configuration for reading the file. See ReadFileOptions.
Available compression methods: "brotli", "gzip", "none" (default).
Returns
ContentType<O>
The file content. The type of the content (string or Buffer)
depends on the buffer option (defaults to string if buffer is false or not set).
Example
import { readFileSync } from "@visulima/fs";
import { join } from "node:path";
try {
const content = readFileSync(join("path", "to", "my-file.txt"));
console.log("File content:", content);
const bufferContent = readFileSync(join("path", "to", "another-file.bin"), { buffer: true });
console.log("Buffer length:", bufferContent.length);
} catch (error) {
console.error("Failed to read file:", error);
}
readJson()
Asynchronously reads a JSON file and then parses it into an object.
Template
The expected type of the parsed JSON object.
Param
The path to the JSON file to read. Can be a file URL or a string path.
Param
A function to transform the results. This function is called for each member of the object.
Alternatively, this can be the options object if no reviver function is provided.
Param
Optional configuration for reading and parsing the JSON file. See ReadJsonOptions.
If reviver is an object, this argument is ignored.
Example
import { readJson } from "@visulima/fs";
import { join } from "node:path";
const readMyJson = async () => {
try {
const data = await readJson(join("path", "to", "my-config.json"));
console.log("Config data:", data);
const dataWithReviver = await readJson(join("path", "to", "another.json"), (key, value) => {
if (key === "date") return new Date(value);
return value;
});
console.log("Date field is now a Date object:", dataWithReviver.date);
const dataWithOptions = await readJson(join("path", "to", "options.json"), { color: { message: (str) => `\x1b[31m${str}\x1b[0m` } });
console.log(dataWithOptions);
} catch (error) {
console.error("Failed to read or parse JSON file:", error);
}
};
readMyJson();
Call Signature
function readJson<T>(path, options?): Promise<T>;
Defined in: packages/fs/src/read/read-json.ts:8
Type Parameters
T
T extends JsonValue
Parameters
path
string | URL
options?
ReadJsonOptions
Returns
Promise<T>
Call Signature
function readJson<T>(path, reviver, options?): Promise<T>;
Defined in: packages/fs/src/read/read-json.ts:10
Type Parameters
T
T extends JsonValue
Parameters
path
string | URL
reviver
(this, key, value) => any
options?
ReadJsonOptions
Returns
Promise<T>
readJsonSync()
Synchronously reads a JSON file and then parses it into an object.
Template
The expected type of the parsed JSON object.
Param
The path to the JSON file to read. Can be a file URL or a string path.
Param
A function to transform the results. This function is called for each member of the object.
Alternatively, this can be the options object if no reviver function is provided.
Param
Optional configuration for reading and parsing the JSON file. See ReadJsonOptions.
If reviver is an object, this argument is ignored.
Example
import { readJsonSync } from "@visulima/fs";
import { join } from "node:path";
try {
const data = readJsonSync(join("path", "to", "my-config.json"));
console.log("Config data:", data);
const dataWithReviver = readJsonSync(join("path", "to", "another.json"), (key, value) => {
if (key === "date") return new Date(value);
return value;
});
console.log("Date field is now a Date object:", dataWithReviver.date);
const dataWithOptions = readJsonSync(join("path", "to", "options.json"), { color: { message: (str) => `\x1b[31m${str}\x1b[0m` } });
console.log(dataWithOptions);
} catch (error) {
console.error("Failed to read or parse JSON file:", error);
}
Call Signature
function readJsonSync<T>(path, options?): T;
Defined in: packages/fs/src/read/read-json-sync.ts:8
Type Parameters
T
T extends JsonValue
Parameters
path
string | URL
options?
ReadJsonOptions
Returns
T
Call Signature
function readJsonSync<T>(path, reviver, options?): T;
Defined in: packages/fs/src/read/read-json-sync.ts:10
Type Parameters
T
T extends JsonValue
Parameters
path
string | URL
reviver
(this, key, value) => any
options?
ReadJsonOptions
Returns
T
remove()
function remove(path, options): Promise<void>;
Defined in: packages/fs/src/remove/remove.ts:36
Asynchronously removes a file or directory (recursively).
If the path does not exist, it does nothing.
Parameters
path
The path to the file or directory to remove.
string | URL
options
RetryOptions = {}
Optional configuration for the operation. See RetryOptions.
Returns
Promise<void>
A promise that resolves when the path has been removed.
Example
import { remove } from "@visulima/fs";
import { join } from "node:path";
const deleteFileOrDir = async () => {
try {
await remove(join("/tmp", "my-file.txt"));
console.log("File /tmp/my-file.txt removed.");
await remove(join("/tmp", "my-empty-dir"));
console.log("Directory /tmp/my-empty-dir removed.");
await remove(join("/tmp", "my-dir-with-contents"));
console.log("Directory /tmp/my-dir-with-contents and its contents removed.");
} catch (error) {
console.error("Failed to remove path:", error);
}
};
deleteFileOrDir();
removeSync()
function removeSync(path, options): void;
Defined in: packages/fs/src/remove/remove-sync.ts:32
Synchronously removes a file or directory (recursively).
If the path does not exist, it does nothing.
Parameters
path
The path to the file or directory to remove.
string | URL
options
RetryOptions = {}
Optional configuration for the operation. See RetryOptions.
Returns
void
void
Example
import { removeSync } from "@visulima/fs";
import { join } from "node:path";
try {
removeSync(join("/tmp", "my-file.txt"));
console.log("File /tmp/my-file.txt removed.");
removeSync(join("/tmp", "my-empty-dir"));
console.log("Directory /tmp/my-empty-dir removed.");
removeSync(join("/tmp", "my-dir-with-contents"));
console.log("Directory /tmp/my-dir-with-contents and its contents removed.");
} catch (error) {
console.error("Failed to remove path:", error);
}
rename()
function rename(source, destination, options?): Promise<void>;
Defined in: packages/fs/src/move/index.ts:85
Rename a file asynchronously.
Parameters
source
string
The file you want to rename.
destination
string
The name of the renamed file.
options?
MoveOptions
Configuration options.
Returns
Promise<void>
A Promise that resolves when the file has been renamed.
Example
import { rename } from '@visulima/fs';
await rename('test.png', 'tests.png', {cwd: 'source'});
console.log('The file has been renamed');
renameSync()
function renameSync(source, destination, options?): void;
Defined in: packages/fs/src/move/index.ts:109
Rename a file synchronously.
Parameters
source
string
The file you want to rename.
destination
string
The name of the renamed file.
options?
MoveOptions
Configuration options.
Returns
void
A Promise that resolves when the file has been renamed.
Example
import { renameSync } from '@visulima/fs';
renameSync('test.png', 'tests.png', {cwd: 'source'});
console.log('The file has been renamed');
walk()
function walk(directory, options): AsyncIterableIterator<WalkEntry>;
Defined in: packages/fs/src/find/walk.ts:64
Asynchronously walks the file tree rooted at directory, yielding each file or directory that matches the criteria specified in options.
Parameters
directory
The root directory to start walking from.
string | URL
options
WalkOptions = {}
Optional configuration to control the walking process. See WalkOptions.
Returns
AsyncIterableIterator<WalkEntry>
An async iterable iterator yielding WalkEntry objects for each matching file or directory.
Example
import { walk } from "@visulima/fs";
import { join } from "node:path";
const printEntries = async () => {
for await (const entry of walk(join("/tmp", "my-project"), { extensions: ["ts"], maxDepth: 2 })) {
console.log(`Found: ${entry.path} (Type: ${entry.isFile() ? "file" : "directory"})`);
}
for await (const entry of walk(join("/tmp", "another-project"), { includeFiles: false, skip: [/node_modules/] })) {
if (entry.isDirectory()) {
console.log(`Directory: ${entry.path}`);
}
}
};
printEntries();
walkSync()
function walkSync(directory, options): IterableIterator<WalkEntry>;
Defined in: packages/fs/src/find/walk-sync.ts:64
Synchronously walks the file tree rooted at directory, yielding each file or directory that matches the criteria specified in options.
This is the synchronous version of the walk function.
Parameters
directory
The root directory to start walking from.
string | URL
options
WalkOptions = {}
Optional configuration to control the walking process. See WalkOptions.
Returns
IterableIterator<WalkEntry>
An iterable iterator yielding WalkEntry objects for each matching file or directory.
Example
import { walkSync } from "@visulima/fs";
import { join } from "node:path";
for (const entry of walkSync(join("/tmp", "my-project"), { extensions: ["ts"], maxDepth: 2 })) {
console.log(`Found: ${entry.path} (Type: ${entry.isFile() ? "file" : "directory"})`);
}
for (const entry of walkSync(join("/tmp", "another-project"), { includeFiles: false, skip: [/node_modules/] })) {
if (entry.isDirectory()) {
console.log(`Directory: ${entry.path}`);
}
}
writeFile()
function writeFile(path, content, options?): Promise<void>;
Defined in: packages/fs/src/write/write-file.ts:43
Asynchronously writes data to a file, replacing the file if it already exists.
This function includes safeguards like writing to a temporary file first and then renaming, and handling permissions.
Parameters
path
The path to the file to write. Can be a file URL or a string path.
string | URL
content
The data to write. Can be a string, Buffer, ArrayBuffer, or ArrayBufferView.
string | ArrayBuffer | ArrayBufferView<ArrayBufferLike>
options?
WriteFileOptions
Optional configuration for writing the file. See WriteFileOptions.
Returns
Promise<void>
A promise that resolves when the file has been written.
Example
import { writeFile } from "@visulima/fs";
import { join } from "node:path";
const writeMyFile = async () => {
try {
await writeFile(join("/tmp", "my-new-file.txt"), "Hello World!");
console.log("File written successfully.");
await writeFile(join("/tmp", "another-file.txt"), "Some other content", { encoding: "utf16le", mode: 0o600 });
console.log("Another file written with specific options.");
} catch (error) {
console.error("Failed to write file:", error);
}
};
writeMyFile();
writeFileSync()
function writeFileSync(path, content, options?): void;
Defined in: packages/fs/src/write/write-file-sync.ts:43
Synchronously writes data to a file, replacing the file if it already exists.
This function includes safeguards like writing to a temporary file first and then renaming, and handling permissions.
Parameters
path
The path to the file to write. Can be a file URL or a string path.
string | URL
content
The data to write. Can be a string, Buffer, ArrayBuffer, or ArrayBufferView.
string | ArrayBuffer | ArrayBufferView<ArrayBufferLike>
options?
WriteFileOptions
Optional configuration for writing the file. See WriteFileOptions.
Returns
void
void
Example
import { writeFileSync } from "@visulima/fs";
import { join } from "node:path";
const writeMyFileSync = () => {
try {
writeFileSync(join("/tmp", "my-new-file-sync.txt"), "Hello World Synchronously!");
console.log("File written successfully (sync).");
writeFileSync(join("/tmp", "another-file-sync.txt"), "Some other sync content", { encoding: "utf16le", mode: 0o600 });
console.log("Another file written with specific options (sync).");
} catch (error) {
console.error("Failed to write file (sync):", error);
}
};
writeMyFileSync();
writeJson()
function writeJson(path, data, options): Promise<void>;
Defined in: packages/fs/src/write/write-json.ts:39
Asynchronously writes an object to a JSON file.
Handles indentation detection, custom stringifiers, and gracefully manages existing files.
Parameters
path
The path to the JSON file to write. Can be a file URL or a string path.
string | URL
data
unknown
The data to serialize and write. Can be any JavaScript value that can be stringified by JSON.stringify or a custom stringifier.
options
WriteJsonOptions = {}
Optional configuration for writing the JSON file. See WriteJsonOptions.
Returns
Promise<void>
A promise that resolves when the JSON file has been written.
Example
import { writeJson } from "@visulima/fs";
import { join } from "node:path";
const writeMyJson = async () => {
try {
await writeJson(join("/tmp", "my-config.json"), { setting: "enabled", value: 123 });
console.log("JSON file written successfully.");
await writeJson(join("/tmp", "another-config.json"), { user: "test", id: "abc" }, { indent: 2, replacer: ["user"] });
console.log("Another JSON file written with specific options (indent 2, only 'user' key).");
} catch (error) {
console.error("Failed to write JSON file:", error);
}
};
writeMyJson();
writeJsonSync()
function writeJsonSync(path, data, options): void;
Defined in: packages/fs/src/write/write-json-sync.ts:39
Synchronously writes an object to a JSON file.
Handles indentation detection, custom stringifiers, and gracefully manages existing files.
Parameters
path
The path to the JSON file to write. Can be a file URL or a string path.
string | URL
data
unknown
The data to serialize and write. Can be any JavaScript value that can be stringified by JSON.stringify or a custom stringifier.
options
WriteJsonOptions = {}
Optional configuration for writing the JSON file. See WriteJsonOptions.
Returns
void
void
Example
import { writeJsonSync } from "@visulima/fs";
import { join } from "node:path";
const writeMyJsonSync = () => {
try {
writeJsonSync(join("/tmp", "my-config-sync.json"), { setting: "enabled", value: 456 });
console.log("JSON file written successfully (sync).");
writeJsonSync(join("/tmp", "another-config-sync.json"), { user: "testSync", id: "def" }, { indent: 4, replacer: ["id"] });
console.log("Another JSON file written with specific options (sync, indent 4, only 'id' key).");
} catch (error) {
console.error("Failed to write JSON file (sync):", error);
}
};
writeMyJsonSync();
Variables
F_OK
const F_OK: 0 = 0;
Defined in: packages/fs/src/constants.ts:5
Constant to check if the path is visible to the calling process.
Corresponds to node:fs.constants.F_OK.
FIND_UP_STOP
const FIND_UP_STOP: typeof FIND_UP_STOP;
Defined in: packages/fs/src/constants.ts:29
A special symbol that can be returned by the matcher function in findUp or findUpSync
to stop the search process prematurely.
R_OK
const R_OK: 4 = 4;
Defined in: packages/fs/src/constants.ts:11
Constant to check if the path is readable to the calling process.
Corresponds to node:fs.constants.R_OK.
W_OK
const W_OK: 2 = 2;
Defined in: packages/fs/src/constants.ts:17
Constant to check if the path is writable to the calling process.
Corresponds to node:fs.constants.W_OK.
X_OK
const X_OK: 1 = 1;
Defined in: packages/fs/src/constants.ts:23
Constant to check if the path is executable by the calling process.
Corresponds to node:fs.constants.X_OK.
Interfaces
WalkEntry
Defined in: packages/fs/src/types.ts:62
Represents an entry found by walk or walkSync.
Extends
Pick<Dirent, "isDirectory" | "isFile" | "isSymbolicLink" | "name">
Methods
isDirectory()
isDirectory(): boolean;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/fs.d.ts:190
Returns true if the fs.Dirent object describes a file system
directory.
Returns
boolean
Since
v10.10.0
Inherited from
Pick.isDirectory;
isFile()
isFile(): boolean;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/fs.d.ts:184
Returns true if the fs.Dirent object describes a regular file.
Returns
boolean
Since
v10.10.0
Inherited from
Pick.isFile;
isSymbolicLink()
isSymbolicLink(): boolean;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/fs.d.ts:205
Returns true if the fs.Dirent object describes a symbolic link.
Returns
boolean
Since
v10.10.0
Inherited from
Pick.isSymbolicLink;
Properties
name
name: string;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/fs.d.ts:222
The file name that this fs.Dirent object refers to. The type of this
value is determined by the options.encoding passed to readdir or readdirSync.
Since
v10.10.0
Inherited from
Pick.name;
path
path: string;
Defined in: packages/fs/src/types.ts:64
The full path to the entry.
WalkOptions
Defined in: packages/fs/src/types.ts:12
Options for the walk and walkSync functions.
Properties
extensions?
optional extensions: string[];
Defined in: packages/fs/src/types.ts:18
List of file extensions used to filter entries.
If specified, entries without the file extension specified by this option are excluded.
Default
{
undefined;
}
followSymlinks?
optional followSymlinks: boolean;
Defined in: packages/fs/src/types.ts:23
Indicates whether symlinks should be resolved or not.
Default
{
false;
}
includeDirs?
optional includeDirs: boolean;
Defined in: packages/fs/src/types.ts:28
Indicates whether directory entries should be included or not.
Default
{
true;
}
includeFiles?
optional includeFiles: boolean;
Defined in: packages/fs/src/types.ts:33
Indicates whether file entries should be included or not.
Default
{
true;
}
includeSymlinks?
optional includeSymlinks: boolean;
Defined in: packages/fs/src/types.ts:39
Indicates whether symlink entries should be included or not.
This option is meaningful only if followSymlinks is set to false.
Default
{
true;
}
match?
optional match: (string | RegExp)[];
Defined in: packages/fs/src/types.ts:45
List of regular expression or glob patterns used to filter entries.
If specified, entries that do not match the patterns specified by this option are excluded.
Default
{
undefined;
}
maxDepth?
optional maxDepth: number;
Defined in: packages/fs/src/types.ts:50
The maximum depth of the file tree to be walked recursively.
Default
{
Infinity;
}
skip?
optional skip: (string | RegExp)[];
Defined in: packages/fs/src/types.ts:56
List of regular expression or glob patterns used to filter entries.
If specified, entries matching the patterns specified by this option are excluded.
Default
{
undefined;
}
Type Aliases
CodeFrameLocation
type CodeFrameLocation = object;
Defined in: packages/fs/src/types.ts:117
Specifies a location (line and column) in a file for code frame generation.
Properties
column?
optional column: number;
Defined in: packages/fs/src/types.ts:119
The column number.
line
line: number;
Defined in: packages/fs/src/types.ts:121
The line number.
CodeFrameOptions
type CodeFrameOptions = object;
Defined in: packages/fs/src/types.ts:127
Options for customizing the appearance of code frames.
Properties
color?
optional color: object;
Defined in: packages/fs/src/types.ts:129
Colorization methods for different parts of the code frame.
gutter?
optional gutter: ColorizeMethod;
Color for the gutter (line numbers).
marker?
optional marker: ColorizeMethod;
Color for the marker (pointing to the error).
message?
optional message: ColorizeMethod;
Color for the message.
ContentType<O>
type ContentType<O> = O extends object ? Buffer : string;
Defined in: packages/fs/src/types.ts:104
Represents the content type of a read file, which can be a Buffer or a string based on options.
Type Parameters
O
O = undefined
The ReadFileOptions type.
FindUpName
type FindUpName =
| string[]
| string
| (directory) => FindUpNameFnResult;
Defined in: packages/fs/src/types.ts:270
Specifies the name(s) of the file or directory to search for in findUp.
Can be a single name, an array of names, or a function that returns a name or FIND_UP_STOP.
FindUpNameFnResult
type FindUpNameFnResult = PathLike | Promise<PathLike | typeof FIND_UP_STOP> | typeof FIND_UP_STOP | undefined;
Defined in: packages/fs/src/types.ts:264
The result type for the name matcher function used in findUp.
It can be a PathLike (string, Buffer, or URL), a Promise resolving to PathLike or FIND_UP_STOP,
FIND_UP_STOP to stop the search, or undefined to continue.
FindUpNameSync
type FindUpNameSync =
| string[]
| string
| (directory) => FindUpNameSyncFnResult;
Defined in: packages/fs/src/types.ts:284
Specifies the name(s) of the file or directory to search for in findUpSync.
Can be a single name, an array of names, or a function that returns a name or FIND_UP_STOP.
FindUpNameSyncFnResult
type FindUpNameSyncFnResult = PathLike | typeof FIND_UP_STOP | undefined;
Defined in: packages/fs/src/types.ts:278
The result type for the name matcher function used in findUpSync.
It can be a PathLike (string, Buffer, or URL), FIND_UP_STOP to stop the search,
or undefined to continue.
FindUpOptions
type FindUpOptions = object;
Defined in: packages/fs/src/types.ts:235
Options for the findUp and findUpSync functions.
Properties
allowSymlinks?
optional allowSymlinks: boolean;
Defined in: packages/fs/src/types.ts:240
Whether to follow symbolic links.
Default
undefined (behaves like true for findUp, false for findUpSync due to fs.stat vs fs.lstat)
cwd?
optional cwd: URL | string;
Defined in: packages/fs/src/types.ts:245
The current working directory.
Default
process.cwd();
stopAt?
optional stopAt: URL | string;
Defined in: packages/fs/src/types.ts:250
The directory to stop searching at.
Default
path.parse(cwd).root;
type?
optional type: "directory" | "file";
Defined in: packages/fs/src/types.ts:255
The type of path to find.
Default
"file";
JsonReplacer
type JsonReplacer = (number | string)[] | (this, key, value) => unknown | null;
Defined in: packages/fs/src/types.ts:197
Type for the replacer parameter of JSON.stringify().
Can be a function that alters the behavior of the stringification process,
or an array of strings and numbers that acts as a whitelist for selecting
the properties of the value object to be included in the JSON string.
If this value is null or not provided, all properties of the object are included in the resulting JSON string.
JsonReviver
type JsonReviver = Parameters<(typeof JSON)["parse"]>["1"];
Defined in: packages/fs/src/types.ts:112
Type for the reviver parameter of JSON.parse().
A function that transforms the results. This function is called for each member of the object.
If a member contains nested objects, the nested objects are transformed before the parent object is.
MoveOptions
type MoveOptions = object;
Defined in: packages/fs/src/move/types.ts:3
Properties
cwd?
optional cwd: URL | string;
Defined in: packages/fs/src/move/types.ts:10
The working directory to find source files.
The source and destination path are relative to this.
Default
process.cwd();
directoryMode?
readonly optional directoryMode: FilePermissions;
Defined in: packages/fs/src/move/types.ts:19
Permissions for created directories.
It has no effect on Windows.
Default
0o777;
overwrite?
readonly optional overwrite: boolean;
Defined in: packages/fs/src/move/types.ts:26
Overwrite existing destination file.
Default
true;
ReadFileEncoding
type ReadFileEncoding = "ascii" | "base64" | "base64url" | "hex" | "latin1" | "ucs-2" | "ucs2" | "utf-8" | "utf-16le" | "utf8" | "utf16le";
Defined in: packages/fs/src/types.ts:71
Supported file encodings for reading files.
ReadFileOptions<C>
type ReadFileOptions<C> = object;
Defined in: packages/fs/src/types.ts:77
Options for reading files.
Type Parameters
C
C
The type of compression used.
Properties
buffer?
optional buffer: boolean;
Defined in: packages/fs/src/types.ts:81
Return content as a Buffer. Default: false
compression?
optional compression: C;
Defined in: packages/fs/src/types.ts:86
Compression method to decompress the file against. Default: none
encoding?
optional encoding: ReadFileEncoding;
Defined in: packages/fs/src/types.ts:92
The encoding to use. Default: utf8
See
https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings
flag?
optional flag: number | string;
Defined in: packages/fs/src/types.ts:97
The flag used to open the file. Default: r
ReadJsonOptions
type ReadJsonOptions = CodeFrameOptions & object;
Defined in: packages/fs/src/types.ts:143
Options for reading and parsing JSON files.
Extends CodeFrameOptions.
Type declaration
beforeParse()?
optional beforeParse: (source) => string;
A function to transform the string content before parsing.
Parameters
source
string
The raw string content of the file.
Returns
string
The transformed string content.
WriteFileOptions
type WriteFileOptions = object;
Defined in: packages/fs/src/types.ts:155
Options for writing files.
Properties
chown?
optional chown: object;
Defined in: packages/fs/src/types.ts:159
The group and user ID used to set the file ownership. Default: undefined
gid
gid: number;
uid
uid: number;
encoding?
optional encoding: BufferEncoding | null;
Defined in: packages/fs/src/types.ts:167
The encoding to use. Default: utf8
flag?
optional flag: string;
Defined in: packages/fs/src/types.ts:172
The flag used to write the file. Default: w
mode?
optional mode: number;
Defined in: packages/fs/src/types.ts:177
The file mode (permission and sticky bits). Default: 0o666
overwrite?
optional overwrite: boolean;
Defined in: packages/fs/src/types.ts:182
Indicates whether the file should be overwritten if it already exists. Default: false
recursive?
optional recursive: boolean;
Defined in: packages/fs/src/types.ts:187
Recursively create parent directories if needed. Default: true
WriteJsonOptions
type WriteJsonOptions = WriteFileOptions & object;
Defined in: packages/fs/src/types.ts:208
Options for writing JSON files.
Extends WriteFileOptions.
Type declaration
detectIndent?
optional detectIndent: boolean;
Detect indentation automatically if the file exists. Default: false
indent?
optional indent: number | string;
The space used for pretty-printing.
Pass in undefined for no formatting.
replacer?
optional replacer: JsonReplacer;
Passed into JSON.stringify.
stringify()?
optional stringify: (data, replacer, space) => string;
Override the default JSON.stringify method.
Parameters
data
unknown
replacer
JsonReplacer
space
number | string | undefined
Returns
string
References
CRLF
Re-exports CRLF
detect
Re-exports detect
EOL
Re-exports EOL
format
Re-exports format
LF
Re-exports LF
size
Functions
brotliSize()
function brotliSize(input, options?): Promise<number>;
Defined in: packages/fs/src/size.ts:222
Asynchronously calculates the Brotli compressed size of the given input.
The input can be a Buffer, a Readable stream, a URL object pointing to a file, or a string (file path or content).
Uses memory-efficient streaming for files and streams to avoid loading entire contents into memory.
Parameters
input
The input data to compress with Brotli and measure.
string | URL | Buffer<ArrayBufferLike> | Readable
options?
BrotliOptions
Optional Zlib options for Brotli compression.
Returns
Promise<number>
A promise that resolves with the Brotli compressed size in bytes.
Example
import { brotliSize } from "@visulima/fs";
import { Readable } from "node:stream";
import { writeFile, unlink } from "node:fs/promises";
import { join } from "node:path";
const text = "This is a test string for Brotli compression efficiency.";
const filePath = join("temp-brotli-file.txt");
async function main() {
const buffer = Buffer.from(text);
console.log(`Brotli size of buffer: ${await brotliSize(buffer)} bytes`);
console.log(`Brotli size of string content: ${await brotliSize(text)} bytes`);
await writeFile(filePath, text);
console.log(`Brotli size of file: ${await brotliSize(filePath)} bytes`);
const fileUrl = new URL(`file://${filePath}`);
console.log(`Brotli size of URL: ${await brotliSize(fileUrl)} bytes`);
const stream = Readable.from(text);
console.log(`Brotli size of stream: ${await brotliSize(stream)} bytes`);
await unlink(filePath);
}
main().catch(console.error);
brotliSizeSync()
function brotliSizeSync(input, options?): number;
Defined in: packages/fs/src/size.ts:370
Synchronously calculates the Brotli compressed size of the given input.
The input can be a Buffer, a URL object pointing to a file, or a string (file path or content).
Note: For Readable streams or very large files, consider using the asynchronous brotliSize function for better performance and to avoid blocking.
Parameters
input
The input data to compress with Brotli and measure.
string | URL | Buffer<ArrayBufferLike>
options?
BrotliOptions
Optional Zlib options for Brotli compression.
Returns
number
The Brotli compressed size in bytes.
Example
import { brotliSizeSync } from "@visulima/fs";
import { writeFileSync, unlinkSync } from "node:fs";
import { join } from "node:path";
const text = "This is a test string for Brotli compression efficiency, synchronously.";
const filePath = join("temp-brotli-sync-file.txt");
const buffer = Buffer.from(text);
console.log(`Sync Brotli size of buffer: ${brotliSizeSync(buffer)} bytes`);
console.log(`Sync Brotli size of string content: ${brotliSizeSync(text)} bytes`);
try {
writeFileSync(filePath, text);
console.log(`Sync Brotli size of file: ${brotliSizeSync(filePath)} bytes`);
const fileUrl = new URL(`file://${filePath}`);
console.log(`Sync Brotli size of URL: ${brotliSizeSync(fileUrl)} bytes`);
} finally {
try {
unlinkSync(filePath);
} catch {}
}
gzipSize()
function gzipSize(input, options?): Promise<number>;
Defined in: packages/fs/src/size.ts:171
Asynchronously calculates the gzipped size of the given input.
The input can be a Buffer, a Readable stream, a URL object pointing to a file, or a string (file path or content).
Uses memory-efficient streaming for files and streams to avoid loading entire contents into memory.
Parameters
input
The input data to gzip and measure.
string | URL | Buffer<ArrayBufferLike> | Readable
options?
ZlibOptions
Optional Zlib options for gzip compression.
Returns
Promise<number>
A promise that resolves with the gzipped size in bytes.
Example
import { gzipSize } from "@visulima/fs";
import { Readable } from "node:stream";
import { writeFile, unlink } from "node:fs/promises";
import { join } from "node:path";
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
const filePath = join("temp-file.txt");
async function main() {
const buffer = Buffer.from(text);
console.log(`Gzip size of buffer: ${await gzipSize(buffer)} bytes`);
console.log(`Gzip size of string content: ${await gzipSize(text)} bytes`);
await writeFile(filePath, text);
console.log(`Gzip size of file: ${await gzipSize(filePath)} bytes`);
const fileUrl = new URL(`file://${filePath}`);
console.log(`Gzip size of URL: ${await gzipSize(fileUrl)} bytes`);
const stream = Readable.from(text);
console.log(`Gzip size of stream: ${await gzipSize(stream)} bytes`);
await unlink(filePath);
}
main().catch(console.error);
gzipSizeSync()
function gzipSizeSync(input, options?): number;
Defined in: packages/fs/src/size.ts:316
Synchronously calculates the gzipped size of the given input.
The input can be a Buffer, a URL object pointing to a file, or a string (file path or content).
Note: For Readable streams or very large files, consider using the asynchronous gzipSize function for better performance and to avoid blocking.
Parameters
input
The input data to gzip and measure.
string | URL | Buffer<ArrayBufferLike>
options?
ZlibOptions
Optional Zlib options for gzip compression.
Returns
number
The gzipped size in bytes.
Example
import { gzipSizeSync } from "@visulima/fs";
import { writeFileSync, unlinkSync } from "node:fs";
import { join } from "node:path";
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
const filePath = join("temp-sync-file.txt");
const buffer = Buffer.from(text);
console.log(`Sync Gzip size of buffer: ${gzipSizeSync(buffer)} bytes`);
console.log(`Sync Gzip size of string content: ${gzipSizeSync(text)} bytes`);
try {
writeFileSync(filePath, text);
console.log(`Sync Gzip size of file: ${gzipSizeSync(filePath)} bytes`);
const fileUrl = new URL(`file://${filePath}`);
console.log(`Sync Gzip size of URL: ${gzipSizeSync(fileUrl)} bytes`);
} finally {
try {
unlinkSync(filePath);
} catch {}
}
rawSize()
function rawSize(input): Promise<number>;
Defined in: packages/fs/src/size.ts:272
Asynchronously calculates the raw (uncompressed) size of the given input.
The input can be a Buffer, a Readable stream, a URL object pointing to a file, or a string (file path or content).
Uses memory-efficient streaming for files and streams to avoid loading entire contents into memory.
Parameters
input
The input data to measure.
string | URL | Buffer<ArrayBufferLike> | Readable
Returns
Promise<number>
A promise that resolves with the raw size in bytes.
Example
import { rawSize } from "@visulima/fs";
import { Readable } from "node:stream";
import { writeFile, unlink } from "node:fs/promises";
import { join } from "node:path";
const text = "Hello, World!";
const filePath = join("temp-raw-file.txt");
async function main() {
const buffer = Buffer.from(text);
console.log(`Raw size of buffer: ${await rawSize(buffer)} bytes`);
console.log(`Raw size of string content: ${await rawSize(text)} bytes`);
await writeFile(filePath, text);
console.log(`Raw size of file: ${await rawSize(filePath)} bytes`);
const fileUrl = new URL(`file://${filePath}`);
console.log(`Raw size of URL: ${await rawSize(fileUrl)} bytes`);
const stream = Readable.from(text);
console.log(`Raw size of stream: ${await rawSize(stream)} bytes`);
await unlink(filePath);
}
main().catch(console.error);
rawSizeSync()
function rawSizeSync(input): number;
Defined in: packages/fs/src/size.ts:424
Synchronously calculates the raw (uncompressed) size of the given input.
The input can be a Buffer, a URL object pointing to a file, or a string (file path or content).
For file paths, it uses statSync to get the file size.
Note: For Readable streams or very large files, consider using the asynchronous rawSize function for better performance and to avoid blocking.
Parameters
input
The input data to measure.
string | URL | Buffer<ArrayBufferLike>
Returns
number
The raw size in bytes.
Example
import { rawSizeSync } from "@visulima/fs";
import { writeFileSync, unlinkSync } from "node:fs";
import { join } from "node:path";
const text = "Hello, Synchronous World!";
const filePath = join("temp-raw-sync-file.txt");
const buffer = Buffer.from(text);
console.log(`Sync Raw size of buffer: ${rawSizeSync(buffer)} bytes`);
console.log(`Sync Raw size of string content: ${rawSizeSync(text)} bytes`);
try {
writeFileSync(filePath, text);
console.log(`Sync Raw size of file: ${rawSizeSync(filePath)} bytes`);
const fileUrl = new URL(`file://${filePath}`);
console.log(`Sync Raw size of URL: ${rawSizeSync(fileUrl)} bytes`);
} finally {
try {
unlinkSync(filePath);
} catch {}
}
utils
Classes
JSONError
Defined in: packages/fs/src/error/json-error.ts:39
Custom error class for handling JSON parsing or related errors.
It can optionally include a file name and a code frame for better debugging.
Example
import { JSONError } from "@visulima/fs/error";
import { readJsonSync } from "@visulima/fs";
import { join } from "node:path";
try {
const simulateJsonError = (filePath, content) => {
const err = new JSONError(`Unexpected token '}' at position 15`);
err.fileName = filePath;
err.codeFrame = ` 13 | "key": "value",
> 14 | "anotherKey": "anotherValue",}
| ^
15 | "lastKey": "end"
`;
throw err;
};
simulateJsonError(join("path", "to", "corrupted.json"), '{ "key": "value", "anotherKey": "anotherValue",} ');
} catch (error) {
if (error instanceof JSONError) {
console.error(`JSON Error: ${error.message}`);
} else {
console.error("An unexpected error occurred:", error);
}
}
Extends
Constructors
Constructor
new JSONError(message): JSONError;
Defined in: packages/fs/src/error/json-error.ts:53
Creates a new JSONError instance.
Parameters
message
string
The primary error message.
Returns
JSONError
Overrides
Error.constructor;
Accessors
message
Get Signature
get message(): string;
Defined in: packages/fs/src/error/json-error.ts:63
Returns
string
Set Signature
set message(message): void;
Defined in: packages/fs/src/error/json-error.ts:67
Parameters
message
string
Returns
void
Overrides
Error.message;
Methods
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:91
Create .stack property on a target object
Parameters
targetObject
object
constructorOpt?
Function
Returns
void
Inherited from
Error.captureStackTrace;
Properties
cause?
optional cause: unknown;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Error.cause;
codeFrame
codeFrame: string;
Defined in: packages/fs/src/error/json-error.ts:42
fileName
fileName: string;
Defined in: packages/fs/src/error/json-error.ts:40
name
readonly name: "JSONError" = "JSONError";
Defined in: packages/fs/src/error/json-error.ts:45
Overrides
Error.name;
stack?
optional stack: string;
Defined in: node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Error.stack;
prepareStackTrace()?
static optional prepareStackTrace: (err, stackTraces) => any;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:98
Optional override for formatting stack traces
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
Error.prepareStackTrace;
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@18.19.71/node_modules/@types/node/globals.d.ts:100
Inherited from
Error.stackTraceLimit;
Functions
assertValidFileContents()
function assertValidFileContents(contents): void;
Defined in: packages/fs/src/utils/assert-valid-file-contents.ts:28
Asserts that the provided contents are valid for writing to a file.
Valid contents can be a string, an ArrayBuffer, or an ArrayBuffer view (e.g., Uint8Array).
Parameters
contents
any
The file contents to validate.
Returns
void
Throws
If the contents are not a string, ArrayBuffer, or ArrayBuffer view.
Example
import { assertValidFileContents } from "@visulima/fs";
try {
assertValidFileContents("Hello, world!");
assertValidFileContents(new Uint8Array([72, 101, 108, 108, 111]));
assertValidFileContents(new ArrayBuffer(8));
console.log("File contents are valid.");
} catch (error) {
console.error(error.message);
}
try {
assertValidFileContents(123);
} catch (error) {
console.error(error.message);
}
assertValidFileOrDirectoryPath()
function assertValidFileOrDirectoryPath(fileOrDirectoryPath): void;
Defined in: packages/fs/src/utils/assert-valid-file-or-directory-path.ts:27
Asserts that the provided path is a valid file or directory path.
A valid path must be a non-empty string or a URL instance.
Parameters
fileOrDirectoryPath
any
The path to validate.
Returns
void
Throws
If the path is not a non-empty string or a URL.
Example
import { assertValidFileOrDirectoryPath } from "@visulima/fs";
try {
assertValidFileOrDirectoryPath("/path/to/file.txt");
assertValidFileOrDirectoryPath(new URL("file:///path/to/file.txt"));
console.log("Path is valid.");
} catch (error) {
console.error(error.message);
}
try {
assertValidFileOrDirectoryPath("");
} catch (error) {
console.error(error.message);
}
parseJson()
Parses a JSON string, constructing the JavaScript value or object described by the string.
This is a modified version of parse-json from https://github.com/sindresorhus/parse-json/blob/main/index.js.
It provides more detailed error messages including code frames.
Template
The type of the parsed JSON value.
Param
The JSON string to parse.
Param
An optional reviver function that can transform the results, or a filename string if no reviver is used.
Param
An optional filename string (if reviver is provided), or CodeFrameOptions (if reviver is not provided and this is the third argument).
Param
Optional options for generating the code frame on error.
Throws
If the string to parse is not valid JSON, or if any other parsing error occurs.
Example
import { parseJson } from "@visulima/fs";
const jsonString = '{"name": "John Doe", "age": 30, "city": "New York"}';
const malformedJson = '{"name": "Jane Doe", "age": "thirty}';
try {
const data = parseJson(jsonString);
console.log(data.name);
const dataWithReviver = parseJson(jsonString, (key, value) => {
if (key === "age") {
return value + 5;
}
return value;
});
console.log(dataWithReviver.age);
const user = parseJson(malformedJson, "user-data.json");
} catch (error) {
console.error(error.message);
if (error.fileName) {
console.error(`Error in file: ${error.fileName}`);
}
if (error.codeFrame) {
console.error(error.codeFrame);
}
}
Call Signature
function parseJson<T>(string, filename?, options?): T;
Defined in: packages/fs/src/utils/parse-json.ts:60
Type Parameters
T
T = JsonValue
Parameters
string
string
filename?
string
options?
CodeFrameOptions
Returns
T
Call Signature
function parseJson<T>(string, reviver, fileName?, options?): T;
Defined in: packages/fs/src/utils/parse-json.ts:61
Type Parameters
T
T = JsonValue
Parameters
string
string
reviver
(this, key, value) => any
fileName?
string
options?
CodeFrameOptions
Returns
T
function stripJsonComments(jsonString, options?): string;
Defined in: packages/fs/src/utils/strip-json-comments.ts:46
Strips comments from a JSON string.
Handles both single-line (//) and multi-line (/_ ... _/) comments.
Parameters
jsonString
string
The JSON string possibly containing comments.
options?
Optional configuration for stripping comments.
whitespace?
boolean = true
If true (default), comments are replaced with whitespace to preserve line numbers and character positions. If false, comments are removed entirely.
Returns
string
The JSON string with comments stripped.
Example
import { stripJsonComments } from "@visulima/fs";
const jsonWithComments = `{
// This is a single-line comment
"name": "John Doe",
"age": 30, /* This is a
multi-line comment */
"city": "New York"
}`;
const stripped = stripJsonComments(jsonWithComments);
console.log(stripped);
const strippedWithoutWhitespace = stripJsonComments(jsonWithComments, { whitespace: false });
console.log(strippedWithoutWhitespace);
Variables
toPath()
const toPath: (urlOrPath) => string;
Defined in: node_modules/.pnpm/@visulima+path@1.3.6/node_modules/@visulima/path/dist/utils.d.mts:7
Parameters
urlOrPath
URL | string
Returns
string
yaml
Functions
readYaml()
Asynchronously reads a YAML file and then parses it into an object.
Template
The expected type of the parsed YAML object. Defaults to Record<string, unknown>.
Param
The path to the YAML file to read. Can be a file URL or a string path.
Param
An optional reviver function (similar to JSON.parse reviver) or the options object.
Param
Optional configuration for reading and parsing the YAML file. See ReadYamlOptions.
If reviver is an object, this argument is ignored.
Example
import { readYaml } from "@visulima/fs";
import { join } from "node:path";
const readMyYaml = async () => {
try {
const data = await readYaml(join("path", "to", "my-config.yaml"));
console.log("Config data:", data);
const dataWithReviver = await readYaml(join("path", "to", "another.yaml"), (key, value) => {
if (key === "date") return new Date(value);
return value;
});
console.log("Date field is now a Date object:", dataWithReviver.date);
} catch (error) {
console.error("Failed to read or parse YAML file:", error);
}
};
readMyYaml();
Call Signature
function readYaml<R>(path, options?): Promise<R>;
Defined in: packages/fs/src/read/read-yaml.ts:6
Type Parameters
R
R = Record<string, unknown>
Parameters
path
string | URL
options?
ReadYamlOptions<"brotli" | "gzip" | "none">
Returns
Promise<R>
Call Signature
function readYaml<R>(path, reviver?, options?): Promise<R>;
Defined in: packages/fs/src/read/read-yaml.ts:7
Type Parameters
R
R = Record<string, unknown>
Parameters
path
string | URL
reviver?
YamlReviver
options?
ReadYamlOptions<"brotli" | "gzip" | "none">
Returns
Promise<R>
readYamlSync()
Synchronously reads a YAML file and then parses it into an object.
Template
The expected type of the parsed YAML object. Defaults to Record<string, unknown>.
Param
The path to the YAML file to read. Can be a file URL or a string path.
Param
An optional reviver function (similar to JSON.parse reviver) or the options object.
Param
Optional configuration for reading and parsing the YAML file. See ReadYamlOptions.
If reviver is an object, this argument is ignored.
Example
import { readYamlSync } from "@visulima/fs";
import { join } from "node:path";
try {
const data = readYamlSync(join("path", "to", "my-config.yaml"));
console.log("Config data:", data);
const dataWithReviver = readYamlSync(join("path", "to", "another.yaml"), (key, value) => {
if (key === "date") return new Date(value);
return value;
});
console.log("Date field is now a Date object:", dataWithReviver.date);
} catch (error) {
console.error("Failed to read or parse YAML file:", error);
}
Call Signature
function readYamlSync<R>(path, options?): R;
Defined in: packages/fs/src/read/read-yaml-sync.ts:6
Type Parameters
R
R = Record<string, unknown>
Parameters
path
string | URL
options?
ReadYamlOptions<"brotli" | "gzip" | "none">
Returns
R
Call Signature
function readYamlSync<R>(path, reviver?, options?): R;
Defined in: packages/fs/src/read/read-yaml-sync.ts:7
Type Parameters
R
R = Record<string, unknown>
Parameters
path
string | URL
reviver?
YamlReviver
options?
ReadYamlOptions<"brotli" | "gzip" | "none">
Returns
R
writeYaml()
Asynchronously writes an object to a YAML file.
Param
The path to the YAML file to write. Can be a file URL or a string path.
Param
The data to serialize and write. Can be any JavaScript value that can be stringified by yaml.stringify.
Param
Optional. A replacer function or an array of keys to include, or the options object itself.
See yaml.stringify documentation for more details.
Param
Optional. Configuration for writing and stringifying the YAML file. See WriteYamlOptions.
If replacer is an object and not a function/array, it's treated as options.
The space property within options can be a number for spaces or a string for tabs/etc.
Example
import { writeYaml } from "@visulima/fs";
import { join } from "node:path";
const writeMyYaml = async () => {
try {
await writeYaml(join("/tmp", "my-data.yaml"), { name: "John Doe", age: 30, city: "New York" });
console.log("YAML file written successfully.");
await writeYaml(join("/tmp", "another-data.yaml"), { user: "jane", details: { id: 1, status: "active" } }, null, 2);
console.log("Another YAML file written with 2 spaces indentation.");
const customReplacer = (key, value) => (key === "age" ? undefined : value);
await writeYaml(join("/tmp", "filtered-data.yaml"), { name: "Smith", age: 45, occupation: "Engineer" }, customReplacer, { space: "\t" });
console.log("Filtered YAML file written with tab indentation.");
} catch (error) {
console.error("Failed to write YAML file:", error);
}
};
writeMyYaml();
Call Signature
function writeYaml(path, data, options?): Promise<void>;
Defined in: packages/fs/src/write/write-yaml.ts:6
Parameters
path
string | URL
data
any
options?
WriteYamlOptions
Returns
Promise<void>
Call Signature
function writeYaml(path, data, replacer?, options?): Promise<void>;
Defined in: packages/fs/src/write/write-yaml.ts:12
Parameters
path
string | URL
data
any
replacer?
JsonReplacer
options?
string | number | WriteYamlOptions
Returns
Promise<void>
writeYamlSync()
Synchronously writes an object to a YAML file.
Param
The path to the YAML file to write. Can be a file URL or a string path.
Param
The data to serialize and write. Can be any JavaScript value that can be stringified by yaml.stringify.
Param
Optional. A replacer function or an array of keys to include, or the options object itself.
See yaml.stringify documentation for more details.
Param
Optional. Configuration for writing and stringifying the YAML file. See WriteYamlOptions.
If replacer is an object and not a function/array, it's treated as options.
The space property within options can be a number for spaces or a string for tabs/etc.
Example
import { writeYamlSync } from "@visulima/fs";
import { join } from "node:path";
const writeMyYamlSync = () => {
try {
writeYamlSync(join("/tmp", "my-data-sync.yaml"), { name: "Jane Doe", age: 28, city: "London" });
console.log("YAML file written successfully (sync).");
writeYamlSync(join("/tmp", "another-data-sync.yaml"), { user: "john_sync", details: { id: 2, status: "inactive" } }, null, 4);
console.log("Another YAML file written with 4 spaces indentation (sync).");
const customReplacer = (key, value) => (key === "city" ? "REDACTED" : value);
writeYamlSync(join("/tmp", "filtered-data-sync.yaml"), { name: "Peter", age: 50, city: "Paris" }, customReplacer, { space: 2 });
console.log("Filtered YAML file written with 2 spaces indentation (sync).");
} catch (error) {
console.error("Failed to write YAML file (sync):", error);
}
};
writeMyYamlSync();
Call Signature
function writeYamlSync(path, data, options?): void;
Defined in: packages/fs/src/write/write-yaml-sync.ts:6
Parameters
path
string | URL
data
any
options?
WriteYamlOptions
Returns
void
Call Signature
function writeYamlSync(path, data, replacer?, options?): void;
Defined in: packages/fs/src/write/write-yaml-sync.ts:12
Parameters
path
string | URL
data
any
replacer?
JsonReplacer
options?
string | number | WriteYamlOptions
Returns
void
Type Aliases
YamlReplacer
type YamlReplacer = JsonReplacer;
Defined in: packages/fs/src/types.ts:202
Type for the replacer parameter used in YAML serialization, similar to JSON.stringify's replacer.
Supported Node.js Versions
Libraries in this ecosystem make the best effort to track Node.js’ release schedule.
Here’s a post on why we think this is important.
Contributing
If you would like to help take a look at the list of issues and check our Contributing guild.
Note: please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Credits
About
Related Projects
- strip-json-comments - Strip comments from JSON. Lets you use comments in your JSON files!
- parse-json - Parse JSON with more helpful errors.
- find-up - Find a file or directory by walking up parent directories.
- walk - Walk a directory recursively and yield all files and directories.
License
The visulima fs is open-sourced software licensed under the [MIT][license-url]
[typescript-url]: https://www.typescriptlang.org/ "TypeScript" "typescript"
[license-image]: https://img.shields.io/npm/l/@visulima/fs?color=blueviolet&style=for-the-badge
[license-url]: LICENSE.md "license"
[npm-image]: https://img.shields.io/npm/v/@visulima/fs/latest.svg?style=for-the-badge&logo=npm
[npm-url]: https://www.npmjs.com/package/@visulima/fs/v/latest "npm"