Skip to content

ZeroTransfer

Defined in: src/client/ZeroTransfer.ts:62

SDK entry point for FTP, FTPS, and SFTP workflows.

ZeroTransfer extends Node.js EventEmitter so applications can observe lifecycle events while still using promise-based APIs for operations. The facade is deliberately protocol-neutral; concrete behavior lives behind RemoteFileAdapter.

  • EventEmitter
new ZeroTransfer(options?: ZeroTransferOptions): ZeroTransfer;

Defined in: src/client/ZeroTransfer.ts:78

Creates a client facade without opening a network connection.

ParameterTypeDescription
optionsZeroTransferOptionsOptional facade configuration, logger, and protocol adapter.

ZeroTransfer

EventEmitter.constructor
PropertyModifierTypeDefault valueDescriptionDefined in
createTransferClientreadonly(options: TransferClientOptions) => TransferClientcreateTransferClientCreates a provider-neutral transfer client with the built-in provider registry.src/client/ZeroTransfer.ts:64
protocolreadonly"ftp" | "ftps" | "sftp"undefinedProtocol selected for this client instance.src/client/ZeroTransfer.ts:67
optional [captureRejectionSymbol](
error: Error,
event: string | symbol, ...
args: any[]): void;

Defined in: node_modules/@types/node/events.d.ts:87

The Symbol.for('nodejs.rejection') method is called in case a promise rejection happens when emitting an event and captureRejections is enabled on the emitter. It is possible to use events.captureRejectionSymbol in place of Symbol.for('nodejs.rejection').

import { EventEmitter, captureRejectionSymbol } from 'node:events';
class MyClass extends EventEmitter {
constructor() {
super({ captureRejections: true });
}
[captureRejectionSymbol](err, event, ...args) {
console.log('rejection happened for', event, 'with', err, ...args);
this.destroy(err);
}
destroy(err) {
// Tear the resource down here.
}
}
ParameterType
errorError
eventstring | symbol
argsany[]

void

v13.4.0, v12.16.0

EventEmitter.[captureRejectionSymbol]

addListener<E>(eventName: string | symbol, listener: (...args: any[]) => void): this;

Defined in: node_modules/@types/node/events.d.ts:92

Alias for emitter.on(eventName, listener).

Type Parameter
E extends string | symbol
ParameterType
eventNamestring | symbol
listener(…args: any[]) => void

this

v0.1.26

EventEmitter.addListener

static connect(profile: ConnectionProfile, options?: ZeroTransferOptions): Promise<ZeroTransfer>;

Defined in: src/client/ZeroTransfer.ts:103

Creates a client and connects it in one step.

ParameterTypeDescription
profileConnectionProfileRemote host, authentication, and protocol connection settings.
optionsZeroTransferOptionsOptional facade settings that can be overridden by the profile.

Promise<ZeroTransfer>

A connected ZeroTransfer instance.

UnsupportedFeatureError When no adapter is available for the protocol.


connect(profile: ConnectionProfile): Promise<void>;

Defined in: src/client/ZeroTransfer.ts:131

Opens a remote connection through the configured protocol adapter.

ParameterTypeDescription
profileConnectionProfileRemote host, authentication, timeout, logger, and protocol settings.

Promise<void>

A promise that resolves after the adapter reports a successful connection.

UnsupportedFeatureError When the client does not have an adapter.


static create(options?: ZeroTransferOptions): ZeroTransfer;

Defined in: src/client/ZeroTransfer.ts:91

Creates a new client facade using the provided options.

ParameterTypeDescription
optionsZeroTransferOptionsOptional facade configuration, logger, and adapter.

ZeroTransfer

A disconnected ZeroTransfer instance.


disconnect(): Promise<void>;

Defined in: src/client/ZeroTransfer.ts:158

Closes the active remote connection if one exists.

Promise<void>

A promise that resolves after the adapter disconnects or immediately when idle.


emit<E>(eventName: string | symbol, ...args: any[]): boolean;

Defined in: node_modules/@types/node/events.d.ts:134

Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

Returns true if the event had listeners, false otherwise.

