UNPKG

4.12 kBTypeScriptView Raw
1/// <reference types="node" />
2/// <reference types="node" />
3import { Volume } from './volume';
4import { EventEmitter } from 'events';
5import Stats from './Stats';
6export declare const SEP = "/";
7/**
8 * Node in a file system (like i-node, v-node).
9 */
10export declare class Node extends EventEmitter {
11 ino: number;
12 uid: number;
13 gid: number;
14 atime: Date;
15 mtime: Date;
16 ctime: Date;
17 buf: Buffer;
18 perm: number;
19 mode: number;
20 nlink: number;
21 symlink: string[];
22 constructor(ino: number, perm?: number);
23 getString(encoding?: string): string;
24 setString(str: string): void;
25 getBuffer(): Buffer;
26 setBuffer(buf: Buffer): void;
27 getSize(): number;
28 setModeProperty(property: number): void;
29 setIsFile(): void;
30 setIsDirectory(): void;
31 setIsSymlink(): void;
32 isFile(): boolean;
33 isDirectory(): boolean;
34 isSymlink(): boolean;
35 makeSymlink(steps: string[]): void;
36 write(buf: Buffer, off?: number, len?: number, pos?: number): number;
37 read(buf: Buffer | Uint8Array, off?: number, len?: number, pos?: number): number;
38 truncate(len?: number): void;
39 chmod(perm: number): void;
40 chown(uid: number, gid: number): void;
41 touch(): void;
42 canRead(uid?: number, gid?: number): boolean;
43 canWrite(uid?: number, gid?: number): boolean;
44 del(): void;
45 toJSON(): {
46 ino: number;
47 uid: number;
48 gid: number;
49 atime: number;
50 mtime: number;
51 ctime: number;
52 perm: number;
53 mode: number;
54 nlink: number;
55 symlink: string[];
56 data: string;
57 };
58}
59/**
60 * Represents a hard link that points to an i-node `node`.
61 */
62export declare class Link extends EventEmitter {
63 vol: Volume;
64 parent: Link;
65 children: {
66 [child: string]: Link | undefined;
67 };
68 private _steps;
69 node: Node;
70 ino: number;
71 length: number;
72 name: string;
73 get steps(): string[];
74 set steps(val: string[]);
75 constructor(vol: Volume, parent: Link, name: string);
76 setNode(node: Node): void;
77 getNode(): Node;
78 createChild(name: string, node?: Node): Link;
79 setChild(name: string, link?: Link): Link;
80 deleteChild(link: Link): void;
81 getChild(name: string): Link | undefined;
82 getPath(): string;
83 getName(): string;
84 /**
85 * Walk the tree path and return the `Link` at that location, if any.
86 * @param steps {string[]} Desired location.
87 * @param stop {number} Max steps to go into.
88 * @param i {number} Current step in the `steps` array.
89 *
90 * @return {Link|null}
91 */
92 walk(steps: string[], stop?: number, i?: number): Link | null;
93 toJSON(): {
94 steps: string[];
95 ino: number;
96 children: string[];
97 };
98 syncSteps(): void;
99}
100/**
101 * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`.
102 */
103export declare class File {
104 fd: number;
105 /**
106 * Hard link that this file opened.
107 * @type {any}
108 */
109 link: Link;
110 /**
111 * Reference to a `Node`.
112 * @type {Node}
113 */
114 node: Node;
115 /**
116 * A cursor/offset position in a file, where data will be written on write.
117 * User can "seek" this position.
118 */
119 position: number;
120 flags: number;
121 /**
122 * Open a Link-Node pair. `node` is provided separately as that might be a different node
123 * rather the one `link` points to, because it might be a symlink.
124 * @param link
125 * @param node
126 * @param flags
127 * @param fd
128 */
129 constructor(link: Link, node: Node, flags: number, fd: number);
130 getString(encoding?: string): string;
131 setString(str: string): void;
132 getBuffer(): Buffer;
133 setBuffer(buf: Buffer): void;
134 getSize(): number;
135 truncate(len?: number): void;
136 seekTo(position: number): void;
137 stats(): Stats<number>;
138 write(buf: Buffer, offset?: number, length?: number, position?: number): number;
139 read(buf: Buffer | Uint8Array, offset?: number, length?: number, position?: number): number;
140 chmod(perm: number): void;
141 chown(uid: number, gid: number): void;
142}