@sutor/fs-grow
TypeScript icon, indicating that this package has built-in type declarations

0.0.3 • Public • Published

fs-grow

IMPORTANT this package is usable but extremely raw. While it remains pre v1, I will make drastic changes that will break the API.

Overview

Convert an array of objects into a directory structure.

Based on fsify. This originally started life as a fork of that, with TypeScript support, but ended up as a complete rewrite.

Todo

  • [ ] docs are garbage, make them not garbage.
  • [ ] rename interface.
  • [ ] synchronous versions write/read.
  • [ ] more tests for the read-fs-tree module.
  • [ ] only use the EntryType enum internally, the input should be a string.
  • [ ] allow the parse/write step to accept callbacks, allowing functions to be plugged into the library.

Installation

yarn add @sutor/fs-grow

or

npm install @sutor/fs-grow

Usage

The library exports a class as its default interface. To create an instance of the [FSTree] class, instantiate it with the root name of the directory that will be built into. This directory will be created inside the current working directory.

import FSTree, { EntryType} from "@sutor/fs-grow";

const tree = new FSTree("myDirectory");

Now, the asynchronous make function can be used to construct the directory. A structure is an array of objects that represents a directory structure. Each object must contain information about a directory or file.

Structure with content

myDirectory
├── dirname
│   └── filename
└── filename
const structure = [
  {
    type: EntryType.DIRECTORY,
    name: "dirname",
    contents: [
      {
        type: EntryType.FILE,
        name: "filename",
        contents: "data",
      },
    ],
  },
  {
    type: EntryType.FILE,
    name: "filename",
    contents: "data",
  },
];

tree.make(structure);

Deeply nested structure

myDirectory
└── dirname
    └── dirname
        └── filename
const structure = [
  {
    type: EntryType.DIRECTORY,
    name: "dirname",
    contents: [
      {
        type: EntryType.DIRECTORY,
        name: "dirname",
        contents: [
          {
            type: EntryType.FILE,
            name: "filename",
          },
        ],
      },
    ],
  },
];

tree.make(structure);

Just a file

myDirectory
└── filename
const structure = [
  {
    type: EntryType.FILE,
    name: "filename",
  },
];

tree.make(structure);

Package Sidebar

Install

npm i @sutor/fs-grow

Weekly Downloads

1

Version

0.0.3

License

MIT

Unpacked Size

28.7 kB

Total Files

27

Last publish

Collaborators

  • dancouper