Skip to content

Commit 2a88416

Browse files
authored
Merge pull request #769 from MatrixAI/feature-eng-363-implement-utility-that-generates-a-file-tree-from-a-path
Implementing file system pattern walker
2 parents 58d4f27 + 1496d2c commit 2a88416

File tree

6 files changed

+823
-26
lines changed

6 files changed

+823
-26
lines changed

package-lock.json

Lines changed: 153 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@
104104
"prompts": "^2.4.1",
105105
"resource-counter": "^1.2.4",
106106
"sodium-native": "^3.4.1",
107-
"threads": "^1.6.5"
107+
"threads": "^1.6.5",
108+
"minimatch": "^10.0.1"
108109
},
109110
"devDependencies": {
110111
"@fast-check/jest": "^1.1.0",
@@ -116,6 +117,7 @@
116117
"@types/pako": "^1.0.2",
117118
"@types/prompts": "^2.0.13",
118119
"@types/readable-stream": "^2.3.11",
120+
"@types/minimatch": "^5.1.2",
119121
"@typescript-eslint/eslint-plugin": "^5.61.0",
120122
"@typescript-eslint/parser": "^5.61.0",
121123
"benny": "^3.7.1",

src/vaults/types.ts

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,49 @@ type VaultName = string;
134134

135135
type VaultActions = Partial<Record<VaultAction, null>>;
136136

137+
type FileTree = Array<TreeNode>;
138+
type TreeNode = DirectoryNode | FileNode;
139+
type FilePath = string;
140+
type INode = number;
141+
type CNode = number;
142+
143+
type StatEncoded = {
144+
isSymbolicLink: boolean;
145+
type: 'FILE' | 'DIRECTORY' | 'OTHER';
146+
dev: number;
147+
ino: number;
148+
mode: number;
149+
nlink: number;
150+
uid: number;
151+
gid: number;
152+
rdev: number;
153+
size: number;
154+
blksize: number;
155+
blocks: number;
156+
atime: number;
157+
mtime: number;
158+
ctime: number;
159+
birthtime: number;
160+
};
161+
162+
type DirectoryNode = {
163+
type: 'directory';
164+
path: FilePath;
165+
iNode: INode;
166+
parent: INode;
167+
children: Array<INode>;
168+
stat?: StatEncoded;
169+
};
170+
171+
type FileNode = {
172+
type: 'file';
173+
path: FilePath;
174+
iNode: INode;
175+
parent: INode;
176+
cNode: CNode;
177+
stat?: StatEncoded;
178+
};
179+
137180
export { vaultActions };
138181

139182
export type {
@@ -148,6 +191,14 @@ export type {
148191
FileSystemWritable,
149192
VaultName,
150193
VaultActions,
194+
FileTree,
195+
TreeNode,
196+
FilePath,
197+
INode,
198+
CNode,
199+
StatEncoded,
200+
DirectoryNode,
201+
FileNode,
151202
};
152203

153204
export { tagLast, refs };

0 commit comments

Comments
 (0)