UNPKG

1.06 kBJavaScriptView Raw
1// @ts-nocheck
2
3'use strict';
4
5const report = require('../../utils/report');
6const ruleMessages = require('../../utils/ruleMessages');
7const validateOptions = require('../../utils/validateOptions');
8
9const ruleName = 'no-empty-first-line';
10const noEmptyFirstLineTest = /^\s*[\r\n]/;
11
12const messages = ruleMessages(ruleName, {
13 rejected: 'Unexpected empty line',
14});
15
16function rule(actual, _, context) {
17 return (root, result) => {
18 const validOptions = validateOptions(result, ruleName, { actual });
19
20 if (!validOptions || root.source.inline || root.source.lang === 'object-literal') {
21 return;
22 }
23
24 const rootString = context.fix ? root.toString() : root.source.input.css;
25
26 if (!rootString.trim()) {
27 return;
28 }
29
30 if (noEmptyFirstLineTest.test(rootString)) {
31 if (context.fix) {
32 root.nodes[0].raws.before = root.first.raws.before.trimStart();
33
34 return;
35 }
36
37 report({
38 message: messages.rejected,
39 node: root,
40 result,
41 ruleName,
42 });
43 }
44 };
45}
46
47rule.ruleName = ruleName;
48rule.messages = messages;
49module.exports = rule;