modernssh
API reference

SFTP

Exact declarations for 98 package-root exports. Private and protected class members are omitted.

decodeSFTPCopyDataExtension

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPCopyDataExtension(data: Buffer): Readonly<SFTPCopyDataExtension>;

decodeSFTPExtensionString

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPExtensionString(data: Buffer): Buffer;

decodeSFTPHandleExtension

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPHandleExtension(data: Buffer): Buffer;

decodeSFTPLimits

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPLimits(data: Buffer): Readonly<SFTPLimits>;

decodeSFTPLSetStatExtension

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPLSetStatExtension(data: Buffer): Readonly<SFTPLSetStatExtension>;

decodeSFTPPacket

Function. Declared in src/sftp/codec.ts.

export declare function decodeSFTPPacket(frame: Buffer): SFTPPacket;

decodeSFTPStatVFS

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPStatVFS(data: Buffer): Readonly<SFTPStatVFS>;

decodeSFTPTwoPathExtension

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPTwoPathExtension(data: Buffer): Readonly<SFTPTwoPathExtension>;

decodeSFTPUsersGroups

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPUsersGroups(data: Buffer): Readonly<SFTPUserGroupNames>;

decodeSFTPUsersGroupsExtension

Function. Declared in src/sftp/openssh.ts.

export declare function decodeSFTPUsersGroupsExtension(data: Buffer): Readonly<SFTPUsersGroupsExtension>;

encodeSFTPAttributes

Function. Declared in src/sftp/codec.ts.

export declare function encodeSFTPAttributes(attributes: SFTPAttributes): Buffer;

encodeSFTPCopyDataExtension

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPCopyDataExtension(sourceHandle: Buffer, sourceOffset: bigint, length: bigint, destinationHandle: Buffer, destinationOffset: bigint): Buffer;

encodeSFTPExtensionString

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPExtensionString(value: Buffer | string): Buffer;

encodeSFTPLimits

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPLimits(limits: Readonly<SFTPLimits>): Buffer;

encodeSFTPLSetStatExtension

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPLSetStatExtension(path: Buffer, attributes: SFTPAttributes): Buffer;

encodeSFTPPacket

Function. Declared in src/sftp/codec.ts.

export declare function encodeSFTPPacket(packet: SFTPPacket): Buffer;

encodeSFTPStatVFS

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPStatVFS(statistics: Readonly<SFTPStatVFS>): Buffer;

encodeSFTPTwoPathExtension

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPTwoPathExtension(firstPath: Buffer, secondPath: Buffer): Buffer;

encodeSFTPUsersGroups

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPUsersGroups(names: Readonly<SFTPUserGroupNames>): Buffer;

encodeSFTPUsersGroupsExtension

Function. Declared in src/sftp/openssh.ts.

export declare function encodeSFTPUsersGroupsExtension(uids: readonly number[], gids: readonly number[]): Buffer;

flagsToString

Function. Declared in src/sftp/SFTPClient.ts.

export declare function flagsToString(flags: number): string | null;

MAX_SFTP_HANDLE_LENGTH

Constant. Declared in src/sftp/constants.ts.

export declare const MAX_SFTP_HANDLE_LENGTH = 256;

MAX_SFTP_PACKET_LENGTH

Constant. Declared in src/sftp/constants.ts.

export declare const MAX_SFTP_PACKET_LENGTH: number;

OPEN_MODE

Constant. Declared in src/sftp/SFTPClient.ts.

export declare const OPEN_MODE: Readonly<{
    READ: SFTPOpenFlags.Read;
    WRITE: SFTPOpenFlags.Write;
    APPEND: SFTPOpenFlags.Append;
    CREAT: SFTPOpenFlags.Create;
    TRUNC: SFTPOpenFlags.Truncate;
    EXCL: SFTPOpenFlags.Exclusive;
}>;

SFTP_VERSION

Constant. Declared in src/sftp/constants.ts.

export declare const SFTP_VERSION = 3;

SFTPAttributeFlags

Enum. Declared in src/sftp/constants.ts.

export declare enum SFTPAttributeFlags {
    Size = 1,
    UIDGID = 2,
    Permissions = 4,
    AccessModificationTime = 8,
    Extended = 2147483648
}

SFTPAttributes

