node-ftp
node-ftp copied to clipboard
Optional parameter should behave as if was omitted when supplied with undefined or null
For example, in the method list,
both path and useCompression are optional,
but when I invoke the method by
ftp.list(void (0), true, ()=> {}),
it fetches the list of directory 'undefined', instead, Ithink that
it should fetch the current working directory list.
I met this problem when I use typescript, since the param callback is the last one and is necessary, I couldn't find a better way to handle it.
If I place the callback in the first, then it breaks the node-style callback This is my code
readdir(directory?: any, useCompression?: any,
callback?: (err: Error | null, list?: any[]) => void) {
this.getConnection((err, ftp) => {
if (err) {
return callback && callback(err);
}
if (ftp) {
ftp.listSafe(directory, useCompression, (error: Error, list: Ftp.ListingElement[]) => {
if (error) {
return callback && callback(error);
}
if (typeof list === 'undefined') {
return;
}
const files = [];
for (let i = 0; i < list.length; i++) {
const file = list[i];
if (file.name === '.' || file.name === '..') {
continue;
}
let path = directory;
if (path.substr(-1) !== '/') {
path += '/';
}
files.push({
size: file.size,
filename: file.name,
isDirectory: file.type === 'd',
path: path + file.name,
});
}
return callback && callback(null, files);
});
}
});
}
If I invoke it by readdir(true, ()=> {}) It fetched the directory undefined
How can I solve this problem?
Please help me, thanks a lot