@master/eslint-plugin-css 2.0.0-rc.26 → 2.0.0-rc.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/create-rule.cjs +2 -1
- package/dist/create-rule.mjs +2 -1
- package/dist/functions/get-css.cjs +5 -2
- package/dist/functions/get-css.mjs +5 -2
- package/dist/functions/reorder-valid-classes.worker.cjs +1 -3
- package/dist/functions/reorder-valid-classes.worker.mjs +1 -3
- package/dist/index.cjs +26 -4
- package/dist/index.d.ts +18 -16
- package/dist/index.mjs +26 -4
- package/dist/utils/parse-node-recursive.cjs +12 -4
- package/dist/utils/parse-node-recursive.mjs +12 -4
- package/package.json +1 -1
- package/dist/configs/config.cjs +0 -16
- package/dist/configs/config.d.ts +0 -13
- package/dist/configs/config.mjs +0 -14
- package/dist/configs/flat.cjs +0 -13
- package/dist/configs/flat.d.ts +0 -25
- package/dist/configs/flat.mjs +0 -11
- package/dist/configs/recommended.cjs +0 -12
- package/dist/configs/recommended.d.ts +0 -14
- package/dist/configs/recommended.mjs +0 -10
package/dist/create-rule.cjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var css = require('@master/css');
|
|
3
4
|
var utils = require('@typescript-eslint/utils');
|
|
4
5
|
|
|
5
|
-
var createRule = utils.ESLintUtils.RuleCreator((name)=>
|
|
6
|
+
var createRule = utils.ESLintUtils.RuleCreator((name)=>new URL(`/docs/code-linting#${name}`, css.OFFICIAL_URL).href);
|
|
6
7
|
|
|
7
8
|
module.exports = createRule;
|
package/dist/create-rule.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { OFFICIAL_URL } from '@master/css';
|
|
1
2
|
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
3
|
|
|
3
|
-
var createRule = ESLintUtils.RuleCreator((name)=>
|
|
4
|
+
var createRule = ESLintUtils.RuleCreator((name)=>new URL(`/docs/code-linting#${name}`, OFFICIAL_URL).href);
|
|
4
5
|
|
|
5
6
|
export { createRule as default };
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var css = require('@master/css');
|
|
4
|
-
var exploreConfig = require('explore-config');
|
|
4
|
+
var exploreConfig = require('@master/css-explore-config');
|
|
5
5
|
|
|
6
6
|
let currentCSS;
|
|
7
7
|
let currentConfig;
|
|
8
8
|
function getCSS(config) {
|
|
9
9
|
if (!currentCSS || currentConfig !== config) {
|
|
10
|
-
currentCSS = new css.MasterCSS(typeof config === 'object' ? config : exploreConfig(
|
|
10
|
+
currentCSS = new css.MasterCSS(typeof config === 'object' ? config : exploreConfig({
|
|
11
|
+
name: config,
|
|
12
|
+
found: undefined
|
|
13
|
+
}));
|
|
11
14
|
currentConfig = config;
|
|
12
15
|
}
|
|
13
16
|
return currentCSS;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { MasterCSS } from '@master/css';
|
|
2
|
-
import exploreConfig from 'explore-config';
|
|
2
|
+
import exploreConfig from '@master/css-explore-config';
|
|
3
3
|
|
|
4
4
|
let currentCSS;
|
|
5
5
|
let currentConfig;
|
|
6
6
|
function getCSS(config) {
|
|
7
7
|
if (!currentCSS || currentConfig !== config) {
|
|
8
|
-
currentCSS = new MasterCSS(typeof config === 'object' ? config : exploreConfig(
|
|
8
|
+
currentCSS = new MasterCSS(typeof config === 'object' ? config : exploreConfig({
|
|
9
|
+
name: config,
|
|
10
|
+
found: undefined
|
|
11
|
+
}));
|
|
9
12
|
currentConfig = config;
|
|
10
13
|
}
|
|
11
14
|
return currentCSS;
|
|
@@ -6,9 +6,7 @@ var getCss = require('./get-css.cjs');
|
|
|
6
6
|
|
|
7
7
|
function runReorderValidClasses(classNames, config) {
|
|
8
8
|
const currentCSS = getCss(config);
|
|
9
|
-
return css.reorderForReadableClasses(classNames,
|
|
10
|
-
css: currentCSS
|
|
11
|
-
}).filter((eachOrderedClassName)=>classNames.includes(eachOrderedClassName));
|
|
9
|
+
return css.reorderForReadableClasses(classNames, currentCSS).filter((eachOrderedClassName)=>classNames.includes(eachOrderedClassName));
|
|
12
10
|
}
|
|
13
11
|
synckit.runAsWorker(runReorderValidClasses);
|
|
14
12
|
|
|
@@ -4,9 +4,7 @@ import getCSS from './get-css.mjs';
|
|
|
4
4
|
|
|
5
5
|
function runReorderValidClasses(classNames, config) {
|
|
6
6
|
const currentCSS = getCSS(config);
|
|
7
|
-
return reorderForReadableClasses(classNames,
|
|
8
|
-
css: currentCSS
|
|
9
|
-
}).filter((eachOrderedClassName)=>classNames.includes(eachOrderedClassName));
|
|
7
|
+
return reorderForReadableClasses(classNames, currentCSS).filter((eachOrderedClassName)=>classNames.includes(eachOrderedClassName));
|
|
10
8
|
}
|
|
11
9
|
runAsWorker(runReorderValidClasses);
|
|
12
10
|
|
package/dist/index.cjs
CHANGED
|
@@ -2,14 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
var plugin = require('./plugin.cjs');
|
|
4
4
|
var settings = require('./settings.cjs');
|
|
5
|
-
var recommended = require('./configs/recommended.cjs');
|
|
6
|
-
var flat = require('./configs/flat.cjs');
|
|
7
5
|
|
|
6
|
+
const parserOptions = {
|
|
7
|
+
ecmaFeatures: {
|
|
8
|
+
jsx: true
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
const rules = {
|
|
12
|
+
'@master/css/class-order': 'warn',
|
|
13
|
+
'@master/css/class-validation': 'error',
|
|
14
|
+
'@master/css/class-collision': 'warn'
|
|
15
|
+
};
|
|
8
16
|
/** @type {import('typescript-eslint').Config} */ var index = {
|
|
9
17
|
...plugin,
|
|
10
18
|
configs: {
|
|
11
|
-
recommended
|
|
12
|
-
|
|
19
|
+
recommended: {
|
|
20
|
+
plugins: [
|
|
21
|
+
'@master/css'
|
|
22
|
+
],
|
|
23
|
+
rules,
|
|
24
|
+
parserOptions
|
|
25
|
+
},
|
|
26
|
+
flat: {
|
|
27
|
+
plugins: {
|
|
28
|
+
'@master/css': plugin
|
|
29
|
+
},
|
|
30
|
+
rules,
|
|
31
|
+
languageOptions: {
|
|
32
|
+
parserOptions
|
|
33
|
+
}
|
|
34
|
+
}
|
|
13
35
|
},
|
|
14
36
|
settings
|
|
15
37
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -2,29 +2,19 @@
|
|
|
2
2
|
declare const _default: {
|
|
3
3
|
configs: {
|
|
4
4
|
recommended: {
|
|
5
|
+
plugins: string[];
|
|
5
6
|
rules: {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
'@master/css/class-order': string;
|
|
8
|
+
'@master/css/class-validation': string;
|
|
9
|
+
'@master/css/class-collision': string;
|
|
9
10
|
};
|
|
10
11
|
parserOptions: {
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
ecmaFeatures: {
|
|
13
|
+
jsx: boolean;
|
|
13
14
|
};
|
|
14
15
|
};
|
|
15
|
-
plugins: string[];
|
|
16
16
|
};
|
|
17
17
|
flat: {
|
|
18
|
-
rules: {
|
|
19
|
-
readonly '@master/css/class-order': "warn";
|
|
20
|
-
readonly '@master/css/class-validation': "error";
|
|
21
|
-
readonly '@master/css/class-collision': "warn";
|
|
22
|
-
};
|
|
23
|
-
parserOptions: {
|
|
24
|
-
readonly ecmaFeatures: {
|
|
25
|
-
readonly jsx: true;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
18
|
plugins: {
|
|
29
19
|
'@master/css': {
|
|
30
20
|
meta: {
|
|
@@ -37,6 +27,18 @@ declare const _default: {
|
|
|
37
27
|
};
|
|
38
28
|
};
|
|
39
29
|
};
|
|
30
|
+
rules: {
|
|
31
|
+
'@master/css/class-order': string;
|
|
32
|
+
'@master/css/class-validation': string;
|
|
33
|
+
'@master/css/class-collision': string;
|
|
34
|
+
};
|
|
35
|
+
languageOptions: {
|
|
36
|
+
parserOptions: {
|
|
37
|
+
ecmaFeatures: {
|
|
38
|
+
jsx: boolean;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
40
42
|
};
|
|
41
43
|
};
|
|
42
44
|
settings: {
|
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,35 @@
|
|
|
1
1
|
import plugin from './plugin.mjs';
|
|
2
2
|
import settings from './settings.mjs';
|
|
3
|
-
import recommended from './configs/recommended.mjs';
|
|
4
|
-
import flat from './configs/flat.mjs';
|
|
5
3
|
|
|
4
|
+
const parserOptions = {
|
|
5
|
+
ecmaFeatures: {
|
|
6
|
+
jsx: true
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
const rules = {
|
|
10
|
+
'@master/css/class-order': 'warn',
|
|
11
|
+
'@master/css/class-validation': 'error',
|
|
12
|
+
'@master/css/class-collision': 'warn'
|
|
13
|
+
};
|
|
6
14
|
/** @type {import('typescript-eslint').Config} */ var index = {
|
|
7
15
|
...plugin,
|
|
8
16
|
configs: {
|
|
9
|
-
recommended
|
|
10
|
-
|
|
17
|
+
recommended: {
|
|
18
|
+
plugins: [
|
|
19
|
+
'@master/css'
|
|
20
|
+
],
|
|
21
|
+
rules,
|
|
22
|
+
parserOptions
|
|
23
|
+
},
|
|
24
|
+
flat: {
|
|
25
|
+
plugins: {
|
|
26
|
+
'@master/css': plugin
|
|
27
|
+
},
|
|
28
|
+
rules,
|
|
29
|
+
languageOptions: {
|
|
30
|
+
parserOptions
|
|
31
|
+
}
|
|
32
|
+
}
|
|
11
33
|
},
|
|
12
34
|
settings
|
|
13
35
|
};
|
|
@@ -48,15 +48,20 @@ var extractRangeFromNode = require('./extract-range-from-node.cjs');
|
|
|
48
48
|
return;
|
|
49
49
|
} else {
|
|
50
50
|
const forceIsolation = skipConditional ? true : isolate;
|
|
51
|
+
let expStrings = [];
|
|
51
52
|
switch(childNode.type){
|
|
52
53
|
case 'TemplateLiteral':
|
|
53
54
|
childNode.expressions.forEach((exp)=>{
|
|
54
55
|
parseNodeRecursive(rootNode, exp, cb, skipConditional, forceIsolation, ignoredKeys);
|
|
55
56
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
const sourceCode = context.sourceCode;
|
|
58
|
+
originalClassNamesValue = sourceCode.getText(childNode);
|
|
59
|
+
originalClassNamesValue = originalClassNamesValue.substring(1, originalClassNamesValue.length - 1);
|
|
60
|
+
expStrings = originalClassNamesValue.match(/\$\{(?:(?<!\\\\)(['"`]).*?(?<!\\\\)\1|[^}])*?\}/g) ?? [];
|
|
61
|
+
for(let i = 0; i < expStrings.length; i++){
|
|
62
|
+
originalClassNamesValue = originalClassNamesValue.replace(expStrings[i], `EXPRESSION_STRING_NUM_${i}`);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
60
65
|
case 'ConditionalExpression':
|
|
61
66
|
parseNodeRecursive(rootNode, childNode.consequent, cb, skipConditional, forceIsolation, ignoredKeys);
|
|
62
67
|
parseNodeRecursive(rootNode, childNode.alternate, cb, skipConditional, forceIsolation, ignoredKeys);
|
|
@@ -106,6 +111,9 @@ var extractRangeFromNode = require('./extract-range-from-node.cjs');
|
|
|
106
111
|
suffix = getTemplateElementSuffix(txt, originalClassNamesValue);
|
|
107
112
|
break;
|
|
108
113
|
}
|
|
114
|
+
for(let i = 0; i < expStrings.length; i++){
|
|
115
|
+
originalClassNamesValue = originalClassNamesValue.replace(`EXPRESSION_STRING_NUM_${i}`, expStrings[i]);
|
|
116
|
+
}
|
|
109
117
|
({ classNames } = extractClassnamesFromValue(originalClassNamesValue));
|
|
110
118
|
classNames = [
|
|
111
119
|
...new Set(classNames)
|
|
@@ -46,15 +46,20 @@ import extractRangeFromNode from './extract-range-from-node.mjs';
|
|
|
46
46
|
return;
|
|
47
47
|
} else {
|
|
48
48
|
const forceIsolation = skipConditional ? true : isolate;
|
|
49
|
+
let expStrings = [];
|
|
49
50
|
switch(childNode.type){
|
|
50
51
|
case 'TemplateLiteral':
|
|
51
52
|
childNode.expressions.forEach((exp)=>{
|
|
52
53
|
parseNodeRecursive(rootNode, exp, cb, skipConditional, forceIsolation, ignoredKeys);
|
|
53
54
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
const sourceCode = context.sourceCode;
|
|
56
|
+
originalClassNamesValue = sourceCode.getText(childNode);
|
|
57
|
+
originalClassNamesValue = originalClassNamesValue.substring(1, originalClassNamesValue.length - 1);
|
|
58
|
+
expStrings = originalClassNamesValue.match(/\$\{(?:(?<!\\\\)(['"`]).*?(?<!\\\\)\1|[^}])*?\}/g) ?? [];
|
|
59
|
+
for(let i = 0; i < expStrings.length; i++){
|
|
60
|
+
originalClassNamesValue = originalClassNamesValue.replace(expStrings[i], `EXPRESSION_STRING_NUM_${i}`);
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
58
63
|
case 'ConditionalExpression':
|
|
59
64
|
parseNodeRecursive(rootNode, childNode.consequent, cb, skipConditional, forceIsolation, ignoredKeys);
|
|
60
65
|
parseNodeRecursive(rootNode, childNode.alternate, cb, skipConditional, forceIsolation, ignoredKeys);
|
|
@@ -104,6 +109,9 @@ import extractRangeFromNode from './extract-range-from-node.mjs';
|
|
|
104
109
|
suffix = getTemplateElementSuffix(txt, originalClassNamesValue);
|
|
105
110
|
break;
|
|
106
111
|
}
|
|
112
|
+
for(let i = 0; i < expStrings.length; i++){
|
|
113
|
+
originalClassNamesValue = originalClassNamesValue.replace(`EXPRESSION_STRING_NUM_${i}`, expStrings[i]);
|
|
114
|
+
}
|
|
107
115
|
({ classNames } = extractClassnamesFromValue(originalClassNamesValue));
|
|
108
116
|
classNames = [
|
|
109
117
|
...new Set(classNames)
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@master/eslint-plugin-css","type":"module","scripts":{"build":"techor build \"src/**/*.{js,ts}\"","dev":"pnpm build --watch","test":"jest","type-check":"tsc --noEmit","lint":"eslint src"},"keywords":["mastercss","eslint","eslintplugin"],"license":"MIT","description":"Master CSS ESLint Plugin","author":"Aoyue Design LLC.","funding":"https://css.master.co/docs/donate","homepage":"https://css.master.co","bugs":{"url":"https://github.com/master-co/css/issues"},"repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/eslint-plugin"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs","types":"./dist/index.d.ts"}},"files":["dist"],"publishConfig":{"access":"public","provenance":true},"dependencies":{"@master/css":"^2.0.0-rc.
|
|
1
|
+
{"name":"@master/eslint-plugin-css","type":"module","scripts":{"build":"techor build \"src/**/*.{js,ts}\"","dev":"pnpm build --watch","test":"jest","type-check":"tsc --noEmit","lint":"eslint src"},"keywords":["mastercss","eslint","eslintplugin"],"license":"MIT","description":"Master CSS ESLint Plugin","author":"Aoyue Design LLC.","funding":"https://css.master.co/docs/donate","homepage":"https://css.master.co","bugs":{"url":"https://github.com/master-co/css/issues"},"repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/eslint-plugin"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs","types":"./dist/index.d.ts"}},"files":["dist"],"publishConfig":{"access":"public","provenance":true},"dependencies":{"@master/css":"^2.0.0-rc.27","@master/css-explore-config":"^2.0.0-rc.27","@master/css-validator":"^2.0.0-rc.27","@typescript-eslint/utils":"^7.7.0","synckit":"^0.9.0","typescript-eslint":"^7.7.0"},"devDependencies":{"@angular-eslint/template-parser":"^17.3.0","@master/css-explore-config":"^2.0.0-rc.27","@master/css-shared":"^2.0.0-rc.27","@types/node":"^20.12.7","@typescript-eslint/rule-tester":"^7.7.0","eslint":"^8.57.0","eslint-plugin-markdown":"^4.0.1","eslint-plugin-mdx":"^3.1.5","svelte-eslint-parser":"^0.34.1","ts-node":"^10.9.2","vue-eslint-parser":"^9.4.2"},"version":"2.0.0-rc.27"}
|
package/dist/configs/config.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const config = {
|
|
4
|
-
rules: {
|
|
5
|
-
'@master/css/class-order': 'warn',
|
|
6
|
-
'@master/css/class-validation': 'error',
|
|
7
|
-
'@master/css/class-collision': 'warn'
|
|
8
|
-
},
|
|
9
|
-
parserOptions: {
|
|
10
|
-
ecmaFeatures: {
|
|
11
|
-
jsx: true
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
module.exports = config;
|
package/dist/configs/config.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
declare const config: {
|
|
2
|
-
readonly rules: {
|
|
3
|
-
readonly '@master/css/class-order': "warn";
|
|
4
|
-
readonly '@master/css/class-validation': "error";
|
|
5
|
-
readonly '@master/css/class-collision': "warn";
|
|
6
|
-
};
|
|
7
|
-
readonly parserOptions: {
|
|
8
|
-
readonly ecmaFeatures: {
|
|
9
|
-
readonly jsx: true;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
export default config;
|
package/dist/configs/config.mjs
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const config = {
|
|
2
|
-
rules: {
|
|
3
|
-
'@master/css/class-order': 'warn',
|
|
4
|
-
'@master/css/class-validation': 'error',
|
|
5
|
-
'@master/css/class-collision': 'warn'
|
|
6
|
-
},
|
|
7
|
-
parserOptions: {
|
|
8
|
-
ecmaFeatures: {
|
|
9
|
-
jsx: true
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export { config as default };
|
package/dist/configs/flat.cjs
DELETED
package/dist/configs/flat.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
rules: {
|
|
3
|
-
readonly '@master/css/class-order': "warn";
|
|
4
|
-
readonly '@master/css/class-validation': "error";
|
|
5
|
-
readonly '@master/css/class-collision': "warn";
|
|
6
|
-
};
|
|
7
|
-
parserOptions: {
|
|
8
|
-
readonly ecmaFeatures: {
|
|
9
|
-
readonly jsx: true;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
plugins: {
|
|
13
|
-
'@master/css': {
|
|
14
|
-
meta: {
|
|
15
|
-
name: string;
|
|
16
|
-
};
|
|
17
|
-
rules: {
|
|
18
|
-
'class-collision': import("@typescript-eslint/utils/ts-eslint").RuleModule<"collisionClass", [], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
19
|
-
'class-order': import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidClassOrder", [], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
20
|
-
'class-validation': import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidClass" | "disallowUnknownClass", [], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export default _default;
|
package/dist/configs/flat.mjs
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
rules: {
|
|
3
|
-
readonly '@master/css/class-order': "warn";
|
|
4
|
-
readonly '@master/css/class-validation': "error";
|
|
5
|
-
readonly '@master/css/class-collision': "warn";
|
|
6
|
-
};
|
|
7
|
-
parserOptions: {
|
|
8
|
-
readonly ecmaFeatures: {
|
|
9
|
-
readonly jsx: true;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
plugins: string[];
|
|
13
|
-
};
|
|
14
|
-
export default _default;
|