Innovenergy_trunk/frontend/node_modules/babel-plugin-module-resolver/lib/utils.js

73 lines
2.2 KiB
JavaScript

"use strict";
exports.__esModule = true;
exports.escapeRegExp = escapeRegExp;
exports.isImportCall = isImportCall;
exports.isRelativePath = isRelativePath;
exports.matchesPattern = matchesPattern;
exports.nodeResolvePath = nodeResolvePath;
exports.replaceExtension = replaceExtension;
exports.stripExtension = stripExtension;
exports.toLocalPath = toLocalPath;
exports.toPosixPath = toPosixPath;
var _path = _interopRequireDefault(require("path"));
var _resolve = _interopRequireDefault(require("resolve"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function nodeResolvePath(modulePath, basedir, extensions) {
try {
return _resolve.default.sync(modulePath, {
basedir,
extensions
});
} catch (e) {
return null;
}
}
function isRelativePath(nodePath) {
return nodePath.match(/^\.?\.\//);
}
function toPosixPath(modulePath) {
return modulePath.replace(/\\/g, '/');
}
function toLocalPath(modulePath) {
let localPath = modulePath.replace(/\/index$/, ''); // remove trailing /index
if (!isRelativePath(localPath)) {
localPath = `./${localPath}`; // insert `./` to make it a relative path
}
return localPath;
}
function stripExtension(modulePath, stripExtensions) {
let name = _path.default.basename(modulePath);
stripExtensions.some(extension => {
if (name.endsWith(extension)) {
name = name.slice(0, name.length - extension.length);
return true;
}
return false;
});
return name;
}
function replaceExtension(modulePath, opts) {
const filename = stripExtension(modulePath, opts.stripExtensions);
return _path.default.join(_path.default.dirname(modulePath), filename);
}
function matchesPattern(types, calleePath, pattern) {
const {
node
} = calleePath;
if (types.isMemberExpression(node)) {
return calleePath.matchesPattern(pattern);
}
if (!types.isIdentifier(node) || pattern.includes('.')) {
return false;
}
const name = pattern.split('.')[0];
return node.name === name;
}
function isImportCall(types, calleePath) {
return types.isImport(calleePath.node.callee);
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}