Interface. Declared in src/sftp/types.ts.

export interface SFTPAttributes {
    size?: bigint;
    uid?: number;
    gid?: number;
    permissions?: number;
    accessTime?: number;
    modificationTime?: number;
    extended?: readonly SFTPExtendedAttribute[];
}

SFTPAttrsPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPAttrsPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Attrs;
    attributes: SFTPAttributes;
}

SFTPClient

Class. Declared in src/sftp/SFTPClient.ts.

export default class SFTPClient extends EventEmitter<SFTPClientEvents> {
    readonly protocolVersion = 3;
    readonly channel: ClientSessionChannel;
    readonly isOpenSSH: boolean;
    readonly requestTimeout: number;
    maxReadLength: number;
    maxWriteLength: number;
    maxOpenHandles: number | undefined;
    limits: Readonly<SFTPLimits> | undefined;
    static connect(channel: ClientSessionChannel, isOpenSSH?: boolean, options?: SFTPClientOptions): Promise<SFTPClient>;
    get extensions(): readonly SFTPExtension[];
    supportsExtension(name: string, version?: string): boolean;
    extended(name: string, data?: Buffer, options?: SFTPExtendedRequestOptions): Promise<SFTPExtensionResponsePacket>;
    createReadStream(path: SFTPPath, options?: SFTPReadStreamOptions): SFTPReadStream;
    createWriteStream(path: SFTPPath, options?: SFTPWriteStreamOptions): SFTPWriteStream;
    exists(path: SFTPPath): Promise<boolean>;
    readFile(path: SFTPPath): Promise<Buffer>;
    readFile(path: SFTPPath, encoding: BufferEncoding): Promise<string>;
    readFile(path: SFTPPath, options: SFTPReadFileOptions & {
        encoding: BufferEncoding;
    }): Promise<string>;
    readFile(path: SFTPPath, options?: SFTPReadFileOptions): Promise<Buffer>;
    writeFile(path: SFTPPath, data: string | Buffer, options?: BufferEncoding | SFTPWriteFileOptions): Promise<void>;
    appendFile(path: SFTPPath, data: string | Buffer, options?: BufferEncoding | SFTPWriteFileOptions): Promise<void>;
    fastGet(remotePath: SFTPPath, localPath: string, options?: SFTPFastGetOptions): Promise<void>;
    fastPut(localPath: string, remotePath: SFTPPath, options?: SFTPFastPutOptions): Promise<void>;
    open(path: SFTPPath, flags: string | number, attributes?: SFTPAttributes): Promise<Buffer>;
    /** Close the SFTP session and settle after its SSH channel closes. */
    close(): Promise<void>;
    /** Close one active remote file, directory, or extension handle. */
    close(handle: Buffer): Promise<void>;
    read(handle: Buffer, length: number, position: SFTPPosition): Promise<Buffer>;
    read(handle: Buffer, buffer: Buffer, bufferOffset: number, length: number, position: SFTPPosition): Promise<SFTPReadResult>;
    write(handle: Buffer, data: Buffer, position: SFTPPosition): Promise<void>;
    write(handle: Buffer, buffer: Buffer, bufferOffset: number, length: number, position: SFTPPosition): Promise<SFTPWriteResult>;
    stat(path: SFTPPath): Promise<SFTPStats>;
    lstat(path: SFTPPath): Promise<SFTPStats>;
    fstat(handle: Buffer): Promise<SFTPStats>;
    setstat(path: SFTPPath, attributes: SFTPAttributes): Promise<void>;
    fsetstat(handle: Buffer, attributes: SFTPAttributes): Promise<void>;
    truncate(path: SFTPPath, length: SFTPPosition): Promise<void>;
    ftruncate(handle: Buffer, length: SFTPPosition): Promise<void>;
    opendir(path: SFTPPath): Promise<Buffer>;
    readdir(handle: Buffer): Promise<readonly SFTPClientNameEntry[] | null>;
    iterateDirectory(path: SFTPPath): AsyncGenerator<SFTPClientNameEntry, void, void>;
    readDirectory(path: SFTPPath, options?: SFTPReadDirectoryOptions): Promise<readonly SFTPClientNameEntry[]>;
    unlink(path: SFTPPath): Promise<void>;
    remove(path: SFTPPath): Promise<void>;
    mkdir(path: SFTPPath, attributes?: SFTPAttributes): Promise<void>;
    rmdir(path: SFTPPath): Promise<void>;
    rename(oldPath: SFTPPath, newPath: SFTPPath): Promise<void>;
    realpath(path: SFTPPath, encoding: "buffer"): Promise<Buffer>;
    realpath(path: SFTPPath, encoding?: "utf8"): Promise<string>;
    readlink(path: SFTPPath, encoding: "buffer"): Promise<Buffer>;
    readlink(path: SFTPPath, encoding?: "utf8"): Promise<string>;
    symlink(targetPath: SFTPPath, linkPath: SFTPPath): Promise<void>;
    opensshPosixRename(oldPath: SFTPPath, newPath: SFTPPath): Promise<void>;
    ext_openssh_rename(oldPath: SFTPPath, newPath: SFTPPath): Promise<void>;
    opensshStatVFS(path: SFTPPath): Promise<Readonly<SFTPStatVFS>>;
    ext_openssh_statvfs(path: SFTPPath): Promise<Readonly<SFTPStatVFS>>;
    opensshFStatVFS(handle: Buffer): Promise<Readonly<SFTPStatVFS>>;
    ext_openssh_fstatvfs(handle: Buffer): Promise<Readonly<SFTPStatVFS>>;
    opensshHardlink(oldPath: SFTPPath, newPath: SFTPPath): Promise<void>;
    ext_openssh_hardlink(oldPath: SFTPPath, newPath: SFTPPath): Promise<void>;
    opensshFSync(handle: Buffer): Promise<void>;
    ext_openssh_fsync(handle: Buffer): Promise<void>;
    opensshLSetStat(path: SFTPPath, attributes: SFTPAttributes): Promise<void>;
    ext_openssh_lsetstat(path: SFTPPath, attributes: SFTPAttributes): Promise<void>;
    opensshExpandPath(path: SFTPPath, encoding: "buffer"): Promise<Buffer>;
    opensshExpandPath(path: SFTPPath, encoding?: "utf8"): Promise<string>;
    ext_openssh_expandPath(path: SFTPPath, encoding: "buffer"): Promise<Buffer>;
    ext_openssh_expandPath(path: SFTPPath, encoding?: "utf8"): Promise<string>;
    copyData(sourceHandle: Buffer, sourceOffset: SFTPPosition, length: SFTPPosition, destinationHandle: Buffer, destinationOffset: SFTPPosition): Promise<void>;
    ext_copy_data(sourceHandle: Buffer, sourceOffset: SFTPPosition, length: SFTPPosition, destinationHandle: Buffer, destinationOffset: SFTPPosition): Promise<void>;
    homeDirectory(username: string | Buffer, encoding: "buffer"): Promise<Buffer>;
    homeDirectory(username?: string | Buffer, encoding?: "utf8"): Promise<string>;
    ext_home_dir(username: string | Buffer, encoding: "buffer"): Promise<Buffer>;
    ext_home_dir(username?: string | Buffer, encoding?: "utf8"): Promise<string>;
    usersGroups(uids: readonly number[], gids: readonly number[]): Promise<Readonly<SFTPUserGroupNames>>;
    ext_users_groups(uids: readonly number[], gids: readonly number[]): Promise<Readonly<SFTPUserGroupNames>>;
    opensshLimits(): Promise<Readonly<SFTPLimits>>;
    chmod(path: SFTPPath, mode: number | string): Promise<void>;
    fchmod(handle: Buffer, mode: number | string): Promise<void>;
    chown(path: SFTPPath, uid: number, gid: number): Promise<void>;
    fchown(handle: Buffer, uid: number, gid: number): Promise<void>;
    utimes(path: SFTPPath, accessTime: Date | number, modificationTime: Date | number): Promise<void>;
    futimes(handle: Buffer, accessTime: Date | number, modificationTime: Date | number): Promise<void>;
    end(): void;
    [Symbol.asyncDispose](): Promise<void>;
    destroy(error?: Error): void;
}

