UNPKG

canonical

Version:

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

44 lines (32 loc) 4.43 kB
'use strict'; 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=