I'm having problems when i try to call a instance method recursively.
The code looks as follows:
import fs from 'fs';
import fsWatcher from 'filewatcher';
import path from 'path';
export default class SearchService {
initializeFileWatcher(foldersToWatch) {
let result = fsWatcher();
for (var i = 0; i < foldersToWatch.length; i++) {
result.add(foldersToWatch[i]);
}
return result;
}
getFilesFromDirectoriesRecursively(directories, fileExtension) {
let result = [];
for (var i = 0; i < directories.length; i++) {
var dir = directories[i];
var list = fs.readdirSync(dir);
list.forEach(function (file) {
file = dir + '/' + file;
var stat = fs.statSync(file);
if (stat && stat.isDirectory())
result = result.concat(this.getFilesFromDirectoriesRecursively([file], fileExtension).bind(this));
else
if (path.extname(file) === fileExtension)
result.push(file);
});
}
return result;
}
getFilesFromDirectory(directory, fileExtension) {
var result = [];
var files = fs.readdirSync(directory);
for (var i = 0; i < files.length; i++) {
if (files[i].endsWith(fileExtension))
result.push(files[i]);
}
return result;
}
}
The code get transpiled with babel-es2015 and runs on a electron app environment. No when I try to call the method getFilesFromDirectoriesRecursively inside itself the transpiled code get in troubles because of the this which point to the instance in es2015 but not in the transpiled code.
How can I get around this problem?