// Type definitions for promise-ftp 1.3 // Project: https://github.com/realtymaps/promise-ftp // Definitions by: coolreader18 // Rolands Jegorovs // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 3.2 /// import * as FtpClient from "ftp"; import * as PromiseFtpCommon from "promise-ftp-common"; import * as Promise from "bluebird"; declare namespace PromiseFtp { interface ERROR_CODES { 421: "Service not available, closing control connection"; 425: "Can't open data connection"; 426: "Connection closed, transfer aborted"; 450: "Requested file action not taken / File unavailable (e.g., file busy)"; 451: "Requested action aborted: local error in processing"; 452: "Requested action not taken / Insufficient storage space in system"; 500: "Syntax error / Command unrecognized"; 501: "Syntax error in parameters or arguments"; 502: "Command not implemented"; 503: "Bad sequence of commands"; 504: "Command not implemented for that parameter"; 530: "Not logged in"; 532: "Need account for storing files"; 550: "Requested action not taken / File unavailable (e.g., file not found, no access)"; 551: "Requested action aborted: page type unknown"; 552: "Requested file action aborted / Exceeded storage allocation (for current directory or dataset)"; 553: "Requested action not taken / File name not allowed"; } const ERROR_CODES: ERROR_CODES; // tslint:disable-next-line strict-export-declare-modifiers export import FtpConnectionError = PromiseFtpCommon.FtpConnectionError; // tslint:disable-next-line strict-export-declare-modifiers export import FtpReconnectError = PromiseFtpCommon.FtpReconnectError; // tslint:disable-next-line strict-export-declare-modifiers export import STATUSES = PromiseFtpCommon.STATUSES; /** * Options for FtpPromise#connect() */ // tslint:disable-next-line strict-export-declare-modifiers export import Options = FtpClient.Options; /** * Element returned by FtpPromise#list() */ // tslint:disable-next-line strict-export-declare-modifiers export import ListingElement = FtpClient.ListingElement; } declare class PromiseFtp { /** * The underlying FtpClient instance */ rawClient: FtpClient; getConnectionStatus(): PromiseFtpCommon.STATUSES; /** * Connect to an FTP server. */ connect: (options: PromiseFtp.Options) => Promise; /** * Reconnect with the same options as previously connected with `#connect()`. */ reconnect: () => Promise; /** * Close the connection to the server after any/all enqueued * commands have been executed. * @returns a promise that resolves with the last error recieved if there * was an error, true if there was an error but the client didn't recieve it, * or false if there was no error. */ end(): Promise; /** * Close the connection to the server immediately. */ destroy(): boolean; /** * Retrieve the directory listing of path. * @param path - defaults to the current working directory. * @param useCompression - defaults to false. * @returns the contents of the specified directory */ list(path?: string, useCompression?: boolean): Promise>; list(useCompression: boolean): Promise>; /** * Optional "standard" commands (RFC 959) * Retrieve the directory listing of path. * Similar to `#list()`, except the directory is temporarily changed to path to * retrieve the directory listing. This is useful for servers that do not * handle characters like spaces and quotes in directory names well for the * LIST command. This function is "optional" because it relies on `#pwd()` * being available. * @param path - defaults to the current working directory. * @param useCompression - defaults to false. * @returns the contents of the specified directory */ listSafe( path?: string, useCompression?: boolean ): Promise>; listSafe(useCompression: boolean): Promise>; /** * Retrieve a file at path from the server. * @param path - the path of the file to get. * @param useCompression - defaults to false. * @returns a stream which empties to the contents of the specified file. */ get(path: string, useCompression?: boolean): Promise; /** * Send data to the server to be stored as a file. * @param input - can be a ReadableStream, a Buffer, or a path to a local file. * @param destPath - the path of the file to write to. * @param useCompression - defaults to false. */ put( input: NodeJS.ReadableStream | Buffer | string, destPath: string, useCompression?: boolean ): Promise; /** * Create a new file on the server or append to one that already exists. * @param input - can be a ReadableStream, a Buffer, or a pathto a local file. * @param destPath - the path of the file to create or append to. * @param useCompression - defaults to false. */ append( input: NodeJS.ReadableStream | Buffer | string, destPath: string, useCompression?: boolean ): Promise; /** * Rename a file on the server. * @param oldPath - the old path of the file. * @param newPath - the new path to move it to. */ rename: (oldPath: string, newPath: string) => Promise; /** * Logout the user from the server. */ logout: () => Promise; /** * Delete a file on the server. */ delete: (path: string) => Promise; /** * Change the current working directory. * @param cwd - the path to change the CWD to. * @returns the current directory if the server replies with the path in the * response text, otherwise undefined. */ cwd(path: string): Promise; /** * Abort the current data transfer (e.g. from `#get()`, `#put()`, or `#list()`) */ abort(): Promise; /** * Send command using SITE. * @param command - the command to send, e.g 'CHMOD 755 foo' or 'QUOTA'. */ site(command: string): Promise<{ text: string; code: number }>; /** * Retrieve human-readable information about the server's status. * @returns a string with the server's status. */ status: () => Promise; /** * Set the transfer data type to ASCII. */ ascii(): Promise; /** * Set the transfer data type to binary (default at time of connection). */ binary(): Promise; /** * Optional "standard" commands (RFC 959) * Create a new directory on the server. * @param path - the path of the new directory. * @param recursive - enables a `mkdir -p` algorithm, defaults to false. */ mkdir(path: string, recursive?: boolean): Promise; /** * Optional "standard" commands (RFC 959) * Remove a directory on the server. * @param path - the path of the directory to remove. * @param recursive - enables deleting the directory if not empty, defaults to false. */ rmdir(path: string, recursive?: boolean): Promise; /** * Optional "standard" commands (RFC 959) * Change the working directory to the parent of the current directory. * Like `cd ..`. */ cdup(): Promise; /** * Optional "standard" commands (RFC 959) * Retrieve the current working directory. */ pwd(): Promise; /** * Optional "standard" commands (RFC 959) * Retrieve information about the system running the server. * @returns the server's OS. */ system(): Promise; /** * Extended commands (RFC 3659) * Retrieve the size of a file on the server. * @param path - the path of the file whose size is to be retrieved. * @returns the size of the specified file. */ size(path: string): Promise; /** * Extended commands (RFC 3659) * Retrieve the last modified date and time for a file or directory. * @param path - the path of the file/directory whose modified date is to * be retrieved. * @returns the last modified date at the specified path. */ lastMod(path: string): Promise; /** * Extended commands (RFC 3659) * Set the file byte offset for the next file transfer action (get/put). * @param byteOffset - The file byte offset. */ restart(byteOffset: number): Promise; } export = PromiseFtp;