canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.
143 lines (110 loc) • 10.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _map = require('babel-runtime/core-js/map');
var _map2 = _interopRequireDefault(_map);
exports.relative = relative;
exports.default = resolve;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var CASE_INSENSITIVE = _fs2.default.existsSync((0, _path.join)(__dirname, 'reSOLVE.js'));
// http://stackoverflow.com/a/27382838
function fileExistsWithCaseSync(filepath) {
var dir = (0, _path.dirname)(filepath);
if (dir === '/' || dir === '.' || /^[A-Z]:\\$/i.test(dir)) return true;
var filenames = _fs2.default.readdirSync(dir);
if (filenames.indexOf((0, _path.basename)(filepath)) === -1) {
return false;
}
return fileExistsWithCaseSync(dir);
}
function fileExists(filepath) {
if (CASE_INSENSITIVE) {
// short-circuit if path doesn't exist, ignoring case
return !(!_fs2.default.existsSync(filepath) || !fileExistsWithCaseSync(filepath));
} else {
return _fs2.default.existsSync(filepath);
}
}
function relative(modulePath, sourceFile, settings) {
function withResolver(resolver, config) {
// resolve just returns the core module id, which won't appear to exist
try {
var filePath = resolver.resolveImport(modulePath, sourceFile, config);
if (filePath === null) return null;
if (filePath === undefined || !fileExists(filePath)) return undefined;
return filePath;
} catch (err) {
return undefined;
}
}
var configResolvers = settings['import/resolver'] || { 'node': settings['import/resolve'] }; // backward compatibility
var resolvers = resolverReducer(configResolvers, new _map2.default());
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)(resolvers.entries()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _step$value = (0, _slicedToArray3.default)(_step.value, 2);
var name = _step$value[0];
var config = _step$value[1];
var resolver = require('eslint-import-resolver-' + name);
var fullPath = withResolver(resolver, config);
if (fullPath !== undefined) return fullPath;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
function resolverReducer(resolvers, map) {
if (resolvers instanceof Array) {
resolvers.forEach(function (r) {
return resolverReducer(r, map);
});
return map;
}
if (typeof resolvers === 'string') {
map.set(resolvers, null);
return map;
}
if ((typeof resolvers === 'undefined' ? 'undefined' : (0, _typeof3.default)(resolvers)) === 'object') {
for (var key in resolvers) {
map.set(key, resolvers[key]);
}
return map;
}
throw new Error('invalid resolver config');
}
/**
* Givent
* @param {string} p - module path
* @param {object} context - ESLint context
* @return {string} - the full module filesystem path;
* null if package is core;
* undefined if not found
*/
function resolve(p, context) {
return relative(p, context.getFilename(), context.settings);
}
resolve.relative = relative;
//# sourceMappingURL=data:application/json;base64,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SUFBSSxHQUFKLElBQVcsU0FBaEIsRUFBMkI7QUFDekIsVUFBSSxHQUFKLENBQVEsR0FBUixFQUFhLFVBQVUsR0FBVixDQUFiLEVBRHlCO0tBQTNCO0FBR0EsV0FBTyxHQUFQLENBSmlDO0dBQW5DOztBQU9BLFFBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTixDQWxCdUM7Q0FBekM7Ozs7Ozs7Ozs7QUE2QmUsU0FBUyxPQUFULENBQWlCLENBQWpCLEVBQW9CLE9BQXBCLEVBQTZCO0FBQzFDLFNBQU8sU0FBVSxDQUFWLEVBQ1UsUUFBUSxXQUFSLEVBRFYsRUFFVSxRQUFRLFFBQVIsQ0FGakIsQ0FEMEM7Q0FBN0I7QUFNZixRQUFRLFFBQVIsR0FBbUIsUUFBbkIiLCJmaWxlIjoiY29yZS9yZXNvbHZlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHsgZGlybmFtZSwgYmFzZW5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJ1xuXG5jb25zdCBDQVNFX0lOU0VOU0lUSVZFID0gZnMuZXhpc3RzU3luYyhqb2luKF9fZGlybmFtZSwgJ3JlU09MVkUuanMnKSlcblxuLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjczODI4MzhcbmZ1bmN0aW9uIGZpbGVFeGlzdHNXaXRoQ2FzZVN5bmMoZmlsZXBhdGgpIHtcbiAgdmFyIGRpciA9IGRpcm5hbWUoZmlsZXBhdGgpXG4gIGlmIChkaXIgPT09ICcvJyB8fCBkaXIgPT09ICcuJyB8fCAvXltBLVpdOlxcXFwkL2kudGVzdChkaXIpKSByZXR1cm4gdHJ1ZVxuICB2YXIgZmlsZW5hbWVzID0gZnMucmVhZGRpclN5bmMoZGlyKVxuICBpZiAoZmlsZW5hbWVzLmluZGV4T2YoYmFzZW5hbWUoZmlsZXBhdGgpKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBmaWxlRXhpc3RzV2l0aENhc2VTeW5jKGRpcilcbn1cblxuZnVuY3Rpb24gZmlsZUV4aXN0cyhmaWxlcGF0aCkge1xuICBpZiAoQ0FTRV9JTlNFTlNJVElWRSkge1xuICAgIC8vIHNob3J0LWNpcmN1aXQgaWYgcGF0aCBkb2Vzbid0IGV4aXN0LCBpZ25vcmluZyBjYXNlXG4gICAgcmV0dXJuICEoIWZzLmV4aXN0c1N5bmMoZmlsZXBhdGgpIHx8ICFmaWxlRXhpc3RzV2l0aENhc2VTeW5jKGZpbGVwYXRoKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnMuZXhpc3RzU3luYyhmaWxlcGF0aClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUobW9kdWxlUGF0aCwgc291cmNlRmlsZSwgc2V0dGluZ3MpIHtcblxuICBmdW5jdGlvbiB3aXRoUmVzb2x2ZXIocmVzb2x2ZXIsIGNvbmZpZykge1xuICAgIC8vIHJlc29sdmUganVzdCByZXR1cm5zIHRoZSBjb3JlIG1vZHVsZSBpZCwgd2hpY2ggd29uJ3QgYXBwZWFyIHRvIGV4aXN0XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gcmVzb2x2ZXIucmVzb2x2ZUltcG9ydChtb2R1bGVQYXRoLCBzb3VyY2VGaWxlLCBjb25maWcpXG4gICAgICBpZiAoZmlsZVBhdGggPT09IG51bGwpIHJldHVybiBudWxsXG5cbiAgICAgIGlmIChmaWxlUGF0aCA9PT0gdW5kZWZpbmVkIHx8ICFmaWxlRXhpc3RzKGZpbGVQYXRoKSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgICByZXR1cm4gZmlsZVBhdGhcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb25maWdSZXNvbHZlcnMgPSAoc2V0dGluZ3NbJ2ltcG9ydC9yZXNvbHZlciddXG4gICAgfHwgeyAnbm9kZSc6IHNldHRpbmdzWydpbXBvcnQvcmVzb2x2ZSddIH0pIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcblxuICBjb25zdCByZXNvbHZlcnMgPSByZXNvbHZlclJlZHVjZXIoY29uZmlnUmVzb2x2ZXJzLCBuZXcgTWFwKCkpXG5cbiAgZm9yIChsZXQgW25hbWUsIGNvbmZpZ10gb2YgcmVzb2x2ZXJzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IHJlc29sdmVyID0gcmVxdWlyZShgZXNsaW50LWltcG9ydC1yZXNvbHZlci0ke25hbWV9YClcblxuICAgIGxldCBmdWxsUGF0aCA9IHdpdGhSZXNvbHZlcihyZXNvbHZlciwgY29uZmlnKVxuICAgIGlmIChmdWxsUGF0aCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZnVsbFBhdGhcbiAgfVxuXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVyUmVkdWNlcihyZXNvbHZlcnMsIG1hcCkge1xuICBpZiAocmVzb2x2ZXJzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICByZXNvbHZlcnMuZm9yRWFjaChyID0+IHJlc29sdmVyUmVkdWNlcihyLCBtYXApKVxuICAgIHJldHVybiBtYXBcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVzb2x2ZXJzID09PSAnc3RyaW5nJykge1xuICAgIG1hcC5zZXQocmVzb2x2ZXJzLCBudWxsKVxuICAgIHJldHVybiBtYXBcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVzb2x2ZXJzID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAobGV0IGtleSBpbiByZXNvbHZlcnMpIHtcbiAgICAgIG1hcC5zZXQoa2V5LCByZXNvbHZlcnNba2V5XSlcbiAgICB9XG4gICAgcmV0dXJuIG1hcFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlc29sdmVyIGNvbmZpZycpXG59XG5cbi8qKlxuICogR2l2ZW50XG4gKiBAcGFyYW0gIHtzdHJpbmd9IHAgLSBtb2R1bGUgcGF0aFxuICogQHBhcmFtICB7b2JqZWN0fSBjb250ZXh0IC0gRVNMaW50IGNvbnRleHRcbiAqIEByZXR1cm4ge3N0cmluZ30gLSB0aGUgZnVsbCBtb2R1bGUgZmlsZXN5c3RlbSBwYXRoO1xuICogICAgICAgICAgICAgICAgICAgIG51bGwgaWYgcGFja2FnZSBpcyBjb3JlO1xuICogICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZShwLCBjb250ZXh0KSB7XG4gIHJldHVybiByZWxhdGl2ZSggcFxuICAgICAgICAgICAgICAgICAsIGNvbnRleHQuZ2V0RmlsZW5hbWUoKVxuICAgICAgICAgICAgICAgICAsIGNvbnRleHQuc2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgKVxufVxucmVzb2x2ZS5yZWxhdGl2ZSA9IHJlbGF0aXZlXG4iXX0=