bit-bin
Version:
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b
83 lines (57 loc) • 2.63 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = searchFilesIgnoreExt;
function _ramda() {
const data = _interopRequireDefault(require("ramda"));
_ramda = function () {
return data;
};
return data;
}
function _fsNoExt() {
const data = _interopRequireDefault(require("./fs-no-ext"));
_fsNoExt = function () {
return data;
};
return data;
}
function _logger() {
const data = _interopRequireDefault(require("../../logger/logger"));
_logger = function () {
return data;
};
return data;
}
const LOWER_PRIORITY_EXTENSIONS = ['d.ts'];
const HIGHER_PRIORITY_EXTENSIONS = ['js'];
function searchFilesIgnoreExt(files, fileName, returnProp) {
const _byFileNoExt = file => (0, _fsNoExt().default)(file.relative) === (0, _fsNoExt().default)(fileName);
const _byFileWithExt = file => file.relative === fileName;
if (files && !_ramda().default.isEmpty(files)) {
const foundFile = getFile();
return foundFile && returnProp && foundFile[returnProp] ? foundFile[returnProp] : foundFile;
}
return null;
function getFile() {
const foundFileWithExt = _ramda().default.find(_byFileWithExt, files);
if (foundFileWithExt) return foundFileWithExt;
const foundFilesWithExt = _ramda().default.filter(_byFileNoExt, files);
if (!foundFilesWithExt.length) return null;
if (foundFilesWithExt.length === 1) return foundFilesWithExt[0];
_logger().default.debug(`search-file-ignore-ext, found multiple files matching the criteria for ${fileName}: ${foundFilesWithExt.map(f => f.relative).join(', ')}`);
const prioritizedFile = getMatchingFileByPriority(foundFilesWithExt);
_logger().default.debug(`search-file-ignore-ext, ended up using ${prioritizedFile.relative} for ${fileName}`);
return prioritizedFile;
}
function getMatchingFileByPriority(foundFilesWithExt) {
// prefer files with extensions that are listed in HIGHER_PRIORITY_EXTENSIONS.
const withHigherPriorities = foundFilesWithExt.filter(file => HIGHER_PRIORITY_EXTENSIONS.some(extension => file.relative.endsWith(extension)));
if (withHigherPriorities.length) return withHigherPriorities[0]; // prefer files with extensions that are not listed in LOWER_PRIORITY_EXTENSIONS.
const withoutLowerPriorities = foundFilesWithExt.filter(file => !LOWER_PRIORITY_EXTENSIONS.some(extension => file.relative.endsWith(extension)));
if (withoutLowerPriorities.length) return withoutLowerPriorities[0];
return foundFilesWithExt[0];
}
}
;