123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- "use strict";
- exports.__esModule = true;
- exports.default = resolvePath;
- var _path = _interopRequireDefault(require("path"));
- var _log = require("./log");
- var _mapToRelative = _interopRequireDefault(require("./mapToRelative"));
- var _normalizeOptions = _interopRequireDefault(require("./normalizeOptions"));
- var _utils = require("./utils");
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function getRelativePath(sourcePath, currentFile, absFileInRoot, opts) {
- const realSourceFileExtension = _path.default.extname(absFileInRoot);
- const sourceFileExtension = _path.default.extname(sourcePath);
- let relativePath = (0, _mapToRelative.default)(opts.cwd, currentFile, absFileInRoot);
- if (realSourceFileExtension !== sourceFileExtension) {
- relativePath = (0, _utils.replaceExtension)(relativePath, opts);
- }
- return (0, _utils.toLocalPath)((0, _utils.toPosixPath)(relativePath));
- }
- function findPathInRoots(sourcePath, {
- extensions,
- root
- }) {
- // Search the source path inside every custom root directory
- let resolvedSourceFile;
- root.some(basedir => {
- resolvedSourceFile = (0, _utils.nodeResolvePath)(`./${sourcePath}`, basedir, extensions);
- return resolvedSourceFile !== null;
- });
- return resolvedSourceFile;
- }
- function resolvePathFromRootConfig(sourcePath, currentFile, opts) {
- const absFileInRoot = findPathInRoots(sourcePath, opts);
- if (!absFileInRoot) {
- return null;
- }
- return getRelativePath(sourcePath, currentFile, absFileInRoot, opts);
- }
- function checkIfPackageExists(modulePath, currentFile, extensions, loglevel) {
- const resolvedPath = (0, _utils.nodeResolvePath)(modulePath, currentFile, extensions);
- if (resolvedPath === null && loglevel !== 'silent') {
- (0, _log.warn)(`Could not resolve "${modulePath}" in file ${currentFile}.`);
- }
- }
- function resolvePathFromAliasConfig(sourcePath, currentFile, opts) {
- let aliasedSourceFile;
- opts.alias.find(([regExp, substitute]) => {
- const execResult = regExp.exec(sourcePath);
- if (execResult === null) {
- return false;
- }
- aliasedSourceFile = substitute(execResult);
- return true;
- });
- if (!aliasedSourceFile) {
- return null;
- }
- if ((0, _utils.isRelativePath)(aliasedSourceFile)) {
- return (0, _utils.toLocalPath)((0, _utils.toPosixPath)((0, _mapToRelative.default)(opts.cwd, currentFile, aliasedSourceFile)));
- }
- if (process.env.NODE_ENV !== 'production') {
- checkIfPackageExists(aliasedSourceFile, currentFile, opts.extensions, opts.loglevel);
- }
- return aliasedSourceFile;
- }
- const resolvers = [resolvePathFromAliasConfig, resolvePathFromRootConfig];
- function resolvePath(sourcePath, currentFile, opts) {
- if ((0, _utils.isRelativePath)(sourcePath)) {
- return sourcePath;
- }
- const normalizedOpts = (0, _normalizeOptions.default)(currentFile, opts); // File param is a relative path from the environment current working directory
- // (not from cwd param)
- const absoluteCurrentFile = _path.default.resolve(currentFile);
- let resolvedPath = null;
- resolvers.some(resolver => {
- resolvedPath = resolver(sourcePath, absoluteCurrentFile, normalizedOpts);
- return resolvedPath !== null;
- });
- return resolvedPath;
- }
|