Server's events [v2] - OpenMarshal/npm-WebDAV-Server GitHub Wiki

Events are triggered when a resource is accessed or modified. The server handles the events, but, it is possible to attach an event directly to a file system, but it is just an easier way to filter the event by the selected file system.

An event listener function must match this signature :

type EventCallback = (ctx : RequestContext, fs : FileSystem, path : Path, data ?: any) => void;

Here is the list of the events :

Event name Description details argument
'create' Triggered after resource is created. { type: ResourceType, createIntermediates: boolean }
'before-create' Triggered before a resource is created. { type: ResourceType, createIntermediates: boolean }
'delete' Triggered after a resource is deleted. { depth: number }
'before-delete' Triggered before a resource is deleted. { depth: number }
'copy' Triggered after a resource is copied. { pathTo: Path, overwrite: boolean, overrided: boolean, depth: number }
'before-copy' Triggered before a resource is copied. { pathTo: Path, overwrite: boolean, depth: number }
'move' Triggered after a resource is moved. { pathFrom: Path, pathTo: Path, overwrite: boolean, overrided: boolean }
'before-move' Triggered before a resource is moved. { pathFrom: Path, pathTo: Path, overwrite: boolean, overrided: boolean }
'openWriteStream' Triggered after a resource is opened for writing. { targetSource: boolean, mode: OpenWriteStreamMode, estimatedSize: number, created: : boolean, stream: Writable }
'before-openWriteStream' Triggered before a resource is opened for writing. { targetSource: boolean, mode: OpenWriteStreamMode, estimatedSize: number, created: : boolean }
'openReadStream' Triggered after a resource is opened for reading. { targetSource: boolean, estimatedSize: number, stream: Readable }
'before-openReadStream' Triggered before a resource is opened for reading. { targetSource: boolean, estimatedSize: number }
'rename' Triggered after a resource is renamed. { newName: string, overrided: boolean }
'before-rename' Triggered before a resource is renamed. { newName: string }
'lock-set' Triggered after a lock is added. { lock: Lock }
'before-lock-set' Triggered before a lock is added. { lock: Lock }
'lock-remove' Triggered after a lock is removed. { uuid: string, removed: boolean }
'before-lock-remove' Triggered before a lock is removed. { uuid: string }
'lock-refresh' Triggered after a lock is refreshed. { uuid: string, timeout: number, lock: Lock }
'before-lock-refresh' Triggered before a lock is refreshed. { uuid: string, timeout: number }
'property-set' Triggered after a property is added. { name: string, value: ResourcePropertyValue, attributes: PropertyAttributes }
'before-property-set' Triggered before a property is added. { name: string, value: ResourcePropertyValue, attributes: PropertyAttributes }
'property-remove' Triggered after a property is removed. { name: string }
'before-property-remove' Triggered before a property is removed. { name: string }

You can add a listener to the server with:

server.on('create', (ctx, fs, path, data) => {
    console.log('Resource created; createIntermediates=', data.createIntermediates);
});

fileSystem.on(server, 'create', (ctx, fs, path, data) => {
    console.log('Resource created; createIntermediates=', data.createIntermediates);
});

Then, you can remove a listener with:

server.removeEvent('create', myListener);

You can clear all the listeners of an event with:

server.removeEvent('create');