157 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/// <reference types="node" />
 | 
						|
/// <reference types="node" />
 | 
						|
import { Volume } from './volume';
 | 
						|
import { EventEmitter } from 'events';
 | 
						|
import Stats from './Stats';
 | 
						|
export declare const SEP = "/";
 | 
						|
/**
 | 
						|
 * Node in a file system (like i-node, v-node).
 | 
						|
 */
 | 
						|
export declare class Node extends EventEmitter {
 | 
						|
    ino: number;
 | 
						|
    private _uid;
 | 
						|
    private _gid;
 | 
						|
    private _atime;
 | 
						|
    private _mtime;
 | 
						|
    private _ctime;
 | 
						|
    buf: Buffer;
 | 
						|
    private _perm;
 | 
						|
    mode: number;
 | 
						|
    private _nlink;
 | 
						|
    symlink: string[];
 | 
						|
    constructor(ino: number, perm?: number);
 | 
						|
    set ctime(ctime: Date);
 | 
						|
    get ctime(): Date;
 | 
						|
    set uid(uid: number);
 | 
						|
    get uid(): number;
 | 
						|
    set gid(gid: number);
 | 
						|
    get gid(): number;
 | 
						|
    set atime(atime: Date);
 | 
						|
    get atime(): Date;
 | 
						|
    set mtime(mtime: Date);
 | 
						|
    get mtime(): Date;
 | 
						|
    set perm(perm: number);
 | 
						|
    get perm(): number;
 | 
						|
    set nlink(nlink: number);
 | 
						|
    get nlink(): number;
 | 
						|
    getString(encoding?: string): string;
 | 
						|
    setString(str: string): void;
 | 
						|
    getBuffer(): Buffer;
 | 
						|
    setBuffer(buf: Buffer): void;
 | 
						|
    getSize(): number;
 | 
						|
    setModeProperty(property: number): void;
 | 
						|
    setIsFile(): void;
 | 
						|
    setIsDirectory(): void;
 | 
						|
    setIsSymlink(): void;
 | 
						|
    isFile(): boolean;
 | 
						|
    isDirectory(): boolean;
 | 
						|
    isSymlink(): boolean;
 | 
						|
    makeSymlink(steps: string[]): void;
 | 
						|
    write(buf: Buffer, off?: number, len?: number, pos?: number): number;
 | 
						|
    read(buf: Buffer | Uint8Array, off?: number, len?: number, pos?: number): number;
 | 
						|
    truncate(len?: number): void;
 | 
						|
    chmod(perm: number): void;
 | 
						|
    chown(uid: number, gid: number): void;
 | 
						|
    touch(): void;
 | 
						|
    canRead(uid?: number, gid?: number): boolean;
 | 
						|
    canWrite(uid?: number, gid?: number): boolean;
 | 
						|
    del(): void;
 | 
						|
    toJSON(): {
 | 
						|
        ino: number;
 | 
						|
        uid: number;
 | 
						|
        gid: number;
 | 
						|
        atime: number;
 | 
						|
        mtime: number;
 | 
						|
        ctime: number;
 | 
						|
        perm: number;
 | 
						|
        mode: number;
 | 
						|
        nlink: number;
 | 
						|
        symlink: string[];
 | 
						|
        data: string;
 | 
						|
    };
 | 
						|
}
 | 
						|
/**
 | 
						|
 * Represents a hard link that points to an i-node `node`.
 | 
						|
 */
 | 
						|
export declare class Link extends EventEmitter {
 | 
						|
    vol: Volume;
 | 
						|
    parent: Link;
 | 
						|
    children: {
 | 
						|
        [child: string]: Link | undefined;
 | 
						|
    };
 | 
						|
    private _steps;
 | 
						|
    node: Node;
 | 
						|
    ino: number;
 | 
						|
    length: number;
 | 
						|
    name: string;
 | 
						|
    get steps(): string[];
 | 
						|
    set steps(val: string[]);
 | 
						|
    constructor(vol: Volume, parent: Link, name: string);
 | 
						|
    setNode(node: Node): void;
 | 
						|
    getNode(): Node;
 | 
						|
    createChild(name: string, node?: Node): Link;
 | 
						|
    setChild(name: string, link?: Link): Link;
 | 
						|
    deleteChild(link: Link): void;
 | 
						|
    getChild(name: string): Link | undefined;
 | 
						|
    getPath(): string;
 | 
						|
    getName(): string;
 | 
						|
    /**
 | 
						|
     * Walk the tree path and return the `Link` at that location, if any.
 | 
						|
     * @param steps {string[]} Desired location.
 | 
						|
     * @param stop {number} Max steps to go into.
 | 
						|
     * @param i {number} Current step in the `steps` array.
 | 
						|
     *
 | 
						|
     * @return {Link|null}
 | 
						|
     */
 | 
						|
    walk(steps: string[], stop?: number, i?: number): Link | null;
 | 
						|
    toJSON(): {
 | 
						|
        steps: string[];
 | 
						|
        ino: number;
 | 
						|
        children: string[];
 | 
						|
    };
 | 
						|
    syncSteps(): void;
 | 
						|
}
 | 
						|
/**
 | 
						|
 * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`.
 | 
						|
 */
 | 
						|
export declare class File {
 | 
						|
    fd: number;
 | 
						|
    /**
 | 
						|
     * Hard link that this file opened.
 | 
						|
     * @type {any}
 | 
						|
     */
 | 
						|
    link: Link;
 | 
						|
    /**
 | 
						|
     * Reference to a `Node`.
 | 
						|
     * @type {Node}
 | 
						|
     */
 | 
						|
    node: Node;
 | 
						|
    /**
 | 
						|
     * A cursor/offset position in a file, where data will be written on write.
 | 
						|
     * User can "seek" this position.
 | 
						|
     */
 | 
						|
    position: number;
 | 
						|
    flags: number;
 | 
						|
    /**
 | 
						|
     * Open a Link-Node pair. `node` is provided separately as that might be a different node
 | 
						|
     * rather the one `link` points to, because it might be a symlink.
 | 
						|
     * @param link
 | 
						|
     * @param node
 | 
						|
     * @param flags
 | 
						|
     * @param fd
 | 
						|
     */
 | 
						|
    constructor(link: Link, node: Node, flags: number, fd: number);
 | 
						|
    getString(encoding?: string): string;
 | 
						|
    setString(str: string): void;
 | 
						|
    getBuffer(): Buffer;
 | 
						|
    setBuffer(buf: Buffer): void;
 | 
						|
    getSize(): number;
 | 
						|
    truncate(len?: number): void;
 | 
						|
    seekTo(position: number): void;
 | 
						|
    stats(): Stats<number>;
 | 
						|
    write(buf: Buffer, offset?: number, length?: number, position?: number): number;
 | 
						|
    read(buf: Buffer | Uint8Array, offset?: number, length?: number, position?: number): number;
 | 
						|
    chmod(perm: number): void;
 | 
						|
    chown(uid: number, gid: number): void;
 | 
						|
}
 |