npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

objectify-directory

v1.0.0

Published

Transforms directory and its children to it's object representation

Downloads

5

Readme

objectify-directory

Maps directory and it's content to a tree of objects with inner navigation.
Typed for Typescript

Why?

Sometimes it might be usefull to map directory, it's subdirectories and their files to tree of JS objects.

Getting started

npm i --save objectify-directory

// ES6
import parseDirectory from 'objectify-directory';
// CommonJS
const parseDirectory = require('objectify-directory').default;

// then
parseDirectory(path.resolve(__dirname,'./folderToMap')).then(root => {

});
// await
let root = parseDirectory(path.resolve(__dirname,'./folderToMap'));

When JSON.stringify() is called a simplified version of the tree is returned in order to deal with circular references.

Options

  • loadContent: boolean loads binary of the file as property of TreeFile object
  • calculateSize: boolean calculates byte size of the file as property of TreeFile object
  • contentInJson: boolean includes Buffer.toString() in content of TreeFile when JSON.strigify() is called, loadContent needs to be set true

Types

TreeElement

Common ancestor to TreeFolder and TreeFile. Holds methods available to both types.

Properties

  • name: string name of the directory of file (without extension)
  • parent: TreeElement reference to parent directory (always directory as only dirs can have children)
  • children: Map<string, TreeElement> collection of children elements, should be accessed only via .goto method

Methods

  • fullPath(): string returns full path to the element from the root of the drive
  • relativePath(): string return relative path from root
  • goto(path: string): TreeElement navigates through the tree, accepts common path pattern (eg: "../siblingFolder", "./childFolder", "./child.file")

TreeFolder

Object representation of folder.

TreeFile

Object representation of file

Properties

  • extension: string extension of the file
  • size: number byte size of the file if option set true
  • content: Buffer content of the file if option set true

Methods

  • getSize(): number calculates the byte size of the file or returns size proeprty if set
  • getContent(): Buffer reads content of the file, or return content property if set