UNPKG

canonical

Version:

Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.

143 lines (110 loc) 10.3 kB
'use strict'; 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=