eslint-plugin-ft-flow
Version:
Flowtype linting rules for ESLint by flow-typed
79 lines (68 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var schema = [];
var breakLineMessage = function breakLineMessage(direction) {
return "New line required ".concat(direction, " type declaration");
};
var create = function create(context) {
return {
TypeAlias: function TypeAlias(node) {
var sourceCode = context.getSourceCode();
if (sourceCode.lines.length === 1) {
return;
}
var exportedType = node.parent.type === 'ExportNamedDeclaration';
var leadingComments = sourceCode.getCommentsBefore(exportedType ? node.parent : node);
var hasLeadingComments = leadingComments.length > 0;
if (node.loc.start.line !== 1) {
if (hasLeadingComments && leadingComments[0].loc.start.line !== 1) {
var lineAboveComment = sourceCode.lines[leadingComments[0].loc.start.line - 2];
if (lineAboveComment !== '') {
context.report({
fix: function fix(fixer) {
return fixer.insertTextBeforeRange(leadingComments[0].range, '\n');
},
message: breakLineMessage('above'),
node: node
});
}
} else if (!hasLeadingComments) {
var isLineAbove = sourceCode.lines[node.loc.start.line - 2];
if (isLineAbove !== '') {
context.report({
fix: function fix(fixer) {
return fixer.insertTextBefore(exportedType ? node.parent : node, '\n');
},
message: breakLineMessage('above'),
node: node
});
}
}
}
if (sourceCode.lines.length !== node.loc.end.line) {
var isLineBelow = sourceCode.lines[node.loc.end.line];
if (isLineBelow !== '') {
context.report({
fix: function fix(fixer) {
return fixer.insertTextAfter(node, '\n');
},
message: breakLineMessage('below'),
node: node
});
}
}
}
};
};
var _default = {
create: create,
meta: {
fixable: 'code',
schema: schema
}
};
exports["default"] = _default;
module.exports = exports.default;