@miguel-cagide/smb2
Version:
A SMB2 implementation in TypeScript
62 lines (61 loc) • 2.01 kB
TypeScript
/// <reference types="node" />
import Tree from "./Tree";
import { EventEmitter } from "events";
import { CreateOptions } from "../protocol/smb2/packets/Create";
import CreateDispositionType from "../protocol/smb2/CreateDispositionType";
import FilePipePrinterAccess from "../protocol/smb2/FilePipePrinterAccess";
import { Readable } from "stream";
import { FileWriteStream } from "./stream/FileWriteStream";
export declare type FileStats = {
structureSize: number;
oplockLevel: number;
flags: number;
createAction: number;
creationTime: bigint;
lastAccessTime: bigint;
lastWriteTime: bigint;
changeTime: bigint;
allocationSize: bigint;
endOfFile: bigint;
fileAttributes: number;
reserved2: number;
fileId: string;
createContextsOffset: number;
createContextsLength: number;
};
interface OpenOptions {
desiredAccess?: FilePipePrinterAccess;
createDisposition?: CreateDispositionType;
createOptions?: CreateOptions;
}
interface File {
on(event: "open" | "close", callback: (file: File) => void): this;
once(event: "open" | "close", callback: (file: File) => void): this;
}
declare class File extends EventEmitter {
private tree;
_id: Buffer;
isOpen: boolean;
fileSize: bigint;
private _stats;
constructor(tree: Tree);
open(path: string, options?: OpenOptions): Promise<void>;
get stats(): Readonly<FileStats>;
create(path: string): Promise<void>;
remove(): Promise<void>;
rename(newPath: string): Promise<void>;
setSize(size: bigint): Promise<void>;
setInfo(fileInfoClass: number, buffer: Buffer): Promise<void>;
private writeChunk;
write(content: Buffer | string): Promise<void>;
createWriteStream(): FileWriteStream;
private readChunk;
read(): Promise<Buffer>;
createReadStream(options?: {
start?: number;
end?: number;
}): Readable;
exists(path: string): Promise<boolean>;
close(): Promise<void>;
}
export default File;