SFTPClientEvents

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPClientEvents {
    downloadProgress: [
        progress: SFTPTransferProgress
    ];
    uploadProgress: [
        progress: SFTPTransferProgress
    ];
}

SFTPClientNameEntry

Interface. Declared in src/sftp/SFTPStats.ts.

export interface SFTPClientNameEntry extends Omit<SFTPNameEntry, "attributes"> {
    attributes: SFTPStats;
}

SFTPClientOptions

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPClientOptions {
    /** Maximum integer milliseconds for initialization or a reply. Range: 1 through 2147483647. */
    requestTimeout?: number;
}

SFTPCopyDataExtension

Interface. Declared in src/sftp/openssh.ts.

export interface SFTPCopyDataExtension {
    sourceHandle: Buffer;
    sourceOffset: bigint;
    length: bigint;
    destinationHandle: Buffer;
    destinationOffset: bigint;
}

SFTPDataPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPDataPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Data;
    data: Buffer;
}

SFTPExtendedAttribute

Interface. Declared in src/sftp/types.ts.

export interface SFTPExtendedAttribute {
    readonly type: Buffer;
    readonly data: Buffer;
}

SFTPExtendedPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPExtendedPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Extended;
    request: string;
    data: Buffer;
}

SFTPExtendedReplyPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPExtendedReplyPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.ExtendedReply;
    data: Buffer;
}