import { EventEmitter } from 'node:events';
const myEmitter = new EventEmitter();
// First listener
myEmitter.on('event', function firstListener() {
console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
const parameters = args.join(', ');
console.log(`event with parameters ${parameters} in third listener`);
});
console.log(myEmitter.listeners('event'));
myEmitter.emit('event', 1, 2, 3, 4, 5);
// Prints:
// [
// [Function: firstListener],
// [Function: secondListener],
// [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
Type Parameter
E extends string | symbol
ParameterType
eventNamestring | symbol
argsany[]

boolean

v0.1.26

EventEmitter.emit

eventNames(): (string | symbol)[];

Defined in: node_modules/@types/node/events.d.ts:154

Returns an array listing the events for which the emitter has registered listeners.

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});
const sym = Symbol('symbol');
myEE.on(sym, () => {});
console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]

(string | symbol)[]

v6.0.0

EventEmitter.eventNames

getCapabilities(): ZeroTransferCapabilities;

Defined in: src/client/ZeroTransfer.ts:181

Describes protocol and adapter readiness for feature discovery.

ZeroTransferCapabilities

A capability snapshot for diagnostics and UI state.


getMaxListeners(): number;

Defined in: node_modules/@types/node/events.d.ts:161

Returns the current max listener value for the EventEmitter which is either set by emitter.setMaxListeners(n) or defaults to events.defaultMaxListeners.

number

v1.0.0

EventEmitter.getMaxListeners

isConnected(): boolean;

Defined in: src/client/ZeroTransfer.ts:172

Checks whether the facade currently considers the adapter connected.

boolean

true after a successful connection and before disconnection.


list(path: string, options?: ListOptions): Promise<RemoteEntry[]>;

Defined in: src/client/ZeroTransfer.ts:196

Lists remote entries for a path using the configured adapter.

ParameterTypeDescription
pathstringRemote directory path to inspect.
options?ListOptionsOptional listing controls such as recursion and abort signal.

Promise<RemoteEntry[]>

Normalized remote entries for the requested directory.

UnsupportedFeatureError When the client does not have an adapter.


listenerCount<E>(eventName: string | symbol, listener?: (...args: any[]) => void): number;

Defined in: node_modules/@types/node/events.d.ts:170

Returns the number of listeners listening for the event named eventName. If listener is provided, it will return how many times the listener is found in the list of the listeners of the event.

Type Parameter
E extends string | symbol
ParameterTypeDescription
eventNamestring | symbolThe name of the event being listened for
listener?(…args: any[]) => voidThe event handler function

number

v3.2.0

EventEmitter.listenerCount

listeners<E>(eventName: string | symbol): (...args: any[]) => void[];

Defined in: node_modules/@types/node/events.d.ts:186

Returns a copy of the array of listeners for the event named eventName.

server.on('connection', (stream) => {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
Type Parameter
E extends string | symbol
ParameterType
eventNamestring | symbol

(…args: any[]) => void[]

v0.1.26

EventEmitter.listeners

off<E>(eventName: string | symbol, listener: (...args: any[]) => void): this;

Defined in: node_modules/@types/node/events.d.ts:191

Alias for emitter.removeListener().

Type Parameter
E extends string | symbol
ParameterType
eventNamestring | symbol
listener(…args: any[]) => void

this

v10.0.0

EventEmitter.off

on<E>(eventName: string | symbol, listener: (...args: any[]) => void): this;

Defined in: node_modules/@types/node/events.d.ts:225

Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

server.on('connection', (stream) => {
console.log('someone connected!');
});

Returns a reference to the EventEmitter, so that calls can be chained.

By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
Type Parameter
E extends string | symbol
ParameterTypeDescription
eventNamestring | symbolThe name of the event.
listener(…args: any[]) => voidThe callback function

this

v0.1.101

EventEmitter.on

once<E>(eventName: string | symbol, listener: (...args: any[]) => void): this;

Defined in: node_modules/@types/node/events.d.ts:256

Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

server.once('connection', (stream) => {
console.log('Ah, we have our first user!');
});

Returns a reference to the EventEmitter, so that calls can be chained.

By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
Type Parameter
E extends string | symbol
ParameterTypeDescription
eventNamestring | symbolThe name of the event.
listener(…args: any[]) => voidThe callback function

this

v0.3.0

EventEmitter.once

prependListener<E>(eventName: string | symbol, listener: (...args: any[]) => void): this;

Defined in: node_modules/@types/node/events.d.ts:275

Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

server.prependListener('connection', (stream) => {
console.log('someone connected!');
});

Returns a reference to the EventEmitter, so that calls can be chained.

Type Parameter
E extends string | symbol
ParameterTypeDescription
eventNamestring | symbolThe name of the event.
listener(…args: any[]) => voidThe callback function

this

v6.0.0

EventEmitter.prependListener

prependOnceListener<E>(eventName: string | symbol, listener: (...args: any[]) => void): this;

Defined in: node_modules/@types/node/events.d.ts:292

Adds a one-time listener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});

