UNPKG

canonical

Version:

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

95 lines (76 loc) 5.17 kB
'use strict'; 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 _set = require('babel-runtime/core-js/set'); var _set2 = _interopRequireDefault(_set); var _map = require('babel-runtime/core-js/map'); var _map2 = _interopRequireDefault(_map); var _resolve = require('../core/resolve'); var _resolve2 = _interopRequireDefault(_resolve); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = function (context) { var imported = new _map2.default(); return { 'ImportDeclaration': function ImportDeclaration(n) { // resolved path will cover aliased duplicates var resolvedPath = (0, _resolve2.default)(n.source.value, context) || n.source.value; if (imported.has(resolvedPath)) { imported.get(resolvedPath).add(n.source); } else { imported.set(resolvedPath, new _set2.default([n.source])); } }, 'Program:exit': function ProgramExit() { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(imported.entries()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step$value = (0, _slicedToArray3.default)(_step.value, 2); var _module = _step$value[0]; var nodes = _step$value[1]; if (nodes.size > 1) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _getIterator3.default)(nodes), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var node = _step2.value; context.report(node, '\'' + _module + '\' imported multiple times.'); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vLWR1cGxpY2F0ZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsT0FBTyxPQUFQLEdBQWlCLFVBQVUsT0FBVixFQUFtQjtBQUNsQyxNQUFNLFdBQVcsbUJBQVgsQ0FENEI7QUFFbEMsU0FBTztBQUNMLHlCQUFxQiwyQkFBVSxDQUFWLEVBQWE7O0FBRWhDLFVBQUksZUFBZSx1QkFBUSxFQUFFLE1BQUYsQ0FBUyxLQUFULEVBQWdCLE9BQXhCLEtBQW9DLEVBQUUsTUFBRixDQUFTLEtBQVQsQ0FGdkI7O0FBSWhDLFVBQUksU0FBUyxHQUFULENBQWEsWUFBYixDQUFKLEVBQWdDO0FBQzlCLGlCQUFTLEdBQVQsQ0FBYSxZQUFiLEVBQTJCLEdBQTNCLENBQStCLEVBQUUsTUFBRixDQUEvQixDQUQ4QjtPQUFoQyxNQUVPO0FBQ0wsaUJBQVMsR0FBVCxDQUFhLFlBQWIsRUFBMkIsa0JBQVEsQ0FBQyxFQUFFLE1BQUYsQ0FBVCxDQUEzQixFQURLO09BRlA7S0FKbUI7O0FBV3JCLG9CQUFnQix1QkFBWTs7Ozs7O0FBQzFCLHdEQUE0QixTQUFTLE9BQVQsVUFBNUIsb0dBQWdEOzs7Y0FBdEMseUJBQXNDO2NBQTlCLHVCQUE4Qjs7QUFDOUMsY0FBSSxNQUFNLElBQU4sR0FBYSxDQUFiLEVBQWdCOzs7Ozs7QUFDbEIsK0RBQWlCLGNBQWpCLHdHQUF3QjtvQkFBZixvQkFBZTs7QUFDdEIsd0JBQVEsTUFBUixDQUFlLElBQWYsU0FBeUIsdUNBQXpCLEVBRHNCO2VBQXhCOzs7Ozs7Ozs7Ozs7OzthQURrQjtXQUFwQjtTQURGOzs7Ozs7Ozs7Ozs7OztPQUQwQjtLQUFaO0dBWmxCLENBRmtDO0NBQW5CIiwiZmlsZSI6InJ1bGVzL25vLWR1cGxpY2F0ZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVzb2x2ZSBmcm9tICcuLi9jb3JlL3Jlc29sdmUnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgY29uc3QgaW1wb3J0ZWQgPSBuZXcgTWFwKClcbiAgcmV0dXJuIHtcbiAgICAnSW1wb3J0RGVjbGFyYXRpb24nOiBmdW5jdGlvbiAobikge1xuICAgICAgLy8gcmVzb2x2ZWQgcGF0aCB3aWxsIGNvdmVyIGFsaWFzZWQgZHVwbGljYXRlc1xuICAgICAgbGV0IHJlc29sdmVkUGF0aCA9IHJlc29sdmUobi5zb3VyY2UudmFsdWUsIGNvbnRleHQpIHx8IG4uc291cmNlLnZhbHVlXG5cbiAgICAgIGlmIChpbXBvcnRlZC5oYXMocmVzb2x2ZWRQYXRoKSkge1xuICAgICAgICBpbXBvcnRlZC5nZXQocmVzb2x2ZWRQYXRoKS5hZGQobi5zb3VyY2UpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbXBvcnRlZC5zZXQocmVzb2x2ZWRQYXRoLCBuZXcgU2V0KFtuLnNvdXJjZV0pKVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAnUHJvZ3JhbTpleGl0JzogZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChsZXQgW21vZHVsZSwgbm9kZXNdIG9mIGltcG9ydGVkLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAobm9kZXMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydChub2RlLCBgJyR7bW9kdWxlfScgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMuYClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iXX0=