SFTPExtendedRequestOptions

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPExtendedRequestOptions {
    /** Require this exact advertised extension version. */
    version?: string;
    /** Successful packet types accepted for this extension. Defaults to EXTENDED_REPLY. */
    expectedTypes?: readonly SFTPExtensionResponseType[];
}

SFTPExtension

Interface. Declared in src/sftp/types.ts.

export interface SFTPExtension {
    readonly name: string;
    readonly data: Buffer;
}

SFTPExtensionResponsePacket

Type. Declared in src/sftp/types.ts.

export type SFTPExtensionResponsePacket = SFTPStatusPacket | SFTPHandlePacket | SFTPDataPacket | SFTPNamePacket | SFTPAttrsPacket | SFTPExtendedReplyPacket;

SFTPExtensionResponseType

Type. Declared in src/sftp/types.ts.

export type SFTPExtensionResponseType = SFTPExtensionResponsePacket["type"];

SFTPFastGetOptions

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPFastGetOptions {
    chunkSize?: number;
    concurrency?: number;
}

SFTPFastPutOptions

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPFastPutOptions extends SFTPFastGetOptions {
    mode?: number | string;
}

SFTPFSetStatPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPFSetStatPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.FSetStat;
    handle: Buffer;
    attributes: SFTPAttributes;
}

SFTPHandlePacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPHandlePacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Handle;
    handle: Buffer;
}

SFTPHandleRequestPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPHandleRequestPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Close | SFTPPacketType.FStat | SFTPPacketType.ReadDir;
    handle: Buffer;
}

SFTPInitPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPInitPacket {
    type: SFTPPacketType.Init;
    version: number;
    extensions: readonly SFTPExtension[];
}

SFTPLimits

Interface. Declared in src/sftp/openssh.ts.

export interface SFTPLimits {
    maximumPacketLength: bigint;
    maximumReadLength: bigint;
    maximumWriteLength: bigint;
    maximumOpenHandles: bigint;
}

SFTPLSetStatExtension

Interface. Declared in src/sftp/openssh.ts.

export interface SFTPLSetStatExtension {
    path: Buffer;
    attributes: Readonly<SFTPAttributes>;
}

SFTPMkDirPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPMkDirPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.MkDir;
    path: Buffer;
    attributes: SFTPAttributes;
}

SFTPNameEncoding

Type. Declared in src/sftp/SFTPClient.ts.

export type SFTPNameEncoding = "utf8" | "buffer";

SFTPNameEntry

Interface. Declared in src/sftp/types.ts.

export interface SFTPNameEntry {
    filename: Buffer;
    longname: Buffer;
    attributes: SFTPAttributes;
}

SFTPNamePacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPNamePacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Name;
    names: readonly SFTPNameEntry[];
}

sftpOpenFlags

Function. Declared in src/sftp/SFTPClient.ts.

export declare function sftpOpenFlags(flags: string | number): number;

SFTPOpenFlags

Enum. Declared in src/sftp/constants.ts.

export declare enum SFTPOpenFlags {
    Read = 1,
    Write = 2,
    Append = 4,
    Create = 8,
    Truncate = 16,
    Exclusive = 32
}

SFTPOpenPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPOpenPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Open;
    filename: Buffer;
    flags: number;
    attributes: SFTPAttributes;
}

SFTPPacket

Type. Declared in src/sftp/types.ts.

export type SFTPPacket = SFTPInitPacket | SFTPVersionPacket | SFTPOpenPacket | SFTPHandleRequestPacket | SFTPReadPacket | SFTPWritePacket | SFTPPathPacket | SFTPSetStatPacket | SFTPFSetStatPacket | SFTPMkDirPacket | SFTPTwoPathPacket | SFTPStatusPacket | SFTPHandlePacket | SFTPDataPacket | SFTPNamePacket | SFTPAttrsPacket | SFTPExtendedPacket | SFTPExtendedReplyPacket;

SFTPPacketParser

Class. Declared in src/sftp/codec.ts.

export declare class SFTPPacketParser {
    push(chunk: Buffer): SFTPPacket[];
    end(): void;
}

SFTPPacketType

Enum. Declared in src/sftp/constants.ts.

export declare enum SFTPPacketType {
    Init = 1,
    Version = 2,
    Open = 3,
    Close = 4,
    Read = 5,
    Write = 6,
    LStat = 7,
    FStat = 8,
    SetStat = 9,
    FSetStat = 10,
    OpenDir = 11,
    ReadDir = 12,
    Remove = 13,
    MkDir = 14,
    RmDir = 15,
    RealPath = 16,
    Stat = 17,
    Rename = 18,
    ReadLink = 19,
    SymLink = 20,
    Status = 101,
    Handle = 102,
    Data = 103,
    Name = 104,
    Attrs = 105,
    Extended = 200,
    ExtendedReply = 201
}

SFTPPath

Type. Declared in src/sftp/SFTPClient.ts.

export type SFTPPath = string | Buffer;

SFTPPathPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPPathPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.LStat | SFTPPacketType.OpenDir | SFTPPacketType.Remove | SFTPPacketType.RmDir | SFTPPacketType.RealPath | SFTPPacketType.Stat | SFTPPacketType.ReadLink;
    path: Buffer;
}

SFTPPosition

Type. Declared in src/sftp/SFTPClient.ts.

export type SFTPPosition = number | bigint;

SFTPProtocolError

Class. Declared in src/sftp/codec.ts.

export declare class SFTPProtocolError extends Error {
    constructor(message: string);
}

SFTPReadDirectoryOptions

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPReadDirectoryOptions {
    /** Maximum non-dot entries retained by readDirectory. Defaults to 100,000. */
    maxEntries?: number;
    /** Maximum bytes retained in entry names and extended attributes. Defaults to 16 MiB. */
    maxBytes?: number;
}

SFTPReadFileOptions

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPReadFileOptions {
    encoding?: BufferEncoding | null;
    flag?: string | number;
    maxBytes?: number;
}

SFTPReadPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPReadPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Read;
    handle: Buffer;
    offset: bigint;
    length: number;
}

SFTPReadResult

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPReadResult {
    bytesRead: number;
    buffer: Buffer;
}

SFTPReadStream

Class. Declared in src/sftp/streams.ts.

export declare class SFTPReadStream extends Readable {
    readonly sftp: SFTPClient;
    readonly flags: string | number;
    readonly mode: number;
    readonly autoClose: boolean;
    readonly start: bigint;
    readonly end: bigint;
    bytesRead: bigint;
    isClosed: boolean;
    constructor(sftp: SFTPClient, path: SFTPPath, options?: SFTPReadStreamOptions);
    get path(): SFTPPath;
    get handle(): Buffer | undefined;
    get pending(): boolean;
    close(): Promise<void>;
    _read(size: number): void;
    _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
}

SFTPReadStreamOptions

Interface. Declared in src/sftp/streams.ts.

export interface SFTPReadStreamOptions extends ReadableOptions {
    autoClose?: boolean;
    end?: SFTPPosition;
    flags?: string | number;
    handle?: Buffer;
    mode?: number | string;
    start?: SFTPPosition;
}

SFTPRequestOf

Type. Declared in src/sftp/SFTPServer.ts.

export type SFTPRequestOf<T extends SFTPPacketType> = Readonly<SFTPRequestPacket & {
    type: T;
}>;

