123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- const schema = [];
- const breakLineMessage = (direction) => `New line required ${direction} type declaration`;
- const create = (context) => ({
- TypeAlias(node) {
- const sourceCode = context.getSourceCode();
- if (sourceCode.lines.length === 1) {
- return;
- }
- const exportedType = node.parent.type === 'ExportNamedDeclaration';
- const leadingComments = sourceCode.getCommentsBefore(exportedType ? node.parent : node);
- const hasLeadingComments = leadingComments.length > 0;
- if (node.loc.start.line !== 1) {
- if (hasLeadingComments && leadingComments[0].loc.start.line !== 1) {
- const lineAboveComment = sourceCode.lines[leadingComments[0].loc.start.line - 2];
- if (lineAboveComment !== '') {
- context.report({
- fix(fixer) {
- return fixer.insertTextBeforeRange(leadingComments[0].range, '\n');
- },
- message: breakLineMessage('above'),
- node,
- });
- }
- } else if (!hasLeadingComments) {
- const isLineAbove = sourceCode.lines[node.loc.start.line - 2];
- if (isLineAbove !== '') {
- context.report({
- fix(fixer) {
- return fixer.insertTextBefore(
- exportedType ? node.parent : node,
- '\n',
- );
- },
- message: breakLineMessage('above'),
- node,
- });
- }
- }
- }
- if (sourceCode.lines.length !== node.loc.end.line) {
- const isLineBelow = sourceCode.lines[node.loc.end.line];
- if (isLineBelow !== '') {
- context.report({
- fix(fixer) {
- return fixer.insertTextAfter(node, '\n');
- },
- message: breakLineMessage('below'),
- node,
- });
- }
- }
- },
- });
- export default {
- create,
- meta: {
- fixable: 'code',
- },
- schema,
- };
|