UNPKG

canonical

Version:

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

47 lines (35 loc) 4.93 kB
'use strict'; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; var _coreGetExports = require('../core/getExports'); var _coreGetExports2 = _interopRequireDefault(_coreGetExports); 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 = _coreGetExports2['default'].get(node.source.value, context); if (imports == null) return; if (imports.errors.length) { context.report({ node: node.source, message: 'Parse errors in imported module ' + ('\'' + node.source.value + '\'.') }); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uYW1lZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OzhCQUFvQixvQkFBb0I7Ozs7QUFFeEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFVLE9BQU8sRUFBRTtBQUNsQyxXQUFTLGVBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QyxRQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLE9BQU07O0FBRS9CLFFBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtBQUFFLGFBQU8sRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUE7S0FBRSxDQUFDLEVBQUU7QUFDdEQsYUFBTTtLQUNQOztBQUVELFFBQU0sT0FBTyxHQUFHLDRCQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUN2RCxRQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsT0FBTTs7QUFFM0IsUUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUN6QixhQUFPLENBQUMsTUFBTSxDQUFDO0FBQ2IsWUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNO0FBQ2pCLGVBQU8sRUFBRSw2Q0FDSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBSTtPQUNuQyxDQUFDLENBQUE7QUFDRixhQUFNO0tBQ1A7O0FBRUQsUUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTs7QUFFekIsUUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUU7QUFDcEMsVUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxPQUFNOztBQUU1QixVQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUIsZUFBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ3BCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUE7T0FDaEU7S0FDRixDQUFDLENBQUE7R0FDSDs7QUFFRCxTQUFPO0FBQ0wsdUJBQW1CLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBRSxJQUFJLEVBQ0osVUFBVSxFQUNWLGlCQUFpQixDQUNsQjs7QUFFMUMsNEJBQXdCLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBRSxJQUFJLEVBQ0osT0FBTyxFQUNQLGlCQUFpQixDQUNsQjtHQUNoRCxDQUFBO0NBRUYsQ0FBQSIsImZpbGUiOiJuYW1lZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHBvcnRzIGZyb20gJy4uL2NvcmUvZ2V0RXhwb3J0cydcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBmdW5jdGlvbiBjaGVja1NwZWNpZmllcnMoa2V5LCB0eXBlLCBub2RlKSB7XG4gICAgaWYgKG5vZGUuc291cmNlID09IG51bGwpIHJldHVybiAvLyBsb2NhbCBleHBvcnQsIGlnbm9yZVxuXG4gICAgaWYgKCFub2RlLnNwZWNpZmllcnNcbiAgICAgICAgICAuc29tZShmdW5jdGlvbiAoaW0pIHsgcmV0dXJuIGltLnR5cGUgPT09IHR5cGUgfSkpIHtcbiAgICAgIHJldHVybiAvLyBubyBuYW1lZCBpbXBvcnRzL2V4cG9ydHNcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRzID0gRXhwb3J0cy5nZXQobm9kZS5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgaWYgKGltcG9ydHMgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBpZiAoaW1wb3J0cy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIG5vZGU6IG5vZGUuc291cmNlLFxuICAgICAgICBtZXNzYWdlOiBgUGFyc2UgZXJyb3JzIGluIGltcG9ydGVkIG1vZHVsZSBgICtcbiAgICAgICAgICAgICAgICAgYCcke25vZGUuc291cmNlLnZhbHVlfScuYCxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgbmFtZXMgPSBpbXBvcnRzLm5hbWVkXG5cbiAgICBub2RlLnNwZWNpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoaW0pIHtcbiAgICAgIGlmIChpbS50eXBlICE9PSB0eXBlKSByZXR1cm5cblxuICAgICAgaWYgKCFuYW1lcy5oYXMoaW1ba2V5XS5uYW1lKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydChpbVtrZXldLFxuICAgICAgICAgIGltW2tleV0ubmFtZSArICcgbm90IGZvdW5kIGluIFxcJycgKyBub2RlLnNvdXJjZS52YWx1ZSArICdcXCcnKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgICdJbXBvcnREZWNsYXJhdGlvbic6IGNoZWNrU3BlY2lmaWVycy5iaW5kKCBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdpbXBvcnRlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ0ltcG9ydFNwZWNpZmllcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbic6IGNoZWNrU3BlY2lmaWVycy5iaW5kKCBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2xvY2FsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdFeHBvcnRTcGVjaWZpZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gIH1cblxufVxuIl19