Returns a reference to the EventEmitter, so that calls can be chained.

Type Parameter
E extends string | symbol
ParameterTypeDescription
eventNamestring | symbolThe name of the event.
listener(…args: any[]) => voidThe callback function

this

v6.0.0

EventEmitter.prependOnceListener

rawListeners<E>(eventName: string | symbol): (...args: any[]) => void[];

Defined in: node_modules/@types/node/events.d.ts:326

Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));
// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];
// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();
// Logs "log once" to the console and removes the listener
logFnWrapper();
emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');
// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
Type Parameter
E extends string | symbol
ParameterType
eventNamestring | symbol

(…args: any[]) => void[]

v9.4.0

EventEmitter.rawListeners

removeAllListeners<E>(eventName?: string | symbol): this;

Defined in: node_modules/@types/node/events.d.ts:338

Removes all listeners, or those of the specified eventName.

It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

Returns a reference to the EventEmitter, so that calls can be chained.

Type Parameter
E extends string | symbol
ParameterType
eventName?string | symbol

this

v0.1.26

EventEmitter.removeAllListeners

removeListener<E>(eventName: string | symbol, listener: (...args: any[]) => void): this;

Defined in: node_modules/@types/node/events.d.ts:425

Removes the specified listener from the listener array for the event named eventName.

const callback = (stream) => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

removeListener() will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the listener array for the specified eventName, then removeListener() must be called multiple times to remove each instance.

Once an event is emitted, all listeners attached to it at the time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution will not remove them from emit() in progress. Subsequent events behave as expected.

import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
const callbackA = () => {
console.log('A');
myEmitter.removeListener('event', callbackB);
};
const callbackB = () => {
console.log('B');
};
myEmitter.on('event', callbackA);
myEmitter.on('event', callbackB);
// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
// A
// B
// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
// A

Because listeners are managed using an internal array, calling this will change the position indexes of any listener registered after the listener being removed. This will not impact the order in which listeners are called, but it means that any copies of the listener array as returned by the emitter.listeners() method will need to be recreated.

When a single function has been added as a handler multiple times for a single event (as in the example below), removeListener() will remove the most recently added instance. In the example the once('ping') listener is removed:

import { EventEmitter } from 'node:events';
const ee = new EventEmitter();
function pong() {
console.log('pong');
}
ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);
ee.emit('ping');
ee.emit('ping');

Returns a reference to the EventEmitter, so that calls can be chained.

Type Parameter
E extends string | symbol
ParameterType
eventNamestring | symbol
listener(…args: any[]) => void

this

v0.1.26

EventEmitter.removeListener

setMaxListeners(n: number): this;

Defined in: node_modules/@types/node/events.d.ts:436

By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

Returns a reference to the EventEmitter, so that calls can be chained.

ParameterType
nnumber

this

v0.3.5

EventEmitter.setMaxListeners

stat(path: string, options?: StatOptions): Promise<RemoteStat>;

Defined in: src/client/ZeroTransfer.ts:208

Reads metadata for a remote path using the configured adapter.

ParameterTypeDescription
pathstringRemote file, directory, or symbolic-link path to inspect.
options?StatOptionsOptional stat controls such as abort signal.

Promise<RemoteStat>

Normalized metadata for an existing remote entry.

UnsupportedFeatureError When the client does not have an adapter.