Create file system trees
This package is a utility to create file system trees.
This utility that uses file system adapters to recursively read a directory, and create a tree from its contents.
This package is ESM only.
In Node.js (version 18+) with yarn:
yarn add @flex-development/fst-util-from-fs
See Git - Protocols | Yarn for details regarding installing from Git.
In Deno with esm.sh
:
import { fromFileSystem } from 'https://esm.sh/@flex-development/fst-util-from-fs'
In browsers with esm.sh
:
<script type="module">
import { fromFileSystem } from 'https://esm.sh/@flex-development/fst-util-from-fs'
</script>
TODO: use
This package exports the following identifiers:
There is no default export.
Create a file system tree.
options
(Options
, optional) — tree options
(Root
) file system tree
Options for creating a file system tree (TypeScript interface).
content
(boolean
, optional) — include file content (populates thevalue
field of eachfile
node)depth
(number
, optional) — maximum search depth (inclusive). a search depth less than0
will produce an empty treeextensions
(Extensions
, optional) — list of file extensions to filter matched files byfilters
(Filters
, optional) — path filters to determine if nodes should be added to the treefs
(Partial<FileSystem>
, optional) — file system adapterhandles
(Handles
, optional) — node handlersroot
(URL | string
, optional) — module id of root directory- default:
pathe.cwd() + pathe.sep
- default:
sort
(Sort
, optional) — function used to sort child nodes
Directory content entry (TypeScript interface).
This interface can be augmented to register custom methods and properties.
declare module '@flex-development/fst-util-from-fs' {
interface Dirent {
parentPath: string
}
}
isDirectory
((this: void) => boolean
) — check if the dirent describes a directoryname
(string
) — directory content name. if the dirent refers to a file, the file extension should be included
Union of options to filter matched files by file extension (TypeScript type).
type Extensions = Set<string> | readonly string[] | string
File system adapter (TypeScript interface).
readFileSync
((this: void, path: string, encoding: 'utf8') => string
, optional) — get the contents of the file atpath
readdirSync
((this: void, path: string, options: { withFileTypes: true }) => readonly Dirent[]
) — read the contents of the directory atpath
Determine if a node for x
should be added to a file system tree.
x
(string
) — path to directory or file
(boolean
) true
if node for x
should be added, false
otherwise
Path filters to determine if nodes should be added to the tree (TypeScript type).
directory
(Filter
, optional) — determine if adirectory
node should be added to the treefile
(Filter
, optional) — determine if afile
node should be added to the tree
Handle node
.
node
(T
) — directory or file nodedirent
(Dirent
) — dirent object representing directory or fileparent
(Parent
) — parent nodetree
(Root
) — file system treefs
(FileSystem
) — file system adapter
(null | undefined | void
) nothing
Path filters to determine if nodes should be added to the tree (TypeScript type).
directory
(Handle<Directory>
, optional) — directory node handlerfile
(Handle<File>
, optional) — file node handler
Compare node a
to b
.
(number
) comparison result
The syntax tree is fst.
This package is fully typed with TypeScript.
See CONTRIBUTING.md
.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.