eslint-plugin-i
Version:
A fork of `eslint-plugin-import` using `get-tsconfig` to replace `tsconfig-paths` and heavy `typescript` under the hood.
49 lines (40 loc) • 4.9 kB
JavaScript
;var _docsUrl = require('../docsUrl');var _docsUrl2 = _interopRequireDefault(_docsUrl);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}
var findLastIndex = function findLastIndex(array, predicate) {
var i = array.length - 1;
while (i >= 0) {
if (predicate(array[i])) {
return i;
}
i--;
}
return -1;
};
function isNonExportStatement(_ref) {var type = _ref.type;
return type !== 'ExportDefaultDeclaration' &&
type !== 'ExportNamedDeclaration' &&
type !== 'ExportAllDeclaration';
}
module.exports = {
meta: {
type: 'suggestion',
docs: {
category: 'Style guide',
description: 'Ensure all exports appear after other statements.',
url: (0, _docsUrl2['default'])('exports-last') },
schema: [] },
create: function () {function create(context) {
return {
Program: function () {function Program(_ref2) {var body = _ref2.body;
var lastNonExportStatementIndex = findLastIndex(body, isNonExportStatement);
if (lastNonExportStatementIndex !== -1) {
body.slice(0, lastNonExportStatementIndex).forEach(function (node) {
if (!isNonExportStatement(node)) {
context.report({
node: node,
message: 'Export statements should appear at the end of the file' });
}
});
}
}return Program;}() };
}return create;}() };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9leHBvcnRzLWxhc3QuanMiXSwibmFtZXMiOlsiZmluZExhc3RJbmRleCIsImFycmF5IiwicHJlZGljYXRlIiwiaSIsImxlbmd0aCIsImlzTm9uRXhwb3J0U3RhdGVtZW50IiwidHlwZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwiZG9jcyIsImNhdGVnb3J5IiwiZGVzY3JpcHRpb24iLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0IiwiUHJvZ3JhbSIsImJvZHkiLCJsYXN0Tm9uRXhwb3J0U3RhdGVtZW50SW5kZXgiLCJzbGljZSIsImZvckVhY2giLCJub2RlIiwicmVwb3J0IiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6ImFBQUEscUM7O0FBRUEsSUFBTUEsZ0JBQWdCLFNBQWhCQSxhQUFnQixDQUFDQyxLQUFELEVBQVFDLFNBQVIsRUFBc0I7QUFDMUMsTUFBSUMsSUFBSUYsTUFBTUcsTUFBTixHQUFlLENBQXZCO0FBQ0EsU0FBT0QsS0FBSyxDQUFaLEVBQWU7QUFDYixRQUFJRCxVQUFVRCxNQUFNRSxDQUFOLENBQVYsQ0FBSixFQUF5QjtBQUN2QixhQUFPQSxDQUFQO0FBQ0Q7QUFDREE7QUFDRDtBQUNELFNBQU8sQ0FBQyxDQUFSO0FBQ0QsQ0FURDs7QUFXQSxTQUFTRSxvQkFBVCxPQUF3QyxLQUFSQyxJQUFRLFFBQVJBLElBQVE7QUFDdEMsU0FBT0EsU0FBUywwQkFBVDtBQUNGQSxXQUFTLHdCQURQO0FBRUZBLFdBQVMsc0JBRmQ7QUFHRDs7QUFFREMsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pILFVBQU0sWUFERjtBQUVKSSxVQUFNO0FBQ0pDLGdCQUFVLGFBRE47QUFFSkMsbUJBQWEsbURBRlQ7QUFHSkMsV0FBSywwQkFBUSxjQUFSLENBSEQsRUFGRjs7QUFPSkMsWUFBUSxFQVBKLEVBRFM7OztBQVdmQyxRQVhlLCtCQVdSQyxPQVhRLEVBV0M7QUFDZCxhQUFPO0FBQ0xDLGVBREssdUNBQ2EsS0FBUkMsSUFBUSxTQUFSQSxJQUFRO0FBQ2hCLGdCQUFNQyw4QkFBOEJuQixjQUFja0IsSUFBZCxFQUFvQmIsb0JBQXBCLENBQXBDOztBQUVBLGdCQUFJYyxnQ0FBZ0MsQ0FBQyxDQUFyQyxFQUF3QztBQUN0Q0QsbUJBQUtFLEtBQUwsQ0FBVyxDQUFYLEVBQWNELDJCQUFkLEVBQTJDRSxPQUEzQyxDQUFtRCxVQUFDQyxJQUFELEVBQVU7QUFDM0Qsb0JBQUksQ0FBQ2pCLHFCQUFxQmlCLElBQXJCLENBQUwsRUFBaUM7QUFDL0JOLDBCQUFRTyxNQUFSLENBQWU7QUFDYkQsOEJBRGE7QUFFYkUsNkJBQVMsd0RBRkksRUFBZjs7QUFJRDtBQUNGLGVBUEQ7QUFRRDtBQUNGLFdBZEksb0JBQVA7O0FBZ0JELEtBNUJjLG1CQUFqQiIsImZpbGUiOiJleHBvcnRzLWxhc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJztcblxuY29uc3QgZmluZExhc3RJbmRleCA9IChhcnJheSwgcHJlZGljYXRlKSA9PiB7XG4gIGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTtcbiAgd2hpbGUgKGkgPj0gMCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaV0pKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgaS0tO1xuICB9XG4gIHJldHVybiAtMTtcbn07XG5cbmZ1bmN0aW9uIGlzTm9uRXhwb3J0U3RhdGVtZW50KHsgdHlwZSB9KSB7XG4gIHJldHVybiB0eXBlICE9PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJ1xuICAgICYmIHR5cGUgIT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJ1xuICAgICYmIHR5cGUgIT09ICdFeHBvcnRBbGxEZWNsYXJhdGlvbic7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIGNhdGVnb3J5OiAnU3R5bGUgZ3VpZGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdFbnN1cmUgYWxsIGV4cG9ydHMgYXBwZWFyIGFmdGVyIG90aGVyIHN0YXRlbWVudHMuJyxcbiAgICAgIHVybDogZG9jc1VybCgnZXhwb3J0cy1sYXN0JyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFByb2dyYW0oeyBib2R5IH0pIHtcbiAgICAgICAgY29uc3QgbGFzdE5vbkV4cG9ydFN0YXRlbWVudEluZGV4ID0gZmluZExhc3RJbmRleChib2R5LCBpc05vbkV4cG9ydFN0YXRlbWVudCk7XG5cbiAgICAgICAgaWYgKGxhc3ROb25FeHBvcnRTdGF0ZW1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBib2R5LnNsaWNlKDAsIGxhc3ROb25FeHBvcnRTdGF0ZW1lbnRJbmRleCkuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc05vbkV4cG9ydFN0YXRlbWVudChub2RlKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnRXhwb3J0IHN0YXRlbWVudHMgc2hvdWxkIGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn07XG4iXX0=