New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dir2tree

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dir2tree - npm Package Compare versions

Comparing version

to
0.2.0

7

package.json
{
"name": "dir2tree",
"version": "0.1.2",
"version": "0.2.0",
"main": "src/index.js",

@@ -31,3 +31,6 @@ "scripts": {

},
"license": "MIT"
"license": "MIT",
"dependencies": {
"mapfun": "^0.9.17"
}
}

@@ -22,3 +22,3 @@ ## Demo

```
####$ Arguments
#### Arguments
- **`ROOT`** : The path to the root directory that we want handle. it's ***`required`***

@@ -43,5 +43,41 @@ - **`OPTIONS`** : An object containing various configuration options to control the behavior of the tree generation.it's ***`optional`*** , These options might include :

- **`.write(Target, filename)`**
- **`.flat(depth, separator)`**
### Use It in your Github Repository
```mermaid
sequenceDiagram
Your repository ->> dir2tree: ...
dir2tree-->>Your repository:...
```
```yml
name: Generate Directory Tree using zakarialaoui10/dir2tree
on:
push:
branches:
- main
jobs:
build:
permissions :
contents : write
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}
- name: Generate Directory Tree
uses: zakarialaoui10/dir2tree@main
- name: Commit & Push
run: |
git config user.name github-actions
git config user.email github-actions@github.com
git add -A .
git commit -m "generated by zakarialaoui10/dir2tree"
git push
env:
CUSTOM_TOKEN: ${{ secrets.CUSTOM_TOKEN }}
OWNER : ${{github.repository_owner}}
NAME : ${{github.event.repository.name}}
```
## License
This projet is licensed under the terms of MIT License .<br>
<img src="https://img.shields.io/github/license/zakarialaoui10/zikojs?color=rgb%2820%2C21%2C169%29">
const fs = require("fs");
const path = require("path");
const {mapfun,flat_obj}=require("mapfun")
const {should_skip_file,should_skip_folder}=require("./utils/skip.js");
const {sort_files}=require("./utils/sort.js");
const {filter_files}=require("./utils/filter.js");
const {isDirectory}=require("./utils/general.js");
const {add_to_tree}=require("./utils/general.js");
const {file_metadata}=require("./utils/stats.js");
function add_to_tree(key, value) {
const keys = key.split(path.sep);
const lastKeyIndex = keys.length - 1;
keys.reduce((subtree, currentKey, index) => {
if (!subtree[currentKey]) {
subtree[currentKey] = index === lastKeyIndex ? value : {};
}
return subtree[currentKey];
}, this.tree);
}
class Dir2Tree {

@@ -76,3 +67,3 @@ constructor(root, options = {}, callbacks = {}) {

this?.callbacks?.map((n) => n(filePath, fileInfo));
add_to_tree.call(this,fileName, fileInfo);
add_to_tree.call(this,fileName+"_"+extension, fileInfo);
}

@@ -87,4 +78,21 @@

}
flat(depth=1,separator="_"){
this.tree=flat_obj(this.tree,depth,separator);
return this;
}
reduce(){
return this;
}
sort(){
return this;
}
filter(){
return this;
}
map(callback,options={}){
this.tree=mapfun(callback,options,this.tree);
return this;
}
}
const dir2tree = (root, options, callbacks=[]) => new Dir2Tree(root, options, callbacks);
module.exports = dir2tree;

@@ -0,1 +1,19 @@

const fs=require("fs")
const path=require("path")
// Native
// Marked.js
const markdown_to_html=(filePath,fileInfo)=>{
const extension = path.basename(filePath).split(".")[1];
if(marked && extension=="md")fileInfo.html=marked.parse(fs.readFileSync(filePath,"utf-8"));
}
// Highlight.js
const highlight=()=>
// Crypto.js
const crypt=()=>{}
const decrypt=()=>{}
// Sheet.js
const xls2json=()={}
const json2xls=()={}
//
const img2x=()=>{}
const path=require("path");
const {isDirectory}=require("./general.js");
const {is_directory}=require("./general.js");
const {should_skip_file}=require("./skip.js")
function filter_files(files) {
return files.filter((file) => {
if (isDirectory(path.join(this.root, file))) {
if (is_directory(path.join(this.root, file))) {
return true; // Skip directories

@@ -8,0 +8,0 @@ }

const fs=require("fs");
function isDirectory(filePath) {
const path=require("path")
function is_directory(filePath) {
return fs.statSync(filePath).isDirectory();
}
module.exports={isDirectory}
function add_to_tree(key, value) {
const keys = key.split(path.sep);
const lastKeyIndex = keys.length - 1;
keys.reduce((subtree, currentKey, index) => {
if (!subtree[currentKey]) {
subtree[currentKey] = index === lastKeyIndex ? value : {};
}
return subtree[currentKey];
}, this.tree);
}
module.exports={is_directory,add_to_tree}

@@ -5,5 +5,5 @@ const path = require("path");

if (
this?.options?.skipFolder?.includes(path.basename(normalizedPath)) ||
this?.options?.skipFile?.includes(path.basename(normalizedPath)) ||
this?.options?.skipExtension?.includes(
this?.options?.skip?.folder?.includes(path.basename(normalizedPath)) ||
this?.options?.skip?.file?.includes(path.basename(normalizedPath)) ||
this?.options?.skip?.extension?.includes(
path.extname(normalizedPath).slice(1)

@@ -15,14 +15,8 @@ )

function should_skip_folder(filePath) {
if (typeof filePath !== 'string') {
return false;
}
const normalizedPath = path.normalize(filePath);
if (this?.options?.skipFolder?.includes(path.basename(normalizedPath))) {
return true;
}
return false;
if (typeof filePath !== 'string') return false;
const normalizedPath = path.normalize(filePath);
if (this?.options?.skipFolder?.includes(path.basename(normalizedPath)))
return true;
return false;
}
module.exports={should_skip_file,should_skip_folder}
const path=require("path");
const fs=require("fs")
const {isDirectory}=require("./general.js");
const {is_directory}=require("./general.js");
function sort_files(files, order = 1) {

@@ -10,4 +10,4 @@ return files.sort((a, b) => {

// Check if either of the files is a directory and handle accordingly
const isDirectoryA = isDirectory(filePathA);
const isDirectoryB = isDirectory(filePathB);
const isDirectoryA = is_directory(filePathA);
const isDirectoryB = is_directory(filePathB);

@@ -14,0 +14,0 @@ if (isDirectoryA && !isDirectoryB) {