Package Exports
- @sqlpm/file-async-ts
- @sqlpm/file-async-ts/src/index.ts
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@sqlpm/file-async-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@sqlpm/file-async-ts
@sqlpm/file-async-ts
is a typescript library applying the facade pattern to asynchronous file access.
README: See How to Use This Library to learn how to enable transpilation for local development or tools like jest or ts-node won't work.
Features
- 100% typescript.
- 100% asynchronous library.
- functions
- fileContentDetailStr - Returns a file path and file content as a string.
- fileExists - Check if a file exists.
- readFile - Read from a file returning a Buffer.
- readFileString -Read from a file returning a string.
- dirRead Returns a list of files from a directory.
- parentPaths - Given a path, returns an array of all parent paths.
Usage
fileContentDetailStr - Get a Files Path and Associated Contents
Reads the contents of a file, converting the contents to a string, and returning the contents of the file associated with the path of the file.
- @param path - The absolute or relative path to the file.
- @param [options]
- [options.required=true] - When
true
orundefined
, when the file is not found an exception is thrown. Whenfalse
, no exception is thrown andundefined
is returned.
- [options.required=true] - When
- @throws - An error is thrown if the file is not found and
options.required
was set to true. - returns - The contents of the file along with the associated path.
Undefined may be returned if the
options.required
was set to false.
@example Return file meta data and content details.
import { join } from 'node:path';
import { fileContentDetailStr } from '@sqlpm/file-async-ts';
(async () => {
const dir = join(__dirname, 'test-files', 'info.txt');
const contentDetail = await fileContentDetailStr(dir);
expect(contentDetail?.content)
.toEqual('A file with content.');
expect(contentDetail?.filePath)
.toMatch(/[\S]*\/__tests__\/test-files\/info.txt$/);
})();
fileExists - Asynchronously Checking if a File Exists
Asynchronously check if a file exists.
- @param path - The absolute or relative path to the file.
- @returns - True when the file exists and false otherwise.
@example Checks if a file exists.
import { join } from 'node:path';
import { fileExists } from '@sqlpm/file-async-ts';
(async () => {
const dir = join(__dirname, 'file-exists.unit.spec.ts');
const exists: boolean = await fileExists(dir);
expect(exists).toEqual(true);
})();
readFile - Asynchronously Read All Contents of a File
Given an absolute or relative path, asynchronously reads all the contents of the file into a buffer.
@remarks Intended use is only for relatively small files. For large files use streams.
@param path - The absolute or relative path to the file.
@param [options]
- [options.required=true] - When
true
orundefined
, when the file is not found an exception is thrown. Whenfalse
, no exception is thrown andundefined
is returned.
- [options.required=true] - When
@throws - Errors if the file is not found when
options.required
istrue
.@returns - Contents of the file as a buffer if the file existed,
undefined
when required isfalse
and the file was not found.
@example
Reads the contents of a file into a Buffer
.
import { join } from 'node:path';
import { readFile } from '@sqlpm/file-async-ts';
(async () => {
const dir = join(__dirname, 'index.ts');
const content: Buffer | undefined = await readFile(dir);
console.info(content);
})();
readFileString - Asynchronously Read All Contents of a File Into A String
Given an absolute or relative path, asynchronously reads all the contents of the file into a string.
@remarks Intended use is only for relatively small files. For large files use streams.
@param path - The absolute or relative path to the file.
@param [options]
- [options.required=true] - When
true
orundefined
, when the file is not found an exception is thrown. Whenfalse
, no exception is thrown andundefined
is returned.
- [options.required=true] - When
@throws - Errors if the file is not found when
options.required
istrue
.@returns - Contents of the file as a string if the file existed,
undefined
when required isfalse
and the file was not found.
@example
Reads the contents of a file into a string
.
import { join } from 'node:path';
import { readFileString } from '@sqlpm/file-async-ts';
(async () => {
const dir = join(__dirname, 'read-file.unit.spec.ts');
const content: string | undefined = await readFileString(dir);
expect(content).toBeDefined();
})();
dirRead - Return a List of Files Names From a Directory
Given an absolute or relative path, asynchronously returns all of the file names in a directory.
- @param path - The absolute or relative path to the file.
- @param [options]
- [options.required=true] - When
true
orundefined
, when the directory is not found an exception is thrown. Whenfalse
, no exception is thrown andundefined
is returned.
- [options.required=true] - When
- @throws - Errors if the directory is not found when
options.required
istrue
. - @returns - An array of file names. @example Get the file names of all files in a given directory.
import {
dirRead
} from '@sqlpm/file-ts';
(async () => {
const files: string[] | undefined = await dirRead(__dirname);
expect(files?.length).toBeGreaterThan(0);
})();
parentPaths - Getting All Paths of a Child Path
Given an absolute path, parentPaths
returns an array containing all
possible parent paths, including the root path ordered by the child path
to the root path.
@remarks
The child path is normalized before all possible parent paths are
generated. For example, /cat/../and/mouse
becomes /and/mouse
.
- @param childPath - The absolute path used to generate all possible parent paths.
- @param [options]
- [options.depth] - The number of parent paths to return, starting from the child path. When undefined, all paths are returned up to and including the root path.
- @throws - An error is thrown if
childPath
is not an absolute path. - @returns - An array containing all possible parent paths including the root path ordered by the child path first.
@example Return all parent paths of a child path.
import {
parentPaths,
} from '@sqlpm/file-async-ts';
const result: string[] = parentPaths('/cat/mouse');
expect(result).toEqual([
'/cat/mouse',
'/cat',
'/',
]);
@example Return all parent paths of a child path, including the child, to a depth of 2.
import {
parentPaths,
} from '@sqlpm/file-async-ts';
const paths = parentPaths('/a/b/c/d', { depth: 2 });
expect(paths).toEqual(['/a/b/c/d', '/a/b/c']);
Intent
- No Emitted Javascript - The intent is to import this typescript library into a typescript project: compiling to Javascript occurring within the project.
- No Synchronous Calls Exposed - We facade only asynchronous functions as a forcing function to simplify architectural decisions. The intent is to add consistency to how files are consumed within a business organization.
Development
See the monorepo readme.
License
Licensed under MIT. See LICENSE.md.