@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.
@@ -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)=>'https://rc.css.master.co/docs/code-linting#' + 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;
@@ -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)=>'https://rc.css.master.co/docs/code-linting#' + 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(config || ''));
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(config || ''));
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
- flat
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
- readonly '@master/css/class-order': "warn";
7
- readonly '@master/css/class-validation': "error";
8
- readonly '@master/css/class-collision': "warn";
7
+ '@master/css/class-order': string;
8
+ '@master/css/class-validation': string;
9
+ '@master/css/class-collision': string;
9
10
  };
10
11
  parserOptions: {
11
- readonly ecmaFeatures: {
12
- readonly jsx: true;
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
- flat
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
- childNode.quasis.forEach((quasis)=>{
57
- parseNodeRecursive(rootNode, quasis, cb, skipConditional, isolate, ignoredKeys);
58
- });
59
- return;
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
- childNode.quasis.forEach((quasis)=>{
55
- parseNodeRecursive(rootNode, quasis, cb, skipConditional, isolate, ignoredKeys);
56
- });
57
- return;
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.26","@master/css-validator":"^2.0.0-rc.26","@typescript-eslint/utils":"^7.0.2","explore-config":"^3.0.15","synckit":"^0.9.0","typescript-eslint":"^7.0.2"},"devDependencies":{"@angular-eslint/template-parser":"^16.3.1","@types/node":"^20.11.20","@typescript-eslint/rule-tester":"^7.0.2","eslint":"^8.57.0","eslint-plugin-markdown":"^3.0.1","eslint-plugin-mdx":"^2.3.4","svelte-eslint-parser":"^0.33.1","ts-node":"^10.9.2","vue-eslint-parser":"^9.4.2"},"version":"2.0.0-rc.26"}
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"}
@@ -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;
@@ -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;
@@ -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 };
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- var plugin = require('../plugin.cjs');
4
- var config = require('./config.cjs');
5
-
6
- var flat = {
7
- plugins: {
8
- '@master/css': plugin
9
- },
10
- ...config
11
- };
12
-
13
- module.exports = flat;
@@ -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;
@@ -1,11 +0,0 @@
1
- import plugin from '../plugin.mjs';
2
- import config from './config.mjs';
3
-
4
- var flat = {
5
- plugins: {
6
- '@master/css': plugin
7
- },
8
- ...config
9
- };
10
-
11
- export { flat as default };
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- var config = require('./config.cjs');
4
-
5
- var recommended = {
6
- plugins: [
7
- '@master/css'
8
- ],
9
- ...config
10
- };
11
-
12
- module.exports = recommended;
@@ -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;
@@ -1,10 +0,0 @@
1
- import config from './config.mjs';
2
-
3
- var recommended = {
4
- plugins: [
5
- '@master/css'
6
- ],
7
- ...config
8
- };
9
-
10
- export { recommended as default };