SFTPRequestPacket

Type. Declared in src/sftp/types.ts.

export type SFTPRequestPacket = SFTPOpenPacket | SFTPHandleRequestPacket | SFTPReadPacket | SFTPWritePacket | SFTPPathPacket | SFTPSetStatPacket | SFTPFSetStatPacket | SFTPMkDirPacket | SFTPTwoPathPacket | SFTPExtendedPacket;

SFTPRequestPacketBase

Interface. Declared in src/sftp/types.ts.

export interface SFTPRequestPacketBase {
    requestId: number;
}

SFTPServer

Class. Declared in src/sftp/SFTPServer.ts.

export default class SFTPServer extends EventEmitter<SFTPServerEvents> {
    readonly hooker: Hooker<SFTPServerHooker>;
    readonly protocolVersion = 3;
    readonly stream: Shell;
    readonly openSSHSymlinkArguments: boolean;
    constructor(stream: Shell, options?: SFTPServerOptions);
    get maxConcurrentRequests(): number;
    get maxOutstandingRequestBytes(): number;
    get maxOpenHandles(): number;
    get maxReadLength(): number;
    get maxWriteLength(): number;
    get extensions(): readonly SFTPExtension[];
    status(requestId: number, code: SFTPStatusCode, message?: string, languageTag?: string): Promise<void>;
    handle(requestId: number, handle: Buffer): Promise<void>;
    data(requestId: number, data: Buffer): Promise<void>;
    name(requestId: number, names: SFTPNameEntry | readonly SFTPNameEntry[]): Promise<void>;
    attributes(requestId: number, attributes: SFTPAttributes): Promise<void>;
    extendedReply(requestId: number, data: Buffer): Promise<void>;
    symlinkPaths(request: SFTPRequestOf<SFTPPacketType.SymLink>): Readonly<SFTPSymlinkPaths>;
    destroy(error?: Error): void;
    /** Close the subsystem and settle after its SSH channel closes. */
    close(): Promise<void>;
    [Symbol.asyncDispose](): Promise<void>;
}

SFTPServerEvents

Type. Declared in src/sftp/SFTPServer.ts.

export type SFTPServerEvents = {
    ready: [
        clientVersion: number
    ];
    close: [
    ];
    error: [
        error: Error
    ];
    requestReceived: [
        request: Readonly<SFTPRequestPacket>
    ];
};

SFTPServerHooker

Type. Declared in src/sftp/SFTPServer.ts.

