canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.
38 lines (29 loc) • 3.35 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 checkDefault(specifierType, node) {
// poor man's Array.find
var defaultSpecifier = undefined;
node.specifiers.some(function (n) {
if (n.type === specifierType) {
defaultSpecifier = n;
return true;
}
});
if (!defaultSpecifier) return;
var imports = _getExports2.default.get(node.source.value, context);
if (imports == null) return;
if (imports.errors.length) {
imports.reportErrors(context, node);
} else if (!imports.hasDefault) {
context.report(defaultSpecifier, 'No default export found in module.');
}
}
return {
'ImportDeclaration': checkDefault.bind(null, 'ImportDefaultSpecifier'),
'ExportNamedDeclaration': checkDefault.bind(null, 'ExportDefaultSpecifier')
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL2RlZmF1bHQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSxPQUFPLE9BQVAsR0FBaUIsVUFBVSxPQUFWLEVBQW1COztBQUVsQyxXQUFTLFlBQVQsQ0FBc0IsYUFBdEIsRUFBcUMsSUFBckMsRUFBMkM7OztBQUd6QyxRQUFJLDRCQUFKLENBSHlDO0FBSXpDLFNBQUssVUFBTCxDQUFnQixJQUFoQixDQUFxQixVQUFDLENBQUQsRUFBTztBQUMxQixVQUFJLEVBQUUsSUFBRixLQUFXLGFBQVgsRUFBMEI7QUFDNUIsMkJBQW1CLENBQW5CLENBRDRCO0FBRTVCLGVBQU8sSUFBUCxDQUY0QjtPQUE5QjtLQURtQixDQUFyQixDQUp5Qzs7QUFXekMsUUFBSSxDQUFDLGdCQUFELEVBQW1CLE9BQXZCO0FBQ0EsUUFBSSxVQUFVLHFCQUFRLEdBQVIsQ0FBWSxLQUFLLE1BQUwsQ0FBWSxLQUFaLEVBQW1CLE9BQS9CLENBQVYsQ0FacUM7QUFhekMsUUFBSSxXQUFXLElBQVgsRUFBaUIsT0FBckI7O0FBRUEsUUFBSSxRQUFRLE1BQVIsQ0FBZSxNQUFmLEVBQXVCO0FBQ3pCLGNBQVEsWUFBUixDQUFxQixPQUFyQixFQUE4QixJQUE5QixFQUR5QjtLQUEzQixNQUVPLElBQUksQ0FBQyxRQUFRLFVBQVIsRUFBb0I7QUFDOUIsY0FBUSxNQUFSLENBQWUsZ0JBQWYsRUFBaUMsb0NBQWpDLEVBRDhCO0tBQXpCO0dBakJUOztBQXNCQSxTQUFPO0FBQ0wseUJBQXFCLGFBQWEsSUFBYixDQUFrQixJQUFsQixFQUF3Qix3QkFBeEIsQ0FBckI7QUFDQSw4QkFBMEIsYUFBYSxJQUFiLENBQWtCLElBQWxCLEVBQXdCLHdCQUF4QixDQUExQjtHQUZGLENBeEJrQztDQUFuQiIsImZpbGUiOiJydWxlcy9kZWZhdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4cG9ydHMgZnJvbSAnLi4vY29yZS9nZXRFeHBvcnRzJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG5cbiAgZnVuY3Rpb24gY2hlY2tEZWZhdWx0KHNwZWNpZmllclR5cGUsIG5vZGUpIHtcblxuICAgIC8vIHBvb3IgbWFuJ3MgQXJyYXkuZmluZFxuICAgIGxldCBkZWZhdWx0U3BlY2lmaWVyXG4gICAgbm9kZS5zcGVjaWZpZXJzLnNvbWUoKG4pID0+IHtcbiAgICAgIGlmIChuLnR5cGUgPT09IHNwZWNpZmllclR5cGUpIHtcbiAgICAgICAgZGVmYXVsdFNwZWNpZmllciA9IG5cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKCFkZWZhdWx0U3BlY2lmaWVyKSByZXR1cm5cbiAgICB2YXIgaW1wb3J0cyA9IEV4cG9ydHMuZ2V0KG5vZGUuc291cmNlLnZhbHVlLCBjb250ZXh0KVxuICAgIGlmIChpbXBvcnRzID09IG51bGwpIHJldHVyblxuXG4gICAgaWYgKGltcG9ydHMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgbm9kZSlcbiAgICB9IGVsc2UgaWYgKCFpbXBvcnRzLmhhc0RlZmF1bHQpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0KGRlZmF1bHRTcGVjaWZpZXIsICdObyBkZWZhdWx0IGV4cG9ydCBmb3VuZCBpbiBtb2R1bGUuJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgICdJbXBvcnREZWNsYXJhdGlvbic6IGNoZWNrRGVmYXVsdC5iaW5kKG51bGwsICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJyksXG4gICAgJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nOiBjaGVja0RlZmF1bHQuYmluZChudWxsLCAnRXhwb3J0RGVmYXVsdFNwZWNpZmllcicpLFxuICB9XG59XG4iXX0=