canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.
44 lines (32 loc) • 4.43 kB
JavaScript
;
var _getExports = require('../core/getExports');
var _getExports2 = _interopRequireDefault(_getExports);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = function (context) {
function checkSpecifiers(key, type, node) {
if (node.source == null) return; // local export, ignore
if (!node.specifiers.some(function (im) {
return im.type === type;
})) {
return; // no named imports/exports
}
var imports = _getExports2.default.get(node.source.value, context);
if (imports == null) return;
if (imports.errors.length) {
imports.reportErrors(context, node);
return;
}
var names = imports.named;
node.specifiers.forEach(function (im) {
if (im.type !== type) return;
if (!names.has(im[key].name)) {
context.report(im[key], im[key].name + ' not found in \'' + node.source.value + '\'');
}
});
}
return {
'ImportDeclaration': checkSpecifiers.bind(null, 'imported', 'ImportSpecifier'),
'ExportNamedDeclaration': checkSpecifiers.bind(null, 'local', 'ExportSpecifier')
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25hbWVkLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsT0FBTyxPQUFQLEdBQWlCLFVBQVUsT0FBVixFQUFtQjtBQUNsQyxXQUFTLGVBQVQsQ0FBeUIsR0FBekIsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEM7QUFDeEMsUUFBSSxLQUFLLE1BQUwsSUFBZSxJQUFmLEVBQXFCLE9BQXpCOztBQUR3QyxRQUdwQyxDQUFDLEtBQUssVUFBTCxDQUNFLElBREYsQ0FDTyxVQUFVLEVBQVYsRUFBYztBQUFFLGFBQU8sR0FBRyxJQUFILEtBQVksSUFBWixDQUFUO0tBQWQsQ0FEUixFQUNvRDtBQUN0RDtBQURzRCxLQUR4RDs7QUFLQSxRQUFNLFVBQVUscUJBQVEsR0FBUixDQUFZLEtBQUssTUFBTCxDQUFZLEtBQVosRUFBbUIsT0FBL0IsQ0FBVixDQVJrQztBQVN4QyxRQUFJLFdBQVcsSUFBWCxFQUFpQixPQUFyQjs7QUFFQSxRQUFJLFFBQVEsTUFBUixDQUFlLE1BQWYsRUFBdUI7QUFDekIsY0FBUSxZQUFSLENBQXFCLE9BQXJCLEVBQThCLElBQTlCLEVBRHlCO0FBRXpCLGFBRnlCO0tBQTNCOztBQUtBLFFBQUksUUFBUSxRQUFRLEtBQVIsQ0FoQjRCOztBQWtCeEMsU0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFVBQVUsRUFBVixFQUFjO0FBQ3BDLFVBQUksR0FBRyxJQUFILEtBQVksSUFBWixFQUFrQixPQUF0Qjs7QUFFQSxVQUFJLENBQUMsTUFBTSxHQUFOLENBQVUsR0FBRyxHQUFILEVBQVEsSUFBUixDQUFYLEVBQTBCO0FBQzVCLGdCQUFRLE1BQVIsQ0FBZSxHQUFHLEdBQUgsQ0FBZixFQUNFLEdBQUcsR0FBSCxFQUFRLElBQVIsR0FBZSxrQkFBZixHQUFvQyxLQUFLLE1BQUwsQ0FBWSxLQUFaLEdBQW9CLElBQXhELENBREYsQ0FENEI7T0FBOUI7S0FIc0IsQ0FBeEIsQ0FsQndDO0dBQTFDOztBQTRCQSxTQUFPO0FBQ0wseUJBQXFCLGdCQUFnQixJQUFoQixDQUFzQixJQUF0QixFQUNzQixVQUR0QixFQUVzQixpQkFGdEIsQ0FBckI7O0FBS0EsOEJBQTBCLGdCQUFnQixJQUFoQixDQUFzQixJQUF0QixFQUNzQixPQUR0QixFQUVzQixpQkFGdEIsQ0FBMUI7R0FORixDQTdCa0M7Q0FBbkIiLCJmaWxlIjoicnVsZXMvbmFtZWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9jb3JlL2dldEV4cG9ydHMnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgZnVuY3Rpb24gY2hlY2tTcGVjaWZpZXJzKGtleSwgdHlwZSwgbm9kZSkge1xuICAgIGlmIChub2RlLnNvdXJjZSA9PSBudWxsKSByZXR1cm4gLy8gbG9jYWwgZXhwb3J0LCBpZ25vcmVcblxuICAgIGlmICghbm9kZS5zcGVjaWZpZXJzXG4gICAgICAgICAgLnNvbWUoZnVuY3Rpb24gKGltKSB7IHJldHVybiBpbS50eXBlID09PSB0eXBlIH0pKSB7XG4gICAgICByZXR1cm4gLy8gbm8gbmFtZWQgaW1wb3J0cy9leHBvcnRzXG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0cyA9IEV4cG9ydHMuZ2V0KG5vZGUuc291cmNlLnZhbHVlLCBjb250ZXh0KVxuICAgIGlmIChpbXBvcnRzID09IG51bGwpIHJldHVyblxuXG4gICAgaWYgKGltcG9ydHMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgbm9kZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBuYW1lcyA9IGltcG9ydHMubmFtZWRcblxuICAgIG5vZGUuc3BlY2lmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChpbSkge1xuICAgICAgaWYgKGltLnR5cGUgIT09IHR5cGUpIHJldHVyblxuXG4gICAgICBpZiAoIW5hbWVzLmhhcyhpbVtrZXldLm5hbWUpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KGltW2tleV0sXG4gICAgICAgICAgaW1ba2V5XS5uYW1lICsgJyBub3QgZm91bmQgaW4gXFwnJyArIG5vZGUuc291cmNlLnZhbHVlICsgJ1xcJycpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJ0ltcG9ydERlY2xhcmF0aW9uJzogY2hlY2tTcGVjaWZpZXJzLmJpbmQoIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2ltcG9ydGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnSW1wb3J0U3BlY2lmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJzogY2hlY2tTcGVjaWZpZXJzLmJpbmQoIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9jYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ0V4cG9ydFNwZWNpZmllcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgfVxuXG59XG4iXX0=