/**
 * Copyright © 2019 Johnson & Johnson
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import path from 'path';
import fs from 'fs-extra';
import walk from 'walkdir';
/**
 * locatFiles is a Promise, that walks a path finding files matching the filePattern,
 * then pass the filePath to a promise (the action prop).  When all of these promise are resolved
 * then locateFiles is resolved with all of the promises results.
 * @param props
 */
var locateFiles = function (props) { return new Promise(function (resolve) {
    var startingRoot = props.startingRoot, filePattern = props.filePattern, action = props.action;
    var promises = [];
    var filter = function (dirPath, files) { return (files.filter(function (name) {
        var fullPath = path.join(dirPath, name);
        return (fs.existsSync(fullPath)
            && fs.statSync(fullPath).isDirectory()) || fullPath.search(filePattern) !== -1;
    })); };
    var walker = walk(startingRoot, { filter: filter, follow_symlinks: true });
    walker.on('file', function (filePath) {
        promises.push(action(filePath));
    });
    walker.on('end', function () {
        resolve(Promise.all(promises));
    });
}); };
export default locateFiles;
//# sourceMappingURL=locateFiles.js.map