export type SFTPServerHooker = {
    request: [
        request: Readonly<SFTPRequestPacket>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    OPEN: [
        request: SFTPRequestOf<SFTPPacketType.Open>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    CLOSE: [
        request: SFTPRequestOf<SFTPPacketType.Close>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    READ: [
        request: SFTPRequestOf<SFTPPacketType.Read>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    WRITE: [
        request: SFTPRequestOf<SFTPPacketType.Write>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    LSTAT: [
        request: SFTPRequestOf<SFTPPacketType.LStat>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    FSTAT: [
        request: SFTPRequestOf<SFTPPacketType.FStat>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    SETSTAT: [
        request: SFTPRequestOf<SFTPPacketType.SetStat>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    FSETSTAT: [
        request: SFTPRequestOf<SFTPPacketType.FSetStat>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    OPENDIR: [
        request: SFTPRequestOf<SFTPPacketType.OpenDir>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    READDIR: [
        request: SFTPRequestOf<SFTPPacketType.ReadDir>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    REMOVE: [
        request: SFTPRequestOf<SFTPPacketType.Remove>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    MKDIR: [
        request: SFTPRequestOf<SFTPPacketType.MkDir>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    RMDIR: [
        request: SFTPRequestOf<SFTPPacketType.RmDir>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    REALPATH: [
        request: SFTPRequestOf<SFTPPacketType.RealPath>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    STAT: [
        request: SFTPRequestOf<SFTPPacketType.Stat>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    RENAME: [
        request: SFTPRequestOf<SFTPPacketType.Rename>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    READLINK: [
        request: SFTPRequestOf<SFTPPacketType.ReadLink>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    SYMLINK: [
        request: SFTPRequestOf<SFTPPacketType.SymLink>,
        operation: Readonly<SFTPServerOperationContext>
    ];
    EXTENDED: [
        request: SFTPRequestOf<SFTPPacketType.Extended>,
        operation: Readonly<SFTPServerOperationContext>
    ];
};

SFTPServerOperationContext

Interface. Declared in src/sftp/SFTPServer.ts.

export interface SFTPServerOperationContext {
    /** Aborted when this request expires or its SFTP channel closes. */
    readonly signal: AbortSignal;
}

SFTPServerOptions

Interface. Declared in src/sftp/SFTPServer.ts.

export interface SFTPServerOptions {
    extensions?: readonly SFTPExtension[];
    openSSHSymlinkArguments?: boolean;
    /** Maximum request hooks allowed to run concurrently. */
    maxConcurrentRequests?: number;
    /** Maximum decoded wire bytes retained by active and queued requests. */
    maxOutstandingRequestBytes?: number;
    /** Maximum active and pending baseline file or directory handles. */
    maxOpenHandles?: number;
    /** Largest READ length passed to application policy. */
    maxReadLength?: number;
    /** Largest WRITE data field passed to application policy. */
    maxWriteLength?: number;
    /** Advertise and answer the limits extension. Defaults to true when handles are enabled. */
    advertiseLimits?: boolean;
    /** Integer milliseconds to wait for close. Defaults to 30000; range: 1 through 2147483647. */
    closeTimeout?: number;
    /**
     * Integer milliseconds for initialization, policy, and response writes.
     * Defaults to 30000; range: 1 through 2147483647.
     */
    requestTimeout?: number;
}

SFTPSetStatPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPSetStatPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.SetStat;
    path: Buffer;
    attributes: SFTPAttributes;
}

SFTPStats

Class. Declared in src/sftp/SFTPStats.ts.

export declare class SFTPStats implements SFTPAttributes {
    readonly size: bigint | undefined;
    readonly uid: number | undefined;
    readonly gid: number | undefined;
    readonly permissions: number | undefined;
    readonly accessTime: number | undefined;
    readonly modificationTime: number | undefined;
    readonly extended: readonly SFTPExtendedAttribute[] | undefined;
    constructor(attributes?: SFTPAttributes);
    get mode(): number | undefined;
    get atime(): number | undefined;
    get mtime(): number | undefined;
    isDirectory(): boolean;
    isFile(): boolean;
    isBlockDevice(): boolean;
    isCharacterDevice(): boolean;
    isSymbolicLink(): boolean;
    isFIFO(): boolean;
    isSocket(): boolean;
}

SFTPStatusCode

Enum. Declared in src/sftp/constants.ts.

export declare enum SFTPStatusCode {
    Ok = 0,
    EOF = 1,
    NoSuchFile = 2,
    PermissionDenied = 3,
    Failure = 4,
    BadMessage = 5,
    NoConnection = 6,
    ConnectionLost = 7,
    OperationUnsupported = 8,
    /** Registered extension status used by copy-data version 1. */
    InvalidParameter = 23
}

SFTPStatusError

Class. Declared in src/sftp/SFTPClient.ts.

export declare class SFTPStatusError extends Error {
    readonly code: number;
    readonly requestId: number;
    readonly languageTag: string;
    constructor(packet: SFTPStatusPacket);
}

SFTPStatusPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPStatusPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Status;
    code: number;
    message: string;
    languageTag: string;
}

SFTPStatVFS

Interface. Declared in src/sftp/openssh.ts.

export interface SFTPStatVFS {
    blockSize: bigint;
    fragmentSize: bigint;
    blocks: bigint;
    blocksFree: bigint;
    blocksAvailable: bigint;
    files: bigint;
    filesFree: bigint;
    filesAvailable: bigint;
    filesystemId: bigint;
    flags: bigint;
    maximumFilenameLength: bigint;
}

SFTPSymlinkPaths

Interface. Declared in src/sftp/SFTPServer.ts.

export interface SFTPSymlinkPaths {
    targetPath: Buffer;
    linkPath: Buffer;
}

SFTPTransferProgress

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPTransferProgress {
    readonly remotePath: Buffer;
    readonly localPath: string;
    readonly transferred: number;
    readonly chunk: number;
    readonly total: number;
}

SFTPTwoPathExtension

Interface. Declared in src/sftp/openssh.ts.

export interface SFTPTwoPathExtension {
    firstPath: Buffer;
    secondPath: Buffer;
}

SFTPTwoPathPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPTwoPathPacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Rename | SFTPPacketType.SymLink;
    firstPath: Buffer;
    secondPath: Buffer;
}

SFTPUserGroupNames

Interface. Declared in src/sftp/openssh.ts.

export interface SFTPUserGroupNames {
    usernames: readonly string[];
    groupNames: readonly string[];
}

SFTPUsersGroupsExtension

Interface. Declared in src/sftp/openssh.ts.

export interface SFTPUsersGroupsExtension {
    uids: readonly number[];
    gids: readonly number[];
}

SFTPVersionPacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPVersionPacket {
    type: SFTPPacketType.Version;
    version: number;
    extensions: readonly SFTPExtension[];
}

SFTPWriteFileOptions

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPWriteFileOptions {
    encoding?: BufferEncoding;
    flag?: string | number;
    mode?: number | string;
}

SFTPWritePacket

Interface. Declared in src/sftp/types.ts.

export interface SFTPWritePacket extends SFTPRequestPacketBase {
    type: SFTPPacketType.Write;
    handle: Buffer;
    offset: bigint;
    data: Buffer;
}

SFTPWriteResult

Interface. Declared in src/sftp/SFTPClient.ts.

export interface SFTPWriteResult {
    bytesWritten: number;
    buffer: Buffer;
}

SFTPWriteStream

Class. Declared in src/sftp/streams.ts.

export declare class SFTPWriteStream extends Writable {
    readonly sftp: SFTPClient;
    readonly flags: string | number;
    readonly mode: number;
    readonly autoClose: boolean;
    readonly start: bigint;
    bytesWritten: bigint;
    isClosed: boolean;
    constructor(sftp: SFTPClient, path: SFTPPath, options?: SFTPWriteStreamOptions);
    get path(): SFTPPath;
    get handle(): Buffer | undefined;
    get pending(): boolean;
    close(): Promise<void>;
    destroySoon(): this;
    _write(chunk: Buffer | string, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
    _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
}

SFTPWriteStreamOptions

Interface. Declared in src/sftp/streams.ts.

export interface SFTPWriteStreamOptions extends WritableOptions {
    autoClose?: boolean;
    flags?: string | number;
    handle?: Buffer;
    mode?: number | string;
    start?: SFTPPosition;
}

Stats

Class. Declared in src/sftp/SFTPStats.ts. Package export alias of SFTPStats.

export declare class SFTPStats implements SFTPAttributes {
    readonly size: bigint | undefined;
    readonly uid: number | undefined;
    readonly gid: number | undefined;
    readonly permissions: number | undefined;
    readonly accessTime: number | undefined;
    readonly modificationTime: number | undefined;
    readonly extended: readonly SFTPExtendedAttribute[] | undefined;
    constructor(attributes?: SFTPAttributes);
    get mode(): number | undefined;
    get atime(): number | undefined;
    get mtime(): number | undefined;
    isDirectory(): boolean;
    isFile(): boolean;
    isBlockDevice(): boolean;
    isCharacterDevice(): boolean;
    isSymbolicLink(): boolean;
    isFIFO(): boolean;
    isSocket(): boolean;
}

STATUS_CODE

Constant. Declared in src/sftp/SFTPClient.ts.

export declare const STATUS_CODE: Readonly<{
    OK: SFTPStatusCode.Ok;
    EOF: SFTPStatusCode.EOF;
    NO_SUCH_FILE: SFTPStatusCode.NoSuchFile;
    PERMISSION_DENIED: SFTPStatusCode.PermissionDenied;
    FAILURE: SFTPStatusCode.Failure;
    BAD_MESSAGE: SFTPStatusCode.BadMessage;
    NO_CONNECTION: SFTPStatusCode.NoConnection;
    CONNECTION_LOST: SFTPStatusCode.ConnectionLost;
    OP_UNSUPPORTED: SFTPStatusCode.OperationUnsupported;
    INVALID_PARAMETER: SFTPStatusCode.InvalidParameter;
}>;

stringToFlags

Function. Declared in src/sftp/SFTPClient.ts.

export declare function stringToFlags(flags: string): number | null;