-
-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathindex.js
57 lines (51 loc) · 1.71 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
* @fileoverview CSS plugin.
* @author Nicholas C. Zakas
*/
//-----------------------------------------------------------------------------
// Imports
//-----------------------------------------------------------------------------
import { CSSLanguage } from "./languages/css-language.js";
import { CSSSourceCode } from "./languages/css-source-code.js";
import noEmptyBlocks from "./rules/no-empty-blocks.js";
import noDuplicateImports from "./rules/no-duplicate-imports.js";
import noInvalidProperties from "./rules/no-invalid-properties.js";
import noInvalidAtRules from "./rules/no-invalid-at-rules.js";
import noImportant from "./rules/no-important.js";
//-----------------------------------------------------------------------------
// Plugin
//-----------------------------------------------------------------------------
const plugin = {
meta: {
name: "@eslint/css",
version: "0.1.0", // x-release-please-version
},
languages: {
css: new CSSLanguage(),
},
rules: {
"no-empty-blocks": noEmptyBlocks,
"no-duplicate-imports": noDuplicateImports,
"no-important": noImportant,
"no-invalid-at-rules": noInvalidAtRules,
"no-invalid-properties": noInvalidProperties,
},
configs: {
recommended: {
plugins: {},
rules: /** @type {const} */ ({
"css/no-empty-blocks": "error",
"css/no-duplicate-imports": "error",
"css/no-important": "error",
"css/no-invalid-at-rules": "error",
"css/no-invalid-properties": "error",
}),
},
},
};
// eslint-disable-next-line no-lone-blocks -- The block syntax { ... } ensures that TypeScript does not get confused about the type of `plugin`.
{
plugin.configs.recommended.plugins.css = plugin;
}
export default plugin;
export { CSSLanguage, CSSSourceCode };